Nakagawa Recomp

Nakagawa Recomp is a static recompiler for the PlayStation Portable. It translates a game's code into C once, before you play, and compiles it into a Windows program. You supply the game from your own disc.

README

Nakagawa mark

Nakagawa Recomp

Play PSP games you own as native Windows programs.

Download · Website · Compatibility · Discussions · Wiki

CI License: GPL-3.0-or-later Platform: Windows 11 x64

Nakagawa Recomp is a static recompiler for the PlayStation Portable. It translates a game's code into C once, before you play, and compiles it into a Windows program. You supply the game from your own disc. The project is early: one game is playable, one plays a stage, and the rest are untested.

A rally in Hot Shots Tennis: Get a Grip, running natively in Nakagawa Recomp; play the clip

Watch a 28-second rally with sound (MP4, 4.5 MB).

Hot Shots Tennis: Get a Grip belongs to its publisher. This repository contains no game data: you need your own copy of the game, and nothing here downloads one.

Download

Download v0.0.1, the first release: one 285 MB ZIP for Windows 11, 64-bit. It includes the build tools, so you don't need to install anything else.

  1. Extract the ZIP and start bin\nakagawa_player.exe.
  2. Drag your game's .iso into the player window, or choose START SETUP WIZARD. Nakagawa decrypts your own disc on your PC, the way PPSSPP does. It never touches firmware.
  3. Press BUILD PACKAGE, then PLAY. A first build takes several minutes.

The ZIP isn't code-signed, so Windows may warn you the first time. The release notes say what works, what doesn't yet, and how to check the download. From v0.0.2, Settings > Updates checks GitHub for a newer version when you ask, and can download and check it for you.

You need:

  • Windows 11, 64-bit, with a graphics card that supports Vulkan.
  • 8 GB of RAM (16 GB recommended) and 5 GB of free disk space, ideally on an SSD (system requirements).
  • Your own copy of the game as an uncompressed .iso disc image. Nothing here downloads games, firmware or fonts. docs/YOUR_OWN_GAMES.md covers what to do if a file can't be decrypted.
  • Builds after v0.0.1 also take a compressed .cso, .zso or .chd image. The player expands it once, when you add it, into a plain .iso in its data folder, so you need free space for the full .iso as well (details).

Compatibility

