SSBM Decomp
Loading...
Searching...
No Matches
Todo List
Global _fpclassify (double x)
somehow make this work with math.h
Global _HSD_ZListSort (void)
Create and use an offsetof macro to get ZList sort.texedge and sort.xlu
Global AXDriver_8038DA70 (const char *path, void(*callback)(void))
Currently 97.58% match - register allocation in section 1 and 2 parsing blocks (r0/r3 swap for count/ptr, r4/r5 swap for base pointer)
Global AXDriver_8038E034 (AXDriverAuxType type, void *param)
Currently 53.61% match - needs struct copy and computation order fixes
Global bool
Maybe some versions of MetroWerks support _Bool?
Global Camera_80029124 (Vec3 *, s32)
lots of ways to match this without the padding
Global Camera_80029AAC (CameraBounds *bounds, CameraTransformState *transform, f32 speed)
this makes it match, but its weird to pass in x38 as a param
Global Camera_8002A0C0 (CameraBounds *, CameraTransformState *)
figure out how to get cm_803BCCA0 to load into r3
Global Camera_8002B3D4 (void *)
inline?
Global Camera_8002B694 (CameraInputs *, s32)
there is probably a bigger inline
Global Camera_8002C010 (f32, f32)
not really sure how to get the same output as the if above
Global CameraInputs::x10
sus unions
Global checkItemThrowInput (Fighter_GObj *gobj)
This probably doesn't exist; see ftCo_AttackAir_CheckItemThrowInput.
Global Collide_LeftWallPush
These (and CollData::env_flags) should be a bitfield struct
Global CommandInfo::ptr [1]
Hack to match Command_04
Global CommandInfo::u
eventually clean this up, probably have each struct as its own union?
Global COMMON_DATA_F32
Fix common data struct
File common_structs.h
Delete this.
Global COPY_ATTRS (gobj, attributeName)
Remove declarations. Doesn't really need to be a macro.
Global db
does the padding mean this should be in another file before this one?
Global doAirHitColl (HSD_GObj *gobj)
Can maybe me combined with doAirColl.
Global doAnim0 (HSD_GObj *gobj)
GET_FIGHTER
Global doAnim1 (HSD_GObj *gobj)
GET_FIGHTER
Struct DObjList
This was split out of ft/types.h to break a circular dependency with fighter-specific types.h headers. Figure out a better place for it.
Global doColl (Fighter_GObj *gobj, ftSeak_MotionState msid)
Named flags.
Global doIasa (Fighter_GObj *gobj)
Some kind of missing bool inline
Global DOUBLE_PI32
Move elsewhere.
Global dropcallback (void *)
Currently ~90% match - second loop uses pointer arithmetic instead of indexed store (stwx). Stack frame is 8 bytes too large.
Global efLib_8005BE88 (int, HSD_GObj *parent_gobj)
Inline that returns ret_gobj?
Global expEvaluate (HSD_Exp *exp, u32 type, void *obj, HSD_ObjUpdateFunc update_func)
should HSD_ObjData be 4 bytes larger?
Global fabsf (f32 x)
Move elsewhere.
Global fake1 (void)
Remove
Global fake_HSD_JObjAddTranslationY (HSD_JObj *jobj, float y)
This uses the de-duplicated function ftCo_800C6AFC which is likely an inline from a header file. Come back to this once lbcoll is matched.
Global fake_HSD_JObjSetRotation (HSD_JObj *jobj, Quaternion *rotate)
Remove these once lbcoll is matched.
Global fake_HSD_JObjSetTranslate (HSD_JObj *jobj, Vec3 *translate)
figure out proper inlining for this function
Global Fighter::x1670 [1]
figure out proper size
Global Fighter_800679B0 (void)
&fighter_alloc_data+2, +3, +4 are not defined in the fighter.s
Global Fighter_804D64F8
verify that this is really a spawn number counter, then rename this var globally
Global Fighter_804D64FC
Fighter_804D64FC..Fighter_804D6550 are initialized to 0 in Fighter_LoadCommonData, probably all pointers
Global Fighter_PoisonMushroomApply (Fighter_GObj *gobj)
Float hack
Global Fighter_procUpdate (Fighter_GObj *gobj)

these double_lower_32bit variables are probably integer

do the bitflag tests here tell us if the player is dead?

We set this velocity to 0 after applying it. Is this SDI or ASDI?

incompatible-pointer-types because bad headers

Global Fighter_UnkRecursiveFunc_8006D044 (Fighter_GObj *gobj)
What is going on here?
Global float_nan
use standard library constants, because this definition seems to be platform dependant
Global flt_804D7FD8
float order hack
Global fn_800F6AC8 (HSD_GObj *gobj)
Named flags.
Global fn_80175D34 (void)
:: why does this have so much stack space
Global fn_8017AD04 (s32, s32)
:: figure out how to force the other functions not to inline this
Global fn_80185D64 (void)
fix pointer arithmetic is this indicative of an inner struct starting at xE4?
Global fn_8018E46C (HSD_GObj *, int)
Currently 98.8% match - permuter couldn't improve beyond score 140
Global fn_8018F888 (void)
Currently 78.75% match - needs register allocation fix
Global fn_8018FA24 (void)
Currently 84.63% match - needs loop pattern fix
Global fn_80191154 (HSD_GObj *)
Currently 83.05% match - compiler generates different register usage
Global fn_80191240 (HSD_GObj *)
Currently 78.85% match - needs register allocation fix
Global fn_8019175C (void *)
Currently 89.68% match - permuter couldn't improve Updates menu option selection animation.
Global fn_8019249C (HSD_GObj *)
Currently 92.46% match - permuter couldn't improve
Global fn_80192758 (HSD_GObj *)
Currently 96.8% match - permuter couldn't improve
Global fn_801949B4 (s32 *arg, u32 arg0, u32 arg01)
Currently 87.58% match - permuter couldn't improve
Global fn_80194BC4 (s32 *arg, u32 arg0, u32 arg01)
Currently 84.75% match - needs register allocation fix
Global fn_80194D84 (s32 *arg, u32 arg0, u32 arg01)
Currently 97.2% match - permuter couldn't improve Handles button input for tournament mode menu navigation.
Global fn_80195AF0 (s32 *arg, u32 arg0, u32 arg01)
Currently 93.5% match - permuter couldn't improve Handles name entry/selection input for tournament mode.
Global fn_8019610C (s32 *arg, u32 arg0, u32 arg01)
Currently 96.88% match - needs minor register allocation fix Handles confirm/cancel input for tournament start. Type casts used to match target sth instruction patterns.
Global fn_80196684 (s32 arg0)
Currently 83.98% match - needs register allocation fix Randomly assigns bracket positions for tournament seeding.
Global fn_80196CF8 (void)
Currently 95.92% match - needs minor register allocation fix
Global fn_80197E18 (HSD_GObj *)
Currently 69.71% match - needs register allocation fix Updates player HUD element visibility and position.
Global fn_80197FD8 (HSD_GObj *)
Currently 70.24% match - needs register allocation fix Updates JObj visibility based on menu option and player state.
Global fn_801981A0 (HSD_GObj *)
Currently 55.88% match - needs significant rework Updates player cursor animation and position.
Global fn_80198C60 (void)
Currently 99.63% match - permuter couldn't improve (instruction scheduling) Initializes tournament mode text displays.
Global fn_8019A71C (s32 *arg0)
Currently 98.36% match - needs branch pattern fix (beq+b vs bne)
Global fn_8019B860 (TmData *)
Currently 92% match - instruction scheduling issue (lfs/lbz order) Sets up tournament bracket display with entrant data.
Global fn_8019CFA4 (HSD_GObj *)
is there a different inline here? seems cursed
Global fn_801E8560 (Ground *, s32, CollData *, s32, s32, f32)
Currently 87.65% match - register allocation and stack offset
Global fn_801EF60C (Ground *, s32, CollData *, s32, s32, f32)
Currently 99.98% match - assert string relocation offset
Global fn_80227904 (HSD_GObj *camera, int port)
port should probably be a u8, but it's difficult
Global fn_8022AFEC (HSD_GObj *)

