[Skylanders] Fix infinite fall softlock at high FPS (#639)

Thanks to @SuperSamus (and Winner Nombre)!
This commit is contained in:
SuperSamus 2024-10-12 14:45:05 +02:00 committed by GitHub
parent c713d33f14
commit 546f593cf5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 75 additions and 3 deletions

View File

@ -0,0 +1,51 @@
[SSC_FixInfiniteFall]
moduleMatches = 0xccf357b3, 0x1407432e, 0x3a1208f7, 0x21fc6048, 0x3e598867, 0xcf77bcd5, 0x25a11655
.origin = codecave
const_stuckFallingDistanceThreshold:
.float 20*30/$targetFPS
_getStuckFallingDistanceThreshold_f13:
lis r0, const_stuckFallingDistanceThreshold@ha
lfs f13, const_stuckFallingDistanceThreshold@l(r0)
blr
_getStuckFallingDistanceThreshold_f0:
lis r0, const_stuckFallingDistanceThreshold@ha
lfs f0, const_stuckFallingDistanceThreshold@l(r0)
blr
[SSC_FixInfiniteFall_V1]
moduleMatches = 0xccf357b3 ; v1
0x0220e028 = bla _getStuckFallingDistanceThreshold_f0
[SSC_FixInfiniteFall_V16]
moduleMatches = 0x1407432e ; 1.1.0
0x0220c35c = bla _getStuckFallingDistanceThreshold_f13
[SSC_FixInfiniteFall_V32]
moduleMatches = 0x3a1208f7 ; 1.2.0
0x0220d958 = bla _getStuckFallingDistanceThreshold_f13
[SSC_FixInfiniteFall_V48]
moduleMatches = 0x21fc6048 ; 1.3.0
0x0220f940 = bla _getStuckFallingDistanceThreshold_f13
[SSC_FixInfiniteFall_V64]
moduleMatches = 0x3e598867 ; 1.4.0
0x02210e78 = bla _getStuckFallingDistanceThreshold_f13
[SSC_FixInfiniteFall_V80]
moduleMatches = 0xcf77bcd5 ; 1.5.0
0x02212da8 = bla _getStuckFallingDistanceThreshold_f13
[SSC_FixInfiniteFall_V96_V97]
moduleMatches = 0x25a11655 ; 1.6.1 (v96 in US, v97 in EU)
0x02212da8 = bla _getStuckFallingDistanceThreshold_f13

View File

@ -2,8 +2,8 @@
titleIds = 00050000101BFC00,00050000101B8500 titleIds = 00050000101BFC00,00050000101B8500
name = FPS name = FPS
path = "Skylanders: Superchargers/Mods/FPS" path = "Skylanders: Superchargers/Mods/FPS"
description = Changes the game's FPS limit.|Running the game with a high FPS limit can result in glitches.||Made by Mew00, Winner Nombre and DigitNetics. description = Changes the game's FPS limit.|Running the game with a high FPS limit can result in glitches.||Made by Mew00, and DigitNetics. Infinite fall fix by SuperSamus and Winner Nombre.
version = 7 version = 6
[Default] [Default]
$targetFPS:int = 30 $targetFPS:int = 30

View File

@ -0,0 +1,21 @@
[SSF_FixInfiniteFall]
moduleMatches = 0xa0b35374, 0xb1f102ec ; v16, v0
.origin = codecave
const_stuckFallingDistanceThreshold:
.float 20*30/$targetFPS
_getStuckFallingDistanceThreshold:
lis r0, const_stuckFallingDistanceThreshold@ha
lfs f0, const_stuckFallingDistanceThreshold@l(r0)
blr
[SSF_FixInfiniteFall_V16]
moduleMatches = 0xa0b35374 ; v16
0x0242729c = bla _getStuckFallingDistanceThreshold
[SSF_FixInfiniteFall_V0]
moduleMatches = 0xb1f102ec ; v0
0x02427214 = bla _getStuckFallingDistanceThreshold

View File

@ -2,7 +2,7 @@
titleIds = 0005000010139200,0005000010140400 titleIds = 0005000010139200,0005000010140400
name = FPS name = FPS
path = "Skylanders Swap Force/Mods/FPS" path = "Skylanders Swap Force/Mods/FPS"
description = Changes the game's dynamic FPS target. Might have bugs, especially when going above 120 FPS.||Made by Mew00 for Imaginators, added by TheSkyDude134 for Swap Force. description = Changes the game's dynamic FPS target. Might have bugs, especially when going above 120 FPS.||Made by Mew00 for Imaginators, added by TheSkyDude134 for Swap Force. Infinite fall fix by SuperSamus and Winner Nombre.
version = 6 version = 6
[Default] [Default]