GameRatingNotes
Hot Shots Tennis: Get a GripPlayableFull matches and Story Mode at the game's own 30 frames per second on the reference PC. Its title file ships with Nakagawa. Movies show black for now (#1049).
PAC-MAN Championship EditionIn-gameReaches its menu and plays a stage, through general fixes with no game-specific code (#552, #556). The rest of the game hasn't been tried.
Any other PSP gameNot ratedThe player imports it, builds a package and names anything that isn't supported yet. Going straight from your disc to a running game for more titles is in the works (#308).
Two showcase demosPlayableSmall PSP programs the project wrote as tests. They ship with the release and need no game files.

These are the ratings the player shows on each game's page. docs/COMPATIBILITY.md has the full detail for every game and every part of the PSP. To report how a game runs, post in Compatibility reports.

How it works

Nakagawa translates the game's MIPS code into C ahead of time and compiles it together with a runtime that stands in for the PSP's system software, graphics and sound. The player is written in C with SDL3 and Vulkan. The same approach is behind Zelda 64: Recompiled (built with N64Recomp) and Unleashed Recompiled (built with XenonRecomp).

  • When a game needs something that isn't supported yet, the player stops and names the missing piece.
  • No games, firmware or Sony system fonts ship here, and no game data is ever downloaded. Open replacement fonts ship instead; the PSP's own fonts are used only if you copy them from your own console.
  • The player works offline. It connects to the internet only when you agree: to fetch build tools when they aren't already present, and to check for updates when you ask (network use).

docs/ARCHITECTURE.md describes the pipeline, and docs/CODE_TOUR.md follows one game through the code.

Build from source

The prerequisites are listed in docs/SETUP.md: Windows 11 x64 with a Vulkan GPU, PowerShell 7.4+ and MSYS2 UCRT64.

  1. Build the player from a checkout: mingw32-make player.
  2. Start build\nakagawa_player.exe, then drag a game's .iso into the window or choose START SETUP WIZARD. Later games go in through the Add a disc image you own tile in the library.
  3. The player checks the disc. If the game's code is encrypted, Nakagawa decrypts your own disc on your PC into that game's folder. If a file can't be decrypted, the player names it and the reason, and you can add a decrypted copy from your own disc instead.
  4. Press BUILD PACKAGE, then PLAY. If your PC doesn't have the build tools yet, consent once and the player downloads the exact versions it needs.
  5. Optional: text uses the project's own open fonts (#313). For the PSP's original lettering, import the fonts from your own PSP with python tools/nk_cli.py fonts import <folder>.

Without a game, mingw32-make player showcase builds the two showcase demos, and the player lists them on its own. On Windows this needs WSL 2 and PSPDEV (steps).

Nakagawa 3D Showcase: a brightly textured cube rotating against a dark background in the recompiled demoNakagawa Breakout Showcase: the ball moving through a colored brick field above the paddle and score
3D ShowcaseBreakout Showcase
Two project-written PSP programs, recompiled and running at the PSP's native 480×272. No commercial game is shown in these two demos, and none is included.

Matching decompilations

hst-decomp code matched

hst-decomp rebuilds the code of Hot Shots Tennis: Get a Grip as C and C++ that compiles back to the original bytes. lbp-psp-decomp does the same for LittleBigPlanet on the PSP. Both are source-only and contain no game data.

No decomp source is copied into Nakagawa, which is meant for any PSP game. The decomp's function names can label the C that Nakagawa generates (#1495), and what it shows about the game helps replace Nakagawa's Hot Shots Tennis workarounds with general fixes (#363).

Work belongs in the recompiler and runtime when its cause is general, such as a system call, an instruction, a display-list command or a build step, because the fix then helps every game and can be tested with synthetic fixtures. It belongs in a decompilation project only when it rebuilds one function's source so that it compiles back to the original bytes, which needs your own copy of the game. If you are unsure, open an issue here and describe what you saw.

Contributing

Testing is the most useful help right now: try a game you own and report how far it gets. Bugs go in issues, and good first issues are a place to start on code. CONTRIBUTING.md has the rules and the checks to run.

All documentation · Contributing · Accessibility · Getting help · Security · Code of conduct · AI use

Project health

CodeQL Coverage (Python tooling and native core tests) OpenSSF Best Practices OpenSSF Baseline OpenSSF Scorecard

License and lineage

GPL-3.0-or-later (LICENSE); some files keep GPL-2.0-or-later or their upstream terms. The project began as a fork of sal063's PSP Recompilation Project and still contains code from it and code adapted from PPSSPP; the ATRAC audio and H.264 video decoders come from FFmpeg. It is not endorsed by those upstream authors. Details: NOTICE.md and CREDITS.md.

Legal

Nakagawa Recomp is an independent fan project. It is not affiliated with or endorsed by Sony Interactive Entertainment, Clap Hanz, or any game publisher. PlayStation and PSP are trademarks of Sony Interactive Entertainment Inc., and game titles are trademarks of their owners; they are named here only to say what the project works with. This repository contains no game files, firmware or Sony system fonts. Nakagawa decrypts your own disc locally with the public game key tables PPSSPP ships; it never downloads games and never decrypts firmware.

Rights holders with a concern about anything here can contact the maintainer privately through GitHub private reporting or the contact on the maintainer's profile. We aim to respond promptly and will remove material where appropriate.

Dedication

Dedicated to Blitzen: One of the greatest pets you could ever have. A companion from beginning to end.

An absolute sweetheart.

2012-2026