Skip to content

About

No description, website, or topics provided.

Resources

Stars

245 stars

Watchers

18 watching

Forks

Repository files navigation

NFSMW Android Evolved

Need for Speed: Most Wanted (2005) for Android ARM64

Native APK · Vulkan 1.1+ · touch controls · on-device shader generation

Download the latest release · Español

This project brings the nfsmw-nx recompilation and the ReXGlue SDK to Android. The app runs recompiled C++ code with SDL3 and a native Vulkan renderer. It does not emulate an Xbox 360 and does not include any game files.

Requirements

  • Android 8 or later on an ARM64 processor (ARMv8.0 or later).
  • A GPU with Vulkan 1.1 or later and the required descriptor indexing features: exposed through Vulkan 1.2 or VK_EXT_descriptor_indexing on 1.1 drivers. A recent Vulkan version alone does not guarantee these optional features. Since v0.3.7, shaderInt64 and buffer device address are no longer needed. The launcher checks your GPU before you play.
  • Your own copy of Need for Speed: Most Wanted (2005), Xbox 360, PAL Spain edition, extracted, with default.xex, NFS/ and Movies/. This APK is built for that edition's executable. With another edition the game closes at startup, and the launcher warns you. Files from the PC or PS2 versions, or an unextracted ISO, will not work.
  • Enough internal storage for the APK, the game folder and the generated files.

Tested on a Samsung Galaxy S25 Ultra (Adreno 830) and a Galaxy A55 (Xclipse 530). Tester reports also cover several Mali GPUs (G57, G615, G68, G720).

Not supported yet: GPUs without descriptor indexing, even on recent drivers. This includes Mali-G52/G72/G76 (Bifrost), Adreno 610 and PowerVR GE8320. The renderer needs a different way of managing textures for them.

Installation and first launch

  1. Download the APK from the latest release in Releases and open it on your phone. If Android asks, allow Install unknown apps for your browser or file manager.
  2. Install the APK and open Need for Speed Most Wanted. Grant the file access the app asks for; on Android 11 or later this is the All files access setting. Then go back to the launcher.
  3. Copy default.xex, NFS/ and Movies/ directly into Internal storage/nsfmw-androidevolved/. You can also tap Elegir carpeta del juego (choose game folder) and select the extracted folder; the app copies it there.
  4. Check that the launcher shows the files as available, then tap Jugar (play). The first time, the app builds nfsmw_shaders.nfsp from your copy and shows its progress. This takes from a few seconds to a couple of minutes on slower phones.
  5. The game opens in landscape. Try 1280×720 at 60 FPS to start with.

The folder should look like this:

Internal storage/nsfmw-androidevolved/
├── default.xex
├── NFS/
├── Movies/
├── nfsmw_shaders.nfsp           (generated by the app)
└── nfsmw_shaders.nfsp.version   (generated by the app)

Do not download or share game files. The shader library is built on your device from your own copy.

Updating from an earlier version

Install the new APK over the old one, without uninstalling it or clearing the app's data. Your saves and settings are kept. If the new version changes the shaders, the app rebuilds them on its own when you tap Jugar. With v0.3.7 this happens once.

If Jugar does not appear

  • Check the file access permission and reopen the app.
  • Make sure default.xex sits directly in nsfmw-androidevolved/, next to NFS/ and Movies/, with no extra folder in between.
  • If the import fails, check your free space and select the folder that contains all three items.

Launcher, settings and controls

  • Graphics: internal resolution, FPS limit, antialiasing, shadows, reflections, sky glow, image filter and screen format.
  • Text language (v0.3.7): the PAL disc carries the game text in ten languages (Spanish, English, French, German, Italian, Dutch, Swedish, Danish, Finnish and Polish). Choose one in the launcher. Speech and movies stay in the disc's language.
  • Game volume: from Normal to Maximum.
  • Touch controls: analog or tilt steering, D-pad, A/B/X/Y, LB/RB, BACK, START, brake and throttle. In the editor (gear button) you can move, resize and hide them, and change their opacity.
  • Bluetooth and USB gamepads work as player 1 and hide the touch controls.
  • Enviar crash o log (send crash or log) creates a ZIP with your device report, to share by email or in a GitHub issue. Attach the ZIP to the form. See the tester guide (in Spanish).

