PSPRecomp README

The project's README from github.com/jessicanataliagta/PSPRecomp. As one markdown file: README.md.

PSPRecomp

PSPRecomp is a static recompilation framework for PSP software. It reads an Allegrex/MIPS executable, analyzes guest code, emits C++ translation units, and runs them through a native host runtime instead of shipping a PSP interpreter or JIT.

The repository is split between a reusable framework and game-specific profiles. The first working profile is GTA: Vice City Stories (profiles/vcs).

Repository layout

include/psprecomp/   Public runtime and Allegrex interfaces
src/                 ELF/PRX loading, decoder, memory, runtime and support code
tools/               Generic analyzer, recompiler and reverse-engineering helpers
tests/               Framework regression tests
configs/             Generic examples and PSP NID data
profiles/            Game-specific hosts, generated code, configuration and tests
  vcs/               GTA: Vice City Stories profile

Game-specific addresses, HLE behavior, native fast paths, renderer integration and generated AOT code belong under a profile. The framework should remain usable without any profile selected.

Requirements

Build the framework only

cmake -S . -B out/framework -DPSPRECOMP_PROFILE=""
cmake --build out/framework --config Release
ctest --test-dir out/framework -C Release --output-on-failure

This builds psprecomp_core, psp_analyze, psp_recomp, dump_function and the framework tests.

Build a profile

Profiles are selected with PSPRECOMP_PROFILE:

cmake -S . -B out/vcs -DPSPRECOMP_PROFILE=vcs
cmake --build out/vcs --config Release

Windows users working on the VCS profile can use the maintained scripts in profiles/vcs/scripts.

Create another profile

See docs/PROFILE_GUIDE.md. A new title normally provides its own generated corpus, HLE/profile host, configuration, tests and optional native fast paths without modifying the framework for game-specific addresses.

Game files

No commercial game executable or asset is included. PSPRecomp does not ship an EBOOT decryption implementation. Profiles expect files obtained from the user's own copy in the format documented by that profile.

Source provenance

See docs/SOURCE_PROVENANCE.md for the project rules around independently written code, profile boundaries, decryption and third-party source.

Third-party code

The framework is MIT licensed. Individual profiles may include separately licensed dependencies or assets; their notices stay beside those files. The VCS profile lists its bundled dependencies in profiles/vcs/THIRD_PARTY.md.

License

PSPRecomp framework code is distributed under the MIT License. See LICENSE.

PSPRecomp (jessicanataliagta/PSPRecomp)

emulation
Searching Database…

What is this?This is PSPRecomp, a static recompilation framework for PSP (PlayStation Portable) software. It reads an Allegrex/MIPS executable, analyzes the guest code, and emits C++ translation units that run on a native host runtime instead of using a PSP interpreter or JIT.
Is this an emulator or a compiler toolchain?It's not a traditional emulator - it statically translates PSP MIPS code ahead of time into native C++ source, which is then compiled into a native binary, so there is no runtime interpreter or JIT involved at all.
How do I build it?Install CMake 3.20+ and a C++20 compiler, then build the framework, which produces psprecomp_core, pspanalyze, psprecomp, dumpfunction and the framework tests; to build a specific game, select a profile with PSPRECOMP_PROFILE (the VCS profile has maintained Windows scripts under profiles/vcs/scripts).
What tools do I need before building?You need CMake 3.20 or newer and a C++20 compiler; for the current Windows/DX12 VCS profile build you also need Visual Studio 2022.
Can I just download a game and run it right away?No - PSPRecomp ships no commercial game executable, assets, or EBOOT decryption implementation; each profile expects you to supply the relevant files from your own copy of the game, in the format that profile documents.
Which games does it actually support right now?Only one profile exists so far: Grand Theft Auto - Vice City Stories (profiles/vcs). The framework itself works standalone without any profile and is meant to be extended with new game profiles.
Why static recompilation instead of emulation or a JIT?Translating the PSP's MIPS code directly into native C++ ahead of time avoids the runtime overhead of an interpreter or JIT, letting the translated game run as regular compiled native code.
What does a game profile actually contain?A profile holds game-specific memory addresses, HLE (high-level emulation) behavior, native fast paths, renderer integration, and the generated ahead-of-time C++ code for that title, kept separate from the shared framework.
How would I add support for a new game?You create a new profile following docs/PROFILE_GUIDE.md, supplying that title's own generated corpus, HLE/profile host, configuration, and tests without modifying the shared framework code.
Is there guidance on legal/source boundaries for profiles?docs/SOURCE_PROVENANCE.md lays out the project's rules on independently written code, profile boundaries, decryption, and incorporating third-party source.
Size
66.3 MB
Stars
230
Updated
CommitAug 14
Age
2mo
Commits · 90 Days