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
- 222,245 downloads

codepdbh/nfsu2-recompiled is the oldest and most active of the three: started October 6, 2026, 11 releases in this data, 222,245 downloads and issue numbers past #2833. 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 93 most recent reports with device data on November 9, 2026 (the launcher’s report form fills it in):
| Chip maker | Reports | Share |
|---|---|---|
| MediaTek | 38 | 40% |
| Qualcomm Snapdragon | 29 | 31% |
| Unisoc | 14 | 15% |
| Other | 9 | 9% |
| Samsung Exynos | 3 | 3% |
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,815 |
v0.14.12 | October 30, 2026 | — | 36,513 |
v0.14.11 | October 27, 2026 | — | 23,561 |
v0.14.10 | October 23, 2026 | sonido | 46,480 |
v0.14.9 | October 20, 2026 | opciones gráficas guardadas | 47,336 |
v0.14.8 | October 19, 2026 | mandos y compatibilidad | 10,391 |
v0.14.7 | October 16, 2026 | rendimiento | 14,556 |
v0.14.6 | October 16, 2026 | estabilidad y cache grafica | 2,127 |
v0.14.5 | October 15, 2026 | — | 6,548 |
v0.14.4 | October 15, 2026 | Mandos Bluetooth | 1,931 |
v0.14.3 | October 13, 2026 | — | 18,987 |
Recommended Controllers for NFS Most Wanted & Underground 2 (Android & PC)
All three Need for Speed recompilation projects automatically hide on-screen touch buttons as soon as a Bluetooth or USB-C gamepad connects, giving you real analog throttle and steering for Canyon/Drift events and Level 5 pursuits:
| Controller | Best For | Why It Fits NFS Recomp | Link |
|---|---|---|---|
| Xbox Wireless Controller | Android Bluetooth & Windows XInput | Matches original Xbox 360 Most Wanted button prompts & trigger travel | View on Amazon → |
| Sony DualSense | Android 10+ & PC Bluetooth play | Instant Android HID recognition + smooth L2/R2 analog throttle | View on Amazon → |
| GameSir Cyclone 2 | Zero-drift 1000 Hz racing control | Hall Effect analog triggers + TMR sticks + Bluetooth for Android & PC | View on Amazon → |
| 8BitDo Ultimate 2 Wireless | Multi-device wireless + charging dock | Works across Android Bluetooth and Windows 2.4 GHz with Hall/TMR sticks | View on Amazon → |
As an Amazon Associate, this site earns from qualifying purchases.



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.