d_a_kago almost matching (#2541)

This commit is contained in:
Max Roncace 2025-07-19 15:12:27 +00:00 committed by GitHub
parent db1cab527a
commit c4ec1a5402
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 3827 additions and 1622 deletions

View File

@ -246,6 +246,6 @@ __vt__12dBgS_ObjAcch = .data:0x000001D8; // type:object size:0x24 scope:global
__vt__8cM3dGPla = .data:0x000001FC; // type:object size:0xC scope:global __vt__8cM3dGPla = .data:0x000001FC; // type:object size:0xC scope:global
__vt__12daKago_HIO_c = .data:0x00000208; // type:object size:0xC scope:global __vt__12daKago_HIO_c = .data:0x00000208; // type:object size:0xC scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
lbl_265_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte l_HIOInit = .bss:0x00000008; // type:object size:0x1 data:byte
@3924 = .bss:0x0000000C; // type:object size:0xC scope:local @3924 = .bss:0x0000000C; // type:object size:0xC scope:local
l_HIO = .bss:0x00000018; // type:object size:0x5C scope:global data:byte l_HIO = .bss:0x00000018; // type:object size:0x5C scope:global data:byte

View File

@ -313,5 +313,5 @@ lbl_256_data_530 = .data:0x00000530; // type:object size:0x24
@125862 = .data:0x00000738; // type:object size:0xC scope:local @125862 = .data:0x00000738; // type:object size:0xC scope:local
@125863 = .data:0x0000075C; // type:object size:0x11 scope:local data:string @125863 = .data:0x0000075C; // type:object size:0x11 scope:local data:string
lbl_256_data_76D = .data:0x0000076D; // type:object size:0xB7 lbl_256_data_76D = .data:0x0000076D; // type:object size:0xB7
lbl_256_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte l_HIOInit = .bss:0x00000000; // type:object size:0x1 data:byte
l_HIO = .bss:0x00000004; // type:object size:0x5C scope:global data:byte l_HIO = .bss:0x00000004; // type:object size:0x5C scope:global data:byte

View File

@ -28,14 +28,8 @@ public:
c_list() { mBalloon = NULL; } c_list() { mBalloon = NULL; }
void set(daBalloon2D_c* i_this) { mBalloon = i_this; } void set(daBalloon2D_c* i_this) { mBalloon = i_this; }
#ifdef NONMATCHING
/* 806534CC */ virtual void draw(); /* 806534CC */ virtual void draw();
/* 8065544C */ virtual ~c_list(); /* 8065544C */ virtual ~c_list();
#else
void draw();
~c_list();
void* vtable;
#endif
daBalloon2D_c* mBalloon; daBalloon2D_c* mBalloon;
}; };
@ -69,9 +63,7 @@ public:
/* 80654730 */ void drawAddScore(); /* 80654730 */ void drawAddScore();
/* 80654E8C */ void setHIO(bool); /* 80654E8C */ void setHIO(bool);
/* 80655494 */ /* 80655494 */
#ifdef NONMATCHING
virtual virtual
#endif
~daBalloon2D_c(); ~daBalloon2D_c();
void show() { mIsVisible = 1; } void show() { mIsVisible = 1; }
@ -87,10 +79,6 @@ public:
u8 field_0xf; u8 field_0xf;
}; };
#ifdef NONMATCHING
#else
/* 0x570 */ u32 vtable;
#endif
/* 0x574 */ J2DScreen* mScreen; /* 0x574 */ J2DScreen* mScreen;
/* 0x578 */ CPaneMgr* field_0x578; /* 0x578 */ CPaneMgr* field_0x578;
/* 0x57C */ CPaneMgr* field_0x57c; /* 0x57C */ CPaneMgr* field_0x57c;

View File

