diff options
50 files changed, 813 insertions, 296 deletions
diff --git a/configure.py b/configure.py index e9f70f46..c6fe0b72 100755 --- a/configure.py +++ b/configure.py @@ -388,7 +388,7 @@ config.libs = [ "objects": [ Object(Matching, "m_Do/m_Do_main.cpp"), Object(Matching, "m_Do/m_Do_printf.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_audio.cpp"), + Object(Matching, "m_Do/m_Do_audio.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_controller_pad.cpp"), Object(NonMatching, "m_Do/m_Do_graphic.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_machine.cpp"), @@ -397,12 +397,12 @@ config.libs = [ Object(Matching, "m_Do/m_Do_lib.cpp"), Object(Matching, "m_Do/m_Do_hostIO.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_Reset.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_dvd_thread.cpp"), + Object(Matching, "m_Do/m_Do_dvd_thread.cpp"), Object(Matching, "m_Do/m_Do_DVDError.cpp"), Object(Matching, "m_Do/m_Do_MemCard.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_MemCardRWmng.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_gba_com.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_machine_exception.cpp"), + Object(Matching, "m_Do/m_Do_machine_exception.cpp"), ], }, { @@ -424,7 +424,7 @@ config.libs = [ "host": True, "objects": [ # f_ap - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "f_ap/f_ap_game.cpp"), + Object(Matching, "f_ap/f_ap_game.cpp"), # f_op Object(Matching, "f_op/f_op_actor.cpp"), @@ -435,7 +435,7 @@ config.libs = [ Object(Matching, "f_op/f_op_camera_mng.cpp"), Object(Matching, "f_op/f_op_overlap.cpp"), Object(Matching, "f_op/f_op_overlap_mng.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "f_op/f_op_overlap_req.cpp"), + Object(Matching, "f_op/f_op_overlap_req.cpp"), Object(Matching, "f_op/f_op_scene.cpp"), Object(Matching, "f_op/f_op_scene_iter.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "f_op/f_op_scene_mng.cpp"), @@ -490,13 +490,13 @@ config.libs = [ "progress_category": "game", "host": True, "objects": [ - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_stage.cpp"), + Object(Matching, "d/d_stage.cpp"), Object(NonMatching, "d/d_map.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_com_inf_game.cpp"), Object(Matching, "d/d_com_lib_game.cpp"), Object(Matching, "d/d_com_static.cpp"), Object(Matching, "d/d_lib.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_save.cpp"), + Object(Matching, "d/d_save.cpp"), Object(Matching, "d/d_save_init.cpp"), Object(Matching, "d/d_shop.cpp"), Object(Matching, "d/d_jnt_hit.cpp"), @@ -541,8 +541,8 @@ config.libs = [ Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_bg_s.cpp"), Object(Matching, "d/d_bg_s_acch.cpp"), Object(Matching, "d/d_bg_s_func.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_bg_s_lin_chk.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_bg_s_movebg_actor.cpp"), + Object(Matching, "d/d_bg_s_lin_chk.cpp"), + Object(Matching, "d/d_bg_s_movebg_actor.cpp"), Object(Matching, "d/d_bg_s_spl_grp_chk.cpp"), Object(Matching, "d/d_bg_s_wtr_chk.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_bg_w.cpp"), @@ -564,10 +564,10 @@ config.libs = [ Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_seafightgame.cpp"), Object(Matching, "d/d_spline_path.cpp"), Object(Matching, "d/d_s_actor_data_mng.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_item.cpp"), + Object(Matching, "d/d_item.cpp"), Object(NonMatching, "d/d_2dnumber.cpp"), Object(Matching, "d/d_a_npc_cb1_static.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_a_npc_mk_static.cpp"), + Object(Matching, "d/d_a_npc_mk_static.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_salvage.cpp"), Object(Matching, "d/d_snap.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_point_wind.cpp"), @@ -580,15 +580,15 @@ config.libs = [ Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_dai_item.cpp"), Object(Matching, "d/actor/d_a_demo00.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_disappear.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_esa.cpp"), + Object(Matching, "d/actor/d_a_esa.cpp"), Object(NonMatching, "d/actor/d_a_grid.cpp"), Object(NonMatching, "d/actor/d_a_himo2.cpp"), Object(Matching, "d/actor/d_a_hookshot.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_ib.cpp"), + Object(Matching, "d/actor/d_a_ib.cpp"), Object(NonMatching, "d/actor/d_a_item.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_itembase.cpp"), Object(Matching, "d/actor/d_a_nh.cpp"), - Object(Matching, "d/actor/d_a_npc_fa1.cpp"), + Object(Matching, "d/actor/d_a_npc_fa1.cpp"), Object(NonMatching, "d/actor/d_a_obj_search.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_player.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_player_main.cpp"), diff --git a/include/JAZelAudio/JAIZelBasic.h b/include/JAZelAudio/JAIZelBasic.h index 38fb8257..970f044d 100644 --- a/include/JAZelAudio/JAIZelBasic.h +++ b/include/JAZelAudio/JAIZelBasic.h @@ -154,8 +154,16 @@ public: void setMinute(s32 i_minute) { mMinute = i_minute; } void setWeekday(s32 i_weekday) { mWeekday = i_weekday; } - f32 calcMainBgmVol() { return field_0x0080 * field_0x0084 * field_0x0088 * field_0x008c * field_0x0090 * field_0x0094 * field_0x0098 * field_0x009c * field_0x00ac; } - f32 calcSubBgmVol() { return field_0x00a0 * field_0x00a4 * field_0x00a8; } + f32 calcMainBgmVol() { + return field_0x0080 * field_0x0084 * field_0x0088 * field_0x008c * field_0x0090 * field_0x0094 * field_0x0098 * field_0x009c * field_0x00ac; + } + f32 calcSubBgmVol() { +#if VERSION == VERSION_DEMO + return field_0x00a0 * field_0x00a4; +#else + return field_0x00a0 * field_0x00a4 * field_0x00a8; +#endif + } void bstHoriOn() { field_0x1dd4 = 1; } void bstHoriOff() { field_0x1dd4 = 0; } @@ -201,7 +209,6 @@ public: /* 0x0020 */ u8 field_0x0020; /* 0x0021 */ u8 field_0x0021; - /* 0x0022 */ u8 field_0x0022[0x0024 - 0x0022]; /* 0x0024 */ u8* field_0x0024; #if VERSION > VERSION_JPN /* 0x0028 */ int field_0x0028; @@ -236,7 +243,6 @@ public: /* 0x0064 */ u8 field_0x0064; /* 0x0065 */ u8 field_0x0065; /* 0x0066 */ u8 field_0x0066; - /* 0x0067 */ u8 field_0x0067[0x0068 - 0x0067]; /* 0x0068 */ JAISound* mpMainBgmSound; /* 0x006C */ JAISound* mpSubBgmSound; /* 0x0070 */ JAISound* mpStreamBgmSound; @@ -253,7 +259,9 @@ public: /* 0x009C */ f32 field_0x009c; /* 0x00A0 */ f32 field_0x00a0; /* 0x00A4 */ f32 field_0x00a4; +#if VERSION > VERSION_DEMO /* 0x00A8 */ f32 field_0x00a8; +#endif /* 0x00AC */ f32 field_0x00ac; /* 0x00B0 */ int field_0x00b0; /* 0x00B4 */ u8 field_0x00b4; @@ -286,6 +294,9 @@ public: /* 0x0134 */ u32 mSeNum[MAX_CONCURRENT_SE_NUM]; /* 0x0194 */ u32 field_0x0194[MAX_CONCURRENT_SE_NUM]; /* 0x01F4 */ int field_0x01f4; +#if VERSION == VERSION_DEMO + u8 temppadding[0x60]; +#endif /* 0x01F8 */ u8 field_0x01f8; /* 0x01F9 */ u8 field_0x01f9; /* 0x01FA */ u8 field_0x01fa; @@ -298,7 +309,9 @@ public: /* 0x0201 */ u8 field_0x0201; /* 0x0202 */ u8 field_0x0202[0x0204 - 0x0202]; /* 0x0204 */ u8 field_0x0204; +#if VERSION > VERSION_DEMO /* 0x0205 */ u8 field_0x0205; +#endif /* 0x0206 */ u8 field_0x0206; /* 0x0207 */ u8 field_0x0207; /* 0x0208 */ u8 field_0x0208; diff --git a/include/JSystem/J3DU/J3DUClipper.h b/include/JSystem/J3DU/J3DUClipper.h index 113ec60e..7bf7886a 100644 --- a/include/JSystem/J3DU/J3DUClipper.h +++ b/include/JSystem/J3DU/J3DUClipper.h @@ -12,8 +12,8 @@ public: virtual ~J3DUClipper() {} void init(); void calcViewFrustum(); - s32 clip(const Mtx, Vec, f32); - s32 clip(const Mtx, Vec*, Vec*); + BOOL clip(const Mtx, Vec, f32); + BOOL clip(const Mtx, Vec*, Vec*); u32 clipByBox(J3DModel*); void setFovy(f32 fovy) { mFovY = fovy; } diff --git a/include/SSystem/SComponent/c_m3d_g_aab.h b/include/SSystem/SComponent/c_m3d_g_aab.h index b4ece970..53db9e7d 100644 --- a/include/SSystem/SComponent/c_m3d_g_aab.h +++ b/include/SSystem/SComponent/c_m3d_g_aab.h @@ -98,10 +98,18 @@ public: } } bool UnderPlaneYUnder(f32 y) const { - return mMin.y < y; + if (mMin.y < y) { + return true; + } else { + return false; + } } bool TopPlaneYUnder(f32 y) const { - return mMax.y < y; + if (mMax.y < y) { + return true; + } else { + return false; + } } void Cross(const cM3dGAab*) const {} diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index c36be434..6fddb926 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1637,35 +1637,65 @@ inline void dComIfGs_onSymbol(u8 i_no) { g_dComIfG_gameInfo.save.getPlayer().getCollect().onSymbol(i_no); } -inline BOOL dComIfGs_isDungeonItemMap() { - return g_dComIfG_gameInfo.save.getMemory().getBit().isDungeonItemMap(); -} +void dComIfGs_onDungeonItemMap(int i_stageNo); +void dComIfGs_offDungeonItemMap(int i_stageNo); +BOOL dComIfGs_isDungeonItemMap(int i_stageNo); +void dComIfGs_onDungeonItemCompass(int i_stageNo); +void dComIfGs_offDungeonItemCompass(int i_stageNo); +BOOL dComIfGs_isDungeonItemCompass(int i_stageNo); +void dComIfGs_onDungeonItemBossKey(int i_stageNo); +void dComIfGs_offDungeonItemBossKey(int i_stageNo); +BOOL dComIfGs_isDungeonItemBossKey(int i_stageNo); +void dComIfGs_onStageBossEnemy(int i_stageNo); +void dComIfGs_offStageBossEnemy(int i_stageNo); +BOOL dComIfGs_isStageBossEnemy(int i_stageNo); +void dComIfGs_onStageLife(int i_stageNo); +void dComIfGs_offStageLife(int i_stageNo); +BOOL dComIfGs_isStageLife(int i_stageNo); inline void dComIfGs_onDungeonItemMap() { g_dComIfG_gameInfo.save.getMemory().getBit().onDungeonItemMap(); } -inline BOOL dComIfGs_isDungeonItemCompass() { - return g_dComIfG_gameInfo.save.getMemory().getBit().isDungeonItemCompass(); +inline void dComIfGs_offDungeonItemMap() { + g_dComIfG_gameInfo.save.getMemory().getBit().offDungeonItemMap(); +} + +inline BOOL dComIfGs_isDungeonItemMap() { + return g_dComIfG_gameInfo.save.getMemory().getBit().isDungeonItemMap(); } inline void dComIfGs_onDungeonItemCompass() { g_dComIfG_gameInfo.save.getMemory().getBit().onDungeonItemCompass(); } -inline BOOL dComIfGs_isDungeonItemBossKey() { - return g_dComIfG_gameInfo.save.getMemory().getBit().isDungeonItemBossKey(); +inline void dComIfGs_offDungeonItemCompass() { + g_dComIfG_gameInfo.save.getMemory().getBit().offDungeonItemCompass(); +} + +inline BOOL dComIfGs_isDungeonItemCompass() { + return g_dComIfG_gameInfo.save.getMemory().getBit().isDungeonItemCompass(); } inline void dComIfGs_onDungeonItemBossKey() { g_dComIfG_gameInfo.save.getMemory().getBit().onDungeonItemBossKey(); } +inline void dComIfGs_offDungeonItemBossKey() { + g_dComIfG_gameInfo.save.getMemory().getBit().offDungeonItemBossKey(); +} + +inline BOOL dComIfGs_isDungeonItemBossKey() { + return g_dComIfG_gameInfo.save.getMemory().getBit().isDungeonItemBossKey(); +} + inline void dComIfGs_onStageBossEnemy() { g_dComIfG_gameInfo.save.getMemory().getBit().onStageBossEnemy(); } -BOOL dComIfGs_isStageBossEnemy(int i_stageNo); +inline void dComIfGs_offStageBossEnemy() { + g_dComIfG_gameInfo.save.getMemory().getBit().offStageBossEnemy(); +} inline BOOL dComIfGs_isStageBossEnemy() { return g_dComIfG_gameInfo.save.getMemory().getBit().isStageBossEnemy(); @@ -1679,18 +1709,22 @@ inline void dComIfGs_onStageLife() { g_dComIfG_gameInfo.save.getMemory().getBit().onStageLife(); } -BOOL dComIfGs_isStageLife(int i_stageNo); +inline void dComIfGs_offStageLife() { + g_dComIfG_gameInfo.save.getMemory().getBit().offStageLife(); +} inline BOOL dComIfGs_isStageLife() { return g_dComIfG_gameInfo.save.getMemory().getBit().isStageLife(); } -void dComIfGs_onStageLife(int i_stageNo); - inline void dComIfGs_onStageBossDemo() { g_dComIfG_gameInfo.save.getMemory().getBit().onStageBossDemo(); } +inline void dComIfGs_offStageBossDemo() { + g_dComIfG_gameInfo.save.getMemory().getBit().offStageBossDemo(); +} + inline BOOL dComIfGs_isStageBossDemo() { return g_dComIfG_gameInfo.save.getMemory().getBit().isStageBossDemo(); } @@ -3217,6 +3251,10 @@ inline int dComIfGp_roomControl_getStayNo() { return dStage_roomControl_c::getStayNo(); } +inline void dComIfGp_roomControl_setStayNo(int stayNo) { + dStage_roomControl_c::setStayNo(stayNo); +} + inline dBgW* dComIfGp_roomControl_getBgW(int i_roomNo) { return g_dComIfG_gameInfo.play.getRoomControl()->getBgW(i_roomNo); } @@ -3245,10 +3283,6 @@ inline void dComIfGp_roomControl_checkDrawArea() { g_dComIfG_gameInfo.play.getRoomControl()->checkDrawArea(); } -inline void dComIfGp_roomControl_setStayNo(int stayNo) { - g_dComIfG_gameInfo.play.getRoomControl()->setStayNo(stayNo); -} - inline void dComIfGp_roomControl_setStatusFlag(int i_roomNo, u8 i_flag) { g_dComIfG_gameInfo.play.getRoomControl()->setStatusFlag(i_roomNo, i_flag); } diff --git a/include/d/d_save.h b/include/d/d_save.h index 77bd5a32..3bf1ac8d 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -280,10 +280,13 @@ public: void setCollect(int idx, u8 byte) { mCollect[idx] = byte; } u8 checkCollect(int idx) { return mCollect[idx]; } void onTact(u8); + void offTact(u8); BOOL isTact(u8); void onTriforce(u8); + void offTriforce(u8); BOOL isTriforce(u8); void onSymbol(u8); + void offSymbol(u8); BOOL isSymbol(u8); int getTriforceNum(); diff --git a/include/f_ap/f_ap_game.h b/include/f_ap/f_ap_game.h index c50bcdc5..2f86fa2b 100644 --- a/include/f_ap/f_ap_game.h +++ b/include/f_ap/f_ap_game.h @@ -11,7 +11,7 @@ void fapGm_Execute(); class fapGm_HIO_c : public JORReflexible { public: fapGm_HIO_c(); - virtual ~fapGm_HIO_c(); + virtual ~fapGm_HIO_c() {} void genMessage(JORMContext* ctx); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 62d92e57..8462ecf9 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -545,8 +545,8 @@ f32 fopAcM_searchActorDistanceXZ(fopAc_ac_c* p_actorA, fopAc_ac_c* p_actorB); f32 fopAcM_searchActorDistanceXZ2(fopAc_ac_c* p_actorA, fopAc_ac_c* p_actorB); s32 fopAcM_rollPlayerCrash(fopAc_ac_c* i_this, f32 distAdjust, u32 flag); -s32 fopAcM_checkCullingBox(Mtx, f32, f32, f32, f32, f32, f32); -s32 fopAcM_cullingCheck(fopAc_ac_c*); +bool fopAcM_checkCullingBox(Mtx, f32, f32, f32, f32, f32, f32); +BOOL fopAcM_cullingCheck(fopAc_ac_c*); s32 fopAcM_orderTalkEvent(fopAc_ac_c*, fopAc_ac_c*); s32 fopAcM_orderTalkXBtnEvent(fopAc_ac_c* i_this, fopAc_ac_c* i_partner); s32 fopAcM_orderTalkYBtnEvent(fopAc_ac_c* i_this, fopAc_ac_c* i_partner); diff --git a/include/m_Do/m_Do_dvd_thread.h b/include/m_Do/m_Do_dvd_thread.h index ad26ee68..e43f7073 100644 --- a/include/m_Do/m_Do_dvd_thread.h +++ b/include/m_Do/m_Do_dvd_thread.h @@ -89,8 +89,8 @@ private: class mDoDvdThd_toMainRam_c : public mDoDvdThd_command_c { public: - mDoDvdThd_toMainRam_c(u8); - static mDoDvdThd_toMainRam_c* create(char const*, u8, JKRHeap*); + mDoDvdThd_toMainRam_c(u8 direction); + static mDoDvdThd_toMainRam_c* create(char const* path, u8 direction, JKRHeap* heap); virtual ~mDoDvdThd_toMainRam_c(); virtual BOOL execute(); diff --git a/include/m_Do/m_Do_lib.h b/include/m_Do/m_Do_lib.h index 8036f417..1484aad9 100644 --- a/include/m_Do/m_Do_lib.h +++ b/include/m_Do/m_Do_lib.h @@ -14,15 +14,15 @@ struct mDoLib_clipper { mClipper.calcViewFrustum(); } - static s32 clip(const Mtx m, Vec* max, Vec* min) { + static BOOL clip(const Mtx m, Vec* max, Vec* min) { return mClipper.clip(m, max, min); } - static s32 clip(const Mtx m, Vec center, f32 radius) { + static BOOL clip(const Mtx m, Vec center, f32 radius) { return mClipper.clip(m, center, radius); } - static s32 clip(J3DModel* model) { + static BOOL clip(J3DModel* model) { return mClipper.clipByBox(model); } diff --git a/src/JAZelAudio/JAIZelBasic.cpp b/src/JAZelAudio/JAIZelBasic.cpp index 745ecfbe..7508e7c7 100644 --- a/src/JAZelAudio/JAIZelBasic.cpp +++ b/src/JAZelAudio/JAIZelBasic.cpp @@ -41,7 +41,9 @@ JAIZelBasic::JAIZelBasic() { field_0x00a0 = 1.0f; field_0x00a4 = 1.0f; field_0x00ac = 1.0f; +#if VERSION > VERSION_DEMO field_0x00a8 = 1.0f; +#endif mHour = 0; mMinute = 0; mWeekday = 0; @@ -136,8 +138,10 @@ JAIZelBasic::JAIZelBasic() { field_0x01fe = 0; field_0x01ff = 0; field_0x0200 = 0; +#if VERSION > VERSION_DEMO field_0x0205 = 0; field_0x0066 = 0; +#endif #if VERSION > VERSION_JPN field_0x00bf = 0; field_0x0028 = 0; @@ -184,6 +188,7 @@ void JAIZelBasic::gframeProcess() { /* 802A30A4-802A31C0 .text resetProcess__11JAIZelBasicFv */ void JAIZelBasic::resetProcess() { +#if VERSION > VERSION_DEMO OSReport("[JAIZelBasic::resetProcess]\n"); for (int i = 0; i < MAX_CONCURRENT_SE_NUM; i++) { if (mpSeSound[i]) { @@ -194,6 +199,8 @@ void JAIZelBasic::resetProcess() { } } menuOut(); +#endif + for (int i = 0; i < JAIGlobalParameter::getParamSeqPlayTrackMax(); i++) { JAInter::SeqUpdateData* data = JAInter::SequenceMgr::getPlayTrackInfo(i); if (data && data->field_0x48) { @@ -206,8 +213,11 @@ void JAIZelBasic::resetProcess() { if (JAInter::SeMgr::seHandle) { JAInter::SeMgr::seHandle->setSeqInterVolume(SOUNDPARAM_Direct, 0.0f, 1); } + +#if VERSION > VERSION_DEMO mNextSceneBgmId = 0; field_0x022e = 0; +#endif field_0x022d = 0; } @@ -325,8 +335,10 @@ void JAIZelBasic::bgmStop(u32 i_fadeTime, s32 param_2) { } mSubBgmNum = -1; field_0x008c = 1.0f; +#if VERSION > VERSION_DEMO field_0x00bb = 0; field_0x0206 = 0; +#endif } demoBgmStop(i_fadeTime); field_0x1f3c = 0; @@ -335,6 +347,10 @@ void JAIZelBasic::bgmStop(u32 i_fadeTime, s32 param_2) { field_0x0064 = 0; field_0x0065 = 0; field_0x00b8 = 0; +#if VERSION == VERSION_DEMO + field_0x00bb = 0; + field_0x0206 = 0; +#endif field_0x00cb = 0xff; field_0x00cc = 0; field_0x0032 = 0; @@ -595,12 +611,16 @@ void JAIZelBasic::cbPracticeStop() { mpSubBgmSound = NULL; mSubBgmNum = -1; } +#if VERSION > VERSION_DEMO field_0x00a8 = 1.0; +#endif field_0x009c = 1.0; if (mpMainBgmSound) { mpMainBgmSound->setVolume(calcMainBgmVol(), 90, SOUNDPARAM_Unk0); } +#if VERSION > VERSION_DEMO field_0x00d0 = 0; +#endif } /* 802A6508-802A6570 .text checkCbPracticePlay__11JAIZelBasicFv */ @@ -1099,9 +1119,12 @@ void JAIZelBasic::startIsleBgm() { return; } u32 bgmNum; +#if VERSION > VERSION_DEMO if (mIslandRoomNo == dIsleRoom_OutsetIsland_e && checkEventBit(0xe20) == 1) { bgmNum = JA_BGM_ISLAND_LINK_3; - } else { + } else +#endif + { bgmNum = m_isle_info[mIslandRoomNo].bgmNum; bgmNum = expandSceneBgmNum(bgmNum); } @@ -1393,6 +1416,7 @@ BOOL JAIZelBasic::checkLinkOnBoardSea() { void JAIZelBasic::setSceneName(char* param_1, s32 roomNo, s32 param_3) { OSReport("[JAIZelBasic::setSceneName] spot = %s, room = %d\n", param_1, roomNo); s32 sceneNum = spotNameToId(param_1); +#if VERSION > VERSION_DEMO if (sceneNum == 0x75) { for (int i = 0; i < MAX_CONCURRENT_SE_NUM; i++) { if (mpSeSound[i]) { @@ -1410,6 +1434,7 @@ void JAIZelBasic::setSceneName(char* param_1, s32 roomNo, s32 param_3) { } else { field_0x0066 = 0; } +#endif setScene(sceneNum, roomNo, 0, param_3); } @@ -1533,7 +1558,6 @@ void JAIZelBasic::bgmMute(JAISound**, u32, s32, u32) { /* 802ABBD0-802ABC3C .text checkStreamPlaying__11JAIZelBasicFUl */ int JAIZelBasic::checkStreamPlaying(u32 param_1) { - /* Nonmatching */ JAISound* sound = JAInter::StreamMgr::streamUpdate->mpSound; if (!sound) { return false; @@ -1541,7 +1565,10 @@ int JAIZelBasic::checkStreamPlaying(u32 param_1) { if (JAInter::StreamLib::getPlayingFlag() == 0) { return false; } - return param_1 == sound->mSoundID; + if (param_1 != sound->mSoundID) { + return false; + } + return true; } /* 802ABC3C-802ABC88 .text stWaterLevelUp__11JAIZelBasicFv */ @@ -1593,8 +1620,7 @@ BOOL JAIZelBasic::checkEventBit(u16 param_1) { return FALSE; } u32 var2 = (param_1 & 0xff00) >> 8; - u32 var1 = param_1 & 0xff; - u8 temp = field_0x0024[var2] & var1; + u8 temp = field_0x0024[var2] & (param_1 & 0xff); if (temp) { return TRUE; } else { @@ -1659,10 +1685,10 @@ int JAIZelBasic::checkOnOuterSea(f32* r4) { if (sp0C.field_0x0 > 50000.0f) { return 4; } - int islandX = ((mIslandRoomNo - 1) % 7) - 3; - f32 f5 = islandX * 100000.0f; - int islandY = ((mIslandRoomNo - 1) / 7) - 3; - f32 f1 = islandY * 100000.0f; + int islandX = ((mIslandRoomNo - 1) % 7); + f32 f5 = (islandX - 3) * 100000.0f; + int islandY = ((mIslandRoomNo - 1) / 7); + f32 f1 = (islandY - 3) * 100000.0f; f32 f2 = mAudioCamera->field_0x0->x - f5; f32 f1_2 = mAudioCamera->field_0x0->z - f1; f32 f6 = sp0C.field_0x0 - f2; diff --git a/src/JSystem/J3DU/J3DUClipper.cpp b/src/JSystem/J3DU/J3DUClipper.cpp index 8b71c29e..605093e8 100644 --- a/src/JSystem/J3DU/J3DUClipper.cpp +++ b/src/JSystem/J3DU/J3DUClipper.cpp @@ -49,7 +49,7 @@ void J3DUClipper::calcViewFrustum() { } /* 80256888-802569D0 .text clip__11J3DUClipperFPA4_Cf3Vecf */ -s32 J3DUClipper::clip(const Mtx mtx, Vec pos, float radius) { +BOOL J3DUClipper::clip(const Mtx mtx, Vec pos, float radius) { Vec p; MTXMultVec(mtx, &pos, &p); @@ -70,7 +70,7 @@ s32 J3DUClipper::clip(const Mtx mtx, Vec pos, float radius) { } /* 802569D0-80256CB8 .text clip__11J3DUClipperFPA4_CfP3VecP3Vec */ -s32 J3DUClipper::clip(const Mtx mtx, Vec* pMin, Vec* pMax) { +BOOL J3DUClipper::clip(const Mtx mtx, Vec* pMin, Vec* pMax) { s32 clip[6]; for (u32 i = 0; i < ARRAY_SIZE(clip); i++) clip[i] = 0; diff --git a/src/SSystem/SComponent/c_m3d_g_aab.cpp b/src/SSystem/SComponent/c_m3d_g_aab.cpp index 4932804d..3b53627d 100644 --- a/src/SSystem/SComponent/c_m3d_g_aab.cpp +++ b/src/SSystem/SComponent/c_m3d_g_aab.cpp @@ -7,8 +7,8 @@ /* 80251CC4-80251D08 .text SetMinMax__8cM3dGAabFRC4cXyz */ void cM3dGAab::SetMinMax(const cXyz& pMinMax) { - this->SetMin(pMinMax); - this->SetMax(pMinMax); + SetMin(pMinMax); + SetMax(pMinMax); } /* 80251D08-80251D48 .text SetMin__8cM3dGAabFRC4cXyz */ diff --git a/src/d/actor/d_a_agb.cpp b/src/d/actor/d_a_agb.cpp index 5c99cc44..53d463d5 100644 --- a/src/d/actor/d_a_agb.cpp +++ b/src/d/actor/d_a_agb.cpp @@ -395,9 +395,9 @@ int daAgb_c::uploadSelect() { mUploadAction = UpAct_UNK3; #if VERSION <= VERSION_JPN - l_gbaCommand = mDoDvdThd_toMainRam_c::create("/res/Gba/client.bin", 0, dMsg_getAgbWorkArea()); + l_gbaCommand = mDoDvdThd_toMainRam_c::create("/res/Gba/client.bin", JKRArchive::DEFAULT_MOUNT_DIRECTION, dMsg_getAgbWorkArea()); #elif VERSION == VERSION_USA - l_gbaCommand = mDoDvdThd_toMainRam_c::create("/res/Gba/client_u.bin", 0, dMsg_getAgbWorkArea()); + l_gbaCommand = mDoDvdThd_toMainRam_c::create("/res/Gba/client_u.bin", JKRArchive::DEFAULT_MOUNT_DIRECTION, dMsg_getAgbWorkArea()); #elif VERSION == VERSION_PAL char path[28]; char pathNum[4]; @@ -405,7 +405,7 @@ int daAgb_c::uploadSelect() { sprintf(pathNum, "%d", dComIfGs_getPalLanguage()); strcat(path, pathNum); strcat(path, ".bin"); - l_gbaCommand = mDoDvdThd_toMainRam_c::create(path, 0, dMsg_getAgbWorkArea()); + l_gbaCommand = mDoDvdThd_toMainRam_c::create(path, JKRArchive::DEFAULT_MOUNT_DIRECTION, dMsg_getAgbWorkArea()); #endif JUT_ASSERT(VERSION_SELECT(591, 591, 860, 861), l_gbaCommand != NULL); @@ -473,7 +473,7 @@ int daAgb_c::uploadMessageLoad() { field_0x664--; if (field_0x664 == 0) { #if VERSION != VERSION_PAL - l_gbaCommand = mDoDvdThd_toMainRam_c::create("/res/Gba/msg_LZ.bin", 0, NULL); + l_gbaCommand = mDoDvdThd_toMainRam_c::create("/res/Gba/msg_LZ.bin", JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); #else char path[28]; char pathNum[4]; @@ -481,7 +481,7 @@ int daAgb_c::uploadMessageLoad() { sprintf(pathNum, "%d", dComIfGs_getPalLanguage()); strcat(path, pathNum); strcat(path, ".bin"); - l_gbaCommand = mDoDvdThd_toMainRam_c::create(path, 0, NULL); + l_gbaCommand = mDoDvdThd_toMainRam_c::create(path, JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); #endif JUT_ASSERT(VERSION_SELECT(715, 715, 1000, 1001), l_gbaCommand != NULL); diff --git a/src/d/actor/d_a_bomb2.cpp b/src/d/actor/d_a_bomb2.cpp index c4eb40bd..73c921cd 100644 --- a/src/d/actor/d_a_bomb2.cpp +++ b/src/d/actor/d_a_bomb2.cpp @@ -1251,12 +1251,7 @@ namespace daBomb2 { } bool Act_c::is_draw() { - bool draw = false; - if(mState != 2 && !field_0x743 && ! field_0x742) { - draw = true; - } - - return draw; + return mState != 2 && !field_0x743 && ! field_0x742; } void Act_c::draw_nut() { diff --git a/src/d/actor/d_a_esa.cpp b/src/d/actor/d_a_esa.cpp index 989457af..13d44f58 100644 --- a/src/d/actor/d_a_esa.cpp +++ b/src/d/actor/d_a_esa.cpp @@ -76,7 +76,7 @@ void bg_check(esa_class* i_this) { sp6C.x = 0.0f; sp6C.y = 0.0f; sp6C.z = i_this->speedF; - mDoMtx_YrotS(*calc_mtx, i_this->current.angle.y); + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); MtxPosition(&sp6C, &sp60); i_this->speed.x = sp60.x; i_this->speed.z = sp60.z; @@ -98,7 +98,7 @@ void esa_1_move(esa_class* i_this) { sp24.y = cM_rndF(8.0f) + 15.0f; sp24.z = cM_rndF(5.0f) + 10.0f; i_this->speedF = sp24.z; - mDoMtx_YrotS(*calc_mtx, i_this->current.angle.y); + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); MtxPosition(&sp24, &i_this->speed); i_this->mActionState = 1; @@ -126,7 +126,7 @@ void esa_1_move(esa_class* i_this) { sp24.x = 0.0f; sp24.y = 0.0f; sp24.z = i_this->speedF; - mDoMtx_YrotS(*calc_mtx, i_this->current.angle.y); + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); cXyz sp18; MtxPosition(&sp24, &sp18); i_this->speed.x = sp18.x; @@ -200,9 +200,9 @@ static BOOL daEsa_Execute(esa_class* i_this) { esa_1_move(i_this); MtxTrans(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z, false); - mDoMtx_YrotM(*calc_mtx, i_this->current.angle.y); - mDoMtx_XrotM(*calc_mtx, i_this->current.angle.x); - mDoMtx_ZrotM(*calc_mtx, i_this->current.angle.z); + cMtx_YrotM(*calc_mtx, i_this->current.angle.y); + cMtx_XrotM(*calc_mtx, i_this->current.angle.x); + cMtx_ZrotM(*calc_mtx, i_this->current.angle.z); i_this->mpModel->setBaseTRMtx(*calc_mtx); g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &i_this->current.pos, &i_this->tevStr); @@ -271,8 +271,9 @@ static cPhs_State daEsa_Create(fopAc_ac_c* i_actor) { } } + f32 f2 = REG0_F(5) + 1.0f; f32 temp = REG0_F(6) + 0.65f; - f32 scaleF = temp + cM_rndF(REG0_F(5) + 1.0f - temp); + f32 scaleF = temp + cM_rndF(f2 - temp); cXyz scale(scaleF, scaleF, scaleF); i_this->mpModel->setBaseScale(scale); fopAcM_SetMtx(i_this, i_this->mpModel->getBaseTRMtx()); diff --git a/src/d/actor/d_a_ib.cpp b/src/d/actor/d_a_ib.cpp index 70e9144f..e6ba0cd7 100644 --- a/src/d/actor/d_a_ib.cpp +++ b/src/d/actor/d_a_ib.cpp @@ -132,7 +132,7 @@ BOOL daIball_c::createItem() { itemBitNo = -1; if (isLimitedItem(items[i])) { itemBitNo = daIball_prm::getItemBitNo(this); - if ((itemBitNo == 0x1F || itemBitNo == 0xFF || itemBitNo == -1) || fopAcM_isItemForIb(itemBitNo, items[i], current.roomNo)) { + if ((itemBitNo == 0x1F || itemBitNo == 0xFF || itemBitNo == -1) || fopAcM_isItemForIb(itemBitNo, items[i], fopAcM_GetRoomNo(this))) { itemBitNo = -1; items[i] = dItemNo_YELLOW_RUPEE_e; } @@ -228,7 +228,7 @@ void daIball_c::mode_wait_init() { void daIball_c::mode_wait() { if (mAcch.ChkGroundLanding()) { mPrevSpeedY *= m_data.mBounceSpeedMult; - if (mPrevSpeedY > gravity - 0.5f) { + if (mPrevSpeedY > fopAcM_GetGravity(this) - 0.5f) { speedF = 0.0f; } else { speed.set(0.0f, -mPrevSpeedY, 0.0f); @@ -337,7 +337,10 @@ void daIball_c::CreateInit() { mpModel->calc(); dKy_plight_set(&mLight); + +#if VERSION > VERSION_DEMO setPointLight(); +#endif mLightFlickerMult = 1.0f; regist(this); @@ -420,17 +423,17 @@ cPhs_State daIball_c::_daIball_create() { /* 800F489C-800F4B40 .text CreateHeap__9daIball_cFv */ BOOL daIball_c::CreateHeap() { J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname, ALWAYS_BDL_IB); - JUT_ASSERT(1135, modelData != NULL); + JUT_ASSERT(DEMO_SELECT(1133, 1135), modelData != NULL); mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000222); if (!mpModel) { return FALSE; } J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(m_arcname, ALWAYS_BCK_START); - JUT_ASSERT(1152, pbck != NULL); + JUT_ASSERT(DEMO_SELECT(1150, 1152), pbck != NULL); int ret = mBckAnm.init(modelData, pbck, 1, J3DFrameCtrl::EMode_NONE); if (!ret) { return FALSE; } J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(m_arcname, ALWAYS_BTK_IB); - JUT_ASSERT(1164, pbtk != NULL); + JUT_ASSERT(DEMO_SELECT(1162, 1164), pbtk != NULL); ret = mBtkAnm.init(modelData, pbtk, 1, J3DFrameCtrl::EMode_LOOP); if (!ret) { return FALSE; } @@ -441,7 +444,7 @@ BOOL daIball_c::CreateHeap() { J3DAnmTevRegKey* pbrk; for (int i = 0; i < (int)ARRAY_SIZE(mBrkAnm); i++) { pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname, brkIds[i]); - JUT_ASSERT(1182, pbrk != NULL); + JUT_ASSERT(DEMO_SELECT(1180, 1182), pbrk != NULL); ret = mBrkAnm[i].init(modelData, pbrk, TRUE, J3DFrameCtrl::EMode_LOOP); if (!ret) { return FALSE; } } @@ -486,7 +489,7 @@ dCcD_SrcCyl daIball_c::m_cyl_src = { /* SrcObjAt Type */ 0, /* SrcObjAt Atp */ 0, /* SrcObjAt SPrm */ 0, - /* SrcObjTg Type */ ~(AT_TYPE_LIGHT), + /* SrcObjTg Type */ DEMO_SELECT(AT_TYPE_ALL, ~(AT_TYPE_LIGHT)), /* SrcObjTg SPrm */ cCcD_TgSPrm_Set_e | cCcD_TgSPrm_IsOther_e, /* SrcObjCo SPrm */ cCcD_CoSPrm_Set_e | cCcD_CoSPrm_IsOther_e | cCcD_CoSPrm_VsGrpAll_e, /* SrcGObjAt Se */ 0, diff --git a/src/d/actor/d_a_npc_tc.cpp b/src/d/actor/d_a_npc_tc.cpp index 0114149e..54111072 100644 --- a/src/d/actor/d_a_npc_tc.cpp +++ b/src/d/actor/d_a_npc_tc.cpp @@ -729,7 +729,7 @@ void daNpc_Tc_c::anmAtr(u16 i_msgStatus) { /* 0000156C-00001618 .text stopTower__10daNpc_Tc_cFv */ void daNpc_Tc_c::stopTower() { - JUT_ASSERT(VERSION_SELECT(0x3F5, 0x3F4, 0x3F4, 0x3F4), m_tower_actor != NULL); + JUT_ASSERT(DEMO_SELECT(0x3F5, 0x3F4), m_tower_actor != NULL); daObjSmplbg::Act_c* tower = m_tower_actor; switch (mType) { @@ -747,7 +747,7 @@ void daNpc_Tc_c::stopTower() { /* 00001618-000017A4 .text startTower__10daNpc_Tc_cFv */ void daNpc_Tc_c::startTower() { - JUT_ASSERT(VERSION_SELECT(0x408, 0x407, 0x407, 0x407), m_tower_actor != NULL); + JUT_ASSERT(DEMO_SELECT(0x408, 0x407), m_tower_actor != NULL); daObjSmplbg::Act_c* tower = m_tower_actor; cXyz temp; @@ -1142,7 +1142,7 @@ void daNpc_Tc_c::lookBack() { /* 000024C4-00002594 .text statusWait__10daNpc_Tc_cFv */ void daNpc_Tc_c::statusWait() { if (mType == TYPE_WHITE || mType == TYPE_RED) { - JUT_ASSERT(VERSION_SELECT(0x5FE, 0x601, 0x601, 0x601), m_tower_actor != NULL); + JUT_ASSERT(DEMO_SELECT(0x5FE, 0x601), m_tower_actor != NULL); if (m_tower_actor->isStop()) { mAnmPrmIdx = ANM_PRM_IDX_WAIT04; @@ -1875,7 +1875,7 @@ daNpc_Tc_c::daNpc_Tc_c() {} /* 000045D0-000047DC .text _createHeap__10daNpc_Tc_cFv */ BOOL daNpc_Tc_c::_createHeap() { J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes("Tc", TC_BDL_TC)); - JUT_ASSERT(VERSION_SELECT(0xA26, 0xA30, 0xA30, 0xA30), modelData != NULL); + JUT_ASSERT(DEMO_SELECT(0xA26, 0xA30), modelData != NULL); mpMorf = new mDoExt_McaMorf( modelData, @@ -1891,10 +1891,10 @@ BOOL daNpc_Tc_c::_createHeap() { } m_jnt.setHeadJntNum(2); - JUT_ASSERT(VERSION_SELECT(0xA36, 0xA40, 0xA40, 0xA40), m_jnt.getHeadJntNum() >= 0); + JUT_ASSERT(DEMO_SELECT(0xA36, 0xA40), m_jnt.getHeadJntNum() >= 0); m_jnt.setBackboneJntNum(1); - JUT_ASSERT(VERSION_SELECT(0xA38, 0xA42, 0xA42, 0xA42), m_jnt.getBackboneJntNum() >= 0); + JUT_ASSERT(DEMO_SELECT(0xA38, 0xA42), m_jnt.getBackboneJntNum() >= 0); modelData->getJointNodePointer(2)->setCallBack(nodeCallBack); modelData->getJointNodePointer(1)->setCallBack(nodeCallBack); mpMorf->getModel()->setUserArea(reinterpret_cast<u32>(this)); diff --git a/src/d/actor/d_a_obj_ikada.cpp b/src/d/actor/d_a_obj_ikada.cpp index c2c92504..8311df8e 100644 --- a/src/d/actor/d_a_obj_ikada.cpp +++ b/src/d/actor/d_a_obj_ikada.cpp @@ -1154,8 +1154,8 @@ bool daObj_Ikada_c::_execute() { if (isWave()) { f32 s = scale.x; - s32 uVar5 = fopAcM_checkCullingBox(mpModel->getBaseTRMtx(), s * -1000.0f, s * -50.0f, s * -1000.0f, s * 1000.0f, s * 1000.0f, s * 1000.0f); - if (speedF <= 2.0f || uVar5 & 0xFF || fopAcM_searchPlayerDistanceXZ(this) > 18000.0f) { + bool uVar5 = fopAcM_checkCullingBox(mpModel->getBaseTRMtx(), s * -1000.0f, s * -50.0f, s * -1000.0f, s * 1000.0f, s * 1000.0f, s * 1000.0f); + if (speedF <= 2.0f || uVar5 || fopAcM_searchPlayerDistanceXZ(this) > 18000.0f) { mWaveRCallback.end(); mWaveLCallback.end(); mSplashCallBack.end(); diff --git a/src/d/actor/d_a_oship.cpp b/src/d/actor/d_a_oship.cpp index 2a066ab2..528d0985 100644 --- a/src/d/actor/d_a_oship.cpp +++ b/src/d/actor/d_a_oship.cpp @@ -851,10 +851,10 @@ bool daOship_c::_execute() { setCollision(); setMtx(); - s32 cull_box_check = fopAcM_checkCullingBox(mpModel->getBaseTRMtx(), -300.0f, -100.0f, -650.0f, 300.0f, 700.0f, 800.0f); + bool cull_box_check = fopAcM_checkCullingBox(mpModel->getBaseTRMtx(), -300.0f, -100.0f, -650.0f, 300.0f, 700.0f, 800.0f); if (fopAcM_GetSpeedF(this) <= 2.0f || - (cull_box_check & 0xFF) || + cull_box_check || fopAcM_searchActorDistanceXZ(this, dComIfGp_getPlayer(0)) > 18000.0f) { mWaveCallback2.remove(); mWaveCallback1.remove(); diff --git a/src/d/actor/d_a_player_crawl.inc b/src/d/actor/d_a_player_crawl.inc index 6a8905ff..7e526a5f 100644 --- a/src/d/actor/d_a_player_crawl.inc +++ b/src/d/actor/d_a_player_crawl.inc @@ -209,15 +209,14 @@ void daPy_lk_c::crawlBgCheck(cXyz* param_0, cXyz* param_1) { /* 801390B8-801392BC .text checkCrawlSideWall__9daPy_lk_cFP4cXyzP4cXyzP4cXyzP4cXyzPsPs */ BOOL daPy_lk_c::checkCrawlSideWall(cXyz* param_1, cXyz* param_2, cXyz* param_3, cXyz* param_4, s16* param_5, s16* param_6) { - cXyz local_78; - cXyz local_90; - mLinkLinChk.Set(param_1, param_2, this); if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { *param_3 = mLinkLinChk.GetCross(); cM3dGPla* plane = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); *param_5 = cM_atan2s(plane->GetNP()->x, plane->GetNP()->z); - local_90 = *param_3 + (plane->mNormal * 75.0f); + cXyz local_78; + cXyz local_90; + local_90 = *param_3 + (*plane->GetNP() * 75.0f); local_78 = (local_90 + *param_3) * 0.5f; mLinkLinChk.Set(&local_78, &local_90, this); if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { diff --git a/src/d/actor/d_a_player_fan.inc b/src/d/actor/d_a_player_fan.inc index d0a0baff..22974fcd 100644 --- a/src/d/actor/d_a_player_fan.inc +++ b/src/d/actor/d_a_player_fan.inc @@ -147,9 +147,10 @@ void daPy_lk_c::setSmallFanModel() { /* 8014C0C0-8014C254 .text setParachuteFanModel__9daPy_lk_cFf */ void daPy_lk_c::setParachuteFanModel(f32 f31) { + J3DModelData* modelData; J3DAnmTransform* bck = getItemAnimeResource(LKANM_BCK_FANBA); JKRHeap* oldHeap = setItemHeap(); - J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcName, LINK_BDL_FANB)); + modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcName, LINK_BDL_FANB)); mpParachuteFanMorf = new mDoExt_McaMorf( modelData, diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index f1d0c0f5..5d07fd51 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -493,21 +493,25 @@ BOOL daPy_lk_c::jointCB1() { Quaternion* quaternion; trans_info = m_old_fdata->getOldFrameTransInfo(0x21); quaternion = m_old_fdata->getOldFrameQuaternion(0x21); + mDoMtx_stack_c::ZrotS(mFootData[1].field_0x008); mDoMtx_stack_c::revConcat(mpCLModel->getAnmMtx(0x20)); mpCLModel->setAnmMtx(0x20, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); mDoMtx_stack_c::quatM(quaternion); - trans_info++; - quaternion++; mDoMtx_stack_c::ZrotM(mFootData[1].field_0x00A); mpCLModel->setAnmMtx(0x21, mDoMtx_stack_c::get()); - mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); - mDoMtx_stack_c::quatM(quaternion); trans_info++; quaternion++; + + mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); + mDoMtx_stack_c::quatM(quaternion); mDoMtx_stack_c::ZrotM(mFootData[1].field_0x002); mpCLModel->setAnmMtx(0x22, mDoMtx_stack_c::get()); + trans_info++; + quaternion++; + mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); mDoMtx_stack_c::quatM(quaternion); mpCLModel->setAnmMtx(0x23, mDoMtx_stack_c::get()); @@ -517,18 +521,21 @@ BOOL daPy_lk_c::jointCB1() { mDoMtx_stack_c::ZrotS(mFootData[0].field_0x008); mDoMtx_stack_c::revConcat(mpCLModel->getAnmMtx(0x25)); mpCLModel->setAnmMtx(0x25, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); mDoMtx_stack_c::quatM(quaternion); - trans_info++; - quaternion++; mDoMtx_stack_c::ZrotM(mFootData[0].field_0x00A); mpCLModel->setAnmMtx(0x26, mDoMtx_stack_c::get()); - mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); - mDoMtx_stack_c::quatM(quaternion); trans_info++; quaternion++; + + mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); + mDoMtx_stack_c::quatM(quaternion); mDoMtx_stack_c::ZrotM(mFootData[0].field_0x002); mpCLModel->setAnmMtx(0x27, mDoMtx_stack_c::get()); + trans_info++; + quaternion++; + mDoMtx_stack_c::transM(trans_info->mTranslate.x, trans_info->mTranslate.y, trans_info->mTranslate.z); mDoMtx_stack_c::quatM(quaternion); mpCLModel->setAnmMtx(0x28, mDoMtx_stack_c::get()); @@ -1033,17 +1040,17 @@ BOOL daPy_lk_c::checkPlayerGuard() const { /* 8010558C-801056E4 .text setOutPower__9daPy_lk_cFfsi */ void daPy_lk_c::setOutPower(f32 param_1, s16 param_2, int param_3) { - f32 fVar1 = m3644; - if (fVar1 < 0.1f) { + if (m3644 < 0.1f) { m3640 = param_2; m3644 = param_1; } else { - f32 dVar5 = fVar1 * cM_ssin(m3640) + param_1 * cM_ssin(param_2); - f32 dVar4 = fVar1 * cM_scos(m3640) + param_1 * cM_scos(param_2); + f32 dVar5 = m3644 * cM_ssin(m3640) + param_1 * cM_ssin(param_2); + f32 dVar4 = m3644 * cM_scos(m3640) + param_1 * cM_scos(param_2); m3640 = cM_atan2s(dVar5, dVar4); dVar4 = std::sqrtf(dVar5 * dVar5 + dVar4 * dVar4); m3644 = dVar4; } + if (param_3 != 0) { onNoResetFlg1(daPyFlg1_UNK10000000); } @@ -6220,17 +6227,8 @@ BOOL daPy_lk_c::procMove() { setSpeedAndAngleNormal(m_HIO->mMove.m.field_0x0); if (!checkNextMode(0) && !changeFrontWallTypeProc() && !checkIceSlipFall()) { if (mDemo.getDemoMode() == daPy_demo_c::DEMO_N_WALK_e) { - // Fakematch. Retail regalloc doesn't match unless all three of these vars are given temps. - // But demo only matches with this: - // if (mNormalSpeed > mMaxNormalSpeed * m_HIO->mMove.m.field_0x2C) { - // mNormalSpeed = mMaxNormalSpeed * m_HIO->mMove.m.field_0x2C; - // } - f32 vel = mNormalSpeed; - f32 temp1 = mMaxNormalSpeed; - f32 temp2 = m_HIO->mMove.m.field_0x2C; - if (vel > temp1 * temp2) { - vel = temp1 * temp2; - mNormalSpeed = vel; + if (mNormalSpeed > mMaxNormalSpeed * m_HIO->mMove.m.field_0x2C) { + mNormalSpeed = m_HIO->mMove.m.field_0x2C * mMaxNormalSpeed; } } setBlendMoveAnime(-1.0f); @@ -8639,6 +8637,7 @@ int daPy_lk_c::setLegAngle(f32 param_1, int param_2, s16* param_3, s16* param_4) if (dVar9 > 10.0f) { dVar9 = 10.0f; } + mDoMtx_concat(m37B4, mFootData[param_2].field_0x088[0], mDoMtx_stack_c::get()); spE8.set(0.0f, mDoMtx_stack_c::get()[1][3], mDoMtx_stack_c::get()[2][3]); @@ -8647,6 +8646,7 @@ int daPy_lk_c::setLegAngle(f32 param_1, int param_2, s16* param_3, s16* param_4) mDoMtx_concat(m37B4, mFootData[param_2].field_0x088[2], mDoMtx_stack_c::get()); spD0.set(0.0f, mDoMtx_stack_c::get()[1][3] + 3.25f, mDoMtx_stack_c::get()[2][3]); + spAC = spDC - spE8; spA0 = spD0 - spDC; spB8.x = spD0.x; @@ -8689,8 +8689,10 @@ int daPy_lk_c::setLegAngle(f32 param_1, int param_2, s16* param_3, s16* param_4) spC4.z = sp58.z + f2 * sp70.z; sp94 = spC4 - spE8; sp88 = spB8 - spC4; + mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0), mDoMtx_stack_c::get()); sp64.set(0.0f, mDoMtx_stack_c::get()[1][3], mDoMtx_stack_c::get()[2][3]); + s16 r29 = cM_atan2s(-sp64.y, -sp64.z); s16 r27 = cM_atan2s(sp94.y, sp94.z); s16 r26 = cM_atan2s(sp88.y, sp88.z); @@ -10908,6 +10910,8 @@ BOOL daPy_lk_c::startRestartRoom(u32 mode, int eventInfoIdx, f32 param_3, int i_ pos = ¤t.pos; } + int subsector_x; + int subsector_z; int quad_x = (1.0f / 50000.0f) * (350000.0f + pos->x); int quad_z = (1.0f / 50000.0f) * (350000.0f + pos->z); if (quad_x < 0) { @@ -10920,9 +10924,8 @@ BOOL daPy_lk_c::startRestartRoom(u32 mode, int eventInfoIdx, f32 param_3, int i_ } else if (quad_z > 13) { quad_z = 13; } - - int subsector_z = (quad_z & 1) << 1; - int subsector_x = quad_x & 1; + subsector_z = (quad_z & 1) << 1; + subsector_x = quad_x & 1; int sector_num = (quad_z >> 1) * 7 + (quad_x >> 1); int scls_idx = subsector_x + (sector_num << 2) + subsector_z; @@ -12352,9 +12355,10 @@ void daPy_lk_c::playerInit() { int num_linktex_headers_seen = 0; J3DTexture* texture = mpCLModelData->getTexture(); JUT_ASSERT(VERSION_SELECT(21577, 21684, 21764, 21764), texture != NULL); + u16 tex_no; JUTNameTab* textureName = mpCLModelData->getTextureName(); JUT_ASSERT(VERSION_SELECT(21579, 21686, 21766, 21766), textureName != NULL); - for (u16 tex_no = 0; tex_no < texture->getNum(); tex_no++) { + for (tex_no = 0; tex_no < texture->getNum(); tex_no++) { const char* texName = textureName->getName(tex_no); if (strcmp(texName, "linktexS3TC") != 0) { continue; diff --git a/src/d/actor/d_a_player_rope.inc b/src/d/actor/d_a_player_rope.inc index 057e5f97..a8e6bbb2 100644 --- a/src/d/actor/d_a_player_rope.inc +++ b/src/d/actor/d_a_player_rope.inc @@ -1044,7 +1044,8 @@ BOOL daPy_lk_c::procRopeDown_init() { } else { himo2_class* rope = (himo2_class*)mActorKeepRope.getActor(); cXyz* temp = &rope->m1120[34].m10; - m35A4 = mRopePos.y - DEMO_SELECT(temp->z, temp->y); + f32 temp2 = DEMO_SELECT(temp->z, temp->y); + m35A4 = mRopePos.y - temp2; } if (current.pos.y <= m35A4) { diff --git a/src/d/actor/d_a_player_whide.inc b/src/d/actor/d_a_player_whide.inc index ee374e2b..4e97831b 100644 --- a/src/d/actor/d_a_player_whide.inc +++ b/src/d/actor/d_a_player_whide.inc @@ -99,7 +99,7 @@ cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* i_start, cXyz* i_end, cXyz* param local_3c.z = param_2->z + cM_ssin(sVar7) * m_HIO->mWall.m.field_0x50; mGndChk.SetPos(&local_3c); f32 f31 = dComIfG_Bgsp()->GroundCross(&mGndChk); - if (-G_CM3D_F_INF != f31 && (!cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y))) { + if (-G_CM3D_F_INF != f31 && !cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y)) { return NULL; } @@ -140,8 +140,8 @@ cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* i_start, cXyz* i_end, cXyz* param } cM3dGPla* triPla; triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - iVar4 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z); - if (sVar7 != (s16)iVar4) { + int iVar4 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z); + if (sVar7 != iVar4) { return NULL; } } diff --git a/src/d/d_a_npc_mk_static.cpp b/src/d/d_a_npc_mk_static.cpp index 789816e0..895325a6 100644 --- a/src/d/d_a_npc_mk_static.cpp +++ b/src/d/d_a_npc_mk_static.cpp @@ -87,7 +87,8 @@ f32 daNpc_Mk_Static_c::getSpeedF(f32 param_1, f32 param_2) { } else if (m8 >= (ma >> 1)) { fVar2 = param_2; } else { - fVar2 = m8 * ((2.0f / ma) * (param_2 - param_1)) + param_1; + f32 f4 = (2.0f / ma); + fVar2 = m8 * (f4 * (param_2 - param_1)) + param_1; } f32 result = fVar2 * m4; @@ -117,7 +118,7 @@ u8 daNpc_Mk_Static_c::goFarLink_3(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2) cXyz local_60 = dStack_74.getPoint(mPointIndex2); cXyz local_6c = dStack_74.getPoint(mPointIndex1); - s16 sVar4 = cLib_targetAngleY(fopAcM_GetPosition_p(param_1), fopAcM_GetPosition_p(link_actor)); + s16 sVar4 = cLib_targetAngleY(¶m_1->current.pos, &link_actor->current.pos); s16 sVar5 = cLib_targetAngleY(&local_60, &local_6c); cM3dGLin unusedLine; @@ -244,8 +245,9 @@ u8 daNpc_Mk_Static_c::runAwayProc(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2, turnPath(param_1, param_2, 2); break; } - case 3: - if ((link_actor->current.pos - param_1->current.pos).absXZ() < 800.0f) { + case 3: { + f32 temp = (link_actor->current.pos - param_1->current.pos).absXZ(); + if (temp < 800.0f) { me = 10; u8 uVar6 = goFarLink_2(param_1, param_2); runaway_com2(param_2, uVar6); @@ -256,13 +258,12 @@ u8 daNpc_Mk_Static_c::runAwayProc(fopAc_ac_c* param_1, dNpc_PathRun_c* param_2, m8 += 3; } break; - + } case 1: case 2: f32 fVar9 = (link_actor->current.pos - param_1->current.pos).absXZ(); - u8 options = (m0 == 1) ? (u8)2 : (u8)3; - if (walkPath(param_1, param_2, options)) { + if (walkPath(param_1, param_2, (m0 == 1) ? (u8)2 : (u8)3)) { if (fVar9 > 900.0f) { return 3; } else { diff --git a/src/d/d_bg_s_lin_chk.cpp b/src/d/d_bg_s_lin_chk.cpp index 7d21ac10..30f03445 100644 --- a/src/d/d_bg_s_lin_chk.cpp +++ b/src/d/d_bg_s_lin_chk.cpp @@ -8,5 +8,11 @@ /* 800A5678-800A56B8 .text Set__11dBgS_LinChkFP4cXyzP4cXyzP10fopAc_ac_c */ void dBgS_LinChk::Set(cXyz* pi_start, cXyz* pi_end, fopAc_ac_c* pi_actor) { - Set2(pi_start, pi_end, pi_actor ? fopAcM_GetID(pi_actor) : fpcM_ERROR_PROCESS_ID_e); + u32 id; + if (pi_actor != NULL) { + id = fopAcM_GetID(pi_actor); + } else { + id = fpcM_ERROR_PROCESS_ID_e; + } + Set2(pi_start, pi_end, id); } diff --git a/src/d/d_bg_s_movebg_actor.cpp b/src/d/d_bg_s_movebg_actor.cpp index ecbba4b6..c1d7246d 100644 --- a/src/d/d_bg_s_movebg_actor.cpp +++ b/src/d/d_bg_s_movebg_actor.cpp @@ -36,7 +36,9 @@ BOOL dBgS_MoveBgActor::MoveBGCreateHeap() { mpBgW->SetCrrFunc(m_set_func); } } else { +#if VERSION > VERSION_DEMO mpBgW = NULL; +#endif return FALSE; } diff --git a/src/d/d_bg_w.cpp b/src/d/d_bg_w.cpp index c535c54e..74686570 100644 --- a/src/d/d_bg_w.cpp +++ b/src/d/d_bg_w.cpp @@ -35,8 +35,8 @@ void dBgW::positionWallCorrect(dBgS_Acch* acch, f32 dist, cM3dGPla& plane, cXyz* f32 move = speed * dist; pupper_pos->x += move * plane.mNormal.x; pupper_pos->z += move * plane.mNormal.z; - JUT_ASSERT(0xd0, !isnan(pupper_pos->x)); - JUT_ASSERT(0xd1, !isnan(pupper_pos->z)); + JUT_ASSERT(208, !isnan(pupper_pos->x)); + JUT_ASSERT(209, !isnan(pupper_pos->z)); } /* 800A5E64-800A6DF8 .text RwgWallCorrect__4dBgWFP9dBgS_AcchUs */ @@ -195,7 +195,7 @@ bool dBgW::RwgWallCorrect(dBgS_Acch* pwi, u16 i_poly_idx) { f32 onx = -tri->m_plane.GetNP()->x; f32 ony = -tri->m_plane.GetNP()->z; - JUT_ASSERT(463, !(cM3d_IsZero(onx) && cM3d_IsZero(ony))); + JUT_ASSERT(DEMO_SELECT(444, 463), !(cM3d_IsZero(onx) && cM3d_IsZero(ony))); if (spE0 < spE4) { if ((spE0 > spDC) || (std::fabsf(spE0 - spDC) < 0.008f)) { @@ -207,8 +207,8 @@ bool dBgW::RwgWallCorrect(dBgS_Acch* pwi, u16 i_poly_idx) { pwi->GetPos()->x += cx0 - spF0; pwi->GetPos()->z += cy0 - spF4; - JUT_ASSERT(484, !isnan(pwi->GetPos()->x)); - JUT_ASSERT(485, !isnan(pwi->GetPos()->z)); + JUT_ASSERT(DEMO_SELECT(465, 484), !isnan(pwi->GetPos()->x)); + JUT_ASSERT(DEMO_SELECT(466, 485), !isnan(pwi->GetPos()->z)); pwi->CalcMovePosWork(); pwi->SetWallCirHit(cir_index); @@ -229,8 +229,8 @@ bool dBgW::RwgWallCorrect(dBgS_Acch* pwi, u16 i_poly_idx) { pwi->GetPos()->x += cx1 - spF8; pwi->GetPos()->z += cy1 - spFC; - JUT_ASSERT(524, !isnan(pwi->GetPos()->x)); - JUT_ASSERT(525, !isnan(pwi->GetPos()->z)); + JUT_ASSERT(DEMO_SELECT(505, 524), !isnan(pwi->GetPos()->x)); + JUT_ASSERT(DEMO_SELECT(506, 525), !isnan(pwi->GetPos()->z)); pwi->CalcMovePosWork(); pwi->SetWallCirHit(cir_index); @@ -298,9 +298,7 @@ bool dBgW::WallCorrectGrpRp(dBgS_Acch* acch, int grp_id, int depth) { if (ChkGrpThrough(grp_id, acch->GetGrpPassChk(), depth)) return false; - cBgW_GrpElm* grp = &pm_grp[grp_id]; - - if (!grp->aab.Cross(acch->GetWallBmdCylP())) + if (!pm_grp[grp_id].aab.Cross(acch->GetWallBmdCylP())) return false; bool ret = false; @@ -308,11 +306,12 @@ bool dBgW::WallCorrectGrpRp(dBgS_Acch* acch, int grp_id, int depth) { if (tree_idx != 0xFFFF && WallCorrectRp(acch, tree_idx)) ret = true; + depth++; s32 child_idx = pm_bgd->m_g_tbl[grp_id].m_first_child; while (true) { if (child_idx == 0xFFFF) break; - if (WallCorrectGrpRp(acch, child_idx, depth + 1)) + if (WallCorrectGrpRp(acch, child_idx, depth)) ret = true; child_idx = pm_bgd->m_g_tbl[child_idx].m_next_sibling; } @@ -347,8 +346,7 @@ bool dBgW::RwgRoofChk(u16 poly_index, dBgS_RoofChk* chk) { /* 800A72E0-800A7514 .text RoofChkRp__4dBgWFP12dBgS_RoofChki */ bool dBgW::RoofChkRp(dBgS_RoofChk* chk, int i) { cBgW_NodeTree* node = &m_nt_tbl[i]; - // if (!node->CrossY(chk->GetPosP()) || !node->UnderPlaneYUnder(chk->GetNowY()) || node->TopPlaneYUnder(chk->GetPosP()->y)) - if (!node->CrossY(chk->GetPosP()) || !(node->GetMinY() < chk->GetNowY()) || node->TopPlaneYUnder(chk->GetPosP()->y)) + if (!node->CrossY(chk->GetPosP()) || !node->UnderPlaneYUnder(chk->GetNowY()) || node->TopPlaneYUnder(chk->GetPosP()->y)) return false; cBgD_Tree_t* tree = &pm_bgd->m_tree_tbl[i]; @@ -385,8 +383,7 @@ bool dBgW::RoofChkGrpRp(dBgS_RoofChk* chk, int grp_id, int depth) { cBgW_GrpElm* grp = &pm_grp[grp_id]; - // if (!grp->aab.CrossY(chk->GetPosP()) || !grp->aab.UnderPlaneYUnder(chk->GetNowY()) || grp->aab.TopPlaneYUnder(chk->GetPosP()->y)) - if (!grp->aab.CrossY(chk->GetPosP()) || !(grp->aab.GetMinY() < chk->GetNowY()) || grp->aab.TopPlaneYUnder(chk->GetPosP()->y)) + if (!grp->aab.CrossY(chk->GetPosP()) || !grp->aab.UnderPlaneYUnder(chk->GetNowY()) || grp->aab.TopPlaneYUnder(chk->GetPosP()->y)) return false; bool ret = false; @@ -395,11 +392,12 @@ bool dBgW::RoofChkGrpRp(dBgS_RoofChk* chk, int grp_id, int depth) { if (tree_idx != 0xFFFF && RoofChkRp(chk, tree_idx)) ret = true; + depth++; s32 child_idx = grpd->m_first_child; while (true) { if (child_idx == 0xFFFF) break; - if (RoofChkGrpRp(chk, child_idx, depth + 1)) + if (RoofChkGrpRp(chk, child_idx, depth)) ret = true; child_idx = pm_bgd->m_g_tbl[child_idx].m_next_sibling; } @@ -434,8 +432,7 @@ bool dBgW::RwgSplGrpChk(u16 poly_index, dBgS_SplGrpChk* chk) { /* 800A783C-800A7A74 .text SplGrpChkRp__4dBgWFP14dBgS_SplGrpChki */ bool dBgW::SplGrpChkRp(dBgS_SplGrpChk* chk, int i) { cBgW_NodeTree* node = &m_nt_tbl[i]; - // if (!node->CrossY(chk->GetPosP()) || !node->UnderPlaneYUnder(chk->GetRoof()) || node->TopPlaneYUnder(chk->GetHeight())) - if (!node->CrossY(chk->GetPosP()) || !(node->GetMinY() < chk->GetRoof()) || node->GetMaxY() < chk->GetHeight()) + if (!node->CrossY(chk->GetPosP()) || !node->UnderPlaneYUnder(chk->GetRoof()) || node->TopPlaneYUnder(chk->GetHeight())) return false; cBgD_Tree_t* tree = &pm_bgd->m_tree_tbl[i]; @@ -472,8 +469,7 @@ bool dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* chk, int grp_id, int depth) { cBgW_GrpElm* grp = &pm_grp[grp_id]; - // if (!grp->aab.CrossY(chk->GetPosP()) || !grp->aab.UnderPlaneYUnder(chk->GetRoof()) || grp->aab.TopPlaneYUnder(chk->GetHeight())) - if (!grp->aab.CrossY(chk->GetPosP()) || !(grp->aab.GetMinY() < chk->GetRoof()) || grp->aab.GetMaxY() < chk->GetHeight()) + if (!grp->aab.CrossY(chk->GetPosP()) || !grp->aab.UnderPlaneYUnder(chk->GetRoof()) || grp->aab.TopPlaneYUnder(chk->GetHeight())) return false; bool ret = false; @@ -482,11 +478,12 @@ bool dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* chk, int grp_id, int depth) { if (tree_idx != 0xFFFF && SplGrpChkRp(chk, tree_idx)) ret = true; + depth++; s32 child_idx = grpd->m_first_child; while (true) { if (child_idx == 0xFFFF) break; - if (SplGrpChkGrpRp(chk, child_idx, depth + 1)) + if (SplGrpChkGrpRp(chk, child_idx, depth)) ret = true; child_idx = pm_bgd->m_g_tbl[child_idx].m_next_sibling; } @@ -579,11 +576,12 @@ bool dBgW::SphChkGrpRp(dBgS_SphChk* chk, void* user, int grp_id, int depth) { if (tree_idx != 0xFFFF && SphChkRp(chk, user, tree_idx)) ret = true; + depth++; s32 child_idx = grpd->m_first_child; while (true) { if (child_idx == 0xFFFF) break; - if (SphChkGrpRp(chk, user, child_idx, depth + 1)) + if (SphChkGrpRp(chk, user, child_idx, depth)) ret = true; child_idx = pm_bgd->m_g_tbl[child_idx].m_next_sibling; } @@ -601,15 +599,15 @@ void dBgW::positionWallCrrPos(cM3dGTri& plane, dBgS_CrrPos* crr, cXyz* pos, f32 /* 800A819C-800A8964 .text RwgWallCrrPos__4dBgWFUsP11dBgS_CrrPos */ bool dBgW::RwgWallCrrPos(u16 i_poly_index, dBgS_CrrPos* crr) { - cBgW_RwgElm* rwg_elm; - cBgD_Tri_t* tri_t; - cM3dGPla* plane; bool ret = false; cM3dGTri tri; cXyz wall_top_pos = *crr->GetPos(); wall_top_pos.y += crr->GetWallH(); cXyz old_wall_top_pos = *crr->GetOldPos(); old_wall_top_pos.y += crr->GetWallH(); + cBgW_RwgElm* rwg_elm; + cBgD_Tri_t* tri_t; + cM3dGPla* plane; u32 poly_index_z = i_poly_index; u32 poly_index_x = i_poly_index; @@ -797,7 +795,7 @@ void dBgW::dummyfunc() { // TODO: find where this assert actually comes from // cBgW::RwgShdwDraw ? int index = 0; - JUT_ASSERT(0, 0 <= index && index < pm_bgd->m_t_num); + JUT_ASSERT(DEMO_SELECT(0, 0), 0 <= index && index < pm_bgd->m_t_num); } /* 800A8964-800A8B70 .text WallCrrPosRp__4dBgWFP11dBgS_CrrPosi */ @@ -840,9 +838,7 @@ bool dBgW::WallCrrPosGrpRp(dBgS_CrrPos* crr, int grp_id, int depth) { if (ChkGrpThrough(grp_id, crr->GetGrpPassChk(), depth)) return false; - cBgW_GrpElm* grp = &pm_grp[grp_id]; - - if (!grp->aab.Cross(crr->GetCylP())) + if (!pm_grp[grp_id].aab.Cross(crr->GetCylP())) return false; bool ret = false; @@ -850,11 +846,12 @@ bool dBgW::WallCrrPosGrpRp(dBgS_CrrPos* crr, int grp_id, int depth) { if (tree_idx != 0xFFFF && WallCrrPosRp(crr, tree_idx)) ret = true; + depth++; s32 child_idx = pm_bgd->m_g_tbl[grp_id].m_first_child; while (true) { if (child_idx == 0xFFFF) break; - if (WallCrrPosGrpRp(crr, child_idx, depth + 1)) + if (WallCrrPosGrpRp(crr, child_idx, depth)) ret = true; child_idx = pm_bgd->m_g_tbl[child_idx].m_next_sibling; } diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index b9a6373c..28fcfa9a 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -216,7 +216,12 @@ int dComIfG_play_c::getLayerNo(int i_roomNo) { return layer | 2; } } else if (strcmp(dComIfGp_getStartStageName(), "Hyrule") == 0) { - if (dComIfGs_getTriforceNum() == 8) { + if ( + dComIfGs_getTriforceNum() == 8 +#if VERSION == VERSION_DEMO + && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_2C01) +#endif + ) { return layer | 4; } else if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_3280)) { return layer | 2; @@ -267,14 +272,14 @@ int dComIfG_play_c::getLayerNo(int i_roomNo) { void dComIfG_play_c::createParticle() { mParticle = new dPa_control_c(); - JUT_ASSERT(VERSION_SELECT(358, 358, 360, 360), mParticle != NULL); + JUT_ASSERT(VERSION_SELECT(350, 358, 360, 360), mParticle != NULL); } /* 800528F4-8005297C .text createDemo__14dComIfG_play_cFv */ void dComIfG_play_c::createDemo() { mDemo = new dDemo_manager_c(); - JUT_ASSERT(VERSION_SELECT(388, 388, 390, 390), mDemo != NULL); + JUT_ASSERT(VERSION_SELECT(380, 388, 390, 390), mDemo != NULL); } /* 8005297C-800529B8 .text removeDemo__14dComIfG_play_cFv */ @@ -482,9 +487,11 @@ int dComIfG_changeOpeningScene(scene_class* i_scene, s16 i_procName) { if (!fopScnM_ChangeReq(i_scene, i_procName, fpcNm_OVERLAP0_e, 30)) { return FALSE; } -#endif + dComIfGs_setRestartRoomParam(0); +#else dComIfGp_offEnableNextStage(); +#endif dComIfGp_setNextStage("sea_T", 0, 44, 0); mDoAud_setSceneName(dComIfGp_getNextStageName(), dComIfGp_getNextStageRoomNo(), dComIfGp_getNextStageLayer()); @@ -670,9 +677,11 @@ void dComIfGp_setNextStage(const char* i_stageName, s16 i_point, s8 i_roomNo, s8 i_lastMode |= link->checkTinkleShield() << 0x10; +#if VERSION > VERSION_DEMO if (link->checkNoResetFlg1(daPy_lk_c::daPyFlg1_SOUP_POWER_UP)) { i_lastMode |= 0x4000; } +#endif } g_dComIfG_gameInfo.save.getRestart().setLastSceneInfo(i_lastSpeed, i_lastMode); @@ -703,6 +712,116 @@ BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no) { } } +void dComIfGs_onDungeonItemMap(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_onDungeonItemMap(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().onDungeonItemMap(); +} + +void dComIfGs_offDungeonItemMap(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_offDungeonItemMap(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().offDungeonItemMap(); +} + +BOOL dComIfGs_isDungeonItemMap(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + return dComIfGs_isDungeonItemMap(); + } else { + return g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().isDungeonItemMap(); + } +} + +void dComIfGs_onDungeonItemCompass(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_onDungeonItemCompass(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().onDungeonItemCompass(); +} + +void dComIfGs_offDungeonItemCompass(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_offDungeonItemCompass(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().offDungeonItemCompass(); +} + +BOOL dComIfGs_isDungeonItemCompass(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + return dComIfGs_isDungeonItemCompass(); + } else { + return g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().isDungeonItemCompass(); + } +} + +void dComIfGs_onDungeonItemBossKey(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_onDungeonItemBossKey(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().onDungeonItemBossKey(); +} + +void dComIfGs_offDungeonItemBossKey(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_offDungeonItemBossKey(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().offDungeonItemBossKey(); +} + +BOOL dComIfGs_isDungeonItemBossKey(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + return dComIfGs_isDungeonItemBossKey(); + } else { + return g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().isDungeonItemBossKey(); + } +} + +void dComIfGs_onStageBossEnemy(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_onStageBossEnemy(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().onStageBossEnemy(); +} + +void dComIfGs_offStageBossEnemy(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_offStageBossEnemy(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().offStageBossEnemy(); +} + /* 800539A8-80053A2C .text dComIfGs_isStageBossEnemy__Fi */ BOOL dComIfGs_isStageBossEnemy(int i_stageNo) { stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); @@ -725,6 +844,16 @@ void dComIfGs_onStageLife(int i_stageNo) { g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().onStageLife(); } +void dComIfGs_offStageLife(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_offStageLife(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().offStageLife(); +} + /* 80053AAC-80053B30 .text dComIfGs_isStageLife__Fi */ BOOL dComIfGs_isStageLife(int i_stageNo) { stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); @@ -736,6 +865,36 @@ BOOL dComIfGs_isStageLife(int i_stageNo) { } } +void dComIfGs_onStageBossDemo(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_onStageBossDemo(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().onStageBossDemo(); +} + +void dComIfGs_offStageBossDemo(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + dComIfGs_offStageBossDemo(); + } + + g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().offStageBossDemo(); +} + +BOOL dComIfGs_isStageBossDemo(int i_stageNo) { + stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); + + if (i_stageNo == dStage_stagInfo_GetSaveTbl(stag_info)) { + return dComIfGs_isStageBossDemo(); + } else { + return g_dComIfG_gameInfo.save.getSavedata().getSave(i_stageNo).getBit().isStageBossDemo(); + } +} + /* 80053B30-80053F70 .text dComIfGs_checkGetItem__FUc */ u8 dComIfGs_checkGetItem(u8 i_itemNo) { u8 get_item = 0; @@ -1076,12 +1235,12 @@ static void dummy() { /* 8005468C-800547BC .text getSceneList__Fi */ stage_scls_info_class* getSceneList(int i_no) { stage_scls_info_dummy_class* sclsInfo = dComIfGp_getStage().getSclsInfo(); - JUT_ASSERT(VERSION_SELECT(2129, 2129, 2132, 2132), sclsInfo != NULL); + JUT_ASSERT(VERSION_SELECT(2114, 2129, 2132, 2132), sclsInfo != NULL); - JUT_ASSERT(VERSION_SELECT(2131, 2131, 2134, 2134), 0 <= i_no && i_no < sclsInfo->num); + JUT_ASSERT(VERSION_SELECT(2116, 2131, 2134, 2134), 0 <= i_no && i_no < sclsInfo->num); stage_scls_info_class* sclsData = sclsInfo->m_entries; - JUT_ASSERT(VERSION_SELECT(2133, 2133, 2136, 2136), sclsData != NULL); + JUT_ASSERT(VERSION_SELECT(2118, 2133, 2136, 2136), sclsData != NULL); return &sclsData[i_no]; } @@ -1220,7 +1379,7 @@ void dComIfGs_setGameStartStage() { strcpy(stage_name, "sea"); stage_map_info_class* mapInfo = dComIfGp_getStage().getMapInfo(); - JUT_ASSERT(VERSION_SELECT(2359, 2359, 2362, 2362), mapInfo != NULL); + JUT_ASSERT(VERSION_SELECT(2344, 2359, 2362, 2362), mapInfo != NULL); room_no = 4 + dStage_mapInfo_GetOceanX(mapInfo) + ((dStage_mapInfo_GetOceanZ(mapInfo) + 3) * 7); point = 0; @@ -1236,7 +1395,9 @@ void dComIfGs_setGameStartStage() { /* 80054C70-80054CC0 .text dComIfGs_gameStart__Fv */ void dComIfGs_gameStart() { +#if VERSION > VERSION_DEMO dComIfGp_offEnableNextStage(); +#endif s8 roomNo = g_dComIfG_gameInfo.save.getPlayer().getPlayerReturnPlace().getRoomNo(); s16 point = g_dComIfG_gameInfo.save.getPlayer().getPlayerReturnPlace().getPoint(); diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index 7f492257..fe82a4f5 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -1459,7 +1459,7 @@ BOOL realPolygonCheck(cXyz* param_0, f32 casterRadius, f32 heightAgl, cXyz* ligh bbMax.z += casterRadius; mDoLib_clipper::changeFar(mDoLib_clipper::getFovyRate() * 3000.0f); - s32 clip = mDoLib_clipper::clip(j3dSys.getViewMtx(), &bbMax, &bbMin); + BOOL clip = mDoLib_clipper::clip(j3dSys.getViewMtx(), &bbMax, &bbMin); mDoLib_clipper::resetFar(); if (clip) { return FALSE; diff --git a/src/d/d_gameover.cpp b/src/d/d_gameover.cpp index a0f7a63b..bf58e008 100644 --- a/src/d/d_gameover.cpp +++ b/src/d/d_gameover.cpp @@ -176,7 +176,7 @@ BOOL dGameover_c::_delete() { mpHeap->freeAll(); dComIfGp_offHeapLockFlag(); mDoExt_setCurrentHeap(oldHeap); - dComIfG_resDelete(&mPhs, "Gover"); + dComIfG_resDeleteDemo(&mPhs, "Gover"); return TRUE; } @@ -342,16 +342,13 @@ BOOL dDlst_GameOverScrnDraw_c::anime1(int idx) { fopMsgM_setInitAlpha(&letter[idx]); letter[idx].mUserArea++; - f32 y = (1.0f - acc(5, letter[idx].mUserArea, 0)) * -288.0f; - fopMsgM_paneTrans(&letter[idx], 0.0f, y); + fopMsgM_paneTrans(&letter[idx], 0.0f, (1.0f - acc(5, letter[idx].mUserArea, 0)) * -288.0f); } else if (letter[idx].mUserArea < 7) { letter[idx].mUserArea++; - f32 y = acc(2, letter[idx].mUserArea - 5, 0) * -9.0f; - fopMsgM_paneTrans(&letter[idx], 0.0f, y); + fopMsgM_paneTrans(&letter[idx], 0.0f, acc(2, letter[idx].mUserArea - 5, 0) * -9.0f); } else if (letter[idx].mUserArea < 9) { letter[idx].mUserArea++; - f32 y = (1.0f - acc(2, letter[idx].mUserArea - 7, 0)) * -9.0f; - fopMsgM_paneTrans(&letter[idx], 0.0f, y); + fopMsgM_paneTrans(&letter[idx], 0.0f, (1.0f - acc(2, letter[idx].mUserArea - 7, 0)) * -9.0f); if (letter[idx].mUserArea == 9) mDoAud_seStart(JA_SE_EXIT_GAME_OVER); } diff --git a/src/d/d_item.cpp b/src/d/d_item.cpp index 36e38870..22b8f5f1 100644 --- a/src/d/d_item.cpp +++ b/src/d/d_item.cpp @@ -589,6 +589,9 @@ void item_func_utuwa_heart() { dComIfGp_setItemMaxLifeCount(4); dComIfGp_setItemLifeCount(dComIfGs_getMaxLife()); +#if VERSION == VERSION_DEMO + dComIfGs_onStageLife(); +#else stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); if (dStage_stagInfo_GetSaveTbl(stag_info) == dSv_save_c::STAGE_SEA) { // Didn't get the Heart Container immediately after defeating Helmaroc King. @@ -597,6 +600,7 @@ void item_func_utuwa_heart() { } else { dComIfGs_onStageLife(); } +#endif } /* 800C2FD8-800C2FF0 .text item_func_s_magic__Fv */ @@ -1471,429 +1475,551 @@ void item_func_collectmap62() { /* 800C4F64-800C4FB8 .text item_func_collectmap61__Fv */ void item_func_collectmap61() { dComIfGs_onGetCollectMap(61); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(61); dComIfGs_offCompleteCollectMap(61); +#endif } /* 800C4FB8-800C500C .text item_func_collectmap60__Fv */ void item_func_collectmap60() { dComIfGs_onGetCollectMap(60); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(60); dComIfGs_offCompleteCollectMap(60); +#endif } /* 800C500C-800C5060 .text item_func_collectmap59__Fv */ void item_func_collectmap59() { dComIfGs_onGetCollectMap(59); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(59); dComIfGs_offCompleteCollectMap(59); +#endif } /* 800C5060-800C50B4 .text item_func_collectmap58__Fv */ void item_func_collectmap58() { dComIfGs_onGetCollectMap(58); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(58); dComIfGs_offCompleteCollectMap(58); +#endif } /* 800C50B4-800C5108 .text item_func_collectmap57__Fv */ void item_func_collectmap57() { dComIfGs_onGetCollectMap(57); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(57); dComIfGs_offCompleteCollectMap(57); +#endif } /* 800C5108-800C515C .text item_func_collectmap56__Fv */ void item_func_collectmap56() { dComIfGs_onGetCollectMap(56); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(56); dComIfGs_offCompleteCollectMap(56); +#endif } /* 800C515C-800C51B0 .text item_func_collectmap55__Fv */ void item_func_collectmap55() { dComIfGs_onGetCollectMap(55); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(55); dComIfGs_offCompleteCollectMap(55); +#endif } /* 800C51B0-800C5204 .text item_func_collectmap54__Fv */ void item_func_collectmap54() { dComIfGs_onGetCollectMap(54); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(54); dComIfGs_offCompleteCollectMap(54); +#endif } /* 800C5204-800C5258 .text item_func_collectmap53__Fv */ void item_func_collectmap53() { dComIfGs_onGetCollectMap(53); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(53); dComIfGs_offCompleteCollectMap(53); +#endif } /* 800C5258-800C52AC .text item_func_collectmap52__Fv */ void item_func_collectmap52() { dComIfGs_onGetCollectMap(52); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(52); dComIfGs_offCompleteCollectMap(52); +#endif } /* 800C52AC-800C5300 .text item_func_collectmap51__Fv */ void item_func_collectmap51() { dComIfGs_onGetCollectMap(51); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(51); dComIfGs_offCompleteCollectMap(51); +#endif } /* 800C5300-800C5354 .text item_func_collectmap50__Fv */ void item_func_collectmap50() { dComIfGs_onGetCollectMap(50); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(50); dComIfGs_offCompleteCollectMap(50); +#endif } /* 800C5354-800C53A8 .text item_func_collectmap49__Fv */ void item_func_collectmap49() { dComIfGs_onGetCollectMap(49); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(49); dComIfGs_offCompleteCollectMap(49); +#endif } /* 800C53A8-800C53FC .text item_func_collectmap48__Fv */ void item_func_collectmap48() { dComIfGs_onGetCollectMap(48); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(48); dComIfGs_offCompleteCollectMap(48); +#endif } /* 800C53FC-800C5450 .text item_func_collectmap47__Fv */ void item_func_collectmap47() { dComIfGs_onGetCollectMap(47); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(47); dComIfGs_offCompleteCollectMap(47); +#endif } /* 800C5450-800C54A4 .text item_func_collectmap46__Fv */ void item_func_collectmap46() { dComIfGs_onGetCollectMap(46); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(46); dComIfGs_offCompleteCollectMap(46); +#endif } /* 800C54A4-800C54F8 .text item_func_collectmap45__Fv */ void item_func_collectmap45() { dComIfGs_onGetCollectMap(45); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(45); dComIfGs_offCompleteCollectMap(45); +#endif } /* 800C54F8-800C554C .text item_func_collectmap44__Fv */ void item_func_collectmap44() { dComIfGs_onGetCollectMap(44); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(44); dComIfGs_offCompleteCollectMap(44); +#endif } /* 800C554C-800C55A0 .text item_func_collectmap43__Fv */ void item_func_collectmap43() { dComIfGs_onGetCollectMap(43); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(43); dComIfGs_offCompleteCollectMap(43); +#endif } /* 800C55A0-800C55F4 .text item_func_collectmap42__Fv */ void item_func_collectmap42() { dComIfGs_onGetCollectMap(42); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(42); dComIfGs_offCompleteCollectMap(42); +#endif } /* 800C55F4-800C5648 .text item_func_collectmap41__Fv */ void item_func_collectmap41() { dComIfGs_onGetCollectMap(41); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(41); dComIfGs_offCompleteCollectMap(41); +#endif } /* 800C5648-800C569C .text item_func_collectmap40__Fv */ void item_func_collectmap40() { dComIfGs_onGetCollectMap(40); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(40); dComIfGs_offCompleteCollectMap(40); +#endif } /* 800C569C-800C56F0 .text item_func_collectmap39__Fv */ void item_func_collectmap39() { dComIfGs_onGetCollectMap(39); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(39); dComIfGs_offCompleteCollectMap(39); +#endif } /* 800C56F0-800C5744 .text item_func_collectmap38__Fv */ void item_func_collectmap38() { dComIfGs_onGetCollectMap(38); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(38); dComIfGs_offCompleteCollectMap(38); +#endif } /* 800C5744-800C5798 .text item_func_collectmap37__Fv */ void item_func_collectmap37() { dComIfGs_onGetCollectMap(37); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(37); dComIfGs_offCompleteCollectMap(37); +#endif } /* 800C5798-800C57EC .text item_func_collectmap36__Fv */ void item_func_collectmap36() { dComIfGs_onGetCollectMap(36); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(36); dComIfGs_offCompleteCollectMap(36); +#endif } /* 800C57EC-800C5840 .text item_func_collectmap35__Fv */ void item_func_collectmap35() { dComIfGs_onGetCollectMap(35); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(35); dComIfGs_offCompleteCollectMap(35); +#endif } /* 800C5840-800C5894 .text item_func_collectmap34__Fv */ void item_func_collectmap34() { dComIfGs_onGetCollectMap(34); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(34); dComIfGs_offCompleteCollectMap(34); +#endif } /* 800C5894-800C58E8 .text item_func_collectmap33__Fv */ void item_func_collectmap33() { dComIfGs_onGetCollectMap(33); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(33); dComIfGs_offCompleteCollectMap(33); +#endif } /* 800C58E8-800C593C .text item_func_collectmap32__Fv */ void item_func_collectmap32() { dComIfGs_onGetCollectMap(32); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(32); dComIfGs_offCompleteCollectMap(32); +#endif } /* 800C593C-800C5990 .text item_func_collectmap31__Fv */ void item_func_collectmap31() { dComIfGs_onGetCollectMap(31); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(31); dComIfGs_offCompleteCollectMap(31); +#endif } /* 800C5990-800C59E4 .text item_func_collectmap30__Fv */ void item_func_collectmap30() { dComIfGs_onGetCollectMap(30); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(30); dComIfGs_offCompleteCollectMap(30); +#endif } /* 800C59E4-800C5A38 .text item_func_collectmap29__Fv */ void item_func_collectmap29() { dComIfGs_onGetCollectMap(29); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(29); dComIfGs_offCompleteCollectMap(29); +#endif } /* 800C5A38-800C5A8C .text item_func_collectmap28__Fv */ void item_func_collectmap28() { dComIfGs_onGetCollectMap(28); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(28); dComIfGs_offCompleteCollectMap(28); +#endif } /* 800C5A8C-800C5AE0 .text item_func_collectmap27__Fv */ void item_func_collectmap27() { dComIfGs_onGetCollectMap(27); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(27); dComIfGs_offCompleteCollectMap(27); +#endif } /* 800C5AE0-800C5B34 .text item_func_collectmap26__Fv */ void item_func_collectmap26() { dComIfGs_onGetCollectMap(26); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(26); dComIfGs_offCompleteCollectMap(26); +#endif } /* 800C5B34-800C5B88 .text item_func_collectmap25__Fv */ void item_func_collectmap25() { dComIfGs_onGetCollectMap(25); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(25); dComIfGs_offCompleteCollectMap(25); +#endif } /* 800C5B88-800C5BDC .text item_func_collectmap24__Fv */ void item_func_collectmap24() { dComIfGs_onGetCollectMap(24); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(24); dComIfGs_offCompleteCollectMap(24); +#endif } /* 800C5BDC-800C5C30 .text item_func_collectmap23__Fv */ void item_func_collectmap23() { dComIfGs_onGetCollectMap(23); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(23); dComIfGs_offCompleteCollectMap(23); +#endif } /* 800C5C30-800C5C84 .text item_func_collectmap22__Fv */ void item_func_collectmap22() { dComIfGs_onGetCollectMap(22); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(22); dComIfGs_offCompleteCollectMap(22); +#endif } /* 800C5C84-800C5CD8 .text item_func_collectmap21__Fv */ void item_func_collectmap21() { dComIfGs_onGetCollectMap(21); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(21); dComIfGs_offCompleteCollectMap(21); +#endif } /* 800C5CD8-800C5D2C .text item_func_collectmap20__Fv */ void item_func_collectmap20() { dComIfGs_onGetCollectMap(20); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(20); dComIfGs_offCompleteCollectMap(20); +#endif } /* 800C5D2C-800C5D80 .text item_func_collectmap19__Fv */ void item_func_collectmap19() { dComIfGs_onGetCollectMap(19); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(19); dComIfGs_offCompleteCollectMap(19); +#endif } /* 800C5D80-800C5DD4 .text item_func_collectmap18__Fv */ void item_func_collectmap18() { dComIfGs_onGetCollectMap(18); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(18); dComIfGs_offCompleteCollectMap(18); +#endif } /* 800C5DD4-800C5E28 .text item_func_collectmap17__Fv */ void item_func_collectmap17() { dComIfGs_onGetCollectMap(17); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(17); dComIfGs_offCompleteCollectMap(17); +#endif } /* 800C5E28-800C5E7C .text item_func_collectmap16__Fv */ void item_func_collectmap16() { dComIfGs_onGetCollectMap(16); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(16); dComIfGs_offCompleteCollectMap(16); +#endif } /* 800C5E7C-800C5ED0 .text item_func_collectmap15__Fv */ void item_func_collectmap15() { dComIfGs_onGetCollectMap(15); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(15); dComIfGs_offCompleteCollectMap(15); +#endif } /* 800C5ED0-800C5F24 .text item_func_collectmap14__Fv */ void item_func_collectmap14() { dComIfGs_onGetCollectMap(14); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(14); dComIfGs_offCompleteCollectMap(14); +#endif } /* 800C5F24-800C5F78 .text item_func_collectmap13__Fv */ void item_func_collectmap13() { dComIfGs_onGetCollectMap(13); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(13); dComIfGs_offCompleteCollectMap(13); +#endif } /* 800C5F78-800C5FCC .text item_func_collectmap12__Fv */ void item_func_collectmap12() { dComIfGs_onGetCollectMap(12); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(12); dComIfGs_offCompleteCollectMap(12); +#endif } /* 800C5FCC-800C6020 .text item_func_collectmap11__Fv */ void item_func_collectmap11() { dComIfGs_onGetCollectMap(11); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(11); dComIfGs_offCompleteCollectMap(11); +#endif } /* 800C6020-800C6074 .text item_func_collectmap10__Fv */ void item_func_collectmap10() { dComIfGs_onGetCollectMap(10); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(10); dComIfGs_offCompleteCollectMap(10); +#endif } /* 800C6074-800C60C8 .text item_func_collectmap09__Fv */ void item_func_collectmap09() { dComIfGs_onGetCollectMap(9); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(9); dComIfGs_offCompleteCollectMap(9); +#endif } /* 800C60C8-800C6128 .text item_func_collectmap08__Fv */ void item_func_collectmap08() { dComIfGs_onGetCollectMap(8); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(8); dComIfGs_offCompleteCollectMap(8); dComIfGs_offCollectMapTriforce(8); +#endif } /* 800C6128-800C617C .text item_func_collectmap07__Fv */ void item_func_collectmap07() { dComIfGs_onGetCollectMap(7); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(7); dComIfGs_offCompleteCollectMap(7); +#endif } /* 800C617C-800C61D0 .text item_func_collectmap06__Fv */ void item_func_collectmap06() { dComIfGs_onGetCollectMap(6); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(6); dComIfGs_offCompleteCollectMap(6); +#endif } /* 800C61D0-800C6224 .text item_func_collectmap05__Fv */ void item_func_collectmap05() { dComIfGs_onGetCollectMap(5); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(5); dComIfGs_offCompleteCollectMap(5); +#endif } /* 800C6224-800C6278 .text item_func_collectmap04__Fv */ void item_func_collectmap04() { dComIfGs_onGetCollectMap(4); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(4); dComIfGs_offCompleteCollectMap(4); +#endif } /* 800C6278-800C62CC .text item_func_collectmap03__Fv */ void item_func_collectmap03() { dComIfGs_onGetCollectMap(3); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(3); dComIfGs_offCompleteCollectMap(3); +#endif } /* 800C62CC-800C6320 .text item_func_collectmap02__Fv */ void item_func_collectmap02() { dComIfGs_onGetCollectMap(2); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(2); dComIfGs_offCompleteCollectMap(2); +#endif } /* 800C6320-800C6374 .text item_func_collectmap01__Fv */ void item_func_collectmap01() { dComIfGs_onGetCollectMap(1); +#if VERSION > VERSION_DEMO dComIfGs_offOpenCollectMap(1); dComIfGs_offCompleteCollectMap(1); +#endif } /* 800C6374-800C6378 .text item_func_noentry__Fv */ @@ -2732,9 +2858,13 @@ BOOL isHeart(u8 itemNo) { /* 800C7D28-800C7D70 .text getItemNoByLife__FUc */ u8 getItemNoByLife(u8 itemNo) { - int life = dComIfGs_getLife() * 100; + int life = dComIfGs_getLife(); +#if VERSION == VERSION_DEMO + int max = dComIfGs_getMaxLife(); +#else int max = dComIfGs_getMaxLife() & 0xFC; - u8 lifePercent = life / max; +#endif + u8 lifePercent = (100 * life) / max; if (lifePercent != 100) { return itemNo; } @@ -2752,7 +2882,12 @@ u8 check_itemno(int itemNo) { if (dComIfGs_getMaxMagic() == 0 && (itemNo == dItemNo_SMALL_MAGIC_e || itemNo == dItemNo_LARGE_MAGIC_e)) { return dItemNo_GREEN_RUPEE_e; } - if (!dComIfGs_isGetItem(0xC, 0) && !dComIfGs_isGetItem(0xC, 1) && !dComIfGs_isGetItem(0xC, 2)) { +#if VERSION == VERSION_DEMO + if (!dComIfGs_isGetItem(0xC, 0)) +#else + if (!dComIfGs_isGetItem(0xC, 0) && !dComIfGs_isGetItem(0xC, 1) && !dComIfGs_isGetItem(0xC, 2)) +#endif + { // Does not own any bow. if (isArrow(itemNo)) { return dItemNo_GREEN_RUPEE_e; diff --git a/src/d/d_kankyo.cpp b/src/d/d_kankyo.cpp index ffa2211f..7ddf6629 100644 --- a/src/d/d_kankyo.cpp +++ b/src/d/d_kankyo.cpp @@ -151,7 +151,8 @@ static f32 get_parcent(f32 param_0, f32 param_1, f32 param_2) { f32 temp_f4 = param_0 - param_1; if (0.0f != temp_f4) { - temp_f1 = 1.0f - (param_0 - param_2) / temp_f4; + f32 f0 = (param_0 - param_2); + temp_f1 = 1.0f - f0 / temp_f4; if (!(temp_f1 >= 1.0f)) { return temp_f1; } @@ -835,10 +836,11 @@ void dScnKy_env_light_c::setLight() { int palIdx0; int palIdx1; + u8* initAnmTimer_p = &g_env_light.mInitAnimTimer; setLight_palno_get(&g_env_light.mEnvrIdxPrev, &g_env_light.mEnvrIdxCurr, &g_env_light.mColpatPrev, &g_env_light.mColpatCurr, &pale0, &pale1, &pale2, &pale3, &blendAB, &palIdx0, &palIdx1, &g_env_light.mColPatBlend, - &g_env_light.mInitAnimTimer); + initAnmTimer_p); stage_palet_info_class* pale0_p = &g_env_light.mpPaletInfo[pale0]; stage_palet_info_class* pale1_p = &g_env_light.mpPaletInfo[pale1]; @@ -1827,24 +1829,24 @@ void setLightTevColorType_sub(J3DMaterial* i_material, dKy_tevstr_c* i_tevstr) { } if (i_material->getFog() != NULL) { - J3DFog* fog_p = i_material->getFog(); - if (fog_p->getFogInfo()->mType != 0) { - fog_p->getFogInfo()->mStartZ = i_tevstr->mFogStartZ; - fog_p->getFogInfo()->mEndZ = i_tevstr->mFogEndZ; - if (fog_p->getFogInfo()->mStartZ > fog_p->getFogInfo()->mEndZ) { - fog_p->getFogInfo()->mStartZ = fog_p->getFogInfo()->mEndZ; + J3DFogInfo* fog_info = i_material->getFog()->getFogInfo(); + if (fog_info->mType != 0) { + fog_info->mStartZ = i_tevstr->mFogStartZ; + fog_info->mEndZ = i_tevstr->mFogEndZ; + if (fog_info->mStartZ > fog_info->mEndZ) { + fog_info->mStartZ = fog_info->mEndZ; } - fog_p->getFogInfo()->mNearZ = dComIfGd_getView()->mNear; - fog_p->getFogInfo()->mFarZ = dComIfGd_getView()->mFar; - fog_p->getFogInfo()->mColor.r = i_tevstr->mFogColor.r; - fog_p->getFogInfo()->mColor.g = i_tevstr->mFogColor.g; - fog_p->getFogInfo()->mColor.b = i_tevstr->mFogColor.b; - fog_p->getFogInfo()->mAdjEnable = g_env_light.mFogAdjEnable; + fog_info->mNearZ = dComIfGd_getView()->mNear; + fog_info->mFarZ = dComIfGd_getView()->mFar; + fog_info->mColor.r = i_tevstr->mFogColor.r; + fog_info->mColor.g = i_tevstr->mFogColor.g; + fog_info->mColor.b = i_tevstr->mFogColor.b; + fog_info->mAdjEnable = g_env_light.mFogAdjEnable; - if (fog_p->getFogInfo()->mAdjEnable == true) { - fog_p->getFogInfo()->mCenter = g_env_light.mFogAdjCenter; - memcpy(fog_p->getFogInfo()->mFogAdjTable, &g_env_light.mFogAdjTable, sizeof(GXFogAdjTable)); + if (fog_info->mAdjEnable == true) { + fog_info->mCenter = g_env_light.mFogAdjCenter; + memcpy(fog_info->mFogAdjTable, &g_env_light.mFogAdjTable, sizeof(GXFogAdjTable)); } } } @@ -2146,7 +2148,7 @@ BOOL phantomship_wether() { } } - if (cur_time > 285.0f || cur_time < 90.0f) { + if (cur_time > DEMO_SELECT(330.0f, 285.0f) || cur_time < 90.0f) { s32 roomNo = dComIfGp_roomControl_getStayNo(); if ((roomNo == dIsleRoom_CrescentMoonIsland_e && weekday == 0) || (roomNo == dIsleRoom_DiamondSteppeIsland_e && weekday == 1) || @@ -2520,12 +2522,7 @@ void dKy_setLight() { // eflight { - s32 eflight; - if (pPlayer == NULL) { - eflight = -1; - } else { - eflight = dKy_eflight_influence_id(pPlayer->current.pos, 0); - } + int eflight = pPlayer == NULL ? -1 : dKy_eflight_influence_id(pPlayer->current.pos, 0); if (eflight < 0) { lightMask = 1; @@ -3434,11 +3431,11 @@ void dKy_usonami_set(f32 param_0) { g_env_light.mWaveChan.mWaveReset = 0; g_env_light.mWaveChan.mWaveScale = 300.0f; g_env_light.mWaveChan.mWaveScaleRand = 0.001f; - g_env_light.mWaveChan.mWaveCounterSpeedScale = 1.2f; + g_env_light.mWaveChan.mWaveCounterSpeedScale = DEMO_SELECT(1.3f, 1.2f); g_env_light.mWaveChan.field_0x2f = 0; g_env_light.mWaveChan.mWaveScaleBottom = 6.0f; g_env_light.mWaveChan.mWaveCount = 300; - g_env_light.mWaveChan.mWaveSpeed = 30.0f; + g_env_light.mWaveChan.mWaveSpeed = DEMO_SELECT(60.0f, 30.0f); } g_env_light.mWaveChan.mWaveFlatInter = param_0; diff --git a/src/d/d_kankyo_wether.cpp b/src/d/d_kankyo_wether.cpp index 13dd9aa2..e4ef004e 100644 --- a/src/d/d_kankyo_wether.cpp +++ b/src/d/d_kankyo_wether.cpp @@ -10,6 +10,9 @@ #include "d/d_kankyo_rain.h" #include "f_op/f_op_camera.h" #include "m_Do/m_Do_audio.h" +#if VERSION == VERSION_DEMO +#include "m_Do/m_Do_controller_pad.h" +#endif /* 80086F74-80086FC4 .text dKyw_setDrawPacketList__FP9J3DPacketi */ J3DPacket* dKyw_setDrawPacketList(J3DPacket* i_packet, int) { @@ -772,7 +775,11 @@ void wether_move_vrkumo() { { cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f); } else { +#if VERSION == VERSION_DEMO + cLib_addCalc(&g_env_light.mVrkumoStrength, 0.0f, 0.1f, 0.003f, 0.0000001f); +#else cLib_addCalc(&g_env_light.mVrkumoStrength, 0.0f, 0.08f, 0.002f, 0.00000001f); +#endif } if (strcmp(dComIfGp_getStartStageName(), "sea") == 0 && @@ -1030,6 +1037,26 @@ void dKyw_wind_set() { strength = 0.0f; break; } + +#if VERSION == VERSION_DEMO + if (strcmp(dComIfGp_getStartStageName(), "sea_E") == 0) { + static u8 button_ositankaina = false; + if (CPad_CHECK_HOLD_A(3)) { + button_ositankaina = true; + } + if (button_ositankaina) { + wind_vec.x = 0.0f; + wind_vec.y = 0.0f; + wind_vec.z = -1.0f; + strength = 1.0f; + } else { + wind_vec.x = 0.0f; + wind_vec.y = 0.0f; + wind_vec.z = -1.0f; + strength = 0.0f; + } + } +#endif } if (g_env_light.mWind.mCustomWindPower > 0.0f) { @@ -1049,10 +1076,11 @@ void dKyw_wind_set() { g_env_light.mWind.mWindVec = wind_vec; g_env_light.mWind.mWindPower = strength; } else { - cLib_addCalc(&g_env_light.mWind.mWindVec.x, wind_vec.x, 0.1f, 2.0f, 0.001f); - cLib_addCalc(&g_env_light.mWind.mWindVec.y, wind_vec.y, 0.1f, 2.0f, 0.001f); - cLib_addCalc(&g_env_light.mWind.mWindVec.z, wind_vec.z, 0.1f, 2.0f, 0.001f); - cLib_addCalc(&g_env_light.mWind.mWindPower, strength, 0.1f, 1.0f, 0.005f); + f32 scale = 0.1f; + cLib_addCalc(&g_env_light.mWind.mWindVec.x, wind_vec.x, scale, 2.0f, 0.001f); + cLib_addCalc(&g_env_light.mWind.mWindVec.y, wind_vec.y, scale, 2.0f, 0.001f); + cLib_addCalc(&g_env_light.mWind.mWindVec.z, wind_vec.z, scale, 2.0f, 0.001f); + cLib_addCalc(&g_env_light.mWind.mWindPower, strength, scale, 1.0f, 0.005f); } } @@ -1261,7 +1289,8 @@ void dKyw_get_AllWind_vec(cXyz* param_0, cXyz* i_direction, f32* i_power) { cXyz sp30; cXyz sp24; - sp30 = env_light.mWind.mWindVec * (env_light.mWind.mWindPower * (1.0f - *i_power)); + f32 f1 = env_light.mWind.mWindPower * (1.0f - *i_power); + sp30 = env_light.mWind.mWindVec * f1; sp24 = *i_direction * (*i_power * 5.0f); sp54 = sp30 + sp24; *i_power = sp54.abs(); @@ -1285,9 +1314,11 @@ cXyz dKyw_get_AllWind_vecpow(cXyz* param_0) { cXyz sp18; cXyz direction; f32 power; + dScnKy_env_light_c& env_light = dKy_getEnvlight(); dKyw_pntwind_get_info(param_0, &direction, &power); - sp24 = g_env_light.mWind.mWindVec * (g_env_light.mWind.mWindPower * (1.0f - power)); + f32 f1 = env_light.mWind.mWindPower * (1.0f - power); + sp24 = env_light.mWind.mWindVec * f1; sp18 = direction * (power * 5.0f); vecpow = sp24 + sp18; diff --git a/src/d/d_particle.cpp b/src/d/d_particle.cpp index 2087aed1..f46b8e07 100644 --- a/src/d/d_particle.cpp +++ b/src/d/d_particle.cpp @@ -481,7 +481,7 @@ void dPa_simpleEcallBack::executeAfter(JPABaseEmitter* param_1) { dPa_simpleData_c* simpleData = mSimpleData; param_1->playCreateParticle(); while (mCount != 0) { - if (mDoLib_clipper::clip(j3dSys.getViewMtx(), simpleData->mPos, 200.0f) == 0) { + if (!mDoLib_clipper::clip(j3dSys.getViewMtx(), simpleData->mPos, 200.0f)) { param_1->setGlobalTranslation(simpleData->mPos.x, simpleData->mPos.y, simpleData->mPos.z); param_1->setGlobalPrmColor(simpleData->mPrmColor.r, simpleData->mPrmColor.g, simpleData->mPrmColor.b); param_1->setGlobalAlpha(simpleData->mPrmColor.a); @@ -682,7 +682,7 @@ bool dPa_control_c::readScene(u8 i_no, mDoDvdThd_toMainRam_c** param_2) { mSceneNo = i_no; static char jpcName[32]; sprintf(jpcName, "/res/Particle/Pscene%03d.jpc", i_no); - *param_2 = mDoDvdThd_toMainRam_c::create(jpcName, 0, NULL); + *param_2 = mDoDvdThd_toMainRam_c::create(jpcName, JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); return true; } diff --git a/src/d/d_place_name.cpp b/src/d/d_place_name.cpp index 0e2c83da..23d68ac0 100644 --- a/src/d/d_place_name.cpp +++ b/src/d/d_place_name.cpp @@ -154,9 +154,9 @@ cPhs_State dPn_c::_create() { u32 lang = dComIfGs_getPalLanguage(); char buf[32]; sprintf(buf, "/res/placename/PN%d/pn_%02d_%d.bti", lang, dComIfGp_getNowStageNum() + 1, lang); - dvd = mDoDvdThd_toMainRam_c::create(buf, 0, mpHeap); + dvd = mDoDvdThd_toMainRam_c::create(buf, JKRArchive::DEFAULT_MOUNT_DIRECTION, mpHeap); #else - dvd = mDoDvdThd_toMainRam_c::create(name_texture[dComIfGp_getNowStageNum()], 0, mpHeap); + dvd = mDoDvdThd_toMainRam_c::create(name_texture[dComIfGp_getNowStageNum()], JKRArchive::DEFAULT_MOUNT_DIRECTION, mpHeap); #endif mState = 2; diff --git a/src/d/d_s_menu.cpp b/src/d/d_s_menu.cpp index 2819e486..4795dae5 100644 --- a/src/d/d_s_menu.cpp +++ b/src/d/d_s_menu.cpp @@ -311,9 +311,9 @@ static BOOL dScnMenu_Delete(menu_of_scene_class* i_this) { /* 8022F3C4-8022F4B0 .text phase_1__FP19menu_of_scene_class */ cPhs_State phase_1(menu_of_scene_class* i_this) { - i_this->command = mDoDvdThd_toMainRam_c::create("/res/Menu/Menu1.dat", 0, NULL); + i_this->command = mDoDvdThd_toMainRam_c::create("/res/Menu/Menu1.dat", JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); JUT_ASSERT(VERSION_SELECT(616, 616, 732, 732), i_this->command != NULL); - i_this->fontCommand = mDoDvdThd_toMainRam_c::create("/res/Menu/kanfont_fix16.bfn", 0, NULL); + i_this->fontCommand = mDoDvdThd_toMainRam_c::create("/res/Menu/kanfont_fix16.bfn", JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); JUT_ASSERT(VERSION_SELECT(619, 619, 735, 735), i_this->fontCommand != NULL); return cPhs_NEXT_e; } diff --git a/src/d/d_s_name.cpp b/src/d/d_s_name.cpp index e4e74938..f4d55826 100644 --- a/src/d/d_s_name.cpp +++ b/src/d/d_s_name.cpp @@ -842,7 +842,7 @@ void dScnName_c::NameInDraw() { /* 80232074-802320C0 .text ShopDemoDataLoad__10dScnName_cFv */ void dScnName_c::ShopDemoDataLoad() { - field_0x410 = mDoDvdThd_toMainRam_c::create("/res/ShopDemo/zelda_save.bin", 0, NULL); + field_0x410 = mDoDvdThd_toMainRam_c::create("/res/ShopDemo/zelda_save.bin", JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); mMainProc = 15; } diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index 24821404..7e8c91a7 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -767,6 +767,11 @@ void dSv_player_collect_c::onTact(u8 i_no) { mTact |= (u8)(1 << i_no); } +void dSv_player_collect_c::offTact(u8 i_no) { + JUT_ASSERT(DEMO_SELECT(1511, 0), 0 <= i_no && i_no < 8); + mTact &= ~(u8)(1 << i_no); +} + /* 8005AF40-8005AFD8 .text isTact__20dSv_player_collect_cFUc */ BOOL dSv_player_collect_c::isTact(u8 i_no) { JUT_ASSERT(DEMO_SELECT(1526, 1532), 0 <= i_no && i_no < 8); @@ -779,6 +784,11 @@ void dSv_player_collect_c::onTriforce(u8 i_no) { mTriforce |= (u8)(1 << i_no); } +void dSv_player_collect_c::offTriforce(u8 i_no) { + JUT_ASSERT(DEMO_SELECT(1556, 0), 0 <= i_no && i_no < 8); + mTriforce &= ~(u8)(1 << i_no); +} + /* 8005B06C-8005B104 .text isTriforce__20dSv_player_collect_cFUc */ BOOL dSv_player_collect_c::isTriforce(u8 i_no) { JUT_ASSERT(DEMO_SELECT(1571, 1577), 0 <= i_no && i_no < 8); @@ -791,6 +801,11 @@ void dSv_player_collect_c::onSymbol(u8 i_no) { mSymbol |= (u8)(1 << i_no); } +void dSv_player_collect_c::offSymbol(u8 i_no) { + JUT_ASSERT(DEMO_SELECT(1601, 0), 0 <= i_no && i_no < 8); + mSymbol &= ~(u8)(1 << i_no); +} + /* 8005B198-8005B230 .text isSymbol__20dSv_player_collect_cFUc */ BOOL dSv_player_collect_c::isSymbol(u8 i_no) { JUT_ASSERT(DEMO_SELECT(1616, 1622), 0 <= i_no && i_no < 8); @@ -1125,6 +1140,11 @@ void dSv_memBit_c::onDungeonItem(int i_no) { mDungeonItem |= (u8)(1 << i_no); } +void dSv_memBit_c::offDungeonItem(int i_no) { + JUT_ASSERT(DEMO_SELECT(2451, 0), 0 <= i_no && i_no < 6); + mDungeonItem &= ~(u8)(1 << i_no); +} + /* 8005C844-8005C8E8 .text isDungeonItem__12dSv_memBit_cFi */ BOOL dSv_memBit_c::isDungeonItem(int i_no) { JUT_ASSERT(VERSION_SELECT(2466, 2494, 2521, 2521), 0 <= i_no && i_no < 6); diff --git a/src/d/d_wood.cpp b/src/d/d_wood.cpp index 8a37725c..0b11c7eb 100644 --- a/src/d/d_wood.cpp +++ b/src/d/d_wood.cpp @@ -413,12 +413,13 @@ void dWood::Anm_c::mode_push_into(dWood::Packet_c *packet) { f32 rotY = 0.0f; f32 rotX = rotY; for (s32 i = 0; i < 2; i++) { + s32 phaseVelY = attr_sway(SWAY_PUSH, i).phaseVelY; s32 phaseVelX = attr_sway(SWAY_PUSH, i).phaseVelX; s32 ampY = attr_sway(SWAY_PUSH, i).ampY; s32 ampX = attr_sway(SWAY_PUSH, i).ampX; f32 phaseBiasX = attr_sway(SWAY_PUSH, i).phaseBiasX; - mPhaseY[i] += attr_sway(SWAY_PUSH, i).phaseVelY; + mPhaseY[i] += phaseVelY; cLib_chaseAngleS(&mPhaseX[i], 0, phaseVelX); cLib_chaseS(&mAmpY[i], ampY/4, 0x14); cLib_addCalcAngleS(&mAmpX[i], ampX, 8, 0x14, 5); @@ -427,9 +428,9 @@ void dWood::Anm_c::mode_push_into(dWood::Packet_c *packet) { rotX += mAmpX[i] * (phaseBiasX + JMASCos(mPhaseX[i])); } - mDoMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); - mDoMtx_XrotM(mModelMtx, (s32)rotX); - mDoMtx_YrotM(mModelMtx, -mForceDir); + cMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); + cMtx_XrotM(mModelMtx, (s32)rotX); + cMtx_YrotM(mModelMtx, -mForceDir); } } @@ -466,9 +467,9 @@ void dWood::Anm_c::mode_push_back(dWood::Packet_c *packet) { rotX += mAmpX[i] * (phaseBiasX + JMASCos(mPhaseX[i])); } - mDoMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); - mDoMtx_XrotM(mModelMtx, (s32)rotX); - mDoMtx_YrotM(mModelMtx, -mForceDir); + cMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); + cMtx_XrotM(mModelMtx, (s32)rotX); + cMtx_YrotM(mModelMtx, -mForceDir); } } @@ -508,12 +509,13 @@ void dWood::Anm_c::mode_norm(dWood::Packet_c *packet) { f32 rotY = 0.0f; f32 rotX = rotY; for (s32 i = 0; i < 2; i++) { + s32 phaseVelY = attr_sway(swayID, i).phaseVelY; s32 phaseVelX = attr_sway(swayID, i).phaseVelX; s16 ampY = attr_sway(swayID, i).ampY; s16 ampX = attr_sway(swayID, i).ampX; f32 phaseBiasX = attr_sway(swayID, i).phaseBiasX; - mPhaseY[i] += attr_sway(swayID, i).phaseVelY; + mPhaseY[i] += phaseVelY; mPhaseX[i] += phaseVelX; cLib_chaseS(&mAmpY[i], ampY, 2); cLib_chaseS(&mAmpX[i], ampX, 2); @@ -522,9 +524,9 @@ void dWood::Anm_c::mode_norm(dWood::Packet_c *packet) { rotX += mAmpX[i] * (phaseBiasX + JMASCos(mPhaseX[i])); } - mDoMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); // Y Rotation (Yaw) - mDoMtx_XrotM(mModelMtx, rotX); // X Rotation - mDoMtx_YrotM(mModelMtx, -mForceDir); // Y Rotation + cMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); // Y Rotation (Yaw) + cMtx_XrotM(mModelMtx, rotX); // X Rotation + cMtx_YrotM(mModelMtx, -mForceDir); // Y Rotation } /* 800BE148-800BE154 .text mode_norm_set_wind__Q25dWood5Anm_cFfs */ @@ -576,9 +578,9 @@ void dWood::Anm_c::mode_to_norm(dWood::Packet_c *packet) { rotX += mAmpX[i] * (phaseBiasX + JMASCos(mPhaseX[i])); } - mDoMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); - mDoMtx_XrotM(mModelMtx, rotX); - mDoMtx_YrotM(mModelMtx, -mForceDir); + cMtx_YrotS(mModelMtx, (s16)rotY + mForceDir); + cMtx_XrotM(mModelMtx, rotX); + cMtx_YrotM(mModelMtx, -mForceDir); if (mCountdown > 0) { mCountdown -= 1; @@ -650,15 +652,15 @@ void dWood::Unit_c::set_mtx(dWood::Anm_c *anim) { mtx[0][3] += mPos.x; mtx[1][3] += mPos.y; mtx[2][3] += mPos.z; - mDoMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mModelViewMtx); + cMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mModelViewMtx); mDoMtx_stack_c::copy(anim[anmIdx].mTrunkModelMtx); mtx[0][3] = mPos.x; mtx[1][3] = mPos.y; mtx[2][3] = mPos.z; - mDoMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mTrunkModelViewMtx); + cMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mTrunkModelViewMtx); - mDoMtx_concat(j3dSys.getViewMtx(), mShadowModelMtx, mShadowModelViewMtx); + cMtx_concat(j3dSys.getViewMtx(), mShadowModelMtx, mShadowModelViewMtx); } /* 800BEA28-800BEA50 .text clear__Q25dWood6Unit_cFv */ @@ -779,9 +781,9 @@ void dWood::Unit_c::cc_hit_before_cut(dWood::Packet_c *packet) { f32 newShadowScale = L_attr.kCutShadowScale / L_attr.kUncutShadowScale; - mDoMtx_copy(mShadowModelMtx, mDoMtx_stack_c::get()); + cMtx_copy(mShadowModelMtx, mDoMtx_stack_c::get()); mDoMtx_stack_c::scaleM(newShadowScale, 1.0f, newShadowScale); - mDoMtx_copy(mDoMtx_stack_c::get(), mShadowModelMtx); + cMtx_copy(mDoMtx_stack_c::get(), mShadowModelMtx); } } } @@ -835,7 +837,9 @@ void dWood::Room_c::delete_all_unit() { Unit_c *unit; while (unit = mpUnit, unit != NULL) { mpUnit = unit->mpNext; - mDoAud_zelAudio_c::getInterface()->seDeleteObject((Vec *)unit); +#if VERSION > VERSION_DEMO + mDoAud_zelAudio_c::getInterface()->seDeleteObject(&unit->mPos); +#endif unit->clear(); } } @@ -930,10 +934,13 @@ void dWood::Packet_c::update() { s32 i = 0; for (Unit_c *unit = mUnit; i < (s32)ARRAY_SIZE(mUnit); i++, unit++) { if (cLib_checkBit(unit->mFlags, Unit_c::STATE_ACTIVE)) { - cXyz clipPos(unit->mPos.x, unit->mPos.y + L_attr.kClipCenterYOffset, unit->mPos.z); - s32 res = mDoLib_clipper::clip(j3dSys.getViewMtx(), clipPos, L_attr.kClipRadius); + BOOL clip = mDoLib_clipper::clip( + j3dSys.getViewMtx(), + cXyz(unit->mPos.x, unit->mPos.y + L_attr.kClipCenterYOffset, unit->mPos.z), + L_attr.kClipRadius + ); - if (res != 0) { + if (clip) { cLib_onBit(unit->mFlags, Unit_c::STATE_FRUSTUM_CULLED); } else { cLib_offBit(unit->mFlags, Unit_c::STATE_FRUSTUM_CULLED); diff --git a/src/f_ap/f_ap_game.cpp b/src/f_ap/f_ap_game.cpp index a710bf0e..7764527a 100644 --- a/src/f_ap/f_ap_game.cpp +++ b/src/f_ap/f_ap_game.cpp @@ -54,22 +54,10 @@ fapGm_HIO_c::fapGm_HIO_c() { field_0x20.a = 0xff; mTriggerThreshLo = 0.9f; mTriggerThreshHi = 0.6f; - field_0x3c.r = 0xff; - field_0x3c.g = 0x96; - field_0x3c.b = 0; - field_0x3c.a = 0xff; - field_0x40.r = 0xff; - field_0x40.g = 0x78; - field_0x40.b = 0; - field_0x40.a = 0xff; - field_0x44.r = 0; - field_0x44.g = 0; - field_0x44.b = 0; - field_0x44.a = 0xff; - field_0x48.r = 0; - field_0x48.g = 0; - field_0x48.b = 0; - field_0x48.a = 0xff; + field_0x3c = JUtility::TColor(0xff, 0x96, 0x00, 0xff); + field_0x40 = JUtility::TColor(0xff, 0x78, 0x00, 0xff); + field_0x44 = JUtility::TColor(0x00, 0x00, 0x00, 0xff); + field_0x48 = JUtility::TColor(0x00, 0x00, 0x00, 0xff); field_0x4c = 0; field_0x4e = 10; field_0x54 = 0x1b; @@ -102,7 +90,3 @@ void fapGm_Create() { g_HIO.mNo = mDoHIO_createChild("ゲームシステム", &g_HIO); // "Game System" } - -/* 80023288-800232D0 .text __dt__11fapGm_HIO_cFv */ -fapGm_HIO_c::~fapGm_HIO_c() { -} diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index b7ec1016..b48dcd09 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -539,12 +539,16 @@ s32 fopAcM_rollPlayerCrash(fopAc_ac_c* i_this, f32 distAdjust, u32 flag) { } /* 800255B4-80025660 .text fopAcM_checkCullingBox__FPA4_fffffff */ -s32 fopAcM_checkCullingBox(Mtx m, f32 x0, f32 y0, f32 z0, f32 x1, f32 y1, f32 z1) { +bool fopAcM_checkCullingBox(Mtx m, f32 x0, f32 y0, f32 z0, f32 x1, f32 y1, f32 z1) { Vec p0 = { x0, y0, z0 }; Vec p1 = { x1, y1, z1 }; Mtx viewMtx; cMtx_concat(j3dSys.getViewMtx(), m, viewMtx); - return mDoLib_clipper::clip(viewMtx, &p1, &p0) != 0; + if (mDoLib_clipper::clip(viewMtx, &p1, &p0)) { + return true; + } else { + return false; + } } static l_HIO l_hio; @@ -584,7 +588,7 @@ static void dummy() { } /* 80025660-800259A8 .text fopAcM_cullingCheck__FP10fopAc_ac_c */ -s32 fopAcM_cullingCheck(fopAc_ac_c* i_this) { +BOOL fopAcM_cullingCheck(fopAc_ac_c* i_this) { MtxP pMtx; if (fopAcM_GetMtx(i_this) == NULL) { pMtx = j3dSys.getViewMtx(); @@ -603,7 +607,7 @@ s32 fopAcM_cullingCheck(fopAc_ac_c* i_this) { if (fopAcM_GetCullSize(i_this) == fopAc_CULLBOX_CUSTOM_e) { if (fopAcM_getCullSizeFar(i_this) > 0.0f) { mDoLib_clipper::changeFar(cullFar * mDoLib_clipper::getFar()); - s32 ret = mDoLib_clipper::clip(pMtx, fopAcM_getCullSizeBoxMax(i_this), fopAcM_getCullSizeBoxMin(i_this)); + BOOL ret = mDoLib_clipper::clip(pMtx, fopAcM_getCullSizeBoxMax(i_this), fopAcM_getCullSizeBoxMin(i_this)); mDoLib_clipper::resetFar(); return ret; } else { @@ -613,7 +617,7 @@ s32 fopAcM_cullingCheck(fopAc_ac_c* i_this) { fopAc_cullSizeBox* box = &l_cullSizeBox[fopAcM_CULLSIZE_IDX(fopAcM_GetCullSize(i_this))]; if (fopAcM_getCullSizeFar(i_this) > 0.0f) { mDoLib_clipper::changeFar(cullFar * mDoLib_clipper::getFar()); - s32 ret = mDoLib_clipper::clip(pMtx, &box->max, &box->min); + BOOL ret = mDoLib_clipper::clip(pMtx, &box->max, &box->min); mDoLib_clipper::resetFar(); return ret; } else { @@ -624,7 +628,7 @@ s32 fopAcM_cullingCheck(fopAc_ac_c* i_this) { if (fopAcM_GetCullSize(i_this) == fopAc_CULLSPHERE_CUSTOM_e) { if (fopAcM_getCullSizeFar(i_this) > 0.0f) { mDoLib_clipper::changeFar(cullFar * mDoLib_clipper::getFar()); - s32 ret = mDoLib_clipper::clip(pMtx, *fopAcM_getCullSizeSphereCenter(i_this), fopAcM_getCullSizeSphereR(i_this)); + BOOL ret = mDoLib_clipper::clip(pMtx, *fopAcM_getCullSizeSphereCenter(i_this), fopAcM_getCullSizeSphereR(i_this)); mDoLib_clipper::resetFar(); return ret; } else { @@ -635,7 +639,7 @@ s32 fopAcM_cullingCheck(fopAc_ac_c* i_this) { fopAc_cullSizeSphere* sphere = &l_cullSizeSphere[fopAcM_CULLSIZE_Q_IDX(fopAcM_GetCullSize(i_this))]; if (fopAcM_getCullSizeFar(i_this) > 0.0f) { mDoLib_clipper::changeFar(cullFar * mDoLib_clipper::getFar()); - s32 ret = mDoLib_clipper::clip(pMtx, sphere->center, sphere->radius); + BOOL ret = mDoLib_clipper::clip(pMtx, sphere->center, sphere->radius); mDoLib_clipper::resetFar(); return ret; } else { @@ -1260,7 +1264,8 @@ fpc_ProcID fopAcM_createIball(cXyz* p_pos, int itemTableIdx, int i_roomNo, csXyz /* 800278D8-80027920 .text fopAcM_createWarpFlower__FP4cXyzP5csXyziUc */ void fopAcM_createWarpFlower(cXyz* p_pos, csXyz* p_angle, int i_roomNo, u8 param_4) { - u32 params = param_4; + u32 mask = 0x0FFFFFFF; + u32 params = mask & param_4; fopAcM_create(fpcNm_WARPFLOWER_e, params, p_pos, i_roomNo, p_angle); } diff --git a/src/f_op/f_op_msg_mng.cpp b/src/f_op/f_op_msg_mng.cpp index 7c40a496..5e87f6eb 100644 --- a/src/f_op/f_op_msg_mng.cpp +++ b/src/f_op/f_op_msg_mng.cpp @@ -1474,8 +1474,8 @@ const char* fopMsgM_msgGet_c::getMessage(mesg_header* msg) { mMsgIdx = i; if (mMsgNo == info->mEntries[i].mMsgNo) { JMSMesgEntry_c* entry = &info->mEntries[mMsgIdx]; - mResMsgNo = entry->mMsgNo; ret = &data[entry->mDataOffs]; + mResMsgNo = entry->mMsgNo; break; } } diff --git a/src/f_op/f_op_overlap_req.cpp b/src/f_op/f_op_overlap_req.cpp index 727a8aaf..e2540d1c 100644 --- a/src/f_op/f_op_overlap_req.cpp +++ b/src/f_op/f_op_overlap_req.cpp @@ -78,7 +78,8 @@ static cPhs_State fopOvlpReq_phase_IsCreated(overlap_request_class* i_this) { static cPhs_State fopOvlpReq_phase_Create(overlap_request_class* i_this) { fpcLy_SetCurrentLayer(i_this->pCurrentLayer); - i_this->mPId = fpcSCtRq_Request(fpcLy_CurrentLayer(), i_this->mProcName, NULL, NULL, NULL); + s16 procName = i_this->mProcName; + i_this->mPId = fpcSCtRq_Request(fpcLy_CurrentLayer(), procName, NULL, NULL, NULL); return cPhs_NEXT_e; } diff --git a/src/f_op/f_op_scene_mng.cpp b/src/f_op/f_op_scene_mng.cpp index 88307167..08ac4625 100644 --- a/src/f_op/f_op_scene_mng.cpp +++ b/src/f_op/f_op_scene_mng.cpp @@ -46,7 +46,7 @@ u32 fopScnM_ReRequest(s16 procName, u32 user) { void fopScnM_Management() { if (!fopScnRq_Handler()) - JUT_ASSERT(326, FALSE); + JUT_ASSERT(DEMO_SELECT(284, 326), FALSE); } void fopScnM_Init() { diff --git a/src/m_Do/m_Do_audio.cpp b/src/m_Do/m_Do_audio.cpp index 16fea599..76215e36 100644 --- a/src/m_Do/m_Do_audio.cpp +++ b/src/m_Do/m_Do_audio.cpp @@ -53,13 +53,33 @@ JKRExpHeap* mDoAud_audioStreamHeap; /* 80006DD4-80006F88 .text mDoAud_allocStreamBuffer__Fv */ void mDoAud_allocStreamBuffer() { - JUT_ASSERT(98, mDoAud_StreamBufferPointer == NULL); + JUT_ASSERT(DEMO_SELECT(91, 98), mDoAud_StreamBufferPointer == NULL); u32 var1 = mDoAud_StreamBufferBlocks; u32 size; while (true) { JAIGlobalParameter::setParamStreamDecodedBufferBlocks(var1); size = JAInter::StreamLib::getNeedBufferSize(); - JUT_ASSERT(124, mDoAud_audioStreamHeap == NULL); + JUT_ASSERT(DEMO_SELECT(117, 124), mDoAud_audioStreamHeap == NULL); +#if VERSION == VERSION_DEMO + mDoAud_audioStreamHeap = zeldaHeap; + mDoAud_StreamBufferPointer = JKRAllocFromHeap(zeldaHeap, size, 0); + if (!mDoAud_StreamBufferPointer) { + JUT_WARN(120, "%s", "zeldaHeap pinch"); + mDoAud_audioStreamHeap = archiveHeap; + mDoAud_StreamBufferPointer = JKRAllocFromHeap(archiveHeap, size, 0); + } + if (!mDoAud_StreamBufferPointer) { + JUT_WARN(124, "%s", "archiveHeap pinch"); + mDoAud_audioStreamHeap = gameHeap; + mDoAud_StreamBufferPointer = JKRAllocFromHeap(gameHeap, size, 0); + } + if (!mDoAud_StreamBufferPointer && var1 > 3) { + var1--; + continue; + } + JUT_ASSERT(135, mDoAud_StreamBufferPointer); + break; +#else mDoAud_audioStreamHeap = archiveHeap; mDoAud_StreamBufferPointer = JKRAllocFromHeap(archiveHeap, size, 0); if (!mDoAud_StreamBufferPointer) { @@ -79,16 +99,17 @@ void mDoAud_allocStreamBuffer() { } JUT_ASSERT(144, mDoAud_StreamBufferPointer); return; +#endif } bool success = g_mDoAud_zelAudio.allocStreamBuffer(mDoAud_StreamBufferPointer, size); - JUT_ASSERT(148, success); + JUT_ASSERT(DEMO_SELECT(137, 148), success); } /* 80006F88-8000703C .text mDoAud_deallocStreamBuffer__Fv */ void mDoAud_deallocStreamBuffer() { - JUT_ASSERT(174, mDoAud_StreamBufferPointer); + JUT_ASSERT(DEMO_SELECT(161, 174), mDoAud_StreamBufferPointer); bool success = g_mDoAud_zelAudio.deallocStreamBuffer(); - JUT_ASSERT(182, success); + JUT_ASSERT(DEMO_SELECT(169, 182), success); JKRFreeToHeap(mDoAud_audioStreamHeap, mDoAud_StreamBufferPointer); mDoAud_audioStreamHeap = NULL; mDoAud_StreamBufferPointer = NULL; @@ -113,7 +134,11 @@ static mDoDvdThd_mountArchive_c* l_arcCommand; /* 80007090-80007224 .text mDoAud_Create__Fv */ void mDoAud_Create() { if (!l_affCommand) { - l_affCommand = mDoDvdThd_toMainRam_c::create("/Audiores/JaiInit.aaf", 2, NULL); +#if VERSION == VERSION_DEMO + l_affCommand = mDoDvdThd_toMainRam_c::create("/Audiores/JaiInit.aaf", JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); +#else + l_affCommand = mDoDvdThd_toMainRam_c::create("/Audiores/JaiInit.aaf", JKRArchive::MOUNT_DIRECTION_TAIL, NULL); +#endif if (!l_affCommand) { return; } @@ -130,18 +155,27 @@ void mDoAud_Create() { JAIGlobalParameter::setParamInitDataPointer(l_affCommand->getMemAddress()); JAInter::SequenceMgr::setArchivePointer(l_arcCommand->getArchive()); mDoAud_setupStreamBuffer(); +#if VERSION == VERSION_DEMO + g_mDoAud_audioHeap = JKRSolidHeap::create(0x166800, JKRHeap::getCurrentHeap(), false); if (g_mDoAud_audioHeap) { -#if VERSION <= VERSION_JPN + g_mDoAud_zelAudio.init(g_mDoAud_audioHeap, 0x00a00000); + g_mDoAud_audioHeap->adjustSize(); + } +#else + if (g_mDoAud_audioHeap) { +#if VERSION == VERSION_JPN JUTReportConsole("mDoAud_Create g_mDoAud_zelAudio.init before\n"); #endif JKRSetCurrentHeap(NULL); g_mDoAud_zelAudio.init(g_mDoAud_audioHeap, 0x00a00000); JKRSetCurrentHeap(zeldaHeap); -#if VERSION <= VERSION_JPN +#if VERSION == VERSION_JPN JUTReportConsole("mDoAud_Create g_mDoAud_zelAudio.init after\n"); #endif g_mDoAud_audioHeap->adjustSize(); - } else { + } +#endif + else { OSReport_Error("ヒープ確保失敗につきオーディオ初期化できません\n"); } g_mDoAud_zelAudio.setEventBit(dComIfGs_getPEventBit()); diff --git a/src/m_Do/m_Do_dvd_thread.cpp b/src/m_Do/m_Do_dvd_thread.cpp index 3aa2fe62..2403cf49 100644 --- a/src/m_Do/m_Do_dvd_thread.cpp +++ b/src/m_Do/m_Do_dvd_thread.cpp @@ -22,10 +22,14 @@ u8 mDoDvdThd::sDefaultDirection = JKRArchive::DEFAULT_MOUNT_DIRECTION; /* 80017EF8-80017F54 .text main__9mDoDvdThdFPv */ s32 mDoDvdThd::main(void* userData) { +#if VERSION == VERSION_DEMO + JKRThread thread(&l_thread, 0); +#else { JKRThread thread(OSGetCurrentThread(), 0); } JKRHeap* heap = NULL; heap->becomeCurrentHeap(); +#endif mDoDvdThd_param_c* param = (mDoDvdThd_param_c*)userData; param->mainLoop(); @@ -46,8 +50,10 @@ void mDoDvdThd::suspend() { /* 80017FD8-80018038 .text my_DVDConvertPathToEntrynum__FPCc */ s32 my_DVDConvertPathToEntrynum(const char* path) { s32 entryNo = DVDConvertPathToEntrynum(path); +#if VERSION > VERSION_DEMO if (entryNo < 0) JUT_WARN(0x240, "can't open:[%s]\n", path); +#endif return entryNo; } @@ -158,8 +164,10 @@ mDoDvdThd_mountArchive_c::mDoDvdThd_mountArchive_c(u8 direction) { mEntryNum = -1; mArchive = NULL; mHeap = NULL; +#if VERSION > VERSION_DEMO if (direction == JKRArchive::DEFAULT_MOUNT_DIRECTION) mMountDirection = mDoDvdThd::sDefaultDirection; +#endif } /* 80018554-8001861C .text create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap */ @@ -225,8 +233,10 @@ mDoDvdThd_mountXArchive_c::mDoDvdThd_mountXArchive_c(u8 direction, JKRArchive::E mEntryNum = -1; mArchive = NULL; mMountMode = mountMode; +#if VERSION > VERSION_DEMO if (direction == JKRArchive::DEFAULT_MOUNT_DIRECTION) mMountDirection = mDoDvdThd::sDefaultDirection; +#endif } /* 80018844-8001890C .text create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountMode */ @@ -263,8 +273,10 @@ BOOL mDoDvdThd_mountXArchive_c::execute() { /* 80018984-800189E0 .text __ct__21mDoDvdThd_toMainRam_cFUc */ mDoDvdThd_toMainRam_c::mDoDvdThd_toMainRam_c(u8 direction) { mAllocDirection = direction; +#if VERSION > VERSION_DEMO if (direction == JKRArchive::DEFAULT_MOUNT_DIRECTION) mAllocDirection = mDoDvdThd::sDefaultDirection; +#endif } /* 800189E0-80018AA8 .text create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap */ @@ -298,20 +310,20 @@ BOOL mDoDvdThd_toMainRam_c::execute() { heap = mDoExt_getArchiveHeap(); } - JKRDvdRipper::EAllocDirection allocDir; - if (mAllocDirection == JKRDvdRipper::DEFAULT_EALLOC_DIRECTION) { - allocDir = JKRDvdRipper::ALLOC_DIRECTION_FORWARD; - } else { - allocDir = JKRDvdRipper::ALLOC_DIRECTION_BACKWARD; - } + JKRDvdRipper::EAllocDirection allocDir = mAllocDirection == JKRDvdRipper::DEFAULT_EALLOC_DIRECTION ? + JKRDvdRipper::ALLOC_DIRECTION_FORWARD : + JKRDvdRipper::ALLOC_DIRECTION_BACKWARD; mData = JKRDvdRipper::loadToMainRAM(mEntryNum, NULL, EXPAND_SWITCH_UNKNOWN1, 0, heap, allocDir, 0, NULL); - if (mData != NULL) + if (mData != NULL) { mDataSize = heap->getSize(mData); + } + mIsDone = true; return mData != NULL; } static void dummy2() { + OSReport("m_Do_dvd_thread.cpp"); OSReport("mArchive != 0"); OSReport("Halt"); OSReport("archive"); diff --git a/src/m_Do/m_Do_gba_com.cpp b/src/m_Do/m_Do_gba_com.cpp index 46b8a257..de4b7c73 100644 --- a/src/m_Do/m_Do_gba_com.cpp +++ b/src/m_Do/m_Do_gba_com.cpp @@ -86,7 +86,9 @@ void mDoGaC_agbCom_c::mDoGaC_Initial(mDoGaC_DataManag_c* param_0, u8 param_1) { field_0x4 = 1; field_0x5 = 0; mPortNo = 1; +#if VERSION > VERSION_DEMO field_0x10e = 0; +#endif field_0x7 = 0; field_0x8 = 0; field_0x10c = param_1; @@ -198,9 +200,11 @@ void mDoGaC_agbCom_c::mDoGaC_Connect() { case 0: field_0x2 = 1; JUTGba::getManager()->doProbe(mDoGaC_getPortNo(), ProbeCheck_0, NULL); +#if VERSION > VERSION_DEMO if (field_0x10e < 3) { field_0x10e++; } +#endif break; case 2: mDoGaC_ComRestart(); @@ -216,7 +220,9 @@ void mDoGaC_agbCom_c::mDoGaC_Connect() { mDoGaC_ComClose(); } +#if VERSION > VERSION_DEMO field_0x10e = 0; +#endif break; case 4: break; @@ -243,9 +249,11 @@ int mDoGaC_agbCom_c::mDoGaC_GbaLink() { return 1; } +#if VERSION > VERSION_DEMO if (field_0x128 == 1 && field_0x10e < 3) { return 1; } +#endif return 0; } diff --git a/src/m_Do/m_Do_machine_exception.cpp b/src/m_Do/m_Do_machine_exception.cpp index 765be439..37f4aac9 100644 --- a/src/m_Do/m_Do_machine_exception.cpp +++ b/src/m_Do/m_Do_machine_exception.cpp @@ -27,13 +27,29 @@ void print(const char* string) { sConsole->print(string); } -static const char* unused_803396f8 = "--------------------------------------\n"; +static void dummy() { + OSReport("--------------------------------------\n"); +} + +#if VERSION == VERSION_DEMO +static void bakaboso() { + print("----------------------------\n"); + print_f("BAKABOSO TIME=%lld\n", OSTicksToMilliseconds(OSGetTime())); + print("----------------------------\n"); +} +#endif /* 8001BB90-8001BCEC .text dispHeapInfo__Fv */ void dispHeapInfo() { +#if VERSION == VERSION_DEMO + JKRExpHeap* zelda = mDoExt_getZeldaHeap(); + JKRExpHeap* game = mDoExt_getGameHeap(); + JKRExpHeap* archive = mDoExt_getArchiveHeap(); +#else JKRExpHeap* zelda = zeldaHeap; JKRExpHeap* game = gameHeap; JKRExpHeap* archive = archiveHeap; +#endif u32 zeldaFree = zelda->getFreeSize(); u32 gameFree = game->getFreeSize(); @@ -42,11 +58,19 @@ void dispHeapInfo() { u32 gameTotal = game->getTotalFreeSize(); u32 archiveTotal = archive->getTotalFreeSize(); +#if VERSION == VERSION_DEMO + print("-- Heap Free / TotalFree (KB) --\n"); + print_f(" Zelda %4d / %4d\n", zeldaFree / 1024, zeldaTotal / 1024); + print_f(" Game %4d / %4d\n", gameFree / 1024, gameTotal / 1024); + print_f("Archive %4d / %4d\n", archiveFree / 1024, archiveTotal / 1024); + print("--------------------------------\n"); +#else print("-- Heap Free / TotalFree (KB) --\n"); print_f(" Zelda %5d / %5d\n", zeldaFree / 1024, zeldaTotal / 1024); print_f(" Game %5d / %5d\n", gameFree / 1024, gameTotal / 1024); print_f("Archive %5d / %5d\n", archiveFree / 1024, archiveTotal / 1024); print("--------------------------------\n"); +#endif if (JKRAram::getAramHeap()) { JKRAram::getAramHeap()->dump(); @@ -59,11 +83,13 @@ void dispHeapInfo() { archive->dump_sort(); } +#if VERSION > VERSION_DEMO /* 8001BCEC-8001BD30 .text dispGameInfo__Fv */ void dispGameInfo() { print_f("Start StageName:RoomNo [%s:%d]\n", dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo()); } +#endif /* 8001BD30-8001BE84 .text dispDateInfo__Fv */ void dispDateInfo() { @@ -97,8 +123,13 @@ void dispConsoleToTerminal() { /* 8001BEAC-8001BEDC .text exception_addition__FP10JUTConsole */ void exception_addition(JUTConsole* pConsole) { sConsole = pConsole; +#if VERSION == VERSION_DEMO + bakaboso(); +#endif dispHeapInfo(); dispDateInfo(); dispConsoleToTerminal(); +#if VERSION > VERSION_DEMO dispGameInfo(); +#endif } |
