d_a_btd - 99% matching (#872)

Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
This commit is contained in:
123456789758
2025-08-29 17:04:11 -04:00
committed by GitHub
parent e0da16f8c7
commit 52d3e87e7d
10 changed files with 2812 additions and 131 deletions
+137 -24
View File
@@ -1,33 +1,146 @@
#ifndef D_A_BTD_H
#define D_A_BTD_H
#include "d/d_cc_d.h"
#include "d/d_magma.h"
#include "d/d_particle.h"
#include "f_op/f_op_actor.h"
struct btd_hahen_s {
/* 0x00 */ J3DModel* model;
/* 0x04 */ u8 m04;
/* 0x05 */ u8 m05[0x08 - 0x05];
/* 0x08 */ cXyz m08;
/* 0x14 */ cXyz m14;
/* 0x20 */ s16 m20;
/* 0x22 */ s16 m22;
/* 0x24 */ u8 m24[0x28 - 0x24];
}; // Size: 0x28
struct btd_sibuki_s {
/* 0x00 */ s8 m00;
/* 0x01 */ u8 m01[0x04 - 0x01];
/* 0x04 */ cXyz m04;
/* 0x10 */ cXyz m10;
/* 0x20 */ u8 m1C[0x24 - 0x1C];
}; // Size: 0x24
class btd_class : public fopAc_ac_c {
public:
/* Place member variables here */
/* 0x0290 */ u8 field_0x0290[0x2e4 - 0x290];
/* 0x02E4 */ s16 field_0x2e4;
/* 0x02E6 */ u8 field_0x02E6[0x02F6 - 0x2e6];
/* 0x02F6 */ bool field_0x2F6;
/* 0x02F7 */ u8 field_0x02F7[0x0320 - 0x02F7];
/* 0x0320 */ cXyz field_0x320;
/* 0x032C */ cXyz field_0x32C;
/* 0x0338 */ u8 field_0x0338[0x0360 - 0x0338];
/* 0x0360 */ f32 field_0x360;
/* 0x0364 */ u8 field_0x0364[0x6190 - 0x0364];
/* 0x6190 */ u8 field_0x6190;
/* 0x6191 */ u8 field_0x6191[0x6E15 - 0x6191];
/* 0x6E15 */ u8 field_0x6e15;
/* 0x6E16 */ s16 field_0x6e16;
};
class daBtd_HIO_c {
public:
daBtd_HIO_c();
public:
/* Place member variables here */
};
/* 0x0290 */ u8 m0290[0x02AC - 0x0290];
/* 0x02AC */ request_of_phase_process_class m02AC;
/* 0x02B4 */ request_of_phase_process_class m02B4;
/* 0x02BC */ mDoExt_McaMorf* m02BC;
/* 0x02C0 */ mDoExt_btkAnm* btk;
/* 0x02C4 */ mDoExt_brkAnm* brk;
/* 0x02C8 */ mDoExt_McaMorf* m02C8;
/* 0x02CC */ mDoExt_btkAnm* btkS;
/* 0x02D0 */ mDoExt_brkAnm* brkS;
/* 0x02D4 */ mDoExt_McaMorf* m02D4;
/* 0x02D8 */ mDoExt_btkAnm* m02D8;
/* 0x02DC */ mDoExt_brkAnm* m02DC;
/* 0x02E0 */ u8 m02E0;
/* 0x02E1 */ s8 m02E1;
/* 0x02E2 */ s16 m02E2;
/* 0x02E4 */ s16 m02E4;
/* 0x02E6 */ s16 mGohmaState;
/* 0x02E8 */ s8 mAttackType;
/* 0x02E9 */ s8 m02E9;
/* 0x02EA */ s8 m02EA;
/* 0x02EB */ u8 m02EB[0x02EC - 0x02EB];
/* 0x02EC */ s16 m02EC[2]; // m02EC[0] = mAttackTimer?
/* 0x02F0 */ s16 m02F0;
/* 0x02F2 */ s16 mStunTimer;
/* 0x02F4 */ s16 mActionState;
/* 0x02F6 */ u8 m02F6;
/* 0x02F7 */ u8 m02F7[0x02F8 - 0x02F7];
/* 0x02F8 */ s16 m02F8;
/* 0x02FA */ s16 m02FA;
/* 0x02FC */ cXyz m02FC[19];
/* 0x03E0 */ cXyz m03E0;
/* 0x03EC */ dCcD_Stts m03EC;
/* 0x0428 */ dCcD_Sph m0428[19];
/* 0x1A6C */ dCcD_Sph m1A6C;
/* 0x1B98 */ dCcD_Sph m1B98;
/* 0x1CC4 */ dCcD_Sph m1CC4[50];
/* 0x575C */ dCcD_Cyl m575C[6];
/* 0x5E7C */ u8 m5E7C;
/* 0x5E7D */ u8 m5E7D[0x5E80 - 0x5E7D];
/* 0x5E80 */ f32 m5E80;
/* 0x5E84 */ u8 m5E84;
/* 0x5E85 */ s8 mTotalDamage;
/* 0x5E86 */ u8 m5E86;
/* 0x5E87 */ u8 m5E87[0x5E88 - 0x5E87];
/* 0x5E88 */ s16 m5E88;
/* 0x5E8A */ s16 m5E8A;
/* 0x5E8C */ s16 m5E8C;
/* 0x5E8E */ s16 m5E8E;
/* 0x5E90 */ s16 m5E90;
/* 0x5E92 */ s16 m5E92;
/* 0x5E94 */ s16 m5E94;
/* 0x5E96 */ s16 m5E96;
/* 0x5E98 */ cXyz m5E98[25];
/* 0x5FC4 */ s16 m5FC4[2];
/* 0x5FC8 */ u8 m5FC8[0x5FEA - 0x5FC8];
/* 0x5FEA */ s16 m5FEA[2];
/* 0x5FEE */ u8 m5FEE[0x5FF8 - 0x5FEE];
/* 0x5FF8 */ JPABaseEmitter* m5FF8[5];
/* 0x600C */ JPABaseEmitter* m600C[7];
/* 0x6028 */ s16 m6028[2];
/* 0x602C */ s16 m602C;
/* 0x602E */ s16 m602E;
/* 0x6030 */ s16 m6030;
/* 0x6032 */ s16 m6032;
/* 0x6034 */ s16 m6034;
/* 0x6036 */ u8 m6036[0x6038 - 0x6036];
/* 0x6038 */ JPABaseEmitter* m6038;
/* 0x603C */ cXyz m603C;
/* 0x6048 */ csXyz m6048;
/* 0x604E */ u8 m604E[0x6050 - 0x604E];
/* 0x6050 */ dPa_smokeEcallBack mPa_SmokeEcallBack[3];
/* 0x60B0 */ LIGHT_INFLUENCE m60B0;
/* 0x60D0 */ f32 m60D0;
/* 0x60D4 */ f32 m60D4;
/* 0x60D8 */ u8 m60D8;
/* 0x60D9 */ u8 m60D9;
/* 0x60DA */ u8 m60DA;
/* 0x60DB */ u8 mKankyoState;
/* 0x60DC */ s16 mKankyoTimer;
/* 0x60DE */ u8 m60DE[0x60E0 - 0x60DE];
/* 0x60E0 */ dKy_tevstr_c m60E0;
/* 0x6190 */ u8 m6190;
/* 0x6191 */ u8 m6191[0x6194 - 0x6191];
/* 0x6194 */ btd_hahen_s hahen[35];
/* 0x670C */ btd_sibuki_s mBtdSibukiS[50];
/* 0x6E14 */ s8 m6E14;
/* 0x6E15 */ u8 m6E15;
/* 0x6E16 */ s16 m6E16;
/* 0x6E18 */ s16 m6E18;
/* 0x6E1A */ s16 m6E1A;
/* 0x6E1C */ cXyz m6E1C;
/* 0x6E28 */ cXyz m6E28;
/* 0x6E34 */ s16 m6E34;
/* 0x6E36 */ s16 m6E36;
/* 0x6E38 */ u8 m6E38[0x6E3C - 0x6E38];
/* 0x6E3C */ f32 m6E3C;
/* 0x6E40 */ f32 m6E40;
/* 0x6E44 */ f32 m6E44;
/* 0x6E48 */ f32 m6E48;
/* 0x6E4C */ u8 m6E4C;
/* 0x6E4D */ u8 m6E4D[0x6E50 - 0x6E4D];
/* 0x6E50 */ cXyz m6E50;
/* 0x6E5C */ cXyz m6E5C;
/* 0x6E68 */ cXyz m6E68;
/* 0x6E74 */ csXyz m6E74;
/* 0x6E7A */ u8 m6E7A[0x6E7C - 0x6E7A];
/* 0x6E7C */ f32 m6E7C;
/* 0x6E80 */ f32 m6E80;
/* 0x6E84 */ f32 m6E84;
/* 0x6E88 */ u8 m6E88;
/* 0x6E89 */ u8 m6E89[0x6E8C - 0x6E89];
/* 0x6E8C */ dMagma_floor_c* floor;
/* 0x6E90 */ s8 m6E90;
/* 0x6E91 */ u8 m6E91[0x6E94 - 0x6E91];
}; // Size: 0x6E94
#endif /* D_A_BTD_H */
+2 -2
View File
@@ -14,7 +14,7 @@ struct himo2_s {
/* 0x1C */ s16 m1C;
/* 0x1E */ s16 m1E;
/* 0x20 */ u8 m20[0x24 - 0x20];
}; // Size: 0x24
}; // Size: 0x24
class himo2_class : public fopAc_ac_c {
public:
@@ -96,6 +96,6 @@ public:
/* 0x2530 */ f32 m2530;
/* 0x2534 */ dBgS_AcchCir m2534;
/* 0x2574 */ dBgS_ObjAcch m2574;
};
}; // Size: 0x2738
#endif /* D_A_HIMO2_H */
+1
View File
@@ -426,6 +426,7 @@ void dKy_Sound_init();
void dKy_change_colset(u8 param_0, u8 param_1, f32 param_2);
void dKy_change_colpat(u8 param_0);
void dKy_custom_colset(u8 param_0, u8 param_1, f32 i_blend);
void dKy_custom_timeset(f32 i_speed);
void dKy_pship_existense_set();
void dKy_pship_existense_cut();
u8 dKy_pship_existense_chk();
+1 -1
View File
@@ -204,7 +204,7 @@ enum {
/* 0xC4 */ DSNAP_TYPE_UNKC4,
/* 0xC5 */ DSNAP_TYPE_UNKC5,
/* 0xC6 */ DSNAP_TYPE_UNKC6,
/* 0xC7 */ DSNAP_TYPE_UNKC7,
/* 0xC7 */ DSNAP_TYPE_BTD,
/* 0xC8 */ DSNAP_TYPE_UNKC8,
/* 0xC9 */ DSNAP_TYPE_BST,
/* 0xCA */ DSNAP_TYPE_UNKCA,
+2
View File
@@ -590,6 +590,8 @@ fpc_ProcID fopAcM_createRaceItem(cXyz* p_pos, int i_itemNo, int i_itemBitNo, csX
fpc_ProcID fopAcM_createIball(cXyz* p_pos, int itemTableIdx, int roomNo, csXyz* p_angle, int itemStealNum);
void fopAcM_createWarpFlower(cXyz* p_pos, csXyz* p_angle, int i_roomNo, u8 param_4);
fpc_ProcID fopAcM_createDemoItem(cXyz* p_pos, int itemNo, int itemBitNo, csXyz* p_angle,
int roomNo, cXyz* scale, u8 argFlag);
+1 -1
View File
@@ -49,7 +49,7 @@ static BOOL daBita_Draw(bita_class* i_this) {
/* 0000018C-000002D0 .text mode_normal__FP10bita_class */
static void mode_normal(bita_class* i_this) {
if (btd != NULL) {
if (btd->field_0x6e16 >= 100) {
if (btd->m6E16 >= 100) {
cXyz delta = dComIfGp_getCamera(0)->mLookat.mEye - i_this->current.pos;
if (delta.abs() < 1500.0f) {
fopAcM_delete(i_this);
+2649 -84
View File
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -293,12 +293,12 @@ void iwa_move(dr2_class* i_this) {
i_this->unk_4A8.y += a_this->speed.y;
a_this->speed.y -= REG0_F(2) + 10.0f;
f32 fVar11 = btd->field_0x320.y + REG0_F(3);
f32 fVar11 = btd->m02FC[3].y + REG0_F(3);
if (i_this->unk_4A8.y < fVar11) {
i_this->unk_4A8.y = fVar11;
i_this->unk_4BA = 2;
i_this->unk_400[0] = 0x32;
btd->field_0x2F6 = true;
btd->m02F6 = true;
fopAcM_seStartCurrent(a_this, JA_SE_CM_BTD_ROCK_HIT, 0);
dComIfGp_getVibration().StartShock(REG0_S(2) + 5, -0x21, cXyz(0.0f, 1.0f, 0.0f));
}
@@ -308,19 +308,19 @@ void iwa_move(dr2_class* i_this) {
i_this->unk_40A = 3;
cLib_addCalc2(&i_this->unk_414, 2000.0f, 0.5f, 100.0f);
i_this->unk_4A8.y = btd->field_0x320.y + REG0_F(3);
i_this->unk_4A8.y = btd->m02FC[3].y + REG0_F(3);
i_this->unk_4B4.y = i_this->unk_514->current.angle.y;
if (btd->field_0x320.y < REG0_F(6) + 100.0f) {
i_this->unk_4C0 = (REG0_F(6) + 100.0f) - btd->field_0x320.y;
if (btd->m02FC[3].y < REG0_F(6) + 100.0f) {
i_this->unk_4C0 = (REG0_F(6) + 100.0f) - btd->m02FC[3].y;
i_this->unk_4C0 *= REG0_F(7) + 0.3f;
}
sp4C = btd->field_0x320 - btd->field_0x32C;
sp4C = btd->m02FC[3] - btd->m02FC[4];
sp4C.y += REG0_F(5) + -330.0f + i_this->unk_4C0;
cLib_addCalcAngleS2(&i_this->unk_4B4.x, -cM_atan2s(sp4C.y, std::sqrtf(sp4C.x * sp4C.x + sp4C.z * sp4C.z)), 1, 0x200);
if (!btd->field_0x2F6) {
if (!btd->m02F6) {
i_this->unk_4BA = 3;
#if VERSION == VERSION_DEMO
i_this->unk_4D4_demo =
@@ -331,7 +331,7 @@ void iwa_move(dr2_class* i_this) {
break;
case 3:
i_this->unk_4A8.y = btd->field_0x360 + 100.0f + REG0_F(9);
i_this->unk_4A8.y = btd->m02FC[8].y + 100.0f + REG0_F(9);
cLib_addCalcAngleS2(&i_this->unk_4B4.x, 0, 1, 0x100);
cLib_addCalcAngleS2(&i_this->unk_4B4.y, 0, 1, 0x100);
+10 -10
View File
@@ -994,7 +994,7 @@ void new_himo2_move(himo2_class* param_1) {
param_1->m24D9 = 0xFF;
param_1->m24D8 = 1;
if (btd != 0) {
fopAcM_OffStatus(btd, 0x4000);
fopAcM_OffStatus(btd, fopAcStts_UNK4000_e);
}
} else if ((param_1->m02A2 == 0) && param_1->m2050.ChkAtHit()) {
param_1->m02DC = 9;
@@ -1314,7 +1314,7 @@ void new_himo2_move(himo2_class* param_1) {
cLib_addCalc2(&param_1->m24E8.y, param_1->m217C->home.pos.y + 2500.0f + REG0_F(14), 0.3f, 100.0f);
cLib_addCalc2(&param_1->m24F4, REG0_F(13) + 80.0f, 1.0f, 2.0f);
if (param_1->m029C < 30) {
btd->field_0x6e15 = 0xB4;
btd->m6E15 = 0xB4;
}
if (param_1->m029C == 30) {
fopAcM_seStartCurrent((fopAc_ac_c*)dr, JA_SE_CM_BTD_ROPE_SET, 0);
@@ -1325,7 +1325,7 @@ void new_himo2_move(himo2_class* param_1) {
if ((param_1->m029C != 0) || (REG0_S(8) != 0)) {
break;
}
btd->field_0x6e15 = 1;
btd->m6E15 = 1;
param_1->m24D9 = 4;
if ((dComIfGp_getStartStageName()[0] == 'X') || (dComIfGs_isEventBit(0x420))) {
param_1->m029C = 0;
@@ -1494,17 +1494,17 @@ void new_himo2_move(himo2_class* param_1) {
cLib_addCalc2(&param_1->m24DC.y, 0.0f, 0.5f, 100.0f);
if (param_1->m029C == (s16)(REG0_S(4) + 0x6E)) {
param_1->m2520 = REG0_F(11) + 50.0f;
btd->field_0x6e15 = 0xB4;
btd->m6E15 = 0xB4;
}
if (param_1->m029C < 81) {
cLib_addCalc2(&param_1->m24F4, REG0_F(14) + 40.0f, 0.5f, 2.0f);
}
}
if (param_1->m029C == 2) {
btd->field_0x6e15 = 1;
btd->m6E15 = 1;
}
if (param_1->m029C == 0) {
if (btd->field_0x6190 >= 3) {
if (btd->m6190 >= 3) {
param_1->m24D9 = 9;
param_1->m029C = 220;
} else {
@@ -1515,7 +1515,7 @@ void new_himo2_move(himo2_class* param_1) {
camera->mCamera.Reset(param_1->eyePos, local_164);
camera->mCamera.Start();
camera->mCamera.SetTrimSize(0);
fopAcM_OffStatus(btd, 0x4000);
fopAcM_OffStatus(btd, fopAcStts_UNK4000_e);
dComIfGp_event_reset();
}
dr->unk_40A = 0;
@@ -1534,10 +1534,10 @@ void new_himo2_move(himo2_class* param_1) {
cLib_addCalc2(&param_1->m24DC.y, local_11c.y, 0.1f, 50.0f);
cLib_addCalc2(&param_1->m24DC.z, local_11c.z, 0.1f, 50.0f);
if (param_1->m029C == 99) {
btd->field_0x6e15 = 0xB4;
btd->m6E15 = 0xB4;
}
if (param_1->m029C == 40) {
btd->field_0x6e15 = 1;
btd->m6E15 = 1;
}
if (param_1->m029C == 0) {
param_1->m24D9 = 0;
@@ -1547,7 +1547,7 @@ void new_himo2_move(himo2_class* param_1) {
camera->mCamera.Reset(param_1->eyePos, local_170);
camera->mCamera.Start();
camera->mCamera.SetTrimSize(0);
fopAcM_OffStatus(btd, 0x4000);
fopAcM_OffStatus(btd, fopAcStts_UNK4000_e);
dComIfGp_event_reset();
}
break;
+1 -1
View File
@@ -219,7 +219,7 @@ static BOOL daKui_Execute(kui_class* i_this) {
btd_class* btd = search_btd(i_this);
if (dragon_tail != NULL && btd != NULL) {
if ((dragon_tail->unk_4BA == 0 || dragon_tail->unk_4BA >= 10) && btd->field_0x2e4 < 10) {
if ((dragon_tail->unk_4BA == 0 || dragon_tail->unk_4BA >= 10) && btd->m02E4 < 10) {
actor->current.pos = dragon_tail->unk_3B0;
actor->current.angle = dragon_tail->actor.current.angle;
} else {