How PSoXide compares
Recorded memory measurements, compatibility results and hardware validation for the PSoXide emulator. The results below describe specific builds and test conditions. Speed results aren't published on this site.
Headless footprint at 1× speed for build 22ae5d6. The next smallest is Beetle PSX (interpreter) at 30 MB. PSoXide reads the disc as the game asks for it instead of loading the whole image.
The others were given a Sony BIOS (SCPH-5501 for NTSC, SCPH-5502 for PAL) with fast boot. PSoXide booted every game on its own HLE kernel.
Accuracy
Hardware validation: a hardware test battery runs on a real PlayStation, the results come back through a video recording, and every value is compared with what the emulator produces. I write up the gaps found that way, with steps to reproduce them, in emulator-accuracy-from-silicon.md.
20 of 20 commercial games reach the in-game tier
All runs used no BIOS. The in-game tier includes gameplay or an in-engine opening scene after New Game; it doesn't mean a full playthrough. These are headless runs: a fixed schedule of Start and Cross presses, then the frames are checked by eye. A headless run can show at most "in-game"; "playable" and "perfect" need a person to play through a real stretch, and none of these has that rating yet.
| Game | Region | PSoXide | Real BIOS (recorded) | FMV | Known issues |
|---|---|---|---|---|---|
| Crash Bandicoot (USA) | NTSC-U | in-game | in-game | n/a | none known |
| CTR - Crash Team Racing (USA) | NTSC-U | in-game | in-game | n/a | Adventure, New, a typed name, save to card 1, then the hub; the HLE is about 0.04 s ahead of the real kernel after 20 s of loading (was 0.13 s before the CD head fix) |
| Gran Turismo 2 (USA) (Arcade Mode) (Rev 1) | NTSC-U | in-game | in-game | plays | none known |
| Metal Gear Solid (USA) (Disc 1) (Rev 1) | NTSC-U | in-game | in-game | none seen | Circle confirms in its menus and Cross cancels (the old 'Start ignored' was the scripted Cross backing out); FMV not reached in the run |
| Metal Slug X (USA) | NTSC-U | in-game | in-game | n/a | none known |
| Marvel vs. Capcom - Clash of Super Heroes (USA) | NTSC-U | in-game | in-game | plays | the arcade opponent is random, so the fight differs between the kernels |
| Resident Evil 2 - Dual Shock Ver. (USA) (Disc 1) | NTSC-U | in-game | in-game | plays | none known |
| Resident Evil 3 - Nemesis (USA) | NTSC-U | in-game | in-game | plays | none known |
| Street Fighter Collection - Street Fighter Alpha 2 Gold (USA) (Disc 2) | NTSC-U | in-game | in-game | plays | none known |
| Spider-Man (USA) | NTSC-U | in-game | in-game | plays | none known |
| Tekken 3 (USA) | NTSC-U | in-game | in-game | plays | the arcade opponent differs between the kernels; the HLE is about 0.05 s ahead after the first 6 s of loading (was 0.22 s before the CD head fix) |
| Tomb Raider (USA) (Greatest Hits) | NTSC-U | in-game | in-game | plays | was black after Start Game under both kernels: the CloneCD loader put track 2's pregap in track 1, and CD-DA play could not start in a pregap; both fixed |
| WipEout (Europe) (v1.1) | PAL | in-game | in-game | plays | none known |
| WipEout 2097 (Europe) | PAL | in-game | in-game | n/a | none known |
| WipEout 3 - Special Edition (Europe) | PAL | in-game | in-game | plays | none known |
| Chrono Cross (USA) (Disc 1) | NTSC-U | in-game | in-game | plays | no BIOS: the name-entry grid and default name come from the HLE kernel's own font (original glyphs, Latin and digits so far), so they look different from a console's |
| Valkyrie Profile (USA) (Disc 1) | NTSC-U | in-game | in-game | none seen | 3600-frame run: the opening cutscene; the first controllable scene is several minutes of cutscene later |
| Nightmare Creatures (USA) | NTSC-U | in-game | in-game | plays | the first fight differs between the kernels |
| Formula One 2001 (Europe) (En,Fi) | PAL | in-game | in-game | plays | not LibCrypt-protected (only self-modifying code, which the I-cache model serves as the console does: 6 stale-cache executions at 80027F00h in 7200 frames, all matching the cached routine) |
| Legacy of Kain - Soul Reaver (Europe) | PAL | in-game | in-game | plays | LibCrypt: the .sbi (32 sectors) is read; the game asks GetlocP about 16 of them at frame 886, and the run diverges from a no-.sbi run afterwards, so the key is consumed; the late-game hang without the key is not reachable headless |
Measured on 668e66f02. "Real BIOS (recorded)" is a run made with the same input before BIOS support was removed. Source: docs/COMPATIBILITY.md. No game data or images are distributed.
How it was measured
All four emulators ran headless on one Apple M3 Max MacBook Pro (14 cores, 36 GB, macOS 26.6.2, on AC power). Nothing opened a window or played audio, and each rendered in software at native resolution. Every game started from power-on with the same pad schedule PSoXide's compatibility runs use, and captured frames confirmed each emulator had reached the same part of the game before the measuring window opened.
- CPU and memory at 1×: each emulator paced to the console's field rate (59.83 Hz NTSC, 49.76 Hz PAL). CPU is CPU time over wall time; memory is the median physical footprint, sampled every 0.25 s.
- Versions: PSoXide
aacadfd,9eff8c8,22ae5d6(release profile), DuckStation459a6fc, Beetle PSX HW 0.9.44.1 (ee042b7) through a minimal libretro frontend, PCSX-Redux1b7a4f1din-climode.
Caveats
- Memory is measured without a frontend for every emulator, so real use costs more once a window, a GPU and audio are added. DuckStation's number includes about 360 MB of graphics allocations its regression runner keeps open.
- Disc data read on demand sits in the OS file cache, outside the process, for every emulator that streams. None of the footprints count it.
- Boot timing differs slightly between a BIOS boot and PSoXide's HLE boot, so Tekken 3 picks a different opponent and stage on each emulator. The other games reach the same scene with small differences.
- Beetle's recompiler couldn't reserve its fast memory map on macOS and warned it would run slower. It deadlocked once in 30 runs; that run was repeated.
- Standalone Mednafen has no windowless mode, so Beetle PSX, the libretro fork of its PS1 core, stands in for it.
The raw per-run CSV and the harness are kept with the benchmark. This page reads data/emu-bench.json, generated from the harness's summary CSV by site import-emu-bench (tools/xtask).