NFS Underground 2 Recompiled
codepdbh’s recompiled SPEED2.EXE, released as Underground 2 Android Evolved: download v0.14.13, copy your PC files, and what phones get.
- v0.14.13
- SPEED2.EXE → C
- 27,742 functions
- 221,178 downloads

codepdbh/nfsu2-recompiled is the oldest and most active of the three: started October 6, 2026, 11 releases in this data, 221,178 downloads and issue numbers past #2826. It recompiles the PC SPEED2.EXE of Need for Speed: Underground 2 into C and ships it for Android as Underground 2 Android Evolved.
This site does not explain how to obtain game files. The port needs your own installation of the PC game; the APKs contain none.
Download Underground 2 Recompiled v0.14.13
Published November 6, 2026, 14:38 UTC. arm64 for nearly every phone; ARMv7 only for 32-bit Android (not yet tested on a phone by the project).
| File | Size | Bytes | SHA-256 | |
|---|---|---|---|---|
NFSU2-AndroidEvolved-v0.14.13-arm64.apk | 70.4 MB | 70,358,899 | b7e044cbbe2a9df2e2e8cb5873f4207b161790f484222b242df28f536855bf80 | GitHub |
NFSU2-AndroidEvolved-v0.14.13-armeabi-v7a.apk | 80.8 MB | 80,848,973 | 807d7f730b85296e7624db44136034dba8518674b7f0e15518f2d509c1af89aa | GitHub |
NFSU2-v0.14.13-SHA256SUMS.txt | 218 bytes | 218 | f534042b56501fc3ce0bf2026e29c0da109f5a2431701a05d4750ff5f1c1930c | GitHub |
In v0.14.11 both APKs are the same 70,369,847-byte arm64 file (identical SHA-256). If you installed that “armeabi-v7a” APK on a 32-bit phone and it would not open, use v0.14.13.
What’s new in v0.14.13
- Complete file reads: the most likely cause of repeated crashes when loading areas and menus is fixed.
- PowerVR fallback for MediaTek phones whose Vulkan driver failed at the first graphics pipeline.
- Less clipping in the mixer, game threads pinned to the big cores, and the A button doubles as Enter while driving.
- Tested at 120 FPS on a Samsung Galaxy S25 (arm64); the ARMv7 build has not been tested on a phone.
v0.14.12 fixed lights and reflections drawn as streaks and made the launcher say which file is missing. v0.14.10 made sound steadier on MediaTek, Mali and Unisoc (a 40–100 ms audio buffer instead of 4–10 ms) and stopped looping sound on loading screens.
Performance on real phones
| Phone | Source | Result | Notes |
|---|---|---|---|
| Galaxy S25 (arm64) | v0.14.13 | 120 FPS | Project test in the release notes |
| Galaxy S24 Ultra, Snapdragon 8 Gen 3 | README | 35–51+ FPS at 1170×540 | Race against AI with the touch HUD |
| Redmi Note 8 | v0.14.7 | 20 → 28 FPS (~25,000 draw calls); 28 → 34–36 FPS (~19,000) | Same race before and after the thread-handover fix |
The v0.14.7 profile found the drawing thread idle 56% of the time, waiting for its turn on the shared emulated CPU; handing over less often gave the gains above. v0.14.8 removed a linker option that crashed v0.14.7 at start on Android 13 and newer (16 reports) while keeping the speed-up.
Project status
| Component | State | Details |
|---|---|---|
| C generation | Done | 27,742 functions, about 8.9 million lines of C, 0 lift failures |
| Windows host | Done | MSVC x86, about 4.5 minutes on 16 threads; intros and menus with keyboard and controller |
| Cars and visuals | Working | Cars, vinyls and headlights render (16-bit signed flag fix) |
| Races | Playable | Resort Loop and Quick Races; steering, nitrous, AI traffic |
| Android ARM64 | Playable | Touch controls, audio, clean background and resume |
| Frame limiter and scaler | Done | 30/60/120 FPS caps, 25%, 50%, 75%, native and 720p resolution |
Copying your PC game to the phone
Internal storage/nfsu2/ ← /sdcard/nfsu2
SPEED2.EXE ← from your own PC installation
GLOBAL/ TRACKS/ CARS/ FRONTEND/ LANGUAGES/ MOVIES/ SOUND/ …
WidescreenFix.dat ← optional (proportional HUD)
android_registry.dat ← the game’s video options, written by the port
Open NFSU2 Android Evolved, grant file access, choose language, resolution and FPS cap, and launch. Graphic options set in the game are kept between starts since v0.14.9 (resolution and anti-aliasing stay under the launcher’s control, so a value that crashes a phone does not crash it every start). Step-by-step for all three ports: install guide.
Touch controls
A drag-and-drop editor with button scaling and saved layouts; Clásico, Xbox and PlayStation styles; gyroscope tilt steering; dedicated steering, handbrake, nitrous, brake/reverse and throttle buttons. Since v0.14.8 the controls hide again as soon as you keep playing with a Bluetooth or USB pad. See controllers.
Which phones are reporting
From the 92 most recent reports with device data on November 9, 2026 (the launcher’s report form fills it in):
| Chip maker | Reports | Share |
|---|---|---|
| MediaTek | 36 | 39% |
| Qualcomm Snapdragon | 30 | 32% |
| Unisoc | 13 | 14% |
| Other | 9 | 9% |
| Samsung Exynos | 3 | 3% |
| HiSilicon Kirin | 1 | 1% |
Android versions from 10 to 17; most reports are on v0.14.13. The release notes list as still open: frame drops after a few seconds on some Snapdragon 8 Gen 3 and Dimensity phones, and external controller buttons that are not detected.
Building from source
The README’s pipeline: initialise MSVC x86, normalise SPEED2.EXE (restores the relocation directory without changing the original), scan vtables and RTTI for seeds, build the function catalog (about 5 minutes), lift to C (about 90 seconds), then scripts/build.sh and scripts/run.sh for the Windows host or ./gradlew assembleDebug in android/ for the APK. The tooling is MIT-licensed; no game code is in the repository.
Release history
| Release | Published | Title | Downloads |
|---|---|---|---|
v0.14.13 | November 6, 2026 | — | 13,048 |
v0.14.12 | October 30, 2026 | — | 36,470 |
v0.14.11 | October 27, 2026 | — | 23,537 |
v0.14.10 | October 23, 2026 | sonido | 46,470 |
v0.14.9 | October 20, 2026 | opciones gráficas guardadas | 47,223 |
v0.14.8 | October 19, 2026 | mandos y compatibilidad | 10,387 |
v0.14.7 | October 16, 2026 | rendimiento | 14,553 |
v0.14.6 | October 16, 2026 | estabilidad y cache grafica | 2,124 |
v0.14.5 | October 15, 2026 | — | 6,545 |
v0.14.4 | October 15, 2026 | Mandos Bluetooth | 1,925 |
v0.14.3 | October 13, 2026 | — | 18,896 |



