From c9df142dc35dbb1219c9b0cd6ed0506f87364029 Mon Sep 17 00:00:00 2001 From: hourianto <175479716+hourianto@users.noreply.github.com> Date: Sun, 8 Mar 2026 17:16:27 +0000 Subject: [PATCH 1/8] Rename ef_061D to efspecial --- config/GALE01/splits.txt | 2 +- config/GALE01/symbols.txt | 2 +- configure.py | 2 +- src/melee/ef/ef_061D.c | 1 - src/melee/ef/ef_061D.h | 1 - src/melee/ef/efspecial.c | 509 ++++++++++++++++++++++++++++++++++++++ src/melee/ef/efspecial.h | 11 + src/melee/ef/efsync.c | 6 +- 8 files changed, 526 insertions(+), 8 deletions(-) delete mode 100644 src/melee/ef/ef_061D.c delete mode 100644 src/melee/ef/ef_061D.h create mode 100644 src/melee/ef/efspecial.c create mode 100644 src/melee/ef/efspecial.h diff --git a/config/GALE01/splits.txt b/config/GALE01/splits.txt index 7de165391d..297ba98c86 100644 --- a/config/GALE01/splits.txt +++ b/config/GALE01/splits.txt @@ -249,7 +249,7 @@ melee/ef/efsync.c: .sdata start:0x804D39C8 end:0x804D39D8 .sdata2 start:0x804D81A0 end:0x804D81D0 -melee/ef/ef_061D.c: +melee/ef/efspecial.c: .text start:0x80061D70 end:0x80063930 .data start:0x803BF9D0 end:0x803BFB00 .sdata start:0x804D39D8 end:0x804D39E8 diff --git a/config/GALE01/symbols.txt b/config/GALE01/symbols.txt index a26db429d0..48aa449793 100644 --- a/config/GALE01/symbols.txt +++ b/config/GALE01/symbols.txt @@ -1374,7 +1374,7 @@ efLib_8005FAB8 = .text:0x8005FAB8; // type:function size:0x12C scope:global fn_8005FBE4 = .text:0x8005FBE4; // type:function size:0xF4 efLib_8005FCD8 = .text:0x8005FCD8; // type:function size:0x104 scope:global efSync_Spawn = .text:0x8005FDDC; // type:function size:0x1F94 scope:global -ef_80061D70 = .text:0x80061D70; // type:function size:0x1BC0 scope:global +efSync_SpawnSpecial = .text:0x80061D70; // type:function size:0x1BC0 scope:global efAsync_80063930 = .text:0x80063930; // type:function size:0x396C scope:global efAsync_8006729C = .text:0x8006729C; // type:function size:0x70 scope:global efAsync_8006730C = .text:0x8006730C; // type:function size:0x70 scope:global diff --git a/configure.py b/configure.py index caf3abe066..e13b7abc50 100755 --- a/configure.py +++ b/configure.py @@ -503,7 +503,7 @@ def MatchingFor(*versions): [ Object(NonMatching, "melee/ef/eflib.c"), Object(NonMatching, "melee/ef/efsync.c"), - Object(NonMatching, "melee/ef/ef_061D.c"), + Object(Matching, "melee/ef/efspecial.c"), Object(NonMatching, "melee/ef/efasync.c"), ], ), diff --git a/src/melee/ef/ef_061D.c b/src/melee/ef/ef_061D.c deleted file mode 100644 index 8b13789179..0000000000 --- a/src/melee/ef/ef_061D.c +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/melee/ef/ef_061D.h b/src/melee/ef/ef_061D.h deleted file mode 100644 index 8b13789179..0000000000 --- a/src/melee/ef/ef_061D.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/melee/ef/efspecial.c b/src/melee/ef/efspecial.c new file mode 100644 index 0000000000..b349da0a24 --- /dev/null +++ b/src/melee/ef/efspecial.c @@ -0,0 +1,509 @@ +#include "efspecial.h" + +#include "eflib.h" +#include "math.h" +#include "types.h" + +#include "baselib/class.h" +#include "baselib/debug.h" + +#include "baselib/forward.h" + +#include "baselib/gobj.h" +#include "baselib/list.h" +#include "baselib/object.h" +#include "baselib/pobj.h" + +#include + +extern char ef_803BF9D0[]; +extern char ef_804D39D8[]; +extern char ef_804D39E0[]; + +#define efSpecial_HSD_ASSERT_MSG(line) \ + (((line) == 619) ? "rotate" \ + : ((line) == 640 || (line) == 661 || (line) == 682) ? ef_803BF9D0 \ + : ((line) == 761 || (line) == 824) ? "scale" \ + : ((line) == 917 || (line) == 980) ? "translate" \ + : ((line) == 1171) ? "mtx" \ + : ef_804D39E0) + +#undef HSD_ASSERT +#define HSD_ASSERT(line, cond) \ + ((cond) ? ((void) 0) \ + : __assert(ef_804D39D8, line, efSpecial_HSD_ASSERT_MSG(line))) + +#include "baselib/jobj.h" + +#undef HSD_ASSERT +#define HSD_ASSERT(line, cond) \ + ((cond) ? ((void) 0) : __assert(__FILE__, line, #cond)) + +#include "baselib/particle.h" +#include "ft/inlines.h" + +/* 458EE0 */ extern HSD_JObj* efLib_80458EE0[16]; +/* 4D64E8 */ extern s32 efLib_804D64E8; +/* 4D64F0 */ extern s32 efLib_804D64F0; +/* 3BF9D0 */ char ef_803BF9D0[] = "!(jobj->flags & JOBJ_USE_QUATERNION)"; +/* 4D39D8 */ SDATA char ef_804D39D8[] = "jobj.h"; +/* 4D39E0 */ SDATA char ef_804D39E0[] = "jobj"; +/* 4D81D0 */ extern const f32 ef_804D81D0; +/* 4D81D8 */ extern const f64 ef_804D81D8; +/* 4D81E0 */ extern const f64 ef_804D81E0; +/* 4D81E8 */ extern const f32 ef_804D81E8; +/* 4D81EC */ extern const f32 ef_804D81EC; +/* 4D81F0 */ extern const f32 ef_804D81F0; + +void* efSync_SpawnSpecial(s32 gfx_id, HSD_GObj* arg_gobj, void* vlist) +{ + void* ret_obj; + u8 sp_pad128[0x8]; + Vec3 sp130; + u8 sp_pad130[0x4]; + Effect* eff_2; + Effect* eff_1; + Fighter* fighter_1; + FighterBone* fighter_bone_1; + f64 f64_1; + f32 f32_1; + HSD_JObj* jobj_1; + HSD_JObj* jobj_2; + s32 cnt; + PAD_STACK(0x98); + + efLib_804D64E8 = 1; + ret_obj = NULL; + + switch (gfx_id) { + case 0x479: + ret_obj = efLib_8005C9FC(0x3F2, va_arg(vlist, Vec3*)); + break; + case 0x47A: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = efLib_8005C1B4(0x3E8, arg_gobj, jobj_1); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + hsd_8039EFAC(0, 1, 0x3E9, jobj_1); + break; + case 0x47B: + ret_obj = efLib_8005C9FC(0x3EB, va_arg(vlist, Vec3*)); + break; + case 0x47C: + ret_obj = efLib_8005C3DC(0x3E9, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005F08C; + } + break; + case 0x47D: + ret_obj = hsd_8039EFAC(0, 1, 0x3F0, va_arg(vlist, HSD_JObj*)); + break; + case 0x47E: + ret_obj = hsd_8039EFAC(0, 1, 0x3F1, va_arg(vlist, HSD_JObj*)); + break; + case 0x47F: + ret_obj = hsd_8039EFAC(0, 2, 0x7D4, va_arg(vlist, HSD_JObj*)); + break; + case 0x480: + ret_obj = hsd_8039EFAC(0, 2, 0x7D2, va_arg(vlist, HSD_JObj*)); + break; + case 0x481: + ret_obj = hsd_8039EFAC(0, 2, 0x7D3, va_arg(vlist, HSD_JObj*)); + break; + case 0x482: + ret_obj = efLib_8005C1B4(0x7D0, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005EBC8; + } + break; + case 0x483: + ret_obj = efLib_8005C9FC(0x7D7, va_arg(vlist, Vec3*)); + break; + case 0x484: + ret_obj = hsd_8039EFAC(0, 2, 0x7DB, va_arg(vlist, HSD_JObj*)); + break; + case 0x485: + ret_obj = hsd_8039EFAC(0, 2, 0x7DE, va_arg(vlist, HSD_JObj*)); + break; + case 0x486: + ret_obj = efLib_8005C814(0x7D1, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x487: + ret_obj = efLib_8005C5C4(0x7D2, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x488: + ret_obj = efLib_8005C3DC(0xBB8, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x489: + ret_obj = efLib_8005C3DC(0xBB9, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x48A: + ret_obj = efLib_8005C3DC(0xBBA, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x48B: + ret_obj = efLib_8005C1B4(0xBBB, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x48C: + ret_obj = efLib_8005C1B4(0xBBC, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005E3A0; + } + break; + case 0x48D: + ret_obj = efLib_8005CF40(0xBC0, vlist); + break; + case 0x48E: + ret_obj = efLib_8005C814(0xBBD, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, ef_804D81E8); + HSD_JObjSetRotationZ(eff_1->gobj->hsd_obj, *va_arg(vlist, f32*)); + } + break; + case 0x48F: + ret_obj = efLib_8005C6F4(0xFA0, arg_gobj, va_arg(vlist, void*)); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x0 = + (void*) efLib_8005C6F4(0xFA1, arg_gobj, va_arg(vlist, void*)); + } + break; + case 0x490: + ret_obj = efLib_8005C1B4(0xFA2, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->translate.z = *va_arg(vlist, f32*); + eff_1->x10 = efLib_8005EDDC; + } + break; + case 0x491: + ret_obj = efLib_8005C1B4(0xFA4, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x492: + ret_obj = efLib_8005C3DC(0xFA3, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x493: + ret_obj = efLib_8005C3DC(0xFA5, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x494: + fighter_1 = GET_FIGHTER(arg_gobj); + fighter_bone_1 = fighter_1->parts; + jobj_1 = fighter_bone_1[44].joint; + jobj_2 = fighter_bone_1[1].joint; + ret_obj = efLib_8005C2BC(0x1388, arg_gobj, jobj_1); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x10 = efLib_8005E090; + ((Effect*) ret_obj)->x24 = 0x41; + ((Effect*) ret_obj)->x14 = NULL; + eff_1 = efLib_8005C1B4(0x1389, arg_gobj, jobj_1); + ((Effect*) ret_obj)->x0 = (void*) eff_1; + if (eff_1 != NULL) { + eff_1 = (Effect*) ((Effect*) ret_obj)->x0; + eff_1->x10 = efLib_8005E090; + eff_1->x24 = 0x41; + eff_1->x14 = fighter_1; + eff_2 = efLib_8005C1B4(0x138A, arg_gobj, jobj_2); + eff_1->x0 = (void*) eff_2; + if (eff_2 != NULL) { + eff_2 = (Effect*) eff_1->x0; + eff_2->x10 = efLib_8005E090; + eff_2->x24 = 0x41; + eff_2->x14 = fighter_1; + } + } + } + break; + case 0x495: + ret_obj = efLib_8005C3DC(0x138B, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x496: + ret_obj = efLib_8005C1B4(0x138C, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x497: + ret_obj = efLib_8005C1B4(0x138D, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005E2B4; + } + break; + case 0x498: + ret_obj = efLib_8005C2BC(0x138E, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x499: + ret_obj = efLib_8005C2BC(0x138F, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x49A: + ret_obj = efLib_8005CF40(0x138B, vlist); + break; + case 0x49B: + ret_obj = hsd_8039EFAC(0, 5, 0x138F, va_arg(vlist, HSD_JObj*)); + break; + case 0x49C: + ret_obj = hsd_8039EFAC(0, 5, 0x1395, va_arg(vlist, HSD_JObj*)); + break; + case 0x49D: + ret_obj = efLib_8005C814(0x1390, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + jobj_2 = arg_gobj->hsd_obj; + jobj_1 = GET_JOBJ(eff_1->gobj); + HSD_JObjSetScaleX(jobj_1, HSD_JObjGetScaleY(jobj_2)); + HSD_JObjSetScaleY(jobj_1, HSD_JObjGetScaleY(jobj_2)); + HSD_JObjSetScaleZ(jobj_1, HSD_JObjGetScaleY(jobj_2)); + HSD_JObjSetTranslateZ(HSD_JObjGetChild(jobj_1), + HSD_JObjGetTranslationZ(jobj_1) - + ef_804D81EC); + if (*va_arg(vlist, f32*) < ef_804D81D0) { + HSD_JObjSetRotationY(jobj_1, ef_804D81F0); + HSD_JObjSetRotationZ(jobj_1, -*va_arg(vlist, f32*)); + } else { + HSD_JObjSetRotationY(jobj_1, ef_804D81E8); + HSD_JObjSetRotationZ(jobj_1, *va_arg(vlist, f32*)); + } + eff_1->x10 = efLib_8005E1D8; + } + break; + case 0x49E: + ret_obj = efLib_8005C9FC(0x206, va_arg(vlist, Vec3*)); + break; + case 0x49F: { + HSD_JObj* attach_jobj; + + attach_jobj = va_arg(vlist, HSD_JObj*); + ret_obj = efLib_8005C1B4(0x7D00, arg_gobj, attach_jobj); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + hsd_8039EFAC(0, 0x20, 0x7D00, attach_jobj); + break; + } + case 0x4A0: + ret_obj = efLib_8005C9FC(0x7D02, va_arg(vlist, Vec3*)); + break; + case 0x4A5: + ret_obj = efLib_8005CD2C(0xA028, vlist, arg_gobj); + break; + case 0x4A6: + ret_obj = efLib_8005CD2C(0xA029, vlist, arg_gobj); + break; + case 0x4A7: + ret_obj = efLib_8005CD2C(0xA02A, vlist, arg_gobj); + break; + case 0x4A8: + ret_obj = efLib_8005CD2C(0xA02B, vlist, arg_gobj); + break; + case 0x4A1: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x22, 0x84D4, jobj_1); + break; + case 0x4A2: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x22, 0x84D2, jobj_1); + break; + case 0x4A3: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x22, 0x84D3, jobj_1); + break; + case 0x4A4: + ret_obj = efLib_8005C814(0x84D0, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); + f32_1 = f64_1; + HSD_JObjSetRotationY(jobj_1, f32_1); + } + break; + case 0x4A9: + ret_obj = efLib_8005C3DC(0x9858, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); + f32_1 = f64_1; + HSD_JObjSetRotationY(jobj_1, f32_1); + eff_1 = ret_obj; + HSD_JObjAnimAll(eff_1->gobj->hsd_obj); + } + break; + case 0x4AA: + ret_obj = efLib_8005C3DC(0x9859, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + eff_1 = ret_obj; + f32_1 = f64_1; + HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, f32_1); + HSD_JObjAnimAll(eff_1->gobj->hsd_obj); + } + break; + case 0x4AB: + ret_obj = efLib_8005C6F4(0x9471, arg_gobj, va_arg(vlist, void*)); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x0 = + (void*) efLib_8005C6F4(0x9470, arg_gobj, va_arg(vlist, void*)); + } + break; + case 0x4AC: + ret_obj = efLib_8005C814(0x80E8, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, ef_804D81E8); + HSD_JObjSetRotationZ(eff_1->gobj->hsd_obj, *va_arg(vlist, f32*)); + } + break; + case 0x4AD: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x24, 0x8CA0, jobj_1); + break; + case 0x4AE: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x2E, 0xB3B0, jobj_1); + break; + case 0x4AF: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x2E, 0xB3B1, jobj_1); + break; + case 0x4B0: + ret_obj = efLib_8005CF40(0xB3B6, vlist); + break; + case 0x4B1: { + HSD_JObj* attach_jobj; + + attach_jobj = va_arg(vlist, HSD_JObj*); + ret_obj = efLib_8005C1B4(0x9088, arg_gobj, attach_jobj); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); + f32_1 = f64_1; + HSD_JObjSetRotationY(jobj_1, f32_1); + } + hsd_8039EFAC(0, 0x25, 0x9088, attach_jobj); + break; + } + case 0x4B2: + ret_obj = efLib_8005C9FC(0x908A, va_arg(vlist, Vec3*)); + break; + case 0x4B3: + ret_obj = efLib_8005C6F4(0xB799, arg_gobj, va_arg(vlist, void*)); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x0 = + (void*) efLib_8005C6F4(0xB798, arg_gobj, va_arg(vlist, void*)); + } + break; + case 0x4B4: + ret_obj = efLib_8005C6F4(0x4E20, arg_gobj, va_arg(vlist, void*)); + break; + case 0x4B5: + ret_obj = efLib_8005C6F4(0x4E21, arg_gobj, va_arg(vlist, void*)); + break; + case 0x4B6: + ret_obj = efLib_8005C2BC(0x5208, arg_gobj, va_arg(vlist, HSD_JObj*)); + goto efSync_SpawnSpecial_case_4B6_4B7; + case 0x4B7: + ret_obj = efLib_8005C2BC(0x5209, arg_gobj, va_arg(vlist, HSD_JObj*)); + efSync_SpawnSpecial_case_4B6_4B7: + if (ret_obj != NULL) { + HSD_JObj* jobj; + + jobj_1 = GET_JOBJ(arg_gobj); + HSD_JObjGetScale(jobj_1, &sp130); + eff_1 = ret_obj; + jobj = eff_1->gobj->hsd_obj; + ((jobj) ? ((void) 0) : __assert(ef_804D39D8, 823, ef_804D39E0)); + HSD_JObjSetScale(eff_1->gobj->hsd_obj, &sp130); + } + break; + case 0x4B8: + ret_obj = efLib_8005C6F4(0xBB80, arg_gobj, va_arg(vlist, void*)); + break; + case 0x4B9: + ret_obj = efLib_8005C6F4(0xBB81, arg_gobj, va_arg(vlist, void*)); + break; + } + + while (efLib_804D64F0 != 0) { + cnt = efLib_804D64F0 - 1; + efLib_804D64F0 = cnt; + HSD_JObjAnimAll(efLib_80458EE0[cnt]); + } + + return ret_obj; +} + +/* 4D81D0 */ const f32 ef_804D81D0 = 0.0f; +/* 4D81D8 */ const f64 ef_804D81D8 = -M_PI_2; +/* 4D81E0 */ const f64 ef_804D81E0 = M_PI_2; +/* 4D81E8 */ const f32 ef_804D81E8 = M_PI_2; +/* 4D81EC */ const f32 ef_804D81EC = 6.0f; +/* 4D81F0 */ const f32 ef_804D81F0 = -M_PI_2; diff --git a/src/melee/ef/efspecial.h b/src/melee/ef/efspecial.h new file mode 100644 index 0000000000..e35c1a7668 --- /dev/null +++ b/src/melee/ef/efspecial.h @@ -0,0 +1,11 @@ +#ifndef MELEE_EF_EFSPECIAL_H +#define MELEE_EF_EFSPECIAL_H + +#include + +#include "baselib/forward.h" + +/* 061D70 */ void* efSync_SpawnSpecial(s32 gfx_id, HSD_GObj* arg_gobj, + void* vlist); + +#endif diff --git a/src/melee/ef/efsync.c b/src/melee/ef/efsync.c index 54685027d8..c1c3bce357 100644 --- a/src/melee/ef/efsync.c +++ b/src/melee/ef/efsync.c @@ -2,6 +2,7 @@ #include "efasync.h" #include "eflib.h" +#include "efspecial.h" #include "efsync.h" #include "math.h" #include "placeholder.h" @@ -21,7 +22,6 @@ /// #include extern struct _struct_efAsync_803C025C_0xC efAsync_803C025C[51]; -extern Effect* ef_80061D70(s32, HSD_GObj*, void*); extern struct _struct_efLib_80458EE0_0x8 efLib_80458EE0[16]; extern s32 efLib_804D64E8; extern s32 efLib_804D64F0; @@ -106,8 +106,8 @@ void* efSync_Spawn(s32 arg_gfx_id, HSD_GObj* arg_gobj, ...) return efAsync_80063930(gfx_id, arg_gobj, vlist); } if (gfx_id < 0x4BA) { - // return ef_80061D70(gfx_id, arg_gobj, va_arg(vlist, void*)); - return ef_80061D70(gfx_id, arg_gobj, vlist); + // return efSync_SpawnSpecial(gfx_id, arg_gobj, va_arg(vlist, void*)); + return efSync_SpawnSpecial(gfx_id, arg_gobj, vlist); } efLib_804D64E8 = 1; switch (gfx_id) { From 0079c1a3acba89e3ee739910e7747459f99c34ca Mon Sep 17 00:00:00 2001 From: Robin Avery Date: Sun, 15 Mar 2026 14:56:42 -0400 Subject: [PATCH 2/8] Revert file rename --- config/GALE01/splits.txt | 2 +- configure.py | 2 +- src/melee/ef/{efspecial.c => ef_061D.c} | 2 +- src/melee/ef/{efspecial.h => ef_061D.h} | 0 src/melee/ef/efsync.c | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename src/melee/ef/{efspecial.c => ef_061D.c} (99%) rename src/melee/ef/{efspecial.h => ef_061D.h} (100%) diff --git a/config/GALE01/splits.txt b/config/GALE01/splits.txt index 297ba98c86..7de165391d 100644 --- a/config/GALE01/splits.txt +++ b/config/GALE01/splits.txt @@ -249,7 +249,7 @@ melee/ef/efsync.c: .sdata start:0x804D39C8 end:0x804D39D8 .sdata2 start:0x804D81A0 end:0x804D81D0 -melee/ef/efspecial.c: +melee/ef/ef_061D.c: .text start:0x80061D70 end:0x80063930 .data start:0x803BF9D0 end:0x803BFB00 .sdata start:0x804D39D8 end:0x804D39E8 diff --git a/configure.py b/configure.py index e13b7abc50..c6436a2f20 100755 --- a/configure.py +++ b/configure.py @@ -503,7 +503,7 @@ def MatchingFor(*versions): [ Object(NonMatching, "melee/ef/eflib.c"), Object(NonMatching, "melee/ef/efsync.c"), - Object(Matching, "melee/ef/efspecial.c"), + Object(Matching, "melee/ef/ef_061D.c"), Object(NonMatching, "melee/ef/efasync.c"), ], ), diff --git a/src/melee/ef/efspecial.c b/src/melee/ef/ef_061D.c similarity index 99% rename from src/melee/ef/efspecial.c rename to src/melee/ef/ef_061D.c index b349da0a24..6333d5dde8 100644 --- a/src/melee/ef/efspecial.c +++ b/src/melee/ef/ef_061D.c @@ -1,4 +1,4 @@ -#include "efspecial.h" +#include "ef_061D.h" #include "eflib.h" #include "math.h" diff --git a/src/melee/ef/efspecial.h b/src/melee/ef/ef_061D.h similarity index 100% rename from src/melee/ef/efspecial.h rename to src/melee/ef/ef_061D.h diff --git a/src/melee/ef/efsync.c b/src/melee/ef/efsync.c index c1c3bce357..b71e9292a3 100644 --- a/src/melee/ef/efsync.c +++ b/src/melee/ef/efsync.c @@ -2,7 +2,7 @@ #include "efasync.h" #include "eflib.h" -#include "efspecial.h" +#include "ef_061D.h" #include "efsync.h" #include "math.h" #include "placeholder.h" From 7f66f5cad671687106c58a534afe1b969c51a9bc Mon Sep 17 00:00:00 2001 From: Robin Avery Date: Sun, 15 Mar 2026 15:13:11 -0400 Subject: [PATCH 3/8] Rename `ef_80061D70` to `efSync_SpawnSpecial` --- config/GALE01/symbols.txt | 2 +- src/melee/ef/ef_061D.c | 2 +- src/melee/ef/ef_061D.h | 2 +- src/melee/ef/efsync.c | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/GALE01/symbols.txt b/config/GALE01/symbols.txt index 4a45ed22c3..d419c9f30c 100644 --- a/config/GALE01/symbols.txt +++ b/config/GALE01/symbols.txt @@ -1374,7 +1374,7 @@ efLib_8005FAB8 = .text:0x8005FAB8; // type:function size:0x12C scope:global fn_8005FBE4 = .text:0x8005FBE4; // type:function size:0xF4 efLib_8005FCD8 = .text:0x8005FCD8; // type:function size:0x104 scope:global efSync_Spawn = .text:0x8005FDDC; // type:function size:0x1F94 scope:global -ef_80061D70 = .text:0x80061D70; // type:function size:0x1BC0 scope:global +efSync_SpawnSpecial = .text:0x80061D70; // type:function size:0x1BC0 scope:global efAsync_80063930 = .text:0x80063930; // type:function size:0x396C scope:global efAsync_8006729C = .text:0x8006729C; // type:function size:0x70 scope:global efAsync_8006730C = .text:0x8006730C; // type:function size:0x70 scope:global diff --git a/src/melee/ef/ef_061D.c b/src/melee/ef/ef_061D.c index 887e900398..2cffc9840e 100644 --- a/src/melee/ef/ef_061D.c +++ b/src/melee/ef/ef_061D.c @@ -16,7 +16,7 @@ extern volatile u32 efLib_804D64E8; extern volatile s32 efLib_804D64F0; -void* ef_80061D70(s32 gfx_id, HSD_GObj* gobj, va_list vlist) +void* efSync_SpawnSpecial(s32 gfx_id, HSD_GObj* gobj, va_list vlist) { Effect* effect; HSD_JObj* jobj; diff --git a/src/melee/ef/ef_061D.h b/src/melee/ef/ef_061D.h index 8d24d17675..fb23abd50c 100644 --- a/src/melee/ef/ef_061D.h +++ b/src/melee/ef/ef_061D.h @@ -3,6 +3,6 @@ #include -void* ef_80061D70(s32, HSD_GObj*, va_list); +void* efSync_SpawnSpecial(s32, HSD_GObj*, va_list); #endif diff --git a/src/melee/ef/efsync.c b/src/melee/ef/efsync.c index c75d822ae1..aad678d452 100644 --- a/src/melee/ef/efsync.c +++ b/src/melee/ef/efsync.c @@ -20,7 +20,7 @@ #include "ft/inlines.h" extern ef_Symbols efAsync_803C025C[51]; -extern Effect* ef_80061D70(s32, HSD_GObj*, va_list); +extern Effect* efSync_SpawnSpecial(s32, HSD_GObj*, va_list); extern s32 efLib_804D64E8; extern s32 efLib_804D64F0; @@ -106,8 +106,8 @@ void* efSync_Spawn(s32 arg_gfx_id, HSD_GObj* arg_gobj, ...) return efAsync_80063930(gfx_id, arg_gobj, vlist); } if (gfx_id < 0x4BA) { - // return ef_80061D70(gfx_id, arg_gobj, va_arg(vlist, void*)); - return ef_80061D70(gfx_id, arg_gobj, vlist); + // return efSync_SpawnSpecial(gfx_id, arg_gobj, va_arg(vlist, void*)); + return efSync_SpawnSpecial(gfx_id, arg_gobj, vlist); } efLib_804D64E8 = 1; switch (gfx_id) { From 5343b06a596147c09b02e1c06645a8fd4cb1f2b5 Mon Sep 17 00:00:00 2001 From: Robin Avery Date: Sun, 15 Mar 2026 15:27:50 -0400 Subject: [PATCH 4/8] "Fix" type conflicts --- src/melee/ef/efasync.c | 2 +- src/melee/ef/eflib.c | 23 +- src/melee/ef/eflib.h | 2 +- src/melee/ef/efspecial.c | 510 +++++++++++++++++++++++++++++++++++++++ src/melee/ef/efsync.c | 8 +- 5 files changed, 531 insertions(+), 14 deletions(-) create mode 100644 src/melee/ef/efspecial.c diff --git a/src/melee/ef/efasync.c b/src/melee/ef/efasync.c index c6029ad25f..72126e3c5b 100644 --- a/src/melee/ef/efasync.c +++ b/src/melee/ef/efasync.c @@ -1254,7 +1254,7 @@ void* efAsync_80063930(s32 gfx_id, HSD_GObj* arg_gobj, va_list vlist) cnt = efLib_804D64F0 - 1; efLib_804D64F0 = cnt; // efLib_804D64F0--; - HSD_JObjAnimAll((efLib_80458EE0[cnt].x0_gobj)); + HSD_JObjAnimAll((efLib_80458EE0[cnt])); // HSD_JObjAnimAll((efLib_80458EE0[efLib_804D64F0].unk0)); } #if 1 diff --git a/src/melee/ef/eflib.c b/src/melee/ef/eflib.c index 0aad66d5c0..01386ad91d 100644 --- a/src/melee/ef/eflib.c +++ b/src/melee/ef/eflib.c @@ -131,7 +131,8 @@ efLib_EnsureGeneratorAppSRT_inline(HSD_Generator* generator, s32 status) { \ _parent = NULL; \ } \ - else { \ + else \ + { \ _parent = (_jobj)->parent; \ } \ } while (_parent != NULL); \ @@ -1358,7 +1359,7 @@ void efLib_8005F774(HSD_JObj* jobj, s32 count, u32 konst, u32 tev0) // that there was a split or something but I am not sure because the jobj // text is supposedly shared between these functions and eflib. Weird. -/* 458EE0 */ _struct_efLib_80458EE0 efLib_80458EE0[0x10]; +/* 458EE0 */ HSD_JObj* efLib_80458EE0[0x10]; /* 458F60 */ _struct_efLib_80458EE0 efLib_80458F60[0x8]; void efLib_8005F864(HSD_GObj* gobj, u8 arg1, f32 arg2, f32 arg3) @@ -1366,7 +1367,8 @@ void efLib_8005F864(HSD_GObj* gobj, u8 arg1, f32 arg2, f32 arg3) s32 idx; // WHY - _struct_efLib_80458EE0* base = efLib_80458EE0 + 0x10; + _struct_efLib_80458EE0* base = + ((struct _struct_efLib_80458EE0*) efLib_80458EE0) + 0x10; for (idx = 0; idx < 8; idx++) { if (base[idx].x0_gobj == gobj) { @@ -1382,8 +1384,10 @@ void efLib_8005F864(HSD_GObj* gobj, u8 arg1, f32 arg2, f32 arg3) found: // WHY - efLib_80458EE0[idx + 0x10].x0_gobj = gobj; - efLib_80458EE0[idx + 0x10].x6_unk = arg1; + ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x0_gobj = + gobj; + ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x6_unk = + arg1; } void efLib_8005F990(HSD_GObj* gobj, u16 arg1) @@ -1391,7 +1395,8 @@ void efLib_8005F990(HSD_GObj* gobj, u16 arg1) s32 idx; // WHY - _struct_efLib_80458EE0* base = efLib_80458EE0 + 0x10; + _struct_efLib_80458EE0* base = + ((struct _struct_efLib_80458EE0*) efLib_80458EE0) + 0x10; for (idx = 0; idx < 8; idx++) { if (base[idx].x0_gobj == gobj) { @@ -1407,8 +1412,10 @@ void efLib_8005F990(HSD_GObj* gobj, u16 arg1) found: // WHY - efLib_80458EE0[idx + 0x10].x0_gobj = gobj; - efLib_80458EE0[idx + 0x10].x4_unk = arg1; + ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x0_gobj = + gobj; + ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x4_unk = + arg1; } void efLib_8005FAB8(Effect* effect) diff --git a/src/melee/ef/eflib.h b/src/melee/ef/eflib.h index 8ab076235d..c0c0b2ea51 100644 --- a/src/melee/ef/eflib.h +++ b/src/melee/ef/eflib.h @@ -72,7 +72,7 @@ STATIC_ASSERT(sizeof(_struct_efLib_80458EE0) == 0x8); /* 05FCD8 */ Effect* efLib_8005FCD8(int arg0, HSD_GObj* gobj, HSD_JObj* jobj, Vec3* vec); -extern _struct_efLib_80458EE0 efLib_80458EE0[0x10]; +extern HSD_JObj* efLib_80458EE0[0x10]; extern _struct_efLib_80458EE0 efLib_80458F60[0x8]; #endif diff --git a/src/melee/ef/efspecial.c b/src/melee/ef/efspecial.c new file mode 100644 index 0000000000..f9529f7398 --- /dev/null +++ b/src/melee/ef/efspecial.c @@ -0,0 +1,510 @@ +#include "efspecial.h" + +#include "eflib.h" +#include "math.h" +#include "types.h" + +#include "baselib/class.h" +#include "baselib/debug.h" + +#include "baselib/forward.h" + +#include "baselib/gobj.h" +#include "baselib/list.h" +#include "baselib/object.h" +#include "baselib/pobj.h" + +#include + +extern char ef_803BF9D0[]; +extern char ef_804D39D8[]; +extern char ef_804D39E0[]; + +#define efSpecial_HSD_ASSERT_MSG(line) \ + (((line) == 619) ? "rotate" \ + : ((line) == 640 || (line) == 661 || (line) == 682) ? ef_803BF9D0 \ + : ((line) == 761 || (line) == 824) ? "scale" \ + : ((line) == 917 || (line) == 980) ? "translate" \ + : ((line) == 1171) ? "mtx" \ + : ef_804D39E0) + +#undef HSD_ASSERT +#define HSD_ASSERT(line, cond) \ + ((cond) ? ((void) 0) \ + : __assert(ef_804D39D8, line, efSpecial_HSD_ASSERT_MSG(line))) + +#include "baselib/jobj.h" + +#undef HSD_ASSERT +#define HSD_ASSERT(line, cond) \ + ((cond) ? ((void) 0) : __assert(__FILE__, line, #cond)) + +#include "baselib/particle.h" +#include "ft/inlines.h" + +/* 458EE0 */ extern HSD_JObj* efLib_80458EE0[16]; +/* 4D64E8 */ extern s32 efLib_804D64E8; +/* 4D64F0 */ extern s32 efLib_804D64F0; +/* 3BF9D0 */ char ef_803BF9D0[] = "!(jobj->flags & JOBJ_USE_QUATERNION)"; +/* 4D39D8 */ SDATA char ef_804D39D8[] = "jobj.h"; +/* 4D39E0 */ SDATA char ef_804D39E0[] = "jobj"; +/* 4D81D0 */ extern const f32 ef_804D81D0; +/* 4D81D8 */ extern const f64 ef_804D81D8; +/* 4D81E0 */ extern const f64 ef_804D81E0; +/* 4D81E8 */ extern const f32 ef_804D81E8; +/* 4D81EC */ extern const f32 ef_804D81EC; +/* 4D81F0 */ extern const f32 ef_804D81F0; + +void* efSync_SpawnSpecial(s32 gfx_id, HSD_GObj* arg_gobj, void* vlist) +{ + void* ret_obj; + u8 sp_pad128[0x8]; + Vec3 sp130; + u8 sp_pad130[0x4]; + Effect* eff_2; + Effect* eff_1; + Fighter* fighter_1; + FighterBone* fighter_bone_1; + f64 f64_1; + f32 f32_1; + HSD_JObj* jobj_1; + HSD_JObj* jobj_2; + s32 cnt; + PAD_STACK(0x98); + + efLib_804D64E8 = 1; + ret_obj = NULL; + + switch (gfx_id) { + case 0x479: + ret_obj = efLib_8005C9FC(0x3F2, va_arg(vlist, Vec3*)); + break; + case 0x47A: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = efLib_8005C1B4(0x3E8, arg_gobj, jobj_1); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + hsd_8039EFAC(0, 1, 0x3E9, jobj_1); + break; + case 0x47B: + ret_obj = efLib_8005C9FC(0x3EB, va_arg(vlist, Vec3*)); + break; + case 0x47C: + ret_obj = efLib_8005C3DC(0x3E9, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005F08C; + } + break; + case 0x47D: + ret_obj = hsd_8039EFAC(0, 1, 0x3F0, va_arg(vlist, HSD_JObj*)); + break; + case 0x47E: + ret_obj = hsd_8039EFAC(0, 1, 0x3F1, va_arg(vlist, HSD_JObj*)); + break; + case 0x47F: + ret_obj = hsd_8039EFAC(0, 2, 0x7D4, va_arg(vlist, HSD_JObj*)); + break; + case 0x480: + ret_obj = hsd_8039EFAC(0, 2, 0x7D2, va_arg(vlist, HSD_JObj*)); + break; + case 0x481: + ret_obj = hsd_8039EFAC(0, 2, 0x7D3, va_arg(vlist, HSD_JObj*)); + break; + case 0x482: + ret_obj = efLib_8005C1B4(0x7D0, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005EBC8; + } + break; + case 0x483: + ret_obj = efLib_8005C9FC(0x7D7, va_arg(vlist, Vec3*)); + break; + case 0x484: + ret_obj = hsd_8039EFAC(0, 2, 0x7DB, va_arg(vlist, HSD_JObj*)); + break; + case 0x485: + ret_obj = hsd_8039EFAC(0, 2, 0x7DE, va_arg(vlist, HSD_JObj*)); + break; + case 0x486: + ret_obj = efLib_8005C814(0x7D1, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x487: + ret_obj = efLib_8005C5C4(0x7D2, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x488: + ret_obj = efLib_8005C3DC(0xBB8, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x489: + ret_obj = efLib_8005C3DC(0xBB9, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x48A: + ret_obj = efLib_8005C3DC(0xBBA, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x48B: + ret_obj = efLib_8005C1B4(0xBBB, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x48C: + ret_obj = efLib_8005C1B4(0xBBC, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005E3A0; + } + break; + case 0x48D: + ret_obj = efLib_8005CF40(0xBC0, vlist); + break; + case 0x48E: + ret_obj = efLib_8005C814(0xBBD, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, ef_804D81E8); + HSD_JObjSetRotationZ(eff_1->gobj->hsd_obj, *va_arg(vlist, f32*)); + } + break; + case 0x48F: + ret_obj = efLib_8005C6F4(0xFA0, arg_gobj, va_arg(vlist, void*)); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x0 = + (void*) efLib_8005C6F4(0xFA1, arg_gobj, va_arg(vlist, void*)); + } + break; + case 0x490: + ret_obj = efLib_8005C1B4(0xFA2, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->translate.z = *va_arg(vlist, f32*); + eff_1->x10 = efLib_8005EDDC; + } + break; + case 0x491: + ret_obj = efLib_8005C1B4(0xFA4, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x492: + ret_obj = efLib_8005C3DC(0xFA3, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x493: + ret_obj = efLib_8005C3DC(0xFA5, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x494: + fighter_1 = GET_FIGHTER(arg_gobj); + fighter_bone_1 = fighter_1->parts; + jobj_1 = fighter_bone_1[44].joint; + jobj_2 = fighter_bone_1[1].joint; + ret_obj = efLib_8005C2BC(0x1388, arg_gobj, jobj_1); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x10 = efLib_8005E090; + ((Effect*) ret_obj)->x24 = 0x41; + ((Effect*) ret_obj)->x14 = NULL; + eff_1 = efLib_8005C1B4(0x1389, arg_gobj, jobj_1); + ((Effect*) ret_obj)->x0 = (void*) eff_1; + if (eff_1 != NULL) { + eff_1 = (Effect*) ((Effect*) ret_obj)->x0; + eff_1->x10 = efLib_8005E090; + eff_1->x24 = 0x41; + eff_1->x14 = fighter_1; + eff_2 = efLib_8005C1B4(0x138A, arg_gobj, jobj_2); + eff_1->x0 = (void*) eff_2; + if (eff_2 != NULL) { + eff_2 = (Effect*) eff_1->x0; + eff_2->x10 = efLib_8005E090; + eff_2->x24 = 0x41; + eff_2->x14 = fighter_1; + } + } + } + break; + case 0x495: + ret_obj = efLib_8005C3DC(0x138B, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + break; + case 0x496: + ret_obj = efLib_8005C1B4(0x138C, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x497: + ret_obj = efLib_8005C1B4(0x138D, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + eff_1->x10 = efLib_8005E2B4; + } + break; + case 0x498: + ret_obj = efLib_8005C2BC(0x138E, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x499: + ret_obj = efLib_8005C2BC(0x138F, arg_gobj, va_arg(vlist, HSD_JObj*)); + break; + case 0x49A: + ret_obj = efLib_8005CF40(0x138B, vlist); + break; + case 0x49B: + ret_obj = hsd_8039EFAC(0, 5, 0x138F, va_arg(vlist, HSD_JObj*)); + break; + case 0x49C: + ret_obj = hsd_8039EFAC(0, 5, 0x1395, va_arg(vlist, HSD_JObj*)); + break; + case 0x49D: + ret_obj = efLib_8005C814(0x1390, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + jobj_2 = arg_gobj->hsd_obj; + jobj_1 = GET_JOBJ(eff_1->gobj); + HSD_JObjSetScaleX(jobj_1, HSD_JObjGetScaleY(jobj_2)); + HSD_JObjSetScaleY(jobj_1, HSD_JObjGetScaleY(jobj_2)); + HSD_JObjSetScaleZ(jobj_1, HSD_JObjGetScaleY(jobj_2)); + HSD_JObjSetTranslateZ(HSD_JObjGetChild(jobj_1), + HSD_JObjGetTranslationZ(jobj_1) - + ef_804D81EC); + if (*va_arg(vlist, f32*) < ef_804D81D0) { + HSD_JObjSetRotationY(jobj_1, ef_804D81F0); + HSD_JObjSetRotationZ(jobj_1, -*va_arg(vlist, f32*)); + } else { + HSD_JObjSetRotationY(jobj_1, ef_804D81E8); + HSD_JObjSetRotationZ(jobj_1, *va_arg(vlist, f32*)); + } + eff_1->x10 = efLib_8005E1D8; + } + break; + case 0x49E: + ret_obj = efLib_8005C9FC(0x206, va_arg(vlist, Vec3*)); + break; + case 0x49F: { + HSD_JObj* attach_jobj; + + attach_jobj = va_arg(vlist, HSD_JObj*); + ret_obj = efLib_8005C1B4(0x7D00, arg_gobj, attach_jobj); + if (ret_obj != NULL) { + eff_1 = ret_obj; + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + f32_1 = f64_1; + HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); + } + hsd_8039EFAC(0, 0x20, 0x7D00, attach_jobj); + break; + } + case 0x4A0: + ret_obj = efLib_8005C9FC(0x7D02, va_arg(vlist, Vec3*)); + break; + case 0x4A5: + ret_obj = efLib_8005CD2C(0xA028, vlist, arg_gobj); + break; + case 0x4A6: + ret_obj = efLib_8005CD2C(0xA029, vlist, arg_gobj); + break; + case 0x4A7: + ret_obj = efLib_8005CD2C(0xA02A, vlist, arg_gobj); + break; + case 0x4A8: + ret_obj = efLib_8005CD2C(0xA02B, vlist, arg_gobj); + break; + case 0x4A1: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x22, 0x84D4, jobj_1); + break; + case 0x4A2: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x22, 0x84D2, jobj_1); + break; + case 0x4A3: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x22, 0x84D3, jobj_1); + break; + case 0x4A4: + ret_obj = efLib_8005C814(0x84D0, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); + f32_1 = f64_1; + HSD_JObjSetRotationY(jobj_1, f32_1); + } + break; + case 0x4A9: + ret_obj = efLib_8005C3DC(0x9858, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); + f32_1 = f64_1; + HSD_JObjSetRotationY(jobj_1, f32_1); + eff_1 = ret_obj; + HSD_JObjAnimAll(eff_1->gobj->hsd_obj); + } + break; + case 0x4AA: + ret_obj = efLib_8005C3DC(0x9859, arg_gobj, va_arg(vlist, HSD_JObj*)); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + eff_1 = ret_obj; + f32_1 = f64_1; + HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, f32_1); + HSD_JObjAnimAll(eff_1->gobj->hsd_obj); + } + break; + case 0x4AB: + ret_obj = efLib_8005C6F4(0x9471, arg_gobj, va_arg(vlist, void*)); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x0 = + (void*) efLib_8005C6F4(0x9470, arg_gobj, va_arg(vlist, void*)); + } + break; + case 0x4AC: + ret_obj = efLib_8005C814(0x80E8, arg_gobj, va_arg(vlist, Vec3*)); + if (ret_obj != NULL) { + eff_1 = ret_obj; + HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, ef_804D81E8); + HSD_JObjSetRotationZ(eff_1->gobj->hsd_obj, *va_arg(vlist, f32*)); + } + break; + case 0x4AD: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x24, 0x8CA0, jobj_1); + break; + case 0x4AE: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x2E, 0xB3B0, jobj_1); + break; + case 0x4AF: + jobj_1 = va_arg(vlist, HSD_JObj*); + ret_obj = hsd_8039EFAC(0, 0x2E, 0xB3B1, jobj_1); + break; + case 0x4B0: + ret_obj = efLib_8005CF40(0xB3B6, vlist); + break; + case 0x4B1: { + HSD_JObj* attach_jobj; + + attach_jobj = va_arg(vlist, HSD_JObj*); + ret_obj = efLib_8005C1B4(0x9088, arg_gobj, attach_jobj); + if (ret_obj != NULL) { + if (*va_arg(vlist, f32*) < ef_804D81D0) { + f64_1 = ef_804D81D8; + } else { + f64_1 = ef_804D81E0; + } + jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); + f32_1 = f64_1; + HSD_JObjSetRotationY(jobj_1, f32_1); + } + hsd_8039EFAC(0, 0x25, 0x9088, attach_jobj); + break; + } + case 0x4B2: + ret_obj = efLib_8005C9FC(0x908A, va_arg(vlist, Vec3*)); + break; + case 0x4B3: + ret_obj = efLib_8005C6F4(0xB799, arg_gobj, va_arg(vlist, void*)); + if (ret_obj != NULL) { + ((Effect*) ret_obj)->x0 = + (void*) efLib_8005C6F4(0xB798, arg_gobj, va_arg(vlist, void*)); + } + break; + case 0x4B4: + ret_obj = efLib_8005C6F4(0x4E20, arg_gobj, va_arg(vlist, void*)); + break; + case 0x4B5: + ret_obj = efLib_8005C6F4(0x4E21, arg_gobj, va_arg(vlist, void*)); + break; + case 0x4B6: + ret_obj = efLib_8005C2BC(0x5208, arg_gobj, va_arg(vlist, HSD_JObj*)); + goto efSync_SpawnSpecial_case_4B6_4B7; + case 0x4B7: + ret_obj = efLib_8005C2BC(0x5209, arg_gobj, va_arg(vlist, HSD_JObj*)); + efSync_SpawnSpecial_case_4B6_4B7: + if (ret_obj != NULL) { + /// @todo Fix jobj inline usage + HSD_JObj* jobj; + + jobj_1 = GET_JOBJ(arg_gobj); + eff_1 = ret_obj; + HSD_JObjGetScale(jobj_1, &sp130); + jobj = eff_1->gobj->hsd_obj; + ((jobj) ? ((void) 0) : __assert(ef_804D39D8, 823, ef_804D39E0)); + HSD_JObjSetScale(eff_1->gobj->hsd_obj, &sp130); + } + break; + case 0x4B8: + ret_obj = efLib_8005C6F4(0xBB80, arg_gobj, va_arg(vlist, void*)); + break; + case 0x4B9: + ret_obj = efLib_8005C6F4(0xBB81, arg_gobj, va_arg(vlist, void*)); + break; + } + + while (efLib_804D64F0 != 0) { + cnt = efLib_804D64F0 - 1; + efLib_804D64F0 = cnt; + HSD_JObjAnimAll(efLib_80458EE0[cnt]); + } + + return ret_obj; +} + +/* 4D81D0 */ const f32 ef_804D81D0 = 0.0f; +/* 4D81D8 */ const f64 ef_804D81D8 = -M_PI_2; +/* 4D81E0 */ const f64 ef_804D81E0 = M_PI_2; +/* 4D81E8 */ const f32 ef_804D81E8 = M_PI_2; +/* 4D81EC */ const f32 ef_804D81EC = 6.0f; +/* 4D81F0 */ const f32 ef_804D81F0 = -M_PI_2; diff --git a/src/melee/ef/efsync.c b/src/melee/ef/efsync.c index 96d8f98dfe..b7cf17ed96 100644 --- a/src/melee/ef/efsync.c +++ b/src/melee/ef/efsync.c @@ -1,8 +1,8 @@ #include "efsync.h" +#include "ef_061D.h" #include "efasync.h" #include "eflib.h" -#include "ef_061D.h" #include "efsync.h" #include "math.h" #include "placeholder.h" @@ -20,8 +20,8 @@ #include "ft/inlines.h" -extern struct _struct_efAsync_803C025C_0xC efAsync_803C025C[51]; -extern struct _struct_efLib_80458EE0_0x8 efLib_80458EE0[16]; +extern struct ef_Symbols efAsync_803C025C[51]; +extern HSD_JObj* efLib_80458EE0[16]; extern s32 efLib_804D64E8; extern s32 efLib_804D64F0; @@ -656,7 +656,7 @@ void* efSync_Spawn(s32 arg_gfx_id, HSD_GObj* arg_gobj, ...) cnt = efLib_804D64F0 - 1; efLib_804D64F0 = cnt; // efLib_804D64F0--; - HSD_JObjAnimAll((efLib_80458EE0[cnt].x0_gobj)); + HSD_JObjAnimAll((efLib_80458EE0[cnt])); // HSD_JObjAnimAll((efLib_80458EE0[efLib_804D64F0].unk0)); } From 06eac7affec38fbb238e1efe9e5ddd69d0aaa3e1 Mon Sep 17 00:00:00 2001 From: Robin Avery Date: Sun, 15 Mar 2026 15:30:48 -0400 Subject: [PATCH 5/8] Remove mistaken file --- src/melee/ef/efspecial.c | 510 --------------------------------------- 1 file changed, 510 deletions(-) delete mode 100644 src/melee/ef/efspecial.c diff --git a/src/melee/ef/efspecial.c b/src/melee/ef/efspecial.c deleted file mode 100644 index f9529f7398..0000000000 --- a/src/melee/ef/efspecial.c +++ /dev/null @@ -1,510 +0,0 @@ -#include "efspecial.h" - -#include "eflib.h" -#include "math.h" -#include "types.h" - -#include "baselib/class.h" -#include "baselib/debug.h" - -#include "baselib/forward.h" - -#include "baselib/gobj.h" -#include "baselib/list.h" -#include "baselib/object.h" -#include "baselib/pobj.h" - -#include - -extern char ef_803BF9D0[]; -extern char ef_804D39D8[]; -extern char ef_804D39E0[]; - -#define efSpecial_HSD_ASSERT_MSG(line) \ - (((line) == 619) ? "rotate" \ - : ((line) == 640 || (line) == 661 || (line) == 682) ? ef_803BF9D0 \ - : ((line) == 761 || (line) == 824) ? "scale" \ - : ((line) == 917 || (line) == 980) ? "translate" \ - : ((line) == 1171) ? "mtx" \ - : ef_804D39E0) - -#undef HSD_ASSERT -#define HSD_ASSERT(line, cond) \ - ((cond) ? ((void) 0) \ - : __assert(ef_804D39D8, line, efSpecial_HSD_ASSERT_MSG(line))) - -#include "baselib/jobj.h" - -#undef HSD_ASSERT -#define HSD_ASSERT(line, cond) \ - ((cond) ? ((void) 0) : __assert(__FILE__, line, #cond)) - -#include "baselib/particle.h" -#include "ft/inlines.h" - -/* 458EE0 */ extern HSD_JObj* efLib_80458EE0[16]; -/* 4D64E8 */ extern s32 efLib_804D64E8; -/* 4D64F0 */ extern s32 efLib_804D64F0; -/* 3BF9D0 */ char ef_803BF9D0[] = "!(jobj->flags & JOBJ_USE_QUATERNION)"; -/* 4D39D8 */ SDATA char ef_804D39D8[] = "jobj.h"; -/* 4D39E0 */ SDATA char ef_804D39E0[] = "jobj"; -/* 4D81D0 */ extern const f32 ef_804D81D0; -/* 4D81D8 */ extern const f64 ef_804D81D8; -/* 4D81E0 */ extern const f64 ef_804D81E0; -/* 4D81E8 */ extern const f32 ef_804D81E8; -/* 4D81EC */ extern const f32 ef_804D81EC; -/* 4D81F0 */ extern const f32 ef_804D81F0; - -void* efSync_SpawnSpecial(s32 gfx_id, HSD_GObj* arg_gobj, void* vlist) -{ - void* ret_obj; - u8 sp_pad128[0x8]; - Vec3 sp130; - u8 sp_pad130[0x4]; - Effect* eff_2; - Effect* eff_1; - Fighter* fighter_1; - FighterBone* fighter_bone_1; - f64 f64_1; - f32 f32_1; - HSD_JObj* jobj_1; - HSD_JObj* jobj_2; - s32 cnt; - PAD_STACK(0x98); - - efLib_804D64E8 = 1; - ret_obj = NULL; - - switch (gfx_id) { - case 0x479: - ret_obj = efLib_8005C9FC(0x3F2, va_arg(vlist, Vec3*)); - break; - case 0x47A: - jobj_1 = va_arg(vlist, HSD_JObj*); - ret_obj = efLib_8005C1B4(0x3E8, arg_gobj, jobj_1); - if (ret_obj != NULL) { - eff_1 = ret_obj; - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - f32_1 = f64_1; - HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); - } - hsd_8039EFAC(0, 1, 0x3E9, jobj_1); - break; - case 0x47B: - ret_obj = efLib_8005C9FC(0x3EB, va_arg(vlist, Vec3*)); - break; - case 0x47C: - ret_obj = efLib_8005C3DC(0x3E9, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - eff_1->x10 = efLib_8005F08C; - } - break; - case 0x47D: - ret_obj = hsd_8039EFAC(0, 1, 0x3F0, va_arg(vlist, HSD_JObj*)); - break; - case 0x47E: - ret_obj = hsd_8039EFAC(0, 1, 0x3F1, va_arg(vlist, HSD_JObj*)); - break; - case 0x47F: - ret_obj = hsd_8039EFAC(0, 2, 0x7D4, va_arg(vlist, HSD_JObj*)); - break; - case 0x480: - ret_obj = hsd_8039EFAC(0, 2, 0x7D2, va_arg(vlist, HSD_JObj*)); - break; - case 0x481: - ret_obj = hsd_8039EFAC(0, 2, 0x7D3, va_arg(vlist, HSD_JObj*)); - break; - case 0x482: - ret_obj = efLib_8005C1B4(0x7D0, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - eff_1->x10 = efLib_8005EBC8; - } - break; - case 0x483: - ret_obj = efLib_8005C9FC(0x7D7, va_arg(vlist, Vec3*)); - break; - case 0x484: - ret_obj = hsd_8039EFAC(0, 2, 0x7DB, va_arg(vlist, HSD_JObj*)); - break; - case 0x485: - ret_obj = hsd_8039EFAC(0, 2, 0x7DE, va_arg(vlist, HSD_JObj*)); - break; - case 0x486: - ret_obj = efLib_8005C814(0x7D1, arg_gobj, va_arg(vlist, Vec3*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - f32_1 = f64_1; - HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); - } - break; - case 0x487: - ret_obj = efLib_8005C5C4(0x7D2, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x488: - ret_obj = efLib_8005C3DC(0xBB8, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x489: - ret_obj = efLib_8005C3DC(0xBB9, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x48A: - ret_obj = efLib_8005C3DC(0xBBA, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x48B: - ret_obj = efLib_8005C1B4(0xBBB, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x48C: - ret_obj = efLib_8005C1B4(0xBBC, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - eff_1->x10 = efLib_8005E3A0; - } - break; - case 0x48D: - ret_obj = efLib_8005CF40(0xBC0, vlist); - break; - case 0x48E: - ret_obj = efLib_8005C814(0xBBD, arg_gobj, va_arg(vlist, Vec3*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, ef_804D81E8); - HSD_JObjSetRotationZ(eff_1->gobj->hsd_obj, *va_arg(vlist, f32*)); - } - break; - case 0x48F: - ret_obj = efLib_8005C6F4(0xFA0, arg_gobj, va_arg(vlist, void*)); - if (ret_obj != NULL) { - ((Effect*) ret_obj)->x0 = - (void*) efLib_8005C6F4(0xFA1, arg_gobj, va_arg(vlist, void*)); - } - break; - case 0x490: - ret_obj = efLib_8005C1B4(0xFA2, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - eff_1->translate.z = *va_arg(vlist, f32*); - eff_1->x10 = efLib_8005EDDC; - } - break; - case 0x491: - ret_obj = efLib_8005C1B4(0xFA4, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x492: - ret_obj = efLib_8005C3DC(0xFA3, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - f32_1 = f64_1; - HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); - } - break; - case 0x493: - ret_obj = efLib_8005C3DC(0xFA5, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - f32_1 = f64_1; - HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); - } - break; - case 0x494: - fighter_1 = GET_FIGHTER(arg_gobj); - fighter_bone_1 = fighter_1->parts; - jobj_1 = fighter_bone_1[44].joint; - jobj_2 = fighter_bone_1[1].joint; - ret_obj = efLib_8005C2BC(0x1388, arg_gobj, jobj_1); - if (ret_obj != NULL) { - ((Effect*) ret_obj)->x10 = efLib_8005E090; - ((Effect*) ret_obj)->x24 = 0x41; - ((Effect*) ret_obj)->x14 = NULL; - eff_1 = efLib_8005C1B4(0x1389, arg_gobj, jobj_1); - ((Effect*) ret_obj)->x0 = (void*) eff_1; - if (eff_1 != NULL) { - eff_1 = (Effect*) ((Effect*) ret_obj)->x0; - eff_1->x10 = efLib_8005E090; - eff_1->x24 = 0x41; - eff_1->x14 = fighter_1; - eff_2 = efLib_8005C1B4(0x138A, arg_gobj, jobj_2); - eff_1->x0 = (void*) eff_2; - if (eff_2 != NULL) { - eff_2 = (Effect*) eff_1->x0; - eff_2->x10 = efLib_8005E090; - eff_2->x24 = 0x41; - eff_2->x14 = fighter_1; - } - } - } - break; - case 0x495: - ret_obj = efLib_8005C3DC(0x138B, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - f32_1 = f64_1; - HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); - } - break; - case 0x496: - ret_obj = efLib_8005C1B4(0x138C, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x497: - ret_obj = efLib_8005C1B4(0x138D, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - eff_1->x10 = efLib_8005E2B4; - } - break; - case 0x498: - ret_obj = efLib_8005C2BC(0x138E, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x499: - ret_obj = efLib_8005C2BC(0x138F, arg_gobj, va_arg(vlist, HSD_JObj*)); - break; - case 0x49A: - ret_obj = efLib_8005CF40(0x138B, vlist); - break; - case 0x49B: - ret_obj = hsd_8039EFAC(0, 5, 0x138F, va_arg(vlist, HSD_JObj*)); - break; - case 0x49C: - ret_obj = hsd_8039EFAC(0, 5, 0x1395, va_arg(vlist, HSD_JObj*)); - break; - case 0x49D: - ret_obj = efLib_8005C814(0x1390, arg_gobj, va_arg(vlist, Vec3*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - jobj_2 = arg_gobj->hsd_obj; - jobj_1 = GET_JOBJ(eff_1->gobj); - HSD_JObjSetScaleX(jobj_1, HSD_JObjGetScaleY(jobj_2)); - HSD_JObjSetScaleY(jobj_1, HSD_JObjGetScaleY(jobj_2)); - HSD_JObjSetScaleZ(jobj_1, HSD_JObjGetScaleY(jobj_2)); - HSD_JObjSetTranslateZ(HSD_JObjGetChild(jobj_1), - HSD_JObjGetTranslationZ(jobj_1) - - ef_804D81EC); - if (*va_arg(vlist, f32*) < ef_804D81D0) { - HSD_JObjSetRotationY(jobj_1, ef_804D81F0); - HSD_JObjSetRotationZ(jobj_1, -*va_arg(vlist, f32*)); - } else { - HSD_JObjSetRotationY(jobj_1, ef_804D81E8); - HSD_JObjSetRotationZ(jobj_1, *va_arg(vlist, f32*)); - } - eff_1->x10 = efLib_8005E1D8; - } - break; - case 0x49E: - ret_obj = efLib_8005C9FC(0x206, va_arg(vlist, Vec3*)); - break; - case 0x49F: { - HSD_JObj* attach_jobj; - - attach_jobj = va_arg(vlist, HSD_JObj*); - ret_obj = efLib_8005C1B4(0x7D00, arg_gobj, attach_jobj); - if (ret_obj != NULL) { - eff_1 = ret_obj; - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - f32_1 = f64_1; - HSD_JObjSetRotationY(GET_JOBJ(eff_1->gobj), f32_1); - } - hsd_8039EFAC(0, 0x20, 0x7D00, attach_jobj); - break; - } - case 0x4A0: - ret_obj = efLib_8005C9FC(0x7D02, va_arg(vlist, Vec3*)); - break; - case 0x4A5: - ret_obj = efLib_8005CD2C(0xA028, vlist, arg_gobj); - break; - case 0x4A6: - ret_obj = efLib_8005CD2C(0xA029, vlist, arg_gobj); - break; - case 0x4A7: - ret_obj = efLib_8005CD2C(0xA02A, vlist, arg_gobj); - break; - case 0x4A8: - ret_obj = efLib_8005CD2C(0xA02B, vlist, arg_gobj); - break; - case 0x4A1: - jobj_1 = va_arg(vlist, HSD_JObj*); - ret_obj = hsd_8039EFAC(0, 0x22, 0x84D4, jobj_1); - break; - case 0x4A2: - jobj_1 = va_arg(vlist, HSD_JObj*); - ret_obj = hsd_8039EFAC(0, 0x22, 0x84D2, jobj_1); - break; - case 0x4A3: - jobj_1 = va_arg(vlist, HSD_JObj*); - ret_obj = hsd_8039EFAC(0, 0x22, 0x84D3, jobj_1); - break; - case 0x4A4: - ret_obj = efLib_8005C814(0x84D0, arg_gobj, va_arg(vlist, Vec3*)); - if (ret_obj != NULL) { - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); - f32_1 = f64_1; - HSD_JObjSetRotationY(jobj_1, f32_1); - } - break; - case 0x4A9: - ret_obj = efLib_8005C3DC(0x9858, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); - f32_1 = f64_1; - HSD_JObjSetRotationY(jobj_1, f32_1); - eff_1 = ret_obj; - HSD_JObjAnimAll(eff_1->gobj->hsd_obj); - } - break; - case 0x4AA: - ret_obj = efLib_8005C3DC(0x9859, arg_gobj, va_arg(vlist, HSD_JObj*)); - if (ret_obj != NULL) { - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - eff_1 = ret_obj; - f32_1 = f64_1; - HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, f32_1); - HSD_JObjAnimAll(eff_1->gobj->hsd_obj); - } - break; - case 0x4AB: - ret_obj = efLib_8005C6F4(0x9471, arg_gobj, va_arg(vlist, void*)); - if (ret_obj != NULL) { - ((Effect*) ret_obj)->x0 = - (void*) efLib_8005C6F4(0x9470, arg_gobj, va_arg(vlist, void*)); - } - break; - case 0x4AC: - ret_obj = efLib_8005C814(0x80E8, arg_gobj, va_arg(vlist, Vec3*)); - if (ret_obj != NULL) { - eff_1 = ret_obj; - HSD_JObjSetRotationY(eff_1->gobj->hsd_obj, ef_804D81E8); - HSD_JObjSetRotationZ(eff_1->gobj->hsd_obj, *va_arg(vlist, f32*)); - } - break; - case 0x4AD: - jobj_1 = va_arg(vlist, HSD_JObj*); - ret_obj = hsd_8039EFAC(0, 0x24, 0x8CA0, jobj_1); - break; - case 0x4AE: - jobj_1 = va_arg(vlist, HSD_JObj*); - ret_obj = hsd_8039EFAC(0, 0x2E, 0xB3B0, jobj_1); - break; - case 0x4AF: - jobj_1 = va_arg(vlist, HSD_JObj*); - ret_obj = hsd_8039EFAC(0, 0x2E, 0xB3B1, jobj_1); - break; - case 0x4B0: - ret_obj = efLib_8005CF40(0xB3B6, vlist); - break; - case 0x4B1: { - HSD_JObj* attach_jobj; - - attach_jobj = va_arg(vlist, HSD_JObj*); - ret_obj = efLib_8005C1B4(0x9088, arg_gobj, attach_jobj); - if (ret_obj != NULL) { - if (*va_arg(vlist, f32*) < ef_804D81D0) { - f64_1 = ef_804D81D8; - } else { - f64_1 = ef_804D81E0; - } - jobj_1 = GET_JOBJ(((Effect*) ret_obj)->gobj); - f32_1 = f64_1; - HSD_JObjSetRotationY(jobj_1, f32_1); - } - hsd_8039EFAC(0, 0x25, 0x9088, attach_jobj); - break; - } - case 0x4B2: - ret_obj = efLib_8005C9FC(0x908A, va_arg(vlist, Vec3*)); - break; - case 0x4B3: - ret_obj = efLib_8005C6F4(0xB799, arg_gobj, va_arg(vlist, void*)); - if (ret_obj != NULL) { - ((Effect*) ret_obj)->x0 = - (void*) efLib_8005C6F4(0xB798, arg_gobj, va_arg(vlist, void*)); - } - break; - case 0x4B4: - ret_obj = efLib_8005C6F4(0x4E20, arg_gobj, va_arg(vlist, void*)); - break; - case 0x4B5: - ret_obj = efLib_8005C6F4(0x4E21, arg_gobj, va_arg(vlist, void*)); - break; - case 0x4B6: - ret_obj = efLib_8005C2BC(0x5208, arg_gobj, va_arg(vlist, HSD_JObj*)); - goto efSync_SpawnSpecial_case_4B6_4B7; - case 0x4B7: - ret_obj = efLib_8005C2BC(0x5209, arg_gobj, va_arg(vlist, HSD_JObj*)); - efSync_SpawnSpecial_case_4B6_4B7: - if (ret_obj != NULL) { - /// @todo Fix jobj inline usage - HSD_JObj* jobj; - - jobj_1 = GET_JOBJ(arg_gobj); - eff_1 = ret_obj; - HSD_JObjGetScale(jobj_1, &sp130); - jobj = eff_1->gobj->hsd_obj; - ((jobj) ? ((void) 0) : __assert(ef_804D39D8, 823, ef_804D39E0)); - HSD_JObjSetScale(eff_1->gobj->hsd_obj, &sp130); - } - break; - case 0x4B8: - ret_obj = efLib_8005C6F4(0xBB80, arg_gobj, va_arg(vlist, void*)); - break; - case 0x4B9: - ret_obj = efLib_8005C6F4(0xBB81, arg_gobj, va_arg(vlist, void*)); - break; - } - - while (efLib_804D64F0 != 0) { - cnt = efLib_804D64F0 - 1; - efLib_804D64F0 = cnt; - HSD_JObjAnimAll(efLib_80458EE0[cnt]); - } - - return ret_obj; -} - -/* 4D81D0 */ const f32 ef_804D81D0 = 0.0f; -/* 4D81D8 */ const f64 ef_804D81D8 = -M_PI_2; -/* 4D81E0 */ const f64 ef_804D81E0 = M_PI_2; -/* 4D81E8 */ const f32 ef_804D81E8 = M_PI_2; -/* 4D81EC */ const f32 ef_804D81EC = 6.0f; -/* 4D81F0 */ const f32 ef_804D81F0 = -M_PI_2; From e08214a7820ac079b1d4908f85c0cb536c04955f Mon Sep 17 00:00:00 2001 From: Robin Avery Date: Sun, 15 Mar 2026 15:50:40 -0400 Subject: [PATCH 6/8] "Fix" broken matches --- src/melee/ef/ef_061D.c | 3 +-- src/melee/ef/efasync.c | 2 +- src/melee/ef/eflib.c | 23 ++++++++--------------- src/melee/ef/eflib.h | 2 +- src/melee/ef/efsync.c | 3 +-- 5 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/melee/ef/ef_061D.c b/src/melee/ef/ef_061D.c index 6333d5dde8..950e115fd5 100644 --- a/src/melee/ef/ef_061D.c +++ b/src/melee/ef/ef_061D.c @@ -42,7 +42,6 @@ extern char ef_804D39E0[]; #include "baselib/particle.h" #include "ft/inlines.h" -/* 458EE0 */ extern HSD_JObj* efLib_80458EE0[16]; /* 4D64E8 */ extern s32 efLib_804D64E8; /* 4D64F0 */ extern s32 efLib_804D64F0; /* 3BF9D0 */ char ef_803BF9D0[] = "!(jobj->flags & JOBJ_USE_QUATERNION)"; @@ -495,7 +494,7 @@ void* efSync_SpawnSpecial(s32 gfx_id, HSD_GObj* arg_gobj, void* vlist) while (efLib_804D64F0 != 0) { cnt = efLib_804D64F0 - 1; efLib_804D64F0 = cnt; - HSD_JObjAnimAll(efLib_80458EE0[cnt]); + HSD_JObjAnimAll(((HSD_JObj**) &efLib_80458EE0)[cnt]); } return ret_obj; diff --git a/src/melee/ef/efasync.c b/src/melee/ef/efasync.c index 72126e3c5b..94e74d5ac4 100644 --- a/src/melee/ef/efasync.c +++ b/src/melee/ef/efasync.c @@ -1254,7 +1254,7 @@ void* efAsync_80063930(s32 gfx_id, HSD_GObj* arg_gobj, va_list vlist) cnt = efLib_804D64F0 - 1; efLib_804D64F0 = cnt; // efLib_804D64F0--; - HSD_JObjAnimAll((efLib_80458EE0[cnt])); + HSD_JObjAnimAll(((HSD_JObj**) &efLib_80458EE0)[cnt]); // HSD_JObjAnimAll((efLib_80458EE0[efLib_804D64F0].unk0)); } #if 1 diff --git a/src/melee/ef/eflib.c b/src/melee/ef/eflib.c index 01386ad91d..0aad66d5c0 100644 --- a/src/melee/ef/eflib.c +++ b/src/melee/ef/eflib.c @@ -131,8 +131,7 @@ efLib_EnsureGeneratorAppSRT_inline(HSD_Generator* generator, s32 status) { \ _parent = NULL; \ } \ - else \ - { \ + else { \ _parent = (_jobj)->parent; \ } \ } while (_parent != NULL); \ @@ -1359,7 +1358,7 @@ void efLib_8005F774(HSD_JObj* jobj, s32 count, u32 konst, u32 tev0) // that there was a split or something but I am not sure because the jobj // text is supposedly shared between these functions and eflib. Weird. -/* 458EE0 */ HSD_JObj* efLib_80458EE0[0x10]; +/* 458EE0 */ _struct_efLib_80458EE0 efLib_80458EE0[0x10]; /* 458F60 */ _struct_efLib_80458EE0 efLib_80458F60[0x8]; void efLib_8005F864(HSD_GObj* gobj, u8 arg1, f32 arg2, f32 arg3) @@ -1367,8 +1366,7 @@ void efLib_8005F864(HSD_GObj* gobj, u8 arg1, f32 arg2, f32 arg3) s32 idx; // WHY - _struct_efLib_80458EE0* base = - ((struct _struct_efLib_80458EE0*) efLib_80458EE0) + 0x10; + _struct_efLib_80458EE0* base = efLib_80458EE0 + 0x10; for (idx = 0; idx < 8; idx++) { if (base[idx].x0_gobj == gobj) { @@ -1384,10 +1382,8 @@ void efLib_8005F864(HSD_GObj* gobj, u8 arg1, f32 arg2, f32 arg3) found: // WHY - ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x0_gobj = - gobj; - ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x6_unk = - arg1; + efLib_80458EE0[idx + 0x10].x0_gobj = gobj; + efLib_80458EE0[idx + 0x10].x6_unk = arg1; } void efLib_8005F990(HSD_GObj* gobj, u16 arg1) @@ -1395,8 +1391,7 @@ void efLib_8005F990(HSD_GObj* gobj, u16 arg1) s32 idx; // WHY - _struct_efLib_80458EE0* base = - ((struct _struct_efLib_80458EE0*) efLib_80458EE0) + 0x10; + _struct_efLib_80458EE0* base = efLib_80458EE0 + 0x10; for (idx = 0; idx < 8; idx++) { if (base[idx].x0_gobj == gobj) { @@ -1412,10 +1407,8 @@ void efLib_8005F990(HSD_GObj* gobj, u16 arg1) found: // WHY - ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x0_gobj = - gobj; - ((struct _struct_efLib_80458EE0*) efLib_80458EE0)[idx + 0x10].x4_unk = - arg1; + efLib_80458EE0[idx + 0x10].x0_gobj = gobj; + efLib_80458EE0[idx + 0x10].x4_unk = arg1; } void efLib_8005FAB8(Effect* effect) diff --git a/src/melee/ef/eflib.h b/src/melee/ef/eflib.h index c0c0b2ea51..8ab076235d 100644 --- a/src/melee/ef/eflib.h +++ b/src/melee/ef/eflib.h @@ -72,7 +72,7 @@ STATIC_ASSERT(sizeof(_struct_efLib_80458EE0) == 0x8); /* 05FCD8 */ Effect* efLib_8005FCD8(int arg0, HSD_GObj* gobj, HSD_JObj* jobj, Vec3* vec); -extern HSD_JObj* efLib_80458EE0[0x10]; +extern _struct_efLib_80458EE0 efLib_80458EE0[0x10]; extern _struct_efLib_80458EE0 efLib_80458F60[0x8]; #endif diff --git a/src/melee/ef/efsync.c b/src/melee/ef/efsync.c index b7cf17ed96..519d82dd92 100644 --- a/src/melee/ef/efsync.c +++ b/src/melee/ef/efsync.c @@ -21,7 +21,6 @@ #include "ft/inlines.h" extern struct ef_Symbols efAsync_803C025C[51]; -extern HSD_JObj* efLib_80458EE0[16]; extern s32 efLib_804D64E8; extern s32 efLib_804D64F0; @@ -656,7 +655,7 @@ void* efSync_Spawn(s32 arg_gfx_id, HSD_GObj* arg_gobj, ...) cnt = efLib_804D64F0 - 1; efLib_804D64F0 = cnt; // efLib_804D64F0--; - HSD_JObjAnimAll((efLib_80458EE0[cnt])); + HSD_JObjAnimAll(((HSD_JObj**) &efLib_80458EE0)[cnt]); // HSD_JObjAnimAll((efLib_80458EE0[efLib_804D64F0].unk0)); } From aa6981bf14096bee9a0db6f46f4b0e8f6b388d6c Mon Sep 17 00:00:00 2001 From: Robin Avery Date: Sun, 15 Mar 2026 15:59:45 -0400 Subject: [PATCH 7/8] Run `ninja apply` --- config/GALE01/symbols.txt | 75 ++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/config/GALE01/symbols.txt b/config/GALE01/symbols.txt index d419c9f30c..3ccd44d7c6 100644 --- a/config/GALE01/symbols.txt +++ b/config/GALE01/symbols.txt @@ -11737,8 +11737,8 @@ grBattle_8021A3BC = .text:0x8021A3BC; // type:function size:0x250 scope:local grBattle_8021A60C = .text:0x8021A60C; // type:function size:0x4 scope:local grBattle_OnTouchLine = .text:0x8021A610; // type:function size:0x8 scope:local grBattle_OnCheckShadowRender = .text:0x8021A618; // type:function size:0x8 scope:local -grLast_OnDemoInit = .text:0x8021A620; // type:function size:0x120 scope:global -grLast_OnInit = .text:0x8021A740; // type:function size:0x84 scope:global +grLast_OnDemoInit = .text:0x8021A620; // type:function size:0x120 scope:local +grLast_OnInit = .text:0x8021A740; // type:function size:0x84 scope:local grLast_OnLoad = .text:0x8021A7C4; // type:function size:0x4 scope:local grLast_OnStart = .text:0x8021A7C8; // type:function size:0x24 scope:local grLast_8021A7EC = .text:0x8021A7EC; // type:function size:0x8 scope:global @@ -11791,8 +11791,8 @@ grLast_8021C40C = .text:0x8021C40C; // type:function size:0xF4 scope:global grLast_8021C500 = .text:0x8021C500; // type:function size:0x140 scope:global grLast_8021C640 = .text:0x8021C640; // type:function size:0x6C scope:global grLast_8021C6AC = .text:0x8021C6AC; // type:function size:0x94 scope:global -grLast_OnTouchLine = .text:0x8021C740; // type:function size:0x8 scope:global -grLast_OnCheckShadowRender = .text:0x8021C748; // type:function size:0x8 scope:global +grLast_OnTouchLine = .text:0x8021C740; // type:function size:0x8 scope:local +grLast_OnCheckShadowRender = .text:0x8021C748; // type:function size:0x8 scope:local grHomeRun_8021C750 = .text:0x8021C750; // type:function size:0x4 scope:global grHomeRun_8021C754 = .text:0x8021C754; // type:function size:0xA8 scope:global grHomeRun_8021C7FC = .text:0x8021C7FC; // type:function size:0x4 scope:global @@ -12273,8 +12273,8 @@ grTPurin_802234D4 = .text:0x802234D4; // type:function size:0x20 scope:global grTPurin_802234F4 = .text:0x802234F4; // type:function size:0x4 scope:global grTPurin_802234F8 = .text:0x802234F8; // type:function size:0x80 scope:global grTPurin_80223578 = .text:0x80223578; // type:function size:0x8 scope:global -grTSamus_OnDemoInit = .text:0x80223580; // type:function size:0x4 scope:global -grTSamus_OnInit = .text:0x80223584; // type:function size:0x70 scope:global +grTSamus_OnDemoInit = .text:0x80223580; // type:function size:0x4 scope:local +grTSamus_OnInit = .text:0x80223584; // type:function size:0x70 scope:local grTSamus_OnLoad = .text:0x802235F4; // type:function size:0x4 scope:local grTSamus_OnStart = .text:0x802235F8; // type:function size:0x24 scope:local grTSamus_8022361C = .text:0x8022361C; // type:function size:0x8 scope:global @@ -12291,10 +12291,10 @@ grTSamus_802237D8 = .text:0x802237D8; // type:function size:0x50 scope:global grTSamus_80223828 = .text:0x80223828; // type:function size:0x8 scope:global grTSamus_80223830 = .text:0x80223830; // type:function size:0x20 scope:global grTSamus_80223850 = .text:0x80223850; // type:function size:0x4 scope:global -grTSamus_OnTouchLine = .text:0x80223854; // type:function size:0x8 scope:global -grTSamus_OnCheckShadowRender = .text:0x8022385C; // type:function size:0x8 scope:global -grTSeak_OnDemoInit = .text:0x80223864; // type:function size:0x4 scope:global -grTSeak_OnInit = .text:0x80223868; // type:function size:0x70 scope:global +grTSamus_OnTouchLine = .text:0x80223854; // type:function size:0x8 scope:local +grTSamus_OnCheckShadowRender = .text:0x8022385C; // type:function size:0x8 scope:local +grTSeak_OnDemoInit = .text:0x80223864; // type:function size:0x4 scope:local +grTSeak_OnInit = .text:0x80223868; // type:function size:0x70 scope:local grTseak_OnLoad = .text:0x802238D8; // type:function size:0x4 scope:local grTseak_OnStart = .text:0x802238DC; // type:function size:0x24 scope:local grTSeak_80223900 = .text:0x80223900; // type:function size:0x8 scope:global @@ -12311,8 +12311,8 @@ grTSeak_80223ABC = .text:0x80223ABC; // type:function size:0x50 scope:global grTSeak_80223B0C = .text:0x80223B0C; // type:function size:0x8 scope:global grTSeak_80223B14 = .text:0x80223B14; // type:function size:0x20 scope:global grTSeak_80223B34 = .text:0x80223B34; // type:function size:0x4 scope:global -grTSeak_OnTouchLine = .text:0x80223B38; // type:function size:0x8 scope:global -grTSeak_OnCheckShadowRender = .text:0x80223B40; // type:function size:0x8 scope:global +grTSeak_OnTouchLine = .text:0x80223B38; // type:function size:0x8 scope:local +grTSeak_OnCheckShadowRender = .text:0x80223B40; // type:function size:0x8 scope:local grTYoshi_OnDemoInit = .text:0x80223B48; // type:function size:0x4 scope:local grTYoshi_OnInit = .text:0x80223B4C; // type:function size:0x70 scope:local grTYoshi_OnLoad = .text:0x80223BBC; // type:function size:0x4 scope:local @@ -20720,17 +20720,19 @@ mpLib_803BF728 = .data:0x803BF728; // type:object size:0x10 scope:global mpLib_803BF738 = .data:0x803BF738; // type:object size:0x28 scope:global mpLib_803BF760 = .data:0x803BF760; // type:object size:0x30 scope:global mpIsland_803BF790 = .data:0x803BF790; // type:object size:0xB scope:global data:string -efLib_803BF7A0 = .data:0x803BF7A0; // type:object size:0x15 scope:local align:4 data:string -efLib_803BF7B8 = .data:0x803BF7B8; // type:object size:0x1F scope:local align:4 data:string -efLib_803BF7D8 = .data:0x803BF7D8; // type:object size:0x17 scope:local align:4 data:string -efLib_803BF7F0 = .data:0x803BF7F0; // type:object size:0x11 scope:local align:4 data:string -efLib_803BF804 = .data:0x803BF804; // type:object size:0xA scope:local align:4 data:string +@341 = .data:0x803BF7A0; // type:object size:0x15 scope:local align:4 data:string +...data.0 = .data:0x803BF7A0; // type:label scope:local +@359 = .data:0x803BF7B8; // type:object size:0x1F scope:local align:4 data:string +@467 = .data:0x803BF7D8; // type:object size:0x17 scope:local align:4 data:string +@470 = .data:0x803BF7F0; // type:object size:0x11 scope:local align:4 data:string +@643 = .data:0x803BF804; // type:object size:0xA scope:local align:4 data:string lbl_803BF810 = .data:0x803BF810; // type:object size:0xC scope:global align:4 -efLib_803BF81C = .data:0x803BF81C; // type:object size:0x25 scope:local data:string +@1118 = .data:0x803BF81C; // type:object size:0x25 scope:local data:string efSync_803BF848 = .data:0x803BF848; // type:object size:0x25 scope:global data:string jumptable_803BF870 = .data:0x803BF870; // type:object size:0x160 scope:local ef_803BF9D0 = .data:0x803BF9D0; // type:object size:0x25 scope:local data:string -jumptable_803BF9F8 = .data:0x803BF9F8; // type:object size:0x104 scope:local +...data.0 = .data:0x803BF9D0; // type:label scope:local +@737 = .data:0x803BF9F8; // type:object size:0x104 scope:local efAsync_803BFB00 = .data:0x803BFB00; // type:object size:0x25 scope:global data:string jumptable_803BFB28 = .data:0x803BFB28; // type:object size:0x240 scope:local efAsync_803BFD68 = .data:0x803BFD68; // type:object size:0xD scope:global data:string @@ -25421,6 +25423,7 @@ mpLib_80458888 = .bss:0x80458888; // type:object size:0x600 scope:global data:4b mpIsland_80458E88 = .bss:0x80458E88; // type:object size:0x28 scope:global data:4byte efLib_AllocData = .bss:0x80458EB0; // type:object size:0x2C scope:global data:byte efLib_80458EE0 = .bss:0x80458EE0; // type:object size:0x80 scope:global +...bss.0 = .bss:0x80458EE0; // type:label scope:local efLib_80458F60 = .bss:0x80458F60; // type:object size:0x40 scope:global data:4byte efAsync_AllocData = .bss:0x80458FA0; // type:object size:0x2C scope:global fighter_alloc_data = .bss:0x80458FD0; // type:object size:0x2C scope:global @@ -26056,11 +26059,11 @@ mpLib_SpawnVtxIds = .sdata:0x804D397C; // type:object size:0x8 scope:global mpLib_RespawnVtxIds = .sdata:0x804D3984; // type:object size:0xC scope:global mpIsland_804D3990 = .sdata:0x804D3990; // type:object size:0x6 scope:global data:string mpIsland_804D3998 = .sdata:0x804D3998; // type:object size:0x6 scope:global data:string -efLib_804D39A0 = .sdata:0x804D39A0; // type:object size:0x8 scope:local align:4 data:string -efLib_804D39A8 = .sdata:0x804D39A8; // type:object size:0x2 scope:local align:4 data:string -efLib_804D39AC = .sdata:0x804D39AC; // type:object size:0x7 scope:local align:4 data:string -efLib_804D39B4 = .sdata:0x804D39B4; // type:object size:0x5 scope:local align:4 data:string -efLib_804D39BC = .sdata:0x804D39BC; // type:object size:0x6 scope:local align:4 data:string +@342 = .sdata:0x804D39A0; // type:object size:0x8 scope:local align:4 data:string +@343 = .sdata:0x804D39A8; // type:object size:0x2 scope:local align:4 data:string +@420 = .sdata:0x804D39AC; // type:object size:0x7 scope:local align:4 data:string +@421 = .sdata:0x804D39B4; // type:object size:0x5 scope:local align:4 data:string +@1008 = .sdata:0x804D39BC; // type:object size:0x6 scope:local align:4 data:string efSync_804D39C8 = .sdata:0x804D39C8; // type:object size:0x7 scope:global data:string efSync_804D39D0 = .sdata:0x804D39D0; // type:object size:0x5 scope:global data:string ef_804D39D8 = .sdata:0x804D39D8; // type:object size:0x7 scope:local data:string @@ -29171,18 +29174,18 @@ mpLib_804D8150 = .sdata2:0x804D8150; // type:object size:0x8 scope:global data:4 mpIsland_804D8158 = .sdata2:0x804D8158; // type:object size:0x4 scope:global align:4 data:float mpIsland_804D815C = .sdata2:0x804D815C; // type:object size:0x4 scope:global align:4 data:float mpIsland_804D8160 = .sdata2:0x804D8160; // type:object size:0x4 scope:global align:4 data:float -efLib_804D8168 = .sdata2:0x804D8168; // type:object size:0x4 scope:local align:4 data:float -efLib_804D816C = .sdata2:0x804D816C; // type:object size:0x4 scope:local align:4 data:float -efLib_804D8170 = .sdata2:0x804D8170; // type:object size:0x4 scope:local align:4 data:float -efLib_804D8174 = .sdata2:0x804D8174; // type:object size:0x4 scope:local align:4 data:float -efLib_804D8178 = .sdata2:0x804D8178; // type:object size:0x8 scope:local align:8 data:double -efLib_804D8180 = .sdata2:0x804D8180; // type:object size:0x8 scope:local align:8 data:double -efLib_804D8188 = .sdata2:0x804D8188; // type:object size:0x4 scope:local align:4 data:float -efLib_804D818C = .sdata2:0x804D818C; // type:object size:0x4 scope:local align:4 data:float -efLib_804D8190 = .sdata2:0x804D8190; // type:object size:0x4 scope:local align:4 data:float -efLib_804D8194 = .sdata2:0x804D8194; // type:object size:0x4 scope:local align:4 data:float -efLib_804D8198 = .sdata2:0x804D8198; // type:object size:0x4 scope:local align:4 data:float -efLib_804D819C = .sdata2:0x804D819C; // type:object size:0x4 scope:local align:4 data:float +@468 = .sdata2:0x804D8168; // type:object size:0x4 scope:local align:4 data:float +@469 = .sdata2:0x804D816C; // type:object size:0x4 scope:local align:4 data:float +@682 = .sdata2:0x804D8170; // type:object size:0x4 scope:local align:4 data:float +@683 = .sdata2:0x804D8174; // type:object size:0x4 scope:local align:4 data:float +@737 = .sdata2:0x804D8178; // type:object size:0x8 scope:local align:8 data:double +@738 = .sdata2:0x804D8180; // type:object size:0x8 scope:local align:8 data:double +@1119 = .sdata2:0x804D8188; // type:object size:0x4 scope:local align:4 data:float +@1120 = .sdata2:0x804D818C; // type:object size:0x4 scope:local align:4 data:float +@1142 = .sdata2:0x804D8190; // type:object size:0x4 scope:local align:4 data:float +@1291 = .sdata2:0x804D8194; // type:object size:0x4 scope:local align:4 data:float +@1292 = .sdata2:0x804D8198; // type:object size:0x4 scope:local align:4 data:float +@1341 = .sdata2:0x804D819C; // type:object size:0x4 scope:local align:4 data:float efSync_804D81A0 = .sdata2:0x804D81A0; // type:object size:0x4 scope:global align:4 data:float efSync_804D81A8 = .sdata2:0x804D81A8; // type:object size:0x8 scope:global align:8 data:double efSync_804D81B0 = .sdata2:0x804D81B0; // type:object size:0x8 scope:global align:8 data:double From dfedfb8d2858d5d042a1a8a9c85d2a2130ebebbf Mon Sep 17 00:00:00 2001 From: Robin Avery Date: Sun, 15 Mar 2026 16:00:16 -0400 Subject: [PATCH 8/8] Run `clang-format` --- src/melee/ef/ef_061D.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/melee/ef/ef_061D.h b/src/melee/ef/ef_061D.h index e35c1a7668..dd78dc8b60 100644 --- a/src/melee/ef/ef_061D.h +++ b/src/melee/ef/ef_061D.h @@ -6,6 +6,6 @@ #include "baselib/forward.h" /* 061D70 */ void* efSync_SpawnSpecial(s32 gfx_id, HSD_GObj* arg_gobj, - void* vlist); + void* vlist); #endif