problem spot

figure out the inlines

Global fn_8027DAC8 (Item_GObj *gobj)
cant figure out the correct inline for this.
Global fn_802BB694 (Item_GObj *gobj)
Shared inline with fn_802BB784 fn_802BB574, fn_802BB44C
Global fn_803A6FEC (u8 *, s32, s32 *)
there seems to be a file boundary before this function, because its data section is 8-byte aligned after the previous C strings
Global fn_803AC168 (s32 *cmd_buf)
Currently 91.67% match - volatile load scheduling in critical section
Global fn_803AC634 (struct hsd_803AC3E0_arg0_t *file_desc, s32 file_idx)
Currently 97.73% match - register allocation in arg1==0 path
Global fn_803ACBE8 (CardState *state, s32 block_idx)
Currently 75.56% match - mwcc reassociates addition order
Global fn_803ACC0C (CardState *state, s32 block_idx, s32 file_id, s32 seq_num, void *expected_data, s32 data_size)
Currently 95.90% match - arg0/arg1 register swap (r27/r22 vs r26/r27)
Global fn_803ACD58 (CardState *state, void *icon_data, void *file_data)
Currently 95.49% match - compiler hoists state+0x370 to r31, shifting regalloc
Global fn_803ACF30 (CardState *state, s32 file_id, s32 seq_num, s32 version)
Currently 93.89% match - mwcc reassociates addition order in loop cond
Global fn_803ACFC0 (CardState *state, s32 block_idx, s32 file_id, s32 seq_num, void *payload, s32 payload_size, s32 version)
Currently 87.18% match - expression ordering and stbx vs stb+disp in byte stores
Global fn_803ADE4C (s32 card_state, s32 channel, s32 callback)
Currently 93.46% match - stwx vs stw+disp in rollback, reg swap in 2nd path
Global fn_803B1F78 (CardState *state, s32 channel, s32 file_id, s32 seq_num, s32 callback)
Currently 90.28% match - stwx vs stw+disp in rollback (same as fn_803ADE4C)
Global fn_803B21E8 (s32 card_state, s32 file_id, s32 seq_num, s32 callback)
Currently 94.85% match - stwx vs stw+disp in rollback (same as fn_803ADE4C)
Global fn_803B26CC (CardState *state, s32 file_id, s32 seq_num, s32 version, s32 callback)
Currently 87.04% match - result saved to r27 instead of staying in r3
Global fn_ToggleItemCollisionBubbles (void)
avoid auto-inlining into fn_CheckItemAndPokemonMenu
Global forceFloatOrder0 (void)
Float order hack.
Global forceFloatOrder1 (void)
Float order hack.
Global forceFloatOrder2 (void)
Float order hack.
File ft_0877.dox
Fix formatting
Global ft_8007C2E0 (Fighter *fp0, HitCapsule *hit0, Fighter *fp1, HitCapsule *hit1)
This is just the same inline twice.
Global ft_800C80A4 (Fighter *fp)
maybe uses a shared inline with ftmetal functions?
Global ft_CheckGroundAndLedge (Fighter_GObj *gobj, s32 direction)
Name does not follow our conventions.
Global ftAction_80071028 (Fighter_GObj *gobj, CommandInfo *cmd)
i believe they are actually read in reverse order, maybe
Global ftAction_8007121C (Fighter_GObj *gobj, CommandInfo *cmd)
this matches but isnt pretty. maybe an inline/macro as
Global ftAction_80071820 (Fighter_GObj *gobj, CommandInfo *cmd)
Heavily suggests that Fighter::cmd_vars is not an array.
Global ftAction_80071FC8 (Fighter_GObj *gobj, CommandInfo *cmd)
way too much stack
Global ftAction_80072320 (Fighter_GObj *gobj, CommandInfo *cmd)
cant get the b instruction to generate here and in case 6
Global ftAction_80072CD8 (Fighter_GObj *gobj, CommandInfo *cmd)

not sure how to actually handle this...

too much stack

Global ftAction_80072E4C (Fighter_GObj *gobj, CommandInfo *cmd)
same issues as ftAction_80072CD8
Global ftAction_80073008 (Fighter_GObj *gobj, CommandInfo *cmd)
cant seem to get the float to int, and there is a
Global ftAnim_80070A10 (Fighter *, Fighter_Part, FigaTree *)
inline this
Global ftAnim_80070E74 (Fighter_GObj *)
inline ftAnim_80070C48 here?
Global ftBossLib_8015C270 (void)
Get msid
Global ftBossLib_8015C2A8 (void)
Get msid
Global ftBossLib_8015C2E0 (void)
Get ASIDs
Global ftBossLib_8015C31C (void)
Get ASIDs
Global ftBossLib_8015C6BC (void)
Can be GET_FIGHTER when inlines are fixed.
Global ftCa_SpecialAirN_IASA (HSD_GObj *gobj)
Fake double assignment.
Global ftCa_SpecialAirN_Phys (HSD_GObj *gobj)
Fake double assignment.
Global ftCa_SpecialLw_Coll (HSD_GObj *gobj)
Pull out these check functions
File ftCa_SpecialS.dox
Fix formatting
Global ftCa_SpecialS_OnDetect (HSD_GObj *gobj)
It might be possible to merge this with the below branch.
Global ftCamera_UpdateCameraBox (HSD_GObj *gobj)

this line changes everything lol

lol

Global ftCaptain_SpecialN_GetAngleVel (Fighter *fp)

Eliminate f.

Join declarations and assignments somehow.

