diff --git a/Resolutions/XenobladeX_Resolution/patches.txt b/Resolutions/XenobladeX_Resolution/patches.txt index fe991ab6..6fe33a17 100644 --- a/Resolutions/XenobladeX_Resolution/patches.txt +++ b/Resolutions/XenobladeX_Resolution/patches.txt @@ -1,65 +1,161 @@ -[XCXAspectV100U_V101U] -moduleMatches = 2878856811, 0x676EB33E +[XCXAspectV100E_V101E] +moduleMatches = 0x218F6E07, 0xF882D5CF -# rodata constants -0x1003E754 = .float $width/$height -_aspectAddr = 0x1003E754 +# Code cave +codeCaveSize = 0x0000028 + +_widthScaleRatio = 0x0000000 +0x0000000 = .float ($width/$gameWidth) +_heightScaleRatio = 0x0000004 +0x0000004 = .float ($height/$gameHeight) + +_aspectChangeCave = 0x0000008 +; Scale the width of the viewport that it wants to calculate the ratio for +0x0000008 = lis r7, _widthScaleRatio@ha +0x000000C = lfs f8, _widthScaleRatio@l(r7) +0x0000010 = fmuls f13, f13, f8 +; Scale the height of the viewport that it wants to calculate the ratio for +0x0000014 = lis r7, _heightScaleRatio@ha +0x0000018 = lfs f8, _heightScaleRatio@l(r7) +0x000001C = fmuls f9, f9, f8 + +0x0000020 = fdivs f13, f13, f9 ; Original instruction that got replaced by the code cave jump, which divides the width and height to get the aspect ratio +0x0000024 = blr ; Return to the original code + +# Code changes +0x03160AE8 = bla _aspectChangeCave ; Modify this instruction to go to the code cave which scales the height and width to the upscale ratios +0x1003E754 = .float ($width/$height) ; Modify constant that has a ratio in the code -# 3d Aspect -0x031608E4 = lis r7, _aspectAddr@ha -0x031608E8 = lfs f13, _aspectAddr@l(r7) [XCXAspectV102U] moduleMatches = 0x30B6E091 -#rodata constants -0x1003E754 = .float $width/$height -_aspectAddr = 0x1003E754 +# Code cave +codeCaveSize = 0x0000028 -# 3d Aspect -0x03160A64 = lis r7, _aspectAddr@ha -0x03160A68 = lfs f13, _aspectAddr@l(r7) +_widthScaleRatio = 0x0000000 +0x0000000 = .float ($width/$gameWidth) +_heightScaleRatio = 0x0000004 +0x0000004 = .float ($height/$gameHeight) -[XCXAspectV100E_V101E] -moduleMatches = 0x218F6E07, 0xF882D5CF +_aspectChangeCave = 0x0000008 +0x0000008 = lis r7, _widthScaleRatio@ha +0x000000C = lfs f8, _widthScaleRatio@l(r7) +0x0000010 = fmuls f13, f13, f8 +0x0000014 = lis r7, _heightScaleRatio@ha +0x0000018 = lfs f8, _heightScaleRatio@l(r7) +0x000001C = fmuls f9, f9, f8 -# rodata constants -0x1003E754 = .float $width/$height -_aspectAddr = 0x1003E754 +0x0000020 = fdivs f13, f13, f9 +0x0000024 = blr + +# Code changes +0x03160A68 = bla _aspectChangeCave +0x1003E754 = .float ($width/$height) + + +[XCXAspectV100U_V101U] +moduleMatches = 2878856811, 0x676EB33E + +# Code cave +codeCaveSize = 0x0000028 + +_widthScaleRatio = 0x0000000 +0x0000000 = .float ($width/$gameWidth) +_heightScaleRatio = 0x0000004 +0x0000004 = .float ($height/$gameHeight) + +_aspectChangeCave = 0x0000008 +0x0000008 = lis r7, _widthScaleRatio@ha +0x000000C = lfs f8, _widthScaleRatio@l(r7) +0x0000010 = fmuls f13, f13, f8 +0x0000014 = lis r7, _heightScaleRatio@ha +0x0000018 = lfs f8, _heightScaleRatio@l(r7) +0x000001C = fmuls f9, f9, f8 + +0x0000020 = fdivs f13, f13, f9 +0x0000024 = blr + + +# Code changes +0x031608E8 = bla _aspectChangeCave +0x1003E754 = .float ($width/$height) -# 3d Aspect -0x03160AE4 = lis r7, _aspectAddr@ha -0x03160AE8 = lfs f13, _aspectAddr@l(r7) [XCXAspectV100J] moduleMatches = 0x785CA8A9 -#rodata constants -0x1003E6C4 = .float $width/$height -_aspectAddr = 0x1003E6C4 +# Code cave +codeCaveSize = 0x0000028 -# 3d Aspect -0x0315687C = lis r7, _aspectAddr@ha -0x03156880 = lfs f13, _aspectAddr@l(r7) +_widthScaleRatio = 0x0000000 +0x0000000 = .float ($width/$gameWidth) +_heightScaleRatio = 0x0000004 +0x0000004 = .float ($height/$gameHeight) + +_aspectChangeCave = 0x0000008 +0x0000008 = lis r7, _widthScaleRatio@ha +0x000000C = lfs f8, _widthScaleRatio@l(r7) +0x0000010 = fmuls f13, f13, f8 +0x0000014 = lis r7, _heightScaleRatio@ha +0x0000018 = lfs f8, _heightScaleRatio@l(r7) +0x000001C = fmuls f9, f9, f8 + +0x0000020 = fdivs f13, f13, f9 +0x0000024 = blr + +# Code changes +0x03156880 = bla _aspectChangeCave +0x1003E6C4 = .float ($width/$height) [XCXAspectV101J] moduleMatches = 0x8780C48F -#rodata constants -0x1003E714 = .float $width/$height -_aspectAddr = 0x1003E714 +# Code cave +codeCaveSize = 0x0000028 -# 3d Aspect -0x0315BBA4 = lis r7, _aspectAddr@ha -0x0315BBA8 = lfs f13, _aspectAddr@l(r7) +_widthScaleRatio = 0x0000000 +0x0000000 = .float ($width/$gameWidth) +_heightScaleRatio = 0x0000004 +0x0000004 = .float ($height/$gameHeight) + +_aspectChangeCave = 0x0000008 +0x0000008 = lis r7, _widthScaleRatio@ha +0x000000C = lfs f8, _widthScaleRatio@l(r7) +0x0000010 = fmuls f13, f13, f8 +0x0000014 = lis r7, _heightScaleRatio@ha +0x0000018 = lfs f8, _heightScaleRatio@l(r7) +0x000001C = fmuls f9, f9, f8 + +0x0000020 = fdivs f13, f13, f9 +0x0000024 = blr + +# Code changes +0x0315BBA8 = bla _aspectChangeCave +0x1003E714 = .float ($width/$height) [XCXAspectV102J] moduleMatches = 0x7672271D -#rodata constants -0x1003E714 = .float $width/$height -_aspectAddr = 0x1003E714 +# Code cave +codeCaveSize = 0x0000028 -# 3d Aspect -0x0315BE7C = lis r7, _aspectAddr@ha -0x0315BE80 = lfs f13, _aspectAddr@l(r7) +_widthScaleRatio = 0x0000000 +0x0000000 = .float ($width/$gameWidth) +_heightScaleRatio = 0x0000004 +0x0000004 = .float ($height/$gameHeight) + +_aspectChangeCave = 0x0000008 +0x0000008 = lis r7, _widthScaleRatio@ha +0x000000C = lfs f8, _widthScaleRatio@l(r7) +0x0000010 = fmuls f13, f13, f8 +0x0000014 = lis r7, _heightScaleRatio@ha +0x0000018 = lfs f8, _heightScaleRatio@l(r7) +0x000001C = fmuls f9, f9, f8 + +0x0000020 = fdivs f13, f13, f9 +0x0000024 = blr + +# Code changes +0x0315BE80 = bla _aspectChangeCave +0x1003E714 = .float $width/$height