What's new in v0.5.4

  • Custom Vulkan drivers: import an Android ARM64 driver ZIP from Driver Vulkan → Importar ZIP, select it, test it with Probar driver, or return to the system driver. External drivers require Android 9+. Turnip is for Adreno; PanVK is for Mali, with device/Android/kernel restrictions. No driver packages are bundled.
  • Mali and other four-set GPUs: the renderer combines the 3D and cube texture descriptor sets when the device supports only four sets. Both Vulkan layouts and shaders are adapted; GPUs with more sets retain their existing path.
  • ARM stability: command data is published before another thread executes it, addressing race-start crashes with an invalid guest function address.
  • Xclipse: conservative CPU conversion of BC4/BC5 on Samsung proprietary drivers.
  • Optional updates: the launcher checks official GitHub releases in the background and offers Actualizar or Más tarde. Buscar actualizaciones forces a manual check. Playing does not require updating or a connection.

Compatibility fixes adapted with attribution from victorgbd's fork, preserving this launcher's design. See the compatibility review and driver instructions. Gameplay and the system driver probe were confirmed on the S25 Ultra; individual Snapdragon 888/8 Gen 1, Adreno 720, Mali and Xclipse combinations still need tester confirmation. Missing descriptor-indexing features are still a limitation.

What's new in v0.3.8

  • Fixed the black screen when returning to the game after switching to another app.

What's new in v0.3.7

  • Vulkan 1.1: the native renderer runs on 1.1 drivers that have VK_EXT_descriptor_indexing. The shaders (SPIR-V 1.5) are converted to SPIR-V 1.3 when they are loaded; all 152 pass the official validator for Vulkan 1.1.
  • No more shaderInt64 or buffer device address: the shaders no longer read constants through 64-bit pointers. This opens the game to many Adreno 7xx and Mali-G57/G68 phones that stopped at "el dispositivo Vulkan no tiene shaderInt64". The shader library is rebuilt once (PAL Spain: SHA-256 b84602ca…).
  • Text language selectable in the launcher.
  • Edition warning: if your default.xex is not the PAL Spain one, the launcher explains it instead of closing with "No function registered at 8262E768".
  • Reports now include the game edition, shaderInt64, the descriptor indexing source and the list of Vulkan extensions.

Tested on the Galaxy S25 Ultra, including a simulated Vulkan 1.1 driver without 64-bit pointers. The details are in the tester guide.

Earlier versions

  • v0.3.6: CPU conversion of the BC1–BC5 textures the driver does not support; Mali protection in Estabilidad gráfica (graphics stability).
  • v0.3.5: Compatibilidad · experimental mode (Xenos backend), a memory fix for old kernels, and reports from the launcher.
  • v0.3.4: fixed blocky and wrong reflections on Xclipse (diagnosis).
  • v0.3.3: fixed intro and cutscene audio (Android audio).

Building

Requirements: Android SDK, NDK 28.2.13676358, JDK 17 or later, and PowerShell.

.\build_android.ps1

The Release APK is written to android/app/build/outputs/apk/release/app-release.apk. It is optimized and built for arm64-v8a.

Project and licenses

  • android/: launcher, SDL integration and the Android build.
  • app/, sdk/: the recompiled application and ReXGlue.
  • docs/: port notes and build documentation.

Game files and the code generated from default.xex are kept out of Git. See LICENSE and THIRD_PARTY_NOTICES.md. This is a fan project with no affiliation with Electronic Arts; "Need for Speed" is a trademark of Electronic Arts Inc.

About

No description, website, or topics provided.

Resources

Stars

245 stars

Watchers

18 watching

Forks

Releases

Packages

Contributors

Languages