#ifndef D_S_PLAY #define D_S_PLAY #include "d/d_stage.h" #include "f_op/f_op_scene.h" #include "m_Do/m_Do_hostIO.h" class mDoDvdThd_toMainRam_c; class dScnPly_ply_c : public scene_class { public: s8 calcPauseTimer(); bool resetGame(); void offReset(); static bool isPause() { return pauseTimer != 0; } static void setPauseTimer(s8 time) { nextPauseTimer = time; } static void onDebugPause() {} static void offDebugPause() {} static s8 pauseTimer; static s8 nextPauseTimer; /* 0x1C4 */ request_of_phase_process_class mLoadPhs; /* 0x1CC */ mDoDvdThd_toMainRam_c* sceneCommand; }; class dScnPly_dark_HIO_c : public JORReflexible { public: dScnPly_dark_HIO_c(); virtual ~dScnPly_dark_HIO_c() {} void genMessage(JORMContext* ctx); public: /* 0x04 */ s8 mNo; /* 0x05 */ u8 field_0x05; /* 0x06 */ u8 field_0x06; /* 0x07 */ u8 field_0x07[0x08 - 0x07]; /* 0x08 */ dStage_darkStatus_c mDarkStatus; }; class dScnPly_reg_childHIO_c : public JORReflexible { public: dScnPly_reg_childHIO_c(); virtual ~dScnPly_reg_childHIO_c() {} void genMessage(JORMContext* ctx); public: /* 0x04 */ f32 mFloatRegs[30]; /* 0x7C */ s16 mShortRegs[10]; }; class dScnPly_env_otherHIO_c : public JORReflexible { public: dScnPly_env_otherHIO_c(); virtual ~dScnPly_env_otherHIO_c() {} void genMessage(JORMContext* ctx); public: /* 0x04 */ s8 mNo; /* 0x05 */ u8 field_0x05; /* 0x06 */ u8 field_0x06; /* 0x07 */ u8 field_0x07; /* 0x08 */ u8 field_0x08; /* 0x09 */ u8 field_0x09; /* 0x0A */ u8 field_0x0a; /* 0x0B */ u8 field_0x0b; /* 0x0C */ u8 field_0x0c; /* 0x0D */ u8 field_0x0d; /* 0x0E */ u8 field_0x0e; /* 0x0F */ u8 field_0x0f; /* 0x10 */ u8 field_0x10; /* 0x11 */ u8 field_0x11; /* 0x12 */ u8 field_0x12; /* 0x13 */ u8 field_0x13; /* 0x14 */ u8 field_0x14; /* 0x15 */ u8 field_0x15; /* 0x16 */ u8 field_0x16; /* 0x17 */ u8 field_0x17; /* 0x18 */ u16 field_0x18[20]; /* 0x40 */ s16 field_0x40; /* 0x44 */ f32 field_0x44; }; class dScnPly_env_debugHIO_c : public JORReflexible { public: dScnPly_env_debugHIO_c(); virtual ~dScnPly_env_debugHIO_c() {} void genMessage(JORMContext* ctx); public: /* 0x04 */ s8 mNo; /* 0x08 */ f32 field_0x08; /* 0x0C */ f32 field_0x0c; /* 0x10 */ f32 field_0x10; /* 0x14 */ f32 field_0x14; /* 0x18 */ f32 field_0x18; /* 0x1C */ f32 field_0x1c; /* 0x20 */ f32 field_0x20; /* 0x24 */ f32 field_0x24; /* 0x28 */ f32 field_0x28; /* 0x2C */ f32 field_0x2c; }; class dScnPly_msg_HIO_c : public JORReflexible { public: dScnPly_msg_HIO_c(); void dScnPly_msg_HIO_checkUpdate(u8); void dScnPly_msg_HIO_setUpdate(u8); void dScnPly_msg_HIO_numUpdate(s16, s16); void dScnPly_msg_HIO_padCheck(); void dScnPly_msg_HIO_messageProc(); virtual ~dScnPly_msg_HIO_c() {} void genMessage(JORMContext* ctx); public: /* 0x04 */ s8 mNo; /* 0x05 */ u8 mIsUpdate; /* 0x06 */ u8 field_0x06; /* 0x07 */ u8 field_0x07; /* 0x08 */ u8 field_0x08; /* 0x09 */ u8 field_0x09; /* 0x0A */ s16 mGroup; /* 0x0C */ s16 mID; /* 0x10 */ u32 field_0x10; }; class dScnPly_preLoad_HIO_c : public mDoHIO_entry_c { public: virtual ~dScnPly_preLoad_HIO_c() {} void genMessage(JORMContext* ctx); }; class dScnPly_env_HIO_c : public JORReflexible { public: virtual ~dScnPly_env_HIO_c() {} void genMessage(JORMContext* ctx); public: /* 0x04 */ s8 mNo; /* 0x08 */ dScnPly_env_otherHIO_c mOther; /* 0x50 */ dScnPly_env_debugHIO_c mEnvDebug; }; class dScnPly_reg_HIO_c { public: virtual ~dScnPly_reg_HIO_c() {} /* 0x4 */ s8 mNo; /* 0x8 */ dScnPly_reg_childHIO_c mChild[22]; }; extern dScnPly_dark_HIO_c g_darkHIO; extern dScnPly_reg_HIO_c g_regHIO; extern dScnPly_env_HIO_c g_envHIO; extern dScnPly_msg_HIO_c g_msgDHIO; // Based on Twilight Princess debug, each g_envHIO child here was likely named after a specific developer. // However, the developer name for each child isn't known here, so the below macro names are all unofficial. #define REG0_F(i) g_regHIO.mChild[0].mFloatRegs[i] #define REG0_S(i) g_regHIO.mChild[0].mShortRegs[i] #define REG1_F(i) g_regHIO.mChild[1].mFloatRegs[i] #define REG1_S(i) g_regHIO.mChild[1].mShortRegs[i] #define REG2_F(i) g_regHIO.mChild[2].mFloatRegs[i] #define REG2_S(i) g_regHIO.mChild[2].mShortRegs[i] #define REG3_F(i) g_regHIO.mChild[3].mFloatRegs[i] #define REG3_S(i) g_regHIO.mChild[3].mShortRegs[i] #define REG4_F(i) g_regHIO.mChild[4].mFloatRegs[i] #define REG4_S(i) g_regHIO.mChild[4].mShortRegs[i] #define REG5_F(i) g_regHIO.mChild[5].mFloatRegs[i] #define REG5_S(i) g_regHIO.mChild[5].mShortRegs[i] #define REG6_F(i) g_regHIO.mChild[6].mFloatRegs[i] #define REG6_S(i) g_regHIO.mChild[6].mShortRegs[i] #define REG7_F(i) g_regHIO.mChild[7].mFloatRegs[i] #define REG7_S(i) g_regHIO.mChild[7].mShortRegs[i] #define REG8_F(i) g_regHIO.mChild[8].mFloatRegs[i] #define REG8_S(i) g_regHIO.mChild[8].mShortRegs[i] #define REG9_F(i) g_regHIO.mChild[9].mFloatRegs[i] #define REG9_S(i) g_regHIO.mChild[9].mShortRegs[i] #define REG10_F(i) g_regHIO.mChild[10].mFloatRegs[i] #define REG10_S(i) g_regHIO.mChild[10].mShortRegs[i] #define REG11_F(i) g_regHIO.mChild[11].mFloatRegs[i] #define REG11_S(i) g_regHIO.mChild[11].mShortRegs[i] #define REG12_F(i) g_regHIO.mChild[12].mFloatRegs[i] #define REG12_S(i) g_regHIO.mChild[12].mShortRegs[i] #define REG13_F(i) g_regHIO.mChild[13].mFloatRegs[i] #define REG13_S(i) g_regHIO.mChild[13].mShortRegs[i] #define REG14_F(i) g_regHIO.mChild[14].mFloatRegs[i] #define REG14_S(i) g_regHIO.mChild[14].mShortRegs[i] #define REG15_F(i) g_regHIO.mChild[15].mFloatRegs[i] #define REG15_S(i) g_regHIO.mChild[15].mShortRegs[i] #define REG16_F(i) g_regHIO.mChild[16].mFloatRegs[i] #define REG16_S(i) g_regHIO.mChild[16].mShortRegs[i] #define REG17_F(i) g_regHIO.mChild[17].mFloatRegs[i] #define REG17_S(i) g_regHIO.mChild[17].mShortRegs[i] #define REG18_F(i) g_regHIO.mChild[18].mFloatRegs[i] #define REG18_S(i) g_regHIO.mChild[18].mShortRegs[i] #define REG19_F(i) g_regHIO.mChild[19].mFloatRegs[i] #define REG19_S(i) g_regHIO.mChild[19].mShortRegs[i] #define REG20_F(i) g_regHIO.mChild[20].mFloatRegs[i] #define REG20_S(i) g_regHIO.mChild[20].mShortRegs[i] #define REG21_F(i) g_regHIO.mChild[21].mFloatRegs[i] #define REG21_S(i) g_regHIO.mChild[21].mShortRegs[i] #endif /* D_S_PLAY */