diff options
Diffstat (limited to 'src/Z2AudioLib/Z2SceneMgr.cpp')
| -rw-r--r-- | src/Z2AudioLib/Z2SceneMgr.cpp | 471 |
1 files changed, 238 insertions, 233 deletions
diff --git a/src/Z2AudioLib/Z2SceneMgr.cpp b/src/Z2AudioLib/Z2SceneMgr.cpp index 4b07ca8cce..14751161b0 100644 --- a/src/Z2AudioLib/Z2SceneMgr.cpp +++ b/src/Z2AudioLib/Z2SceneMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SceneMgr -// - #include "JSystem/JAudio2/JASBasicWaveBank.h" #include "JSystem/JAudio2/JAUSectionHeap.h" #include "JSystem/JAudio2/JAUSoundTable.h" @@ -16,7 +11,7 @@ #include "d/d_com_inf_game.h" /* 802B6840-802B68B0 2B1180 0070+00 0/0 1/1 0/0 .text __ct__10Z2SceneMgrFv */ -Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance<Z2SceneMgr>(this) { +Z2SceneMgr::Z2SceneMgr() : JASGlobalInstance<Z2SceneMgr>(true) { sceneNum = -1; BGM_ID = -1; roomNum = -1; @@ -36,14 +31,16 @@ Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance<Z2SceneMgr>(this) { field_0x1b = false; sceneExist = 0; inGame = 0; - inDarkness = false; + inDarkness_ = false; load1stWait = 0; } /* 802B68B0-802B68E0 2B11F0 0030+00 0/0 1/1 0/0 .text setInDarkness__10Z2SceneMgrFb */ -void Z2SceneMgr::setInDarkness(bool param_0) { - inDarkness = param_0; - if (!param_0) { +void Z2SceneMgr::setInDarkness(bool inDarkness) { + OS_REPORT("[Z2SceneMgr::setInDarkness] inDarkness = %d\n", inDarkness); + + inDarkness_ = inDarkness; + if (!inDarkness) { Z2GetSoundMgr()->resetFilterAll(); } } @@ -133,14 +130,14 @@ static char* sSpotName[81] = { }; /* 802B68E0-802B697C 2B1220 009C+00 3/3 2/2 2/2 .text setSceneExist__10Z2SceneMgrFb */ -void Z2SceneMgr::setSceneExist(bool param_1) { - sceneExist = param_1; +void Z2SceneMgr::setSceneExist(bool isSceneExist) { + sceneExist = isSceneExist; timer = 0; JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); - if (param_1) { - inGame = 1; + if (isSceneExist) { + inGame = true; if (requestDemoWave == 0x85) { seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0); @@ -155,7 +152,9 @@ void Z2SceneMgr::setSceneExist(bool param_1) { } /* 802B697C-802B6A18 2B12BC 009C+00 0/0 1/1 0/0 .text setFadeOutStart__10Z2SceneMgrFUc */ -void Z2SceneMgr::setFadeOutStart(u8 param_0) { +void Z2SceneMgr::setFadeOutStart(u8 fadeType) { + OS_REPORT("[Z2SceneMgr::setFadeOutStart] fadeType = %d\n", fadeType); + setSceneExist(false); Z2GetSeqMgr()->bgmAllMute(33, 3.0f / 10.0f); Z2GetSeMgr()->seMoveVolumeAll(0.0f, 33); @@ -165,43 +164,51 @@ void Z2SceneMgr::setFadeOutStart(u8 param_0) { } /* 802B6A18-802B6AF8 2B1358 00E0+00 0/0 1/1 0/0 .text setFadeInStart__10Z2SceneMgrFUc */ -void Z2SceneMgr::setFadeInStart(u8 param_0) { +void Z2SceneMgr::setFadeInStart(u8 fadeType) { + OS_REPORT("[Z2SceneMgr::setFadeInStart] fadeType = %d\n", fadeType); + if (requestDemoWave == 0x7f) { Z2GetSeMgr()->seMoveVolumeAll(0.0f, 0); } else { Z2GetSeMgr()->seMoveVolumeAll(1.0f, 33); if (requestDemoWave == 0x85) { - JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); - seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0); + Z2GetSoundMgr()->getSeMgr()->getCategory(9)->getParams()->moveVolume(0.0f, 0); } } + Z2GetSeqMgr()->setTwilightGateVol(1.0f); Z2GetStatusMgr()->menuOut(); if (!field_0x1a) { - Z2GetSeqMgr()->bgmAllMute(33, 1.0f); + Z2GetSeqMgr()->bgmAllUnMute(33); } inGame = true; } /* 802B6AF8-802B995C 2B1438 2E64+00 8/0 1/1 0/0 .text setSceneName__10Z2SceneMgrFPcll */ -void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { +// NONMATCHING JSULink<JAIStream>::getNext() inlining +void Z2SceneMgr::setSceneName(char* spot, s32 room, s32 layer) { + OS_REPORT("[Z2SceneMgr::setSceneName] spot = %s, room = %d, layer = %d\n", spot, room, layer); JAISoundID bgm_id = -1; JAISound* sound; - int spot = 0; + + int spotNo = 0; + u8 se_wave1 = 0; u8 se_wave2 = 0; u8 bgm_wave1 = 0; u8 bgm_wave2 = 0; u8 demo_wave = 0; + bool bVar6 = false; bool height_vol_mod = false; bool field_bgm_play = false; bool time_proc_vol_mod = false; bool bVar2 = false; field_0x1b = false; + f32 fVar1 = -1.0f; Z2GetSeqMgr()->resetBattleBgmParams(); @@ -210,23 +217,25 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeMgr()->resetCrowdSize(); Z2GetSoundObjMgr()->setGhostEnemyState(0); Z2GetSeMgr()->resetModY(); + if (Z2GetStatusMgr()->getDemoStatus() == 8) { Z2GetStatusMgr()->setDemoName("force_end"); } - if (spotName != NULL) { - for (spot = 0; spot < ARRAY_SIZE(sSpotName); spot++) { - if (!strcmp(spotName, sSpotName[spot])) { + if (spot != NULL) { + for (spotNo = 0; spotNo < ARRAY_SIZE(sSpotName); spotNo++) { + if (strcmp(spot, sSpotName[spotNo]) == 0) { break; } } - if (spot == ARRAY_SIZE(sSpotName)) { - spot = SPOT_NONE; + + if (spotNo == ARRAY_SIZE(sSpotName)) { + spotNo = Z2SCENE_NONE; } } - switch (spot) { - case SPOT_ENEMY_TEST: + switch (spotNo) { + case Z2SCENE_ENEMY_TEST: bgm_wave2 = 2; if (room < 30) { se_wave1 = 0x8a; @@ -234,8 +243,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x8b; } break; - - case SPOT_ORDON_RANCH: + case Z2SCENE_ORDON_RANCH: if (layer == 1) { if (dComIfGs_isSaveSwitch(0x67)) { bgm_id = Z2BGM_TOAL_NIGHT; @@ -251,14 +259,15 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_wave2 = 2; time_proc_vol_mod = true; } + se_wave1 = 0x26; se_wave2 = 0x25; field_0x1b = true; break; - - case SPOT_ORDON_VILLAGE: + case Z2SCENE_ORDON_VILLAGE: field_0x1b = true; se_wave1 = 0x26; + if (room == 0) { se_wave2 = 0x27; switch (layer) { @@ -336,9 +345,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_ORDON_INTERIOR: + case Z2SCENE_ORDON_INTERIOR: se_wave1 = 0x26; + switch (room) { case 0: bgm_id = Z2BGM_INDOOR; @@ -417,10 +426,10 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } field_0x1b = true; break; - - case SPOT_ORDON_SPRING: + case Z2SCENE_ORDON_SPRING: se_wave1 = 0x26; se_wave2 = 0x2d; + switch (layer) { case 4: field_0x1b = false; @@ -469,10 +478,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { break; } break; - - case SPOT_TWILIGHT_HYRULE_CASTLE: + case Z2SCENE_TWILIGHT_HYRULE_CASTLE: se_wave1 = 0x2e; - if (inDarkness) { + if (inDarkness_) { se_wave2 = 0x30; if (room == 0) { if (layer == 11) { @@ -506,18 +514,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x2f; } break; - - case SPOT_CASTLE_THRONE_ROOM: + case Z2SCENE_CASTLE_THRONE_ROOM: if (layer == 8) { demo_wave = 0x68; } else if (layer == 9) { demo_wave = 0x7f; } break; - - case SPOT_CORO_SHOP: + case Z2SCENE_CORO_SHOP: se_wave1 = 0x31; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x33; @@ -535,15 +541,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_FARON_WOODS: + case Z2SCENE_FARON_WOODS: se_wave1 = 0x31; if (layer == 11) { demo_wave = 0x6c; - inDarkness = false; + inDarkness_ = false; } else if (layer == 9) { demo_wave = 0x6a; - } else if (inDarkness) { + } else if (inDarkness_) { if (layer == 7) { demo_wave = 0x78; } else if (layer == 8) { @@ -584,7 +589,8 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_id = Z2BGM_FILONE_FOREST; bgm_wave1 = 0xf; time_proc_vol_mod = true; - if (room == 0xe) { + + if (room == 14) { Z2GetSeqMgr()->changeBgmStatus(1); } else { Z2GetSeqMgr()->changeBgmStatus(0); @@ -593,13 +599,12 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_KAKARIKO_VILLAGE: + case Z2SCENE_KAKARIKO_VILLAGE: se_wave1 = 0x34; if (layer == 8) { demo_wave = 0x6e; - inDarkness = false; - } else if (inDarkness) { + inDarkness_ = false; + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x36; @@ -655,10 +660,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_KAKARIKO_INTERIOR: + case Z2SCENE_KAKARIKO_INTERIOR: se_wave1 = 0x34; - if (inDarkness) { + if (inDarkness_) { se_wave2 = 0x36; if (room == 0 && layer == 8) { demo_wave = 0x6d; @@ -722,10 +726,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x86; } break; - - case SPOT_SANCTUARY_BASEMENT: + case Z2SCENE_SANCTUARY_BASEMENT: se_wave1 = 0x34; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x36; @@ -736,10 +739,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeqMgr()->muteSceneBgm(30, 0.5f); } break; - - case SPOT_KAKARIKO_GRAVEYARD: + case Z2SCENE_KAKARIKO_GRAVEYARD: se_wave1 = 0x34; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x36; @@ -757,14 +759,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x37; } break; - - case SPOT_DEATH_MOUNTAIN: + case Z2SCENE_DEATH_MOUNTAIN: se_wave1 = 0x34; if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; se_wave2 = 0; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x39; @@ -778,8 +779,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_HIDDEN_VILLAGE: + case Z2SCENE_HIDDEN_VILLAGE: if (layer == 0) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); if (dComIfGs_isSwitch(0x2e, 0) && !dComIfGs_isSwitch(0x11, 0)) { @@ -793,16 +793,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x34; se_wave2 = 0x4f; break; - - case SPOT_IMPAZ_HOUSE: + case Z2SCENE_IMPAZ_HOUSE: bgm_id = Z2BGM_INDOOR; bgm_wave1 = 8; se_wave1 = 0x34; se_wave2 = 0x4f; field_0x1b = true; break; - - case SPOT_SUMO_HALL: + case Z2SCENE_SUMO_HALL: if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; @@ -815,19 +813,18 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x3a; } break; - - case SPOT_LAKE_HYLIA: + case Z2SCENE_LAKE_HYLIA: se_wave1 = 0x3b; if (layer == 8) { demo_wave = 0x72; - inDarkness = false; + inDarkness_ = false; } else if (room == 1 && layer == 9) { demo_wave = 0x74; } else if (layer == 10 || layer == 11) { demo_wave = 0x7f; se_wave1 = 0; se_wave2 = 0; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x3d; @@ -850,14 +847,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x3c; } break; - - case SPOT_UPPER_ZORAS_RIVER: + case Z2SCENE_UPPER_ZORAS_RIVER: se_wave1 = 0x55; if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; se_wave2 = 0; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x3f; @@ -867,8 +863,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { height_vol_mod = true; } break; - - case SPOT_FISHING_POND: + case Z2SCENE_FISHING_POND: if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; @@ -882,18 +877,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { time_proc_vol_mod = true; } break; - - case SPOT_HENA_CABIN: + case Z2SCENE_HENA_CABIN: se_wave1 = 0x3b; bgm_id = Z2BGM_INDOOR; bgm_wave1 = 8; bgm_wave2 = 0x47; se_wave2 = 0x3e; break; - - case SPOT_ZORAS_RIVER: + case Z2SCENE_ZORAS_RIVER: se_wave1 = 0x55; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_CARGO_GAME_TW; bgm_wave1 = 0x24; se_wave2 = 0x41; @@ -911,8 +904,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x40; } break; - - case SPOT_ZORAS_DOMAIN: + case Z2SCENE_ZORAS_DOMAIN: se_wave1 = 0x3b; if (layer == 8 || layer == 9) { demo_wave = 0x82; @@ -920,7 +912,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0; se_wave2 = 0; demo_wave = 0x7f; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0x0e; bgm_wave2 = 0x2c; @@ -933,12 +925,11 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { time_proc_vol_mod = true; } break; - - case SPOT_CASTLE_TOWN: + case Z2SCENE_CASTLE_TOWN: se_wave1 = 0x42; if (layer == 8) { demo_wave = 0x68; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x44; @@ -961,14 +952,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_CASTLE_TOWN_INTERIOR: + case Z2SCENE_CASTLE_TOWN_INTERIOR: if (room == 6) { se_wave1 = 0x2e; se_wave2 = 0x2f; } else { se_wave1 = 0x42; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x44; @@ -989,10 +979,10 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_CASTLE_TOWN_SHOPS: + case Z2SCENE_CASTLE_TOWN_SHOPS: se_wave1 = 0x42; se_wave2 = 0x5b; + switch (room) { case 0: if (layer == 1) { @@ -1027,8 +1017,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { break; } break; - - case SPOT_STAR_TENT: + case Z2SCENE_STAR_TENT: se_wave1 = 0x42; se_wave2 = 0x87; /* dSv_event_flag_c::F_289 - Castle Town - Heard conversation about entering Star Game 1 */ @@ -1037,11 +1026,11 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } bgm_wave1 = 0x46; break; - - case SPOT_SACRED_GROVE: + case Z2SCENE_SACRED_GROVE: se_wave1 = 0x31; bgm_wave2 = 0x1b; se_wave2 = 0x45; + if (room == 3) { bgm_id = Z2BGM_HOLY_FOREST; bgm_wave1 = 0x2a; @@ -1066,8 +1055,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_SNOWPEAK: + case Z2SCENE_SNOWPEAK: if (layer == 8) { se_wave1 = 0; se_wave2 = 0; @@ -1081,8 +1069,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } height_vol_mod = true; break; - - case SPOT_GERUDO_DESERT: + case Z2SCENE_GERUDO_DESERT: se_wave1 = 0x48; se_wave2 = 0x49; if (layer == 8 || layer == 9 || layer == 10) { @@ -1096,8 +1083,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_wave1 = 0x1f; } break; - - case SPOT_ARBITERS_GROUNDS_EXTERIOR: + case Z2SCENE_ARBITERS_GROUNDS_EXTERIOR: if (room == 1) { Z2GetSoundObjMgr()->setForceBattleArea(true, 1000, 2000, 9000); bgm_wave1 = 0x3d; @@ -1106,8 +1092,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x48; se_wave2 = 0x49; break; - - case SPOT_MIRROR_CHAMBER: + case Z2SCENE_MIRROR_CHAMBER: switch (layer) { case 7: case 8: @@ -1131,8 +1116,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x48; se_wave2 = 0x49; break; - - case SPOT_HYRULE_FIELD: + case Z2SCENE_HYRULE_FIELD: se_wave1 = 0x4a; if (room == 10 && layer == 11) { demo_wave = 0x74; @@ -1149,13 +1133,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; fVar1 = 1.0f; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); - } else if (inDarkness) { + } else if (inDarkness_) { if (layer == 12) { demo_wave = 0x6a; } else { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; } + se_wave2 = 0x4c; if (room == 13 && layer == 14) { bgm_wave2 = 0x1c; @@ -1167,6 +1152,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } else { bgm_id = Z2BGM_FIELD_LINK_NIGHT; } + bgm_wave1 = 0x19; switch (room) { case 2: @@ -1220,8 +1206,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_CASTLE_TOWN_GATES: + case Z2SCENE_CASTLE_TOWN_GATES: se_wave1 = 0x4a; if (layer == 8) { demo_wave = 0x73; @@ -1233,7 +1218,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0; se_wave2 = 0; demo_wave = 0x7f; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x4c; @@ -1248,6 +1233,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x89; fVar1 = 1.0f; } + field_bgm_play = true; if (Z2GetStatusMgr()->checkDayTime()) { bgm_id = Z2BGM_FIELD_LINK_DAY; @@ -1257,8 +1243,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_wave1 = 0x19; } break; - - case SPOT_HYLIA_BRIDGE_BATTLE: + case Z2SCENE_HYLIA_BRIDGE_BATTLE: se_wave1 = 0x54; bgm_wave1 = 0x3d; se_wave2 = 0x4e; @@ -1266,8 +1251,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_ELDIN_BRIDGE_BATTLE: + case Z2SCENE_ELDIN_BRIDGE_BATTLE: se_wave1 = 0x4a; if (layer == 11) { se_wave1 = 0; @@ -1286,8 +1270,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_SHADES_REALM: + case Z2SCENE_SHADES_REALM: se_wave1 = 0x4a; if (dComIfGs_getStartPoint() == 2) { bgm_wave2 = 0x50; @@ -1304,12 +1287,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } else { bgm_wave1 = 0x44; } + se_wave2 = 0x5d; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - case SPOT_FOREST_TEMPLE: + case Z2SCENE_FOREST_TEMPLE: bgm_id = Z2BGM_DUNGEON_FOREST; bgm_wave1 = 0xa; bgm_wave2 = 0x40; @@ -1317,8 +1301,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 2; Z2GetSeqMgr()->changeBgmStatus(room); break; - - case SPOT_FOREST_TEMPLE_MINIBOSS: + case Z2SCENE_FOREST_TEMPLE_MINIBOSS: bgm_id = Z2BGM_DUNGEON_FOREST; bgm_wave1 = 0xa; bgm_wave2 = 0xb; @@ -1326,10 +1309,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 3; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); - Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860); + Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); break; - - case SPOT_FOREST_TEMPLE_BOSS: + case Z2SCENE_FOREST_TEMPLE_BOSS: se_wave1 = 1; if (dComIfGs_isStageSwitch(2, 1)) { bgm_id = Z2BGM_DUNGEON_FOREST; @@ -1343,10 +1325,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } - Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860); + Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); break; - - case SPOT_GORON_MINES: + case Z2SCENE_GORON_MINES: bgm_id = Z2BGM_DUNGEON_LV2; bgm_wave1 = 0x13; bgm_wave2 = 0x3c; @@ -1354,8 +1335,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 5; se_wave2 = 6; break; - - case SPOT_GORON_MINES_MINIBOSS: + case Z2SCENE_GORON_MINES_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV2; bgm_wave1 = 0x13; se_wave1 = 5; @@ -1364,8 +1344,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_GORON_MINES_BOSS: + case Z2SCENE_GORON_MINES_BOSS: se_wave1 = 5; if (dComIfGs_isStageSwitch(3, 0x7c)) { bgm_id = Z2BGM_DUNGEON_LV2; @@ -1380,16 +1359,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_LAKEBED_TEMPLE: + case Z2SCENE_LAKEBED_TEMPLE: bgm_id = Z2BGM_DUNGEON_LV3; bgm_wave1 = 0x15; bgm_wave2 = 0x40; se_wave1 = 9; se_wave2 = 0xa; break; - - case SPOT_LAKEBED_TEMPLE_MINIBOSS: + case Z2SCENE_LAKEBED_TEMPLE_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV3; bgm_wave1 = 0x15; bgm_wave2 = 0x17; @@ -1398,8 +1375,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_LAKEBED_TEMPLE_BOSS: + case Z2SCENE_LAKEBED_TEMPLE_BOSS: se_wave1 = 9; if (dComIfGs_isStageSwitch(4, 0xe)) { bgm_id = Z2BGM_DUNGEON_LV3; @@ -1414,8 +1390,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_ARBITERS_GROUNDS: + case Z2SCENE_ARBITERS_GROUNDS: bgm_id = Z2BGM_DUNGEON_LV4; bgm_wave1 = 0x1a; bgm_wave2 = 0x41; @@ -1425,8 +1400,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_ARBITERS_GROUNDS_MINIBOSS: + case Z2SCENE_ARBITERS_GROUNDS_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV4; bgm_wave1 = 0x1a; bgm_wave2 = 0x22; @@ -1435,8 +1409,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_ARBITERS_GROUNDS_BOSS: + case Z2SCENE_ARBITERS_GROUNDS_BOSS: se_wave1 = 0xd; if (dComIfGs_isStageSwitch(0xa, 0xa)) { bgm_id = Z2BGM_DUNGEON_LV4; @@ -1451,8 +1424,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_SNOWPEAK_RUINS: + case Z2SCENE_SNOWPEAK_RUINS: bgm_id = Z2BGM_DUNGEON_LV5; bgm_wave1 = 0x1d; bgm_wave2 = 0x40; @@ -1460,8 +1432,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x12; Z2GetSeqMgr()->changeBgmStatus(room); break; - - case SPOT_SNOWPEAK_RUINS_MINIBOSS: + case Z2SCENE_SNOWPEAK_RUINS_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV5; bgm_wave1 = 0x1d; bgm_wave2 = 0x38; @@ -1471,8 +1442,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); Z2GetSeqMgr()->changeBgmStatus(room); break; - - case SPOT_SNOWPEAK_RUINS_BOSS: + case Z2SCENE_SNOWPEAK_RUINS_BOSS: Z2GetSeqMgr()->unMuteSceneBgm(60); se_wave1 = 0x11; if (dComIfGs_isStageSwitch(8, 0x19)) { @@ -1488,16 +1458,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_TEMPLE_OF_TIME: + case Z2SCENE_TEMPLE_OF_TIME: bgm_id = Z2BGM_DUNGEON_LV6; bgm_wave1 = 0x26; bgm_wave2 = 0x40; se_wave1 = 0x15; se_wave2 = 0x16; break; - - case SPOT_TEMPLE_OF_TIME_MINIBOSS: + case Z2SCENE_TEMPLE_OF_TIME_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV6; bgm_wave1 = 0x26; bgm_wave2 = 0x3f; @@ -1506,8 +1474,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_TEMPLE_OF_TIME_BOSS: + case Z2SCENE_TEMPLE_OF_TIME_BOSS: se_wave1 = 0x15; if (dComIfGs_isStageSwitch(7, 0x18)) { bgm_id = Z2BGM_DUNGEON_LV6; @@ -1522,8 +1489,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_CITY_IN_THE_SKY: + case Z2SCENE_CITY_IN_THE_SKY: if (room == 16) { bgm_id = Z2BGM_OBACHAN; bgm_wave1 = 0x40; @@ -1534,8 +1500,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x19; se_wave2 = 0x1a; break; - - case SPOT_CITY_IN_THE_SKY_MINIBOSS: + case Z2SCENE_CITY_IN_THE_SKY_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV7; bgm_wave1 = 0x27; bgm_wave2 = 0x43; @@ -1544,8 +1509,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_CITY_IN_THE_SKY_BOSS: + case Z2SCENE_CITY_IN_THE_SKY_BOSS: se_wave1 = 0x19; if (dComIfGs_isStageSwitch(0x16, 0x25)) { bgm_id = Z2BGM_DUNGEON_LV7; @@ -1560,8 +1524,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_PALACE_OF_TWILIGHT: + case Z2SCENE_PALACE_OF_TWILIGHT: if (layer == 8) { if (room == 0 || room == 9) { demo_wave = 0x77; @@ -1579,9 +1542,8 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x1d; se_wave2 = 0x1e; break; - - case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_A: - case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_B: + case Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_A: + case Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_B: bgm_id = Z2BGM_DUNGEON_LV8; bgm_wave1 = 0x28; bgm_wave2 = 0x48; @@ -1590,8 +1552,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_PALACE_OF_TWILIGHT_THRONE_ROOM: + case Z2SCENE_PALACE_OF_TWILIGHT_THRONE_ROOM: if (layer == 8) { demo_wave = 0x81; } else if (layer == 9) { @@ -1611,19 +1572,19 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_PALACE_OF_TWILIGHT_BOSS: + case Z2SCENE_PALACE_OF_TWILIGHT_BOSS: se_wave1 = 0x1d; bgm_wave1 = 0x39; se_wave2 = 0x20; + if (room == 50) { - inDarkness = true; + inDarkness_ = true; } + field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_HYRULE_CASTLE: + case Z2SCENE_HYRULE_CASTLE: if (room >= 1 && room <= 6) { bgm_id = 0x2000040; bgm_wave2 = 0x58; @@ -1635,13 +1596,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeqMgr()->bgmStop(45, 0); bgm_wave2 = 0x3d; } + se_wave1 = 0x21; se_wave2 = 0x22; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_FINAL_BATTLE_THRONE_ROOM: + case Z2SCENE_FINAL_BATTLE_THRONE_ROOM: if (room == 50) { if (layer == 8) { demo_wave = 0x7b; @@ -1657,20 +1618,19 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { demo_wave = 0x7c; } } + se_wave1 = 0x56; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_FINAL_BATTLE_FIELD: + case Z2SCENE_FINAL_BATTLE_FIELD: bgm_wave1 = 0x4b; se_wave2 = 0x63; se_wave1 = 0x8c; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_FINAL_BATTLE_CUTSCENE: + case Z2SCENE_FINAL_BATTLE_CUTSCENE: if (layer == 8) { demo_wave = 0x7c; fVar1 = 0.1f; @@ -1683,53 +1643,46 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { demo_wave = 0x7f; } break; - - case SPOT_LIGHT_SPIRIT_CHAMBER: + case Z2SCENE_LIGHT_SPIRIT_CHAMBER: demo_wave = 0x7c; break; - - case SPOT_CAVE_OF_ORDEALS: + case Z2SCENE_CAVE_OF_ORDEALS: se_wave2 = 0x51; if (room != 49 || layer < 5 || layer > 8) { bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; } break; - - case SPOT_ICE_BLOCK_PUZZLE: + case Z2SCENE_ICE_BLOCK_PUZZLE: se_wave1 = 0x11; se_wave2 = 0x12; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_GORGE_LANTERN_CAVE: - case SPOT_LAKE_LANTERN_CAVE: + case Z2SCENE_GORGE_LANTERN_CAVE: + case Z2SCENE_LAKE_LANTERN_CAVE: se_wave2 = 0x52; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_ELDIN_MAGNET_CAVE: + case Z2SCENE_ELDIN_MAGNET_CAVE: se_wave1 = 5; se_wave2 = 6; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_GROTTO_GRASS_1: - case SPOT_GROTTO_GRASS_2: - case SPOT_GROTTO_ROCK_1: - case SPOT_GROTTO_ROCK_2: - case SPOT_GROTTO_POND: + case Z2SCENE_GROTTO_GRASS_1: + case Z2SCENE_GROTTO_GRASS_2: + case Z2SCENE_GROTTO_ROCK_1: + case Z2SCENE_GROTTO_ROCK_2: + case Z2SCENE_GROTTO_POND: se_wave2 = 0x50; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_FARON_WOODS_CAVE: + case Z2SCENE_FARON_WOODS_CAVE: se_wave2 = 0x53; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; } else { @@ -1743,25 +1696,24 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104]) /* dSv_event_flag_c::F_0250 - Cutscene - [cutscene: 21] reunion with Zelda / Midna revived (Hyrule Castle barrier appears) */ && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250]) - && demo_wave == 0 && spot != SPOT_ELDIN_BRIDGE_BATTLE) + && demo_wave == 0 && spotNo != Z2SCENE_ELDIN_BRIDGE_BATTLE) { bgm_wave1 = 0x36; - if (spot == SPOT_CASTLE_TOWN_SHOPS && room == 5) { + if (spotNo == Z2SCENE_CASTLE_TOWN_SHOPS && room == 5) { bgm_id = -1; } else { bgm_id = Z2BGM_MIDNA_SOS; - if ((spot == SPOT_CASTLE_TOWN_INTERIOR && room == 5) - || spot == SPOT_CASTLE_TOWN_SHOPS || spot == SPOT_STAR_TENT) + if ((spotNo == Z2SCENE_CASTLE_TOWN_INTERIOR && room == 5) + || spotNo == Z2SCENE_CASTLE_TOWN_SHOPS || spotNo == Z2SCENE_STAR_TENT) { Z2GetSeqMgr()->muteSceneBgm(33, 0.5f); } else { Z2GetSeqMgr()->unMuteSceneBgm(33); } } + time_proc_vol_mod = false; - } else if (sceneNum == SPOT_CASTLE_TOWN_SHOPS && roomNum == 1 - && !(spot == SPOT_CASTLE_TOWN && room == 3)) - { + } else if (sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS && roomNum == 1 && !(spotNo == Z2SCENE_CASTLE_TOWN && room == 3)) { bgm_id = Z2BGM_FORTUNE; bgm_wave1 = 0x37; Z2GetSeqMgr()->changeBgmStatus(1); @@ -1774,7 +1726,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { JSULink<JAIStream>* stream; for (stream = stream_list->getFirst(); stream != NULL; stream = stream->getNext()) { if (bVar2 || sound_table->getTypeID(stream->getObject()->getID()) != 0x71) { - stream->getObject()->stop(struct_80450860); + stream->getObject()->stop(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); } } } @@ -1782,15 +1734,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeqMgr()->setHeightVolMod(height_vol_mod, 30); Z2GetSeqMgr()->setTimeProcVolMod(time_proc_vol_mod, 0); Z2GetSeqMgr()->setFieldBgmPlay(field_bgm_play); - Z2GetEnvSeMgr()->initSceneEnvSe(spot, room, fVar1); + Z2GetEnvSeMgr()->initSceneEnvSe(spotNo, room, fVar1); - if (sceneNum != spot || bgm_id != BGM_ID || se_wave1 != loadedSeWave_1 + if (sceneNum != spotNo || bgm_id != BGM_ID || se_wave1 != loadedSeWave_1 || se_wave2 != loadedSeWave_2 || bgm_wave1 != loadedBgmWave_1 || bgm_wave2 != loadedBgmWave_2 || demo_wave != loadedDemoWave) { - sceneNum = spot; + sceneNum = spotNo; sceneChange(bgm_id, se_wave1, se_wave2, bgm_wave1, bgm_wave2, demo_wave, false); } + roomNum = room; } @@ -1798,6 +1751,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { * sceneChange__10Z2SceneMgrF10JAISoundIDUcUcUcUcUcb */ void Z2SceneMgr::sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2, u8 demoWave, bool param_6) { + OS_REPORT("[Z2SceneMgr::sceneChange] bgm:0x%08x, SeWave1:%d, SeWave2:%d BgmWave1:%d BgmWave2:%d demoWave:%d (%d)\n", + *(u32*)&bgm, seWave1, seWave2, bgmWave1, bgmWave2, demoWave, param_6); + if (bgm != BGM_ID) { if (Z2GetSeqMgr()->getMainBgmID() == bgm) { field_0x1a = false; @@ -1843,7 +1799,7 @@ void Z2SceneMgr::framework() { if (timer < 10000) { timer++; } - if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == struct_80450863) { + if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == Z2Param::BATTLE_BGM_WAIT_TIME) { Z2GetSeqMgr()->setBattleBgmOff(false); } } else { @@ -1854,6 +1810,8 @@ void Z2SceneMgr::framework() { /* 802B9D40-802B9D98 2B4680 0058+00 0/0 1/1 0/0 .text load1stDynamicWave__10Z2SceneMgrFv */ void Z2SceneMgr::load1stDynamicWave() { + OS_REPORT("[Z2SceneMgr::load1stDynamicWave] load1stWait:%d\n", load1stWait); + timer = 0; Z2GetSoundObjMgr()->deleteEnemyAll(); setSceneExist(false); @@ -1864,6 +1822,8 @@ void Z2SceneMgr::load1stDynamicWave() { /* 802B9D98-802B9FC8 2B46D8 0230+00 2/2 0/0 0/0 .text _load1stWaveInner_1__10Z2SceneMgrFv */ void Z2SceneMgr::_load1stWaveInner_1() { + OS_REPORT("[Z2SceneMgr::_load1stWaveInner_1] requestSe:%d loadedSe:%d\n", requestSeWave_1, loadedSeWave_1); + Z2GetSeMgr()->seStopAll(0); Z2GetEnvSeMgr()->resetSceneInner(); /* dSv_event_flag_c::M_071 - Cutscene - [cutscene: 20] Zant appears (during Midna's desperate hour) */ @@ -1903,7 +1863,8 @@ void Z2SceneMgr::_load1stWaveInner_1() { } if (field_0x1a && Z2GetSeqMgr()->checkBgmPlaying()) { - Z2GetSeqMgr()->bgmStop(0xf, 0); + OS_REPORT("[Z2SceneMgr::load1stDynamicWave]bgm StopCount = %d\n", 15); + Z2GetSeqMgr()->bgmStop(15, 0); load1stWait = -15; } else { _load1stWaveInner_2(); @@ -1913,6 +1874,8 @@ void Z2SceneMgr::_load1stWaveInner_1() { /* 802B9FC8-802BA09C 2B4908 00D4+00 2/2 0/0 0/0 .text _load1stWaveInner_2__10Z2SceneMgrFv */ void Z2SceneMgr::_load1stWaveInner_2() { + OS_REPORT("[Z2SceneMgr::_load1stWaveInner_2] requestBgm:%d loadedBgm:%d\n", requestBgmWave_1, loadedBgmWave_1); + if (loadedBgmWave_2 != 0 && requestBgmWave_2 != loadedBgmWave_2) { eraseBgmWave(loadedBgmWave_2); loadedBgmWave_2 = 0; @@ -1936,13 +1899,15 @@ void Z2SceneMgr::_load1stWaveInner_2() { /* 802BA09C-802BA120 2B49DC 0084+00 0/0 1/1 0/0 .text check1stDynamicWave__10Z2SceneMgrFv */ bool Z2SceneMgr::check1stDynamicWave() { - return load1stWait != 0 || getSeLoadStatus(requestSeWave_1) == 1 - || getBgmLoadStatus(requestBgmWave_1) == 1; + return load1stWait != 0 || getSeLoadStatus(requestSeWave_1) == 1 || getBgmLoadStatus(requestBgmWave_1) == 1; } /* 802BA120-802BA294 2B4A60 0174+00 0/0 2/2 0/0 .text load2ndDynamicWave__10Z2SceneMgrFv */ void Z2SceneMgr::load2ndDynamicWave() { + OS_REPORT("[Z2SceneMgr::load2ndDynamicWave] requestSe:%d, loadedSe:%d requestBgm:%d loadedBgm:%d requestDemo:%d loadedDemo:%d\n", + requestSeWave_2, loadedSeWave_2, requestBgmWave_2, loadedBgmWave_2, requestDemoWave, loadedDemoWave); + if (requestDemoWave != loadedDemoWave) { if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) { loadedSeWave_2 = 0; @@ -1983,10 +1948,10 @@ void Z2SceneMgr::load2ndDynamicWave() { /* 802BA294-802BA56C 2B4BD4 02D8+00 1/0 2/2 0/0 .text sceneBgmStart__10Z2SceneMgrFv */ // NONMATCHING - extra BGM_ID load void Z2SceneMgr::sceneBgmStart() { - OS_REPORT("[Z2SceneMgr::sceneBgmStart] %08x", BGM_ID.mId.mFullId); - + OS_REPORT("[Z2SceneMgr::sceneBgmStart] %08x\n", *(u32*)&BGM_ID); inGame = true; - BOOL r28 = FALSE; + + int var_r28 = 0; setSceneExist(true); Z2GetStatusMgr()->setPauseFlag(0); @@ -1994,9 +1959,10 @@ void Z2SceneMgr::sceneBgmStart() { return; } - if (!BGM_ID.isAnonymous() && !r28 && Z2GetStatusMgr()->getDemoStatus() != 11) { + if (!BGM_ID.isAnonymous() && var_r28 == 0 && Z2GetStatusMgr()->getDemoStatus() != 11) { bool var; - switch (BGM_ID.mId.mBytes.b0) { + int section = BGM_ID.id_.info.type.parts.sectionID; + switch (section) { case 1: var = false; switch (Z2GetSeqMgr()->getSubBgmID()) { @@ -2017,7 +1983,7 @@ void Z2SceneMgr::sceneBgmStart() { case Z2BGM_DUNGEON_LV8: case Z2BGM_DUNGEON_LV9_02: case Z2BGM_SNOW_MOUNTAIN: - if (sceneNum == SPOT_CASTLE_TOWN_SHOPS) { + if (sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS) { Z2GetSeqMgr()->changeBgmStatus(5); } else { Z2GetSeqMgr()->changeBgmStatus(roomNum); @@ -2030,27 +1996,27 @@ void Z2SceneMgr::sceneBgmStart() { Z2GetSeqMgr()->changeBgmStatus(0); break; case Z2BGM_CHURCH2: - if (sceneNum == SPOT_SANCTUARY_BASEMENT) { + if (sceneNum == Z2SCENE_SANCTUARY_BASEMENT) { Z2GetSeqMgr()->muteSceneBgm(0, 0.5f); } break; case Z2BGM_MIDNA_SOS: - if ((sceneNum == SPOT_CASTLE_TOWN_INTERIOR && roomNum == 5) - || sceneNum == SPOT_CASTLE_TOWN_SHOPS || sceneNum == SPOT_STAR_TENT) + if ((sceneNum == Z2SCENE_CASTLE_TOWN_INTERIOR && roomNum == 5) + || sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS || sceneNum == Z2SCENE_STAR_TENT) { Z2GetSeqMgr()->muteSceneBgm(0, 0.5f); } break; case Z2BGM_TOAL_NIGHT: - if (sceneNum == SPOT_ORDON_INTERIOR && roomNum == 2) { + if (sceneNum == Z2SCENE_ORDON_INTERIOR && roomNum == 2) { Z2GetSeqMgr()->changeBgmStatus(2); } else { Z2GetSeqMgr()->changeBgmStatus(0); } break; case Z2BGM_FILONE_FOREST: - if (sceneNum == SPOT_CORO_SHOP - || (sceneNum == SPOT_FARON_WOODS && roomNum == 14)) + if (sceneNum == Z2SCENE_CORO_SHOP + || (sceneNum == Z2SCENE_FARON_WOODS && roomNum == 14)) { Z2GetSeqMgr()->changeBgmStatus(2); } else { @@ -2075,6 +2041,10 @@ void Z2SceneMgr::sceneBgmStart() { /* 802BA56C-802BA5C0 2B4EAC 0054+00 0/0 1/1 0/0 .text loadStaticWaves__10Z2SceneMgrFv */ void Z2SceneMgr::loadStaticWaves() { + OS_REPORT("[Z2SceneMgr::loadStaticWaves] 常駐シーン波形を読み込みます\n"); + #if PLATFORM_SHIELD + loadSceneWave(0, 2); + #endif loadSeWave(0); loadBgmWave(0); loadSeWave(0x58); @@ -2089,7 +2059,10 @@ BOOL Z2SceneMgr::checkFirstWaves() { /* 802BA5C8-802BA630 2B4F08 0068+00 2/2 0/0 0/0 .text eraseSeWave__10Z2SceneMgrFUl */ bool Z2SceneMgr::eraseSeWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0); + JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance(); + JUT_ASSERT(2976, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(0); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { @@ -2101,7 +2074,10 @@ bool Z2SceneMgr::eraseSeWave(u32 wave) { /* 802BA630-802BA698 2B4F70 0068+00 2/2 0/0 0/0 .text eraseBgmWave__10Z2SceneMgrFUl */ bool Z2SceneMgr::eraseBgmWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1); + JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance(); + JUT_ASSERT(2988, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(1); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { @@ -2113,7 +2089,10 @@ bool Z2SceneMgr::eraseBgmWave(u32 wave) { /* 802BA698-802BA704 2B4FD8 006C+00 1/1 0/0 0/0 .text getWaveLoadStatus__10Z2SceneMgrFUlUl */ s32 Z2SceneMgr::getWaveLoadStatus(u32 wave, u32 bank) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(bank); + JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance(); + JUT_ASSERT(3001, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(bank); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { @@ -2123,26 +2102,52 @@ s32 Z2SceneMgr::getWaveLoadStatus(u32 wave, u32 bank) { return 0; } +#if PLATFORM_SHIELD +bool Z2SceneMgr::loadSceneWave(u32 wave, u32 bank) { + JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance(); + JUT_ASSERT(3014, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(bank); + if (wave_bank != NULL) { + JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); + if (wave_arc != NULL) { + return wave_arc->load(NULL); + } + } + return false; +} +#endif + /* 802BA704-802BA770 2B5044 006C+00 3/3 0/0 0/0 .text loadSeWave__10Z2SceneMgrFUl */ bool Z2SceneMgr::loadSeWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0); + JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance(); + JUT_ASSERT(3030, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(0); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { return wave_arc->load(NULL); } } + + JUT_WARN_DEVICE(3038, 1, "Z2SceneMgr::cannot load SE wave:%d\n", wave); return false; } /* 802BA770-802BA7DC 2B50B0 006C+00 3/3 0/0 0/0 .text loadBgmWave__10Z2SceneMgrFUl */ bool Z2SceneMgr::loadBgmWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1); + JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance(); + JUT_ASSERT(3047, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(1); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { return wave_arc->loadTail(NULL); } } + + JUT_WARN_DEVICE(3055, 1, "Z2SceneMgr::cannot load BGM wave:%d\n", wave); return false; } |
