scannon / scannon_crs / scannon_ten done (#2632)

* scannon done

* scannon_crs done

* scannon_ten done

* pr

* attention debug stuff

* attn flags

* fix build
This commit is contained in:
TakaRikka
2025-09-08 02:01:20 -07:00
committed by GitHub
parent b35204b0c8
commit 5fce8ea1e1
244 changed files with 3067 additions and 3159 deletions
+3 -3
View File
@@ -292,11 +292,11 @@ public:
int chkEvent() {
attention_info.flags = 0;
if (mFlowNodeNum > 0) {
attention_info.flags = 0xa;
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
}
if (mIsDarkWorld) {
if (daPy_py_c::checkNowWolfEyeUp()) {
attention_info.flags |= 0xc00000;
attention_info.flags |= (fopAc_AttnFlag_UNK_0x800000 | fopAc_AttnFlag_UNK_0x400000);
} else {
attention_info.flags = 0;
}
@@ -314,7 +314,7 @@ public:
}
int orderEvent() {
if ((!mIsDarkWorld || daPy_py_c::checkNowWolfEyeUp()) && mFlowNodeNum > 0 && ((attention_info.flags & 8) || (attention_info.flags & 2))) {
if ((!mIsDarkWorld || daPy_py_c::checkNowWolfEyeUp()) && mFlowNodeNum > 0 && ((attention_info.flags & fopAc_AttnFlag_SPEAK_e) || (attention_info.flags & fopAc_AttnFlag_TALK_e))) {
eventInfo.onCondition(dEvtCnd_CANTALK_e);
}
return 1;
+1 -1
View File
@@ -200,7 +200,7 @@ public:
/* 0xC1C */ u8 field_0xc1c;
u32 fopAcM_checkHawkCarryNow(fopAc_ac_c* param_1) {
return fopAcM_checkStatus(param_1, 0x80000000);
return fopAcM_CheckStatus(param_1, 0x80000000);
}
};
+1 -1
View File
@@ -72,7 +72,7 @@ public:
}
u32 fopAcM_checkHawkCarryNow(fopAc_ac_c* actor) {
return fopAcM_checkStatus(actor, 0x80000000);
return fopAcM_CheckStatus(actor, 0x80000000);
}
void popup(f32 param_1, f32 param_2, cXyz* param_3) {
+64 -14
View File
@@ -11,17 +11,37 @@
* @details
*
*/
class daSCannon_c : public fopAc_ac_c {
class daSCannon_c : public fopAc_ac_c, public request_of_phase_process_class {
public:
struct demoTable_s {
/* 0x0 */ void (daSCannon_c::*(*demo_proc_table)[2])();
/* 0x4 */ char** cut_table;
/* 0x8 */ int cut_num;
};
enum daSCannon_exeMode {
MODE_WAIT,
MODE_ORDER_EVT,
MODE_ACTION_EVT,
MODE_END,
};
enum daSCannon_demoType {
DEMOTYPE_WARP_END,
DEMOTYPE_FIRE_FIRST,
DEMOTYPE_FIRE_TKS,
DEMOTYPE_FIRE_SECOND,
};
/* 80CC6B0C */ daSCannon_c();
/* 80CC6C10 */ ~daSCannon_c();
/* 80CC6D10 */ void create();
/* 80CC7204 */ void execute();
/* 80CC7228 */ void draw();
/* 80CC747C */ void Delete();
/* 80CC6C10 */ virtual ~daSCannon_c();
/* 80CC6D10 */ int create();
/* 80CC7204 */ int execute();
/* 80CC7228 */ int draw();
/* 80CC747C */ int Delete();
/* 80CC7508 */ void setModelMtx();
/* 80CC7578 */ void setPtlModelMtx();
/* 80CC7608 */ void createHeap();
/* 80CC7608 */ int createHeap();
/* 80CC7970 */ void middleExe();
/* 80CC7A10 */ void orderEvtInit();
/* 80CC7AB8 */ void exeModeWait();
@@ -53,15 +73,45 @@ public:
/* 80CC8DA0 */ void delEmtAll();
/* 80CC8DDC */ void setCannonRepair();
static void* const s_demoTable[12];
static u8 s_exeProc[48];
static u8 s_demoExeProc_WarpEnd[48];
static u8 s_demoExeProc_FireTks[72];
static u8 s_demoExeProc_FireFirst[24];
static u8 s_demoExeProc_FireSecond[96];
int getSw1() { return fopAcM_GetParamBit(this, 0, 8); }
int getSw2() { return fopAcM_GetParamBit(this, 8, 8); }
static const demoTable_s s_demoTable[];
static void (daSCannon_c::*s_exeProc[])();
static void (daSCannon_c::*s_demoExeProc_WarpEnd[][2])();
static void (daSCannon_c::*s_demoExeProc_FireTks[][2])();
static void (daSCannon_c::*s_demoExeProc_FireFirst[][2])();
static void (daSCannon_c::*s_demoExeProc_FireSecond[][2])();
private:
/* 0x568 */ u8 field_0x568[0x638 - 0x568];
/* 0x574 */ request_of_phase_process_class mZevPhase;
/* 0x57C */ request_of_phase_process_class mPtlPhase;
/* 0x584 */ mDoExt_bckAnm mBck;
/* 0x5A0 */ cBgS_PolyInfo mGroundPoly;
/* 0x5B0 */ Mtx mBgMtx;
/* 0x5E0 */ dBgW* mpBgW;
/* 0x5E4 */ J3DModel* mpModels[2];
/* 0x5EC */ J3DModel* mpPtlModel;
/* 0x5F0 */ mDoExt_btkAnm* mpCrashBtk;
/* 0x5F4 */ mDoExt_btkAnm* mpPtlBtk;
/* 0x5F8 */ f32 mGroundY;
/* 0x5FC */ u32 mShadowKey;
/* 0x600 */ int mTimer;
/* 0x604 */ int mStaffId;
/* 0x608 */ int mDemoFinishTimer;
/* 0x60C */ int mLayerNo;
/* 0x610 */ s16 mEvtIdx;
/* 0x612 */ u16 mHeadJointNo;
/* 0x614 */ u16 mCrashJointNo;
/* 0x616 */ u8 mMode;
/* 0x617 */ u8 mIsRepaired;
/* 0x618 */ u8 mDemoType;
/* 0x619 */ u8 field_0x619;
/* 0x61A */ u8 mIsPortal;
/* 0x61B */ u8 mDrawShadow;
/* 0x61C */ JPABaseEmitter* mpEmtApp[3];
/* 0x628 */ JPABaseEmitter* mpEmtSmk[3];
/* 0x634 */ JPABaseEmitter* mpEmtLine;
};
STATIC_ASSERT(sizeof(daSCannon_c) == 0x638);
+43 -10
View File
@@ -12,14 +12,23 @@
* @details
*
*/
class daSCannonCrs_c : public fopAc_ac_c {
class daSCannonCrs_c : public fopAc_ac_c, public request_of_phase_process_class {
public:
enum daSCannonCrs_exeMode {
MODE_WAIT,
MODE_PRE_WAIT,
MODE_ORDER_EVT,
MODE_TALK_EVT,
MODE_WARP_EVT,
MODE_END,
};
/* 80CC973C */ daSCannonCrs_c();
/* 80CC983C */ ~daSCannonCrs_c();
/* 80CC9910 */ void create();
/* 80CC9B10 */ void Delete();
/* 80CC9B80 */ void draw();
/* 80CC9C64 */ void execute();
/* 80CC983C */ virtual ~daSCannonCrs_c();
/* 80CC9910 */ int create();
/* 80CC9B10 */ int Delete();
/* 80CC9B80 */ int draw();
/* 80CC9C64 */ int execute();
/* 80CC9CA4 */ void middleExe(daMidna_c*);
/* 80CC9D60 */ void exeModeWait(daMidna_c*);
/* 80CC9F34 */ void exeModePreWait(daMidna_c*);
@@ -30,15 +39,39 @@ public:
/* 80CCA348 */ void demoExe();
/* 80CCA74C */ void init();
/* 80CCA848 */ void setModelMtx();
/* 80CCA8CC */ void createHeap();
/* 80CCAAC4 */ void chkInTalkRange();
/* 80CCA8CC */ int createHeap();
/* 80CCAAC4 */ bool chkInTalkRange();
/* 80CCAB24 */ void initEmtRt(u16, int, u16 const*, JPABaseEmitter**);
/* 80CCAC48 */ void exeEmtRt(u16, int, JPABaseEmitter**);
/* 80CCACD0 */ void callMidnaBeamEmt();
static u8 s_exeProc[72];
int getTalkRange() { return fopAcM_GetParamBit(this, 0, 8); }
int getWarpId() { return fopAcM_GetParamBit(this, 8, 8); }
u16 getMsgId() { return home.angle.x; }
static void (daSCannonCrs_c::*s_exeProc[])(daMidna_c*);
private:
/* 0x568 */ u8 field_0x568[0x674 - 0x568];
/* 0x574 */ cXyz mPortalWaitPos;
/* 0x580 */ dMsgFlow_c mMsgFlow;
/* 0x5CC */ mDoExt_bckAnm mBck;
/* 0x5E8 */ mDoExt_btkAnm mBtk;
/* 0x600 */ J3DModel* mpModel;
/* 0x604 */ dBgW* mpBgW;
/* 0x608 */ Mtx mBgMtx;
/* 0x638 */ f32 mTalkRangeSqDist;
/* 0x63C */ int mStaffId;
/* 0x640 */ int mWarpQuakeTimer;
/* 0x644 */ int mVoiceTimer;
/* 0x648 */ u16 mEffectJointNo;
/* 0x64A */ u16 mCenterJointNo;
/* 0x64C */ s16 mEvtIdx;
/* 0x64E */ u8 mMode;
/* 0x64F */ u8 field_0x64F[0x651 - 0x64F];
/* 0x651 */ u8 field_0x651;
/* 0x652 */ u8 field_0x652;
/* 0x654 */ JPABaseEmitter* mpDisapEmt[4];
/* 0x664 */ JPABaseEmitter* mpBeamEmt[4];
};
STATIC_ASSERT(sizeof(daSCannonCrs_c) == 0x674);
+31 -10
View File
@@ -11,15 +11,22 @@
* @details
*
*/
class daObjSCannonTen_c : public fopAc_ac_c {
class daObjSCannonTen_c : public fopAc_ac_c, public request_of_phase_process_class {
public:
enum daSCannonTen_exeMode {
MODE_WAIT,
MODE_ORDER_EVT,
MODE_ACTION_EVT,
MODE_END,
};
/* 80CCB364 */ daObjSCannonTen_c();
/* 80CCB43C */ ~daObjSCannonTen_c();
/* 80CCB4EC */ void createHeap();
/* 80CCB66C */ void create();
/* 80CCB9E0 */ void Delete();
/* 80CCBA58 */ void draw();
/* 80CCBB6C */ void execute();
/* 80CCB43C */ virtual ~daObjSCannonTen_c();
/* 80CCB4EC */ int createHeap();
/* 80CCB66C */ int create();
/* 80CCB9E0 */ int Delete();
/* 80CCBA58 */ int draw();
/* 80CCBB6C */ int execute();
/* 80CCBB90 */ void middleExe();
/* 80CCBC08 */ void exeModeWait();
/* 80CCBCB0 */ void exeModeOrderEvt();
@@ -48,11 +55,25 @@ public:
/* 80CCC8B8 */ void exeEmtLine();
/* 80CCC97C */ void delEmtAll();
static u8 s_exeProc[48];
static u8 s_demoExeProc[144];
static void (daObjSCannonTen_c::*s_exeProc[])();
static void (daObjSCannonTen_c::*s_demoExeProc[][2])();
private:
/* 0x568 */ u8 field_0x568[0x604 - 0x568];
/* 0x574 */ J3DModel* mpModel;
/* 0x578 */ mDoExt_bckAnm mBck;
/* 0x594 */ dBgW* mpBgW;
/* 0x598 */ cBgS_PolyInfo mGroundPoly;
/* 0x5A8 */ Mtx mBgMtx;
/* 0x5D8 */ f32 mGroundY;
/* 0x5DC */ u32 mShadowKey;
/* 0x5E0 */ int mTimer;
/* 0x5E4 */ int mStaffId;
/* 0x5E8 */ u8 field_0x5E8[0x5EC - 0x5E8];
/* 0x5EC */ s16 mEvtIdx;
/* 0x5EE */ u16 mHeadJointNo;
/* 0x5F0 */ u8 mMode;
/* 0x5F4 */ JPABaseEmitter* mpEmtSmk[3];
/* 0x600 */ JPABaseEmitter* mpEmtLine;
};
STATIC_ASSERT(sizeof(daObjSCannonTen_c) == 0x604);
+25 -5
View File
@@ -4,7 +4,7 @@
#include "SSystem/SComponent/c_angle.h"
#include "m_Do/m_Do_ext.h"
#include "f_pc/f_pc_base.h"
#include "JSystem/JHostIO/JORReflexible.h"
#include "m_Do/m_Do_hostIO.h"
class fopAc_ac_c;
@@ -46,7 +46,7 @@ private:
class dAttParam_c : public JORReflexible {
public:
#ifdef DEBUG
/* 0x04 */ u8 unk_0x4;
/* 0x04 */ s8 mHIOChildNo;
#endif
/* 0x00 */ u16 mFlags;
@@ -67,8 +67,8 @@ public:
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
#ifdef DEBUG
/* 0x44 */ int unk_0x44;
/* 0x48 */ int unk_0x48;
/* 0x44 */ s32 mDebugDispPosX;
/* 0x48 */ s32 mDebugDispPosY;
#endif
public:
@@ -76,6 +76,14 @@ public:
/* 80070038 */ dAttParam_c(s32);
#ifdef DEBUG
void connectHIO(char* i_name) {
mHIOChildNo = mDoHIO_CREATE_CHILD(i_name, this);
}
void releaseHIO() {
mDoHIO_DELETE_CHILD(mHIOChildNo);
}
virtual void genMessage(JORMContext*);
#endif
/* 80070110 */ virtual ~dAttParam_c();
@@ -90,7 +98,15 @@ public:
EFlag_MARGIN_DEBUG = (1 << 15),
};
bool CheckFlag(u16 flag) { return mFlags & flag; }
bool CheckFlag(u16 flag) { return flag & mFlags ? true : false; }
f32 FreeStick() {
#if DEBUG
return mSWModeDisable;
#else
return -0.9f;
#endif
}
/* 0x40 vtable */
}; // Size: 0x44
@@ -229,6 +245,10 @@ public:
/* 80182AD0 */ void keepLock(int timer) { mAttnBlockTimer = timer; }
/* 8014B010 */ static dist_entry& getDistTable(int i_no) { return dist_table[i_no]; }
#if DEBUG
void runDebugDisp0();
#endif
fopAc_ac_c* getCatghTarget() { return mCatghTarget.getCatghTarget(); }
fopAc_ac_c* getZHintTarget() { return mZHintTarget.getZHintTarget(); }
u8 getCatchChgItem() { return mCatghTarget.getChangeItem(); }
+5 -1
View File
@@ -879,9 +879,13 @@ public:
dSv_player_c& getPlayer() { return mPlayer; }
dSv_event_c& getEvent() { return mEvent; }
dSv_memory_c& getSave(int i_stageNo) { return mSave[i_stageNo]; }
dSv_MiniGame_c& getMiniGame() { return mMiniGame; }
dSv_memory_c& getSave(int i_stageNo) {
JUT_ASSERT(1412, 0 <= i_stageNo && i_stageNo < STAGE_MAX);
return mSave[i_stageNo];
}
void putSave(int i_stageNo, dSv_memory_c mem) {
JUT_ASSERT(1417, 0 <= i_stageNo && i_stageNo < dSv_save_c::STAGE_MAX);
mSave[i_stageNo] = mem;
+1
View File
@@ -1273,6 +1273,7 @@ void dStage_dt_c_roomLoader(void* i_data, dStage_dt_c* stageDt, int param_2);
dStage_KeepDoorInfo* dStage_GetKeepDoorInfo();
dStage_KeepDoorInfo* dStage_GetRoomKeepDoorInfo();
void dStage_dt_c_fieldMapLoader(void* i_data, dStage_dt_c* i_stage);
const char* dStage_getName(s16 procName, s8 subtype);
#if VERSION == VERSION_WII_USA_R0
void dStage_escapeRestart();