mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-27 04:41:39 +00:00
CHudPause: fix crash when opening options menu from village/lab
This commit is contained in:
parent
a768e7b96b
commit
8b5d71d81a
2 changed files with 26 additions and 8 deletions
|
|
@ -21,7 +21,7 @@ void CHudPauseAddOptionsItemMidAsmHook(PPCRegister& pThis)
|
||||||
__HH_FREE(pStrMemory);
|
__HH_FREE(pStrMemory);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InjectOptionsBehaviour(uint32_t pThis, uint32_t count, uint32_t exitType = 2, uint32_t transitionType = 2)
|
bool InjectOptionsBehaviour(uint32_t pThis, uint32_t count)
|
||||||
{
|
{
|
||||||
auto status = *(be<uint32_t>*)g_memory.Translate(pThis + 0x190);
|
auto status = *(be<uint32_t>*)g_memory.Translate(pThis + 0x190);
|
||||||
auto pauseType = *(be<uint32_t>*)g_memory.Translate(pThis + 0x18C);
|
auto pauseType = *(be<uint32_t>*)g_memory.Translate(pThis + 0x18C);
|
||||||
|
|
@ -34,7 +34,7 @@ bool InjectOptionsBehaviour(uint32_t pThis, uint32_t count, uint32_t exitType =
|
||||||
3 ---- Inventory
|
3 ---- Inventory
|
||||||
4 ---- Skills
|
4 ---- Skills
|
||||||
5 ---- Go to the Lab
|
5 ---- Go to the Lab
|
||||||
6 ---- Return to World Map
|
6 ---- Wait until Day/Night
|
||||||
7 ---- Undefined
|
7 ---- Undefined
|
||||||
8 ---- Restart Stage
|
8 ---- Restart Stage
|
||||||
9 ---- Continue Stage
|
9 ---- Continue Stage
|
||||||
|
|
@ -56,6 +56,25 @@ bool InjectOptionsBehaviour(uint32_t pThis, uint32_t count, uint32_t exitType =
|
||||||
*/
|
*/
|
||||||
auto pTransitionType = (be<uint32_t>*)g_memory.Translate(pThis + 0x194);
|
auto pTransitionType = (be<uint32_t>*)g_memory.Translate(pThis + 0x194);
|
||||||
|
|
||||||
|
auto exitType = 0;
|
||||||
|
auto transitionType = 0;
|
||||||
|
|
||||||
|
switch (pauseType)
|
||||||
|
{
|
||||||
|
case 0: // World Map
|
||||||
|
case 2: // Stage
|
||||||
|
case 4: // Misc
|
||||||
|
exitType = 2;
|
||||||
|
transitionType = 2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: // Village
|
||||||
|
case 3: // Hub
|
||||||
|
exitType = 2;
|
||||||
|
transitionType = 6;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (status == 1)
|
if (status == 1)
|
||||||
{
|
{
|
||||||
if (cursorIndex == count - 2)
|
if (cursorIndex == count - 2)
|
||||||
|
|
@ -87,11 +106,11 @@ bool CHudPauseItemCountMidAsmHook(PPCRegister& pThis, PPCRegister& count)
|
||||||
return InjectOptionsBehaviour(pThis.u32, count.u32);
|
return InjectOptionsBehaviour(pThis.u32, count.u32);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHudPauseHubItemCountMidAsmHook(PPCRegister& pThis, PPCRegister& count)
|
void CHudPauseVillageItemCountMidAsmHook(PPCRegister& pThis, PPCRegister& count)
|
||||||
{
|
{
|
||||||
count.u32 += 1;
|
count.u32 += 1;
|
||||||
|
|
||||||
return InjectOptionsBehaviour(pThis.u32, count.u32, 2, 6);
|
InjectOptionsBehaviour(pThis.u32, count.u32);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHudPauseMiscItemCountMidAsmHook(PPCRegister& count)
|
bool CHudPauseMiscItemCountMidAsmHook(PPCRegister& count)
|
||||||
|
|
|
||||||
|
|
@ -432,7 +432,7 @@ registers = ["r31"]
|
||||||
# Village Pause Menu
|
# Village Pause Menu
|
||||||
[[midasm_hook]]
|
[[midasm_hook]]
|
||||||
name = "CHudPauseAddOptionsItemMidAsmHook"
|
name = "CHudPauseAddOptionsItemMidAsmHook"
|
||||||
address = 0x824AF430
|
address = 0x824AF5BC
|
||||||
registers = ["r31"]
|
registers = ["r31"]
|
||||||
|
|
||||||
# Stage Pause Menu
|
# Stage Pause Menu
|
||||||
|
|
@ -462,10 +462,9 @@ return_on_true = true
|
||||||
|
|
||||||
# Village Pause Menu
|
# Village Pause Menu
|
||||||
[[midasm_hook]]
|
[[midasm_hook]]
|
||||||
name = "CHudPauseItemCountMidAsmHook"
|
name = "CHudPauseVillageItemCountMidAsmHook"
|
||||||
address = 0x824B04AC
|
address = 0x824B04AC
|
||||||
registers = ["r31", "r10"]
|
registers = ["r31", "r10"]
|
||||||
return_on_true = true
|
|
||||||
|
|
||||||
# Stage Pause Menu
|
# Stage Pause Menu
|
||||||
[[midasm_hook]]
|
[[midasm_hook]]
|
||||||
|
|
@ -476,7 +475,7 @@ return_on_true = true
|
||||||
|
|
||||||
# Hub Pause Menu
|
# Hub Pause Menu
|
||||||
[[midasm_hook]]
|
[[midasm_hook]]
|
||||||
name = "CHudPauseHubItemCountMidAsmHook"
|
name = "CHudPauseItemCountMidAsmHook"
|
||||||
address = 0x824B07C4
|
address = 0x824B07C4
|
||||||
registers = ["r3", "r10"]
|
registers = ["r3", "r10"]
|
||||||
return_on_true = true
|
return_on_true = true
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue