Files
PS2Recomp/ps2xRuntime
Ranieri 8c8a97af65 Feature/mpeg decoder (#120)
* feat: added ffmepg as dependency

* feat: wip decoder video

* feat: some perf and cleanup

* feat:  added generic MPEG stream notification

* feat: CMakeLists.txt in ps2xStudio to configure SDL2 build options for static linking.
fix: fix ffmpeg setup for linux
fix: now MPEG decoder now identify that movie has ended and can play again anytime
feat: better audio stub to not block games

* feat: fix expansion test

* feat: foo

* a

* feat: finally added a helper to to prevent thread starvation

* feat: added basic  vu0 code execution

* feat: added yield Guest Execution After Wake to prevent deadlock

* feat: added  options  on  cmake for logs
feat: better input for keyboard pad

* feat: small corrections like top and itop vu branches etc

* feat: changes

* feat: working feature

* feat: fatal frame iop

* feat: test fix
feat: z buffer fix

* fix: gix GsPutIMR IMR

* feat: added rl imgui

* feat: added helper to get snapshot

* feat: added debug panel consuming snapshots

* feat: added pad snapshot
feat: added RCP debug events

* feat: final cleanup from old code

* feat: added EE timer counter
feat: applyed sound driver for Lotr
feat: better check for sound driver compat layout
feat: enquee and cosumed DMa cause
feat: added Pad execCMd
feat: update GS vsync signal flag
feat: custom IOPs for LotR

* feat: small cleanups

* fix: fix wrong import
2026-06-26 21:04:39 -03:00
..
2026-06-26 21:04:39 -03:00
2026-06-26 21:04:39 -03:00
2026-06-26 21:04:39 -03:00
2026-06-26 21:04:39 -03:00

Runtime Library

The runtime library provides the execution environment for recompiled code, including:

  • Memory management (32MB main RAM, scratchpad, etc.)
  • Register context (128-bit GPRs, VU0 registers, etc.)
  • Function table for dynamic linking
  • Basic PS2 system call stubs

How to use:

Take your decompiled code and place the cpp files on ps2xRuntime/src/runner and header files on ps2xRuntime/include and compile/be happy.

Vita Build Notes

The Vita runtime uses Quenom/raylib-5.5-vita for vita build. I recommend build runtime only.

Expected environment:

  • VITASDK points to your VitaSDK root.
  • Quenom/raylib-5.5-vita has already been built and installed into $VITASDK/arm-vita-eabi.
  • SDL2 with the PVR backend required by that raylib fork is also installed into the same VitaSDK prefix.
  • PS2X_DEFAULT_BOOT_ELF is mandatory, you need to define where your game is like "ux0:data/RANJ00001/game/SLUS_201.84".

The CMake for ps2xRuntime consumes those preinstalled headers and libraries from VitaSDK. It does not fetch or install the Vita raylib fork for you.

Adding Custom Function Implementations

You can add custom implementations for PS2 system calls or game functions by:

  1. Creating function implementations that match the signature:
void function_name(uint8_t* rdram, R5900Context* ctx, PS2Runtime *runtime);
  1. Registering them with the runtime:
runtime.registerFunction(address, function_name);

Advanced Features

Memory Translation The runtime handles PS2's memory addressing, including:

  • KSEG0/KSEG1 direct mapping
  • TLB lookups for user memory
  • Special memory areas (scratchpad, I/O registers)

Vector Unit Support

PS2-specific 128-bit MMI instructions and VU0 macro mode instructions are supported via SSE/AVX intrinsics.

Instruction Patching

You can patch specific instructions in the recompiled code to fix game issues or implement custom behavior.

Limitations

  • Graphics and sound output require external implementations
  • Some PS2-specific hardware features may not be fully supported
  • Performance may vary based on the complexity of the game