Archive of https://github.com/zecoxao/masterdec — One checkout of the decompiler family: spudec (PS3 SPU), startrekdec (PSP Kirk/Spock), f00ddec (Vita F00D/MeP), rl78dec (PS4/Vita RL78 syscon), mechadec (PS2 SPC970 MechaCon) as submodules https://github.com/zecoxao/masterdec
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
zecoxao c4e2eae19f bump allegrexdec: call-argument folding
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-10 13:25:32 +01:00
allegrexdec@9ba6c5fa51 bump allegrexdec: call-argument folding 2026-10-10 13:25:32 +01:00
f00ddec@256264edf1 masterdec: one checkout of the decompiler family 2026-09-19 21:31:17 +01:00
mechadec@b3868df18e bump mechadec: re-add CPU gate (keeps Ctrl-F5, skips on foreign CPUs) 2026-10-10 05:50:49 +01:00
rl78dec@436aa5278c Bump rl78dec: PS4/Vita syscon correction 2026-09-19 21:35:33 +01:00
spudec@9a509e11b9 masterdec: one checkout of the decompiler family 2026-09-19 21:31:17 +01:00
startrekdec@57693b1fcf masterdec: one checkout of the decompiler family 2026-09-19 21:31:17 +01:00
.gitignore masterdec: one checkout of the decompiler family 2026-09-19 21:31:17 +01:00
.gitmodules add allegrexdec (PSP Allegrex MIPS + VFPU decompiler) 2026-10-10 05:14:29 +01:00
README.md add allegrexdec (PSP Allegrex MIPS + VFPU decompiler) 2026-10-10 05:14:29 +01:00

masterdec

One checkout of the whole decompiler family. Each tool lives in its own repository and is pulled in here as a submodule, so this repo carries no code of its own — only the set, and the version of each that is known to go together.

git clone --recursive https://github.com/zecoxao/masterdec.git

Already cloned without --recursive:

git submodule update --init --recursive

Move every submodule to the tip of its own default branch:

git submodule update --remote --merge

The family

Submodule Target Console
spudec Cell SPU PS3
startrekdec Kirk and Spock crypto co-processors PSP
allegrexdec Allegrex main CPU (MIPS II + FPU + VFPU) PSP
f00ddec F00D security processor (Toshiba MeP) PS Vita
rl78dec Renesas RL78 syscon PS4 / PS Vita
mechadec Sony SPC970 MechaCon PS2

What they have in common

All five take the same shape. A decoder produces instructions, a lifter turns them into a machine-independent IR, and everything above that is shared in design:

decoder -> lifter -> cfg -> opt -> structure -> cgen

Each ships the same two front ends: an IDA plugin and a headless CLI that needs no IDA at all. The IDA hotkeys are the same everywhere —

Ctrl-Shift-S   decompile the function under the cursor
Ctrl-F5        decompile everything

— and each repo has a test suite that runs without IDA and without a firmware dump.

Where they differ is the decoder, and that difference is the interesting part:

  • spudec leans on IDA's own SPU processor module as a pure decoder and builds SSA above it; the others carry their own decoders.
  • f00ddec pairs with mep-ida, a Python Toshiba MeP processor module for IDA 9.x.
  • mechadec is the odd one out: SPC970 is a prefix machine with eight dispatch tables, where a byte means nothing on its own and the operand width belongs to the operation rather than the prefix. It ships its own IDA processor module and ROM loader, both driven by the same decoder the decompiler uses.
  • allegrexdec carries a full MIPS decoder that folds branch delay slots into their owning transfer, plus the Allegrex FPU and the VFPU vector unit — whose register naming and ~300-form opcode table are generated from kotcrab's ghidra-allegrex SLEIGH. It pairs with prxldr and loads PSP ELF/PRX headless.

Not included

No firmware dumps. None of these repositories redistribute one, and every test suite is written to pass without one.

Two adjacent repos are deliberately not submodules here, because they are processor modules and loaders rather than decompilers: mep-ida and prxldr_python.

Licence

Each submodule carries its own licence (MIT throughout at the time of writing).