[XCX] Fix black bar by just using old 60FPS solution

This commit is contained in:
Crementif 2022-07-27 18:08:53 +02:00
parent 9fd5e5c874
commit c6d1674ad5
2 changed files with 41 additions and 6 deletions

View File

@ -73,6 +73,9 @@ averageFPS1Inv:
averageFPS0.1: averageFPS0.1:
.float ($fpsLimit/300.0) .float ($fpsLimit/300.0)
const_guiSpeed:
.float $guiSpeed
buffer: buffer:
.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 .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
@ -171,6 +174,13 @@ lfs f7, bufferSizeDivider@l(r10)
fdivs f10, f10, f7 fdivs f10, f10, f7
_setGameSpeed: _setGameSpeed:
; Prevent the FPS from going below the lower FPS limit bounds.
lis r10, lowFPSLimit@ha
lfs f7, lowFPSLimit@l(r10)
fcmpu cr0, f10, f7
bgt .+0x08
fmr f10, f7
; Set game speed (30 range) ; Set game speed (30 range)
lis r10, averageFPS30@ha lis r10, averageFPS30@ha
stfs f10, averageFPS30@l(r10) stfs f10, averageFPS30@l(r10)
@ -258,8 +268,12 @@ moduleMatches = 0xF882D5CF
0x0276A860 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes 0x0276A860 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes
0x025F299C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic 0x025F299C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic
0x025F29A4 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv 0x025F29A4 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv
0x02D39D6C = lis r12, averageFPS1Inv@ha ; AnimeObject::set # 0x02D39D6C = lis r12, const_guiSpeed@ha ; AnimeObject::set
0x02D39D70 = lfs f13, averageFPS1Inv@l(r12) ; AnimeObject::set # 0x02D39D70 = lfs f13, const_guiSpeed@l(r12) ; AnimeObject::set
0x02D20328 = lis r12, const_guiSpeed@ha ; MenuObject::playEvent
0x02D2032C = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEvent
0x02D203F4 = lis r12, const_guiSpeed@ha ; MenuObject::playEventFrame
0x02D203F8 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEventFrame
; Call GX2SetSwapInterval with 0 which removes any vsync ; Call GX2SetSwapInterval with 0 which removes any vsync
0x02FD8A94 = li r3, 0 0x02FD8A94 = li r3, 0
@ -296,8 +310,12 @@ moduleMatches = 0x7672271D
0x02768FD8 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes 0x02768FD8 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes
0x025F1F78 = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic 0x025F1F78 = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic
0x025F1F80 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv 0x025F1F80 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv
0x02D35234 = lis r12, averageFPS1Inv@ha ; AnimeObject::set # 0x02D35234 = lis r12, const_guiSpeed@ha ; AnimeObject::set
0x02D35238 = lfs f13, averageFPS1Inv@l(r12) ; AnimeObject::set # 0x02D35238 = lfs f13, const_guiSpeed@l(r12) ; AnimeObject::set
0x02D1B818 = lis r12, const_guiSpeed@ha ; MenuObject::playEvent
0x02D1B81C = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEvent
0x02D1B8E4 = lis r12, const_guiSpeed@ha ; MenuObject::playEventFrame
0x02D1B8E8 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEventFrame
; Call GX2SetSwapInterval with 0 which removes any vsync ; Call GX2SetSwapInterval with 0 which removes any vsync
0x02FD3F5C = li r3, 0 0x02FD3F5C = li r3, 0
@ -334,8 +352,12 @@ moduleMatches = 0x30B6E091
0x0276A860 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes 0x0276A860 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes
0x025F299C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic 0x025F299C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic
0x025F29A4 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv 0x025F29A4 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv
0x02D39CE0 = lis r12, averageFPS1Inv@ha ; AnimeObject::set # 0x02D39CE0 = lis r12, const_guiSpeed@ha ; AnimeObject::set
0x02D39CE4 = lfs f13, averageFPS1Inv@l(r12) ; AnimeObject::set # 0x02D39CE4 = lfs f13, const_guiSpeed@l(r12) ; AnimeObject::set
0x02D202C8 = lis r12, const_guiSpeed@ha ; MenuObject::playEvent
0x02D202CC = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEvent
0x02D20394 = lis r12, const_guiSpeed@ha ; MenuObject::playEventFrame
0x02D20398 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEventFrame
; Call GX2SetSwapInterval with 0 which removes any vsync ; Call GX2SetSwapInterval with 0 which removes any vsync
0x02FD8A34 = li r3, 0 0x02FD8A34 = li r3, 0

View File

@ -10,67 +10,80 @@ $fpsLimit = 60
$cutsceneFPSLimit:int = 1 $cutsceneFPSLimit:int = 1
$lowFPSLimit = 20 $lowFPSLimit = 20
$frameAverageAmount = 8 $frameAverageAmount = 8
$guiSpeed = 1.0
[Preset] [Preset]
name = 240FPS Limit name = 240FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 240 $fpsLimit = 240
$guiSpeed = 0.5
[Preset] [Preset]
name = 165FPS Limit name = 165FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 165 $fpsLimit = 165
$guiSpeed = 0.5
[Preset] [Preset]
name = 144FPS Limit name = 144FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 144 $fpsLimit = 144
$guiSpeed = 0.5
[Preset] [Preset]
name = 120FPS Limit name = 120FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 120 $fpsLimit = 120
$guiSpeed = 0.5
[Preset] [Preset]
name = 90FPS Limit name = 90FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 90 $fpsLimit = 90
$guiSpeed = 0.5
[Preset] [Preset]
name = 75FPS Limit name = 75FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 75 $fpsLimit = 75
$guiSpeed = 0.5
[Preset] [Preset]
name = 72FPS Limit name = 72FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 72 $fpsLimit = 72
$guiSpeed = 0.5
[Preset] [Preset]
name = 60FPS Limit (Default) name = 60FPS Limit (Default)
category = FPS Limit category = FPS Limit
default = 1 default = 1
$fpsLimit = 60 $fpsLimit = 60
$guiSpeed = 0.5
[Preset] [Preset]
name = 55FPS Limit name = 55FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 55 $fpsLimit = 55
$guiSpeed = 0.5
[Preset] [Preset]
name = 45FPS Limit name = 45FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 45 $fpsLimit = 45
$guiSpeed = 1.0
[Preset] [Preset]
name = 30FPS Limit name = 30FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 30 $fpsLimit = 30
$guiSpeed = 1.0
[Preset] [Preset]
name = 20FPS Limit name = 20FPS Limit
category = FPS Limit category = FPS Limit
$fpsLimit = 20 $fpsLimit = 20
$guiSpeed = 1.0
# [Preset] # [Preset]