Global ftCh_Wait1_1_Anim (HSD_GObj *gobj)
GET_JOBJ
Global ftCheckThrowB0 (Fighter *fp)
This and ftCheckThrowB3, etc. are probably one macro or something.
Global ftCl_AppealS_Anim (HSD_GObj *gobj)
There might be only one Fighter* here.
Global ftCo_8008EB58 (Fighter_GObj *gobj)
Inline depth.
Global ftCo_80091AD8 (Fighter_GObj *gobj, int mv_x20)
inline of ftCo_80091A4C and something else.
Global ftCo_80092F2C (HSD_GObj *gobj, bool arg1)
What happens to this value?
Global ftCo_800932DC (Fighter_GObj *gobj)
Fake.
Global ftCo_800939B4 (Fighter_GObj *gobj)
Shares a lot of code with ftCo_800923B4
Global ftCo_80093A50 (Fighter_GObj *gobj)
Shared code with ftCo_8009388C.
Global ftCo_80095328 (Fighter_GObj *, bool *)
A lot of shared code with ftCo_80094EA4.
Global ftCo_800958FC (HSD_GObj *gobj, FtMotionId msid)
Mostly just an inline of ftCo_800957F4.
Global ftCo_80099644 (Fighter_GObj *gobj)
Shared code with ftCo_Escape_Anim.
Global ftCo_8009AB9C (Fighter_GObj *gobj)
Shared code with ftCo_8009AEA4.
Global ftCo_8009B040 (Fighter_GObj *gobj)
Shared code with ftCo_8009AEA4.
Global ftCo_8009CB40 (Fighter *fp, ssize_t bone_idx, bool, FigaTree *)
Global ftCo_800A0148 (Fighter *)
Static functions belong in #ftCo_0A01.c
Global ftCo_800A5F4C (Fighter *fp, ItemKind)
stupid stack padding hack
Global ftCo_800B0CA8 (Fighter *fp0, Fighter *fp1)
fakematched control flow
Global ftCo_800BCAF4 (Fighter_GObj *gobj)
Shared code with ftCo_800BC9C8. Simple inline doesn't work.
Global ftCo_800BCE64 (Fighter_GObj *gobj, FtMotionId msid)
Use ftCo_Thrown_Enter.
Global ftCo_800BD0E8 (Fighter_GObj *gobj, FtMotionId msid)
SOLUTION 0
Global ftCo_800BDA50 (Fighter_GObj *gobj)
Which mv is this?
Global ftCo_800BDB58 (Fighter_GObj *gobj, Fighter_GObj *thrower_gobj)
Possibly another callback in inlineB2
Global ftCo_800BE000 (Fighter_GObj *gobj, Fighter_GObj *thrower_gobj)
Possibly another callback in inlineB2
Global ftCo_800C0694 (Fighter *fp)
Wrong return type. Union?
Global ftCo_800C07F8 (Ground_GObj *, u32, void *)
pretty sure arg2 is a ftDevice callback, but unsure if its always of type ftDevice_Callback0.
Global ftCo_800C08A0 (Fighter_GObj *gobj, Fighter_GObj *arg1, DynamicsDesc *arg2, ftCommon_BuryType arg3)
Eliminate cast
Global ftCo_800C0B20 (Fighter_GObj *gobj)
Eliminate cast
Global ftCo_800C1E64 (HSD_GObj *pPlayerEntityStruct, s32, s32, u8, f32)
UnclePunch Map file: AS_203_PassiveWalljump_Walljump
Global ftCo_800C23FC (Fighter_GObj *gobj)
Shared code with ftCo_800C1E64.
Global ftCo_800C5614 (Fighter_GObj *gobj)
Cannot move below fp, which suggests an inline
Global ftCo_800C57B4 (Fighter_GObj *gobj)
Cannot move below fp, which suggests an inline
Global ftCo_800C5A98 (Fighter_GObj *gobj)
Cannot move below fp, which suggests an inline
Global ftCo_800C5B88 (Fighter_GObj *gobj, enum_t)
Cannot move below fp, which suggests an inline
Global ftCo_800C5D34 (Fighter_GObj *gobj)
Cannot move below fp, which suggests an inline
Global ftCo_800C6150 (Fighter_GObj *gobj)
ftCo_800C7070
Global ftCo_800C7070 (Fighter_GObj *gobj)
ftCo_800C6150
Global ftCo_800CEFE0 (Fighter_GObj *gobj, int)
What is this copypasta...
Global ftCo_800D0CBC (Fighter_GObj *gobj)
figure out the correct args
Global ftCo_800D105C (Fighter_GObj *gobj)
fix stack
Global ftCo_800DEAE8 (HSD_GObj *gobj, enum_t asid0, enum_t asid1)
enum params
Global ftCo_AttackAir_CheckItemThrowInput (Fighter_GObj *gobj)
This is exactly checkItemThrowInput but it uses too much stack for ftCo_AttackAirLw_IASA to call it.
Global ftCo_AttackS4_8008C114 (Fighter_GObj *gobj)
Can maybe be combined with ftCo_AttackS4_CheckInput
Global ftCo_Damage_CalcKnockback (Fighter *fp)
Probably a switch.
Global ftCo_GuardOff_IASA (Fighter_GObj *gobj)
RETURN_IF chain
Global ftCo_GuardReflect_IASA (HSD_GObj *gobj)
Inline depth.
Global ftCo_HammerLanding_Enter (Fighter_GObj *gobj)
Cannot move below fp, which suggests an inline
Global ftCo_OttottoWait_Coll (Fighter_GObj *gobj)
Shared code with ftCo_Ottotto_Coll
Global ftCo_ThrownCopyStar_Coll (Fighter_GObj *gobj)
Shared code with ftCo_ThrownKirbyStar_Coll but an inline uses too much stack.
Global ftCo_ThrownKirbyStar_Coll (Fighter_GObj *gobj)
Shared code with ftCo_ThrownCopyStar_Coll but an inline uses too much stack.
Global ftColl_800764DC (Fighter_GObj *gobj)
GET_FIGHTER adds an instruction
Global ftColl_80076ED8 (Fighter *fp0, HitCapsule *hit0, Fighter *fp1, HitCapsule *hit1)
inline
Global ftColl_8007B1B8 (Fighter_GObj *gobj, ShieldDesc *shield, HSD_GObjEvent cb)
shield is AbsorbDesc, and AbsorbDesc is part of ShieldDesc
Global ftCommon_8007CEF4 (Fighter *)
This surely calls ftCommon_ApplyFrictionAir somehow...
Global ftCommon_8007FA58 (Fighter_GObj *, Item_GObj *)
This is an inline.
Global ftCommon_8007FE84 (Fighter_GObj *, Fighter_GObj *, s32, float)
static
Global ftCommon_800804EC (Fighter *)
DataOffset_PlayerScale_MultiplyBySomething
Global ftCommonData::x6D8 [1]
expand to actual size
Global ftData::x48_items
might be similar to KirbyHat? see ftPr_Init_8013C360
Global ftDk_Init_OnLoad (HSD_GObj *gobj)
GET_FIGHTER
Global ftDk_MS_346_800E05E4 (HSD_GObj *gobj)
GET_FIGHTER
Global ftDk_MS_348_800E04A4 (HSD_GObj *gobj, s32 arg1)
GET_FIGHTER
Global ftDk_SpecialAirS_Phys (HSD_GObj *gobj)
Fix control flow.
Struct ftDonkey_MotionVars::ftDonkey_State5Vars
Rename to correct state.
Struct ftDonkey_MotionVars::ftDonkey_State7Vars
Rename to correct state.
Struct ftDonkey_MotionVars::ftDonkey_State8Vars
Rename to correct state.
Global ftDrawCommon_80080E18_inline2 (HSD_GObj *gobj, Fighter *old)
this seems to be using the wrong common attributes
Global ftFox_SpecialLw_InlinePhys (HSD_GObj *gobj)
Shared inline with other functions in this file.
Global ftFx_AppealS_CheckIfUsed (Fighter *fp)
Fix formatting
Global ftFx_SpecialAirHi_Coll (HSD_GObj *gobj)

This match is definitely fake.

Rework this entire match.

Global ftFx_SpecialAirNLoop_Anim (HSD_GObj *gobj)

Unused assignment.

Fake assignment.

Global ftFx_SpecialHi_Anim (HSD_GObj *gobj)
Common inline with ftFx_SpecialAirHi_Anim.
Global ftFx_SpecialHi_Phys (HSD_GObj *gobj)
Possibly common inline with ftFx_SpecialAirHi_Phys.
Global ftFx_SpecialHiHoldAir_Coll (HSD_GObj *gobj)
Ternary operator should be possible here somehow.
Global ftFx_SpecialLw_CreateLoopGFX (HSD_GObj *gobj)
Shared inline with ftFx_SpecialLw_CreateStartGFX.
Global ftFx_SpecialLwLoop_Anim (HSD_GObj *gobj)
Shared inline with ftFx_SpecialAirLwLoop_Anim.
Global ftFx_SpecialLwTurn_Anim (HSD_GObj *gobj)
Shared inline with ftFx_SpecialAirLwTurn_Anim.
Global ftFx_SpecialN_CreateBlasterShot (HSD_GObj *gobj)

Seems fake, probably one or more missing inline functions.

Shared inline with ftFx_SpecialNLoop_Anim and ftFx_SpecialAirNLoop_Anim.

Global ftFx_SpecialN_FtGetHoldJoint (HSD_GObj *gobj, Vec3 *pos)
Shared inline with ftFx_SpecialN_ItGetHoldJoint.
Global ftFx_SpecialNLoop_Anim (HSD_GObj *gobj)
Fake assignment.
Global ftFx_SpecialS_CheckGhostRemove (HSD_GObj *gobj)
enum
Global ftGw_SpecialLw_AbsorbThink_DecideAction (HSD_GObj *gobj)
enum
Global ftGw_SpecialLw_Anim (HSD_GObj *gobj)

Frame number constant

Shared inline with ftGw_SpecialAirLw_Anim.

