The project

The game, recompiled

Ascension translates the game's code into C++ and compiles it for your PC. It is not an emulator: it is the game itself, recompiled, on top of the ps3recomp runtime. See how it works, step by step.

The main processor

The game's PPU code becomes C++ and is compiled for your CPU.

The SPUs

The programs of the six SPUs are translated too; the heaviest were rewritten as native code, checked against the original.

The video

The video commands go to RPCS3's renderer (Vulkan or OpenGL); a renderer of our own is in development.

Performance

An open plan, measured step by step: the goal is to run well on ordinary CPUs, not only on the strongest.

Where it stands

From start to finish: iSamigor finished the game on their PC (Ryzen 7 9800X3D, RX 9070 XT). On ordinary CPUs it is still slow and can hang. Numbers from the repository's README, of 05 Nov 2026.

First level on a Ryzen 7 5700G, measured on Windows in the same scene. Other machines: players' reports.
WhereEarly NovemberNowRPCS3
First level, whole PC (8 cores, 16 threads)~21-23 fps~24 fps35-40 fps
First level, 4 cores only (8 threads)~14-15 fps~17-18 fps
Main menu~50-55 fps~50-55 fps
First boss fight13-21 fpsnot measured again yet
First level: fps over timeRPCS3's RSX, whole PC
010203040RPCS3 35-40 fps1024 fps19 Oct 202622 Oct 202605 Nov 2026
See the numbers
DatefpsWhat changed
19 Oct 202610RPCS3's RSX becomes the renderer
20 Oct 202615SPU floats without the extended-range check
21 Oct 202616.7Each SPU on its own core
22 Oct 202617.5PPU registers in local variables
23 Oct 202622SPU code built for AVX2, a lighter runtime
03 Nov 202622Measured against RPCS3 in the same scene
05 Nov 202624RSX off the critical path, PGO, new defaults

What paid in November

  • The main processor's code compiled with a profile of the game's real use (PGO): ~10% shorter frames.
  • The game's main thread above normal priority: -2.7 ms a frame.
  • The jobs at the end of the frame spread over up to 4-5 SPUs: -2.1 ms a frame.
  • The RSX thread sleeps on an empty queue instead of spinning (~8%), and the SPUs pick their next work themselves (~1.6%).
  • More of the SPUs' geometry (EDGE) as native code, checked against the original: its heaviest job got 28% faster.

The RSX is off the critical path: its wait between the geometry's two passes went from 9-12 ms to ~0.1 ms. The frame is now ~55% EDGE (the SPUs' geometry module), and inside it the job manager's interrupts cost as much as the jobs' own code: that is the next target.

Stability

  • FixedThe freeze in the level with the geometry lists waiting forever (from 3 in 5 runs to none in 4).
  • FixedThe freeze with CopyLocalMemory offset error: none in 40 level runs.
  • GuardedCorrupted video commands no longer kill the RSX; the cause is still open.
  • OpenAn object drawn several times near the giant arm; the BATCHJOB hang; a rare crash ~70-105 s into the level.

Milestones

