diff --git a/configure.py b/configure.py index 1cc083b4b..255262857 100755 --- a/configure.py +++ b/configure.py @@ -589,13 +589,13 @@ config.libs = [ Object(NonMatching, "d/actor/d_a_obj_search.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_player.cpp"), Object(NonMatching, "d/actor/d_a_player_main.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_player_npc.cpp"), + Object(Matching, "d/actor/d_a_player_npc.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_sea.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_spc_item01.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_vrbox.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_vrbox2.cpp"), Object(NonMatching, "d/d_auction_screen.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_place_name.cpp"), + Object(Matching, "d/d_place_name.cpp"), Object(NonMatching, "d/d_camera.cpp"), Object(Matching, "d/d_envse.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_file_error.cpp"), @@ -1566,7 +1566,7 @@ config.libs = [ ActorRel(Matching, "d_a_acorn_leaf"), ActorRel(Matching, "d_a_atdoor"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_auction"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_bb"), + ActorRel(Matching, "d_a_bb"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_bdk"), ActorRel(Matching, "d_a_bdkobj"), ActorRel(NonMatching, "d_a_bgn"), @@ -1679,14 +1679,14 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_Vds"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_Vteng"), ActorRel(NonMatching, "d_a_obj_YLzou"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_Yboil"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_adnno"), + ActorRel(Matching, "d_a_obj_Yboil"), + ActorRel(Matching, "d_a_obj_adnno"), ActorRel(Matching, "d_a_obj_ajav"), ActorRel(Matching, "d_a_obj_apzl"), ActorRel(NonMatching, "d_a_obj_ashut"), ActorRel(Matching, "d_a_obj_auzu"), ActorRel(NonMatching, "d_a_obj_buoyflag"), - ActorRel(Matching, "d_a_obj_buoyrace"), + ActorRel(Matching, "d_a_obj_buoyrace"), ActorRel(Matching, "d_a_obj_correct"), ActorRel(Matching, "d_a_obj_dmgroom"), ActorRel(Matching, "d_a_obj_dragonhead"), @@ -1725,7 +1725,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_kanoke"), ActorRel(Matching, "d_a_obj_ladder"), ActorRel(NonMatching, "d_a_obj_light"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_mkie"), + ActorRel(Matching, "d_a_obj_mkie"), ActorRel(Matching, "d_a_obj_mkiek"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_mknjd"), ActorRel(NonMatching, "d_a_obj_mmrr"), diff --git a/include/SSystem/SComponent/c_bg_w.h b/include/SSystem/SComponent/c_bg_w.h index 113f6af14..9726b5fd6 100644 --- a/include/SSystem/SComponent/c_bg_w.h +++ b/include/SSystem/SComponent/c_bg_w.h @@ -281,7 +281,7 @@ inline bool cBgW_CheckBRoof(f32 ny) { return ny < (-4.0f / 5.0f); } -inline bool cBgW_CheckBWall(float y) { +inline bool cBgW_CheckBWall(f32 y) { if (!cBgW_CheckBGround(y) && !cBgW_CheckBRoof(y)) return true; return false; diff --git a/include/d/actor/d_a_npc_so.h b/include/d/actor/d_a_npc_so.h index ecd51d54c..36b0b10fd 100644 --- a/include/d/actor/d_a_npc_so.h +++ b/include/d/actor/d_a_npc_so.h @@ -131,7 +131,11 @@ public: public: /* Place member variables here */ +#if VERSION == VERSION_DEMO + /* 0x290 */ u8 m290[0xB70 - 0x290]; +#else /* 0x290 */ u8 m290[0xB78 - 0x290]; +#endif /* 0xB78 */ int mB78; }; diff --git a/include/d/actor/d_a_obj_mkie.h b/include/d/actor/d_a_obj_mkie.h index c20d68275..634a219c0 100644 --- a/include/d/actor/d_a_obj_mkie.h +++ b/include/d/actor/d_a_obj_mkie.h @@ -8,7 +8,6 @@ namespace daObjMkie { class Act_c : public dBgS_MoveBgActor { public: static Mtx M_tmp_mtx; - static u32 prm_make(u8 eventId, int swNo) { return swNo << 0x10 | (eventId | 0x3000); }; void setup(const cXyz* pos) { current.pos = *pos; @@ -21,23 +20,39 @@ public: Vec table[8][3]; }; + const Attr_c& attr() const { return M_attr[mType]; } + enum Prm_e { - PRM_CORRECT_W = 0x01, - PRM_CORRECT_S = 0xc, - PRM_EVID_W = 0x08, - PRM_EVID_S = 0x0, - - PRM_SWSAVE_W = 0x08, - PRM_SWSAVE_S = 0x10, + PRM_EVID_S = 0x00, PRM_TYPE_W = 0x01, PRM_TYPE_S = 0x08, + PRM_CORRECT_W = 0x01, + PRM_CORRECT_S = 0x0C, + +#if VERSION > VERSION_DEMO + // TODO: Come up with a better name for this. + // (It doesn't appear in the debug maps as this parameter was added for retail.) PRM_FLAG_W = 0x01, - PRM_FLAG_S = 0x0d, + PRM_FLAG_S = 0x0D, +#endif + + PRM_SWSAVE_W = 0x08, + PRM_SWSAVE_S = 0x10, }; + static u32 prm_make(u8 eventId, int swNo) { + return + swNo << PRM_SWSAVE_S | ( + true << PRM_CORRECT_S | +#if VERSION > VERSION_DEMO + true << PRM_FLAG_S | +#endif + eventId << PRM_EVID_S + ); + } BOOL prm_get_correct() const { return daObj::PrmAbstract(this, PRM_CORRECT_W, PRM_CORRECT_S); } u8 prm_get_evId() const { return daObj::PrmAbstract(this, PRM_EVID_W, PRM_EVID_S); } int prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_SWSAVE_W, PRM_SWSAVE_S); } diff --git a/include/d/actor/d_a_obj_movebox.h b/include/d/actor/d_a_obj_movebox.h index 0342b92b2..e151c1447 100644 --- a/include/d/actor/d_a_obj_movebox.h +++ b/include/d/actor/d_a_obj_movebox.h @@ -166,17 +166,17 @@ namespace daObjMovebox { inline cPhs_State Mthd_Create(); inline BOOL Mthd_Delete(); - s32 prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_W, PRM_TYPE_S); } - s32 prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_SWSAVE_W, PRM_SWSAVE_S); } - s32 prm_get_swSave1() const; - s32 prmZ_get_swSave2() const { return mType == TYPE_BLACK_BOX_WITH_MKIE ? 0xFF : (u8)(mPrmZ >> 8); } - s32 prmZ_get_swSave2_MkieB() const { return mType == TYPE_BLACK_BOX_WITH_MKIE ? (u8)(mPrmZ >> 8) : 0xFF; } - s32 prmZ_get_pathId() const { return mType == TYPE_BLACK_BOX_WITH_MKIE ? 0xFF : (mPrmZ & 0x00FF) >> 0; } - s32 prmX_get_evId() const { return (mPrmX & 0x00FF) >> 0; } - s32 prm_get_itemNo() const { return daObj::PrmAbstract(this, PRM_ITEMNO_W, PRM_ITEMNO_S); } - s32 prm_get_itemSave() const { return daObj::PrmAbstract(this, PRM_ITEMSAVE_W, PRM_ITEMSAVE_S); } - s32 prm_get_dmy() const { return daObj::PrmAbstract(this, PRM_DMY_W, PRM_DMY_S); } - s32 prm_get_buoy() const { return daObj::PrmAbstract(this, PRM_BUOY_W, PRM_BUOY_S); } + int prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_W, PRM_TYPE_S); } + int prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_SWSAVE_W, PRM_SWSAVE_S); } + int prm_get_swSave1() const; + int prmZ_get_swSave2() const { return mType == TYPE_BLACK_BOX_WITH_MKIE ? 0xFF : (u8)(mPrmZ >> 8); } + int prmZ_get_swSave2_MkieB() const { return mType == TYPE_BLACK_BOX_WITH_MKIE ? (u8)(mPrmZ >> 8) : 0xFF; } + int prmZ_get_pathId() const { return mType == TYPE_BLACK_BOX_WITH_MKIE ? 0xFF : (mPrmZ & 0x00FF) >> 0; } + int prmX_get_evId() const { return (mPrmX & 0x00FF) >> 0; } + int prm_get_itemNo() const { return daObj::PrmAbstract(this, PRM_ITEMNO_W, PRM_ITEMNO_S); } + int prm_get_itemSave() const { return daObj::PrmAbstract(this, PRM_ITEMSAVE_W, PRM_ITEMSAVE_S); } + int prm_get_dmy() const { return daObj::PrmAbstract(this, PRM_DMY_W, PRM_DMY_S); } + int prm_get_buoy() const { return daObj::PrmAbstract(this, PRM_BUOY_W, PRM_BUOY_S); } BOOL is_switch1() const { return fopAcM_isSwitch(const_cast(this), prm_get_swSave1()); }; BOOL is_switch2() const { return fopAcM_isSwitch(const_cast(this), prmZ_get_swSave2()); }; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 623d97b97..436274f85 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -232,7 +232,9 @@ public: daPyRFlg0_POISON_CURSE = 0x00100000, daPyRFlg0_LIGHT_REFLECT = 0x00200000, daPyRFlg0_GRAB_PUT_START = 0x00400000, - daPyRFlg0_UNK800000 = 0x00800000, +#if VERSION > VERSION_DEMO + daPyRFlg0_ORIGINAL_HAT_ANIM = 0x00800000, +#endif daPyRFlg0_TACT_INPUT = 0x01000000, daPyRFlg0_FAIRY_USE = 0x02000000, daPyRFlg0_SUBJECT_ACCEPT = 0x04000000, diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index 9fb1d25ca..fd70bd206 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -1080,7 +1080,11 @@ public: int changeSlideProc(); BOOL changeWaitProc(); BOOL changeLandProc(f32); +#if VERSION == VERSION_DEMO + void setDamagePoint(f32); +#else BOOL setDamagePoint(f32); +#endif BOOL checkNormalDamage(int); void setDashDamage(); BOOL checkAtHitEnemy(dCcD_GObjInf*); @@ -1299,8 +1303,8 @@ public: BOOL dProcHoldup(); BOOL dProcOpenTreasure_init(); BOOL dProcOpenTreasure(); - void setGetItemSound(u16, int); #if VERSION > VERSION_DEMO + void setGetItemSound(u16, int); BOOL setGetDemo(); #endif BOOL dProcGetItem_init(); diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index ea42038f0..d2cc0d4a6 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -409,6 +409,9 @@ public: void setItemArrowNumCount(s16 num) { mItemArrowNumCount += num; } void clearItemArrowNumCount() { mItemArrowNumCount = 0; } + int getItemNowMagic() { return mItemNowMagicCount; } + void setItemNowMagic(s16 num) { mItemNowMagicCount = num; } + void setNpcNameMessageID(u32 id) { mNpcNameMessageID = id; } void setItemNameMessageID(u32 id) { mItemNameMessageID = id; } @@ -739,7 +742,7 @@ public: /* 0x48D4 */ s16 mItemKeyNumCount; /* 0x48D6 */ s16 mItemMaxLifeCount; /* 0x48D8 */ s16 mItemMagicCount; - /* 0x48DA */ s16 field_0x48da; + /* 0x48DA */ s16 mItemNowMagicCount; /* 0x48DC */ s16 mItemMaxMagicCount; /* 0x48DE */ s16 mItemPictureNumCount; /* 0x48E0 */ s16 mItemArrowNumCount; @@ -2514,6 +2517,14 @@ inline void dComIfGp_setItemMaxLifeCount(s16 num) { g_dComIfG_gameInfo.play.setItemMaxLifeCount(num); } +inline s16 dComIfGp_getItemNowMagic() { + return g_dComIfG_gameInfo.play.getItemNowMagic(); +} + +inline void dComIfGp_setItemNowMagic(s16 num) { + g_dComIfG_gameInfo.play.setItemNowMagic(num); +} + inline void dComIfGp_setNpcNameMessageID(u32 id) { g_dComIfG_gameInfo.play.setNpcNameMessageID(id); } diff --git a/include/d/d_meter.h b/include/d/d_meter.h index 72721d59b..e88155831 100644 --- a/include/d/d_meter.h +++ b/include/d/d_meter.h @@ -828,8 +828,13 @@ void dMeter_magicGaugeMove(sub_meter_class* i_Meter); void dMeter_flyGaugeMove(sub_meter_class* i_Meter, u8 param_2, s16 param_3, s16 param_4); void dMeter_magicChange(sub_meter_class* i_Meter, f32 param_2); void dMeter_magicLength(sub_meter_class* i_Meter, f32 param_2); +#if VERSION == VERSION_DEMO +void dMeter_magicTrans(sub_meter_class* i_Meter, f32, f32); +void dMeter_magicInitTrans(sub_meter_class* i_Meter, f32, f32); +#else void dMeter_magicTransNowInit(sub_meter_class* i_Meter); void dMeter_magicInitTrans(sub_meter_class* i_Meter); +#endif void dMeter_magicTransScale(sub_meter_class* i_Meter, f32 param_2, f32 param_3, f32 param_4); void dMeter_magicColor(sub_meter_class* i_Meter); void dMeter_magicAlpha(sub_meter_class* i_Meter); diff --git a/include/d/d_place_name.h b/include/d/d_place_name.h index 3abc0464f..db86d707e 100644 --- a/include/d/d_place_name.h +++ b/include/d/d_place_name.h @@ -16,11 +16,13 @@ public: BOOL _closeAnime(); virtual void draw(); - void addCounter() {} - void decCounter() {} - void getCounter() {} - void changeTexture(const ResTIMG*) {} - void deleteScreen() {} + void addCounter() { pane.mUserArea++; } + void decCounter() { pane.mUserArea--; } + s16 getCounter() { return pane.mUserArea; } + void changeTexture(const ResTIMG* image) { + ((J2DPicture*)pane.pane)->changeTexture(image, 0); + } + void deleteScreen() { delete scrn; } public: /* 0x04 */ J2DScreen * scrn; diff --git a/include/d/d_save.h b/include/d/d_save.h index 50547bf22..7c52b3fad 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -113,6 +113,7 @@ class dSv_player_get_item_c { public: void init(); void onItem(int, u8); + void offItem(int, u8); BOOL isItem(int, u8); void onBottleItem(u8); BOOL isBottleItem(u8); @@ -801,7 +802,7 @@ public: cXyz& getRestartOptionPos() { return mOptionRoomPos; } /* 0x00 */ s8 mRestartRoom; - /* 0x01 */ u8 mOption; + /* 0x01 */ s8 mOption; /* 0x02 */ s8 mOptionRoomNo; /* 0x04 */ s16 mOptionPoint; /* 0x06 */ s16 mOptionRoomAngleY; diff --git a/src/d/actor/d_a_andsw0.cpp b/src/d/actor/d_a_andsw0.cpp index dc96319f9..4472fcd12 100644 --- a/src/d/actor/d_a_andsw0.cpp +++ b/src/d/actor/d_a_andsw0.cpp @@ -325,8 +325,8 @@ static cPhs_State daAndsw0_Create(fopAc_ac_c* ac) { i_this->mBehaviorType = (fopAcM_GetParam(ac) >> 8) & 0xFF; i_this->mSwitchToSet = (fopAcM_GetParam(ac) >> 24) & 0xFF; i_this->mFirstSwitchToCheck = (fopAcM_GetParam(ac) >> 16) & 0xFF; - i_this->mTimer = (i_this->home.angle.z & 0xFF) * 15; - i_this->mEventNo = i_this->home.angle.x; + i_this->mTimer = (ac->home.angle.z & 0xFF) * 15; + i_this->mEventNo = ac->home.angle.x; i_this->mEventIdx = dComIfGp_evmng_getEventIdx(NULL, i_this->mEventNo); if (i_this->mBehaviorType == 2) i_this->mAction = ACT_TIMER; diff --git a/src/d/actor/d_a_bb.cpp b/src/d/actor/d_a_bb.cpp index 20c4562a8..d6a64eec1 100644 --- a/src/d/actor/d_a_bb.cpp +++ b/src/d/actor/d_a_bb.cpp @@ -1340,7 +1340,8 @@ void bb_kamome_attack(bb_class* i_this) { /* 000044EC-00005534 .text bb_atack_move__FP8bb_class */ void bb_atack_move(bb_class* i_this) { fopAc_ac_c* a_this = &i_this->actor; - daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + fopAc_ac_c* player_actor = dComIfGp_getPlayer(0); + daPy_py_c* player = (daPy_py_c*)player_actor; s8 r29 = 0; s8 r28 = 0; f32 x; @@ -1363,7 +1364,7 @@ void bb_atack_move(bb_class* i_this) { } if ( - &player->base.base == fpcM_Search(pl_name_check, i_this) + player_actor == (fopAc_ac_c*)fpcM_Search(pl_name_check, i_this) #if VERSION == VERSION_DEMO || l_bbHIO.unk_10 != 0 #endif @@ -1383,7 +1384,7 @@ void bb_atack_move(bb_class* i_this) { case 1: case 2: - i_this->unk_2F4 = player->current.pos; + i_this->unk_2F4 = player_actor->current.pos; i_this->unk_2F4.y += 200.0f; bb_pos_move(i_this); @@ -1459,9 +1460,9 @@ void bb_atack_move(bb_class* i_this) { } if (i_this->unk_318[0] == 0) { - i_this->unk_2F4.x = player->current.pos.x + cM_rndFX(400.0f); - i_this->unk_2F4.y = player->current.pos.y + 100.0f + cM_rndF(200.0f); - i_this->unk_2F4.z = player->current.pos.z + cM_rndFX(400.0f); + i_this->unk_2F4.x = player_actor->current.pos.x + cM_rndFX(400.0f); + i_this->unk_2F4.y = player_actor->current.pos.y + 100.0f + cM_rndF(200.0f); + i_this->unk_2F4.z = player_actor->current.pos.z + cM_rndFX(400.0f); i_this->unk_318[0] = cM_rndF(100.0f) + 20.0f; i_this->unk_308 = 0.0f; i_this->unk_30C = 0.0f; @@ -1485,7 +1486,7 @@ void bb_atack_move(bb_class* i_this) { z = cM_scos(i_this->unk_354 * (REG0_S(4) + 1500)) * 200.0f; cLib_addCalc2(&a_this->current.pos.x, i_this->unk_2F4.x + x, 0.1f, i_this->unk_308 * 30.0f); - cLib_addCalc2(&a_this->current.pos.y, player->current.pos.y + 175.0f, 0.1f, i_this->unk_308 * 30.0f); + cLib_addCalc2(&a_this->current.pos.y, player_actor->current.pos.y + 175.0f, 0.1f, i_this->unk_308 * 30.0f); cLib_addCalc2(&a_this->current.pos.z, i_this->unk_2F4.z + z, 0.1f, i_this->unk_308 * 30.0f); cLib_addCalc2(&i_this->unk_308, l_bbHIO.unk_1C, 1.0f, l_bbHIO.unk_1C * 0.1f); @@ -1496,9 +1497,9 @@ void bb_atack_move(bb_class* i_this) { i_this->unk_2F1 = 6; anm_init(i_this, BB_BCK_ATACK01, 2.0f, 0, l_bbHIO.unk_2C, BB_BAS_ATACK01); - i_this->unk_2F4.x = player->current.pos.x; - i_this->unk_2F4.y = player->current.pos.y + 100.0f; - i_this->unk_2F4.z = player->current.pos.z; + i_this->unk_2F4.x = player_actor->current.pos.x; + i_this->unk_2F4.y = player_actor->current.pos.y + 100.0f; + i_this->unk_2F4.z = player_actor->current.pos.z; i_this->unk_308 = 0.0f; i_this->unk_30C = 0.0f; @@ -1616,7 +1617,7 @@ void bb_atack_move(bb_class* i_this) { anm_init(i_this, BB_BCK_FLY02, REG0_F(0) + 12.0f, 2, 1.0f, BB_BAS_FLY02); a_this->speedF = 0.0f; - i_this->unk_2F4.y = player->current.pos.y + 500.0f; + i_this->unk_2F4.y = player_actor->current.pos.y + 500.0f; i_this->unk_318[3] = cM_rndF(200.0f) + 300.0f; } i_this->unk_308 = 0.0f; diff --git a/src/d/actor/d_a_bk.cpp b/src/d/actor/d_a_bk.cpp index 94110d9d2..70e56b5e2 100644 --- a/src/d/actor/d_a_bk.cpp +++ b/src/d/actor/d_a_bk.cpp @@ -4808,7 +4808,7 @@ static cPhs_State daBk_Create(fopAc_ac_c* i_actor) { J3DModel* model = i_this->mpMorf->getModel(); for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) { - s32 r3 = joint_check[i]; + s32 r3 = (s8)joint_check[i]; if (r3 < 0) { continue; } diff --git a/src/d/actor/d_a_npc_people.cpp b/src/d/actor/d_a_npc_people.cpp index 1531c33c4..1e8c8d28a 100644 --- a/src/d/actor/d_a_npc_people.cpp +++ b/src/d/actor/d_a_npc_people.cpp @@ -4207,7 +4207,7 @@ static BOOL daNpc_People_nodeCallBack(J3DNode* node, int calcTiming) { daNpcPeople_c* i_this = (daNpcPeople_c*)model->getUserArea(); s32 jntNo = joint->getJntNo(); - cMtx_copy(model->getAnmMtx(jntNo), *calc_mtx); + MTXCopy(model->getAnmMtx(jntNo), *calc_mtx); if(jntNo == i_this->m_jnt.getHeadJntNum()) { mDoMtx_XrotM(*calc_mtx, i_this->m_jnt.getHead_y()); @@ -4219,7 +4219,7 @@ static BOOL daNpc_People_nodeCallBack(J3DNode* node, int calcTiming) { } model->setAnmMtx(jntNo, *calc_mtx); - cMtx_copy(*calc_mtx, j3dSys.mCurrentMtx); + MTXCopy(*calc_mtx, j3dSys.mCurrentMtx); } return true; diff --git a/src/d/actor/d_a_npc_roten.cpp b/src/d/actor/d_a_npc_roten.cpp index f82eb877a..ffa4df1b0 100644 --- a/src/d/actor/d_a_npc_roten.cpp +++ b/src/d/actor/d_a_npc_roten.cpp @@ -1575,7 +1575,9 @@ daNpcRoten_c::daNpcRoten_c() { field_0x9C9 = 0; field_0x9CA = 0; field_0x6FC = fpcM_ERROR_PROCESS_ID_e; +#if VERSION > VERSION_DEMO field_0x994 = -1.0f; +#endif } /* 000007B4-000008CC .text daNpc_Roten_nodeCallBack__FP7J3DNodei */ @@ -1586,7 +1588,8 @@ static BOOL daNpc_Roten_nodeCallBack(J3DNode* node, int calcTiming) { daNpcRoten_c* i_this = (daNpcRoten_c*)model->getUserArea(); s32 jntNo = joint->getJntNo(); - cMtx_copy(model->getAnmMtx(jntNo), *calc_mtx); + MtxP mtx = model->getAnmMtx(jntNo); + cMtx_copy(mtx, *calc_mtx); if(jntNo == i_this->m_jnt.getHeadJntNum()) { mDoMtx_XrotM(*calc_mtx, i_this->m_jnt.getHead_y()); @@ -1627,11 +1630,13 @@ static cPhs_State phase_1(daNpcRoten_c* i_this) { static cPhs_State phase_2(daNpcRoten_c* i_this) { cPhs_State result = dComIfG_resLoad(i_this->getPhaseP(), l_arcname_tbl[i_this->getPrmNpcNo()]); if(result == cPhs_COMPLEATE_e) { - if(fopAcM_entrySolidHeap(i_this, CheckCreateHeap, 0x4620)) { + if(fopAcM_entrySolidHeap(i_this, CheckCreateHeap, DEMO_SELECT(0, 0x4620))) { result = i_this->createInit(); } else { +#if VERSION > VERSION_DEMO i_this->mpMorf = NULL; +#endif return cPhs_ERROR_e; } } @@ -2222,7 +2227,8 @@ void daNpcRoten_c::privateCut() { daDitem_c* pItem; if (fopAcM_SearchByID(field_0x6F8, (fopAc_ac_c**)&pItem) && pItem) { if(field_0x9C0 == 7 && (s16)mpMorf->getFrame() >= 0x3C) { - cMtx_copy(mpMorf->getModel()->getAnmMtx(m_hand_L_jnt_num), *calc_mtx); + MtxP mtx = mpMorf->getModel()->getAnmMtx(m_hand_L_jnt_num); + cMtx_copy(mtx, *calc_mtx); mDoMtx_stack_c::transS(20.0f, -30.0f, -30.0f); cMtx_concat(*calc_mtx, mDoMtx_stack_c::get(), *calc_mtx); @@ -2407,8 +2413,10 @@ u16 daNpcRoten_c::next_msgStatus(u32* pMsgNo) { dComIfGp_setItemRupeeCount(-dComIfGp_getMessageRupee()); u8 temp = l_item_dat[mNpcNo][field_0x9BE]; - u8 temp2 = dComIfGs_getEventReg(l_save_dat[mNpcNo].field_0x02); - dComIfGs_setEventReg(l_save_dat[mNpcNo].field_0x02, temp2 + 1); + dComIfGs_setEventReg( + l_save_dat[mNpcNo].field_0x02, + dComIfGs_getEventReg(l_save_dat[mNpcNo].field_0x02) + 1 + ); if(dComIfGs_isGetItemReserve(temp)) { *pMsgNo = l_msg_xy_koukan_end[mNpcNo]; field_0x9B2 |= 0x40; diff --git a/src/d/actor/d_a_obj_Yboil.cpp b/src/d/actor/d_a_obj_Yboil.cpp index 00a8ae86e..2840466ad 100644 --- a/src/d/actor/d_a_obj_Yboil.cpp +++ b/src/d/actor/d_a_obj_Yboil.cpp @@ -66,10 +66,10 @@ void daObjYboil_c::CreateInit() { fopAcM_SetMtx(this, mModel[i]->getBaseTRMtx()); fopAcM_setCullSizeBox(this, -3000.0f, -0.0f, -3000.0f, 3000.0f, 200.0f, 3000.0f); fopAcM_setCullSizeFar(this, 1.0f); - f32 frame = cM_rndF(29.9999f); - mBckAnm[i].setFrame((s32)frame); - mBtkAnm[i].setFrame((s32)frame); - mBrkAnm[i].setFrame((s32)frame); + int frame = cM_rndF(29.9999f); + mBckAnm[i].setFrame(frame); + mBtkAnm[i].setFrame(frame); + mBrkAnm[i].setFrame(frame); mMdlTimer[i] = 0; } set_mtx(); @@ -105,7 +105,7 @@ cPhs_State daObjYboil_c::_create() { bool daObjYboil_c::_delete() { if (fpcM_CreateResult(this) != cPhs_STOP_e) { - dComIfG_resDelete(&mPhs, "Yboil"); + dComIfG_resDeleteDemo(&mPhs, "Yboil"); } return true; } diff --git a/src/d/actor/d_a_obj_adnno.cpp b/src/d/actor/d_a_obj_adnno.cpp index acd4e860b..f9fd0c3d5 100644 --- a/src/d/actor/d_a_obj_adnno.cpp +++ b/src/d/actor/d_a_obj_adnno.cpp @@ -42,7 +42,7 @@ static BOOL CheckCreateHeap(fopAc_ac_c* i_this) { /* 00000098-00000178 .text CreateHeap__12daObjAdnno_cFv */ BOOL daObjAdnno_c::CreateHeap() { J3DModelData* modelData = (J3DModelData*)(dComIfG_getObjectRes("Adnno", ADNNO_BDL_ADNNO)); - JUT_ASSERT(0x5c, modelData != NULL); + JUT_ASSERT(DEMO_SELECT(91, 92), modelData != NULL); for (s32 i = 0; i < 16; i++) { mpModel[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x37441422); if (!mpModel[i]) @@ -67,11 +67,9 @@ void daObjAdnno_c::set_mtx() { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(current.angle.y); - int x = i % 4; - int y = i / 4; mDoMtx_stack_c::transM( - x * 40.0f - 60.0f, - 60.0f - y * 40.0f, + (int)(i % 4) * 40.0f - 60.0f, + 60.0f - (int)(i / 4) * 40.0f, 0.0f ); mpModel[i]->setBaseTRMtx(mDoMtx_stack_c::get()); @@ -95,7 +93,7 @@ cPhs_State daObjAdnno_c::_create() { } bool daObjAdnno_c::_delete() { - dComIfG_resDelete(&mPhs, "Adnno"); + dComIfG_resDeleteDemo(&mPhs, "Adnno"); return true; } @@ -127,8 +125,10 @@ bool daObjAdnno_c::_draw() { dComIfGd_setListBG(); for (s32 i = 0; i < 16; i++) { if (dComIfGs_isEventBit(daObjAdnno_event_bit_table[i])) { - J3DMaterialTable* pBmt = (J3DMaterialTable*)dComIfG_getObjectRes("Adnno", daObjAdnno_bmt_table[i]); - mpModel[i]->getModelData()->setMaterialTable(pBmt, J3DMatCopyFlag_All); + mpModel[i]->getModelData()->setMaterialTable( + (J3DMaterialTable*)dComIfG_getObjectRes("Adnno", daObjAdnno_bmt_table[i]), + J3DMatCopyFlag_All + ); mDoExt_modelUpdateDL(mpModel[i]); } } diff --git a/src/d/actor/d_a_obj_ferris.cpp b/src/d/actor/d_a_obj_ferris.cpp index 6ab38b3a4..47993f0f2 100644 --- a/src/d/actor/d_a_obj_ferris.cpp +++ b/src/d/actor/d_a_obj_ferris.cpp @@ -495,8 +495,10 @@ void daObjFerris::Act_c::make_lean() { delta.normalizeRS(); f32 z = -delta.z; - f32 h = std::fabsf(-(z * pt0.x + delta.x * pt0.z) + (z * mRidePos.x + delta.x * mRidePos.z)) / 162.0f; - if (delta.x * delta2.z - delta.z * delta2.x < 0.0f) { + f32 h = std::fabsf(-(z * pt0.x + delta.x * pt0.z) + (z * mRidePos.x + delta.x * mRidePos.z)); + f32 temp = delta.x * delta2.z - delta.z * delta2.x; + h /= 162.0f; + if (temp < 0.0f) { mRideWaveTarget[i] = h * 550.0f; } else { mRideWaveTarget[i] = h * -550.0f; diff --git a/src/d/actor/d_a_obj_mkie.cpp b/src/d/actor/d_a_obj_mkie.cpp index 78a50ede1..41467a197 100644 --- a/src/d/actor/d_a_obj_mkie.cpp +++ b/src/d/actor/d_a_obj_mkie.cpp @@ -126,15 +126,15 @@ const daObjMkie::Act_c::Attr_c daObjMkie::Act_c::M_attr[2] = { /* 00000078-00000250 .text CreateHeap__Q29daObjMkie5Act_cFv */ BOOL daObjMkie::Act_c::CreateHeap() { J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(M_arcname, MKIEB_BDL_MKIEB); - JUT_ASSERT(0x192, model_data != NULL); + JUT_ASSERT(DEMO_SELECT(395, 402), model_data != NULL); mModelBase = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000022); J3DModelData* model_data_van = (J3DModelData*)dComIfG_getObjectRes(M_arcname, MKIEB_BDL_YLSMF00); - JUT_ASSERT(0x19b, model_data_van != NULL); + JUT_ASSERT(DEMO_SELECT(404, 411), model_data_van != NULL); mModelVan = mDoExt_J3DModel__create(model_data_van, 0x80000, 0x11000022); J3DAnmTevRegKey* brk_van = (J3DAnmTevRegKey*)dComIfG_getObjectRes(M_arcname, MKIEB_BRK_YLSMF00); - JUT_ASSERT(0x1a5, brk_van != NULL); + JUT_ASSERT(DEMO_SELECT(414, 421), brk_van != NULL); int init = mBrkVan.init(model_data_van, brk_van, true, J3DFrameCtrl::EMode_NONE); bool ret = false; @@ -160,9 +160,9 @@ void daObjMkie::Act_c::set_cc_pos() { for (int i = 0; i < 8; i++) { Vec src[3]; Vec dst[3]; - src[0] = M_attr[mType].table[i][0]; - src[1] = M_attr[mType].table[i][1]; - src[2] = M_attr[mType].table[i][2]; + src[0] = attr().table[i][0]; + src[1] = attr().table[i][1]; + src[2] = attr().table[i][2]; mDoMtx_multVecArray(mModelBase->getBaseTRMtx(), src, dst, 3); mTri[i].setPos(&dst[0], &dst[1], &dst[2]); } @@ -173,28 +173,33 @@ BOOL daObjMkie::Act_c::Create() { fopAcM_SetMtx(this, mModelBase->getBaseTRMtx()); init_mtx(); { - const Attr_c* mAttrPtr = M_attr + mType; - float initialScale = mAttrPtr->mScale; fopAcM_setCullSizeBox( - this, initialScale * -80.0f, initialScale * -1.0f, initialScale * -80.0f, initialScale * 80.0f, initialScale * 230.0f, initialScale * 80.0f + this, + attr().mScale * -80.0f, + attr().mScale * -1.0f, + attr().mScale * -80.0f, + attr().mScale * 80.0f, + attr().mScale * 230.0f, + attr().mScale * 80.0f ); } init_cc(); +#if VERSION > VERSION_DEMO if (daObj::PrmAbstract(this, PRM_FLAG_W, PRM_FLAG_S) != 0) { actor_status &= ~0x3F; gbaName = 0; } +#endif mCcInit = false; mBaseAnmPlaying = false; { - const Attr_c* mAttrPtr = M_attr + mType; - attention_info.position.y = current.pos.y + mAttrPtr->mScale * 130.0f; + attention_info.position.y = current.pos.y + attr().mScale * 130.0f; } eyePos = attention_info.position; - mEvtIdx = dComIfGp_evmng_getEventIdx(M_attr[mType].name, prm_get_evId()); + mEvtIdx = dComIfGp_evmng_getEventIdx(attr().name, prm_get_evId()); return true; } @@ -205,11 +210,10 @@ cPhs_State daObjMkie::Act_c::Mthd_Create() { mSwitch = !fopAcM_isSwitch(this, prm_get_swSave()); if (mSwitch && (phase_state = dComIfG_resLoad(&mPhs, M_arcname), phase_state == cPhs_COMPLEATE_e)) { mType = prm_get_type(); - const Attr_c* mAttrPtr = M_attr + mType; - float initialScale = mAttrPtr->mScale; + float initialScale = attr().mScale; scale.setall(initialScale); - phase_state = MoveBGCreate(M_arcname, MKIEB_DZB_MKIEB, dBgS_MoveBGProc_Trans, 0x1b20); - JUT_ASSERT(0x216, (phase_state == cPhs_COMPLEATE_e) || (phase_state == cPhs_ERROR_e)); + phase_state = MoveBGCreate(M_arcname, MKIEB_DZB_MKIEB, dBgS_MoveBGProc_Trans, DEMO_SELECT(0x10000, 0x1B20)); + JUT_ASSERT(DEMO_SELECT(521, 534), (phase_state == cPhs_COMPLEATE_e) || (phase_state == cPhs_ERROR_e)); } return phase_state; } @@ -224,7 +228,7 @@ BOOL daObjMkie::Act_c::Mthd_Delete() { BOOL ret = true; if (mSwitch != false) { ret = MoveBGDelete(); - dComIfG_resDelete(&mPhs, M_arcname); + dComIfG_resDeleteDemo(&mPhs, M_arcname); } return ret; } @@ -397,8 +401,7 @@ void daObjMkie::Act_c::mode_proc_call() { /* 000013DC-000014A0 .text Execute__Q29daObjMkie5Act_cFPPA3_A4_f */ BOOL daObjMkie::Act_c::Execute(Mtx** pMtx) { attention_info.position.x = current.pos.x; - const Attr_c* mAttrPtr = M_attr + mType; - attention_info.position.y = current.pos.y + mAttrPtr->mScale * 130.0f; + attention_info.position.y = current.pos.y + attr().mScale * 130.0f; attention_info.position.z = current.pos.z; eyePos = attention_info.position; @@ -415,13 +418,8 @@ BOOL daObjMkie::Act_c::Execute(Mtx** pMtx) { /* 000014A0-000015B8 .text Draw__Q29daObjMkie5Act_cFv */ BOOL daObjMkie::Act_c::Draw() { if (!mBaseAnmPlaying) { - bool flagVan = false; - if (mModeProc == 2) { - if (mTimer == 0) { - flagVan = true; - } - } - g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + bool flagVan = mModeProc == 2 && mTimer == 0; + g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr); if (flagVan) { g_env_light.setLightTevColorType(mModelVan, &tevStr); J3DModelData* modelData = mModelVan->getModelData(); diff --git a/src/d/actor/d_a_obj_movebox.cpp b/src/d/actor/d_a_obj_movebox.cpp index 0037dec24..32086359f 100644 --- a/src/d/actor/d_a_obj_movebox.cpp +++ b/src/d/actor/d_a_obj_movebox.cpp @@ -91,9 +91,9 @@ namespace daObjMovebox { } BOOL Act_c::Mthd_Delete() { - s32 result = MoveBGDelete(); + BOOL result = MoveBGDelete(); if (mbShouldAppear) { - dComIfG_resDelete(&mPhs, M_arcname[mType]); + dComIfG_resDeleteDemo(&mPhs, M_arcname[mType]); } return result; } @@ -283,7 +283,8 @@ namespace daObjMovebox { bool Bgc_c::chk_wall_touch2(const Act_c* movebox, const BgcSrc_c* bgcSrc, int bgcSrcCount, s16 dirAngle) { bool touch = false; for (int i = 0; i < bgcSrcCount; i++) { - if (chk_wall_touch(movebox, &bgcSrc[i], dirAngle)) { + const BgcSrc_c* currBgcSrc = &bgcSrc[i]; + if (chk_wall_touch(movebox, currBgcSrc, dirAngle)) { touch = true; break; } @@ -368,7 +369,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ KKIBA_00_BDL_KKIBA_00, /* mDZBFileIndex */ KKIBA_00_DZB_KKIBA_00, - /* mDZBHeapSize */ 0x8A0, + /* mDZBHeapSize */ DEMO_SELECT(0x1620, 0x8A0), /* mScaleY */ 150.0f, /* m68 */ 150.0f, /* m6C */ 1.0f/150.0f, @@ -419,7 +420,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ OSIBLK_BDL_OBM_OSIHIKIBLK1, /* mDZBFileIndex */ OSIBLK_DZB_OBM_OSIHIKIBLK1, - /* mDZBHeapSize */ 0x8A0, + /* mDZBHeapSize */ DEMO_SELECT(0x1620, 0x8A0), /* mScaleY */ 150.0f, /* m68 */ 150.0f, /* m6C */ 1.0f/150.0f, @@ -471,7 +472,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ OSIBLK_BDL_OBM_OSIHIKIBLK2, /* mDZBFileIndex */ OSIBLK_DZB_OBM_OSIHIKIBLK2, - /* mDZBHeapSize */ 0x1560, + /* mDZBHeapSize */ DEMO_SELECT(0x8000, 0x1560), /* mScaleY */ 150.0f, /* m68 */ 300.0f, /* m6C */ 1.0f/300.0f, @@ -522,7 +523,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ MPWRB_BDL_MPWRB, /* mDZBFileIndex */ MPWRB_DZB_MPWRB, - /* mDZBHeapSize */ 0x8A0, + /* mDZBHeapSize */ DEMO_SELECT(0x8000, 0x8A0), /* mScaleY */ 300.0f, /* m68 */ 300.0f, /* m6C */ 1.0f/300.0f, @@ -624,7 +625,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ HBOX2_BDL_HBOX2, /* mDZBFileIndex */ HBOX2_DZB_HBOX2, - /* mDZBHeapSize */ 0x8A0, + /* mDZBHeapSize */ DEMO_SELECT(0x8000, 0x8A0), /* mScaleY */ 150.0f, /* m68 */ 150.0f, /* m6C */ 1.0f/150.0f, @@ -675,7 +676,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ HJUMP_BDL_HBOX1, /* mDZBFileIndex */ HJUMP_DZB_HBOX1, - /* mDZBHeapSize */ 0x7E0, + /* mDZBHeapSize */ DEMO_SELECT(0x8000, 0x7E0), /* mScaleY */ 150.0f, /* m68 */ 150.0f, /* m6C */ 1.0f/150.0f, @@ -726,7 +727,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ -1, /* mDZBFileIndex */ HJUMP_DZB_HJUMP1A, - /* mDZBHeapSize */ 0x320, + /* mDZBHeapSize */ DEMO_SELECT(0x8000, 0x320), /* mScaleY */ 150.0f, /* m68 */ 300.0f, /* m6C */ 1.0f/300.0f, @@ -879,7 +880,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ -1, /* mDZBFileIndex */ MMIRROR_DZB_MMRR, - /* mDZBHeapSize */ 0xD40, + /* mDZBHeapSize */ DEMO_SELECT(0x8000, 0xD40), /* mScaleY */ 300.0f, /* m68 */ 450.0f, /* m6C */ 1.0f/450.0f, @@ -930,7 +931,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ OSIBLK_BDL_OBM_OSIHIKIBLK1, /* mDZBFileIndex */ OSIBLK_DZB_OBM_OSIHIKIBLK1, - /* mDZBHeapSize */ 0x8A0, + /* mDZBHeapSize */ DEMO_SELECT(0x1620, 0x8A0), /* mScaleY */ 150.0f, /* m68 */ 350.0f, /* m6C */ 1.0f/350.0f, @@ -981,7 +982,7 @@ namespace daObjMovebox { /* m54 */ 0.075f, /* mModelFileIndex */ ECUBE_BDL_ECUBE, /* mDZBFileIndex */ ECUBE_DZB_ECUBE, - /* mDZBHeapSize */ 0x8A0, + /* mDZBHeapSize */ DEMO_SELECT(0x8000, 0x8A0), /* mScaleY */ 150.0f, /* m68 */ 150.0f, /* m6C */ 1.0f/150.0f, @@ -1014,7 +1015,7 @@ namespace daObjMovebox { } /* 000012E0-00001308 .text prm_get_swSave1__Q212daObjMovebox5Act_cCFv */ - s32 Act_c::prm_get_swSave1() const { + int Act_c::prm_get_swSave1() const { return prm_get_swSave(); } @@ -1025,7 +1026,7 @@ namespace daObjMovebox { } mbPrmZInitialized = true; - s32 switchEnablesSpawn = prm_get_dmy(); + int switchEnablesSpawn = prm_get_dmy(); if (switchEnablesSpawn) { // The appearing/disappearing type of box does not take pathId or swSave2 params. mPrmZ = 0xFFFF; @@ -1105,13 +1106,12 @@ namespace daObjMovebox { } else { cXyz buoyOffset(0.0f, attr()->m68 - 5.0f, 0.0f); cXyz buoyOffsetSR; - MtxP mtx = mDoMtx_stack_c::get(); - cMtx_multVecSR(mtx, &buoyOffset, &buoyOffsetSR); - mtx[0][3] += buoyOffsetSR.x; - mtx[1][3] += buoyOffsetSR.y; - mtx[2][3] += buoyOffsetSR.z; + cMtx_multVecSR(mDoMtx_stack_c::get(), &buoyOffset, &buoyOffsetSR); + mDoMtx_stack_c::get()[0][3] += buoyOffsetSR.x; + mDoMtx_stack_c::get()[1][3] += buoyOffsetSR.y; + mDoMtx_stack_c::get()[2][3] += buoyOffsetSR.z; daObjBuoyflag::Act_c* buoyflag = (daObjBuoyflag::Act_c*)childActor; - buoyflag->setup(mtx); + buoyflag->setup(mDoMtx_stack_c::get()); } } else { mChildPID = fpcM_ERROR_PROCESS_ID_e; @@ -1129,14 +1129,14 @@ namespace daObjMovebox { /* 000016B8-00001830 .text path_init__Q212daObjMovebox5Act_cFv */ void Act_c::path_init() { // Load the position the box was last left pushed to based on the path and switch(es). - s32 pathId = prmZ_get_pathId(); - s32 swSave1 = prm_get_swSave1(); + int pathId = prmZ_get_pathId(); + int swSave1 = prm_get_swSave1(); if (pathId != 0xFF && swSave1 != 0xFF) { - s32 swSave2 = prmZ_get_swSave2(); + int swSave2 = prmZ_get_swSave2(); bool isMoved1 = is_switch1(); u32 isMoved2 = false; - if (0xFF == swSave2) { // Literal must be on the left hand side for a match + if (swSave2 == 0xFF) { isMoved2 = false; } else { isMoved2 = is_switch2(); @@ -1144,7 +1144,7 @@ namespace daObjMovebox { } isMoved2 = !!isMoved2; - s32 pntIdx = 0; + int pntIdx = 0; if (isMoved1 != false) { pntIdx = 1; } @@ -1152,7 +1152,7 @@ namespace daObjMovebox { pntIdx += 2; } - mpPath = dPath_GetRoomPath(pathId, home.roomNo); + mpPath = dPath_GetRoomPath(pathId, fopAcM_GetHomeRoomNo(this)); dPnt* pnt = dPath_GetPnt(mpPath, pntIdx); home.pos = pnt->m_position; current.pos = pnt->m_position; @@ -1163,13 +1163,13 @@ namespace daObjMovebox { void Act_c::path_save() { // Determine how far along the path the box has been pushed and save the position to the switch(es). // Supports up to 4 possible path points. - s32 pathId = prmZ_get_pathId(); - s32 swSave1 = prm_get_swSave1(); + int pathId = prmZ_get_pathId(); + int swSave1 = prm_get_swSave1(); if (pathId != 0xFF && swSave1 != 0xFF) { - s32 swSave2 = prmZ_get_swSave2(); + int swSave2 = prmZ_get_swSave2(); - s32 numPnts; - if (0xFF == swSave2) { // Literal must be on the left hand side for a match + int numPnts; + if (swSave2 == 0xFF) { numPnts = 2; } else { numPnts = 4; @@ -1178,7 +1178,7 @@ namespace daObjMovebox { numPnts = mpPath->m_num; } - s32 pntIdx; + int pntIdx; for (pntIdx = 0; pntIdx < numPnts; pntIdx++) { cXyz pntPos = dPath_GetPnt(mpPath, pntIdx)->m_position; if (current.pos.abs2(pntPos) < SQUARE(3.0f)) { @@ -1345,7 +1345,7 @@ namespace daObjMovebox { cLib_offBit(mBgc.mStateFlags, static_cast(Bgc_c::BgcState_JUST_LEFT_GROUND_e | Bgc_c::BgcState_JUST_HIT_GROUND_e | Bgc_c::BgcState_JUST_HIT_WATER_e)); m64F = true; - mReverb = dComIfGp_getReverb(fopAcM_GetHomeRoomNo(this)); + mReverb = dComIfGp_getReverb(home.roomNo); mChildPID = fpcM_ERROR_PROCESS_ID_e; if (prm_get_buoy() == 0) { @@ -1476,7 +1476,7 @@ namespace daObjMovebox { /* 0000268C-00002768 .text chk_appear__Q212daObjMovebox5Act_cCFv */ bool Act_c::chk_appear() const { // Boxes that do not have a path to save their position instead use swSave1 to enable or disable spawning. - s32 pathId = prmZ_get_pathId(); + int pathId = prmZ_get_pathId(); int sw = prm_get_swSave1(); if (pathId != 0xFF || sw == 0xFF) { return TRUE; @@ -1702,8 +1702,8 @@ namespace daObjMovebox { /* 000033D8-00003450 .text make_item__Q212daObjMovebox5Act_cFv */ void Act_c::make_item() { - s32 itemTableNo = prm_get_itemNo(); - s32 itemBitNo = prm_get_itemSave(); + int itemTableNo = prm_get_itemNo(); + int itemBitNo = prm_get_itemSave(); fopAcM_createItemFromTable( ¤t.pos, itemTableNo, itemBitNo, fopAcM_GetHomeRoomNo(this), daItemType_0_e, @@ -1734,7 +1734,7 @@ namespace daObjMovebox { gndChk.SetPos(¢erPos); gndChk.SetActorPid(base.base.mBsPcId); dComIfG_Bgsp()->GroundCross(&gndChk); - s32 bgIndex = gndChk.GetBgIndex(); + int bgIndex = gndChk.GetBgIndex(); s32 mtrlSndId = 0; if (bgIndex >= 0 && bgIndex < 0x100) { mtrlSndId = dComIfG_Bgsp()->GetMtrlSndId(gndChk); @@ -1856,8 +1856,10 @@ namespace daObjMovebox { /* 000040D0-00004254 .text Draw__Q212daObjMovebox5Act_cFv */ BOOL Act_c::Draw() { if (mpModel) { - int tevType = !attr()->mbUseBGTevType ? TEV_TYPE_ACTOR : TEV_TYPE_BG0; - g_env_light.settingTevStruct(tevType, ¤t.pos, &tevStr); + g_env_light.settingTevStruct( + !attr()->mbUseBGTevType ? TEV_TYPE_ACTOR : TEV_TYPE_BG0, + ¤t.pos, &tevStr + ); g_env_light.setLightTevColorType(mpModel, &tevStr); dComIfGd_setListBG(); mDoExt_modelUpdateDL(mpModel); diff --git a/src/d/actor/d_a_player_battle.inc b/src/d/actor/d_a_player_battle.inc index 9e046c172..a9a19768d 100644 --- a/src/d/actor/d_a_player_battle.inc +++ b/src/d/actor/d_a_player_battle.inc @@ -78,11 +78,6 @@ BOOL daPy_lk_c::changeSpecialBattle() { /* 8013E454-8013E72C .text procBtJump_init__9daPy_lk_cFP13fopEn_enemy_c */ BOOL daPy_lk_c::procBtJump_init(fopEn_enemy_c* enemy) { - f32 fVar1; - s16 sVar2; - f32 dVar3; - f32 dVar5; - cXyz local_34 = enemy->current.pos - current.pos; commonProcInit(daPyProc_BT_JUMP_e); gravity = m_HIO->mBattle.mBJump.m.field_0x20; @@ -93,16 +88,14 @@ BOOL daPy_lk_c::procBtJump_init(fopEn_enemy_c* enemy) { -1, m_HIO->mBattle.mBJump.m.field_0x10 ); - fVar1 = local_34.y + enemy->getBtHeight(); - if (local_34.y + enemy->getBtHeight() < 30.0f) { + f32 fVar1 = local_34.y + enemy->getBtHeight(); + if (fVar1 < 30.0f) { fVar1 = 30.0f; } - dVar5 = std::sqrtf((-2.0f * fVar1) / gravity); + f32 dVar5 = std::sqrtf((-2.0f * fVar1) / gravity); m35A0 = dVar5 * -gravity; - dVar3 = local_34.absXZ(); - m35A4 = dVar3 / dVar5; - sVar2 = fopAcM_searchActorAngleY(this, enemy); - current.angle.y = sVar2; + m35A4 = local_34.absXZ() / dVar5; + current.angle.y = fopAcM_searchActorAngleY(this, enemy); shape_angle.y = current.angle.y; dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2_e); m34D0 = 0; @@ -187,8 +180,10 @@ BOOL daPy_lk_c::procBtJumpCut() { m34F2 = -m_HIO->mBattle.mBJump.m.field_0x6 * temp; } - f32 frame = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); - if (frame >= m_HIO->mBattle.mBJump.m.field_0x44 && frame < m_HIO->mBattle.mBJump.m.field_0x48) { + if ( + mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= m_HIO->mBattle.mBJump.m.field_0x44 && + mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < m_HIO->mBattle.mBJump.m.field_0x48 + ) { onResetFlg0(daPyRFlg0_UNK2); if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) { onResetFlg0(daPyRFlg0_UNK1); diff --git a/src/d/actor/d_a_player_bottle.inc b/src/d/actor/d_a_player_bottle.inc index daac482a6..2c39d66be 100644 --- a/src/d/actor/d_a_player_bottle.inc +++ b/src/d/actor/d_a_player_bottle.inc @@ -154,7 +154,7 @@ BOOL daPy_lk_c::procBottleDrink() { } } else if (uVar1 == LKANM_BCK_BINDRINKING) { if (dComIfGp_getItemNowLife() == dComIfGs_getLife() && - dComIfGs_getMagic() == g_dComIfG_gameInfo.play.field_0x48da) + dComIfGp_getItemNowMagic() == dComIfGs_getMagic()) { setSingleMoveAnime( ANM_BINDRINKAFTER, diff --git a/src/d/actor/d_a_player_climb.inc b/src/d/actor/d_a_player_climb.inc index 41f8cbfe5..d864c3578 100644 --- a/src/d/actor/d_a_player_climb.inc +++ b/src/d/actor/d_a_player_climb.inc @@ -182,21 +182,22 @@ void daPy_lk_c::checkBgClimbMove() { if (dVar3 - 125.0f < current.pos.y) { current.pos.y = dVar3 - 125.0f; } - local_5c.x = local_68.x + (100.0f * dVar7); - local_5c.y = local_68.y; - local_5c.z = local_68.z + (100.0f * dVar6); + local_5c.set( + local_68.x + (100.0f * dVar7), + local_68.y, + local_68.z + (100.0f * dVar6) + ); mLinkLinChk.Set(&local_68, &local_5c, this); if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { local_5c.set(current.pos.x + (25.0f * dVar7), local_68.y + 30.0f, current.pos.z + (25.0f * dVar6)); mGndChk.SetPos(&local_5c); dVar3 = dComIfG_Bgsp()->GroundCross(&mGndChk); - if (-G_CM3D_F_INF != dVar3 && cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y) && + if (dVar3 != -G_CM3D_F_INF && cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y) && dVar3 >= local_68.y - 30.0f) { - dVar4 = 3.0f; - current.pos.x = local_5c.x - (dVar4 * dVar7); + current.pos.x = local_5c.x - (3.0f * dVar7); current.pos.y = dVar3; - current.pos.z = local_5c.z - (dVar4 * dVar6); + current.pos.z = local_5c.z - (3.0f * dVar6); procHangClimb_init(m_HIO->mWallCatch.m.field_0x2C); } else { procFall_init(1, m_HIO->mWallCatch.m.field_0x54); diff --git a/src/d/actor/d_a_player_crawl.inc b/src/d/actor/d_a_player_crawl.inc index 111dc3247..ec3b8155c 100644 --- a/src/d/actor/d_a_player_crawl.inc +++ b/src/d/actor/d_a_player_crawl.inc @@ -140,13 +140,15 @@ BOOL daPy_lk_c::changeCrawlAutoMoveProc(cXyz* param_1) { var_r29 |= 8; } } + f32 x1 = param_1->x - (75.0f * temp_f31); + f32 y1 = param_1->z - (75.0f * temp_f30); if (cM3d_Len2dSqPntAndSegLine( 0.5f * (sp34.x + sp28.x), 0.5f * (sp34.z + sp28.z), sp70.x, sp70.z, - param_1->x - (75.0f * temp_f31), - param_1->z - (75.0f * temp_f30), + x1, + y1, &sp64.x, &sp64.z, &spC @@ -164,14 +166,15 @@ int daPy_lk_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2) { if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); int iVar4 = dComIfG_Bgsp()->GetSpecialCode(mLinkLinChk); - if (cBgW_CheckBWall(triPla->GetNP()->y)) { + f32 temp = triPla->GetNP()->y; + if (cBgW_CheckBWall(temp)) { cXyz local_3c = (*param_1 - mLinkLinChk.GetCross()); f32 dVar7 = local_3c.absXZ(); param_2->x = -dVar7 * triPla->GetNP()->x; param_2->y = local_3c.y; param_2->z = -dVar7 * triPla->GetNP()->z; return true; - } else if (iVar4 == 1 || (triPla->GetNP()->y < 0.643832f && iVar4 == 2)) { + } else if (iVar4 == 1 || (temp < 0.643832f && iVar4 == 2)) { *param_2 = (*param_1 - mLinkLinChk.GetCross()); return true; } @@ -553,9 +556,6 @@ BOOL daPy_lk_c::procCrawlAutoMove_init(int param_0, cXyz* param_1) { /* 8013A0F0-8013A630 .text procCrawlAutoMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrawlAutoMove() { - f32 fVar2; - f32 fVar3; - dComIfGp_setRStatus(dActStts_CROUCH_e); J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; onResetFlg0(daPyRFlg0_CRAWL_AUTO_MOVE); @@ -563,7 +563,7 @@ BOOL daPy_lk_c::procCrawlAutoMove() { s16 sVar5 = current.angle.y; if (m34D0 > 0) { if (frameCtrl.checkPass(0.0f) || frameCtrl.checkPass(17.0f)) { - fVar3 = 0.0f; + f32 fVar2; if (frameCtrl.checkPass(0.0f)) { fVar2 = 0.0f; } else { @@ -572,7 +572,7 @@ BOOL daPy_lk_c::procCrawlAutoMove() { frameCtrl.setRate(0.0f); frameCtrl.setFrame(fVar2); mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(fVar2); - mVelocity = fVar3; + mVelocity = 0.0f; } else if (std::fabsf(frameCtrl.getRate()) < 0.01f) { mVelocity = 0.0f; m34D0--; diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index 24c91af74..7b249b4d4 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -172,7 +172,9 @@ BOOL daPy_lk_c::dProcTool_init() { mProcVar0.m3570 = 0; m3574 = 0; m34D4 = 0; +#if VERSION > VERSION_DEMO m34D6 = 0; +#endif return true; } @@ -466,7 +468,7 @@ BOOL daPy_lk_c::dProcHoldup_init() { return false; } - BOOL uVar1 = checkModeFlg(ModeFlg_WHIDE) ? TRUE : FALSE; + BOOL uVar1 = checkModeFlg(ModeFlg_WHIDE) != 0; commonProcInit(daPyProc_DEMO_HOLDUP_e); if (uVar1) { if (checkNoResetFlg0(daPyFlg0_UNK10000)) { @@ -551,6 +553,7 @@ BOOL daPy_lk_c::dProcOpenTreasure() { return true; } +#if VERSION > VERSION_DEMO /* 8012E28C-8012E418 .text setGetItemSound__9daPy_lk_cFUsi */ void daPy_lk_c::setGetItemSound(u16 param_1, int param_2) { if (param_1 == dItem_GREEN_RUPEE_e || param_1 == dItem_BLUE_RUPEE_e || param_1 == dItem_YELLOW_RUPEE_e || @@ -576,6 +579,7 @@ void daPy_lk_c::setGetItemSound(u16 param_1, int param_2) { dComIfGp_setMesgBgmOn(); } } +#endif #if VERSION > VERSION_DEMO /* 8012E418-8012E6B4 .text setGetDemo__9daPy_lk_cFv */ @@ -731,7 +735,32 @@ BOOL daPy_lk_c::dProcGetItem() { if ((mProcVar0.m3570 == 0) && (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= 11.0f)) { if ((m34D0 == 0) && (m34D4 != -1)) { m34D0 = 1; +#if VERSION == VERSION_DEMO + if (m34D4 == dItem_GREEN_RUPEE_e || m34D4 == dItem_BLUE_RUPEE_e || m34D4 == dItem_YELLOW_RUPEE_e || + m34D4 == dItem_RED_RUPEE_e || m34D4 == dItem_PURPLE_RUPEE_e || m34D4 == TINCLE_RUPEE1) + { + seStartSystem(JA_SE_ME_ITEM_GET_S); + dComIfGp_setMesgBgmOn2(); + } else if ((m34D4 == dItem_HEART_CONTAINER_e) || + (m34D4 == dItem_HEART_PIECE_e && ((dComIfGs_getMaxLife() % 4) == 3))) + { + mDoAud_subBgmStart(JA_BGM_GET_HEART); + dComIfGp_setMesgBgmOn(); + } else if (m34D4 == dItem_HEART_PIECE_e || m34D4 == dItem_JOY_PENDANT_e || m34D4 == dItem_SMALL_KEY_e || + m34D4 == dItem_SILVER_RUPEE_e || m34D4 == dItem_ORANGE_RUPEE_e) + { + mDoAud_subBgmStart(JA_BGM_ITEM_GET_S); + dComIfGp_setMesgBgmOn(); + } else if (m34DA != dItem_HEART_e) { + seStartSystem(JA_SE_ME_ITEM_GET_S); + dComIfGp_setMesgBgmOn2(); + } else { + mDoAud_subBgmStart(JA_BGM_ITEM_GET); + dComIfGp_setMesgBgmOn(); + } +#else setGetItemSound(m34D4, m34DA); +#endif } if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() <= 17.0f) { if (m34D6 > 0x4000) { @@ -1915,19 +1944,18 @@ BOOL daPy_lk_c::dProcAgbUse() { /* 8013194C-801319D0 .text dProcLookTurn_init__9daPy_lk_cFv */ BOOL daPy_lk_c::dProcLookTurn_init() { - daPy_ANM dVar2; - if (mCurProc == daPyProc_DEMO_LOOK_TURN_e) { return false; } commonProcInit(daPyProc_DEMO_LOOK_TURN_e); mVelocity = 0.0f; - if (mDemo.getParam0() != 0) { - dVar2 = ANM_WINDL; + daPy_ANM anm; + if (mDemo.getParam0()) { + anm = ANM_WINDL; } else { - dVar2 = ANM_WINDR; + anm = ANM_WINDR; } - setSingleMoveAnime(dVar2, 1.0f, 0.0f, -1, 5.0f); + setSingleMoveAnime(anm, 1.0f, 0.0f, -1, 5.0f); mProcVar0.m3570 = 0; return true; } diff --git a/src/d/actor/d_a_player_grab.inc b/src/d/actor/d_a_player_grab.inc index b8461a46b..122a5c838 100644 --- a/src/d/actor/d_a_player_grab.inc +++ b/src/d/actor/d_a_player_grab.inc @@ -731,10 +731,12 @@ BOOL daPy_lk_c::procGrabWait_init() { /* 8013C678-8013C914 .text procGrabWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procGrabWait() { +#if VERSION > VERSION_DEMO if (mActorKeepGrab.getActor() == NULL) { resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); return checkNextMode(0); } +#endif if (checkAttentionLock()) { setSpeedAndAngleAtn(); @@ -794,10 +796,12 @@ BOOL daPy_lk_c::procGrabHeavyWait_init() { /* 8013C9AC-8013CB78 .text procGrabHeavyWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procGrabHeavyWait() { +#if VERSION > VERSION_DEMO if (mActorKeepGrab.getActor() == NULL) { resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); return checkNextMode(0); } +#endif if (!checkAttentionLock() && mStickDistance > 0.05f) { cLib_addCalcAngleS( @@ -807,14 +811,13 @@ BOOL daPy_lk_c::procGrabHeavyWait() { m_HIO->mGrab.m.field_0x18, m_HIO->mGrab.m.field_0x1A ); - s16 y_diff = shape_angle.y - current.angle.y; - m35A0 = y_diff / (f32)m_HIO->mGrab.m.field_0x18; + m35A0 = (s16)(shape_angle.y - current.angle.y) / (f32)m_HIO->mGrab.m.field_0x18; current.angle.y = shape_angle.y; f32 fVar1; - if (checkNoResetFlg1(daPyFlg1_UNK800000)) { - fVar1 = -1.0f; - } else { + if (!checkNoResetFlg1(daPyFlg1_UNK800000)) { fVar1 = m_HIO->mBasic.m.field_0xC; + } else { + fVar1 = -1.0f; } setBlendMoveAnime(fVar1); m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); diff --git a/src/d/actor/d_a_player_hammer.inc b/src/d/actor/d_a_player_hammer.inc index d68e7f575..976a0aa1b 100644 --- a/src/d/actor/d_a_player_hammer.inc +++ b/src/d/actor/d_a_player_hammer.inc @@ -334,13 +334,11 @@ BOOL daPy_lk_c::procHammerFrontSwing() { int r27; int r26; r26 = -1; - f32 f30 = 300.0f; - f32 f31 = -G_CM3D_F_INF; for (r27 = 0; r27 < mSwBlur.field_0x014; r27++) { - sp08.set(mSwBlur.field_0x034[r27].x, f30 + mSwBlur.field_0x034[r27].y, mSwBlur.field_0x034[r27].z); + sp08.set(mSwBlur.field_0x034[r27].x, 300.0f + mSwBlur.field_0x034[r27].y, mSwBlur.field_0x034[r27].z); mGndChk.SetPos(&sp08); sp08.y = dComIfG_Bgsp()->GroundCross(&mGndChk); - if (f31 != sp08.y && mSwBlur.field_0x034[r27].y > sp08.y) { + if (sp08.y != -G_CM3D_F_INF && mSwBlur.field_0x034[r27].y > sp08.y) { r26 = dComIfG_Bgsp()->GetMtrlSndId(mGndChk); break; } diff --git a/src/d/actor/d_a_player_hang.inc b/src/d/actor/d_a_player_hang.inc index 24cae1cfa..afb8fa822 100644 --- a/src/d/actor/d_a_player_hang.inc +++ b/src/d/actor/d_a_player_hang.inc @@ -105,16 +105,15 @@ BOOL daPy_lk_c::changeHangMoveProc(int i_direction) { /* 801342D8-80134440 .text changeHangEndProc__9daPy_lk_cFi */ int daPy_lk_c::changeHangEndProc(int param_0) { - MtxP pMVar6 = mpCLModel->getAnmMtx(0); + MtxP mtx = mpCLModel->getAnmMtx(0); cXyz pos; - - pos.x = pMVar6[0][3] - cM_ssin(shape_angle.y) * 4.0f; - pos.y = pMVar6[1][3]; - pos.z = pMVar6[2][3] - cM_scos(shape_angle.y) * 4.0f; + pos.x = mtx[0][3] - cM_ssin(shape_angle.y) * 4.0f; + pos.y = mtx[1][3]; + pos.z = mtx[2][3] - cM_scos(shape_angle.y) * 4.0f; mGndChk.SetPos(&pos); mHangGroundH = dComIfG_Bgsp()->GroundCross(&mGndChk); - if (-G_CM3D_F_INF != mHangGroundH) { + if (mHangGroundH != -G_CM3D_F_INF) { m3588 = dComIfG_Bgsp()->GetAttributeCode(mGndChk); } else { m3588 = dBgS_Attr_UNK1B_e; @@ -175,15 +174,27 @@ BOOL daPy_lk_c::procHangStart_init() { cXyz local_28; cXyz local_34; - if (mCurProc != daPyProc_ROPE_UP_HANG_e && mCurProc != daPyProc_ROPE_UP_e) { + if ( + mCurProc != daPyProc_ROPE_UP_HANG_e +#if VERSION > VERSION_DEMO + && mCurProc != daPyProc_ROPE_UP_e +#endif + ) { local_34.set(m3724.x, 0.0f, m3724.z); local_28.set(current.pos.x, 0.0f, current.pos.z); if (local_34.abs(local_28) > (mAcchCir[0].GetWallR() + 20.0f)) { return false; } } +#if VERSION > VERSION_DEMO s32 sVar3 = 0; - if (mCurProc != daPyProc_ROPE_UP_HANG_e && mCurProc != daPyProc_ROPE_UP_e) { +#endif + if ( + mCurProc != daPyProc_ROPE_UP_HANG_e +#if VERSION > VERSION_DEMO + && mCurProc != daPyProc_ROPE_UP_e +#endif + ) { local_1c.x = m3724.x - 1.5f * cM_ssin(m352C); local_1c.y = m3724.y + 10.0f; local_1c.z = m3724.z - 1.5f * cM_scos(m352C); @@ -196,12 +207,16 @@ BOOL daPy_lk_c::procHangStart_init() { local_1c.x = m3724.x - 2.25f * cM_ssin(m352C); local_1c.y = m3724.y + 10.0f; local_1c.z = m3724.z - 2.25f * cM_scos(m352C); +#if VERSION > VERSION_DEMO if (!strcmp(dComIfGp_getStartStageName(), "GanonK")) { sVar3 = 1; } +#endif } commonProcInit(daPyProc_HANG_START_e); +#if VERSION > VERSION_DEMO mProcVar0.m3570 = sVar3; +#endif setSingleMoveAnime( ANM_VJMPCHA, m_HIO->mWallCatch.m.field_0x44, @@ -265,9 +280,7 @@ BOOL daPy_lk_c::procHangFallStart_init(cM3dGPla* param_0) { local_40.z += dVar10; } } - local_4c.x = local_40.x + dVar11; - local_4c.y = local_40.y; - local_4c.z = local_40.z + dVar10; + local_4c.set(local_40.x + dVar11, local_40.y, local_40.z + dVar10); mLinkLinChk.Set(&local_40, &local_4c, this); if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { param_0 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); @@ -433,23 +446,20 @@ BOOL daPy_lk_c::procHangWait() { /* 801351FC-80135354 .text procHangMove_init__9daPy_lk_cFi */ BOOL daPy_lk_c::procHangMove_init(int param_0) { - daPy_ANM dVar1; - commonProcInit(daPyProc_HANG_MOVE_e); + daPy_ANM anm; if (param_0 == 2) { - dVar1 = ANM_HANGMOVEL; + anm = ANM_HANGMOVEL; current.angle.y = shape_angle.y + 0x4000; } else { - dVar1 = ANM_HANGMOVER; + anm = ANM_HANGMOVER; current.angle.y = shape_angle.y + -0x4000; } - f32 dVar3 = getHangMoveAnmSpeed(); - setSingleMoveAnime(dVar1, dVar3, 0.0f, -1, m_HIO->mHang.m.field_0x2C); + setSingleMoveAnime(anm, getHangMoveAnmSpeed(), 0.0f, -1, m_HIO->mHang.m.field_0x2C); dComIfGp_setPlayerStatus0(0, daPyStts0_UNK100_e); mVelocity = 0.0f; cXyz local_1c = mLeftHandPos - mRightHandPos; - dVar3 = local_1c.absXZ(); - m35A0 = dVar3; + m35A0 = local_1c.absXZ(); return true; } @@ -500,8 +510,7 @@ BOOL daPy_lk_c::procHangMove() { } else { current.angle.y = sVar6 + -0x4000; } - s16 sVar7 = shape_angle.y - sVar6; - m34EC += sVar7; + m34EC += (s16)(shape_angle.y - sVar6); shape_angle.y = sVar6; cXyz local_88; local_88.set(*mLinkLinChk.GetLinP()->GetEndP()); diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 52881fbaf..b06ac3f85 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -324,7 +324,7 @@ BOOL daPy_lk_c::jointBeforeCB(int jnt_no, J3DTransformInfo* param_2, Quaternion* mCurProc != daPyProc_VOMIT_WAIT_e && mCurProc != daPyProc_ELEC_DAMAGE_e && mCurProc != daPyProc_DEMO_DOOR_OPEN_e ) #else - if (!checkResetFlg0(daPyRFlg0_UNK800000)) + if (!checkResetFlg0(daPyRFlg0_ORIGINAL_HAT_ANIM)) #endif { if (jnt_no == 0x1A) { @@ -2432,13 +2432,11 @@ void daPy_lk_c::posMoveFromFootPos() { } else { speedF = sp7C.z; if (mCurProc == daPyProc_SWIM_MOVE_e) { - u16 r3 = - cM_rad2s(M_PI * (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() / mFrameCtrlUnder[UNDER_MOVE0_e].getEnd())); - f32 f30; - f30 = std::abs(cM_scos(r3 & 0xFFFF)); - f32 f1 = - ((speedF * (1.0f - m_HIO->mSwim.m.field_0x60)) + m_HIO->mSwim.m.field_0x60 * (speedF * f30)) / - (1.0f + (m_HIO->mSwim.m.field_0x7C * getSwimTimerRate())); + f32 f1 = ( + (speedF * (1.0f - m_HIO->mSwim.m.field_0x60)) + + m_HIO->mSwim.m.field_0x60 * + (speedF * std::abs(cM_scos(cM_rad2s(M_PI * (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() / mFrameCtrlUnder[UNDER_MOVE0_e].getEnd()))))) + ) / (1.0f + (m_HIO->mSwim.m.field_0x7C * getSwimTimerRate())); speed.x = f1 * cM_ssin(current.angle.y); speed.z = f1 * cM_scos(current.angle.y); } else if (mCurProc != daPyProc_CUT_ROLL_e || !dComIfGp_event_runCheck() || @@ -2761,15 +2759,10 @@ void daPy_lk_c::setBodyAngleXReadyAnime() { /* 8010A4D4-8010A96C .text setSpeedAndAngleNormal__9daPy_lk_cFs */ void daPy_lk_c::setSpeedAndAngleNormal(s16 param_1) { - BOOL bVar2; - s16 sVar6; - s16 sVar7; f32 dVar11; - f32 dVar10; f32 dVar9; - if (mStickDistance > 0.05f) { - bVar2 = false; + BOOL bVar2 = false; dVar11 = mStickDistance * mStickDistance; if (checkHeavyStateOn()) { dVar11 *= 1.0f / (m_HIO->mMove.m.field_0x80 * m_HIO->mMove.m.field_0x80); @@ -2800,6 +2793,8 @@ void daPy_lk_c::setSpeedAndAngleNormal(s16 param_1) { m_HIO->mMove.m.field_0x4); } } else { + s16 sVar6; + s16 sVar7; if (dComIfGp_event_runCheck()) { sVar6 = param_1; sVar7 = m_HIO->mMove.m.field_0x4; @@ -2813,8 +2808,7 @@ void daPy_lk_c::setSpeedAndAngleNormal(s16 param_1) { sVar7 = 1; } } - cLib_addCalcAngleS(¤t.angle.y, m34E8, m_HIO->mMove.m.field_0x6, sVar6, - sVar7); + cLib_addCalcAngleS(¤t.angle.y, m34E8, m_HIO->mMove.m.field_0x6, sVar6, sVar7); } if (!bVar2) { dVar9 = cM_scos(m34E8 - current.angle.y); @@ -2828,7 +2822,7 @@ void daPy_lk_c::setSpeedAndAngleNormal(s16 param_1) { if (dComIfGp_event_runCheck()) { dVar9 *= m_HIO->mMove.m.field_0x14 * mStickDistance; } else { - dVar10 = 0.5f - (0.5f * std::abs(mVelocity / mMaxNormalSpeed)); + f32 dVar10 = 0.5f - (0.5f * std::abs(mVelocity / mMaxNormalSpeed)); if (checkHeavyStateOn()) { dVar10 *= m_HIO->mMove.m.field_0x80; } @@ -2850,10 +2844,10 @@ void daPy_lk_c::setSpeedAndAngleNormal(s16 param_1) { if ((!checkAttentionLock() && mCurProc != daPyProc_MOVE_TURN_e) && mStickDistance > 0.05f) { - sVar6 = shape_angle.y; + s16 sVar6 = shape_angle.y; cLib_addCalcAngleS(&shape_angle.y, m34E8, m_HIO->mMove.m.field_0x6, (s16)(param_1 << 1), (s16)(m_HIO->mMove.m.field_0x4 << 1)); - sVar7 = current.angle.y; + s16 sVar7 = current.angle.y; if ((s16)(sVar6 - sVar7) * (s16)(shape_angle.y - sVar7) <= 0) { shape_angle.y = sVar7; } @@ -3797,7 +3791,7 @@ BOOL daPy_lk_c::changeDragonShield(int param_1) { /* 8010CD34-8010CFB4 .text checkNewItemChange__9daPy_lk_cFUc */ BOOL daPy_lk_c::checkNewItemChange(u8 param_1) { - u32 uVar4 = dComIfGp_getSelectItem(param_1); + u16 uVar4 = dComIfGp_getSelectItem(param_1); if (uVar4 == dItem_MAGIC_ARMOR_e) { return changeDragonShield(1); @@ -4188,7 +4182,9 @@ BOOL daPy_lk_c::checkNextActionFromButton() { if (dComIfGp_getDoStatus() == dActStts_OPEN_e) { if (mpAttnEntryA->mType == 5) { fopAcM_orderDoorEvent(this, mpAttnActorA); +#if VERSION > VERSION_DEMO changeWaitProc(); +#endif } else { fopAcM_orderTreasureEvent(this, mpAttnActorA); } @@ -4285,9 +4281,12 @@ BOOL daPy_lk_c::checkNextActionFromButton() { if (changeSpecialBattle()) return true; } - if ((dComIfGp_getRStatus() == dActStts_BLANK_e && !checkUpperReadyThrowAnime()) && - !checkEquipAnime()) - { + if ( + (dComIfGp_getRStatus() == dActStts_BLANK_e && !checkUpperReadyThrowAnime()) +#if VERSION > VERSION_DEMO + && !checkEquipAnime() +#endif + ) { if (!checkGrabAnime()) { if (checkNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND)) { dComIfGp_setRStatus(dActStts_CALL_e); @@ -4336,9 +4335,12 @@ BOOL daPy_lk_c::checkNextActionFromButton() { return procFrontRoll_init(m_HIO->mRoll.m.field_0xC); } } - if ((daPy_getPlayerActorClass() == this && !dComIfGp_event_runCheck()) && - !checkGrabWear()) - { + if ( + (daPy_getPlayerActorClass() == this && !dComIfGp_event_runCheck()) +#if VERSION > VERSION_DEMO + && !checkGrabWear() +#endif + ) { onResetFlg0(daPyRFlg0_SUBJECT_ACCEPT); if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000)) { return procSubjectivity_init(0); @@ -4461,6 +4463,11 @@ BOOL daPy_lk_c::checkNextMode(int r29) { if (checkNextActionFromButton()) { return true; } +#if VERSION == VERSION_DEMO + if (checkResetFlg0(daPyRFlg0_UNK10000000)) { + return procCutReverse_init(ANM_CUTRER); + } +#endif if (r29 != 0 && !(mStickDistance > 0.05f) && !spActionButton()) { mMaxNormalSpeed = f31; return false; @@ -4958,11 +4965,7 @@ BOOL daPy_lk_c::changeWaitProc() { /* 80110028-8011029C .text changeLandProc__9daPy_lk_cFf */ BOOL daPy_lk_c::changeLandProc(f32 param_1) { - BOOL bVar2; - f32 dVar6; - f32 dVar7; - - dVar7 = m35F0 - current.pos.y; + f32 dVar7 = m35F0 - current.pos.y; if (mCurrAttributeCode != dBgS_Attr_GIANT_FLOWER_e && ((dVar7 >= (100.0f * m_HIO->mFall.m.field_0x14)))) { @@ -4972,8 +4975,8 @@ BOOL daPy_lk_c::changeLandProc(f32 param_1) { return procLandDamage_init(1); } } - dVar6 = param_1; int direction = getDirectionFromAngle(current.angle.y - shape_angle.y); + BOOL bVar2; if (mCurProc == daPyProc_CUT_EX_MJ_e && ((m34C5 != 0 || checkNoResetFlg0(daPyFlg0_UNK4)))) { bVar2 = true; } else { @@ -5004,13 +5007,24 @@ BOOL daPy_lk_c::changeLandProc(f32 param_1) { } else if (bVar2) { checkNextMode(0); } else { - procLand_init(dVar6, 0); + procLand_init(param_1, 0); } } } return true; } +#if VERSION == VERSION_DEMO +void daPy_lk_c::setDamagePoint(f32 amount) { + if (!checkNoDamageMode()) { + dComIfGp_setItemLifeCount(amount); + } else { + seStartMapInfo(JA_SE_LK_MGC_SHIELD_DEF); + } + offNoResetFlg1(daPyFlg1_SOUP_POWER_UP); + offNoResetFlg1(daPyFlg1_UNK200000); +} +#else /* 8011029C-80110338 .text setDamagePoint__9daPy_lk_cFf */ BOOL daPy_lk_c::setDamagePoint(f32 amount) { if (!checkNoDamageMode()) { @@ -5030,6 +5044,7 @@ BOOL daPy_lk_c::setDamagePoint(f32 amount) { return FALSE; } } +#endif /* 80110338-80110448 .text checkNormalDamage__9daPy_lk_cFi */ BOOL daPy_lk_c::checkNormalDamage(int param_1) { @@ -5711,8 +5726,9 @@ BOOL daPy_lk_c::checkSubjectEnd(BOOL i_playSound) { if(i_playSound) { seStartSystem(JA_SE_SUBJ_VIEW_OUT); } - +#if VERSION > VERSION_DEMO onResetFlg0(daPyRFlg0_UNK10000000); +#endif return true; } @@ -7602,7 +7618,9 @@ BOOL daPy_lk_c::procDamage_init() { seStartOnlyReverb(JA_SE_LK_DAMAGE_NORMAL); mProcVar0.mDamageAnm = dVar2; offNoResetFlg0(daPyFlg0_UNK2); +#if VERSION > VERSION_DEMO dComIfGp_getVibration().StartShock(4, -0x21, cXyz(0.0f, 1.0f, 0.0f)); +#endif return true; } @@ -7671,7 +7689,6 @@ BOOL daPy_lk_c::procPolyDamage() { /* 801177CC-80117EAC .text procLargeDamage_init__9daPy_lk_cFiiss */ BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 param_4) { - f32 fVar2; s16 sVar3; cXyz* damage_vec; int iVar7; @@ -7741,9 +7758,8 @@ BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 } else if (param_1 == -7) { iVar7 = 0; current.angle.y = shape_angle.y; - fVar2 = - ((2.0f * m_HIO->mDam.mHuDamage.m.field_0x20) / -m_HIO->mDam.mHuDamage.m.field_0x1C) * - m_HIO->mDam.mHuDamage.m.field_0x18; + f32 fVar2 = ((2.0f * m_HIO->mDam.mHuDamage.m.field_0x20) / -m_HIO->mDam.mHuDamage.m.field_0x1C) * + m_HIO->mDam.mHuDamage.m.field_0x18; current.pos.x = current.pos.x - fVar2 * cM_ssin(shape_angle.y); current.pos.z = current.pos.z - fVar2 * cM_scos(shape_angle.y); mDamageWaitTimer = 0; @@ -7782,6 +7798,7 @@ BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 m34D6 = 4; shape_angle.y = current.angle.y + 0x8000; } + f32 fVar2; if (param_2 != 0) { fVar2 = m_HIO->mDam.mLaDamage.m.field_0x14; gravity = m_HIO->mDam.mLaDamage.m.field_0x1C; @@ -7801,11 +7818,10 @@ BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 if (param_1 != -7) { voiceStart(3); } - fVar2 = 0.0f; if (param_1 != -5) { if (m34D0 > 0) { mVelocity = 0.0f; - speed.y = fVar2; + speed.y = 0.0f; } else { if (param_2 != 0) { mVelocity = m_HIO->mDam.mLaDamage.m.field_0x18; @@ -9306,7 +9322,7 @@ void daPy_lk_c::checkOriginalHatAnimation() { mCurProc == daPyProc_DEMO_DOOR_OPEN_e || (!strcmp(dComIfGp_getStartStageName(), "GTower") && dComIfGp_getStartStageLayer() == 9) ) { - onResetFlg0(daPyRFlg0_UNK800000); + onResetFlg0(daPyRFlg0_ORIGINAL_HAT_ANIM); } } #endif @@ -9552,7 +9568,7 @@ void daPy_lk_c::setMoveSlantAngle() { if (sVar2 == 0) { m351C = 0; } else { - m351C = m351C - sVar2; + m351C -= sVar2; } } @@ -10404,9 +10420,9 @@ void daPy_lk_c::setDemoData() { if (mStaffIdx != -1) { char* cut_name = dComIfGp_getPEvtManager()->getMyNowCutName(mStaffIdx); if (cut_name != NULL) { - // Take the first 3 chars in cut_name, convert them to integers, and calculate - // demo_mode + // Take the first 3 chars in cut_name, convert them to integers, and calculate demo_mode demo_mode = ((cut_name[0] - '0') * 100 + (cut_name[1] - '0') * 10 + (cut_name[2] - '0')); +#if VERSION > VERSION_DEMO if ( mDemo.getDemoType() != 4 && ( @@ -10420,6 +10436,7 @@ void daPy_lk_c::setDemoData() { speedF = 0.0f; } } +#endif pos_p = dComIfGp_evmng_getMyXyzP(mStaffIdx, "pos"); if (pos_p == NULL) { pos_p = dComIfGp_evmng_getGoal(); @@ -10519,7 +10536,8 @@ void daPy_lk_c::setDemoData() { m34EC -= (s16)(current.angle.y - r24); } else if ((demo_mode == daPy_demo_c::DEMO_N_WALK_e) || (demo_mode == daPy_demo_c::DEMO_N_DASH_e)) { cXyz sp44 = *pos_p - current.pos; - if (std::abs(mVelocity) / mMaxNormalSpeed < m_HIO->mMove.m.field_0x2C) { + f32 temp = std::abs(mVelocity) / mMaxNormalSpeed; + if (temp < m_HIO->mMove.m.field_0x2C) { demo_mode = daPy_demo_c::DEMO_N_WALK_e; } f32 dVar22 = sp44.abs2XZ(); @@ -10916,7 +10934,7 @@ BOOL daPy_lk_c::startRestartRoom(u32 mode, int eventInfoIdx, f32 param_3, int i_ (current.roomNo == dIsleRoom_WindfallIsland_e || current.roomNo == dIsleRoom_OutsetIsland_e) && dStage_chkPlayerId(0x80, current.roomNo)) { - dComIfGp_setNextStage(dComIfGp_getStartStageName(), 0x80, current.roomNo, -1, 0.0f, mode); + dComIfGp_setNextStage(dComIfGp_getStartStageName(), 0x80, fopAcM_GetRoomNo(this), -1, 0.0f, mode); u32 roomParam = setParamData(-1, 0, eventInfoIdx, 0); dComIfGs_setRestartRoomParam(roomParam); seStartSystem(JA_SE_FORCE_BACK); @@ -10973,10 +10991,12 @@ BOOL daPy_lk_c::startRestartRoom(u32 mode, int eventInfoIdx, f32 param_3, int i_ } return TRUE; } +#if VERSION > VERSION_DEMO } else if (checkNoResetFlg0(daPyFlg0_DEKU_SP_RETURN_FLG)) { dComIfGp_setNextStage(dComIfGp_getStartStageName(), i_point, 41, -1, 0.0f, mode); +#endif } else { - dComIfGp_setNextStage(dComIfGp_getStartStageName(), i_point, current.roomNo, -1, 0.0f, mode); + dComIfGp_setNextStage(dComIfGp_getStartStageName(), i_point, fopAcM_GetRoomNo(this), -1, 0.0f, mode); } if (mCurProc != daPyProc_DEMO_DEAD_e) { @@ -11863,7 +11883,7 @@ static BOOL daPy_Delete(daPy_lk_c* i_this) { /* 80123078-80123360 .text initTextureAnime__9daPy_lk_cFv */ void daPy_lk_c::initTextureAnime() { m_tex_anm_heap.m_buffer = new(0x20) u8[0x1000]; - JUT_ASSERT(VERSION_SELECT(20789, 20789, 20869, 20869), m_tex_anm_heap.m_buffer != NULL); + JUT_ASSERT(VERSION_SELECT(20682, 20789, 20869, 20869), m_tex_anm_heap.m_buffer != NULL); JKRReadIdxResource(m_tex_anm_heap.m_buffer, 0x1000, LKANM_BTP_TMABAA, dComIfGp_getAnmArchive()); J3DAnmTexPattern* btp = static_cast(J3DAnmLoaderDataBase::load(m_tex_anm_heap.m_buffer)); @@ -12139,7 +12159,7 @@ J3DModelData* daPy_lk_c::initModel(J3DModel** i_model, int i_fileIndex, u32 i_di J3DAnmTextureSRTKey* daPy_lk_c::entryBtk(J3DModelData* param_1, int param_2) { J3DAnmTextureSRTKey* btk_anm = static_cast(dComIfG_getObjectRes(l_arcName, param_2)); - JUT_ASSERT(VERSION_SELECT(21293, 21293, 21373, 21373), btk_anm != NULL); + JUT_ASSERT(VERSION_SELECT(21186, 21293, 21373, 21373), btk_anm != NULL); btk_anm->searchUpdateMaterialID(param_1); param_1->entryTexMtxAnimator(btk_anm); btk_anm->setFrame(0.0f); @@ -12159,8 +12179,9 @@ J3DAnmTevRegKey* daPy_lk_c::entryBrk(J3DModelData* param_1, int param_2) { /* 80124C98-80125CC8 .text playerInit__9daPy_lk_cFv */ void daPy_lk_c::playerInit() { - if (!fopAcM_entrySolidHeap(this, daPy_createHeap, 0xB0000)) { - JUT_ASSERT(VERSION_SELECT(21350, 21350, 21430, 21430), FALSE); + u32 heapSize = 0xB0000; + if (!fopAcM_entrySolidHeap(this, daPy_createHeap, heapSize)) { + JUT_ASSERT(VERSION_SELECT(21243, 21350, 21430, 21430), FALSE); } fopAcM_SetMtx(this, mpCLModel->getBaseTRMtx()); @@ -12199,23 +12220,23 @@ void daPy_lk_c::playerInit() { if (mtl->getZMode()->getCompareEnable() == 0) { if ((u8)mtl->getBlend()->getType() == GX_BM_BLEND) { mpZOffBlendShape[zoff_blend_cnt++] = mtl->getShape(); - JUT_ASSERT(VERSION_SELECT(21406, 21406, 21486, 21486), zoff_blend_cnt <= 4); + JUT_ASSERT(VERSION_SELECT(21299, 21406, 21486, 21486), zoff_blend_cnt <= 4); } else { mpZOffNoneShape[zoff_none_cnt++] = mtl->getShape(); - JUT_ASSERT(VERSION_SELECT(21410, 21410, 21490, 21490), zoff_none_cnt <= 4); + JUT_ASSERT(VERSION_SELECT(21303, 21410, 21490, 21490), zoff_none_cnt <= 4); } } else { mpZOnShape[zon_cnt++] = mtl->getShape(); - JUT_ASSERT(VERSION_SELECT(21414, 21414, 21494, 21494), zon_cnt <= 4); + JUT_ASSERT(VERSION_SELECT(21307, 21414, 21494, 21494), zon_cnt <= 4); } mtl = mtl->getNext(); } mtl = mpCLModelData->getJointNodePointer(0x15)->getMesh(); // cl_mayu joint } - JUT_ASSERT(VERSION_SELECT(21421, 21421, 21501, 21501), zon_cnt == 4); - JUT_ASSERT(VERSION_SELECT(21422, 21422, 21502, 21502), zoff_none_cnt == 4); - JUT_ASSERT(VERSION_SELECT(21423, 21423, 21503, 21503), zoff_blend_cnt == 4); + JUT_ASSERT(VERSION_SELECT(21314, 21421, 21501, 21501), zon_cnt == 4); + JUT_ASSERT(VERSION_SELECT(21315, 21422, 21502, 21502), zoff_none_cnt == 4); + JUT_ASSERT(VERSION_SELECT(21316, 21423, 21503, 21503), zoff_blend_cnt == 4); mpLhandShape = mpCLModelData->getJointNodePointer(0x08)->getMesh()->getShape(); // cl_LhandA joint mpRhandShape = mpCLModelData->getJointNodePointer(0x0C)->getMesh()->getShape(); // cl_RhandA joint @@ -12308,13 +12329,13 @@ void daPy_lk_c::playerInit() { mpItemHeaps[0] = mDoExt_createSolidHeapFromGameToCurrent(0xE600, 0x20); u8* dummy_data = new u8[0xE600]; - JUT_ASSERT(VERSION_SELECT(21571, 21571, 21651, 21651), dummy_data != NULL); + JUT_ASSERT(VERSION_SELECT(21464, 21571, 21651, 21651), dummy_data != NULL); mDoExt_restoreCurrentHeap(); mDoExt_adjustSolidHeap(mpItemHeaps[0]); mpItemHeaps[1] = mDoExt_createSolidHeapFromGameToCurrent(0xE600, 0x20); dummy_data = new u8[0xE600]; - JUT_ASSERT(VERSION_SELECT(21577, 21577, 21657, 21657), dummy_data != NULL); + JUT_ASSERT(VERSION_SELECT(21470, 21577, 21657, 21657), dummy_data != NULL); mDoExt_restoreCurrentHeap(); mDoExt_adjustSolidHeap(mpItemHeaps[1]); @@ -12339,10 +12360,10 @@ void daPy_lk_c::playerInit() { resetSeAnime(); ResTIMG* tmp_tex = (ResTIMG*)dComIfG_getObjectRes("Always", ALWAYS_I4_BALL128B); - JUT_ASSERT(VERSION_SELECT(21607, 21607, 21687, 21687), tmp_tex != NULL); + JUT_ASSERT(VERSION_SELECT(21500, 21607, 21687, 21687), tmp_tex != NULL); mSightPacket.setSightTex(tmp_tex); ResTIMG* tmp_img = (ResTIMG*)dComIfG_getObjectRes(l_arcName, LINK_BTI_ROCK_MARK); - JUT_ASSERT(VERSION_SELECT(21613, 21613, 21693, 21693), tmp_img != NULL); + JUT_ASSERT(VERSION_SELECT(21506, 21613, 21693, 21693), tmp_img != NULL); void* tmp_img_data = reinterpret_cast(reinterpret_cast(tmp_img) + tmp_img->imageOffset); mSightPacket.setLockTex(tmp_img_data); mSightPacket.setImage(tmp_img); @@ -12390,9 +12411,9 @@ void daPy_lk_c::playerInit() { ResTIMG* linktex_casual = (ResTIMG*)dComIfG_getObjectRes(l_arcName, LINK_BTI_LINKTEXBCI4); int num_linktex_headers_seen = 0; J3DTexture* texture = mpCLModelData->getTexture(); - JUT_ASSERT(VERSION_SELECT(21684, 21684, 21764, 21764), texture != NULL); + JUT_ASSERT(VERSION_SELECT(21577, 21684, 21764, 21764), texture != NULL); JUTNameTab* textureName = mpCLModelData->getTextureName(); - JUT_ASSERT(VERSION_SELECT(21686, 21686, 21766, 21766), textureName != NULL); + JUT_ASSERT(VERSION_SELECT(21579, 21686, 21766, 21766), textureName != NULL); for (u16 i = 0; i < texture->getNum(); i++) { const char* texName = textureName->getName(i); if (strcmp(texName, "linktexS3TC") != 0) { @@ -12469,10 +12490,6 @@ daPy_footData_c::daPy_footData_c() {} /* 80127160-80127B50 .text makeBgWait__9daPy_lk_cFv */ cPhs_State daPy_lk_c::makeBgWait() { - cXyz local_38; - cXyz local_44; - cXyz local_50; - #if VERSION > VERSION_DEMO if ((int)m352E != 0) { m352E--; @@ -12574,7 +12591,7 @@ cPhs_State daPy_lk_c::makeBgWait() { } else if (startMode == 9) { ship->setStartModeWarp(); #if VERSION > VERSION_DEMO - local_38.set(current.pos.x, current.pos.y + 1500.0f, current.pos.z); + cXyz local_38(current.pos.x, current.pos.y + 1500.0f, current.pos.z); fpc_ProcID uVar8 = fopAcM_create(PROC_TORNADO, 2, &local_38, fopAcM_GetRoomNo(this)); ship->setTactWarpID(uVar8); #endif @@ -12634,8 +12651,8 @@ cPhs_State daPy_lk_c::makeBgWait() { procWait_init(); } } else if (startMode == 7) { - local_44.set(current.pos.x + 200.0f * cM_ssin(shape_angle.y), 150.0f + current.pos.y, - current.pos.z + 200.0f * cM_scos(shape_angle.y)); + cXyz local_44(current.pos.x + 200.0f * cM_ssin(shape_angle.y), 150.0f + current.pos.y, + current.pos.z + 200.0f * cM_scos(shape_angle.y)); dComIfGs_setRestartRoom(local_44, shape_angle.y, getStartRoomNo()); procVomitJump_init(1); mAcch.ClrGroundHit(); @@ -12683,6 +12700,7 @@ cPhs_State daPy_lk_c::makeBgWait() { m3580 = dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd); m357C = m3580; if (sceneMode == 4) { + cXyz local_50; mDoMtx_multVecZero(mpCLModel->getAnmMtx(0), &local_50); dComIfGp_particle_setP1(dPa_name::ID_AK_SN_OSHIRIKUROKOGE, &local_50); } @@ -12734,10 +12752,9 @@ void daPy_lk_c::setSeAnime(const daPy_anmHeap_c* anmHeap, J3DFrameCtrl* frameCtr u32 data_size = fileHeader->mFileSize - fileHeader->mSeAnmOffset; const u32 l_sanm_buffer_size = 0x200; - JUT_ASSERT(VERSION_SELECT(22228, 22228, 22318, 22318), data_size < l_sanm_buffer_size); + JUT_ASSERT(VERSION_SELECT(22108, 22228, 22318, 22318), data_size < l_sanm_buffer_size); - u8* seAnmPtr = reinterpret_cast(anmHeap->m_buffer) + fileHeader->mSeAnmOffset; - cLib_memCpy(m_sanm_buffer, seAnmPtr, data_size); + cLib_memCpy(m_sanm_buffer, (u8*)(anmHeap->m_buffer) + fileHeader->mSeAnmOffset, data_size); mpSeAnmFrameCtrl = frameCtrl; mSeAnmIdx = anmHeap->mIdx; m34F0 = anmHeap->field_0x6; @@ -12750,8 +12767,7 @@ void daPy_lk_c::setSeAnime(const daPy_anmHeap_c* anmHeap, J3DFrameCtrl* frameCtr void daPy_lk_c::initSeAnime() { if (mpSeAnmFrameCtrl) { s16 loop = mpSeAnmFrameCtrl->getLoop(); - u32 direction = mpSeAnmFrameCtrl->getRate() >= 0.0f ? 1 : -1; - mJAIZelAnime.initActorAnimSound(m_sanm_buffer, direction, loop); + mJAIZelAnime.initActorAnimSound(m_sanm_buffer, mpSeAnmFrameCtrl->getRate() >= 0.0f ? 1 : -1, loop); } if (mpSeAnmFrameCtrl->getAttribute() == J3DFrameCtrl::EMode_LOOP) { diff --git a/src/d/actor/d_a_player_npc.cpp b/src/d/actor/d_a_player_npc.cpp index f21a4a52d..b1e399b9e 100644 --- a/src/d/actor/d_a_player_npc.cpp +++ b/src/d/actor/d_a_player_npc.cpp @@ -17,12 +17,17 @@ int daPy_npc_c::check_initialRoom() { if (mAcch.GetGroundH() == -G_CM3D_F_INF || dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd) == 4) { return 0; } +#if VERSION == VERSION_DEMO + fopAcM_SetHomeRoomNo(this, dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd)); + fopAcM_SetRoomNo(this, dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd)); +#else int roomNo = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd); if (roomNo < 0 || !dComIfGp_roomControl_checkStatusFlag(roomNo, 0x10)) { return 0; } fopAcM_SetHomeRoomNo(this, roomNo); fopAcM_SetRoomNo(this, roomNo); +#endif return -1; } return 1; @@ -30,7 +35,7 @@ int daPy_npc_c::check_initialRoom() { /* 8015A448-8015A524 .text check_moveStop__10daPy_npc_cFv */ BOOL daPy_npc_c::check_moveStop() { - int roomNo = current.roomNo; + int roomNo = fopAcM_GetRoomNo(this); BOOL hasBgW = dComIfGp_roomControl_checkStatusFlag(roomNo, 0x10); if ((roomNo < 0 || !hasBgW)) { if (!hasBgW || m4E8 >= 30) { @@ -50,10 +55,10 @@ BOOL daPy_npc_c::check_moveStop() { /* 8015A524-8015A590 .text setRestart__10daPy_npc_cFSc */ void daPy_npc_c::setRestart(s8 option) { if (option == dComIfGs_getRestartOption()) { - bool playerInDoor = dComIfGp_getPlayer(0)->eventInfo.checkCommandDoor(); + BOOL playerInDoor = dComIfGp_getPlayer(0)->eventInfo.checkCommandDoor(); s8 roomNo = current.roomNo; s8 optionRoomNo = dComIfGs_getRestartOptionRoomNo(); - if (!playerInDoor && roomNo != optionRoomNo) { + if (playerInDoor == FALSE && roomNo != optionRoomNo) { unconditionalSetRestart(option); } } @@ -76,13 +81,13 @@ void daPy_npc_c::setOffsetHomePos() { /* 8015A6A4-8015AA0C .text setPointRestart__10daPy_npc_cFsSc */ void daPy_npc_c::setPointRestart(s16 i_point, s8 option) { - JUT_ASSERT(157, dComIfGp_getStagePlayer() != NULL); + JUT_ASSERT(DEMO_SELECT(152, 157), dComIfGp_getStagePlayer() != NULL); stage_scls_info_dummy_class* sclsinfo = dComIfGp_getStageSclsInfo(); - JUT_ASSERT(159, sclsinfo != NULL); + JUT_ASSERT(DEMO_SELECT(154, 159), sclsinfo != NULL); - JUT_ASSERT(161, 0 <= i_point && i_point < sclsinfo->num); + JUT_ASSERT(DEMO_SELECT(156, 161), 0 <= i_point && i_point < sclsinfo->num); stage_scls_info_class* scls_data = sclsinfo->m_entries; - JUT_ASSERT(163, scls_data != NULL); + JUT_ASSERT(DEMO_SELECT(158, 163), scls_data != NULL); stage_actor_data_class* player_data = dComIfGp_getStagePlayer()->m_entries; int scls_start_code = scls_data[i_point].mStart; @@ -94,7 +99,7 @@ void daPy_npc_c::setPointRestart(s16 i_point, s8 option) { } player_data++; } - JUT_ASSERT(174, i != dComIfGp_getStagePlayerNum()); + JUT_ASSERT(DEMO_SELECT(169, 174), i != dComIfGp_getStagePlayerNum()); home.pos = player_data->base.position; home.angle.y = player_data->base.angle.y; @@ -134,10 +139,7 @@ BOOL daPy_npc_c::initialRestartOption(s8 option, BOOL save) { if (!partner) { dComIfGp_setCb1Player(this); if (save && option != dComIfGs_getRestartOption()) { - s16 rotY; - s8 roomNo = current.roomNo; - rotY = home.angle.y; - dComIfGs_setRestartOption(&home.pos, rotY, roomNo, option); + dComIfGs_setRestartOption(&home.pos, home.angle.y, current.roomNo, option); } return TRUE; } diff --git a/src/d/actor/d_a_player_particle.inc b/src/d/actor/d_a_player_particle.inc index fb0cfa2d1..8a7a7580c 100644 --- a/src/d/actor/d_a_player_particle.inc +++ b/src/d/actor/d_a_player_particle.inc @@ -381,7 +381,8 @@ void daPy_waterDropPcallBack_c::execute(JPABaseEmitter* emitter, JPABaseParticle /* 80129F48-80129F98 .text execute__22daPy_followEcallBack_cFP14JPABaseEmitter */ void daPy_followEcallBack_c::execute(JPABaseEmitter* emitter) { emitter->setGlobalTranslation(mPos.x, mPos.y, mPos.z); - JGeometry::TVec3 rot(mAngle.x, mAngle.y, mAngle.z); + JGeometry::TVec3 rot; + rot.set(mAngle.x, mAngle.y, mAngle.z); emitter->setGlobalRotation(rot); } diff --git a/src/d/actor/d_a_player_rope.inc b/src/d/actor/d_a_player_rope.inc index da1cc266c..ac16162c5 100644 --- a/src/d/actor/d_a_player_rope.inc +++ b/src/d/actor/d_a_player_rope.inc @@ -89,7 +89,7 @@ int daPy_lk_c::changeRopeEndProc(int param_0) { /* 801430D4-80143138 .text checkSpecialRope__9daPy_lk_cFv */ BOOL daPy_lk_c::checkSpecialRope() { - if ((!strcmp(dComIfGp_getStartStageName(), "GanonK")) && (mActorKeepEquip.getActor() == NULL)) { + if (!strcmp(dComIfGp_getStartStageName(), "GanonK") && mActorKeepEquip.getActor() == NULL) { return true; } else { return false; @@ -969,15 +969,24 @@ BOOL daPy_lk_c::procRopeUp_init() { dVar5 = dVar5 - 60.0f; if (dVar5 < dVar4) { dVar4 = dVar5; - } else if ((fopAcM_GetName(rope)) == PROC_HIMO2 || (checkSpecialRope())) { + } else if ( + fopAcM_GetName(rope) == PROC_HIMO2 || +#if VERSION == VERSION_DEMO + !strcmp(dComIfGp_getStartStageName(), "GanonK") +#else + checkSpecialRope() +#endif + ) { mProcVar0.m3570 = 1; } } if (dVar4 <= current.pos.y) { if (specialRopeHangUp()) { return true; +#if VERSION > VERSION_DEMO } else if (changeRopeToHangProc()) { return true; +#endif } else { return procRopeHangWait_init(0); } @@ -1151,13 +1160,20 @@ BOOL daPy_lk_c::procRopeSwingStart() { } } } +#if VERSION == VERSION_DEMO + mDoMtx_stack_c::transS(mRopePos.x, mRopePos.y, mRopePos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, 0); + mDoMtx_stack_c::multVec(&local_28, ¤t.pos); +#endif if (mAcch.ChkWallHit()) { procRopeSwing_init(NULL, shape_angle.x); } } +#if VERSION > VERSION_DEMO mDoMtx_stack_c::transS(mRopePos.x, mRopePos.y, mRopePos.z); mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, 0); mDoMtx_stack_c::multVec(&local_28, ¤t.pos); +#endif return true; } diff --git a/src/d/actor/d_a_player_swim.inc b/src/d/actor/d_a_player_swim.inc index 20ef34707..7214a2580 100644 --- a/src/d/actor/d_a_player_swim.inc +++ b/src/d/actor/d_a_player_swim.inc @@ -114,7 +114,15 @@ BOOL daPy_lk_c::changeSwimProc() { BOOL res; cXyz local_18; - if (checkNoResetFlg0(daPyFlg0_UNK80) && !checkModeFlg(ModeFlg_IN_SHIP | ModeFlg_SWIM) && !checkNoControll() && mDemo.getDemoMode() != daPy_demo_c::DEMO_PFALL_e && m35D0 - current.pos.y > m_HIO->mSwim.m.field_0x24) { + if ( + checkNoResetFlg0(daPyFlg0_UNK80) && + !checkModeFlg(ModeFlg_IN_SHIP | ModeFlg_SWIM) && +#if VERSION > VERSION_DEMO + !checkNoControll() && +#endif + mDemo.getDemoMode() != daPy_demo_c::DEMO_PFALL_e && + m35D0 - current.pos.y > m_HIO->mSwim.m.field_0x24 + ) { dComIfGp_setItemTimeCount(900); dComIfGp_setItemTimeMax(900); @@ -254,12 +262,16 @@ BOOL daPy_lk_c::changeSwimOutProc() { /* 8013D530-8013D638 .text setSwimMoveAnime__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ void daPy_lk_c::setSwimMoveAnime(daPy_ANM swimMoveAnm) { - f32 startFrame = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); - f32 endFrame = startFrame * mFrameCtrlUnder[UNDER_MOVE0_e].getEnd(); - f32 rate = (std::fabsf(mVelocity) * (m_HIO->mSwim.m.field_0x54 - m_HIO->mSwim.m.field_0x50) / mMaxNormalSpeed) + - m_HIO->mSwim.m.field_0x50 + - (getSwimTimerRate() * m_HIO->mSwim.m.field_0x74); - setSingleMoveAnime(swimMoveAnm, rate, 0.0f, -1, m_HIO->mSwim.m.field_0x58); + f32 endFrame = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() * mFrameCtrlUnder[UNDER_MOVE0_e].getEnd(); + setSingleMoveAnime( + swimMoveAnm, + (std::fabsf(mVelocity) * (m_HIO->mSwim.m.field_0x54 - m_HIO->mSwim.m.field_0x50) / mMaxNormalSpeed) + + m_HIO->mSwim.m.field_0x50 + + (getSwimTimerRate() * m_HIO->mSwim.m.field_0x74), + 0.0f, + -1, + m_HIO->mSwim.m.field_0x58 + ); mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(endFrame * mFrameCtrlUnder[UNDER_MOVE0_e].getEnd()); mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); } @@ -452,8 +464,13 @@ BOOL daPy_lk_c::procSwimWait() { if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK10_e)) { fopAc_ac_c* talkEventPartner = fopAcM_getTalkEventPartner(this); if (talkEventPartner) { - s16 targetAngleY = cLib_targetAngleY(¤t.pos, &talkEventPartner->eyePos); - cLib_addCalcAngleS(&shape_angle.y, targetAngleY, m_HIO->mTurn.m.field_0x6, m_HIO->mTurn.m.field_0x8, m_HIO->mTurn.m.field_0xA); + cLib_addCalcAngleS( + &shape_angle.y, + cLib_targetAngleY(¤t.pos, &talkEventPartner->eyePos), + m_HIO->mTurn.m.field_0x6, + m_HIO->mTurn.m.field_0x8, + m_HIO->mTurn.m.field_0xA + ); current.angle.y = shape_angle.y; } } diff --git a/src/d/actor/d_a_player_sword.inc b/src/d/actor/d_a_player_sword.inc index 7f003b8e2..70061f439 100644 --- a/src/d/actor/d_a_player_sword.inc +++ b/src/d/actor/d_a_player_sword.inc @@ -58,8 +58,7 @@ void daPy_lk_c::setSwordModel(BOOL r28) u8* buffer; - J3DAnmTransform* bck = - checkNormalSwordEquip() ? getItemAnimeResource(LKANM_BCK_CUTAA) : getItemAnimeResource(LKANM_BCK_CUTAMS); + J3DAnmTransform* bck = checkNormalSwordEquip() ? getItemAnimeResource(LKANM_BCK_CUTAA) : getItemAnimeResource(LKANM_BCK_CUTAMS); mEquipItem = daPyItem_SWORD_e; JKRHeap* oldHeap = setItemHeap(); @@ -1509,18 +1508,26 @@ BOOL daPy_lk_c::procCutRoll_init() { offResetFlg0(daPyRFlg0_NOT_ATTACKING); if (checkNormalSwordEquip()) { m35A4 = m_HIO->mCut.mCutRoll.m.field_0x20; +#if VERSION == VERSION_DEMO + mAtCyl.SetAtAtp(2); +#else if (checkNoResetFlg1(daPyFlg1_SOUP_POWER_UP)) { mAtCyl.SetAtAtp(4); } else { mAtCyl.SetAtAtp(2); } +#endif } else { m35A4 = m_HIO->mCut.mCutRoll.m.field_0x24; +#if VERSION == VERSION_DEMO + mAtCyl.SetAtAtp(4); +#else if (checkNoResetFlg1(daPyFlg1_SOUP_POWER_UP)) { mAtCyl.SetAtAtp(8); } else { mAtCyl.SetAtAtp(4); } +#endif } mAtCyl.SetR(m35A4 * 0.5f); m34D0 = m_HIO->mCut.mCutRoll.m.field_0x2; @@ -1774,8 +1781,7 @@ BOOL daPy_lk_c::procCutTurnMove() { offModeFlg(ModeFlg_00000001); m3598 = 1.0f; } - if (mEquipItem == daPyItem_BOKO_e && (mAnmRatioUpper[UPPER_MOVE0_e].getAnmTransform() != (J3DAnmTransform*)0x0)) - { + if (mEquipItem == daPyItem_BOKO_e && (mAnmRatioUpper[UPPER_MOVE0_e].getAnmTransform() != NULL)) { mFrameCtrlUpper[UPPER_MOVE0_e].setFrame(mFrameCtrlUpper[UPPER_MOVE0_e].getEnd() - 0.001f); mAnmRatioUpper[UPPER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrlUpper[UPPER_MOVE0_e].getFrame()); } diff --git a/src/d/actor/d_a_player_whide.inc b/src/d/actor/d_a_player_whide.inc index cfedcbe5a..b114eca09 100644 --- a/src/d/actor/d_a_player_whide.inc +++ b/src/d/actor/d_a_player_whide.inc @@ -215,7 +215,11 @@ BOOL daPy_lk_c::checkWHideFrontFloor(cXyz* param_0) { if (checkNoResetFlg0(daPyFlg0_UNK80000000) && current.pos.y > ground_y) { ground_y = current.pos.y; } - return std::fabsf(ground_y - current.pos.y) < 5.0f; + if (std::fabsf(ground_y - current.pos.y) < 5.0f) { + return TRUE; + } else { + return FALSE; + } } /* 80137828-80137914 .text checkWHideModeChange__9daPy_lk_cFP4cXyz */ diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp index 8eabe2f47..5a40bc4b0 100644 --- a/src/d/actor/d_a_rd.cpp +++ b/src/d/actor/d_a_rd.cpp @@ -444,7 +444,7 @@ bool daRd_c::checkPlayerInAttack() { /* 00000A38-00000AA0 .text checkPlayerInCry__6daRd_cFv */ bool daRd_c::checkPlayerInCry() { daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer(); - return dLib_checkActorInFan(current.pos, player, mHeadAngle, l_HIO.mCrySpreadAngle, l_HIO.mCryRadius, 100.0f); + return dLib_checkActorInFan(current.pos, player, mHeadAngle, l_HIO.mCrySpreadAngle, l_HIO.mCryRadius, DEMO_SELECT(1000.0f, 100.0f)); } /* 00000AA0-00000D78 .text lookBack__6daRd_cFv */ @@ -638,7 +638,7 @@ bool daRd_c::checkTgHit() { break; case AT_TYPE_NORMAL_ARROW: mHitType = 5; - if (!dLib_checkActorInCircle(current.pos, player, l_HIO.mCryRadius, 1000.0f)) { + if (!dLib_checkActorInCircle(current.pos, player, l_HIO.mCryRadius, DEMO_SELECT(100.0f, 1000.0f))) { fopAcM_seStart(this, JA_SE_LK_ARROW_HIT, 0x44); mCE0 = 40; r29 = false; @@ -792,7 +792,7 @@ void daRd_c::modeWait() { fopAc_ac_c* player = dComIfGp_getLinkPlayer(); BOOL isOto = fopAcM_otoCheck(this, mAreaRadius); if (!isLinkControl()) { - if (dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, 1000.0f)) { + if (dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, DEMO_SELECT(100.0f, 1000.0f))) { // The ReDead will only wake up if the player is in a 200-unit-tall cylinder around its spawn point. // Bug: If the ReDead spawned high up in the air, its spawn point will remain there even after the ReDead // itself has fallen down to ground level. This means it will not be able to notice the player properly. @@ -808,7 +808,7 @@ void daRd_c::modeWait() { } } - if (dLib_checkActorInCircle(mSpawnPos, this, 100.0f, 1000.0f)) { + if (dLib_checkActorInCircle(mSpawnPos, this, 100.0f, DEMO_SELECT(100.0f, 1000.0f))) { cLib_addCalcAngleS2(&shape_angle.y, mSpawnAngle, 0x4, 0x200); if (cLib_distanceAngleS(shape_angle.y, mSpawnAngle) <= 0x200) { shape_angle.y = mSpawnAngle; @@ -819,7 +819,7 @@ void daRd_c::modeWait() { setAnm(AnmPrm_TACHIP1, false); } } - } else if (!dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, 1000.0f) || + } else if (!dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, DEMO_SELECT(100.0f, 1000.0f)) || !dLib_checkActorInCircle(mSpawnPos, player, mAreaRadius, 100.0f) ) { modeProcInit(MODE_RETURN); @@ -922,7 +922,10 @@ void daRd_c::modeMove() { return; } daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer(); - if (!dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, 1000.0f) || !dLib_checkActorInCircle(mSpawnPos, player, mAreaRadius, 100.0f)) { + if ( + !dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, DEMO_SELECT(100.0f, 1000.0f)) || + !dLib_checkActorInCircle(mSpawnPos, player, mAreaRadius, 100.0f) + ) { modeProcInit(MODE_RETURN); return; } @@ -1175,7 +1178,7 @@ void daRd_c::modeReturn() { setAnm(AnmPrm_WALK, false); - if (dLib_checkActorInCircle(mSpawnPos, this, 100.0f, 1000.0f)) { + if (dLib_checkActorInCircle(mSpawnPos, this, 100.0f, DEMO_SELECT(100.0f, 1000.0f))) { speedF = 0.0f; cLib_addCalcAngleS2(&shape_angle.y, mSpawnAngle, 0xA, 0x200); if (cLib_distanceAngleS(shape_angle.y, mSpawnAngle) <= 0x200) { @@ -1194,7 +1197,7 @@ void daRd_c::modeReturn() { daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer(); BOOL isOto = fopAcM_otoCheck(this, mAreaRadius); if (!isLinkControl()) { - if (dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, 1000.0f)) { + if (dLib_checkActorInCircle(mSpawnPos, this, mAreaRadius, DEMO_SELECT(100.0f, 1000.0f))) { if (dLib_checkActorInCircle(mSpawnPos, player, mAreaRadius, 100.0f)) { if ((dLib_checkActorInCircle(mSpawnPos, player, mAreaRadius, 100.0f) && player->speedF > 10.0f + REG12_F(4)) || isOto || @@ -1224,7 +1227,7 @@ void daRd_c::modeSilentPray() { fopAc_ac_c* corpse; if (fopAcM_SearchByID(mCorpseID, &corpse)) { mTargetPos = corpse->current.pos; - if (dLib_checkActorInCircle(mTargetPos, this, 200.0f, 1000.0f)) { + if (dLib_checkActorInCircle(mTargetPos, this, 200.0f, DEMO_SELECT(100.0f, 1000.0f))) { setAnm(AnmPrm_TACHIP1, false); speedF = 0.0f; } else { @@ -1257,7 +1260,7 @@ void daRd_c::modeSwWaitInit() { /* 00003428-00003480 .text modeSwWait__6daRd_cFv */ void daRd_c::modeSwWait() { - if (dComIfGs_isSwitch(mSwNo, current.roomNo)) { + if (dComIfGs_isSwitch(mSwNo, fopAcM_GetRoomNo(this))) { modeProcInit(MODE_KANOKE); } } @@ -1659,7 +1662,8 @@ bool daRd_c::_execute() { } if (enemy_ice(&mEnemyIce)) { - mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + J3DModel* model = mpMorf->getModel(); + model->setBaseTRMtx(mDoMtx_stack_c::get()); mpMorf->calc(); speedF = 0.0f; setAttention(); @@ -1752,7 +1756,11 @@ bool daRd_c::_draw() { } else { mBrkAnm.entry(modelData); mBtkAnm.entry(modelData); +#if VERSION == VERSION_DEMO + mpMorf->entryDL(); +#else mpMorf->updateDL(); +#endif mBtkAnm.remove(modelData); mBrkAnm.remove(modelData); } diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index d9924e974..dd6a47c29 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -81,7 +81,7 @@ void dComIfG_play_c::itemInit() { mItemKeyNumCount = 0; mItemMaxLifeCount = 0; mItemMagicCount = 0; - field_0x48da = 0; + mItemNowMagicCount = 0; mItemMaxMagicCount = 0; mItemPictureNumCount = 0; mItemArrowNumCount = 0; diff --git a/src/d/d_meter.cpp b/src/d/d_meter.cpp index fe7a4a0b3..cf5dd2155 100644 --- a/src/d/d_meter.cpp +++ b/src/d/d_meter.cpp @@ -3823,7 +3823,11 @@ void dMeter_magicInit(sub_meter_class* i_Meter) { i_Meter->field_0x2f14.set(((J2DPicture*)i_Meter->field_0x0f38[0].pane)->getBlack()); i_Meter->field_0x2f18.set(((J2DPicture*)i_Meter->field_0x0f38[1].pane)->getWhite()); i_Meter->field_0x2f1c.set(((J2DPicture*)i_Meter->field_0x0f38[1].pane)->getBlack()); +#if VERSION == VERSION_DEMO + dMeter_magicTrans(i_Meter, 0.0f, 0.0f); +#else dMeter_magicTransNowInit(i_Meter); +#endif fopMsgM_setInitAlpha(&i_Meter->field_0x10f8); fopMsgM_setInitAlpha(&i_Meter->field_0x11a0); fopMsgM_setInitAlpha(&i_Meter->field_0x11d8); @@ -3879,8 +3883,10 @@ void dMeter_magicGaugeMove(sub_meter_class* i_Meter) { } i_Meter->field_0x0f38[0].mUserArea = 0; dMeter_magicTransScale(i_Meter, 0.0f, 0.0f, 1.0f); +#if VERSION > VERSION_DEMO dMeter_magicInitTrans(i_Meter); dMeter_magicChange(i_Meter, i_Meter->field_0x3016 / 100.0f); +#endif } if (dComIfGp_getItemMaxMagicCount() != 0) { sVar4 = dComIfGs_getMaxMagic() + dComIfGp_getItemMaxMagicCount(); @@ -3979,8 +3985,13 @@ void dMeter_flyGaugeMove(sub_meter_class* i_Meter, u8 param_2, s16 param_3, s16 JUtility::TColor color6(0xB4, 0xB4, 0xFF, 0x00); if (param_2 != 0) { + f32 f30 = (f32)(param_4) / (f32)(param_3) * 25.0f * 8.0f; +#if VERSION == VERSION_DEMO + dMeter_magicInitTrans(i_Meter, 0.0f, 0.0f); +#else dMeter_magicInitTrans(i_Meter); - dMeter_magicChange(i_Meter, (((f32)(param_4)) / (f32)(param_3) * 25.0f * 8.0f)); +#endif + dMeter_magicChange(i_Meter, f30); if (i_Meter->field_0x0f38[0].mUserArea == 0) { ((J2DPicture*)i_Meter->field_0x11a0.pane)->setWhite(color1); ((J2DPicture*)i_Meter->field_0x11a0.pane)->setBlack(color2); @@ -4025,7 +4036,11 @@ void dMeter_flyGaugeMove(sub_meter_class* i_Meter, u8 param_2, s16 param_3, s16 } else { dVar8 = 0.0f; i_Meter->field_0x11a0.mUserArea = 0; +#if VERSION == VERSION_DEMO + dMeter_magicTrans(i_Meter, 0.0f, 0.0f); +#else dMeter_magicTransNowInit(i_Meter); +#endif } if (i_Meter->field_0x1130.mUserArea != 0) { i_Meter->field_0x1130.mUserArea = 0; @@ -4036,8 +4051,12 @@ void dMeter_flyGaugeMove(sub_meter_class* i_Meter, u8 param_2, s16 param_3, s16 /* 801F9A24-801F9B3C .text dMeter_magicChange__FP15sub_meter_classf */ void dMeter_magicChange(sub_meter_class* i_Meter, f32 param_2) { - g_dComIfG_gameInfo.play.field_0x48da = (param_2 / i_Meter->field_0x0f38[0].mSizeOrig.x) * 4.0f; + dComIfGp_setItemNowMagic((param_2 / i_Meter->field_0x0f38[0].mSizeOrig.x) * 4.0f); +#if VERSION == VERSION_DEMO + dMeter_magicTrans(i_Meter, 0.0f, 0.0f); +#else dMeter_magicTransNowInit(i_Meter); +#endif for (s32 i = 0; i < 8; i++) { if (param_2 >= i_Meter->field_0x0f38[i].mSizeOrig.x) { fopMsgM_paneScaleXY(&i_Meter->field_0x0f38[i], 1.0f); @@ -4058,14 +4077,12 @@ void dMeter_magicChange(sub_meter_class* i_Meter, f32 param_2) { #if VERSION == VERSION_DEMO void dMeter_magicTrans(sub_meter_class* i_Meter, f32 param_1, f32 param_2) { - f32 fVar1; - + f32 y; if (dComIfGs_getMaxLife() <= 0x2B) { - fVar1 = -22.0f + param_2; + y = -22.0f + param_2; } else { - fVar1 = param_2; + y = param_2; } - f32 y = fVar1; f32 fVar2 = param_1 + (i_Meter->field_0x10f8.mPosCenter.x - i_Meter->field_0x10f8.mPosCenterOrig.x); fopMsgM_paneTrans(&i_Meter->field_0x10f8, fVar2, y); fVar2 = param_1 + (i_Meter->field_0x11a0.mPosCenter.x - i_Meter->field_0x11a0.mPosCenterOrig.x); @@ -4080,14 +4097,12 @@ void dMeter_magicTrans(sub_meter_class* i_Meter, f32 param_1, f32 param_2) { #else /* 801F9B3C-801F9C14 .text dMeter_magicTransNowInit__FP15sub_meter_class */ void dMeter_magicTransNowInit(sub_meter_class* i_Meter) { - f32 fVar1; - + f32 y; if (dComIfGs_getMaxLife() <= 0x2B) { - fVar1 = -22.0f; + y = -22.0f; } else { - fVar1 = 0.0f; + y = 0.0f; } - f32 y = fVar1; f32 fVar2 = i_Meter->field_0x10f8.mPosCenter.x - i_Meter->field_0x10f8.mPosCenterOrig.x; fopMsgM_paneTrans(&i_Meter->field_0x10f8, fVar2, y); fVar2 = i_Meter->field_0x11a0.mPosCenter.x - i_Meter->field_0x11a0.mPosCenterOrig.x; @@ -4100,16 +4115,32 @@ void dMeter_magicTransNowInit(sub_meter_class* i_Meter) { } } #endif + +#if VERSION == VERSION_DEMO +void dMeter_magicInitTrans(sub_meter_class* i_Meter, f32 param_1, f32 param_2) { + /* Nonmatching - regalloc */ + f32 y; + if (dComIfGs_getMaxLife() <= 0x2B) { + y = -22.0f + param_2; + } else { + y = param_2; + } + fopMsgM_paneTrans(&i_Meter->field_0x10f8, param_1, y); + fopMsgM_paneTrans(&i_Meter->field_0x11a0, param_1, y); + fopMsgM_paneTrans(&i_Meter->field_0x11d8, param_1, y); + for (s32 i = 0; i < 8; i++) { + fopMsgM_paneTrans(&i_Meter->field_0x0f38[i], param_1, y); + } +} +#else /* 801F9C14-801F9CCC .text dMeter_magicInitTrans__FP15sub_meter_class */ void dMeter_magicInitTrans(sub_meter_class* i_Meter) { - f32 fVar1; - + f32 y; if (dComIfGs_getMaxLife() <= 0x2B) { - fVar1 = -22.0f; + y = -22.0f; } else { - fVar1 = 0.0f; + y = 0.0f; } - f32 y = fVar1; fopMsgM_paneTrans(&i_Meter->field_0x10f8, 0.0f, y); fopMsgM_paneTrans(&i_Meter->field_0x11a0, 0.0f, y); fopMsgM_paneTrans(&i_Meter->field_0x11d8, 0.0f, y); @@ -4117,6 +4148,7 @@ void dMeter_magicInitTrans(sub_meter_class* i_Meter) { fopMsgM_paneTrans(&i_Meter->field_0x0f38[i], 0.0f, y); } } +#endif /* 801F9CCC-801F9F18 .text dMeter_magicTransScale__FP15sub_meter_classfff */ void dMeter_magicTransScale(sub_meter_class* i_Meter, f32 param_2, f32 param_3, f32 param_4) { diff --git a/src/d/d_place_name.cpp b/src/d/d_place_name.cpp index 9d9790fad..445d13943 100644 --- a/src/d/d_place_name.cpp +++ b/src/d/d_place_name.cpp @@ -83,10 +83,9 @@ void dPlace_name_c::setScreen(const char* name, JKRArchive* arc) { /* 801610A8-80161100 .text _openAnime__13dPlace_name_cFv */ BOOL dPlace_name_c::_openAnime() { - if (pane.mUserArea < 10) { - pane.mUserArea++; - s16 tmp = pane.mUserArea; - f32 alpha = fopMsgM_valueIncrease(10, tmp, 0); + if (getCounter() < 10) { + addCounter(); + f32 alpha = fopMsgM_valueIncrease(10, getCounter(), 0); fopMsgM_setNowAlpha(&pane, alpha); } @@ -97,14 +96,13 @@ BOOL dPlace_name_c::_openAnime() { BOOL dPlace_name_c::_closeAnime() { BOOL ret = FALSE; - if (pane.mUserArea > 0) { - pane.mUserArea--; - s16 tmp = pane.mUserArea; - f32 alpha = fopMsgM_valueIncrease(10, tmp, 0); + if (getCounter() > 0) { + decCounter(); + f32 alpha = fopMsgM_valueIncrease(10, getCounter(), 0); fopMsgM_setNowAlpha(&pane, alpha); } - if (pane.mUserArea <= 0) + if (getCounter() <= 0) ret = TRUE; return ret; @@ -175,7 +173,7 @@ cPhs_State dPn_c::_create() { #else DCStoreRangeNoSync(mpTIMG, 0x3c00); #endif - ((J2DPicture*)dPn_scrn->pane.pane)->changeTexture(mpTIMG, 0); + dPn_scrn->changeTexture(mpTIMG); mState = 3; } mDoExt_setCurrentHeap(oldHeap); @@ -209,7 +207,7 @@ BOOL dPn_c::_draw() { BOOL dPn_c::_delete() { JKRHeap * oldHeap = mDoExt_setCurrentHeap(mpHeap); dComIfGp_setStageNameDelete(); - delete dPn_scrn->scrn; + dPn_scrn->deleteScreen(); delete dPn_scrn; if (dvd != NULL) delete dvd; diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index f73fad38d..903fede5f 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -207,6 +207,12 @@ void dSv_player_get_item_c::onItem(int i_field, u8 i_item) { mItemFlags[i_field] |= (u8)(1 << i_item); } +void dSv_player_get_item_c::offItem(int i_field, u8 i_item) { + JUT_ASSERT(408, 0 <= i_item && i_item < 8); + + mItemFlags[i_field] &= ~(u8)(1 << i_item); +} + /* 8005955C-800595F8 .text isItem__21dSv_player_get_item_cFiUc */ BOOL dSv_player_get_item_c::isItem(int i_field, u8 i_item) { JUT_ASSERT(DEMO_SELECT(423, 429), 0 <= i_item && i_item < 8);