d_a_bk work

This commit is contained in:
LagoLunatic
2023-12-13 00:45:11 -05:00
parent 35f65c4e3a
commit 42c4a5d825
4 changed files with 347 additions and 16 deletions
+2 -1
View File
@@ -164,7 +164,8 @@ public:
/* 0x711 */ u8 m711[0x712 - 0x711];
/* 0x712 */ u8 m712;
/* 0x713 */ u8 m713;
/* 0x714 */ u8 m714[0x71E - 0x714];
/* 0x714 */ fopAc_ac_c* m714;
/* 0x718 */ u8 m718[0x71E - 0x718];
/* 0x71E */ s16 m71E;
/* 0x720 */ f32 mMaxFallDistance;
/* 0x724 */ dCcD_Stts mStts;
+169 -4
View File
@@ -14,7 +14,9 @@ public:
/* 0x02B7 */ u8 m02B7;
/* 0x02B8 */ u8 m02B8;
/* 0x02B9 */ u8 m02B9;
/* 0x02BA */ u8 m02BA[0x02CC - 0x02BA];
/* 0x02BA */ u8 m02BA[0x02BC - 0x02BA];
/* 0x02BC */ mDoExt_McaMorf* mpMorf;
/* 0x02C0 */ u8 m02C0[0x02CC - 0x02C0];
/* 0x02CC */ s16 m02CC;
/* 0x02CE */ u8 m02CE[0x0302 - 0x02CE];
/* 0x0302 */ s16 m0302;
@@ -30,7 +32,10 @@ public:
/* 0x034F */ u8 m034F;
/* 0x0350 */ dPa_smokeEcallBack m0350;
/* 0x0370 */ damagereaction mDamageReaction;
/* 0x0B2C */ u8 m0B2C[0x0B44 - 0x0B2C];
/* 0x0B2C */ u8 m0B2C[0x0B30 - 0x0B2C];
/* 0x0B30 */ int m0B30;
/* 0x0B34 */ int m0B34;
/* 0x0B38 */ u8 m0B38[0x0B44 - 0x0B38];
/* 0x0B44 */ cXyz m0B44[2];
/* 0x0B5C */ u8 m0B5C[0x0B88 - 0x0B5C];
/* 0x0B88 */ dCcD_Cyl m0B88;
@@ -44,7 +49,9 @@ public:
/* 0x1200 */ u32 m1200;
/* 0x1204 */ u8 m1204[0x121C - 0x1204];
/* 0x121C */ u8 m121C;
/* 0x121D */ u8 m121D[0x1264 - 0x121D];
/* 0x121D */ u8 m121D[0x121F - 0x121D];
/* 0x121F */ s8 m121F;
/* 0x1220 */ u8 m1220[0x1264 - 0x1220];
/* 0x1264 */ enemyice mEnemyIce;
/* 0x161C */ enemyfire mEnemyFire;
/* 0x1844 */ JntHit_c* mpJntHit;
@@ -54,11 +61,169 @@ class bkHIO_c {
public:
bkHIO_c() {
/* Nonmatching */
m005 = 0x0;
m006 = 0x0;
m007 = 0x0;
m008 = 0x1;
m009 = 0x0;
m00A = 0x0;
m01C = 1.0f;
m020 = 25.0f;
m00C = 0x4;
m024 = 25.0f;
m028 = 1000.0f;
m02C = 400.0f;
m030 = 240.0f;
m034 = 0x6590;
m038 = 300.0f;
m03C = 500.0f;
m040 = 300.0f;
m044 = 500.0f;
m048 = -125.0f;
m04C = 12.0f;
m050 = 60.0f;
m054 = 45.0f;
m058 = 70.0f;
m05C = 90.0f;
m068 = 90.0f;
m06C = 2.0f;
m070 = 1.0f;
m074 = 1.5f;
m060 = 20.0f;
m064 = 20.0f;
m078 = 0x23;
m07C = 50.0f;
m080 = 25.0f;
m084 = 25.0f;
m088 = 50.0f;
m08C = 0x1e;
m08E = 0x12c;
m090 = 1.2f;
m094 = 1.0f;
m098 = 1.0f;
m09C = 10.0f;
m0A0 = 0x17;
m0A2 = 0x1;
m0A4 = 0x1;
m0A6 = 0x0;
m0A8 = 1.0f;
m0AC = 1.0f;
m0B0 = 0.5f;
m0B4 = 1.0f;
m0B8 = 1.0f;
m0BC = 1.0f;
m0C0 = 1.0f;
m0C4 = 1.0f;
m0C8 = 1.0f;
m0CC = 1.0f;
m0D0 = 0x5;
m0D2 = 0x1;
m0D4 = 0x1;
m0D6 = 0x1;
m0D8 = 1.0f;
m0DC = 1.0f;
m0E0 = 1.0f;
m0E4 = 0.8f;
m0E8 = 0.5f;
m0EC = 1.0f;
m0F0 = 1.0f;
m0F4 = 1.0f;
m0F8 = 1.0f;
m0FC = 1.0f;
m100 = -60.0f;
m018 = 0.7f;
m104 = 0xc8;
m106 = 0x1f4;
m108 = 0x12c;
m10A = 0x258;
m010 = 0.0f;
m014 = 400.0f;
}
virtual ~bkHIO_c() {}
public:
// TODO
/* 0x004 */ u8 m004[0x005 - 0x004];
/* 0x005 */ u8 m005;
/* 0x006 */ u8 m006;
/* 0x007 */ u8 m007;
/* 0x008 */ u8 m008;
/* 0x009 */ u8 m009;
/* 0x00A */ u8 m00A;
/* 0x00B */ u8 m00B[0x00C - 0x00B];
/* 0x00C */ s16 m00C;
/* 0x00E */ u8 m00E[0x010 - 0x00E];
/* 0x010 */ f32 m010;
/* 0x014 */ f32 m014;
/* 0x018 */ f32 m018;
/* 0x01C */ f32 m01C;
/* 0x020 */ f32 m020;
/* 0x024 */ f32 m024;
/* 0x028 */ f32 m028;
/* 0x02C */ f32 m02C;
/* 0x030 */ f32 m030;
/* 0x034 */ s16 m034;
/* 0x036 */ u8 m036[0x038 - 0x036];
/* 0x038 */ f32 m038;
/* 0x03C */ f32 m03C;
/* 0x040 */ f32 m040;
/* 0x044 */ f32 m044;
/* 0x048 */ f32 m048;
/* 0x04C */ f32 m04C;
/* 0x050 */ f32 m050;
/* 0x054 */ f32 m054;
/* 0x058 */ f32 m058;
/* 0x05C */ f32 m05C;
/* 0x060 */ f32 m060;
/* 0x064 */ f32 m064;
/* 0x068 */ f32 m068;
/* 0x06C */ f32 m06C;
/* 0x070 */ f32 m070;
/* 0x074 */ f32 m074;
/* 0x078 */ s16 m078;
/* 0x07A */ u8 m07A[0x07C - 0x07A];
/* 0x07C */ f32 m07C;
/* 0x080 */ f32 m080;
/* 0x084 */ f32 m084;
/* 0x088 */ f32 m088;
/* 0x08C */ s16 m08C;
/* 0x08E */ s16 m08E;
/* 0x090 */ f32 m090;
/* 0x094 */ f32 m094;
/* 0x098 */ f32 m098;
/* 0x09C */ f32 m09C;
/* 0x0A0 */ s16 m0A0;
/* 0x0A2 */ s16 m0A2;
/* 0x0A4 */ s16 m0A4;
/* 0x0A6 */ s16 m0A6;
/* 0x0A8 */ f32 m0A8;
/* 0x0AC */ f32 m0AC;
/* 0x0B0 */ f32 m0B0;
/* 0x0B4 */ f32 m0B4;
/* 0x0B8 */ f32 m0B8;
/* 0x0BC */ f32 m0BC;
/* 0x0C0 */ f32 m0C0;
/* 0x0C4 */ f32 m0C4;
/* 0x0C8 */ f32 m0C8;
/* 0x0CC */ f32 m0CC;
/* 0x0D0 */ s16 m0D0;
/* 0x0D2 */ s16 m0D2;
/* 0x0D4 */ s16 m0D4;
/* 0x0D6 */ s16 m0D6;
/* 0x0D8 */ f32 m0D8;
/* 0x0DC */ f32 m0DC;
/* 0x0E0 */ f32 m0E0;
/* 0x0E4 */ f32 m0E4;
/* 0x0E8 */ f32 m0E8;
/* 0x0EC */ f32 m0EC;
/* 0x0F0 */ f32 m0F0;
/* 0x0F4 */ f32 m0F4;
/* 0x0F8 */ f32 m0F8;
/* 0x0FC */ f32 m0FC;
/* 0x100 */ f32 m100;
/* 0x104 */ s16 m104;
/* 0x106 */ s16 m106;
/* 0x108 */ s16 m108;
/* 0x10A */ s16 m10A;
};
#endif /* D_A_BK_H */
+12 -4
View File
@@ -32,12 +32,20 @@ public:
void getJumpBlurRate() {}
void getNowMode() {}
void getSeType() {}
void moveStateInit(float, float, short) {}
void moveStateInit(f32 speedForward, f32 speedY, s16 angleY) {
speed.y = speedY;
speedF = speedForward;
current.angle.y = angleY;
}
void onFloorFlg() {}
void setMatrix(float(*)[4]) {}
void setMatrix(Mtx mtx) {
if (mpModel) {
mpModel->setBaseTRMtx(mtx);
}
}
void setNowMode(int) {}
void setRotAngleSpeed(short) {}
void setThrow(short) {}
void setRotAngleSpeed(s16 speed) { m2C2 = speed; }
void setThrow(s16) {}
void getTopPos(cXyz *);
void getBlurRootPos(cXyz *);
+164 -7
View File
@@ -11,17 +11,160 @@
#include "d/actor/d_a_obj_search.h"
#include "d/actor/d_a_item.h"
#include "d/d_item_data.h"
#include "d/actor/d_a_boko.h"
#include "d/d_bg_s_lin_chk.h"
#include "m_Do/m_Do_mtx.h"
#include "d/actor/d_a_player.h"
static bkHIO_c l_bkHIO;
enum BK_RES_FILE_ID { // IDs and indexes are synced
/* BAS */
BK_BAS_BK_AOMUKE=0x8,
BK_BAS_BK_ATTACK1=0x9,
BK_BAS_BK_ATTACK2=0xA,
BK_BAS_BK_ATTACK3=0xB,
BK_BAS_BK_BOKKURI=0xC,
BK_BAS_BK_CATCH=0xD,
BK_BAS_BK_HAKKEN=0xE,
BK_BAS_BK_IATTACK1=0xF,
BK_BAS_BK_JATTACK2=0x10,
BK_BAS_BK_JATTACK3=0x11,
BK_BAS_BK_JUMP1=0x12,
BK_BAS_BK_JUMP2=0x13,
BK_BAS_BK_KERI1=0x14,
BK_BAS_BK_KERI2=0x15,
BK_BAS_BK_KYORO1=0x16,
BK_BAS_BK_KYORO2=0x17,
BK_BAS_BK_NIGERU=0x18,
BK_BAS_BK_NOBI=0x19,
BK_BAS_BK_NOMWAIT=0x1A,
BK_BAS_BK_OKIRUA=0x1B,
BK_BAS_BK_OKIRUU=0x1C,
BK_BAS_BK_OTISOU1=0x1D,
BK_BAS_BK_OTISOU2=0x1E,
BK_BAS_BK_RUN=0x1F,
BK_BAS_BK_SLEEP=0x20,
BK_BAS_BK_SUWARI=0x21,
BK_BAS_BK_TUTUKU1=0x22,
BK_BAS_BK_UTUBUSE=0x23,
BK_BAS_BK_WAIT=0x24,
BK_BAS_BK_WALK=0x25,
BK_BAS_BK_WALK2=0x26,
/* BCK */
BK_BCK_BK_AOMUKE=0x29,
BK_BCK_BK_ATTACK1=0x2A,
BK_BCK_BK_ATTACK2=0x2B,
BK_BCK_BK_ATTACK3=0x2C,
BK_BCK_BK_BIKKURI=0x2D,
BK_BCK_BK_BOUGYO1=0x2E,
BK_BCK_BK_BOUGYO2=0x2F,
BK_BCK_BK_CATCH=0x30,
BK_BCK_BK_HAKKEN=0x31,
BK_BCK_BK_HAKOBI=0x32,
BK_BCK_BK_HIDARIROT=0x33,
BK_BCK_BK_JATTACK1=0x34,
BK_BCK_BK_JATTACK2=0x35,
BK_BCK_BK_JATTACK3=0x36,
BK_BCK_BK_JUMP1=0x37,
BK_BCK_BK_JUMP2=0x38,
BK_BCK_BK_KERI1=0x39,
BK_BCK_BK_KERI2=0x3A,
BK_BCK_BK_KIME=0x3B,
BK_BCK_BK_KOUKA=0x3C,
BK_BCK_BK_KYORO1=0x3D,
BK_BCK_BK_KYORO2=0x3E,
BK_BCK_BK_MIGIROT=0x3F,
BK_BCK_BK_NIGERU=0x40,
BK_BCK_BK_NOBI=0x41,
BK_BCK_BK_NOMWAIT=0x42,
BK_BCK_BK_NOZOKU=0x43,
BK_BCK_BK_OKIRUA=0x44,
BK_BCK_BK_OKIRUU=0x45,
BK_BCK_BK_OTISOU1=0x46,
BK_BCK_BK_OTISOU2=0x47,
BK_BCK_BK_RUN=0x48,
BK_BCK_BK_SLEEP=0x49,
BK_BCK_BK_SUWARI=0x4A,
BK_BCK_BK_TATAKU=0x4B,
BK_BCK_BK_TUTUKU1=0x4C,
BK_BCK_BK_TUTUKU2=0x4D,
BK_BCK_BK_TUTUKU3=0x4E,
BK_BCK_BK_TYAKU=0x4F,
BK_BCK_BK_UTUBUSE=0x50,
BK_BCK_BK_WAIT=0x51,
BK_BCK_BK_WALK=0x52,
BK_BCK_BK_WALK2=0x53,
/* BDLM */
BK_BDL_BK=0x56,
BK_BDL_BOUEN=0x57,
/* BMD */
BK_BMD_BK_KB=0x5A,
BK_BMD_BK_TATE=0x5B,
/* BMT */
BK_BMT_BK_BOKO=0x5E,
BK_BMT_BK_KEN=0x5F,
BK_BMT_GREEN=0x60,
BK_BMT_PINK=0x61,
/* BTP */
BK_BTP_TMABATAKI=0x64,
};
/* 000000EC-00000234 .text anm_init__FP8bk_classifUcfi */
static void anm_init(bk_class* i_this, int, f32, u8, f32, int) {
/* Nonmatching */
static void anm_init(bk_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f32 speed, int soundFileIdx) {
if (i_this->mDamageReaction.mState == 0x13 && bckFileIdx != BK_BCK_BK_OTISOU1 && bckFileIdx != BK_BCK_BK_OTISOU2) {
return;
}
if (soundFileIdx >= 0) {
void* soundAnm = dComIfG_getObjectRes("AM2", soundFileIdx);
J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("AM2", bckFileIdx);
i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, soundAnm);
} else {
J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("AM2", bckFileIdx);
i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, NULL);
}
}
/* 00000234-000005A8 .text yari_off_check__FP8bk_class */
static void yari_off_check(bk_class* i_this) {
/* Nonmatching */
if (i_this->m0B34 == 0) {
return;
}
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
if (boko) {
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
fopAcM_cancelCarryNow(boko);
if (i_this->m0B34 != 2) {
boko->setRotAngleSpeed(cM_rndFX(2000.0f));
s16 angleY = i_this->shape_angle.y + 0x8000 + (s16)cM_rndFX(8000.0f);
f32 speedY = 20.0f + cM_rndF(20.0f);
f32 speedForward = 20.0f + cM_rndF(10.0f);
boko->moveStateInit(speedForward, speedY, angleY);
}
boko->current.angle.y = player->shape_angle.y;
dBgS_LinChk linChk;
linChk.Set(&i_this->mEyePos, &boko->current.pos, i_this);
if (dComIfG_Bgsp()->LineCross(&linChk)) {
MtxP mtx = i_this->mpMorf->getModel()->getAnmMtx(0x10); // mune (chest) joint
cMtx_copy(mtx, *calc_mtx);
boko->setMatrix(*calc_mtx);
cXyz offset;
offset.set(0.0f, 0.0f, 0.0f);
MtxPosition(&offset, &boko->current.pos);
}
}
i_this->m121F = 1;
i_this->m0B34 = 0;
i_this->m0B30 = 0;
}
/* 00000A1C-00000EE8 .text smoke_set_s__FP8bk_classf */
@@ -79,9 +222,22 @@ static void daBk_other_bg_check(bk_class* i_this, fopAc_ac_c*) {
/* Nonmatching */
}
static fopAc_ac_c* target_info[10];
static s32 target_info_count;
/* 00002C4C-00002CD4 .text s_w_sub__FPvPv */
static void s_w_sub(void*, void*) {
/* Nonmatching */
static void* s_w_sub(void* param_1, void*) {
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BOKO) {
daBoko_c* boko = (daBoko_c*)param_1;
// TODO: enum for boko type
if (fopAcM_GetParam(boko) != 4 && !fopAcM_checkCarryNow(boko)) {
if (target_info_count < (s32)ARRAY_SIZE(target_info)) {
target_info[target_info_count] = boko;
target_info_count++;
}
}
}
return NULL;
}
/* 00002CD4-00002FB0 .text search_wepon__FP8bk_class */
@@ -327,8 +483,9 @@ static void rope_on(bk_class* i_this) {
}
/* 0000AC6C-0000AC84 .text search_target__FP8bk_class */
static void search_target(bk_class* i_this) {
/* Nonmatching */
static BOOL search_target(bk_class* i_this) {
i_this->mDamageReaction.m714 = dComIfGp_getPlayer(0);
return FALSE;
}
/* 0000AC84-0000B25C .text Bk_move__FP8bk_class */