Frequently asked questions
What is nfsu2-recompiled?
codepdbh/nfsu2-recompiled is a full static recompilation of Need for Speed: Underground 2’s PC executable, SPEED2.EXE (x86-32), into portable C with an enhanced fork of pcrecomp. The C is compiled for Android ARM64 and ARMv7, with Direct3D 9 translated to Vulkan by an embedded port of DXVK Native. No JIT, no virtual machine.
Can I download NFS Underground 2 Recompiled for Windows?
No prebuilt Windows version is published; the releases are Android APKs. The README’s pipeline builds a native Windows host from your own game with MSVC x86, Python 3 (capstone, pefile, unicorn, keystone-engine) and pcrecomp with the project’s eleven patches.
Which SPEED2.EXE does it support?
The tested build is 4,800,512 bytes with SHA-256 f9dd86c054878ce6276beb07c1fd61874f7a1e4bf1f241b084c65b73e24168a7 (embedded date February 9, 2005). Widescreen hooks are tied to that exact code; another build (such as the one used by the R36S handheld port) needs its own hook table.
Where do I put the game on the phone?
Copy your PC installation (SPEED2.EXE, GLOBAL, TRACKS, CARS, FRONTEND, LANGUAGES, MOVIES, SOUND and the rest) into Internal storage/nfsu2. No online mod is needed. Then open NFSU2 Android Evolved, grant file access, choose language, resolution and FPS cap, and play.
Why does the launcher keep PLAY disabled?
Since v0.14.12 it says what is missing instead, for example a language file LANGUAGES/<language>.bin. The WidescreenFix.dat warning is optional and does not block playing (#2253).
Is there a handheld version?
Yes, separately: Manuel Peña’s nfsu2-recompiled-r36s ports it to the R36S handheld, listed as a contributor project in the README.