Fix PlayStation time of day transition animation not rendering. (#167)

* Fix PlayStation transition animation not rendering.

* Remove medal swinging animation from the YNCP.
This commit is contained in:
Skyth (Asilkan) 2025-01-24 20:26:09 +03:00 committed by GitHub
parent fb5d0cd94e
commit dfa2a31286
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 26 additions and 1 deletions

View file

@ -17,7 +17,7 @@ PPC_FUNC(sub_824DCF38)
if (Config::TimeOfDayTransition == ETimeOfDayTransition::PlayStation)
{
if (ctx.r4.u32 == SWA::eLoadingDisplayType_WerehogMovie)
ctx.r4.u32 = SWA::eLoadingDisplayType_Arrows;
ctx.r4.u32 = SWA::eLoadingDisplayType_ChangeTimeOfDay;
}
if (auto pGameDocument = SWA::CGameDocument::GetInstance())
@ -36,6 +36,26 @@ PPC_FUNC(sub_824DCF38)
__imp__sub_824DCF38(ctx, base);
}
// The game checks for a bool to render the PS3 transition animation. It's never set so it's presumably a "is PS3" bool.
bool LoadingRenderMidAsmHook()
{
return Config::TimeOfDayTransition == ETimeOfDayTransition::PlayStation;
}
// Patch "ui_loading.yncp" to remove the medal swinging animation.
// SWA::CCsdProject::Make
PPC_FUNC_IMPL(__imp__sub_825E4068);
PPC_FUNC(sub_825E4068)
{
if (ctx.r4.u32 != NULL && ctx.r5.u32 == 0x65C0C && XXH3_64bits(base + ctx.r4.u32, ctx.r5.u32) == 0xD4DA1A9BE4D79BED)
{
// Keyframe count. First keyframe is at the center of the screen.
PPC_STORE_U32(ctx.r4.u32 + 0x2794C, 1);
}
__imp__sub_825E4068(ctx, base);
}
// SWA::CLoading::Update
PPC_FUNC_IMPL(__imp__sub_824DAB60);
PPC_FUNC(sub_824DAB60)

View file

@ -802,3 +802,8 @@ registers = ["r3"]
name = "ObjBigBarrelSetPositionMidAsmHook"
address = 0x8271B5C8
registers = ["r3", "r4"]
[[midasm_hook]]
name = "LoadingRenderMidAsmHook"
address = 0x824DB734
jump_address_on_true = 0x824DB738