Pull to refresh

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

Reading time2 min
Views35K


Спидран — способ быстрого прохождения игр. Обычно при этом не используются обычные читы или коды. Но разрешено использовать глюки игр вроде возможности выбраться за пределы основного экрана и идти поверх всех уровней. Приверженцы такого способа прохождения игр показывают иногда просто удивительные результаты. К примеру, 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 уже содержит в коде инструкции по выходу из цикла.



Самое интересное то, что этот рекорд является официальным. Создатели компьютерной системы, использующей баг в аппаратном обеспечении приставки, не модифицируют память приставки напрямую. Все, что они делают — эксплуатируют особенность «железа», позволяющую выполнить сторонний код. И все это они делают, используя лишь контроллер — вернее, его аппаратную эмуляцию в виде системы собственной разработки. Правда, сообщество спидраннеров разделилось. Одни считают, что все корректно. Вторые, в целом, согласны с этим, но утверждают, что это неинтересно, поскольку компьютерная система такого типа портит все удовольствие.
Only registered users can participate in poll. Log in, please.
А как вы считаете, можно ли засчитать этот рекорд?
12.77% Да, все корректно, почему нет?250
6.29% Слишком все сложно, я не знаю.123
80.94% Нет, это уже не спидран, а читерство, пусть и аппаратное.1584
1957 users voted. 289 users abstained.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 15: ↑14 and ↓1+13
Comments55

Articles