From b18a1e448ae63c5a77f43cf0357dffb9a8e054bf Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 6 Jan 2025 00:47:29 -0500 Subject: [PATCH] Add enums for island room numbers and indexes --- include/d/d_save.h | 117 ++++++++++++++++++++++++++++++- src/JAZelAudio/JAIZelBasic.cpp | 26 +++---- src/d/actor/d_a_agbsw0.cpp | 12 ++-- src/d/actor/d_a_lod_bg.cpp | 18 ++--- src/d/actor/d_a_obj_toripost.cpp | 2 +- src/d/actor/d_a_player_main.cpp | 3 +- src/d/actor/d_a_tag_volcano.cpp | 4 +- src/d/d_com_inf_game.cpp | 8 +-- src/d/d_kankyo.cpp | 11 +-- src/d/d_s_room.cpp | 4 +- src/d/d_save.cpp | 22 +++--- src/d/d_stage.cpp | 4 +- src/m_Do/m_Do_audio.cpp | 4 +- 13 files changed, 176 insertions(+), 59 deletions(-) diff --git a/include/d/d_save.h b/include/d/d_save.h index ebd957586..9a2e71142 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -283,6 +283,115 @@ public: STATIC_ASSERT(sizeof(dSv_player_collect_c) == 0xD); +enum dIslandRoomNo_e { + // Room 0 on the sea is not an island, it's the sea floor, used to load islands as you sail. + dIsleRoom_SeaFloor_e = 0, + + /* 0x01 */ dIsleRoom_ForsakenFortress_e = 1, + /* 0x02 */ dIsleRoom_StarIsland_e = 2, + /* 0x03 */ dIsleRoom_NorthernFairyIsland_e = 3, + /* 0x04 */ dIsleRoom_GaleIsle_e = 4, + /* 0x05 */ dIsleRoom_CrescentMoonIsland_e = 5, + /* 0x06 */ dIsleRoom_SevenStarIsles_e = 6, + /* 0x07 */ dIsleRoom_OverlookIsland_e = 7, + /* 0x08 */ dIsleRoom_FourEyeReef_e = 8, + /* 0x09 */ dIsleRoom_MotherandChildIsles_e = 9, + /* 0x0A */ dIsleRoom_SpectacleIsland_e = 10, + /* 0x0B */ dIsleRoom_WindfallIsland_e = 11, + /* 0x0C */ dIsleRoom_PawprintIsle_e = 12, + /* 0x0D */ dIsleRoom_DragonRoostIsland_e = 13, + /* 0x0E */ dIsleRoom_FlightControlPlatform_e = 14, + /* 0x0F */ dIsleRoom_WesternFairyIsland_e = 15, + /* 0x10 */ dIsleRoom_RockSpireIsle_e = 16, + /* 0x11 */ dIsleRoom_TingleIsland_e = 17, + /* 0x12 */ dIsleRoom_NorthernTriangleIsland_e = 18, + /* 0x13 */ dIsleRoom_EasternFairyIsland_e = 19, + /* 0x14 */ dIsleRoom_FireMountain_e = 20, + /* 0x15 */ dIsleRoom_StarBeltArchipelago_e = 21, + /* 0x16 */ dIsleRoom_ThreeEyeReef_e = 22, + /* 0x17 */ dIsleRoom_GreatfishIsle_e = 23, + /* 0x18 */ dIsleRoom_CyclopsReef_e = 24, + /* 0x19 */ dIsleRoom_SixEyeReef_e = 25, + /* 0x1A */ dIsleRoom_ToweroftheGods_e = 26, + /* 0x1B */ dIsleRoom_EasternTriangleIsland_e = 27, + /* 0x1C */ dIsleRoom_ThornedFairyIsland_e = 28, + /* 0x1D */ dIsleRoom_NeedleRockIsle_e = 29, + /* 0x1E */ dIsleRoom_IsletofSteel_e = 30, + /* 0x1F */ dIsleRoom_StoneWatcherIsland_e = 31, + /* 0x20 */ dIsleRoom_SouthernTriangleIsland_e = 32, + /* 0x21 */ dIsleRoom_PrivateOasis_e = 33, + /* 0x22 */ dIsleRoom_BombIsland_e = 34, + /* 0x23 */ dIsleRoom_BirdsPeakRock_e = 35, + /* 0x24 */ dIsleRoom_DiamondSteppeIsland_e = 36, + /* 0x25 */ dIsleRoom_FiveEyeReef_e = 37, + /* 0x26 */ dIsleRoom_SharkIsland_e = 38, + /* 0x27 */ dIsleRoom_SouthernFairyIsland_e = 39, + /* 0x28 */ dIsleRoom_IceRingIsle_e = 40, + /* 0x29 */ dIsleRoom_ForestHaven_e = 41, + /* 0x2A */ dIsleRoom_CliffPlateauIsles_e = 42, + /* 0x2B */ dIsleRoom_HorseshoeIsland_e = 43, + /* 0x2C */ dIsleRoom_OutsetIsland_e = 44, + /* 0x2D */ dIsleRoom_HeadstoneIsland_e = 45, + /* 0x2E */ dIsleRoom_TwoEyeReef_e = 46, + /* 0x2F */ dIsleRoom_AngularIsles_e = 47, + /* 0x30 */ dIsleRoom_BoatingCourse_e = 48, + /* 0x31 */ dIsleRoom_FiveStarIsles_e = 49, +}; + +enum dIslandIndex_e { + dIsleIdx_ForsakenFortress_e = 0, + dIsleIdx_StarIsland_e = 1, + dIsleIdx_NorthernFairyIsland_e = 2, + dIsleIdx_GaleIsle_e = 3, + dIsleIdx_CrescentMoonIsland_e = 4, + dIsleIdx_SevenStarIsles_e = 5, + dIsleIdx_OverlookIsland_e = 6, + dIsleIdx_FourEyeReef_e = 7, + dIsleIdx_MotherandChildIsles_e = 8, + dIsleIdx_SpectacleIsland_e = 9, + dIsleIdx_WindfallIsland_e = 10, + dIsleIdx_PawprintIsle_e = 11, + dIsleIdx_DragonRoostIsland_e = 12, + dIsleIdx_FlightControlPlatform_e = 13, + dIsleIdx_WesternFairyIsland_e = 14, + dIsleIdx_RockSpireIsle_e = 15, + dIsleIdx_TingleIsland_e = 16, + dIsleIdx_NorthernTriangleIsland_e = 17, + dIsleIdx_EasternFairyIsland_e = 18, + dIsleIdx_FireMountain_e = 19, + dIsleIdx_StarBeltArchipelago_e = 20, + dIsleIdx_ThreeEyeReef_e = 21, + dIsleIdx_GreatfishIsle_e = 22, + dIsleIdx_CyclopsReef_e = 23, + dIsleIdx_SixEyeReef_e = 24, + dIsleIdx_ToweroftheGods_e = 25, + dIsleIdx_EasternTriangleIsland_e = 26, + dIsleIdx_ThornedFairyIsland_e = 27, + dIsleIdx_NeedleRockIsle_e = 28, + dIsleIdx_IsletofSteel_e = 29, + dIsleIdx_StoneWatcherIsland_e = 30, + dIsleIdx_SouthernTriangleIsland_e = 31, + dIsleIdx_PrivateOasis_e = 32, + dIsleIdx_BombIsland_e = 33, + dIsleIdx_BirdsPeakRock_e = 34, + dIsleIdx_DiamondSteppeIsland_e = 35, + dIsleIdx_FiveEyeReef_e = 36, + dIsleIdx_SharkIsland_e = 37, + dIsleIdx_SouthernFairyIsland_e = 38, + dIsleIdx_IceRingIsle_e = 39, + dIsleIdx_ForestHaven_e = 40, + dIsleIdx_CliffPlateauIsles_e = 41, + dIsleIdx_HorseshoeIsland_e = 42, + dIsleIdx_OutsetIsland_e = 43, + dIsleIdx_HeadstoneIsland_e = 44, + dIsleIdx_TwoEyeReef_e = 45, + dIsleIdx_AngularIsles_e = 46, + dIsleIdx_BoatingCourse_e = 47, + dIsleIdx_FiveStarIsles_e = 48, + + dIsleIdx_COUNT_e = 49, +}; + class dSv_player_map_c { public: void init(); @@ -306,7 +415,7 @@ public: BOOL isSaveArriveGridForAgb(int); /* 0x00 */ u32 field_0x0[4][4]; - /* 0x40 */ u8 field_0x40[49]; + /* 0x40 */ u8 mFmapBits[dIsleIdx_COUNT_e]; /* 0x71 */ u8 field_0x71[16]; /* 0x81 */ u8 field_0x81; /* 0x82 */ u8 field_0x82[0x84 - 0x82]; @@ -454,6 +563,8 @@ public: dSv_player_status_c_c* getpPlayerStatusC(int i_idx) { return &mStatusC[i_idx]; } + static const int PLAYER_STATUS_C_COUNT = 4; + static const int PACKED_STRUCT_SIZE = sizeof(dSv_player_status_a_c) + sizeof(dSv_player_status_b_c) + @@ -470,7 +581,7 @@ public: sizeof(dSv_player_info_c) + sizeof(dSv_player_config_c) + sizeof(dSv_player_priest_c) + - sizeof(dSv_player_status_c_c) * 4; + sizeof(dSv_player_status_c_c) * PLAYER_STATUS_C_COUNT; /* 0x000 */ dSv_player_status_a_c mPlayerStatusA; /* 0x018 */ dSv_player_status_b_c mPlayerStatusB; @@ -490,7 +601,7 @@ public: /* 0x1A4 */ dSv_player_config_c mConfig; /* 0x1A9 */ /* 3 bytes of alignment padding */ /* 0x1AC */ dSv_player_priest_c mPriest; - /* 0x1BC */ dSv_player_status_c_c mStatusC[4]; + /* 0x1BC */ dSv_player_status_c_c mStatusC[PLAYER_STATUS_C_COUNT]; /* 0x37C */ /* 4 bytes of alignment padding */ }; // Size: 0x380 diff --git a/src/JAZelAudio/JAIZelBasic.cpp b/src/JAZelAudio/JAIZelBasic.cpp index 25a7c7f6c..7667d7683 100644 --- a/src/JAZelAudio/JAIZelBasic.cpp +++ b/src/JAZelAudio/JAIZelBasic.cpp @@ -110,7 +110,7 @@ JAIZelBasic::JAIZelBasic() { field_0x00c9 = 0; field_0x00ca = 0; mCameraSeaFloorGroupInfo = 0; - mIslandRoomNo = 0; + mIslandRoomNo = dIsleRoom_SeaFloor_e; mLinkSeaFloorGroupInfo = 0; field_0x021e = 0; field_0x00cb = -1; @@ -222,7 +222,7 @@ void JAIZelBasic::resetRecover() { data->field_0x48->stop(0); } } - setScene(0, 0, 0, -1); + setScene(0, dIsleRoom_SeaFloor_e, 0, -1); load1stDynamicWave(); sceneBgmStart(); load2ndDynamicWave(); @@ -1022,7 +1022,7 @@ void JAIZelBasic::setCameraGroupInfo(u8 param_1) { } } else if (mCameraSeaFloorGroupInfo & 0x80) { OSReport("[JAIZelBasic::setCameraGroupInfo] Outer Edge -> Outer Sea\n"); - mIslandRoomNo = 0; + mIslandRoomNo = dIsleRoom_SeaFloor_e; } else if ((mCameraSeaFloorGroupInfo & 0x40) == 0 && mCameraSeaFloorGroupInfo) { OSReport("[JAIZelBasic::setCameraGroupInfo] Inner Edge -> Inner Sea\n"); } @@ -1034,7 +1034,7 @@ void JAIZelBasic::setCameraGroupInfo(u8 param_1) { /* 802A9F60-802AA2B8 .text changeSeaBgm__11JAIZelBasicFv */ void JAIZelBasic::changeSeaBgm() { if (field_0x0224 != 0x12) { return; } - if (mIslandRoomNo == 0) { return; } + if (mIslandRoomNo == dIsleRoom_SeaFloor_e) { return; } if (mMainBgmNum == JA_BGM_DIE_LINK) { return; } if (!checkEventBit(dSv_evtBit_c::MET_KORL)) { return; } if (mAudioCamera->field_0x0 == NULL) { return; } @@ -1099,7 +1099,7 @@ void JAIZelBasic::startIsleBgm() { return; } u32 bgmNum; - if (mIslandRoomNo == 44 && checkEventBit(0xe20) == 1) { + if (mIslandRoomNo == dIsleRoom_OutsetIsland_e && checkEventBit(0xe20) == 1) { bgmNum = JA_BGM_ISLAND_LINK_3; } else { bgmNum = m_isle_info[mIslandRoomNo].bgmNum; @@ -1113,7 +1113,7 @@ void JAIZelBasic::setLinkGroupInfo(u8 param_1) { if (field_0x0224 != 0x12) { return; } - if (mIslandRoomNo == 0) { + if (mIslandRoomNo == dIsleRoom_SeaFloor_e) { return; } if (param_1 == mLinkSeaFloorGroupInfo) { @@ -1159,7 +1159,7 @@ void JAIZelBasic::setScene(s32 sceneNum, s32 roomNo, s32 param_3, s32 layerNo) { } OSReport(" --- Isle = %d\n", mIslandRoomNo); if (param_3 != 1) { - if (mIslandRoomNo == 44) { + if (mIslandRoomNo == dIsleRoom_OutsetIsland_e) { if (layerNo == 10) { bgmNum = 0; } else if (checkEventBit(0x3510) == 0) { @@ -1174,21 +1174,21 @@ void JAIZelBasic::setScene(s32 sceneNum, s32 roomNo, s32 param_3, s32 layerNo) { bgmNum = m_isle_info[mIslandRoomNo].bgmNum; bgmNum = expandSceneBgmNum(bgmNum); } - } else if (mIslandRoomNo == 11) { + } else if (mIslandRoomNo == dIsleRoom_WindfallIsland_e) { if (checkEventBit(0x2e01) == 0) { bgmNum = 0; } else { bgmNum = m_isle_info[mIslandRoomNo].bgmNum; bgmNum = expandSceneBgmNum(bgmNum); } - } else if (mIslandRoomNo == 13) { + } else if (mIslandRoomNo == dIsleRoom_DragonRoostIsland_e) { if (layerNo == 8 || layerNo == 10 || layerNo == 11) { bgmNum = 0; } else { bgmNum = m_isle_info[mIslandRoomNo].bgmNum; bgmNum = expandSceneBgmNum(bgmNum); } - } else if (mIslandRoomNo == 14) { + } else if (mIslandRoomNo == dIsleRoom_FlightControlPlatform_e) { if (layerNo == 2 || layerNo == 3) { bgmNum = 0; field_0x00bd = 1; @@ -1204,7 +1204,7 @@ void JAIZelBasic::setScene(s32 sceneNum, s32 roomNo, s32 param_3, s32 layerNo) { var1 = m_isle_info[mIslandRoomNo].field_0x2; var2 = m_isle_info[mIslandRoomNo].field_0x3; } else { - mIslandRoomNo = 0; + mIslandRoomNo = dIsleRoom_SeaFloor_e; if (sceneNum == 16 && checkEventBit(0x280) == 0) { bgmNum = JA_BGM_FIND_TETRA; } else if (sceneNum == 19 && checkEventBit(0x801) == 0) { @@ -1372,7 +1372,7 @@ u32 JAIZelBasic::expandSceneBgmNum(u32 bgmNum) { /* 802AAD0C-802AAD48 .text checkLinkOnSea__11JAIZelBasicFv */ BOOL JAIZelBasic::checkLinkOnSea() { if (field_0x0224 == 0x12) { - if (mIslandRoomNo == 0) { + if (mIslandRoomNo == dIsleRoom_SeaFloor_e) { return TRUE; } else if (mLinkSeaFloorGroupInfo != 0) { return TRUE; @@ -1643,7 +1643,7 @@ int JAIZelBasic::checkOnOuterSea(f32* r4) { if (field_0x0224 != 0x12) { return -1; } - if (mIslandRoomNo == 0) { + if (mIslandRoomNo == dIsleRoom_SeaFloor_e) { return 4; } isle_area_s sp0C = mIsleArea[mIslandRoomNo]; diff --git a/src/d/actor/d_a_agbsw0.cpp b/src/d/actor/d_a_agbsw0.cpp index c2b190156..d743af9b0 100644 --- a/src/d/actor/d_a_agbsw0.cpp +++ b/src/d/actor/d_a_agbsw0.cpp @@ -907,7 +907,7 @@ u32 daAgbsw0_c::TriforceCheck(daAgb_c* agb) #else int roomNo = agb->field_0x66d; #endif - return roomNo == 0x21 ? 0x30A : 0x30B; + return roomNo == dIsleRoom_PrivateOasis_e ? 0x30A : 0x30B; } else { u8 num = dComIfGs_checkGetItemNum(dItem_JOY_PENDANT_e); @@ -922,7 +922,7 @@ u32 daAgbsw0_c::TriforceCheck(daAgb_c* agb) #else int roomNo = agb->field_0x66d; #endif - return roomNo == 0x23 ? 0x311 : 0x310; + return roomNo == dIsleRoom_BirdsPeakRock_e ? 0x311 : 0x310; } else { return 0x30F; @@ -1021,7 +1021,7 @@ u32 daAgbsw0_c::TriforceCheck(daAgb_c* agb) #else int roomNo = agb->field_0x66d; #endif - return roomNo == 0x1D ? 0x31C : 0x31D; + return roomNo == dIsleRoom_NeedleRockIsle_e ? 0x31C : 0x31D; } } if(!dComIfGs_isCollect(2, 0)) { @@ -1039,7 +1039,7 @@ u32 daAgbsw0_c::TriforceCheck(daAgb_c* agb) #else int roomNo = agb->field_0x66d; #endif - return roomNo == 0x2C ? 0x325 : 0x324; + return roomNo == dIsleRoom_OutsetIsland_e ? 0x325 : 0x324; } if(!dComIfGs_isGetCollectMap(7)) { #if VERSION == VERSION_JPN @@ -1047,7 +1047,7 @@ u32 daAgbsw0_c::TriforceCheck(daAgb_c* agb) #else int roomNo = agb->field_0x66d; #endif - return roomNo == 0x1F ? 0x327 : 0x326; + return roomNo == dIsleRoom_StoneWatcherIsland_e ? 0x327 : 0x326; } if(dComIfGs_checkGetItem(dItem_HOOKSHOT_e)) { #if VERSION == VERSION_JPN @@ -1055,7 +1055,7 @@ u32 daAgbsw0_c::TriforceCheck(daAgb_c* agb) #else int roomNo = agb->field_0x66d; #endif - return roomNo == 0x7 ? 0x32C : 0x32D; + return roomNo == dIsleRoom_OverlookIsland_e ? 0x32C : 0x32D; } return 0x32B; diff --git a/src/d/actor/d_a_lod_bg.cpp b/src/d/actor/d_a_lod_bg.cpp index 40dcb94a1..29ff25800 100644 --- a/src/d/actor/d_a_lod_bg.cpp +++ b/src/d/actor/d_a_lod_bg.cpp @@ -153,10 +153,10 @@ BOOL daLodbg_c::createModelData() { if (!loadModelData(resPath, mModelData, mDataHeap, mDataSize)) return FALSE; - if (getRoomNo() == 11) { // windfall + if (getRoomNo() == dIsleRoom_WindfallIsland_e) { if (!loadModelData("/lod11/bdl/shikari.bdl", mModelData2, mDataHeap2, mDataSize2)) return FALSE; - } else if (getRoomNo() == 1 && !dComIfGs_isEventBit(0x1820)) { // forsaken + } else if (getRoomNo() == dIsleRoom_ForsakenFortress_e && !dComIfGs_isEventBit(0x1820)) { if (!loadModelData("/lod01/bdl/model1.bdl", mModelData2, mDataHeap2, mDataSize2)) return FALSE; } @@ -170,7 +170,7 @@ BOOL daLodbg_c::createHeap() { mModel = mDoExt_J3DModel__create(mModelData, 0x80000, 0x11000022); if (mModel == NULL) return FALSE; - if (getRoomNo() == 11) { // windfall + if (getRoomNo() == dIsleRoom_WindfallIsland_e) { JUT_ASSERT(0x1bf, mModelData2 != NULL); for (s32 i = 0; i < 2; i++) { mModel2[i] = mDoExt_J3DModel__create(mModelData2, 0x80000, 0x11000022); @@ -180,7 +180,7 @@ BOOL daLodbg_c::createHeap() { return FALSE; } } - } else if (getRoomNo() == 1 && mModelData2 != NULL) { // forsaken + } else if (getRoomNo() == dIsleRoom_ForsakenFortress_e && mModelData2 != NULL) { mModel2[0] = mDoExt_J3DModel__create(mModelData2, 0x80000, 0x11000022); if (mModel2[0] == NULL) { mModel = NULL; @@ -267,7 +267,7 @@ BOOL daLodbg_c::execDeleteWait() { mDoMtx_stack_c::YrotM(shape_angle.y); mModel->setBaseTRMtx(mDoMtx_stack_c::get()); if (mModel2[0] != NULL) { - if (roomNo == 11) { // windfall + if (roomNo == dIsleRoom_WindfallIsland_e) { mDrawModel2 = daObjLight::Act_c::renew_light_angle(); if (mDrawModel2) { mDoMtx_stack_c::transS(630.46338f, y + 4044.508f, -202724.0f); @@ -276,7 +276,7 @@ BOOL daLodbg_c::execDeleteWait() { mDoMtx_stack_c::YrotM(-0x8000); mModel2[1]->setBaseTRMtx(mDoMtx_stack_c::get()); } - } else if (roomNo == 1) { // forsaken + } else if (roomNo == dIsleRoom_ForsakenFortress_e) { mModel2[0]->setBaseTRMtx(mDoMtx_stack_c::get()); mDrawModel2 = true; } @@ -303,7 +303,7 @@ BOOL daLodbg_c::draw() { return TRUE; s32 roomNo = getRoomNo(); - if (roomNo == 26 && !dComIfGs_isEventBit(0x1e40)) // totg + if (roomNo == dIsleRoom_ToweroftheGods_e && !dComIfGs_isEventBit(0x1e40)) return TRUE; g_env_light.settingTevStruct(TEV_TYPE_BG0, NULL, &tevStr); @@ -317,7 +317,7 @@ BOOL daLodbg_c::draw() { mDoExt_modelEntryDL(mModel); if (mModel2[0] != NULL && mDrawModel2) { - if (roomNo == 11) { // windfall + if (roomNo == dIsleRoom_WindfallIsland_e) { J3DModelData* modelData = mModel2[0]->getModelData(); for (u16 i = 0; i < modelData->getMaterialNum(); i++) modelData->getMaterialNodePointer(i)->getTevKColor(3)->mColor.a = mAlpha; @@ -327,7 +327,7 @@ BOOL daLodbg_c::draw() { mDoLib_clipper::clip(mModel2[i]); mDoExt_modelEntryDL(mModel2[i]); } - } else if (roomNo == 1) { // forsaken + } else if (roomNo == dIsleRoom_ForsakenFortress_e) { g_env_light.setLightTevColorType(mModel2[0], &tevStr); J3DModelData* modelData = mModel2[0]->getModelData(); // ??? was this supposed to modify mModel2? for (u16 i = 0; i < modelData->getMaterialNum(); i++) diff --git a/src/d/actor/d_a_obj_toripost.cpp b/src/d/actor/d_a_obj_toripost.cpp index d31c8f8d3..ae79e19b5 100644 --- a/src/d/actor/d_a_obj_toripost.cpp +++ b/src/d/actor/d_a_obj_toripost.cpp @@ -261,7 +261,7 @@ s32 daObjTpost_c::getReadableLetterNum() { /* 00000750-000007B8 .text checkSendPrice__12daObjTpost_cFv */ u8 daObjTpost_c::checkSendPrice() { - static const u8 pay_type[49] = { + static const u8 pay_type[dIsleIdx_COUNT_e] = { 02, 01, 01, diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index f0e0d7aaf..250f8c93e 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -3135,7 +3135,8 @@ BOOL daPy_lk_c::startRestartRoom(u32 mode, int eventInfoIdx, f32 param_3, int i_ mTinkleShieldTimer = 0; if (stageType == dStageType_SEA_e && !dComIfGs_isEventBit(dSv_evtBit_c::RODE_KORL) && - (current.roomNo == 11 || current.roomNo == 44) && dStage_chkPlayerId(0x80, current.roomNo)) + (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); u32 roomParam = setParamData(-1, 0, eventInfoIdx, 0); diff --git a/src/d/actor/d_a_tag_volcano.cpp b/src/d/actor/d_a_tag_volcano.cpp index cb73bb601..b12e0cb6d 100644 --- a/src/d/actor/d_a_tag_volcano.cpp +++ b/src/d/actor/d_a_tag_volcano.cpp @@ -31,7 +31,7 @@ s32 daTagvolcano::Act_c::_create() { field_0x2a0 = 0; if (mType == 0) { - if (current.roomNo == 20) { + if (current.roomNo == dIsleRoom_FireMountain_e) { if (dComIfGs_isEventBit(0x1902)) { fopAcM_onSwitch(this, prm_get_swSave()); } else if (dComIfGs_getStartPoint() == 2 && current.roomNo == dComIfGs_getRestartRoomNo()) { @@ -113,7 +113,7 @@ bool daTagvolcano::Act_c::_execute() { } } else { u16 timer = prm_get_timer() * 10; - if (current.roomNo == 20) { + if (current.roomNo == dIsleRoom_FireMountain_e) { if (dComIfGp_evmng_endCheck("FREEZE_VOLCANO")) { dTimer_createTimer(3, timer, 1, 0, 221.0f, 439.0f, 32.0f, 419.0f); field_0x298 = 1; diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index a04c807c5..f2a081a7e 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -193,7 +193,7 @@ int dComIfG_play_c::getLayerNo(int i_roomNo) { } if (strcmp(dComIfGp_getStartStageName(), "sea") == 0) { - if (i_roomNo == 44) { + if (i_roomNo == dIsleRoom_OutsetIsland_e) { if (dComIfGs_isEventBit(0x520)) { return layer | 4; } else if (dComIfGs_isEventBit(0xE20)) { @@ -201,13 +201,13 @@ int dComIfG_play_c::getLayerNo(int i_roomNo) { } else if (dComIfGs_isEventBit(0x101)) { return 9; } - } else if (i_roomNo == 11) { + } else if (i_roomNo == dIsleRoom_WindfallIsland_e) { if (dComIfGs_isEventBit(0x2D01)) { return layer | 4; } else if (dKy_checkEventNightStop()) { return layer | 2; } - } else if (i_roomNo == 1) { + } else if (i_roomNo == dIsleRoom_ForsakenFortress_e) { return dComIfGs_isEventBit(0x1820) ? 3 : 1; } } else if (strcmp(dComIfGp_getStartStageName(), "A_mori") == 0) { @@ -1211,7 +1211,7 @@ void dComIfGs_setGameStartStage() { point = 0; } else { strcpy(stage_name, "sea"); - room_no = 11; + room_no = dIsleRoom_WindfallIsland_e; point = 0; } } diff --git a/src/d/d_kankyo.cpp b/src/d/d_kankyo.cpp index 4ea772e77..d58829b01 100644 --- a/src/d/d_kankyo.cpp +++ b/src/d/d_kankyo.cpp @@ -2065,10 +2065,13 @@ BOOL phantomship_wether() { if (cur_time > 285.0f || cur_time < 90.0f) { s32 roomNo = dComIfGp_roomControl_getStayNo(); - if ((roomNo == 5 && weekday == 0) || (roomNo == 36 && weekday == 1) || - (roomNo == 34 && weekday == 2) || (roomNo == 10 && weekday == 3) || - (roomNo == 49 && weekday == 4) || (roomNo == 21 && weekday == 5) || - (roomNo == 23 && weekday == 6)) + if ((roomNo == dIsleRoom_CrescentMoonIsland_e && weekday == 0) || + (roomNo == dIsleRoom_DiamondSteppeIsland_e && weekday == 1) || + (roomNo == dIsleRoom_BombIsland_e && weekday == 2) || + (roomNo == dIsleRoom_SpectacleIsland_e && weekday == 3) || + (roomNo == dIsleRoom_FiveStarIsles_e && weekday == 4) || + (roomNo == dIsleRoom_StarBeltArchipelago_e && weekday == 5) || + (roomNo == dIsleRoom_GreatfishIsle_e && weekday == 6)) { rt = true; } diff --git a/src/d/d_s_room.cpp b/src/d/d_s_room.cpp index a1627b3d7..05419b715 100644 --- a/src/d/d_s_room.cpp +++ b/src/d/d_s_room.cpp @@ -275,7 +275,9 @@ s32 phase_4(room_of_scene_class* i_this) { if (strcmp(dComIfGp_getStartStageName(), "Omori") == 0 && dComIfGs_checkGetItem(dItem_PEARL_FARORE_e)) i_this->field_0x1dc = 2; - if (roomNo == 13) { + // Bug? The game seems to set these flags for DRI even when you're not on the sea stage. + // TODO: Look into this more. + if (roomNo == dIsleRoom_DragonRoostIsland_e) { dComIfGs_setEventReg(0xb8ff, 0); if (dComIfGs_isEventBit(0x3f02)) dComIfGs_onEventBit(0x1580); diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index 5e7663401..82070f1ac 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -56,7 +56,7 @@ void dSv_player_status_b_c::init() { /* 80058B84-80058BC8 .text init__25dSv_player_return_place_cFv */ void dSv_player_return_place_c::init() { strcpy(mName, "sea"); - mRoomNo = 44; + mRoomNo = dIsleRoom_OutsetIsland_e; mPoint = 206; } @@ -793,23 +793,23 @@ int dSv_player_collect_c::getTriforceNum() { /* 8005B290-8005B320 .text init__16dSv_player_map_cFv */ void dSv_player_map_c::init() { - for (int i = 0; i < 4; i++) { + for (int i = 0; i < ARRAY_SIZE(field_0x0[0]); i++) { field_0x0[0][i] = 0; field_0x0[1][i] = 0; field_0x0[2][i] = 0; field_0x0[3][i] = 0; } - for (int i = 0; i < 49; i++) { - field_0x40[i] = 0; + for (int i = 0; i < ARRAY_SIZE(mFmapBits); i++) { + mFmapBits[i] = 0; } field_0x81 = 0; - field_0x40[0] = 3; - field_0x40[43] = 3; - field_0x40[10] = 3; + mFmapBits[dIsleIdx_ForsakenFortress_e] = 1 | 2; + mFmapBits[dIsleIdx_OutsetIsland_e] = 1 | 2; + mFmapBits[dIsleIdx_WindfallIsland_e] = 1 | 2; - for (int i = 0; i < 16; i++) { + for (int i = 0; i < ARRAY_SIZE(field_0x71); i++) { field_0x71[i] = 0; } } @@ -895,13 +895,13 @@ int dSv_player_map_c::getCollectMapNum() { /* 8005BAE8-8005BB84 .text onFmapBit__16dSv_player_map_cFiUc */ void dSv_player_map_c::onFmapBit(int i_idx, u8 i_no) { JUT_ASSERT(1957, 0 <= i_no && i_no < 8); - field_0x40[i_idx] |= (u8)(1 << i_no); + mFmapBits[i_idx] |= (u8)(1 << i_no); } /* 8005BB84-8005BC24 .text isFmapBit__16dSv_player_map_cFiUc */ BOOL dSv_player_map_c::isFmapBit(int i_idx, u8 i_no) { JUT_ASSERT(1987, 0 <= i_no && i_no < 8); - return field_0x40[i_idx] & (u8)(1 << i_no) ? TRUE : FALSE; + return mFmapBits[i_idx] & (u8)(1 << i_no) ? TRUE : FALSE; } /* 8005BC24-8005BCBC .text onSaveArriveGrid__16dSv_player_map_cFi */ @@ -1693,7 +1693,7 @@ int dSv_info_c::memory_to_card(char* i_cardPtr, int i_dataNum) { memcpy(buffer, dComIfGs_getpPriest(), sizeof(dSv_player_priest_c)); buffer += sizeof(dSv_player_priest_c); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < dSv_player_c::PLAYER_STATUS_C_COUNT; i++) { memcpy(buffer, dComIfGs_getpPlayerStatusC(i), sizeof(dSv_player_status_c_c)); buffer += sizeof(dSv_player_status_c_c); } diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index ebdd9f576..be48762c9 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -1866,8 +1866,8 @@ bool dStage_setShipPos(int param_0, int i_roomNo) { } /* 80042B10-80042B70 .text dStage_chkTaura__Fi */ -bool dStage_chkTaura(int param_0) { - if (strcmp(dComIfGp_getStartStageName(), "sea") == 0 && param_0 == 11) { +bool dStage_chkTaura(int i_roomNo) { + if (strcmp(dComIfGp_getStartStageName(), "sea") == 0 && i_roomNo == dIsleRoom_WindfallIsland_e) { return true; } diff --git a/src/m_Do/m_Do_audio.cpp b/src/m_Do/m_Do_audio.cpp index 9373cdd6a..908a5bb06 100644 --- a/src/m_Do/m_Do_audio.cpp +++ b/src/m_Do/m_Do_audio.cpp @@ -219,9 +219,9 @@ int mDoAud_getTactDirection(int stick, int ret) { } /* 800073D8-80007424 .text mDoAud_setSceneName__FPCcll */ -void mDoAud_setSceneName(const char* i_name, s32 i_point, s32 i_layer) { +void mDoAud_setSceneName(const char* i_name, s32 i_roomNo, s32 i_layer) { if (mDoAud_zelAudio_c::getLoadTimer() == 0) { - mDoAud_zelAudio_c::getInterface()->setSceneName((char*)i_name, i_point, i_layer); + mDoAud_zelAudio_c::getInterface()->setSceneName((char*)i_name, i_roomNo, i_layer); mDoAud_zelAudio_c::setLoadTimer(36); } }