diff --git a/game/overlord/sbank.cpp b/game/overlord/sbank.cpp index 922e7237de..b64354c117 100644 --- a/game/overlord/sbank.cpp +++ b/game/overlord/sbank.cpp @@ -26,18 +26,14 @@ void sbank_init_globals() { } void InitBanks() { - for (auto& gBank : gBanks) { - gBank->bank_handle = 0; - gBank->sound_count = 0; + for (auto bank : gBanks) { + bank->bank_handle = 0; + bank->sound_count = 0; - gBank->in_use = false; - gBank->unk4 = 0; + bank->in_use = false; + bank->unk4 = 0; - // paper over bank allocation differences - if (g_game_version == GameVersion::Jak1) - gBank->in_use = 1; - - strcpy(gBank->name, ""); + strcpy(bank->name, ""); } if (g_game_version == GameVersion::Jak2) { @@ -46,24 +42,24 @@ void InitBanks() { gBanks[0]->spu_size = 0xAFCC0; strncpy(gBanks[1]->name, "gun", 16); - gBanks[0]->spu_loc = 0x131740; - gBanks[0]->spu_size = 0; + gBanks[1]->spu_loc = 0x131740; + gBanks[1]->spu_size = 0; strncpy(gBanks[2]->name, "board", 16); - gBanks[0]->spu_loc = 0x131740; - gBanks[0]->spu_size = 0; + gBanks[2]->spu_loc = 0x131740; + gBanks[2]->spu_size = 0; strncpy(gBanks[3]->name, "level0", 16); - gBanks[0]->spu_loc = 0x131740; - gBanks[0]->spu_size = 0x42800; + gBanks[3]->spu_loc = 0x131740; + gBanks[3]->spu_size = 0x42800; strncpy(gBanks[4]->name, "level1", 16); - gBanks[0]->spu_loc = 0x173f40; - gBanks[0]->spu_size = 0x42800; + gBanks[4]->spu_loc = 0x173f40; + gBanks[4]->spu_size = 0x42800; strncpy(gBanks[5]->name, "level2", 16); - gBanks[0]->spu_loc = 0x1B6740; - gBanks[0]->spu_size = 0x42800; + gBanks[5]->spu_loc = 0x1B6740; + gBanks[5]->spu_size = 0x42800; } } @@ -132,11 +128,17 @@ SoundBank* LookupBank(const char* name) { if (idx < 0) { return nullptr; // not found. } - auto& bank = gBanks[idx]; + auto bank = gBanks[idx]; // they had some weird stuff here that took advantage of the fact that this region was // 16-byte aligned, so it probably wasn't a memcmp, but this is easier. - if ((memcmp(bank->name, name, 16) == 0) && bank->in_use) { - return bank; + if (g_game_version == GameVersion::Jak1) { + if ((memcmp(bank->name, name, 16) == 0)) { + return bank; + } + } else { + if ((memcmp(bank->name, name, 16) == 0) && bank->in_use) { + return bank; + } } idx--; } diff --git a/game/overlord/srpc.cpp b/game/overlord/srpc.cpp index 23e2a9ae78..be76346c93 100644 --- a/game/overlord/srpc.cpp +++ b/game/overlord/srpc.cpp @@ -799,7 +799,7 @@ void* RPC_Loader2(unsigned int /*fno*/, void* data, int size) { if (!bank->unk4) { bank->in_use = false; } - bank->in_use = 0; + bank->in_use = false; snd_UnloadBank(handle); snd_ResolveBankXREFS(); } break; diff --git a/game/sound/989snd/blocksound_handler.cpp b/game/sound/989snd/blocksound_handler.cpp index 21b8ea12d6..d1a7a4b516 100644 --- a/game/sound/989snd/blocksound_handler.cpp +++ b/game/sound/989snd/blocksound_handler.cpp @@ -125,8 +125,8 @@ void blocksound_handler::set_vol_pan(s32 vol, s32 pan) { } auto volume = m_vm.make_volume(127, 0, m_cur_volume, m_cur_pan, voice->g_vol, voice->g_pan); - auto left = m_vm.adjust_vol_to_group(volume.left, m_sfx.d.VolGroup); - auto right = m_vm.adjust_vol_to_group(volume.right, m_sfx.d.VolGroup); + auto left = m_vm.adjust_vol_to_group(volume.left, m_group); + auto right = m_vm.adjust_vol_to_group(volume.right, m_group); voice->set_volume(left >> 1, right >> 1); } diff --git a/game/sound/989snd/blocksound_handler.h b/game/sound/989snd/blocksound_handler.h index 700386d656..e6c675838b 100644 --- a/game/sound/989snd/blocksound_handler.h +++ b/game/sound/989snd/blocksound_handler.h @@ -26,7 +26,7 @@ class blocksound_handler : public sound_handler { s32 sfx_vol, s32 sfx_pan, SndPlayParams& params) - : m_sfx(sfx), m_vm(vm), m_bank(bank) { + : m_group(sfx.d.VolGroup), m_sfx(sfx), m_vm(vm), m_bank(bank) { s32 vol, pan, pitch_mod, pitch_bend; if (sfx_vol == -1) { sfx_vol = sfx.d.Vol;