summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Padgham <jeff.ookami@gmail.com>2024-03-03 07:21:16 -0800
committerGitHub <noreply@github.com>2024-03-03 17:21:16 +0200
commit7ba8c332c7d39db792f7dbfe4e17c00ece24b3d4 (patch)
tree1ac5656375e12900809aac3a80160c7168fc4ac7
parent9b87f613c8de640e7df6780fc69a91ef40037762 (diff)
d_a_obj_catdoor OK (#2083)
* Decomp OK * Cleanup pass, removing unused asm * Updating progress --------- Co-authored-by: GinNoOokami <noreply>
-rw-r--r--Progress.md8
-rw-r--r--asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Create__FP10fopAc_ac_c.s96
-rw-r--r--asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Delete__FP14daObjCatDoor_c.s62
-rw-r--r--include/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h39
-rw-r--r--rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp349
5 files changed, 145 insertions, 409 deletions
diff --git a/Progress.md b/Progress.md
index 7491231f83..8c0b905c58 100644
--- a/Progress.md
+++ b/Progress.md
@@ -21,8 +21,8 @@ Total | 52.660948% | 2117324 | 4020672
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 52.660948% | 2117324 | 4020672
-RELs | 36.213275% | 4164644 | 11500324
-Total | 40.474001% | 6281968 | 15520996
+RELs | 36.218319% | 4165224 | 11500324
+Total | 40.477737% | 6282548 | 15520996
## RELs
@@ -369,7 +369,7 @@ d_a_obj_bsGate | 100.000000% | 4424 | 4424
d_a_obj_bubblePilar | 44.760583% | 2580 | 5764
d_a_obj_burnbox | 45.251397% | 1620 | 3580
d_a_obj_carry | 33.422182% | 20564 | 61528
-d_a_obj_catdoor | 82.338611% | 2704 | 3284
+d_a_obj_catdoor | 100.000000% | 3284 | 3284
d_a_obj_cb | 43.008475% | 2436 | 5664
d_a_obj_cblock | 42.294713% | 3008 | 7112
d_a_obj_cboard | 100.000000% | 2648 | 2648
@@ -785,4 +785,4 @@ d_a_vrbox2 | 44.907111% | 2804 | 6244
d_a_warp_bug | 100.000000% | 2024 | 2024
d_a_ykgr | 44.400631% | 2252 | 5072
f_pc_profile_lst | 100.000000% | 28156 | 28156
-Total | 36.213275% | 4164644 | 11500324
+Total | 36.218319% | 4165224 | 11500324
diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Create__FP10fopAc_ac_c.s
deleted file mode 100644
index a4e8e63c34..0000000000
--- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Create__FP10fopAc_ac_c.s
+++ /dev/null
@@ -1,96 +0,0 @@
-lbl_80BC4848:
-/* 80BC4848 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 80BC484C 7C 08 02 A6 */ mflr r0
-/* 80BC4850 90 01 00 24 */ stw r0, 0x24(r1)
-/* 80BC4854 39 61 00 20 */ addi r11, r1, 0x20
-/* 80BC4858 4B 79 D9 85 */ bl _savegpr_29
-/* 80BC485C 3C 80 80 BC */ lis r4, M_attr__14daObjCatDoor_c@ha /* 0x80BC49B4@ha */
-/* 80BC4860 3B A4 49 B4 */ addi r29, r4, M_attr__14daObjCatDoor_c@l /* 0x80BC49B4@l */
-/* 80BC4864 7C 7E 1B 78 */ mr r30, r3
-/* 80BC4868 80 03 04 A0 */ lwz r0, 0x4a0(r3)
-/* 80BC486C 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
-/* 80BC4870 40 82 00 30 */ bne lbl_80BC48A0
-/* 80BC4874 7F C0 F3 79 */ or. r0, r30, r30
-/* 80BC4878 41 82 00 1C */ beq lbl_80BC4894
-/* 80BC487C 7C 1F 03 78 */ mr r31, r0
-/* 80BC4880 4B 45 42 E5 */ bl __ct__10fopAc_ac_cFv
-/* 80BC4884 38 7F 05 74 */ addi r3, r31, 0x574
-/* 80BC4888 4B 4B 70 E9 */ bl __ct__4dBgWFv
-/* 80BC488C 38 7F 06 6C */ addi r3, r31, 0x66c
-/* 80BC4890 4B 4B 70 E1 */ bl __ct__4dBgWFv
-lbl_80BC4894:
-/* 80BC4894 80 1E 04 A0 */ lwz r0, 0x4a0(r30)
-/* 80BC4898 60 00 00 08 */ ori r0, r0, 8
-/* 80BC489C 90 1E 04 A0 */ stw r0, 0x4a0(r30)
-lbl_80BC48A0:
-/* 80BC48A0 38 7E 05 68 */ addi r3, r30, 0x568
-/* 80BC48A4 3C 80 80 BC */ lis r4, l_arcName@ha /* 0x80BC49E0@ha */
-/* 80BC48A8 38 84 49 E0 */ addi r4, r4, l_arcName@l /* 0x80BC49E0@l */
-/* 80BC48AC 80 84 00 00 */ lwz r4, 0(r4)
-/* 80BC48B0 4B 46 86 0D */ bl dComIfG_resLoad__FP30request_of_phase_process_classPCc
-/* 80BC48B4 7C 7F 1B 78 */ mr r31, r3
-/* 80BC48B8 2C 1F 00 04 */ cmpwi r31, 4
-/* 80BC48BC 40 82 00 D4 */ bne lbl_80BC4990
-/* 80BC48C0 7F C3 F3 78 */ mr r3, r30
-/* 80BC48C4 3C 80 80 BC */ lis r4, createSolidHeap__FP10fopAc_ac_c@ha /* 0x80BC42C4@ha */
-/* 80BC48C8 38 84 42 C4 */ addi r4, r4, createSolidHeap__FP10fopAc_ac_c@l /* 0x80BC42C4@l */
-/* 80BC48CC 38 A0 25 20 */ li r5, 0x2520
-/* 80BC48D0 4B 45 5B E1 */ bl fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl
-/* 80BC48D4 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 80BC48D8 40 82 00 0C */ bne lbl_80BC48E4
-/* 80BC48DC 3B E0 00 05 */ li r31, 5
-/* 80BC48E0 48 00 00 B0 */ b lbl_80BC4990
-lbl_80BC48E4:
-/* 80BC48E4 7F C3 F3 78 */ mr r3, r30
-/* 80BC48E8 C0 3D 00 10 */ lfs f1, 0x10(r29)
-/* 80BC48EC C0 5D 00 0C */ lfs f2, 0xc(r29)
-/* 80BC48F0 C0 7D 00 14 */ lfs f3, 0x14(r29)
-/* 80BC48F4 C0 9D 00 18 */ lfs f4, 0x18(r29)
-/* 80BC48F8 C0 BD 00 1C */ lfs f5, 0x1c(r29)
-/* 80BC48FC C0 DD 00 20 */ lfs f6, 0x20(r29)
-/* 80BC4900 4B 45 5C 49 */ bl fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff
-/* 80BC4904 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 80BC4908 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 80BC490C 80 1E 00 B0 */ lwz r0, 0xb0(r30)
-/* 80BC4910 54 04 06 3E */ clrlwi r4, r0, 0x18
-/* 80BC4914 88 1E 04 BA */ lbz r0, 0x4ba(r30)
-/* 80BC4918 7C 05 07 74 */ extsb r5, r0
-/* 80BC491C 4B 47 0A 45 */ bl isSwitch__10dSv_info_cCFii
-/* 80BC4920 2C 03 00 00 */ cmpwi r3, 0
-/* 80BC4924 41 82 00 18 */ beq lbl_80BC493C
-/* 80BC4928 38 00 88 00 */ li r0, -30720
-/* 80BC492C B0 1E 06 64 */ sth r0, 0x664(r30)
-/* 80BC4930 38 00 78 00 */ li r0, 0x7800
-/* 80BC4934 B0 1E 07 5C */ sth r0, 0x75c(r30)
-/* 80BC4938 48 00 00 50 */ b lbl_80BC4988
-lbl_80BC493C:
-/* 80BC493C 38 00 00 00 */ li r0, 0
-/* 80BC4940 90 1E 06 24 */ stw r0, 0x624(r30)
-/* 80BC4944 88 1E 04 E2 */ lbz r0, 0x4e2(r30)
-/* 80BC4948 98 1E 05 7D */ stb r0, 0x57d(r30)
-/* 80BC494C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 80BC4950 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 80BC4954 3B A3 0F 38 */ addi r29, r3, 0xf38
-/* 80BC4958 7F A3 EB 78 */ mr r3, r29
-/* 80BC495C 38 9E 05 74 */ addi r4, r30, 0x574
-/* 80BC4960 7F C5 F3 78 */ mr r5, r30
-/* 80BC4964 4B 4B 00 A5 */ bl Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c
-/* 80BC4968 38 00 00 00 */ li r0, 0
-/* 80BC496C 90 1E 07 1C */ stw r0, 0x71c(r30)
-/* 80BC4970 88 1E 04 E2 */ lbz r0, 0x4e2(r30)
-/* 80BC4974 98 1E 06 75 */ stb r0, 0x675(r30)
-/* 80BC4978 7F A3 EB 78 */ mr r3, r29
-/* 80BC497C 38 9E 06 6C */ addi r4, r30, 0x66c
-/* 80BC4980 7F C5 F3 78 */ mr r5, r30
-/* 80BC4984 4B 4B 00 85 */ bl Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c
-lbl_80BC4988:
-/* 80BC4988 7F C3 F3 78 */ mr r3, r30
-/* 80BC498C 4B FF FA 69 */ bl initBaseMtx__14daObjCatDoor_cFv
-lbl_80BC4990:
-/* 80BC4990 7F E3 FB 78 */ mr r3, r31
-/* 80BC4994 39 61 00 20 */ addi r11, r1, 0x20
-/* 80BC4998 4B 79 D8 91 */ bl _restgpr_29
-/* 80BC499C 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 80BC49A0 7C 08 03 A6 */ mtlr r0
-/* 80BC49A4 38 21 00 20 */ addi r1, r1, 0x20
-/* 80BC49A8 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Delete__FP14daObjCatDoor_c.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Delete__FP14daObjCatDoor_c.s
deleted file mode 100644
index 02a2a5b266..0000000000
--- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Delete__FP14daObjCatDoor_c.s
+++ /dev/null
@@ -1,62 +0,0 @@
-lbl_80BC4768:
-/* 80BC4768 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 80BC476C 7C 08 02 A6 */ mflr r0
-/* 80BC4770 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80BC4774 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 80BC4778 7C 7F 1B 79 */ or. r31, r3, r3
-/* 80BC477C 41 82 00 B4 */ beq lbl_80BC4830
-/* 80BC4780 38 7F 05 74 */ addi r3, r31, 0x574
-/* 80BC4784 4B 6A 3A 51 */ bl ChkUsed__9cBgW_BgIdCFv
-/* 80BC4788 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 80BC478C 41 82 00 18 */ beq lbl_80BC47A4
-/* 80BC4790 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 80BC4794 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 80BC4798 38 63 0F 38 */ addi r3, r3, 0xf38
-/* 80BC479C 38 9F 05 74 */ addi r4, r31, 0x574
-/* 80BC47A0 4B 4A FA B1 */ bl Release__4cBgSFP9dBgW_Base
-lbl_80BC47A4:
-/* 80BC47A4 38 7F 06 6C */ addi r3, r31, 0x66c
-/* 80BC47A8 4B 6A 3A 2D */ bl ChkUsed__9cBgW_BgIdCFv
-/* 80BC47AC 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 80BC47B0 41 82 00 18 */ beq lbl_80BC47C8
-/* 80BC47B4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 80BC47B8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 80BC47BC 38 63 0F 38 */ addi r3, r3, 0xf38
-/* 80BC47C0 38 9F 06 6C */ addi r4, r31, 0x66c
-/* 80BC47C4 4B 4A FA 8D */ bl Release__4cBgSFP9dBgW_Base
-lbl_80BC47C8:
-/* 80BC47C8 38 7F 05 68 */ addi r3, r31, 0x568
-/* 80BC47CC 3C 80 80 BC */ lis r4, l_arcName@ha /* 0x80BC49E0@ha */
-/* 80BC47D0 38 84 49 E0 */ addi r4, r4, l_arcName@l /* 0x80BC49E0@l */
-/* 80BC47D4 80 84 00 00 */ lwz r4, 0(r4)
-/* 80BC47D8 4B 46 88 31 */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc
-/* 80BC47DC 34 1F 06 68 */ addic. r0, r31, 0x668
-/* 80BC47E0 41 82 00 20 */ beq lbl_80BC4800
-/* 80BC47E4 34 7F 06 6C */ addic. r3, r31, 0x66c
-/* 80BC47E8 41 82 00 18 */ beq lbl_80BC4800
-/* 80BC47EC 3C 80 80 3B */ lis r4, __vt__4dBgW@ha /* 0x803ABA80@ha */
-/* 80BC47F0 38 04 BA 80 */ addi r0, r4, __vt__4dBgW@l /* 0x803ABA80@l */
-/* 80BC47F4 90 1F 06 70 */ stw r0, 0x670(r31)
-/* 80BC47F8 38 80 00 00 */ li r4, 0
-/* 80BC47FC 4B 4B 4B 41 */ bl __dt__4cBgWFv
-lbl_80BC4800:
-/* 80BC4800 34 1F 05 70 */ addic. r0, r31, 0x570
-/* 80BC4804 41 82 00 20 */ beq lbl_80BC4824
-/* 80BC4808 34 7F 05 74 */ addic. r3, r31, 0x574
-/* 80BC480C 41 82 00 18 */ beq lbl_80BC4824
-/* 80BC4810 3C 80 80 3B */ lis r4, __vt__4dBgW@ha /* 0x803ABA80@ha */
-/* 80BC4814 38 04 BA 80 */ addi r0, r4, __vt__4dBgW@l /* 0x803ABA80@l */
-/* 80BC4818 90 1F 05 78 */ stw r0, 0x578(r31)
-/* 80BC481C 38 80 00 00 */ li r4, 0
-/* 80BC4820 4B 4B 4B 1D */ bl __dt__4cBgWFv
-lbl_80BC4824:
-/* 80BC4824 7F E3 FB 78 */ mr r3, r31
-/* 80BC4828 38 80 00 00 */ li r4, 0
-/* 80BC482C 4B 45 44 61 */ bl __dt__10fopAc_ac_cFv
-lbl_80BC4830:
-/* 80BC4830 38 60 00 01 */ li r3, 1
-/* 80BC4834 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 80BC4838 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 80BC483C 7C 08 03 A6 */ mtlr r0
-/* 80BC4840 38 21 00 10 */ addi r1, r1, 0x10
-/* 80BC4844 4E 80 00 20 */ blr
diff --git a/include/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h b/include/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h
index dd4499dd37..2b144aaaa2 100644
--- a/include/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h
+++ b/include/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h
@@ -1,5 +1,44 @@
#ifndef D_A_OBJ_CATDOOR_H
#define D_A_OBJ_CATDOOR_H
+#include "f_op/f_op_actor.h"
+#include "f_op/f_op_actor_mng.h"
+#include "SSystem/SComponent/c_phase.h"
+#include "d/bg/d_bg_w.h"
+
+struct daObjCatDoor_Door_c {
+ /* 0x00 */ J3DModel* pmodel;
+ /* 0x04 */ dBgW bgw;
+ /* 0xe0 */ Mtx mtx;
+ /* 0xf4 */ s16 angle;
+};
+
+class daObjCatDoor_c : public fopAc_ac_c {
+public:
+ inline ~daObjCatDoor_c();
+
+ /* 80BC42B8 */ const s16* attr() const;
+ /* 80BC43F4 */ void initBaseMtx();
+ /* 80BC4454 */ void setBaseMtx();
+ /* 80BC4560 */ void calcOpen();
+
+ u8 getSwitchNo() { return fopAcM_GetParam(this); }
+
+ inline int createHeap();
+ inline int draw();
+ inline int execute();
+ inline int create();
+ inline void create_init();
+
+private:
+ /* 0x568 */ request_of_phase_process_class mPhaseReq;
+ /* 0x570 */ daObjCatDoor_Door_c mDoor1;
+ /* 0x660 */ daObjCatDoor_Door_c mDoor2;
+ /* 0x760 */ Mtx mMtx;
+ /* 0x790 */ s16 mRotSpeed;
+
+public:
+ static u32 const M_attr;
+};
#endif /* D_A_OBJ_CATDOOR_H */
diff --git a/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp b/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp
index f630b6fac9..66db48c869 100644
--- a/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp
+++ b/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp
@@ -4,211 +4,122 @@
//
#include "rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h"
-#include "JSystem/JKernel/JKRHeap.h"
-#include "d/bg/d_bg_w.h"
#include "d/com/d_com_inf_game.h"
-#include "dol2asm.h"
-#include "f_op/f_op_actor.h"
#include "f_op/f_op_actor_mng.h"
-#include "global.h"
-extern const char* l_arcName;
-static int createSolidHeap(fopAc_ac_c* i_this);
-
-struct daObjCatDoor_Door_c {
- /* 0x00 */ J3DModel* pmodel;
- /* 0x04 */ dBgW bgw;
- /* 0xe0 */ Mtx mtx;
- /* 0xf4 */ s16 angle;
-};
-
-class daObjCatDoor_c : public fopAc_ac_c {
-public:
- daObjCatDoor_c() {}
- ~daObjCatDoor_c() {
- if (mDoor1.bgw.ChkUsed()) {
- dComIfG_Bgsp().Release(&mDoor1.bgw);
- }
- if (mDoor2.bgw.ChkUsed()) {
- dComIfG_Bgsp().Release(&mDoor2.bgw);
- }
- dComIfG_resDelete(&mPhaseReq, l_arcName);
- }
-
- /* 80BC42B8 */ const s16* attr() const;
- /* 80BC43F4 */ void initBaseMtx();
- /* 80BC4454 */ void setBaseMtx();
- /* 80BC4560 */ void calcOpen();
-
- u8 getSwitchNo() { return fopAcM_GetParam(this); }
-
- int createHeap() {
- J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
-
- ASSERT(modelData != NULL);
- mDoor1.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
- mDoor2.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
- if (mDoor1.pmodel == NULL || mDoor2.pmodel == NULL) {
- return 0;
- }
-
- cBgD_t* cbgd = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7);
- if (mDoor1.bgw.Set(cbgd, 1, &mDoor1.mtx)) {
- return 0;
- }
-
- cBgD_t* cbgd2 = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7);
- if (mDoor2.bgw.Set(cbgd2, 1, &mDoor2.mtx)) {
- return 0;
- }
-
- return 1;
- }
+//
+// Declarations:
+//
- int draw() {
- g_env_light.settingTevStruct(0x10, &current.pos, &mTevStr);
+static const char* l_arcName = "CatDoor";
- fopAc_ac_c* p1 = static_cast<fopAc_ac_c*>(this);
- g_env_light.setLightTevColorType_MAJI(mDoor1.pmodel, &p1->mTevStr);
- g_env_light.setLightTevColorType_MAJI(mDoor2.pmodel, &p1->mTevStr);
+u32 const daObjCatDoor_c::M_attr = 0x001E0578;
- dComIfGd_setListBG();
- mDoExt_modelUpdateDL(mDoor1.pmodel);
- mDoExt_modelUpdateDL(mDoor2.pmodel);
- dComIfGd_setList();
- return 1;
+daObjCatDoor_c::~daObjCatDoor_c() {
+ if (mDoor1.bgw.ChkUsed()) {
+ dComIfG_Bgsp().Release(&mDoor1.bgw);
}
-
- int execute() {
- if (dComIfGs_isSwitch(fopAcM_GetParam(this) & 0xFF, fopAcM_GetHomeRoomNo(this)) ||
- mRotSpeed == 0) {
- return 1;
- }
- calcOpen();
- setBaseMtx();
- return 1;
+ if (mDoor2.bgw.ChkUsed()) {
+ dComIfG_Bgsp().Release(&mDoor2.bgw);
}
+ dComIfG_resDelete(&mPhaseReq, l_arcName);
+}
- int create() {
- fopAcM_SetupActor(this, daObjCatDoor_c);
+int daObjCatDoor_c::createHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
- int phase_state = dComIfG_resLoad(&mPhaseReq, l_arcName);
- if (phase_state == cPhs_COMPLEATE_e) {
- if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x2520)) {
- phase_state = cPhs_ERROR_e;
- } else {
- create_init();
- }
- }
- return phase_state;
+ ASSERT(modelData != NULL);
+ mDoor1.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ mDoor2.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mDoor1.pmodel == NULL || mDoor2.pmodel == NULL) {
+ return 0;
}
- void create_init() {
- ASSERT(getSwitchNo() != 0xff);
- fopAcM_setCullSizeBox(this, -200.0f, 0.0f, -20.0f, 200.0f, 260.0f, 100.0f);
- if (i_fopAcM_isSwitch(this, getSwitchNo())) {
- mDoor1.angle = 0x8800;
- mDoor2.angle = 0x7800;
- } else {
- mDoor1.bgw.SetCrrFunc(NULL);
- mDoor1.bgw.SetRoomId(fopAcM_GetRoomNo(this));
- dComIfG_Bgsp().Regist(&mDoor1.bgw, this);
- mDoor2.bgw.SetCrrFunc(NULL);
- mDoor2.bgw.SetRoomId(fopAcM_GetRoomNo(this));
- dComIfG_Bgsp().Regist(&mDoor2.bgw, this);
- }
- initBaseMtx();
+ cBgD_t* cbgd = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7);
+ if (mDoor1.bgw.Set(cbgd, 1, &mDoor1.mtx)) {
+ return 0;
}
-private:
- /* 0x568 */ request_of_phase_process_class mPhaseReq;
- /* 0x570 */ daObjCatDoor_Door_c mDoor1;
- /* 0x660 */ daObjCatDoor_Door_c mDoor2;
- /* 0x760 */ Mtx mMtx;
- /* 0x790 */ s16 mRotSpeed;
-
-public:
- static u32 const M_attr;
-};
-
-//
-// Forward References:
-//
+ cBgD_t* cbgd2 = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7);
+ if (mDoor2.bgw.Set(cbgd2, 1, &mDoor2.mtx)) {
+ return 0;
+ }
-extern "C" static void createSolidHeap__FP10fopAc_ac_c();
-extern "C" void initBaseMtx__14daObjCatDoor_cFv();
-extern "C" static void daObjCatDoor_Draw__FP14daObjCatDoor_c();
-extern "C" static int daObjCatDoor_Execute__FP14daObjCatDoor_c();
-extern "C" static bool daObjCatDoor_IsDelete__FP14daObjCatDoor_c();
-extern "C" static void daObjCatDoor_Delete__FP14daObjCatDoor_c();
-extern "C" static void daObjCatDoor_Create__FP10fopAc_ac_c();
-extern "C" u32 const M_attr__14daObjCatDoor_c;
+ return 1;
+}
-//
-// External References:
-//
+int daObjCatDoor_c::draw() {
+ g_env_light.settingTevStruct(0x10, &current.pos, &mTevStr);
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void push__14mDoMtx_stack_cFv();
-extern "C" void pop__14mDoMtx_stack_cFv();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void onSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-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 __dt__4cBgWFv();
-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 ChkUsed__9cBgW_BgIdCFv();
-extern "C" void cLib_chaseS__FPsss();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__4dBgW[65];
-extern "C" u8 now__14mDoMtx_stack_c[48];
+ fopAc_ac_c* p1 = static_cast<fopAc_ac_c*>(this);
+ g_env_light.setLightTevColorType_MAJI(mDoor1.pmodel, &p1->mTevStr);
+ g_env_light.setLightTevColorType_MAJI(mDoor2.pmodel, &p1->mTevStr);
-//
-// Declarations:
-//
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(mDoor1.pmodel);
+ mDoExt_modelUpdateDL(mDoor2.pmodel);
+ dComIfGd_setList();
+ return 1;
+}
-/* ############################################################################################## */
-/* 80BC49B4-80BC49B8 000000 0004+00 3/3 0/0 0/0 .rodata M_attr__14daObjCatDoor_c */
-SECTION_RODATA u32 const daObjCatDoor_c::M_attr = 0x001E0578;
-COMPILER_STRIP_GATE(0x80BC49B4, &daObjCatDoor_c::M_attr);
+int daObjCatDoor_c::execute() {
+ if (dComIfGs_isSwitch(fopAcM_GetParam(this) & 0xFF, fopAcM_GetHomeRoomNo(this)) ||
+ mRotSpeed == 0)
+ {
+ return 1;
+ }
+ calcOpen();
+ setBaseMtx();
+ return 1;
+}
/* 80BC42B8-80BC42C4 000078 000C+00 1/1 0/0 1/1 .text attr__14daObjCatDoor_cCFv */
const s16* daObjCatDoor_c::attr() const {
return (const s16*)&daObjCatDoor_c::M_attr;
}
-/* 80BC49E0-80BC49E4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-static const char* l_arcName = "CatDoor";
-
/* 80BC42C4-80BC43F4 000084 0130+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
static int createSolidHeap(fopAc_ac_c* i_this) {
return static_cast<daObjCatDoor_c*>(i_this)->createHeap();
}
+int daObjCatDoor_c::create() {
+ fopAcM_SetupActor(this, daObjCatDoor_c);
+
+ int phase_state = dComIfG_resLoad(&mPhaseReq, l_arcName);
+ if (phase_state == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x2520)) {
+ phase_state = cPhs_ERROR_e;
+ } else {
+ create_init();
+ }
+ }
+ return phase_state;
+}
+
+void daObjCatDoor_c::create_init() {
+ ASSERT(getSwitchNo() != 0xff);
+ fopAcM_setCullSizeBox(this, -200.0f, 0.0f, -20.0f, 200.0f, 260.0f, 100.0f);
+ if (i_fopAcM_isSwitch(this, getSwitchNo())) {
+ mDoor1.angle = 0x8800;
+ mDoor2.angle = 0x7800;
+ } else {
+ mDoor1.bgw.SetCrrFunc(NULL);
+ mDoor1.bgw.SetRoomId(fopAcM_GetRoomNo(this));
+ dComIfG_Bgsp().Regist(&mDoor1.bgw, this);
+ mDoor2.bgw.SetCrrFunc(NULL);
+ mDoor2.bgw.SetRoomId(fopAcM_GetRoomNo(this));
+ dComIfG_Bgsp().Regist(&mDoor2.bgw, this);
+ }
+ initBaseMtx();
+}
+
/* 80BC43F4-80BC4454 0001B4 0060+00 1/1 0/0 0/0 .text initBaseMtx__14daObjCatDoor_cFv */
void daObjCatDoor_c::initBaseMtx() {
mCullMtx = mMtx;
mDoMtx_stack_c::transS(current.pos);
mDoMtx_YrotM(mDoMtx_stack_c::get(), shape_angle.y);
- MTXCopy(mDoMtx_stack_c::get(), mMtx);
+ mDoMtx_copy(mDoMtx_stack_c::get(), mMtx);
setBaseMtx();
}
@@ -264,98 +175,42 @@ static bool daObjCatDoor_IsDelete(daObjCatDoor_c* i_this) {
}
/* 80BC4768-80BC4848 000528 00E0+00 1/0 0/0 0/0 .text daObjCatDoor_Delete__FP14daObjCatDoor_c */
-#ifdef NONMATCHING // ~dBgW is not inlined
static int daObjCatDoor_Delete(daObjCatDoor_c* i_this) {
fopAcM_GetID(i_this);
i_this->~daObjCatDoor_c();
return 1;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjCatDoor_Delete(daObjCatDoor_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Delete__FP14daObjCatDoor_c.s"
-}
-#pragma pop
-#endif
-
-/* ############################################################################################## */
-/* 80BC49C4-80BC49C8 000010 0004+00 0/1 0/0 0/0 .rodata @3860 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3860 = -200.0f;
-COMPILER_STRIP_GATE(0x80BC49C4, &lit_3860);
-#pragma pop
-
-/* 80BC49C8-80BC49CC 000014 0004+00 0/1 0/0 0/0 .rodata @3861 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3861 = -20.0f;
-COMPILER_STRIP_GATE(0x80BC49C8, &lit_3861);
-#pragma pop
-
-/* 80BC49CC-80BC49D0 000018 0004+00 0/1 0/0 0/0 .rodata @3862 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3862 = 200.0f;
-COMPILER_STRIP_GATE(0x80BC49CC, &lit_3862);
-#pragma pop
-
-/* 80BC49D0-80BC49D4 00001C 0004+00 0/1 0/0 0/0 .rodata @3863 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3863 = 260.0f;
-COMPILER_STRIP_GATE(0x80BC49D0, &lit_3863);
-#pragma pop
-
-/* 80BC49D4-80BC49D8 000020 0004+00 0/1 0/0 0/0 .rodata @3864 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3864 = 100.0f;
-COMPILER_STRIP_GATE(0x80BC49D4, &lit_3864);
-#pragma pop
/* 80BC4848-80BC49AC 000608 0164+00 1/0 0/0 0/0 .text daObjCatDoor_Create__FP10fopAc_ac_c
*/
-#ifdef NONMATCHING // literals + register init order
static int daObjCatDoor_Create(fopAc_ac_c* i_this) {
fopAcM_GetID(i_this);
- return static_cast<daObjCatDoor_c*>(i_this)->create();
+ daObjCatDoor_c* a_this = static_cast<daObjCatDoor_c*>(i_this);
+ return a_this->create();
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjCatDoor_Create(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Create__FP10fopAc_ac_c.s"
-}
-#pragma pop
-#endif
/* ############################################################################################## */
/* 80BC49E4-80BC4A04 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCatDoor_Method */
-SECTION_DATA static void* l_daObjCatDoor_Method[8] = {
- (void*)daObjCatDoor_Create__FP10fopAc_ac_c,
- (void*)daObjCatDoor_Delete__FP14daObjCatDoor_c,
- (void*)daObjCatDoor_Execute__FP14daObjCatDoor_c,
- (void*)daObjCatDoor_IsDelete__FP14daObjCatDoor_c,
- (void*)daObjCatDoor_Draw__FP14daObjCatDoor_c,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
+static actor_method_class l_daObjCatDoor_Method = {
+ (process_method_func)daObjCatDoor_Create, (process_method_func)daObjCatDoor_Delete,
+ (process_method_func)daObjCatDoor_Execute, (process_method_func)daObjCatDoor_IsDelete,
+ (process_method_func)daObjCatDoor_Draw,
};
/* 80BC4A04-80BC4A34 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_CatDoor */
-SECTION_DATA extern void* g_profile_Obj_CatDoor[12] = {
- (void*)0xFFFFFFFD, (void*)0x0003FFFD,
- (void*)0x00B90000, (void*)&g_fpcLf_Method,
- (void*)0x00000794, (void*)NULL,
- (void*)NULL, (void*)&g_fopAc_Method,
- (void*)0x02AC0000, (void*)&l_daObjCatDoor_Method,
- (void*)0x00044100, (void*)0x000E0000,
+extern actor_process_profile_definition g_profile_Obj_CatDoor = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_CatDoor, // mProcName
+ &g_fpcLf_Method.mBase, // mSubMtd
+ sizeof(daObjCatDoor_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // mSubMtd
+ 684, // mPriority
+ &l_daObjCatDoor_Method, // mSubMtd
+ 0x44100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // mCullType
};
-
-/* 80BC49D8-80BC49D8 000024 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */