Как спидраннеры Zelda: Ocarina of Time разбивают N64 новыми невероятными способами

ReSpec обычно представляет собой колонку о прекрасном техническом мире компьютерных игр, но иногда встречаются темы, которые слишком хороши, чтобы их упускать. The Legend of Zelda: Ocarina of Time повсеместно признана одной из лучших игр для Nintendo 64 , когда-либо созданных, и, хотя это не игра для ПК, самые высокоуровневые и самые технические скоростные прохождения игры показывают, как игры работают на фундаментальном уровне. Что еще более важно, эти невероятные подвиги возможны только при больших усилиях сообщества.

Ocarina of Time — это игра, на прохождение которой обычному игроку потребуется около 30 часов; самые опытные спидраннеры, которые стремятся пройти игру как можно быстрее, могут пройти ее примерно за три часа 40 минут без сбоев. Но категория игры Any%, которая ставит перед игроками задачу завершить игру независимо от используемых методов, сократилась до трех минут, 54 секунд и 566 миллисекунд. И да, эти миллисекунды имеют значение. Рекордсмен, занявший второе место, отстает от мирового рекордсмена менее чем на целую секунду.

Игра Ocarina of Time для Nintendo 64.

Даже несмотря на то, что это такой замечательный подвиг, это не все, что Ocarina of Time приносит на стол. На благотворительном благотворительном марафоне Summer Games Done Quick 2022, проводящемся раз в полгода, была представлена ​​группа спидраннеров, перепрограммирующих игру на лету, чтобы отображать новую графику, воспроизводить новую музыку и даже запускать оверлей чата Twitch. И все это было сделано на стоковой копии игры без предварительного программирования.

Сообщество спидраннеров Ocarina of Time продолжает ломать игру, казалось бы, невозможными способами. Я связался с двумя ведущими умами сообщества, чтобы узнать, что заставляет классическую игру для Nintendo 64 работать, и все сводится к одному эксплойту: выполнению произвольного кода.

Далеко от произвольного

Консоль Nintendo 64 и игры.
Роб Тек/Shutterstock

Выполнение произвольного кода, или ACE, звучит гораздо более пугающе, чем есть на самом деле. Это термин, используемый в кибербезопасности, который в основном означает запуск кода (или программы), который не должен запускаться. Вот как dannyb, спидраннер Ocarina of Time , занявший второе место в категории Any%, описал ACE в Ocarina of Time: «Выполнение произвольного кода в OoT — это эксплойт, с помощью которого игрок может использовать внутриигровые действия для организации кучу данных в памяти, чтобы имитировать код игры, а затем манипулировать местом, где игра ищет для запуска кода, чтобы оно было местом, где мы только что сделали эту аранжировку ».

Дэнниб говорит, что при правильных действиях игроки могут «по сути запускать любой код, который нам нравится, из игры, и заставлять игру делать то, для чего она не была запрограммирована». Эти действия включают такие, казалось бы, бесполезные вещи, как имя, которое вы вводите при запуске игры. Именно это действие позволило Ocarina of Time так быстро победить.

В таких играх, как Ocarina of Time, игра проверяет свою память на соответствие определенным требованиям, чтобы пройти игру. Целью скоростного прохождения Any% является перераспределение памяти таким образом, чтобы она смотрела на имя вашего персонажа, а не на то, где оно обычно находится. Это называется Stale Reference Manipulation, или SRM, и dannyb говорит, что этот эксплойт — это то, что взломало спидраны Ocarina of Time .

«ACE в любой видеоигре всегда нужны эти две вещи: точно настроенный контроль над какой-то областью памяти, чтобы игрок мог имитировать данные в ней кода, и возможность изменить место выполнения кода, чтобы оно было местом, где пользовательский код ложь. В 2019 году в OoT был обнаружен сбой под названием Stale Reference Manipulation, который в значительной степени открыл второе требование», — сказал dannyb.

В случае обычного запуска Ocarina of Time кажущиеся случайными действия складываются, чтобы заставить игру проверять области (например, имя вашего персонажа) на предмет требований к завершению, когда они не должны. Это процесс, состоящий из двух частей. Создайте полезную нагрузку данных, например имя вашего персонажа, и манипулируйте памятью с помощью SRM, чтобы она указывала на эту полезную нагрузку.

Взлом на лету

Вот как спидраннеры обыграли Ocarina of Time всего за несколько минут, но это не полностью объясняет, как витрина с любовным названием Triforce% смогла добавить в игру новые текстуры, модели, музыку, код и даже оверлей Twitch без каких-либо дополнительных действий. модификация картриджа. Savestate, один из авторов этого многолетнего проекта, объяснил, что все дело в том, чтобы настроить консоль Nintendo 64 на понимание данных контроллера как игровых данных.

Это витрина возможна только благодаря TASBot, способному выполнять ввод с нечеловеческой скоростью. Как объясняет Savestate: «Мы модифицируем инструкцию в памяти, чтобы начать чтение данных контроллера как инструкции N64. Обычно это приводит к сбою, но благодаря TASBot он может моделировать контроллеры и манипулировать ими с нечеловеческой скоростью, чтобы они выглядели как инструкции N64, чтобы игра выполняла данные контроллера как набор заранее определенных инструкций».

Короче говоря, демонстрация Triforce% использует ACE и SRM, как обычный спидран Ocarina of Time , но это конкретно меняет то, как консоль Nintendo 64 понимает инструкции. С такой настройкой бегуны могут добавлять в игру любой код, который они хотят, просто через входы контроллера. Savestate продолжил: «Никаких модификаций игрового картриджа нет. Чтобы получить пользовательские данные в память, мы используем сбой, который позволяет нам начинать добавлять и изменять данные в памяти с помощью TASBot, взаимодействуя с консолью N64 только через порты ее контроллера».

Порт контроллера на Nintendo 64.

Эти эксплойты обнаруживаются не случайно. Savestate объяснил, что сообщество Ocarina of Time разработало инструменты для изучения того, как устроена память в игре, а также программы для моделирования различных механизмов памяти. Эмуляторы, такие как Project64, очень помогают, позволяя бегунам и разработчикам инструментов шаг за шагом выполнять код в игре.

Ocarina of Time — одна из самых культовых игр, когда-либо созданных, а сильное, преданное своему делу сообщество спидраннеров позволило игре процветать благодаря новым разработкам в течение десятилетий после ее первоначального выпуска. Эксплойты, подобные той, которая используется в самых быстрых скоростных прохождениях Ocarina of Time, упрощают задачу, обычно связанную с максимально быстрым прохождением игры, но они также подчеркивают невероятный технический опыт и усилия сообщества, которые затрачиваются на анализ и анализ любимых игр.

Сообщество также знает об этом балансе, по словам dannyb: «Категория скоростного прохождения OoT Any% — единственная в наших основных списках лидеров, которая позволяет использовать ACE как допустимый способ достижения цели. Что касается всего остального, мы запрещаем ACE, чтобы сохранить уникальность, которая в первую очередь привела к жизни эти категории».

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