@ -1,68 +1,72 @@
#ifndef D_A_KAGO_H #ifndef D_A_KAGO_H
#define D_A_KAGO_H #define D_A_KAGO_H
#include "f_op/f_op_actor_mng.h" #include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "d/d_msg_flow.h"
#include "d/d_path.h" #include "d/d_path.h"
#include "f_op/f_op_actor_mng.h"
/** /**
* @ingroup actors-unsorted * @ingroup actors-unsorted
* @class daKago_c * @class daKago_c
* @brief Basket * @brief Player-controlled Kargarok
* *
* @details * @details
* *
*/ */
class daKago_c : public fopAc_ac_c { class daKago_c : public fopAc_ac_c {
public: public:
/* 80849660 */ void getBckName(int); /* 80849660 */ int getBckName(int);
/* 808496F0 */ void setBck(int, u8, f32, f32); /* 808496F0 */ void setBck(int, u8, f32, f32);
/* 80849798 */ void checkBck(int); /* 80849798 */ bool checkBck(int);
/* 808497F8 */ void draw(); /* 808497F8 */ int draw();
/* 80849980 */ void executeBalloonMenu(); /* 80849980 */ int executeBalloonMenu();
/* 80849BA8 */ void checkGroundHeight(cXyz, f32*); /* 80849BA8 */ f32 checkGroundHeight(cXyz, f32*);
/* 8084A070 */ void checkRoofHeight(cXyz); /* 8084A070 */ f32 checkRoofHeight(cXyz);
/* 8084A210 */ void checkMoveHeight(); /* 8084A210 */ void checkMoveHeight();
/* 8084A2A8 */ void checkSizeBg(); /* 8084A2A8 */ void checkSizeBg();
/* 8084A6DC */ bool getBeforeGroundHeight(u8); /* 8084A6DC */ s16 getBeforeGroundHeight(u8);
/* 8084A6E4 */ void demo_skip(int); /* 8084A6E4 */ void demo_skip(int);
/* 8084AA64 */ void DemoSkipCallBack(void*, int); /* 8084AA64 */ static int DemoSkipCallBack(void*, int);
/* 8084AA98 */ void setActionMode(int, int); /* 8084AA98 */ void setActionMode(int, int);
/* 8084AAAC */ void setMidnaTagPos(); /* 8084AAAC */ void setMidnaTagPos();
/* 8084AB40 */ void setMidnaRideOn(); /* 8084AB40 */ void setMidnaRideOn();
/* 8084AB8C */ void setPlayerRideOn(); /* 8084AB8C */ void setPlayerRideOn();
/* 8084ABC8 */ void setRideOff(); /* 8084ABC8 */ void setRideOff();
/* 8084AC2C */ void searchNearPassPoint(); /* 8084AC2C */ s8 searchNearPassPoint();
/* 8084AE78 */ void setSceneChange(int); /* 8084AE78 */ int setSceneChange(int);
/* 8084AF40 */ void createBalloonScore(); /* 8084AF40 */ void createBalloonScore();
/* 8084AFB0 */ void startBalloonScore(); /* 8084AFB0 */ void startBalloonScore();
/* 8084B024 */ void endBalloonScore(); /* 8084B024 */ void endBalloonScore();
/* 8084B088 */ f32 checkNextPath(cXyz); /* 8084B088 */ f32 checkNextPath(cXyz);
/* 8084B108 */ void checkHeight(); /* 8084B108 */ void checkHeight();
/* 8084B134 */ void checkYaguraPos(cXyz); /* 8084B134 */ bool checkYaguraPos(cXyz);
/* 8084B1E0 */ void checkWallHitFall(int); /* 8084B1E0 */ bool checkWallHitFall(int);
/* 8084B56C */ void checkAttackStart(); /* 8084B56C */ bool checkAttackStart();
/* 8084B5DC */ void getValueY(f32); /* 8084B5DC */ s16 getValueY(f32);
/* 8084B6F4 */ void getValueX(f32); /* 8084B6F4 */ s16 getValueX(f32);
/* 8084B718 */ void getValueAbsX(f32); /* 8084B718 */ s16 getValueAbsX(f32);
/* 8084B744 */ void flySpeedCalcLockOn(); /* 8084B744 */ void flySpeedCalcLockOn();
/* 8084B96C */ void flySpeedCalc(s16, int); /* 8084B96C */ void flySpeedCalc(s16, int);
/* 8084C078 */ void checkFlySceneChange(); /* 8084C078 */ bool checkFlySceneChange();
/* 8084C178 */ void setFlyAway(); /* 8084C178 */ void setFlyAway();
/* 8084C204 */ void setFlyAnime(); /* 8084C204 */ void setFlyAnime();
/* 8084C2CC */ void executeFly(); /* 8084C2CC */ void executeFly();
/* 8084C8FC */ void executeStagger(); /* 8084C8FC */ void executeStagger();
/* 8084D108 */ void executeWait(); /* 8084D108 */ void executeWait();
/* 8084D354 */ void calcAttackMove(int); /* 8084D354 */ bool calcAttackMove(int);
/* 8084D50C */ void executeAttack(); /* 8084D50C */ void executeAttack();
/* 8084DA18 */ void calcCircleCamera(int); /* 8084DA18 */ void calcCircleCamera(int);
/* 8084DBFC */ void executeEvent(); /* 8084DBFC */ void executeEvent();
/* 8084DD18 */ void initPerchDemo(); /* 8084DD18 */ void initPerchDemo();
/* 8084E2D4 */ void executePerchDemo(); /* 8084E2D4 */ bool executePerchDemo();
/* 8084F09C */ void PerchDemoAwayForward(); /* 8084F09C */ bool PerchDemoAwayForward();
/* 8084FA58 */ void executePerch(); /* 8084FA58 */ void executePerch();
/* 8084FAA8 */ void executeEvent2(); /* 8084FAA8 */ void executeEvent2();
/* 8084FB50 */ void initFirstDemo(); /* 8084FB50 */ void initFirstDemo();
/* 80850384 */ void executeFirstDemo(); /* 80850384 */ bool executeFirstDemo();
/* 808513E4 */ void executePerch2(); /* 808513E4 */ void executePerch2();
/* 80851434 */ void executeLandingLakeHairia(); /* 80851434 */ void executeLandingLakeHairia();
/* 80851DEC */ void executeLandingBoartHouse(); /* 80851DEC */ void executeLandingBoartHouse();
@ -80,67 +84,179 @@ public:
/* 80853BCC */ void action(); /* 80853BCC */ void action();
/* 80853EF0 */ void mtx_set(); /* 80853EF0 */ void mtx_set();
/* 80853FB0 */ void cc_set(); /* 80853FB0 */ void cc_set();
/* 80854058 */ void execute(); /* 80854058 */ int execute();
/* 80854190 */ void _delete(); /* 80854190 */ int _delete();
/* 80854220 */ void ctrlJoint(J3DJoint*, J3DModel*); /* 80854220 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 808542DC */ void JointCallBack(J3DJoint*, int); /* 808542DC */ static int JointCallBack(J3DJoint*, int);
/* 80854328 */ void CreateHeap(); /* 80854328 */ int CreateHeap();
/* 808544D8 */ void create(); /* 808544D8 */ int create();
void setEvent() { void setEvent() {
mIsFlying = 0; mIsFlying = false;
field_0x740 = 2; mCurrentAction = 2;
field_0x744 = 0; field_0x744 = 0;
} }
void setEvent2() { void setEvent2() {
mIsFlying = 0; mIsFlying = false;
field_0x740 = 6; mCurrentAction = 6;
field_0x744 = 0; field_0x744 = 0;
} }
void setKagoPath(u8 i_pathNo) { void setKagoPath(u8 i_pathNo) {
if (i_pathNo != 0xFF) { if (i_pathNo != 0xFF) {
field_0x76c = dPath_GetRoomPath(i_pathNo, fopAcM_GetRoomNo(this)); mpPath2 = dPath_GetRoomPath(i_pathNo, fopAcM_GetRoomNo(this));
} }
} }
void onWaterFall() {
field_0x6ea = 1;
}
bool isAttack() {
return field_0x6dd != 0;
}
MtxP getLegR3Mtx() { return mLegR3Mtx; } MtxP getLegR3Mtx() { return mLegR3Mtx; }
MtxP getMidnaLocaterMtx() { return mpMorf->getModel()->getAnmMtx(4); } MtxP getMidnaLocaterMtx() { return mpMorf->getModel()->getAnmMtx(4); }
s8 getPathDir() { return mPathDir; } s8 getPathDir() { return mPathDir; }
u8 isFlying() { return mIsFlying; } bool isFlying() { return mIsFlying; }
fopAc_ac_c* getLockActor() { return mpLockActor; } fopAc_ac_c* getLockActor() { return mpLockActor; }
void setLockActor(fopAc_ac_c* actor) { mpLockActor = actor; } void setLockActor(fopAc_ac_c* actor) { mpLockActor = actor; }
void setEatYm() { field_0x6d8 |= 4; } void setEatYm() { field_0x6d8 |= 4; }
MtxP getMouthMtx() { return mpMorf->getModel()->getAnmMtx(7); } MtxP getMouthMtx() { return mpMorf->getModel()->getAnmMtx(7); }
private: private:
/* 0x568 */ u8 field_0x568[8]; /* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ mDoExt_McaMorfSO* mpMorf; /* 0x570 */ mDoExt_McaMorfSO* mpMorf;
/* 0x574 */ u8 field_0x574[0x618 - 0x574]; /* 0x574 */ Z2CreatureEnemy mSound;
/* 0x618 */ fopAc_ac_c* mpLockActor; /* 0x618 */ fopAc_ac_c* mpLockActor;
/* 0x61c */ u8 field_0x61c[0x620 - 0x61c]; /* 0x61C */ fpc_ProcID mBalloon2DId;
/* 0x620 */ Mtx mLegR3Mtx; /* 0x620 */ Mtx mLegR3Mtx;
/* 0x650 */ u8 field_0x650[0x6d8 - 0x650]; /* 0x650 */ cXyz field_0x650[3];
/* 0x6d8 */ u8 field_0x6d8; /* 0x674 */ cXyz field_0x674;
/* 0x6d9 */ u8 field_0x6d9[0x6E1 - 0x6d9]; /* 0x680 */ cXyz field_0x680;
/* 0x6E1 */ u8 mIsFlying; /* 0x68C */ cXyz field_0x68c;
/* 0x6E2 */ u8 field_0x6E2[0x740 - 0x6E2]; /* 0x698 */ cXyz field_0x698;
/* 0x740 */ int field_0x740; /* 0x6A4 */ cXyz field_0x6a4;
/* 0x744 */ int field_0x744; /* 0x6B0 */ cXyz field_0x6b0;
/* 0x748 */ u8 field_0x748[0x76C - 0x748]; /* 0x6BC */ s16 field_0x6bc;
/* 0x76C */ dPath* field_0x76c; /* 0x6BE */ csXyz field_0x6be;
/* 0x770 */ u8 field_0x770[0x773 - 0x770]; /* 0x6C4 */ f32 field_0x6c4;
/* 0x6C8 */ s16 field_0x6c8;
/* 0x6CA */ s16 field_0x6ca;
/* 0x6CC */ f32 field_0x6cc;
/* 0x6D0 */ f32 field_0x6d0;
/* 0x6D4 */ f32 field_0x6d4;
/* 0x6D8 */ u8 field_0x6d8;
/* 0x6D9 */ u8 field_0x6d9;
/* 0x6DA */ s16 field_0x6da;
/* 0x6DC */ u8 field_0x6dc;
/* 0x6DD */ u8 field_0x6dd;
/* 0x6DE */ u8 field_0x6de;
/* 0x6DF */ u8 field_0x6df;
/* 0x6E0 */ u8 field_0x6e0;
/* 0x6E1 */ bool mIsFlying;
/* 0x6E2 */ u8 field_0x6e2[0x6e3 - 0x6e2];
/* 0x6E3 */ u8 field_0x6e3;
/* 0x6E4 */ u8 field_0x6e4;
/* 0x6E5 */ u8 field_0x6e5;
/* 0x6E6 */ u8 field_0x6e6;
/* 0x6E7 */ u8 field_0x6e7;
/* 0x6E8 */ u8 field_0x6e8;
/* 0x6E8 */ u8 field_0x6e9;
/* 0x6EA */ u8 field_0x6ea;
/* 0x6EB */ u8 field_0x6eb;
/* 0x6EC */ u8 field_0x6ec[0x6ed - 0x6ec];
/* 0x6ED */ u8 field_0x6ed;
/* 0x6F0 */ f32 field_0x6f0;
/* 0x6F4 */ f32 field_0x6f4;
/* 0x6F8 */ f32 field_0x6f8;
/* 0x6FC */ f32 field_0x6fc;
/* 0x700 */ f32 field_0x700;
/* 0x704 */ f32 mGroundHeight;
/* 0x708 */ f32 mRoofHeight;
/* 0x70C */ f32 field_0x70c;
/* 0x710 */ s16 field_0x710;
/* 0x712 */ s16 field_0x712;
/* 0x714 */ s16 field_0x714;
/* 0x716 */ s16 field_0x716;
/* 0x718 */ s16 field_0x718;
/* 0x71A */ s16 field_0x71a;
/* 0x71C */ s32 field_0x71c;
/* 0x720 */ s32 field_0x720;
/* 0x724 */ u8 field_0x724[0x728 - 0x724];
/* 0x728 */ s32 field_0x728;
/* 0x72C */ s32 field_0x72c;
/* 0x730 */ s32 mDashCooldownTime;
/* 0x734 */ s32 mDashTime;
/* 0x738 */ s32 field_0x738;
/* 0x73C */ s32 field_0x73c;
/* 0x740 */ s32 mCurrentAction;
/* 0x744 */ s32 field_0x744;
/* 0x748 */ s32 field_0x748;
/* 0x74C */ s32 field_0x74c;
/* 0x750 */ s32 field_0x750;
/* 0x754 */ s32 field_0x754;
/* 0x758 */ s32 field_0x758;
/* 0x75C */ char* field_0x75c;
/* 0x760 */ char* field_0x760;
/* 0x764 */ s32 field_0x764;
/* 0x768 */ dPath* mpPath1;
/* 0x76C */ dPath* mpPath2;
/* 0x770 */ s8 mPathIdx;
/* 0x771 */ s8 field_0x771;
/* 0x772 */ s8 mPathIdxOffset;
/* 0x773 */ s8 mPathDir; /* 0x773 */ s8 mPathDir;
/* 0x774 */ u8 field_0x774[0xBA4 - 0x774]; /* 0x774 */ u8 field_0x774[0x778 - 0x774];
/* 0x778 */ dBgS_AcchCir mAcchCir;
/* 0x7B8 */ dBgS_ObjAcch mObjAcch;
/* 0x990 */ dCcD_Stts mStts;
/* 0x9CC */ dCcD_Sph mSph;
/* 0xB04 */ dCcU_AtInfo mAtInfo;
/* 0xB28 */ u8 field_0xb28[0xb30 - 0xb28];
/* 0xB30 */ u32 field_0xb30;
/* 0xB34 */ u32 field_0xb34;
/* 0xB38 */ u32 field_0xb38;
/* 0xB3C */ u32 field_0xb3c;
/* 0xB40 */ u32 field_0xb40;
/* 0xB44 */ u32 field_0xb44[3];
/* 0xB50 */ u32 field_0xb50;
/* 0xB54 */ u8 field_0xb54;
/* 0xB58 */ dMsgFlow_c mMsgFlow;
}; };
STATIC_ASSERT(sizeof(daKago_c) == 0xBA4); STATIC_ASSERT(sizeof(daKago_c) == 0xBA4);
class daKago_HIO_c { class daKago_HIO_c : public JORReflexible {
public: public:
/* 808495AC */ daKago_HIO_c(); /* 808495AC */ daKago_HIO_c();
/* 80854A4C */ ~daKago_HIO_c(); /* 80854A4C */ virtual ~daKago_HIO_c() {}
void genMessage(JORMContext* ctx);
/* 0x04 */ s8 mChild;
/* 0x08 */ f32 mRevoconUpDown;
/* 0x0C */ f32 mRevoconUpDownMax;
/* 0x10 */ f32 mRevoconLeftRight;
/* 0x14 */ f32 mRevoconLeftRightMax;
/* 0x18 */ f32 mBasicSize;
/* 0x1C */ f32 mFlightSpeed;
/* 0x20 */ f32 mFlightGroundAltitude;
/* 0x24 */ f32 mFlightCeilingAltitude;
/* 0x28 */ f32 mShadowDensity;
/* 0x2C */ f32 mDescentRateIncrement;
/* 0x30 */ f32 mAscentRateDecel;
/* 0x34 */ f32 mDashTime;
/* 0x38 */ f32 mDashTimeMultiplier;
/* 0x3C */ f32 mWallHitInvulnTime;
/* 0x40 */ f32 mDashCooldownTime;
/* 0x44 */ f32 mZOffset;
/* 0x48 */ f32 mZOffsetHori;
/* 0x4C */ u8 mAngleTrackingMode;
/* 0x50 */ f32 mYOffsetFromWaterSurface;
/* 0x54 */ f32 mWaterSplashTime;
/* 0x58 */ f32 mSplashGenTimeDuringDash;
}; };
#endif /* D_A_KAGO_H */ #endif /* D_A_KAGO_H */

View File

@ -369,6 +369,14 @@ public:
void onForceMorfCancel() { onEndResetStateFlg0(ERFLG0_FORCE_MORF_CANCEL); } void onForceMorfCancel() { onEndResetStateFlg0(ERFLG0_FORCE_MORF_CANCEL); }
void setCargoActor(fopAc_ac_c* i_actor) {
mpKago = (daKago_c*)i_actor;
}
void offCargoActor() {
mpKago = NULL;
}
static daMidna_texData_s const m_texDataTable[21]; static daMidna_texData_s const m_texDataTable[21];
static daMidna_anmData_s const m_anmDataTable[53]; static daMidna_anmData_s const m_anmDataTable[53];

View File

@ -45,7 +45,6 @@ public:
/* 80CBD8E0 */ int Draw(); /* 80CBD8E0 */ int Draw();
/* 80CBD964 */ int Delete(); /* 80CBD964 */ int Delete();
private:
/* 0x5A0 */ ActionEnum mAction; /* 0x5A0 */ ActionEnum mAction;
/* 0x5A4 */ BreakSubAction mBreakSubAction; /* 0x5A4 */ BreakSubAction mBreakSubAction;
/* 0x5A8 */ u8 field_0x5a8; /* 0x5A8 */ u8 field_0x5a8;

