mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-21 22:10:59 -04:00
d_a_bk work
This commit is contained in:
@@ -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
@@ -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 */
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user