A reverse-engineering project that recovers independently loaded Breath of Fire III binaries as readable C89, backed by target-qualified evidence and byte checks.
- Linux on x86_64 — the supported host. First-time setup downloads
Linux-only managed binaries: the canonical compiler is a statically linked
Linux ELF (
toolchains/gcc-2.7.2-psx/gcc), PSn00b ships*-linux.zipartifacts, and the compiler-variant catalog is pinned tolinux-x86_64. macOS and Windows are not supported; a compatibility layer (for example WSL or a VM) may work but is not tested. justanduv(used byjust setupto create the Python 3.12+ virtual environment)git(fetches submodules),cargo(builds the localbof3-disk/emi-extools), andmeson(>= 0.58.0) with a host C compiler (gccorclang) andninja(>= 1.8.2) — Meson's native build backend compiles the Rizin toolchain and fails closed without eithercmake(>= 3.20) — every lift verification rebuilds the authored object through CMake;bin/asm-diffandbin/buildfail closed without it7z— first-time setup downloads and extracts a staged PsyQ.7z, and the same host tool extracts theBreathOfFireIIIv1.1.7zmedia archive when no already-extracted CUE/BIN set exists- A licensed CUE/BIN set of Breath of Fire III (US release) under
inputs/external/ - Internet access for the first-time toolchain download
just setup
just doctorjust setup initializes retained dependencies, user-authorized media, and
local toolchains. just doctor verifies the result. See
Tool usage for the complete ordered workflow.
Work on an extracted executable image or EMI entry — never the EMI archive. Original bytes and target manifests are the source of truth.
bin/splat TARGET
bin/m2ctx TARGET@0xADDRESS
bin/m2c TARGET@0xADDRESS -o out/candidate.c
# Edit the metadata-owned lift source under src/bof3/<subsystem>/.
bin/asm-diff TARGET@0xADDRESS
bin/byte-match TARGET@0xADDRESSLift identity and target ownership come from explicit manifest claims, maps,
Splat, and parsable @source/@behavior metadata — never directory ancestry
or filenames. Read Function matching before
proposing a lift.
bin/decomp-status [TARGET...] # live matching status of tracked lifts
bin/symbols check # symbol maps and naming debt
just check # full practical validation gateStart with docs/index.md for the audience-oriented map.
| Task | Reference |
|---|---|
| Complete ordered tool workflow | Tool usage |
| Lift and match one function | Function matching |
| Resolve asm-diff symptoms | Matching playbook |
| Memory macros and qualifiers | Memory API |
| Understand target identity and ownership | Context |
| Read reviewed format/runtime/data findings | Specs |
| Avoid known reverse-engineering mistakes | Lessons |
Run --help or --example on commands. Want to help? Read
CONTRIBUTING.md.