Static recompilation of Tekken 3 (USA) for the PlayStation 1.
Built on PSXRecomp — a MIPS R3000A → C → native x64 static recompilation framework. The game executable is recompiled to produce a single binary that runs without an emulator, delivering perfect native performance.
⚠️ Engine Enhancement: This repository features a custom-built CDDA engine patch explicitly engineered to solve the severe CD audio stuttering bugs that occur during gameplay and the main menu, where the music would start repeating for seconds.
To run a release of Tekken3Recomp, you need your own legally obtained copy of:
- Tekken 3 (USA) — disc image (
.cue/.bin)
No retail BIOS image, game disc image, or game assets are included in or distributed by this repository or its releases.
Playable with Custom Enhancements. What works today:
- ✅ Boots and plays — The game runs natively with full rendering, input, and memory-card saves.
- ✅ CDDA Audio Bugfix — Specifically patches the
0x03(Play) command spam loop that otherwise causes infinite audio stuttering during transitions and gameplay. - ✅ High Resolution — Configured for HD scaling via
settings.toml. - ✅ Supersampling & Filtering — 2x Supersampling with nearest-neighbor filtering to preserve sharp pixel aesthetics.
⚠️ Scope: USA region only. Other regions are untested.
Grab the release archive from Releases, extract it, and run the executable.
- Provide the game disc — You must provide your own legal copy of the game. Place your
.cueand.binfiles inside the extracted Release folder. - Configure the path — Open the
game.tomlfile and set the[disc]path to your.cuefile:[disc] path = "Tekken 3 (USA).cue"
- Launch — Run
Tekken3Recomp.exe.
A critical issue was discovered where the game would repeatedly stutter or loop the music for seconds during gameplay and the main menu.
The Cause: The original game code constantly spams the Play command (0x03) to the CD-ROM drive while waiting in specific loops. Real hardware simply ignores the redundant command if the disc is already playing. However, the standard software recompiler obeys it blindly, constantly rewinding the audio track to the start position.
The Fix: We injected a protection layer directly into the engine's cdrom.c handler (start_cdda_playback). By validating if the engine is already playing the exact same track, we absorb the redundant Play commands and ensure the music flows without interruption:
static int start_cdda_playback(int requested_track) {
if (cdda_playing && requested_track == 0 && iso_handle && iso_track_count(iso_handle) > 1) return 1;
// ... continues original logic ...
}We have also improved how the executable reports its performance metrics (main.cpp). Traditional emulators often display a static "60 FPS" based on the monitor's refresh rate (VBLANK), masking the game's actual internal framerate. Our engine explicitly tracks the true rendering rate (s_game_flip_count) and displays the real-time internal game FPS on the window title:
const double game_fps = (double)(s_game_flip_count - s_fps_last_flip) / seconds;Any community fix or pull request is welcome! The idea is to further improve the engine code, making all games more compatible and accurate. Feel free to contribute and help expand the scope of native PlayStation recompilation.
- Port / Configuration / Engine Fixes: fabioap-cpu
- Base Recompiler Technology: psxrecomp by mstan
