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
A Bayside Blue Nissan Skyline GT-R R34 parked on a Tokyo street at night
Nissan Skyline GT-R R34, Tokyo
Advertisement

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).

FileSizeBytesSHA-256
NFSU2-AndroidEvolved-v0.14.13-arm64.apk70.4 MB70,358,899b7e044cbbe2a9df2e2e8cb5873f4207b161790f484222b242df28f536855bf80GitHub
NFSU2-AndroidEvolved-v0.14.13-armeabi-v7a.apk80.8 MB80,848,973807d7f730b85296e7624db44136034dba8518674b7f0e15518f2d509c1af89aaGitHub
NFSU2-v0.14.13-SHA256SUMS.txt218 bytes218f534042b56501fc3ce0bf2026e29c0da109f5a2431701a05d4750ff5f1c1930cGitHub

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

PhoneSourceResultNotes
Galaxy S25 (arm64)v0.14.13120 FPSProject test in the release notes
Galaxy S24 Ultra, Snapdragon 8 Gen 3README35–51+ FPS at 1170×540Race against AI with the touch HUD
Redmi Note 8v0.14.720 → 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

ComponentStateDetails
C generationDone27,742 functions, about 8.9 million lines of C, 0 lift failures
Windows hostDoneMSVC x86, about 4.5 minutes on 16 threads; intros and menus with keyboard and controller
Cars and visualsWorkingCars, vinyls and headlights render (16-bit signed flag fix)
RacesPlayableResort Loop and Quick Races; steering, nitrous, AI traffic
Android ARM64PlayableTouch controls, audio, clean background and resume
Frame limiter and scalerDone30/60/120 FPS caps, 25%, 50%, 75%, native and 720p resolution

Copying your PC game to the phone

Advertisement
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 makerReportsShare
MediaTek3639%
Qualcomm Snapdragon3032%
Unisoc1314%
Other99%
Samsung Exynos33%
HiSilicon Kirin11%

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

ReleasePublishedTitleDownloads
v0.14.13November 6, 2026—13,048
v0.14.12October 30, 2026—36,470
v0.14.11October 27, 2026—23,537
v0.14.10October 23, 2026sonido46,470
v0.14.9October 20, 2026opciones gráficas guardadas47,223
v0.14.8October 19, 2026mandos y compatibilidad10,387
v0.14.7October 16, 2026rendimiento14,553
v0.14.6October 16, 2026estabilidad y cache grafica2,124
v0.14.5October 15, 2026—6,545
v0.14.4October 15, 2026Mandos Bluetooth1,925
v0.14.3October 13, 2026—18,896
Advertisement
A wet city street at night with shop lights reflecting in a puddle
A city street after rain, at night
The BMW M3 GTR race car in white, blue and red livery at the BMW Museum in Munich
BMW M3 GTR, BMW Museum, Munich
Red and white light trails from traffic on a curving highway at night
Traffic on a highway at night, long exposure

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.