b_dr equivalent, update dtk-template (#2327)

* d_a_tag_allmato almost done

* d_a_swhit0 done

* some SSystem cleanup

* treesh done

* swball done, some other rel cleanup

* b_dr equivalent

* update dtk-template

* rename j3dframectrl mode enum
This commit is contained in:
TakaRikka
2025-03-14 01:46:21 -07:00
committed by GitHub
parent 34c5d8272e
commit 60748d0924
70 changed files with 5468 additions and 4064 deletions
@@ -896,11 +896,11 @@ public:
class J3DFrameCtrl {
public:
enum Attribute_e {
LOOP_ONCE_e,
LOOP_ONCE_RESET_e,
LOOP_REPEAT_e,
LOOP_MIRROR_ONCE_e,
LOOP_MIRROR_REPEAT_e,
EMode_NONE,
EMode_RESET,
EMode_LOOP,
EMode_REVERSE,
EMode_LOOP_REVERSE,
};
J3DFrameCtrl() { this->init(0); }
+88 -50
View File
@@ -6,6 +6,7 @@
#include "d/d_cc_d.h"
#include "d/d_msg_flow.h"
#include "d/d_bg_s_acch.h"
#include "m_Do/m_Do_hostIO.h"
/**
* @ingroup actors-enemies
@@ -17,9 +18,9 @@
*/
class daB_DR_c : public fopEn_enemy_c {
public:
/* 805BAF80 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 805BB120 */ void JointCallBack(J3DJoint*, int);
/* 805BB16C */ void draw();
/* 805BAF80 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 805BB120 */ static int JointCallBack(J3DJoint*, int);
/* 805BB16C */ int draw();
/* 805BB408 */ void setBck(int, u8, f32, f32);
/* 805BB4B4 */ void setActionMode(int, int);
/* 805BB4CC */ void mGlider_WindPosSet();
@@ -37,25 +38,25 @@ public:
/* 805BCBF4 */ void mCountClr();
/* 805BCC18 */ void mAllClr();
/* 805BCC4C */ void mHeadAngleSet();
/* 805BCD7C */ void flapMove(bool);
/* 805BCEA4 */ void revolutionMove();
/* 805BD05C */ void mPlayerHighCheck();
/* 805BD15C */ void mBgFallGroundCheck();
/* 805BCD7C */ bool flapMove(bool);
/* 805BCEA4 */ bool revolutionMove();
/* 805BD05C */ bool mPlayerHighCheck();
/* 805BD15C */ bool mBgFallGroundCheck();
/* 805BD3E4 */ void normalHoverMove();
/* 805BD5FC */ void executeWait();
/* 805BD98C */ void executeFlyWait();
/* 805BDBC4 */ void executeTailHit();
/* 805BE9B4 */ void executeWeekHit();
/* 805BF4C8 */ void mBreathSet();
/* 805BF768 */ void mBreathHighSet(bool);
/* 805BFA6C */ void mFeintBreath();
/* 805BF768 */ bool mBreathHighSet(bool);
/* 805BFA6C */ bool mFeintBreath();
/* 805BFD88 */ void executeBreathAttack();
/* 805C062C */ void executeWindAttack();
/* 805C0CAC */ void mGliderMoveSub(f32);
/* 805C0CAC */ bool mGliderMoveSub(f32);
/* 805C0EF8 */ void executeGliderAttack();
/* 805C1E0C */ void executePillarSearch();
/* 805C24BC */ void executePillarWait();
/* 805C2BE8 */ void startDemoCheck();
/* 805C2BE8 */ bool startDemoCheck();
/* 805C2CD0 */ void executeDamageDemo();
/* 805C3558 */ void executeMiddleDemo();
/* 805C36A4 */ void executeDead();
@@ -69,38 +70,38 @@ public:
/* 805C46E0 */ void cc_set();
/* 805C4E14 */ void down_cc_set();
/* 805C4FB4 */ void demo_skip(int);
/* 805C50BC */ void DemoSkipCallBack(void*, int);
/* 805C50F0 */ void execute();
/* 805C55B0 */ void _delete();
/* 805C56A4 */ void CreateHeap();
/* 805C5974 */ void create();
/* 805C50BC */ static int DemoSkipCallBack(void*, int);
/* 805C50F0 */ int execute();
/* 805C55B0 */ int _delete();
/* 805C56A4 */ int CreateHeap();
/* 805C5974 */ int create();
/* 805C62B0 */ daB_DR_c();
MtxP getMtx() { return mpModelMorf->getModel()->getAnmMtx(15); }
void onTarget() { mTarget = true; }
bool isBack() { return mPrm0; }
bool isBack() { return arg0; }
private:
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ mDoExt_McaMorfSO* mpModelMorf;
/* 0x05B8 */ J3DModel* mpPartModel;
/* 0x05BC */ mDoExt_brkAnm* mpCoreBrk;
/* 0x05C0 */ Z2CreatureEnemy field_0x5c0;
/* 0x0664 */ Z2CreatureEnemy field_0x664;
/* 0x0708 */ int mAction;
/* 0x070C */ int mMode;
/* 0x0710 */ int mAnmID;
/* 0x05C0 */ Z2CreatureEnemy mSound;
/* 0x0664 */ Z2CreatureEnemy mSound2;
/* 0x0708 */ int mActionMode;
/* 0x070C */ int mMoveMode;
/* 0x0710 */ int mAnm;
/* 0x0714 */ u8 field_0x714[0x0718 - 0x0714];
/* 0x0718 */ int field_0x718;
/* 0x071C */ u8 field_0x71C[0x0720 - 0x071C];
/* 0x0720 */ f32 field_0x720;
/* 0x071C */ u32 mShadowKey;
/* 0x0720 */ f32 mTargetHeight;
/* 0x0724 */ f32 field_0x724;
/* 0x0728 */ f32 field_0x728;
/* 0x072C */ f32 field_0x72c;
/* 0x0730 */ u8 field_0x730[0x0734 - 0x0730];
/* 0x0730 */ f32 field_0x730;
/* 0x0734 */ f32 field_0x734;
/* 0x0738 */ u8 field_0x738[0x073C - 0x0738];
/* 0x0738 */ f32 field_0x738;
/* 0x073C */ f32 field_0x73c;
/* 0x0740 */ f32 field_0x740;
/* 0x0744 */ f32 field_0x744;
@@ -111,44 +112,41 @@ private:
/* 0x0752 */ s16 field_0x752;
/* 0x0754 */ s16 field_0x754;
/* 0x0756 */ s16 field_0x756;
/* 0x0758 */ s16 field_0x758;
/* 0x075A */ s16 field_0x75a;
/* 0x075C */ u8 field_0x75C[0x0760 - 0x075C];
/* 0x0758 */ csXyz mHeadAngle;
/* 0x0760 */ cXyz field_0x760;
/* 0x076C */ cXyz field_0x76c;
/* 0x076C */ cXyz mBoot_c_trance;
/* 0x0778 */ cXyz field_0x778;
/* 0x0784 */ cXyz field_0x784;
/* 0x0790 */ cXyz field_0x790;
/* 0x079C */ cXyz field_0x79c;
/* 0x079C */ cXyz mGlider_WindPos;
/* 0x07A8 */ cXyz field_0x7a8;
/* 0x07B4 */ cXyz field_0x7b4;
/* 0x07C0 */ int mTimer[4];
/* 0x07D0 */ u8 field_0x7d0;
/* 0x07D1 */ u8 field_0x7d1;
/* 0x07D2 */ u8 field_0x7d2;
/* 0x07D2 */ u8 mBreakPartsNo;
/* 0x07D3 */ u8 field_0x7d3;
/* 0x07D4 */ u8 field_0x7d4;
/* 0x07D5 */ u8 field_0x7D5[0x07D6 - 0x07D5];
/* 0x07D5 */ u8 field_0x7d5;
/* 0x07D6 */ u8 field_0x7d6;
/* 0x07D7 */ u8 field_0x7d7;
/* 0x07D8 */ u8 field_0x7D8[0x07D9 - 0x07D8];
/* 0x07D8 */ u8 field_0x7d8;
/* 0x07D9 */ u8 mTarget;
/* 0x07DA */ u8 field_0x7DA[0x07DB - 0x07DA];
/* 0x07DA */ u8 field_0x7da;
/* 0x07DB */ u8 field_0x7db;
/* 0x07DC */ u8 field_0x7DC[0x07E0 - 0x07DC];
/* 0x07DC */ u8 field_0x7dc;
/* 0x07E0 */ int field_0x7e0;
/* 0x07E4 */ u8 field_0x7e4[4];
/* 0x07E4 */ u8 mCount[4];
/* 0x07E8 */ u8 field_0x7e8;
/* 0x07E9 */ u8 field_0x7E9[0x07EA - 0x07E9];
/* 0x07EA */ u8 mPrm0;
/* 0x07EB */ u8 field_0x7eb;
/* 0x07EC */ u8 mPrm1;
/* 0x07ED */ u8 mPrm2;
/* 0x07EE */ u8 mPrm3;
/* 0x07EF */ u8 field_0x7EF[0x07F0 - 0x07EF];
/* 0x07E9 */ u8 field_0x7e9;
/* 0x07EA */ u8 arg0;
/* 0x07EB */ u8 mPartNo;
/* 0x07EC */ u8 bitSw;
/* 0x07ED */ u8 bitSw2;
/* 0x07EE */ u8 bitSw3;
/* 0x07F0 */ dBgS_AcchCir mAcchCir;
/* 0x0830 */ dBgS_ObjAcch mAcch;
/* 0x0A08 */ dCcD_Stts field_0xa08;
/* 0x0A08 */ dCcD_Stts mColliderStts;
/* 0x0A44 */ dCcD_Cyl mWeekCc;
/* 0x0B80 */ dCcD_Sph mFootAtCc[2];
/* 0x0DF0 */ dCcD_Sph field_0xdf0;
@@ -162,14 +160,16 @@ private:
/* 0x2174 */ dCcD_Cyl mDownCc[5];
/* 0x27A0 */ u8 field_0x27A0[0x27A8 - 0x27A0];
/* 0x27A8 */ Z2CreatureEnemy* field_0x27a8;
/* 0x27AC */ u8 field_0x27AC[0x27C4 - 0x27AC];
/* 0x27C4 */ cXyz field_0x27c4;
/* 0x27D0 */ cXyz field_0x27d0;
/* 0x27AC */ u8 field_0x27AC[0x27BE - 0x27AC];
/* 0x27BE */ u8 field_0x27be;
/* 0x27BF */ u8 field_0x27bf[0x27C4 - 0x27BF];
/* 0x27C4 */ cXyz mDemoCamEye;
/* 0x27D0 */ cXyz mDemoCamCenter;
/* 0x27DC */ u32 field_0x27dc[4];
/* 0x27EC */ u32 field_0x27ec[4];
/* 0x27FC */ u32 field_0x27fc[4];
/* 0x280C */ u32 field_0x280c;
/* 0x2810 */ u8 field_0x2810[0x2814 - 0x2810];
/* 0x2810 */ u8 mInitHIO;
/* 0x2814 */ dMsgFlow_c mMsgFlow;
};
@@ -179,7 +179,45 @@ STATIC_ASSERT(sizeof(daB_DR_c) == 0x2860);
class daB_DR_HIO_c {
public:
/* 805BAE6C */ daB_DR_HIO_c();
/* 805C6B94 */ ~daB_DR_HIO_c();
/* 805C6B94 */ virtual ~daB_DR_HIO_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size;
/* 0x0C */ f32 fall_accel;
/* 0x10 */ f32 fall_accel_max;
/* 0x14 */ f32 wind_large_attack_lockon_range;
/* 0x18 */ f32 unk_0x18;
/* 0x1C */ f32 wind_small_attack_power;
/* 0x20 */ f32 wind_attack_power;
/* 0x24 */ f32 glide_wind_power;
/* 0x28 */ f32 breath_attack_threshold;
/* 0x2C */ f32 unk_0x2c;
/* 0x30 */ f32 breath_move_speed_max;
/* 0x34 */ f32 breath_move_speed_min;
/* 0x38 */ s16 tail_hit_chance_time;
/* 0x3A */ s16 center_wind_time;
/* 0x3C */ s16 breath_continue_time;
/* 0x3E */ s16 breath_continue_no_armor_time;
/* 0x40 */ s16 breath_feint1_time;
/* 0x42 */ s16 breath_feint2_time;
/* 0x44 */ s16 breath_feint3_time;
/* 0x46 */ s16 no_attack_time;
/* 0x48 */ s16 unk_0x48;
/* 0x4A */ s16 no_attack_no_armor_time;
/* 0x4C */ s16 unk_0x4c;
/* 0x4E */ s16 back_hit_chance_time;
/* 0x50 */ s16 after_breath_chance_time;
/* 0x52 */ s16 neck_search_speed;
/* 0x54 */ s16 neck_search2_speed;
/* 0x56 */ s16 neck_search_speed_max;
/* 0x58 */ s16 body_search_speed;
/* 0x5A */ s16 body_search2_speed;
/* 0x5C */ s16 body_search_speed_max;
/* 0x5E */ s16 body_search_feint_speed_max;
/* 0x60 */ s16 feint_angle;
/* 0x62 */ s16 unk_0x62;
/* 0x64 */ u8 display_range;
/* 0x65 */ u8 breath_feint2_OFF;
};
#endif /* D_A_B_DR_H */
+3
View File
@@ -932,6 +932,7 @@ public:
u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
u32 checkBoarSingleBattleFirst() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); }
u32 checkBoarSingleBattleSecond() const { return checkNoResetFlg2(FLG2_UNK_1000000); }
u32 getFootOnGround() const { return checkResetFlg1(daPy_RFLG1(RFLG1_UNK_10 | RFLG1_UNK_20)); }
void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); }
bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); }
@@ -1073,6 +1074,8 @@ public:
static int getLastSceneDamage() { return (dComIfGs_getLastSceneMode() >> 4) & 0x7F; }
static u8 getLastSceneSwordAtUpTime() { return (dComIfGs_getLastSceneMode() >> 11) & 0xFF; }
static BOOL checkNormalSwordEquip() { return dComIfGs_getSelectEquipSword() == fpcNm_ITEM_SWORD; }
inline static u32 i_getLastSceneMode();
inline static u32 getLastSceneMode();
inline static bool checkWoodSwordEquip() {
+5 -82
View File
@@ -28,86 +28,12 @@ BOOL dMw_A_TRIGGER();
BOOL dMw_B_TRIGGER();
BOOL dMw_Z_TRIGGER();
BOOL dMw_START_TRIGGER();
BOOL dMw_LEFT_TRIGGER();
BOOL dMw_RIGHT_TRIGGER();
void dMw_onPauseWindow();
void dMw_offPauseWindow();
class dDlst_MENU_CAPTURE_c : public dDlst_base_c {
public:
virtual void draw() {
if (getDrawFlag() == 1) {
setDrawFlag();
dComIfGp_onPauseFlag();
GXSetTexCopySrc(0, 0, 608, 448);
GXSetTexCopyDst(304, 224, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_ENABLE);
GXCopyTex(mDoGph_gInf_c::getFrameBufferTex(), GX_FALSE);
GXPixModeSync();
} else {
GXTexObj tex;
GXInitTexObj(&tex, mDoGph_gInf_c::getFrameBufferTex(), 304, 224,
(GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&tex, GX_TEXMAP0);
GXSetNumChans(0);
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
const GXColor color = {0, 0, 0, mAlpha};
GXSetTevColor(GX_TEVREG0, color);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetZCompLoc(GX_TRUE);
GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_OR);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
GXSetFogRangeAdj(GX_FALSE, 0, NULL);
GXSetCullMode(GX_CULL_NONE);
GXSetDither(GX_TRUE);
GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
GXSetCurrentMtx(0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMinY(), 0);
GXTexCoord2s8(0, 0);
GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY(), 0);
GXTexCoord2s8(1, 0);
GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY(), 0);
GXTexCoord2s8(1, 1);
GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY(), 0);
GXTexCoord2s8(0, 1);
GXEnd();
}
}
virtual ~dDlst_MENU_CAPTURE_c() {}
dDlst_MENU_CAPTURE_c() {
mFlag = 0;
mAlpha = 255;
mTopFlag = 0;
}
void setCaptureFlag() { mFlag = 1; }
bool checkDraw() { return mFlag; }
u8 getAlpha() { return mAlpha; }
u8 getTopFlag() { return mTopFlag; }
u8 getDrawFlag() { return mFlag; }
void setDrawFlag() { mFlag = 3; }
private:
/* 0x4 */ u8 mFlag;
/* 0x5 */ u8 mAlpha;
/* 0x6 */ u8 mTopFlag;
};
class dDlst_MENU_CAPTURE_c;
class dMw_c : public msg_class {
public:
@@ -303,7 +229,4 @@ private:
/* 0x154 */ bool mPauseWindow;
};
BOOL dMw_LEFT_TRIGGER();
BOOL dMw_RIGHT_TRIGGER();
#endif /* D_MENU_D_MENU_WINDOW_H */