summaryrefslogtreecommitdiff
path: root/src/Z2AudioLib/Z2SceneMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Z2AudioLib/Z2SceneMgr.cpp')
-rw-r--r--src/Z2AudioLib/Z2SceneMgr.cpp471
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;
}