What the game could do, and when. From the game's repository: MILESTONES.md

  1. 05 Nov 2026

    Multiplayer: quick match gets past the player's location and picks its matchmaking server on the project's own server; the game connects and opens an SSL 3.0 session, which the server is learning to answer.

  2. 05 Nov 2026

    The RSX off the critical path: its wait between EDGE's two geometry passes went from 9-12 ms to ~0.1 ms. The first level runs at ~24 fps on the whole PC and ~17-18 on 4 cores (was ~14-15); the frame is now ~55% SPU module 218, where the job manager's interrupts cost as much as the jobs' own code.

  3. 05 Nov 2026

    The CopyLocalMemory offset error freeze fixed: an Edge Zlib counter, and a guard on the texture streaming table's hand-off. None in 40 level runs on 4 cores.

  4. 04 Nov 2026

    Two more defaults, each measured in-run on a 4-core PC: the game's main thread above normal priority (-2.7 ms a frame) and the frame's tail jobs spread over up to 4-5 SPUs (-2.1 ms). The main processor's code built with profile-guided optimization (PGO): ~10% shorter frames.

  5. 04 Nov 2026

    Multiplayer reaches the warrior lobby with the project's own server (in development, still private); the player's multiplayer profile is kept on their account. Online matches do not work yet.

  6. 04 Nov 2026

    Runs on macOS again (Apple Silicon, RPCS3's RSX), for testing: the RSX thread now recovers from corrupted command data instead of stopping the game.

  7. 04 Nov 2026

    The first level's frame measured part by part: of ~50 ms, ~21 ms are the SPUs' geometry lists (EDGE) and ~9-12 ms the wait for the RSX thread between that geometry's two passes.

  8. 03 Nov 2026

    The intermittent level freeze found and fixed: a store from the main processor could be lost in the middle of an SPU's atomic operation, leaving the geometry lists waiting forever. The repro went from 3 freezes in 5 runs to none in 4.

  9. 03 Nov 2026

    Measured on Windows against RPCS3 in the same first-level scene: 22 fps native, 35-40 on RPCS3. Two changes become the default: the RSX thread sleeps on an empty command queue instead of spinning (~8% shorter frames on a 4-core PC), and the SPUs pick their next work themselves (~1.6% shorter on the same PC).

  10. 23 Oct 2026

    First boss fight reached (13-21 fps while fighting). The profile there shows the SPU time spread over many small pieces, so the next work goes after costs every SPU job pays, not one function at a time.

  11. 23 Oct 2026

    The frame's edge-smoothing post-process runs natively: its four heaviest SPU stages rewritten in C, identical to the original on 12 million checked calls; that work costs about half.

  12. 23 Oct 2026

    Level ~17.5 → ~22 fps: lifted SPU code built for AVX2, lighter SPU runtime.

  13. 23 Oct 2026

    Launcher Video → Effects: depth of field, motion blur and MLAA can be turned off (the same patches RPCS3 offers, found in the 1.00 disc). Experimental: textures still glitch with them off.

  14. 23 Oct 2026

    More SPU code that was still being interpreted is now recompiled, and two streamed pieces of the geometry job run natively.

  15. 22 Oct 2026

    Level ~15 → ~17.5 fps: the main processor's recompiled code keeps the game's registers in local variables instead of memory (re-lifted; 1.5-1.8x on isolated functions).

  16. 21 Oct 2026

    SPU job replay: recorded game jobs rerun outside the game and checked byte for byte by what they write, with timing and profiling. Module 218 (per-draw geometry) decoded: index decompression and position transform written natively, identical on the recorded jobs; the rest of the job goes native next.

  17. 21 Oct 2026

    Level ~15 → ~16.7 fps: each SPU on its own core, the main PPU thread on core 0.

  18. 20 Oct 2026

    Level ~10 → ~15 fps: lifted SPU floats without the extended-range check (RPCS3's "approximate" rules), no local-store diagnostics in lifted code, contiguous job-module code lifted as one function, streamed code found by an index.

  19. 19 Oct 2026

    Level textures correct: IO space handed back on unmap, so the scenery's vertex streams no longer read the command buffer.

  20. 19 Oct 2026

    Main menu 12 → 28 fps on RPCS3's RSX: SPU transfers into surfaces the GPU protected were being dropped.

  21. 19 Oct 2026

    RPCS3's RSX as the renderer (Windows and macOS): the game's GPU/SPU post-process rounds paced on the game's own progress.

  22. 18 Oct 2026

    The first level (Kratos in chains): a lost-task race in the SPURS taskset scheduler fixed; the level loads and runs (~16 fps on live draw).

  23. 17 Oct 2026

    Brazilian Portuguese (voices from the US disc, text already on the EU disc); mods as recipes, Skip intro included.

  24. 17 Oct 2026

    Main menu 1 -> 12 fps: the 18 job modules the loading never streams lifted too (33 in all), streamed code found inside bigger GETs and by content.

  25. 17 Oct 2026

    A launcher: video, language, subtitles and mods; the game renders inside its window.

  26. 17 Oct 2026

    The main menu renders (about 1 fps).

  27. 17 Oct 2026

    The cinematic at full speed and in sync (29.98 fps), the end-of-loading stall gone, module 214 lifted whole (GPU reports wait for the post-process tasks, no lost task wakes, cellVdec holds AUs).

  28. 17 Oct 2026

    RsxSync woken by GPU reports, SSE4.1 SPU ops, 381 job-module entries, the interpreter honouring interrupt enables. Cinematic video at 72-90% speed.

  29. 17 Oct 2026

    Performance, part two: position-independent lifts of streamed job code, SSE4.1 for lifted SPU code. Menus ~10 → 26-55 fps, cinematic ~35 → 45-60 fps.

  30. 17 Oct 2026

    Performance: the 15 Wws job modules lifted, a performance panel. First-use menus 5-6 → ~10 fps.

  31. 17 Oct 2026

    The opening cinematic plays with picture and sound (cellVdec with FFmpeg at run time; the "black screen" was the game's fade card waiting for it).

  32. 16 Oct 2026

    The menus read: X16 font atlas, framebuffer sRGB and texture gamma, fragment DDX/DDY in the live draw engine.

  33. 16 Oct 2026

    Past the loading screen (SPURS tasksets: duplicate starts, Taskset2 size and event flags, SPU-created tasks).

  34. 16 Oct 2026

    Re-lifted with the v0.15 lifter (a spill-reload bug corrupted a heap at frame ~12): the loading screen.

  35. 16 Oct 2026

    The main renderer runs past its second frame: SPURS2 (32 workloads, tempArea, flags1), the frame's SPU post-process, GPU/SPU synchronization.

  36. 15 Oct 2026

    The intro screens render: the legal text, "Sony Computer Entertainment presents", Santa Monica Studio, the online-play notice (live draw engine). The same on macOS through Metal.

  37. 15 Oct 2026

    Boots through the system checks and mounts the game's archives (sys_lwcond_t layout, files past 2 GB, Edge Zlib on the host).

  38. 15 Oct 2026

    EBOOT.BIN decrypted, imports and functions found, 1.8 million lines of C++ lifted and compiled; the executable starts.

Credits

ps3recomp
sp00nznet and contributors: the recompiler, the runtime and the system libraries.
RPCS3
the RSX code used as the renderer (GPL-2.0).
iSamigor
testing on a second PC, runtime fixes, and the first to finish the game.
Cinzel
the headings' font (SIL Open Font License).