Как портировать любую игру для N64 на ПК в рекордно короткие сроки

Как портировать любую игру для N64 на ПК в рекордно короткие сроки


Как портировать любую игру для N64 на ПК в рекордно короткие сроки

In recent years, we’ve reported on multiple efforts to reverse-engineer Nintendo 64 games into fully decompiled, human-readable C code that can then become the basis for full-fledged PC ports. While the results can be impressive, the decompilation process can take years of painstaking manual effort, meaning only the most popular N64 games are likely to get the requisite attention from reverse engineers.

Новый инструмент, недавно ставший доступным для широкой публики, утверждает, что значительно сокращает объем ручной работы, необходимой для создания базовых версий для ПК большинства (если не всех) игр для Nintendo 64. В проекте N64 Recompiled используется метод статической перекомпиляции, который автоматизирует большую часть сложного процесса извлечения кода C из двоичных файлов Nintendo 64.

Г-н Уайзгай, руководитель проекта, поделился с Ars Technica, что его инструмент перекомпиляции значительно сокращает время, необходимое для создания ПК-версии классической игры N64, с недель до лет. Кроме того, в сочетании с этими усилиями работа над надежным графическим рендерером N64 позволяет легко реализовать такие улучшения, как повышение частоты кадров, повышение разрешения и широкоэкранная совместимость.

Хиты вдохновения

Примерно в 2020 году г-н-Уайзегай начал свой путь в программировании N64, участвуя в различных мод-проектах. В следующем году он присоединился к команде разработчиков нового проекта рендеринга под названием RT64. Эта инициатива возникла в результате попыток создать точную версию «Super Mario 64» с трассировкой лучей. Однако по мере развития проекта он вышел за рамки простого воссоздания графики N64 и вместо этого сосредоточился на улучшении заведомо сложного процесса эмуляции игр N64.

Г-н-Вайзегай объяснил Ars, что он нашел простой способ подключить рендерер RT64 к игре, реализовав аналогичный процесс статической компиляции. Следовательно, он разработал прототип, чтобы продемонстрировать эту функциональность с помощью базовой игры. Впоследствии проект расширился, что позволило ему обрабатывать более сложные игры.

Как он поделился еще в ноябре 2022 года, концепция г-на Wiseguy оказалась осуществимой всего за несколько недель. С тех пор разворачивался обширный процесс разработки, время от времени работа которого длилась несколько месяцев, по совершенствованию кода преобразования и подготовке переработанная версия «Легенды о Зельде: Маска Маджоры» для публичного доступа.

Доверьтесь процессу

At its most basic level, the N64 recompilation tool takes a raw game binary (provided by the user) and reprocesses every single instruction directly and literally into corresponding C code. The N64’s MIPS instruction set has been pretty well-documented over years of emulation work, so figuring out how to translate each individual opcode to its C equivalent isn’t too much of a hassle.
Как портировать любую игру для N64 на ПК в рекордно короткие сроки

Г-н-Wiseguy отметил, что основная задача заключается в определении правильного места для направления инструмента в содержимом ПЗУ N64. Далее он пояснил: «Разработчик имеет право упорядочивать содержимое ПЗУ N64 по своему усмотрению. Следовательно, определение того, где находится код, является необходимым условием для запуска процесса статической перекомпиляции». Более того, хотя эмуляторы для N64 могут эффективно управлять играми, которые загружают и выгружают код в памяти на лету, включение таких случаев в предварительно скомпилированный двоичный файл может привести к дополнительным сложностям.

Как наблюдатель, я заметил, что после того, как логика игры транслируется в код C, графическая обработка делегируется рендереру RT64. Этот рендерер отвечает за преобразование графических микрокодов N64 в простые вызовы API с использованием DirectX12 или Vulkan. RT64 способен автономно выполнять многочисленные графические улучшения, но бывают случаи, когда программисту может потребоваться вручную настроить определенные параметры, чтобы обеспечить оптимальную работу порта ПК.

Как портировать любую игру для N64 на ПК в рекордно короткие сроки

Частоту кадров N64, которая обычно находится в диапазоне от 20 до 30 кадров в секунду, можно улучшить с помощью методов, помимо простой настройки переменной «частота кадров» в программном коде C. RT64 реализует это усовершенствование, предугадывая положение каждого внутриигрового объекта на несколько кадров вперед и вычисляя, где этот объект должен находиться во время промежуточных кадров, чтобы сделать игровой процесс более плавным. Хотя RT64 может выполнять некоторые операции обнаружения автоматически, он не является безошибочным. Следовательно, в логику игры включаются дополнительные данные отслеживания, чтобы исправить любые неточности, возникающие в процессе автоматического отслеживания.

Как технический энтузиаст, я бы сказал это так: название RT64 может подразумевать возможности трассировки лучей, но, к сожалению, сейчас это не так. Однако не бойтесь! В будущих сборках рендеринга RT64 появятся такие захватывающие функции, как генерация кадров DLSS, совместимость с пакетами текстур высокого разрешения и поддержка пользовательских моделей. Кроме того, в разработке находятся свободно плавающие камеры, которые улучшат игровой процесс. Следите за этими захватывающими достижениями!

Команда модеров

В отличие от дизассемблированных вручную проектов, которые должны быть понятны читателям и редакторам, код, созданный во время процедуры сборки инструмента перекомпиляции N64, довольно сложно расшифровать без четкого понимания конкретного языка ассемблера, используемого процессором N64. К счастью, по словам г-на Мудрого парня, обычно никому не нужно читать этот сгенерированный выходной код, за исключением случаев устранения неполадок, если что-то пойдет не так.

Как портировать любую игру для N64 на ПК в рекордно короткие сроки

Программистам, желающим модифицировать свои перекомпилированные версии игр для ПК, г-н-Уайзегай предложил подход: написать новый код C, который вместо этого перезаписывает определенные части вывода сборки. Задача заключается в определении точных сегментов кода, которые необходимо заменить, что может оказаться сложной задачей, если недоступна понятная декомпиляция, требующая обширного обратного проектирования игры.

Г-н-Вайзегай считает, что для тех, кто занимается моддингом, перекомпиляция может значительно сократить объем требуемого ручного труда. Напротив, во время ручной декомпиляции каждый сегмент логики игры должен быть реконструирован, прежде чем вы вообще сможете начать процесс портирования. Однако перекомпиляция позволяет вам перепроектировать только минимально необходимые части игры для создания желаемых модов. По словам г-на Wiseguy, это приводит к «меньшему количеству шансов случайно внести ошибки во время процедуры портирования».

Хотя инструмент перекомпиляции выполняет за вас большую часть сложных задач, г-н-Уайзегай предупредил, что преобразование игры N64 в исполняемый файл для ПК с его помощью не является полностью автоматизированным решением. Человеку без предварительных знаний потребовалось примерно 10–15 часов программирования, чтобы запустить порт для такой игры, как «Супермен 64». Это связано с тем, что последующие настройки, необходимые для перекомпилированного вывода, чтобы его можно было воспроизводить на ПК, довольно сложны, даже после этапа обратного проектирования.

Как портировать любую игру для N64 на ПК в рекордно короткие сроки

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

Я заметил, что г-н-Wiseguy поделился, что он намерен включить вывод Lua в инструмент для более простых настроек во время выполнения и совместимости Mac с Apple Metal API, что облегчит рендеринг. Несмотря на эту захватывающую перспективу, он был доволен положительными отзывами о текущих функциях. «Я вложил в этот проект значительное количество времени, — поделился он, — и приятно видеть, что многие люди находят радость в том, что мы уже создали».

Смотрите также

2024-05-17 19:56