Skip to content

Match game/ object system TUs - #20

Open
monde-lointain wants to merge 30 commits into
mariopartyrd:mainfrom
monde-lointain:decomp/game-object
Open

monde-lointain wants to merge 30 commits into
mariopartyrd:mainfrom
monde-lointain:decomp/game-object

Conversation

@monde-lointain

Copy link
Copy Markdown

Stacked on #19 — review/merge after it.

Summary

Decompiles the game-object system: main object manager, system objects, DLL objects, and sub-objects to byte-matching objects and flips them to Matching in configure.py.

Units (4): game/objmain.c, game/objsysobj.c, game/objdll.c, game/objsub.c

Why

Each TU was reverse-engineered to C that compiles (CodeWarrior mwcc GC/2.6, effective -O0,p) to an object that is byte-identical to the one dtk extracts from the retail DOL, so the relinked build/GP7E01/main.dol reproduces the original image exactly.

Verification

  • ninja diff exit 0 (dtk whole-DOL SHA-1 guard) at this branch tip; build.sha1 130/130.
  • Clean from-scratch build verified in a pinned local Docker CI image (Ubuntu 22.04, dtk v1.3.0, compilers 20240706, wibo 0.6.11, sjiswrap v1.2.0): the upstream base and every stacked branch tip build green.

Stack (6/8)

Part of a stacked series decompiling the DOL game/ + libhu libraries, built on the previous PR (decomp/game-sprite-fx). Please review/merge in stack order. Because GitHub can't base a cross-fork PR on a fork-only branch, the diff shown against main is cumulative until the earlier PRs merge — the net-new change here is the 4 Match ... commit(s) at the tip.

Scope is strictly decompiled source + build-script config (configure.py, config/GP7E01/{symbols,config}.txt/yml, headers); no tooling or workflow files are included.

Decompile libhu/setvf.c to a byte-matching object (libhu SDK math).

Verified byte-exact (ninja diff exit 0).
Source ported verbatim from the Mario Party 4 sibling decomp.
Decompile libhu/subvf.c to a byte-matching object (libhu SDK math).

Verified byte-exact (ninja diff exit 0).
Source ported verbatim from the Mario Party 4 sibling decomp.
Decompile game/main.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/init.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/jmp.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/malloc.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/memory.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/process.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/fault.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/sreset.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/kerent.c to a byte-matching object (core system).

Verified byte-exact (ninja diff exit 0).
Decompile game/pad.c to a byte-matching object (low-level I/O).

Verified byte-exact (ninja diff exit 0).
Decompile game/dvd.c to a byte-matching object (low-level I/O).

Verified byte-exact (ninja diff exit 0).
Decompile game/data.c to a byte-matching object (low-level I/O).

Verified byte-exact (ninja diff exit 0).
Decompile game/decode.c to a byte-matching object (low-level I/O).

Verified byte-exact (ninja diff exit 0).
Decompile game/printfunc.c to a byte-matching object (low-level I/O).

Verified byte-exact (ninja diff exit 0).
Decompile game/hsfload.c to a byte-matching object (HSF model/animation).

Verified byte-exact (ninja diff exit 0).
Decompile game/hsfmotion.c to a byte-matching object (HSF model/animation).

Verified byte-exact (ninja diff exit 0).
Decompile game/hsfanim.c to a byte-matching object (HSF model/animation).

Verified byte-exact (ninja diff exit 0).
Decompile game/hsfex.c to a byte-matching object (HSF model/animation).

Verified byte-exact (ninja diff exit 0).
Decompile game/sprman.c to a byte-matching object (sprite/effects).

Verified byte-exact (ninja diff exit 0).
Decompile game/sprput.c to a byte-matching object (sprite/effects).

Verified byte-exact (ninja diff exit 0).
Decompile game/esprite.c to a byte-matching object (sprite/effects).

Verified byte-exact (ninja diff exit 0).
Decompile game/EnvelopeExec.c to a byte-matching object (sprite/effects).

Verified byte-exact (ninja diff exit 0).
Decompile game/ClusterExec.c to a byte-matching object (sprite/effects).

Verified byte-exact (ninja diff exit 0).
Decompile game/ShapeExec.c to a byte-matching object (sprite/effects).

Verified byte-exact (ninja diff exit 0).
Decompile game/objmain.c to a byte-matching object (object system).

Verified byte-exact (ninja diff exit 0).
Decompile game/objsysobj.c to a byte-matching object (object system).

Verified byte-exact (ninja diff exit 0).
Decompile game/objdll.c to a byte-matching object (object system).

Verified byte-exact (ninja diff exit 0).
Decompile game/objsub.c to a byte-matching object (object system).

Verified byte-exact (ninja diff exit 0).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant