SMT NINE Recomp

SMT NINE Recomp is a Windows port of Shin Megami Tensei NINE for the Xbox, allowing custom key bindings and graphics options.

README

SMT NINE Recomp

A native Windows port of Shin Megami Tensei NINE for the original Xbox, built with xboxrecomp. Game code is statically translated from your Japanese retail disc and compiled locally. The default build provides Japanese; the project's Chinese translation is optional. Config can import an ISO that you have separately patched with an English translation, with or without Chinese support.

This repository contains project source, configuration, patch rules and Chinese translation inputs. Supply your own supported Japanese ISO. Game executables, disc assets, generated game C, Microsoft fonts, saves and external translations are excluded from the repository and source archive. Separate release update assets contain programs for existing installations and, only for Chinese-enabled installations, the Chinese runtime image. Original Media, Japanese game images, settings and saves are excluded.

中文说明 · Build instructions · Controls · Status and limits · Build validation · Third-party notices

System requirements

ComponentRequirement / verified scope
Operating systemWindows 10/11 x64.
CPUx86-64 processor. A minimum CPU model and runtime RAM requirement have not been established.
GraphicsVulkan uses the system driver directly and requires Vulkan 1.3 with the features listed in the build guide. D3D11 requests feature level 11_0; D3D12 uses Microsoft D3D11On12 and needs a D3D12-capable driver. OpenGL uses the bundled WineD3D implementation. Supporting an API name alone does not guarantee correct rendering.
Graphics memoryNo certified minimum VRAM figure yet. 512 MiB configurations are not verified as supported. On integrated GPUs, dedicated memory is only part of the available memory; the process budget and shared system memory also matter.
Initial settingsStart with 1× render scale, 4:3, 30 Hz. Higher scales increase render-target memory; 4× has sixteen times the target pixels of 1×, not sixteen times the total application memory.
Local compilationAt least 15 GB free disk space and 16 GB RAM recommended for extraction and building. These are build recommendations, not a measured gameplay minimum.

Local street samples with an AMD Ryzen 9 9950X and RTX 5090 exercised D3D11, Vulkan, OpenGL and D3D12; an AMD Radeon Graphics integrated adapter was additionally checked with D3D11. Japanese 1×, 4:3, 30 Hz samples ran around 29–31 FPS without the reported horizontal character gaps. Measured process-memory samples are recorded separately. This is a tested reference, not a minimum specification or a full-game guarantee. The exact reported female-player and restaurant scenes remain unverified.

For graphics reports, send runtime/startup.log from the affected run, your driver version and a nearby ordinary save. Fatal errors also create err.log beside the game executable; include it for crash reports. It retains the current run’s settings/log excerpts, error and native/guest diagnostic context. Successful launches and normal exits preserve the last fatal report; check its UTC timestamp. For DXGI-based backends, the log records dedicated/shared capacity and, where the selected runtime supports DXGI memory queries, process current_bytes and budget_bytes for local/nonlocal segments every five seconds while frames are presented. Unsupported DXGI queries are explicitly marked unavailable. The direct Vulkan backend currently reports its device/API selection without these DXGI memory measurements. Capacity, process usage and budget are different measurements; 512 MiB dedicated memory alone does not prove exhaustion. Translation layers can expose compatibility adapter names and capacity values, so include the GPU/driver information reported by Windows too. A new GUI launch replaces the log, so copy it before launching again.

Config offers Auto, Vulkan, OpenGL, D3D12 and D3D11. Auto tries Vulkan → OpenGL → D3D12 → D3D11 on initialization errors. D3D12 reuses the existing D3D11 rendering code through Microsoft D3D11On12; it is not a separate native D3D12 renderer or a promise of lower memory usage.

Build and run

Update
  • Prebuilt game: Close the game and Config, then open Updater.exe and click Update now. If your folder does not have it yet, download Updater.exe from Releases and place it beside smt9_recomp.exe. It selects the Japanese or Japanese/Chinese package and preserves game data, settings and saves. Manual update ZIPs and Apply-Update.cmd remain available.
  • Source build (including imported English): Run git pull, then .\update.cmd using the existing build environment. No ISO is needed.

Original game data, settings and ordinary saves are kept. All languages share ordinary saves in save/UDATA; back up the save folder or open it with Config → Save folder. Old saves are copied automatically on first use, with originals retained. Chinese-enabled installations also receive Chinese runtime text updates; Japanese-only installations do not. Update details.

First installation

Requires Windows x64, Python 3.14, Visual Studio 2022 C++ Build Tools including Windows SDK/CMake/Ninja, and Rustup. Only the optional Chinese build also requires FFmpeg/FFprobe on PATH and Windows Simplified Chinese supplemental fonts (SimSun and SimHei). See the build guide for the supported disc identity and tool setup.

git clone https://github.com/gymzatan/smt-nine-recomp.git
cd smt-nine-recomp
setup.cmd
build.cmd --iso "D:\Games\Shin Megami Tensei - Nine (Japan).iso"
Config.exe
smt9_recomp.exe

--iso automatically accepts bare XISO (.xiso.iso or .iso), full-disc ISO dumps, or an extracted original game folder containing default.xbe and Media. No conversion is needed; original game files are verified instead of requiring one whole-disc checksum. Folder contents are checked before copying into the build directory; the source folder is unchanged.

To include Chinese, add the option to the initial build command:

build.cmd --iso "D:\Games\Shin Megami Tensei - Nine (Japan).iso" --with-chinese

The build extracts and verifies the ISO, prepares native code and title resources, translates game functions with the pinned lifter, builds the DSP/runtime and compiles the game and Config. --with-chinese also builds Chinese scripts, fonts and subtitled movies through the existing writers. Without that option, those resource steps are skipped. Original movie audio is retained. No image-generation or translation service is called during a build.

The two executables are in the project root. Double-click smt9_recomp.exe to play and Config.exe for settings; no command script is needed. Runtime paths follow the executable, so the folder can be moved to another drive while keeping its resources together. The default build starts with English settings and Japanese game text; a Chinese-enabled build starts with Chinese settings and game text. Existing saved settings remain in effect.

Config offers Vertical synchronization (VSync) beside the refresh-rate setting. It is off by default. Enable it to synchronize presentation with the monitor; the game's 30/60 Hz setting remains independent. Save and restart the game to apply it.

Config also offers Graphics processing: Multithreaded (default) / Single-threaded. Multithreaded processing runs the ordered graphics-command consumer alongside game execution. Single-threaded processing runs the same consumer on the game thread for comparison and troubleshooting; it does not set whole-process CPU affinity. Save and restart the game to apply it.

In Config, interface language and game language are independent. Japanese is built in; Chinese appears only when enabled at build time. To play Japanese and English only, use the default build, then Import or update language ISO…, enter English as its identifier and display name, and select your already-patched ISO. Import compiles a separate language package; it does not include or apply an English translation patch for you. To update the translation later, import the newly patched ISO with the same English identifier. It replaces the active English package only after a successful build; settings and ordinary saves are kept.

Repository layout

DirectoryContents
game/Native host, Config, game-specific overrides and tests
vendor/xboxrecomp/Pinned recompiler/runtime with the project's accepted changes
config/Function identities, ABI, dependency downloads and code-generation edits
translations/zh-CN/Chinese text, encoding and original-reference identities
font_pipeline/, localization/, writers/Existing font, subtitle and text builders
patches/Rebuildable title corrections and staff-list edits
reference/DSP and resampler dependency source
tools/Disc-to-native-build integration
data/, runtime/, backends/, build/Ignored local inputs and generated outputs

Project status

The project owner has successfully playtested the final battle through the ending, with no issues reported in that tested route. Intermediate chapters, scenes and routes have not yet been fully tested and are the main remaining gameplay coverage gap. Existing verification also covers startup, ordinary saving/loading, movies, street navigation, shops, story battles, RTS tutorials and chapter two entry.

Display options include multiple aspect ratios, resolution scales, 30/60 Hz, and Vulkan/OpenGL/D3D12/D3D11 selection. Exact-executable instant checkpoints, pause and screenshots are supported. Testing of the final battle and ending does not establish complete coverage of every route or stable 60 FPS on every configuration; see the current status.

License and credits

Project-authored code and Chinese translation inputs are provided under the MIT license. Third-party components retain their own licenses, including LGPL portions of xboxrecomp/WineD3D; see THIRD_PARTY.md and the retained notices. SimSun and SimHei are read from the user's Windows installation and are not redistributed. Shin Megami Tensei NINE and its original assets belong to their respective rights holders. This is an independent fan project.

Custom controls

Open Config → Bindings, select one of the 24 Xbox game actions, then choose or capture its keyboard key and XInput controller input independently. This includes both sticks' directions and clicks, the D-pad, face buttons, Start/Back and the original Xbox White/Black/L/R buttons. Unbound disables that input; Restore defaults restores the original profile. Choose Apply, then Save in the main window. Changes take effect next launch and are stored in runtime/NINE.ini; program updates preserve them.

Stick directions can be reassigned or reversed. Analog stick magnitudes and trigger pressure are retained when mapping to analog actions; physical input still requires the game's foreground window. F1–F5, F8 and F9 retain their existing checkpoint/screenshot/pause functions and cannot be assigned as gameplay keys. The Controls help and documentation show the default profile. Full control instructions.