Global ftGw_SpecialLw_IASA (HSD_GObj *gobj)
Shared inline with ftGw_SpecialAirLw_IASA.
Global ftGw_SpecialLw_ItemCheckPanicRemove (HSD_GObj *gobj)
enum
Global ftGw_SpecialLw_ItemPanicSetup (HSD_GObj *gobj)
Can't move below _.
Global ftGw_SpecialLw_UpdateBucketModel (HSD_GObj *gobj)
enum for parts
Global ftGw_SpecialLwShoot_Anim (HSD_GObj *gobj)
Shared inline with ftGw_SpecialAirLwShoot_Anim.
Global ftGw_SpecialLwShoot_ReleaseOil (HSD_GObj *gobj)

Shared inline with ftGw_SpecialAirLwShoot_ReleaseOil

Please for the love of god stop copy-pasting code

Global ftGw_SpecialN_Loop (HSD_GObj *gobj, float anim_frame)
Shared inline with ftGw_SpecialAirN_Loop.
Global ftGw_SpecialS_Enter (HSD_GObj *gobj)
Shared inline with ftGw_SpecialAirS_Enter.
Global ftGw_SpecialS_GetRandomInt (HSD_GObj *gobj)
getFighter can be factored out somehow.
Global ftGw_SpecialS_ItemCheckJudgementRemove (HSD_GObj *gobj)
enum
Struct ftKb_DatAttrs
Every hat is its own struct.
Global ftKb_Init_800EE528 (void)
Bad cast.
Global ftKb_Init_UnkMotionStates6 (Fighter_GObj *gobj)
What???
Global ftKb_MF_MultiJump
Clean up factorization
Global ftKb_SpecialHi1_Phys (Fighter_GObj *gobj)
Remove This
Global ftKb_SpecialHi2_Phys (Fighter_GObj *gobj)
Remove This
Global ftKb_SpecialNGw_8010CC6C (HSD_GObj *gobj)
Named flags.
Global ftKb_SpecialNGw_8010CCD4 (HSD_GObj *gobj)
Named flags.
Global ftKb_SpecialNNs_800FED38 (HSD_GObj *gobj)
da can't move below fp
Global ftKb_SpecialNNs_800FEDD0 (HSD_GObj *gobj)
da can't move below fp
Global ftKb_SpecialNPe_8010C8D8 (HSD_GObj *gobj)

Flag names.

da can't move below fp

Global ftKb_SpecialNPe_8010C9CC (HSD_GObj *gobj)

Named flags.

da can't move below fp

Struct ftKoopa_MotionVars::ftKoopa_SpecialSVars
Possibly #ftKoopa_State1Vars.
Struct ftKoopa_MotionVars::ftKoopa_State1Vars
Proper state name.
Global ftKp_Init_OnLoad (HSD_GObj *gobj)
GET_FIGHTER is 8 bytes too much stack but it should be possible
Global ftKp_SpecialAirSHit_IASA (HSD_GObj *gobj)
Shared inline with ftKp_SpecialSHit_IASA.
Global ftKp_SpecialS_8013322C (HSD_GObj *gobj)
fp0 cannot move below fp1, which is very strange. Perhaps there is a temporary Fighter* somewhere.
Global ftKp_SpecialSHit_Anim (HSD_GObj *gobj)

Combine fp0 with other branch somehow

Combine fp0 with other branch somehow

Global ftKp_SpecialSHit_IASA (HSD_GObj *gobj)
Shared inline with ftKp_SpecialAirSHit_IASA.
Global ftLg_SpecialS_Anim (HSD_GObj *gobj)
Shared inline with ftLg_SpecialAirS_Anim.
Global ftLg_SpecialS_Enter (HSD_GObj *gobj)
Shared inline with ftLg_SpecialAirS_Enter.
Global ftLg_SpecialSHold_Anim (HSD_GObj *gobj)
Shared inline with ftLg_SpecialAirSHold_Anim.
Global ftLg_SpecialSHold_Enter (HSD_GObj *gobj)
Shared inline with ftLg_SpecialAirSHold_Enter.
Global ftLib_80086198 (HSD_GObj *)
Figure out how these are really declared
Global ftLib_8008741C (u32)
Is i really #u32?
Global ftLk_SpecialAirLw_Coll (HSD_GObj *gobj)
Verify MSID.
Global ftLk_SpecialAirNStart_IASA (Fighter_GObj *gobj)
Same as ftLk_SpecialNStart_IASA with different MSID
Global ftLk_SpecialAirS_Enter (HSD_GObj *gobj)
Share code with ftLk_SpecialS_Enter. A simple inline won't work.
Global ftLk_SpecialLw_Coll (HSD_GObj *gobj)
Verify MSID.
Global ftLk_SpecialN_Enter (Fighter_GObj *gobj)
Float order hack
Global ftLk_SpecialN_UnsetArrow (Fighter_GObj *gobj)
Does this actually do anything? Doesn't seem to return bool.
Global ftLk_SpecialN_UnsetFv14 (Fighter_GObj *gobj)
Does this actually do anything? Doesn't seem to return bool.
Global ftLk_SpecialNStart_IASA (Fighter_GObj *gobj)
Shared with ftLk_SpecialNLoop_IASA
Global ftLk_SpecialS1Empty_Coll (HSD_GObj *gobj)
Share code with ftLk_SpecialS1_Coll.
Global ftLuigi_SpecialS_Setup (HSD_GObj *gobj)
Use GET_FIGHTER.
Module ftmasterhand
These splits work with the floats but are not what one would expect for the text section.
Global ftMewtwo_SpecialHi_SetVars (HSD_GObj *gobj)
This is like three functions in one. Split it.
Global ftMh_BackCrush_Anim (HSD_GObj *gobj)
GET_JOBJ
Global ftMh_Drill_Phys (HSD_GObj *gobj)
GET_FIGHTER
Global ftMh_FingerGun1_Phys (HSD_GObj *gobj)
Not enough stack for GET_FIGHTER; inline issue.
Global ftMh_MS_343_801510B0 (HSD_GObj *gobj)
Probably same file if ftMh_MS_343_801511FC is getting implicitly passed.
Global ftMh_MS_349_80151CA8 (HSD_GObj *gobj)
The code matches, but is this right?
Global ftMh_MS_370_80153D2C (HSD_GObj *gobj)
GET_FIGHTER and GET_JOBJ both cause regswaps here, but they probably shouldn't.
Global ftMh_MS_389_80150C8C (HSD_GObj *gobj)
the #pragma above is preventing use of GET_FIGHTER.
Global ftMh_SweepLoop_Anim (HSD_GObj *gobj)
GET_FIGHTER
Global ftMh_TagApplaud_Anim (HSD_GObj *gobj)
inlined? possibly shared with ftMh_TagCrush_Anim
Global ftMh_Wait1_1_Phys (HSD_GObj *gobj)
GET_FIGHTER doesn't fit the stack.
Global ftMh_Wait1_2_Phys (HSD_GObj *gobj)
GET_FIGHTER
Global ftMh_WalkLoop_Anim (HSD_GObj *gobj)
GET_FIGHTER uses slightly too much stack; inline issue.
Global ftMh_WalkLoop_Phys (HSD_GObj *gobj)
GET_FIGHTER
Global ftMr_Init_OnLoad (HSD_GObj *gobj)
GET_FIGHTER is too much stack. Problem with PUSH_ATTRS?
Global ftMr_SpecialS_CreateCape (HSD_GObj *gobj)
Can't move below _.
Global ftMr_SpecialS_Phys (HSD_GObj *gobj)
Cannot be moved above unused0 or below unused1.
Global ftMs_SpecialAirLwHit_Anim (HSD_GObj *gobj)

required for some reason

register swap:

Global ftMs_SpecialLwHit_Anim (HSD_GObj *gobj)

register swap:

required for some reason

