Skip to content

Define gmregclear stage tables - #2955

Draft
MarkMcCaskey wants to merge 5 commits into
doldecomp:masterfrom
MarkMcCaskey:match-gmregclear-stage-tables
Draft

Define gmregclear stage tables#2955
MarkMcCaskey wants to merge 5 commits into
doldecomp:masterfrom
MarkMcCaskey:match-gmregclear-stage-tables

Conversation

@MarkMcCaskey

@MarkMcCaskey MarkMcCaskey commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

Investigating a match around adventure mode data.

Heavily WIP, ignore this PR for now.

The two 0x1A-entry stage tables were extern; the target defines them in this unit between the jumptables and the string pool. Reconstructing the initializers (with trailing pads preserving the retail offsets of lbl_803D85F0 and lbl_803D8B88) matches fn_8017C1A4 and gm_8017C838 exactly, improves four more functions, and matches both tables' data bytes. The remaining anchor rows suggest the original file was several translation units; noted at fn_801803FC.
@MarkMcCaskey
MarkMcCaskey marked this pull request as draft July 24, 2026 05:42
@MarkMcCaskey MarkMcCaskey added the ai-assisted Utilizes a LLM to do the heavy lifting label Jul 24, 2026
@decomp-dev

decomp-dev Bot commented Jul 24, 2026

Copy link
Copy Markdown

Report for GALE01 (482f296 - b680bdf)

Total data: 1211186 bytes (-4 bytes)
📈 Matched data: 87.83% (+0.71%, +8644 bytes)

✅ 73 new matches
Unit Item Bytes Before After
main/melee/gm/gm_17C0 .data +4408 0.00% 100.00%
main/melee/gm/gm_17C0 fn_8017C1A4 +1400 0.00% 100.00%
main/melee/gm/gm_17E4 fn_8017E8A4 +652 0.00% 100.00%
main/melee/gm/gmregclear .data +545 19.28% 100.00%
main/melee/gm/gm_17C9 gm_8017D7AC +532 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017DB88 +500 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017CBAC +488 0.00% 100.00%
main/melee/gm/gm_17EB fn_8017EE40 +456 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017CA38 +372 0.00% 100.00%
main/melee/gm/gm_17C0 gm_8017C838 +332 0.00% 100.00%
main/melee/gm/gm_17C0 fn_8017C0C8 +220 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017DD7C +216 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017E160 +188 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017E318 +176 0.00% 100.00%
main/melee/gm/gm_17E4 gm_8017E7FC +168 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017CD94 +160 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017E280 +152 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017C9A8 +144 0.00% 100.00%
main/melee/gm/gm_17C0 fn_8017C71C +132 0.00% 100.00%
main/melee/gm/gm_17E4 .bss +128 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017E068 +124 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017E0E4 +124 0.00% 100.00%
main/melee/gm/gm_17EB .bss +120 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017DE54 +116 0.00% 100.00%
main/melee/gm/gm_17C9 gm_8017DFF4 +116 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017DF28 +104 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017DF90 +100 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017E21C +100 0.00% 100.00%
main/melee/gm/gm_17EB fn_8017EDDC +100 0.00% 100.00%
main/melee/gm/gm_17C9 fn_8017DEC8 +96 0.00% 100.00%

...and 43 more new matches

🥀 63 broken matches
Unit Item Bytes Before After
main/melee/gm/gmregclear fn_8017C1A4 -1400 100.00% 0.00%
main/melee/gm/gmregclear fn_8017E8A4 -652 100.00% 0.00%
main/melee/gm/gmregclear gm_8017D7AC -532 100.00% 0.00%
main/melee/gm/gmregclear gm_8017DB88 -500 100.00% 0.00%
main/melee/gm/gmregclear gm_8017CBAC -488 100.00% 0.00%
main/melee/gm/gmregclear fn_8017EE40 -456 100.00% 0.00%
main/melee/gm/gmregclear gm_8017CA38 -372 100.00% 0.00%
main/melee/gm/gmregclear gm_8017C838 -332 100.00% 0.00%
main/melee/gm/gmregclear fn_8017C0C8 -220 100.00% 0.00%
main/melee/gm/gmregclear fn_8017DD7C -216 100.00% 0.00%
main/melee/gm/gmregclear fn_8017E160 -188 100.00% 0.00%
main/melee/gm/gmregclear fn_8017E318 -176 100.00% 0.00%
main/melee/gm/gmregclear gm_8017E7FC -168 100.00% 0.00%
main/melee/gm/gmregclear gm_8017CD94 -160 100.00% 0.00%
main/melee/gm/gmregclear gm_8017E280 -152 100.00% 0.00%
main/melee/gm/gmregclear gm_8017C9A8 -144 100.00% 0.00%
main/melee/gm/gmregclear fn_8017C71C -132 100.00% 0.00%
main/melee/gm/gmregclear gm_8017E068 -124 100.00% 0.00%
main/melee/gm/gmregclear fn_8017E0E4 -124 100.00% 0.00%
main/melee/gm/gmregclear fn_8017DE54 -116 100.00% 0.00%
main/melee/gm/gmregclear gm_8017DFF4 -116 100.00% 0.00%
main/melee/gm/gmregclear fn_8017DF28 -104 100.00% 0.00%
main/melee/gm/gmregclear fn_8017DF90 -100 100.00% 0.00%
main/melee/gm/gmregclear fn_8017E21C -100 100.00% 0.00%
main/melee/gm/gmregclear fn_8017EDDC -100 100.00% 0.00%
main/melee/gm/gmregclear fn_8017DEC8 -96 100.00% 0.00%
main/melee/gm/gmregclear fn_8017E3C8 -92 100.00% 0.00%
main/melee/gm/gmregclear gm_8017E528 -80 100.00% 0.00%
main/melee/gm/gmregclear gm_8017E578 -80 100.00% 0.00%
main/melee/gm/gmregclear gm_8017E664 -80 100.00% 0.00%

...and 33 more broken matches

📈 5 improvements in unmatched items
Unit Item Bytes Before After
main/melee/gm/gm_17C9 .bss +3186 0.00% 33.33%
main/melee/gm/gm_17C9 gm_8017CE34 +2367 0.00% 97.67%
main/melee/gm/gm_17C9 fn_8017D9C0 +401 0.00% 98.43%
main/melee/gm/gmregclear fn_80180630 +5 96.84% 97.27%
main/melee/gm/gmregclear .sdata2 -23 78.57% 91.67%
📉 2 regressions in unmatched items
Unit Item Bytes Before After
main/melee/gm/gmregclear gm_8017CE34 -2367 97.67% 0.00%
main/melee/gm/gmregclear fn_8017D9C0 -401 98.43% 0.00%

Keep the stage tables with the six functions at 8017C0C8-8017C984 and move their shared types into a private header. This preserves all six exact matches while restoring the later gmregclear data anchors.

Replace the emitted data-order helper with named writable string arrays so the retail .data layout is retained without adding synthetic text.
Give the new 17C0 translation unit a symbol-only header, move its struct definitions and typedefs into gm/types.h and gm/forward.h, and keep gmregclear.h limited to its own split.

Also relocate the two 1832 declarations that were previously carried by gmregclear.h. Code generation is unchanged.
Recover the Adventure and All-Star percentage accessors by assigning their duplicated conversion constants to separate translation units. Keep fn_8017F008 with regclear so its state remains private and its BSS ordering stays exact.

Define the shared game-speed constants in gm_17C0; volatile reads prevent MWCC from folding duplicate literals while preserving all existing matches.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-assisted Utilizes a LLM to do the heavy lifting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant