@@ -46,9 +46,6 @@ const_30:
4646const_60:
4747. float 60 . 0
4848
49- const_roundUpModifier:
50- . float $ roundUpModifier
51-
5249
5350# Variables
5451
@@ -76,12 +73,6 @@ averageFPS1Inv:
7673averageFPS0. 1 :
7774. float ( $ fpsLimit/ 300 . 0 )
7875
79- averageFPS1IntInv:
80- averageFPS1IntInvHa:
81- .uint 0
82- averageFPS1IntInvL:
83- .uint 1
84-
8576buffer:
8677. float 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 ; buffer can only store a max length of 32 frames
8778
@@ -232,17 +223,6 @@ lfs f7, averageFPS30@l(r10)
232223lis r10 , havokHalfSpeed@ha
233224stfs f7 , havokHalfSpeed@l( r10 )
234225
235- ; Calculate the FPS speed
236- _calculateAverageFPSInt:
237- lis r10 , averageFPS1@ha
238- lfs f7 , averageFPS1@l( r10 )
239- lis r10 , const_roundUpModifier@ha
240- lfs f12 , const_roundUpModifier@l( r10 )
241- fadds f7 , f7 , f12
242- fctiwz f7 , f7
243- lis r10 , averageFPS1IntInv@ha
244- stfd f7 , averageFPS1IntInv@l( r10 )
245-
246226; Reset the cutscene FPS limit each frame
247227_callResetCutsceneLimit:
248228b _resetCutsceneLimit
@@ -263,8 +243,11 @@ moduleMatches = 0xF882D5CF
263243
264244; Global data patch
2652450x10171980 = havokHalfSpeed:
246+ 0x10171980 = . float $ fpsLimit
2662470x100598E4 = titleScreenSpeed:
248+ 0x100598E4 = . float ( 30 . 0 / $ fpsLimit)
2672490x10012644 = soulVoiceSpeed:
250+ 0x10012644 = . float ( 900 / $ fpsLimit)
268251
269252; Instruction-specific patches
2702530x02228274 = lis r5 , averageFPS0. 1 @ha ; Controller acceleration
@@ -275,10 +258,8 @@ moduleMatches = 0xF882D5CF
2752580x0276A860 = lfs f31 , averageFPS1Inv@l( r8 ) ; Sync in-game cutscenes
2762590x025F299C = lis r12 , averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic
2772600x025F29A4 = lfs f31 , averageFPS1Inv@l( r12 ) ; Move__11CfSceneTaskFv
278- 0x02D20328 = lis r12 , averageFPS1Inv@ha ; MenuObject::playEvent
279- 0x02D2032C = lfs f31 , averageFPS1Inv@l( r12 ) ; MenuObject::playEvent
280- 0x02D203F4 = lis r12 , averageFPS1Inv@ha ; MenuObject::playEventFrame
281- 0x02D203F8 = lfs f31 , averageFPS1Inv@l( r12 ) ; MenuObject::playEventFrame
261+ 0x02D39D6C = lis r12 , averageFPS1Inv@ha ; AnimeObject::set
262+ 0x02D39D70 = lfs f13 , averageFPS1Inv@l( r12 ) ; AnimeObject::set
282263
283264; Call GX2SetSwapInterval with 0 which removes any vsync
2842650x02FD8A94 = li r3 , 0
@@ -300,8 +281,11 @@ moduleMatches = 0x7672271D
300281
301282; Global data patch
3022830x10171570 = havokHalfSpeed:
284+ 0x10171570 = . float $ fpsLimit
3032850x1005989C = titleScreenSpeed:
286+ 0x1005989C = . float ( 30 . 0 / $ fpsLimit)
3042870x10012644 = soulVoiceSpeed:
288+ 0x10012644 = . float ( 900 / $ fpsLimit)
305289
306290; Instruction-specific patches
3072910x02227D40 = lis r5 , averageFPS0. 1 @ha ; Controller acceleration
@@ -312,10 +296,8 @@ moduleMatches = 0x7672271D
3122960x02768FD8 = lfs f31 , averageFPS1Inv@l( r8 ) ; Sync in-game cutscenes
3132970x025F1F78 = lis r12 , averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic
3142980x025F1F80 = lfs f31 , averageFPS1Inv@l( r12 ) ; Move__11CfSceneTaskFv
315- 0x02D1B818 = lis r12 , averageFPS1Inv@ha ; MenuObject::playEvent
316- 0x02D1B81C = lfs f31 , averageFPS1Inv@l( r12 ) ; MenuObject::playEvent
317- 0x02D1B8E4 = lis r12 , averageFPS1Inv@ha ; MenuObject::playEventFrame
318- 0x02D1B8E8 = lfs f31 , averageFPS1Inv@l( r12 ) ; MenuObject::playEventFrame
299+ 0x02D35234 = lis r12 , averageFPS1Inv@ha ; AnimeObject::set
300+ 0x02D35238 = lfs f13 , averageFPS1Inv@l( r12 ) ; AnimeObject::set
319301
320302; Call GX2SetSwapInterval with 0 which removes any vsync
3213030x02FD3F5C = li r3 , 0
@@ -337,8 +319,11 @@ moduleMatches = 0x30B6E091
337319
338320; Global data patch
3393210x10171980 = havokHalfSpeed:
322+ 0x10171980 = . float $ fpsLimit
3403230x100598E4 = titleScreenSpeed:
324+ 0x100598E4 = . float ( 30 . 0 / $ fpsLimit)
3413250x10012644 = soulVoiceSpeed:
326+ 0x10012644 = . float ( 900 / $ fpsLimit)
342327
343328; Instruction-specific patches
3443290x02228274 = lis r5 , averageFPS0. 1 @ha ; Controller acceleration
@@ -349,10 +334,8 @@ moduleMatches = 0x30B6E091
3493340x0276A860 = lfs f31 , averageFPS1Inv@l( r8 ) ; Sync in-game cutscenes
3503350x025F299C = lis r12 , averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic
3513360x025F29A4 = lfs f31 , averageFPS1Inv@l( r12 ) ; Move__11CfSceneTaskFv
352- 0x02D202C8 = lis r12 , averageFPS1Inv@ha ; MenuObject::playEvent
353- 0x02D202CC = lfs f31 , averageFPS1Inv@l( r12 ) ; MenuObject::playEvent
354- 0x02D20394 = lis r12 , averageFPS1Inv@ha ; MenuObject::playEventFrame
355- 0x02D20398 = lfs f31 , averageFPS1Inv@l( r12 ) ; MenuObject::playEventFrame
337+ 0x02D39CE0 = lis r12 , averageFPS1Inv@ha ; AnimeObject::set
338+ 0x02D39CE4 = lfs f13 , averageFPS1Inv@l( r12 ) ; AnimeObject::set
356339
357340; Call GX2SetSwapInterval with 0 which removes any vsync
3583410x02FD8A34 = li r3 , 0
0 commit comments