Underground 2 оживает на нативном C: 27 742 функции вместо эмулятора

image

Оригинальный Need for Speed: Underground 2 (2004) получил настоящий нативный порт — без эмулятора и прослоек. Разработчик codepdbh статически рекомпилировал x86-бинарник SPEED2.EXE в обычный C, и игра уже запускается как пересобранная программа. Проект открыт на GitHub, но работает только с вашей собственной копией игры.

Как это устроено

В основе лежит pcrecomp — инструмент бинарной трансляции, который переводит машинные инструкции x86 напрямую в компилируемый C, а не восстанавливает исходники заново. Автор взял расширенный форк с патчами: добавлены MMX/SSE/SSE2, сохранение флагов процессора и x87-контекста, корректная обработка знаковых условий. На выходе — чистый C99 без JIT, виртуальной машины и потерь на трансляцию в рантайме.

Это принципиально иной путь, чем эмуляция: пересобранная программа исполняет оригинальную игровую логику сама, а не через слой совместимости. Не путать с фанатским ремейком Underground 2 на Unreal Engine — здесь сохраняется именно тот самый бинарник 2004 года.

Цифры

Статический подъём прошёл по retail-сборке SPEED2.EXE (объём около 4,8 МБ, дата в образе — 9 февраля 2005 года):

  • 27 742 функции перенесены из x86 в C;
  • около 8,9 млн строк сгенерированного кода;
  • ни одного сбоя лифта — каждая функция поднялась без ошибок;
  • для запуска нужен проверенный образ: SHA-256 f9dd86c054878ce6276beb07c1fd61874f7a1e4bf1f241b084c65b73e24168a7.

Что уже работает

На Windows-хосте через MSVC x86 пройден весь путь от генерации C до первого кадра: старт игры, работа с реестром, таймерами и потоками, инициализация Direct3D 9 и окна. Проигрываются заставочные FMV-ролики, отрисовываются меню, принимается ввод с клавиатуры и контроллера. Отдельная веха — исправление бага знакового 16-битного флага, после которого кузова, винилы и фары стали отображаться правильно. Загрузка трассы и геймплей отмечены как играбельные: работает Resort Loop и Quick Race, ускорение, руление, закись азота и трафик с ИИ.

Android и планы

Поскольку логика превращена в переносимый C, её больше не удерживает x86. Замена Win32 и Direct3D 9 на SDL2 и Vulkan/OpenGL ES открывает сборку под ARM64: Android-порт уже играбелен, на Snapdragon 8 Gen 3 (Samsung Galaxy S24 Ultra) он выдаёт 35–51+ FPS в 1170×540, поддерживает сенсорное управление, наклон гироскопом и звук через AAudio, а графику переводит встроенный порт DXVK Native. Дальше — Linux-хендхелды вроде Steam Deck и Apple Silicon, причём без Box64 и FEX-Emu.

Про легальность

В репозитории нет ни игрового кода, ни текстур, ни музыки, ни моделей — только авторский инструментарий под лицензией MIT. Собирать порт нужно локально из собственной лицензионной копии Underground 2. Проект заявлен как исследовательский и archival, а все права на серию остаются у Electronic Arts.

👉 Источники: AllNight.city, GitHub — codepdbh/nfsu2-recompiled

А вы бы сыграли в Underground 2 без эмулятора? Делитесь мнением в комментариях и следите за обновлениями на nfs.com.ru!

Комментарии

Войдите  или  зарегистрируйтесь  для добавления комментария.
Или можете войти через соцсети: