Files
dusklight/src/Z2AudioLib/Z2SceneMgr.cpp
T
Caroline Madsen 5650c7fe08 JAudio2 and Z2AudioLib work (#2223)
* JAudio2 and Z2AudioLib work

* check1stDynamicWave matched
2024-10-24 02:25:13 +03:00

2121 lines
60 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: Z2SceneMgr
//
#include "JSystem/JAudio2/JASBasicWaveBank.h"
#include "JSystem/JAudio2/JAUSectionHeap.h"
#include "JSystem/JAudio2/JAUSoundTable.h"
#include "Z2AudioLib/Z2SceneMgr.h"
#include "Z2AudioLib/Z2Param.h"
#include "Z2AudioLib/Z2SeMgr.h"
#include "Z2AudioLib/Z2SeqMgr.h"
#include "Z2AudioLib/Z2SoundMgr.h"
#include "Z2AudioLib/Z2SoundObjMgr.h"
#include "Z2AudioLib/Z2StatusMgr.h"
#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) {
sceneNum = -1;
BGM_ID = -1;
roomNum = -1;
requestSeWave_1 = 0;
loadedSeWave_1 = 0;
requestSeWave_2 = 0;
loadedSeWave_2 = 0;
requestBgmWave_1 = 0;
loadedBgmWave_1 = 0;
requestBgmWave_2 = 0;
loadedBgmWave_2 = 0;
requestDemoWave = 0;
loadedDemoWave = 0;
field_0x18 = 0;
field_0x19 = 0;
field_0x1a = false;
field_0x1b = false;
sceneExist = 0;
inGame = 0;
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) {
Z2GetSoundMgr()->resetFilterAll();
}
}
static char* sSpotName[81] = {
"F_SP00",
"F_SP103",
"R_SP01",
"F_SP104",
"R_SP107",
"F_SP108",
"R_SP108",
"F_SP117",
"F_SP109",
"R_SP109",
"R_SP209",
"F_SP110",
"R_SP110",
"F_SP111",
"F_SP128",
"R_SP128",
"F_SP115",
"F_SP112",
"F_SP126",
"F_SP127",
"R_SP127",
"F_SP113",
"F_SP116",
"R_SP116",
"R_SP160",
"R_SP161",
"F_SP114",
"F_SP118",
"F_SP124",
"F_SP125",
"F_SP121",
"F_SP122",
"F_SP123",
"F_SP200",
"F_SP102",
"",
"R_SP300",
"R_SP301",
"T_ENEMY",
"D_MN54",
"D_MN05",
"D_MN05B",
"D_MN05A",
"D_MN04",
"D_MN04B",
"D_MN04A",
"D_MN01",
"D_MN01B",
"D_MN01A",
"D_MN10",
"D_MN10B",
"D_MN10A",
"D_MN11",
"D_MN11B",
"D_MN11A",
"D_MN06",
"D_MN06B",
"D_MN06A",
"D_MN07",
"D_MN07B",
"D_MN07A",
"D_MN08",
"D_MN08B",
"D_MN08C",
"D_MN08A",
"D_MN08D",
"D_MN09",
"D_MN09A",
"D_MN09B",
"D_MN09C",
"D_SB00",
"D_SB01",
"D_SB02",
"D_SB03",
"D_SB04",
"D_SB05",
"D_SB06",
"D_SB07",
"D_SB08",
"D_SB09",
"D_SB10",
};
/* 802B68E0-802B697C 2B1220 009C+00 3/3 2/2 2/2 .text setSceneExist__10Z2SceneMgrFb */
void Z2SceneMgr::setSceneExist(bool param_1) {
sceneExist = param_1;
timer = 0;
JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
if (param_1) {
inGame = 1;
if (requestDemoWave == 0x85) {
seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0);
} else if (requestDemoWave == 0x7F) {
Z2GetSeMgr()->seMoveVolumeAll(0.0f, 0);
} else {
seMgr->getCategory(9)->getParams()->moveVolume(1.0f, 33);
}
} else {
seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 180);
}
}
/* 802B697C-802B6A18 2B12BC 009C+00 0/0 1/1 0/0 .text setFadeOutStart__10Z2SceneMgrFUc */
void Z2SceneMgr::setFadeOutStart(u8 param_0) {
setSceneExist(false);
Z2GetSeqMgr()->bgmAllMute(33, 3.0f / 10.0f);
Z2GetSeMgr()->seMoveVolumeAll(0.0f, 33);
Z2GetSeqMgr()->setBattleBgmOff(true);
load1stWait = 40;
timer = -1;
}
/* 802B6A18-802B6AF8 2B1358 00E0+00 0/0 1/1 0/0 .text setFadeInStart__10Z2SceneMgrFUc */
void Z2SceneMgr::setFadeInStart(u8 param_0) {
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);
}
}
Z2GetSeqMgr()->setTwilightGateVol(1.0f);
Z2GetStatusMgr()->menuOut();
if (!field_0x1a) {
Z2GetSeqMgr()->bgmAllMute(33, 1.0f);
}
inGame = true;
}
/* 802B6AF8-802B995C 2B1438 2E64+00 8/0 1/1 0/0 .text setSceneName__10Z2SceneMgrFPcll */
// NONMATCHING JSULink<JAIStream>::getNext() inlining
void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
JAISoundID bgm_id = -1;
JAISound* sound;
int spot = 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();
Z2GetSeqMgr()->setWindStoneVol(1.0f, 0);
Z2GetSeqMgr()->setTwilightGateVol(1.0f);
Z2GetSeMgr()->resetCrowdSize();
Z2GetSoundObjMgr()->setGhostEnemyState(0);
Z2GetSeMgr()->resetModY();
if (Z2GetStatusMgr()->getDemoStatus() == 8) {
Z2GetStatusMgr()->setDemoName("force_end");
}
if (spotName != NULL) {
for (spot = 0; spot < (int)ARRAY_SIZE(sSpotName); spot++) {
if (!strcmp(spotName, sSpotName[spot])) {
break;
}
}
if (spot == (int)ARRAY_SIZE(sSpotName)) {
spot = SPOT_NONE;
}
}
switch (spot) {
case SPOT_ENEMY_TEST:
bgm_wave2 = 2;
if (room < 30) {
se_wave1 = 0x8a;
} else {
se_wave1 = 0x8b;
}
break;
case SPOT_ORDON_RANCH:
if (layer == 1) {
if (dComIfGs_isSaveSwitch(0x67)) {
bgm_id = Z2BGM_TOAL_NIGHT;
bgm_wave1 = 6;
Z2GetSeqMgr()->changeBgmStatus(0);
}
} else {
if (layer == 8) {
demo_wave = 0x5c;
}
bgm_id = Z2BGM_RANCH;
bgm_wave1 = 1;
bgm_wave2 = 2;
time_proc_vol_mod = true;
}
se_wave1 = 0x26;
se_wave2 = 0x25;
field_0x1b = true;
break;
case SPOT_ORDON_VILLAGE:
field_0x1b = true;
se_wave1 = 0x26;
if (room == 0) {
se_wave2 = 0x27;
switch (layer) {
case 1:
bgm_id = Z2BGM_TOAL_NIGHT;
bgm_wave1 = 6;
Z2GetSeqMgr()->changeBgmStatus(0);
break;
case 8:
bgm_id = 0x2000011;
demo_wave = 0x64;
break;
case 10:
case 11:
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
break;
default:
bgm_id = Z2BGM_TOAL_VILLEGE;
bgm_wave1 = 3;
bgm_wave2 = 4;
time_proc_vol_mod = true;
break;
}
} else if (room == 1) {
se_wave2 = 0x28;
switch (layer) {
case 1:
field_0x1b = false;
if (dComIfGs_isSaveSwitch(0x67)) {
bgm_id = Z2BGM_TOAL_NIGHT;
bgm_wave1 = 6;
Z2GetSeqMgr()->changeBgmStatus(0);
}
break;
case 12:
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
break;
case 5:
case 8:
bgm_id = Z2BGM_EVENT01;
bgm_wave1 = 5;
break;
case 9:
demo_wave = 0x5c;
break;
case 3:
bVar2 = true;
if (!dComIfGs_isSaveSwitch(0xa)) {
break;
}
// fallthrough
case 4:
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[18])
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[625]))
{
bgm_wave1 = 0x55;
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[194])) {
bgm_id = Z2BGM_EVENT05;
}
break;
}
// fallthrough
default:
bgm_id = Z2BGM_TOAL_VILLEGE;
bgm_wave1 = 3;
time_proc_vol_mod = true;
break;
}
}
break;
case SPOT_ORDON_INTERIOR:
se_wave1 = 0x26;
switch (room) {
case 0:
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
bgm_wave2 = 9;
se_wave2 = 0x2a;
break;
case 1:
if (layer == 0) {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[136])) {
bgm_id = Z2BGM_SHOP01;
} else {
bgm_id = Z2BGM_SHOP02;
}
bgm_wave1 = 7;
} else if (layer == 2) {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) {
bgm_id = Z2BGM_SHOP01;
bgm_wave1 = 7;
} else {
bgm_id = Z2BGM_ROOM_2;
bgm_wave1 = 0x35;
}
}
se_wave2 = 0x29;
break;
case 2:
if (layer == 0 || layer == 3) {
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
} else if (layer == 1) {
bgm_id = Z2BGM_TOAL_NIGHT;
bgm_wave1 = 6;
Z2GetSeqMgr()->changeBgmStatus(1);
} else if (layer == 2) {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) {
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
} else {
bgm_id = Z2BGM_ROOM_2;
bgm_wave1 = 0x35;
}
}
se_wave2 = 0x2c;
break;
case 3:
case 4:
case 7:
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
break;
case 5:
if (layer == 0) {
if (dComIfGs_isSaveSwitch(0x67)) {
bgm_id = Z2BGM_TOAL_NIGHT;
bgm_wave1 = 6;
Z2GetSeqMgr()->changeBgmStatus(1);
} else {
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
}
} else {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) {
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
} else {
bgm_id = Z2BGM_ROOM_2;
bgm_wave1 = 0x35;
}
}
se_wave2 = 0x2b;
}
field_0x1b = true;
break;
case SPOT_ORDON_SPRING:
se_wave1 = 0x26;
se_wave2 = 0x2d;
switch (layer) {
case 4:
field_0x1b = false;
bVar2 = true;
if (dComIfGs_isSaveSwitch(0x67)) {
bgm_id = Z2BGM_TOAL_NIGHT;
bgm_wave1 = 6;
Z2GetSeqMgr()->changeBgmStatus(0);
}
break;
case 7:
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
break;
case 8:
demo_wave = 0x65;
break;
case 10:
demo_wave = 0x69;
break;
case 9:
case 11:
demo_wave = 0x6a;
break;
case 12:
demo_wave = 0x85;
break;
case 13:
case 14:
demo_wave = 0x5c;
break;
case 3:
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[18])
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[625]))
{
bgm_id = Z2BGM_EVENT05;
bgm_wave1 = 0x55;
break;
}
// fallthrough
default:
bVar2 = true;
break;
}
break;
case SPOT_TWILIGHT_HYRULE_CASTLE:
se_wave1 = 0x2e;
if (inDarkness) {
se_wave2 = 0x30;
if (room == 0) {
if (layer == 11) {
demo_wave = 0x66;
} else if (layer == 7 || layer == 10) {
demo_wave = 0x67;
} else {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[42])) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
}
}
} else if (room == 3 && (layer == 8 || layer == 12)) {
demo_wave = 0x68;
} else if ((room == 3 && layer == 10) || (room == 2 && layer == 8)) {
bgm_id = Z2BGM_DEMO08;
bgm_wave1 = 0x21;
demo_wave = 0x69;
} else {
if (room == 3 && layer == 14) {
bVar2 = true;
}
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
}
} else {
if (room == 3 && layer == 9) {
demo_wave = 0x75;
}
se_wave2 = 0x2f;
}
break;
case SPOT_CASTLE_THRONE_ROOM:
if (layer == 8) {
demo_wave = 0x68;
} else if (layer == 9) {
demo_wave = 0x7f;
}
break;
case SPOT_CORO_SHOP:
se_wave1 = 0x31;
if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x33;
} else {
if (layer == 1) {
bgm_id = Z2BGM_EVENT05;
bgm_wave1 = 0x55;
se_wave2 = 0x32;
} else {
bgm_id = Z2BGM_FILONE_FOREST;
bgm_wave1 = 0xf;
time_proc_vol_mod = true;
Z2GetSeqMgr()->changeBgmStatus(1);
se_wave2 = 0x32;
}
}
break;
case SPOT_FARON_WOODS:
se_wave1 = 0x31;
if (layer == 11) {
demo_wave = 0x6c;
inDarkness = false;
} else if (layer == 9) {
demo_wave = 0x6a;
} else if (inDarkness) {
if (layer == 7) {
demo_wave = 0x78;
} else if (layer == 8) {
demo_wave = 0x66;
} else if (layer == 10) {
bgm_id = Z2BGM_DEMO10;
bgm_wave1 = 0x21;
demo_wave = 0x6b;
} else {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
}
se_wave2 = 0x33;
} else {
se_wave2 = 0x32;
switch (layer) {
case 4:
case 6:
case 12:
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
break;
case 13:
demo_wave = 0x5c;
break;
case 1:
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[18])
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[625]))
{
bgm_id = Z2BGM_EVENT05;
bgm_wave1 = 0x55;
}
break;
default:
bgm_id = Z2BGM_FILONE_FOREST;
bgm_wave1 = 0xf;
time_proc_vol_mod = true;
if (room == 0xe) {
Z2GetSeqMgr()->changeBgmStatus(1);
} else {
Z2GetSeqMgr()->changeBgmStatus(0);
}
break;
}
}
break;
case SPOT_KAKARIKO_VILLAGE:
se_wave1 = 0x34;
if (layer == 8) {
demo_wave = 0x6e;
inDarkness = false;
} else if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x36;
} else {
se_wave2 = 0x35;
switch (layer) {
case 6:
case 7:
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
break;
case 9:
demo_wave = 0x6e;
break;
case 10:
demo_wave = 0x6f;
break;
case 11:
bVar2 = true;
demo_wave = 0x70;
break;
case 12:
demo_wave = 0x71;
break;
case 13:
demo_wave = 0x83;
bgm_wave1 = 0x2c;
break;
case 0:
bgm_id = Z2BGM_KAKARIKO;
bgm_wave1 = 0x10;
bgm_wave2 = 0x18;
demo_wave = 0x84;
time_proc_vol_mod = true;
break;
case 1:
bgm_id = Z2BGM_EVENT02;
bgm_wave1 = 0x1c;
bgm_wave2 = 0x18;
break;
case 4:
bVar2 = true;
bgm_id = Z2BGM_LUTERA2;
bgm_wave1 = 0x2c;
break;
default:
bgm_id = Z2BGM_KAKARIKO;
bgm_wave1 = 0x10;
bgm_wave2 = 0x23;
time_proc_vol_mod = true;
break;
}
}
break;
case SPOT_KAKARIKO_INTERIOR:
se_wave1 = 0x34;
if (inDarkness) {
se_wave2 = 0x36;
if (room == 0 && layer == 8) {
demo_wave = 0x6d;
bgm_wave1 = 0xe;
} else {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
if (room == 5) {
bgm_wave2 = 0x1c;
}
}
} else {
switch (room) {
case 1:
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) {
bgm_id = Z2BGM_SHOP01;
} else {
bgm_id = Z2BGM_SHOP02;
}
bgm_wave1 = 7;
break;
case 2:
if (layer == 13) {
demo_wave = 0x83;
} else {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) {
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
}
}
break;
case 3:
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[109])) {
bgm_id = Z2BGM_SHOP_MARO;
bgm_wave1 = 0x33;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[85])) {
bgm_id = Z2BGM_SHOP01;
bgm_wave1 = 7;
} else {
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
}
break;
case 0:
if (layer == 9) {
demo_wave = 0x85;
} else {
bgm_id = Z2BGM_CHURCH1;
bgm_wave1 = 0x2f;
}
break;
case 4:
case 5:
case 6:
break;
}
se_wave2 = 0x86;
}
break;
case SPOT_SANCTUARY_BASEMENT:
se_wave1 = 0x34;
if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x36;
} else {
bgm_id = Z2BGM_CHURCH2;
bgm_wave1 = 0x30;
se_wave2 = 0x86;
Z2GetSeqMgr()->muteSceneBgm(30, 0.5f);
}
break;
case SPOT_KAKARIKO_GRAVEYARD:
se_wave1 = 0x34;
if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x36;
} else {
if (layer == 4) {
bgm_id = Z2BGM_LUTERA2;
bgm_wave1 = 0x2c;
} else {
bgm_id = Z2BGM_CHURCH2;
bgm_wave1 = 0x30;
Z2GetSeqMgr()->unMuteSceneBgm(30);
time_proc_vol_mod = true;
bgm_wave2 = 0x2c;
}
se_wave2 = 0x37;
}
break;
case SPOT_DEATH_MOUNTAIN:
se_wave1 = 0x34;
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
} else if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x39;
} else {
bgm_id = Z2BGM_DEATH_MOUNTAIN01;
bgm_wave1 = 0x11;
se_wave2 = 0x38;
time_proc_vol_mod = true;
if (room == 3) {
height_vol_mod = true;
}
}
break;
case SPOT_HIDDEN_VILLAGE:
if (layer == 0) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
if (dComIfGs_isSwitch(0x2e, 0) && !dComIfGs_isSwitch(0x11, 0)) {
bgm_id = Z2BGM_HIDDEN_VILLAGE;
}
field_0x1b = true;
} else if (layer == 1) {
Z2GetSeqMgr()->bgmStop(33, 0);
}
bgm_wave1 = 0x31;
se_wave1 = 0x34;
se_wave2 = 0x4f;
break;
case SPOT_IMPAZ_HOUSE:
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
se_wave1 = 0x34;
se_wave2 = 0x4f;
field_0x1b = true;
break;
case SPOT_SUMO_HALL:
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
} else {
bgm_id = Z2BGM_DEATH_MOUNTAIN02;
bgm_wave1 = 0x11;
se_wave1 = 0x34;
bgm_wave2 = 0x12;
se_wave2 = 0x3a;
}
break;
case SPOT_LAKE_HYLIA:
se_wave1 = 0x3b;
if (layer == 8) {
demo_wave = 0x72;
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) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x3d;
if (layer == 14) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 10000, 40000, 50000);
} else {
if (dComIfGs_isSaveSwitch(0xf) && !dComIfGs_isSaveSwitch(0x10)) {
field_0x1b = true;
}
bgm_wave2 = 0x4d;
}
} else {
if (room == 0) {
bgm_id = Z2BGM_LAKE;
bgm_wave1 = 0x34;
height_vol_mod = true;
time_proc_vol_mod = true;
}
se_wave2 = 0x3c;
}
break;
case SPOT_UPPER_ZORAS_RIVER:
se_wave1 = 0x55;
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
} else if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x3f;
} else {
bgm_wave1 = 0x34;
se_wave2 = 0x3e;
height_vol_mod = true;
}
break;
case SPOT_FISHING_POND:
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
} else {
se_wave1 = 0x3b;
bgm_id = Z2BGM_FISHING;
bgm_wave1 = 0x2b;
se_wave2 = 0x3e;
height_vol_mod = true;
time_proc_vol_mod = true;
}
break;
case SPOT_HENA_CABIN:
se_wave1 = 0x3b;
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
bgm_wave2 = 0x47;
se_wave2 = 0x3e;
break;
case SPOT_ZORAS_RIVER:
se_wave1 = 0x55;
if (inDarkness) {
bgm_id = Z2BGM_CARGO_GAME_TW;
bgm_wave1 = 0x24;
se_wave2 = 0x41;
field_0x1b = true;
} else {
if (layer == 4) {
bgm_id = 0x200000b;
} else if (layer == 1) {
bgm_id = Z2BGM_MINIGAME_ROOM;
bgm_wave1 = 0x47;
bgm_wave2 = 0x42;
} else if (layer == 0 || layer == 2) {
bgm_wave2 = 0x57;
}
se_wave2 = 0x40;
}
break;
case SPOT_ZORAS_DOMAIN:
se_wave1 = 0x3b;
if (layer == 8 || layer == 9) {
demo_wave = 0x82;
} else if (layer == 10 || layer == 11) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0x0e;
bgm_wave2 = 0x2c;
se_wave2 = 0x3f;
} else {
bgm_id = Z2BGM_ZORA_VILLAGE;
bgm_wave1 = 0x20;
se_wave2 = 0x3e;
height_vol_mod = true;
time_proc_vol_mod = true;
}
break;
case SPOT_CASTLE_TOWN:
se_wave1 = 0x42;
if (layer == 8) {
demo_wave = 0x68;
} else if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x44;
} else {
se_wave2 = 0x43;
time_proc_vol_mod = true;
if (room == 1 && layer == 9) {
demo_wave = 0x7a;
} else if (layer == 10) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else if (!(layer == 1 && room == 1
&& dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[542])))
{
bgm_id = Z2BGM_CASTLE_TOWN;
bgm_wave1 = 0x25;
Z2GetSeqMgr()->changeBgmStatus(room);
}
}
break;
case SPOT_CASTLE_TOWN_INTERIOR:
if (room == 6) {
se_wave1 = 0x2e;
se_wave2 = 0x2f;
} else {
se_wave1 = 0x42;
if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x44;
} else {
se_wave2 = 0x5b;
if (room == 5) {
if (layer == 8) {
demo_wave = 0x73;
} else if (layer == 9) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else {
bgm_id = Z2BGM_INDOOR_03;
bgm_wave1 = 8;
}
}
}
}
break;
case SPOT_CASTLE_TOWN_SHOPS:
se_wave1 = 0x42;
se_wave2 = 0x5b;
switch (room) {
case 0:
if (layer == 1) {
bgm_id = Z2BGM_SHOP_MARO;
bgm_wave1 = 0x33;
} else {
bgm_id = Z2BGM_SHOP_CELEB;
bgm_wave1 = 0x32;
}
break;
case 1:
bgm_id = Z2BGM_FORTUNE;
bgm_wave1 = 0x37;
Z2GetSeqMgr()->changeBgmStatus(0);
break;
case 2:
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
break;
case 3:
bgm_id = Z2BGM_INDOOR_04;
bgm_wave1 = 0x56;
break;
case 4:
bgm_id = Z2BGM_CASTLE_TOWN;
bgm_wave1 = 0x25;
Z2GetSeqMgr()->changeBgmStatus(5);
break;
case 5:
bgm_id = Z2BGM_SHOP02;
bgm_wave1 = 7;
break;
}
break;
case SPOT_STAR_TENT:
se_wave1 = 0x42;
se_wave2 = 0x87;
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[289])) {
bgm_id = Z2BGM_MINIGAME_ROOM;
}
bgm_wave1 = 0x46;
break;
case SPOT_SACRED_GROVE:
se_wave1 = 0x31;
bgm_wave2 = 0x1b;
se_wave2 = 0x45;
if (room == 3) {
bgm_id = Z2BGM_HOLY_FOREST;
bgm_wave1 = 0x2a;
} else if (room == 2) {
if (layer == 10) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else {
bgm_id = Z2BGM_TEMPLE_OF_TIME;
bgm_wave1 = 0x3e;
}
} else if (room == 1) {
if (layer == 0 || layer == 9) {
demo_wave = 0x76;
} else if (layer == 8 || layer == 11) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else {
bgm_wave2 = 0x40;
}
}
break;
case SPOT_SNOWPEAK:
if (layer == 8) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else {
bgm_id = Z2BGM_SNOW_MOUNTAIN;
bgm_wave1 = 0x2d;
bgm_wave2 = 0x3a;
se_wave1 = 0x46;
se_wave2 = 0x47;
}
height_vol_mod = true;
break;
case SPOT_GERUDO_DESERT:
se_wave1 = 0x48;
se_wave2 = 0x49;
if (layer == 8 || layer == 9 || layer == 10) {
demo_wave = 0x77;
} else if (layer == 11) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else {
bgm_id = Z2BGM_DESERT;
bgm_wave1 = 0x1f;
}
break;
case SPOT_ARBITERS_GROUNDS_EXTERIOR:
if (room == 1) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 1000, 2000, 9000);
bgm_wave1 = 0x3d;
bgm_wave2 = 0x1c;
}
se_wave1 = 0x48;
se_wave2 = 0x49;
break;
case SPOT_MIRROR_CHAMBER:
switch (layer) {
case 7:
case 8:
case 9:
case 10:
demo_wave = 0x80;
break;
case 11:
case 12:
demo_wave = 0x78;
break;
case 13:
demo_wave = 0x7e;
break;
default:
bVar2 = true;
bgm_id = Z2BGM_DESERT;
bgm_wave1 = 0x1f;
break;
}
se_wave1 = 0x48;
se_wave2 = 0x49;
break;
case SPOT_HYRULE_FIELD:
se_wave1 = 0x4a;
if (room == 10 && layer == 11) {
demo_wave = 0x74;
fVar1 = 0.7f;
} else if (layer == 9 || layer == 10) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else if (layer == 2 || layer == 3) {
bgm_id = Z2BGM_HORSE_BATTLE;
bgm_wave1 = 0xd;
se_wave1 = 0x54;
se_wave2 = 0x4e;
field_0x1b = true;
fVar1 = 1.0f;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
} 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;
}
} else {
field_bgm_play = true;
if (Z2GetStatusMgr()->checkDayTime()) {
bgm_id = Z2BGM_FIELD_LINK_DAY;
} else {
bgm_id = Z2BGM_FIELD_LINK_NIGHT;
}
bgm_wave1 = 0x19;
switch (room) {
case 2:
case 3:
case 4:
se_wave2 = 0x5e;
break;
case 0:
case 5:
case 7:
se_wave2 = 0x5f;
break;
case 9:
case 10:
case 11:
se_wave2 = 0x60;
break;
case 12:
case 13:
case 14:
se_wave2 = 0x61;
break;
case 1:
case 6:
case 15:
se_wave2 = 0x4b;
break;
}
switch (room) {
case 0:
case 3:
case 6:
case 10:
case 13:
fVar1 = 1.0f;
break;
case 1:
case 2:
case 4:
case 5:
case 14:
case 15:
fVar1 = 0.7f;
break;
case 7:
case 9:
case 11:
case 12:
fVar1 = 0.8f;
break;
}
}
break;
case SPOT_CASTLE_TOWN_GATES:
se_wave1 = 0x4a;
if (layer == 8) {
demo_wave = 0x73;
fVar1 = 1.0f;
} else if (layer == 9) {
demo_wave = 0x75;
fVar1 = 0.5f;
} else if (layer == 10) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x4c;
} else {
if (room == 8) {
se_wave2 = 0x62;
fVar1 = 0.8f;
} else if (room == 16) {
se_wave2 = 0x88;
fVar1 = 0.8f;
} else if (room == 17) {
se_wave2 = 0x89;
fVar1 = 1.0f;
}
field_bgm_play = true;
if (Z2GetStatusMgr()->checkDayTime()) {
bgm_id = Z2BGM_FIELD_LINK_DAY;
} else {
bgm_id = Z2BGM_FIELD_LINK_NIGHT;
}
bgm_wave1 = 0x19;
}
break;
case SPOT_HYLIA_BRIDGE_BATTLE:
se_wave1 = 0x54;
bgm_wave1 = 0x3d;
se_wave2 = 0x4e;
fVar1 = 1.0f;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_ELDIN_BRIDGE_BATTLE:
se_wave1 = 0x4a;
if (layer == 11) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
} else if (layer == 10) {
bgm_wave1 = 0x59;
} else if (layer != 8 && layer != 9) {
if (layer == 0) {
bgm_wave1 = 13;
} else if (layer == 4) {
bgm_wave1 = 0x3d;
}
fVar1 = 1.0f;
se_wave2 = 0x4d;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_SHADES_REALM:
se_wave1 = 0x4a;
if (dComIfGs_getStartPoint() == 2) {
bgm_wave2 = 0x50;
} else if (dComIfGs_getStartPoint() == 3) {
bgm_wave2 = 0x4f;
} else if (dComIfGs_getStartPoint() == 4) {
bgm_wave2 = 0x3b;
} else if (dComIfGs_getStartPoint() == 5) {
bgm_wave2 = 0x51;
} else if (dComIfGs_getStartPoint() == 6) {
bgm_wave2 = 0x52;
} else if (dComIfGs_getStartPoint() == 7) {
bgm_wave2 = 0x53;
} else {
bgm_wave1 = 0x44;
}
se_wave2 = 0x5d;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_FOREST_TEMPLE:
bgm_id = Z2BGM_DUNGEON_FOREST;
bgm_wave1 = 0xa;
bgm_wave2 = 0x40;
se_wave1 = 1;
se_wave2 = 2;
Z2GetSeqMgr()->changeBgmStatus(room);
break;
case SPOT_FOREST_TEMPLE_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_FOREST;
bgm_wave1 = 0xa;
bgm_wave2 = 0xb;
se_wave1 = 1;
se_wave2 = 3;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860);
break;
case SPOT_FOREST_TEMPLE_BOSS:
se_wave1 = 1;
if (dComIfGs_isStageSwitch(2, 1)) {
bgm_id = Z2BGM_DUNGEON_FOREST;
bgm_wave1 = 0xa;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[55])) {
bgm_id = 0x200005b;
} else {
bgm_wave1 = 0xc;
se_wave2 = 4;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860);
break;
case SPOT_GORON_MINES:
bgm_id = Z2BGM_DUNGEON_LV2;
bgm_wave1 = 0x13;
bgm_wave2 = 0x3c;
Z2GetSeqMgr()->changeBgmStatus(room);
se_wave1 = 5;
se_wave2 = 6;
break;
case SPOT_GORON_MINES_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV2;
bgm_wave1 = 0x13;
se_wave1 = 5;
se_wave2 = 7;
bgm_wave2 = 0x14;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_GORON_MINES_BOSS:
se_wave1 = 5;
if (dComIfGs_isStageSwitch(3, 0x7c)) {
bgm_id = Z2BGM_DUNGEON_LV2;
bgm_wave1 = 0x13;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) {
bgm_id = 0x200005b;
} else {
bgm_wave1 = 0x16;
se_wave2 = 8;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_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:
bgm_id = Z2BGM_DUNGEON_LV3;
bgm_wave1 = 0x15;
bgm_wave2 = 0x17;
se_wave1 = 9;
se_wave2 = 0xb;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_LAKEBED_TEMPLE_BOSS:
se_wave1 = 9;
if (dComIfGs_isStageSwitch(4, 0xe)) {
bgm_id = Z2BGM_DUNGEON_LV3;
bgm_wave1 = 0x15;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[78])) {
bgm_id = 0x200005b;
} else {
bgm_wave1 = 0x1e;
se_wave2 = 0xc;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_ARBITERS_GROUNDS:
bgm_id = Z2BGM_DUNGEON_LV4;
bgm_wave1 = 0x1a;
bgm_wave2 = 0x41;
se_wave1 = 0xd;
se_wave2 = 0xe;
if (room == 1) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_ARBITERS_GROUNDS_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV4;
bgm_wave1 = 0x1a;
bgm_wave2 = 0x22;
se_wave1 = 0xd;
se_wave2 = 0xf;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_ARBITERS_GROUNDS_BOSS:
se_wave1 = 0xd;
if (dComIfGs_isStageSwitch(0xa, 0xa)) {
bgm_id = Z2BGM_DUNGEON_LV4;
bgm_wave1 = 0x1a;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[265])) {
bgm_id = 0x200005b;
} else {
bgm_wave1 = 0x4c;
se_wave2 = 0x10;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_SNOWPEAK_RUINS:
bgm_id = Z2BGM_DUNGEON_LV5;
bgm_wave1 = 0x1d;
bgm_wave2 = 0x40;
se_wave1 = 0x11;
se_wave2 = 0x12;
Z2GetSeqMgr()->changeBgmStatus(room);
break;
case SPOT_SNOWPEAK_RUINS_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV5;
bgm_wave1 = 0x1d;
bgm_wave2 = 0x38;
se_wave1 = 0x11;
se_wave2 = 0x13;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
Z2GetSeqMgr()->changeBgmStatus(room);
break;
case SPOT_SNOWPEAK_RUINS_BOSS:
Z2GetSeqMgr()->unMuteSceneBgm(60);
se_wave1 = 0x11;
if (dComIfGs_isStageSwitch(8, 0x19)) {
bgm_id = Z2BGM_DUNGEON_LV5;
bgm_wave1 = 0x1d;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[266])) {
bgm_id = 0x200005b;
} else {
bgm_wave1 = 0x2e;
se_wave2 = 0x14;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_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:
bgm_id = Z2BGM_DUNGEON_LV6;
bgm_wave1 = 0x26;
bgm_wave2 = 0x3f;
se_wave1 = 0x15;
se_wave2 = 0x17;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_TEMPLE_OF_TIME_BOSS:
se_wave1 = 0x15;
if (dComIfGs_isStageSwitch(7, 0x18)) {
bgm_id = Z2BGM_DUNGEON_LV6;
bgm_wave1 = 0x26;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[267])) {
bgm_id = 0x200005b;
} else {
bgm_wave1 = 0x4e;
se_wave2 = 0x18;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_CITY_IN_THE_SKY:
if (room == 16) {
bgm_id = Z2BGM_OBACHAN;
bgm_wave1 = 0x40;
} else {
bgm_id = Z2BGM_DUNGEON_LV7;
bgm_wave1 = 0x27;
}
se_wave1 = 0x19;
se_wave2 = 0x1a;
break;
case SPOT_CITY_IN_THE_SKY_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV7;
bgm_wave1 = 0x27;
bgm_wave2 = 0x43;
se_wave1 = 0x19;
se_wave2 = 0x1b;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_CITY_IN_THE_SKY_BOSS:
se_wave1 = 0x19;
if (dComIfGs_isStageSwitch(0x16, 0x25)) {
bgm_id = Z2BGM_DUNGEON_LV7;
bgm_wave1 = 0x27;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[268])) {
bgm_id = 0x200005b;
} else {
bgm_wave1 = 0x1e;
se_wave2 = 0x1c;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
case SPOT_PALACE_OF_TWILIGHT:
if (layer == 8) {
if (room == 0 || room == 9) {
demo_wave = 0x77;
} else if (room == 11) {
demo_wave = 0x81;
}
} else if (layer == 9) {
demo_wave = 0x78;
} else {
bVar2 = true;
bgm_id = Z2BGM_DUNGEON_LV8;
bgm_wave1 = 0x28;
Z2GetSeqMgr()->changeBgmStatus(room);
}
se_wave1 = 0x1d;
se_wave2 = 0x1e;
break;
case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_A:
case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_B:
bgm_id = Z2BGM_DUNGEON_LV8;
bgm_wave1 = 0x28;
bgm_wave2 = 0x48;
se_wave1 = 0x1d;
se_wave2 = 0x1f;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_PALACE_OF_TWILIGHT_THRONE_ROOM:
if (layer == 8) {
demo_wave = 0x81;
} else if (layer == 9) {
demo_wave = 0x79;
} else if (dComIfGs_isStageSwitch(0x17, 0x16)) {
bgm_id = Z2BGM_DUNGEON_LV8;
bgm_wave1 = 0x28;
} else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[570])) {
bgm_id = 0x200005b;
JSUList<JAIStream>* stream_list = Z2GetSoundMgr()->getStreamMgr()->getStreamList();
JSULink<JAIStream>* stream;
for (stream = stream_list->getFirst(); stream != NULL; stream = stream->getNext()) {
if (stream->getObject()->getID() == 0x2000046) {
bgm_id = -1;
}
}
}
break;
case SPOT_PALACE_OF_TWILIGHT_BOSS:
se_wave1 = 0x1d;
bgm_wave1 = 0x39;
se_wave2 = 0x20;
if (room == 50) {
inDarkness = true;
}
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_HYRULE_CASTLE:
if (room >= 1 && room <= 6) {
bgm_id = 0x2000040;
bgm_wave2 = 0x58;
} else if (room == 8 || room == 12) {
bgm_id = Z2BGM_DUNGEON_LV9_02;
bgm_wave1 = 0x29;
height_vol_mod = true;
} else {
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:
if (room == 50) {
if (layer == 8) {
demo_wave = 0x7b;
} else if (layer == 0) {
bgm_wave1 = 0x49;
se_wave2 = 0x23;
} else if (layer == 10) {
demo_wave = 0x7b;
} else if (layer == 1) {
bgm_wave1 = 0x4a;
se_wave2 = 0x24;
} else if (layer == 9) {
demo_wave = 0x7c;
}
}
se_wave1 = 0x56;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
case SPOT_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:
if (layer == 8) {
demo_wave = 0x7c;
fVar1 = 0.1f;
} else if (layer == 10) {
demo_wave = 0x7d;
} else if (layer == 9) {
demo_wave = 0x7e;
fVar1 = 0.08f;
} else if (layer == 11) {
demo_wave = 0x7f;
}
break;
case SPOT_LIGHT_SPIRIT_CHAMBER:
demo_wave = 0x7c;
break;
case SPOT_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:
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:
se_wave2 = 0x52;
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
break;
case SPOT_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:
se_wave2 = 0x50;
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
break;
case SPOT_FARON_WOODS_CAVE:
se_wave2 = 0x53;
if (inDarkness) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
} else {
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
}
break;
}
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104])
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250])
&& demo_wave == 0 && spot != SPOT_ELDIN_BRIDGE_BATTLE)
{
bgm_wave1 = 0x36;
if (spot == SPOT_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)
{
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))
{
bgm_id = Z2BGM_FORTUNE;
bgm_wave1 = 0x37;
Z2GetSeqMgr()->changeBgmStatus(1);
time_proc_vol_mod = false;
}
if (Z2GetSoundMgr()->getStreamMgr()->isActive()) {
JAUSoundTable* sound_table = JAUSoundTable::getInstance();
JSUList<JAIStream>* stream_list = Z2GetSoundMgr()->getStreamMgr()->getStreamList();
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);
}
}
}
Z2GetSeqMgr()->setHeightVolMod(height_vol_mod, 30);
Z2GetSeqMgr()->setTimeProcVolMod(time_proc_vol_mod, 0);
Z2GetSeqMgr()->setFieldBgmPlay(field_bgm_play);
Z2GetEnvSeMgr()->initSceneEnvSe(spot, room, fVar1);
if (sceneNum != spot || 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;
sceneChange(bgm_id, se_wave1, se_wave2, bgm_wave1, bgm_wave2, demo_wave, false);
}
roomNum = room;
}
/* 802B9B68-802B9C50 2B44A8 00E8+00 1/1 0/0 0/0 .text
* sceneChange__10Z2SceneMgrF10JAISoundIDUcUcUcUcUcb */
void Z2SceneMgr::sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2,
u8 demoWave, bool param_6) {
if (bgm != BGM_ID) {
if (Z2GetSeqMgr()->getMainBgmID() == bgm) {
field_0x1a = false;
} else {
field_0x1a = true;
}
} else {
if (Z2GetSeqMgr()->getMainBgmID() == bgm) {
if (param_6) {
field_0x1a = true;
} else {
field_0x1a = false;
}
} else {
field_0x1a = true;
}
}
requestSeWave_1 = seWave1;
requestSeWave_2 = seWave2;
requestBgmWave_1 = bgmWave1;
requestBgmWave_2 = bgmWave2;
requestDemoWave = demoWave;
BGM_ID = bgm;
Z2GetFxLineMgr()->setSceneFx(sceneNum);
}
/* 802B9C50-802B9D40 2B4590 00F0+00 0/0 1/1 0/0 .text framework__10Z2SceneMgrFv */
void Z2SceneMgr::framework() {
if (load1stWait > 0) {
load1stWait--;
if (load1stWait == 0 && timer == 0) {
_load1stWaveInner_1();
}
} else if (load1stWait < 0) {
load1stWait++;
if (load1stWait == 0 && field_0x1a) {
_load1stWaveInner_2();
}
}
if (isSceneExist()) {
if (timer < 10000) {
timer++;
}
if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == struct_80450863) {
Z2GetSeqMgr()->setBattleBgmOff(false);
}
} else {
Z2GetSeqMgr()->setBattleBgmOff(true);
}
}
/* 802B9D40-802B9D98 2B4680 0058+00 0/0 1/1 0/0 .text load1stDynamicWave__10Z2SceneMgrFv
*/
void Z2SceneMgr::load1stDynamicWave() {
timer = 0;
Z2GetSoundObjMgr()->deleteEnemyAll();
setSceneExist(false);
if (load1stWait == 0) {
_load1stWaveInner_1();
}
}
/* 802B9D98-802B9FC8 2B46D8 0230+00 2/2 0/0 0/0 .text _load1stWaveInner_1__10Z2SceneMgrFv
*/
void Z2SceneMgr::_load1stWaveInner_1() {
Z2GetSeMgr()->seStopAll(0);
Z2GetEnvSeMgr()->resetSceneInner();
field_0x18 = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104]) ? 0x59 : 0x58;
if (loadedSeWave_2 != 0 && requestSeWave_2 != loadedSeWave_2) {
eraseSeWave(loadedSeWave_2);
loadedSeWave_2 = 0;
}
if (loadedDemoWave != 0 && requestDemoWave != loadedDemoWave) {
if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) {
loadedSeWave_2 = 0;
}
eraseSeWave(loadedDemoWave);
loadedDemoWave = 0;
}
if (field_0x18 != field_0x19 || requestSeWave_1 != loadedSeWave_1) {
if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) {
loadedSeWave_2 = 0;
}
if (loadedDemoWave != 0 && eraseSeWave(loadedDemoWave)) {
loadedDemoWave = 0;
}
if (loadedSeWave_1 != 0 && eraseSeWave(loadedSeWave_1)) {
loadedSeWave_1 = 0;
}
if (field_0x18 != field_0x19 && eraseSeWave(field_0x19) && loadSeWave(field_0x18)) {
field_0x19 = field_0x18;
}
if (requestSeWave_1 != 0 && loadSeWave(requestSeWave_1)) {
loadedSeWave_1 = requestSeWave_1;
} else {
loadedSeWave_1 = 0;
}
}
if (field_0x1a && Z2GetSeqMgr()->checkBgmPlaying()) {
Z2GetSeqMgr()->bgmStop(0xf, 0);
load1stWait = -15;
} else {
_load1stWaveInner_2();
}
}
/* 802B9FC8-802BA09C 2B4908 00D4+00 2/2 0/0 0/0 .text _load1stWaveInner_2__10Z2SceneMgrFv
*/
void Z2SceneMgr::_load1stWaveInner_2() {
if (loadedBgmWave_2 != 0 && requestBgmWave_2 != loadedBgmWave_2) {
eraseBgmWave(loadedBgmWave_2);
loadedBgmWave_2 = 0;
}
if (requestBgmWave_1 != loadedBgmWave_1) {
if (loadedBgmWave_2 != 0 && eraseBgmWave(loadedBgmWave_2)) {
loadedBgmWave_2 = 0;
}
if (loadedBgmWave_1 != 0 && eraseBgmWave(loadedBgmWave_1)) {
loadedBgmWave_1 = 0;
}
if (requestBgmWave_1 != 0 && loadBgmWave(requestBgmWave_1)) {
loadedBgmWave_1 = requestBgmWave_1;
} else {
loadedBgmWave_1 = 0;
}
}
}
/* 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;
}
/* 802BA120-802BA294 2B4A60 0174+00 0/0 2/2 0/0 .text load2ndDynamicWave__10Z2SceneMgrFv
*/
void Z2SceneMgr::load2ndDynamicWave() {
if (requestDemoWave != loadedDemoWave) {
if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) {
loadedSeWave_2 = 0;
}
if (loadedDemoWave != 0 && eraseSeWave(loadedDemoWave)) {
loadedDemoWave = 0;
}
if (requestDemoWave != 0 && requestDemoWave != 0x7f && loadSeWave(requestDemoWave)) {
loadedDemoWave = requestDemoWave;
} else {
loadedDemoWave = 0;
}
}
if (requestSeWave_2 != loadedSeWave_2) {
if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) {
loadedSeWave_2 = 0;
}
if (requestSeWave_2 != 0 && loadSeWave(requestSeWave_2)) {
loadedSeWave_2 = requestSeWave_2;
} else {
loadedSeWave_2 = 0;
}
}
if (requestBgmWave_2 != loadedBgmWave_2) {
if (loadedBgmWave_2 != 0 && eraseBgmWave(loadedBgmWave_2)) {
loadedBgmWave_2 = 0;
}
if (requestBgmWave_2 != 0 && loadBgmWave(requestBgmWave_2)) {
loadedBgmWave_2 = requestBgmWave_2;
} else {
loadedBgmWave_2 = 0;
}
}
}
/* 802BA294-802BA56C 2B4BD4 02D8+00 1/0 2/2 0/0 .text sceneBgmStart__10Z2SceneMgrFv */
// NONMATCHING regalloc
void Z2SceneMgr::sceneBgmStart() {
inGame = true;
setSceneExist(true);
Z2GetStatusMgr()->setPauseFlag(0);
if (!field_0x1a && Z2GetSeqMgr()->checkBgmIDPlaying(BGM_ID)) {
return;
}
if (!BGM_ID.isAnonymous() && Z2GetStatusMgr()->getDemoStatus() != 11) {
bool var;
switch (BGM_ID.mId.mBytes.b0) {
case 1:
var = false;
switch (Z2GetSeqMgr()->getSubBgmID()) {
case Z2BGM_BATTLE_NORMAL:
case Z2BGM_BOOMERAMG_MONKEY:
case Z2BGM_SUMOMO:
var = true;
break;
}
Z2GetSeqMgr()->bgmStart(BGM_ID, 0, var);
Z2GetSeqMgr()->unMuteSceneBgm(0);
switch (BGM_ID) {
case Z2BGM_DUNGEON_FOREST:
case Z2BGM_DUNGEON_LV2:
case Z2BGM_DUNGEON_LV5:
case Z2BGM_CASTLE_TOWN:
case Z2BGM_DUNGEON_LV8:
case Z2BGM_DUNGEON_LV9_02:
case Z2BGM_SNOW_MOUNTAIN:
if (sceneNum == SPOT_CASTLE_TOWN_SHOPS) {
Z2GetSeqMgr()->changeBgmStatus(5);
} else {
Z2GetSeqMgr()->changeBgmStatus(roomNum);
}
break;
case Z2BGM_HOLY_FOREST:
case Z2BGM_LUTERA2:
case Z2BGM_DEMO08:
case Z2BGM_DEMO10:
Z2GetSeqMgr()->changeBgmStatus(0);
break;
case Z2BGM_CHURCH2:
if (sceneNum == SPOT_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)
{
Z2GetSeqMgr()->muteSceneBgm(0, 0.5f);
}
break;
case Z2BGM_TOAL_NIGHT:
if (sceneNum == SPOT_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))
{
Z2GetSeqMgr()->changeBgmStatus(2);
} else {
Z2GetSeqMgr()->changeBgmStatus(0);
}
break;
}
break;
case 2:
if (!Z2GetSeqMgr()->bgmStreamCheckReady()) {
Z2GetSeqMgr()->bgmStreamPrepare(BGM_ID);
}
Z2GetSeqMgr()->bgmStreamPlay();
break;
}
}
Z2GetSeqMgr()->bgmAllUnMute(0);
field_0x1a = false;
}
/* 802BA56C-802BA5C0 2B4EAC 0054+00 0/0 1/1 0/0 .text loadStaticWaves__10Z2SceneMgrFv */
void Z2SceneMgr::loadStaticWaves() {
loadSeWave(0);
loadBgmWave(0);
loadSeWave(0x58);
field_0x18 = 0x58;
field_0x19 = 0x58;
}
/* 802BA5C0-802BA5C8 2B4F00 0008+00 0/0 1/1 0/0 .text checkFirstWaves__10Z2SceneMgrFv */
BOOL Z2SceneMgr::checkFirstWaves() {
return false;
}
/* 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);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
return wave_arc->erase();
}
}
return false;
}
/* 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);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
return wave_arc->erase();
}
}
return false;
}
/* 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);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
return wave_arc->getStatus();
}
}
return 0;
}
/* 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);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
return wave_arc->load(NULL);
}
}
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);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
return wave_arc->loadTail(NULL);
}
}
return false;
}
/* 8039BFA8-8039BFA8 028608 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */