Emulator

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 memory 8.2MB

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.

BIOS requirement 0files

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

Not measured yetNo cross-emulator accuracy comparison has been published yet. PSoXide is checked against original hardware, but those checks don't establish an accuracy ranking against other emulators.

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.

none: 0boots: 0intro: 0menu: 0in-game: 20playable: 0perfect: 0
GameRegionPSoXideReal BIOS (recorded)FMVKnown issues
Crash Bandicoot (USA)NTSC-Uin-gamein-gamen/anone known
CTR - Crash Team Racing (USA)NTSC-Uin-gamein-gamen/aAdventure, 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-Uin-gamein-gameplaysnone known
Metal Gear Solid (USA) (Disc 1) (Rev 1)NTSC-Uin-gamein-gamenone seenCircle 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-Uin-gamein-gamen/anone known
Marvel vs. Capcom - Clash of Super Heroes (USA)NTSC-Uin-gamein-gameplaysthe arcade opponent is random, so the fight differs between the kernels
Resident Evil 2 - Dual Shock Ver. (USA) (Disc 1)NTSC-Uin-gamein-gameplaysnone known
Resident Evil 3 - Nemesis (USA)NTSC-Uin-gamein-gameplaysnone known
Street Fighter Collection - Street Fighter Alpha 2 Gold (USA) (Disc 2)NTSC-Uin-gamein-gameplaysnone known
Spider-Man (USA)NTSC-Uin-gamein-gameplaysnone known
Tekken 3 (USA)NTSC-Uin-gamein-gameplaysthe 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-Uin-gamein-gameplayswas 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)PALin-gamein-gameplaysnone known
WipEout 2097 (Europe)PALin-gamein-gamen/anone known
WipEout 3 - Special Edition (Europe)PALin-gamein-gameplaysnone known
Chrono Cross (USA) (Disc 1)NTSC-Uin-gamein-gameplaysno 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-Uin-gamein-gamenone seen3600-frame run: the opening cutscene; the first controllable scene is several minutes of cutscene later
Nightmare Creatures (USA)NTSC-Uin-gamein-gameplaysthe first fight differs between the kernels
Formula One 2001 (Europe) (En,Fi)PALin-gamein-gameplaysnot 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)PALin-gamein-gameplaysLibCrypt: 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), DuckStation 459a6fc, Beetle PSX HW 0.9.44.1 (ee042b7) through a minimal libretro frontend, PCSX-Redux 1b7a4f1d in -cli mode.

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