Global ftMs_SpecialN_80136A1C (HSD_GObj *gobj)
Named flags.
Global ftMs_SpecialN_80136A7C (HSD_GObj *gobj)
Named flags.
Global ftMs_SpecialN_80136DB4 (HSD_GObj *gobj)
Named flags.
Global ftMs_SpecialN_80136E14 (HSD_GObj *gobj)
Named flags.
Global ftMs_SpecialN_801371FC (HSD_GObj *gobj)
Named flags.
Global ftMs_SpecialN_801372A8 (HSD_GObj *gobj)
Named flags.
Global ftMt_SpecialAirHi_Enter (HSD_GObj *gobj)
Express as a fraction or something.
Global ftMt_SpecialAirS_AirToGround (HSD_GObj *gobj)
GET_FIGHTER
Global ftMt_SpecialHi_Enter (HSD_GObj *gobj)

Shared inline with ftMt_SpecialAirHi_Enter.

Probably a missing inline function.

Global ftMt_SpecialN_ReleaseShadowBall (HSD_GObj *gobj)

Missing inline function(s).

Missing inline function(s).

File ftNs_AttackHi4.dox
Fix formatting
Global ftNs_AttackHi4_YoyoApplySmash (HSD_GObj *gobj)
Stack is too messed up for GET_FIGHTER.
Global ftNs_AttackHi4_YoyoCheckEnvColl (HSD_GObj *gobj, Vec3 *ECBUnk, Vec3 *ECBUnk2, float float_unk)
Define flags.
Global ftNs_AttackHi4_YoyoSetHitPos (HSD_GObj *gobj)
Can't move below fp.
Global ftNs_AttackHi4_YoyoSetHitPosUnk (HSD_GObj *gobj, float arg8)
Can't move below fp.
Global ftNs_AttackHi4_YoyoSetUnkPos (HSD_GObj *gobj, Vec3 *arg1)

GET_FIGHTER is prevented by dont_inline.

Remove dont_inline. This is probably a result of incorrectly splitting out the function.

Global ftNs_AttackHi4_YoyoThink_IsRemove (HSD_GObj *gobj)
Stack is too messed up for GET_FIGHTER.
File ftNs_Init.dox
Fix formatting
Global ftNs_SpecialAirNRelease_IASA (HSD_GObj *gobj)
Nested return value
Global ftNs_SpecialHi_Enter (HSD_GObj *gobj)

Rewrite this.

Try to move these close to usage

Global ftNs_SpecialNRelease_IASA (HSD_GObj *gobj)
Nested return value
Global ftNs_SpecialNStart_Anim (HSD_GObj *gobj)
Can't move below _.
Global ftPe_8011D598 (HSD_GObj *gobj)
Can maybe use ensureUnkItem?
Global ftPe_Float_IASA (HSD_GObj *gobj)
Call #checkContinueFloatInput
Global ftPe_SpecialHiStart_IASA (HSD_GObj *gobj)
GET_FIGHTER
Global ftpickupitem_80094D90 (Fighter_GObj *gobj)
ftpickupitem_80094DF8
Struct ftPikachu_MotionVars::ftPikachu_State2Vars
Proper state name.
Struct ftPikachu_MotionVars::ftPikachu_State3Vars
Proper state name.
Global ftPk_SpecialAirHi_Enter (HSD_GObj *gobj)
Can't move below fp.
Global ftPk_SpecialAirHiEnd_Coll (HSD_GObj *gobj)

Eliminate cast (by changing type of ftPikachuAttributes::height_attributes)

Fix weird control flow.

Global ftPk_SpecialAirHiStart0_Coll (HSD_GObj *gobj)
Fix weird control flow.
Global ftPk_SpecialHi_Enter (HSD_GObj *gobj)
Can't move below fp.
Global ftPk_SpecialHiEnd_Coll (HSD_GObj *gobj)
Eliminate cast (by changing type of ftPikachuAttributes::height_attributes)
Global ftPk_SpecialHiStart1_Coll (HSD_GObj *gobj)
Eliminate cast (by changing type of field)
Global ftPk_SpecialLw_ChangeMotion_Unk00 (HSD_GObj *gobj)
GET_FIGHTER
Global ftPk_SpecialLw_ChangeMotion_Unk02 (HSD_GObj *gobj)
GET_FIGHTER
Global ftPk_SpecialLw_ChangeMotion_Unk04 (HSD_GObj *gobj)
GET_FIGHTER
Global ftPk_SpecialLw_ChangeMotion_Unk06 (HSD_GObj *gobj)
GET_FIGHTER
Global ftPk_SpecialLw_SpawnEffect (HSD_GObj *gobj)
Result of an inner function.
Global ftPr_Init_8013C360 (HSD_GObj *gobj)
clean up memory accesses - this looks similar to ftKb_SpecialN_800EFB4C
Global ftPr_Init_UnkMotionStates6 (HSD_GObj *gobj)
What???
Global ftPr_SpecialAirNEnd_Coll (Fighter_GObj *gobj)

Named flags.

Maybe shared inline with ftPr_SpecialNEnd_Coll?

Global ftPr_SpecialAirNStart_Anim (HSD_GObj *gobj)
Named flags.
Global ftPr_SpecialNEnd_Coll (Fighter_GObj *gobj)
Named flags.
Global ftPr_SpecialNStart_Anim (HSD_GObj *gobj)
Named flags.
Global ftPr_SpecialNStart_Coll (HSD_GObj *gobj)
Named flags.
Global ftPr_SpecialS_8013D764 (HSD_GObj *gobj)
Named flags.
Struct ftSamus_MotionVars::ftSamus_State2Vars
Proper state name.
Struct ftSamus_MotionVars::ftSamus_State5Vars
Proper state name.
Struct ftSamus_MotionVars::ftSamus_State6Vars
Proper state name.
Global ftSk_SpecialAirHiStart_1_Coll (HSD_GObj *gobj)
float hack
Global ftSk_SpecialNLoop_Coll (Fighter_GObj *gobj)
Named flags.
Global ftSk_SpecialNStart_Coll (Fighter_GObj *gobj)
Named flags.
Global ftSk_SpecialS_80110AEC (HSD_GObj *gobj)
The inlines in this file are wrong; this block should be ftSk_SpecialS_ZeroHitboxPositions.
Global ftSk_SpecialS_80111830 (HSD_GObj *gobj)
Split into two functions, one with
Global ftSk_SpecialS_CheckInitChain (HSD_GObj *gobj)
Probably an inline.
Global ftSk_SpecialSEnd_Anim (HSD_GObj *gobj)
Split inner function
Global ftSs_Init_LoadSpecialAttrs (HSD_GObj *gobj)
Shared code wit ftPk_Init_LoadSpecialAttrs
Global ftSs_SpecialLw_Coll (HSD_GObj *gobj)
Remove cast.
Global ftYs_Init_8012BE3C (HSD_GObj *gobj)
Some kind of inline here.
Global ftYs_MF_Special
Fix names
Global ftYs_Shield_8012C49C (HSD_GObj *gobj)
Why is this still using fp0?
Global ftYs_Unk1_803B75C0
Belongs in #ftYs_Guard.c?
Global ftZd_SpecialAirHiStart_1_Coll (HSD_GObj *gobj)
sa can't move below coll_data, which suggests a function boundary.
Global func_80151484_inline1 (HSD_GObj *gobj)
GET_FIGHTER
Global get_jobj (HSD_GObj *gobj)

Figure out how to use GET_JOBJ instead.

Figure out how to use GET_JOBJ instead.

Global get_max_and_fill_stack (void)
What.
Global get_zero (void)
Float reorder hack
Global GetFighterData (HSD_GObj *gobj)
ftNs_AttackHi4_Anim literally won't match under any circumstances unless this inline is used to get Fighter*.
Global gm_80167BC8 (struct VsModeData *)

:: fix these to actually get the offensive and

:: some weird item copy thing that needs to be fixed

