mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-10-30 07:11:05 +00:00
Implement hack to fix options menu SFX not playing in stages. (#239)
This commit is contained in:
parent
692542fb85
commit
091b4ef089
2 changed files with 42 additions and 0 deletions
|
|
@ -65,3 +65,31 @@ void AudioPatches::Update(float deltaTime)
|
||||||
|
|
||||||
// Stub volume setter.
|
// Stub volume setter.
|
||||||
GUEST_FUNCTION_STUB(sub_82E58728);
|
GUEST_FUNCTION_STUB(sub_82E58728);
|
||||||
|
|
||||||
|
// HORRIBLE HACK ZONE
|
||||||
|
// The options menu uses se_system_worldmap.csb, which is stored in Title.ar.00.
|
||||||
|
// This archive gets unloaded in stages, which causes sounds to not play in the options menu.
|
||||||
|
// To solve this, once the CSB gets loaded at title, we'll keep it PERMANENTLY loaded.
|
||||||
|
// This'll make the SFX not work if Title never gets loaded, but that'll only happen when quick booting to stages.
|
||||||
|
static bool g_loadedWorldMapCsb;
|
||||||
|
|
||||||
|
bool MakeCueSheetDataMidAsmHook(PPCRegister& r31)
|
||||||
|
{
|
||||||
|
uint8_t* base = g_memory.base;
|
||||||
|
uint32_t str = PPC_LOAD_U32(r31.u32);
|
||||||
|
|
||||||
|
if (str != NULL && strcmp(reinterpret_cast<const char*>(base + str), "se_system_worldmap") == 0)
|
||||||
|
{
|
||||||
|
if (!g_loadedWorldMapCsb)
|
||||||
|
{
|
||||||
|
g_loadedWorldMapCsb = true;
|
||||||
|
return false; // Allow load for the first and only time.
|
||||||
|
}
|
||||||
|
|
||||||
|
// Already loaded before, skip all the loading and name assignment code.
|
||||||
|
// Not assigning the name prevents it from unloading the CSB file.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -890,3 +890,17 @@ address = 0x82BA7D40
|
||||||
name = "YggdrasillRenderQuadMidAsmHook"
|
name = "YggdrasillRenderQuadMidAsmHook"
|
||||||
address = 0x82E9FBA0
|
address = 0x82E9FBA0
|
||||||
registers = ["r3", "r6"]
|
registers = ["r3", "r6"]
|
||||||
|
|
||||||
|
# CSB loader
|
||||||
|
[[midasm_hook]]
|
||||||
|
name = "MakeCueSheetDataMidAsmHook"
|
||||||
|
address = 0x82E5EA10
|
||||||
|
registers = ["r31"]
|
||||||
|
jump_address_on_true = 0x82E5EA40
|
||||||
|
|
||||||
|
# Name assignment
|
||||||
|
[[midasm_hook]]
|
||||||
|
name = "MakeCueSheetDataMidAsmHook"
|
||||||
|
address = 0x82E5EA40
|
||||||
|
registers = ["r31"]
|
||||||
|
jump_address_on_true = 0x82E5EA4C
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue