From 678fd4d8f58cb989d24573717d2b4f6eb52c7e78 Mon Sep 17 00:00:00 2001 From: YunataSavior <58997725+YunataSavior@users.noreply.github.com> Date: Fri, 10 Oct 2025 04:56:09 -0700 Subject: [PATCH] obj_mirror_table OK (#2732) --- .../rels/d_a_obj_mirror_table/symbols.txt | 24 ++--- configure.py | 2 +- include/d/actor/d_a_obj_mirror_table.h | 2 +- src/d/actor/d_a_obj_mirror_table.cpp | 90 +++++++++++-------- 4 files changed, 66 insertions(+), 52 deletions(-) diff --git a/config/GZ2E01/rels/d_a_obj_mirror_table/symbols.txt b/config/GZ2E01/rels/d_a_obj_mirror_table/symbols.txt index ecfa94af5e5..84e523b4e14 100644 --- a/config/GZ2E01/rels/d_a_obj_mirror_table/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_mirror_table/symbols.txt @@ -1,20 +1,20 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global _epilog = .text:0x0000002C; // type:function size:0x2C scope:global _unresolved = .text:0x00000058; // type:function size:0x20 scope:global -createSolidHeap__FP10fopAc_ac_c = .text:0x00000078; // type:function size:0x20 scope:global +createSolidHeap__FP10fopAc_ac_c = .text:0x00000078; // type:function size:0x20 scope:local createHeap__18daObjMirrorTable_cFv = .text:0x00000098; // type:function size:0x5FC scope:global __dt__12J3DFrameCtrlFv = .text:0x00000694; // type:function size:0x48 scope:global isSwitch__18daObjMirrorTable_cFv = .text:0x000006DC; // type:function size:0xC4 scope:global -rideCallBack1__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000007A0; // type:function size:0x220 scope:global -rideCallBack2__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000009C0; // type:function size:0x18 scope:global -daObjMirrorTable_Draw__FP18daObjMirrorTable_c = .text:0x000009D8; // type:function size:0x20 scope:global +rideCallBack1__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000007A0; // type:function size:0x220 scope:local +rideCallBack2__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000009C0; // type:function size:0x18 scope:local +daObjMirrorTable_Draw__FP18daObjMirrorTable_c = .text:0x000009D8; // type:function size:0x20 scope:local draw__18daObjMirrorTable_cFv = .text:0x000009F8; // type:function size:0x218 scope:global -daObjMirrorTable_Execute__FP18daObjMirrorTable_c = .text:0x00000C10; // type:function size:0x20 scope:global +daObjMirrorTable_Execute__FP18daObjMirrorTable_c = .text:0x00000C10; // type:function size:0x20 scope:local execute__18daObjMirrorTable_cFv = .text:0x00000C30; // type:function size:0x504 scope:global -daObjMirrorTable_IsDelete__FP18daObjMirrorTable_c = .text:0x00001134; // type:function size:0x8 scope:global -daObjMirrorTable_Delete__FP18daObjMirrorTable_c = .text:0x0000113C; // type:function size:0xD4 scope:global +daObjMirrorTable_IsDelete__FP18daObjMirrorTable_c = .text:0x00001134; // type:function size:0x8 scope:local +daObjMirrorTable_Delete__FP18daObjMirrorTable_c = .text:0x0000113C; // type:function size:0xD4 scope:local __dt__4dBgWFv = .text:0x00001210; // type:function size:0x60 scope:global -daObjMirrorTable_Create__FP10fopAc_ac_c = .text:0x00001270; // type:function size:0x20 scope:global +daObjMirrorTable_Create__FP10fopAc_ac_c = .text:0x00001270; // type:function size:0x20 scope:local create__18daObjMirrorTable_cFv = .text:0x00001290; // type:function size:0xCC scope:global create_init__18daObjMirrorTable_cFv = .text:0x0000135C; // type:function size:0x3D4 scope:global initBaseMtx__18daObjMirrorTable_cFv = .text:0x00001730; // type:function size:0x250 scope:global @@ -22,8 +22,8 @@ cLib_calcTimer__FPSc = .text:0x00001980; // type:function size:0x1C scope:gl _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global ...rodata.0 = .rodata:0x00000000; // type:label scope:local -l_minPos = .rodata:0x00000000; // type:object size:0xC scope:global -l_maxPos = .rodata:0x0000000C; // type:object size:0xC scope:global align:4 data:float +l_minPos = .rodata:0x00000000; // type:object size:0xC scope:local +l_maxPos = .rodata:0x0000000C; // type:object size:0xC scope:local align:4 data:float @3850 = .rodata:0x00000018; // type:object size:0x4 scope:local align:4 data:float @3851 = .rodata:0x0000001C; // type:object size:0x4 scope:local align:4 data:float @3853 = .rodata:0x00000020; // type:object size:0x8 scope:local align:8 data:double @@ -37,7 +37,7 @@ l_maxPos = .rodata:0x0000000C; // type:object size:0xC scope:global align:4 data @4511 = .rodata:0x00000044; // type:object size:0x4 scope:local @4512 = .rodata:0x00000048; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x0000004C; // type:object size:0x11 scope:local data:string_table -l_arcName = .data:0x00000000; // type:object size:0x4 scope:global -l_daObjMirrorTable_Method = .data:0x00000004; // type:object size:0x20 scope:global +l_arcName = .data:0x00000000; // type:object size:0x4 scope:local +l_daObjMirrorTable_Method = .data:0x00000004; // type:object size:0x20 scope:local g_profile_Obj_MirrorTable = .data:0x00000024; // type:object size:0x30 scope:global __vt__12J3DFrameCtrl = .data:0x00000054; // type:object size:0xC scope:global diff --git a/configure.py b/configure.py index 946627a4a35..b300122ca9d 100755 --- a/configure.py +++ b/configure.py @@ -2115,7 +2115,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_mirror_chain"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mirror_sand"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mirror_screw"), - ActorRel(NonMatching, "d_a_obj_mirror_table"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mirror_table"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_msima"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mvstair"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_myogan"), diff --git a/include/d/actor/d_a_obj_mirror_table.h b/include/d/actor/d_a_obj_mirror_table.h index 722c2676c15..6d3229bff4a 100644 --- a/include/d/actor/d_a_obj_mirror_table.h +++ b/include/d/actor/d_a_obj_mirror_table.h @@ -14,7 +14,7 @@ */ class daObjMirrorTable_c : public fopAc_ac_c { public: - /* 80C99938 */ int createHeap(); + /* 80C99938 */ inline int createHeap(); /* 80C99F7C */ inline bool isSwitch(); inline void checkOnPanel(); /* 80C9A298 */ int draw(); diff --git a/src/d/actor/d_a_obj_mirror_table.cpp b/src/d/actor/d_a_obj_mirror_table.cpp index db1f7f6dba3..7afce00f773 100644 --- a/src/d/actor/d_a_obj_mirror_table.cpp +++ b/src/d/actor/d_a_obj_mirror_table.cpp @@ -25,43 +25,50 @@ static int createSolidHeap(fopAc_ac_c* i_this) { return static_cast(i_this)->createHeap(); } -/* 80C99938-80C99F34 000098 05FC+00 1/1 0/0 0/0 .text createHeap__18daObjMirrorTable_cFv - */ -// NONMATCHING error with mirror_res_id calculation +/* 80C99938-80C99F34 000098 05FC+00 1/1 0/0 0/0 .text createHeap__18daObjMirrorTable_cFv */ int daObjMirrorTable_c::createHeap() { - J3DModelData* table_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 21); - mpTableModel = mDoExt_J3DModel__create(table_model_data, 0x80000, 0x11000084); + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 21); + JUT_ASSERT(105, modelData != 0); + mpTableModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); if (mpTableModel == NULL) { return 0; } - /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */ - int mirror_res_id = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354]) ? 13 : 14; - J3DModelData* mirror_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, mirror_res_id); - mpMirrorModel = mDoExt_J3DModel__create(mirror_model_data, 0, 0x11000084); + enum MIRROR_RES_ENUM { + TRUE_RES = 13, + FALSE_RES = 14, + }; + /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */ + int mirror_res_id = dComIfGs_isEventBit(u16(dSv_event_flag_c::saveBitLabels[354])) ? TRUE_RES : FALSE_RES; + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, mirror_res_id); + JUT_ASSERT(114, modelData != 0); + mpMirrorModel = mDoExt_J3DModel__create(modelData, 0, 0x11000084); if (mpMirrorModel == NULL) { return 0; } - J3DAnmTransform* table_up_anm = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 10); + J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 10); + JUT_ASSERT(123, bck != 0); mpTableUpBckAnm = new mDoExt_bckAnm(); f32 rate = isSwitch() ? 1.0f : 0.0f; - if (mpTableUpBckAnm == NULL || !mpTableUpBckAnm->init(table_up_anm, 1, 0, rate, 0, -1, false)) { + if (mpTableUpBckAnm == NULL || !mpTableUpBckAnm->init(bck, 1, 0, rate, 0, -1, false)) { return 0; } if (isSwitch()) { - mpTableUpBckAnm->setFrame(table_up_anm->getFrameMax()); + mpTableUpBckAnm->setFrame(bck->getFrameMax()); } - cBgD_t* table_dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 34); - if (mBgW[0].Set(table_dzb, 1, &mMtx[0])) { + if (mBgW[0].Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, 34), 1, &mMtx[0])) { return 0; } - /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */ - int mirror_dzb_id = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354]) ? 31 : 32; - cBgD_t* mirror_dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcName, mirror_dzb_id); - if (mBgW[1].Set(mirror_dzb, 1, &mMtx[1])) { + enum MIRROR_DZB_ENUM { + TRUE_DZB = 31, + FALSE_DZB = 32, + }; + /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */ + int mirror_dzb_id = dComIfGs_isEventBit(u16(dSv_event_flag_c::saveBitLabels[354])) ? TRUE_DZB : FALSE_DZB; + if (mBgW[1].Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, mirror_dzb_id), 1, &mMtx[1])) { return 0; } @@ -74,53 +81,60 @@ int daObjMirrorTable_c::createHeap() { mpMSquareBckAnm = NULL; mpLightBtkAnm = NULL; - /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */ - if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) { - J3DModelData* stair_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 20); - mpStairModel = mDoExt_J3DModel__create(stair_model_data, 0x80000, 0x11000084); + /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */ + if (dComIfGs_isEventBit(u16(dSv_event_flag_c::saveBitLabels[354]))) { + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 20); + JUT_ASSERT(153, modelData != 0); + mpStairModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - J3DAnmTevRegKey* stair_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 25); + J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 25); + JUT_ASSERT(160, brk != 0); mpStairBrkAnm = new mDoExt_brkAnm(); if (mpStairBrkAnm == NULL || - !mpStairBrkAnm->init(stair_model_data, stair_anm, 1, 0, 1.0f, 0, -1)) + !mpStairBrkAnm->init(modelData, brk, 1, 0, 1.0f, 0, -1)) { return 0; } - cBgD_t* stair_dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 33); - if (mBgW[2].Set(stair_dzb, 1, &mMtx[2])) { + if (mBgW[2].Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, 33), 1, &mMtx[2])) { return 0; } - J3DModelData* panel_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 19); - mpPanelModel = mDoExt_J3DModel__create(panel_model_data, 0x80000, 0x11000084); + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 19); + JUT_ASSERT(173, modelData != 0); + mpPanelModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - J3DModelData* light_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 17); - mpLightModel = mDoExt_J3DModel__create(light_model_data, 0x80000, 0x11000284); + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 17); + JUT_ASSERT(180, modelData != 0); + mpLightModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284); - J3DAnmTextureSRTKey* light_anm = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 28); + J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 28); + JUT_ASSERT(187, btk != 0); mpLightBtkAnm = new mDoExt_btkAnm(); if (mpLightBtkAnm == NULL || - !mpLightBtkAnm->init(light_model_data, light_anm, 1, 0, 1.0f, 0, -1)) + !mpLightBtkAnm->init(modelData, btk, 1, 0, 1.0f, 0, -1)) { return 0; } - J3DModelData* msquare_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 18); - mpMSquareModel = mDoExt_J3DModel__create(msquare_model_data, 0x80000, 0x11000084); + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 18); + JUT_ASSERT(195, modelData != 0); + mpMSquareModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - J3DAnmTevRegKey* msquare_tev_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 24); + brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 24); + JUT_ASSERT(202, brk != 0); mpMSquareBrkAnm = new mDoExt_brkAnm(); if (mpMSquareBrkAnm == NULL || - !mpMSquareBrkAnm->init(msquare_model_data, msquare_tev_anm, 1, 0, 1.0f, 0, -1)) + !mpMSquareBrkAnm->init(modelData, brk, 1, 0, 1.0f, 0, -1)) { return 0; } - J3DAnmTransform* msquare_anm = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 9); + bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 9); + JUT_ASSERT(210, bck != 0); mpMSquareBckAnm = new mDoExt_bckAnm(); if (mpMSquareBckAnm == NULL || - !mpMSquareBckAnm->init(msquare_anm, 1, 0, 1.0f, 0, -1, false)) + !mpMSquareBckAnm->init(bck, 1, 0, 1.0f, 0, -1, false)) { return 0; }