d_a_obj_pillar done (#2255)

This commit is contained in:
TakaRikka 2024-11-30 02:08:38 -08:00 committed by GitHub
parent 24b72a5302
commit 7cc32c05fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 565 additions and 626 deletions

View File

@ -5,7 +5,7 @@ __register_global_object = .text:0x00000078; // type:function size:0x1C scope:gl
__destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global
__ct__14daPillar_HIO_cFv = .text:0x000000EC; // type:function size:0x84 scope:global
__dt__14mDoHIO_entry_cFv = .text:0x00000170; // type:function size:0x48 scope:global
rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000001B8; // type:function size:0xBC scope:global
rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000001B8; // type:function size:0xBC scope:local
setBaseMtx__10daPillar_cFv = .text:0x00000274; // type:function size:0x138 scope:global
Create__10daPillar_cFv = .text:0x000003AC; // type:function size:0x1BC scope:global
CreateHeap__10daPillar_cFv = .text:0x00000568; // type:function size:0xFC scope:global
@ -26,10 +26,10 @@ actionEnd__10daPillar_cFv = .text:0x0000118C; // type:function size:0x4 scope:gl
Execute__10daPillar_cFPPA3_A4_f = .text:0x00001190; // type:function size:0x288 scope:global
Draw__10daPillar_cFv = .text:0x00001418; // type:function size:0xE8 scope:global
Delete__10daPillar_cFv = .text:0x00001500; // type:function size:0x40 scope:global
daPillar_create1st__FP10daPillar_c = .text:0x00001540; // type:function size:0xF4 scope:global
daPillar_MoveBGDelete__FP10daPillar_c = .text:0x00001634; // type:function size:0x20 scope:global
daPillar_MoveBGExecute__FP10daPillar_c = .text:0x00001654; // type:function size:0x20 scope:global
daPillar_MoveBGDraw__FP10daPillar_c = .text:0x00001674; // type:function size:0x2C scope:global
daPillar_create1st__FP10daPillar_c = .text:0x00001540; // type:function size:0xF4 scope:local
daPillar_MoveBGDelete__FP10daPillar_c = .text:0x00001634; // type:function size:0x20 scope:local
daPillar_MoveBGExecute__FP10daPillar_c = .text:0x00001654; // type:function size:0x20 scope:local
daPillar_MoveBGDraw__FP10daPillar_c = .text:0x00001674; // type:function size:0x2C scope:local
__dt__10cCcD_GSttsFv = .text:0x000016A0; // type:function size:0x48 scope:global
__dt__14daPillar_HIO_cFv = .text:0x000016E8; // type:function size:0x5C scope:global
__sinit_d_a_obj_pillar_cpp = .text:0x00001744; // type:function size:0x3C scope:local
@ -37,12 +37,12 @@ _ctors = .ctors:0x00000000; // type:label scope:global
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
l_bmd = .rodata:0x00000000; // type:object size:0x8 scope:global
l_dzb = .rodata:0x00000008; // type:object size:0x8 scope:global
l_shadowBmd = .rodata:0x00000010; // type:object size:0x8 scope:global
l_heap_size = .rodata:0x00000018; // type:object size:0x8 scope:global
l_cyl_src = .rodata:0x00000020; // type:object size:0x44 scope:global
l_shake_data = .rodata:0x00000064; // type:object size:0x30 scope:global data:2byte
l_bmd = .rodata:0x00000000; // type:object size:0x8 scope:local
l_dzb = .rodata:0x00000008; // type:object size:0x8 scope:local
l_shadowBmd = .rodata:0x00000010; // type:object size:0x8 scope:local
l_heap_size = .rodata:0x00000018; // type:object size:0x8 scope:local
l_cyl_src = .rodata:0x00000020; // type:object size:0x44 scope:local
l_shake_data = .rodata:0x00000064; // type:object size:0x30 scope:local data:2byte
@3664 = .rodata:0x00000094; // type:object size:0x4 scope:local
@3665 = .rodata:0x00000098; // type:object size:0x4 scope:local
@3681 = .rodata:0x0000009C; // type:object size:0x4 scope:local
@ -64,14 +64,14 @@ l_shake_data = .rodata:0x00000064; // type:object size:0x30 scope:global data:2b
@4267 = .rodata:0x000000F4; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x000000F8; // type:object size:0x1B scope:local data:string_table
...data.0 = .data:0x00000000; // type:label scope:local
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
l_arcName = .data:0x00000020; // type:object size:0x8 scope:global
l_arcName = .data:0x00000020; // type:object size:0x8 scope:local
@4193 = .data:0x00000028; // type:object size:0xC scope:local
@4194 = .data:0x00000034; // type:object size:0xC scope:local
@4195 = .data:0x00000040; // type:object size:0xC scope:local
l_func$4192 = .data:0x0000004C; // type:object size:0x24 scope:local
daPillar_METHODS = .data:0x00000070; // type:object size:0x20 scope:global
daPillar_METHODS = .data:0x00000070; // type:object size:0x20 scope:local
g_profile_Obj_Pillar = .data:0x00000090; // type:object size:0x30 scope:global
__vt__10cCcD_GStts = .data:0x000000C0; // type:object size:0xC scope:global
__vt__10dCcD_GStts = .data:0x000000CC; // type:object size:0xC scope:global
@ -82,5 +82,5 @@ __vt__14daPillar_HIO_c = .data:0x00000118; // type:object size:0xC scope:global
__vt__14mDoHIO_entry_c = .data:0x00000124; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
@3657 = .bss:0x00000008; // type:object size:0xC scope:local
l_HIO = .bss:0x00000014; // type:object size:0x28 scope:global data:float
l_HIO = .bss:0x00000014; // type:object size:0x28 scope:local data:float
lbl_593_bss_3C = .bss:0x0000003C; // type:object size:0x1 data:byte

View File

@ -1958,7 +1958,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_pdtile"),
ActorRel(NonMatching, "d_a_obj_pdwall"),
ActorRel(NonMatching, "d_a_obj_picture"),
ActorRel(NonMatching, "d_a_obj_pillar"),
ActorRel(Matching, "d_a_obj_pillar"),
ActorRel(Matching, "d_a_obj_pleaf"),
ActorRel(NonMatching, "d_a_obj_poCandle"),
ActorRel(NonMatching, "d_a_obj_poFire"),

View File

@ -201,6 +201,7 @@ public:
s8 prm_chk_type_lightball() { return (getType() == TYPE_BALL_S || getType() == TYPE_BALL_S_2); }
void startCtrl() { mCtrl = 1; }
void endCtrl() { mCtrl = 0; }
void setDrop() { field_0xcf2 = 3; }
static void make_prm(csXyz* param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5, u8 param_6=0) {
param_1->x = (param_4 << 8) | param_3;
@ -227,7 +228,8 @@ public:
/* 0xCEC */ float field_0xcec;
/* 0xCF0 */ u8 mType;
/* 0xCF1 */ u8 field_0xcf1;
/* 0xCF2 */ u8 field_0xCF2[0xCF4 - 0xCF2];
/* 0xCF2 */ u8 field_0xcf2;
/* 0xCF3 */ u8 field_0xCF3[0xCF4 - 0xCF3];
/* 0xCF4 */ cXyz field_0xcf4;
/* 0xD00 */ s16 field_0xd00;
/* 0xD02 */ u8 field_0xD02[0xD04 - 0xD02];

View File

@ -2,6 +2,8 @@
#define D_A_OBJ_PILLAR_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
/**
* @ingroup actors-objects
@ -11,15 +13,32 @@
* @details
*
*/
class daPillar_c : public fopAc_ac_c {
class daPillar_c : public dBgS_MoveBgActor {
public:
enum shake_e {
SHAKE_CRASH,
SHAKE_STRONG,
SHAKE_WEAK,
SHAKE_CRASH_LV1,
SHAKE_IRONBALL,
SHAKE_NONE = 0xFF,
};
struct sdata_t {
/* 0x0 */ u8 mPower;
/* 0x1 */ u8 field_0x1;
/* 0x2 */ s16 mInitAngleX;
/* 0x4 */ s16 mTime;
/* 0x6 */ s16 mSpeedY;
/* 0x8 */ s16 mMaxChangeX;
/* 0xA */ s16 mMinChangeX;
};
/* 80CAF4B4 */ void setBaseMtx();
/* 80CAF5EC */ void Create();
/* 80CAF7A8 */ void CreateHeap();
/* 80CAF8A4 */ void create1st();
/* 80CAFB44 */ void checkAttacked();
/* 80CAF8A4 */ int create1st();
/* 80CAFB44 */ bool checkAttacked();
/* 80CAFC08 */ void on_switch();
/* 80CAFD64 */ void checkShake();
/* 80CAFD64 */ int checkShake();
/* 80CAFF60 */ void setShake_rcrash();
/* 80CB01E0 */ void setShake_strong();
/* 80CB022C */ void setShake_weak();
@ -27,30 +46,61 @@ public:
/* 80CB031C */ void actionSwOnWait();
/* 80CB0378 */ void actionSwOn();
/* 80CB03CC */ void actionEnd();
/* 80CB03D0 */ void Execute(f32 (**)[3][4]);
/* 80CB0658 */ void Draw();
/* 80CB0740 */ void Delete();
/* 80CAF7A8 */ virtual int CreateHeap();
/* 80CAF5EC */ virtual int Create();
/* 80CB03D0 */ virtual int Execute(Mtx**);
/* 80CB0658 */ virtual int Draw();
/* 80CB0740 */ virtual int Delete();
u16 getTimer() { return fopAcM_GetParamBit(this, 0x18, 8); }
u8 checkShadow() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getType() { return fopAcM_GetParamBit(this, 0x10, 8); }
u8 getMdlType() { return field_0x73e & 0xF; }
bool checkRollAttack() { return field_0x732 == true; }
void setShake(int i_shake) { field_0x738 = i_shake; }
bool checkRollAttack() { return mIsRollAttack == true; }
void setShake(int i_shake) { mShake = i_shake; }
void setAction(u8 i_action) { mAction = i_action; }
private:
/* 0x568 */ u8 field_0x568[0x732 - 0x568];
/* 0x732 */ u8 field_0x732;
/* 0x733 */ u8 field_0x733[0x738 - 0x733];
/* 0x738 */ int field_0x738;
/* 0x73C */ u8 field_0x73c[0x73E - 0x73C];
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ dCcD_Stts mColliderStts;
/* 0x5E8 */ dCcD_Cyl mCylCollider;
/* 0x724 */ J3DModel* mpShadowModel;
/* 0x728 */ u8 field_0x728[0x72D - 0x728];
/* 0x72D */ u8 mIsPrmInit;
/* 0x72E */ s16 mRotY;
/* 0x730 */ u8 field_0x730[0x732 - 0x730];
/* 0x732 */ u8 mIsRollAttack;
/* 0x733 */ u8 mAction;
/* 0x734 */ s16 field_0x734;
/* 0x736 */ s16 mTimer;
/* 0x738 */ int mShake;
/* 0x73C */ s16 field_0x73c;
/* 0x73E */ u16 field_0x73e;
/* 0x740 */ u8 field_0x740[0x750 - 0x740];
/* 0x740 */ u8 mMdlType;
/* 0x741 */ u8 mShakeMode;
/* 0x742 */ sdata_t mShakeData;
/* 0x74E */ s16 mQuakeTimer;
};
STATIC_ASSERT(sizeof(daPillar_c) == 0x750);
class daPillar_HIO_c {
class daPillar_HIO_c : public mDoHIO_entry_c {
public:
/* 80CAF32C */ daPillar_HIO_c();
/* 80CB0928 */ ~daPillar_HIO_c();
/* 80CB0928 */ virtual ~daPillar_HIO_c() {}
/* 0x04 */ daPillar_c::sdata_t mShakeData;
/* 0x10 */ u8 field_0x10[0x1C - 0x10];
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ u8 field_0x24;
/* 0x25 */ u8 field_0x25;
/* 0x26 */ u8 field_0x26;
/* 0x27 */ u8 mIsAdjust;
};

View File

@ -3474,7 +3474,7 @@ void daB_ZANT_c::executeMonkey() {
fopAcM_SearchByID(mPillarIDs[field_0x70a], &ppillar);
if (ppillar != NULL) {
((daPillar_c*)ppillar)->setShake(2);
((daPillar_c*)ppillar)->setShake(daPillar_c::SHAKE_WEAK);
}
}
break;
@ -3495,7 +3495,7 @@ void daB_ZANT_c::executeMonkey() {
fopAcM_SearchByID(mPillarIDs[field_0x70a], &ppillar);
if (ppillar != NULL) {
((daPillar_c*)ppillar)->setShake(2);
((daPillar_c*)ppillar)->setShake(daPillar_c::SHAKE_WEAK);
}
mMode = 1;

File diff suppressed because it is too large Load Diff