GCN pal / jpn support, some debug work (#2375)

* d_save debug cleanup / d_s_menu debug

* gameinfo / kankyo struct debug fixes

* pal building ok

* jp building ok

* some tests with jp

* some more pal/jp tests
This commit is contained in:
TakaRikka
2025-04-06 21:08:25 +03:00
committed by GitHub
parent 4361019959
commit 54dd764096
3082 changed files with 262786 additions and 1577 deletions
+1
View File
@@ -36,6 +36,7 @@ struct JFWSystem {
static JUTConsole* getSystemConsole() { return systemConsole; }
static JKRExpHeap* getSystemHeap() { return systemHeap; }
static JUTResFont* getSystemFont() { return systemFont; }
static void setMaxStdHeap(s32 max) { CSetUpParam::maxStdHeaps = max; }
static void setSysHeapSize(u32 size) { CSetUpParam::sysHeapSize = size; }
+2
View File
@@ -78,4 +78,6 @@ public:
/* 0x6C */ const IsLeadByte_func* mIsLeadByte;
};
extern u8 const JUTResFONT_Ascfont_fix12[16736];
#endif /* JUTRESFONT_H */
+9
View File
@@ -15,10 +15,19 @@ public:
/* 0x0400 */ cCcD_Obj* mpObjTg[0x300];
/* 0x1000 */ cCcD_Obj* mpObjCo[0x100];
/* 0x1400 */ cCcD_Obj* mpObj[0x500];
#ifdef DEBUG
/* 0x2800 */ int m_debug_code;
#endif
/* 0x2800 */ u16 mObjAtCount;
/* 0x2802 */ u16 mObjTgCount;
/* 0x2804 */ u16 mObjCoCount;
/* 0x2806 */ u16 mObjCount;
#ifdef DEBUG
/* 0x280C */ u16 field_0x280c;
/* 0x280E */ u16 field_0x280e;
/* 0x2810 */ u16 field_0x2810;
/* 0x2812 */ u16 field_0x2812;
#endif
/* 0x2808 */ cCcD_DivideArea mDivideArea;
/* 0x2848 vtable */
+21 -3
View File
@@ -4,12 +4,12 @@
#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"
class fopAc_ac_c;
class dAttHint_c {
public:
dAttHint_c() {}
/* 800738B4 */ fpc_ProcID getPId(void*);
/* 800738CC */ fopAc_ac_c* convPId(fpc_ProcID);
/* 800738FC */ int request(fopAc_ac_c*, int);
@@ -26,7 +26,6 @@ private:
class dAttCatch_c {
public:
dAttCatch_c() {}
fopAc_ac_c* convPId(fpc_ProcID);
void init();
void proc();
@@ -44,8 +43,12 @@ private:
/* 0x14 */ u8 mChangeItem;
}; // Size: 0x18
class dAttParam_c {
class dAttParam_c : public JORReflexible {
public:
#ifdef DEBUG
/* 0x04 */ u8 unk_0x4;
#endif
/* 0x00 */ u16 mFlags;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ f32 field_0x8;
@@ -63,10 +66,18 @@ public:
/* 0x35 */ u8 mAttnCursorDisappearFrames;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
#ifdef DEBUG
/* 0x44 */ int unk_0x44;
/* 0x48 */ int unk_0x48;
#endif
public:
dAttParam_c() {}
/* 80070038 */ dAttParam_c(s32);
#ifdef DEBUG
virtual void genMessage(JORMContext*);
#endif
/* 80070110 */ virtual ~dAttParam_c();
enum EFlag {
@@ -299,8 +310,15 @@ public:
/* 0x49C */ dAttCatch_c mCatghTarget;
/* 0x4B4 */ dAttLook_c mLookTarget;
/* 0x4C4 */ int mAttnBlockTimer;
#ifdef DEBUG
/* 0x4C8 */ u8 field_0x4c8[0x4D0 - 0x4C8];
#endif
/* 0x4C8 */ dAttParam_c mAttParam;
#ifdef DEBUG
/* 0x51C */ u8 field_0x50c[0x520 - 0x51C];
#else
/* 0x50C */ u8 field_0x50c[0x514 - 0x50c];
#endif
/* 0x514 */ fpc_ProcID mEnemyActorID;
/* 0x518 */ f32 mEnemyDist;
}; // Size: 0x51C
+33
View File
@@ -2,6 +2,7 @@
#define D_BG_D_BG_S_H
#include "d/d_bg_w_base.h"
#include "JSystem/JHostIO/JORReflexible.h"
#include "global.h"
class dBgW;
@@ -62,6 +63,33 @@ class dBgS_Acch;
u8 dKy_pol_sound_get(cBgS_PolyInfo const* param_0);
class dBgS_HIO : public JORReflexible {
public:
#ifdef DEBUG
dBgS_HIO() {
field_0x6 = 0;
field_0x8 = 0;
field_0xc.x = field_0xc.y = field_0xc.z = 0.0f;
field_0x18.x = field_0x18.y = field_0x18.z = 0.0f;
field_0x24.x = field_0x24.y = field_0x24.z = 0.0f;
field_0x30 = -1;
}
virtual void genMessage(JORMContext*);
virtual ~dBgS_HIO();
/* 0x04 */ u8 field_0x4[0x6 - 0x4];
/* 0x06 */ u16 field_0x6;
/* 0x08 */ u16 field_0x8;
/* 0x0C */ cXyz field_0xc;
/* 0x18 */ cXyz field_0x18;
/* 0x24 */ cXyz field_0x24;
/* 0x30 */ int field_0x30;
#endif
};
class dBgS : public cBgS {
public:
dBgS() {}
@@ -111,6 +139,11 @@ public:
u32 GetMtrlSndId(const cBgS_PolyInfo& param_0) { return dKy_pol_sound_get(&param_0); }
void DebugDrawPoly(dBgW_Base *param_1) {}
fopAc_ac_c* GetActorPointer(cBgS_PolyInfo const& param_0) { return cBgS::GetActorPointer(param_0); }
#ifdef DEBUG
/* 0x1404 */ u8 field_0x1404[0x1408 - 0x1404];
/* 0x1408 */ dBgS_HIO m_hio;
#endif
}; // Size: 0x1404
bool dBgS_CheckBGroundPoly(cBgS_PolyInfo const&);
+3
View File
@@ -63,6 +63,9 @@ public:
// /* 0x0000 */ cCcS mCCcS;
/* 0x284C */ dCcMassS_Mng mMass_Mng;
#ifdef DEBUG
/* 0x2AD0 */ u8 field_0x2ad0;
#endif
}; // Size = 0x2AC4
STATIC_ASSERT(sizeof(dCcS) == 0x2AC4);
+629 -561
View File
File diff suppressed because it is too large Load Diff
+25 -1
View File
@@ -89,6 +89,26 @@ private:
/* 0x160 */ u8 mAlpha;
};
class dDlst_2DQuad_c : public dDlst_base_c {
public:
dDlst_2DQuad_c() {}
/* 80051CF0 */ virtual void draw();
void init(s16 posX, s16 posY, s16 width, s16 height, GXColor& color) {
mPosX = posX;
mPosY = posY;
mSizeX = width;
mSizeY = height;
mColor = color;
}
/* 0x4 */ s16 mPosX;
/* 0x6 */ s16 mPosY;
/* 0x8 */ s16 mSizeX;
/* 0xA */ s16 mSizeY;
/* 0xC */ GXColor mColor;
};
class dDlst_2DT2_c : public dDlst_base_c {
public:
/* 80052354 */ virtual void draw();
@@ -305,6 +325,10 @@ public:
/* 0x12 */ DB_LIST_2D_SCREEN,
/* 0x13 */ DB_LIST_MIDDLE,
/* 0x14 */ DB_LIST_3D_LAST,
#if VERSION > VERSION_GCN_JPN
DB_LIST_CURSOR,
#endif
DB_LIST_MAX,
};
void set2DOpa(dDlst_base_c* dlst) { set(mp2DOpaStart, mp2DOpaEnd, dlst); }
@@ -425,7 +449,7 @@ public:
static u8 mWipe;
private:
/* 0x00000 */ J3DDrawBuffer* mDrawBuffers[21];
/* 0x00000 */ J3DDrawBuffer* mDrawBuffers[DB_LIST_MAX];
/* 0x00054 */ dDlst_base_c* mpCopy2DDrawLists[4];
/* 0x00064 */ dDlst_base_c** mpCopy2DStart;
/* 0x00068 */ dDlst_base_c** mpCopy2DEnd;
+3
View File
@@ -173,6 +173,9 @@ public:
/* 0x128 */ u8 mCompulsory;
/* 0x129 */ bool mRoomInfoSet;
/* 0x12C */ int mRoomNo;
#ifdef DEBUG
/* 0x130 */ u8 field_0x130;
#endif
}; // Size = 0x130
int dEv_defaultSkipProc(void* param_0, int param_1);
+7 -1
View File
@@ -25,6 +25,12 @@ public:
#define EVT_SE_RIDDLE_A 1
#define EVT_SE_RIDDLE_B 2
#ifdef DEBUG
#define EVENT_LIST_NUM 12
#else
#define EVENT_LIST_NUM 11
#endif
class dEvent_manager_c {
public:
void* getSubstance(dEvDtData_c* p_data, int type);
@@ -91,7 +97,7 @@ public:
static s16 makeCompositId(s16 a, int b) { return a | (b << 8); }
private:
/* 0x0000 */ dEvDtBase_c mEventList[11];
/* 0x0000 */ dEvDtBase_c mEventList[EVENT_LIST_NUM];
/* 0x018C */ s32 mCameraPlay;
/* 0x0190 */ dEvent_exception_c mEventException;
/* 0x019C */ cXyz mGoal;
+9
View File
@@ -109,6 +109,11 @@ struct GB_MAPLE_COL_CHANGE {
/* 0x00 */ J3DLightObj light_obj;
}; // Size: 0x74
struct NAVYCHAN {
/* 0x0 */ u8 field_0x0[0x4 - 0x0];
/* 0x4 */ cXyz field_0x4;
};
struct LightStatus {
/* 0x00 */ Vec position;
/* 0x0C */ Vec field_0xc;
@@ -273,6 +278,10 @@ public:
/* 0x09B8 */ DUNGEON_LIGHT dungeonlight[8];
/* 0x0C18 */ BOSS_LIGHT field_0x0c18[8];
/* 0x0D58 */ BOSS_LIGHT field_0x0d58[6];
#ifdef DEBUG
/* 0x0E48 */ NAVYCHAN navy;
/* 0x0E58 */ u8 field_0xe58[0xE68 - 0xE58]; // part of NAVYCHAN?
#endif
/* 0x0E48 */ GB_WIND_INFLUENCE global_wind_influence;
/* 0x0E5C */ f32 custom_windpower;
/* 0x0E60 */ f32 unk_0xe60;
+5
View File
@@ -37,6 +37,11 @@ public:
/* 801F9E14 */ bool getBombFlag();
/* 801F9E1C */ bool getArrowFlag();
/* 801F9E24 */ bool getPachinkoFlag();
void update();
void setArrowFlag(u8 i_flag) { mArrowFlag = i_flag; }
void setPachinkoFlag(u8 i_flag) { mPachinkoFlag = i_flag; }
void setBombFlag(u8 i_flag) { mBombFlag = i_flag; }
/* 801F9EE0 */ virtual ~dMw_HIO_c() {}
+14
View File
@@ -179,6 +179,8 @@ public:
mCollectCursorPosY = y;
}
void setMapDrugFlag(u8 flag) { mMapDrugFlag = flag; }
void offTempBit(int i_bit) { mTempBits &= ~(1 << i_bit); }
void onTempBit(int i_bit) { mTempBits |= (1 << i_bit); }
bool isTempBit(int bit) { return mTempBits & (1 << bit); }
void offSub2DStatus(int bit) { mSub2DStatus &= ~(1 << bit); }
void onSub2DStatus(int bit) { mSub2DStatus |= 1 << bit; }
@@ -799,6 +801,18 @@ inline void dMeter2Info_setHorseLifeCount(s16 i_count) {
g_meter2_info.setHorseLifeCount(i_count);
}
inline void dMeter2Info_offTempBit(int i_bit) {
g_meter2_info.offTempBit(i_bit);
}
inline void dMeter2Info_onTempBit(int i_bit) {
g_meter2_info.onTempBit(i_bit);
}
inline bool dMeter2Info_isNextStage(const char*, s16, s16, s16) {
return false;
}
const char* dMeter2Info_getPlusTextureName();
const char* dMeter2Info_getNumberTextureName(int pIndex);
int dMeter2Info_recieveLetter();
+8 -1
View File
@@ -2,6 +2,7 @@
#define D_METER_D_METER_HIO_H
#include "JSystem/JUtility/TColor.h"
#include "JSystem/JHostIO/JORReflexible.h"
#include "SSystem/SComponent/c_sxyz.h"
#include "SSystem/SComponent/c_xyz.h"
#include "global.h"
@@ -1085,7 +1086,7 @@ public:
/* 0x179 */ bool mIconDisplay[22];
}; // Size: 0x190
class dMeter_fmapHIO_c {
class dMeter_fmapHIO_c : public JORReflexible {
public:
enum {
/* 0x0 */ REGION_ORDONA,
@@ -1130,6 +1131,12 @@ public:
}; // Size: 0x28
/* 802006C8 */ dMeter_fmapHIO_c();
#ifdef DEBUG
void update();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
#endif
/* 80200BCC */ virtual ~dMeter_fmapHIO_c();
/* 0x004 */ s8 field_0x4;
+3
View File
@@ -52,6 +52,9 @@ private:
/* 0x18 */ JKRHeap* heap;
/* 0x1C */ JKRSolidHeap* mDataHeap;
/* 0x20 */ void** mRes;
#ifdef DEBUG
/* 0x24 */ void* unk_0x24;
#endif
}; // Size: 0x24
STATIC_ASSERT(sizeof(dRes_info_c) == 0x24);
+85
View File
@@ -1,5 +1,90 @@
#ifndef D_S_D_S_MENU_H
#define D_S_D_S_MENU_H
#include "JSystem/JUtility/JUTResFont.h"
#include "f_op/f_op_scene_mng.h"
class mDoDvdThd_toMainRam_c;
#ifdef DEBUG
class myFontClass : public JUTResFont {
public:
myFontClass(const ResFONT* i_font, JKRHeap* i_heap)
: JUTResFont(i_font, i_heap),
field_0x70((ResFONT*)JUTResFONT_Ascfont_fix12, i_heap)
{}
virtual ~myFontClass();
virtual f32 drawChar_scale(f32 param_0, f32 param_1, f32 param_2, f32 param_3, int param_4, bool param_5);
/* 0x70 */ JUTResFont field_0x70;
};
struct menu_category_data_class {
u8 name[68];
};
struct menu_category_class {
/* 0x0 */ u8 num;
/* 0x4 */ menu_category_data_class* data;
};
struct menu_data_class {
/* 0x00 */ char env_data[65];
/* 0x41 */ char stage_name[8];
/* 0x49 */ s8 room_no;
/* 0x4A */ u8 point;
/* 0x4B */ s8 layer;
};
struct menu_stage_class {
/* 0x00 */ u8 field_0x00[0x41 - 0x00];
/* 0x41 */ u8 field_0x41;
/* 0x42 */ u8 field_0x42;
/* 0x43 */ u8 field_0x43;
/* 0x44 */ menu_data_class* data;
};
struct menu_info_class {
/* 0x0 */ u8 num;
/* 0x4 */ menu_stage_class* stage_data;
};
class dScnMenu_c : public scene_class {
public:
static bool isAutoSelect() { return m_autoSelect; }
static char cursolStageName[8];
static int cursolRoomNo;
static int cursolLayer;
static int cursolPoint;
static u8 m_error_flags;
static bool m_autoSelect;
static int m_autoCursolID;
static int m_autoGroupPoint;
/* 0x1C8 */ request_of_phase_process_class phase;
/* 0x1D0 */ mDoDvdThd_toMainRam_c* command;
/* 0x1D4 */ mDoDvdThd_toMainRam_c* fontCommand;
/* 0x1D8 */ menu_info_class* info;
/* 0x1DC */ menu_category_class* category_info;
/* 0x1E0 */ ResFONT* fontRes;
/* 0x1E4 */ myFontClass* font;
/* 0x1E8 */ u8 select_point;
/* 0x1E9 */ u8 cursor_move_timer;
/* 0x1EA */ u8 group_move_timer;
/* 0x1EB */ u8 category_move_timer;
/* 0x1EC */ u8 week_move_timer;
/* 0x1ED */ u8 current_category;
/* 0x1EE */ u8 field_0x1ee;
};
extern int g_playerKind;
extern int g_debugHpMode;
extern int g_horsePosInit;
#else
class dScnMenu_c {};
#endif
#endif /* D_S_D_S_MENU_H */
+21
View File
@@ -41,6 +41,23 @@ public:
/* 0x14 */ dScnPly_env_debugHIO_c mDebug;
};
class dScnPly_preset_HIO_c : public JORReflexible {
public:
dScnPly_preset_HIO_c();
void exePreset();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual ~dScnPly_preset_HIO_c() {}
/* 0x0004 */ u8 field_0x4;
/* 0x0005 */ u8 field_0x5;
/* 0x0006 */ u8 mPresetData[10000];
/* 0x2716 */ u8 field_0x2716;
/* 0x2717 */ u8 field_0x2717;
/* 0x2718 */ char mFilename[100];
};
class dScnPly_c : public scene_class {
public:
/* 80259400 */ s8 calcPauseTimer();
@@ -62,6 +79,10 @@ public:
extern dScnPly_env_HIO_c g_envHIO;
extern dScnPly_reg_HIO_c g_regHIO;
#ifdef DEBUG
extern dScnPly_preset_HIO_c g_presetHIO;
#endif
/**
* === Register Usage ===
* Short Reg(00-09) ... -32768 - +32768
+89 -12
View File
@@ -6,6 +6,8 @@
#include <dolphin/os.h>
#include "global.h"
#include "f_pc/f_pc_name.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JHostIO/JORReflexible.h"
#define DEFAULT_SELECT_ITEM_INDEX 0
#define MAX_SELECT_ITEM 4
@@ -18,7 +20,6 @@
#define MAX_INSECT_NUM 24
#define MAX_VISIBLE_HEARTPIECES 4
#define MAX_POH_NUM 100
#define BOTTLE_MAX 4
#define TBOX_MAX 64
#define DSV_MEMBIT_ENUM_MAX 8
#define ITEM_MAX_DAN 128
@@ -35,6 +36,9 @@
#define GIANT_WALLET_MAX 1000
#define MAX_FINDABLE_FISHES 6
#define ITEM_XY_MAX_DUMMY 8
#define ITEM_BIT_MAX 0x100
enum ButtonIndexes {
/* 0 */ A_BUTTON,
/* 1 */ B_BUTTON,
@@ -133,6 +137,8 @@ public:
void setMixItemIndex(int i_no, u8 i_slotNo);
u8 getMixItemIndex(int i_no) const;
u16 getRupeeMax() const;
void onMagicFlag(u8 i_magic);
void offMagicFlag(u8 i_magic);
int isMagicFlag(u8 i_magic) const;
u16 getMaxLife() const { return mMaxLife; }
@@ -181,8 +187,10 @@ class dSv_player_status_b_c {
public:
void init();
void onDarkClearLV(int i_no);
void offDarkClearLV(int i_no);
BOOL isDarkClearLV(int i_no) const;
void onTransformLV(int i_no);
void offTransformLV(int i_no);
BOOL isTransformLV(int i_no) const;
void setDateIpl(s64 i_time) { mDateIpl = i_time; }
@@ -260,7 +268,7 @@ private:
/* 0x00 */ cXyz mPos;
/* 0x0C */ s16 mAngleY;
/* 0x0E */ char mName[8];
/* 0x16 */ u8 mLastSpawnId;
/* 0x16 */ s8 mLastSpawnId;
/* 0x17 */ u8 mRegionNo;
/* 0x18 */ bool mFieldDataExistFlag;
/* 0x19 */ u8 mRegion;
@@ -320,6 +328,7 @@ public:
void setBaitItem(u8 i_itemNo);
static const int BOMB_BAG_MAX = 3;
static const int BOTTLE_MAX = 4;
private:
/* 0x00 */ u8 mItems[24];
@@ -376,10 +385,13 @@ class dSv_player_collect_c {
public:
void init();
void setCollect(int i_item_type, u8 i_item);
void offCollect(int i_item_type, u8 i_item);
BOOL isCollect(int i_item_type, u8 i_item) const;
void onCollectCrystal(u8 i_item);
void offCollectCrystal(u8 i_item);
BOOL isCollectCrystal(u8 i_item) const;
void onCollectMirror(u8 i_item);
void offCollectMirror(u8 i_item);
BOOL isCollectMirror(u8 i_item) const;
u8 getPohNum() { return mPohNum; }
@@ -409,6 +421,7 @@ public:
void setLightDropNum(u8 i_nowLevel, u8 i_dropNum);
u8 getLightDropNum(u8 i_nowLevel) const;
void onLightDropGetFlag(u8 i_nowLevel);
void offLightDropGetFlag(u8 i_nowLevel);
BOOL isLightDropGetFlag(u8 i_nowLevel) const;
private:
@@ -455,6 +468,7 @@ public:
void setHorseName(const char* i_name) { strcpy((char*)mHorseName, i_name); }
void setTotalTime(s64 i_time) { mTotalTime = i_time; }
s64 getTotalTime() const { return mTotalTime; }
u8 getClearCount() const { return mClearCount; }
void addDeathCount() {
if (mDeathCount < 0xFFFF) {
@@ -463,8 +477,7 @@ public:
}
private:
/* 0x00 */ u32 unk0;
/* 0x04 */ u32 unk4;
/* 0x00 */ u64 unk0;
/* 0x08 */ s64 mTotalTime;
/* 0x10 */ u16 unk16;
/* 0x12 */ u16 mDeathCount;
@@ -484,6 +497,7 @@ public:
void setSound(u8 i_mode);
u8 getVibration();
void setVibration(u8 i_status);
u8 getPalLanguage() const;
u8 getAttentionType() { return mAttentionType; }
void setAttentionType(u8 i_mAttentionType) { mAttentionType = i_mAttentionType; }
@@ -498,12 +512,20 @@ public:
bool getPointer() { return mPointer; }
void setPointer(bool i_mPointer) { mPointer = i_mPointer; }
enum dSv_config_language {
LANGAUGE_ENGLISH,
LANGAUGE_GERMAN,
LANGAUGE_FRENCH,
LANGAUGE_SPANISH,
LANGAUGE_ITALIAN,
};
private:
/* 0x0 */ u8 unk0;
/* 0x1 */ u8 mSoundMode;
/* 0x2 */ u8 mAttentionType; // Lock-On Type; 0 : hold, 1 : switch
/* 0x3 */ u8 mVibration; // Rumble status
/* 0x4 */ u8 unk4;
/* 0x4 */ u8 mLanguage;
/* 0x5 */ u8 unk5;
/* 0x6 */ u16 mCalibrateDist; // Wii pointer horizontal calibration. Default is 0x015E
/* 0x8 */ u8 mCalValue; // Wii pointer vertical calibration. Default is 0x00
@@ -558,6 +580,17 @@ private:
class dSv_memBit_c {
public:
class WarpItemData_c {
public:
/* 0x04F94 */ char mWarpItemStage[8];
/* 0x04F9C */ cXyz mWarpItemPos;
/* 0x04FA8 */ s16 mWarpItemAngle;
/* 0x04FAA */ s8 mWarpItemRoom;
/* 0x04FAB */ u8 field_0x4fab; // related to setWarpItemData
/* 0x04FAC */ u8 field_0x4fac; // related to setWarpItemData
/* 0x04FAD */ u8 field_0x4fad[3];
};
enum {
/* 0x0 */ MAP,
/* 0x1 */ COMPASS,
@@ -578,8 +611,10 @@ public:
BOOL isSwitch(int i_no) const;
BOOL revSwitch(int i_no);
void onItem(int i_no);
void offItem(int i_no);
BOOL isItem(int i_no) const;
void onDungeonItem(int i_no);
void offDungeonItem(int i_no);
s32 isDungeonItem(int i_no) const;
u8 getKeyNum() { return mKeyNum; }
@@ -633,8 +668,7 @@ public:
u32 getBalloonScore() const { return mBalloonScore; }
private:
/* 0x00 */ u8 unk0;
/* 0x01 */ u8 unk1[3];
/* 0x00 */ u8 unk0[1][4];
/* 0x04 */ u32 mStarTime;
/* 0x08 */ u32 mBalloonScore;
/* 0x0C */ u32 mRaceGameTime;
@@ -677,6 +711,7 @@ public:
BOOL isSwitch(int i_no) const;
BOOL revSwitch(int i_no);
void onItem(int i_no);
void offItem(int i_no);
BOOL isItem(int i_no) const;
void reset() { mStageNo = -1; }
@@ -704,8 +739,10 @@ public:
BOOL isOneSwitch(int i_no) const;
BOOL revOneSwitch(int i_no);
void onItem(int i_no);
void offItem(int i_no);
BOOL isItem(int i_no) const;
void onOneItem(int i_no);
void offOneItem(int i_no);
BOOL isOneItem(int i_no) const;
private:
@@ -723,7 +760,7 @@ public:
void off(int i_id);
BOOL is(int i_id) const;
static const int ACTOR_MAX = 0xFFFF;
static const int ACTOR_MAX = 0x80;
private:
/* 0x00 */ u32 mActorFlags[4];
@@ -739,7 +776,7 @@ public:
dSv_zoneActor_c& getActor() { return mActor; }
const dSv_zoneActor_c& getActor() const { return mActor; }
s8& getRoomNo() { return mRoomNo; }
int getRoomNo() const { return mRoomNo; }
void reset() { mRoomNo = -1; }
private:
@@ -836,7 +873,11 @@ public:
dSv_event_c& getEvent() { return mEvent; }
dSv_memory_c& getSave(int i_stageNo) { return mSave[i_stageNo]; }
dSv_MiniGame_c& getMiniGame() { return mMiniGame; }
void putSave(int i_stageNo, dSv_memory_c mem) { mSave[i_stageNo] = mem; }
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;
}
static const int STAGE_MAX = 32;
static const int STAGE2_MAX = 64;
@@ -850,6 +891,28 @@ public:
/* 0x940 */ dSv_MiniGame_c mMiniGame;
}; // Size: 0x958
class flagFile_c : public JORReflexible {
public:
enum Flag_e {
FLAG_SCENE_e = 0x1,
FLAG_SAVE_e = 0x2,
FLAG_MEM_e = 0x4,
FLAG_DAN_e = 0x8,
FLAG_ALL_e = 0xF,
};
flagFile_c();
~flagFile_c();
BOOL check_flag(u16);
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
/* 0x4 */ u8 unk_0x4[0x6 - 0x4];
/* 0x6 */ u16 m_flags;
/* 0x8 */ s8 m_no;
};
class dSv_info_c {
public:
void init();
@@ -895,6 +958,10 @@ public:
u8 getNewFile() const { return mNewFile; }
void setNewFile(u8 file) { mNewFile = file; }
void setSavedata(dSv_save_c& i_save) { mSavedata = i_save; }
void setMemory(dSv_memory_c& i_memory) { mMemory = i_memory; }
void setDan(dSv_danBit_c& i_dan) { mDan = i_dan; }
static const int MEMORY_SWITCH = 0x80;
static const int DAN_SWITCH = 0x40;
static const int ZONE_SWITCH = 0x20;
@@ -907,7 +974,11 @@ public:
static const int ZONE_MAX = 0x20;
private:
#if VERSION == VERSION_SHIELD_DEBUG
/* 0x000 */ u8 unk_0x0;
/* 0x001 */ u8 unk_0x1;
/* 0x000 */ u8 unk_0x2[0x48 - 0x2];
#endif
/* 0x000 */ dSv_save_c mSavedata;
/* 0x958 */ dSv_memory_c mMemory;
/* 0x978 */ dSv_danBit_c mDan;
@@ -922,6 +993,9 @@ private:
/* 0xF1B */ u8 field_0xf1b[13];
/* 0xF28 */ s64 mStartTime;
/* 0xF30 */ s64 mSaveTotalTime;
#if VERSION == VERSION_SHIELD_DEBUG
/* 0xF80 */ flagFile_c mFlagFile;
#endif
}; // Size: 0xF38
class dSv_event_flag_c {
@@ -930,6 +1004,9 @@ public:
#include "d/d_save_bit_labels.inc"
};
#if VERSION > VERSION_GCN_JPN
const
#endif
static u16 saveBitLabels[822];
};
@@ -938,7 +1015,7 @@ public:
enum {
#include "d/d_save_temp_bit_labels.inc"
};
static u16 const tempBitLabels[185];
};
+24
View File
@@ -2,6 +2,7 @@
#define D_D_VIBRATION_H
#include "SSystem/SComponent/c_xyz.h"
#include "JSystem/JHostIO/JORReflexible.h"
struct vib_pattern {
/* 0x0 */ u16 rounds;
@@ -42,6 +43,25 @@ enum VIBMODE_QUAKE {
VIBMODE_Q_MAX
};
class dVibTest_c : public JORReflexible {
public:
dVibTest_c();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual ~dVibTest_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x06 */ u16 m_pattern;
/* 0x08 */ u16 m_pattern2;
/* 0x0A */ u16 field_0xa;
/* 0x0C */ s16 m_randombit;
/* 0x0E */ s16 m_length;
/* 0x10 */ int field_0x10;
/* 0x14 */ int m_vibswitch;
/* 0x18 */ u16 m_displayDbg;
};
class dVibration_c {
public:
enum {
@@ -68,6 +88,10 @@ public:
static const vib_pattern CQ_patt[VIBMODE_Q_MAX];
private:
#ifdef DEBUG
/* 0x00 */ dVibTest_c mVibTest;
#endif
class {
public:
class {
+8
View File
@@ -42,6 +42,14 @@ public:
extern fapGm_HIO_c g_HIO;
inline void fapGmHIO_offMenu() {
g_HIO.mDisplayPrint &= (u8)~2;
}
inline void fapGmHIO_onMenu() {
g_HIO.mDisplayPrint |= (u8)2;
}
inline BOOL fapGmHIO_isMenu() {
return g_HIO.mDisplayPrint & 2;
}

Some files were not shown because too many files have changed in this diff Show More