From 4fa03e96b9a8a9f9fbfc997da16c8bf19889fb5f Mon Sep 17 00:00:00 2001 From: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com> Date: Fri, 8 Nov 2024 13:34:17 +0300 Subject: [PATCH] Add resolution patches for bloom glare & light shaft. --- UnleashedRecomp/gpu/video.cpp | 27 +++++++++++++++++++ UnleashedRecompLib/config/SWA.toml | 42 ++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index 17dc872..94f5909 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -3507,6 +3507,33 @@ PPC_FUNC(sub_8258CAE0) __imp__sub_8258CAE0(ctx, base); } +void PostProcessResolutionFix(PPCRegister& r4, PPCRegister& f1, PPCRegister& f2) +{ + auto device = reinterpret_cast*>(g_memory.Translate(r4.u32)); + + uint32_t width = device[46].get(); + uint32_t height = device[47].get(); + +#if 0 + // TODO: Figure out why this breaks for height > weight + double factor; + if (width > height) + factor = 720.0 / double(height); + else + factor = 1280.0 / double(width); +#else + double factor = 720.0 / double(height); +#endif + + f1.f64 *= factor; + f2.f64 *= factor; +} + +void LightShaftAspectRatioFix(PPCRegister& f28, PPCRegister& f0) +{ + f28.f64 = f0.f64; +} + GUEST_FUNCTION_HOOK(sub_82BD99B0, CreateDevice); GUEST_FUNCTION_HOOK(sub_82BE6230, DestructResource); diff --git a/UnleashedRecompLib/config/SWA.toml b/UnleashedRecompLib/config/SWA.toml index cee6200..d7e72eb 100644 --- a/UnleashedRecompLib/config/SWA.toml +++ b/UnleashedRecompLib/config/SWA.toml @@ -364,3 +364,45 @@ registers = ["r11"] name = "MotionBlurMidAsmHook" address = 0x82BA99D0 jump_address_on_false = 0x82BAA544 + +# Bloom glare resolution fix +[[midasm_hook]] +name = "PostProcessResolutionFix" +address = 0x82BA3E9C +registers = ["r4", "f1", "f2"] + +[[midasm_hook]] +name = "PostProcessResolutionFix" +address = 0x82BA3EF4 +registers = ["r4", "f1", "f2"] + +[[midasm_hook]] +name = "PostProcessResolutionFix" +address = 0x82BA3F4C +registers = ["r4", "f1", "f2"] + +[[midasm_hook]] +name = "PostProcessResolutionFix" +address = 0x82BA3F9C +registers = ["r4", "f1", "f2"] + +[[midasm_hook]] +name = "PostProcessResolutionFix" +address = 0x82BA4000 +registers = ["r4", "f1", "f2"] + +[[midasm_hook]] +name = "PostProcessResolutionFix" +address = 0x82BA4064 +registers = ["r4", "f1", "f2"] + +# Light shaft resolution fix +[[midasm_hook]] +name = "PostProcessResolutionFix" +address = 0x82BB0EE0 +registers = ["r4", "f1", "f2"] + +[[midasm_hook]] +name = "LightShaftAspectRatioFix" +address = 0x82BB1314 +registers = ["f28", "f0"]