View File

@ -1102,6 +1102,8 @@ public:
static bool checkPeepEndSceneChange() { return getLastSceneMode() == 7; } static bool checkPeepEndSceneChange() { return getLastSceneMode() == 7; }
static bool checkWolfCargoCarrySceneChange() { return getLastSceneMode() == 10; }
static int getLastSceneDamage() { return (dComIfGs_getLastSceneMode() >> 4) & 0x7F; } static int getLastSceneDamage() { return (dComIfGs_getLastSceneMode() >> 4) & 0x7F; }
static u8 getLastSceneSwordAtUpTime() { return (dComIfGs_getLastSceneMode() >> 11) & 0xFF; } static u8 getLastSceneSwordAtUpTime() { return (dComIfGs_getLastSceneMode() >> 11) & 0xFF; }

View File

@ -3,7 +3,7 @@
#include "d/d_msg_flow.h" #include "d/d_msg_flow.h"
#include "f_op/f_op_actor_mng.h" #include "f_op/f_op_actor_mng.h"
#include "SSystem\SComponent\c_phase.h" #include "SSystem/SComponent/c_phase.h"
class daTagTWGate_c; class daTagTWGate_c;
typedef void (daTagTWGate_c::*actionFunc)(); typedef void (daTagTWGate_c::*actionFunc)();

View File

@ -453,7 +453,7 @@ inline void dMsgObject_setSmellType(u8 type) {
} }
inline u8 dMsgObject_getSelectCursorPos() { inline u8 dMsgObject_getSelectCursorPos() {
return dMsgObject_c::getSelectCursorPos(); return dMsgObject_getMsgObjectClass()->getSelectCursorPos();
} }
inline void dMsgObject_setTalkPartner(fopAc_ac_c* actor) { inline void dMsgObject_setTalkPartner(fopAc_ac_c* actor) {

File diff suppressed because it is too large Load Diff