From 3afcfaf6877218355bf60a7fbdc2363077ed9cea Mon Sep 17 00:00:00 2001 From: Xalphenos <ChaseM314@gmail.com> Date: Tue, 30 Jan 2018 04:09:30 -0600 Subject: [PATCH] Update patches.txt Updated v1.4.x code to not use a hard coded memory address. This will make it easier to port by anyone and will hopefully preemptively fix any problems caused by 1.11.4's updated rpl loading. I really should back port the 1.4.x code to the older versions but I'm tired and most people are on 1.4.x anyway. But hopefully not too many people will complain about 1.11.4 breaking fps++ when it releases later today. --- .../BreathOfTheWild_FPS++/patches.txt | 168 +++++++++--------- 1 file changed, 87 insertions(+), 81 deletions(-) diff --git a/Modifications/BreathOfTheWild_FPS++/patches.txt b/Modifications/BreathOfTheWild_FPS++/patches.txt index 0bafb0dc..12e3a967 100644 --- a/Modifications/BreathOfTheWild_FPS++/patches.txt +++ b/Modifications/BreathOfTheWild_FPS++/patches.txt @@ -1,3 +1,90 @@ +[BotwFPSv176V192] +moduleMatches = 0xFD091F9F,0xD472D8A5 + +#rodata constants +_float1 = 0x10000670 +_float30 = 0x101E78F4 +_convSub = 0x10000BB0 + +#TestCave +codeCaveSize = 0x9C + +_fpsCalc = 0x00000010 +0x00000000 = .float 3 ; Don't edit me! +_lowlimit = 0x00000000 +0x00000004 = .float 62156250 +_busSpeed = 0x00000004 +_currentFPS = 0x00000008 +_speedDiv = 0x0000000C + +0x00000010 = stw r0, 0x78(r30) +0x00000014 = xoris r12, r12, 0x8000 +0x00000018 = stw r12, 0x12C(r30) +0x0000001C = lis r12, 0x4330 +0x00000020 = stw r12, 0x128(r30) +0x00000024 = lfd f10, 0x128(r30) +0x00000028 = lis r12, _convSub@ha +0x0000002C = lfd f12, _convSub@l(r12) +0x00000030 = fsub f10, f10, f12 +0x00000034 = frsp f10, f10 +0x00000038 = lis r12, _float1@ha +0x0000003C = lfs f12, _float1@l(r12) +0x00000040 = fdivs f10, f12, f10 +0x00000044 = lis r12, _busSpeed@ha +0x00000048 = lfs f12, _busSpeed@l(r12) +0x0000004C = fmuls f10, f12, f10 +0x00000050 = lis r12, _currentFPS@ha +0x00000054 = stfs f10, _currentFPS@l(r12) + +0x00000058 = lis r12, _float30@ha +0x0000005C = lfs f12, _float30@l(r12) +0x00000060 = fdivs f7, f12, f10 +0x00000064 = lis r12, _lowlimit@ha +0x00000068 = lfs f12, _lowlimit@l(r12) +0x0000006C = lis r12, _speedDiv@ha +0x00000070 = fcmpu cr0, f7, f12 +0x00000074 = bge .+0x0C + +0x00000078 = stfs f7, _speedDiv@l(r12) +0x0000007C = blr +0x00000080 = stfs f12, _speedDiv@l(r12) +0x00000084 = blr + +_fenceNeg1 = 0x00000084 +0x00000088 = add r6, r12, r0 #orig instruction we are replacing +0x0000008C = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) +0x00000090 = blt .+0x08 #skip subtract if less than +0x00000094 = subi r6, r6, 1 #do the subtract +0x00000098 = blr #return + +#codeChanges +0x031F9E80 = bla _fpsCalc +0x03792620 = nop +0x0379262C = nop +0x03792670 = lis r29, _speedDiv@ha +0x03792678 = lfs f0, _speedDiv@L(r29) +0x03792684 = nop +0x03414EF8 = lis r12, _speedDiv@ha +0x03414F00 = lfs f0, _speedDiv@l(r12) +0x03414F08 = nop +0x02D90790 = lis r10, _currentFPS@ha +0x02D90794 = lfs f11, _currentFPS@l(r10) +0x02D907EC = lis r10, _currentFPS@ha +0x02D907F0 = lfs f11, _currentFPS@l(r10) + + +#break all forms of frame limiting +0x031FA000 = bla _fenceNeg1 ;Best fence (make sure GPU is never more than 1 frame ahead) +;0x031F9FEC = li r0, 1 ;Better fence (make sure GPU is never more than 1 second? ahead) +;0x031FA004 = nop ; skip fence (no waiting on GPU) +0x031FA1D4 = nop ; disable vsync +0x031FA1F8 = nop ; disable vsync loop + +#Cheats +;0x02D90724 = fmr f29, f1 ;inf stamina +;0x02D44D44 = nop ;inf hearts +;0x02EB61BC = nop ;inf arrows + [Botw60fpsv144] moduleMatches = 0x9A2CA0C7 @@ -222,84 +309,3 @@ _fullspeed = 0x00000080 ;0x02F7DE00 = li r3, 0 ;0x02F862C4 = li r7, 1 ;0x02F86514 = li r7, 1 - -[BotwFPSv176V192] -moduleMatches = 0xFD091F9F,0xD472D8A5 - -#rodata constants -_float1 = 0x10000670 -_float30 = 0x101E78F4 - -#TestCave -codeCaveSize = 0x98 - -_fpsCalc = 0x00000008 -0x00000000 = .float 3 ; Don't edit me! -_lowlimit = 0x00000000 -0x00000004 = .float 62156250 -_busSpeed = 0x00000004 -0x00000008 = stw r0, 0x78(r30) -0x0000000C = xoris r12, r12, 0x8000 -0x00000010 = stw r12, 0x12C(r30) -0x00000014 = lis r12, 0x4330 -0x00000018 = stw r12, 0x128(r30) -0x0000001C = lfd f10, 0x128(r30) -0x00000020 = stw r12, 0x138(r30) -0x00000024 = lis r12, 0x8000 -0x00000028 = stw r12, 0x13C(r30) -0x0000002C = lfd f12, 0x138(r30) -0x00000030 = fsub f10, f10, f12 -0x00000034 = frsp f10, f10 -0x00000038 = lis r12, _float1@ha -0x0000003C = lfs f12, _float1@l(r12) -0x00000040 = fdivs f10, f12, f10 -0x00000048 = lis r12, _busSpeed@ha -0x0000004C = lfs f12, _busSpeed@l(r12) -0x00000050 = fmuls f10, f12, f10 -0x00000054 = stfs f10, 0x134(r30) -0x00000058 = lis r12, _float30@ha -0x0000005C = lfs f12, _float30@l(r12) -0x00000060 = fdivs f7, f12, f10 -0x00000064 = lis r12, _lowlimit@ha -0x00000068 = lfs f12, _lowlimit@l(r12) -0x0000006C = fcmpu cr0, f7, f12 -0x00000070 = bge .+0x0C -0x00000074 = stfs f7, 0x130(r30) -0x00000078 = blr -0x0000007c = stfs f12, 0x130(r30) -0x00000080 = blr - -_fenceNeg1 = 0x00000084 -0x00000084 = add r6, r12, r0 #orig instruction we are replacing -0x00000088 = cmpwi r6, 500 #check if less than 500 (full sync on those first frames to prevent milk water) -0x0000008C = blt .+0x08 #skip subtract if less than -0x00000090 = subi r6, r6, 1 #do the subtract -0x00000094 = blr #return - -#codeChanges -0x031F9E80 = bla _fpsCalc -0x03792620 = nop -0x0379262C = nop -0x03792670 = lis r29, 0x1134 -0x03792678 = lfs f0, 0xFE58@l(r29) -0x03792684 = nop -0x03414EF8 = lis r12, 0x1134 -0x03414F00 = lfs f0, 0xFE58@l(r12) -0x03414F08 = nop -0x02D90790 = lis r10, 0x1134 -0x02D90794 = lfs f11, 0xFE5C@l(r10) -0x02D907EC = lis r10, 0x1134 -0x02D907F0 = lfs f11, 0xFE5C@l(r10) - - -#break all forms of frame limiting -0x031FA000 = bla _fenceNeg1 ;Best fence (make sure GPU is never more than 1 frame ahead) -;0x031F9FEC = li r0, 1 ;Better fence (make sure GPU is never more than 1 second? ahead) -;0x031FA004 = nop ; skip fence (no waiting on GPU) -0x031FA1D4 = nop ; disable vsync -0x031FA1F8 = nop ; disable vsync loop - -#Cheats -;0x02D90724 = fmr f29, f1 ;inf stamina -;0x02D44D44 = nop ;inf hearts -;0x02EB61BC = nop ;inf arrows