Games and modsWorksSource available
Target: Need for Speed Underground 2 (SPEED2.EXE)

Recompiled Need for Speed Underground 2 (SPEED2.EXE) into a native Android ARM64 port

Platform
Android ARM64
Outcome
Works
Need for Speed Underground 2 (SPEED2.EXE): A static binary recompilation of the x86 Windows executable for native Android execution.
Image: Source: raw.githubusercontent.com

Evidence at a glance

Loading source evidence…

What was done

This project provides a native Android port of Need for Speed Underground 2 by statically recompiling the original x86 binary into C code, utilizing DXVK for Vulkan graphics and custom touch controls.

The project implements a static binary recompilation of the Windows x86 executable SPEED2.EXE into native C code. The process translates over 27,700 functions into C99, which are then compiled for the Android ARM64 architecture. The runtime environment supports native execution on Android devices, replacing Direct3D 9 calls with Vulkan via an embedded DXVK Native port. The author reports that the game is playable on Android, featuring touch controls, gyroscope steering, and configurable frame rate limiters (30, 60, 120 FPS). Recent development includes porting core game protocols, such as roam and serialization, to Rust. The author addressed a 60 FPS slow-motion bug by modifying the guest QPC counter and expanding the maximum delta-time clamp multiplier. The port requires users to provide their own legitimate game files from a PC installation. Documentation notes that while the core gameplay is functional, specific limits and issue-driven changes are tracked in the repository's internal review logs. NFSU2-Revived-Android documents the build pipeline, which involves normalizing the executable, scanning for vtables and RTTI, and lifting assembly to C.

Reproduce it

setup

Initialize the MSVC x86 environment, normalize the SPEED2.EXE binary, run vtable and RTTI scans, generate the function catalog, lift the assembly to C, and build the Android APK using the provided Gradle project.

Community

Ask a question, share what worked, or follow the next milestone.

Your library