mirror of https://github.com/zeldaret/tp.git
d_a_obj_catdoor OK (#2083)
* Decomp OK * Cleanup pass, removing unused asm * Updating progress --------- Co-authored-by: GinNoOokami <noreply>
This commit is contained in:
parent
9b87f613c8
commit
7ba8c332c7
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
int draw() {
|
||||
g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr);
|
||||
|
||||
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);
|
||||
|
||||
dComIfGd_setListBG();
|
||||
mDoExt_modelUpdateDL(mDoor1.pmodel);
|
||||
mDoExt_modelUpdateDL(mDoor2.pmodel);
|
||||
dComIfGd_setList();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int execute() {
|
||||
if (dComIfGs_isSwitch(fopAcM_GetParam(this) & 0xFF, fopAcM_GetHomeRoomNo(this)) ||
|
||||
mRotSpeed == 0) {
|
||||
return 1;
|
||||
}
|
||||
calcOpen();
|
||||
setBaseMtx();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int 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 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();
|
||||
}
|
||||
|
||||
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:
|
||||
//
|
||||
|
||||
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;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
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];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 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);
|
||||
static const char* l_arcName = "CatDoor";
|
||||
|
||||
u32 const daObjCatDoor_c::M_attr = 0x001E0578;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
int daObjCatDoor_c::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;
|
||||
}
|
||||
|
||||
int daObjCatDoor_c::draw() {
|
||||
g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr);
|
||||
|
||||
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);
|
||||
|
||||
dComIfGd_setListBG();
|
||||
mDoExt_modelUpdateDL(mDoor1.pmodel);
|
||||
mDoExt_modelUpdateDL(mDoor2.pmodel);
|
||||
dComIfGd_setList();
|
||||
return 1;
|
||||
}
|
||||
|
||||
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 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue