Skip to content

About

Standalone N64 decompilation builds, matching and function-by-function ROM proofs.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

826 Commits

Folders and files

Repository files navigation

cake-unbake-64

Tools to help unbake a cake: extract, build and prove N64 decompilations against the original ROM.

This is a personal tool. It is not officially maintained and may change or break without notice.

Install

On Windows use WSL with Ubuntu.

sudo apt install build-essential binutils-mips-linux-gnu git python3 python3-venv
python3 -m venv ~/.venvs/unbake && . ~/.venvs/unbake/bin/activate
pip install "splat64[mips]==0.50.0" spimdisasm==1.42.4 rabbitizer==1.16.2 \
  git+https://github.com/AbuN64/cache-64 git+https://github.com/AbuN64/cake-unbake-64

Toolchains that assemble with abumas need it from mas-n64.

Usage

unbake init NAME
unbake setup
unbake census --out CLASH.tsv   # names declared with more than one type
unbake unify                    # one type per name, every object byte-identical

unbake --help lists the rest. Config, project layout and CI are in docs/usage.md. Older-build address tables: docs/address-tables.md.

Development

Run bin/dev-setup once, then bin/test, bin/lint and bin/hygiene. During a joint repository gate, bin/abucache-requirement uses the dependency source supplied by ButlerMaster's WORKTREE_Projects_AbuN64_AbuCache64 contract. This variable belongs to ButlerMaster's gate/job interface; it lets the private test environment validate the candidate dependency before either repository lands. An invalid supplied tree refuses setup. Outside that interface, the resolver selects AbuCache64's landed commit.

License

Released under GNU GPL version 3 or later.

One owner per cache

AbuCache64 owns every cache, content store, worker slot, pool, executor and timing path (abucache.compile, store, slots, pool, stages). ci/abucache-audit, run by the check entry point, refuses a new one here naming that owner; the files it still lists move to abucache and leave the list, nothing joins it.

Generated make obtains a positive parallel width from abucache.slots and holds the grant until its make child exits. unbake sync --makefile writes the admission command into local.mk; JOBS does not grant parallel work. The host must provide the AbuCache64 runtime (ABU_RUNTIME, otherwise its standard operator file). python -m unbake.hostruntime --out <runtime-file> renders it from the unbake host configuration. Inherited UNBAKE_CORES and GNU make jobservers keep the parent's admission. Missing or invalid admission refuses before build recipes run; a standalone raw -j cannot bypass admission.

About

Standalone N64 decompilation builds, matching and function-by-function ROM proofs.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages