Skip to content

Match game/ sprite + effects TUs - #19

Open
monde-lointain wants to merge 26 commits into
mariopartyrd:mainfrom
monde-lointain:decomp/game-sprite-fx
Open

monde-lointain wants to merge 26 commits into
mariopartyrd:mainfrom
monde-lointain:decomp/game-sprite-fx

Conversation

@monde-lointain

Copy link
Copy Markdown

Stacked on #18 — review/merge after it.

Summary

Decompiles the 2D sprite manager/renderer and the envelope/cluster/shape effect executors to byte-matching objects and flips them to Matching in configure.py.

Units (6): game/sprman.c, game/sprput.c, game/esprite.c, game/EnvelopeExec.c, game/ClusterExec.c, game/ShapeExec.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 (5/8)

Part of a stacked series decompiling the DOL game/ + libhu libraries, built on the previous PR (decomp/game-hsf). 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 6 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).
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