From d933770d1617e76c54b487c9facbfa4fe53760e6 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Mon, 27 Dec 2021 05:15:35 -0800 Subject: [PATCH] d_meter_map / some d_a_alink --- include/JSystem/JAudio2/JAISound.h | 2 +- include/Z2AudioLib/Z2AudioMgr.h | 4 + include/d/a/d_a_alink.h | 115 +--- include/d/a/d_a_horse_static.h | 24 +- include/d/a/d_a_player.h | 17 +- include/d/bg/d_bg_s.h | 4 + include/d/com/d_com_inf_game.h | 20 +- include/d/d_drawlist.h | 8 +- include/d/d_stage.h | 12 +- include/d/event/d_event.h | 1 + include/d/map/d_map_path.h | 78 +++ include/d/map/d_map_path_dmap.h | 136 +++++ include/d/menu/d_menu_window.h | 3 + include/d/meter/d_meter2_info.h | 48 +- include/d/meter/d_meter_map.h | 174 +++++- include/d/msg/d_msg_object.h | 156 ++++++ include/d/save/d_save.h | 1 + include/f_op/f_op_actor.h | 2 + include/m_Do/m_Do_mtx.h | 1 + include/rel/d/a/d_a_horse/d_a_horse.h | 214 ++++++++ include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h | 47 ++ libs/Z2AudioLib/Z2SceneMgr.cpp | 7 +- libs/Z2AudioLib/Z2SoundHandles.cpp | 2 +- rel/d/a/d_a_horse/d_a_horse.cpp | 477 ++--------------- rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp | 320 ++--------- src/d/a/d_a_alink.cpp | 237 +++++--- src/d/a/d_a_horse_static.cpp | 47 +- src/d/com/d_com_inf_game.cpp | 4 - src/d/d_stage.cpp | 15 - src/d/map/d_map_path.cpp | 87 --- src/d/map/d_map_path_dmap.cpp | 169 +----- src/d/menu/d_menu_window.cpp | 4 +- src/d/meter/d_meter2.cpp | 7 - src/d/meter/d_meter2_info.cpp | 1 + src/d/meter/d_meter_HIO.cpp | 22 + src/d/meter/d_meter_map.cpp | 745 +++++++++++++++++++------- src/d/msg/d_msg_object.cpp | 239 +-------- src/m_Do/m_Do_mtx.cpp | 2 +- 38 files changed, 1748 insertions(+), 1704 deletions(-) diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index e94ea2cf13..61bac44a42 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -13,7 +13,7 @@ public: operator u32() const { return this->mId; } void operator=(JAISoundID const&); - JAISoundID(u32 pId); + JAISoundID(u32 pId) { mId = pId; }; JAISoundID(JAISoundID const& other); diff --git a/include/Z2AudioLib/Z2AudioMgr.h b/include/Z2AudioLib/Z2AudioMgr.h index 99796c8e01..11e9446f36 100644 --- a/include/Z2AudioLib/Z2AudioMgr.h +++ b/include/Z2AudioLib/Z2AudioMgr.h @@ -57,4 +57,8 @@ public: STATIC_ASSERT(sizeof(Z2AudioMgr) == 0x138C); +inline Z2AudioMgr* Z2GetAudioMgr() { + return Z2AudioMgr::getInterface(); +} + #endif /* Z2AUDIOMGR_H */ diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index 67d3789c63..0c941d3804 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -452,7 +452,7 @@ public: /* 800A1F90 */ void setNeckAngle(); /* 800A2198 */ bool commonLineCheck(cXyz*, cXyz*); /* 800A21E0 */ static s16 getMoveBGActorName(cBgS_PolyInfo&, int); - /* 800A2280 */ void checkGoronRide(); + /* 800A2280 */ fopAc_ac_c* checkGoronRide(); /* 800A22E8 */ void setMoveSlantAngle(); /* 800A2710 */ void setArmMatrix(); /* 800A29DC */ void setFootMatrix(); @@ -462,7 +462,7 @@ public: /* 800A39B8 */ void handBgCheck(); /* 800A3C8C */ JKRHeap* setItemHeap(); /* 800A3CE4 */ void setIdxMask(u16*, u16*); - /* 800A3D0C */ void getAnimeResource(daPy_anmHeap_c*, u16, u32); + /* 800A3D0C */ void* getAnimeResource(daPy_anmHeap_c*, u16, u32); /* 800A3D7C */ J3DModel* initModel(J3DModelData*, u32, u32); /* 800A3E30 */ void initModel(u16, u32); /* 800A3E98 */ void initModelEnv(u16, u32); @@ -653,7 +653,7 @@ public: /* 800B9580 */ void swordUnequip(); /* 800B9640 */ void itemEquip(u16); /* 800B96A4 */ void itemUnequip(u16, f32); - /* 800B97EC */ void checkFastUnequip(); + /* 800B97EC */ bool checkFastUnequip(); /* 800B983C */ void allUnequip(int); /* 800B994C */ BOOL checkItemChangeFromButton(); /* 800B9D2C */ BOOL checkNextActionFromButton(); @@ -2318,7 +2318,7 @@ public: bool checkFisingRodLure() const { return mEquipItem == 0x105; } bool doTrigger() const { return mItemTrigger & 0x10; } u32 getStartMode() { return (fopAcM_GetParam(this) >> 0xC) & 0x1F; } - bool checkInputOnR() const { return field_0x33ac <= 0.05f; } + bool checkInputOnR() const { return field_0x33ac > 0.05f; } static int getSightBti() { return 0x5B; } bool checkBoomerangChargeEndWait() const { return mEquipItem != 0x102 && checkBoomerangAnime(); @@ -2331,6 +2331,7 @@ public: field_0x2fa3 = 0; field_0x2844.clearData(); } + s32 checkPlayerDemoMode() const { return mDemo.getDemoType(); } BOOL i_checkReinRide() const { return mRideStatus == 1 || mRideStatus == 2; } @@ -4356,112 +4357,6 @@ public: static daAlinkHIO_hookshot_c1 const m; }; -class daHorseRein_c { -private: - /* 0x00 */ cXyz* field_0x0[2]; - /* 0x08 */ int field_0x8[2]; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ f32 field_0x14; - /* 0x18 */ f32 field_0x18; - /* 0x1C */ cXyz field_0x1c; -}; // Size: 0x28 - -class daHorseFootData_c { -private: - /* 0x0 */ u8 field_0x0[0xE4]; -}; // Size: 0xE4 - -class daHorse_c : public fopAc_ac_c { -public: - enum daHorse_ERFLG0 { - /* 0x010 */ MOVE_ACCEPT = 0x10, - /* 0x080 */ RIDE_RUN_FLG = 0x80, - /* 0x100 */ CUT_TURN_CANCEL = 0x100, - }; - - enum daHorse_RFLG0 { - /* 0x02 */ ENEMY_SEARCH = 2, - /* 0x08 */ LASH_DASH_START = 8, - /* 0x10 */ TURN_STAND = 0x10, - /* 0x40 */ TURN_STAND_CAMERA = 0x40, - }; - - enum daHorse_FLG0 { - /* 0x00000020 */ RODEO_LEFT = 0x20, - /* 0x00000040 */ RIDE_START_FLG = 0x40, - /* 0x00010000 */ PLAYER_BACK_RIDE_LASH = 0x10000, - /* 0x20000000 */ TURN_CANCEL_KEEP = 0x20000000, - /* 0x80000000 */ RODEO_MODE = 0x80000000 - }; - - fopAc_ac_c* getZeldaActor(); - - bool checkNoBombProc() const { return field_0x16b4 == 0 || field_0x16b4 == 1; } - bool checkResetStateFlg0(daHorse_RFLG0 flag) { return mResetStateFlg0 & flag; } - bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) { return mEndResetStateFlg0 & flag; } - bool checkStateFlg0(daHorse_FLG0 flag) { return mStateFlg0 & flag; } - -private: - /* 0x0568 */ u8 field_0x568[8]; - /* 0x0570 */ J3DModel* field_0x570; - /* 0x0574 */ void* field_0x574; - /* 0x0578 */ J3DFrameCtrl field_0x578; - /* 0x058C */ int field_0x58c; - /* 0x0590 */ u8 field_0x590[4]; - /* 0x0594 */ mDoExt_AnmRatioPack field_0x594[3]; - /* 0x05AC */ void* field_0x5ac; - /* 0x05B0 */ daPy_frameCtrl_c field_0x5b0[3]; - /* 0x05F8 */ u8 field_0x5f8[4]; - /* 0x05FC */ dBgS_AcchCir field_0x5fc[3]; - /* 0x06BC */ dBgS_Acch field_0x6bc; - /* 0x0894 */ dCcD_Stts field_0x894; - /* 0x08D0 */ dBgS_HorseLinChk field_0x8d0; - /* 0x0940 */ dCcD_Cyl field_0x940[3]; - /* 0x0CF4 */ dCcD_Cyl field_0xcf4; - /* 0x0E30 */ dCcD_Cyl field_0xe30; - /* 0x0F6C */ dCcD_Sph field_0xf6c; - /* 0x10A4 */ Z2CreatureRide field_0x10a4; - /* 0x1140 */ u8 field_0x1140[0x10]; - /* 0x1150 */ daHorseRein_c field_0x1150[3]; - /* 0x11C8 */ u8 field_0x11c8[0x40]; - /* 0x1208 */ dMsgFlow_c field_0x1208; - /* 0x1254 */ daPy_actorKeep_c mZeldaActorKeep; - /* 0x125C */ u8 field_0x125c[0xC8]; - /* 0x1324 */ daHorseFootData_c mFootData[4]; - /* 0x16B4 */ u8 field_0x16b4; - /* 0x16B5 */ u8 field_0x16b5[3]; - /* 0x16B8 */ u8 field_0x16b8; - /* 0x16B9 */ u8 field_0x16b9[2]; - /* 0x16BB */ u8 mRodeoPointCnt; - /* 0x16BC */ u8 field_0x16bc[0x36]; - /* 0x16F2 */ s16 mAimNeckAngleY; - /* 0x16F4 */ u8 field_0x16f4[0xA]; - /* 0x16FC */ s16 mDemoMoveAngle; - /* 0x16FE */ u8 field_0x16fe[4]; - /* 0x1702 */ s16 field_0x1702; - /* 0x1704 */ u8 field_0x1704[2]; - /* 0x1706 */ s16 mCowHitAngle; - /* 0x1708 */ s16 mCowHit; - /* 0x170A */ u8 field_0x170a[0x1E]; - /* 0x1728 */ int field_0x1728; - /* 0x172C */ u8 field_0x172c[0x14]; - /* 0x1740 */ u32 field_0x1740; - /* 0x1744 */ u32 mStateFlg0; - /* 0x1748 */ u32 mResetStateFlg0; - /* 0x174C */ u32 mEndResetStateFlg0; - /* 0x1750 */ f32 mMorfFrame; - /* 0x1754 */ u8 field_0x1754[0x14]; - /* 0x1768 */ f32 field_0x1768; - /* 0x176C */ f32 field_0x176c; - /* 0x1770 */ f32 field_0x1770; - /* 0x1774 */ u8 field_0x1774[0x14]; - /* 0x1788 */ f32 mDemoStickR; - /* 0x178C */ f32 mNormalMaxSpeedF; - /* 0x1790 */ f32 mLashMaxSpeedF; - /* 0x1794 */ u8 field_0x1794[0x30]; - /* 0x17C4 */ cXyz mDemoPos0; -}; - class mDoExt_morf_c; class daMidna_c : public fopAc_ac_c { diff --git a/include/d/a/d_a_horse_static.h b/include/d/a/d_a_horse_static.h index e38dc4bb05..058dae7404 100644 --- a/include/d/a/d_a_horse_static.h +++ b/include/d/a/d_a_horse_static.h @@ -1,31 +1,9 @@ #ifndef D_A_D_A_HORSE_STATIC_H #define D_A_D_A_HORSE_STATIC_H -#include "Z2AudioLib/Z2Creature.h" +#include "rel/d/a/e/d_a_e_wb/d_a_e_wb.h" #include "dolphin/types.h" -class e_wb_class { -public: - BOOL checkWait(void); - void setPlayerRideNow(void); - void setPlayerRide(void); - void getOff(void); - BOOL checkDownDamage(void); - u8 checkNormalRideMode(void) const; - void setRunRideMode(void); - -private: - u8 unk0[0x5b4]; - s16 unk1460; - u8 unk1462[0x36]; - Z2CreatureRide mZ2Ride; - u8 unk1673[7]; - s16 unk1680; - u16 unk1682; - u8 unk1684[0x2a]; - u16 unk1726; -}; - class daTagHstop_c { static daTagHstop_c* m_top; }; diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index f1927e216b..14500ece0e 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -64,6 +64,7 @@ public: void resetPriIdx() { mPriIdx = 0xffff; } void resetArcNo() { mArcNo = 0xffff; } bool checkNoSetArcNo() const { return mArcNo == 0xFFFF; } + void setBufferSize(u32 size) { mBufferSize = size; } private: /* 0x00 */ u16 mIdx; @@ -212,6 +213,7 @@ public: enum daPy_ERFLG0 { ERFLG0_UNK_8000000 = 0x8000000, ERFLG0_UNK_1000000 = 0x1000000, + ERFLG0_UNK_800000 = 0x800000, ERFLG0_UNK_100000 = 0x100000, ERFLG0_UNK_2 = 2, ERFLG0_UNK_1 = 1, @@ -221,9 +223,13 @@ public: UNK_FORCE_PUT_POS = 0x2000, ERFLG1_UNK_1 = 1, }; - enum daPy_ERFLG2 {}; + enum daPy_ERFLG2 { + ERFLG2_UNK_100 = 0x100, + }; enum daPy_RFLG0 { RFLG0_UNK_8000000 = 0x8000000, + RFLG0_UNK_4000 = 0x4000, + ENEMY_ATTENTION_LOCK = 0x1000, RFLG0_UNK_80 = 0x80, RFLG0_UNK_40 = 0x40, RFLG0_UNK_2 = 0x2, @@ -316,6 +322,11 @@ public: int checkResetFlg0(daPy_py_c::daPy_RFLG0) const; int checkNoResetFlg2(daPy_py_c::daPy_FLG2) const; int checkMagneBootsOn() const; + void changeDemoPos0(cXyz const*); + void changeDemoMode(u32, int, int, s16); + void changeDemoParam2(s16); + void cancelOriginalDemo(); + void changeOriginalDemo(); virtual cXyz* getMidnaAtnPos() const; virtual void setMidnaMsgNum(fopAc_ac_c*, u16); @@ -494,10 +505,13 @@ public: } return sumouCameraMode; } + + bool i_getSumouMode() const { return getSumouCameraMode(); } bool checkStatusWindowDraw() { return i_checkNoResetFlg2(STATUS_WINDOW_DRAW); } bool checkCargoCarry() const { return mSpecialMode == SMODE_CARGO_CARRY; } bool getHeavyStateAndBoots() { return i_checkNoResetFlg0(HEAVY_STATE_BOOTS); } + bool checkEnemyAttentionLock() const { return i_checkResetFlg0(ENEMY_ATTENTION_LOCK); } // some functions use these function as an inline // is there a better way to handle this? @@ -515,6 +529,7 @@ public: void i_onResetFlg0(int flag) { mResetFlg0 |= flag; } void i_onResetFlg1(int flag) { mResetFlg1 |= flag; } void i_onEndResetFlg0(int flag) { mEndResetFlg0 |= flag; } + void i_onEndResetFlg2(int flag) { mEndResetFlg2 |= flag; } int i_checkResetFlg0(daPy_py_c::daPy_RFLG0 flag) const { return mResetFlg0 & flag; } int i_checkEndResetFlg0(daPy_py_c::daPy_ERFLG0 flag) const { return mEndResetFlg0 & flag; } int i_checkEndResetFlg1(daPy_py_c::daPy_ERFLG1 flag) const { return mEndResetFlg1 & flag; } diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h index 1c8160c9ab..62219f8cf6 100644 --- a/include/d/bg/d_bg_s.h +++ b/include/d/bg/d_bg_s.h @@ -53,6 +53,10 @@ public: virtual ~cBgS() {} virtual void Ct(); virtual void Dt(); + + fopAc_ac_c* GetActorPointer(cBgS_PolyInfo const& info) const { + return GetActorPointer(info.GetBgIndex()); + } }; // Size: 0x1404 class dBgS_Acch; diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index c92bec0cb2..aa8d749584 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -72,6 +72,7 @@ enum PlayerPtr { LINK_PTR, HORSE_PTR }; class daHorse_c; class dPa_control_c; class daAlink_c; +class dMsgObject_c; class dComIfG_play_c { public: @@ -110,7 +111,7 @@ public: // inlines bool& isPauseFlag() { return mPauseFlag; } - void* getMsgObjectClass() { return mMsgObjectClass; } + dMsgObject_c* getMsgObjectClass() { return mMsgObjectClass; } dStage_roomControl_c* getRoomControl() { return &mRoomControl; } dStage_stageDt_c& getStage() { return mStageData; } dEvt_control_c& getEvent() { return mEvent; } @@ -303,7 +304,7 @@ public: /* 0x04E74 */ daAlink_c* mPlayer[1]; /* 0x04E78 */ s8 mPlayerCameraID[4]; /* 0x04E7C */ void* mPlayerPtr[2]; // 0: Player, 1: Horse ; type may be wrong - /* 0x04E84 */ void* mMsgObjectClass; + /* 0x04E84 */ dMsgObject_c* mMsgObjectClass; /* 0x04E88 */ float mItemLifeCount; /* 0x04E8C */ int mItemRupeeCount; /* 0x04E90 */ s16 mItemKeyNumCount; @@ -543,6 +544,9 @@ s8 dComIfGs_getWarpRoomNo(); char* dComIfG_getRoomArcName(int); int dComIfGp_getSelectItemNum(int); int dComIfGp_getSelectItemMaxNum(int); +void dComIfGp_mapShow(); +void dComIfGp_mapHide(); +bool dComIfGp_checkMapShow(); inline void dComIfGp_setRStatus(u8 status, u8 flag) { g_dComIfG_gameInfo.play.setRStatus(status, flag); @@ -728,6 +732,10 @@ inline s32 dComIfGs_isDungeonItemMap() { return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemMap(); } +inline s32 dComIfGs_isDungeonItemCompass() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemCompass(); +} + inline s32 dComIfGs_isDungeonItemBossKey() { return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemBossKey(); } @@ -1407,4 +1415,12 @@ inline void* dComIfGp_getPlayer(int idx) { return g_dComIfG_gameInfo.play.getPlayer(idx); } +inline void dComIfGd_set2DOpa(dDlst_base_c* dlst) { + g_dComIfG_gameInfo.drawlist.set2DOpa(dlst); +} + +inline dMsgObject_c* dComIfGp_getMsgObjectClass() { + return g_dComIfG_gameInfo.play.getMsgObjectClass(); +} + #endif /* D_COM_D_COM_INF_GAME_H */ diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index a2c6e06430..7a45959d10 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -191,6 +191,10 @@ public: /* 800568D8 */ void wipeIn(f32); /* 80056900 */ void calcWipe(); + void set2DOpa(dDlst_base_c* dlst) { + set(field_0x1b4, field_0x1b8, dlst); + } + static u8 mWipeDlst[72]; static u8 mWipeColor[4]; static f32 mWipeRate; @@ -228,8 +232,8 @@ private: /* 0x000B0 */ dDlst_list_c** field_0xb0; /* 0x000B4 */ dDlst_list_c** field_0xb4; // array? /* 0x000B8 */ u8 field_0xb8[0xFC]; - /* 0x001B4 */ dDlst_list_c* field_0x1b4; - /* 0x001B8 */ dDlst_list_c** field_0x1b8; + /* 0x001B4 */ dDlst_base_c** field_0x1b4; + /* 0x001B8 */ dDlst_base_c** field_0x1b8; /* 0x001BC */ dDlst_list_c** field_0x1bc; // array? /* 0x001C0 */ u8 field_0x1c0[0x7C]; /* 0x0023C */ dDlst_list_c* field_0x23c; diff --git a/include/d/d_stage.h b/include/d/d_stage.h index d3da7a8591..650545d52c 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -99,7 +99,9 @@ struct dStage_Multi_c {}; struct dStage_SoundInfo_c {}; -struct dStage_FileList_dt_c {}; +struct dStage_FileList_dt_c { + /* 0x0 */ u32 field_0x0; +}; struct dStage_dPnt_c {}; @@ -681,6 +683,10 @@ inline u32 dStage_stagInfo_GetEscapeWarp(stage_stag_info_class* pstag) { return pstag->field_0x10 >> 0x18; } +inline u32 dStage_stagInfo_GetMiniMap(stage_stag_info_class* pstag) { + return (pstag->field_0x0a >> 0xD) & 7; +} + inline s8 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) { return p_info->field_0xb & 0xF; } @@ -697,4 +703,8 @@ inline s8 dStage_sclsInfo_getTimeH(stage_scls_info_class* p_info) { return (p_info->field_0xa >> 4) | (p_info->field_0xb & 16); } +inline u32 dStage_FileList_dt_getMiniMap(dStage_FileList_dt_c* p_fList) { + return p_fList->field_0x0 >> 3 & 7; +} + #endif /* D_D_STAGE_H */ diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h index 598c6fa448..d007a65ad6 100644 --- a/include/d/event/d_event.h +++ b/include/d/event/d_event.h @@ -83,6 +83,7 @@ public: bool runCheck() { return field_0xe5 != 0; } u16 chkEventFlag(u16 flag) { return flag & mEventFlag; } u8 getMode() const { return mMode; } + u16 checkHind(u16 flag) { return flag & mHindFlag; } bool i_isOrderOK() { return field_0xe5 == 0 || field_0xe5 == 2; } diff --git a/include/d/map/d_map_path.h b/include/d/map/d_map_path.h index e0bbcce9a2..9c9369c694 100644 --- a/include/d/map/d_map_path.h +++ b/include/d/map/d_map_path.h @@ -1,6 +1,84 @@ #ifndef D_MAP_D_MAP_PATH_H #define D_MAP_D_MAP_PATH_H +#include "d/d_drawlist.h" #include "dolphin/types.h" +class dDrawPath_c : public dDlst_base_c { +public: + struct line_class {}; + + struct poly_class {}; + + struct group_class {}; + + struct floor_class {}; + + struct room_class {}; + + /* 8003CB00 */ void rendering(dDrawPath_c::group_class const*); + /* 8003CBBC */ void rendering(dDrawPath_c::floor_class const*); + + /* 8002AD3C */ virtual ~dDrawPath_c(); + /* 8002ABF0 */ virtual bool isDrawType(int); + virtual void getColor(int) = 0; + /* 8002AD84 */ virtual void getLineColor(int, int); + virtual void getLineWidth(int) = 0; + virtual void isSwitch(dDrawPath_c::group_class const*) = 0; + virtual void isRenderingFloor(int) = 0; + virtual void getFirstRoomPointer() = 0; + virtual void getNextRoomPointer() = 0; + /* 8003CCC4 */ virtual void drawPath(); + /* 8003C94C */ virtual void rendering(dDrawPath_c::line_class const*); + /* 8003CA40 */ virtual void rendering(dDrawPath_c::poly_class const*); + /* 8003CC24 */ virtual void rendering(dDrawPath_c::room_class const*); +}; + +class dDrawPathWithNormalPattern_c : public dDrawPath_c { +public: + /* 8002ACE0 */ virtual ~dDrawPathWithNormalPattern_c(); +}; + +class dRenderingMap_c : public dDrawPathWithNormalPattern_c { +public: + /* 8003CD38 */ void makeResTIMG(ResTIMG*, u16, u16, u8*, u8*, u16) const; + /* 8003CDAC */ void renderingMap(); + + /* 8002AC74 */ virtual ~dRenderingMap_c(); + virtual void beforeDrawPath() = 0; + virtual void afterDrawPath() = 0; + virtual void preDrawPath() = 0; + virtual void postDrawPath() = 0; + virtual void isDrawPath() = 0; + virtual void preRenderingMap() = 0; + virtual void postRenderingMap() = 0; + virtual void getBackColor() const = 0; +}; + +class dRenderingFDAmap_c : public dRenderingMap_c { +public: + /* 8003CE78 */ void setTevSettingNonTextureDirectColor() const; + /* 8003CF40 */ void setTevSettingIntensityTextureToCI() const; + /* 8003D0AC */ void drawBack() const; + /* 8003D3C0 */ void renderingDecoration(dDrawPath_c::line_class const*); + + /* 8002ABF8 */ virtual ~dRenderingFDAmap_c(); + /* 8003D188 */ virtual void preRenderingMap(); + /* 8003D320 */ virtual void postRenderingMap(); + /* 8003D68C */ virtual void getDecoLineColor(int, int); + /* 8003D6B8 */ virtual void getDecorationLineWidth(int); + +private: + /* 0x04 */ int field_0x4; + /* 0x08 */ f32 field_0x8; + /* 0x0C */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 mCmPerTexel; + /* 0x1C */ u16 field_0x1c; + /* 0x1E */ u16 field_0x1e; + /* 0x20 */ u16 field_0x20; + /* 0x22 */ u16 field_0x22; +}; // Size: 0x24 + #endif /* D_MAP_D_MAP_PATH_H */ diff --git a/include/d/map/d_map_path_dmap.h b/include/d/map/d_map_path_dmap.h index 3add67c712..2d51f01353 100644 --- a/include/d/map/d_map_path_dmap.h +++ b/include/d/map/d_map_path_dmap.h @@ -1,6 +1,142 @@ #ifndef D_MAP_D_MAP_PATH_DMAP_H #define D_MAP_D_MAP_PATH_DMAP_H +#include "d/map/d_map_path.h" +#include "d/d_stage.h" #include "dolphin/types.h" +struct dTres_c { + struct data_s {}; + + struct typeGroupData_c {}; + + struct list_class {}; + + /* 8009BCB4 */ void addData(dTres_c::list_class*, s8); + /* 8009C360 */ void getFirstData(u8); + /* 8009C3B4 */ void getNextData(dTres_c::typeGroupData_c const*); + /* 8009C39C */ void getNextData(dTres_c::typeGroupData_c*); + /* 8009C4B0 */ void getTypeToTypeGroupNo(u8); + + static u8 mTypeGroupListAll[204 + 4 /* padding */]; +}; + +class dMpath_c { +public: + /* 8003F758 */ static u8 isExistMapPathData(); + /* 8003F760 */ void getTopBottomFloorNo(s8*, s8*); + /* 8003F7E8 */ void createWork(); + /* 8003FA40 */ void setPointer(s8, void*, int); + /* 8003F810 */ void setPointer(dDrawPath_c::room_class*, s8*, s8*); + /* 8003FB70 */ void create(); + /* 8003FBD0 */ void reset(); + /* 8003FC70 */ void remove(); + + static u8 mLayerList[4]; + static f32 mMinX; + static f32 mMaxX; + static f32 mMinZ; + static f32 mMaxZ; + static f32 mAllCenterX; + static f32 mAllCenterZ; + static f32 mAllSizeX; + static f32 mAllSizeZ; +}; + +struct dMapInfo_n { + /* 8003ECA0 */ void chkGetCompass(); + /* 8003ECD8 */ void chkGetMap(); + /* 8003ED10 */ void isVisitedRoom(int); + /* 8003ED60 */ void correctionOriginPos(s8, Vec*); + /* 8003EDC0 */ void offsetPlus(dStage_FileList2_dt_c const*, Vec*); + /* 8003EDEC */ void rotAngle(dStage_FileList2_dt_c const*, Vec*); + /* 8003EE5C */ static Vec getMapPlayerPos(); + /* 8003EF20 */ void getMapPlayerAngleY(); + /* 8003EF70 */ void getConstRestartIconPointer(); + /* 8003F02C */ void getMapRestartPos(); + /* 8003F0F8 */ void getMapRestartAngleY(); + /* 8003F19C */ void getRoomCenter(int, f32*, f32*); + /* 8003F1F4 */ void getRoomMinMaxXZ(int, f32*, f32*, f32*, f32*); + /* 8003F24C */ void getFloorParameter(f32, s8*, f32*, f32*, f32*, f32*); +}; + +class renderingDAmap_c : public dRenderingFDAmap_c { +public: + /* 8003FCA4 */ void calcFloorNoForObjectByMapPathRend(f32, int) const; + /* 8003FCC8 */ void init(u8*, u16, u16, u16, u16); + /* 8003FD08 */ void entry(f32, f32, f32, int, s8); + /* 8003FE6C */ void setSingleRoomSetting(); + /* 8003FFF4 */ void getFirstDrawRoomNo(); + /* 80040094 */ void getNextDrawRoomNo(int); + + /* 8003FE18 */ virtual void draw(); + /* 8002B150 */ virtual ~renderingDAmap_c(); + /* 8003FD9C */ virtual void isSwitch(dDrawPath_c::group_class const*); + /* 8003FE54 */ virtual void isRenderingFloor(int); + /* 80040134 */ virtual void getFirstRoomPointer(); + /* 800401E8 */ virtual void getNextRoomPointer(); + /* 8003FF14 */ virtual void preDrawPath(); + /* 8003FFC4 */ virtual void postDrawPath(); + /* 800402C0 */ virtual void isDrawPath(); + /* 8003FE4C */ virtual void getBackColor() const; + /* 800402E0 */ virtual bool getFirstDrawLayerNo(); + /* 800402E8 */ virtual void getNextDrawLayerNo(int); + /* 800409E0 */ virtual void isDrawIconSingle(dTres_c::data_s const*, int, int, bool, bool, + Vec const*) const; + /* 80040AE4 */ virtual void getIconGroupNumber(u8) const; + virtual void hasMap() const = 0; + virtual void isRendAllRoom() const = 0; + virtual void isRendDoor() const = 0; + virtual bool isCheckFloor() const = 0; + virtual void isDrawIconSingle2(dTres_c::data_s const*, bool, bool, int) const = 0; + /* 8003FFEC */ virtual void getRoomNoSingle(); + /* 8003FE70 */ virtual void isDrawRoom(int, int) const; + /* 800409B4 */ virtual void isDrawRoomIcon(int, int) const; + + bool isDraw() const { + return mDraw; + } + +private: + /* 0x24 */ int field_0x24; + /* 0x28 */ int field_0x28; + /* 0x2C */ int mRoomNoSingle; + /* 0x30 */ u8 field_0x30; + /* 0x31 */ bool mDraw; +}; // Size: 0x34 + +class stage_tgsc_data_class; + +class renderingPlusDoor_c : public renderingDAmap_c { +public: + /* 80040574 */ void drawDoor1(); + /* 800405B8 */ void drawDoor2(); + /* 800405FC */ void drawDoorCommon(stage_tgsc_data_class const*, int, bool); + /* 80040710 */ void checkDispDoorS(int, int, f32); + /* 80040838 */ void drawNormalDoorS(stage_tgsc_data_class const*, int, int, bool); + + /* 8002B0B4 */ virtual ~renderingPlusDoor_c(); + /* 8004145C */ virtual void beforeDrawPath(); + /* 80040518 */ virtual void afterDrawPath(); + virtual bool isRendRestart() const = 0; + virtual bool isRendCursor() const = 0; + virtual bool isRendIcon() const = 0; +}; + +class renderingPlusDoorAndCursor_c : public renderingPlusDoor_c { +public: + /* 80040B00 */ void drawTreasure(); + /* 80040E84 */ void drawTreasureAfterPlayer(); + /* 80041208 */ void drawIconSingle(Vec const&, f32, f32); + /* 800412C0 */ void drawCursor(Vec const&, s16, int, f32); + + /* 8002B008 */ virtual ~renderingPlusDoorAndCursor_c(); + /* 800402FC */ virtual void afterDrawPath(); + /* 80040ADC */ virtual void getIconPosition(dTres_c::typeGroupData_c*) const; + /* 80040A94 */ virtual void getFirstData(u8); + /* 80040AB8 */ virtual void getNextData(dTres_c::typeGroupData_c*); + virtual void getPlayerCursorSize() = 0; + virtual void getRestartCursorSize() = 0; +}; + #endif /* D_MAP_D_MAP_PATH_DMAP_H */ diff --git a/include/d/menu/d_menu_window.h b/include/d/menu/d_menu_window.h index 781f1ed640..6284770245 100644 --- a/include/d/menu/d_menu_window.h +++ b/include/d/menu/d_menu_window.h @@ -172,4 +172,7 @@ private: /* 0x154 */ bool mPauseWindow; }; +BOOL dMw_LEFT_TRIGGER(); +BOOL dMw_RIGHT_TRIGGER(); + #endif /* D_MENU_D_MENU_WINDOW_H */ diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index 550361b58f..49bb7bcf69 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -10,13 +10,6 @@ #include "dolphin/types.h" #include "f_op/f_op_actor.h" -struct dMsgObject_c { - /* 802384C4 */ static void setLetterNameID(u16); - /* 802379AC */ void setKillMessageFlag(); - /* 8023822C */ void getStatus(); - /* 802371E4 */ void isPlaceMessage(); -}; - struct JMSMesgEntry_c { /* 0x00 */ u32 mStringOffset; /* 0x04 */ u16 mStringId; @@ -133,6 +126,14 @@ public: bool isUseButton(int param_0) { return param_0 & mUseButton; } void setMeterMapClass(dMeterMap_c* p_map) { mMeterMap = p_map; } void resetGameStatus() { mGameStatus = 0; } + void setMapStatus(u8 status) { mMapStatus = status; } + u8 getMapStatus() { return mMapStatus; } + void setPauseStatus(u8 status) { mPauseStatus = status; } + void resetPauseStatus() { mPauseStatus = 0; } + u8 getPauseStatus() { return mPauseStatus; } + bool isGameStatus(int status) { return mGameStatus & status; } + void setMapKeyDirection(u16 direction) { mMapKeyDirection = direction; } + bool isSub2DStatus(int flag) { return mSub2DStatus & (1 << flag); } public: /* 0x04 */ u8 unk4[4]; @@ -220,6 +221,7 @@ public: extern dMeter2Info_c g_meter2_info; void dMeter2Info_setSword(u8, bool); +void dMeter2Info_set2DVibration(); inline void dMeter2Info_Initialize() { g_meter2_info.init(); @@ -305,4 +307,36 @@ inline void dMeter2Info_resetGameStatus() { g_meter2_info.resetGameStatus(); } +inline void dMeter2Info_setMapStatus(u8 status) { + g_meter2_info.setMapStatus(status); +} + +inline u8 dMeter2Info_getMapStatus() { + return g_meter2_info.getMapStatus(); +} + +inline void dMeter2Info_setPauseStatus(u8 status) { + g_meter2_info.setPauseStatus(status); +} + +inline void dMeter2Info_resetPauseStatus() { + g_meter2_info.resetPauseStatus(); +} + +inline u8 dMeter2Info_getPauseStatus() { + return g_meter2_info.getPauseStatus(); +} + +inline bool dMeter2Info_isGameStatus(int status) { + return g_meter2_info.isGameStatus(status); +} + +inline void dMeter2Info_setMapKeyDirection(u16 direction) { + g_meter2_info.setMapKeyDirection(direction); +} + +inline bool dMeter2Info_isSub2DStatus(int flag) { + return g_meter2_info.isSub2DStatus(flag); +} + #endif /* D_METER_D_METER2_INFO_H */ diff --git a/include/d/meter/d_meter_map.h b/include/d/meter/d_meter_map.h index e4bfcbd903..208b135e46 100644 --- a/include/d/meter/d_meter_map.h +++ b/include/d/meter/d_meter_map.h @@ -2,39 +2,181 @@ #define D_METER_D_METER_MAP_H #include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J2DGraph/J2DPicture.h" +#include "d/map/d_map_path_dmap.h" #include "dolphin/types.h" -class dMeterMap_c { +// move renderingAmap_c + dMap_c later +class renderingAmap_c : public renderingPlusDoorAndCursor_c { public: - /* 8020D49C */ void isEnableDispMap(); - /* 8020D528 */ void getMapDispSizeTypeNo(); + /* 800288C4 */ void getDispType() const; + /* 80028BB4 */ void isDrawOutSideTrim(); + /* 80028C4C */ void getOutSideBlackLineNumber(); + /* 80028C60 */ void isOutSideBlackLine(); + /* 80028C90 */ void getLineWidthSub(int); + /* 80029160 */ void getStayType() const; + /* 8002AE6C */ renderingAmap_c(); + + /* 800284D0 */ virtual void draw(); + /* 8002ADB0 */ virtual ~renderingAmap_c(); + /* 80028EE4 */ virtual void getLineColor(int, int); + /* 80028DD4 */ virtual void getLineWidth(int); + /* 80028A10 */ virtual void drawPath(); + /* 80028A30 */ virtual void rendering(dDrawPath_c::line_class const*); + /* 80028B3C */ virtual void rendering(dDrawPath_c::poly_class const*); + /* 800289F0 */ virtual void rendering(dDrawPath_c::room_class const*); + /* 80028960 */ virtual void beforeDrawPath(); + /* 800289D0 */ virtual void afterDrawPath(); + /* 80028FB4 */ virtual void getDecoLineColor(int, int); + /* 80028CF4 */ virtual void getDecorationLineWidth(int); + /* 80029058 */ virtual void getIconGroupNumber(u8) const; + /* 80029078 */ virtual void hasMap() const; + /* 8002911C */ virtual void isRendAllRoom() const; + /* 800290C0 */ virtual void isRendDoor() const; + /* 80029104 */ virtual bool isCheckFloor() const; + /* 80029190 */ virtual void isDrawIconSingle2(dTres_c::data_s const*, bool, bool, int) const; + /* 8002910C */ virtual bool isRendRestart() const; + /* 80029114 */ virtual bool isRendCursor() const; + /* 8002B000 */ virtual bool isRendIcon() const; + /* 800284BC */ virtual void getIconSize(u8) const; + /* 80028B04 */ virtual void getPlayerCursorSize(); + /* 80028B10 */ virtual void getRestartCursorSize(); + virtual void setAmapPaletteColor(int, u8, u8, u8, u8) = 0; + virtual bool isSpecialOutline() = 0; + +private: + /* 0x34 */ s32 m_outSideBlackLineCnt; + /* 0x38 */ s32 field_0x38; + /* 0x3C */ s32 field_0x3c; +}; // Size: 0x40 + +class dMap_c : public renderingAmap_c { +public: + /* 8002974C */ void copyPalette(); + /* 8002A064 */ void copyPalette(int, int, f32); + /* 80029F84 */ void setMapPaletteColorAlphaPer(int, f32); + /* 800297A8 */ void setMapPaletteColorAlphaPer(int, int, f32); + /* 80029818 */ void resCopy(); + /* 80029874 */ dMap_c(int, int, int, int); + /* 80029A1C */ void _remove(); + /* 80029A8C */ void getMapMinMaxXZ(int, f32*, f32*, f32*, f32*); + /* 80029C10 */ void getPack(int, f32*, f32*); + /* 80029D78 */ void calcMapCenterXZ(int, f32*, f32*); + /* 80029E1C */ void calcMapCmPerTexel(int, f32*); + /* 8002A1BC */ void getDispType() const; + /* 8002A32C */ void _move(f32, f32, int, f32); + /* 8002AB54 */ void _draw(); + + /* 8002AF20 */ virtual ~dMap_c(); + /* 800296EC */ virtual void isDrawType(int); + /* 80028DF4 */ virtual void getColor(int); + /* 800296F8 */ virtual void isRendAllRoom() const; + /* 8002A254 */ virtual void getRoomNoSingle(); + /* 8002A1DC */ virtual void isDrawRoom(int, int) const; + /* 8002A294 */ virtual void isDrawRoomIcon(int, int) const; + /* 80029038 */ virtual void getIconPosition(dTres_c::typeGroupData_c*) const; + /* 8002ABAC */ virtual void getFirstData(u8); + /* 8002ABCC */ virtual void getNextData(dTres_c::typeGroupData_c*); + /* 8002A148 */ virtual void setAmapPaletteColor(int, u8, u8, u8, u8); + /* 80029744 */ virtual bool isSpecialOutline(); + + bool isDraw() const { + return renderingDAmap_c::isDraw(); + } + + ResTIMG* getResTIMGPointer() { return mResTIMG; } + f32 getTopEdgePlus() { return mTopEdgePlus; } + f32 getPackPlusZ() { return mPackPlusZ; } + f32 getPackZ() { return mPackZ; } + f32 getTexelPerCm() { return 1.0f / field_0x58; } + u16 getTexSizeY() { return mTexSizeH; } + f32 getRightEdgePlus() { return mRightEdgePlus; } + f32 getPackX() { return mPackX; } + +private: + /* 0x40 */ u8* m_res_src; + /* 0x44 */ u8* m_res; + /* 0x48 */ ResTIMG* mResTIMG; + /* 0x4C */ u8* mImage_p; + /* 0x50 */ f32 mCenterX; + /* 0x54 */ f32 mCenterZ; + /* 0x58 */ f32 field_0x58; + /* 0x5C */ f32 mPackX; + /* 0x60 */ f32 mPackZ; + /* 0x64 */ f32 field_0x64; + /* 0x68 */ f32 mPackPlusZ; + /* 0x6C */ f32 mRightEdgePlus; + /* 0x70 */ f32 mTopEdgePlus; + /* 0x74 */ int field_0x74; + /* 0x78 */ u16 mTexSizeW; + /* 0x7A */ u16 mTexSizeH; + /* 0x7C */ s32 mStayRoomNo; + /* 0x80 */ int field_0x80; + /* 0x84 */ int field_0x84; + /* 0x88 */ int field_0x88; + /* 0x8C */ u8 field_0x8c; + /* 0x8D */ u8 field_0x8d; + /* 0x8E */ u8 field_0x8e; + /* 0x8F */ u8 field_0x8f; + /* 0x90 */ u8 field_0x90; +}; // Size: 0x94 + +class dMeterMap_c : public dDlst_base_c { +public: + /* 8020D49C */ static bool isEnableDispMap(); + /* 8020D528 */ static int getMapDispSizeTypeNo(); /* 8020D650 */ static bool isEnableDispMapAndMapDispSizeTypeNo(); - /* 8020D690 */ void getMapDispEdgeBottomY_Layout(); - /* 8020D698 */ void isEventRunCheck(); - /* 8020D72C */ void getMapDispEdgeLeftX_Layout(); - /* 8020D75C */ void getMapDispEdgeTop(); - /* 8020D7E4 */ bool getDispPosInside_OffsetX(); - /* 8020D7EC */ void getDispPosOutSide_OffsetX(); + /* 8020D690 */ f32 getMapDispEdgeBottomY_Layout(); + /* 8020D698 */ bool isEventRunCheck(); + /* 8020D72C */ f32 getMapDispEdgeLeftX_Layout(); + /* 8020D75C */ f32 getMapDispEdgeTop(); + /* 8020D7E4 */ s16 getDispPosInside_OffsetX(); + /* 8020D7EC */ s16 getDispPosOutSide_OffsetX(); /* 8020D874 */ void setDispPosInsideFlg_SE_On(); /* 8020D8BC */ void setDispPosOutsideFlg_SE_On(); /* 8020D8F8 */ void setMapAlpha(u8); /* 8020D900 */ static bool isMapOpenCheck(); /* 8020D948 */ dMeterMap_c(J2DScreen*); - /* 8020D990 */ ~dMeterMap_c(); /* 8020D9EC */ void _create(J2DScreen*); /* 8020DC50 */ void _delete(); /* 8020DCE4 */ void _move(u32); /* 8020DF1C */ void _draw(); - /* 8020DF68 */ void draw(); /* 8020E070 */ void ctrlShowMap(); - /* 8020E45C */ void checkMoveStatus(); - /* 8020E4C8 */ void isShow(u32); - /* 8020E620 */ void isFmapScreen(); - /* 8020E70C */ void isDmapScreen(); + /* 8020E45C */ u8 checkMoveStatus(); + /* 8020E4C8 */ static bool isShow(u32); + /* 8020E620 */ static bool isFmapScreen(); + /* 8020E70C */ static bool isDmapScreen(); /* 8020E754 */ static void meter_map_move(u32); /* 8020E9CC */ void keyCheck(); - u8 field_0x0[0x34]; + /* 8020DF68 */ virtual void draw(); + /* 8020D990 */ virtual ~dMeterMap_c(); + + bool isDispPosInsideFlg() { return field_0x2d != 0; } + + enum { + MAP_SIZE_TYPE_BIG = 2, + MAP_SIZE_TYPE_SMALL = 3, + MAP_SIZE_TYPE_STAGE = 7 + }; + +private: + /* 0x04 */ J2DPicture* mMapJ2DPicture; + /* 0x08 */ dMap_c* mMap; + /* 0x0C */ s32 mIsCompass; + /* 0x10 */ s32 mIsMap; + /* 0x14 */ u32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 mSizeW; + /* 0x24 */ f32 mSizeH; + /* 0x28 */ s16 field_0x28; + /* 0x2A */ u8 field_0x2a; + /* 0x2B */ u8 field_0x2b; + /* 0x2C */ u8 mMapAlpha; + /* 0x2D */ u8 field_0x2d; + /* 0x2E */ u8 field_0x2e; + /* 0x30 */ int field_0x30; }; #endif /* D_METER_D_METER_MAP_H */ diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h index 0a9cf51695..903cc910f2 100644 --- a/include/d/msg/d_msg_object.h +++ b/include/d/msg/d_msg_object.h @@ -1,6 +1,162 @@ #ifndef D_MSG_D_MSG_OBJECT_H #define D_MSG_D_MSG_OBJECT_H +#include "JSystem/J2DGraph/J2DTextbox.h" +#include "d/com/d_com_inf_game.h" #include "dolphin/types.h" +class msg_class; +class COutFont_c; + +class dMsgObject_c { +public: + /* 80233284 */ void _create(msg_class*); + /* 80233590 */ void _execute(); + /* 802339BC */ void _draw(); + /* 80233AE8 */ void _delete(); + /* 80233D04 */ void setMessageIndex(u32, u32, bool); + /* 80233E70 */ void setMessageIndexDemo(u32, bool); + /* 80233F84 */ void getMessageIndex(u32); + /* 80233FD8 */ void getRevoMessageIndex(u32); + /* 802340D4 */ void getMessageIndexAlways(u32); + /* 80234128 */ void getMessageIDAlways(u32); + /* 8023413C */ void getMessageGroup(u32); + /* 80234150 */ void waitProc(); + /* 80234318 */ void openProc(); + /* 802349D8 */ void outnowProc(); + /* 80234CCC */ void outwaitProc(); + /* 80234FF0 */ void stopProc(); + /* 80234FF4 */ void continueProc(); + /* 8023531C */ void selectProc(); + /* 8023587C */ void selectEndProc(); + /* 802358D4 */ void inputProc(); + /* 80235AD4 */ void finishProc(); + /* 80235CC0 */ void endProc(); + /* 80235EBC */ void deleteProc(); + /* 8023609C */ void textmodeProc(); + /* 802360A0 */ void talkStartInit(); + /* 8023670C */ void fukiPosCalc(bool); + /* 802368E4 */ void setStatusLocal(u16); + /* 802368F8 */ void getStatusLocal(); + /* 8023690C */ void delete_screen(bool); + /* 802369D8 */ void isSend(); + /* 80236BF8 */ void readMessageGroupLocal(mDoDvdThd_mountXArchive_c**); + /* 80236C90 */ void changeFlowGroupLocal(s32); + /* 80236CD4 */ void demoMessageGroupLocal(); + /* 80236D00 */ void endFlowGroupLocal(); + /* 80236D0C */ void changeGroupLocal(s16); + /* 80236DE4 */ void getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, + char*, char*, s16*); + /* 802370A8 */ void isGetItemMessage(); + /* 802370BC */ void isKanbanMessage(); + /* 802370E8 */ void isHowlMessage(); + /* 802370FC */ void isMidonaMessage(); + /* 80237138 */ void isMidonaNormalTalkWait(); + /* 802371B0 */ void isMidonaTalkWait(); + /* 802371E4 */ void isPlaceMessage(); + /* 802371F8 */ void isBossMessage(); + /* 8023720C */ bool isBookMessage(); + /* 80237214 */ void isStaffMessage(); + /* 80237228 */ void isSaveMessage(); + /* 8023723C */ void isTalkMessage(); + /* 802372CC */ void getSmellName(); + /* 80237334 */ void getPortalName(); + /* 8023738C */ void getBombName(); + /* 8023741C */ void getInsectName(); + /* 80237478 */ void getLetterName(); + /* 802374D0 */ void getSelectBombNum(); + /* 80237520 */ void onMsgSendControlLocal(); + /* 80237530 */ void offMsgSendControlLocal(); + /* 80237550 */ void isMsgSendControlLocal(); + /* 8023755C */ void onMsgSendLocal(); + /* 8023756C */ void offMsgSendLocal(); + /* 8023757C */ void isMsgSendLocal(); + /* 80237588 */ void isMouthCheckLocal(); + /* 8023759C */ void getBombBuyPriceLocal(u8); + /* 802375E4 */ void addSelectBomBag(u8); + /* 80237610 */ void resetSelectBomBag(); + /* 8023763C */ void getSelectBombBagIDLocal(); + /* 8023768C */ void getSelectBombPriceLocal(); + /* 8023773C */ void setEquipBombInfoLocal(); + /* 80237748 */ void updateEquipBombInfoLocal(); + /* 802378B8 */ void setShopWaitTimer(u8); + /* 802378CC */ void setSelectWordFlagLocal(u8); + /* 802378D4 */ void isHowlHearingModeLocal(); + /* 80237934 */ void isCameraCancelFlag(); + /* 80237950 */ void onCameraCancelFlag(); + /* 80237968 */ void offCameraCancelFlag(); + /* 80237980 */ void isKillMessageFlag(); + /* 80237994 */ void onKillMessageFlag(); + /* 802379AC */ void setKillMessageFlag(); + /* 802379D8 */ void setKillMessageFlagLocal(); + /* 80237A74 */ void setTalkPartner(fopAc_ac_c*); + /* 80237A88 */ void setNowTalkFlowNo(s16); + /* 80237A9C */ void getNowTalkFlowNo(); + /* 80237AB0 */ void setDemoMessage(u32); + /* 80237AE0 */ void setTalkHeap(void*); + /* 80237B10 */ void setTalkHeapLocal(void*); + /* 80237B54 */ void getTalkHeap(); + /* 80237B68 */ void isDraw(); + /* 80237BFC */ void setButtonStatusLocal(); + /* 80237D88 */ void setDemoMessageLocal(u32); + /* 80237DD8 */ void getSmellTypeMessageIDLocal(); + /* 80237E04 */ void setSmellTypeLocal(u8); + /* 80237E58 */ void getSelectCursorPosLocal(); + /* 80237E68 */ void setSelectCursorPosLocal(u8); + /* 80237F10 */ void setTalkActorLocal(fopAc_ac_c*); + /* 8023800C */ void readMessageGroup(mDoDvdThd_mountXArchive_c**); + /* 8023803C */ void changeFlowGroup(s32); + /* 8023806C */ void demoMessageGroup(); + /* 80238098 */ void endFlowGroup(); + /* 802380C4 */ void changeGroup(s16); + /* 802380F4 */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, + char*, char*, s16*); + /* 80238174 */ void getMsgDtPtr(); + /* 80238188 */ void setProcessID(unsigned int); + /* 8023819C */ void getActor(); + /* 802381C0 */ void getpTalkActor(); + /* 802381D4 */ void getIdx(); + /* 802381E8 */ void getNodeIdx(); + /* 802381FC */ void setStatus(u16); + /* 8023822C */ static u16 getStatus(); + /* 80238258 */ void getScrnDrawPtr(); + /* 8023826C */ void setTalkActor(fopAc_ac_c*); + /* 8023829C */ void onMsgSendControl(); + /* 802382C8 */ void offMsgSendControl(); + /* 802382F4 */ void isMsgSendControl(); + /* 80238320 */ void onMsgSend(); + /* 8023834C */ void offMsgSend(); + /* 80238378 */ void isMsgSend(); + /* 802383A4 */ void isMouthCheck(); + /* 802383D0 */ void getMessageID(); + /* 802383E4 */ void getSmellTypeMessageID(); + /* 80238410 */ void setSmellType(u8); + /* 80238440 */ void getSelectCursorPos(); + /* 8023846C */ void setSelectCursorPos(u8); + /* 8023849C */ void setPortalMessageID(u16); + /* 802384B0 */ void setInsectItemNo(u8); + /* 802384C4 */ static void setLetterNameID(u16); + /* 802384D8 */ void setArrowNum(u8); + /* 802384EC */ void setMsgOutputType(u8); + /* 80238500 */ void getMsgOutputType(); + /* 80238514 */ void getWord(); + /* 80238528 */ void getSelectWord(int); + /* 80238544 */ void setSelectWordFlag(u8); + /* 80238574 */ void getSelectWordFlag(); + /* 80238588 */ void isHowlHearingMode(); + /* 802385B4 */ void getSelectBombBagID(); + /* 802385E0 */ void getSelectBombPrice(); + /* 8023860C */ void setEquipBombInfo(); + /* 80238638 */ void getItemEquipButton(); + /* 8023864C */ void setSelectCancelPos(u8); +}; + +inline dMsgObject_c* dMsgObject_getMsgObjectClass() { + return dComIfGp_getMsgObjectClass(); +} + +inline bool dMsgObject_isTalkNowCheck() { + return dMsgObject_getMsgObjectClass()->getStatus() != 1 ? true : false; +} + #endif /* D_MSG_D_MSG_OBJECT_H */ diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index 9ce8764948..0e58a882c7 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -768,6 +768,7 @@ public: void onDungeonItemMap() { onDungeonItem(MAP); } s32 isDungeonItemMap() const { return isDungeonItem(MAP); } void onDungeonItemCompass() { onDungeonItem(COMPASS); } + s32 isDungeonItemCompass() const { return isDungeonItem(COMPASS); } void onDungeonItemWarp() { onDungeonItem(OOCCOO_NOTE); } void onDungeonItemBossKey() { onDungeonItem(BOSS_KEY); } s32 isDungeonItemBossKey() const { return isDungeonItem(BOSS_KEY); } diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index bf16d5b99a..3ba9ad5b16 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -50,6 +50,8 @@ public: }; // Size = 0x18 struct actor_place { + /* 807E2468 */ void operator=(actor_place const&); + cXyz mPosition; csXyz mAngle; s8 mRoomNo; diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index 79c09b2fbf..30c90bdd62 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -15,6 +15,7 @@ void mDoMtx_ZrotS(Mtx, s16); void mDoMtx_YrotS(Mtx, s16); void mDoMtx_XrotS(Mtx, s16); void mDoMtx_YrotM(Mtx, s16); +void mDoMtx_MtxToRot(MtxP, csXyz*); class mDoMtx_stack_c { public: diff --git a/include/rel/d/a/d_a_horse/d_a_horse.h b/include/rel/d/a/d_a_horse/d_a_horse.h index 71cbc68c4d..b77f726742 100644 --- a/include/rel/d/a/d_a_horse/d_a_horse.h +++ b/include/rel/d/a/d_a_horse/d_a_horse.h @@ -2,5 +2,219 @@ #define D_A_HORSE_H #include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "d/bg/d_bg_s.h" +#include "d/cc/d_cc_d.h" +#include "d/msg/d_msg_flow.h" +#include "Z2AudioLib/Z2Creature.h" + +class daHorseRein_c { +public: + /* 80837F2C */ void setReinPos(int); + /* 808383A8 */ void setReinPosPart(int); + /* 80844FB0 */ ~daHorseRein_c(); + /* 80844FEC */ daHorseRein_c(); + +private: + /* 0x00 */ cXyz* field_0x0[2]; + /* 0x08 */ int field_0x8[2]; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ cXyz field_0x1c; +}; // Size: 0x28 + +class daHorseFootData_c { +public: + /* 80844F70 */ ~daHorseFootData_c(); + /* 80844FAC */ daHorseFootData_c(); + +private: + /* 0x0 */ u8 field_0x0[0xE4]; +}; // Size: 0xE4 + +class daHorse_c : public fopAc_ac_c { +public: + enum daHorse_ERFLG0 { + /* 0x010 */ MOVE_ACCEPT = 0x10, + /* 0x080 */ RIDE_RUN_FLG = 0x80, + /* 0x100 */ CUT_TURN_CANCEL = 0x100, + }; + + enum daHorse_RFLG0 { + /* 0x02 */ ENEMY_SEARCH = 2, + /* 0x08 */ LASH_DASH_START = 8, + /* 0x10 */ TURN_STAND = 0x10, + /* 0x40 */ TURN_STAND_CAMERA = 0x40, + }; + + enum daHorse_FLG0 { + /* 0x00000020 */ RODEO_LEFT = 0x20, + /* 0x00000040 */ RIDE_START_FLG = 0x40, + /* 0x00010000 */ PLAYER_BACK_RIDE_LASH = 0x10000, + /* 0x20000000 */ TURN_CANCEL_KEEP = 0x20000000, + /* 0x80000000 */ RODEO_MODE = 0x80000000 + }; + + fopAc_ac_c* getZeldaActor(); + /* 807E27BC */ void cancelOriginalDemo(); + /* 807E27F8 */ void onDemoJumpDistance(f32, f32); + /* 807E28B8 */ void changeDemoPos0(cXyz const*); + /* 807E28D4 */ void changeDemoMode(u32, int); + /* 807E28E0 */ void setHorsePosAndAngle(cXyz const*, s16); + /* 807E2964 */ void changeOriginalDemo(); + /* 80838498 */ void coHitCallbackBoarJump(fopAc_ac_c*); + /* 80838798 */ void coHitCallbackBoarHit(fopAc_ac_c*, dCcD_GObjInf*); + /* 80838904 */ void coHitCallbackCowHit(fopAc_ac_c*); + /* 80838B78 */ void modelCallBack(int); + /* 80838F98 */ void createHeap(); + /* 8083940C */ void checkEnding(); + /* 80839498 */ void create(); + /* 80839D1C */ void setBasAnime(int); + /* 80839EBC */ void resetBasAnime(); + /* 80839ED4 */ void setDoubleAnime(f32, f32, f32, u16, u16, f32); + /* 8083A20C */ void setSingleAnime(u16, f32, f32, s16, f32, int); + /* 8083A3C4 */ void animePlay(); + /* 8083A5AC */ void checkDemoAction(); + /* 8083A890 */ void setStickRodeoMove(); + /* 8083AC7C */ void setStickCallMove(); + /* 8083ACEC */ void setDemoMoveData(u32*, cXyz const*); + /* 8083AEC0 */ void setDemoData(); + /* 8083B578 */ void acceptPlayerRide(); + /* 8083B600 */ void setStickData(); + /* 8083B828 */ void setTurnStartVibration(); + /* 8083B82C */ void setTurnVibration(); + /* 8083B830 */ void setMoveAnime(f32); + /* 8083BF48 */ void checkHorseNoMove(int); + /* 8083CA80 */ void checkTurnPlayerState(); + /* 8083CB38 */ void setSpeedAndAngle(); + /* 8083D748 */ void checkWaitTurn() const; + /* 8083D774 */ void setRoomInfo(int); + /* 8083D918 */ void setBodyPart(); + /* 8083D9D8 */ void setMatrix(); + /* 8083DC58 */ void setDashEffect(u32*); + /* 8083DEEC */ void setEffect(); + /* 8083E4D8 */ void setCollision(); + /* 8083E6E8 */ void autoGroundHit(); + /* 8083E760 */ void setTailAngle(); + /* 8083E8A4 */ void setNeckAngle(); + /* 8083EA78 */ void copyFootMatrix(); + /* 8083EB10 */ void setFootMatrix(); + /* 8083ED88 */ void setLegAngle(f32, int, int, s16*); + /* 8083F3B0 */ void footBgCheck(); + /* 8083F9AC */ void setReinPosMoveInit(int); + /* 8083FDAC */ void copyReinPos(); + /* 8083FEB4 */ void setReinPosHandSubstance(int); + /* 8084010C */ void setReinPosNormalSubstance(); + /* 808402F8 */ void bgCheck(); + /* 80840714 */ void checkSpecialWallHitSubstance(cXyz const&) const; + /* 808407B0 */ void setServiceWaitTimer(); + /* 80840800 */ void checkServiceWaitAnime(); + /* 80840844 */ void checkTurnInput(); + /* 808408F0 */ void checkTgHitTurn(); + /* 808409C0 */ void checkTurnAfterFastMove(f32); + /* 80840B28 */ void setNeckAnimeMorf(); + /* 80840B88 */ void setNeckAnime(u16, f32, f32, s16); + /* 80840CA4 */ void resetNeckAnime(); + /* 80840CE4 */ void setLashCnt(); + /* 80840FE0 */ void setTalkModeWolf(); + /* 80841084 */ void setBoarHit(fopAc_ac_c*, int); + /* 8084116C */ void savePos(); + /* 808411D0 */ void callHorseSubstance(cXyz const*); + /* 80841468 */ void setHorsePosAndAngleSubstance(cXyz const*, s16); + /* 808415B4 */ void checkPlayerHeavy(); + /* 80841628 */ void setTgCoGrp(u32, u32); + /* 80841698 */ void onRideFlgSubstance(); + /* 808416D4 */ void offRideFlgSubstance(); + /* 80841708 */ void procWaitInit(); + /* 808417B8 */ void procWait(); + /* 80841F04 */ void procMoveInit(); + /* 80841F80 */ void procMove(); + /* 808423DC */ void procStopInit(); + /* 808425BC */ void procStop(); + /* 80842878 */ void procTurnInit(int); + /* 80842AB0 */ void procTurn(); + /* 80843008 */ void procJumpInit(int); + /* 808432E0 */ void procJump(); + /* 80843604 */ void procLandInit(f32, int); + /* 80843770 */ void procLand(); + /* 808438AC */ void procLargeDamageInit(); + /* 8084396C */ void procLargeDamage(); + /* 808439C8 */ void procToolDemoInit(); + /* 80843A44 */ void procToolDemo(); + /* 80843BFC */ void searchSceneChangeArea(fopAc_ac_c*); + /* 80843C74 */ void execute(); + /* 80844590 */ void draw(); + /* 8084478C */ ~daHorse_c(); + /* 80844CB0 */ daHorse_c(); + + bool checkNoBombProc() const { return field_0x16b4 == 0 || field_0x16b4 == 1; } + bool checkResetStateFlg0(daHorse_RFLG0 flag) { return mResetStateFlg0 & flag; } + bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) { return mEndResetStateFlg0 & flag; } + bool checkStateFlg0(daHorse_FLG0 flag) { return mStateFlg0 & flag; } + + static u8 const m_footJointTable[8]; + static f32 const m_callLimitDistance2; + +private: + /* 0x0568 */ u8 field_0x568[8]; + /* 0x0570 */ J3DModel* field_0x570; + /* 0x0574 */ void* field_0x574; + /* 0x0578 */ J3DFrameCtrl field_0x578; + /* 0x058C */ int field_0x58c; + /* 0x0590 */ u8 field_0x590[4]; + /* 0x0594 */ mDoExt_AnmRatioPack field_0x594[3]; + /* 0x05AC */ void* field_0x5ac; + /* 0x05B0 */ daPy_frameCtrl_c field_0x5b0[3]; + /* 0x05F8 */ u8 field_0x5f8[4]; + /* 0x05FC */ dBgS_AcchCir field_0x5fc[3]; + /* 0x06BC */ dBgS_Acch field_0x6bc; + /* 0x0894 */ dCcD_Stts field_0x894; + /* 0x08D0 */ dBgS_HorseLinChk field_0x8d0; + /* 0x0940 */ dCcD_Cyl field_0x940[3]; + /* 0x0CF4 */ dCcD_Cyl field_0xcf4; + /* 0x0E30 */ dCcD_Cyl field_0xe30; + /* 0x0F6C */ dCcD_Sph field_0xf6c; + /* 0x10A4 */ Z2CreatureRide field_0x10a4; + /* 0x1140 */ u8 field_0x1140[0x10]; + /* 0x1150 */ daHorseRein_c field_0x1150[3]; + /* 0x11C8 */ u8 field_0x11c8[0x40]; + /* 0x1208 */ dMsgFlow_c field_0x1208; + /* 0x1254 */ daPy_actorKeep_c mZeldaActorKeep; + /* 0x125C */ u8 field_0x125c[0xC8]; + /* 0x1324 */ daHorseFootData_c mFootData[4]; + /* 0x16B4 */ u8 field_0x16b4; + /* 0x16B5 */ u8 field_0x16b5[3]; + /* 0x16B8 */ u8 field_0x16b8; + /* 0x16B9 */ u8 field_0x16b9[2]; + /* 0x16BB */ u8 mRodeoPointCnt; + /* 0x16BC */ u8 field_0x16bc[0x36]; + /* 0x16F2 */ s16 mAimNeckAngleY; + /* 0x16F4 */ u8 field_0x16f4[0xA]; + /* 0x16FC */ s16 mDemoMoveAngle; + /* 0x16FE */ u8 field_0x16fe[4]; + /* 0x1702 */ s16 field_0x1702; + /* 0x1704 */ u8 field_0x1704[2]; + /* 0x1706 */ s16 mCowHitAngle; + /* 0x1708 */ s16 mCowHit; + /* 0x170A */ u8 field_0x170a[0x1E]; + /* 0x1728 */ int field_0x1728; + /* 0x172C */ u8 field_0x172c[0x14]; + /* 0x1740 */ u32 field_0x1740; + /* 0x1744 */ u32 mStateFlg0; + /* 0x1748 */ u32 mResetStateFlg0; + /* 0x174C */ u32 mEndResetStateFlg0; + /* 0x1750 */ f32 mMorfFrame; + /* 0x1754 */ u8 field_0x1754[0x14]; + /* 0x1768 */ f32 field_0x1768; + /* 0x176C */ f32 field_0x176c; + /* 0x1770 */ f32 field_0x1770; + /* 0x1774 */ u8 field_0x1774[0x14]; + /* 0x1788 */ f32 mDemoStickR; + /* 0x178C */ f32 mNormalMaxSpeedF; + /* 0x1790 */ f32 mLashMaxSpeedF; + /* 0x1794 */ u8 field_0x1794[0x30]; + /* 0x17C4 */ cXyz mDemoPos0; +}; #endif /* D_A_HORSE_H */ diff --git a/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h b/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h index 3326ee208e..f389bc94ed 100644 --- a/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h +++ b/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h @@ -2,5 +2,52 @@ #define D_A_E_WB_H #include "dolphin/types.h" +#include "rel/d/a/d_a_horse/d_a_horse.h" +#include "Z2AudioLib/Z2Creature.h" + +class e_wb_class : public fopAc_ac_c { +public: + BOOL checkWait(); + void setPlayerRideNow(); + void setPlayerRide(); + void getOff(); + BOOL checkDownDamage(); + u8 checkNormalRideMode() const; + void setRunRideMode(); + +private: + /* 0x0568 */ u8 field_0x568[0x4C]; + /* 0x05B4 */ s16 field_0x5b4; + /* 0x05B6 */ u8 unk1462[9]; + /* 0x05BF */ bool field_0x5bf; + /* 0x05C0 */ u8 field_0x5c0[0x20]; + /* 0x05E0 */ void* field_0x5e0; + /* 0x05E4 */ u8 field_0x5e4[8]; + /* 0x05EC */ Z2CreatureRide mZ2Ride; + /* 0x0688 */ u8 unk1673[6]; + /* 0x068E */ s16 field_0x68e; + /* 0x0690 */ s16 field_0x690; + /* 0x0692 */ u16 field_0x692; + /* 0x0694 */ u8 unk1684[0xc]; + /* 0x06A0 */ s16 field_0x6a0; + /* 0x06A2 */ u8 field_0x6a2[0xc]; + /* 0x06AE */ s16 field_0x6ae; + /* 0x06B0 */ s16 field_0x6b0; + /* 0x06B2 */ u8 field_0x6b2[0xc]; + /* 0x06BE */ u16 field_0x6be; + /* 0x06C0 */ u8 field_0x6c0[0xdd]; + /* 0x079D */ u8 field_0x79d; + /* 0x079E */ u8 field_0x79e[0x4e]; + /* 0x07EC */ dBgS_Acch field_0x7ec; + /* 0x09C4 */ cXyz field_0x9c4; + /* 0x09D0 */ u8 field_0x9d0[0xa5f]; + /* 0x142F */ u8 field_0x142f; + /* 0x1430 */ u8 field_0x1430; + /* 0x1432 */ s16 field_0x1432; + /* 0x1434 */ u8 field_0x1434[0x250]; + /* 0x1684 */ f32 field_0x1684; + /* 0x1688 */ u8 field_0x1688[0x16]; + /* 0x169E */ s16 field_0x169e; +}; #endif /* D_A_E_WB_H */ diff --git a/libs/Z2AudioLib/Z2SceneMgr.cpp b/libs/Z2AudioLib/Z2SceneMgr.cpp index 7bcc9989c3..6666fd3631 100644 --- a/libs/Z2AudioLib/Z2SceneMgr.cpp +++ b/libs/Z2AudioLib/Z2SceneMgr.cpp @@ -124,7 +124,7 @@ extern "C" static void dComIfGs_isSaveSwitch__Fi(); extern "C" void resetCrowdSize__7Z2SeMgrFv(); extern "C" void setTwilightGateVol__8Z2SeqMgrFf(); extern "C" void setWindStoneVol__8Z2SeqMgrFfUl(); -extern "C" void __ct__10JAISoundIDFUl(); +extern "C" void __ct__10JAISoundIDFUl(void* param_0, u32 param_1); extern "C" void sceneChange__10Z2SceneMgrF10JAISoundIDUcUcUcUcUcb(); extern "C" void framework__10Z2SceneMgrFv(); extern "C" void load1stDynamicWave__10Z2SceneMgrFv(); @@ -875,8 +875,9 @@ asm void Z2SeqMgr::setWindStoneVol(f32 param_0, u32 param_1) { #pragma pop /* 802B9B60-802B9B68 -00001 0008+00 0/0 0/0 0/0 .text __ct__10JAISoundIDFUl */ -JAISoundID::JAISoundID(u32 id) { - mId = id; +// JAISoundID::JAISoundID(u32 id) { +extern "C" void __ct__10JAISoundIDFUl(void* param_0, u32 param_1) { + *(u32*)param_0 = (u32)(param_1); } /* 802B9B68-802B9C50 2B44A8 00E8+00 1/1 0/0 0/0 .text diff --git a/libs/Z2AudioLib/Z2SoundHandles.cpp b/libs/Z2AudioLib/Z2SoundHandles.cpp index 3449f798be..c475fabdc5 100644 --- a/libs/Z2AudioLib/Z2SoundHandles.cpp +++ b/libs/Z2AudioLib/Z2SoundHandles.cpp @@ -71,7 +71,7 @@ extern "C" extern u8 data_80451348[8]; // Declarations: // -inline JAISoundID::JAISoundID(u32 pId) : mId(pId) {} +// inline JAISoundID::JAISoundID(u32 pId) : mId(pId) {} inline JAISoundID JAISound::getID() const { return JAISoundID((u32)soundID); diff --git a/rel/d/a/d_a_horse/d_a_horse.cpp b/rel/d/a/d_a_horse/d_a_horse.cpp index 270dc74faa..9fd7cb67a4 100644 --- a/rel/d/a/d_a_horse/d_a_horse.cpp +++ b/rel/d/a/d_a_horse/d_a_horse.cpp @@ -4,6 +4,7 @@ // #include "rel/d/a/d_a_horse/d_a_horse.h" +#include "d/a/d_a_player.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -11,26 +12,6 @@ // Types: // -struct request_of_phase_process_class {}; - -struct Quaternion {}; - -struct Vec {}; - -struct cXyz { - /* 80266AE4 */ void operator+(Vec const&) const; - /* 80266B34 */ void operator-(Vec const&) const; - /* 80266B84 */ void operator*(f32) const; - /* 80266F48 */ void normalizeZP(); - /* 80267128 */ void atan2sX_Z() const; - /* 80267150 */ void atan2sY_XZ() const; - /* 8083836C */ ~cXyz(); - /* 808392D8 */ cXyz(); - - static f32 Zero[3]; - static u8 BaseX[12]; -}; - struct mDoMtx_stack_c { /* 8000CD64 */ void transS(cXyz const&); /* 8000CD9C */ void transM(f32, f32, f32); @@ -40,36 +21,11 @@ struct mDoMtx_stack_c { static u8 now[48]; }; -struct J3DMaterialTable {}; - -struct J3DAnmTexPattern {}; - struct mDoExt_btpAnm { /* 8000D54C */ void init(J3DMaterialTable*, J3DAnmTexPattern*, int, int, f32, s16, s16); /* 8000D5E8 */ void entry(J3DMaterialTable*, s16); }; -struct mDoExt_MtxCalcOldFrame { - /* 8000F848 */ void initOldFrameMorf(f32, u16, u16); -}; - -struct mDoExt_AnmRatioPack { - /* 808453FC */ ~mDoExt_AnmRatioPack(); - /* 80845438 */ mDoExt_AnmRatioPack(); -}; - -struct mDoExt_3DlineMat_c {}; - -struct mDoExt_3DlineMatSortPacket { - /* 80014738 */ void setMat(mDoExt_3DlineMat_c*); -}; - -struct ResTIMG {}; - -struct _GXColor {}; - -struct dKy_tevstr_c {}; - struct mDoExt_3DlineMat1_c { /* 80013360 */ void init(u16, u16, ResTIMG*, int); /* 8001373C */ void update(int, f32, _GXColor&, u16, dKy_tevstr_c*); @@ -79,167 +35,19 @@ struct mDoCPd_c { static u8 m_cpadInfo[256]; }; -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct fopAcM_wt_c { - /* 8001DD84 */ void waterCheck(cXyz const*); - - static f32 mWaterY[1 + 1 /* padding */]; -}; - -struct fopAcM_gc_c { - /* 8001DCBC */ void gndCheck(cXyz const*); - - static u8 mGndCheck[84]; - static f32 mGroundY; -}; - struct daTagHstop_c { static u8 m_top[4 + 4 /* padding */]; }; -struct daPy_py_c { - /* 8015F4F0 */ void setLookPos(cXyz*); -}; - -struct daPy_frameCtrl_c { - /* 8015E4CC */ void checkAnmEnd(); - /* 8015E510 */ void updateFrame(); - /* 8015E544 */ void setFrameCtrl(u8, s16, s16, f32, f32); - /* 80845354 */ ~daPy_frameCtrl_c(); - /* 808453B0 */ daPy_frameCtrl_c(); -}; - -struct daPy_actorKeep_c { - /* 8015EC48 */ void setActor(); - /* 8015ECFC */ void clearData(); -}; - struct daHorse_hio_c0 { static u8 const m[292]; }; -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800840E4 */ ~dCcD_GObjInf(); - /* 80084318 */ void ResetAtHit(); - /* 80084460 */ void ChkTgHit(); -}; - -struct daHorse_c { - /* 80838498 */ void coHitCallbackBoarJump(fopAc_ac_c*); - /* 80838798 */ void coHitCallbackBoarHit(fopAc_ac_c*, dCcD_GObjInf*); - /* 80838904 */ void coHitCallbackCowHit(fopAc_ac_c*); - /* 80838B78 */ void modelCallBack(int); - /* 80838F98 */ void createHeap(); - /* 8083940C */ void checkEnding(); - /* 80839498 */ void create(); - /* 80839D1C */ void setBasAnime(int); - /* 80839EBC */ void resetBasAnime(); - /* 80839ED4 */ void setDoubleAnime(f32, f32, f32, u16, u16, f32); - /* 8083A20C */ void setSingleAnime(u16, f32, f32, s16, f32, int); - /* 8083A3C4 */ void animePlay(); - /* 8083A5AC */ void checkDemoAction(); - /* 8083A890 */ void setStickRodeoMove(); - /* 8083AC7C */ void setStickCallMove(); - /* 8083ACEC */ void setDemoMoveData(u32*, cXyz const*); - /* 8083AEC0 */ void setDemoData(); - /* 8083B578 */ void acceptPlayerRide(); - /* 8083B600 */ void setStickData(); - /* 8083B828 */ void setTurnStartVibration(); - /* 8083B82C */ void setTurnVibration(); - /* 8083B830 */ void setMoveAnime(f32); - /* 8083BF48 */ void checkHorseNoMove(int); - /* 8083CA80 */ void checkTurnPlayerState(); - /* 8083CB38 */ void setSpeedAndAngle(); - /* 8083D748 */ void checkWaitTurn() const; - /* 8083D774 */ void setRoomInfo(int); - /* 8083D918 */ void setBodyPart(); - /* 8083D9D8 */ void setMatrix(); - /* 8083DC58 */ void setDashEffect(u32*); - /* 8083DEEC */ void setEffect(); - /* 8083E4D8 */ void setCollision(); - /* 8083E6E8 */ void autoGroundHit(); - /* 8083E760 */ void setTailAngle(); - /* 8083E8A4 */ void setNeckAngle(); - /* 8083EA78 */ void copyFootMatrix(); - /* 8083EB10 */ void setFootMatrix(); - /* 8083ED88 */ void setLegAngle(f32, int, int, s16*); - /* 8083F3B0 */ void footBgCheck(); - /* 8083F9AC */ void setReinPosMoveInit(int); - /* 8083FDAC */ void copyReinPos(); - /* 8083FEB4 */ void setReinPosHandSubstance(int); - /* 8084010C */ void setReinPosNormalSubstance(); - /* 808402F8 */ void bgCheck(); - /* 80840714 */ void checkSpecialWallHitSubstance(cXyz const&) const; - /* 808407B0 */ void setServiceWaitTimer(); - /* 80840800 */ void checkServiceWaitAnime(); - /* 80840844 */ void checkTurnInput(); - /* 808408F0 */ void checkTgHitTurn(); - /* 808409C0 */ void checkTurnAfterFastMove(f32); - /* 80840B28 */ void setNeckAnimeMorf(); - /* 80840B88 */ void setNeckAnime(u16, f32, f32, s16); - /* 80840CA4 */ void resetNeckAnime(); - /* 80840CE4 */ void setLashCnt(); - /* 80840FE0 */ void setTalkModeWolf(); - /* 80841084 */ void setBoarHit(fopAc_ac_c*, int); - /* 8084116C */ void savePos(); - /* 808411D0 */ void callHorseSubstance(cXyz const*); - /* 80841468 */ void setHorsePosAndAngleSubstance(cXyz const*, s16); - /* 808415B4 */ void checkPlayerHeavy(); - /* 80841628 */ void setTgCoGrp(u32, u32); - /* 80841698 */ void onRideFlgSubstance(); - /* 808416D4 */ void offRideFlgSubstance(); - /* 80841708 */ void procWaitInit(); - /* 808417B8 */ void procWait(); - /* 80841F04 */ void procMoveInit(); - /* 80841F80 */ void procMove(); - /* 808423DC */ void procStopInit(); - /* 808425BC */ void procStop(); - /* 80842878 */ void procTurnInit(int); - /* 80842AB0 */ void procTurn(); - /* 80843008 */ void procJumpInit(int); - /* 808432E0 */ void procJump(); - /* 80843604 */ void procLandInit(f32, int); - /* 80843770 */ void procLand(); - /* 808438AC */ void procLargeDamageInit(); - /* 8084396C */ void procLargeDamage(); - /* 808439C8 */ void procToolDemoInit(); - /* 80843A44 */ void procToolDemo(); - /* 80843BFC */ void searchSceneChangeArea(fopAc_ac_c*); - /* 80843C74 */ void execute(); - /* 80844590 */ void draw(); - /* 8084478C */ ~daHorse_c(); - /* 80844CB0 */ daHorse_c(); - - static u8 const m_footJointTable[8]; - static f32 const m_callLimitDistance2; -}; - -struct daHorseRein_c { - /* 80837F2C */ void setReinPos(int); - /* 808383A8 */ void setReinPosPart(int); - /* 80844FB0 */ ~daHorseRein_c(); - /* 80844FEC */ daHorseRein_c(); -}; - -struct daHorseFootData_c { - /* 80844F70 */ ~daHorseFootData_c(); - /* 80844FAC */ daHorseFootData_c(); -}; - struct daCow_c { /* 8065CFBC */ void isAngry(); /* 8065D0B8 */ void setAngryHit(); }; -struct cBgS_PolyInfo { - /* 802680B0 */ ~cBgS_PolyInfo(); -}; - struct daAlink_c { struct daAlink_ANM {}; @@ -261,38 +69,10 @@ struct dVibration_c { /* 8006FD94 */ void StopQuake(int); }; -struct dSv_horse_place_c { - /* 80032C64 */ void set(char const*, cXyz const&, s16, s8); -}; - -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; - -struct dStage_roomControl_c { - static u8 mDemoArcName[10 + 2 /* padding */]; -}; - -struct J3DModelData {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); - /* 8003C400 */ void getIDRes(char const*, u16, dRes_info_c*, int); -}; - struct dPath {}; struct dPa_levelEcallBack {}; -struct csXyz {}; - struct dPa_control_c { struct level_c { /* 8004B918 */ void getEmitter(u32); @@ -303,28 +83,6 @@ struct dPa_control_c { _GXColor const*, cXyz const*, f32); }; -struct dBgS { - /* 80074B98 */ void GetExitId(cBgS_PolyInfo const&); - /* 80074BE8 */ void GetPolyColor(cBgS_PolyInfo const&); - /* 80074C6C */ void GetHorseNoEntry(cBgS_PolyInfo const&); - /* 80074CBC */ void GetSpecialCode(cBgS_PolyInfo const&); - /* 80074EF0 */ void GetGroundCode(cBgS_PolyInfo const&); - /* 80075100 */ void GetRoomId(cBgS_PolyInfo const&); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F58 */ void SetWall(f32, f32); - /* 808452E4 */ ~dBgS_AcchCir(); -}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076288 */ void Set(fopAc_ac_c*, int, dBgS_AcchCir*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - struct dPaPo_c { /* 80050C9C */ void init(dBgS_Acch*, f32, f32); }; @@ -338,13 +96,6 @@ struct dPaPoF_c { static u8 m_emitterFourData[60 + 28 /* padding */]; }; -struct dMsgFlow_c { - /* 80249F00 */ dMsgFlow_c(); - /* 80249F48 */ ~dMsgFlow_c(); - /* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**); - /* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int); -}; - struct dEvt_control_c { /* 80042468 */ void reset(); }; @@ -357,10 +108,6 @@ struct dEvent_manager_c { /* 800483E0 */ void getGoal(); }; -struct dDlst_shadowControl_c { - static u8 mSimpleTexObj[32]; -}; - struct dDemo_object_c { /* 80039088 */ void getActor(u8); }; @@ -377,50 +124,10 @@ struct dComIfG_play_c { /* 8002C97C */ void getLayerNo(int); }; -struct cCcD_Obj {}; - struct dCcMassS_Mng { /* 80085D98 */ void Set(cCcD_Obj*, u8); }; -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcSph {}; - -struct dCcD_SrcCyl {}; - -struct dCcD_Sph { - /* 80084A34 */ void Set(dCcD_SrcSph const&); -}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80083830 */ void Move(); - /* 80845218 */ ~dCcD_GStts(); -}; - -struct dCcD_Cyl { - /* 800848B4 */ void Set(dCcD_SrcCyl const&); - /* 80084954 */ void MoveCAt(cXyz&); - /* 808450C8 */ ~dCcD_Cyl(); - /* 80845194 */ dCcD_Cyl(); -}; - -struct dBgS_PolyPassChk { - /* 80078EF8 */ void SetHorse(); -}; - -struct dBgS_LinChk { - /* 80077D64 */ void Set(cXyz const*, cXyz const*, fopAc_ac_c const*); -}; - -struct dBgS_HorseLinChk { - /* 80078460 */ dBgS_HorseLinChk(); - /* 800784BC */ ~dBgS_HorseLinChk(); -}; - struct dBgS_HorseAcch { /* 80845274 */ ~dBgS_HorseAcch(); }; @@ -436,81 +143,18 @@ struct dAttList_c { struct camera_class {}; -struct cM3dGSph { - /* 8026F648 */ void SetC(cXyz const&); - /* 80844FF0 */ ~cM3dGSph(); -}; - -struct cM3dGPla { - /* 80838750 */ ~cM3dGPla(); -}; - -struct cM3dGCyl { - /* 8026F1DC */ void SetC(cXyz const&); - /* 8026F1F8 */ void SetH(f32); - /* 8026F200 */ void SetR(f32); - /* 80845038 */ ~cM3dGCyl(); -}; - -struct cM3dGCir { - /* 8026EF18 */ ~cM3dGCir(); -}; - -struct cM3dGAab { - /* 80845080 */ ~cM3dGAab(); -}; - struct cCcS { /* 80264BA8 */ void Set(cCcD_Obj*); }; -struct cCcD_Stts { - /* 8026395C */ void ClrCcMove(); -}; - -struct cCcD_ObjTg { - /* 80264894 */ void SetGrp(u32); -}; - -struct cCcD_ObjCo { - /* 8026491C */ void SetVsGrp(u32); -}; - -struct cCcD_GStts { - /* 80844B44 */ ~cCcD_GStts(); -}; - -struct cBgS_LinChk {}; - -struct cBgS { - /* 800743B4 */ void LineCross(cBgS_LinChk*); - /* 80074660 */ void ChkPolySafe(cBgS_PolyInfo const&); - /* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; -}; - -struct _GXTexObj {}; - struct Z2SeqMgr { /* 802AF49C */ void subBgmStart(u32); }; -struct JAISoundID {}; - struct Z2SeMgr { /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); }; -struct Z2CreatureRide { - /* 802C4FFC */ Z2CreatureRide(); - /* 802C5114 */ ~Z2CreatureRide(); - /* 802C520C */ void init(Vec*, Vec*, u8, u8); -}; - -struct Z2Creature { - /* 802C0628 */ void initAnime(void*, bool, f32, f32); - /* 802C06D0 */ void updateAnime(f32, f32); -}; - struct Z2AudioMgr { static u8 mAudioMgrPtr[4 + 4 /* padding */]; }; @@ -519,57 +163,6 @@ struct JMath { static u8 sincosTable_[65536]; }; -struct J3DTransformInfo {}; - -struct J3DSys { - static u8 mCurrentMtx[48]; -}; - -struct J3DMtxCalcNoAnmBase { - /* 80839348 */ ~J3DMtxCalcNoAnmBase(); -}; - -template -struct J3DMtxCalcNoAnm {}; -/* J3DMtxCalcNoAnm */ -struct J3DMtxCalcNoAnm__template0 { - /* 808392DC */ void func_808392DC(void* _this); - /* 80844BB4 */ void func_80844BB4(void* _this, Vec const&, f32 const (&)[3][4]); - /* 80844BDC */ void func_80844BDC(void* _this); -}; - -struct J3DMtxCalcJ3DSysInitMaya { - /* 8032ECAC */ void init(Vec const&, f32 const (&)[3][4]); -}; - -struct J3DMtxCalcCalcTransformMaya { - /* 8032EFBC */ void calcTransform(J3DTransformInfo const&); -}; - -struct J3DAnmTransform {}; - -struct J3DMtxCalc { - /* 808393A4 */ ~J3DMtxCalc(); - /* 80844B8C */ void setAnmTransform(u8, J3DAnmTransform*); - /* 80844B90 */ void setAnmTransform(J3DAnmTransform*); - /* 80844B94 */ bool getAnmTransform(u8); - /* 80844B9C */ bool getAnmTransform(); - /* 80844BA4 */ void setWeight(u8, f32); - /* 80844BA8 */ void getWeight(u8) const; - - static u8 mJoint[4]; -}; - -struct J3DModel {}; - -struct J3DJoint {}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 8032842C */ void checkPass(f32); - /* 80845450 */ ~J3DFrameCtrl(); -}; - // // Forward References: // @@ -878,17 +471,6 @@ extern "C" void checkPass__12J3DFrameCtrlFf(); extern "C" void init__24J3DMtxCalcJ3DSysInitMayaFRC3VecRA3_A4_Cf(); extern "C" void calcTransform__27J3DMtxCalcCalcTransformMayaFRC16J3DTransformInfo(); extern "C" void JMAEulerToQuat__FsssP10Quaternion(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXConcat(); -extern "C" void PSMTXInverse(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXQuat(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void PSVECSubtract(); -extern "C" void PSVECScale(); -extern "C" void PSVECSquareMag(); -extern "C" void PSVECSquareDistance(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void __construct_new_array(); @@ -913,8 +495,6 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void abs(); -extern "C" void strcmp(); extern "C" u8 const m_handLeftInSidePos__9daAlink_c[12]; extern "C" u8 const m_handRightInSidePos__9daAlink_c[12]; extern "C" extern void* __vt__19mDoExt_3DlineMat1_c[5]; @@ -941,16 +521,12 @@ extern "C" extern u8 g_env_light[4880]; extern "C" extern u8 g_meter2_info[248]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 BaseX__4cXyz[12]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 __float_nan; extern "C" f32 mGroundY__11fopAcM_gc_c; extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; -extern "C" extern u8 struct_80450D64[4]; extern "C" u8 m_top__12daTagHstop_c[4 + 4 /* padding */]; extern "C" u8 m_object__7dDemo_c[4]; -extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" u8 mJoint__10J3DMtxCalc[4]; extern "C" void isAngry__7daCow_cFv(); @@ -1122,7 +698,8 @@ asm void daHorseRein_c::setReinPos(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::~cXyz() { +// asm cXyz::~cXyz() { +extern "C" asm void __dt__4cXyzFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__4cXyzFv.s" } @@ -1510,7 +1087,8 @@ asm void daHorse_c::coHitCallbackBoarJump(fopAc_ac_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGPla::~cM3dGPla() { +// asm cM3dGPla::~cM3dGPla() { +extern "C" asm void __dt__8cM3dGPlaFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__8cM3dGPlaFv.s" } @@ -1627,7 +1205,8 @@ asm void daHorse_c::createHeap() { #pragma pop /* 808392D8-808392DC 001498 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -cXyz::cXyz() { +//cXyz::cXyz() +extern "C" void __ct__4cXyzFv() { /* empty function */ } @@ -1646,7 +1225,8 @@ extern "C" asm void func_808392DC(void* _this) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DMtxCalcNoAnmBase::~J3DMtxCalcNoAnmBase() { +// asm J3DMtxCalcNoAnmBase::~J3DMtxCalcNoAnmBase() { +extern "C" asm void __dt__19J3DMtxCalcNoAnmBaseFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__19J3DMtxCalcNoAnmBaseFv.s" } @@ -1656,7 +1236,8 @@ asm J3DMtxCalcNoAnmBase::~J3DMtxCalcNoAnmBase() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DMtxCalc::~J3DMtxCalc() { +// asm J3DMtxCalc::~J3DMtxCalc() { +extern "C" asm void __dt__10J3DMtxCalcFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__10J3DMtxCalcFv.s" } @@ -3520,7 +3101,8 @@ static asm void daHorse_Delete(daHorse_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cCcD_GStts::~cCcD_GStts() { +// asm cCcD_GStts::~cCcD_GStts() { +extern "C" asm void __dt__10cCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__10cCcD_GSttsFv.s" } @@ -3672,14 +3254,16 @@ daHorseFootData_c::daHorseFootData_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daHorseRein_c::~daHorseRein_c() { +// asm daHorseRein_c::~daHorseRein_c() { +extern "C" asm void __dt__13daHorseRein_cFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__13daHorseRein_cFv.s" } #pragma pop /* 80844FEC-80844FF0 00D1AC 0004+00 1/1 0/0 0/0 .text __ct__13daHorseRein_cFv */ -daHorseRein_c::daHorseRein_c() { +// daHorseRein_c::daHorseRein_c() { +extern "C" void __ct__13daHorseRein_cFv() { /* empty function */ } @@ -3687,7 +3271,8 @@ daHorseRein_c::daHorseRein_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGSph::~cM3dGSph() { +// asm cM3dGSph::~cM3dGSph() { +extern "C" asm void __dt__8cM3dGSphFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__8cM3dGSphFv.s" } @@ -3697,7 +3282,8 @@ asm cM3dGSph::~cM3dGSph() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGCyl::~cM3dGCyl() { +// asm cM3dGCyl::~cM3dGCyl() { +extern "C" asm void __dt__8cM3dGCylFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__8cM3dGCylFv.s" } @@ -3707,7 +3293,8 @@ asm cM3dGCyl::~cM3dGCyl() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGAab::~cM3dGAab() { +// asm cM3dGAab::~cM3dGAab() { +extern "C" asm void __dt__8cM3dGAabFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__8cM3dGAabFv.s" } @@ -3717,7 +3304,8 @@ asm cM3dGAab::~cM3dGAab() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_Cyl::~dCcD_Cyl() { +// asm dCcD_Cyl::~dCcD_Cyl() { +extern "C" asm void __dt__8dCcD_CylFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__8dCcD_CylFv.s" } @@ -3727,7 +3315,8 @@ asm dCcD_Cyl::~dCcD_Cyl() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_Cyl::dCcD_Cyl() { +// asm dCcD_Cyl::dCcD_Cyl() { +extern "C" asm void __ct__8dCcD_CylFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__ct__8dCcD_CylFv.s" } @@ -3737,7 +3326,8 @@ asm dCcD_Cyl::dCcD_Cyl() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_GStts::~dCcD_GStts() { +// asm dCcD_GStts::~dCcD_GStts() { +extern "C" asm void __dt__10dCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__10dCcD_GSttsFv.s" } @@ -3757,7 +3347,8 @@ asm dBgS_HorseAcch::~dBgS_HorseAcch() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_AcchCir::~dBgS_AcchCir() { +// asm dBgS_AcchCir::~dBgS_AcchCir() { +extern "C" asm void __dt__12dBgS_AcchCirFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__12dBgS_AcchCirFv.s" } @@ -3767,7 +3358,8 @@ asm dBgS_AcchCir::~dBgS_AcchCir() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daPy_frameCtrl_c::~daPy_frameCtrl_c() { +// asm daPy_frameCtrl_c::~daPy_frameCtrl_c() { +extern "C" asm void __dt__16daPy_frameCtrl_cFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__16daPy_frameCtrl_cFv.s" } @@ -3807,7 +3399,8 @@ asm mDoExt_AnmRatioPack::mDoExt_AnmRatioPack() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// asm J3DFrameCtrl::~J3DFrameCtrl() { +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/d_a_horse/d_a_horse/__dt__12J3DFrameCtrlFv.s" } diff --git a/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp b/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp index d2d9dfc92d..b149a30ec2 100644 --- a/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp +++ b/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp @@ -15,10 +15,6 @@ namespace std { /* 807E2350 */ void fabsf(f32); }; -struct request_of_phase_process_class {}; - -struct Vec {}; - struct mDoMtx_stack_c { /* 8000CD9C */ void transM(f32, f32, f32); /* 8000CE38 */ void scaleM(f32, f32, f32); @@ -28,8 +24,6 @@ struct mDoMtx_stack_c { static u8 now[48]; }; -struct _GXColor {}; - struct mDoGph_gInf_c { /* 80007FD8 */ void fadeOut(f32, _GXColor&); /* 807DFAB4 */ void fadeIn(f32, _GXColor&); @@ -37,14 +31,6 @@ struct mDoGph_gInf_c { struct mDoExt_McaMorfCallBack2_c {}; -struct mDoExt_McaMorfCallBack1_c {}; - -struct J3DAnmTransform {}; - -struct J3DModelData {}; - -struct Z2Creature {}; - struct mDoExt_McaMorfSO { /* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, @@ -56,16 +42,6 @@ struct mDoExt_McaMorfSO { /* 80011310 */ void stopZelAnime(); }; -struct mDoExt_3DlineMat_c {}; - -struct mDoExt_3DlineMatSortPacket { - /* 80014738 */ void setMat(mDoExt_3DlineMat_c*); -}; - -struct ResTIMG {}; - -struct dKy_tevstr_c {}; - struct mDoExt_3DlineMat1_c { /* 80013360 */ void init(u16, u16, ResTIMG*, int); /* 80013FB0 */ void update(int, _GXColor&, dKy_tevstr_c*); @@ -81,39 +57,6 @@ struct himo_s { /* 807E1D2C */ himo_s(); }; -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct cXyz { - /* 80266AE4 */ void operator+(Vec const&) const; - /* 80266B34 */ void operator-(Vec const&) const; - /* 807D2B48 */ ~cXyz(); - /* 807E27E8 */ cXyz(f32, f32, f32); - /* 807E24FC */ cXyz(); - /* 807E235C */ cXyz(cXyz const&); - /* 807E24C8 */ void set(f32, f32, f32); - /* 807E25EC */ void abs() const; - /* 807E2808 */ void operator=(cXyz const&); - /* 807E2824 */ void operator+=(Vec const&); -}; - -struct fopAcM_gc_c { - /* 8001DCBC */ void gndCheck(cXyz const*); - - static f32 mGroundY; -}; - -struct e_wb_class {}; - -struct daPy_py_c { - /* 807E2318 */ void changeDemoPos0(cXyz const*); - /* 807E2334 */ void changeDemoMode(u32, int, int, s16); - /* 807E2348 */ void changeDemoParam2(s16); - /* 807E2404 */ void cancelOriginalDemo(); - /* 807E2444 */ void changeOriginalDemo(); -}; - struct daObjCRVSTEEL_c { /* 80BD5BFC */ void OpenSet(f32, f32); /* 80BD5C18 */ void CloseSet(f32); @@ -123,15 +66,6 @@ struct daObjCRVGATE_c { /* 80BD245C */ void SetB_Close(); }; -struct daHorse_c { - /* 807E27BC */ void cancelOriginalDemo(); - /* 807E27F8 */ void onDemoJumpDistance(f32, f32); - /* 807E28B8 */ void changeDemoPos0(cXyz const*); - /* 807E28D4 */ void changeDemoMode(u32, int); - /* 807E28E0 */ void setHorsePosAndAngle(cXyz const*, s16); - /* 807E2964 */ void changeOriginalDemo(); -}; - struct daE_WB_HIO_c { /* 807D248C */ daE_WB_HIO_c(); /* 807E20DC */ ~daE_WB_HIO_c(); @@ -148,35 +82,8 @@ struct dVibration_c { /* 8006FD94 */ void StopQuake(int); }; -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 8003498C */ void onEventBit(u16); - /* 800349BC */ void isEventBit(u16) const; -}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - struct dPa_levelEcallBack {}; -struct csXyz { - /* 802673F4 */ csXyz(s16, s16, s16); - /* 807E2090 */ csXyz(); - /* 807D79B0 */ ~csXyz(); - /* 807E24AC */ void operator=(csXyz const&); -}; - struct dPa_control_c { struct level_c { /* 8004B918 */ void getEmitter(u32); @@ -195,11 +102,6 @@ struct dMsgObject_c { /* 8023822C */ void getStatus(); }; -struct dEvt_info_c { - /* 807E24D8 */ void onCondition(u16); - /* 807E24E8 */ void checkCommandDemoAccrpt(); -}; - struct dEvt_control_c { /* 80042468 */ void reset(); /* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int); @@ -213,45 +115,12 @@ struct dEvent_manager_c { /* 8004817C */ void cutEnd(int); }; -struct dDlst_shadowControl_c { - static u8 mSimpleTexObj[32]; -}; - struct dComIfG_play_c { /* 8002C97C */ void getLayerNo(int); }; struct dCcU_AtInfo {}; -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcSph {}; - -struct dCcD_Sph { - /* 80084A34 */ void Set(dCcD_SrcSph const&); - /* 807E1E04 */ ~dCcD_Sph(); - /* 807E1ED0 */ dCcD_Sph(); -}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80083830 */ void Move(); - /* 807E1F54 */ ~dCcD_GStts(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800840E4 */ ~dCcD_GObjInf(); - /* 800842C0 */ void ChkAtHit(); - /* 80084358 */ void GetAtHitObj(); - /* 80084460 */ void ChkTgHit(); - /* 800844F8 */ void GetTgHitObj(); - /* 80084658 */ void ChkCoHit(); - /* 800846F0 */ void GetCoHitObj(); -}; - struct dCamera_c { /* 801614AC */ void Start(); /* 801614D0 */ void Stop(); @@ -261,100 +130,12 @@ struct dCamera_c { /* 80180C18 */ void Reset(cXyz, cXyz); }; -struct dBgS_PolyPassChk { - /* 80078E68 */ void SetObj(); -}; - -struct dBgS_ObjGndChk_Spl { - /* 800777B0 */ dBgS_ObjGndChk_Spl(); - /* 80077848 */ ~dBgS_ObjGndChk_Spl(); -}; - -struct dBgS_ObjAcch { - /* 807E1FB0 */ ~dBgS_ObjAcch(); -}; - -struct dBgS_LinChk { - /* 80077C68 */ dBgS_LinChk(); - /* 80077CDC */ ~dBgS_LinChk(); - /* 80077D64 */ void Set(cXyz const*, cXyz const*, fopAc_ac_c const*); -}; - -struct dBgS_GndChk { - /* 8007757C */ dBgS_GndChk(); - /* 800775F0 */ ~dBgS_GndChk(); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F58 */ void SetWall(f32, f32); - /* 807E2020 */ ~dBgS_AcchCir(); -}; - -struct dBgS {}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - struct camera_class {}; -struct cM3dGSph { - /* 8026F648 */ void SetC(cXyz const&); - /* 8026F708 */ void SetR(f32); - /* 807E1D74 */ ~cM3dGSph(); -}; - -struct cM3dGCir { - /* 8026EF18 */ ~cM3dGCir(); -}; - -struct cM3dGAab { - /* 807E1DBC */ ~cM3dGAab(); -}; - -struct cCcD_Obj { - /* 80263A48 */ void GetAc(); -}; - struct cCcS { /* 80264BA8 */ void Set(cCcD_Obj*); }; -struct cCcD_ObjTg { - /* 80264894 */ void SetGrp(u32); -}; - -struct cCcD_GStts { - /* 807E2094 */ ~cCcD_GStts(); -}; - -struct cBgS_PolyInfo { - /* 802680B0 */ ~cBgS_PolyInfo(); -}; - -struct cBgS_LinChk {}; - -struct cBgS_GndChk { - /* 80267D28 */ void SetPos(cXyz const*); - /* 80267D0C */ void SetPos(Vec const*); -}; - -struct cBgS { - /* 800743B4 */ void LineCross(cBgS_LinChk*); - /* 800744A0 */ void GroundCross(cBgS_GndChk*); - /* 80074618 */ void GetActorPointer(int) const; -}; - -struct actor_place { - /* 807E2468 */ void operator=(actor_place const&); -}; - -struct _GXTexObj {}; - struct Z2SeqMgr { /* 802AF010 */ void bgmStart(u32, u32, s32); /* 802AF408 */ void bgmStop(u32, s32); @@ -364,20 +145,11 @@ struct Z2SeqMgr { /* 802AFEDC */ void bgmStreamStop(u32); }; -struct JAISoundID { - /* 807E27D0 */ JAISoundID(u32); -}; - struct Z2SeMgr { /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); }; -struct Z2CreatureRide { - /* 802C4FFC */ Z2CreatureRide(); - /* 802C520C */ void init(Vec*, Vec*, u8, u8); -}; - struct Z2AudioMgr { static u8 mAudioMgrPtr[4 + 4 /* padding */]; }; @@ -386,25 +158,6 @@ struct JMath { static u8 sincosTable_[65536]; }; -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct J3DSys { - static u8 mCurrentMtx[48]; -}; - -struct J3DModel {}; - -struct J3DJoint {}; - -struct J3DFrameCtrl { - /* 8032842C */ void checkPass(f32); -}; - // // Forward References: // @@ -513,7 +266,7 @@ extern "C" void onCondition__11dEvt_info_cFUs(); extern "C" void checkCommandDemoAccrpt__11dEvt_info_cFv(); extern "C" void __ct__4cXyzFv(); extern "C" static void fopAcM_SearchByName__Fs(); -extern "C" static void fopAcM_SearchByID__FUi(); +extern "C" static void fopAcM_SearchByID__FUi(unsigned int); extern "C" static void dComIfGp_getHorseActor__Fv(); extern "C" static void dComIfGp_getPlayer__Fi(); extern "C" static void dComIfGp_getCamera__Fi(); @@ -692,12 +445,6 @@ extern "C" void init__14Z2CreatureRideFP3VecP3VecUcUc(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void PSVECScale(); -extern "C" void PSVECSquareMag(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void __ptmf_scall(); @@ -721,8 +468,6 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void abs(); -extern "C" void strcmp(); extern "C" extern void* __vt__19mDoExt_3DlineMat1_c[5]; extern "C" extern void* g_fopAc_Method[8]; extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; @@ -737,12 +482,10 @@ extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern u32 g_blackColor; extern "C" extern void* calc_mtx[1 + 1 /* padding */]; -extern "C" extern u32 __float_nan; extern "C" extern u8 struct_80450C98[4]; extern "C" f32 mGroundY__11fopAcM_gc_c; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -1601,7 +1344,8 @@ static asm void himo_control1(e_wb_class* param_0, cXyz* param_1, int param_2, s #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::~cXyz() { +// asm cXyz::~cXyz() { +extern "C" asm void __dt__4cXyzFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__4cXyzFv.s" } @@ -2487,7 +2231,8 @@ static asm void e_wb_b_ikki(e_wb_class* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm csXyz::~csXyz() { +// asm csXyz::~csXyz() { +extern "C" asm void __dt__5csXyzFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__5csXyzFv.s" } @@ -4739,7 +4484,8 @@ asm himo_s::himo_s() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGSph::~cM3dGSph() { +// asm cM3dGSph::~cM3dGSph() { +extern "C" asm void __dt__8cM3dGSphFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__8cM3dGSphFv.s" } @@ -4749,7 +4495,8 @@ asm cM3dGSph::~cM3dGSph() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGAab::~cM3dGAab() { +// asm cM3dGAab::~cM3dGAab() { +extern "C" asm void __dt__8cM3dGAabFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__8cM3dGAabFv.s" } @@ -4759,7 +4506,8 @@ asm cM3dGAab::~cM3dGAab() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_Sph::~dCcD_Sph() { +// asm dCcD_Sph::~dCcD_Sph() { +extern "C" asm void __dt__8dCcD_SphFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__8dCcD_SphFv.s" } @@ -4769,7 +4517,8 @@ asm dCcD_Sph::~dCcD_Sph() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_Sph::dCcD_Sph() { +// asm dCcD_Sph::dCcD_Sph() { +extern "C" asm void __ct__8dCcD_SphFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__ct__8dCcD_SphFv.s" } @@ -4779,7 +4528,8 @@ asm dCcD_Sph::dCcD_Sph() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_GStts::~dCcD_GStts() { +// asm dCcD_GStts::~dCcD_GStts() { +extern "C" asm void __dt__10dCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__10dCcD_GSttsFv.s" } @@ -4789,7 +4539,8 @@ asm dCcD_GStts::~dCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_ObjAcch::~dBgS_ObjAcch() { +// asm dBgS_ObjAcch::~dBgS_ObjAcch() { +extern "C" asm void __dt__12dBgS_ObjAcchFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__12dBgS_ObjAcchFv.s" } @@ -4799,14 +4550,16 @@ asm dBgS_ObjAcch::~dBgS_ObjAcch() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_AcchCir::~dBgS_AcchCir() { +// asm dBgS_AcchCir::~dBgS_AcchCir() { +extern "C" asm void __dt__12dBgS_AcchCirFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__12dBgS_AcchCirFv.s" } #pragma pop /* 807E2090-807E2094 00FCF0 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -csXyz::csXyz() { +// csXyz::csXyz() { +extern "C" void __ct__5csXyzFv() { /* empty function */ } @@ -4814,7 +4567,8 @@ csXyz::csXyz() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cCcD_GStts::~cCcD_GStts() { +// asm cCcD_GStts::~cCcD_GStts() { +extern "C" asm void __dt__10cCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__dt__10cCcD_GSttsFv.s" } @@ -4945,7 +4699,8 @@ asm void std::fabsf(f32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::cXyz(cXyz const& param_0) { +// asm cXyz::cXyz(cXyz const& param_0) { +extern "C" asm void __ct__4cXyzFRC4cXyz() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__ct__4cXyzFRC4cXyz.s" } @@ -5047,7 +4802,8 @@ asm void actor_place::operator=(actor_place const& param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void csXyz::operator=(csXyz const& param_0) { +// asm void csXyz::operator=(csXyz const& param_0) { +extern "C" asm void __as__5csXyzFRC5csXyz() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__as__5csXyzFRC5csXyz.s" } @@ -5057,7 +4813,8 @@ asm void csXyz::operator=(csXyz const& param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::set(f32 param_0, f32 param_1, f32 param_2) { +// asm void cXyz::set(f32 param_0, f32 param_1, f32 param_2) { +extern "C" asm void set__4cXyzFfff() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/set__4cXyzFfff.s" } @@ -5077,14 +4834,15 @@ asm void dEvt_info_c::onCondition(u16 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dEvt_info_c::checkCommandDemoAccrpt() { +asm bool dEvt_info_c::checkCommandDemoAccrpt() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/checkCommandDemoAccrpt__11dEvt_info_cFv.s" } #pragma pop /* 807E24FC-807E2500 01015C 0004+00 4/4 0/0 0/0 .text __ct__4cXyzFv */ -cXyz::cXyz() { +// cXyz::cXyz() { +extern "C" void __ct__4cXyzFv() { /* empty function */ } @@ -5102,7 +4860,7 @@ static asm void fopAcM_SearchByName(s16 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void fopAcM_SearchByID(unsigned int param_0) { +extern "C" static asm void fopAcM_SearchByID__FUi(unsigned int param_0) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/fopAcM_SearchByID__FUi.s" } @@ -5162,7 +4920,8 @@ static asm void dMsgObject_isTalkNowCheck() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::abs() const { +// asm void cXyz::abs() const { +extern "C" asm void abs__4cXyzCFv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/abs__4cXyzCFv.s" } @@ -5229,7 +4988,8 @@ static asm void dComIfGp_getVibration() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::cXyz(f32 param_0, f32 param_1, f32 param_2) { +// asm cXyz::cXyz(f32 param_0, f32 param_1, f32 param_2) { +extern "C" asm void __ct__4cXyzFfff() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__ct__4cXyzFfff.s" } @@ -5250,7 +5010,8 @@ asm void daHorse_c::onDemoJumpDistance(f32 param_0, f32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::operator=(cXyz const& param_0) { +// asm void cXyz::operator=(cXyz const& param_0) { +extern "C" asm void __as__4cXyzFRC4cXyz() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__as__4cXyzFRC4cXyz.s" } @@ -5260,7 +5021,8 @@ asm void cXyz::operator=(cXyz const& param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::operator+=(Vec const& param_0) { +// asm void cXyz::operator+=(Vec const& param_0) { +extern "C" asm void __apl__4cXyzFRC3Vec() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/__apl__4cXyzFRC3Vec.s" } diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index d45357fdb6..37a05cdd04 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -21,6 +21,7 @@ #include "m_Do/m_Do_mtx.h" #include "rel/d/a/d_a_crod/d_a_crod.h" #include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" +#include "rel/d/a/d_a_horse/d_a_horse.h" // // Types: @@ -6429,46 +6430,40 @@ asm void daAlink_c::setNeckAngle() { /* 800A2160-800A2198 09CAA0 0038+00 1/0 0/0 0/0 .text getStickAngleFromPlayerShape__9daAlink_cCFPs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getStickAngleFromPlayerShape(s16* param_0) const { - nofralloc -#include "asm/d/a/d_a_alink/getStickAngleFromPlayerShape__9daAlink_cCFPs.s" +bool daAlink_c::getStickAngleFromPlayerShape(s16* param_0) const { + // inline uses literal + // if (checkInputOnR()) { + if (field_0x33ac > lit_6021) { + *param_0 = field_0x2fe2 - mCollisionRot.y; + return true; + } + *param_0 = 0; + return false; } -#pragma pop /* 800A2198-800A21E0 09CAD8 0048+00 42/42 0/0 0/0 .text commonLineCheck__9daAlink_cFP4cXyzP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::commonLineCheck(cXyz* param_0, cXyz* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/commonLineCheck__9daAlink_cFP4cXyzP4cXyz.s" +bool daAlink_c::commonLineCheck(cXyz* param_0, cXyz* param_1) { + mLinkLinChk.Set(param_0, param_1, this); + return dComIfG_Bgsp().LineCross(&mLinkLinChk); } -#pragma pop /* 800A21E0-800A2280 09CB20 00A0+00 18/18 0/0 2/2 .text * getMoveBGActorName__9daAlink_cFR13cBgS_PolyInfoi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s16 daAlink_c::getMoveBGActorName(cBgS_PolyInfo& param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_alink/getMoveBGActorName__9daAlink_cFR13cBgS_PolyInfoi.s" +s16 daAlink_c::getMoveBGActorName(cBgS_PolyInfo& param_0, int param_1) { + if ((param_1 != 0 || dComIfG_Bgsp().ChkPolySafe(param_0)) && dComIfG_Bgsp().ChkMoveBG_NoDABg(param_0) && dComIfG_Bgsp().GetActorPointer(param_0)) { + return fopAcM_GetName(dComIfG_Bgsp().GetActorPointer(param_0)); + } + return 0xFD; } -#pragma pop /* 800A2280-800A22E8 09CBC0 0068+00 2/2 0/0 0/0 .text checkGoronRide__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkGoronRide() { - nofralloc -#include "asm/d/a/d_a_alink/checkGoronRide__9daAlink_cFv.s" +fopAc_ac_c* daAlink_c::checkGoronRide() { + if (mLinkAcch.ChkGroundHit() && getMoveBGActorName(mLinkAcch.m_gnd, 0) == 0x21) { + return dComIfG_Bgsp().GetActorPointer(mLinkAcch.m_gnd); + } + return NULL; } -#pragma pop /* ############################################################################################## */ /* 80453224-80453228 001824 0004+00 1/1 0/0 0/0 .sdata2 @56018 */ @@ -8409,35 +8404,54 @@ asm void daAlink_c::handBgCheck() { #pragma pop /* 800A3C8C-800A3CE4 09E5CC 0058+00 11/11 0/0 0/0 .text setItemHeap__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JKRHeap* daAlink_c::setItemHeap() { - nofralloc -#include "asm/d/a/d_a_alink/setItemHeap__9daAlink_cFv.s" +JKRHeap* daAlink_c::setItemHeap() { + if (!i_checkResetFlg0(RFLG0_UNK_4000)) { + field_0x2fa0 ^= 1; + i_onResetFlg0(RFLG0_UNK_4000); + } + return mItemHeap[field_0x2fa0].setAnimeHeap(); } -#pragma pop /* 800A3CE4-800A3D0C 09E624 0028+00 4/4 0/0 0/0 .text setIdxMask__9daAlink_cFPUsPUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setIdxMask(u16* param_0, u16* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/setIdxMask__9daAlink_cFPUsPUs.s" +void daAlink_c::setIdxMask(u16* param_0, u16* param_1) { + if (*param_0 == 0xFFFF) { + u16 tmp = (*param_1 >> 12) & 0xF; + *param_1 &= 0xFFF; + + if (tmp != 0) { + *param_0 = tmp; + } + } } -#pragma pop /* 800A3D0C-800A3D7C 09E64C 0070+00 5/5 0/0 0/0 .text * getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl */ +// setIdxMask param loads backwards +#ifdef NONMATCHING +void* daAlink_c::getAnimeResource(daPy_anmHeap_c* p_anmHeap, u16 param_1, u32 buf_size) { + p_anmHeap->setBufferSize(buf_size); + + u16 tmp2 = 0xFFFF; + u16* tmp1 = ¶m_1; + + setIdxMask(tmp1, &tmp2); + + if (tmp2 == 0xFFFF) { + return p_anmHeap->loadDataIdx(*tmp1); + } else { + return p_anmHeap->loadDataDemoRID(*tmp1, tmp2); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::getAnimeResource(daPy_anmHeap_c* param_0, u16 param_1, u32 param_2) { +asm void* daAlink_c::getAnimeResource(daPy_anmHeap_c* param_0, u16 param_1, u32 param_2) { nofralloc #include "asm/d/a/d_a_alink/getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl.s" } #pragma pop +#endif /* 800A3D7C-800A3E30 09E6BC 00B4+00 16/16 0/0 0/0 .text initModel__9daAlink_cFP12J3DModelDataUlUl */ @@ -15548,8 +15562,55 @@ BOOL daAlink_c::checkSlope() const { return field_0x3174 != 8 && field_0x2ff0 < -field_0x3122; } +inline daHorse_c* i_dComIfGp_getHorseActor() { + return (daHorse_c*)g_dComIfG_gameInfo.play.getPlayerPtr(1); +} + /* 800B221C-800B23FC 0ACB5C 01E0+00 1/0 0/0 0/0 .text setPlayerPosAndAngle__9daAlink_cFPC4cXyzsi */ +// need to figure out member function pointer calls +#ifdef NONMATCHING +void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, s16 param_1, int param_2) { + if (checkEventRun() || param_2 != 0 || mSpecialMode != 0) { + if (p_pos != NULL) { + mCurrent.mPosition = *p_pos; + mNext.mPosition = mCurrent.mPosition; + field_0x3798 = mCurrent.mPosition; + i_onEndResetFlg0(ERFLG0_UNK_800000); + i_onEndResetFlg2(ERFLG2_UNK_100); + if (mDemo.getDemoMode() != 0x59) { + mSpeed.y = FLOAT_LABEL(lit_6108); + } + } + + mCollisionRot.y = param_1; + mCurrent.mAngle.y = param_1; + field_0x2fe6 = mCollisionRot.y; + if ((mActionID == 0x145 || mActionID == 0xE2) && !i_checkWolf()) { + if (field_0x3198 != 0) { + field_0x37c8.x = mCurrent.mPosition.x; + field_0x37c8.z = mCurrent.mPosition.z; + } + } + + if (i_checkMagneBootsOn() && cBgW_CheckBGround(mMagneBootsTopVec.y)) { + field_0x3118 = mCollisionRot.y; + } + + if (checkHorseRide() || checkSpinnerRide()) { + fopAc_ac_c* rideAc = mRideActor.getActor(); + rideAc->mCurrent.mPosition = mCurrent.mPosition; + rideAc->mCollisionRot.y = mCollisionRot.y; + rideAc->mCurrent.mAngle.y = mCollisionRot.y; + rideAc->mSpeed.y = FLOAT_LABEL(lit_6108); + } else { + i_dComIfGp_getHorseActor()->setHorsePosAndAngle(&mCurrent.mPosition, mCollisionRot.y); + } + + field_0x814.ClrCcMove(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -15558,27 +15619,48 @@ asm void daAlink_c::setPlayerPosAndAngle(cXyz const* param_0, s16 param_1, int p #include "asm/d/a/d_a_alink/setPlayerPosAndAngle__9daAlink_cFPC4cXyzsi.s" } #pragma pop +#endif /* 800B23FC-800B24F4 0ACD3C 00F8+00 1/0 0/0 0/0 .text * setPlayerPosAndAngle__9daAlink_cFPC4cXyzPC5csXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setPlayerPosAndAngle(cXyz const* param_0, csXyz const* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/setPlayerPosAndAngle__9daAlink_cFPC4cXyzPC5csXyz.s" +void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, csXyz const* p_angle) { + if (checkEventRun() || mSpecialMode != 0) { + if (p_pos != NULL) { + mCurrent.mPosition = *p_pos; + mNext.mPosition = mCurrent.mPosition; + field_0x3798 = mCurrent.mPosition; + i_onEndResetFlg0(ERFLG0_UNK_800000); + i_onEndResetFlg2(ERFLG2_UNK_100); + mSpeed.y = FLOAT_LABEL(lit_6108); + } + + if (p_angle != NULL) { + mCollisionRot = *p_angle; + mCurrent.mAngle.y = mCollisionRot.y; + field_0x2fe6 = mCollisionRot.y; + } + + field_0x814.ClrCcMove(); + } } -#pragma pop /* 800B24F4-800B25CC 0ACE34 00D8+00 1/0 0/0 0/0 .text setPlayerPosAndAngle__9daAlink_cFPA4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setPlayerPosAndAngle(f32 (*param_0)[4]) { - nofralloc -#include "asm/d/a/d_a_alink/setPlayerPosAndAngle__9daAlink_cFPA4_f.s" +void daAlink_c::setPlayerPosAndAngle(Mtx param_0) { + if (checkEventRun() || mSpecialMode != 0) { + mCurrent.mPosition.x = param_0[0][3]; + mCurrent.mPosition.y = param_0[1][3]; + mCurrent.mPosition.z = param_0[2][3]; + mNext.mPosition = mCurrent.mPosition; + field_0x3798 = mCurrent.mPosition; + i_onEndResetFlg0(ERFLG0_UNK_800000); + i_onEndResetFlg2(ERFLG2_UNK_100); + mDoMtx_MtxToRot(param_0, &mCollisionRot); + mCurrent.mAngle.y = mCollisionRot.y; + field_0x2fe6 = mCollisionRot.y; + mSpeed.y = FLOAT_LABEL(lit_6108); + field_0x814.ClrCcMove(); + } } -#pragma pop /* 800B25CC-800B25E8 0ACF0C 001C+00 16/16 0/0 0/0 .text itemTriggerCheck__9daAlink_cFUc */ @@ -16384,14 +16466,9 @@ asm void daAlink_c::itemUnequip(u16 param_0, f32 param_1) { #pragma pop /* 800B97EC-800B983C 0B412C 0050+00 2/2 0/0 0/0 .text checkFastUnequip__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkFastUnequip() { - nofralloc -#include "asm/d/a/d_a_alink/checkFastUnequip__9daAlink_cFv.s" +bool daAlink_c::checkFastUnequip() { + return mActionID == PREACTION_UNEQUIP || mActionID == HORSE_GETOFF || checkEventRun(); } -#pragma pop /* 800B983C-800B994C 0B417C 0110+00 10/10 0/0 0/0 .text allUnequip__9daAlink_cFi */ #pragma push @@ -16435,14 +16512,13 @@ asm BOOL daAlink_c::checkGroundSpecialMode() { /* 800BA09C-800BA0D0 0B49DC 0034+00 4/4 0/0 0/0 .text commonCheckNextAction__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::commonCheckNextAction(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/commonCheckNextAction__9daAlink_cFi.s" +void daAlink_c::commonCheckNextAction(int param_0) { + if (i_checkWolf()) { + checkNextActionWolf(param_0); + } else { + checkNextAction(param_0); + } } -#pragma pop /* 800BA0D0-800BA6A0 0B4A10 05D0+00 91/91 0/0 0/0 .text checkNextAction__9daAlink_cFi */ #pragma push @@ -16927,10 +17003,6 @@ asm void daAlink_c::returnKeepItemData() { } #pragma pop -inline daHorse_c* i_dComIfGp_getHorseActor() { - return (daHorse_c*)g_dComIfG_gameInfo.play.getPlayerPtr(1); -} - /* 800BF8D0-800BF9F0 0BA210 0120+00 2/2 0/0 0/0 .text setItemModel__9daAlink_cFv */ #pragma push #pragma optimization_level 0 @@ -29627,15 +29699,14 @@ asm void daAlink_c::procIronBallReturn() { } #pragma pop -/* 80115C20-80115C50 110560 0030+00 72/72 0/0 0/0 .text checkEventRun__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL daAlink_c::checkEventRun() const { - nofralloc -#include "asm/d/a/d_a_alink/checkEventRun__9daAlink_cCFv.s" +inline BOOL i_dComIfGp_event_runCheck() { + return g_dComIfG_gameInfo.play.getEvent().runCheck(); +} + +/* 80115C20-80115C50 110560 0030+00 72/72 0/0 0/0 .text checkEventRun__9daAlink_cCFv */ +BOOL daAlink_c::checkEventRun() const { + return i_dComIfGp_event_runCheck() || checkPlayerDemoMode(); } -#pragma pop /* 80115C50-80115D08 110590 00B8+00 2/2 0/0 0/0 .text createNpcTks__9daAlink_cFP4cXyziUl */ diff --git a/src/d/a/d_a_horse_static.cpp b/src/d/a/d_a_horse_static.cpp index 6b8db45607..8f7a8a18e9 100644 --- a/src/d/a/d_a_horse_static.cpp +++ b/src/d/a/d_a_horse_static.cpp @@ -8,58 +8,47 @@ #include "dolphin/types.h" BOOL e_wb_class::checkWait() { - return unk1460 == 0x2A; + return field_0x5b4 == 0x2A; } void e_wb_class::setPlayerRideNow() { - unk1680 = 0x67; - unk1460 = 0; - unk1726 |= 3; + field_0x690 = 0x67; + field_0x5b4 = 0; + field_0x6be |= 3; } void e_wb_class::setPlayerRide() { - unk1680 = 0x65; - unk1460 = 0; - unk1726 |= 3; + field_0x690 = 0x65; + field_0x5b4 = 0; + field_0x6be |= 3; mZ2Ride.setLinkRiding(true); } void e_wb_class::getOff() { - if (!checkDownDamage() || unk1680 == 0x67) { - unk1680 = 0; + if (!checkDownDamage() || field_0x690 == 0x67) { + field_0x690 = 0; } else { - unk1682 = 0; + field_0x692 = 0; } - unk1460 = 0; - unk1726 &= 0xfffc; + field_0x5b4 = 0; + field_0x6be &= 0xfffc; mZ2Ride.setLinkRiding(false); } BOOL e_wb_class::checkDownDamage() { - bool downDamage = false; - s16 tmp = unk1680; - - if (tmp != 0x65 && tmp != 0x66 && tmp != 0x15) { - downDamage = true; - } - return downDamage; + return field_0x690 != 0x65 && field_0x690 != 0x66 && field_0x690 != 0x15; } u8 e_wb_class::checkNormalRideMode() const { - bool normalRideMode = false; - - if (unk1680 != 0x66 || unk1460 < 1) { - normalRideMode = 1; - } - return normalRideMode; + return field_0x690 != 0x66 || field_0x5b4 < 1; } void e_wb_class::setRunRideMode() { - if (unk1680 == 0x65) { - unk1460 = 0; - unk1680 = 0x15; - unk1682 = 0x65; + if (field_0x690 == 0x65) { + field_0x5b4 = 0; + field_0x690 = 0x15; + field_0x692 = 0x65; } } diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp index 08d9c99cb4..b98fe06074 100644 --- a/src/d/com/d_com_inf_game.cpp +++ b/src/d/com/d_com_inf_game.cpp @@ -28,10 +28,6 @@ struct dSmplMdl_draw_c { /* 80049058 */ void removeModel(J3DModelData*, int); }; -struct dMapInfo_n { - /* 8003EE5C */ void getMapPlayerPos(); -}; - struct dComIfG_resLoader_c { /* 8002F314 */ dComIfG_resLoader_c(); /* 8002F328 */ ~dComIfG_resLoader_c(); diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 1130c28ba4..7a86422f81 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -19,25 +19,10 @@ struct daSus_c { /* 800315A4 */ void execute(); }; -struct dTres_c { - struct list_class {}; - - /* 8009BCB4 */ void addData(dTres_c::list_class*, s8); -}; - struct dSvBit_HIO_c { /* 8025C1F8 */ void init(); }; -struct dDrawPath_c { - struct room_class {}; -}; - -struct dMpath_c { - /* 8003F810 */ void setPointer(dDrawPath_c::room_class*, s8*, s8*); - /* 8003FA40 */ void setPointer(s8, void*, int); -}; - struct cMl { /* 80263228 */ void memalignB(int, u32); }; diff --git a/src/d/map/d_map_path.cpp b/src/d/map/d_map_path.cpp index ace4b86da7..b673a6283f 100644 --- a/src/d/map/d_map_path.cpp +++ b/src/d/map/d_map_path.cpp @@ -17,47 +17,6 @@ struct dRes_control_c { /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); }; -struct ResTIMG {}; - -struct dRenderingMap_c { - /* 8003CD38 */ void makeResTIMG(ResTIMG*, u16, u16, u8*, u8*, u16) const; - /* 8003CDAC */ void renderingMap(); -}; - -struct dDrawPath_c { - struct line_class {}; - - struct poly_class {}; - - struct group_class {}; - - struct floor_class {}; - - struct room_class {}; - - /* 8002ABF0 */ bool isDrawType(int); - /* 8002AD3C */ ~dDrawPath_c(); - /* 8002AD84 */ void getLineColor(int, int); - /* 8003CA40 */ void rendering(dDrawPath_c::poly_class const*); - /* 8003CB00 */ void rendering(dDrawPath_c::group_class const*); - /* 8003CC24 */ void rendering(dDrawPath_c::room_class const*); - /* 8003C94C */ void rendering(dDrawPath_c::line_class const*); - /* 8003CBBC */ void rendering(dDrawPath_c::floor_class const*); - /* 8003CCC4 */ void drawPath(); -}; - -struct dRenderingFDAmap_c { - /* 8002ABF8 */ ~dRenderingFDAmap_c(); - /* 8003CE78 */ void setTevSettingNonTextureDirectColor() const; - /* 8003CF40 */ void setTevSettingIntensityTextureToCI() const; - /* 8003D0AC */ void drawBack() const; - /* 8003D188 */ void preRenderingMap(); - /* 8003D320 */ void postRenderingMap(); - /* 8003D3C0 */ void renderingDecoration(dDrawPath_c::line_class const*); - /* 8003D68C */ void getDecoLineColor(int, int); - /* 8003D6B8 */ void getDecorationLineWidth(int); -}; - struct dMpath_n { struct dTexObjAggregate_c { /* 8003C85C */ void create(); @@ -68,14 +27,6 @@ struct dMpath_n { static u8 m_texObjAgg[28]; }; -struct dDlst_base_c { - /* 8002ABEC */ void draw(); -}; - -struct _GXTlutObj {}; - -struct _GXTexObj {}; - // // Forward References: // @@ -118,46 +69,8 @@ extern "C" void getLineColor__11dDrawPath_cFii(); extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); -extern "C" void C_MTXOrtho(); -extern "C" void GXSetVtxDesc(); extern "C" void GXClearVtxDesc(); -extern "C" void GXSetVtxAttrFmt(); -extern "C" void GXSetArray(); -extern "C" void GXSetTexCoordGen2(); -extern "C" void GXSetNumTexGens(); extern "C" void GXPixModeSync(); -extern "C" void GXBegin(); -extern "C" void GXSetLineWidth(); -extern "C" void GXSetPointSize(); -extern "C" void GXSetCullMode(); -extern "C" void GXSetTexCopySrc(); -extern "C" void GXSetTexCopyDst(); -extern "C" void GXSetCopyFilter(); -extern "C" void GXCopyTex(); -extern "C" void GXSetNumChans(); -extern "C" void GXSetChanCtrl(); -extern "C" void GXLoadTexObj(); -extern "C" void GXSetNumIndStages(); -extern "C" void GXSetTevColorIn(); -extern "C" void GXSetTevAlphaIn(); -extern "C" void GXSetTevColorOp(); -extern "C" void GXSetTevAlphaOp(); -extern "C" void GXSetTevColor(); -extern "C" void GXSetTevKColorSel(); -extern "C" void GXSetAlphaCompare(); -extern "C" void GXSetTevOrder(); -extern "C" void GXSetNumTevStages(); -extern "C" void GXSetFog(); -extern "C" void GXSetBlendMode(); -extern "C" void GXSetZMode(); -extern "C" void GXSetZCompLoc(); -extern "C" void GXSetDither(); -extern "C" void GXSetProjection(); -extern "C" void GXLoadPosMtxImm(); -extern "C" void GXSetCurrentMtx(); -extern "C" void GXSetViewport(); -extern "C" void GXSetScissor(); -extern "C" void GXSetClipMode(); extern "C" void __register_global_object(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); diff --git a/src/d/map/d_map_path_dmap.cpp b/src/d/map/d_map_path_dmap.cpp index 3340fecdab..9ff7bf674f 100644 --- a/src/d/map/d_map_path_dmap.cpp +++ b/src/d/map/d_map_path_dmap.cpp @@ -11,122 +11,12 @@ // Types: // -struct stage_tgsc_data_class {}; - -struct renderingPlusDoor_c { - /* 8002B0B4 */ ~renderingPlusDoor_c(); - /* 80040518 */ void afterDrawPath(); - /* 80040574 */ void drawDoor1(); - /* 800405B8 */ void drawDoor2(); - /* 800405FC */ void drawDoorCommon(stage_tgsc_data_class const*, int, bool); - /* 80040710 */ void checkDispDoorS(int, int, f32); - /* 80040838 */ void drawNormalDoorS(stage_tgsc_data_class const*, int, int, bool); - /* 8004145C */ void beforeDrawPath(); -}; - -struct dTres_c { - struct data_s {}; - - struct typeGroupData_c {}; - - /* 8009C360 */ void getFirstData(u8); - /* 8009C3B4 */ void getNextData(dTres_c::typeGroupData_c const*); - /* 8009C39C */ void getNextData(dTres_c::typeGroupData_c*); - - static u8 mTypeGroupListAll[204 + 4 /* padding */]; -}; - -struct Vec {}; - -struct renderingPlusDoorAndCursor_c { - /* 8002B008 */ ~renderingPlusDoorAndCursor_c(); - /* 800402FC */ void afterDrawPath(); - /* 80040A94 */ void getFirstData(u8); - /* 80040AB8 */ void getNextData(dTres_c::typeGroupData_c*); - /* 80040ADC */ void getIconPosition(dTres_c::typeGroupData_c*) const; - /* 80040B00 */ void drawTreasure(); - /* 80040E84 */ void drawTreasureAfterPlayer(); - /* 80041208 */ void drawIconSingle(Vec const&, f32, f32); - /* 800412C0 */ void drawCursor(Vec const&, s16, int, f32); -}; - -struct dDrawPath_c { - struct room_class {}; - - struct group_class {}; - - struct line_class {}; - - struct poly_class {}; - - /* 8002ABF0 */ bool isDrawType(int); - /* 8002AD84 */ void getLineColor(int, int); - /* 8003CA40 */ void rendering(dDrawPath_c::poly_class const*); - /* 8003CC24 */ void rendering(dDrawPath_c::room_class const*); - /* 8003C94C */ void rendering(dDrawPath_c::line_class const*); - /* 8003CCC4 */ void drawPath(); -}; - -struct renderingDAmap_c { - /* 8002B150 */ ~renderingDAmap_c(); - /* 8003FCA4 */ void calcFloorNoForObjectByMapPathRend(f32, int) const; - /* 8003FCC8 */ void init(u8*, u16, u16, u16, u16); - /* 8003FD08 */ void entry(f32, f32, f32, int, s8); - /* 8003FD9C */ void isSwitch(dDrawPath_c::group_class const*); - /* 8003FE18 */ void draw(); - /* 8003FE4C */ void getBackColor() const; - /* 8003FE54 */ void isRenderingFloor(int); - /* 8003FE6C */ void setSingleRoomSetting(); - /* 8003FE70 */ void isDrawRoom(int, int) const; - /* 8003FF14 */ void preDrawPath(); - /* 8003FFC4 */ void postDrawPath(); - /* 8003FFEC */ void getRoomNoSingle(); - /* 8003FFF4 */ void getFirstDrawRoomNo(); - /* 80040094 */ void getNextDrawRoomNo(int); - /* 80040134 */ void getFirstRoomPointer(); - /* 800401E8 */ void getNextRoomPointer(); - /* 800402C0 */ void isDrawPath(); - /* 800402E0 */ bool getFirstDrawLayerNo(); - /* 800402E8 */ void getNextDrawLayerNo(int); - /* 800409B4 */ void isDrawRoomIcon(int, int) const; - /* 800409E0 */ void isDrawIconSingle(dTres_c::data_s const*, int, int, bool, bool, - Vec const*) const; - /* 80040AE4 */ void getIconGroupNumber(u8) const; -}; - struct mDoMtx_stack_c { /* 8000CE38 */ void scaleM(f32, f32, f32); static u8 now[48]; }; -struct dSv_memBit_c { - /* 80034934 */ void isDungeonItem(int) const; -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dStage_roomControl_c { - static u8 mStatus[65792]; -}; - -struct dStage_FileList2_dt_c {}; - -struct dRenderingMap_c { - /* 8003CDAC */ void renderingMap(); -}; - -struct dRenderingFDAmap_c { - /* 8003CE78 */ void setTevSettingNonTextureDirectColor() const; - /* 8003CF40 */ void setTevSettingIntensityTextureToCI() const; - /* 8003D188 */ void preRenderingMap(); - /* 8003D320 */ void postRenderingMap(); - /* 8003D68C */ void getDecoLineColor(int, int); - /* 8003D6B8 */ void getDecorationLineWidth(int); -}; - struct dMpath_n { struct dTexObjAggregate_c { /* 8003C85C */ void create(); @@ -136,44 +26,6 @@ struct dMpath_n { static u8 m_texObjAgg[28]; }; -struct dMpath_c { - /* 8003F758 */ u8 isExistMapPathData(); - /* 8003F760 */ void getTopBottomFloorNo(s8*, s8*); - /* 8003F7E8 */ void createWork(); - /* 8003FA40 */ void setPointer(s8, void*, int); - /* 8003F810 */ void setPointer(dDrawPath_c::room_class*, s8*, s8*); - /* 8003FB70 */ void create(); - /* 8003FBD0 */ void reset(); - /* 8003FC70 */ void remove(); - - static u8 mLayerList[4]; - static f32 mMinX; - static f32 mMaxX; - static f32 mMinZ; - static f32 mMaxZ; - static f32 mAllCenterX; - static f32 mAllCenterZ; - static f32 mAllSizeX; - static f32 mAllSizeZ; -}; - -struct dMapInfo_n { - /* 8003ECA0 */ void chkGetCompass(); - /* 8003ECD8 */ void chkGetMap(); - /* 8003ED10 */ void isVisitedRoom(int); - /* 8003ED60 */ void correctionOriginPos(s8, Vec*); - /* 8003EDC0 */ void offsetPlus(dStage_FileList2_dt_c const*, Vec*); - /* 8003EDEC */ void rotAngle(dStage_FileList2_dt_c const*, Vec*); - /* 8003EE5C */ void getMapPlayerPos(); - /* 8003EF20 */ void getMapPlayerAngleY(); - /* 8003EF70 */ void getConstRestartIconPointer(); - /* 8003F02C */ void getMapRestartPos(); - /* 8003F0F8 */ void getMapRestartAngleY(); - /* 8003F19C */ void getRoomCenter(int, f32*, f32*); - /* 8003F1F4 */ void getRoomMinMaxXZ(int, f32*, f32*, f32*, f32*); - /* 8003F24C */ void getFloorParameter(f32, s8*, f32*, f32*, f32*, f32*); -}; - struct dMapInfo_c { /* 8003F40C */ void calcFloorNo(f32, bool, int); /* 8003F570 */ void calcNowStayFloorNo(f32, bool); @@ -187,12 +39,6 @@ struct dMapInfo_c { static u8 mNowStayRoomNo[4]; }; -struct dDlst_base_c {}; - -struct dDlst_list_c { - /* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*); -}; - // // Forward References: // @@ -316,19 +162,9 @@ extern "C" void getFirstData__7dTres_cFUc(); extern "C" void getNextData__7dTres_cFPQ27dTres_c15typeGroupData_c(); extern "C" void getNextData__7dTres_cFPCQ27dTres_c15typeGroupData_c(); extern "C" void* __nw__FUl(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSMTXMultVecArray(); -extern "C" void GXSetVtxDesc(); extern "C" void GXClearVtxDesc(); -extern "C" void GXSetVtxAttrFmt(); -extern "C" void GXSetArray(); extern "C" void GXSetMisc(); -extern "C" void GXBegin(); -extern "C" void GXLoadTexObj(); extern "C" void GXInvalidateTexAll(); -extern "C" void GXSetTevColor(); -extern "C" void GXLoadPosMtxImm(); extern "C" void _savegpr_20(); extern "C" void _savegpr_24(); extern "C" void _savegpr_25(); @@ -343,15 +179,12 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void floor(); extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mStatus__20dStage_roomControl_c[65792]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 m_texObjAgg__8dMpath_n[28]; extern "C" u8 mTypeGroupListAll__7dTres_c[204 + 4 /* padding */]; extern "C" extern u8 g_fmapHIO[1188]; -extern "C" extern u32 __float_max; -extern "C" extern u8 struct_80450D64[4]; // // Declarations: @@ -432,7 +265,7 @@ SECTION_SDATA2 static u8 lit_3796[4] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMapInfo_n::getMapPlayerPos() { +asm Vec dMapInfo_n::getMapPlayerPos() { nofralloc #include "asm/d/map/d_map_path_dmap/getMapPlayerPos__10dMapInfo_nFv.s" } diff --git a/src/d/menu/d_menu_window.cpp b/src/d/menu/d_menu_window.cpp index 9d509772ea..0a94f88341 100644 --- a/src/d/menu/d_menu_window.cpp +++ b/src/d/menu/d_menu_window.cpp @@ -401,7 +401,7 @@ bool dMw_DOWN_TRIGGER() { return mDoCPd_c::getTrigDown(mDoCPd_c::PAD_0); } -bool dMw_LEFT_TRIGGER() { +BOOL dMw_LEFT_TRIGGER() { if (mDoCPd_c::getTrigLeft(mDoCPd_c::PAD_0) && !dMw_UP_TRIGGER()) { return true; } else { @@ -409,7 +409,7 @@ bool dMw_LEFT_TRIGGER() { } } -bool dMw_RIGHT_TRIGGER() { +BOOL dMw_RIGHT_TRIGGER() { if (mDoCPd_c::getTrigRight(mDoCPd_c::PAD_0) && !dMw_UP_TRIGGER()) { return true; } else { diff --git a/src/d/meter/d_meter2.cpp b/src/d/meter/d_meter2.cpp index 408f259c6c..329a77b493 100644 --- a/src/d/meter/d_meter2.cpp +++ b/src/d/meter/d_meter2.cpp @@ -290,13 +290,6 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // Declarations: // -/* ############################################################################################## */ -/* 80399338-80399338 025998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399338 = "F_SP00"; -#pragma pop - /* 804549C8-804549CC 002FC8 0004+00 9/9 0/0 0/0 .sdata2 @4662 */ SECTION_SDATA2 static u8 lit_4662[4] = { 0x00, diff --git a/src/d/meter/d_meter2_info.cpp b/src/d/meter/d_meter2_info.cpp index 3b89e0070a..d4b84b17fd 100644 --- a/src/d/meter/d_meter2_info.cpp +++ b/src/d/meter/d_meter2_info.cpp @@ -5,6 +5,7 @@ #include "d/meter/d_meter2_info.h" #include "d/com/d_com_inf_game.h" +#include "d/msg/d_msg_object.h" #include "d/save/d_save.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/src/d/meter/d_meter_HIO.cpp b/src/d/meter/d_meter_HIO.cpp index 7af89032e4..1974afaff4 100644 --- a/src/d/meter/d_meter_HIO.cpp +++ b/src/d/meter/d_meter_HIO.cpp @@ -1685,6 +1685,27 @@ dMeter_fmapHIO_c::dMeter_fmapHIO_c() { } /* 80200BCC-80200CD4 1FB50C 0108+00 2/1 0/0 0/0 .text __dt__16dMeter_fmapHIO_cFv */ +#ifdef NONMATCHING +dMeter_fmapHIO_c::~dMeter_fmapHIO_c() { + if (field_0xc != NULL) { + mDoExt_getGameHeap()->free(field_0xc); + field_0xc = NULL; + } + + if (field_0x10 != NULL) { + mDoExt_getGameHeap()->free(field_0x10); + field_0x10 = NULL; + } + + if (field_0x8 != NULL) { + field_0x8->unmount(); + delete field_0x8; + field_0x8 = NULL; + } + + delete mMapIconHIO; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1694,6 +1715,7 @@ extern "C" asm void __dt__16dMeter_fmapHIO_cFv() { #include "asm/d/meter/d_meter_HIO/__dt__16dMeter_fmapHIO_cFv.s" } #pragma pop +#endif /* 80200CD4-80200D58 1FB614 0084+00 1/1 0/0 0/0 .text __ct__18dMeter_cursorHIO_cFv */ dMeter_cursorHIO_c::dMeter_cursorHIO_c() { diff --git a/src/d/meter/d_meter_map.cpp b/src/d/meter/d_meter_map.cpp index 18be6c631e..681b839ee8 100644 --- a/src/d/meter/d_meter_map.cpp +++ b/src/d/meter/d_meter_map.cpp @@ -4,68 +4,14 @@ // #include "d/meter/d_meter_map.h" +#include "d/com/d_com_inf_game.h" +#include "d/menu/d_menu_window.h" +#include "d/msg/d_msg_object.h" +#include "f_op/f_op_overlap_mng.h" +#include "Z2AudioLib/Z2AudioMgr.h" #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct mDoCPd_c { - static u8 m_cpadInfo[256]; -}; - -struct dSv_memBit_c { - /* 80034934 */ void isDungeonItem(int) const; -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 8003498C */ void onEventBit(u16); - /* 800349BC */ void isEventBit(u16) const; -}; - -struct dStage_roomControl_c { - /* 80024384 */ void getStatusRoomDt(int); -}; - -struct dMsgObject_c { - /* 8023822C */ void getStatus(); -}; - -struct dMap_c { - /* 80029874 */ dMap_c(int, int, int, int); - /* 8002A32C */ void _move(f32, f32, int, f32); - /* 8002AB54 */ void _draw(); -}; - -struct dMapInfo_n { - /* 8003EE5C */ void getMapPlayerPos(); -}; - -struct dDlst_base_c {}; - -struct dDlst_list_c { - /* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*); -}; - -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct J2DPicture { - /* 802FC708 */ J2DPicture(ResTIMG const*); -}; - // // Forward References: // @@ -132,78 +78,156 @@ extern "C" void _savegpr_29(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void strcmp(); extern "C" extern void* __vt__12dDlst_base_c[3]; extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_meter2_info[248]; -extern "C" extern u8 struct_80450D64[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // // Declarations: // -/* 8020D49C-8020D528 207DDC 008C+00 1/1 0/0 0/0 .text isEnableDispMap__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::isEnableDispMap() { - nofralloc -#include "asm/d/meter/d_meter_map/isEnableDispMap__11dMeterMap_cFv.s" +inline BOOL dComIfGp_event_runCheck() { + return g_dComIfG_gameInfo.play.getEvent().runCheck(); +} + +inline u16 dComIfGp_event_checkHind(u16 flag) { + if (!dComIfGp_event_runCheck()) { + return false; + } + return g_dComIfG_gameInfo.play.getEvent().checkHind(flag); +} + +inline u16 dComIfGp_event_chkEventFlag(u16 flag) { + return g_dComIfG_gameInfo.play.getEvent().chkEventFlag(flag); +} + +inline dStage_stageDt_c* dComIfGp_getStage() { + return &g_dComIfG_gameInfo.play.getStage(); +} + +inline daPy_py_c* daPy_getPlayerActorClass() { + return (daPy_py_c*)dComIfGp_getPlayer(0); +} + +inline BOOL dComIfGs_isEventBit(u16 id) { + return g_dComIfG_gameInfo.info.getEvent().isEventBit(id); +} + + +/* 8020D49C-8020D528 207DDC 008C+00 1/1 0/0 0/0 .text isEnableDispMap__11dMeterMap_cFv */ +bool dMeterMap_c::isEnableDispMap() { + bool minimapEnable = false; + stage_stag_info_class* pstag = dComIfGp_getStage()->getStagInfo(); + + if (pstag != NULL && getMapDispSizeTypeNo() != 0) { + minimapEnable = dStage_stagInfo_GetMiniMap(pstag) != 0; + } + + bool enableMap = false; + if (minimapEnable && dMpath_c::isExistMapPathData()) { + enableMap = true; + } + return enableMap; } -#pragma pop /* 8020D528-8020D650 207E68 0128+00 3/3 0/0 0/0 .text getMapDispSizeTypeNo__11dMeterMap_cFv */ +// stayNo load block in wrong order +#ifdef NONMATCHING +int dMeterMap_c::getMapDispSizeTypeNo() { + int uvar6 = 7; + int stayNo = dComIfGp_roomControl_getStayNo(); + + dStage_FileList_dt_c* fList = dComIfGp_roomControl_getStatusRoomDt(stayNo)->mRoomDt.getFileListInfo(); + if (fList != NULL) { + uvar6 = dStage_FileList_dt_getMiniMap(fList); + } + + u32 stageMapSizeTypeNo = dStage_stagInfo_GetMiniMap(dComIfGp_getStage()->getStagInfo()); + s32 mapDispType = dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()); + + if (mapDispType == 1) { + uvar6 = 1; + } else if (uvar6 == 7) { + uvar6 = stageMapSizeTypeNo; + } + + int mapDispSizeType = 0; + switch (uvar6) { + case 0: + break; + case 1: + if (mapDispType == 1) { + mapDispSizeType = 4; + } else { + mapDispSizeType = 1; + } + break; + case 2: + if (mapDispType != 1) { + mapDispSizeType = 2; + } + break; + case 3: + if (mapDispType == 1) { + mapDispSizeType = 5; + } else { + mapDispSizeType = 3; + } + break; + } + + return mapDispSizeType; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeterMap_c::getMapDispSizeTypeNo() { +asm int dMeterMap_c::getMapDispSizeTypeNo() { nofralloc #include "asm/d/meter/d_meter_map/getMapDispSizeTypeNo__11dMeterMap_cFv.s" } #pragma pop +#endif /* 8020D650-8020D690 207F90 0040+00 5/5 3/3 0/0 .text * isEnableDispMapAndMapDispSizeTypeNo__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dMeterMap_c::isEnableDispMapAndMapDispSizeTypeNo() { - nofralloc -#include "asm/d/meter/d_meter_map/isEnableDispMapAndMapDispSizeTypeNo__11dMeterMap_cFv.s" -} -#pragma pop +bool dMeterMap_c::isEnableDispMapAndMapDispSizeTypeNo() { + if (isEnableDispMap() && getMapDispSizeTypeNo()) { + return true; + } -/* ############################################################################################## */ -/* 80454820-80454828 002E20 0004+04 1/1 0/0 0/0 .sdata2 @4076 */ -SECTION_SDATA2 static f32 lit_4076[1 + 1 /* padding */] = { - 421.0f, - /* padding */ - 0.0f, -}; + return false; +} /* 8020D690-8020D698 207FD0 0008+00 2/2 0/0 0/0 .text * getMapDispEdgeBottomY_Layout__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::getMapDispEdgeBottomY_Layout() { - nofralloc -#include "asm/d/meter/d_meter_map/getMapDispEdgeBottomY_Layout__11dMeterMap_cFv.s" +f32 dMeterMap_c::getMapDispEdgeBottomY_Layout() { + return 421.0f; } -#pragma pop /* 8020D698-8020D72C 207FD8 0094+00 2/2 0/0 0/0 .text isEventRunCheck__11dMeterMap_cFv */ +// missing gameinfo load +#ifdef NONMATCHING +bool dMeterMap_c::isEventRunCheck() { + if (dComIfGp_event_runCheck()) { + return true; + } else if (dMsgObject_isTalkNowCheck()) { + return true; + } + + return dComIfGp_event_runCheck() != field_0x30 ? 1 : 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeterMap_c::isEventRunCheck() { +asm bool dMeterMap_c::isEventRunCheck() { nofralloc #include "asm/d/meter/d_meter_map/isEventRunCheck__11dMeterMap_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80454828-80454830 002E28 0008+00 3/3 0/0 0/0 .sdata2 @4100 */ @@ -211,14 +235,21 @@ SECTION_SDATA2 static f64 lit_4100 = 4503601774854144.0 /* cast s32 to float */; /* 8020D72C-8020D75C 20806C 0030+00 2/2 0/0 0/0 .text getMapDispEdgeLeftX_Layout__11dMeterMap_cFv */ +#ifdef NONMATCHING +// matches with literal +f32 dMeterMap_c::getMapDispEdgeLeftX_Layout() { + return field_0x28 + 35; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeterMap_c::getMapDispEdgeLeftX_Layout() { +asm f32 dMeterMap_c::getMapDispEdgeLeftX_Layout() { nofralloc #include "asm/d/meter/d_meter_map/getMapDispEdgeLeftX_Layout__11dMeterMap_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80454830-80454834 002E30 0004+00 2/2 0/0 0/0 .sdata2 @4128 */ @@ -237,18 +268,29 @@ SECTION_SDATA2 static f64 lit_4131 = 4503599627370496.0 /* cast u32 to float */; /* 8020D75C-8020D7E4 20809C 0088+00 0/0 1/1 0/0 .text getMapDispEdgeTop__11dMeterMap_cFv */ +// matches with literals +#ifdef NONMATCHING +f32 dMeterMap_c::getMapDispEdgeTop() { + f32 tmp = 0.0f; + if (mMap != NULL) { + tmp = mMap->getTexSizeY() - mMap->getTexelPerCm() * (mMap->getPackZ() - mMap->getPackPlusZ()) - mMap->getTopEdgePlus(); + } + return getMapDispEdgeBottomY_Layout() - tmp; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeterMap_c::getMapDispEdgeTop() { +asm f32 dMeterMap_c::getMapDispEdgeTop() { nofralloc #include "asm/d/meter/d_meter_map/getMapDispEdgeTop__11dMeterMap_cFv.s" } #pragma pop +#endif /* 8020D7E4-8020D7EC 208124 0008+00 2/2 0/0 0/0 .text getDispPosInside_OffsetX__11dMeterMap_cFv */ -bool dMeterMap_c::getDispPosInside_OffsetX() { - return false; +s16 dMeterMap_c::getDispPosInside_OffsetX() { + return 0; } /* ############################################################################################## */ @@ -257,51 +299,56 @@ SECTION_SDATA2 static f32 lit_4159 = -36.0f; /* 8020D7EC-8020D874 20812C 0088+00 2/2 0/0 0/0 .text getDispPosOutSide_OffsetX__11dMeterMap_cFv */ +// calculation order is wrong +#ifdef NONMATCHING +s16 dMeterMap_c::getDispPosOutSide_OffsetX() { + f32 dvar3 = -36.0f - mSizeW; + f32 tmp = 0.0f; + if (mMap != NULL) { + tmp = (mMap->getTexelPerCm() * mMap->getPackX()) + (mMap->getRightEdgePlus() + (mMap->getTexelPerCm() * mMap->getPackPlusZ())); + tmp += dvar3; + } + return tmp - getMapDispEdgeLeftX_Layout(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeterMap_c::getDispPosOutSide_OffsetX() { +asm s16 dMeterMap_c::getDispPosOutSide_OffsetX() { nofralloc #include "asm/d/meter/d_meter_map/getDispPosOutSide_OffsetX__11dMeterMap_cFv.s" } #pragma pop +#endif /* 8020D874-8020D8BC 2081B4 0048+00 2/2 2/2 0/0 .text setDispPosInsideFlg_SE_On__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::setDispPosInsideFlg_SE_On() { - nofralloc -#include "asm/d/meter/d_meter_map/setDispPosInsideFlg_SE_On__11dMeterMap_cFv.s" +void dMeterMap_c::setDispPosInsideFlg_SE_On() { + if (isEnableDispMapAndMapDispSizeTypeNo()) { + dComIfGp_mapShow(); + field_0x2d = 1; + field_0x2e = 7; + } } -#pragma pop /* 8020D8BC-8020D8F8 2081FC 003C+00 1/1 2/2 0/0 .text setDispPosOutsideFlg_SE_On__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::setDispPosOutsideFlg_SE_On() { - nofralloc -#include "asm/d/meter/d_meter_map/setDispPosOutsideFlg_SE_On__11dMeterMap_cFv.s" +void dMeterMap_c::setDispPosOutsideFlg_SE_On() { + dComIfGp_mapHide(); + field_0x2d = 0; + field_0x2e = 7; } -#pragma pop /* 8020D8F8-8020D900 -00001 0008+00 0/0 0/0 0/0 .text setMapAlpha__11dMeterMap_cFUc */ -void dMeterMap_c::setMapAlpha(u8 param_0) { - *(u8*)(((u8*)this) + 44) /* this->field_0x2c */ = (u8)(param_0); +void dMeterMap_c::setMapAlpha(u8 alpha) { + mMapAlpha = alpha; } + /* 8020D900-8020D948 208240 0048+00 3/3 1/1 0/0 .text isMapOpenCheck__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dMeterMap_c::isMapOpenCheck() { - nofralloc -#include "asm/d/meter/d_meter_map/isMapOpenCheck__11dMeterMap_cFv.s" +bool dMeterMap_c::isMapOpenCheck() { + return dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 7 ? false : true; } -#pragma pop /* ############################################################################################## */ /* 803BF2D8-803BF2F8 -00001 0020+00 1/1 0/0 0/0 .data @4516 */ @@ -316,36 +363,102 @@ SECTION_DATA static void* lit_4516[8] = { (void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x190), }; -/* 803BF2F8-803BF308 01C418 0010+00 2/2 0/0 0/0 .data __vt__11dMeterMap_c */ -SECTION_DATA extern void* __vt__11dMeterMap_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__11dMeterMap_cFv, - (void*)__dt__11dMeterMap_cFv, -}; - /* 8020D948-8020D990 208288 0048+00 0/0 1/1 0/0 .text __ct__11dMeterMap_cFP9J2DScreen */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMeterMap_c::dMeterMap_c(J2DScreen* param_0) { - nofralloc -#include "asm/d/meter/d_meter_map/__ct__11dMeterMap_cFP9J2DScreen.s" +dMeterMap_c::dMeterMap_c(J2DScreen* p_scrn) { + _create(p_scrn); } -#pragma pop /* 8020D990-8020D9EC 2082D0 005C+00 1/0 0/0 0/0 .text __dt__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMeterMap_c::~dMeterMap_c() { - nofralloc -#include "asm/d/meter/d_meter_map/__dt__11dMeterMap_cFv.s" +dMeterMap_c::~dMeterMap_c() { + _delete(); } -#pragma pop /* 8020D9EC-8020DC50 20832C 0264+00 1/1 0/0 0/0 .text _create__11dMeterMap_cFP9J2DScreen */ +// matches with auto gen literals +#ifdef NONMATCHING +void dMeterMap_c::_create(J2DScreen* param_0) { + s32 sizeX; + s32 sizeY; + s32 dispSizeW; + s32 dispSizeH; + + getMapDispSizeTypeNo(); + switch (getMapDispSizeTypeNo()) { + case 1: + dispSizeW = 216; + dispSizeH = 216; + sizeX = 144; + sizeY = 144; + break; + case 2: + dispSizeW = 216; + dispSizeH = 216; + sizeX = 216; + sizeY = 216; + break; + case 3: + dispSizeW = 216; + dispSizeH = 216; + sizeX = 96; + sizeY = 96; + break; + case 0: + case 4: + dispSizeW = 144; + dispSizeH = 144; + sizeX = 144; + sizeY = 144; + break; + case 5: + dispSizeW = 144; + dispSizeH = 144; + sizeX = 96; + sizeY = 96; + break; + } + + mSizeW = (s16)sizeX; + mSizeH = (s16)sizeY; + + mMap = new dMap_c(sizeX, sizeY, dispSizeW, dispSizeH); + mMapJ2DPicture = new J2DPicture(mMap->getResTIMGPointer()); + + mIsCompass = dComIfGs_isDungeonItemCompass(); + mIsMap = dComIfGs_isDungeonItemMap(); + field_0x14 = 0; + field_0x2a = 0; + + if (dComIfGp_checkMapShow()) { + field_0x2d = 1; + + if (!isEnableDispMapAndMapDispSizeTypeNo()) { + field_0x2d = 0; + } + + if (!isMapOpenCheck()) { + field_0x2d = 0; + } + } else { + field_0x2d = 0; + } + + if (field_0x2d != 0) { + field_0x2d = 1; + field_0x28 = getDispPosInside_OffsetX(); + dMeter2Info_setMapStatus(1); + } else { + field_0x2d = 0; + field_0x28 = getDispPosOutSide_OffsetX(); + dMeter2Info_setMapStatus(0); + } + + field_0x2e = 0; + field_0x28 = 0; + field_0x30 = 0; + field_0x2b = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[118]); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -354,16 +467,26 @@ asm void dMeterMap_c::_create(J2DScreen* param_0) { #include "asm/d/meter/d_meter_map/_create__11dMeterMap_cFP9J2DScreen.s" } #pragma pop +#endif /* 8020DC50-8020DCE4 208590 0094+00 1/1 0/0 0/0 .text _delete__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::_delete() { - nofralloc -#include "asm/d/meter/d_meter_map/_delete__11dMeterMap_cFv.s" +void dMeterMap_c::_delete() { + if (mMapJ2DPicture != NULL) { + delete mMapJ2DPicture; + } + + if (mMap != NULL) { + delete mMap; + } + + if (isEnableDispMapAndMapDispSizeTypeNo()) { + if (field_0x2d != 0) { + dComIfGp_mapShow(); + } else { + dComIfGp_mapHide(); + } + } } -#pragma pop /* ############################################################################################## */ /* 80398208-80398208 024868 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -373,6 +496,50 @@ SECTION_DEAD static char const* const stringBase_80398208 = "F_SP115"; #pragma pop /* 8020DCE4-8020DF1C 208624 0238+00 0/0 1/1 0/0 .text _move__11dMeterMap_cFUl */ +// just regalloc +#ifdef NONMATCHING +void dMeterMap_c::_move(u32 param_0) { + if (!field_0x2b && dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[118])) { + if (strcmp(dComIfGp_getStartStageName(), "F_SP115") == 0) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[119]); + } else { + field_0x2b = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[118]); + dMeter2Info_setPauseStatus(2); + } + } + int stayNo = dComIfGp_roomControl_getStayNo(); + + field_0x14 = param_0; + field_0x2a = checkMoveStatus(); + + if (field_0x2a == 1 || field_0x2a == 2 || field_0x2a == 3 || + dMeter2Info_getPauseStatus() == 7 || + dMeter2Info_getPauseStatus() == 2 || + dMeter2Info_getPauseStatus() == 6 || + dMeter2Info_getPauseStatus() == 4 || + dMeter2Info_getPauseStatus() == 3 || + dMeter2Info_getPauseStatus() == 5) { + ctrlShowMap(); + } + + if (field_0x2d != 0) { + if (field_0x28 != getDispPosInside_OffsetX()) { + cLib_addCalcAngleS(&field_0x28, getDispPosInside_OffsetX(), 2, 60, 10); + } + } + else { + cLib_addCalcAngleS(&field_0x28, getDispPosOutSide_OffsetX(), 2, 60, 10); + } + + Vec map_pos = dMapInfo_n::getMapPlayerPos(); + + field_0x18 = field_0x28 + getMapDispEdgeLeftX_Layout(); + field_0x1c = getMapDispEdgeBottomY_Layout() - mSizeH; + + mMap->_move(map_pos.x, map_pos.z, stayNo, map_pos.y); + field_0x30 = dComIfGp_event_runCheck(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -381,32 +548,122 @@ asm void dMeterMap_c::_move(u32 param_0) { #include "asm/d/meter/d_meter_map/_move__11dMeterMap_cFUl.s" } #pragma pop +#endif /* 8020DF1C-8020DF68 20885C 004C+00 0/0 1/1 0/0 .text _draw__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::_draw() { - nofralloc -#include "asm/d/meter/d_meter_map/_draw__11dMeterMap_cFv.s" +void dMeterMap_c::_draw() { + mMap->_draw(); + dComIfGd_set2DOpa(this); } -#pragma pop /* 8020DF68-8020E070 2088A8 0108+00 1/0 0/0 0/0 .text draw__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::draw() { - nofralloc -#include "asm/d/meter/d_meter_map/draw__11dMeterMap_cFv.s" +void dMeterMap_c::draw() { + if (mMap != NULL && mMap->isDraw()) { + dComIfGp_getCurrentGrafPort()->setup2D(); + f32 sizeX = mSizeW; + f32 sizeY = mSizeH; + f32 tmp2 = field_0x18; + f32 tmp3 = field_0x1c; + + mMapJ2DPicture->setAlpha(mMapAlpha); + mMapJ2DPicture->draw(tmp2, tmp3, sizeX, sizeY, false, false, false); + mMapJ2DPicture->calcMtx(); + } } -#pragma pop /* ############################################################################################## */ /* 80454844-80454848 002E44 0004+00 3/3 0/0 0/0 .sdata2 @4515 */ SECTION_SDATA2 static f32 lit_4515 = -1.0f; /* 8020E070-8020E45C 2089B0 03EC+00 2/1 0/0 0/0 .text ctrlShowMap__11dMeterMap_cFv */ +// matches with literals +#ifdef NONMATCHING +void dMeterMap_c::ctrlShowMap() { + if (!dMeter2Info_isGameStatus(1)) { + if (!isMapOpenCheck() && !isEventRunCheck()) { + if (dMw_LEFT_TRIGGER() || dMw_RIGHT_TRIGGER()) { + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } else { + if (dMeter2Info_getPauseStatus() == 1 || dMeter2Info_getPauseStatus() == 7 || + dMeter2Info_getPauseStatus() == 3 || dMeter2Info_getPauseStatus() == 5 || + dMeter2Info_getPauseStatus() == 2 || dMeter2Info_getPauseStatus() == 6) { + if (dMeter2Info_getMapStatus() == 0 && field_0x2d == 0) { + setDispPosInsideFlg_SE_On(); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + dMeter2Info_setMapStatus(1); + } + + if (dMeter2Info_getMapStatus() == 1 && field_0x2d != 0 && isFmapScreen()) { + switch (dMeter2Info_getPauseStatus()) { + case 1: + dMeter2Info_setMapStatus(4); + break; + case 2: + dMeter2Info_setMapStatus(7); + break; + case 3: + dMeter2Info_setMapStatus(8); + break; + case 5: + dMeter2Info_setMapStatus(9); + break; + case 6: + dMeter2Info_setMapStatus(5); + break; + case 7: + dMeter2Info_setMapStatus(3); + break; + } + dMeter2Info_setMapKeyDirection(0x400); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } + dMeter2Info_resetPauseStatus(); + } else { + if (dMeter2Info_getPauseStatus() == 4) { + dMeter2Info_resetPauseStatus(); + if (isDmapScreen()) { + if (dMeter2Info_getMapStatus() == 0 && field_0x2d == 0) { + setDispPosInsideFlg_SE_On(); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + dMeter2Info_setMapStatus(1); + } + + if (dMeter2Info_getMapStatus() == 1 && field_0x2d != 0) { + dMeter2Info_setMapStatus(6); + dMeter2Info_setMapKeyDirection(0x400); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } + } + + } else if (!mDoCPd_c::getTrigUp(0) && !mDoCPd_c::getTrigDown(0)) { + keyCheck(); + } + } + + if (mIsCompass != dComIfGs_isDungeonItemCompass()) { + if (!isDispPosInsideFlg()) { + setDispPosInsideFlg_SE_On(); + dMeter2Info_setMapStatus(1); + } + mIsCompass = dComIfGs_isDungeonItemCompass(); + } + + if (mIsMap != dComIfGs_isDungeonItemMap()) { + if (!isDispPosInsideFlg()) { + setDispPosInsideFlg_SE_On(); + dMeter2Info_setMapStatus(1); + } + mIsMap = dComIfGs_isDungeonItemMap(); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -415,48 +672,117 @@ asm void dMeterMap_c::ctrlShowMap() { #include "asm/d/meter/d_meter_map/ctrlShowMap__11dMeterMap_cFv.s" } #pragma pop +#endif /* 8020E45C-8020E4C8 208D9C 006C+00 1/1 0/0 0/0 .text checkMoveStatus__11dMeterMap_cFv */ +// field_0x2d compare is weird +#ifdef NONMATCHING +u8 dMeterMap_c::checkMoveStatus() { + if (isShow(field_0x14)) { + if (isEnableDispMapAndMapDispSizeTypeNo()) { + if (isDispPosInsideFlg()) { + return 1; + } + return 2; + } + return 3; + } + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeterMap_c::checkMoveStatus() { +asm u8 dMeterMap_c::checkMoveStatus() { nofralloc #include "asm/d/meter/d_meter_map/checkMoveStatus__11dMeterMap_cFv.s" } #pragma pop +#endif /* 8020E4C8-8020E620 208E08 0158+00 2/2 0/0 0/0 .text isShow__11dMeterMap_cFUl */ +// extra gameinfo label load for dComIfGp_event_checkHind +#ifdef NONMATCHING +bool dMeterMap_c::isShow(u32 param_0) { + if ((param_0 & 0x4000) || fopOvlpM_IsDoingReq() || ((param_0 & 0x40) && dComIfGp_event_checkHind(0x100) && !dComIfGp_event_chkEventFlag(0x40)) || + daPy_getPlayerActorClass()->i_getSumouMode() || (param_0 & 0x200000) || (param_0 & 0x100) || + (param_0 & 0x80) || (param_0 & 0x40000000) || (param_0 & 0x1000) || + (param_0 & 0x100000) || (param_0 & 0x20000) || (param_0 & 8) || + (param_0 & 0x10) || (param_0 & 0x1000000) || (param_0 & 0x800000) || + (param_0 & 0x20) || (param_0 & 0x4000000) || (param_0 & 0x10000000) || + (param_0 & 0x800) || (param_0 & 0x20000000) || daPy_getPlayerActorClass()->checkEnemyAttentionLock() || dMeter2Info_isGameStatus(2)) { + return false; + } + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeterMap_c::isShow(u32 param_0) { +asm bool dMeterMap_c::isShow(u32 param_0) { nofralloc #include "asm/d/meter/d_meter_map/isShow__11dMeterMap_cFUl.s" } #pragma pop +#endif /* 8020E620-8020E70C 208F60 00EC+00 3/3 0/0 0/0 .text isFmapScreen__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::isFmapScreen() { - nofralloc -#include "asm/d/meter/d_meter_map/isFmapScreen__11dMeterMap_cFv.s" +bool dMeterMap_c::isFmapScreen() { + if (dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 0 || + dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 5 || + dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 3 || + dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 4 || + dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 6) { + return true; + } + return false; } -#pragma pop /* 8020E70C-8020E754 20904C 0048+00 3/3 0/0 0/0 .text isDmapScreen__11dMeterMap_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMeterMap_c::isDmapScreen() { - nofralloc -#include "asm/d/meter/d_meter_map/isDmapScreen__11dMeterMap_cFv.s" +bool dMeterMap_c::isDmapScreen() { + return dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 1 ? 1 : 0; } -#pragma pop /* 8020E754-8020E9CC 209094 0278+00 0/0 1/1 0/0 .text meter_map_move__11dMeterMap_cFUl */ +// matches with literals +#ifdef NONMATCHING +void dMeterMap_c::meter_map_move(u32 param_0) { + if (isShow(param_0) && isMapOpenCheck()) { + if (dMeter2Info_getPauseStatus() == 6) { + if (!dMeter2Info_isSub2DStatus(1) && isFmapScreen()) { + dMeter2Info_setMapStatus(3); + dMeter2Info_setMapKeyDirection(0x400); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } + dMeter2Info_resetPauseStatus(); + } else { + if (dMw_LEFT_TRIGGER() && !dComIfGp_event_runCheck() && !dMsgObject_isTalkNowCheck() && + (dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) { + if (dMeter2Info_getMapStatus() == 0 && !dMeter2Info_isSub2DStatus(1)) { + if (isFmapScreen() || isDmapScreen()) { + dMeter2Info_setMapStatus(2); + dMeter2Info_setMapKeyDirection(0x200); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } + } + } + else if (dMw_RIGHT_TRIGGER() && !dComIfGp_event_runCheck() && !dMsgObject_isTalkNowCheck() && + (dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) { + if (!dMeter2Info_isSub2DStatus(1)) { + if (isFmapScreen() || isDmapScreen()) { + dMeter2Info_setMapStatus(2); + dMeter2Info_setMapKeyDirection(0x400); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } + } + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -465,8 +791,62 @@ asm void dMeterMap_c::meter_map_move(u32 param_0) { #include "asm/d/meter/d_meter_map/meter_map_move__11dMeterMap_cFUl.s" } #pragma pop +#endif /* 8020E9CC-8020ED60 20930C 0394+00 1/1 0/0 0/0 .text keyCheck__11dMeterMap_cFv */ +// matches with literals +#ifdef NONMATCHING +void dMeterMap_c::keyCheck() { + if (dMw_LEFT_TRIGGER() && !isEventRunCheck() && (dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) { + if (dMeter2Info_getMapStatus() == 1) { + if (isDispPosInsideFlg()) { + setDispPosOutsideFlg_SE_On(); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_CLOSE_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_setMapStatus(0); + } + } else if (dMeter2Info_getMapStatus() == 0) { + if (!dMeter2Info_isSub2DStatus(1) && (isFmapScreen() || isDmapScreen())) { + dMeter2Info_setMapStatus(2); + dMeter2Info_setMapKeyDirection(0x200); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } else { + setDispPosInsideFlg_SE_On(); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + dMeter2Info_setMapStatus(1); + } + } + } else if (dMw_RIGHT_TRIGGER() && !isEventRunCheck() && (dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) { + if (dMeter2Info_getMapStatus() == 0) { + if (isEnableDispMapAndMapDispSizeTypeNo()) { + if (!isDispPosInsideFlg()) { + setDispPosInsideFlg_SE_On(); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + dMeter2Info_setMapStatus(1); + } + } else if (!dMeter2Info_isSub2DStatus(1) && (isFmapScreen() || isDmapScreen())) { + dMeter2Info_setMapStatus(2); + dMeter2Info_setMapKeyDirection(0x400); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } + } else if (dMeter2Info_getMapStatus() == 1 && isDispPosInsideFlg()) { + if (!dMeter2Info_isSub2DStatus(1) && (isFmapScreen() || isDmapScreen())) { + dMeter2Info_setMapStatus(2); + dMeter2Info_setMapKeyDirection(0x400); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_set2DVibration(); + } else { + setDispPosOutsideFlg_SE_On(); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_CLOSE_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + dMeter2Info_setMapStatus(0); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -475,5 +855,6 @@ asm void dMeterMap_c::keyCheck() { #include "asm/d/meter/d_meter_map/keyCheck__11dMeterMap_cFv.s" } #pragma pop +#endif /* 80398208-80398208 024868 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/msg/d_msg_object.cpp b/src/d/msg/d_msg_object.cpp index b5f7e8dc75..fc4aa12c40 100644 --- a/src/d/msg/d_msg_object.cpp +++ b/src/d/msg/d_msg_object.cpp @@ -12,32 +12,8 @@ // Types: // -struct msg_class {}; - -struct JKRHeap { - /* 802CE784 */ void getTotalFreeSize(); -}; - -struct JKRArchive { - struct EMountMode {}; -}; - -struct mDoDvdThd_mountXArchive_c { - /* 800161E0 */ void create(char const*, u8, JKRArchive::EMountMode, JKRHeap*); -}; - -struct mDoCPd_c { - static u8 m_cpadInfo[256]; -}; - struct jmessage_tControl {}; -struct Vec {}; - -struct cXyz { - /* 8026702C */ bool operator==(Vec const&) const; -}; - struct jmessage_tReference { /* 80228B04 */ jmessage_tReference(); /* 80229034 */ void pageSend(); @@ -58,49 +34,11 @@ struct jmessage_tRenderingProcessor { /* 8022E12C */ void resetRendering(); }; -struct fopAc_ac_c {}; - -struct daPy_py_c { - static u8 m_midnaActor[4]; -}; - -struct dSv_player_item_record_c { - /* 80033F7C */ void getBombNum(u8) const; -}; - -struct dSv_player_item_c { - /* 80033030 */ void getItem(int, bool) const; -}; - -struct dSv_player_get_item_c { - /* 80033E60 */ void onFirstBit(u8); -}; - -struct dSv_event_tmp_flag_c { - static u8 const tempBitLabels[370 + 2 /* padding */]; -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 8003498C */ void onEventBit(u16); - /* 800349A4 */ void offEventBit(u16); - /* 800349BC */ void isEventBit(u16) const; - /* 800349E0 */ void setEventReg(u16, u8); - /* 80034A04 */ void getEventReg(u16) const; -}; - struct dMsgString_c { /* 80249C20 */ dMsgString_c(); /* 80249D28 */ ~dMsgString_c(); }; -struct JUTFont {}; - -struct JKRExpHeap {}; - struct dMsgScrnTree_c { /* 80248954 */ dMsgScrnTree_c(JUTFont*, JKRExpHeap*); }; @@ -155,154 +93,11 @@ struct dMsgScrnBase_c { /* 8023C3EC */ void setRubyString(char*); }; -struct J2DTextBox {}; struct COutFont_c { /* 80225C94 */ COutFont_c(u8); }; -struct dMsgObject_c { - /* 80233284 */ void _create(msg_class*); - /* 80233590 */ void _execute(); - /* 802339BC */ void _draw(); - /* 80233AE8 */ void _delete(); - /* 80233D04 */ void setMessageIndex(u32, u32, bool); - /* 80233E70 */ void setMessageIndexDemo(u32, bool); - /* 80233F84 */ void getMessageIndex(u32); - /* 80233FD8 */ void getRevoMessageIndex(u32); - /* 802340D4 */ void getMessageIndexAlways(u32); - /* 80234128 */ void getMessageIDAlways(u32); - /* 8023413C */ void getMessageGroup(u32); - /* 80234150 */ void waitProc(); - /* 80234318 */ void openProc(); - /* 802349D8 */ void outnowProc(); - /* 80234CCC */ void outwaitProc(); - /* 80234FF0 */ void stopProc(); - /* 80234FF4 */ void continueProc(); - /* 8023531C */ void selectProc(); - /* 8023587C */ void selectEndProc(); - /* 802358D4 */ void inputProc(); - /* 80235AD4 */ void finishProc(); - /* 80235CC0 */ void endProc(); - /* 80235EBC */ void deleteProc(); - /* 8023609C */ void textmodeProc(); - /* 802360A0 */ void talkStartInit(); - /* 8023670C */ void fukiPosCalc(bool); - /* 802368E4 */ void setStatusLocal(u16); - /* 802368F8 */ void getStatusLocal(); - /* 8023690C */ void delete_screen(bool); - /* 802369D8 */ void isSend(); - /* 80236BF8 */ void readMessageGroupLocal(mDoDvdThd_mountXArchive_c**); - /* 80236C90 */ void changeFlowGroupLocal(s32); - /* 80236CD4 */ void demoMessageGroupLocal(); - /* 80236D00 */ void endFlowGroupLocal(); - /* 80236D0C */ void changeGroupLocal(s16); - /* 80236DE4 */ void getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, - char*, char*, s16*); - /* 802370A8 */ void isGetItemMessage(); - /* 802370BC */ void isKanbanMessage(); - /* 802370E8 */ void isHowlMessage(); - /* 802370FC */ void isMidonaMessage(); - /* 80237138 */ void isMidonaNormalTalkWait(); - /* 802371B0 */ void isMidonaTalkWait(); - /* 802371E4 */ void isPlaceMessage(); - /* 802371F8 */ void isBossMessage(); - /* 8023720C */ bool isBookMessage(); - /* 80237214 */ void isStaffMessage(); - /* 80237228 */ void isSaveMessage(); - /* 8023723C */ void isTalkMessage(); - /* 802372CC */ void getSmellName(); - /* 80237334 */ void getPortalName(); - /* 8023738C */ void getBombName(); - /* 8023741C */ void getInsectName(); - /* 80237478 */ void getLetterName(); - /* 802374D0 */ void getSelectBombNum(); - /* 80237520 */ void onMsgSendControlLocal(); - /* 80237530 */ void offMsgSendControlLocal(); - /* 80237550 */ void isMsgSendControlLocal(); - /* 8023755C */ void onMsgSendLocal(); - /* 8023756C */ void offMsgSendLocal(); - /* 8023757C */ void isMsgSendLocal(); - /* 80237588 */ void isMouthCheckLocal(); - /* 8023759C */ void getBombBuyPriceLocal(u8); - /* 802375E4 */ void addSelectBomBag(u8); - /* 80237610 */ void resetSelectBomBag(); - /* 8023763C */ void getSelectBombBagIDLocal(); - /* 8023768C */ void getSelectBombPriceLocal(); - /* 8023773C */ void setEquipBombInfoLocal(); - /* 80237748 */ void updateEquipBombInfoLocal(); - /* 802378B8 */ void setShopWaitTimer(u8); - /* 802378CC */ void setSelectWordFlagLocal(u8); - /* 802378D4 */ void isHowlHearingModeLocal(); - /* 80237934 */ void isCameraCancelFlag(); - /* 80237950 */ void onCameraCancelFlag(); - /* 80237968 */ void offCameraCancelFlag(); - /* 80237980 */ void isKillMessageFlag(); - /* 80237994 */ void onKillMessageFlag(); - /* 802379AC */ void setKillMessageFlag(); - /* 802379D8 */ void setKillMessageFlagLocal(); - /* 80237A74 */ void setTalkPartner(fopAc_ac_c*); - /* 80237A88 */ void setNowTalkFlowNo(s16); - /* 80237A9C */ void getNowTalkFlowNo(); - /* 80237AB0 */ void setDemoMessage(u32); - /* 80237AE0 */ void setTalkHeap(void*); - /* 80237B10 */ void setTalkHeapLocal(void*); - /* 80237B54 */ void getTalkHeap(); - /* 80237B68 */ void isDraw(); - /* 80237BFC */ void setButtonStatusLocal(); - /* 80237D88 */ void setDemoMessageLocal(u32); - /* 80237DD8 */ void getSmellTypeMessageIDLocal(); - /* 80237E04 */ void setSmellTypeLocal(u8); - /* 80237E58 */ void getSelectCursorPosLocal(); - /* 80237E68 */ void setSelectCursorPosLocal(u8); - /* 80237F10 */ void setTalkActorLocal(fopAc_ac_c*); - /* 8023800C */ void readMessageGroup(mDoDvdThd_mountXArchive_c**); - /* 8023803C */ void changeFlowGroup(s32); - /* 8023806C */ void demoMessageGroup(); - /* 80238098 */ void endFlowGroup(); - /* 802380C4 */ void changeGroup(s16); - /* 802380F4 */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, - char*, char*, s16*); - /* 80238174 */ void getMsgDtPtr(); - /* 80238188 */ void setProcessID(unsigned int); - /* 8023819C */ void getActor(); - /* 802381C0 */ void getpTalkActor(); - /* 802381D4 */ void getIdx(); - /* 802381E8 */ void getNodeIdx(); - /* 802381FC */ void setStatus(u16); - /* 8023822C */ void getStatus(); - /* 80238258 */ void getScrnDrawPtr(); - /* 8023826C */ void setTalkActor(fopAc_ac_c*); - /* 8023829C */ void onMsgSendControl(); - /* 802382C8 */ void offMsgSendControl(); - /* 802382F4 */ void isMsgSendControl(); - /* 80238320 */ void onMsgSend(); - /* 8023834C */ void offMsgSend(); - /* 80238378 */ void isMsgSend(); - /* 802383A4 */ void isMouthCheck(); - /* 802383D0 */ void getMessageID(); - /* 802383E4 */ void getSmellTypeMessageID(); - /* 80238410 */ void setSmellType(u8); - /* 80238440 */ void getSelectCursorPos(); - /* 8023846C */ void setSelectCursorPos(u8); - /* 8023849C */ void setPortalMessageID(u16); - /* 802384B0 */ void setInsectItemNo(u8); - /* 802384C4 */ void setLetterNameID(u16); - /* 802384D8 */ void setArrowNum(u8); - /* 802384EC */ void setMsgOutputType(u8); - /* 80238500 */ void getMsgOutputType(); - /* 80238514 */ void getWord(); - /* 80238528 */ void getSelectWord(int); - /* 80238544 */ void setSelectWordFlag(u8); - /* 80238574 */ void getSelectWordFlag(); - /* 80238588 */ void isHowlHearingMode(); - /* 802385B4 */ void getSelectBombBagID(); - /* 802385E0 */ void getSelectBombPrice(); - /* 8023860C */ void setEquipBombInfo(); - /* 80238638 */ void getItemEquipButton(); - /* 8023864C */ void setSelectCancelPos(u8); -}; - struct dMsgObject_HowlHIO_c { /* 80232AEC */ dMsgObject_HowlHIO_c(); /* 80238B94 */ ~dMsgObject_HowlHIO_c(); @@ -313,26 +108,6 @@ struct dMsgObject_HIO_c { /* 80238BDC */ ~dMsgObject_HIO_c(); }; -struct dMeter2_c { - /* 8021F6EC */ void emphasisButtonDelete(); -}; - -struct dMeter2Info_c { - /* 8021C1DC */ void isFloatingMessageVisible(); - /* 8021C218 */ void resetFloatingMessage(); - /* 8021C238 */ void decMsgKeyWaitTimer(); -}; - -struct dEvt_control_c { - /* 8004368C */ void setPtT(void*); -}; - -struct dDlst_base_c {}; - -struct dDlst_list_c { - /* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*); -}; - struct dDemo_c { static u8 m_control[4]; static u8 m_mesgControl[4]; @@ -351,8 +126,6 @@ struct Z2SeqMgr { /* 802AFF8C */ void changeBgmStatus(s32); }; -struct JAISoundID {}; - struct Z2SeMgr { /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); }; @@ -361,12 +134,6 @@ struct Z2AudioMgr { static u8 mAudioMgrPtr[4 + 4 /* padding */]; }; -struct JUtility { - struct TColor { - /* 80193960 */ TColor(); - }; -}; - struct JMessage { struct TControl { /* 802A75D4 */ void reset(); @@ -661,15 +428,11 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void sprintf(); -extern "C" void strcpy(); extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */]; extern "C" extern void* g_fopMsg_Method[5 + 1 /* padding */]; extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_meter2_info[248]; extern "C" extern u8 data_80450B70[4]; extern "C" u8 m_control__7dDemo_c[4]; extern "C" u8 m_mesgControl__7dDemo_c[4]; @@ -2090,7 +1853,7 @@ asm void dMsgObject_c::setStatus(u16 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgObject_c::getStatus() { +asm u16 dMsgObject_c::getStatus() { nofralloc #include "asm/d/msg/d_msg_object/getStatus__12dMsgObject_cFv.s" } diff --git a/src/m_Do/m_Do_mtx.cpp b/src/m_Do/m_Do_mtx.cpp index 1dca9d11b9..8f9b9f025c 100644 --- a/src/m_Do/m_Do_mtx.cpp +++ b/src/m_Do/m_Do_mtx.cpp @@ -287,7 +287,7 @@ asm void mDoMtx_QuatConcat(Quaternion const* param_0, Quaternion const* param_1, #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoMtx_MtxToRot(f32 const (*param_0)[4], csXyz* param_1) { +asm void mDoMtx_MtxToRot(MtxP param_0, csXyz* param_1) { nofralloc #include "asm/m_Do/m_Do_mtx/mDoMtx_MtxToRot__FPA4_CfP5csXyz.s" }