GoldenEye 007 только что достиг 100% декомпиляции, и это меняет то, что люди могут делать с игрой: моды, которые были невозможны в эмуляторе, нативные порты для ПК с правильной поддержкой широкоэкранного режима и увеличением частоты кадров, а также справочные реализации для будущих проектов обратного инжиниринга N64. Инструменты, которые это сделали возможным, имеют открытый исходный код, и если вы когда-либо хотели заглянуть внутрь игры для N64, вы бы использовали те же инструменты.
Мы протестировали 8 настольных приложений, которые делают возможными рабочие процессы декомпиляции и портирования N64 сегодня. Каждый выбор является свободным, имеет открытый исходный код и активно поддерживается на GitHub.
На что обратить внимание в приложении для декомпиляции N64
Обратный инжиниринг N64 необычен, потому что консоль нацелена на MIPS III, и компиляторы эпохи (IDO, EGCS) оставили специфические следы. Современные инструменты это учитывают.
- Поддержка MIPS III. Одних дизассемблеров x86 или ARM недостаточно.
- Обработка известных идиом компилятора. IDO и EGCS производят характерный вывод, который инструмент должен распознавать.
- Управление символами и разбиением. Рабочий проект требует извлечения активов, а не только декомпиляции кода.
- Конвейер проверки совпадений. Каждая функция требует проверки совпадения байт за байтом с ROM-ом.
- Сообщество вокруг инструмента. Декомпиляция N64 достаточно мала, чтобы инструмент с одним разработчиком, который выходит из строя, имел значение.
Таблица быстрого сравнения
| Приложение | Лучше всего для | Платформы | Бесплатный план | Стартовая цена/мес | Оценка |
|---|---|---|---|---|---|
| N64Recomp | Статическая рекомпиляция в нативный бинарный файл | Windows, Linux, macOS | Полностью бесплатно | Бесплатно | Быстро растущее сообщество |
| splat | Разбиение бинарного файла и извлечение активов | Windows, Linux, macOS | Полностью бесплатно | Бесплатно | Стандарт в современных N64 декомпиляциях |
| decomp.me | Веб-идентификатор для проверки совпадений | Web | Полностью бесплатно | Бесплатно | Широко используемая платформа сообщества |
| mips_to_c | Преобразование ассемблера в C | Windows, Linux, macOS | Полностью бесплатно | Бесплатно | Давний инструмент декомпиляции |
| IDO recomp | Рекомпиляция оригинального компилятора IDO | Windows, Linux, macOS | Полностью бесплатно | Бесплатно | Включает рабочие процессы, ориентированные на сопоставление |
| ares | Эмулятор N64 с точностью до цикла для тестирования | Windows, macOS, Linux | Полностью бесплатно | Бесплатно | Высокоточный эмулятор |
| GloverN64 | Справочный проект портирования N64 | Windows, macOS, Linux | Полностью бесплатно | Бесплатно | Проект сообщества |
| PermuterPy | Автоматизированный поиск совпадений через мутацию | Windows, Linux, macOS | Полностью бесплатно | Бесплатно | Стандарт в современных декомпиляциях |
Приложения
1. N64Recomp – Лучше всего для статической рекомпиляции в нативный бинарный файл
N64Recomp берет код MIPS из N64 ROM и переписывает его в LLVM IR, который затем компилируется в нативный бинарный файл x86 или ARM. Это то, что позволяет проектам, таким как Zelda 64 Recompiled и недавний порт GoldenEye, работать со скоростью сотни кадров в секунду с высокоразрешающей графикой без эмулятора.
Где это отстает: Требует полностью декомпилированной игры для создания хорошо интегрированного портативного приложения. Прямая ROM-рекомпиляция работает для многих игр, но не для всех.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Windows, Linux, macOS
Загрузить: GitHub
Итоговая линия: Инструмент, ответственный за текущую волну нативных портов N64.
2. splat – Лучше всего для разбиения бинарного файла и извлечения активов
splat берет N64 ROM и создает структурированный макет проекта, который использует каждая современная декомпиляция: файлы ассемблера, разделенные по символам, извлеченные активы (текстуры, музыка, данные уровней) и система сборки, которая снова собирает все в совпадающий ROM. Каждый серьезный проект декомпиляции N64 начинается отсюда.
Где это отстает: Требует конфигурации для каждой игры; ожидайте потратить первую неделю на разработку файла разбиения.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Windows, Linux, macOS (Python)
Загрузить: GitHub
Итоговая линия: Первый инструмент, который вы устанавливаете, когда начинаете проект декомпиляции N64.
3. decomp.me – Лучше всего для проверки совпадения функции-кандидата C
decomp.me - это веб-IDE для проверки совпадений при декомпиляции. Вставьте целевую функцию ассемблера, напишите кандидат C, нажмите компиляцию и сразу же посмотрите, производит ли компилятор идентичный по байтам вывод. Он поддерживает целевые N64, GameCube, PS2 и DS, и рабочий процесс с общей подушкой делает сотрудничество безболезненным.
Где это отстает: Только веб; нет автономного режима. Ограничено по скорости под большой нагрузкой.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Web (браузер)
Загрузить: Официальный сайт · GitHub
Итоговая линия: Самый используемый инструмент активными участниками декомпиляции N64.
4. mips_to_c – Лучше всего для преобразования ассемблера MIPS в черновой C
mips_to_c создает читаемый черновик C из функции MIPS. Это не генератор совпадений; вывод - это отправная точка, которую вы затем редактируете и уточняете, пока decomp.me не сообщит о совпадении. Экономит часы за функцию при первом проходе.
Где это отстает: Вывод - это черновик. Прямая компиляция почти никогда не совпадает без редактирования человеком.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Windows, Linux, macOS (Python)
Загрузить: GitHub
Итоговая линия: Сокращает время первого прохода для любой функции, которая более чем тривиальна.
5. IDO recomp – Лучше всего для воспроизведения оригинального компилятора N64
IDO recomp - это статическая рекомпиляция компилятора IDO компании SGI, того, который Nintendo использовала для большинства своих N64 титулов первой очереди. Запуск оригинального компилятора на современных ОС - это то, что делает идеальное совпадение байтов возможным; без него дизассемблер мог бы производить только приближения оригинала.
Где это отстает: Полезно только если целевая игра была скомпилирована с IDO. Игры GCC/EGCS (выход Rare, включая GoldenEye) требуют различных сборок компилятора.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Windows, Linux, macOS
Загрузить: GitHub
Итоговая линия: Не дизассемблер сам по себе, но часть, которая делает декомпиляцию детерминированной.
6. ares – Лучше всего для проверки точности цикла N64
ares - это мультисистемный эмулятор с точной эмуляцией N64. Для работы с декомпиляцией эта точность важна: когда перестроенный кандидат производит ROM, который работает на ares идентично оригиналу, у вас есть реальная уверенность в совпадении.
Где это отстает: Более высокие требования к CPU, чем случайные эмуляторы, такие как Project64. Не выбор для чистого игрового процесса.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Windows, macOS, Linux
Загрузить: Официальный сайт · GitHub
Итоговая линия: Эмулятор качества проверки для проверки перестроений.
7. GloverN64 – Лучший пример проекта для обучения
GloverN64 - это один из растущей библиотеки проектов декомпиляции N64, управляемых сообществом, и его репозиторий достаточно хорошо организован, чтобы служить справочником по тому, как splat, mips_to_c и IDO recomp работают вместе в реальной сборке. Чтение чьего-то другого файла разбиения - самый быстрый способ понять свой.
Где это отстает: Выполняется в процессе; не каждая функция декомпилирована.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Windows, macOS, Linux
Загрузить: GitHub
Итоговая линия: Лучший справочник для новичка, который устанавливает первый проект декомпиляции N64.
8. PermuterPy – Лучше всего для автоматизации поиска совпадений
PermuterPy мутирует кандидата C кода и перекомпилирует его тысячи раз, чтобы найти варианты, которые производят идентичный по байтам вывод. Когда decomp.me говорит “близко, но не совпадает”, PermuterPy находит точный порядок выражений или скобки, которые требует компилятор.
Где это отстает: Вычислительно дорого; запуск permuter может потреблять CPU ноутбука в течение часов.
Ценообразование:
- Бесплатно: Все
- Платно: Неприменимо
Платформы: Windows, Linux, macOS (Python)
Загрузить: GitHub
Итоговая линия: Инструмент последней инстанции для упорного функционирования и причина, по которой процентные доли завершения продолжают расти.
Как выбрать правильный
- Если цель - нативный порт PC из существующего ROM: N64Recomp.
- Если вы начинаете новый проект декомпиляции: splat, затем IDO recomp (или соответствующий компилятор), затем decomp.me и mips_to_c для повседневной работы.
- Если вы пытаетесь сопоставить одну функцию: decomp.me для итерации, PermuterPy когда совпадение близко.
- Если вам нужно убедиться, что перестроение идеально совпадает с настоящим N64: ares для проверки во время выполнения.
- Если вы учитесь конвейеру с нуля: прочитайте репозиторий GloverN64 перед тем, как трогать свой собственный файл разбиения.
- Не пропускайте splat. Ручное редактирование монолитного дампа ассемблера - это проигрышное дело в масштабе N64.
Часто задаваемые вопросы
Что это значит, когда игра “100% декомпилирована”? Каждая функция в бинарном файле игры была переписана на C таким образом, что перекомпилированный вывод совпадает с оригинальным ROM байт за байтом. С этого момента кодовая база может быть свободно модифицирована.
Является ли декомпиляция N64 ROM законной? Обратный инжиниринг для взаимодействия обычно защищен во многих юрисдикциях. Распространение полученного бинарного файла (который все еще содержит активы оригинальной игры) обычно нет. Правовая обработка варьируется в зависимости от страны; сами проекты декомпиляции обычно поставляют только код, ожидая, что пользователь предоставит свой собственный ROM.
Сколько времени занимает проект декомпиляции N64? Многолетние усилия команд волонтеров. Zelda: Ocarina of Time заняла годы; проект GoldenEye 007 длился около шести лет.
Что такое decomp.me и почему это так центрально? decomp.me - это веб-IDE, которая компилирует кандидата C кода и сообщает, совпадает ли вывод целевой функции ассемблера точно. Это заменило много специальных bash скриптов и сделало сотрудничество при проверке совпадений легким.
Могу ли я запустить декомпилированную игру на своем ПК без эмулятора? Да, когда декомпиляция выполнена и порт построен с N64Recomp или похожей структурой. Zelda 64 Recompiled и порт GoldenEye - текущие примеры.
Нужно ли мне знать ассемблер MIPS, чтобы внести свой вклад? Это помогает огромно. mips_to_c и decomp.me снижают планку, но даже базовое понимание соглашений регистров и моделей вызовов необходимо для прогресса на реальной функции.