[XCX] Fix QTE bug for real!

This commit is contained in:
Crementif 2022-07-27 01:08:29 +02:00
parent 55efd442df
commit cd738463d6
5 changed files with 79 additions and 22 deletions

View File

@ -1,5 +1,5 @@
[XCX_FPS++_Cutscene] [XCX_FPS++_Cutscene]
moduleMatches = 0x218F6E07, 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.0E, 1.0.1E, 1.0.2U, 1.0.2J moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J
.origin = codecave .origin = codecave

View File

@ -1,5 +1,5 @@
[XCX_FPS++_GameSpeed] [XCX_FPS++_GameSpeed]
moduleMatches = 0x218F6E07, 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.0E, 1.0.1E, 1.0.2U, 1.0.2J moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J
.origin = codecave .origin = codecave
@ -258,8 +258,8 @@ lwz r10, 0x14(r1)
blr blr
[XCX_FPS++_GameSpeed_V100E_V101E] [XCX_FPS++_GameSpeed_V101E]
moduleMatches = 0x218F6E07, 0xF882D5CF moduleMatches = 0xF882D5CF
; Global data patch ; Global data patch
0x10171980 = havokHalfSpeed: 0x10171980 = havokHalfSpeed:

View File

@ -1,5 +1,5 @@
[XCX_FPS++_Overdrive_General] ; ######################################################## [XCX_FPS++_Overdrive_General] ; ########################################################
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.1U, 1.0.2J moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J
.origin = codecave .origin = codecave
@ -11,13 +11,13 @@ _over:
blr blr
[XCX_FPS++_Overdrive_NonJ] ; ######################################################## [XCX_FPS++_Overdrive_V101E_102U] ; ########################################################
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
0x021BC904 = bla _over 0x021BC904 = bla _over
0x021E2020 = bla _over ; Skell Overdrive 0x021E2020 = bla _over ; Skell Overdrive
[XCX_FPS++_Overdrive_2J] ; ######################################################## [XCX_FPS++_Overdrive_V102J] ; ########################################################
moduleMatches = 0x7672271D ; 1.0.2J moduleMatches = 0x7672271D ; 1.0.2J
0x021BC3D0 = bla _over 0x021BC3D0 = bla _over

View File

@ -1,22 +1,79 @@
[XCX_FPS++_QTE_General] ; ######################################################## [XCX_FPS++_QTE_General] ; ########################################################
moduleMatches = 0x218F6E07, 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.1U, 1.0.2J moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J
.origin = codecave .origin = codecave
timingFloatConv:
timingFloatConvHa:
.uint 0
timingFloatConvL:
.uint 0
correctedTimingTemp:
correctedTimingTempHa:
.uint 0
correctedTimingTempL:
.uint 1
_justFrame1: _justFrame1:
lwz r12, 0x47C(r29) lwz r12, 0x47C(r29)
lis r10, averageFPS1IntInv@ha
lbz r10, averageFPS1IntInv@l(r10) ; Convert timing to floating point for multiplication
mullw r12, r12, r10 xoris r12, r12, 0x8000
; mr r12, r10 lis r27, timingFloatConv@ha
stw r12, timingFloatConv@l+0x4(r27)
lis r12, 0x4330
stw r12, timingFloatConv@l+0x0(r27)
lfd f13, timingFloatConv@l+0x0(r27)
lis r27, convSub@ha
lfd f0, convSub@l(r27)
fsub f13, f13, f0
frsp f13, f13
; Multiply timing
lis r27, averageFPS1@ha
lfs f0, averageFPS1@l(r27)
fmuls f13, f13, f0
; Convert and load corrected timing back
fctiwz f13, f13
lis r27, correctedTimingTemp@ha
stfd f13, correctedTimingTemp@l(r27)
lis r27, correctedTimingTempL@ha
lwz r12, correctedTimingTempL@l(r27)
blr blr
_justFrame2: _justFrame2:
lwz r0, 0x478(r29) lwz r0, 0x478(r29)
lis r8, averageFPS1IntInv@ha cmpwi r0, 0
lbz r8, averageFPS1IntInv@l(r8) beqlr
mullw r0, r0, r8
; mr r0, r8 ; Convert timing to floating point for multiplication
xoris r0, r0, 0x8000
lis r8, timingFloatConv@ha
stw r0, timingFloatConv@l+0x4(r8)
lis r0, 0x4330
stw r0, timingFloatConv@l+0x0(r8)
lfd f13, timingFloatConv@l+0x0(r8)
lis r8, convSub@ha
lfd f0, convSub@l(r8)
fsub f13, f13, f0
frsp f13, f13
; Multiply timing
lis r8, averageFPS1@ha
lfs f0, averageFPS1@l(r8)
fmuls f13, f13, f0
; Convert corrected timing back
fctiwz f13, f13
lis r8, correctedTimingTemp@ha
stfd f13, correctedTimingTemp@l(r8)
lis r8, correctedTimingTempL@ha
lwz r0, correctedTimingTempL@l(r8)
blr blr
[XCX_FPS++_QTE_1E] ; ######################################################## [XCX_FPS++_QTE_1E] ; ########################################################

View File

@ -2,7 +2,7 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = FPS++ For Xenoblade Chronicles X name = FPS++ For Xenoblade Chronicles X
path = "Xenoblade Chronicles X/Mods/FPS++ For XCX" path = "Xenoblade Chronicles X/Mods/FPS++ For XCX"
description = Allows you to change the FPS and the speed that most things run at.|Some bugs might still occur if you run games at 60FPS. description = Allows you to change the FPS and the speed that most things run at.|Some bugs might still occur if you run games at 60FPS.|Only supports the latest update!
version = 6 version = 6
[Default] [Default]