Skip to content

Start the ft_marth units - #130

Open
vagnertxr wants to merge 2 commits into
doldecomp:mainfrom
vagnertxr:marth/ft-marth-stubs
Open

Start the ft_marth units#130
vagnertxr wants to merge 2 commits into
doldecomp:mainfrom
vagnertxr:marth/ft-marth-stubs

Conversation

@vagnertxr

Copy link
Copy Markdown

Fills in the stubs and one-liners across the five ft_marth translation units, which were already declared in configure.py and split in splits.txt but had empty sources. 27 functions match; the units stay NonMatching.

unit matched
ft_marth_status_uniq_process_special_s 11
if_marth_final 7
ft_marth_status_uniq_process_special_hi 4
ft_marth_status_uniq_process_special_final 3
ft_marth_status_uniq_process_special_lw 2

Most are empty bodies or constant returns. The rest: fn_106_DB60 reads a byte at +132; fn_106_BE30 is __fabs, taking and returning double (a float signature costs a frsp the target does not have); fn_106_BFE0, fn_106_C98C and fn_106_D400 install a table pointer; fn_106_CD00 stores two float arguments.

Three are left as NONMATCHING with a note. fn_106_D4E4 and fn_106_C390 copy floats between objects, and mwcc hoists the loads ahead of the stores while the target interleaves them — struct assignment, field by field and raw float pointers all produce the same schedule.

This does not link any unit. It opens five files that were empty and leaves the small stuff out of the way for whoever takes the large functions.

Verified: ninja reports 127 files OK.

vagnertxr and others added 2 commits September 8, 2026 21:49
Fills in the stubs and one-liners across the five ft_marth translation
units, which were declared and split but had empty sources. 27 functions
match; the units stay NonMatching.

Most are empty bodies or constant returns. The rest:

- fn_106_DB60 reads a byte at +132.
- fn_106_BE30 is __fabs, taking and returning double. A float signature
  costs a frsp the target does not have.
- fn_106_BFE0, fn_106_C98C and fn_106_D400 install a table pointer.
- fn_106_CD00 stores two float arguments.

Three are left as NONMATCHING with a note: fn_106_D4E4 and fn_106_C390
copy floats between objects, and mwcc hoists the loads ahead of the
stores while the target interleaves them. Struct assignment, field by
field and raw float pointers all produce the same schedule.

Verified: `ninja` reports 127 files OK.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
fn_106_D9E0 and fn_106_DA2C are a matched pair guarding a byte at +136:
one calls into g_IfMngr and raises the flag, the other calls the opposite
entry point and clears it. Both reach 98%.

What is left is argument evaluation order. The target dereferences
g_IfMngr before loading the field at +72; mwcc does it the other way
round, and hoisting the manager into a local or going through
IfMngr::getInstance() does not move it.

Verified: `ninja` reports 127 files OK.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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