Global gm_8016A164 (void)
Offset mismatch indicates a TU split between lbl_8046B378 and lbl_8046B488
Global gm_8016C6C0 (Item_GObj *)
should take Fighter_GObj*? See ftCo_800A53DC
Global gm_80172174 (void)
create struct of size 0x4D8 returned by gmMainLib_8015CCE4
Global gm_8019B2DC_OnFrame (void)
Currently 89.97% match - permuter couldn't improve Per-frame update for tournament mode menu.
Global gm_801A6254 (MinorScene *)
this file also contains the OnEnter callback for MN_DEBUG_MENU, which should probably be split out into a separate file
Global gm_801AC6D8_OnEnter (void *)
Length of gm_804D6844 is 10
Global gm_801B18D4 (MinorScene *)
:: figure out how to call this not inlined
Global gm_80490960
also contains Target scenes, maybe gmstadium is a better name, since these are all in the single player "stadium" menu
Struct gm_controller_map
Move to C file
Global gmCamera_803DA6B4 []
HSD_SisLib_804D1124 is of type SIS. extern SisLibUnkStruct HSD_SisLib_804D1124;
Global gmMainLib_8015FA34 (int)
the call to gmMainLib_8015CC40 shouldn't be inlined
Global gmScriptEventCast (p_event, type)
Fix naming.
Global grBigBlue_801E6904 (Ground_GObj *)
Currently 99.98% match - near-perfect
Global grBigBlue_801E8794 (void *, Vec3 *, bool, f32, f32)
Currently 90.70% match - needs register allocation fix
Global grBigBlue_801E8A1C (int)
Currently 79.9% match - platform/store use lwzx/stwx instead of add+lwz/stw (addressing mode difference), candPtr init missing slwi+add
Global grBigBlue_801E8B84 (f32, f32, f32, f32)
Currently 94.71% match - needs pointer advancement and i variable
Global grBigBlue_801EACE8 (HSD_JObj *, Vec3 *, f32 *, f32, f32)
Currently 98.17% match - car section generates fnmsubs instead of fmuls+fsubs; compiler fuses multiply-subtract differently than target
Global grBigBlue_801EB004 (Ground_GObj *)
Currently 94.90% match - needs bitfield struct for rlwimi generation and stack frame fix (120 vs 112 bytes)
Global grBigBlue_801EB4AC (Ground_GObj *)
Currently partial match - needs register allocation and bitfield rlwimi fixes.
Global grBigBlue_801EC6C0 (Ground_GObj *)
Currently 90.40% match - needs register allocation fix (stmw r24 vs r23) and bitfield write pattern fix (rlwinm+ori vs rlwimi)
Global grBigBlue_801ED694 (Ground_GObj *, s32)
Currently partial match - complex car physics simulation
Global grBigBlue_801EDF44 (Ground_GObj *, s32)
Currently 87.41% match - compiler CSEs gp+offset into one register (4 NV regs) instead of keeping them separate (5 NV regs, stmw r27)
Global grBigBlue_801EEF00 (Ground_GObj *, s32)
Currently 83.62% match - compiler CSEs gp+offset into one register (3 NV regs) instead of keeping them separate (4 NV regs with r28 for case 4)
Global grBigBlue_801EF424 (Ground_GObj *)
Currently 98.03% match - float register allocation off by 1
Global grBigBlue_801EF7D8 (Vec3 *)
Currently 96.3% match - needs separate float literals for x vs y/z
Global grBigBlueRoute_8020BC68 (Ground_GObj *)
Currently 90.72% match - HSD_JObjGetTranslation inline hoists dest pointer to r27 (target uses r0 for addic. + r30+offset for stores)
Global grBigBlueRoute_8020BF38 (Ground_GObj *)
Currently 95.33% match - address caching in counter section, minor register allocation in loop jobj load
Global grBigBlueRoute_8020C238 (Ground_GObj *)
Currently 96.39% match - r30/r31 register swap
Global grBigBlueRoute_8020C85C (Ground_GObj *)
Currently 91.77% match - register allocation (gp in r30 vs r31) and cror+beq vs bge for float >= comparison.
Global grBigBlueRoute_8020DAB4 (HSD_JObj **jobjs, f32 scale, int count)
Currently 97.71% match - needs register allocation fix (r27/r30 swap for arr/jobj)
Global grDatFiles_803E0848
Bad split?
Global grDatFiles_803E0924
Bad split?
Global grIceMt_801F87FC (Ground_GObj *)
Rename: This is callback3 (destroy) for row 5 in grIm_803E4718. Destroys HSD_GObj* stored in icemt.xF8[0-4].
Struct grInishie1_GroundVars
probably mistakes in this and Vars2
Global grInishie2_801FCF2C (HSD_GObj *)
this stage and mushroom kingdom 1 both change the music when there's less than 20 seconds, since this function is copy-pasted from grInishie1_801FCB10 then Ground_801C5A94 is probably getting a stage identifier of some kind
Global grInishie2_801FD224 (Ground_GObj *)
union irregularity
Global grIzumi_801CC358 (Ground_GObj *gobj)
float load order (41c)
Struct grKongo_GroundVars3
Investigate if these extra structs could be shared among stages/other things as more are decompiled.
File ground.c
Don't hardcode 8
File ground.dox
Get stage's "yakumono" ("about"?) param
Global Ground::gv
This union is named 'u', from assert statements
Global Ground::u
The previous Ground.gv union members should be moved here.
Global Ground_801C0A70 (Vec3 *pos)
what stages are these?
Global Ground_801C24F8 (s32, u32, s32 *)

phi_r30 probably belongs to an inline.

Weird comparison, but typing UnkBgmStruct::x10 as signed doesn't match and neither does typing BGM_Undefined as unsigned.

Even weirder.

Global Ground_801C3128 (s32, void(*)(int))

Unused variable; is this an argument?

cur cannot be swapped below max, hinting at a missing inline function.

Global Ground_801C32D4 (s32, s32)

Shared inline with Ground_801C33C0.

Might be an inline starting here.

Global Ground_801C33C0 (s32, s32)
Might be an inline starting here.
Global Ground_801C4100 (HSD_JObj *jobj)
Why isn't this emitted to jobj.c?
Global Ground_801C4210 (void)
With a hard-coded range for i, very unlikely it's not returning an enum. Probably preset joints (accesses a list of HSD_JObj).
Struct GroundVenom_ForLighting
grVenom_GroundVars in types.h has xE0 as f32, but this function treats it as a bitfield. The struct needs to be updated.
Global grPs_8049F040
This is only size 0x100 in the object, but a single TextGlyphTexture is size 0x200. Should TextGlyphTexture be smaller?
Global grPs_804DAF2C
is there a way to prevent these being upcast to double when passed to variadic sislib functions?
Global grTMewtwo_80222284 (int index)
Can't move below callbacks.
Global grTPeach_80222958 (int arg0)
Can't move below callbacks.
Global grVe_804DB738
Currently 88.51% match - needs control flow/register allocation fix Stage initialization function for Venom
Global grVe_804DB740
Currently 92.15% match - needs register allocation fix Needs: grVe_804DB740 extern float
Struct grVe_Data
This struct should be defined in gr/types.h or a proper header
Struct grVe_ExtData
Move these local structs to proper headers
Global grVenom_80203FD4 (Ground_GObj *)
Currently 99.90% match - needs minor register allocation fix
Global grVenom_80204284 (Ground_GObj *)
Currently 97.29% match - needs minor register allocation fix
Global grVenom_80204428 (Ground_GObj *)
Currently 99.70% match - needs register allocation fix FAKE MATCH: grVenom_GroundVars has wrong types for this function
Global grVenom_80205AD4 (Ground_GObj *)
Currently 92.66% match - needs minor code ordering fix
Global HALF_PI32
Move elsewhere.
Global handleColl (HSD_GObj *gobj)
GET_FIGHTER
Global hasExtraFighterId (ftMapping *data)
This can be used in more places when functions are fixed to use correct structs.
Global hsd_803AC340 (void *header)
Currently 99.50% match - return expression register allocation (add dest r6 vs r3)
Global hsd_803B2674 (CardState *state)
Currently 90.00% match - same regalloc issue as fn_803ACBE8
Global HSD_ASSERT (line, cond)
Take file as another arg, ignore it if BUGFIX.
Global HSD_FogSet (HSD_Fog *)
Eliminate cast
Global HSD_GObj_Entities
GObjList is a fake type, this is just a double pointer (pointer to array of HSD_GObj*, indexed by p_link)
Global HSD_GObj_JObjCallback (HSD_GObj *gobj, int arg1)
don't inline HSD_GObj_80390EB8 is there a file boundary between HSD_GObj_80390EB8 and HSD_GObj_JObjCallback?
Struct HSD_GObjList
Belongs in melee/ somewhere
Global HSD_JObjGetTranslation2 (HSD_JObj *jobj, Vec3 *translate)
Likely fake but needed by vi0502 as there is a usage of HSD_JObjGetTranslation that lacks the 2nd assert
Global HSD_JObjRemoveAll (HSD_JObj *)
Regswaps
Global HSD_JObjSetMtxDirtyInline (HSD_JObj *jobj)
See lb_800117F4
Global HSD_MtxInverseConcat (Mtx inv, Mtx src, Mtx dest)
try to get rid of this
Global HSD_Pad
PascalCase members
Global HSD_PadLibData
Circular dependency
Global HSD_QuatLib_8037EC4C (Quaternion *, Quaternion *, Quaternion *)
Currently 87.16% match - temp register allocation (f3/f5, f4/f6 swapped) likely due to mwcc scheduler behavior
Global HSD_SisLib_803A5798 (s32)
Currently 99.54% match - needs register allocation fix (var_r4 allocated to r3 instead of r4) a generic allocator used by multiple data types
Global HSD_SisLib_803A594C (void *)
Currently 92.39% match - needs register allocation fix in coalesce block (new_size/old_next register assignment differs)
Global HSD_SisLib_803A6048 (u32 size)
Currently 97.56% match - extra lwz reload optimized away by compiler after dual global store
Global HSD_SisLib_803A6754 (int arg0, s32 arg1)

Do any other Data struct usages have a 0xC member?

This being a byte store means one of my assumptions is wrong;

Global HSD_SisLib_803A6B98 (HSD_Text *arg0, float, float, const char *,...)

is this the correct usage of vaargs?

what size is this?

Global HSD_Synth_80388DC8 (int)
Currently 97.2% match - add instruction uses r4 instead of r5 as destination (register allocation swap for prev/cur)
Global HSD_Synth_80388E08 (int)
AXVPB prev must be a signed int type, not a pointer
Global HSD_Synth_80389334 (int sfx_id, u8 vol, u8 vol2, u8 pan, int priority, u8 itd_flag, float pitch1, float pitch2, float mix_main, float mix_auxA, float mix_auxB)

what is going on here...

Currently 95.4% match - register allocation shifted by 1 (r29 reuse for loop counter and computation missing)

Type pun writes ratioHi+ratioLo as u32; no union in AXPBSRC. Needed for match - AXPBSRC lacks a u32 ratio field.

Global ifStatus_802F69C0 (s32, s32)
Inline with callback arg
Global ifStatus_802F6AF8 (s32)
Inline with callback arg
Global ifStatus_802F6C04 (s32)
Inline with callback arg
Global ifStatus_802F6D10 (s32)
Inline with callback arg
Struct ifStock_804A1378_x204
merge with IfStockUserData
Global inline_test_3 (HSD_JObj *jobj, f32 val, u8 loops, HSD_TypeMask type)
One of these inlines is probably correct
Global inlineA0 (Fighter_GObj *gobj, enum_t arg1, enum_t arg2, Fighter_Part part, float *param)
This is a common inline. Needs to be solved and placed in a header. Could also be a real library function.
Global inlineA0 (Fighter *fp0, Fighter *fp1, HitCapsule *hit1, Vec3 *ef_pos, float dmg)

Probably the same function as inlineA1

int_dmg = getEnvDmg(dmg);

Global inlineA0 (Fighter_GObj *gobj, HSD_GObjEvent cb)
ftCo_CaptureWaitKoopa_Anim
Global inlineA0 (Fighter *fp0, Fighter *fp1, HitCapsule *hit1, Vec3 *ef_pos, float dmg)
ftColl_80076808(fp1, hit1, 3, fp0, true);
Global inlineA0 (void)
inline appears in lb_800115F4
Global inlineA1 (Fighter *fp0, HitCapsule *hit0, Fighter *fp1, HitCapsule *hit1, Vec3 *ef_pos, float dmg)

ftColl_80076808(fp1, hit1, 3, fp0, false);

int_dmg = getEnvDmg(dmg);

Global inlineB0 (Fighter_GObj *gobj)
Can probably share some more code with inlineA2
Global inlineB0 (void)
inline appears in lb_800115F4
Global inlineB0 (Fighter *fp0, HitCapsule *hitbox, Fighter *fp1, int arg3, bool(*cb)(HitCapsule *hit, int arg1, void *fp))
ftColl_80076808
Global inlineM0 (float x)
Maybe a macro?
Global InternalStageId
Finish values, use PascalCase
File it_266F.dox
File it_26B1.dox
Global it_3F14_Logic2_Spawned (Item_GObj *)
float regswap. same as in it_3F14_Logic5_Spawned
Global it_3F14_Logic5_Spawned (Item_GObj *)
float regswap. same as in it_3F14_Logic2_Spawned
Global it_8026B9A8 (Item_GObj *gobj, HSD_GObj *arg1, Fighter_Part arg2)
Not enough stack for GET_JOBJ.
Global it_8026BB88 (Item_GObj *gobj, Vec3 *pos)
Why is this always zero? Stripped something?
Global it_8026BBCC (Item_GObj *gobj, Vec3 *pos)
Why is this always zero? Stripped something?
Global it_8026BDCC (Item_GObj *gobj)
Each of these is an inlined function. Some are already defined.
Global it_8026BE28 (Item_GObj *gobj)
Each of these is an inlined function. Some are already defined.
Global it_8026C258 (Vec3 *vector, f32 facingDir)
Why is this cast to short necessary?
Global it_8026CF04 (void)

probably a double somewhere

Investigate why it_804A0E30 is used instead of it_804A0E60.

Global it_8026D018 (void)
Make a FLT_RAND(min, max) define or inline
Global it_8026EB18 (HSD_GObj *, s32, Vec3 *)
This appears in several places in the codebase,
Global it_80285084 (Item_GObj *gobj)
Shared code with it_802851FC.
Global it_80285140 (Item_GObj *gobj)
Shared code with it_802851FC.
Global it_802874F0 (Item_GObj *gobj)
this surely uses some type of fabs but everything ive tried causes a reg swap
Global it_802886C4_inline (Item_GObj *gobj)
4 byte gap for these accesses...
Global it_802A0534 (Item_GObj *gobj, Vec3 *)
Global it_802A0930 (Item_GObj *)
probably indexing into a Vec3[] field of linkboomerang
Global it_802A3E50 (ItemLink *arg0, enum FighterKind arg1, f32 arg8)
This is seemingly the wrong struct; there should
Global it_802A7A04 (HSD_GObj *arg0)
should this be its own struct?
Global it_802A850C_inline (HSD_Joint *joint)
This should just return uninitialized, but the
Global it_802A9458 (HSD_GObj *)
replace with enum names
Global it_802F2D98 (Item_GObj *gobj, Fighter_GObj *owner_gobj)
Shared code with it_802F2BFC.
Global itBombhei_UnkMotion8_Anim (Item_GObj *gobj)
this inline is incorrect
File itCharItems.h
Restructure this, possibly items/chara/types.h
File itCommonItems.h
Restructure this, possibly items/common/types.h
File item.dox
Global Item::entered_hitlag
What function is 8026a62c?
Global Item::jumped_on
What function is 80269bac?
Global Item::on_accessory
What does this mean?
Global Item_802682F0 (HSD_GObj *gobj)
Needs some serious cleaning.
Global ItemDynamics::count

Combine with ftDynamics? Can see in it_8027163C that this struct does not work perfectly

Struct ItemStateTable
Size unknown.
Global itGetJObjGrandchild (Item_GObj *gobj)
Rename; probably gets a specific joint for items
Global itHarisen_Logic24_Dropped (Item_GObj *)
Fake match: the ip = gobj->user_data reload at line 126 suggests an inline function boundary. The pattern ip->scl = ...; it_8026B390(gobj); is likely wrapped in an inline like: static inline void itResetScaleAndFlag(Item_GObj* gobj) { Item* ip = gobj->user_data; ip->scl = ip->xCC_item_attr->x60_scale; it_8026B390(gobj); } This inline isn't used elsewhere in the codebase yet, so we can't confirm.
Global itLucky_Logic44_Spawned (Item_GObj *)
Global itSeakChain_Spawn (Fighter_GObj *parent_gobj, Point3d *arg1, f32 facing_dir)
Probably a for loop along a Vec3 array at the end of itSeakChain_ItemVars
File itsword.c
A lot of duplicate code here, can maybe be cleaned up with inlines.
Global jobj_next (HSD_JObj *jobj)
these are commonly used inlines; they should be moved to jobj.h
Struct JObjContainer
Identify the actual type - may be archive-related.
Global lb_8001ACEC (UNK_T file_entries)
this seems fake
Global lb_8001AE38 (UNK_T file_entries)
this seems fake
Global lbColl_80007B78 (Mtx, struct Fighter_x1614_t *, float, float)
Eliminate casts.
Global lbHeap_80015900 (void)
this loop isnt entirely right, its purpose is to calculate where
Global lightset [9]
attempt decomp once param types are known
Global LObjRelease (HSD_Class *o)
Unused stack
Global M_PI
Fix these to be in a single file, not math.h
Global MainMenuSelection
should these be moved into their respective TU's?
Global MatToQuat (Mtx, Quaternion *)
Currently 95.55% match - stack frame 8 bytes too large (80 vs 72)
Global MAX_STICK_MAG
Move elsewhere.
Global mn_8022ADD8 (HSD_GObj *, bool)
there is probably a inline for this whole block
Global mn_8022DB10 (HSD_GObj *)
casting u64 here makes it match, but i dont know why
Global mnHyaku_8024C68C_inline (HSD_JObj *jobj, s32 val)
0xFF seems to signal a "stopped" animation
Global mnSnap_8025329C (void)
The HSD_ASSERT chain (lines 193-199) is an inline from tobj.h. Polls card read result and updates thumbnail display.
Global MotionState::_
Try to match without this being a union.
Global mpColl_80043558 (CollData *, int line_id)
dummy stack in mpCollEnd_inline2 breaks this function
Global mpColl_804D7F9C
float order hack
Global mpGetSpeed (s32 wall_id, Vec3 *ecb_side_vtx, Vec3 *result)
Params not confirmed.
Global mpIsland_8005A728 (void)
Rewrite as a struct ptr
Global neg1
Fix weird forward declaration
Global PAD_ERR_NO_CONTROLLER
Circular dependency
Global pl_8003891C (int slot)

What?

This aint it

Global pl_8003E978 (int slot, bool fp_x221F_b4, Item_GObj *item_gobj, float y0, float, float, float, float x1, float y1, float frame_speed_mul)
Not actually sure what the second argument should be
Struct plAllocInfo2

Probably the same struct as plAllocInfo, figure out how to make them work as one.

Probably the same struct as plAllocInfo, figure out how to make them work as one.

Global Player_80031AD0 (int slot)

Eliminate cast.

Eliminate cast.

Global Player_80032070 (int slot, bool bool_arg)
/ old match decomp.me/scratch/8otnq
Global Player_80036978 (s32 slot, s32 arg1)
Eliminate cast.
Global plBonusLib_8003D514 (int)
Lots of 6s in here pl_8004049C seems to indicate it might have actually been Gm_Player_NumMax
Global PObjInfoInit (void)
Several differently-signed comparisons appear in asserts, likely indicating the sign of one of the variables is declared incorrectly
Global randi (int i)
this is a commonly used inline; it should be moved to random.h
Global randi_between_2 (int a, int b)
can these inlines be merged?
Global random_adder_b (s32 a, s32 b)
Investigate these types of patterns in other files; the Randi check with zero is probably its own thing
Global resolveIKJoint1 (HSD_JObj *jobj)
Variables var_f27 and var_f28 are used uninitialized whenever 'if' condition is false.
Global return_void (void)
Float order hack.
Global return_void2 (void)
Float order hack.
Global return_void3 (void)
Float order hack.
Global RunGObjCallback (HSD_GObj *gobj, HSD_GObjEvent arg1)
Could this be a higher-level inline in gobjproc.h or something?
Global setupAirStart (HSD_GObj *gobj)
Too much stack for resetVel.
Global SetupSharedVtxModelMtx (HSD_PObj *pobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
Unused stack
Global SFX_NONE
Create an enum for SFX IDs.
Global sfxBack (void)
The functions fn_8017435C, fn_80174338, and fn_80174380 are probably deduplicated clones of these.
Struct sisLib_803A7664_t
this is the same as above, but just more generic... proper types will have to be sorted out later, as well as merging the two structs.
Struct sislib_UnkAllocData
give actual names?
Struct SisLibUnkStruct
SIS
Global SKIP_CMD (cmd, n)
Is a macro the best way?
Struct SmallerHitCapsule
Fake, need to find real size of HitCapsule
Struct SpawnItem
Global SpawnItem::hold_kind
0 = capsule.
Directory src/melee/ft/chara
Rename to entities to match gr and it.
Directory src/melee/gr
Create entities directory to hold individual stages.
Directory src/melee/it
Create entities directory to hold individual items.
Directory src/sysdolphin/baselib
Rename this to a root directory called HSD or hsd and delete its parent (sysdolphin).
Global Stage_80224E64 (enum_t, Vec3 *)
Needs to be HSD_ASSERT. Also remove fake zero-byte padding.
Global StaticPlayer::player_character
External ID.
Global StaticPlayer::player_state
0x02 In-Game (includes dead). 0x00 Otherwise.
File stdbool.h
Assumes __PPCGEKKO__.
Union Struct2070
Rename this and its members; investigate using it elsewhere.
Struct Struct2074
See if this should likewise be instituted for item->xD94 thru xDA4_word/xDA8_short
Struct TmAnimTimers
:: this isnt exactly right
Global TmData::x37 [16]
needs to be larger, see gm_80190EA4
Global transition_flags
Share with ftCa_Init_MotionStateTable
Global transition_flags1
Combine common flags with transition_flags0.
Global transition_flags2

Combine common flags with transition_flags0.

Combine common flags with transition_flags0.

Global transition_flags3
Combine common flags with transition_flags0.
Global TRKSuppAccessFile (u32, u8 *, size_t *, u8 *, bool, bool)
fake match
Global true
Make this and false part of an enum. Fake usages, such as assigning to a u32, will need to be addressed.
Global u32it_804D6D14
Probably size_t but that needs to be changed to unsigned int first.
Global un_80308250 (u8 *arg0, s32 arg1, s32 arg2)
:: fill out the struct that this uses/returns
Global un_804D6F60 [8]
ViCharaDesc?
Global un_804D6F84 [8]
ViCharaDesc?
Global un_804D7004_t
When accessing, neither struct with s8 fields, nor s8 array, seem to match. Also tried volatile struct and volatile fields. Size is 0xC.
Struct Unk_Struct_w_Array
delete after fixing functions that use this
Struct UnkStage6B0
what is this struct?
Global usize_t
Rename to size_t when size_t is deleted.
Struct VenomSpawnData

Currently 99.92% match - needs minor register allocation fix

VenomSpawnData struct should be defined in gr/types.h or grvenom.h

Global wrapper (Fighter_GObj *gobj)
This is fake.