diff --git a/UnleashedRecomp/patches/resident_patches.cpp b/UnleashedRecomp/patches/resident_patches.cpp index 592e0cb..ac0b397 100644 --- a/UnleashedRecomp/patches/resident_patches.cpp +++ b/UnleashedRecomp/patches/resident_patches.cpp @@ -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) diff --git a/UnleashedRecompLib/config/SWA.toml b/UnleashedRecompLib/config/SWA.toml index e030ef1..c5d71e0 100644 --- a/UnleashedRecompLib/config/SWA.toml +++ b/UnleashedRecompLib/config/SWA.toml @@ -802,3 +802,8 @@ registers = ["r3"] name = "ObjBigBarrelSetPositionMidAsmHook" address = 0x8271B5C8 registers = ["r3", "r4"] + +[[midasm_hook]] +name = "LoadingRenderMidAsmHook" +address = 0x824DB734 +jump_address_on_true = 0x824DB738