diff --git a/configure.py b/configure.py index 24652cd05..4c5027e63 100755 --- a/configure.py +++ b/configure.py @@ -399,7 +399,7 @@ config.libs = [ Object(Matching, "f_op/f_op_view.cpp"), Object(Matching, "f_op/f_op_kankyo.cpp"), Object(Matching, "f_op/f_op_msg.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "f_op/f_op_kankyo_mng.cpp"), + Object(Matching, "f_op/f_op_kankyo_mng.cpp"), Object(NonMatching, "f_op/f_op_msg_mng.cpp", extra_cflags=['-pragma "nosyminline on"']), Object(Matching, "f_op/f_op_draw_iter.cpp"), Object(Matching, "f_op/f_op_draw_tag.cpp"), @@ -482,7 +482,7 @@ config.libs = [ Object(NonMatching, "d/d_tree.cpp"), Object(NonMatching, "d/d_particle.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_particle_name.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_path.cpp"), + Object(Matching, "d/d_path.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_drawlist.cpp", extra_cflags=['-sym off']), Object(Matching, "d/d_kankyo_data.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_kankyo_wether.cpp"), @@ -1390,7 +1390,7 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_barrel", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_barrel2"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_bscurtain", extra_cflags=['-pragma "nosyminline on"']), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_cafelmp"), + ActorRel(Matching, "d_a_obj_cafelmp"), ActorRel(NonMatching, "d_a_obj_coming"), ActorRel(NonMatching, "d_a_obj_demo_barrel"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_doguu", extra_cflags=['-pragma "nosyminline on"']), @@ -1713,7 +1713,7 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vgnfd", extra_cflags=[ '-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vmc", extra_cflags=["-sym off"]), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vmsdz"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vmsms"), + ActorRel(Matching, "d_a_obj_vmsms"), ActorRel(NonMatching, "d_a_obj_volcano"), ActorRel(NonMatching, "d_a_obj_vtil"), ActorRel(NonMatching, "d_a_obj_vyasi"), diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 3e7d8eace..0905c93ef 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -562,10 +562,13 @@ public: #endif void setMsgArchive(JKRArchive * pArc) { mpMsgArchive = pArc; } + JKRArchive* getMsgArchive() { return mpMsgArchive; } +#if VERSION > VERSION_DEMO void setDmsgArchive(JKRArchive * pArc) { mpDmsgArchive = pArc; } JKRArchive* getDmsgArchive() { return mpDmsgArchive; } - void setTmsgArchive(JKRArchive * pArc) { mpTmsgArchive = pArc; } - JKRArchive* getTmsgArchive() { return mpTmsgArchive; } +#endif + void setTactMsgArchive(JKRArchive * pArc) { mTactMsgArchive = pArc; } + JKRArchive* getTactMsgArchive() { return mTactMsgArchive; } void setMenuArchive(JKRArchive * pArc) { mpMenuArchive = pArc; } JKRArchive* getMenuArchive() { return mpMenuArchive; } void setFont0Archive(JKRArchive * pArc) { mpFont0Archive = pArc; } @@ -577,10 +580,10 @@ public: void setLkDArc(JKRArchive * pArc) { mpLkDArc = pArc; } void setFmapArchive(JKRArchive * pArc) { mpFmapArchive = pArc; } void setItemResArchive(JKRArchive * pArc) { mpItemResArchive = pArc; } - void setClctResArchive(JKRArchive * pArc) { mpClctResArchive = pArc; } + void setCollectResArchive(JKRArchive * pArc) { mpCollectResArchive = pArc; } void setFmapResArchive(JKRArchive * pArc) { mpFmapResArchive = pArc; } void setDmapResArchive(JKRArchive * pArc) { mpDmapResArchive = pArc; } - void setOptResArchive(JKRArchive * pArc) { mpOptResArchive = pArc; } + void setOptionResArchive(JKRArchive * pArc) { mpOptionResArchive = pArc; } JKRArchive* getClothResArchive() { return mpClothResArchive; } void setClothResArchive(JKRArchive * pArc) { mpClothResArchive = pArc; } void setSaveResArchive(JKRArchive * pArc) { mpSaveResArchive = pArc; } @@ -591,7 +594,7 @@ public: void setActionIconArchive(JKRArchive * pArc) { mpActionIconArchive = pArc; } JKRArchive* getActionIconArchive() { return mpActionIconArchive; } void setScopeResArchive(JKRArchive * pArc) { mpScopeResArchive = pArc; } - void setCamResArchive(JKRArchive * pArc) { mpCamResArchive = pArc; } + void setCameraResArchive(JKRArchive * pArc) { mpCameraResArchive = pArc; } void setSwimResArchive(JKRArchive * pArc) { mpSwimResArchive = pArc; } void setWindResArchive(JKRArchive * pArc) { mpWindResArchive = pArc; } void setFontArchive(JKRArchive * pArc) { mpFont0Archive = pArc; } @@ -676,8 +679,12 @@ public: /* 0x4700 */ dVibration_c mVibration; /* 0x4784 */ dDetect_c mDetect; /* 0x4798 */ JKRArchive* mpMsgArchive; +#if VERSION > VERSION_DEMO /* 0x479C */ JKRArchive* mpDmsgArchive; - /* 0x47A0 */ JKRArchive* mpTmsgArchive; +#endif + /* Offsets below are for retail JPN/USA/PAL */ + + /* 0x47A0 */ JKRArchive* mTactMsgArchive; /* 0x47A4 */ JKRArchive* mpMenuArchive; /* 0x47A8 */ JKRArchive* mpFont0Archive; /* 0x47AC */ JKRArchive* mpFont1Archive; @@ -685,10 +692,10 @@ public: /* 0x47B4 */ JKRArchive* mpLkDArc; /* 0x47B8 */ JKRArchive* mpFmapArchive; /* 0x47BC */ JKRArchive* mpItemResArchive; - /* 0x47C0 */ JKRArchive* mpClctResArchive; + /* 0x47C0 */ JKRArchive* mpCollectResArchive; /* 0x47C4 */ JKRArchive* mpFmapResArchive; /* 0x47C8 */ JKRArchive* mpDmapResArchive; - /* 0x47CC */ JKRArchive* mpOptResArchive; + /* 0x47CC */ JKRArchive* mpOptionResArchive; /* 0x47D0 */ JKRArchive* mpClothResArchive; /* 0x47D4 */ JKRArchive* mpSaveResArchive; /* 0x47D8 */ JKRArchive* mpItemIconArchive; @@ -696,7 +703,7 @@ public: /* 0x47E0 */ JKRArchive* mpErrorResArchive; /* 0x47E4 */ JKRArchive* mpActionIconArchive; /* 0x47E8 */ JKRArchive* mpScopeResArchive; - /* 0x47EC */ JKRArchive* mpCamResArchive; + /* 0x47EC */ JKRArchive* mpCameraResArchive; /* 0x47F0 */ JKRArchive* mpSwimResArchive; /* 0x47F4 */ JKRArchive* mpWindResArchive; /* 0x47F8 */ JKRArchive* mpEnglishTextArchive; @@ -1351,6 +1358,7 @@ inline s16 dComIfGs_getTurnRestartShipAngleY() { return g_dComIfG_gameInfo.save.getTurnRestart().getShipAngleY(); } +#if VERSION > VERSION_DEMO // The "HasShip" name is fake. These inlines don't exist in the demo, but must exist in the final release. inline BOOL dComIfGs_getTurnRestartHasShip() { return g_dComIfG_gameInfo.save.getTurnRestart().getHasShip(); @@ -1359,6 +1367,7 @@ inline BOOL dComIfGs_getTurnRestartHasShip() { inline void dComIfGs_setTurnRestartHasShip(BOOL hasShip) { g_dComIfG_gameInfo.save.getTurnRestart().setHasShip(hasShip); } +#endif inline void dComIfGs_setTurnRestart(const cXyz& i_pos, s16 i_angle, s8 i_roomNo, u32 i_param) { g_dComIfG_gameInfo.save.getTurnRestart().set(i_pos, i_angle, i_roomNo, i_param, i_pos, i_angle, FALSE); @@ -2005,7 +2014,7 @@ inline s8 dComIfGp_getStartStageLayer() { return g_dComIfG_gameInfo.play.getStartStageLayer(); } -inline s32 dComIfGp_getStartStagePoint() { +inline s16 dComIfGp_getStartStagePoint() { return g_dComIfG_gameInfo.play.getStartStagePoint(); } @@ -2235,7 +2244,7 @@ inline u8 dComIfGp_getShipId() { return g_dComIfG_gameInfo.play.getShipId(); } -inline u8 dComIfGp_getShipRoomId() { +inline int dComIfGp_getShipRoomId() { return g_dComIfG_gameInfo.play.getShipRoomId(); } @@ -3498,10 +3507,13 @@ inline void dComIfGd_reset() { g_dComIfG_gameInfo.drawlist.reset(); } inline void dComIfGp_setAnmArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setAnmArchive(pArc); } inline JKRArchive* dComIfGp_getAnmArchive() { return g_dComIfG_gameInfo.play.getAnmArchive(); } inline void dComIfGp_setMsgArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setMsgArchive(pArc); } +inline JKRArchive* dComIfGp_getMsgArchive() { return g_dComIfG_gameInfo.play.getMsgArchive(); } +#if VERSION > VERSION_DEMO inline void dComIfGp_setDmsgArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setDmsgArchive(pArc); } inline JKRArchive* dComIfGp_getDmsgArchive() { return g_dComIfG_gameInfo.play.getDmsgArchive(); } -inline void dComIfGp_setTmsgArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setTmsgArchive(pArc); } -inline JKRArchive* dComIfGp_getTmsgArchive() { return g_dComIfG_gameInfo.play.getTmsgArchive(); } +#endif +inline void dComIfGp_setTactMsgArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setTactMsgArchive(pArc); } +inline JKRArchive* dComIfGp_getTactMsgArchive() { return g_dComIfG_gameInfo.play.getTactMsgArchive(); } inline void dComIfGp_setMenuArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setMenuArchive(pArc); } inline JKRArchive* dComIfGp_getMenuArchive() { return g_dComIfG_gameInfo.play.getMenuArchive(); } inline void dComIfGp_setFont0Archive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFont0Archive(pArc); } @@ -3511,10 +3523,10 @@ inline JKRArchive* dComIfGp_getRubyArchive() { return g_dComIfG_gameInfo.play.ge inline void dComIfGp_setLkDArc(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setLkDArc(pArc); } inline void dComIfGp_setFmapArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFmapArchive(pArc); } inline void dComIfGp_setItemResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setItemResArchive(pArc); } -inline void dComIfGp_setClctResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setClctResArchive(pArc); } +inline void dComIfGp_setCollectResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setCollectResArchive(pArc); } inline void dComIfGp_setFmapResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFmapResArchive(pArc); } inline void dComIfGp_setDmapResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setDmapResArchive(pArc); } -inline void dComIfGp_setOptResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setOptResArchive(pArc); } +inline void dComIfGp_setOptionResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setOptionResArchive(pArc); } inline JKRArchive* dComIfGp_getClothResArchive() { return g_dComIfG_gameInfo.play.getClothResArchive(); } inline void dComIfGp_setClothResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setClothResArchive(pArc); } inline void dComIfGp_setSaveResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setSaveResArchive(pArc); } @@ -3525,7 +3537,7 @@ inline void dComIfGp_setErrorResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo. inline void dComIfGp_setActionIconArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setActionIconArchive(pArc); } inline JKRArchive* dComIfGp_getActionIconArchive() { return g_dComIfG_gameInfo.play.getActionIconArchive(); } inline void dComIfGp_setScopeResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setScopeResArchive(pArc); } -inline void dComIfGp_setCamResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setCamResArchive(pArc); } +inline void dComIfGp_setCameraResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setCameraResArchive(pArc); } inline void dComIfGp_setSwimResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setSwimResArchive(pArc); } inline void dComIfGp_setWindResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setWindResArchive(pArc); } inline void dComIfGp_setFontArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFontArchive(pArc); } diff --git a/include/d/d_save.h b/include/d/d_save.h index 9a2e71142..4f9717851 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -819,9 +819,11 @@ public: s8 getRoomNo() { return mRoomNo; } cXyz& getShipPos() { return mShipPos; } s16 getShipAngleY() { return mShipAngleY; } +#if VERSION > VERSION_DEMO // The "HasShip" name is fake. These inlines don't exist in the demo, but probably do in the final release. BOOL getHasShip() { return mHasShip; } void setHasShip(BOOL hasShip) { mHasShip = hasShip; } +#endif /* 0x00 */ cXyz mPosition; /* 0x0C */ u32 mParam; @@ -831,7 +833,9 @@ public: /* 0x14 */ u8 field_0x14[0x24 - 0x14]; /* 0x24 */ cXyz mShipPos; /* 0x30 */ s16 mShipAngleY; +#if VERSION > VERSION_DEMO /* 0x34 */ BOOL mHasShip; +#endif }; // Size: 0x38 class dSv_save_c { @@ -955,7 +959,9 @@ public: /* 0x1298 */ s64 field_0x1298; }; // Size: 0x12A0 +#if VERSION > VERSION_DEMO STATIC_ASSERT(sizeof(dSv_info_c) == 0x12A0); +#endif #include "d/d_save_event_bit.inc" diff --git a/src/d/d_mesg.cpp b/src/d/d_mesg.cpp index 035fc0901..5a31136ff 100644 --- a/src/d/d_mesg.cpp +++ b/src/d/d_mesg.cpp @@ -1327,7 +1327,11 @@ void dMesg_screenDataTalk_c::createScreen() { JUtility::TColor black(30, 30, 75, 0); scrn = new J2DScreen(); JUT_ASSERT(2145, scrn != NULL); +#if VERSION == VERSION_DEMO + scrn->set("hukidashi_d00.blo", dComIfGp_getMsgArchive()); +#else scrn->set("hukidashi_d00.blo", dComIfGp_getDmsgArchive()); +#endif fopMsgM_setPaneData(&field_0x18, scrn->search('dt00')); fopMsgM_setPaneData(&field_0x50, scrn->search('yz00')); fopMsgM_setPaneData(&field_0x88[0], scrn->search('tx02')); @@ -1489,7 +1493,11 @@ void dMesg_screenDataItem_c::createScreen() { JUT_ASSERT(2424, texBuffer != NULL); field_0x3e4 = NULL; +#if VERSION == VERSION_DEMO + scrn->set("hukidashi_d09.blo", dComIfGp_getMsgArchive()); +#else scrn->set("hukidashi_d09.blo", dComIfGp_getDmsgArchive()); +#endif fopMsgM_setPaneData(&field_0x18, scrn->search('dt90')); fopMsgM_setPaneData(&field_0x50, scrn->search('yz90')); fopMsgM_setPaneData(&field_0x88[0], scrn->search('tx92')); @@ -2084,7 +2092,11 @@ void dMesg_closeProc(sub_mesg_class* i_Msg) { JKRHeap* oldHeap = mDoExt_setCurrentHeap(i_Msg->field_0x100); if (i_Msg->screen->closeAnime()) { delete i_Msg->screen->scrn; +#if VERSION == VERSION_DEMO + dComIfGp_getMsgArchive()->removeResourceAll(); +#else dComIfGp_getDmsgArchive()->removeResourceAll(); +#endif delete (void*)i_Msg->screen; i_Msg->screen = NULL; dMesg_reset(); @@ -2163,7 +2175,11 @@ static BOOL dMsg_Delete(sub_mesg_class* i_Msg) { mDoExt_setCurrentHeap(i_Msg->field_0x100); if (i_Msg->screen) { delete i_Msg->screen->scrn; +#if VERSION == VERSION_DEMO + dComIfGp_getMsgArchive()->removeResourceAll(); +#else dComIfGp_getDmsgArchive()->removeResourceAll(); +#endif delete (void*)i_Msg->screen; i_Msg->screen = NULL; } diff --git a/src/d/d_metronome.cpp b/src/d/d_metronome.cpp index 83a27c38f..6e96f1d3d 100644 --- a/src/d/d_metronome.cpp +++ b/src/d/d_metronome.cpp @@ -508,7 +508,7 @@ void dMetronome_c::initialize() { void dMetronome_c::_create() { scrn = new J2DScreen(); JUT_ASSERT(0x2db, scrn != NULL); - scrn->set("baton_input.blo", dComIfGp_getTmsgArchive()); + scrn->set("baton_input.blo", dComIfGp_getTactMsgArchive()); screenSet(); initialize(); } @@ -516,7 +516,7 @@ void dMetronome_c::_create() { /* 8022319C-802231F4 .text _delete__12dMetronome_cFv */ void dMetronome_c::_delete() { delete scrn; - dComIfGp_getTmsgArchive()->removeResourceAll(); + dComIfGp_getTactMsgArchive()->removeResourceAll(); } /* 802231F4-80223314 .text _move__12dMetronome_cFv */ diff --git a/src/d/d_s_logo.cpp b/src/d/d_s_logo.cpp index 5694b905a..1deae8033 100644 --- a/src/d/d_s_logo.cpp +++ b/src/d/d_s_logo.cpp @@ -49,7 +49,9 @@ mDoDvdThd_mountXArchive_c * l_swimResCommand; mDoDvdThd_mountXArchive_c * l_windResCommand; mDoDvdThd_mountXArchive_c * l_nameResCommand; mDoDvdThd_mountXArchive_c * l_tmsgCommand; +#if VERSION > VERSION_DEMO mDoDvdThd_mountXArchive_c * l_dmsgCommand; +#endif mDoDvdThd_mountXArchive_c * l_errorResCommand; mDoDvdThd_mountXArchive_c * l_msgDtCommand; #if VERSION > VERSION_JPN @@ -63,7 +65,11 @@ mDoDvdThd_toMainRam_c * l_particleCommand; mDoDvdThd_toMainRam_c * l_itemTableCommand; mDoDvdThd_toMainRam_c * l_ActorDataCommand; mDoDvdThd_toMainRam_c * l_FmapDataCommand; +#if VERSION == VERSION_DEMO +mDoDvdThd_mountXArchive_c * l_DmcMountCommand; +#else mDoDvdThd_mountXArchive_c * l_lodCommand; +#endif enum { ACT_nintendoInDraw = 0, @@ -416,7 +422,9 @@ BOOL dvdWaitDraw(dScnLogo_c* i_this) { && l_windResCommand->sync() && l_nameResCommand->sync() && l_tmsgCommand->sync() +#if VERSION > VERSION_DEMO && l_dmsgCommand->sync() +#endif && l_errorResCommand->sync() && l_msgDtCommand->sync() #if VERSION > VERSION_JPN @@ -430,7 +438,10 @@ BOOL dvdWaitDraw(dScnLogo_c* i_this) { && l_itemTableCommand->sync() && l_ActorDataCommand->sync() && l_FmapDataCommand->sync() - && l_lodCommand->sync() && !mDoRst::isReset()) { +#if VERSION > VERSION_DEMO + && l_lodCommand->sync() && !mDoRst::isReset() +#endif + ) { dComIfG_changeOpeningScene(i_this, PROC_OPENING_SCENE); } @@ -491,19 +502,21 @@ static BOOL dScnLogo_Delete(dScnLogo_c* i_this) { dComIfGp_setItemResArchive(l_itemResCommand->getArchive()); dComIfGp_setFmapResArchive(l_fmapResCommand->getArchive()); dComIfGp_setDmapResArchive(l_dmapResCommand->getArchive()); - dComIfGp_setClctResArchive(l_clctResCommand->getArchive()); - dComIfGp_setOptResArchive(l_optResCommand->getArchive()); + dComIfGp_setCollectResArchive(l_clctResCommand->getArchive()); + dComIfGp_setOptionResArchive(l_optResCommand->getArchive()); dComIfGp_setSaveResArchive(l_saveResCommand->getArchive()); dComIfGp_setClothResArchive(l_clothResCommand->getArchive()); dComIfGp_setItemIconArchive(l_itemiconCommand->getArchive()); dComIfGp_setActionIconArchive(l_actioniconCommand->getArchive()); dComIfGp_setScopeResArchive(l_scopeResCommand->getArchive()); - dComIfGp_setCamResArchive(l_camResCommand->getArchive()); + dComIfGp_setCameraResArchive(l_camResCommand->getArchive()); dComIfGp_setSwimResArchive(l_swimResCommand->getArchive()); dComIfGp_setWindResArchive(l_windResCommand->getArchive()); dComIfGp_setNameResArchive(l_nameResCommand->getArchive()); - dComIfGp_setTmsgArchive(l_tmsgCommand->getArchive()); + dComIfGp_setTactMsgArchive(l_tmsgCommand->getArchive()); +#if VERSION > VERSION_DEMO dComIfGp_setDmsgArchive(l_dmsgCommand->getArchive()); +#endif dComIfGp_setErrorResArchive(l_errorResCommand->getArchive()); dComIfGp_setMsgDtArchive(l_msgDtCommand->getArchive()); #if VERSION > VERSION_JPN @@ -531,7 +544,9 @@ static BOOL dScnLogo_Delete(dScnLogo_c* i_this) { delete l_windResCommand; delete l_nameResCommand; delete l_tmsgCommand; +#if VERSION > VERSION_DEMO delete l_dmsgCommand; +#endif delete l_errorResCommand; delete l_msgDtCommand; #if VERSION > VERSION_JPN @@ -561,7 +576,11 @@ static BOOL dScnLogo_Delete(dScnLogo_c* i_this) { delete l_ActorDataCommand; delete l_FmapDataCommand; +#if VERSION == VERSION_DEMO + delete l_DmcMountCommand; +#else delete l_lodCommand; +#endif ResTIMG * timg = (ResTIMG *)dComIfG_getObjectRes("Always", ALWAYS_I4_BALL128B); dDlst_shadowControl_c::setSimpleTex(timg); @@ -581,10 +600,16 @@ static BOOL dScnLogo_Delete(dScnLogo_c* i_this) { g_dComIfG_gameInfo.play.field_0x4820 = JKRAllocFromAram(0xB000, JKRAramHeap::HEAD); #endif +#if VERSION == VERSION_DEMO + mDoRst::offReset(); +#endif + +#if VERSION > VERSION_DEMO mDoExt_setSafeGameHeapSize(); mDoExt_setSafeZeldaHeapSize(); mDoExt_setSafeCommandHeapSize(); mDoExt_setSafeArchiveHeapSize(); +#endif return TRUE; } @@ -804,13 +829,17 @@ cPhs_State phase_2(dScnLogo_c* i_this) { JKRHeap::free(i_this->field_0x1f8, NULL); +#if VERSION > VERSION_DEMO l_lodCommand = aramMount("/res/Stage/sea/LODALL.arc"); JUT_ASSERT(VERSION_SELECT(1346, 1346, 1645, 1685), l_lodCommand != NULL); +#endif rt = dComIfG_setObjectRes("Always", JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); JUT_ASSERT(VERSION_SELECT(1351, 1351, 1650, 1690), rt == 1); +#if VERSION > VERSION_DEMO archiveHeap->dump_sort(); +#endif rt = dComIfG_setObjectRes("Link", JKRArchive::DEFAULT_MOUNT_DIRECTION, NULL); JUT_ASSERT(VERSION_SELECT(1356, 1356, 1655, 1695), rt == 1); @@ -843,7 +872,9 @@ cPhs_State phase_2(dScnLogo_c* i_this) { l_windResCommand = aramMount("/res/Msg/windres.arc"); l_nameResCommand = aramMount("/res/Msg/nameres.arc"); l_tmsgCommand = aramMount("/res/Msg/tmsgres.arc"); +#if VERSION > VERSION_DEMO l_dmsgCommand = aramMount("/res/Msg/dmsgres.arc"); +#endif l_errorResCommand = aramMount("/res/Msg/errorres.arc"); l_saveResCommand = aramMount("/res/Msg/saveres.arc"); @@ -884,8 +915,11 @@ cPhs_State phase_2(dScnLogo_c* i_this) { mDoRst::offResetPrepare(); #endif +#if VERSION > VERSION_DEMO JUTGamePad::clearResetOccurred(); JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL); +#endif + return cPhs_COMPLEATE_e; } diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index bd6f57c59..5b7325f57 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -1336,7 +1336,9 @@ void dSv_turnRestart_c::set(const cXyz& i_pos, s16 i_angle, s8 i_roomNo, u32 i_p field_0x13 = 0; mShipPos = i_shipPos; mShipAngleY = i_shipAngle; +#if VERSION > VERSION_DEMO mHasShip = i_hasShip; +#endif } /* 8005D604-8005D660 .text init__10dSv_info_cFv */ diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index be5ae23e7..f760b716e 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -354,7 +354,9 @@ u32 dStage_roomControl_c::getDarkMode() { /* 80041370-800413D4 .text createMemoryBlock__20dStage_roomControl_cFiUl */ JKRExpHeap* dStage_roomControl_c::createMemoryBlock(int i_blockIdx, u32 i_heapSize) { +#if VERSION > VERSION_DEMO archiveHeap->getCurrentGroupId(); +#endif mMemoryBlock[i_blockIdx] = JKRExpHeap::create(i_heapSize, mDoExt_getArchiveHeap(), false); return mMemoryBlock[i_blockIdx]; } @@ -720,7 +722,11 @@ dStage_objectNameInf l_objectName[] = { OBJNAME("Bmcon2", PROC_NPC_BMCON1, 1, 0), OBJNAME("Bmsw", PROC_NPC_BMSW, 255, 0), OBJNAME("Btsw", PROC_NPC_BTSW, 255, 0), +#if VERSION == VERSION_DEMO + OBJNAME("Btsw2", PROC_NPC_BTSW2, 255, 0), +#else OBJNAME("Btsw2", PROC_NPC_BTSW2, 255, 59), +#endif OBJNAME("Zk1", PROC_NPC_ZK1, 255, 59), OBJNAME("Zl1", PROC_NPC_ZL1, 255, 60), OBJNAME("Ob1", PROC_NPC_OB1, 255, 60), @@ -1016,7 +1022,11 @@ dStage_objectNameInf l_objectName[] = { OBJNAME("UkD2", PROC_NPC_UK, 7, 0), OBJNAME("Co1", PROC_NPC_CO1, 255, 59), OBJNAME("Mt", PROC_NPC_MT, 255, 0), +#if VERSION == VERSION_DEMO + OBJNAME("Mn", PROC_NPC_MN, 255, 0), +#else OBJNAME("Mn", PROC_NPC_MN, 255, 59), +#endif OBJNAME("Ah", PROC_NPC_AH, 255, 0), OBJNAME("Hyuf1", PROC_Hmlif, 255, 61), OBJNAME("Hyuf2", PROC_Hmlif, 255, 61), @@ -1830,6 +1840,32 @@ int dStage_mecoInfoInit(dStage_dt_c* i_stage, void* i_data, int i_num, void*) { return 1; } +#if VERSION == VERSION_DEMO +bool dStage_setShipPos(int param_0, int i_roomNo) { + /* Nonmatching */ + i_roomNo = i_roomNo == 0xFF ? dComIfGp_roomControl_getStayNo() : i_roomNo; + if (param_0 != 0xFF) { + dStage_Ship_dt_c* ship_data_p = dComIfGp_getShip(i_roomNo, param_0); + if (ship_data_p != NULL) { + daShip_c* ship_p = (daShip_c*)fopAcM_SearchByName(PROC_SHIP); + if (ship_p != NULL) { + if (dComIfGp_getStartStagePoint() == -3 ) { + if (dComIfGs_getTurnRestartParam() & 0x100) { + ship_p = (daShip_c*)fopAcM_SearchByName(PROC_SHIP); + if (ship_p != NULL) { + ship_p->initStartPos(&dComIfGs_getTurnRestartShipPos(), dComIfGs_getTurnRestartShipAngleY()); + } + } + } else { + ship_p->initStartPos(&ship_data_p->m_pos, ship_data_p->m_angle); + } + return true; + } + } + } + return false; +} +#else /* 800429C0-80042B10 .text dStage_setShipPos__Fii */ bool dStage_setShipPos(int param_0, int i_roomNo) { if (strcmp(dComIfGp_getStartStageName(), "GanonM") == 0 && !dComIfGs_isEventBit(0x3D02)) { @@ -1862,6 +1898,7 @@ bool dStage_setShipPos(int param_0, int i_roomNo) { return false; } +#endif /* 80042B10-80042B70 .text dStage_chkTaura__Fi */ bool dStage_chkTaura(int i_roomNo) { @@ -1874,19 +1911,28 @@ bool dStage_chkTaura(int i_roomNo) { /* 80042B70-80042C38 .text dStage_shipInfoInit__FP11dStage_dt_cPviPv */ int dStage_shipInfoInit(dStage_dt_c* i_stage, void* i_data, int i_num, void*) { - i_stage->setShip((dStage_Ship_c*)((char*)i_data + 4)); + dStage_Ship_c* ship_p = (dStage_Ship_c*)((char*)i_data + 4); + i_stage->setShip(ship_p); - s32 shipId = dComIfGp_getShipId(); - s32 roomId = dComIfGp_getShipRoomId(); + int shipId = dComIfGp_getShipId(); + int roomId = dComIfGp_getShipRoomId(); - if (dStage_chkTaura(roomId)) { - if (!dComIfGs_isEventBit(dSv_evtBit_c::RODE_KORL) && dStage_setShipPos(0x80, roomId)) { + if (dStage_chkTaura(roomId) && !dComIfGs_isEventBit(dSv_evtBit_c::RODE_KORL)) { + if (dStage_setShipPos(0x80, roomId)) { shipId = 0xFF; roomId = 0xFF; dComIfGp_setShipId(0xFF); dComIfGp_setShipRoomId(0xFF); } } +#if VERSION == VERSION_DEMO + else if (strcmp(dComIfGp_getStartStageName(), "GanonM") == 0 && !dComIfGs_isEventBit(0x3D02)) { + shipId = 0xFF; + roomId = 0xFF; + dComIfGp_setShipId(0xFF); + dComIfGp_setShipRoomId(0xFF); + } +#endif if (dStage_setShipPos(shipId, roomId)) { dComIfGp_setShipId(0xFF); @@ -2345,7 +2391,8 @@ void dStage_escapeRestart() { /* 80043C84-80043CD0 .text dStage_checkRestart__Fv */ BOOL dStage_checkRestart() { if (dComIfGp_isEnableNextStage()) { - if (dComIfGp_getStartStagePoint() == -2 || dComIfGp_getStartStagePoint() == -3) { + int point = dComIfGp_getStartStagePoint(); + if (point == -2 || point == -3) { return FALSE; } diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index a2904b27e..18b981d38 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -2454,8 +2454,14 @@ s32 mDoExt_font0_getCount; /* 80016884-800168E0 .text mDoExt_initFont0__Fv */ void mDoExt_initFont0() { +#if VERSION == VERSION_DEMO + int r30 = g_msgDHIO.field_0x08; + static const char fontdata[] = "rock_24_20_4i_usa.bfn"; + mDoExt_initFontCommon(&mDoExt_font0, &mDoExt_resfont0, mDoExt_getZeldaHeap(), fontdata, dComIfGp_getFontArchive(), r30, 0xB4, 0x800); +#else static const char fontdata[] = "rock_24_20_4i_usa.bfn"; mDoExt_initFontCommon(&mDoExt_font0, &mDoExt_resfont0, mDoExt_getZeldaHeap(), fontdata, dComIfGp_getFontArchive(), 1, 0, 0); +#endif } /* 800168E0-8001691C .text mDoExt_getMesgFont__Fv */