[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1bx19y4s2kocz":3},{"code":4,"message":5,"data":6,"timestamp":31},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":27,"homepage":28,"updated_at":29,"history":30},"ran-j\u002FPS2Recomp",6,"Playstation 2 Static Recompiler & Runtime Tool to make native PC ports","C++",3682,218,416,560,[],"Turns PS2 game binaries into portable C++ source, so porters get readable, hackable code instead of an opaque emulator.","## The problem\nPorting a PS2 title to PC usually means either shipping an emulator (you inherit someone else's CPU and GPU emulation, and every fix lives in that emulator) or hand-decompiling millions of instructions before anything runs. PS2Recomp takes a third path: it statically translates a PS2 ELF into C++ and ships a runtime that executes the generated code, giving you a source tree you can read, patch and extend.\n\n## What's different\nEmulators such as PCSX2 interpret or JIT guest code at runtime behind a full hardware model; PS2Recomp instead emits one C++ statement per MIPS R5900 instruction, which is deliberately literal and therefore slow but transparent. That differs from N64Recomp, its stated inspiration, mainly in scope: PS2Recomp also carries an R3000A IOP module executor, syscall dispatch, and game-override hooks for per-build patches. The config-driven `stubs`, `skip` and address-binding model matters more than the translation itself: it lets you triage a stripped retail ELF by routing unknown calls to generic `ret0`\u002F`ret1` handlers, then promote them to real implementations.\n\n## Who it's for\nReverse engineers and porting teams who are comfortable in Ghidra and C++ and own the game they are working on. The README's preferred workflow starts in Ghidra, exports functions with a provided script, and recompiles from that map. It is not for players who want to run a disc image, and not for people hoping for a one-click converter; the runtime's own limitation list says performance is very bad for VU and GS, and much hardware emulation is stubbed.\n\n## Cost of adoption\nYou need CMake 3.20+, a C++20 compiler (the README says it is mostly tested with MSVC), SSE4\u002FAVX host support, and submodules cloned recursively. Every port becomes a C++ project you build and maintain yourself, and per-game patches are tied to specific ELF builds and addresses. The licence is GPL-3.0, which is a real constraint if you plan to ship a closed-source port. The README is unusually explicit that this is experimental and that the runtime is a foundation to build on, not a finished product.\n\n## Verdict\nThe repository is about 18 months old, not yet seen on the daily trending board, and picked up roughly 400 stars in a single month on the C++ monthly board, which reads as a spike of attention rather than a long-established tool. The code is candid about its gaps, which is a good sign for maintainer honesty and a bad sign for anyone expecting a drop-in pipeline. It is worth serious time only if you are already doing PS2 reverse engineering and want a C++ codebase as the output; everyone else should watch it and wait for the GS\u002FVU story to improve.",{"slug":19,"name":20},"developer-tools","Developer Tools",[22,23,24,25,26],"ps2","recompile","reverse-engineering","static-recompilation","tool","GPL-3.0",null,"2026-10-24T22:05:47Z",[],1792898395]