From d369e2908cbe20165b5a2aaf6875807ffcc5da6c Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Sun, 27 Aug 2023 01:39:15 -0700 Subject: [PATCH] obj_master_sword wip, fmobj mostly done, obj_usaku OK, some BG doc (#1897) * obj_master_sword work, fix tag_chgrestart * fmobj mostly done * some bg documentation * d_a_obj_usaku OK * remove asm --- .../daObj_Fmobj_Delete__FP15obj_fmobj_class.s | 21 - .../daObj_Fmobj_Draw__FP15obj_fmobj_class.s | 28 - ...daObj_Fmobj_Execute__FP15obj_fmobj_class.s | 19 - .../useHeapInit__FP10fopAc_ac_c.s | 71 -- .../CreateHeap__18daObjMasterSword_cFv.s | 78 -- ...Back__18daObjMasterSword_cFP10fopAc_ac_c.s | 9 - .../daObjMasterSword_Create__FP10fopAc_ac_c.s | 9 - ...sterSword_Delete__FP18daObjMasterSword_c.s | 11 - ...MasterSword_Draw__FP18daObjMasterSword_c.s | 9 - ...terSword_Execute__FP18daObjMasterSword_c.s | 69 -- .../executeWait__18daObjMasterSword_cFv.s | 70 -- .../initWait__18daObjMasterSword_cFv.s | 23 - .../daObj_Usaku_Create__FP10fopAc_ac_c.s | 82 -- .../daObj_Usaku_Delete__FP15obj_usaku_class.s | 24 - .../daObj_Usaku_Draw__FP15obj_usaku_class.s | 26 - ...daObj_Usaku_Execute__FP15obj_usaku_class.s | 37 - .../useHeapInit__FP10fopAc_ac_c.s | 71 -- .../execute__17daTagChgRestart_cFv.s | 122 --- include/d/bg/d_bg_s_movebg_actor.h | 7 +- include/d/bg/d_bg_w.h | 104 ++- include/f_op/f_op_actor_mng.h | 1 + include/rel/d/a/d_a_bg_obj/d_a_bg_obj.h | 2 +- .../rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.h | 17 +- .../d_a_obj_master_sword.h | 2 +- .../rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.h | 14 +- .../d_a_tag_chgrestart/d_a_tag_chgrestart.h | 2 +- rel/d/a/d_a_bg/d_a_bg.cpp | 2 +- rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp | 34 +- rel/d/a/d_a_dshutter/d_a_dshutter.cpp | 4 +- rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp | 6 +- rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp | 20 +- .../a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp | 4 +- rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp | 237 +++-- rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp | 4 +- .../obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp | 4 +- .../d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp | 6 +- .../d_a_obj_master_sword.cpp | 504 ++++++----- rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp | 4 +- rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp | 4 +- rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp | 12 +- rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp | 303 +++---- rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp | 2 +- .../d_a_tag_chgrestart/d_a_tag_chgrestart.cpp | 105 +-- rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp | 2 +- src/d/bg/d_bg_s.cpp | 142 +-- src/d/bg/d_bg_s_movebg_actor.cpp | 113 ++- src/d/bg/d_bg_w.cpp | 825 +++++++++--------- 47 files changed, 1211 insertions(+), 2054 deletions(-) delete mode 100644 asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Delete__FP15obj_fmobj_class.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Draw__FP15obj_fmobj_class.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Execute__FP15obj_fmobj_class.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/useHeapInit__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/CreateHeap__18daObjMasterSword_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Create__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Delete__FP18daObjMasterSword_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Draw__FP18daObjMasterSword_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Execute__FP18daObjMasterSword_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/executeWait__18daObjMasterSword_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/initWait__18daObjMasterSword_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Create__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Delete__FP15obj_usaku_class.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Draw__FP15obj_usaku_class.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Execute__FP15obj_usaku_class.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/useHeapInit__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart/execute__17daTagChgRestart_cFv.s diff --git a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Delete__FP15obj_fmobj_class.s b/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Delete__FP15obj_fmobj_class.s deleted file mode 100644 index 369e8071bc..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Delete__FP15obj_fmobj_class.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_8057CC8C: -/* 8057CC8C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8057CC90 7C 08 02 A6 */ mflr r0 -/* 8057CC94 90 01 00 14 */ stw r0, 0x14(r1) -/* 8057CC98 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8057CC9C 7C 7F 1B 78 */ mr r31, r3 -/* 8057CCA0 38 7F 05 68 */ addi r3, r31, 0x568 -/* 8057CCA4 3C 80 80 58 */ lis r4, d_a_obj_fmobj__stringBase0@ha /* 0x8057CF74@ha */ -/* 8057CCA8 38 84 CF 74 */ addi r4, r4, d_a_obj_fmobj__stringBase0@l /* 0x8057CF74@l */ -/* 8057CCAC 4B AB 03 5D */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc -/* 8057CCB0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8057CCB4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8057CCB8 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 8057CCBC 80 9F 05 B8 */ lwz r4, 0x5b8(r31) -/* 8057CCC0 4B AF 75 91 */ bl Release__4cBgSFP9dBgW_Base -/* 8057CCC4 38 60 00 01 */ li r3, 1 -/* 8057CCC8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8057CCCC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8057CCD0 7C 08 03 A6 */ mtlr r0 -/* 8057CCD4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8057CCD8 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Draw__FP15obj_fmobj_class.s b/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Draw__FP15obj_fmobj_class.s deleted file mode 100644 index 2438e08baf..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Draw__FP15obj_fmobj_class.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_8057CBD8: -/* 8057CBD8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8057CBDC 7C 08 02 A6 */ mflr r0 -/* 8057CBE0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8057CBE4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8057CBE8 93 C1 00 08 */ stw r30, 8(r1) -/* 8057CBEC 7C 7E 1B 78 */ mr r30, r3 -/* 8057CBF0 83 E3 05 74 */ lwz r31, 0x574(r3) -/* 8057CBF4 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 8057CBF8 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 8057CBFC 38 80 00 40 */ li r4, 0x40 -/* 8057CC00 38 BE 04 D0 */ addi r5, r30, 0x4d0 -/* 8057CC04 38 DE 01 0C */ addi r6, r30, 0x10c -/* 8057CC08 4B C2 6B BD */ bl settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c -/* 8057CC0C 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 8057CC10 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 8057CC14 80 9F 00 04 */ lwz r4, 4(r31) -/* 8057CC18 38 BE 01 0C */ addi r5, r30, 0x10c -/* 8057CC1C 4B C2 81 85 */ bl setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c -/* 8057CC20 7F E3 FB 78 */ mr r3, r31 -/* 8057CC24 4B A9 10 A1 */ bl mDoExt_modelUpdateDL__FP8J3DModel -/* 8057CC28 38 60 00 01 */ li r3, 1 -/* 8057CC2C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8057CC30 83 C1 00 08 */ lwz r30, 8(r1) -/* 8057CC34 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8057CC38 7C 08 03 A6 */ mtlr r0 -/* 8057CC3C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8057CC40 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Execute__FP15obj_fmobj_class.s b/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Execute__FP15obj_fmobj_class.s deleted file mode 100644 index 0b94af8e3a..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Execute__FP15obj_fmobj_class.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_8057CC44: -/* 8057CC44 A8 83 05 78 */ lha r4, 0x578(r3) -/* 8057CC48 38 04 00 01 */ addi r0, r4, 1 -/* 8057CC4C B0 03 05 78 */ sth r0, 0x578(r3) -/* 8057CC50 38 80 00 00 */ li r4, 0 -/* 8057CC54 38 00 00 02 */ li r0, 2 -/* 8057CC58 7C 09 03 A6 */ mtctr r0 -lbl_8057CC5C: -/* 8057CC5C 38 C4 05 7E */ addi r6, r4, 0x57e -/* 8057CC60 7C A3 32 AE */ lhax r5, r3, r6 -/* 8057CC64 2C 05 00 00 */ cmpwi r5, 0 -/* 8057CC68 41 82 00 0C */ beq lbl_8057CC74 -/* 8057CC6C 38 05 FF FF */ addi r0, r5, -1 -/* 8057CC70 7C 03 33 2E */ sthx r0, r3, r6 -lbl_8057CC74: -/* 8057CC74 38 84 00 02 */ addi r4, r4, 2 -/* 8057CC78 42 00 FF E4 */ bdnz lbl_8057CC5C -/* 8057CC7C 38 60 00 01 */ li r3, 1 -/* 8057CC80 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/useHeapInit__FP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/useHeapInit__FP10fopAc_ac_c.s deleted file mode 100644 index 6a6d2df8cc..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/useHeapInit__FP10fopAc_ac_c.s +++ /dev/null @@ -1,71 +0,0 @@ -lbl_8057CCDC: -/* 8057CCDC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8057CCE0 7C 08 02 A6 */ mflr r0 -/* 8057CCE4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8057CCE8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8057CCEC 93 C1 00 08 */ stw r30, 8(r1) -/* 8057CCF0 7C 7F 1B 78 */ mr r31, r3 -/* 8057CCF4 3C 60 80 58 */ lis r3, d_a_obj_fmobj__stringBase0@ha /* 0x8057CF74@ha */ -/* 8057CCF8 38 63 CF 74 */ addi r3, r3, d_a_obj_fmobj__stringBase0@l /* 0x8057CF74@l */ -/* 8057CCFC 38 80 00 04 */ li r4, 4 -/* 8057CD00 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8057CD04 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8057CD08 3F C5 00 02 */ addis r30, r5, 2 -/* 8057CD0C 3B DE C2 F8 */ addi r30, r30, -15624 -/* 8057CD10 7F C5 F3 78 */ mr r5, r30 -/* 8057CD14 38 C0 00 80 */ li r6, 0x80 -/* 8057CD18 4B AB F5 D5 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 8057CD1C 3C 80 00 08 */ lis r4, 8 -/* 8057CD20 3C A0 11 00 */ lis r5, 0x1100 /* 0x11000084@ha */ -/* 8057CD24 38 A5 00 84 */ addi r5, r5, 0x0084 /* 0x11000084@l */ -/* 8057CD28 4B A9 7F 2D */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl -/* 8057CD2C 90 7F 05 74 */ stw r3, 0x574(r31) -/* 8057CD30 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 8057CD34 28 00 00 00 */ cmplwi r0, 0 -/* 8057CD38 40 82 00 0C */ bne lbl_8057CD44 -/* 8057CD3C 38 60 00 00 */ li r3, 0 -/* 8057CD40 48 00 00 88 */ b lbl_8057CDC8 -lbl_8057CD44: -/* 8057CD44 38 60 00 C0 */ li r3, 0xc0 -/* 8057CD48 4B D5 1F 05 */ bl __nw__FUl -/* 8057CD4C 7C 60 1B 79 */ or. r0, r3, r3 -/* 8057CD50 41 82 00 0C */ beq lbl_8057CD5C -/* 8057CD54 4B AF EC 1D */ bl __ct__4dBgWFv -/* 8057CD58 7C 60 1B 78 */ mr r0, r3 -lbl_8057CD5C: -/* 8057CD5C 90 1F 05 B8 */ stw r0, 0x5b8(r31) -/* 8057CD60 80 1F 05 B8 */ lwz r0, 0x5b8(r31) -/* 8057CD64 28 00 00 00 */ cmplwi r0, 0 -/* 8057CD68 40 82 00 0C */ bne lbl_8057CD74 -/* 8057CD6C 38 60 00 00 */ li r3, 0 -/* 8057CD70 48 00 00 58 */ b lbl_8057CDC8 -lbl_8057CD74: -/* 8057CD74 3C 60 80 58 */ lis r3, d_a_obj_fmobj__stringBase0@ha /* 0x8057CF74@ha */ -/* 8057CD78 38 63 CF 74 */ addi r3, r3, d_a_obj_fmobj__stringBase0@l /* 0x8057CF74@l */ -/* 8057CD7C 38 80 00 07 */ li r4, 7 -/* 8057CD80 7F C5 F3 78 */ mr r5, r30 -/* 8057CD84 38 C0 00 80 */ li r6, 0x80 -/* 8057CD88 4B AB F5 65 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 8057CD8C 7C 64 1B 78 */ mr r4, r3 -/* 8057CD90 80 7F 05 B8 */ lwz r3, 0x5b8(r31) -/* 8057CD94 38 A0 00 01 */ li r5, 1 -/* 8057CD98 38 DF 05 88 */ addi r6, r31, 0x588 -/* 8057CD9C 4B AF D1 9D */ bl Set__4cBgWFP6cBgD_tUlPA3_A4_f -/* 8057CDA0 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8057CDA4 28 00 00 01 */ cmplwi r0, 1 -/* 8057CDA8 40 82 00 0C */ bne lbl_8057CDB4 -/* 8057CDAC 38 60 00 00 */ li r3, 0 -/* 8057CDB0 48 00 00 18 */ b lbl_8057CDC8 -lbl_8057CDB4: -/* 8057CDB4 3C 60 80 07 */ lis r3, dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz@ha /* 0x80075A24@ha */ -/* 8057CDB8 38 03 5A 24 */ addi r0, r3, dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz@l /* 0x80075A24@l */ -/* 8057CDBC 80 7F 05 B8 */ lwz r3, 0x5b8(r31) -/* 8057CDC0 90 03 00 B0 */ stw r0, 0xb0(r3) -/* 8057CDC4 38 60 00 01 */ li r3, 1 -lbl_8057CDC8: -/* 8057CDC8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8057CDCC 83 C1 00 08 */ lwz r30, 8(r1) -/* 8057CDD0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8057CDD4 7C 08 03 A6 */ mtlr r0 -/* 8057CDD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8057CDDC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/CreateHeap__18daObjMasterSword_cFv.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/CreateHeap__18daObjMasterSword_cFv.s deleted file mode 100644 index 6c053d8914..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/CreateHeap__18daObjMasterSword_cFv.s +++ /dev/null @@ -1,78 +0,0 @@ -lbl_80C90C70: -/* 80C90C70 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80C90C74 7C 08 02 A6 */ mflr r0 -/* 80C90C78 90 01 00 24 */ stw r0, 0x24(r1) -/* 80C90C7C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80C90C80 4B 6D 15 5D */ bl _savegpr_29 -/* 80C90C84 7C 7F 1B 78 */ mr r31, r3 -/* 80C90C88 3C 60 80 C9 */ lis r3, l_arcName@ha /* 0x80C9199C@ha */ -/* 80C90C8C 38 63 19 9C */ addi r3, r3, l_arcName@l /* 0x80C9199C@l */ -/* 80C90C90 80 63 00 00 */ lwz r3, 0(r3) -/* 80C90C94 38 80 00 05 */ li r4, 5 -/* 80C90C98 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80C90C9C 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80C90CA0 3F A5 00 02 */ addis r29, r5, 2 -/* 80C90CA4 3B BD C2 F8 */ addi r29, r29, -15624 -/* 80C90CA8 7F A5 EB 78 */ mr r5, r29 -/* 80C90CAC 38 C0 00 80 */ li r6, 0x80 -/* 80C90CB0 4B 3A B6 3D */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80C90CB4 7C 7E 1B 78 */ mr r30, r3 -/* 80C90CB8 3C 80 00 08 */ lis r4, 8 -/* 80C90CBC 3C A0 11 00 */ lis r5, 0x1100 /* 0x11000284@ha */ -/* 80C90CC0 38 A5 02 84 */ addi r5, r5, 0x0284 /* 0x11000284@l */ -/* 80C90CC4 4B 38 3F 91 */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl -/* 80C90CC8 90 7F 05 68 */ stw r3, 0x568(r31) -/* 80C90CCC 80 1F 05 68 */ lwz r0, 0x568(r31) -/* 80C90CD0 28 00 00 00 */ cmplwi r0, 0 -/* 80C90CD4 40 82 00 0C */ bne lbl_80C90CE0 -/* 80C90CD8 38 60 00 00 */ li r3, 0 -/* 80C90CDC 48 00 00 A4 */ b lbl_80C90D80 -lbl_80C90CE0: -/* 80C90CE0 3C 60 80 C9 */ lis r3, l_arcName@ha /* 0x80C9199C@ha */ -/* 80C90CE4 38 63 19 9C */ addi r3, r3, l_arcName@l /* 0x80C9199C@l */ -/* 80C90CE8 80 63 00 00 */ lwz r3, 0(r3) -/* 80C90CEC 38 80 00 0B */ li r4, 0xb -/* 80C90CF0 7F A5 EB 78 */ mr r5, r29 -/* 80C90CF4 38 C0 00 80 */ li r6, 0x80 -/* 80C90CF8 4B 3A B5 F5 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80C90CFC 7C 65 1B 78 */ mr r5, r3 -/* 80C90D00 38 7F 05 74 */ addi r3, r31, 0x574 -/* 80C90D04 38 9E 00 58 */ addi r4, r30, 0x58 -/* 80C90D08 38 C0 00 01 */ li r6, 1 -/* 80C90D0C 38 E0 00 02 */ li r7, 2 -/* 80C90D10 3D 00 80 C9 */ lis r8, lit_3759@ha /* 0x80C91950@ha */ -/* 80C90D14 C0 28 19 50 */ lfs f1, lit_3759@l(r8) /* 0x80C91950@l */ -/* 80C90D18 39 00 00 00 */ li r8, 0 -/* 80C90D1C 39 20 FF FF */ li r9, -1 -/* 80C90D20 4B 37 C9 1D */ bl init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss -/* 80C90D24 2C 03 00 00 */ cmpwi r3, 0 -/* 80C90D28 40 82 00 0C */ bne lbl_80C90D34 -/* 80C90D2C 38 60 00 00 */ li r3, 0 -/* 80C90D30 48 00 00 50 */ b lbl_80C90D80 -lbl_80C90D34: -/* 80C90D34 3C 60 80 C9 */ lis r3, l_arcName@ha /* 0x80C9199C@ha */ -/* 80C90D38 38 63 19 9C */ addi r3, r3, l_arcName@l /* 0x80C9199C@l */ -/* 80C90D3C 80 63 00 00 */ lwz r3, 0(r3) -/* 80C90D40 38 80 00 08 */ li r4, 8 -/* 80C90D44 7F A5 EB 78 */ mr r5, r29 -/* 80C90D48 38 C0 00 80 */ li r6, 0x80 -/* 80C90D4C 4B 3A B5 A1 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80C90D50 7C 65 1B 78 */ mr r5, r3 -/* 80C90D54 38 7F 05 8C */ addi r3, r31, 0x58c -/* 80C90D58 38 9E 00 58 */ addi r4, r30, 0x58 -/* 80C90D5C 38 C0 00 01 */ li r6, 1 -/* 80C90D60 38 E0 00 02 */ li r7, 2 -/* 80C90D64 3D 00 80 C9 */ lis r8, lit_3759@ha /* 0x80C91950@ha */ -/* 80C90D68 C0 28 19 50 */ lfs f1, lit_3759@l(r8) /* 0x80C91950@l */ -/* 80C90D6C 39 00 00 00 */ li r8, 0 -/* 80C90D70 39 20 FF FF */ li r9, -1 -/* 80C90D74 4B 37 C9 99 */ bl init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss -/* 80C90D78 30 03 FF FF */ addic r0, r3, -1 -/* 80C90D7C 7C 60 19 10 */ subfe r3, r0, r3 -lbl_80C90D80: -/* 80C90D80 39 61 00 20 */ addi r11, r1, 0x20 -/* 80C90D84 4B 6D 14 A5 */ bl _restgpr_29 -/* 80C90D88 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80C90D8C 7C 08 03 A6 */ mtlr r0 -/* 80C90D90 38 21 00 20 */ addi r1, r1, 0x20 -/* 80C90D94 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c.s deleted file mode 100644 index 2ef171a7f0..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80C90C50: -/* 80C90C50 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80C90C54 7C 08 02 A6 */ mflr r0 -/* 80C90C58 90 01 00 14 */ stw r0, 0x14(r1) -/* 80C90C5C 48 00 00 15 */ bl CreateHeap__18daObjMasterSword_cFv -/* 80C90C60 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80C90C64 7C 08 03 A6 */ mtlr r0 -/* 80C90C68 38 21 00 10 */ addi r1, r1, 0x10 -/* 80C90C6C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Create__FP10fopAc_ac_c.s deleted file mode 100644 index b3a8157c82..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80C90D98: -/* 80C90D98 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80C90D9C 7C 08 02 A6 */ mflr r0 -/* 80C90DA0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80C90DA4 48 00 00 15 */ bl create__18daObjMasterSword_cFv -/* 80C90DA8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80C90DAC 7C 08 03 A6 */ mtlr r0 -/* 80C90DB0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80C90DB4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Delete__FP18daObjMasterSword_c.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Delete__FP18daObjMasterSword_c.s deleted file mode 100644 index 07d4dbddd0..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Delete__FP18daObjMasterSword_c.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80C91420: -/* 80C91420 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80C91424 7C 08 02 A6 */ mflr r0 -/* 80C91428 90 01 00 14 */ stw r0, 0x14(r1) -/* 80C9142C 38 80 FF FF */ li r4, -1 -/* 80C91430 48 00 00 19 */ bl __dt__18daObjMasterSword_cFv -/* 80C91434 38 60 00 01 */ li r3, 1 -/* 80C91438 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80C9143C 7C 08 03 A6 */ mtlr r0 -/* 80C91440 38 21 00 10 */ addi r1, r1, 0x10 -/* 80C91444 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Draw__FP18daObjMasterSword_c.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Draw__FP18daObjMasterSword_c.s deleted file mode 100644 index 96796686a4..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Draw__FP18daObjMasterSword_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80C916F4: -/* 80C916F4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80C916F8 7C 08 02 A6 */ mflr r0 -/* 80C916FC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80C91700 48 00 00 15 */ bl draw__18daObjMasterSword_cFv -/* 80C91704 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80C91708 7C 08 03 A6 */ mtlr r0 -/* 80C9170C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80C91710 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Execute__FP18daObjMasterSword_c.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Execute__FP18daObjMasterSword_c.s deleted file mode 100644 index 3fc3943305..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Execute__FP18daObjMasterSword_c.s +++ /dev/null @@ -1,69 +0,0 @@ -lbl_80C915E8: -/* 80C915E8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80C915EC 7C 08 02 A6 */ mflr r0 -/* 80C915F0 90 01 00 24 */ stw r0, 0x24(r1) -/* 80C915F4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80C915F8 7C 7F 1B 78 */ mr r31, r3 -/* 80C915FC 80 83 07 1C */ lwz r4, 0x71c(r3) -/* 80C91600 39 84 00 0C */ addi r12, r4, 0xc -/* 80C91604 4B 6D 0A 81 */ bl __ptmf_scall -/* 80C91608 60 00 00 00 */ nop -/* 80C9160C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80C91610 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80C91614 38 63 23 3C */ addi r3, r3, 0x233c -/* 80C91618 38 9F 05 E0 */ addi r4, r31, 0x5e0 -/* 80C9161C 4B 5D 35 8D */ bl Set__4cCcSFP8cCcD_Obj -/* 80C91620 38 7F 05 74 */ addi r3, r31, 0x574 -/* 80C91624 4B 37 BE 05 */ bl play__14mDoExt_baseAnmFv -/* 80C91628 38 7F 05 8C */ addi r3, r31, 0x58c -/* 80C9162C 4B 37 BD FD */ bl play__14mDoExt_baseAnmFv -/* 80C91630 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80C91634 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80C91638 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 80C9163C 3C 80 80 38 */ lis r4, tempBitLabels__20dSv_event_tmp_flag_c@ha /* 0x803790C0@ha */ -/* 80C91640 38 84 90 C0 */ addi r4, r4, tempBitLabels__20dSv_event_tmp_flag_c@l /* 0x803790C0@l */ -/* 80C91644 A0 84 00 92 */ lhz r4, 0x92(r4) -/* 80C91648 4B 3A 33 75 */ bl isEventBit__11dSv_event_cCFUs -/* 80C9164C 2C 03 00 00 */ cmpwi r3, 0 -/* 80C91650 41 82 00 8C */ beq lbl_80C916DC -/* 80C91654 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80C91658 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80C9165C 38 63 00 CC */ addi r3, r3, 0xcc -/* 80C91660 38 80 00 29 */ li r4, 0x29 -/* 80C91664 4B 3A 27 FD */ bl onFirstBit__21dSv_player_get_item_cFUc -/* 80C91668 38 60 00 29 */ li r3, 0x29 -/* 80C9166C 38 80 00 00 */ li r4, 0 -/* 80C91670 4B 58 CE C1 */ bl dMeter2Info_setSword__FUcb -/* 80C91674 38 60 00 29 */ li r3, 0x29 -/* 80C91678 4B 39 D8 49 */ bl dComIfGs_setSelectEquipSword__FUc -/* 80C9167C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80C91680 38 83 61 C0 */ addi r4, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80C91684 A0 04 00 00 */ lhz r0, 0(r4) -/* 80C91688 C0 44 5D C0 */ lfs f2, 0x5dc0(r4) -/* 80C9168C 3C 60 80 C9 */ lis r3, lit_4030@ha /* 0x80C91960@ha */ -/* 80C91690 C8 23 19 60 */ lfd f1, lit_4030@l(r3) /* 0x80C91960@l */ -/* 80C91694 90 01 00 0C */ stw r0, 0xc(r1) -/* 80C91698 3C 00 43 30 */ lis r0, 0x4330 -/* 80C9169C 90 01 00 08 */ stw r0, 8(r1) -/* 80C916A0 C8 01 00 08 */ lfd f0, 8(r1) -/* 80C916A4 EC 00 08 28 */ fsubs f0, f0, f1 -/* 80C916A8 EC 02 00 2A */ fadds f0, f2, f0 -/* 80C916AC D0 04 5D C0 */ stfs f0, 0x5dc0(r4) -/* 80C916B0 38 00 00 00 */ li r0, 0 -/* 80C916B4 98 04 5E B6 */ stb r0, 0x5eb6(r4) -/* 80C916B8 38 64 07 F0 */ addi r3, r4, 0x7f0 -/* 80C916BC 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80C916C0 54 00 0B FC */ rlwinm r0, r0, 1, 0xf, 0x1e -/* 80C916C4 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 80C916C8 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 80C916CC 7C 84 02 2E */ lhzx r4, r4, r0 -/* 80C916D0 4B 3A 32 BD */ bl onEventBit__11dSv_event_cFUs -/* 80C916D4 7F E3 FB 78 */ mr r3, r31 -/* 80C916D8 4B 38 85 A5 */ bl fopAcM_delete__FP10fopAc_ac_c -lbl_80C916DC: -/* 80C916DC 38 60 00 01 */ li r3, 1 -/* 80C916E0 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80C916E4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80C916E8 7C 08 03 A6 */ mtlr r0 -/* 80C916EC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80C916F0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/executeWait__18daObjMasterSword_cFv.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/executeWait__18daObjMasterSword_cFv.s deleted file mode 100644 index ef806a19a7..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/executeWait__18daObjMasterSword_cFv.s +++ /dev/null @@ -1,70 +0,0 @@ -lbl_80C90B50: -/* 80C90B50 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80C90B54 7C 08 02 A6 */ mflr r0 -/* 80C90B58 90 01 00 24 */ stw r0, 0x24(r1) -/* 80C90B5C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80C90B60 4B 6D 16 71 */ bl _savegpr_26 -/* 80C90B64 7C 7A 1B 78 */ mr r26, r3 -/* 80C90B68 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80C90B6C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80C90B70 80 63 5D AC */ lwz r3, 0x5dac(r3) -/* 80C90B74 7F 44 D3 78 */ mr r4, r26 -/* 80C90B78 81 83 06 28 */ lwz r12, 0x628(r3) -/* 80C90B7C 81 8C 01 D8 */ lwz r12, 0x1d8(r12) -/* 80C90B80 7D 89 03 A6 */ mtctr r12 -/* 80C90B84 4E 80 04 21 */ bctrl -/* 80C90B88 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80C90B8C 41 82 00 70 */ beq lbl_80C90BFC -/* 80C90B90 3B 60 00 00 */ li r27, 0 -/* 80C90B94 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80C90B98 3B A3 61 C0 */ addi r29, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80C90B9C 3B 9D 56 B8 */ addi r28, r29, 0x56b8 -/* 80C90BA0 3B C0 00 08 */ li r30, 8 -/* 80C90BA4 3B E0 00 00 */ li r31, 0 -/* 80C90BA8 48 00 00 48 */ b lbl_80C90BF0 -lbl_80C90BAC: -/* 80C90BAC 7F 83 E3 78 */ mr r3, r28 -/* 80C90BB0 7F 64 DB 78 */ mr r4, r27 -/* 80C90BB4 4B 3E 2B 81 */ bl ActionTarget__12dAttention_cFl -/* 80C90BB8 7C 03 D0 40 */ cmplw r3, r26 -/* 80C90BBC 40 82 00 30 */ bne lbl_80C90BEC -/* 80C90BC0 7F 83 E3 78 */ mr r3, r28 -/* 80C90BC4 4B 3D FC BD */ bl getActionBtnB__12dAttention_cFv -/* 80C90BC8 28 03 00 00 */ cmplwi r3, 0 -/* 80C90BCC 41 82 00 20 */ beq lbl_80C90BEC -/* 80C90BD0 7F 83 E3 78 */ mr r3, r28 -/* 80C90BD4 4B 3D FC AD */ bl getActionBtnB__12dAttention_cFv -/* 80C90BD8 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80C90BDC 28 00 00 04 */ cmplwi r0, 4 -/* 80C90BE0 40 82 00 0C */ bne lbl_80C90BEC -/* 80C90BE4 9B DD 5E 3C */ stb r30, 0x5e3c(r29) -/* 80C90BE8 9B FD 5E 57 */ stb r31, 0x5e57(r29) -lbl_80C90BEC: -/* 80C90BEC 3B 7B 00 01 */ addi r27, r27, 1 -lbl_80C90BF0: -/* 80C90BF0 80 1C 04 30 */ lwz r0, 0x430(r28) -/* 80C90BF4 7C 1B 00 00 */ cmpw r27, r0 -/* 80C90BF8 41 80 FF B4 */ blt lbl_80C90BAC -lbl_80C90BFC: -/* 80C90BFC 80 1A 04 9C */ lwz r0, 0x49c(r26) -/* 80C90C00 54 00 04 A5 */ rlwinm. r0, r0, 0, 0x12, 0x12 -/* 80C90C04 41 82 00 34 */ beq lbl_80C90C38 -/* 80C90C08 38 60 00 2F */ li r3, 0x2f -/* 80C90C0C 38 80 00 00 */ li r4, 0 -/* 80C90C10 4B 58 D8 A1 */ bl dMeter2Info_setCloth__FUcb -/* 80C90C14 7F 43 D3 78 */ mr r3, r26 -/* 80C90C18 80 1A 00 B0 */ lwz r0, 0xb0(r26) -/* 80C90C1C 54 04 86 3E */ rlwinm r4, r0, 0x10, 0x18, 0x1f -/* 80C90C20 38 A0 00 FF */ li r5, 0xff -/* 80C90C24 3C C0 00 01 */ lis r6, 0x0001 /* 0x0000FFFF@ha */ -/* 80C90C28 38 C6 FF FF */ addi r6, r6, 0xFFFF /* 0x0000FFFF@l */ -/* 80C90C2C 38 E0 00 01 */ li r7, 1 -/* 80C90C30 39 00 00 00 */ li r8, 0 -/* 80C90C34 4B 38 AB 81 */ bl fopAcM_orderMapToolEvent__FP10fopAc_ac_cUcsUsUsUs -lbl_80C90C38: -/* 80C90C38 39 61 00 20 */ addi r11, r1, 0x20 -/* 80C90C3C 4B 6D 15 E1 */ bl _restgpr_26 -/* 80C90C40 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80C90C44 7C 08 03 A6 */ mtlr r0 -/* 80C90C48 38 21 00 20 */ addi r1, r1, 0x20 -/* 80C90C4C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/initWait__18daObjMasterSword_cFv.s b/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/initWait__18daObjMasterSword_cFv.s deleted file mode 100644 index 6bb283e434..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/initWait__18daObjMasterSword_cFv.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80C90AF8: -/* 80C90AF8 80 03 05 5C */ lwz r0, 0x55c(r3) -/* 80C90AFC 60 00 00 10 */ ori r0, r0, 0x10 -/* 80C90B00 90 03 05 5C */ stw r0, 0x55c(r3) -/* 80C90B04 C0 03 04 A8 */ lfs f0, 0x4a8(r3) -/* 80C90B08 D0 03 04 D0 */ stfs f0, 0x4d0(r3) -/* 80C90B0C C0 03 04 AC */ lfs f0, 0x4ac(r3) -/* 80C90B10 D0 03 04 D4 */ stfs f0, 0x4d4(r3) -/* 80C90B14 C0 03 04 B0 */ lfs f0, 0x4b0(r3) -/* 80C90B18 D0 03 04 D8 */ stfs f0, 0x4d8(r3) -/* 80C90B1C A8 03 04 B4 */ lha r0, 0x4b4(r3) -/* 80C90B20 B0 03 04 DC */ sth r0, 0x4dc(r3) -/* 80C90B24 A8 03 04 B6 */ lha r0, 0x4b6(r3) -/* 80C90B28 B0 03 04 DE */ sth r0, 0x4de(r3) -/* 80C90B2C A8 03 04 B8 */ lha r0, 0x4b8(r3) -/* 80C90B30 B0 03 04 E0 */ sth r0, 0x4e0(r3) -/* 80C90B34 A8 03 04 B4 */ lha r0, 0x4b4(r3) -/* 80C90B38 B0 03 04 E4 */ sth r0, 0x4e4(r3) -/* 80C90B3C A8 03 04 B6 */ lha r0, 0x4b6(r3) -/* 80C90B40 B0 03 04 E6 */ sth r0, 0x4e6(r3) -/* 80C90B44 A8 03 04 B8 */ lha r0, 0x4b8(r3) -/* 80C90B48 B0 03 04 E8 */ sth r0, 0x4e8(r3) -/* 80C90B4C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Create__FP10fopAc_ac_c.s deleted file mode 100644 index f5619dd21b..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,82 +0,0 @@ -lbl_80D211AC: -/* 80D211AC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80D211B0 7C 08 02 A6 */ mflr r0 -/* 80D211B4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80D211B8 39 61 00 20 */ addi r11, r1, 0x20 -/* 80D211BC 4B 64 10 21 */ bl _savegpr_29 -/* 80D211C0 7C 7E 1B 78 */ mr r30, r3 -/* 80D211C4 3C 80 80 D2 */ lis r4, lit_3744@ha /* 0x80D212DC@ha */ -/* 80D211C8 3B E4 12 DC */ addi r31, r4, lit_3744@l /* 0x80D212DC@l */ -/* 80D211CC 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 80D211D0 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80D211D4 40 82 00 1C */ bne lbl_80D211F0 -/* 80D211D8 28 1E 00 00 */ cmplwi r30, 0 -/* 80D211DC 41 82 00 08 */ beq lbl_80D211E4 -/* 80D211E0 4B 2F 79 85 */ bl __ct__10fopAc_ac_cFv -lbl_80D211E4: -/* 80D211E4 80 1E 04 A0 */ lwz r0, 0x4a0(r30) -/* 80D211E8 60 00 00 08 */ ori r0, r0, 8 -/* 80D211EC 90 1E 04 A0 */ stw r0, 0x4a0(r30) -lbl_80D211F0: -/* 80D211F0 38 7E 05 68 */ addi r3, r30, 0x568 -/* 80D211F4 3C 80 80 D2 */ lis r4, d_a_obj_usaku__stringBase0@ha /* 0x80D212EC@ha */ -/* 80D211F8 38 84 12 EC */ addi r4, r4, d_a_obj_usaku__stringBase0@l /* 0x80D212EC@l */ -/* 80D211FC 4B 30 BC C1 */ bl dComIfG_resLoad__FP30request_of_phase_process_classPCc -/* 80D21200 7C 7D 1B 78 */ mr r29, r3 -/* 80D21204 2C 1D 00 04 */ cmpwi r29, 4 -/* 80D21208 40 82 00 B0 */ bne lbl_80D212B8 -/* 80D2120C 80 1E 00 B0 */ lwz r0, 0xb0(r30) -/* 80D21210 98 1E 05 70 */ stb r0, 0x570(r30) -/* 80D21214 88 1E 05 70 */ lbz r0, 0x570(r30) -/* 80D21218 28 00 00 FF */ cmplwi r0, 0xff -/* 80D2121C 40 82 00 0C */ bne lbl_80D21228 -/* 80D21220 38 00 00 00 */ li r0, 0 -/* 80D21224 98 1E 05 70 */ stb r0, 0x570(r30) -lbl_80D21228: -/* 80D21228 7F C3 F3 78 */ mr r3, r30 -/* 80D2122C 3C 80 80 D2 */ lis r4, useHeapInit__FP10fopAc_ac_c@ha /* 0x80D210A8@ha */ -/* 80D21230 38 84 10 A8 */ addi r4, r4, useHeapInit__FP10fopAc_ac_c@l /* 0x80D210A8@l */ -/* 80D21234 38 A0 0C 60 */ li r5, 0xc60 -/* 80D21238 4B 2F 92 79 */ bl fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl -/* 80D2123C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80D21240 40 82 00 0C */ bne lbl_80D2124C -/* 80D21244 38 60 00 05 */ li r3, 5 -/* 80D21248 48 00 00 74 */ b lbl_80D212BC -lbl_80D2124C: -/* 80D2124C 80 9E 05 B0 */ lwz r4, 0x5b0(r30) -/* 80D21250 28 04 00 00 */ cmplwi r4, 0 -/* 80D21254 41 82 00 28 */ beq lbl_80D2127C -/* 80D21258 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D2125C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D21260 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 80D21264 7F C5 F3 78 */ mr r5, r30 -/* 80D21268 4B 35 37 A1 */ bl Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c -/* 80D2126C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80D21270 41 82 00 0C */ beq lbl_80D2127C -/* 80D21274 38 60 00 05 */ li r3, 5 -/* 80D21278 48 00 00 44 */ b lbl_80D212BC -lbl_80D2127C: -/* 80D2127C 80 7E 05 74 */ lwz r3, 0x574(r30) -/* 80D21280 38 03 00 24 */ addi r0, r3, 0x24 -/* 80D21284 90 1E 05 04 */ stw r0, 0x504(r30) -/* 80D21288 7F C3 F3 78 */ mr r3, r30 -/* 80D2128C C0 3F 00 00 */ lfs f1, 0(r31) -/* 80D21290 C0 5F 00 04 */ lfs f2, 4(r31) -/* 80D21294 FC 60 08 90 */ fmr f3, f1 -/* 80D21298 4B 2F 92 91 */ bl fopAcM_SetMin__FP10fopAc_ac_cfff -/* 80D2129C 7F C3 F3 78 */ mr r3, r30 -/* 80D212A0 C0 3F 00 08 */ lfs f1, 8(r31) -/* 80D212A4 C0 5F 00 0C */ lfs f2, 0xc(r31) -/* 80D212A8 FC 60 08 90 */ fmr f3, f1 -/* 80D212AC 4B 2F 92 8D */ bl fopAcM_SetMax__FP10fopAc_ac_cfff -/* 80D212B0 7F C3 F3 78 */ mr r3, r30 -/* 80D212B4 4B FF FD 09 */ bl daObj_Usaku_Execute__FP15obj_usaku_class -lbl_80D212B8: -/* 80D212B8 7F A3 EB 78 */ mr r3, r29 -lbl_80D212BC: -/* 80D212BC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80D212C0 4B 64 0F 69 */ bl _restgpr_29 -/* 80D212C4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80D212C8 7C 08 03 A6 */ mtlr r0 -/* 80D212CC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80D212D0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Delete__FP15obj_usaku_class.s b/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Delete__FP15obj_usaku_class.s deleted file mode 100644 index fe68768de8..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Delete__FP15obj_usaku_class.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80D21050: -/* 80D21050 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D21054 7C 08 02 A6 */ mflr r0 -/* 80D21058 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D2105C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80D21060 7C 7F 1B 78 */ mr r31, r3 -/* 80D21064 38 7F 05 68 */ addi r3, r31, 0x568 -/* 80D21068 3C 80 80 D2 */ lis r4, d_a_obj_usaku__stringBase0@ha /* 0x80D212EC@ha */ -/* 80D2106C 38 84 12 EC */ addi r4, r4, d_a_obj_usaku__stringBase0@l /* 0x80D212EC@l */ -/* 80D21070 4B 30 BF 99 */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc -/* 80D21074 80 9F 05 B0 */ lwz r4, 0x5b0(r31) -/* 80D21078 28 04 00 00 */ cmplwi r4, 0 -/* 80D2107C 41 82 00 14 */ beq lbl_80D21090 -/* 80D21080 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D21084 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D21088 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 80D2108C 4B 35 31 C5 */ bl Release__4cBgSFP9dBgW_Base -lbl_80D21090: -/* 80D21090 38 60 00 01 */ li r3, 1 -/* 80D21094 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80D21098 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D2109C 7C 08 03 A6 */ mtlr r0 -/* 80D210A0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D210A4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Draw__FP15obj_usaku_class.s b/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Draw__FP15obj_usaku_class.s deleted file mode 100644 index 108c5f6d26..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Draw__FP15obj_usaku_class.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80D20F58: -/* 80D20F58 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D20F5C 7C 08 02 A6 */ mflr r0 -/* 80D20F60 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D20F64 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80D20F68 7C 7F 1B 78 */ mr r31, r3 -/* 80D20F6C 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 80D20F70 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80D20F74 38 80 00 10 */ li r4, 0x10 -/* 80D20F78 38 BF 04 D0 */ addi r5, r31, 0x4d0 -/* 80D20F7C 38 DF 01 0C */ addi r6, r31, 0x10c -/* 80D20F80 4B 48 28 45 */ bl settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c -/* 80D20F84 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 80D20F88 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80D20F8C 80 9F 05 74 */ lwz r4, 0x574(r31) -/* 80D20F90 80 84 00 04 */ lwz r4, 4(r4) -/* 80D20F94 38 BF 01 0C */ addi r5, r31, 0x10c -/* 80D20F98 4B 48 3E 09 */ bl setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c -/* 80D20F9C 80 7F 05 74 */ lwz r3, 0x574(r31) -/* 80D20FA0 4B 2E CD 25 */ bl mDoExt_modelUpdateDL__FP8J3DModel -/* 80D20FA4 38 60 00 01 */ li r3, 1 -/* 80D20FA8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80D20FAC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D20FB0 7C 08 03 A6 */ mtlr r0 -/* 80D20FB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D20FB8 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Execute__FP15obj_usaku_class.s b/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Execute__FP15obj_usaku_class.s deleted file mode 100644 index 860d2c42ff..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Execute__FP15obj_usaku_class.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_80D20FBC: -/* 80D20FBC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D20FC0 7C 08 02 A6 */ mflr r0 -/* 80D20FC4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D20FC8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80D20FCC 7C 7F 1B 78 */ mr r31, r3 -/* 80D20FD0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80D20FD4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80D20FD8 C0 3F 04 D0 */ lfs f1, 0x4d0(r31) -/* 80D20FDC C0 5F 04 D4 */ lfs f2, 0x4d4(r31) -/* 80D20FE0 C0 7F 04 D8 */ lfs f3, 0x4d8(r31) -/* 80D20FE4 4B 62 59 05 */ bl PSMTXTrans -/* 80D20FE8 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80D20FEC 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80D20FF0 A8 9F 04 E6 */ lha r4, 0x4e6(r31) -/* 80D20FF4 4B 2E B4 41 */ bl mDoMtx_YrotM__FPA4_fs -/* 80D20FF8 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80D20FFC 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80D21000 80 9F 05 74 */ lwz r4, 0x574(r31) -/* 80D21004 38 84 00 24 */ addi r4, r4, 0x24 -/* 80D21008 4B 62 54 A9 */ bl PSMTXCopy -/* 80D2100C 80 1F 05 B0 */ lwz r0, 0x5b0(r31) -/* 80D21010 28 00 00 00 */ cmplwi r0, 0 -/* 80D21014 41 82 00 1C */ beq lbl_80D21030 -/* 80D21018 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80D2101C 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80D21020 38 9F 05 80 */ addi r4, r31, 0x580 -/* 80D21024 4B 62 54 8D */ bl PSMTXCopy -/* 80D21028 80 7F 05 B0 */ lwz r3, 0x5b0(r31) -/* 80D2102C 4B 35 A9 95 */ bl Move__4dBgWFv -lbl_80D21030: -/* 80D21030 38 60 00 01 */ li r3, 1 -/* 80D21034 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80D21038 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D2103C 7C 08 03 A6 */ mtlr r0 -/* 80D21040 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D21044 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/useHeapInit__FP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/useHeapInit__FP10fopAc_ac_c.s deleted file mode 100644 index 3c715b7afa..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/useHeapInit__FP10fopAc_ac_c.s +++ /dev/null @@ -1,71 +0,0 @@ -lbl_80D210A8: -/* 80D210A8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D210AC 7C 08 02 A6 */ mflr r0 -/* 80D210B0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D210B4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80D210B8 93 C1 00 08 */ stw r30, 8(r1) -/* 80D210BC 7C 7F 1B 78 */ mr r31, r3 -/* 80D210C0 3C 60 80 D2 */ lis r3, d_a_obj_usaku__stringBase0@ha /* 0x80D212EC@ha */ -/* 80D210C4 38 63 12 EC */ addi r3, r3, d_a_obj_usaku__stringBase0@l /* 0x80D212EC@l */ -/* 80D210C8 38 80 00 04 */ li r4, 4 -/* 80D210CC 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D210D0 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D210D4 3F C5 00 02 */ addis r30, r5, 2 -/* 80D210D8 3B DE C2 F8 */ addi r30, r30, -15624 -/* 80D210DC 7F C5 F3 78 */ mr r5, r30 -/* 80D210E0 38 C0 00 80 */ li r6, 0x80 -/* 80D210E4 4B 31 B2 09 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80D210E8 3C 80 00 08 */ lis r4, 8 -/* 80D210EC 3C A0 11 00 */ lis r5, 0x1100 /* 0x11000084@ha */ -/* 80D210F0 38 A5 00 84 */ addi r5, r5, 0x0084 /* 0x11000084@l */ -/* 80D210F4 4B 2F 3B 61 */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl -/* 80D210F8 90 7F 05 74 */ stw r3, 0x574(r31) -/* 80D210FC 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 80D21100 28 00 00 00 */ cmplwi r0, 0 -/* 80D21104 40 82 00 0C */ bne lbl_80D21110 -/* 80D21108 38 60 00 00 */ li r3, 0 -/* 80D2110C 48 00 00 88 */ b lbl_80D21194 -lbl_80D21110: -/* 80D21110 38 60 00 C0 */ li r3, 0xc0 -/* 80D21114 4B 5A DB 39 */ bl __nw__FUl -/* 80D21118 7C 60 1B 79 */ or. r0, r3, r3 -/* 80D2111C 41 82 00 0C */ beq lbl_80D21128 -/* 80D21120 4B 35 A8 51 */ bl __ct__4dBgWFv -/* 80D21124 7C 60 1B 78 */ mr r0, r3 -lbl_80D21128: -/* 80D21128 90 1F 05 B0 */ stw r0, 0x5b0(r31) -/* 80D2112C 80 1F 05 B0 */ lwz r0, 0x5b0(r31) -/* 80D21130 28 00 00 00 */ cmplwi r0, 0 -/* 80D21134 40 82 00 0C */ bne lbl_80D21140 -/* 80D21138 38 60 00 00 */ li r3, 0 -/* 80D2113C 48 00 00 58 */ b lbl_80D21194 -lbl_80D21140: -/* 80D21140 3C 60 80 D2 */ lis r3, d_a_obj_usaku__stringBase0@ha /* 0x80D212EC@ha */ -/* 80D21144 38 63 12 EC */ addi r3, r3, d_a_obj_usaku__stringBase0@l /* 0x80D212EC@l */ -/* 80D21148 38 80 00 07 */ li r4, 7 -/* 80D2114C 7F C5 F3 78 */ mr r5, r30 -/* 80D21150 38 C0 00 80 */ li r6, 0x80 -/* 80D21154 4B 31 B1 99 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80D21158 7C 64 1B 78 */ mr r4, r3 -/* 80D2115C 80 7F 05 B0 */ lwz r3, 0x5b0(r31) -/* 80D21160 38 A0 00 01 */ li r5, 1 -/* 80D21164 38 DF 05 80 */ addi r6, r31, 0x580 -/* 80D21168 4B 35 8D D1 */ bl Set__4cBgWFP6cBgD_tUlPA3_A4_f -/* 80D2116C 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80D21170 28 00 00 01 */ cmplwi r0, 1 -/* 80D21174 40 82 00 0C */ bne lbl_80D21180 -/* 80D21178 38 60 00 00 */ li r3, 0 -/* 80D2117C 48 00 00 18 */ b lbl_80D21194 -lbl_80D21180: -/* 80D21180 3C 60 80 07 */ lis r3, dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz@ha /* 0x80075A24@ha */ -/* 80D21184 38 03 5A 24 */ addi r0, r3, dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz@l /* 0x80075A24@l */ -/* 80D21188 80 7F 05 B0 */ lwz r3, 0x5b0(r31) -/* 80D2118C 90 03 00 B0 */ stw r0, 0xb0(r3) -/* 80D21190 38 60 00 01 */ li r3, 1 -lbl_80D21194: -/* 80D21194 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80D21198 83 C1 00 08 */ lwz r30, 8(r1) -/* 80D2119C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D211A0 7C 08 03 A6 */ mtlr r0 -/* 80D211A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D211A8 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart/execute__17daTagChgRestart_cFv.s b/asm/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart/execute__17daTagChgRestart_cFv.s deleted file mode 100644 index d03567f587..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart/execute__17daTagChgRestart_cFv.s +++ /dev/null @@ -1,122 +0,0 @@ -lbl_80D568B8: -/* 80D568B8 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80D568BC 7C 08 02 A6 */ mflr r0 -/* 80D568C0 90 01 00 34 */ stw r0, 0x34(r1) -/* 80D568C4 39 61 00 30 */ addi r11, r1, 0x30 -/* 80D568C8 4B 60 B9 15 */ bl _savegpr_29 -/* 80D568CC 7C 7F 1B 78 */ mr r31, r3 -/* 80D568D0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D568D4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D568D8 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80D568DC 54 04 C6 3E */ rlwinm r4, r0, 0x18, 0x18, 0x1f -/* 80D568E0 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 80D568E4 7C 05 07 74 */ extsb r5, r0 -/* 80D568E8 4B 2D EA 79 */ bl isSwitch__10dSv_info_cCFii -/* 80D568EC 2C 03 00 00 */ cmpwi r3, 0 -/* 80D568F0 41 82 00 0C */ beq lbl_80D568FC -/* 80D568F4 38 60 00 01 */ li r3, 1 -/* 80D568F8 48 00 01 74 */ b lbl_80D56A6C -lbl_80D568FC: -/* 80D568FC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D56900 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D56904 83 C3 5D AC */ lwz r30, 0x5dac(r3) -/* 80D56908 C0 1E 04 D0 */ lfs f0, 0x4d0(r30) -/* 80D5690C D0 01 00 14 */ stfs f0, 0x14(r1) -/* 80D56910 C0 1E 04 D4 */ lfs f0, 0x4d4(r30) -/* 80D56914 D0 01 00 18 */ stfs f0, 0x18(r1) -/* 80D56918 C0 1E 04 D8 */ lfs f0, 0x4d8(r30) -/* 80D5691C D0 01 00 1C */ stfs f0, 0x1c(r1) -/* 80D56920 38 61 00 14 */ addi r3, r1, 0x14 -/* 80D56924 38 9F 04 A8 */ addi r4, r31, 0x4a8 -/* 80D56928 7C 65 1B 78 */ mr r5, r3 -/* 80D5692C 4B 5F 07 89 */ bl PSVECSubtract -/* 80D56930 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80D56934 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80D56938 A8 1F 04 DE */ lha r0, 0x4de(r31) -/* 80D5693C 7C 00 00 D0 */ neg r0, r0 -/* 80D56940 7C 04 07 34 */ extsh r4, r0 -/* 80D56944 4B 2B 5A 99 */ bl mDoMtx_YrotS__FPA4_fs -/* 80D56948 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80D5694C 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80D56950 38 81 00 14 */ addi r4, r1, 0x14 -/* 80D56954 7C 85 23 78 */ mr r5, r4 -/* 80D56958 4B 5F 04 15 */ bl PSMTXMultVec -/* 80D5695C C0 1F 05 68 */ lfs f0, 0x568(r31) -/* 80D56960 C0 21 00 14 */ lfs f1, 0x14(r1) -/* 80D56964 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80D56968 40 80 01 00 */ bge lbl_80D56A68 -/* 80D5696C C0 1F 05 70 */ lfs f0, 0x570(r31) -/* 80D56970 C0 41 00 1C */ lfs f2, 0x1c(r1) -/* 80D56974 FC 00 10 40 */ fcmpo cr0, f0, f2 -/* 80D56978 40 80 00 F0 */ bge lbl_80D56A68 -/* 80D5697C C0 1F 05 80 */ lfs f0, 0x580(r31) -/* 80D56980 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80D56984 40 81 00 E4 */ ble lbl_80D56A68 -/* 80D56988 C0 1F 05 88 */ lfs f0, 0x588(r31) -/* 80D5698C FC 00 10 40 */ fcmpo cr0, f0, f2 -/* 80D56990 40 81 00 D8 */ ble lbl_80D56A68 -/* 80D56994 C0 1F 04 A8 */ lfs f0, 0x4a8(r31) -/* 80D56998 D0 01 00 08 */ stfs f0, 8(r1) -/* 80D5699C C0 1F 04 AC */ lfs f0, 0x4ac(r31) -/* 80D569A0 D0 01 00 0C */ stfs f0, 0xc(r1) -/* 80D569A4 C0 1F 04 B0 */ lfs f0, 0x4b0(r31) -/* 80D569A8 D0 01 00 10 */ stfs f0, 0x10(r1) -/* 80D569AC A8 BF 04 B6 */ lha r5, 0x4b6(r31) -/* 80D569B0 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80D569B4 54 1D 06 3E */ clrlwi r29, r0, 0x18 -/* 80D569B8 28 1D 00 FF */ cmplwi r29, 0xff -/* 80D569BC 41 82 00 74 */ beq lbl_80D56A30 -/* 80D569C0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D569C4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D569C8 38 63 4E C4 */ addi r3, r3, 0x4ec4 -/* 80D569CC 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 80D569D0 7C 04 07 74 */ extsb r4, r0 -/* 80D569D4 4B 2C D9 B1 */ bl getStatusRoomDt__20dStage_roomControl_cFi -/* 80D569D8 81 83 00 00 */ lwz r12, 0(r3) -/* 80D569DC 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 80D569E0 7D 89 03 A6 */ mtctr r12 -/* 80D569E4 4E 80 04 21 */ bctrl -/* 80D569E8 80 83 00 04 */ lwz r4, 4(r3) -/* 80D569EC 80 03 00 00 */ lwz r0, 0(r3) -/* 80D569F0 7C 09 03 A6 */ mtctr r0 -/* 80D569F4 2C 00 00 00 */ cmpwi r0, 0 -/* 80D569F8 40 81 00 1C */ ble lbl_80D56A14 -lbl_80D569FC: -/* 80D569FC A8 04 00 1C */ lha r0, 0x1c(r4) -/* 80D56A00 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 80D56A04 7C 00 E8 00 */ cmpw r0, r29 -/* 80D56A08 41 82 00 0C */ beq lbl_80D56A14 -/* 80D56A0C 38 84 00 20 */ addi r4, r4, 0x20 -/* 80D56A10 42 00 FF EC */ bdnz lbl_80D569FC -lbl_80D56A14: -/* 80D56A14 C0 04 00 0C */ lfs f0, 0xc(r4) -/* 80D56A18 D0 01 00 08 */ stfs f0, 8(r1) -/* 80D56A1C C0 04 00 10 */ lfs f0, 0x10(r4) -/* 80D56A20 D0 01 00 0C */ stfs f0, 0xc(r1) -/* 80D56A24 C0 04 00 14 */ lfs f0, 0x14(r4) -/* 80D56A28 D0 01 00 10 */ stfs f0, 0x10(r1) -/* 80D56A2C A8 A4 00 1A */ lha r5, 0x1a(r4) -lbl_80D56A30: -/* 80D56A30 88 1E 04 E2 */ lbz r0, 0x4e2(r30) -/* 80D56A34 7C 06 07 74 */ extsb r6, r0 -/* 80D56A38 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D56A3C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D56A40 38 63 0D B4 */ addi r3, r3, 0xdb4 -/* 80D56A44 38 81 00 08 */ addi r4, r1, 8 -/* 80D56A48 4B 2D E5 39 */ bl setRoom__13dSv_restart_cFRC4cXyzsSc -/* 80D56A4C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D56A50 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D56A54 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80D56A58 54 04 C6 3E */ rlwinm r4, r0, 0x18, 0x18, 0x1f -/* 80D56A5C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 80D56A60 7C 05 07 74 */ extsb r5, r0 -/* 80D56A64 4B 2D E7 9D */ bl onSwitch__10dSv_info_cFii -lbl_80D56A68: -/* 80D56A68 38 60 00 01 */ li r3, 1 -lbl_80D56A6C: -/* 80D56A6C 39 61 00 30 */ addi r11, r1, 0x30 -/* 80D56A70 4B 60 B7 B9 */ bl _restgpr_29 -/* 80D56A74 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80D56A78 7C 08 03 A6 */ mtlr r0 -/* 80D56A7C 38 21 00 30 */ addi r1, r1, 0x30 -/* 80D56A80 4E 80 00 20 */ blr diff --git a/include/d/bg/d_bg_s_movebg_actor.h b/include/d/bg/d_bg_s_movebg_actor.h index af76e7b194..8ae508d0d3 100644 --- a/include/d/bg/d_bg_s_movebg_actor.h +++ b/include/d/bg/d_bg_s_movebg_actor.h @@ -9,12 +9,13 @@ typedef void (*MoveBGActor_SetFunc)(dBgW*, void*, cBgS_PolyInfo const&, bool, cX class dBgS_MoveBgActor : public fopAc_ac_c { public: - /* 0x568 */ dBgW* field_0x568; - /* 0x56C */ Mtx field_0x56c; + /* 0x568 */ dBgW* mpBgW; + /* 0x56C */ Mtx mBgMtx; /* 80078624 */ dBgS_MoveBgActor(); /* 800786C8 */ int MoveBGCreateHeap(); - /* 800787BC */ int MoveBGCreate(char const*, int, MoveBGActor_SetFunc, u32, Mtx*); + /* 800787BC */ int MoveBGCreate(char const* i_arcName, int i_dzb_id, + MoveBGActor_SetFunc i_setFunc, u32 i_heapSize, Mtx* i_bgMtx); /* 800788DC */ int MoveBGDelete(); /* 80078950 */ int MoveBGExecute(); diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h index 11551e1dd8..88d1bb33a6 100644 --- a/include/d/bg/d_bg_w.h +++ b/include/d/bg/d_bg_w.h @@ -2,6 +2,8 @@ #define D_BG_D_BG_W_H #include "SSystem/SComponent/c_m3d_g_aab.h" +#include "SSystem/SComponent/c_xyz.h" +#include "SSystem/SComponent/c_sxyz.h" #include "d/bg/d_bg_w_base.h" #include "dolphin/mtx/mtx.h" #include "dolphin/types.h" @@ -24,7 +26,7 @@ public: class cBgW_RwgElm { public: - /* 0x0 */ u16 field_0x0; + /* 0x0 */ u16 m_next; /* 800791C4 */ cBgW_RwgElm(); /* 800791D4 */ virtual ~cBgW_RwgElm(); @@ -46,66 +48,78 @@ public: /* 0x4 */ cM3dGAab m_aab; }; -struct cBgW_unk_b_data { - /* 0x0 */ u16 field_0x0; - /* 0x2 */ u16 field_0x2; - /* 0x4 */ u16 field_0x4; +struct cBgW_BlkElm { + /* 0x0 */ u16 m_roof_idx; + /* 0x2 */ u16 m_wall_idx; + /* 0x4 */ u16 m_gnd_idx; }; // Size: 0x6 -struct dzb_tri_data { - /* 0x0 */ u16 field_0x0; - /* 0x2 */ u16 field_0x2; - /* 0x4 */ u16 field_0x4; +struct cBgD_Tri_t { + /* 0x0 */ u16 m_vtx_idx0; + /* 0x2 */ u16 m_vtx_idx1; + /* 0x4 */ u16 m_vtx_idx2; /* 0x6 */ u16 m_id; /* 0x8 */ u16 m_grp; }; // Size: 0xA -struct dzb_ti_data { +struct cBgD_Ti_t { /* 0x0 */ u32 m_info0; /* 0x4 */ u32 m_info1; /* 0x8 */ u32 m_info2; - /* 0xC */ u8 field_0xc[0x10 - 0xC]; + /* 0xC */ u32 m_passFlag; }; -struct dzb_b_data { +struct cBgD_Blk_t { /* 0x0 */ u16 field_0x0; }; -struct dzb_tree_data { - /* 0x0 */ u16 field_0x0; - /* 0x2 */ u16 field_0x2; +struct cBgD_Tree_t { + /* 0x0 */ u16 m_flag; + /* 0x2 */ u16 m_parent_id; /* 0x4 */ u16 m_id[8]; }; // Size: 0x14 -struct dzb_g_data { - /* 0x00 */ u8 field_0x0[0x24 - 0x0]; - /* 0x24 */ u16 field_0x24; - /* 0x26 */ u16 field_0x26; - /* 0x28 */ u16 field_0x28; - /* 0x2A */ u16 field_0x2a; - /* 0x2C */ u8 field_0x2c[0x2E - 0x2C]; - /* 0x2E */ u16 field_0x2e; +struct cBgD_Grp_t { + /* 0x00 */ char* m_name; + /* 0x04 */ cXyz m_scale; + /* 0x10 */ csXyz m_rotation; + /* 0x18 */ cXyz m_translation; + /* 0x24 */ u16 m_parent; + /* 0x26 */ u16 m_next_sibling; + /* 0x28 */ u16 m_first_child; + /* 0x2A */ u16 m_room_id; + /* 0x2C */ u16 m_first_vtx_idx; + /* 0x2E */ u16 m_tree_idx; /* 0x30 */ u32 m_info; }; // Size: 0x34 struct cBgD_t { /* 0x00 */ int m_v_num; // vertex num - /* 0x04 */ Vec* m_v_tbl; // vertex table + /* 0x04 */ cBgD_Vtx_t* m_v_tbl; // vertex table /* 0x08 */ int m_t_num; // triangle num - /* 0x0C */ dzb_tri_data* m_t_tbl; // triangle table - /* 0x10 */ int m_b_num; // spatial? - /* 0x14 */ dzb_b_data* m_b_tbl; - /* 0x18 */ int m_tree_num; // face group? - /* 0x1C */ dzb_tree_data* m_tree_tbl; - /* 0x20 */ int m_g_num; // string group? - /* 0x24 */ dzb_g_data* m_g_tbl; - /* 0x28 */ int m_ti_num; // surface property? - /* 0x2C */ dzb_ti_data* m_ti_tbl; - /* 0x30 */ int field_0x30; + /* 0x0C */ cBgD_Tri_t* m_t_tbl; // triangle table + /* 0x10 */ int m_b_num; + /* 0x14 */ cBgD_Blk_t* m_b_tbl; + /* 0x18 */ int m_tree_num; + /* 0x1C */ cBgD_Tree_t* m_tree_tbl; + /* 0x20 */ int m_g_num; + /* 0x24 */ cBgD_Grp_t* m_g_tbl; + /* 0x28 */ int m_ti_num; + /* 0x2C */ cBgD_Ti_t* m_ti_tbl; + /* 0x30 */ int mFlags; }; class cBgW : public dBgW_Base { public: + enum Flags_e { + MOVE_BG_e = 0x1, + NO_CALC_VTX_e = 0x2, + NO_VTX_TBL_e = 0x10, + GLOBAL_e = 0x20, + CBGW_UNK_FLAG_40 = 0x40, + LOCK_e = 0x80, + }; + /* 80079294 */ cBgW(); /* 800793A4 */ void FreeArea(); /* 800793C4 */ void GlobalVtx(); @@ -118,7 +132,7 @@ public: /* 80079BDC */ void MakeNodeTreeRp(int); /* 80079CC4 */ void MakeNodeTreeGrpRp(int); /* 80079DF0 */ void MakeNodeTree(); - /* 80079F38 */ bool Set(cBgD_t*, u32, f32 (*)[3][4]); + /* 80079F38 */ bool Set(cBgD_t* pdzb, u32 flags, Mtx* pbase_mtx); /* 8007A200 */ bool RwgLineCheck(u16, cBgS_LinChk*); /* 8007A3A0 */ bool LineCheckRp(cBgS_LinChk*, int); /* 8007A52C */ bool LineCheckGrpRp(cBgS_LinChk*, int, int); @@ -204,27 +218,27 @@ public: u32 GetOldInvMtx(Mtx m) { return PSMTXInverse(m_inv_mtx, m); } MtxP GetBaseMtxP() { return pm_base; } - bool ChkNoCalcVtx() { return field_0x88 & 2; } + bool ChkNoCalcVtx() { return mFlags & NO_CALC_VTX_e; } bool ChkFlush() { return field_0x91 & 8; } - void SetLock() { field_0x88 |= 0x80; } + void SetLock() { mFlags |= LOCK_e; } bool ChkRoofRegist() { return field_0x91 & 4;} public: - /* 0x18 */ MtxP pm_base; + /* 0x18 */ MtxP pm_base; // Model Matrix /* 0x1C */ Mtx m_inv_mtx; - /* 0x4C */ Mtx field_0x4c; - /* 0x7C */ cXyz field_0x7c; - /* 0x88 */ u8 field_0x88; - /* 0x89 */ u8 field_0x89; + /* 0x4C */ Mtx m_mtx; + /* 0x7C */ cXyz mTransVel; + /* 0x88 */ u8 mFlags; + /* 0x89 */ u8 mNeedsFullTransform; /* 0x8A */ u8 field_0x8a[6]; - /* 0x90 */ u8 field_0x90; + /* 0x90 */ u8 mMoveCounter; /* 0x91 */ u8 field_0x91; - /* 0x92 */ u16 field_0x92; + /* 0x92 */ u16 m_rootGrpIdx; /* 0x94 */ cBgW_TriElm* pm_tri; /* 0x98 */ cBgW_RwgElm* pm_rwg; /* 0x9C */ cBgD_Vtx_t* pm_vtx_tbl; /* 0xA0 */ cBgD_t* pm_bgd; - /* 0xA4 */ cBgW_unk_b_data* field_0xa4; + /* 0xA4 */ cBgW_BlkElm* pm_blk; /* 0xA8 */ cBgW_GrpElm* pm_grp; /* 0xAC */ cBgW_NodeTree* pm_node_tree; }; diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 31a9823092..f4518266cb 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -140,6 +140,7 @@ enum fopAcM_CARRY { /* 0x04 */ fopAcM_CARRY_SIDE = 4, /* 0x08 */ fopAcM_CARRY_TYPE_8 = 8, /* 0x10 */ fopAcM_CARRY_LIGHT = 16, // guess based on context + /* 0x30 */ fopAcM_CARRY_UNK_30 = 0x30, }; inline u32 fopAcM_CheckCarryType(fopAc_ac_c* actor, fopAcM_CARRY type) { diff --git a/include/rel/d/a/d_a_bg_obj/d_a_bg_obj.h b/include/rel/d/a/d_a_bg_obj/d_a_bg_obj.h index add0773ce6..8f2852e80b 100644 --- a/include/rel/d/a/d_a_bg_obj/d_a_bg_obj.h +++ b/include/rel/d/a/d_a_bg_obj/d_a_bg_obj.h @@ -90,7 +90,7 @@ public: /* 0x5A8 */ J3DModel* field_0x5a8[2][2]; /* 0x5B8 */ mDoExt_btkAnm* field_0x5b8[2][2]; /* 0x5C8 */ mDoExt_brkAnm* field_0x5c8[2][2]; - /* 0x5D8 */ dBgW* mpBgW; + /* 0x5D8 */ dBgW* mpBgW2; /* 0x5DC */ dCcD_Stts mStts; /* 0x618 */ dCcD_Tri mTris[4]; /* 0xB88 */ dCcD_Cyl mCyl; diff --git a/include/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.h b/include/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.h index 2ca1f07ff8..18474ac383 100644 --- a/include/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.h +++ b/include/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.h @@ -1,6 +1,21 @@ #ifndef D_A_OBJ_FMOBJ_H #define D_A_OBJ_FMOBJ_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class dBgW; + +class obj_fmobj_class : public fopAc_ac_c { +public: + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ u8 field_0x570; + /* 0x574 */ J3DModel* mpModel; + /* 0x578 */ s16 field_0x578; + /* 0x57A */ u8 field_0x57A[0x57E - 0x57A]; + /* 0x57E */ s16 field_0x57e[2]; + /* 0x582 */ u8 field_0x582[0x588 - 0x582]; + /* 0x588 */ Mtx mBgMtx; + /* 0x5B8 */ dBgW* mpBgW; +}; #endif /* D_A_OBJ_FMOBJ_H */ diff --git a/include/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.h b/include/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.h index e0d1572d43..0822de6541 100644 --- a/include/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.h +++ b/include/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.h @@ -1,6 +1,6 @@ #ifndef D_A_OBJ_MASTER_SWORD_H #define D_A_OBJ_MASTER_SWORD_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" #endif /* D_A_OBJ_MASTER_SWORD_H */ diff --git a/include/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.h b/include/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.h index a9a72fd416..3a2b658320 100644 --- a/include/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.h +++ b/include/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.h @@ -1,6 +1,18 @@ #ifndef D_A_OBJ_USAKU_H #define D_A_OBJ_USAKU_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class dBgW; + +class obj_usaku_class : public fopAc_ac_c { +public: + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ u8 field_0x570; + /* 0x574 */ J3DModel* mpModel; + /* 0x578 */ u8 field_0x578[0x580 - 0x578]; + /* 0x580 */ Mtx mBgMtx; + /* 0x5B0 */ dBgW* mpBgW; +}; #endif /* D_A_OBJ_USAKU_H */ diff --git a/include/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.h b/include/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.h index a00f154155..a64afb0f26 100644 --- a/include/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.h +++ b/include/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.h @@ -12,7 +12,7 @@ public: /* 80D568B8 */ s32 execute(); /* 80D56A84 */ s32 _delete(); - /* 0x0568 */ cXyz field_0x568[4]; + /* 0x0568 */ cXyz mVertices[4]; }; STATIC_ASSERT(sizeof(daTagChgRestart_c) == 0x598); diff --git a/rel/d/a/d_a_bg/d_a_bg.cpp b/rel/d/a/d_a_bg/d_a_bg.cpp index 98b55e1e7b..8f39add93e 100644 --- a/rel/d/a/d_a_bg/d_a_bg.cpp +++ b/rel/d/a/d_a_bg/d_a_bg.cpp @@ -647,7 +647,7 @@ int daBg_c::createHeap() { return 0; } - if (mpBgW->Set(dzb, 0x20, NULL)) { + if (mpBgW->Set(dzb, cBgW::GLOBAL_e, NULL)) { return 0; } diff --git a/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp b/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp index e41bb33ad3..61e480cc94 100644 --- a/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp +++ b/rel/d/a/d_a_bg_obj/d_a_bg_obj.cpp @@ -508,7 +508,7 @@ asm void daBgObj_c::setAttentionInfo(fopAc_ac_c* param_0) { void daBgObj_c::initBaseMtx() { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(shape_angle.y); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); setBaseMtx(); } @@ -516,7 +516,7 @@ void daBgObj_c::initBaseMtx() { void daBgObj_c::setBaseMtx() { for (int i = 0; i < 2; i++) { if (field_0x5a8[field_0xcc8][i] != NULL) { - field_0x5a8[field_0xcc8][i]->i_setBaseTRMtx(field_0x56c); + field_0x5a8[field_0xcc8][i]->i_setBaseTRMtx(mBgMtx); } } } @@ -584,8 +584,8 @@ int daBgObj_c::CreateInitType0() { int daBgObj_c::CreateInitType1() { if (i_fopAcM_isSwitch(this, daBgObj_prm::getSwBit(this))) { field_0xcc8 = 1; - release(field_0x568); - regist(mpBgW); + release(mpBgW); + regist(mpBgW2); mAction = 3; } else { field_0xcc8 = 0; @@ -613,8 +613,8 @@ int daBgObj_c::CreateInitType1() { mEventIdx = i_dComIfGp_getEventManager().getEventIdx(this, daBgObj_prm::getEvId(this)); - if (mpBgW != NULL) { - mpBgW->Move(); + if (mpBgW2 != NULL) { + mpBgW2->Move(); } initAtt(); @@ -801,9 +801,9 @@ int daBgObj_c::CreateHeapType1() { cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(daSetBgObj_c::getArcName(this), getDzbName(1)); if (dzb != NULL) { - mpBgW = new dBgW(); - if (mpBgW == NULL || mpBgW->Set(dzb, 1, &field_0x56c)) { - mpBgW = NULL; + mpBgW2 = new dBgW(); + if (mpBgW2 == NULL || mpBgW2->Set(dzb, cBgW::MOVE_BG_e, &mBgMtx)) { + mpBgW2 = NULL; return 0; } } @@ -1270,8 +1270,8 @@ int daBgObj_c::actionOrder() { if (!i_fopAcM_isSwitch(this, daBgObj_prm::getSwBit(this)) || field_0xd00 != 0 || field_0xcc8 == 0) { - release(field_0x568); - regist(mpBgW); + release(mpBgW); + regist(mpBgW2); field_0xcc8 = 1; settingCullSizeBoxForCull(field_0xcc8); @@ -1323,21 +1323,21 @@ int daBgObj_c::ExecuteType0() { if (arg0 == 0xFF) { if (i_fopAcM_isSwitch(this, swBit)) { if (field_0xcc8 == 1) { - regist(field_0x568); + regist(mpBgW); field_0xcc8 = 0; } } else if (field_0xcc8 == 0) { - release(field_0x568); + release(mpBgW); field_0xcc8 = 1; } } else if (arg0 == 0) { if (i_fopAcM_isSwitch(this, swBit)) { if (field_0xcc8 == 0) { - release(field_0x568); + release(mpBgW); field_0xcc8 = 1; } } else if (field_0xcc8 == 1) { - regist(field_0x568); + regist(mpBgW); field_0xcc8 = 0; } } @@ -1374,7 +1374,7 @@ int daBgObj_c::Execute(f32 (**param_0)[3][4]) { } } - *param_0 = &field_0x56c; + *param_0 = &mBgMtx; setBaseMtx(); return 1; } @@ -1439,7 +1439,7 @@ void daBgObj_c::indirectProc(J3DModel* i_model) { /* 8045C2E8-8045C330 002D08 0048+00 1/0 0/0 0/0 .text Delete__9daBgObj_cFv */ int daBgObj_c::Delete() { - release(mpBgW); + release(mpBgW2); dComIfG_resDelete(&mPhase, daSetBgObj_c::getArcName(this)); return 1; } diff --git a/rel/d/a/d_a_dshutter/d_a_dshutter.cpp b/rel/d/a/d_a_dshutter/d_a_dshutter.cpp index f5ee70f310..a2d4590b1a 100644 --- a/rel/d/a/d_a_dshutter/d_a_dshutter.cpp +++ b/rel/d/a/d_a_dshutter/d_a_dshutter.cpp @@ -179,7 +179,7 @@ int daDsh_c::Draw() { int daDsh_c::Execute(f32 (**param_0)[3][4]) { callExecute(); setMtx(); - *param_0 = &field_0x56c; + *param_0 = &mBgMtx; func_80467DF8(&mTiltTime); return 1; } @@ -190,7 +190,7 @@ void daDsh_c::setMtx() { mDoMtx_stack_c::YrotM(shape_angle.y); mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); } /* 80467708-8046772C 0002E8 0024+00 5/5 0/0 0/0 .text setAction__7daDsh_cFPQ27daDsh_c8action_c */ diff --git a/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp b/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp index 8c86358bc5..0d6d315445 100644 --- a/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp +++ b/rel/d/a/d_a_izumi_gate/d_a_izumi_gate.cpp @@ -15,7 +15,7 @@ void daIzumiGate_c::initBaseMtx() { /* 808490B8-8084910C 000098 0054+00 2/2 0/0 0/0 .text setBaseMtx__13daIzumiGate_cFv */ void daIzumiGate_c::setBaseMtx() { mDoMtx_stack_c::transS(current.pos); - PSMTXCopy(mDoMtx_stack_c::now, field_0x56c); + PSMTXCopy(mDoMtx_stack_c::now, mBgMtx); PSMTXCopy(mDoMtx_stack_c::now, mpModel->mBaseTransformMtx); } @@ -55,7 +55,7 @@ int daIzumiGate_c::create() { if (phase == cPhs_ERROR_e) { return phase; } - fopAcM_SetMtx(this, field_0x56c); + fopAcM_SetMtx(this, mBgMtx); } return phase; } @@ -80,7 +80,7 @@ int daIzumiGate_c::Create() { /* 808492FC-80849328 0002DC 002C+00 1/0 0/0 0/0 .text Execute__13daIzumiGate_cFPPA3_A4_f */ int daIzumiGate_c::Execute(Mtx** i_mtx) { - *i_mtx = &field_0x56c; + *i_mtx = &mBgMtx; setBaseMtx(); return 1; } diff --git a/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp b/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp index 7a59245dda..8945faa781 100644 --- a/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp +++ b/rel/d/a/obj/d_a_obj_cboard/d_a_obj_cboard.cpp @@ -18,7 +18,7 @@ void daObjBoard_c::setBaseMtx() { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::ZXYrotM(shape_angle); mDoMtx_stack_c::scaleM(mScale); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); } /* 8057BE20-8057BE24 -00001 0004+00 2/2 0/0 0/0 .data l_arcName */ @@ -102,12 +102,12 @@ int daObjBoard_c::Execute(Mtx** param_0) { case 7: case 15: if (i_fopAcM_isSwitch(this, getSwNo())) { - if (!field_0x568->ChkUsed()) { - dComIfG_Bgsp().Regist(field_0x568, this); + if (!mpBgW->ChkUsed()) { + dComIfG_Bgsp().Regist(mpBgW, this); } } else { - if (field_0x568->ChkUsed()) { - dComIfG_Bgsp().Release(field_0x568); + if (mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); } } break; @@ -117,18 +117,18 @@ int daObjBoard_c::Execute(Mtx** param_0) { case 6: case 8: if (i_fopAcM_isSwitch(this, getSwNo())) { - if (field_0x568->ChkUsed()) { - dComIfG_Bgsp().Release(field_0x568); + if (mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); } } else { - if (!field_0x568->ChkUsed()) { - dComIfG_Bgsp().Regist(field_0x568, this); + if (!mpBgW->ChkUsed()) { + dComIfG_Bgsp().Regist(mpBgW, this); } } break; } - *param_0 = &field_0x56c; + *param_0 = &mBgMtx; return 1; } diff --git a/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp b/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp index 1230ef144f..4573028769 100644 --- a/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp +++ b/rel/d/a/obj/d_a_obj_cowdoor/d_a_obj_cowdoor.cpp @@ -12,7 +12,7 @@ void daCowdoor_c::setBaseMtx() { PSMTXTrans(mDoMtx_stack_c::now, current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(shape_angle.y); PSMTXCopy(mDoMtx_stack_c::now, field_0x5a8->mBaseTransformMtx); - PSMTXCopy(mDoMtx_stack_c::now, field_0x56c); + PSMTXCopy(mDoMtx_stack_c::now, mBgMtx); } /* 80BCC86C-80BCC8C4 0000EC 0058+00 1/0 0/0 0/0 .text Create__11daCowdoor_cFv */ @@ -57,7 +57,7 @@ int daCowdoor_c::create() { /* 80BCCA1C-80BCCA48 00029C 002C+00 1/0 0/0 0/0 .text Execute__11daCowdoor_cFPPA3_A4_f */ int daCowdoor_c::Execute(f32 (**param_0)[3][4]) { - *param_0 = &field_0x56c; + *param_0 = &mBgMtx; setBaseMtx(); return 1; } diff --git a/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp b/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp index 5da07ada27..99e691881e 100644 --- a/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp +++ b/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.cpp @@ -4,74 +4,13 @@ // #include "rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "SSystem/SComponent/c_math.h" +#include "d/bg/d_bg_w.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" #include "dol2asm.h" -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct obj_fmobj_class {}; - -struct mDoMtx_stack_c { - /* 8000CD9C */ void transM(f32, f32, f32); - - static u8 now[48]; -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct dSv_memBit_c { - /* 80034934 */ void isDungeonItem(int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct cXyz {}; - -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 dBgW_Base {}; - -struct dBgW { - /* 8007B970 */ dBgW(); - /* 8007B9C0 */ void Move(); -}; - -struct dBgS { - /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*); -}; - -struct csXyz {}; - -struct cBgD_t {}; - -struct cBgW { - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); -}; - -struct cBgS_PolyInfo {}; - -struct cBgS { - /* 80074250 */ void Release(dBgW_Base*); -}; - -struct J3DModel {}; - // // Forward References: // @@ -83,7 +22,6 @@ extern "C" static void daObj_Fmobj_Delete__FP15obj_fmobj_class(); extern "C" static void useHeapInit__FP10fopAc_ac_c(); extern "C" static void daObj_Fmobj_Create__FP10fopAc_ac_c(); extern "C" extern char const* const d_a_obj_fmobj__stringBase0; -extern "C" extern void* g_profile_OBJ_FMOBJ[12]; // // External References: @@ -109,71 +47,72 @@ extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); extern "C" void cM_rndF__Ff(); extern "C" void* __nw__FUl(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); extern "C" void _savegpr_29(); extern "C" void _restgpr_29(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; // // Declarations: // /* 8057CBD8-8057CC44 000078 006C+00 1/0 0/0 0/0 .text daObj_Fmobj_Draw__FP15obj_fmobj_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Fmobj_Draw(obj_fmobj_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Draw__FP15obj_fmobj_class.s" +static int daObj_Fmobj_Draw(obj_fmobj_class* i_this) { + J3DModel* model_p = i_this->mpModel; + + g_env_light.settingTevStruct(0x40, &i_this->current.pos, &i_this->mTevStr); + g_env_light.setLightTevColorType_MAJI(model_p, &i_this->mTevStr); + mDoExt_modelUpdateDL(model_p); + return 1; } -#pragma pop /* 8057CC44-8057CC84 0000E4 0040+00 1/0 0/0 0/0 .text daObj_Fmobj_Execute__FP15obj_fmobj_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Fmobj_Execute(obj_fmobj_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Execute__FP15obj_fmobj_class.s" +static int daObj_Fmobj_Execute(obj_fmobj_class* i_this) { + i_this->field_0x578++; + + for (int i = 0; i < 2; i++) { + if (i_this->field_0x57e[i] != 0) { + i_this->field_0x57e[i]--; + } + } + + return 1; } -#pragma pop /* 8057CC84-8057CC8C 000124 0008+00 1/0 0/0 0/0 .text daObj_Fmobj_IsDelete__FP15obj_fmobj_class */ -static bool daObj_Fmobj_IsDelete(obj_fmobj_class* param_0) { - return true; +static int daObj_Fmobj_IsDelete(obj_fmobj_class* i_this) { + return 1; } -/* ############################################################################################## */ -/* 8057CF74-8057CF74 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8057CF74 = "Obj_Fmobj"; -#pragma pop - /* 8057CC8C-8057CCDC 00012C 0050+00 1/0 0/0 0/0 .text daObj_Fmobj_Delete__FP15obj_fmobj_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Fmobj_Delete(obj_fmobj_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Delete__FP15obj_fmobj_class.s" +static int daObj_Fmobj_Delete(obj_fmobj_class* i_this) { + dComIfG_resDelete(&i_this->mPhase, "Obj_Fmobj"); + dComIfG_Bgsp().Release(i_this->mpBgW); + return 1; } -#pragma pop /* 8057CCDC-8057CDE0 00017C 0104+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void useHeapInit(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/useHeapInit__FP10fopAc_ac_c.s" +static int useHeapInit(fopAc_ac_c* i_this) { + obj_fmobj_class* a_this = (obj_fmobj_class*)i_this; + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_Fmobj", 4); + a_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (a_this->mpModel == NULL) { + return 0; + } + + a_this->mpBgW = new dBgW(); + if (a_this->mpBgW == NULL) { + return 0; + } + + cBgD_t* pdzb = (cBgD_t*)dComIfG_getObjectRes("Obj_Fmobj", 7); + if (a_this->mpBgW->Set(pdzb, cBgW::MOVE_BG_e, &a_this->mBgMtx) == 1) { + return 0; + } + + a_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical); + return 1; } -#pragma pop /* ############################################################################################## */ /* 8057CF68-8057CF6C 000000 0004+00 1/1 0/0 0/0 .rodata @3743 */ @@ -201,36 +140,76 @@ COMPILER_STRIP_GATE(0x8057CF70, &lit_3745); /* 8057CDE0-8057CF60 000280 0180+00 1/0 0/0 0/0 .text daObj_Fmobj_Create__FP10fopAc_ac_c */ +// reg alloc +#ifdef NONMATCHING +static int daObj_Fmobj_Create(fopAc_ac_c* i_this) { + obj_fmobj_class* a_this = (obj_fmobj_class*)i_this; + fopAcM_SetupActor(a_this, obj_fmobj_class); + + int phase = dComIfG_resLoad(&a_this->mPhase, "Obj_Fmobj"); + if (phase == cPhs_COMPLEATE_e) { + a_this->field_0x570 = fopAcM_GetParam(a_this) & 0xFF; + + if (dComIfGs_isStageBossEnemy()) { + return cPhs_ERROR_e; + } + + if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x4B000)) { + return cPhs_ERROR_e; + } + + if (dComIfG_Bgsp().Regist(a_this->mpBgW, a_this)) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(a_this, a_this->mpModel->getBaseTRMtx()); + a_this->shape_angle.y = cM_rndF(65536.0f); + + mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y, a_this->current.pos.z); + mDoMtx_stack_c::YrotM(a_this->shape_angle.y); + a_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); + + mDoMtx_stack_c::transM(0.0f, -30.0f, 0.0f); + PSMTXCopy(mDoMtx_stack_c::get(), a_this->mDzbMtx); + + a_this->mpBgW->Move(); + } + + return phase; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daObj_Fmobj_Create(fopAc_ac_c* param_0) { +static asm int daObj_Fmobj_Create(fopAc_ac_c* param_0) { nofralloc #include "asm/rel/d/a/obj/d_a_obj_fmobj/d_a_obj_fmobj/daObj_Fmobj_Create__FP10fopAc_ac_c.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8057CF80-8057CFA0 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Fmobj_Method */ -SECTION_DATA static void* l_daObj_Fmobj_Method[8] = { - (void*)daObj_Fmobj_Create__FP10fopAc_ac_c, - (void*)daObj_Fmobj_Delete__FP15obj_fmobj_class, - (void*)daObj_Fmobj_Execute__FP15obj_fmobj_class, - (void*)daObj_Fmobj_IsDelete__FP15obj_fmobj_class, - (void*)daObj_Fmobj_Draw__FP15obj_fmobj_class, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class l_daObj_Fmobj_Method = { + (process_method_func)daObj_Fmobj_Create, (process_method_func)daObj_Fmobj_Delete, + (process_method_func)daObj_Fmobj_Execute, (process_method_func)daObj_Fmobj_IsDelete, + (process_method_func)daObj_Fmobj_Draw, }; /* 8057CFA0-8057CFD0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_FMOBJ */ -SECTION_DATA extern void* g_profile_OBJ_FMOBJ[12] = { - (void*)0xFFFFFFFD, (void*)0x0003FFFD, - (void*)0x00260000, (void*)&g_fpcLf_Method, - (void*)0x000005BC, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x00280000, (void*)&l_daObj_Fmobj_Method, - (void*)0x00040100, (void*)0x00070000, +extern actor_process_profile_definition g_profile_OBJ_FMOBJ = { + -3, + 3, + -3, + PROC_OBJ_FMOBJ, + &g_fpcLf_Method.mBase, + sizeof(obj_fmobj_class), + 0, + 0, + &g_fopAc_Method.base, + 40, + &l_daObj_Fmobj_Method, + 0x40100, + 0, + 7, }; - -/* 8057CF74-8057CF74 00000C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp b/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp index 122bd2635c..4ae7f3c6e6 100644 --- a/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp +++ b/rel/d/a/obj/d_a_obj_kjgjs/d_a_obj_kjgjs.cpp @@ -66,8 +66,8 @@ static const Vec l_cull_box[4] = { int daObjKJgjs_c::Create() { fopAcM_SetMtx(this, mMtx[1]); PSMTXCopy(mMtx[1], mpModel->mBaseTransformMtx); - dBgW* mpBgW = field_0x568; - mpBgW->field_0x91 |= 4; + dBgW* bgw_p = mpBgW; + bgw_p->field_0x91 |= 4; if (!field_0x60c) { fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, l_cull_box[1].y, l_cull_box[1].z); diff --git a/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp b/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp index 7d8227d641..6a682af96d 100644 --- a/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp +++ b/rel/d/a/obj/d_a_obj_lv4floor/d_a_obj_lv4floor.cpp @@ -20,7 +20,7 @@ void daObjLv4Floor_c::setBaseMtx() { mDoMtx_stack_c::YrotM(shape_angle.y); mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); } /* 80C678B0-80C678D4 000130 0024+00 1/0 0/0 0/0 .text Create__15daObjLv4Floor_cFv */ @@ -84,7 +84,7 @@ int daObjLv4Floor_c::create1st() { /* 80C679E4-80C67A30 000264 004C+00 1/0 0/0 0/0 .text Execute__15daObjLv4Floor_cFPPA3_A4_f */ int daObjLv4Floor_c::Execute(Mtx** param_0) { action(); - *param_0 = &field_0x56c; + *param_0 = &mBgMtx; setBaseMtx(); return 1; diff --git a/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp b/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp index b062c38289..029ab3c7d2 100644 --- a/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp +++ b/rel/d/a/obj/d_a_obj_magLiftRot/d_a_obj_magLiftRot.cpp @@ -424,7 +424,7 @@ void daMagLiftRot_c::setBaseMtx() { mpModel->setBaseScale(cXyz(1.0f, 1.0f, 1.0f)); mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); } #else #pragma push @@ -547,8 +547,8 @@ int daMagLiftRot_c::create() { fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); fopAcM_setCullSizeBox2(this, mpModel->getModelData()); - field_0x568->onStickWall(); - field_0x568->onStickRoof(); + mpBgW->onStickWall(); + mpBgW->onStickRoof(); field_0x5e1 = fopAcM_GetParam(this) & 0xFF; field_0x5e2 = -0x8000; diff --git a/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp b/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp index 014ee8f4d4..c51e50774d 100644 --- a/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp +++ b/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.cpp @@ -4,184 +4,63 @@ // #include "rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "d/a/d_a_player.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" +#include "d/meter/d_meter2_info.h" #include "dol2asm.h" // // Types: // -struct request_of_phase_process_class {}; +class daObjMasterSword_c; +typedef void (daObjMasterSword_c::*actionFunc)(); -struct cXyz {}; +class daObjMasterSword_c : public fopAc_ac_c { +public: + enum Mode_e { + MODE_0_e, + }; -struct mDoMtx_stack_c { - /* 8000CD64 */ void transS(cXyz const&); - - static u8 now[48]; -}; - -struct J3DAnmTextureSRTKey {}; - -struct J3DAnmTevRegKey {}; - -struct J3DMaterialTable { - /* 8032F7B4 */ void removeTexMtxAnimator(J3DAnmTextureSRTKey*); - /* 8032F880 */ void removeTevRegAnimator(J3DAnmTevRegKey*); -}; - -struct mDoExt_btkAnm { - /* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16); - /* 8000D6D8 */ void entry(J3DMaterialTable*, f32); -}; - -struct mDoExt_brkAnm { - /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16); - /* 8000D7A8 */ void entry(J3DMaterialTable*, f32); -}; - -struct mDoExt_baseAnm { - /* 8000D428 */ void play(); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daObjMasterSword_c { /* 80C90AF8 */ void initWait(); /* 80C90B50 */ void executeWait(); - /* 80C90C50 */ void createHeapCallBack(fopAc_ac_c*); - /* 80C90C70 */ void CreateHeap(); - /* 80C90DB8 */ void create(); + /* 80C90C50 */ static int createHeapCallBack(fopAc_ac_c* i_this); + /* 80C90C70 */ int CreateHeap(); + /* 80C90DB8 */ int create(); /* 80C90F6C */ void create_init(); /* 80C91448 */ ~daObjMasterSword_c(); - /* 80C91714 */ void draw(); + /* 80C91714 */ int draw(); + + inline void initCollision(); + inline void setCollision(); + inline void initBaseMtx(); + inline void setAction(Mode_e i_mode); + inline void callInit(); + inline void callExecute(); + inline int execute(); + + f32 attr() const { return mAttr; } + + u8 getEventID() { return (fopAcM_GetParam(this) >> 0x10) & 0xFF; } + u16 getFlagNo() { return fopAcM_GetParam(this) & 0xFFFF; } static f32 const mAttr; + // static actionFunc ActionTable[]; static u8 ActionTable[24]; -}; -struct dSv_player_get_item_c { - /* 80033E60 */ void onFirstBit(u8); -}; - -struct dSv_event_tmp_flag_c { - static u8 const tempBitLabels[370 + 2 /* padding */]; -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 8003498C */ void onEventBit(u16); - /* 800349BC */ void isEventBit(u16) 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 dDlst_shadowControl_c { - static u8 mSimpleTexObj[32]; -}; - -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcCyl {}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80C9137C */ ~dCcD_GStts(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800840E4 */ ~dCcD_GObjInf(); -}; - -struct dCcD_Cyl { - /* 800848B4 */ void Set(dCcD_SrcCyl const&); -}; - -struct dBgS_PolyPassChk { - /* 80078E68 */ void SetObj(); -}; - -struct dBgS_ObjAcch { - /* 80C9120C */ ~dBgS_ObjAcch(); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F58 */ void SetWall(f32, f32); - /* 80C9127C */ ~dBgS_AcchCir(); -}; - -struct csXyz {}; - -struct dBgS {}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - -struct dAttention_c { - /* 80070880 */ void getActionBtnB(); - /* 80073734 */ void ActionTarget(s32); -}; - -struct cM3dGCyl { - /* 80C912EC */ ~cM3dGCyl(); -}; - -struct cM3dGCir { - /* 8026EF18 */ ~cM3dGCir(); -}; - -struct cM3dGAab { - /* 80C91334 */ ~cM3dGAab(); -}; - -struct cCcD_Obj {}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - -struct cCcD_GStts { - /* 80C9189C */ ~cCcD_GStts(); -}; - -struct cBgS_PolyInfo { - /* 80268074 */ cBgS_PolyInfo(); - /* 802680B0 */ ~cBgS_PolyInfo(); -}; - -struct _GXTexObj {}; - -struct J3DModel {}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 80C913D8 */ ~J3DFrameCtrl(); + /* 0x568 */ J3DModel* mpModel; + /* 0x56C */ request_of_phase_process_class mPhase; + /* 0x574 */ mDoExt_btkAnm mBtk; + /* 0x58C */ mDoExt_brkAnm mBrk; + /* 0x5A4 */ dCcD_Stts mCcStts; + /* 0x5E0 */ dCcD_Cyl mCyl; + /* 0x71C */ actionFunc* mActionFunc; + /* 0x720 */ Mode_e mMode; + /* 0x724 */ u32 mShadowKey; + /* 0x728 */ cBgS_PolyInfo field_0x728; + /* 0x738 */ f32 field_0x738; }; // @@ -269,7 +148,6 @@ extern "C" void __dl__FPv(); extern "C" void init__12J3DFrameCtrlFs(); extern "C" void removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey(); extern "C" void removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey(); -extern "C" void PSMTXCopy(); extern "C" void __ptmf_scall(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); @@ -280,8 +158,6 @@ extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */]; -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; extern "C" extern void* __vt__8dCcD_Cyl[36]; extern "C" extern void* __vt__9dCcD_Stts[11]; @@ -289,10 +165,7 @@ extern "C" extern void* __vt__12cCcD_CylAttr[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" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; extern "C" extern u8 data_80C91AD0[4]; // @@ -300,36 +173,39 @@ extern "C" extern u8 data_80C91AD0[4]; // /* 80C90AF8-80C90B50 000078 0058+00 1/0 0/0 0/0 .text initWait__18daObjMasterSword_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMasterSword_c::initWait() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/initWait__18daObjMasterSword_cFv.s" +void daObjMasterSword_c::initWait() { + cLib_onBit(mAttentionInfo.mFlags, 0x10); + current.pos = orig.pos; + current.angle = orig.angle; + shape_angle = orig.angle; } -#pragma pop /* 80C90B50-80C90C50 0000D0 0100+00 1/0 0/0 0/0 .text executeWait__18daObjMasterSword_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMasterSword_c::executeWait() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/executeWait__18daObjMasterSword_cFv.s" +void daObjMasterSword_c::executeWait() { + if (daPy_getPlayerActorClass()->checkPriActorOwn(this)) { + for (int i = 0; i < dComIfGp_getAttention().GetActionCount(); i++) { + if (dComIfGp_getAttention().ActionTarget(i) == this) { + if (dComIfGp_getAttention().getActionBtnB() != NULL && + dComIfGp_getAttention().getActionBtnB()->mType == 4) + { + dComIfGp_setDoStatusForce(8, 0); + } + } + } + } + + if (fopAcM_checkCarryNow(this)) { + dMeter2Info_setCloth(WEAR_KOKIRI, false); + fopAcM_orderMapToolEvent(this, getEventID(), 0xFF, 0xFFFF, 1, 0); + } } -#pragma pop /* 80C90C50-80C90C70 0001D0 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMasterSword_c::createHeapCallBack(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c.s" +int daObjMasterSword_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); } -#pragma pop /* ############################################################################################## */ /* 80C91940-80C91944 000000 0004+00 2/2 0/0 0/0 .rodata mAttr__18daObjMasterSword_c */ @@ -374,28 +250,34 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { #pragma pop /* 80C9199C-80C919A0 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_master_sword__stringBase0; +SECTION_DATA static char* l_arcName = "MstrSword"; /* 80C90C70-80C90D98 0001F0 0128+00 1/1 0/0 0/0 .text CreateHeap__18daObjMasterSword_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjMasterSword_c::CreateHeap() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/CreateHeap__18daObjMasterSword_cFv.s" +int daObjMasterSword_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 5); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284); + if (mpModel == NULL) { + return 0; + } + + J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 11); + if (!mBtk.init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1)) { + return 0; + } + + J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 8); + if (!mBrk.init(modelData, pbrk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1)) { + return 0; + } + + return 1; } -#pragma pop /* 80C90D98-80C90DB8 000318 0020+00 1/0 0/0 0/0 .text daObjMasterSword_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMasterSword_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Create__FP10fopAc_ac_c.s" +static int daObjMasterSword_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* ############################################################################################## */ /* 80C919A0-80C919AC -00001 000C+00 0/1 0/0 0/0 .data @3655 */ @@ -425,6 +307,10 @@ SECTION_DATA u8 daObjMasterSword_c::ActionTable[24] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +/* static actionFunc daObjMasterSword_c::ActionTable[] = { + &daObjMasterSword_c::initWait, &daObjMasterSword_c::executeWait, +}; */ + /* 80C919D0-80C91A14 000054 0044+00 1/1 0/0 0/0 .data * ccCylSrc$localstatic3$initCollision__18daObjMasterSword_cFv */ SECTION_DATA static u8 data_80C919D0[68] = { @@ -513,14 +399,36 @@ SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { }; /* 80C90DB8-80C90F6C 000338 01B4+00 1/1 0/0 0/0 .text create__18daObjMasterSword_cFv */ +// matches with weak funcs +#ifdef NONMATCHING +int daObjMasterSword_c::create() { + fopAcM_SetupActor(this, daObjMasterSword_c); + + if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[getFlagNo()])) { + return cPhs_ERROR_e; + } + + int phase = dComIfG_resLoad(&mPhase, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, daObjMasterSword_c::createHeapCallBack, 0x1830)) { + return cPhs_ERROR_e; + } + + create_init(); + } + + return phase; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMasterSword_c::create() { +asm int daObjMasterSword_c::create() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/create__18daObjMasterSword_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80C91954-80C91958 000014 0004+00 0/1 0/0 0/0 .rodata @3861 */ @@ -544,8 +452,78 @@ SECTION_RODATA static f32 const lit_3863 = 30.0f; COMPILER_STRIP_GATE(0x80C9195C, &lit_3863); #pragma pop +void daObjMasterSword_c::initCollision() { + static dCcD_SrcCyl ccCylSrc = { + { + {0, {{0, 0, 0}, {0, 0}, 0x79}}, // mObj + {dCcD_SE_NONE, 0, 0, 0, 0}, // mGObjAt + {dCcD_SE_NONE, 0, 0, 0, 4}, // mGObjTg + {0}, // mGObjCo + }, // mObjInf + { + {current.pos.x, current.pos.y, current.pos.z}, // mCenter + 18.0f, // mRadius + 180.0f // mHeight + } // mCyl + }; + + mCcStts.Init(0xFF, 0xFF, this); + mCyl.Set(ccCylSrc); + mCyl.SetStts(&mCcStts); +} + +void daObjMasterSword_c::initBaseMtx() { + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + + Vec scale = {attr(), attr(), attr()}; + mpModel->setBaseScale(scale); + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + + mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); +} + +void daObjMasterSword_c::callInit() { + (this->**mActionFunc)(); +} + +void daObjMasterSword_c::setAction(daObjMasterSword_c::Mode_e i_mode) { + mMode = i_mode; + // mActionFunc = &ActionTable[mMode]; + callInit(); +} + /* 80C90F6C-80C9120C 0004EC 02A0+00 1/1 0/0 0/0 .text create_init__18daObjMasterSword_cFv */ +// matches, but weak function emission is hella weird. cant be linked til its fixed +#ifdef NONMATCHING +void daObjMasterSword_c::create_init() { + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + initCollision(); + initBaseMtx(); + + fopAcM_OnCarryType(this, fopAcM_CARRY_UNK_30); + cLib_onBit(mAttentionInfo.mFlags, 0x10); + mAttentionInfo.field_0x0[4] = 74; + mAttentionInfo.mPosition = current.pos; + mAttentionInfo.mPosition.y += 100.0f; + mEyePos = mAttentionInfo.mPosition; + + dBgS_AcchCir cir_check; + dBgS_ObjAcch obj_check; + + cir_check.SetWall(10.0f, 30.0f); + obj_check.Set(&fopAcM_GetPosition_p(this), &fopAcM_GetOldPosition_p(this), this, 1, &cir_check, + &fopAcM_GetSpeed_p(this), NULL, NULL); + obj_check.CrrPos(dComIfG_Bgsp()); + + field_0x738 = obj_check.GetGroundH(); + field_0x728 = obj_check.m_gnd; + + setAction(MODE_0_e); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -554,12 +532,14 @@ asm void daObjMasterSword_c::create_init() { #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/create_init__18daObjMasterSword_cFv.s" } #pragma pop +#endif /* 80C9120C-80C9127C 00078C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_ObjAcch::~dBgS_ObjAcch() { +// asm dBgS_ObjAcch::~dBgS_ObjAcch() { +extern "C" asm void __dt__12dBgS_ObjAcchFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__12dBgS_ObjAcchFv.s" } @@ -569,7 +549,8 @@ asm dBgS_ObjAcch::~dBgS_ObjAcch() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_AcchCir::~dBgS_AcchCir() { +// asm dBgS_AcchCir::~dBgS_AcchCir() { +extern "C" asm void __dt__12dBgS_AcchCirFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__12dBgS_AcchCirFv.s" } @@ -579,7 +560,8 @@ asm dBgS_AcchCir::~dBgS_AcchCir() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGCyl::~cM3dGCyl() { +// asm cM3dGCyl::~cM3dGCyl() { +extern "C" asm void __dt__8cM3dGCylFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__8cM3dGCylFv.s" } @@ -589,7 +571,8 @@ asm cM3dGCyl::~cM3dGCyl() { #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_master_sword/d_a_obj_master_sword/__dt__8cM3dGAabFv.s" } @@ -599,7 +582,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_master_sword/d_a_obj_master_sword/__dt__10dCcD_GSttsFv.s" } @@ -609,7 +593,8 @@ asm dCcD_GStts::~dCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// asm J3DFrameCtrl::~J3DFrameCtrl() { +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__dt__12J3DFrameCtrlFv.s" } @@ -617,14 +602,10 @@ asm J3DFrameCtrl::~J3DFrameCtrl() { /* 80C91420-80C91448 0009A0 0028+00 1/0 0/0 0/0 .text * daObjMasterSword_Delete__FP18daObjMasterSword_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMasterSword_Delete(daObjMasterSword_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Delete__FP18daObjMasterSword_c.s" +static int daObjMasterSword_Delete(daObjMasterSword_c* i_this) { + i_this->~daObjMasterSword_c(); + return 1; } -#pragma pop /* 80C91448-80C915E8 0009C8 01A0+00 1/1 0/0 0/0 .text __dt__18daObjMasterSword_cFv */ #pragma push @@ -643,27 +624,45 @@ SECTION_RODATA static u8 const lit_4030[8] = { }; COMPILER_STRIP_GATE(0x80C91960, &lit_4030); +void daObjMasterSword_c::callExecute() { + (this->*mActionFunc[1])(); +} + +void daObjMasterSword_c::setCollision() { + dComIfG_Ccsp()->Set(&mCyl); +} + +int daObjMasterSword_c::execute() { + callExecute(); + setCollision(); + + mBtk.play(); + mBrk.play(); + + if (dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[73])) { + dComIfGs_onItemFirstBit(MASTER_SWORD); + dMeter2Info_setSword(MASTER_SWORD, false); + dComIfGs_setSelectEquipSword(MASTER_SWORD); + + i_dComIfGp_setItemLifeCount(dComIfGs_getMaxLife(), 0); + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[getFlagNo()]); + fopAcM_delete(this); + } + + return 1; +} + /* 80C915E8-80C916F4 000B68 010C+00 1/0 0/0 0/0 .text * daObjMasterSword_Execute__FP18daObjMasterSword_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMasterSword_Execute(daObjMasterSword_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Execute__FP18daObjMasterSword_c.s" +static int daObjMasterSword_Execute(daObjMasterSword_c* i_this) { + return i_this->execute(); } -#pragma pop /* 80C916F4-80C91714 000C74 0020+00 1/0 0/0 0/0 .text * daObjMasterSword_Draw__FP18daObjMasterSword_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjMasterSword_Draw(daObjMasterSword_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/daObjMasterSword_Draw__FP18daObjMasterSword_c.s" +static int daObjMasterSword_Draw(daObjMasterSword_c* i_this) { + return i_this->draw(); } -#pragma pop /* ############################################################################################## */ /* 80C91968-80C9196C 000028 0004+00 0/1 0/0 0/0 .rodata @4091 */ @@ -681,26 +680,56 @@ COMPILER_STRIP_GATE(0x80C9196C, &lit_4092); #pragma pop /* 80C91714-80C91894 000C94 0180+00 1/1 0/0 0/0 .text draw__18daObjMasterSword_cFv */ +// weird cXyz stuff +#ifdef NONMATCHING +int daObjMasterSword_c::draw() { + if (dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[73])) { + return 1; + } + + J3DModelData* modelData = mpModel->getModelData(); + g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr); + + dComIfGd_setListBG(); + mBtk.entry(modelData); + mBrk.entry(modelData); + mDoExt_modelUpdateDL(mpModel); + + mBtk.remove(modelData); + mBrk.remove(modelData); + dComIfGd_setList(); + + cXyz sp14, sp8 = cXyz(current.pos.x, current.pos.y + 50.0f, current.pos.z); + mShadowKey = + dComIfGd_setShadow(mShadowKey, 1, mpModel, &sp14, 200.0f, 10.0f, current.pos.y, field_0x738, + field_0x728, &mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMasterSword_c::draw() { +asm int daObjMasterSword_c::draw() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/draw__18daObjMasterSword_cFv.s" } #pragma pop +#endif /* 80C91894-80C9189C 000E14 0008+00 1/0 0/0 0/0 .text * daObjMasterSword_IsDelete__FP18daObjMasterSword_c */ -static bool daObjMasterSword_IsDelete(daObjMasterSword_c* param_0) { - return true; +static int daObjMasterSword_IsDelete(daObjMasterSword_c* param_0) { + return 1; } /* 80C9189C-80C918E4 000E1C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ #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_master_sword/d_a_obj_master_sword/__dt__10cCcD_GSttsFv.s" } @@ -710,8 +739,7 @@ asm cCcD_GStts::~cCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __sinit_d_a_obj_master_sword_cpp() { - nofralloc +asm void __sinit_d_a_obj_master_sword_cpp(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_master_sword/d_a_obj_master_sword/__sinit_d_a_obj_master_sword_cpp.s" } #pragma pop diff --git a/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp b/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp index b5405e580a..52ff0f186e 100644 --- a/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp +++ b/rel/d/a/obj/d_a_obj_mgate/d_a_obj_mgate.cpp @@ -58,7 +58,7 @@ void daObjMGate_c::setBaseMtx() { mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::ZXYrotM(mGateAngle.x, mGateAngle.y, mGateAngle.z); mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); if (mpKeyModel != NULL) { cXyz key_offset(l_key_offset[mKind]); @@ -223,7 +223,7 @@ int daObjMGate_c::Execute(Mtx** param_0) { } } - *param_0 = &field_0x56c; + *param_0 = &mBgMtx; setBaseMtx(); mGateAngle.y = mGateSwingMultiplier * cM_ssin(mCounter * 4000); diff --git a/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp b/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp index a7e8355bc5..284cb4390e 100644 --- a/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp +++ b/rel/d/a/obj/d_a_obj_onsen/d_a_obj_onsen.cpp @@ -20,7 +20,7 @@ void daObjOnsen_c::setBaseMtx() { mDoMtx_stack_c::YrotM(shape_angle.y); PSMTXCopy(mDoMtx_stack_c::now, mpModel[0]->mBaseTransformMtx); PSMTXCopy(mDoMtx_stack_c::now, mpModel[1]->mBaseTransformMtx); - PSMTXCopy(mDoMtx_stack_c::now, field_0x56c); + PSMTXCopy(mDoMtx_stack_c::now, mBgMtx); } /* 80CA7C28-80CA7C74 000148 004C+00 1/0 0/0 0/0 .text Create__12daObjOnsen_cFv */ @@ -92,7 +92,7 @@ int daObjOnsen_c::create1st() { /* 80CA7EEC-80CA7F1C 00040C 0030+00 1/0 0/0 0/0 .text Execute__12daObjOnsen_cFPPA3_A4_f */ int daObjOnsen_c::Execute(Mtx** i_mtx) { - *i_mtx = &field_0x56c; + *i_mtx = &mBgMtx; mpBtk->play(); return 1; } diff --git a/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp b/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp index a2c437b6a7..af2f76a103 100644 --- a/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp +++ b/rel/d/a/obj/d_a_obj_tgake/d_a_obj_tgake.cpp @@ -21,7 +21,7 @@ void daObjGake_c::setBaseMtx() { mDoMtx_stack_c::YrotM(shape_angle.y); mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); } /* 80D0BCB8-80D0BD30 000118 0078+00 1/0 0/0 0/0 .text Create__11daObjGake_cFv */ @@ -72,8 +72,8 @@ int daObjGake_c::Execute(Mtx** param_0) { (mEventBit1 != 0x3FF && !i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[mEventBit1]))) { - if (field_0x568 != NULL && field_0x568->ChkUsed()) { - dComIfG_Bgsp().Release(field_0x568); + if (mpBgW != NULL && mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); } mHide = true; @@ -81,15 +81,15 @@ int daObjGake_c::Execute(Mtx** param_0) { } if (mEventBit1 != 0x3FF && i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[mEventBit1])) { - if (field_0x568 != NULL && !field_0x568->ChkUsed()) { - dComIfG_Bgsp().Regist(field_0x568, this); + if (mpBgW != NULL && !mpBgW->ChkUsed()) { + dComIfG_Bgsp().Regist(mpBgW, this); } mHide = false; return 1; } - *param_0 = &field_0x56c; + *param_0 = &mBgMtx; return 1; } diff --git a/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp b/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp index 95ff394360..fecfffb48f 100644 --- a/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp +++ b/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.cpp @@ -1,231 +1,128 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_obj_usaku -// +/** + * d_a_obj_usaku.cpp + * Horse Fence + */ #include "rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku.h" -#include "dol2asm.h" - -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct obj_usaku_class {}; - -struct mDoMtx_stack_c { - static u8 now[48]; -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct cXyz {}; - -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 dBgW_Base {}; - -struct dBgW { - /* 8007B970 */ dBgW(); - /* 8007B9C0 */ void Move(); -}; - -struct dBgS { - /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*); -}; - -struct csXyz {}; - -struct cBgD_t {}; - -struct cBgW { - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); -}; - -struct cBgS_PolyInfo {}; - -struct cBgS { - /* 80074250 */ void Release(dBgW_Base*); -}; - -struct J3DModel {}; - -// -// Forward References: -// - -extern "C" static void daObj_Usaku_Draw__FP15obj_usaku_class(); -extern "C" static void daObj_Usaku_Execute__FP15obj_usaku_class(); -extern "C" static bool daObj_Usaku_IsDelete__FP15obj_usaku_class(); -extern "C" static void daObj_Usaku_Delete__FP15obj_usaku_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daObj_Usaku_Create__FP10fopAc_ac_c(); -extern "C" extern char const* const d_a_obj_usaku__stringBase0; -extern "C" extern void* g_profile_OBJ_USAKU[12]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void* __nw__FUl(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; - -// -// Declarations: -// +#include "JSystem/JKernel/JKRHeap.h" +#include "d/bg/d_bg_w.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" /* 80D20F58-80D20FBC 000078 0064+00 1/0 0/0 0/0 .text daObj_Usaku_Draw__FP15obj_usaku_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Usaku_Draw(obj_usaku_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Draw__FP15obj_usaku_class.s" +static int daObj_Usaku_Draw(obj_usaku_class* i_this) { + g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->mTevStr); + g_env_light.setLightTevColorType_MAJI(i_this->mpModel, &i_this->mTevStr); + mDoExt_modelUpdateDL(i_this->mpModel); + + return 1; } -#pragma pop /* 80D20FBC-80D21048 0000DC 008C+00 2/1 0/0 0/0 .text daObj_Usaku_Execute__FP15obj_usaku_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Usaku_Execute(obj_usaku_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Execute__FP15obj_usaku_class.s" +static int daObj_Usaku_Execute(obj_usaku_class* i_this) { + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z); + mDoMtx_stack_c::YrotM(i_this->shape_angle.y); + + i_this->mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); + if (i_this->mpBgW != NULL) { + PSMTXCopy(mDoMtx_stack_c::get(), i_this->mBgMtx); + i_this->mpBgW->Move(); + } + + return 1; } -#pragma pop /* 80D21048-80D21050 000168 0008+00 1/0 0/0 0/0 .text daObj_Usaku_IsDelete__FP15obj_usaku_class */ -static bool daObj_Usaku_IsDelete(obj_usaku_class* param_0) { - return true; +static int daObj_Usaku_IsDelete(obj_usaku_class* i_this) { + return 1; } -/* ############################################################################################## */ -/* 80D212EC-80D212EC 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D212EC = "Obj_usaku"; -#pragma pop - /* 80D21050-80D210A8 000170 0058+00 1/0 0/0 0/0 .text daObj_Usaku_Delete__FP15obj_usaku_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Usaku_Delete(obj_usaku_class* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Delete__FP15obj_usaku_class.s" +static int daObj_Usaku_Delete(obj_usaku_class* i_this) { + dComIfG_resDelete(&i_this->mPhase, "Obj_usaku"); + + if (i_this->mpBgW != NULL) { + dComIfG_Bgsp().Release(i_this->mpBgW); + } + return 1; } -#pragma pop /* 80D210A8-80D211AC 0001C8 0104+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void useHeapInit(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/useHeapInit__FP10fopAc_ac_c.s" +static int useHeapInit(fopAc_ac_c* i_this) { + obj_usaku_class* a_this = (obj_usaku_class*)i_this; + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_usaku", 4); + a_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (a_this->mpModel == NULL) { + return 0; + } + + a_this->mpBgW = new dBgW(); + if (a_this->mpBgW == NULL) { + return 0; + } + + cBgD_t* pdzb = (cBgD_t*)dComIfG_getObjectRes("Obj_usaku", 7); + if (a_this->mpBgW->Set(pdzb, cBgW::MOVE_BG_e, &a_this->mBgMtx) == 1) { + return 0; + } + + a_this->mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 80D212DC-80D212E0 000000 0004+00 1/1 0/0 0/0 .rodata @3744 */ -SECTION_RODATA static f32 const lit_3744 = -300.0f; -COMPILER_STRIP_GATE(0x80D212DC, &lit_3744); - -/* 80D212E0-80D212E4 000004 0004+00 0/1 0/0 0/0 .rodata @3745 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3745 = -600.0f; -COMPILER_STRIP_GATE(0x80D212E0, &lit_3745); -#pragma pop - -/* 80D212E4-80D212E8 000008 0004+00 0/1 0/0 0/0 .rodata @3746 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3746 = 300.0f; -COMPILER_STRIP_GATE(0x80D212E4, &lit_3746); -#pragma pop - -/* 80D212E8-80D212EC 00000C 0004+00 0/1 0/0 0/0 .rodata @3747 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3747 = 600.0f; -COMPILER_STRIP_GATE(0x80D212E8, &lit_3747); -#pragma pop /* 80D211AC-80D212D4 0002CC 0128+00 1/0 0/0 0/0 .text daObj_Usaku_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObj_Usaku_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_usaku/d_a_obj_usaku/daObj_Usaku_Create__FP10fopAc_ac_c.s" +static int daObj_Usaku_Create(fopAc_ac_c* i_this) { + fopAcM_SetupActor(i_this, obj_usaku_class); + obj_usaku_class* a_this = (obj_usaku_class*)i_this; + + int phase = dComIfG_resLoad(&a_this->mPhase, "Obj_usaku"); + if (phase == cPhs_COMPLEATE_e) { + a_this->field_0x570 = fopAcM_GetParam(a_this) & 0xFF; + if (a_this->field_0x570 == 0xFF) { + a_this->field_0x570 = 0; + } + + if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0xC60)) { + return cPhs_ERROR_e; + } + + if (a_this->mpBgW != NULL && dComIfG_Bgsp().Regist(a_this->mpBgW, a_this)) { + return cPhs_ERROR_e; + } + + a_this->mCullMtx = a_this->mpModel->getBaseTRMtx(); + fopAcM_SetMin(a_this, -300.0f, -600.0f, -300.0f); + fopAcM_SetMax(a_this, 300.0f, 600.0f, 300.0f); + daObj_Usaku_Execute(a_this); + } + + return phase; } -#pragma pop /* ############################################################################################## */ /* 80D212F8-80D21318 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Usaku_Method */ -SECTION_DATA static void* l_daObj_Usaku_Method[8] = { - (void*)daObj_Usaku_Create__FP10fopAc_ac_c, - (void*)daObj_Usaku_Delete__FP15obj_usaku_class, - (void*)daObj_Usaku_Execute__FP15obj_usaku_class, - (void*)daObj_Usaku_IsDelete__FP15obj_usaku_class, - (void*)daObj_Usaku_Draw__FP15obj_usaku_class, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class l_daObj_Usaku_Method = { + (process_method_func)daObj_Usaku_Create, (process_method_func)daObj_Usaku_Delete, + (process_method_func)daObj_Usaku_Execute, (process_method_func)daObj_Usaku_IsDelete, + (process_method_func)daObj_Usaku_Draw, }; /* 80D21318-80D21348 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_USAKU */ -SECTION_DATA extern void* g_profile_OBJ_USAKU[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x012A0000, (void*)&g_fpcLf_Method, - (void*)0x000005B4, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x004E0000, (void*)&l_daObj_Usaku_Method, - (void*)0x00040100, (void*)0x000E0000, +extern actor_process_profile_definition g_profile_OBJ_USAKU = { + -3, + 7, + -3, + PROC_OBJ_USAKU, + &g_fpcLf_Method.mBase, + sizeof(obj_usaku_class), + 0, + 0, + &g_fopAc_Method.base, + 78, + &l_daObj_Usaku_Method, + 0x40100, + 0, + 14, }; - -/* 80D212EC-80D212EC 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp b/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp index 81bfa84a1d..0bdcf2575d 100644 --- a/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp +++ b/rel/d/a/obj/d_a_obj_web1/d_a_obj_web1.cpp @@ -238,7 +238,7 @@ static int useHeapInit(fopAc_ac_c* i_this) { } cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Obj_web1", 11); - if (_this->mpBgW->Set(dzb, 1, &_this->mMtx) == 1) { + if (_this->mpBgW->Set(dzb, cBgW::MOVE_BG_e, &_this->mMtx) == 1) { return 0; } diff --git a/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp b/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp index c0c2aeb3cd..33aec83a66 100644 --- a/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp +++ b/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.cpp @@ -1,51 +1,38 @@ /** * d_a_tag_chgrestart.cpp - * + * */ #include "rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart.h" #include "JSystem/JKernel/JKRHeap.h" #include "d/d_procname.h" -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void getStatusRoomDt__20dStage_roomControl_cFi(); -extern "C" void setRoom__13dSv_restart_cFRC4cXyzsSc(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; - /* 80D56758-80D567E4 000078 008C+00 1/1 0/0 0/0 .text Create__17daTagChgRestart_cFv */ s32 daTagChgRestart_c::Create() { - field_0x568[0].x = -100.0f * mScale.x; - field_0x568[0].z = -100.0f * mScale.z; + mVertices[0].x = -100.0f * mScale.x; + mVertices[0].z = -100.0f * mScale.z; - field_0x568[1].x = 100.0f * mScale.x; - field_0x568[1].z = -100.0f * mScale.z; + mVertices[1].x = 100.0f * mScale.x; + mVertices[1].z = -100.0f * mScale.z; - field_0x568[2].x = 100.0f * mScale.x; - field_0x568[2].z = 100.0f * mScale.z; + mVertices[2].x = 100.0f * mScale.x; + mVertices[2].z = 100.0f * mScale.z; - field_0x568[3].x = -100.0f * mScale.x; - field_0x568[3].z = 100.0f * mScale.z; + mVertices[3].x = -100.0f * mScale.x; + mVertices[3].z = 100.0f * mScale.z; - field_0x568[3].y = 0.0f; - field_0x568[2].y = 0.0f; - field_0x568[1].y = 0.0f; - field_0x568[0].y = 0.0f; + mVertices[3].y = 0.0f; + mVertices[2].y = 0.0f; + mVertices[1].y = 0.0f; + mVertices[0].y = 0.0f; return 1; } /* 80D567E4-80D56878 000104 0094+00 1/1 0/0 0/0 .text create__17daTagChgRestart_cFv */ -s32 daTagChgRestart_c::create() { +s32 daTagChgRestart_c::create() { fopAcM_SetupActor(this, daTagChgRestart_c); - + if (!Create()) { return cPhs_ERROR_e; } @@ -54,10 +41,8 @@ s32 daTagChgRestart_c::create() { } /* 80D568B8-80D56A84 0001D8 01CC+00 1/1 0/0 0/0 .text execute__17daTagChgRestart_cFv */ -#ifdef NONMATCHING -// do-while loop is wrong s32 daTagChgRestart_c::execute() { - if (i_fopAcM_isSwitch(this,daTagChgRestart_prm::getSwNo(this))) { + if (i_fopAcM_isSwitch(this, daTagChgRestart_prm::getSwNo(this))) { return 1; } @@ -66,46 +51,40 @@ s32 daTagChgRestart_c::execute() { pos -= orig.pos; mDoMtx_stack_c::YrotS(-current.angle.y); - mDoMtx_stack_c::multVec(&pos,&pos); + mDoMtx_stack_c::multVec(&pos, &pos); + + if (mVertices[0].x < pos.x && mVertices[0].z < pos.z && mVertices[2].x > pos.x && + mVertices[2].z > pos.z) + { + cXyz restart_pos = orig.pos; + s16 restart_angle = orig.angle.y; - if (field_0x568[0].x < pos.x && field_0x568[0].z < pos.z && - field_0x568[2].x > pos.x && field_0x568[2].z > pos.z) { - cXyz l_restartPos = orig.pos; - s16 l_restartAngle = orig.angle.y; - u8 playerNo = daTagChgRestart_prm::getPlayerNo(this); if (playerNo != 0xFF) { - dStage_roomStatus_c* roomStatusDt = dComIfGp_roomControl_getStatusRoomDt(fopAcM_GetRoomNo(this)); - stage_actor_class* actor = roomStatusDt->mRoomDt.getPlayer(); - stage_actor_data_class* actor_data = actor->mEntries; - int entryNum = actor->mEntryNum; + dStage_roomStatus_c* roomStatusDt = + dComIfGp_roomControl_getStatusRoomDt(fopAcM_GetRoomNo(this)); + stage_actor_class* player_data = roomStatusDt->mRoomDt.getPlayer(); - do { - actor_data++; + stage_actor_data_class* entry_p = player_data->mEntries; + for (int i = 0; i < player_data->mEntryNum; i++) { + if ((entry_p->mAngle.z & 0xFF) == playerNo) { + break; + } + + entry_p++; } - while (entryNum > 0 && actor->mEntryNum > playerNo && actor_data != 0); - - l_restartPos = actor_data->mSpawnPos; - l_restartAngle = actor_data->mAngle.y; + + restart_pos = entry_p->mSpawnPos; + restart_angle = entry_p->mAngle.y; } - + s32 l_roomNo = fopAcM_GetRoomNo(player); - dComIfGs_setRestartRoom(l_restartPos,l_restartAngle,l_roomNo); - i_fopAcM_onSwitch(this,daTagChgRestart_prm::getSwNo(this)); + dComIfGs_setRestartRoom(restart_pos, restart_angle, l_roomNo); + i_fopAcM_onSwitch(this, daTagChgRestart_prm::getSwNo(this)); } return 1; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 daTagChgRestart_c::execute() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_chgrestart/d_a_tag_chgrestart/execute__17daTagChgRestart_cFv.s" -} -#pragma pop -#endif /* 80D56A84-80D56A8C 0003A4 0008+00 1/1 0/0 0/0 .text _delete__17daTagChgRestart_cFv */ s32 daTagChgRestart_c::_delete() { @@ -125,8 +104,8 @@ static s32 daTagChgRestart_Delete(daTagChgRestart_c* i_this) { } /* 80D56ACC-80D56AEC 0003EC 0020+00 1/0 0/0 0/0 .text daTagChgRestart_Create__FP10fopAc_ac_c */ -static s32 daTagChgRestart_Create(fopAc_ac_c* param_0) { - return static_cast(param_0)->create(); +static s32 daTagChgRestart_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } /* ############################################################################################## */ @@ -134,7 +113,7 @@ static s32 daTagChgRestart_Create(fopAc_ac_c* param_0) { static actor_method_class l_daTagChgRestart_Method = { (process_method_func)daTagChgRestart_Create, (process_method_func)daTagChgRestart_Delete, - (process_method_func)daTagChgRestart_Execute + (process_method_func)daTagChgRestart_Execute, }; /* 80D56B20-80D56B50 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_ChgRestart */ diff --git a/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp b/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp index 42604d127f..74e3aab553 100644 --- a/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp +++ b/rel/d/a/tag/d_a_tag_hjump/d_a_tag_hjump.cpp @@ -55,7 +55,7 @@ int daTagHjump_c::create() { mDoMtx_stack_c::get()[1][3] -= 100.0f; current.pos.y -= 100.0f; - field_0x568->SetLock(); + mpBgW->SetLock(); mScale.x = 250.0f; mScale.y = 350.0f; mScale.z = 400.0f; diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp index 84abe067f9..c1499ce3f7 100644 --- a/src/d/bg/d_bg_s.cpp +++ b/src/d/bg/d_bg_s.cpp @@ -130,7 +130,8 @@ bool cBgS::LineCross(cBgS_LinChk* p_line) { cBgS_ChkElm* elm = m_chk_element; for (int i = 0; i < 0x100; i++) { if (elm->ChkUsed() && !elm->m_bgw_base_ptr->ChkNotReady() && - !p_line->ChkSameActorPid(elm->m_actor_id) && elm->m_bgw_base_ptr->LineCheck(p_line)) { + !p_line->ChkSameActorPid(elm->m_actor_id) && elm->m_bgw_base_ptr->LineCheck(p_line)) + { p_line->SetActorInfo(i, elm->m_bgw_base_ptr, elm->m_actor_id); p_line->SetHit(); } @@ -149,7 +150,8 @@ f32 cBgS::GroundCross(cBgS_GndChk* p_gnd) { cBgS_ChkElm* elm = m_chk_element; for (int i = 0; i < 0x100; i++) { if (elm->ChkUsed() && !elm->m_bgw_base_ptr->ChkNotReady() && - !p_gnd->ChkSameActorPid(elm->m_actor_id) && elm->m_bgw_base_ptr->GroundCross(p_gnd)) { + !p_gnd->ChkSameActorPid(elm->m_actor_id) && elm->m_bgw_base_ptr->GroundCross(p_gnd)) + { p_gnd->SetActorInfo(i, elm->m_bgw_base_ptr, elm->m_actor_id); } elm++; @@ -212,7 +214,8 @@ void* cBgS::ConvDzb(void* p_dzb) { pbgd->m_ti_tbl += (u32)p_dzb; for (int i = 0; i < pbgd->m_g_num; i++) { - ((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset = (u32)p_dzb + ((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset; + ((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset = + (u32)p_dzb + ((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset; } return p_dzb; @@ -726,107 +729,113 @@ bool dBgS::SphChk(dBgS_SphChk* p_sph, void* param_1) { /* 80075774-80075880 0700B4 010C+00 0/0 3/3 0/0 .text * MoveBgCrrPos__4dBgSFRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyzbb */ -void dBgS::MoveBgCrrPos(cBgS_PolyInfo const& poly, bool param_1, cXyz* param_2, csXyz* param_3, - csXyz* param_4, bool param_5, bool param_6) { - if (!param_1 || !poly.ChkBgIndex()) { +void dBgS::MoveBgCrrPos(cBgS_PolyInfo const& i_poly, bool param_1, cXyz* i_pos, csXyz* i_angle, + csXyz* i_shapeAngle, bool param_5, bool param_6) { + if (!param_1 || !i_poly.ChkBgIndex()) { return; - } else { - int bg_index = poly.GetBgIndex(); - if (m_chk_element[bg_index].ChkUsed()) { - dBgW_Base* base = m_chk_element[bg_index].m_bgw_base_ptr; - if ((!param_5 || base->chkStickWall()) && (!param_6 || base->chkStickRoof()) && - base->ChkMoveFlag() && ChkPolySafe(poly)) { - base->CrrPos(poly, m_chk_element[bg_index].m_actor_ptr, param_1, param_2, param_3, - param_4); - } + } + + int bg_index = i_poly.GetBgIndex(); + if (m_chk_element[bg_index].ChkUsed()) { + dBgW_Base* bgw_p = m_chk_element[bg_index].m_bgw_base_ptr; + + if ((!param_5 || bgw_p->chkStickWall()) && (!param_6 || bgw_p->chkStickRoof()) && + bgw_p->ChkMoveFlag() && ChkPolySafe(i_poly)) + { + bgw_p->CrrPos(i_poly, m_chk_element[bg_index].m_actor_ptr, param_1, i_pos, i_angle, + i_shapeAngle); } } } /* 80075880-8007595C 0701C0 00DC+00 0/0 7/7 2/2 .text * MoveBgTransPos__4dBgSFRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz */ -void dBgS::MoveBgTransPos(cBgS_PolyInfo const& poly, bool param_1, cXyz* param_2, csXyz* param_3, - csXyz* param_4) { - if (!param_1 || !poly.ChkBgIndex()) { +void dBgS::MoveBgTransPos(cBgS_PolyInfo const& i_poly, bool param_1, cXyz* i_pos, csXyz* i_angle, + csXyz* i_shapeAngle) { + if (!param_1 || !i_poly.ChkBgIndex()) { return; - } else { - int bg_index = poly.GetBgIndex(); - if (m_chk_element[bg_index].ChkUsed()) { - dBgW_Base* base = m_chk_element[bg_index].m_bgw_base_ptr; - if (base->ChkMoveFlag() && ChkPolySafe(poly)) { - base->TransPos(poly, m_chk_element[bg_index].m_actor_ptr, param_1, param_2, param_3, - param_4); - } + } + + int bg_index = i_poly.GetBgIndex(); + if (m_chk_element[bg_index].ChkUsed()) { + dBgW_Base* bgw_p = m_chk_element[bg_index].m_bgw_base_ptr; + + if (bgw_p->ChkMoveFlag() && ChkPolySafe(i_poly)) { + bgw_p->TransPos(i_poly, m_chk_element[bg_index].m_actor_ptr, param_1, i_pos, i_angle, + i_shapeAngle); } } } /* 8007595C-80075A24 07029C 00C8+00 0/0 6/6 0/0 .text * MoveBgMatrixCrrPos__4dBgSFRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz */ -void dBgS::MoveBgMatrixCrrPos(cBgS_PolyInfo const& poly, bool param_1, cXyz* param_2, - csXyz* param_3, csXyz* param_4) { - if (!param_1 || !poly.ChkBgIndex()) { +void dBgS::MoveBgMatrixCrrPos(cBgS_PolyInfo const& i_poly, bool param_1, cXyz* i_pos, + csXyz* i_angle, csXyz* i_shapeAngle) { + if (!param_1 || !i_poly.ChkBgIndex()) { return; - } else { - int bg_index = poly.GetBgIndex(); - if (m_chk_element[bg_index].ChkUsed()) { - dBgW_Base* base = m_chk_element[bg_index].m_bgw_base_ptr; - if (base->ChkMoveFlag()) { - base->MatrixCrrPos(poly, m_chk_element[bg_index].m_actor_ptr, param_1, param_2, - param_3, param_4); - } + } + + int bg_index = i_poly.GetBgIndex(); + if (m_chk_element[bg_index].ChkUsed()) { + dBgW_Base* bgw_p = m_chk_element[bg_index].m_bgw_base_ptr; + + if (bgw_p->ChkMoveFlag()) { + bgw_p->MatrixCrrPos(i_poly, m_chk_element[bg_index].m_actor_ptr, param_1, i_pos, + i_angle, i_shapeAngle); } } } /* 80075A24-80075AA4 070364 0080+00 1/1 0/0 46/46 .text * dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz */ -void dBgS_MoveBGProc_Typical(dBgW* param_0, void* param_1, cBgS_PolyInfo const& param_2, - bool param_3, cXyz* param_4, csXyz* param_5, csXyz* param_6) { - Mtx tmp; - if (param_0->GetOldInvMtx(tmp) != 0) { - cXyz tmp2; - PSMTXMultVec(tmp, param_4, &tmp2); +void dBgS_MoveBGProc_Typical(dBgW* i_bgw, void* i_actor_ptr, cBgS_PolyInfo const& i_poly, + bool param_3, cXyz* i_pos, csXyz* i_angle, csXyz* i_shapeAngle) { + Mtx m; + if (i_bgw->GetOldInvMtx(m) != NULL) { + cXyz move_old; + PSMTXMultVec(m, i_pos, &move_old); - cXyz tmp3; - PSMTXMultVec(param_0->GetBaseMtxP(), &tmp2, &tmp3); - param_4->x = tmp3.x; - param_4->y = tmp3.y; - param_4->z = tmp3.z; + cXyz move_pos; + PSMTXMultVec(i_bgw->GetBaseMtxP(), &move_old, &move_pos); + i_pos->x = move_pos.x; + i_pos->y = move_pos.y; + i_pos->z = move_pos.z; } } /* 80075AA4-80075AD8 0703E4 0034+00 1/1 0/0 0/0 .text * dBgS_MoveBGProc_RotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz */ -static void dBgS_MoveBGProc_RotY(dBgW* param_0, void* param_1, cBgS_PolyInfo const& param_2, - bool param_3, cXyz* param_4, csXyz* param_5, csXyz* param_6) { - if (param_6 != NULL) { - s16 y = param_0->GetDiffShapeAngleY(); - if (param_6 != NULL) { - param_6->y += y; +static void dBgS_MoveBGProc_RotY(dBgW* i_bgw, void* i_actor_ptr, cBgS_PolyInfo const& i_poly, + bool param_3, cXyz* i_pos, csXyz* i_angle, csXyz* i_shapeAngle) { + if (i_shapeAngle != NULL) { + s16 y = i_bgw->GetDiffShapeAngleY(); + + if (i_shapeAngle != NULL) { + i_shapeAngle->y += y; } - if (param_5 != NULL) { - param_5->y += y; + + if (i_angle != NULL) { + i_angle->y += y; } } } /* 80075AD8-80075B44 070418 006C+00 0/0 0/0 124/124 .text * dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz */ -void dBgS_MoveBGProc_TypicalRotY(dBgW* param_0, void* param_1, cBgS_PolyInfo const& param_2, - bool param_3, cXyz* param_4, csXyz* param_5, csXyz* param_6) { - dBgS_MoveBGProc_Typical(param_0, param_1, param_2, param_3, param_4, param_5, param_6); - dBgS_MoveBGProc_RotY(param_0, param_1, param_2, param_3, param_4, param_5, param_6); +void dBgS_MoveBGProc_TypicalRotY(dBgW* i_bgw, void* i_actor_ptr, cBgS_PolyInfo const& i_poly, + bool param_3, cXyz* i_pos, csXyz* i_angle, csXyz* i_shapeAngle) { + dBgS_MoveBGProc_Typical(i_bgw, i_actor_ptr, i_poly, param_3, i_pos, i_angle, i_shapeAngle); + dBgS_MoveBGProc_RotY(i_bgw, i_actor_ptr, i_poly, param_3, i_pos, i_angle, i_shapeAngle); } /* 80075B44-80075B84 070484 0040+00 0/0 0/0 10/10 .text * dBgS_MoveBGProc_Trans__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz */ -void dBgS_MoveBGProc_Trans(dBgW* param_0, void* param_1, cBgS_PolyInfo const& param_2, bool param_3, - cXyz* param_4, csXyz* param_5, csXyz* param_6) { - cXyz xyz; - param_0->GetTrans(&xyz); +void dBgS_MoveBGProc_Trans(dBgW* i_bgw, void* i_actor_ptr, cBgS_PolyInfo const& i_poly, + bool param_3, cXyz* i_pos, csXyz* i_angle, csXyz* i_shapeAngle) { + cXyz trans; + i_bgw->GetTrans(&trans); - PSVECAdd(param_4, &xyz, param_4); + PSVECAdd(i_pos, &trans, i_pos); } /* 80075B84-80075BF4 0704C4 0070+00 0/0 1/1 2/2 .text @@ -867,7 +876,8 @@ bool dBgS::PushPullCallBack(cBgS_PolyInfo const& param_0, fopAc_ac_c* param_1, s return false; } - return base->GetPushPullCallback()(m_chk_element[bg_index].m_actor_ptr, param_1, param_2, param_3); + return base->GetPushPullCallback()(m_chk_element[bg_index].m_actor_ptr, param_1, param_2, + param_3); } /* 80075D0C-80075D7C 07064C 0070+00 0/0 8/8 1/1 .text dBgS_CheckBWallPoly__FRC13cBgS_PolyInfo */ diff --git a/src/d/bg/d_bg_s_movebg_actor.cpp b/src/d/bg/d_bg_s_movebg_actor.cpp index 3c515f6883..58ef5c9a44 100644 --- a/src/d/bg/d_bg_s_movebg_actor.cpp +++ b/src/d/bg/d_bg_s_movebg_actor.cpp @@ -1,7 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: d/bg/d_bg_s_movebg_actor -// +/** + * d_bg_s_movebg_actor.cpp + * Non-static BG actor base + */ #include "d/bg/d_bg_s_movebg_actor.h" #include "d/bg/d_bg_w.h" @@ -9,21 +9,9 @@ #include "f_op/f_op_actor_mng.h" #include "m_Do/m_Do_mtx.h" -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// - /* 80078624-80078668 072F64 0044+00 0/0 0/0 173/173 .text __ct__16dBgS_MoveBgActorFv */ dBgS_MoveBgActor::dBgS_MoveBgActor() { - field_0x568 = NULL; + mpBgW = NULL; } /* 80078668-80078688 072FA8 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */ @@ -88,85 +76,86 @@ int dBgS_MoveBgActor::MoveBGCreateHeap() { } if (m_dzb_id == -1) { - field_0x568 = NULL; - return 1; - } else { - field_0x568 = new dBgW(); - if (field_0x568 != NULL) { - cBgD_t* res = (cBgD_t*)dComIfG_getObjectRes(m_name, m_dzb_id); - if (!field_0x568->Set(res, 1, &field_0x56c)) { - if (m_set_func != NULL) { - field_0x568->SetCrrFunc(m_set_func); - } - } else { - goto RET; // probably fake match, clean up later - } - } else { - RET: - field_0x568 = NULL; - return 0; - } - + mpBgW = NULL; return 1; } + + mpBgW = new dBgW(); + if (mpBgW != NULL) { + cBgD_t* res = (cBgD_t*)dComIfG_getObjectRes(m_name, m_dzb_id); + if (!mpBgW->Set(res, cBgW::MOVE_BG_e, &mBgMtx)) { + if (m_set_func != NULL) { + mpBgW->SetCrrFunc(m_set_func); + } + } else { + goto RET; // probably fake match, clean up later + } + } else { + RET: + mpBgW = NULL; + return 0; + } + + return 1; } /* 800787BC-800788DC 0730FC 0120+00 0/0 0/0 169/169 .text * MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f */ -// close -int dBgS_MoveBgActor::MoveBGCreate(char const* p_name, int dzb_id, MoveBGActor_SetFunc set_func, - u32 param_3, Mtx* param_4) { - if (param_4 == NULL) { +int dBgS_MoveBgActor::MoveBGCreate(char const* i_arcName, int i_dzb_id, + MoveBGActor_SetFunc i_setFunc, u32 i_heapSize, Mtx* i_bgMtx) { + if (i_bgMtx == NULL) { mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); } else { - PSMTXCopy(*param_4, field_0x56c); + PSMTXCopy(*i_bgMtx, mBgMtx); } - m_name = p_name; - m_dzb_id = dzb_id; - m_set_func = set_func; + m_name = i_arcName; + m_dzb_id = i_dzb_id; + m_set_func = i_setFunc; - if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, param_3)) { - return 5; - } else { - if (field_0x568 != NULL && dComIfG_Bgsp().Regist(field_0x568, this)) { - return 5; - } else { - return Create() ? 4 : 5; - } + if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, i_heapSize)) { + return cPhs_ERROR_e; } + + if (mpBgW != NULL && dComIfG_Bgsp().Regist(mpBgW, this)) { + return cPhs_ERROR_e; + } + + // return Create() ? cPhs_COMPLEATE_e : cPhs_ERROR_e; // using enums here changes code gen + return Create() ? 4 : 5; } /* 800788DC-80078950 07321C 0074+00 0/0 0/0 169/169 .text MoveBGDelete__16dBgS_MoveBgActorFv */ int dBgS_MoveBgActor::MoveBGDelete() { int ret = Delete(); - if (field_0x568 != NULL && field_0x568->ChkUsed()) { - dComIfG_Bgsp().Release(field_0x568); + if (mpBgW != NULL && mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); } return ret; } /* 80078950-80078A14 073290 00C4+00 0/0 0/0 183/183 .text MoveBGExecute__16dBgS_MoveBgActorFv */ int dBgS_MoveBgActor::MoveBGExecute() { - Mtx* tmp = NULL; + Mtx* new_mtx = NULL; - int ret = Execute(&tmp); - if (tmp == NULL) { + int ret = Execute(&new_mtx); + if (new_mtx == NULL) { mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z); - PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c); + PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx); } else { - PSMTXCopy(*tmp, field_0x56c); + PSMTXCopy(*new_mtx, mBgMtx); } - if (field_0x568 != NULL) { - field_0x568->Move(); + if (mpBgW != NULL) { + mpBgW->Move(); } + return ret; } diff --git a/src/d/bg/d_bg_w.cpp b/src/d/bg/d_bg_w.cpp index 53721ecaa4..c5c1307860 100644 --- a/src/d/bg/d_bg_w.cpp +++ b/src/d/bg/d_bg_w.cpp @@ -4,10 +4,10 @@ // #include "d/bg/d_bg_w.h" -#include "SSystem/SComponent/c_math.h" #include "SSystem/SComponent/c_bg_s_shdw_draw.h" -#include "d/bg/d_bg_s_sph_chk.h" +#include "SSystem/SComponent/c_math.h" #include "d/bg/d_bg_s_cap_poly.h" +#include "d/bg/d_bg_s_sph_chk.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "global.h" @@ -420,22 +420,22 @@ SECTION_SDATA2 static u8 lit_3717[4] = { /* 80079294-8007933C 073BD4 00A8+00 1/1 0/0 0/0 .text __ct__4cBgWFv */ cBgW::cBgW() { pm_bgd = NULL; - field_0x88 = 0x20; - field_0x89 = 1; - field_0x90 = 0; - field_0x7c.set(FLOAT_LABEL(lit_3717), FLOAT_LABEL(lit_3717), FLOAT_LABEL(lit_3717)); + mFlags = GLOBAL_e; + mNeedsFullTransform = 1; + mMoveCounter = 0; + mTransVel.set(FLOAT_LABEL(lit_3717), FLOAT_LABEL(lit_3717), FLOAT_LABEL(lit_3717)); pm_tri = NULL; pm_rwg = NULL; - field_0xa4 = NULL; + pm_blk = NULL; pm_node_tree = NULL; pm_grp = NULL; pm_vtx_tbl = NULL; pm_base = NULL; PSMTXIdentity(m_inv_mtx); - PSMTXIdentity(field_0x4c); - field_0x92 = 0xFFFF; + PSMTXIdentity(m_mtx); + m_rootGrpIdx = 0xFFFF; field_0x91 = 0; } @@ -455,7 +455,7 @@ void cBgW::FreeArea() { pm_tri = NULL; pm_rwg = NULL; pm_node_tree = NULL; - field_0xa4 = NULL; + pm_blk = NULL; pm_grp = NULL; pm_vtx_tbl = NULL; } @@ -463,10 +463,10 @@ void cBgW::FreeArea() { /* 800793C4-80079484 073D04 00C0+00 2/2 0/0 1/1 .text GlobalVtx__4cBgWFv */ void cBgW::GlobalVtx() { if (pm_base != NULL) { - if (!field_0x89) { + if (!mNeedsFullTransform) { for (int i = 0; i < pm_bgd->m_v_num; i++) { Vec* vtx = &pm_vtx_tbl[i]; - PSVECAdd(vtx, &field_0x7c, vtx); + PSVECAdd(vtx, &mTransVel, vtx); } } else { for (int i = 0; i < pm_bgd->m_v_num; i++) { @@ -480,16 +480,16 @@ void cBgW::GlobalVtx() { // matches with literals #ifdef NONMATCHING bool cBgW::SetVtx() { - if (field_0x88 & 0x10) { + if (mFlags & NO_VTX_TBL_e) { pm_vtx_tbl = NULL; - } else if (field_0x88 & 0x1) { + } else if (mFlags & MOVE_BG_e) { pm_vtx_tbl = new Vec[pm_bgd->m_v_num]; if (pm_vtx_tbl == NULL) { return true; } - if (field_0x88 & 0x40) { + if (mFlags & CBGW_UNK_FLAG_40) { for (int i = 0; i < pm_bgd->m_v_num; i++) { pm_vtx_tbl[i].x = 0.0f; pm_vtx_tbl[i].y = 0.0f; @@ -517,18 +517,18 @@ asm bool cBgW::SetVtx() { /* 80079564-80079668 073EA4 0104+00 2/0 1/0 0/0 .text CalcPlane__4cBgWFv */ void cBgW::CalcPlane() { - dzb_tri_data* tri_data = pm_bgd->m_t_tbl; + cBgD_Tri_t* tri_data = pm_bgd->m_t_tbl; if (pm_vtx_tbl != NULL) { - if (!field_0x89) { + if (!mNeedsFullTransform) { for (int i = 0; i < pm_bgd->m_t_num; i++) { - pm_tri[i].m_plane.mD -= PSVECDotProduct(&pm_tri[i].m_plane.mNormal, &field_0x7c); + pm_tri[i].m_plane.mD -= PSVECDotProduct(&pm_tri[i].m_plane.mNormal, &mTransVel); } } else { for (int i = 0; i < pm_bgd->m_t_num; i++) { - pm_tri[i].m_plane.SetupFrom3Vtx(&pm_vtx_tbl[tri_data[i].field_0x0], - &pm_vtx_tbl[tri_data[i].field_0x2], - &pm_vtx_tbl[tri_data[i].field_0x4]); + pm_tri[i].m_plane.SetupFrom3Vtx(&pm_vtx_tbl[tri_data[i].m_vtx_idx0], + &pm_vtx_tbl[tri_data[i].m_vtx_idx1], + &pm_vtx_tbl[tri_data[i].m_vtx_idx2]); } } } @@ -561,17 +561,17 @@ extern "C" asm void __dt__11cBgW_TriElmFv() { cBgW_TriElm::cBgW_TriElm() {} /* 80079770-800797BC 0740B0 004C+00 1/1 0/0 0/0 .text BlckConnect__4cBgWFPUsPii */ -void cBgW::BlckConnect(u16* param_0, int* param_1, int param_2) { - if (*param_0 == 0xFFFF) { - *param_0 = param_2; +void cBgW::BlckConnect(u16* i_start_idx, int* i_prev_idx, int i_idx) { + if (*i_start_idx == 0xFFFF) { + *i_start_idx = i_idx; } - if (*param_1 != 0xFFFF) { - pm_rwg[*param_1].field_0x0 = param_2; + if (*i_prev_idx != 0xFFFF) { + pm_rwg[*i_prev_idx].m_next = i_idx; } - *param_1 = param_2; - pm_rwg[*param_1].field_0x0 = 0xFFFF; + *i_prev_idx = i_idx; + pm_rwg[*i_prev_idx].m_next = 0xFFFF; } /* 800797BC-8007998C 0740FC 01D0+00 2/0 1/0 0/0 .text ClassifyPlane__4cBgWFv */ @@ -581,37 +581,39 @@ void cBgW::ClassifyPlane() { if (pm_vtx_tbl == NULL) { return; } - + for (int i = 0; i < pm_bgd->m_b_num; i++) { - int local_2c = pm_bgd->m_b_tbl[i].field_0x0; - int uVar4; + int start_idx = pm_bgd->m_b_tbl[i].field_0x0; + int end_idx; if (i != pm_bgd->m_b_num - 1) { - uVar4 = pm_bgd->m_b_tbl[i + 1].field_0x0 - 1; + end_idx = pm_bgd->m_b_tbl[i + 1].field_0x0 - 1; } else { - uVar4 = pm_bgd->m_t_num - 1; + end_idx = pm_bgd->m_t_num - 1; } - field_0xa4[i].field_0x0 = 0xffff; - field_0xa4[i].field_0x2 = 0xffff; - field_0xa4[i].field_0x4 = 0xffff; - int local_30; - int local_34; - int local_38 = 0xffff; - local_34 = 0xffff; - local_30 = 0xffff; - - for (int uVar3 = local_2c; uVar3 <= uVar4; uVar3++) { - f32 dVar8 = pm_tri[uVar3].m_plane.i_GetNP()->y; - if (!cM3d_IsZero(pm_tri[uVar3].m_plane.i_GetNP()->x) || - !cM3d_IsZero(dVar8) || !cM3d_IsZero(pm_tri[uVar3].m_plane.i_GetNP()->z)) { - if (cBgW_CheckBGround(dVar8)) { - BlckConnect(&field_0xa4[i].field_0x4, &local_38, uVar3); + pm_blk[i].m_roof_idx = 0xFFFF; + pm_blk[i].m_wall_idx = 0xFFFF; + pm_blk[i].m_gnd_idx = 0xFFFF; + int blk_roof_idx; + int blk_wall_idx; + int blk_gnd_idx = 0xFFFF; + blk_wall_idx = 0xFFFF; + blk_roof_idx = 0xFFFF; + + for (int j = start_idx; j <= end_idx; j++) { + f32 norm_y = pm_tri[j].m_plane.i_GetNP()->y; + + if (!cM3d_IsZero(pm_tri[j].m_plane.i_GetNP()->x) || !cM3d_IsZero(norm_y) || + !cM3d_IsZero(pm_tri[j].m_plane.i_GetNP()->z)) + { + if (cBgW_CheckBGround(norm_y)) { + BlckConnect(&pm_blk[i].m_gnd_idx, &blk_gnd_idx, j); } else { - if (cBgW_CheckBRoof(dVar8)) { + if (cBgW_CheckBRoof(norm_y)) { if (!ChkRoofRegist()) { - BlckConnect(&field_0xa4[i].field_0x0, &local_30, uVar3); + BlckConnect(&pm_blk[i].m_roof_idx, &blk_roof_idx, j); } } else { - BlckConnect(&field_0xa4[i].field_0x2, &local_34, uVar3); + BlckConnect(&pm_blk[i].m_wall_idx, &blk_wall_idx, j); } } } @@ -630,38 +632,38 @@ asm void cBgW::ClassifyPlane() { #endif /* 8007998C-800799E0 0742CC 0054+00 1/1 0/0 0/0 .text MakeBlckTransMinMax__4cBgWFP4cXyzP4cXyz */ -void cBgW::MakeBlckTransMinMax(cXyz* param_0, cXyz* param_1) { - PSVECAdd(param_0, &field_0x7c, param_0); - PSVECAdd(param_1, &field_0x7c, param_1); +void cBgW::MakeBlckTransMinMax(cXyz* i_min, cXyz* i_max) { + PSVECAdd(i_min, &mTransVel, i_min); + PSVECAdd(i_max, &mTransVel, i_max); } /* 800799E0-80079A68 074320 0088+00 1/1 0/0 0/0 .text MakeBlckMinMax__4cBgWFiP4cXyzP4cXyz */ -void cBgW::MakeBlckMinMax(int vtx_index, cXyz* param_1, cXyz* param_2) { +void cBgW::MakeBlckMinMax(int vtx_index, cXyz* i_min, cXyz* i_max) { Vec* vtx = &pm_vtx_tbl[vtx_index]; - if (param_1->x > vtx->x) { - param_1->x = vtx->x; + if (i_min->x > vtx->x) { + i_min->x = vtx->x; } - if (param_2->x < vtx->x) { - param_2->x = vtx->x; + if (i_max->x < vtx->x) { + i_max->x = vtx->x; } - if (param_1->y > vtx->y) { - param_1->y = vtx->y; + if (i_min->y > vtx->y) { + i_min->y = vtx->y; } - if (param_2->y < vtx->y) { - param_2->y = vtx->y; + if (i_max->y < vtx->y) { + i_max->y = vtx->y; } - if (param_1->z > vtx->z) { - param_1->z = vtx->z; + if (i_min->z > vtx->z) { + i_min->z = vtx->z; } - if (param_2->z < vtx->z) { - param_2->z = vtx->z; + if (i_max->z < vtx->z) { + i_max->z = vtx->z; } } @@ -678,38 +680,38 @@ SECTION_SDATA2 static f32 lit_3937 = 1.0f; /* 80079A68-80079BDC 0743A8 0174+00 1/1 0/0 0/0 .text MakeBlckBnd__4cBgWFiP4cXyzP4cXyz */ // matches with literals #ifdef NONMATCHING -void cBgW::MakeBlckBnd(int param_0, cXyz* param_1, cXyz* param_2) { - int tmp = pm_bgd->m_b_tbl[param_0].field_0x0; - int tmp2; +void cBgW::MakeBlckBnd(int i_blk_idx, cXyz* i_min, cXyz* i_max) { + int start = pm_bgd->m_b_tbl[i_blk_idx].field_0x0; + int max; - if (param_0 != pm_bgd->m_b_num - 1) { - tmp2 = pm_bgd->m_b_tbl[param_0 + 1].field_0x0 - 1; + if (i_blk_idx != pm_bgd->m_b_num - 1) { + max = pm_bgd->m_b_tbl[i_blk_idx + 1].field_0x0 - 1; } else { - tmp2 = pm_bgd->m_t_num - 1; + max = pm_bgd->m_t_num - 1; } - if (field_0x89 == 0) { - MakeBlckTransMinMax(param_1, param_2); + if (mNeedsFullTransform == 0) { + MakeBlckTransMinMax(i_min, i_max); } else { - param_1->z = 1000000000.0f; - param_1->y = 1000000000.0f; - param_1->x = 1000000000.0f; - param_2->z = -1000000000.0f; - param_2->y = -1000000000.0f; - param_2->x = -1000000000.0f; + i_min->z = 1000000000.0f; + i_min->y = 1000000000.0f; + i_min->x = 1000000000.0f; + i_max->z = -1000000000.0f; + i_max->y = -1000000000.0f; + i_max->x = -1000000000.0f; - for (int i = tmp; i <= tmp2; i++) { - MakeBlckMinMax(pm_bgd->m_t_tbl[i].field_0x0, param_1, param_2); - MakeBlckMinMax(pm_bgd->m_t_tbl[i].field_0x2, param_1, param_2); - MakeBlckMinMax(pm_bgd->m_t_tbl[i].field_0x4, param_1, param_2); + for (int i = start; i <= max; i++) { + MakeBlckMinMax(pm_bgd->m_t_tbl[i].m_vtx_idx0, i_min, i_max); + MakeBlckMinMax(pm_bgd->m_t_tbl[i].m_vtx_idx1, i_min, i_max); + MakeBlckMinMax(pm_bgd->m_t_tbl[i].m_vtx_idx2, i_min, i_max); } - param_1->x -= 1.0f; - param_1->y -= 1.0f; - param_1->z -= 1.0f; - param_2->x += 1.0f; - param_2->y += 1.0f; - param_2->z += 1.0f; + i_min->x -= 1.0f; + i_min->y -= 1.0f; + i_min->z -= 1.0f; + i_max->x += 1.0f; + i_max->y += 1.0f; + i_max->z += 1.0f; } } #else @@ -724,50 +726,51 @@ asm void cBgW::MakeBlckBnd(int param_0, cXyz* param_1, cXyz* param_2) { #endif /* 80079BDC-80079CC4 07451C 00E8+00 1/1 0/0 0/0 .text MakeNodeTreeRp__4cBgWFi */ -void cBgW::MakeNodeTreeRp(int param_0) { - dzb_tree_data* tree_data = &pm_bgd->m_tree_tbl[param_0]; +void cBgW::MakeNodeTreeRp(int i_tree_idx) { + cBgD_Tree_t* tree_data = &pm_bgd->m_tree_tbl[i_tree_idx]; - if (tree_data->field_0x0 & 1) { - int tmp = tree_data->m_id[0]; + if (tree_data->m_flag & 1) { + int child_idx = tree_data->m_id[0]; - if (tmp != 0xFFFF) { - cXyz* max = (cXyz*)pm_node_tree[param_0].GetMaxP(); - cXyz* min = (cXyz*)pm_node_tree[param_0].GetMinP(); + if (child_idx != 0xFFFF) { + cXyz* max = (cXyz*)pm_node_tree[i_tree_idx].GetMaxP(); + cXyz* min = (cXyz*)pm_node_tree[i_tree_idx].GetMinP(); - MakeBlckBnd(tmp, min, max); + MakeBlckBnd(child_idx, min, max); } } else { - pm_node_tree[param_0].ClearForMinMax(); + pm_node_tree[i_tree_idx].ClearForMinMax(); for (int i = 0; i < 8; i++) { - // this is probably wrong, fix later - u16* tmp_p = (u16*)tree_data; - int tmp = tmp_p[i + 2]; + int child_idx = tree_data->m_id[i]; - if (tmp != 0xFFFF) { - MakeNodeTreeRp(tmp); - pm_node_tree[param_0].SetMinMax(*pm_node_tree[tmp].GetMinP()); - pm_node_tree[param_0].SetMinMax(*pm_node_tree[tmp].GetMaxP()); + if (child_idx != 0xFFFF) { + MakeNodeTreeRp(child_idx); + pm_node_tree[i_tree_idx].SetMinMax(*pm_node_tree[child_idx].GetMinP()); + pm_node_tree[i_tree_idx].SetMinMax(*pm_node_tree[child_idx].GetMaxP()); } } } } /* 80079CC4-80079DF0 074604 012C+00 1/1 0/0 0/0 .text MakeNodeTreeGrpRp__4cBgWFi */ -void cBgW::MakeNodeTreeGrpRp(int param_0) { - if (pm_bgd->m_g_tbl[param_0].field_0x2e != 0xFFFF) { - MakeNodeTreeRp(pm_bgd->m_g_tbl[param_0].field_0x2e); - pm_grp[param_0].m_aab.SetMin(*pm_node_tree[pm_bgd->m_g_tbl[param_0].field_0x2e].GetMinP()); - pm_grp[param_0].m_aab.SetMax(*pm_node_tree[pm_bgd->m_g_tbl[param_0].field_0x2e].GetMaxP()); +void cBgW::MakeNodeTreeGrpRp(int i_grp_idx) { + if (pm_bgd->m_g_tbl[i_grp_idx].m_tree_idx != 0xFFFF) { + MakeNodeTreeRp(pm_bgd->m_g_tbl[i_grp_idx].m_tree_idx); + pm_grp[i_grp_idx].m_aab.SetMin( + *pm_node_tree[pm_bgd->m_g_tbl[i_grp_idx].m_tree_idx].GetMinP()); + pm_grp[i_grp_idx].m_aab.SetMax( + *pm_node_tree[pm_bgd->m_g_tbl[i_grp_idx].m_tree_idx].GetMaxP()); } - s32 tmp2 = pm_bgd->m_g_tbl[param_0].field_0x28; + s32 child_idx = pm_bgd->m_g_tbl[i_grp_idx].m_first_child; while (true) { - if (tmp2 == 0xFFFF) break; - MakeNodeTreeGrpRp(tmp2); - pm_grp[param_0].m_aab.SetMin(*pm_grp[tmp2].m_aab.GetMinP()); - pm_grp[param_0].m_aab.SetMax(*pm_grp[tmp2].m_aab.GetMaxP()); - tmp2 = pm_bgd->m_g_tbl[tmp2].field_0x26; + if (child_idx == 0xFFFF) + break; + MakeNodeTreeGrpRp(child_idx); + pm_grp[i_grp_idx].m_aab.SetMin(*pm_grp[child_idx].m_aab.GetMinP()); + pm_grp[i_grp_idx].m_aab.SetMax(*pm_grp[child_idx].m_aab.GetMaxP()); + child_idx = pm_bgd->m_g_tbl[child_idx].m_next_sibling; } } @@ -775,8 +778,8 @@ void cBgW::MakeNodeTreeGrpRp(int param_0) { void cBgW::MakeNodeTree() { if (pm_vtx_tbl == NULL) { for (int i = 0; i < pm_bgd->m_g_num; i++) { - if (pm_bgd->m_g_tbl[i].field_0x24 == 0xffff) { - field_0x92 = i; + if (pm_bgd->m_g_tbl[i].m_parent == 0xFFFF) { + m_rootGrpIdx = i; return; } } @@ -784,9 +787,10 @@ void cBgW::MakeNodeTree() { for (int i = 0; i < pm_bgd->m_g_num; i++) { pm_grp[i].m_aab.ClearForMinMax(); } + for (int i = 0; i < pm_bgd->m_g_num; i++) { - if (pm_bgd->m_g_tbl[i].field_0x24 == 0xffff) { - field_0x92 = i; + if (pm_bgd->m_g_tbl[i].m_parent == 0xFFFF) { + m_rootGrpIdx = i; MakeNodeTreeGrpRp(i); return; } @@ -796,8 +800,9 @@ void cBgW::MakeNodeTree() { /* 80079EEC-80079F38 07482C 004C+00 2/0 1/0 0/0 .text ChkMemoryError__4cBgWFv */ bool cBgW::ChkMemoryError() { - if (pm_tri == NULL || pm_rwg == NULL || field_0xa4 == NULL || pm_node_tree == NULL || - pm_grp == NULL) { + if (pm_tri == NULL || pm_rwg == NULL || pm_blk == NULL || pm_node_tree == NULL || + pm_grp == NULL) + { return true; } @@ -805,29 +810,29 @@ bool cBgW::ChkMemoryError() { } /* 80079F38-8007A184 074878 024C+00 1/1 3/3 85/85 .text Set__4cBgWFP6cBgD_tUlPA3_A4_f */ -bool cBgW::Set(cBgD_t* pbgd, u32 param_1, Mtx* pbase_mtx) { - field_0x88 = 0x20; +bool cBgW::Set(cBgD_t* pbgd, u32 flags, Mtx* pbase_mtx) { + mFlags = GLOBAL_e; pm_vtx_tbl = NULL; pm_tri = NULL; pm_rwg = NULL; - field_0xa4 = NULL; + pm_blk = NULL; pm_node_tree = NULL; pm_grp = NULL; - field_0x90 = cM_rndF(128.0f); + mMoveCounter = cM_rndF(128.0f); if (pbgd == NULL) { return true; } - field_0x88 = param_1; - if (field_0x88 & 0x20) { + mFlags = flags; + if (mFlags & GLOBAL_e) { pm_base = NULL; PSMTXIdentity(m_inv_mtx); - PSMTXIdentity(field_0x4c); + PSMTXIdentity(m_mtx); } else { pm_base = *pbase_mtx; PSMTXCopy(pm_base, m_inv_mtx); - PSMTXCopy(pm_base, field_0x4c); + PSMTXCopy(pm_base, m_mtx); } pm_bgd = pbgd; @@ -843,8 +848,8 @@ bool cBgW::Set(cBgD_t* pbgd, u32 param_1, Mtx* pbase_mtx) { return true; } - field_0xa4 = new cBgW_unk_b_data[pm_bgd->m_b_num]; - if (field_0xa4 == NULL) { + pm_blk = new cBgW_BlkElm[pm_bgd->m_b_num]; + if (pm_blk == NULL) { FreeArea(); return true; } @@ -862,7 +867,7 @@ bool cBgW::Set(cBgD_t* pbgd, u32 param_1, Mtx* pbase_mtx) { } ClassifyPlane(); - field_0x89 = 1; + mNeedsFullTransform = 1; MakeNodeTree(); return false; } @@ -890,7 +895,7 @@ bool cBgW::RwgLineCheck(u16 poly_index, cBgS_LinChk* linchk) { cM3dGTri tri; while (1) { - dzb_tri_data* tri_data = &pm_bgd->m_t_tbl[poly_index]; + cBgD_Tri_t* tri_data = &pm_bgd->m_t_tbl[poly_index]; tri.setBg(&pm_vtx_tbl[tri_data->field_0x0], &pm_vtx_tbl[tri_data->field_0x2], &pm_vtx_tbl[tri_data->field_0x4], &pm_tri[poly_index].m_plane); @@ -904,11 +909,10 @@ bool cBgW::RwgLineCheck(u16 poly_index, cBgS_LinChk* linchk) { } } - - if (pm_rwg[poly_index].field_0x0 == 0xFFFF) { + if (pm_rwg[poly_index].m_next == 0xFFFF) { break; } - poly_index = pm_rwg[poly_index].field_0x0; + poly_index = pm_rwg[poly_index].m_next; } return chk; @@ -940,31 +944,32 @@ extern "C" asm void __dt__8cM3dGTriFv() { bool cBgW::LineCheckRp(cBgS_LinChk* linchk, int param_1) { cBgW_NodeTree* pnode0 = &pm_node_tree[param_1]; - if (!cM3d_Cross_MinMaxBoxLine((Vec*)pnode0->GetMinP(), (Vec*)pnode0->GetMaxP(), &linchk->GetLinP()->GetStartP(), - &linchk->GetLinP()->GetEndP())) { + if (!cM3d_Cross_MinMaxBoxLine((Vec*)pnode0->GetMinP(), (Vec*)pnode0->GetMaxP(), + &linchk->GetLinP()->GetStartP(), &linchk->GetLinP()->GetEndP())) + { return false; } - dzb_tree_data* pnode = &pm_bgd->m_tree_tbl[param_1]; + cBgD_Tree_t* pnode = &pm_bgd->m_tree_tbl[param_1]; bool chk = false; - if (pnode->field_0x0 & 1) { + if (pnode->m_flag & 1) { if (linchk->GetPreWallChk()) { - u16 tmp = field_0xa4[pnode->m_id[0]].field_0x2; + u16 tmp = pm_blk[pnode->m_id[0]].m_wall_idx; if (tmp != 0xFFFF && RwgLineCheck(tmp, linchk)) { chk = true; } } if (linchk->GetPreGroundChk()) { - u16 tmp = field_0xa4[pnode->m_id[0]].field_0x4; + u16 tmp = pm_blk[pnode->m_id[0]].m_gnd_idx; if (tmp != 0xFFFF && RwgLineCheck(tmp, linchk)) { chk = true; } } if (linchk->GetPreRoofChk()) { - u16 tmp = field_0xa4[pnode->m_id[0]].field_0x0; + u16 tmp = pm_blk[pnode->m_id[0]].m_roof_idx; if (tmp != 0xFFFF && RwgLineCheck(tmp, linchk)) { chk = true; } @@ -992,39 +997,40 @@ bool cBgW::LineCheckGrpRp(cBgS_LinChk* param_0, int param_1, int param_2) { return false; } bool uVar4 = false; - - if (pm_bgd->m_g_tbl[param_1].field_0x2e != 0xffff && - LineCheckRp(param_0, pm_bgd->m_g_tbl[param_1].field_0x2e)) { + + if (pm_bgd->m_g_tbl[param_1].m_tree_idx != 0xFFFF && + LineCheckRp(param_0, pm_bgd->m_g_tbl[param_1].m_tree_idx)) + { uVar4 = true; } - - s32 uVar1 = pm_bgd->m_g_tbl[param_1].field_0x28; + + s32 uVar1 = pm_bgd->m_g_tbl[param_1].m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } if (LineCheckGrpRp(param_0, uVar1, param_2 + 1)) { uVar4 = true; } - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } return uVar4; } /* 8007A658-8007A680 074F98 0028+00 2/0 1/0 0/0 .text LineCheck__4cBgWFP11cBgS_LinChk */ bool cBgW::LineCheck(cBgS_LinChk* pchk) { - return LineCheckGrpRp(pchk, field_0x92, 1); + return LineCheckGrpRp(pchk, m_rootGrpIdx, 1); } /* 8007A680-8007A774 074FC0 00F4+00 2/2 0/0 0/0 .text * RwgGroundCheckCommon__4cBgWFfUsP11cBgS_GndChk */ bool cBgW::RwgGroundCheckCommon(f32 param_0, u16 param_1, cBgS_GndChk* param_2) { if (param_0 < param_2->GetPointP().y && param_0 > param_2->GetNowY()) { - dzb_tri_data* puVar7 = &pm_bgd->m_t_tbl[param_1]; - if (cM3d_CrossY_Tri_Front(pm_vtx_tbl[puVar7->field_0x0], - pm_vtx_tbl[puVar7->field_0x2], - pm_vtx_tbl[puVar7->field_0x4], - (const Vec*)¶m_2->GetPointP())) { + cBgD_Tri_t* puVar7 = &pm_bgd->m_t_tbl[param_1]; + if (cM3d_CrossY_Tri_Front(pm_vtx_tbl[puVar7->m_vtx_idx0], pm_vtx_tbl[puVar7->m_vtx_idx1], + pm_vtx_tbl[puVar7->m_vtx_idx2], + (const Vec*)¶m_2->GetPointP())) + { if (!ChkPolyThrough(param_1, param_2->GetPolyPassChk())) { param_2->SetNowY(param_0); param_2->SetPolyIndex(param_1); @@ -1044,9 +1050,9 @@ bool cBgW::RwgGroundCheckGnd(u16 param_0, cBgS_GndChk* param_1) { if (RwgGroundCheckCommon(dVar5, (u32)param_0, param_1)) { rv = true; } - if (puVar4->field_0x0 == 0xffff) + if (puVar4->m_next == 0xFFFF) break; - param_0 = puVar4->field_0x0; + param_0 = puVar4->m_next; } return rv; } @@ -1057,16 +1063,16 @@ bool cBgW::RwgGroundCheckWall(u16 param_0, cBgS_GndChk* param_1) { bool rv = false; while (true) { cBgW_TriElm* puVar5 = &pm_tri[param_0]; - cBgW_RwgElm* puVar4 = &pm_rwg[param_0]; + cBgW_RwgElm* puVar4 = &pm_rwg[param_0]; if (puVar5->m_plane.mNormal.y >= 0.014f) { f32 dVar5 = puVar5->m_plane.getCrossY_NonIsZero(¶m_1->GetPointP()); if (RwgGroundCheckCommon(dVar5, (u32)param_0, param_1)) { rv = true; } } - if (puVar4->field_0x0 == 0xffff) + if (puVar4->m_next == 0xFFFF) break; - param_0 = puVar4->field_0x0; + param_0 = puVar4->m_next; } return rv; } @@ -1074,15 +1080,15 @@ bool cBgW::RwgGroundCheckWall(u16 param_0, cBgS_GndChk* param_1) { /* 8007A8F4-8007AA50 075234 015C+00 1/1 0/0 0/0 .text GroundCrossRp__4cBgWFP11cBgS_GndChki */ bool cBgW::GroundCrossRp(cBgS_GndChk* param_0, int param_1) { bool rv = false; - dzb_tree_data* puVar9 = &pm_bgd->m_tree_tbl[param_1]; - if ((puVar9->field_0x0 & 1)) { - if (field_0xa4[puVar9->m_id[0]].field_0x4 != 0xffff && - RwgGroundCheckGnd(field_0xa4[puVar9->m_id[0]].field_0x4, param_0)) + cBgD_Tree_t* puVar9 = &pm_bgd->m_tree_tbl[param_1]; + if ((puVar9->m_flag & 1)) { + if (pm_blk[puVar9->m_id[0]].m_gnd_idx != 0xFFFF && + RwgGroundCheckGnd(pm_blk[puVar9->m_id[0]].m_gnd_idx, param_0)) { rv = true; } - if (param_0->GetWallPrecheck() && field_0xa4[puVar9->m_id[0]].field_0x2 != 0xffff && - RwgGroundCheckWall(field_0xa4[puVar9->m_id[0]].field_0x2, param_0)) + if (param_0->GetWallPrecheck() && pm_blk[puVar9->m_id[0]].m_wall_idx != 0xFFFF && + RwgGroundCheckWall(pm_blk[puVar9->m_id[0]].m_wall_idx, param_0)) { rv = true; } @@ -1090,48 +1096,51 @@ bool cBgW::GroundCrossRp(cBgS_GndChk* param_0, int param_1) { } for (int i = 0; i < 8; i++) { - if (puVar9->m_id[i] != 0xffff) { + if (puVar9->m_id[i] != 0xFFFF) { cM3dGAab* this_00 = &pm_node_tree[puVar9->m_id[i]]; if (this_00->CrossY(¶m_0->GetPointP())) { if (this_00->UnderPlaneYUnder(param_0->GetPointP().y)) { if (!this_00->TopPlaneYUnder(param_0->GetNowY()) && - GroundCrossRp(param_0, puVar9->m_id[i])) { + GroundCrossRp(param_0, puVar9->m_id[i])) + { rv = true; } } } } } - + return rv; } /* 8007AA50-8007AB9C 075390 014C+00 1/1 0/0 0/0 .text GroundCrossGrpRp__4cBgWFP11cBgS_GndChkii */ bool cBgW::GroundCrossGrpRp(cBgS_GndChk* param_0, int param_1, int param_2) { cBgW_GrpElm* iVar7 = &pm_grp[param_1]; - if (!iVar7->m_aab.CrossY(¶m_0->GetPointP()) || - !iVar7->m_aab.UnderPlaneYUnder(param_0->GetPointP().y) || - iVar7->m_aab.TopPlaneYUnder(param_0->GetNowY())) { + if (!iVar7->m_aab.CrossY(¶m_0->GetPointP()) || + !iVar7->m_aab.UnderPlaneYUnder(param_0->GetPointP().y) || + iVar7->m_aab.TopPlaneYUnder(param_0->GetNowY())) + { return false; } if (ChkGrpThrough(param_1, param_0->GetGrpPassChk(), param_2)) { return false; } bool uVar6 = false; - - if (pm_bgd->m_g_tbl[param_1].field_0x2e != 0xffff && - GroundCrossRp(param_0, pm_bgd->m_g_tbl[param_1].field_0x2e)) { + + if (pm_bgd->m_g_tbl[param_1].m_tree_idx != 0xFFFF && + GroundCrossRp(param_0, pm_bgd->m_g_tbl[param_1].m_tree_idx)) + { uVar6 = true; } - s32 uVar8 = pm_bgd->m_g_tbl[param_1].field_0x28; + s32 uVar8 = pm_bgd->m_g_tbl[param_1].m_first_child; while (true) { - if (uVar8 == 0xffff) { + if (uVar8 == 0xFFFF) { break; } if (GroundCrossGrpRp(param_0, uVar8, param_2 + 1)) { uVar6 = true; } - uVar8 = pm_bgd->m_g_tbl[uVar8].field_0x26; + uVar8 = pm_bgd->m_g_tbl[uVar8].m_next_sibling; } return uVar6; } @@ -1139,44 +1148,46 @@ bool cBgW::GroundCrossGrpRp(cBgS_GndChk* param_0, int param_1, int param_2) { /* 8007AB9C-8007ABC4 0754DC 0028+00 2/0 1/0 0/0 .text GroundCross__4cBgWFP11cBgS_GndChk */ bool cBgW::GroundCross(cBgS_GndChk* pchk) { - return GroundCrossGrpRp(pchk, field_0x92, 1); + return GroundCrossGrpRp(pchk, m_rootGrpIdx, 1); } /* 8007ABC4-8007AC10 075504 004C+00 1/1 0/0 0/0 .text CopyOldMtx__4cBgWFv */ void cBgW::CopyOldMtx() { if (pm_base != NULL) { - PSMTXCopy(field_0x4c, m_inv_mtx); - PSMTXCopy(pm_base, field_0x4c); + PSMTXCopy(m_mtx, m_inv_mtx); + PSMTXCopy(pm_base, m_mtx); } } /* 8007AC10-8007ADF0 075550 01E0+00 1/1 0/0 0/0 .text Move__4cBgWFv */ void cBgW::Move() { - if (!ChkLock() && (field_0x88 & 1)) { + if (!ChkLock() && (mFlags & 1)) { if (!ChkNoCalcVtx()) { - if (field_0x90 >= 0xFF || field_0x4c[0][0] != pm_base[0][0] || - field_0x4c[0][1] != pm_base[0][1] || field_0x4c[0][2] != pm_base[0][2] || - field_0x4c[1][0] != pm_base[1][0] || field_0x4c[1][1] != pm_base[1][1] || - field_0x4c[1][2] != pm_base[1][2] || field_0x4c[2][0] != pm_base[2][0] || - field_0x4c[2][1] != pm_base[2][1] || field_0x4c[2][2] != pm_base[2][2]) { - field_0x89 = 1; - } else if (field_0x4c[0][3] == pm_base[0][3] && field_0x4c[1][3] == pm_base[1][3] && - field_0x4c[2][3] == pm_base[2][3]) { + if (mMoveCounter >= 0xFF || m_mtx[0][0] != pm_base[0][0] || + m_mtx[0][1] != pm_base[0][1] || m_mtx[0][2] != pm_base[0][2] || + m_mtx[1][0] != pm_base[1][0] || m_mtx[1][1] != pm_base[1][1] || + m_mtx[1][2] != pm_base[1][2] || m_mtx[2][0] != pm_base[2][0] || + m_mtx[2][1] != pm_base[2][1] || m_mtx[2][2] != pm_base[2][2]) + { + mNeedsFullTransform = 1; + } else if (m_mtx[0][3] == pm_base[0][3] && m_mtx[1][3] == pm_base[1][3] && + m_mtx[2][3] == pm_base[2][3]) + { PSMTXCopy(pm_base, m_inv_mtx); if (!ChkFlush()) { return; } } else { - field_0x7c.x = pm_base[0][3] - field_0x4c[0][3]; - field_0x7c.y = pm_base[1][3] - field_0x4c[1][3]; - field_0x7c.z = pm_base[2][3] - field_0x4c[2][3]; - field_0x89 = 0; + mTransVel.x = pm_base[0][3] - m_mtx[0][3]; + mTransVel.y = pm_base[1][3] - m_mtx[1][3]; + mTransVel.z = pm_base[2][3] - m_mtx[2][3]; + mNeedsFullTransform = 0; } - if (field_0x90 >= 0xFF) { - field_0x90 = 0; + if (mMoveCounter >= 0xFF) { + mMoveCounter = 0; } else { - field_0x90++; + mMoveCounter++; } GlobalVtx(); } @@ -1193,37 +1204,34 @@ void cBgW::RwgShdwDraw(int param_0, cBgS_ShdwDraw* param_1) { while (true) { cBgW_RwgElm* puVar4 = &pm_rwg[param_0]; if (!ChkShdwDrawThrough(param_0, param_1->GetPolyPassChk())) { - (param_1->mCallbackFun)( - param_1, pm_vtx_tbl, - pm_bgd->m_t_tbl[param_0].field_0x0, - pm_bgd->m_t_tbl[param_0].field_0x2, - pm_bgd->m_t_tbl[param_0].field_0x4, - &pm_tri[param_0].m_plane); + (param_1->mCallbackFun)(param_1, pm_vtx_tbl, pm_bgd->m_t_tbl[param_0].m_vtx_idx0, + pm_bgd->m_t_tbl[param_0].m_vtx_idx1, + pm_bgd->m_t_tbl[param_0].m_vtx_idx2, &pm_tri[param_0].m_plane); } - if (puVar4->field_0x0 == 0xffff) + if (puVar4->m_next == 0xFFFF) break; - param_0 = puVar4->field_0x0; + param_0 = puVar4->m_next; } } /* 8007AEA4-8007AFC0 0757E4 011C+00 1/1 0/0 0/0 .text ShdwDrawRp__4cBgWFP13cBgS_ShdwDrawi */ -void cBgW::ShdwDrawRp(cBgS_ShdwDraw *param_1,int param_2) { +void cBgW::ShdwDrawRp(cBgS_ShdwDraw* param_1, int param_2) { if (pm_node_tree[param_2].Cross(param_1->GetBndP())) { - dzb_tree_data* puVar3 = &pm_bgd->m_tree_tbl[param_2]; - if ((puVar3->field_0x0 & 1)) { - if (field_0xa4[puVar3->m_id[0]].field_0x2 != 0xffff) { - RwgShdwDraw(field_0xa4[puVar3->m_id[0]].field_0x2, param_1); + cBgD_Tree_t* puVar3 = &pm_bgd->m_tree_tbl[param_2]; + if ((puVar3->m_flag & 1)) { + if (pm_blk[puVar3->m_id[0]].m_wall_idx != 0xFFFF) { + RwgShdwDraw(pm_blk[puVar3->m_id[0]].m_wall_idx, param_1); } - if (field_0xa4[puVar3->m_id[0]].field_0x0 != 0xffff) { - RwgShdwDraw(field_0xa4[puVar3->m_id[0]].field_0x0, param_1); + if (pm_blk[puVar3->m_id[0]].m_roof_idx != 0xFFFF) { + RwgShdwDraw(pm_blk[puVar3->m_id[0]].m_roof_idx, param_1); } - if (field_0xa4[puVar3->m_id[0]].field_0x4 != 0xffff) { - RwgShdwDraw(field_0xa4[puVar3->m_id[0]].field_0x4, param_1); + if (pm_blk[puVar3->m_id[0]].m_gnd_idx != 0xFFFF) { + RwgShdwDraw(pm_blk[puVar3->m_id[0]].m_gnd_idx, param_1); } } else { for (int iVar2 = 0; iVar2 < 8; iVar2++) { - if (puVar3->m_id[iVar2] != 0xffff) { + if (puVar3->m_id[iVar2] != 0xFFFF) { ShdwDrawRp(param_1, puVar3->m_id[iVar2]); } } @@ -1234,24 +1242,23 @@ void cBgW::ShdwDrawRp(cBgS_ShdwDraw *param_1,int param_2) { /* 8007AFC0-8007B084 075900 00C4+00 1/1 0/0 0/0 .text ShdwDrawGrpRp__4cBgWFP13cBgS_ShdwDrawi */ void cBgW::ShdwDrawGrpRp(cBgS_ShdwDraw* param_0, int param_1) { if (pm_grp[param_1].m_aab.Cross(param_0->GetBndP())) { - - if (pm_bgd->m_g_tbl[param_1].field_0x2e != 0xffff) { - ShdwDrawRp(param_0, pm_bgd->m_g_tbl[param_1].field_0x2e); + if (pm_bgd->m_g_tbl[param_1].m_tree_idx != 0xFFFF) { + ShdwDrawRp(param_0, pm_bgd->m_g_tbl[param_1].m_tree_idx); } - s32 uVar1 = pm_bgd->m_g_tbl[param_1].field_0x28; + s32 uVar1 = pm_bgd->m_g_tbl[param_1].m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } ShdwDrawGrpRp(param_0, uVar1); - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } } } /* 8007B084-8007B0A8 0759C4 0024+00 2/0 1/0 0/0 .text ShdwDraw__4cBgWFP13cBgS_ShdwDraw */ void cBgW::ShdwDraw(cBgS_ShdwDraw* pshdw) { - ShdwDrawGrpRp(pshdw, field_0x92); + ShdwDrawGrpRp(pshdw, m_rootGrpIdx); } /* 8007B0A8-8007B0B0 0759E8 0008+00 1/0 0/0 0/0 .text ChkPolyThrough__4cBgWFiP16cBgS_PolyPassChk @@ -1275,13 +1282,13 @@ bool cBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) { s32 cBgW::GetGrpRoomIndex(cBgS_PolyInfo const& poly) const { int grp_index = GetTriGrp(poly.GetPolyIndex()); - u16 tmp = pm_bgd->m_g_tbl[grp_index].field_0x24; + u16 tmp = pm_bgd->m_g_tbl[grp_index].m_parent; - if (tmp == 0xFFFF || pm_bgd->m_g_tbl[tmp].field_0x24 == 0xFFFF) { + if (tmp == 0xFFFF || pm_bgd->m_g_tbl[tmp].m_parent == 0xFFFF) { return 0xFF; } - int room_index = pm_bgd->m_g_tbl[pm_bgd->m_g_tbl[tmp].field_0x24].field_0x2a; + int room_index = pm_bgd->m_g_tbl[pm_bgd->m_g_tbl[tmp].m_parent].m_room_id; if (room_index >= 0xFF) { room_index = 0xFF; } @@ -1291,7 +1298,7 @@ s32 cBgW::GetGrpRoomIndex(cBgS_PolyInfo const& poly) const { /* 8007B164-8007B17C 075AA4 0018+00 2/0 1/0 0/0 .text GetBnd__4cBgWCFv */ cM3dGAab* cBgW::GetBnd() const { - return &pm_grp[field_0x92].m_aab; + return &pm_grp[m_rootGrpIdx].m_aab; } /* 8007B17C-8007B1B4 075ABC 0038+00 0/0 1/1 0/0 .text GetTrans__4cBgWCFP4cXyz */ @@ -1306,18 +1313,18 @@ void cBgW::GetTrans(cXyz* p_trans) const { * GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz */ bool cBgW::GetTriPnt(cBgS_PolyInfo const& poly, cXyz* p_pnt1, cXyz* p_pnt2, cXyz* p_pnt3) const { u16 poly_index = poly.GetPolyIndex(); - dzb_tri_data* tri_data = &pm_bgd->m_t_tbl[poly_index]; + cBgD_Tri_t* tri_data = &pm_bgd->m_t_tbl[poly_index]; - p_pnt1->set(pm_vtx_tbl[tri_data->field_0x0]); - p_pnt2->set(pm_vtx_tbl[tri_data->field_0x2]); - p_pnt3->set(pm_vtx_tbl[tri_data->field_0x4]); + p_pnt1->set(pm_vtx_tbl[tri_data->m_vtx_idx0]); + p_pnt2->set(pm_vtx_tbl[tri_data->m_vtx_idx1]); + p_pnt3->set(pm_vtx_tbl[tri_data->m_vtx_idx2]); return true; } /* 8007B240-8007B270 075B80 0030+00 2/0 1/0 0/0 .text GetTopUnder__4cBgWCFPfPf */ void cBgW::GetTopUnder(f32* p_top, f32* p_under) const { - *p_under = pm_grp[field_0x92].m_aab.GetMinP()->y; - *p_top = pm_grp[field_0x92].m_aab.GetMaxP()->y; + *p_under = pm_grp[m_rootGrpIdx].m_aab.GetMinP()->y; + *p_top = pm_grp[m_rootGrpIdx].m_aab.GetMaxP()->y; } /* 8007B270-8007B2B0 075BB0 0040+00 2/0 1/0 0/0 .text GetTriPla__4cBgWCFRC13cBgS_PolyInfo @@ -1525,12 +1532,12 @@ bool cBgW::ChkNotReady() const { /* 8007B958-8007B964 076298 000C+00 2/0 1/0 0/0 .text ChkLock__4cBgWCFv */ bool cBgW::ChkLock() const { - return field_0x88 & 0x80; + return mFlags & 0x80; } /* 8007B964-8007B970 0762A4 000C+00 2/0 1/0 0/0 .text ChkMoveBg__4cBgWCFv */ bool cBgW::ChkMoveBg() const { - return field_0x88 & 0x1; + return mFlags & 0x1; } /* 8007B970-8007B9C0 0762B0 0050+00 1/1 2/2 87/87 .text __ct__4dBgWFv */ @@ -1602,27 +1609,27 @@ bool dBgW::WallCorrectRp(dBgS_Acch* param_0, int param_1) { return false; } - dzb_tree_data* puVar9 = &pm_bgd->m_tree_tbl[param_1]; + cBgD_Tree_t* puVar9 = &pm_bgd->m_tree_tbl[param_1]; bool uVar6 = false; - if ((puVar9->field_0x0 & 1)) { - if (field_0xa4[puVar9->m_id[0]].field_0x2 != 0xffff && - RwgWallCorrect(param_0, field_0xa4[puVar9->m_id[0]].field_0x2)) { - uVar6 = true; - } - if (field_0xa4[puVar9->m_id[0]].field_0x0 != 0xffff && - RwgWallCorrect(param_0, field_0xa4[puVar9->m_id[0]].field_0x0)) { - uVar6 = true; - } - return uVar6; - } - for (int i = 0; i < 8; i++) { - if (puVar9->m_id[i] != 0xffff && - WallCorrectRp(param_0, puVar9->m_id[i])) + if ((puVar9->m_flag & 1)) { + if (pm_blk[puVar9->m_id[0]].m_wall_idx != 0xFFFF && + RwgWallCorrect(param_0, pm_blk[puVar9->m_id[0]].m_wall_idx)) { uVar6 = true; } + if (pm_blk[puVar9->m_id[0]].m_roof_idx != 0xFFFF && + RwgWallCorrect(param_0, pm_blk[puVar9->m_id[0]].m_roof_idx)) + { + uVar6 = true; + } + return uVar6; } - + for (int i = 0; i < 8; i++) { + if (puVar9->m_id[i] != 0xFFFF && WallCorrectRp(param_0, puVar9->m_id[i])) { + uVar6 = true; + } + } + return uVar6; } @@ -1637,28 +1644,29 @@ bool dBgW::WallCorrectGrpRp(dBgS_Acch* param_0, int param_1, int param_2) { } bool uVar6 = false; - if (pm_bgd->m_g_tbl[param_1].field_0x2e != 0xffff && - WallCorrectRp(param_0, pm_bgd->m_g_tbl[param_1].field_0x2e)) { + if (pm_bgd->m_g_tbl[param_1].m_tree_idx != 0xFFFF && + WallCorrectRp(param_0, pm_bgd->m_g_tbl[param_1].m_tree_idx)) + { uVar6 = true; } - - s32 uVar1 = pm_bgd->m_g_tbl[param_1].field_0x28; + + s32 uVar1 = pm_bgd->m_g_tbl[param_1].m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } if (WallCorrectGrpRp(param_0, uVar1, param_2 + 1)) { uVar6 = true; } - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } - + return uVar6; } /* 8007C484-8007C4AC 076DC4 0028+00 1/0 1/0 0/0 .text WallCorrect__4dBgWFP9dBgS_Acch */ bool dBgW::WallCorrect(dBgS_Acch* pacch) { - return WallCorrectGrpRp(pacch, field_0x92, 1); + return WallCorrectGrpRp(pacch, m_rootGrpIdx, 1); } struct wcs_data { @@ -1693,18 +1701,18 @@ void dBgW::WallCorrectRpSort(dBgS_Acch* param_0, int param_1) { return; } - dzb_tree_data* puVar9 = &pm_bgd->m_tree_tbl[param_1]; - if ((puVar9->field_0x0 & 1)) { - if (field_0xa4[puVar9->m_id[0]].field_0x2 != 0xffff) { - RwgWallCorrectSort(param_0, field_0xa4[puVar9->m_id[0]].field_0x2); + cBgD_Tree_t* puVar9 = &pm_bgd->m_tree_tbl[param_1]; + if ((puVar9->m_flag & 1)) { + if (pm_blk[puVar9->m_id[0]].m_wall_idx != 0xFFFF) { + RwgWallCorrectSort(param_0, pm_blk[puVar9->m_id[0]].m_wall_idx); } - if (field_0xa4[puVar9->m_id[0]].field_0x0 != 0xffff) { - RwgWallCorrectSort(param_0, field_0xa4[puVar9->m_id[0]].field_0x0); + if (pm_blk[puVar9->m_id[0]].m_roof_idx != 0xFFFF) { + RwgWallCorrectSort(param_0, pm_blk[puVar9->m_id[0]].m_roof_idx); } return; - } + } for (int i = 0; i < 8; i++) { - if (puVar9->m_id[i] != 0xffff) { + if (puVar9->m_id[i] != 0xFFFF) { WallCorrectRpSort(param_0, puVar9->m_id[i]); } } @@ -1720,19 +1728,19 @@ bool dBgW::WallCorrectGrpRpSort(dBgS_Acch* param_0, int param_1, int param_2) { return false; } - if (pm_bgd->m_g_tbl[param_1].field_0x2e != 0xffff) { - WallCorrectRpSort(param_0, pm_bgd->m_g_tbl[param_1].field_0x2e); + if (pm_bgd->m_g_tbl[param_1].m_tree_idx != 0xFFFF) { + WallCorrectRpSort(param_0, pm_bgd->m_g_tbl[param_1].m_tree_idx); } - - s32 uVar1 = pm_bgd->m_g_tbl[param_1].field_0x28; + + s32 uVar1 = pm_bgd->m_g_tbl[param_1].m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } WallCorrectGrpRpSort(param_0, uVar1, param_2 + 1); - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } - + return false; } @@ -1754,14 +1762,13 @@ bool dBgW::RwgRoofChk(u16 param_0, dBgS_RoofChk* param_1) { f32 crossY; while (true) { if (pm_tri[param_0].m_plane.getCrossY(*param_1->GetPosP(), &crossY) && - crossY > param_1->GetPosP()->y && - crossY < param_1->GetNowY()) { - dzb_tri_data* tri_data = &pm_bgd->m_t_tbl[param_0]; - if (cM3d_CrossY_Tri(pm_vtx_tbl[tri_data->field_0x0], - pm_vtx_tbl[tri_data->field_0x2], - pm_vtx_tbl[tri_data->field_0x4], - pm_tri[param_0].m_plane, - (const Vec*)param_1->GetPosP())) { + crossY > param_1->GetPosP()->y && crossY < param_1->GetNowY()) + { + cBgD_Tri_t* tri_data = &pm_bgd->m_t_tbl[param_0]; + if (cM3d_CrossY_Tri(pm_vtx_tbl[tri_data->m_vtx_idx0], pm_vtx_tbl[tri_data->m_vtx_idx1], + pm_vtx_tbl[tri_data->m_vtx_idx2], pm_tri[param_0].m_plane, + (const Vec*)param_1->GetPosP())) + { if (!ChkPolyThrough(param_0, param_1->GetPolyPassChk())) { param_1->SetNowY(crossY); param_1->SetPolyIndex(param_0); @@ -1769,9 +1776,9 @@ bool dBgW::RwgRoofChk(u16 param_0, dBgS_RoofChk* param_1) { } } } - if (pm_rwg[param_0].field_0x0 == 0xffff) + if (pm_rwg[param_0].m_next == 0xFFFF) break; - param_0 = pm_rwg[param_0].field_0x0; + param_0 = pm_rwg[param_0].m_next; } return rv; } @@ -1780,23 +1787,24 @@ bool dBgW::RwgRoofChk(u16 param_0, dBgS_RoofChk* param_1) { */ bool dBgW::RoofChkRp(dBgS_RoofChk* param_0, int param_1) { cBgW_NodeTree* tree = &pm_node_tree[param_1]; - if (!tree->CrossY(param_0->GetPosP()) || - !tree->UnderPlaneYUnder(param_0->GetNowY()) || - tree->TopPlaneYUnder(param_0->GetPosP()->y)) { + if (!tree->CrossY(param_0->GetPosP()) || !tree->UnderPlaneYUnder(param_0->GetNowY()) || + tree->TopPlaneYUnder(param_0->GetPosP()->y)) + { return false; } - dzb_tree_data* puVar9 = &pm_bgd->m_tree_tbl[param_1]; - if ((puVar9->field_0x0 & 1)) { - if (field_0xa4[puVar9->m_id[0]].field_0x0 != 0xffff && - RwgRoofChk(field_0xa4[puVar9->m_id[0]].field_0x0, param_0)) { + cBgD_Tree_t* puVar9 = &pm_bgd->m_tree_tbl[param_1]; + if ((puVar9->m_flag & 1)) { + if (pm_blk[puVar9->m_id[0]].m_roof_idx != 0xFFFF && + RwgRoofChk(pm_blk[puVar9->m_id[0]].m_roof_idx, param_0)) + { return true; } return false; } bool rv = false; for (int i = 0; i < 8; i++) { - if (puVar9->m_id[i] != 0xffff && RoofChkRp(param_0, puVar9->m_id[i])) { + if (puVar9->m_id[i] != 0xFFFF && RoofChkRp(param_0, puVar9->m_id[i])) { rv = true; } } @@ -1806,9 +1814,10 @@ bool dBgW::RoofChkRp(dBgS_RoofChk* param_0, int param_1) { /* 8007D330-8007D470 077C70 0140+00 1/1 0/0 0/0 .text RoofChkGrpRp__4dBgWFP12dBgS_RoofChkii */ bool dBgW::RoofChkGrpRp(dBgS_RoofChk* param_0, int param_1, int param_2) { cBgW_GrpElm* grp = &pm_grp[param_1]; - if (!grp->m_aab.CrossY(param_0->GetPosP()) || + if (!grp->m_aab.CrossY(param_0->GetPosP()) || !grp->m_aab.UnderPlaneYUnder(param_0->GetNowY()) || - grp->m_aab.TopPlaneYUnder(param_0->GetPosP()->y)) { + grp->m_aab.TopPlaneYUnder(param_0->GetPosP()->y)) + { return false; } @@ -1817,29 +1826,28 @@ bool dBgW::RoofChkGrpRp(dBgS_RoofChk* param_0, int param_1, int param_2) { } bool uVar6 = false; - dzb_g_data* data = &pm_bgd->m_g_tbl[param_1]; - if (data->field_0x2e != 0xffff && - RoofChkRp(param_0, data->field_0x2e)) { + cBgD_Grp_t* data = &pm_bgd->m_g_tbl[param_1]; + if (data->m_tree_idx != 0xFFFF && RoofChkRp(param_0, data->m_tree_idx)) { uVar6 = true; } - - s32 uVar1 = data->field_0x28; + + s32 uVar1 = data->m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } if (RoofChkGrpRp(param_0, uVar1, param_2 + 1)) { uVar6 = true; } - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } - + return uVar6; } /* 8007D470-8007D498 077DB0 0028+00 1/0 1/0 0/0 .text RoofChk__4dBgWFP12dBgS_RoofChk */ bool dBgW::RoofChk(dBgS_RoofChk* pchk) { - return RoofChkGrpRp(pchk, field_0x92, 1); + return RoofChkGrpRp(pchk, m_rootGrpIdx, 1); } /* 8007D498-8007D5C4 077DD8 012C+00 1/1 0/0 0/0 .text RwgSplGrpChk__4dBgWFUsP14dBgS_SplGrpChk */ @@ -1848,14 +1856,13 @@ bool dBgW::RwgSplGrpChk(u16 param_0, dBgS_SplGrpChk* param_1) { f32 crossY; while (true) { if (pm_tri[param_0].m_plane.getCrossY(param_1->GetPosP(), &crossY) && - crossY < param_1->GetRoof() && - crossY > param_1->GetHeight()) { - dzb_tri_data* tri_data = &pm_bgd->m_t_tbl[param_0]; - if (cM3d_CrossY_Tri(pm_vtx_tbl[tri_data->field_0x0], - pm_vtx_tbl[tri_data->field_0x2], - pm_vtx_tbl[tri_data->field_0x4], - pm_tri[param_0].m_plane, - (const Vec*)¶m_1->GetPosP())) { + crossY < param_1->GetRoof() && crossY > param_1->GetHeight()) + { + cBgD_Tri_t* tri_data = &pm_bgd->m_t_tbl[param_0]; + if (cM3d_CrossY_Tri(pm_vtx_tbl[tri_data->m_vtx_idx0], pm_vtx_tbl[tri_data->m_vtx_idx1], + pm_vtx_tbl[tri_data->m_vtx_idx2], pm_tri[param_0].m_plane, + (const Vec*)¶m_1->GetPosP())) + { if (!ChkPolyThrough(param_0, param_1->GetPolyPassChk())) { param_1->SetHeight(crossY); param_1->SetPolyIndex(param_0); @@ -1863,9 +1870,9 @@ bool dBgW::RwgSplGrpChk(u16 param_0, dBgS_SplGrpChk* param_1) { } } } - if (pm_rwg[param_0].field_0x0 == 0xffff) + if (pm_rwg[param_0].m_next == 0xFFFF) break; - param_0 = pm_rwg[param_0].field_0x0; + param_0 = pm_rwg[param_0].m_next; } return rv; } @@ -1873,23 +1880,24 @@ bool dBgW::RwgSplGrpChk(u16 param_0, dBgS_SplGrpChk* param_1) { /* 8007D5C4-8007D6F0 077F04 012C+00 1/1 0/0 0/0 .text SplGrpChkRp__4dBgWFP14dBgS_SplGrpChki */ bool dBgW::SplGrpChkRp(dBgS_SplGrpChk* param_0, int param_1) { cBgW_NodeTree* tree = &pm_node_tree[param_1]; - if (!tree->CrossY(¶m_0->GetPosP()) || - !tree->UnderPlaneYUnder(param_0->GetRoof()) || - tree->TopPlaneYUnder(param_0->GetHeight())) { + if (!tree->CrossY(¶m_0->GetPosP()) || !tree->UnderPlaneYUnder(param_0->GetRoof()) || + tree->TopPlaneYUnder(param_0->GetHeight())) + { return false; } - dzb_tree_data* puVar9 = &pm_bgd->m_tree_tbl[param_1]; - if ((puVar9->field_0x0 & 1)) { - if (field_0xa4[puVar9->m_id[0]].field_0x4 != 0xffff && - RwgSplGrpChk(field_0xa4[puVar9->m_id[0]].field_0x4, param_0)) { + cBgD_Tree_t* puVar9 = &pm_bgd->m_tree_tbl[param_1]; + if ((puVar9->m_flag & 1)) { + if (pm_blk[puVar9->m_id[0]].m_gnd_idx != 0xFFFF && + RwgSplGrpChk(pm_blk[puVar9->m_id[0]].m_gnd_idx, param_0)) + { return true; } return false; } bool rv = false; for (int i = 0; i < 8; i++) { - if (puVar9->m_id[i] != 0xffff && SplGrpChkRp(param_0, puVar9->m_id[i])) { + if (puVar9->m_id[i] != 0xFFFF && SplGrpChkRp(param_0, puVar9->m_id[i])) { rv = true; } } @@ -1899,9 +1907,10 @@ bool dBgW::SplGrpChkRp(dBgS_SplGrpChk* param_0, int param_1) { /* 8007D6F0-8007D830 078030 0140+00 1/1 0/0 0/0 .text SplGrpChkGrpRp__4dBgWFP14dBgS_SplGrpChkii */ bool dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* param_0, int param_1, int param_2) { cBgW_GrpElm* grp = &pm_grp[param_1]; - if (!grp->m_aab.CrossY(¶m_0->GetPosP()) || + if (!grp->m_aab.CrossY(¶m_0->GetPosP()) || !grp->m_aab.UnderPlaneYUnder(param_0->GetRoof()) || - grp->m_aab.TopPlaneYUnder(param_0->GetHeight())) { + grp->m_aab.TopPlaneYUnder(param_0->GetHeight())) + { return false; } @@ -1910,45 +1919,41 @@ bool dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* param_0, int param_1, int param_2) { } bool uVar6 = false; - dzb_g_data* data = &pm_bgd->m_g_tbl[param_1]; - if (data->field_0x2e != 0xffff && - SplGrpChkRp(param_0, data->field_0x2e)) { + cBgD_Grp_t* data = &pm_bgd->m_g_tbl[param_1]; + if (data->m_tree_idx != 0xFFFF && SplGrpChkRp(param_0, data->m_tree_idx)) { uVar6 = true; } - - s32 uVar1 = data->field_0x28; + + s32 uVar1 = data->m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } if (SplGrpChkGrpRp(param_0, uVar1, param_2 + 1)) { uVar6 = true; } - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } - + return uVar6; } /* 8007D830-8007D858 078170 0028+00 1/0 1/0 0/0 .text SplGrpChk__4dBgWFP14dBgS_SplGrpChk */ bool dBgW::SplGrpChk(dBgS_SplGrpChk* pchk) { - return SplGrpChkGrpRp(pchk, field_0x92, 1); + return SplGrpChkGrpRp(pchk, m_rootGrpIdx, 1); } /* 8007D858-8007D8E8 078198 0090+00 1/1 0/0 0/0 .text RwgCaptPoly__4dBgWFiR13dBgS_CaptPoly */ void dBgW::RwgCaptPoly(int param_0, dBgS_CaptPoly& param_1) { while (true) { cBgW_RwgElm* puVar2 = &pm_rwg[param_0]; - param_1.m_callback( - param_1, pm_vtx_tbl, - pm_bgd->m_t_tbl[param_0].field_0x0, - pm_bgd->m_t_tbl[param_0].field_0x2, - pm_bgd->m_t_tbl[param_0].field_0x4, - &pm_tri[param_0].m_plane); - if (puVar2->field_0x0 == 0xffff) + param_1.m_callback(param_1, pm_vtx_tbl, pm_bgd->m_t_tbl[param_0].m_vtx_idx0, + pm_bgd->m_t_tbl[param_0].m_vtx_idx1, pm_bgd->m_t_tbl[param_0].m_vtx_idx2, + &pm_tri[param_0].m_plane); + if (puVar2->m_next == 0xFFFF) break; - param_0 = puVar2->field_0x0; + param_0 = puVar2->m_next; } } @@ -1959,22 +1964,22 @@ void dBgW::CaptPolyRp(dBgS_CaptPoly& param_0, int param_1) { return; } - dzb_tree_data* tree_data = &pm_bgd->m_tree_tbl[param_1]; - if (tree_data->field_0x0 & 1) { - if (field_0xa4[tree_data->m_id[0]].field_0x2 != 0xffff) { - RwgCaptPoly(field_0xa4[tree_data->m_id[0]].field_0x2, param_0); + cBgD_Tree_t* tree_data = &pm_bgd->m_tree_tbl[param_1]; + if (tree_data->m_flag & 1) { + if (pm_blk[tree_data->m_id[0]].m_wall_idx != 0xFFFF) { + RwgCaptPoly(pm_blk[tree_data->m_id[0]].m_wall_idx, param_0); } - if (field_0xa4[tree_data->m_id[0]].field_0x0 != 0xffff) { - RwgCaptPoly(field_0xa4[tree_data->m_id[0]].field_0x0, param_0); + if (pm_blk[tree_data->m_id[0]].m_roof_idx != 0xFFFF) { + RwgCaptPoly(pm_blk[tree_data->m_id[0]].m_roof_idx, param_0); } - if (field_0xa4[tree_data->m_id[0]].field_0x4 != 0xffff) { - RwgCaptPoly(field_0xa4[tree_data->m_id[0]].field_0x4, param_0); + if (pm_blk[tree_data->m_id[0]].m_gnd_idx != 0xFFFF) { + RwgCaptPoly(pm_blk[tree_data->m_id[0]].m_gnd_idx, param_0); } return; } - + for (int i = 0; i < 8; i++) { - if (tree_data->m_id[i] == 0xffff) { + if (tree_data->m_id[i] == 0xFFFF) { continue; } CaptPolyRp(param_0, tree_data->m_id[i]); @@ -1992,25 +1997,24 @@ void dBgW::CaptPolyGrpRp(dBgS_CaptPoly& param_0, int param_1, int param_2) { return; } - dzb_g_data* data = &pm_bgd->m_g_tbl[param_1]; - if (pm_bgd->m_g_tbl[param_1].field_0x2e != 0xffff) { - CaptPolyRp(param_0, pm_bgd->m_g_tbl[param_1].field_0x2e); + cBgD_Grp_t* data = &pm_bgd->m_g_tbl[param_1]; + if (pm_bgd->m_g_tbl[param_1].m_tree_idx != 0xFFFF) { + CaptPolyRp(param_0, pm_bgd->m_g_tbl[param_1].m_tree_idx); } - - s32 uVar1 = pm_bgd->m_g_tbl[param_1].field_0x28; + + s32 uVar1 = pm_bgd->m_g_tbl[param_1].m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } CaptPolyGrpRp(param_0, uVar1, param_2 + 1); - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } } - /* 8007DAF8-8007DB20 078438 0028+00 1/0 1/0 0/0 .text CaptPoly__4dBgWFR13dBgS_CaptPoly */ void dBgW::CaptPoly(dBgS_CaptPoly& poly) { - CaptPolyGrpRp(poly, field_0x92, 1); + CaptPolyGrpRp(poly, m_rootGrpIdx, 1); } /* 8007DB20-8007DC70 078460 0150+00 1/1 0/0 0/0 .text RwgSphChk__4dBgWFUsP11dBgS_SphChkPv @@ -2020,27 +2024,24 @@ void dBgW::CaptPoly(dBgS_CaptPoly& poly) { bool dBgW::RwgSphChk(u16 param_0, dBgS_SphChk* param_1, void* param_2) { cM3dGTri acStack_50; cBgW_RwgElm* puVar4; - dzb_tri_data* puVar5; + cBgD_Tri_t* puVar5; bool uVar3 = false; while (true) { puVar4 = &pm_rwg[param_0]; if (!ChkPolyThrough(param_0, param_1->GetPolyPassChk())) { puVar5 = &pm_bgd->m_t_tbl[param_0]; - acStack_50.setBg(&pm_vtx_tbl[puVar5->field_0x0], - &pm_vtx_tbl[puVar5->field_0x2], - &pm_vtx_tbl[puVar5->field_0x4], - &pm_tri[param_0].m_plane); + acStack_50.setBg(&pm_vtx_tbl[puVar5->field_0x0], &pm_vtx_tbl[puVar5->field_0x2], + &pm_vtx_tbl[puVar5->field_0x4], &pm_tri[param_0].m_plane); if (param_1->cross(&acStack_50)) { - param_1->mCallback(param_1, pm_vtx_tbl, puVar5->field_0x0, - puVar5->field_0x2, puVar5->field_0x4, - &pm_tri[param_0].m_plane, param_2); + param_1->mCallback(param_1, pm_vtx_tbl, puVar5->field_0x0, puVar5->field_0x2, + puVar5->field_0x4, &pm_tri[param_0].m_plane, param_2); param_1->SetPolyIndex(param_0); uVar3 = true; } } - if (puVar4->field_0x0 == 0xffff) + if (puVar4->m_next == 0xFFFF) break; - param_0 = puVar4->field_0x0; + param_0 = puVar4->m_next; } return uVar3; } @@ -2062,26 +2063,32 @@ bool dBgW::SphChkRp(dBgS_SphChk* param_0, void* param_1, int param_2) { return false; } - dzb_tree_data* tree_data = &pm_bgd->m_tree_tbl[param_2]; + cBgD_Tree_t* tree_data = &pm_bgd->m_tree_tbl[param_2]; bool rv = false; - if (tree_data->field_0x0 & 1) { - if (field_0xa4[tree_data->m_id[0]].field_0x4 != 0xffff && - RwgSphChk(field_0xa4[tree_data->m_id[0]].field_0x4, param_0, param_1)) { + if (tree_data->m_flag & 1) { + if (pm_blk[tree_data->m_id[0]].m_gnd_idx != 0xFFFF && + RwgSphChk(pm_blk[tree_data->m_id[0]].m_gnd_idx, param_0, param_1)) + { rv = true; } - if (field_0xa4[tree_data->m_id[0]].field_0x0 != 0xffff && - RwgSphChk(field_0xa4[tree_data->m_id[0]].field_0x0, param_0, param_1)) { + + if (pm_blk[tree_data->m_id[0]].m_roof_idx != 0xFFFF && + RwgSphChk(pm_blk[tree_data->m_id[0]].m_roof_idx, param_0, param_1)) + { rv = true; } - if (field_0xa4[tree_data->m_id[0]].field_0x2 != 0xffff && - RwgSphChk(field_0xa4[tree_data->m_id[0]].field_0x2, param_0, param_1)) { + + if (pm_blk[tree_data->m_id[0]].m_wall_idx != 0xFFFF && + RwgSphChk(pm_blk[tree_data->m_id[0]].m_wall_idx, param_0, param_1)) + { rv = true; } + return rv; } - + for (int i = 0; i < 8; i++) { - if (tree_data->m_id[i] == 0xffff) { + if (tree_data->m_id[i] == 0xFFFF) { continue; } if (SphChkRp(param_0, param_1, tree_data->m_id[i])) { @@ -2102,29 +2109,28 @@ bool dBgW::SphChkGrpRp(dBgS_SphChk* param_0, void* param_1, int param_2, int par } bool uVar6 = false; - dzb_g_data* data = &pm_bgd->m_g_tbl[param_2]; - if (data->field_0x2e != 0xffff && - SphChkRp(param_0, param_1, data->field_0x2e)) { + cBgD_Grp_t* data = &pm_bgd->m_g_tbl[param_2]; + if (data->m_tree_idx != 0xFFFF && SphChkRp(param_0, param_1, data->m_tree_idx)) { uVar6 = true; } - - s32 uVar1 = data->field_0x28; + + s32 uVar1 = data->m_first_child; while (true) { - if (uVar1 == 0xffff) { + if (uVar1 == 0xFFFF) { break; } if (SphChkGrpRp(param_0, param_1, uVar1, param_3 + 1)) { uVar6 = true; } - uVar1 = pm_bgd->m_g_tbl[uVar1].field_0x26; + uVar1 = pm_bgd->m_g_tbl[uVar1].m_next_sibling; } - + return uVar6; } /* 8007DF00-8007DF28 078840 0028+00 1/0 1/0 0/0 .text SphChk__4dBgWFP11dBgS_SphChkPv */ bool dBgW::SphChk(dBgS_SphChk* pchk, void* param_1) { - return SphChkGrpRp(pchk, param_1, field_0x92, 1); + return SphChkGrpRp(pchk, param_1, m_rootGrpIdx, 1); } /* 8007DF28-8007DF58 078868 0030+00 1/0 1/0 0/0 .text GetPolyGrpRoomInfId__4dBgWFRC13cBgS_PolyInfo @@ -2140,27 +2146,27 @@ u8 dBgW::GetGrpSoundId(cBgS_PolyInfo const& poly) { /* 8007DF88-8007DFC4 0788C8 003C+00 1/0 0/0 0/0 .text * CrrPos__4dBgWFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */ -void dBgW::CrrPos(cBgS_PolyInfo const& param_0, void* param_1, bool param_2, cXyz* param_3, - csXyz* param_4, csXyz* param_5) { +void dBgW::CrrPos(cBgS_PolyInfo const& i_poly, void* i_actor_ptr, bool param_2, cXyz* i_pos, + csXyz* i_angle, csXyz* i_shapeAngle) { if (m_crr_func) { - m_crr_func(this, param_1, param_0, param_2, param_3, param_4, param_5); + m_crr_func(this, i_actor_ptr, i_poly, param_2, i_pos, i_angle, i_shapeAngle); } } /* 8007DFC4-8007E000 078904 003C+00 1/0 0/0 0/0 .text * TransPos__4dBgWFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */ -void dBgW::TransPos(cBgS_PolyInfo const& param_0, void* param_1, bool param_2, cXyz* param_3, - csXyz* param_4, csXyz* param_5) { +void dBgW::TransPos(cBgS_PolyInfo const& i_poly, void* i_actor_ptr, bool param_2, cXyz* i_pos, + csXyz* i_angle, csXyz* i_shapeAngle) { if (m_crr_func) { - m_crr_func(this, param_1, param_0, param_2, param_3, param_4, param_5); + m_crr_func(this, i_actor_ptr, i_poly, param_2, i_pos, i_angle, i_shapeAngle); } } /* 8007E000-8007E02C 078940 002C+00 1/0 0/0 0/0 .text * MatrixCrrPos__4dBgWFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */ -void dBgW::MatrixCrrPos(cBgS_PolyInfo const& param_0, void* param_1, bool param_2, - cXyz* param_3, csXyz* param_4, csXyz* param_5) { - CrrPos(param_0, param_1, param_2, param_3, param_4, param_5); +void dBgW::MatrixCrrPos(cBgS_PolyInfo const& i_poly, void* i_actor_ptr, bool param_2, cXyz* i_pos, + csXyz* i_angle, csXyz* i_shapeAngle) { + CrrPos(i_poly, i_actor_ptr, param_2, i_pos, i_angle, i_shapeAngle); } /* 8007E02C-8007E360 07896C 0334+00 1/0 1/0 0/0 .text ChkPolyThrough__4dBgWFiP16cBgS_PolyPassChk @@ -2182,7 +2188,8 @@ bool dBgW::ChkPolyThrough(int poly_index, cBgS_PolyPassChk* ppass_chk) { } if ((chk->ChkLink() && GetPolyLinkThrough(poly_index)) || - (chk->ChkHorse() && GetPolyLinkThrough(poly_index))) { + (chk->ChkHorse() && GetPolyLinkThrough(poly_index))) + { return true; } @@ -2256,15 +2263,19 @@ bool dBgW::ChkShdwDrawThrough(int poly_index, cBgS_PolyPassChk*) { } /* 8007E3D8-8007E444 078D18 006C+00 1/0 1/0 0/0 .text ChkGrpThrough__4dBgWFiP15cBgS_GrpPassChki */ -bool dBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) { - if (param_2 != 2 || param_1 == NULL) { +bool dBgW::ChkGrpThrough(int i_grp_idx, cBgS_GrpPassChk* i_passChk, int i_depth) { + if (i_depth != 2 || i_passChk == NULL) { return false; } - if ((pm_bgd->m_g_tbl[param_0].m_info & 0x100) == 0 && ((dBgS_GrpPassChk*)param_1)->MaskNormalGrp()) { + if ((pm_bgd->m_g_tbl[i_grp_idx].m_info & 0x100) == 0 && + ((dBgS_GrpPassChk*)i_passChk)->MaskNormalGrp()) + { return false; } - if ((pm_bgd->m_g_tbl[param_0].m_info & 0x100) && ((dBgS_GrpPassChk*)param_1)->MaskWaterGrp()) { + if ((pm_bgd->m_g_tbl[i_grp_idx].m_info & 0x100) && + ((dBgS_GrpPassChk*)i_passChk)->MaskWaterGrp()) + { return false; } @@ -2298,14 +2309,14 @@ u32 dBgW::ChkMoveFlag() const { } /* 8007E4C0-8007E548 078E00 0088+00 0/0 0/0 1/1 .text dBgW_NewSet__FP6cBgD_tUlPA3_A4_f */ -dBgW* dBgW_NewSet(cBgD_t* pbgd, u32 param_1, Mtx* pbase_mtx) { +dBgW* dBgW_NewSet(cBgD_t* pbgd, u32 flags, Mtx* pbase_mtx) { dBgW* nw = new dBgW(); if (nw == NULL) { return NULL; } - if (nw->Set(pbgd, param_1, pbase_mtx)) { + if (nw->Set(pbgd, flags, pbase_mtx)) { return NULL; }