Skip to content

Commit

Permalink
[Skylanders] Fix infinite fall softlock at high FPS (#639)
Browse files Browse the repository at this point in the history
Thanks to @SuperSamus (and Winner Nombre)!
  • Loading branch information
SuperSamus authored Oct 12, 2024
1 parent c713d33 commit 546f593
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 3 deletions.
51 changes: 51 additions & 0 deletions src/SkylandersSuperChargers/Mods/FPS/patch_FixInfiniteFall.asm
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions src/SkylandersSuperChargers/Mods/FPS/rules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
titleIds = 00050000101BFC00,00050000101B8500
name = 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.
version = 7
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 = 6

[Default]
$targetFPS:int = 30
Expand Down
21 changes: 21 additions & 0 deletions src/SkylandersSwapForce/Mods/FPS/patch_FixInfiniteFall.asm
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion src/SkylandersSwapForce/Mods/FPS/rules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
titleIds = 0005000010139200,0005000010140400
name = 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

[Default]
Expand Down

0 comments on commit 546f593

Please sign in to comment.