diff --git a/game/overlord/common/sbank.cpp b/game/overlord/common/sbank.cpp index 14347058d15..6c791b3ed38 100644 --- a/game/overlord/common/sbank.cpp +++ b/game/overlord/common/sbank.cpp @@ -42,8 +42,6 @@ void InitBanks() { } bank->unk4 = 0; - - bank->name.resize(16); strcpy(bank->name.data(), ""); } @@ -122,7 +120,7 @@ s32 LookupSoundIndex(const char* name, SoundBank** bank_out) { } for (int i = 0; i < (int)bank->sound_count; i++) { - if (bank->sound[i].name == name) { + if (memcmp(bank->sound[i].name.data(), name, 16) == 0) { *bank_out = bank; return i; } @@ -141,7 +139,7 @@ SoundBank* LookupBank(const char* name) { } auto bank = gBanks[idx]; - if (bank->name == name && bank->in_use) { + if ((memcmp(bank->name.data(), name, 16) == 0) && bank->in_use) { return bank; } idx--; diff --git a/game/overlord/common/sbank.h b/game/overlord/common/sbank.h index ad6cfefe4a2..38f50acfcdb 100644 --- a/game/overlord/common/sbank.h +++ b/game/overlord/common/sbank.h @@ -7,12 +7,12 @@ #include "common/common_types.h" struct SoundRecord { - std::string name{""}; + std::array name; u32 fallof_params; }; struct SoundBank { - std::string name{""}; + std::array name; u32 bank_handle; u32 sound_count; diff --git a/game/overlord/common/soundcommon.cpp b/game/overlord/common/soundcommon.cpp index 6db43817946..c083171b9af 100644 --- a/game/overlord/common/soundcommon.cpp +++ b/game/overlord/common/soundcommon.cpp @@ -33,10 +33,10 @@ void PrintBankInfo(SoundBank* bank) { // we dont need this and it spams the console too much return; - printf("Bank %s\n\n", bank->name.c_str()); + printf("Bank %s\n\n", bank->name.data()); for (u32 i = 0; i < bank->sound_count; i++) { // Some characters use the full 16 characters (bonelurker-grunt) and dont have a null terminator - std::string name = std::string(bank->sound[i].name, 16); + std::string name = std::string(bank->sound[i].name.data(), 16); printf("%d : %16s : min %d max %d curve %d\n", i, name.c_str(), bank->sound[i].fallof_params & 0x3fff, (bank->sound[i].fallof_params >> 14) & 0x3fff, bank->sound[i].fallof_params >> 28); diff --git a/game/overlord/common/ssound.cpp b/game/overlord/common/ssound.cpp index 783cf1b9c4c..33a2b8c0fbd 100644 --- a/game/overlord/common/ssound.cpp +++ b/game/overlord/common/ssound.cpp @@ -395,7 +395,7 @@ void PrintActiveSounds() { for (auto& s : gSounds) { if (s.id != 0 && s.is_music == 0) { if (s.bank_entry != nullptr) { - u32 len = s.bank_entry->name.length(); + u32 len = strlen(s.bank_entry->name.data()); if (len > 16) { len = 16; } diff --git a/game/overlord/jak1/fake_iso.cpp b/game/overlord/jak1/fake_iso.cpp index 0ee558adb4e..ec837fa81a7 100644 --- a/game/overlord/jak1/fake_iso.cpp +++ b/game/overlord/jak1/fake_iso.cpp @@ -219,15 +219,13 @@ uint32_t FS_LoadMusic(char* name, s32* bank_handle) { // original overlord uses good old fread into a struct instance // lets use BinaryReader instead static void parseSoundBank(BinaryReader data, SoundBank& bank) { - auto name = data.read>(); - bank.name = name.data(); + bank.name = data.read>(); bank.bank_handle = data.read(); bank.sound_count = data.read(); bank.sound.resize(bank.sound_count); for (auto& snd : bank.sound) { - name = data.read>(); - snd.name = name.data(); + snd.name = data.read>(); snd.fallof_params = data.read(); } } diff --git a/game/overlord/jak1/srpc.cpp b/game/overlord/jak1/srpc.cpp index b54c5db9ac6..fc9c7834131 100644 --- a/game/overlord/jak1/srpc.cpp +++ b/game/overlord/jak1/srpc.cpp @@ -508,4 +508,4 @@ s32 VBlank_Handler(void*) { return 1; } -} // namespace jak1 \ No newline at end of file +} // namespace jak1