Как стать автором
Обновить

Как пройти Super Mario Bros. 3 менее чем за секунду?

Время на прочтение2 мин
Количество просмотров35K


Спидран — способ быстрого прохождения игр. Обычно при этом не используются обычные читы или коды. Но разрешено использовать глюки игр вроде возможности выбраться за пределы основного экрана и идти поверх всех уровней. Приверженцы такого способа прохождения игр показывают иногда просто удивительные результаты. К примеру, Doom 2 некоторые умельцы проходят за пару десятков минут.

Особая любовь у спидраннеров — к Super Mario. Человек может пройти Super Mario для 8-битной приставки примерно за 6 минут. Два года назад появилось новое направление — спидран с роботом. Здесь уже практически не используются секреты игры, речь идет о прохождении всех уровней специальной компьютерной системой. Она не нажимает на кнопки, а подключается прямо к порту игрового контроллера. На днях такая система поставила новый рекорд прохождения игры — все уровни удалось пройти менее, чем за секунду.

В чем секрет робота? В новой системе работает дифференциальная импульсно-кодовая модуляция NES. Одноразрядный поток данных используется для проигрывая элементарных аудио-сэмплов из некоторых игр, включая Super Mario Bros. 3.



Как оказалось, в аппаратном обеспечении NES есть небольшой баг, который приводит к тому, что считывание данных такого канала приводит к тому, что СPU иногда выполняет дополнительную операцию чтения с одного из каналов ввода данных (контроллеров). Результат — нажатие на кнопку регистрируется, хотя нажатия не было. В текущей игре разработчики заставили свою систему опрашивать канал ввода данных контроллера несколько раз за кадр игры.

Роботу нужно убедиться в том, что игра не регистрирует два одинаковых нажатия за кадр. В противном случае игра вываливается в бесконечный цикл, постоянно отслеживая входной канал данных, пока не получит запрос на прерывание цикла для следующего фрейма. В таком случае система начнет считывать инструкции с самого начала памяти.

Через несколько фреймов игра переходит к той области памяти, где сохранены данные по нажатию кнопок контроллера. Робот-спидраннер вводит в эту область код перехода на финальную заставку игры. И все это — менее, чем за секунду.

Система, о которой идет речь, получила название micro500. Она умеет эмулировать нажатия на кнопку контроллера со скоростью 7984 операций в секунду. Понятно, человек на это не способен. Пока что речь идет только об использовании micro500 для Super Mario Bros. 3. Другая игра, например, Zelda II: the Adventures of Link уже содержит в коде инструкции по выходу из цикла.



Самое интересное то, что этот рекорд является официальным. Создатели компьютерной системы, использующей баг в аппаратном обеспечении приставки, не модифицируют память приставки напрямую. Все, что они делают — эксплуатируют особенность «железа», позволяющую выполнить сторонний код. И все это они делают, используя лишь контроллер — вернее, его аппаратную эмуляцию в виде системы собственной разработки. Правда, сообщество спидраннеров разделилось. Одни считают, что все корректно. Вторые, в целом, согласны с этим, но утверждают, что это неинтересно, поскольку компьютерная система такого типа портит все удовольствие.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
А как вы считаете, можно ли засчитать этот рекорд?
12.77% Да, все корректно, почему нет?250
6.29% Слишком все сложно, я не знаю.123
80.94% Нет, это уже не спидран, а читерство, пусть и аппаратное.1584
Проголосовали 1957 пользователей. Воздержались 289 пользователей.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 15: ↑14 и ↓1+13
Комментарии55

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань