diff --git a/include/d/event/d_event_lib.h b/include/d/event/d_event_lib.h index 4594bc142cf..48728cb2e8e 100644 --- a/include/d/event/d_event_lib.h +++ b/include/d/event/d_event_lib.h @@ -37,9 +37,9 @@ struct dEvLib_callback_c { virtual BOOL eventRun() { return TRUE; } virtual BOOL eventEnd() { return TRUE; } - fopAc_ac_c* mActor; - action_class* mAction; - u16 _C; + /* 0x4 */ fopAc_ac_c* mActor; + /* 0x8 */ action_class* mAction; + /* 0xC */ u16 _C; }; #endif /* D_EVENT_D_EVENT_LIB_H */ diff --git a/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h b/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h index 415263beb7a..ea022d331d9 100644 --- a/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h +++ b/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h @@ -1,6 +1,55 @@ #ifndef D_A_OBJ_SWHANG_H #define D_A_OBJ_SWHANG_H -#include "dolphin/types.h" +#include "SSystem/SComponent/c_phase.h" +#include "d/bg/d_bg_s_movebg_actor.h" +#include "d/cc/d_cc_d.h" +#include "d/event/d_event_lib.h" + +class daObjSwHang_c : public dBgS_MoveBgActor { +public: + /* 80101874 */ cXyz getHangPos(); + /* 80CFB9D8 */ void initBaseMtx(); + /* 80CFBA60 */ void setBaseMtx(); + /* 80CFBDD0 */ void create1st(); + /* 80CFC04C */ void calcHangPos(); + /* 80CFC114 */ void checkDown(); + /* 80CFC194 */ void changeOnStatus(); + /* 80CFC1F4 */ void changeOffStatus(); + /* 80CFC4C4 */ void action(); + /* 80CFC550 */ void checkDownSw(); + /* 80CFC698 */ void init_modeOffWait(); + /* 80CFC6AC */ void modeOffWait(); + /* 80CFCA34 */ void init_modeOnWait(); + /* 80CFCA40 */ void modeOnWait(); + /* 80CFCCE0 */ void eventStart(); + /* 80CFD034 */ ~daObjSwHang_c(); + + /* 80CFBCB8 */ virtual int CreateHeap(); + /* 80CFBAC8 */ virtual int Create(); + /* 80CFC254 */ virtual int Execute(f32 (**)[3][4]); + /* 80CFCD04 */ virtual int Draw(); + /* 80CFCD98 */ virtual int Delete(); + + /* 0x5A0 */ dEvLib_callback_c field_0x5a0; + /* 0x5B0 */ request_of_phase_process_class mPhase; + /* 0x5B8 */ J3DModel* mpModel; + /* 0x5BC */ dCcD_Stts mCcStts; + /* 0x5F8 */ dCcD_Sph mCcSph; + /* 0x730 */ u8 field_0x730; + /* 0x731 */ u8 mType; + /* 0x734 */ dBgW* mpBgW; + /* 0x738 */ Mtx field_0x738; + /* 0x768 */ int mTotteJointNo; + /* 0x76C */ f32 mHangLength; + /* 0x770 */ cXyz mHangPos; + /* 0x77C */ u8 mHangPlayer; + /* 0x77D */ u8 field_0x77d; + /* 0x77E */ u8 field_0x77e; + /* 0x780 */ u16 mFlags; + /* 0x784 */ f32 field_0x784; + /* 0x788 */ f32 field_0x788; + /* 0x78C */ s16 field_0x78c; +}; // Size: 0x790 #endif /* D_A_OBJ_SWHANG_H */ diff --git a/libs/JSystem/JKernel/JKRExpHeap.cpp b/libs/JSystem/JKernel/JKRExpHeap.cpp index 91b1e32a9b1..62177a250ca 100644 --- a/libs/JSystem/JKernel/JKRExpHeap.cpp +++ b/libs/JSystem/JKernel/JKRExpHeap.cpp @@ -897,40 +897,7 @@ bool JKRExpHeap::check() { return ok; } -/* ############################################################################################## */ -/* 8039CAF0-8039CAF0 029150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039CC8D = - " attr address: size gid aln prev_ptr nex" - "t_ptr\n"; -SECTION_DEAD static char const* const stringBase_8039CCC4 = "(Used Blocks)\n"; -SECTION_DEAD static char const* const stringBase_8039CCD3 = " NONE\n"; -SECTION_DEAD static char const* const stringBase_8039CCDA = - "xxxxx %08x: -------- --- --- (-------- -------" - "-)\nabort\n"; -SECTION_DEAD static char const* const stringBase_8039CD14 = "%s %08x: %08x %3d %3d (%08x %08x)\n"; -SECTION_DEAD static char const* const stringBase_8039CD39 = " temp"; -SECTION_DEAD static char const* const stringBase_8039CD3F = "alloc"; -SECTION_DEAD static char const* const stringBase_8039CD45 = "(Free Blocks)\n"; -SECTION_DEAD static char const* const stringBase_8039CD54 = " free"; -SECTION_DEAD static char const* const stringBase_8039CD5A = - "%d / %d bytes (%6.2f%%) used (U:%d F:%d)\n"; -#pragma pop - -/* 80455F98-80455FA0 004598 0004+04 2/2 0/0 0/0 .sdata2 @1121 */ -SECTION_SDATA2 static f32 lit_1121[1 + 1 /* padding */] = { - 100.0f, - /* padding */ - 0.0f, -}; - -/* 80455FA0-80455FA8 0045A0 0008+00 2/2 0/0 0/0 .sdata2 @1123 */ -SECTION_SDATA2 static f64 lit_1123 = 4503599627370496.0 /* cast u32 to float */; - /* 802D03B8-802D05CC 2CACF8 0214+00 1/0 0/0 0/0 .text dump__10JKRExpHeapFv */ -// matches with literals -#ifdef NONMATCHING bool JKRExpHeap::dump() { lock(); bool result = check(); @@ -977,20 +944,8 @@ bool JKRExpHeap::dump() { unlock(); return result; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool JKRExpHeap::dump() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/dump__10JKRExpHeapFv.s" -} -#pragma pop -#endif /* 802D05CC-802D0810 2CAF0C 0244+00 1/0 0/0 0/0 .text dump_sort__10JKRExpHeapFv */ -// using r0 instead of r4 -#ifdef NONMATCHING bool JKRExpHeap::dump_sort() { lock(); bool result = check(); @@ -1017,7 +972,8 @@ bool JKRExpHeap::dump_sort() { } if (!block->isValid()) { - JUTReportConsole_f("xxxxx %08x: -------- --- --- (-------- --------)\nabort\n"); + JUTReportConsole_f("xxxxx %08x: -------- --- --- (-------- --------)\nabort\n", + var1); break; } @@ -1050,16 +1006,6 @@ bool JKRExpHeap::dump_sort() { unlock(); return result; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool JKRExpHeap::dump_sort() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/dump_sort__10JKRExpHeapFv.s" -} -#pragma pop -#endif /* 802D0810-802D0830 2CB150 0020+00 4/4 0/0 0/0 .text * initiate__Q210JKRExpHeap9CMemBlockFPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlockUlUcUc */ diff --git a/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.cpp b/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.cpp index 81bd469d310..13d28d60e08 100644 --- a/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.cpp +++ b/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.cpp @@ -4,192 +4,8 @@ // #include "rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct cXyz {}; - -struct mDoMtx_stack_c { - /* 8000CD64 */ void transS(cXyz const&); - /* 8000CD9C */ void transM(f32, f32, f32); - - static u8 now[48]; -}; - -struct fopAc_ac_c { - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daObjSwHang_c { - /* 80CFB9D8 */ void initBaseMtx(); - /* 80CFBA60 */ void setBaseMtx(); - /* 80CFBAC8 */ void Create(); - /* 80CFBCB8 */ void CreateHeap(); - /* 80CFBDD0 */ void create1st(); - /* 80CFC04C */ void calcHangPos(); - /* 80CFC114 */ void checkDown(); - /* 80CFC194 */ void changeOnStatus(); - /* 80CFC1F4 */ void changeOffStatus(); - /* 80CFC254 */ void Execute(f32 (**)[3][4]); - /* 80CFC4C4 */ void action(); - /* 80CFC550 */ void checkDownSw(); - /* 80CFC698 */ void init_modeOffWait(); - /* 80CFC6AC */ void modeOffWait(); - /* 80CFCA34 */ void init_modeOnWait(); - /* 80CFCA40 */ void modeOnWait(); - /* 80CFCCE0 */ void eventStart(); - /* 80CFCD04 */ void Draw(); - /* 80CFCD98 */ void Delete(); - /* 80CFD034 */ ~daObjSwHang_c(); -}; - -struct dVibration_c { - /* 8006FA24 */ void StartShock(int, int, cXyz); -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 800352B0 */ void offSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dEvLib_callback_c { - /* 8004886C */ void eventUpdate(); - /* 80048940 */ void orderEvent(int, int, int); - /* 80CFCFD4 */ ~dEvLib_callback_c(); - /* 80CFD01C */ bool eventStart(); - /* 80CFD024 */ bool eventRun(); - /* 80CFD02C */ bool eventEnd(); -}; - -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcSph {}; - -struct dCcD_Sph { - /* 80084A34 */ void Set(dCcD_SrcSph const&); -}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80CFBFF0 */ ~dCcD_GStts(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800840E4 */ ~dCcD_GObjInf(); - /* 80084460 */ void ChkTgHit(); - /* 800844F8 */ void GetTgHitObj(); -}; - -struct dBgW_Base {}; - -struct dBgW { - /* 8007B970 */ dBgW(); - /* 8007B9C0 */ void Move(); -}; - -struct cBgS_PolyInfo {}; - -struct csXyz {}; - -struct dBgS_MoveBgActor { - /* 80078624 */ dBgS_MoveBgActor(); - /* 800786B0 */ bool IsDelete(); - /* 800786B8 */ bool ToFore(); - /* 800786C0 */ bool ToBack(); - /* 800787BC */ void MoveBGCreate(char const*, int, - void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, - csXyz*, csXyz*), - u32, f32 (*)[3][4]); - /* 800788DC */ void MoveBGDelete(); - /* 80078950 */ void MoveBGExecute(); -}; - -struct dBgS { - /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*); -}; - -struct cM3dGSph { - /* 8026F648 */ void SetC(cXyz const&); - /* 8026F708 */ void SetR(f32); - /* 80CFBF60 */ ~cM3dGSph(); -}; - -struct cM3dGAab { - /* 80CFBFA8 */ ~cM3dGAab(); -}; - -struct cCcD_Obj {}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - -struct cCcD_GStts { - /* 80CFCF8C */ ~cCcD_GStts(); -}; - -struct cBgW_BgId { - /* 802681D4 */ void ChkUsed() const; -}; - -struct cBgD_t {}; - -struct cBgW { - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); -}; - -struct cBgS { - /* 80074250 */ void Release(dBgW_Base*); -}; - -struct JAISoundID {}; - -struct Vec {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JUTNameTab { - /* 802DEAF8 */ void getName(u16) const; -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - -struct J3DModel {}; - -struct J3DJoint {}; // // Forward References: @@ -285,17 +101,11 @@ extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void getName__10JUTNameTabCFUs(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); extern "C" void __ptmf_scall(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void strcmp(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__16dBgS_MoveBgActor[10]; extern "C" extern void* __vt__8dCcD_Sph[36]; extern "C" extern void* __vt__9dCcD_Stts[11]; @@ -303,9 +113,6 @@ extern "C" extern void* __vt__12cCcD_SphAttr[25]; extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; extern "C" extern void* __vt__9cCcD_Stts[8]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" extern u8 data_80CFD4D0[4]; @@ -476,7 +283,7 @@ SECTION_DATA static u8 l_sph_src2[64] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjSwHang_c::Create() { +asm int daObjSwHang_c::Create() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/Create__13daObjSwHang_cFv.s" } @@ -486,7 +293,8 @@ asm void daObjSwHang_c::Create() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjSwHang_c::CreateHeap() { +// asm int daObjSwHang_c::CreateHeap() { +extern "C" asm void CreateHeap__13daObjSwHang_cFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/CreateHeap__13daObjSwHang_cFv.s" } @@ -618,7 +426,8 @@ asm void daObjSwHang_c::create1st() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGSph::~cM3dGSph() { +// asm cM3dGSph::~cM3dGSph() { +extern "C" asm void __dt__8cM3dGSphFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/__dt__8cM3dGSphFv.s" } @@ -628,7 +437,8 @@ asm cM3dGSph::~cM3dGSph() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGAab::~cM3dGAab() { +// asm cM3dGAab::~cM3dGAab() { +extern "C" asm void __dt__8cM3dGAabFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/__dt__8cM3dGAabFv.s" } @@ -638,7 +448,8 @@ asm cM3dGAab::~cM3dGAab() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_GStts::~dCcD_GStts() { +// asm dCcD_GStts::~dCcD_GStts() { +extern "C" asm void __dt__10dCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/__dt__10dCcD_GSttsFv.s" } @@ -720,7 +531,7 @@ COMPILER_STRIP_GATE(0x80CFD250, &lit_4059); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjSwHang_c::Execute(f32 (**param_0)[3][4]) { +asm int daObjSwHang_c::Execute(f32 (**param_0)[3][4]) { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/Execute__13daObjSwHang_cFPPA3_A4_f.s" } @@ -854,7 +665,7 @@ asm void daObjSwHang_c::eventStart() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjSwHang_c::Draw() { +asm int daObjSwHang_c::Draw() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/Draw__13daObjSwHang_cFv.s" } @@ -864,7 +675,7 @@ asm void daObjSwHang_c::Draw() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjSwHang_c::Delete() { +asm int daObjSwHang_c::Delete() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/Delete__13daObjSwHang_cFv.s" } @@ -916,7 +727,8 @@ static asm void daObjSwHang_MoveBGDraw(daObjSwHang_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cCcD_GStts::~cCcD_GStts() { +// asm cCcD_GStts::~cCcD_GStts() { +extern "C" asm void __dt__10cCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/__dt__10cCcD_GSttsFv.s" } @@ -926,7 +738,8 @@ asm cCcD_GStts::~cCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dEvLib_callback_c::~dEvLib_callback_c() { +// asm dEvLib_callback_c::~dEvLib_callback_c() { +extern "C" asm void __dt__17dEvLib_callback_cFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang/__dt__17dEvLib_callback_cFv.s" } @@ -934,17 +747,20 @@ asm dEvLib_callback_c::~dEvLib_callback_c() { /* 80CFD01C-80CFD024 00175C 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventStart() { +// int dEvLib_callback_c::eventStart() { +extern "C" bool eventStart__17dEvLib_callback_cFv() { return true; } /* 80CFD024-80CFD02C 001764 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventRun() { +// int dEvLib_callback_c::eventRun() { +extern "C" bool eventRun__17dEvLib_callback_cFv() { return true; } /* 80CFD02C-80CFD034 00176C 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */ -bool dEvLib_callback_c::eventEnd() { +// int dEvLib_callback_c::eventEnd() { +extern "C" bool eventEnd__17dEvLib_callback_cFv() { return true; } diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index f0f9f14f349..57231ab88c1 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -44,10 +44,6 @@ struct daObj_Sekizoa_c { /* 801312C8 */ void setWolfHowling(); }; -struct daObjSwHang_c { - /* 80101874 */ void getHangPos(); -}; - struct daObjMovebox { struct Act_c { struct Prm_e {}; diff --git a/src/d/a/d_a_alink_hang.inc b/src/d/a/d_a_alink_hang.inc index 986853edb21..9ef2048981a 100644 --- a/src/d/a/d_a_alink_hang.inc +++ b/src/d/a/d_a_alink_hang.inc @@ -1,4 +1,4 @@ -#include "d/a/d_a_alink.h" +#include "rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h" /* 800F9FDC-800F9FFC 0F491C 0020+00 2/2 0/0 0/0 .text getHangMoveAnmSpeed__9daAlink_cFv */ @@ -1414,11 +1414,15 @@ int daAlink_c::procRoofSwitchHang() { } /* 80101874-80101890 0FC1B4 001C+00 2/2 0/0 0/0 .text getHangPos__13daObjSwHang_cFv */ -#pragma push +/* #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjSwHang_c::getHangPos() { +asm cXyz daObjSwHang_c::getHangPos() { nofralloc #include "asm/d/a/d_a_alink/getHangPos__13daObjSwHang_cFv.s" } -#pragma pop \ No newline at end of file +#pragma pop + */ +cXyz daObjSwHang_c::getHangPos() { + return mHangPos; +}