setup b_ob_class

This commit is contained in:
TakaRikka
2023-03-02 04:13:22 -08:00
parent c241cba47c
commit 807f60b0f2
7 changed files with 344 additions and 443 deletions
+3 -1
View File
@@ -641,6 +641,8 @@ public:
};
enum daAlink_FTANM {
FTANM_UNK_3 = 3,
FTANM_UNK_4 = 4,
FTANM_UNK_8 = 8,
FTANM_UNK_13 = 0x13,
FTANM_UNK_14 = 0x14,
@@ -2239,7 +2241,7 @@ public:
/* 800FC2F4 */ int procHangLeverDownInit();
/* 800FC390 */ int procHangLeverDown();
/* 800FC5A4 */ void setDragonHangPos();
/* 800FC6B4 */ void setOctaIealHangPos();
/* 800FC6B4 */ int setOctaIealHangPos();
/* 800FC748 */ void setBossBodyHangPos();
/* 800FC77C */ int procBossBodyHangInit(fopAc_ac_c*);
/* 800FC870 */ int procBossBodyHang();
+176 -1
View File
@@ -1,6 +1,181 @@
#ifndef D_A_B_OB_H
#define D_A_B_OB_H
#include "dolphin/types.h"
#include "d/cc/d_cc_uty.h"
#include "d/com/d_com_inf_game.h"
struct Z2CreatureOI : public Z2CreatureEnemy {
/* 802C2578 */ Z2CreatureOI();
/* 802C2670 */ void init(Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*,
Vec*);
/* 802C2C84 */ void startTentacleSound(JAISoundID, u8, u32, s8);
/* 802C2CD4 */ void startTentacleSoundLevel(JAISoundID, u8, f32, u32, s8);
/* 802C25EC */ virtual void deleteObject();
/* 802C2864 */ virtual void framework(u32, s8);
/* 802C29D4 */ virtual void startCreatureSoundLevel(JAISoundID, u32, s8);
/* 0x0A4 */ Z2SoundObjSimple field_0xa4;
/* 0x0C4 */ Z2SoundObjSimple field_0xc4;
/* 0x0E4 */ Z2SoundObjSimple field_0xe4;
/* 0x104 */ Z2SoundObjSimple field_0x104[8];
};
struct ob_part_s {
/* 8061A658 */ ~ob_part_s();
/* 8061A72C */ ob_part_s();
/* 0x00 */ mDoExt_McaMorf* field_0x0;
/* 0x04 */ mDoExt_McaMorf* field_0x4;
/* 0x08 */ mDoExt_McaMorf* field_0x8;
/* 0x0C */ mDoExt_McaMorf* field_0xc;
/* 0x10 */ mDoExt_McaMorf* field_0x10;
/* 0x14 */ cXyz field_0x14;
/* 0x20 */ csXyz field_0x20;
/* 0x26 */ s16 field_0x26;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ csXyz field_0x2c;
/* 0x32 */ csXyz field_0x32;
/* 0x38 */ csXyz field_0x38;
/* 0x40 */ dCcD_Sph mSph;
}; // Size: 0x178
struct ob_ke_s {
/* 8061A3A0 */ ~ob_ke_s();
/* 8061A41C */ ob_ke_s();
/* 0x000 */ cXyz field_0x0[20];
/* 0x0F0 */ cXyz field_0xf0[20];
/* 0x1E0 */ cXyz field_0x1e0;
}; // Size: 0x1EC
class b_ob_class : public fopEn_enemy_c {
public:
/* 8061A0C0 */ b_ob_class();
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ mDoExt_McaMorfSO* field_0x5b4;
/* 0x05B8 */ u8 field_0x5b8[0x5BC - 0x5B8];
/* 0x05BC */ f32 field_0x5bc;
/* 0x05C0 */ ob_part_s mParts[20];
/* 0x2320 */ int field_0x2320;
/* 0x2324 */ cXyz field_0x2324[512];
/* 0x3B24 */ csXyz field_0x3b24[512];
/* 0x4724 */ J3DModel* field_0x4724;
/* 0x4728 */ mDoExt_btkAnm* field_0x4728;
/* 0x472C */ mDoExt_brkAnm* field_0x472c;
/* 0x4730 */ f32 field_0x4730;
/* 0x4734 */ int mAnmResID;
/* 0x4738 */ int field_0x4738;
/* 0x4738 */ u8 field_0x473c;
/* 0x4740 */ f32 field_0x4740;
/* 0x4744 */ u8 field_0x4744;
/* 0x4745 */ u8 field_0x4745;
/* 0x4748 */ u32 field_0x4748;
/* 0x474C */ u8 field_0x474c;
/* 0x474D */ u8 field_0x474d;
/* 0x474E */ u8 field_0x474e[0x4750 - 0x474e];
/* 0x4750 */ s16 field_0x4750;
/* 0x4752 */ s16 field_0x4752;
/* 0x4754 */ s16 field_0x4754;
/* 0x4756 */ s16 field_0x4756;
/* 0x4758 */ cXyz field_0x4758;
/* 0x4764 */ csXyz field_0x4764;
/* 0x476A */ s16 field_0x476a;
/* 0x476C */ s16 mYAngleToPlayer;
/* 0x476E */ s16 mXAngleToPlayer;
/* 0x4770 */ f32 mDistToPlayer;
/* 0x4774 */ u8 field_0x4774[0x4778 - 0x4774];
/* 0x4778 */ s16 field_0x4778;
/* 0x477A */ s16 field_0x477a;
/* 0x477C */ s16 field_0x477c;
/* 0x477E */ s16 field_0x477e;
/* 0x4780 */ s16 field_0x4780;
/* 0x4782 */ u8 field_0x4782[0x4784 - 0x4782];
/* 0x05AC */ s16 field_0x4784;
/* 0x4786 */ u8 field_0x4786[0x4788 - 0x4786];
/* 0x4788 */ int field_0x4788;
/* 0x478C */ int field_0x478c;
/* 0x4790 */ int field_0x4790;
/* 0x4794 */ s16 field_0x4794;
/* 0x4798 */ f32 field_0x4798;
/* 0x479C */ f32 field_0x479c;
/* 0x47A0 */ f32 field_0x47a0;
/* 0x47A4 */ u8 field_0x47a4[0x47aa - 0x47a4];
/* 0x47AA */ s16 field_0x47aa;
/* 0x47AC */ s16 field_0x47ac;
/* 0x47AE */ s16 field_0x47ae;
/* 0x47B0 */ s16 field_0x47b0;
/* 0x47B4 */ int field_0x47b4;
/* 0x47B8 */ s16 field_0x47b8;
/* 0x47BA */ s16 field_0x47ba;
/* 0x47BC */ s16 field_0x47bc;
/* 0x47C0 */ f32 field_0x47c0;
/* 0x47C4 */ s16 field_0x47c4;
/* 0x47C8 */ int field_0x47c8;
/* 0x47CC */ dCcD_Stts field_0x47cc;
/* 0x4808 */ dCcD_Sph mCcSph;
/* 0x4940 */ dCcD_Sph mCoreSph;
/* 0x4A78 */ dCcU_AtInfo mAtInfo;
/* 0x4A9C */ u8 field_0x4a9c[0x4aa0 - 0x4a9c];
/* 0x4AA0 */ dCcD_Stts field_0x4aa0;
/* 0x4ADC */ dCcD_Sph mBodySph;
/* 0x4C14 */ dCcD_Sph field_0x4c14;
/* 0x4D4C */ dBgS_AcchCir field_0x4d4c;
/* 0x4D8C */ dBgS_ObjAcch field_0x4d8c;
/* 0x4F64 */ u32 mTentacleActorIDs[8];
/* 0x4F84 */ ob_ke_s field_0x4f84[5];
/* 0x5920 */ mDoExt_3DlineMat0_c field_0x5920;
/* 0x593C */ Z2CreatureEnemy field_0x593c;
/* 0x59E0 */ Z2CreatureOI field_0x59e0;
/* 0x5BE4 */ cXyz field_0x5be4[13];
/* 0x5C80 */ s16 mDemoAction;
/* 0x5C82 */ s16 field_0x5c82;
/* 0x5C84 */ cXyz field_0x5c84;
/* 0x5C90 */ cXyz field_0x5c90;
/* 0x5C9C */ cXyz field_0x5c9c;
/* 0x5CA8 */ cXyz field_0x5ca8;
/* 0x5CB4 */ f32 field_0x5cb4;
/* 0x5CB8 */ f32 field_0x5cb8;
/* 0x5CBC */ f32 field_0x5cbc;
/* 0x5CC0 */ f32 field_0x5cc0;
/* 0x5CC4 */ f32 field_0x5cc4;
/* 0x5CC8 */ f32 field_0x5cc8;
/* 0x5CCC */ f32 field_0x5ccc;
/* 0x5CD0 */ f32 field_0x5cd0;
/* 0x5CD4 */ f32 field_0x5cd4;
/* 0x5CD8 */ f32 field_0x5cd8;
/* 0x5CDC */ f32 field_0x5cdc;
/* 0x5CE0 */ s16 field_0x5ce0;
/* 0x5CE4 */ f32 field_0x5ce4;
/* 0x5CE8 */ int field_0x5ce8;
/* 0x5CEC */ cXyz field_0x5cec;
/* 0x5CF8 */ s16 field_0x5cf8;
/* 0x5CFC */ f32 field_0x5cfc;
/* 0x5D00 */ f32 field_0x5d00;
/* 0x5D04 */ f32 field_0x5d04;
/* 0x5D08 */ s16 field_0x5d08;
/* 0x5D0A */ s16 field_0x5d0a;
/* 0x5D0C */ s16 field_0x5d0c;
/* 0x5D0E */ u8 field_0x5d0e[0x5d11 - 0x5d0e];
/* 0x5D11 */ s8 field_0x5d11;
/* 0x5D12 */ s8 field_0x5d12;
/* 0x5D14 */ f32 field_0x5d14;
/* 0x5D18 */ u8 field_0x5d18;
/* 0x5D19 */ u8 field_0x5d19[0x5d24 - 0x5d19];
/* 0x5D24 */ u32 field_0x5d24[3];
/* 0x5D30 */ u8 field_0x5d30[0x5d38 - 0x5D30];
/* 0x5D38 */ u32 field_0x5d38;
/* 0x5D3C */ s16 field_0x5d3c;
/* 0x5D40 */ u32 field_0x5d40;
/* 0x5D44 */ u8 field_0x5d44[0x5d88 - 0x5d44];
/* 0x5D88 */ u32 field_0x5d88;
/* 0x5D8C */ u32 field_0x5d8c;
/* 0x5D90 */ u8 field_0x5d90[0x5dd4 - 0x5d90];
/* 0x5DD4 */ u32 field_0x5dd4;
/* 0x5DD8 */ int field_0x5dd8;
/* 0x5DDC */ f32 field_0x5ddc;
/* 0x5DE0 */ u8 field_0x5de0;
};
#endif /* D_A_B_OB_H */
+1 -14
View File
@@ -1,20 +1,7 @@
#ifndef D_A_B_OH2_H
#define D_A_B_OH2_H
#include "d/com/d_com_inf_game.h"
// fix/move to d_a_b_ob later
class b_ob_class : public fopEn_enemy_c {
public:
/* 0x05AC */ u8 field_0x5ac[0x5c0 - 0x5ac];
/* 0x05C0 */ mDoExt_McaMorf* field_0x5c0;
/* 0x05C4 */ u8 field_0x5c4[0x4752 - 0x5c4];
/* 0x4752 */ s16 field_0x4752;
/* 0x4754 */ u8 field_0x4754[0x47a0 - 0x4754];
/* 0x47A0 */ f32 field_0x47a0;
/* 0x47A4 */ u8 field_0x47a4[0x5d04 - 0x47a4];
/* 0x5D04 */ f32 field_0x5d04;
};
#include "rel/d/a/b/d_a_b_ob/d_a_b_ob.h"
class b_oh2_class : public fopEn_enemy_c {
public:
@@ -31,6 +31,8 @@ public:
/* 80CFCD04 */ virtual int Draw();
/* 80CFCD98 */ virtual int Delete();
void setHangPlayer() { mHangPlayer = 1; }
/* 0x5A0 */ dEvLib_callback_c field_0x5a0;
/* 0x5B0 */ request_of_phase_process_class mPhase;
/* 0x5B8 */ J3DModel* mpModel;
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -139,10 +139,10 @@ static void action(b_oh2_class* i_this) {
break;
}
PSMTXCopy(boss->field_0x5c0->getModel()->i_getAnmMtx(i_this->field_0x5c8 + 8),
PSMTXCopy(boss->mParts[0].field_0x0->getModel()->i_getAnmMtx(i_this->field_0x5c8 + 8),
mDoMtx_stack_c::get());
mDoMtx_stack_c::multVecZero(&i_this->current.pos);
PSMTXCopy(boss->field_0x5c0->getModel()->i_getAnmMtx(0), mDoMtx_stack_c::get());
PSMTXCopy(boss->mParts[0].field_0x0->getModel()->i_getAnmMtx(0), mDoMtx_stack_c::get());
local_20.set(0.0f, 0.0f, i_this->field_0x5c8 * 20.0f + 650.0f);
mDoMtx_stack_c::multVec(&local_20, &vstack_2C);
+78 -37
View File
@@ -1,3 +1,4 @@
#include "rel/d/a/b/d_a_b_ob/d_a_b_ob.h"
#include "rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h"
/* 800F9FDC-800F9FFC 0F491C 0020+00 2/2 0/0 0/0 .text getHangMoveAnmSpeed__9daAlink_cFv
@@ -475,14 +476,18 @@ asm void daAlink_c::setDragonHangPos() {
#pragma pop
/* 800FC6B4-800FC748 0F6FF4 0094+00 1/1 0/0 0/0 .text setOctaIealHangPos__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setOctaIealHangPos() {
nofralloc
#include "asm/d/a/d_a_alink/setOctaIealHangPos__9daAlink_cFv.s"
int daAlink_c::setOctaIealHangPos() {
b_ob_class* ob_p = (b_ob_class*)field_0x280c.getActor();
if (ob_p == NULL) {
return 0;
}
mDoMtx_stack_c::copy(ob_p->mParts[0].field_0x0->getModel()->i_getAnmMtx(0));
mDoMtx_stack_c::transM(FLOAT_LABEL(lit_6108), lit_24400, lit_24401);
mDoMtx_stack_c::multVecZero(&current.pos);
mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &shape_angle);
return 1;
}
#pragma pop
/* 800FC748-800FC77C 0F7088 0034+00 2/2 0/0 0/0 .text setBossBodyHangPos__9daAlink_cFv */
void daAlink_c::setBossBodyHangPos() {
@@ -1332,14 +1337,44 @@ int daAlink_c::procRoofHangSideMove() {
/* 801013B8-80101534 0FBCF8 017C+00 1/1 0/0 0/0 .text procRoofHangTurnInit__9daAlink_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procRoofHangTurnInit() {
nofralloc
#include "asm/d/a/d_a_alink/procRoofHangTurnInit__9daAlink_cFv.s"
int daAlink_c::procRoofHangTurnInit() {
commonProcInit(PROC_ROOF_HANG_TURN);
f32 anm_speed;
if ((s16)(field_0x2fe2 - shape_angle.y) < 0) {
anm_speed = -daAlinkHIO_roofHang_c0::m.field_0x44;
field_0x3008 = 1;
shape_angle.y += 0x8000;
setOldRootQuaternion(0, -0x8000, 0);
field_0x2060->getOldFrameTransInfo(0)->mTranslate.z = lit_26275;
field_0x300c = field_0x2fe2;
field_0x3478 = FLOAT_LABEL(lit_6108);
field_0x347c = lit_7625;
} else {
anm_speed = daAlinkHIO_roofHang_c0::m.field_0x44;
field_0x3008 = 0;
field_0x300c = field_0x2fe2 + 0x8000;
field_0x3478 = lit_7625;
field_0x347c = lit_26276;
}
current.angle.y = shape_angle.y;
setSingleAnimeBaseSpeed(ANM_ROOF_HANG_TURN, anm_speed, daAlinkHIO_roofHang_c0::m.field_0x48);
if (field_0x3008 != 0) {
setFaceBasicTexture(FTANM_UNK_4);
} else {
setFaceBasicTexture(FTANM_UNK_3);
}
field_0x2f98 = 4;
setSpecialGravity(FLOAT_LABEL(lit_6108), mMaxFallSpeed, 0);
f32 tmp_0 = FLOAT_LABEL(lit_6108);
mNormalSpeed = tmp_0;
speed.y = tmp_0;
dComIfGp_setPlayerStatus1(0, 0x100000);
return 1;
}
#pragma pop
/* 80101534-8010163C 0FBE74 0108+00 1/0 0/0 0/0 .text procRoofHangTurn__9daAlink_cFv */
int daAlink_c::procRoofHangTurn() {
@@ -1370,25 +1405,40 @@ int daAlink_c::procRoofHangTurn() {
}
/* 8010163C-801016AC 0FBF7C 0070+00 2/2 0/0 0/0 .text setRoofHangSwitch__9daAlink_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::setRoofHangSwitch() {
nofralloc
#include "asm/d/a/d_a_alink/setRoofHangSwitch__9daAlink_cFv.s"
void daAlink_c::setRoofHangSwitch() {
daObjSwHang_c* swhang_p = (daObjSwHang_c*)field_0x280c.getActor();
current.pos = swhang_p->getHangPos();
current.pos.y -= lit_25916;
swhang_p->setHangPlayer();
}
#pragma pop
/* 801016AC-801017AC 0FBFEC 0100+00 1/1 0/0 0/0 .text
* procRoofSwitchHangInit__9daAlink_cFP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procRoofSwitchHangInit(fopAc_ac_c* param_0) {
nofralloc
#include "asm/d/a/d_a_alink/procRoofSwitchHangInit__9daAlink_cFP10fopAc_ac_c.s"
int daAlink_c::procRoofSwitchHangInit(fopAc_ac_c* param_0) {
commonProcInit(PROC_ROOF_SWITCH_HANG);
deleteEquipItem(TRUE, FALSE);
setSingleAnimeParam(ANM_ROOF_HANG, &daAlinkHIO_roofHang_c0::m.field_0x0);
setSpecialGravity(FLOAT_LABEL(lit_6108), mMaxFallSpeed, 0);
f32 tmp_0 = FLOAT_LABEL(lit_6108);
speed.y = tmp_0;
mNormalSpeed = tmp_0;
field_0x280c.setData(param_0);
setRoofHangSwitch();
if (cLib_distanceAngleS(param_0->shape_angle.y, shape_angle.y) > 0x4000) {
current.angle.y = param_0->shape_angle.y + 0x8000;
} else {
current.angle.y = param_0->shape_angle.y;
}
setOldRootQuaternion(0, current.angle.y - shape_angle.y, 0);
shape_angle.y = current.angle.y;
field_0x2f99 = 0x50;
field_0x300c = 0;
return 1;
}
#pragma pop
/* 801017AC-80101874 0FC0EC 00C8+00 1/0 0/0 0/0 .text procRoofSwitchHang__9daAlink_cFv */
int daAlink_c::procRoofSwitchHang() {
@@ -1414,15 +1464,6 @@ int daAlink_c::procRoofSwitchHang() {
}
/* 80101874-80101890 0FC1B4 001C+00 2/2 0/0 0/0 .text getHangPos__13daObjSwHang_cFv */
/* #pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cXyz daObjSwHang_c::getHangPos() {
nofralloc
#include "asm/d/a/d_a_alink/getHangPos__13daObjSwHang_cFv.s"
}
#pragma pop
*/
cXyz daObjSwHang_c::getHangPos() {
return mHangPos;
}