[BotW] Menu speed hotfix and hold back ultrawide cutscenes for now

This commit is contained in:
Crementif 2021-12-27 01:11:00 +01:00
parent 39a464b65e
commit f5d223813b
No known key found for this signature in database
GPG Key ID: 453870E0401C94C0
4 changed files with 32 additions and 17 deletions

View File

@ -5,8 +5,30 @@ moduleMatches = 0x6267BFD0
0x03053bd4 = blr ; disable scroll speed adjustment (would require a bigger rewrite for dynamic FPS support)
0x030BD694 = ba _ZN4sead14ControllerBase23updateDerivativeParams_Ejj ; redirect to our re-implementation
0x10327D60 = scrollSpeed:
; .float 1.0
scrollSpeed:
.float 1.0
0x10327D60 = menuNavigationSpeedPackEnabled:
0x10327D64 = menuNavigationSpeedPackValue:
_checkCursorSpeed:
lis r11, menuNavigationSpeedPackEnabled@ha
lwz r11, menuNavigationSpeedPackEnabled@l(r11)
cmpwi r11, 0x1337
beq useCustomSpeed
useDefaultSpeed:
lis r11, const_1@ha
lfs f12, const_1@l(r11)
lis r11, scrollSpeed@ha
stfs f12, scrollSpeed@l(r11)
b _checkExternalSpeed
useCustomSpeed:
lis r11, menuNavigationSpeedPackValue@ha
lfs f12, menuNavigationSpeedPackValue@l(r11)
lis r11, scrollSpeed@ha
stfs f12, scrollSpeed@l(r11)
b _checkExternalSpeed
_ZN4sead14ControllerBase21createStickCrossMask_Ev:
stwu r1,-16(r1)
stw r31,12(r1)

View File

@ -93,15 +93,7 @@ debugMultiplier:
_calculateGamespeed:
stw r0, 0x78(r30) ; Execute original instruction that got replaced with a jump to this function
; Check and set the cursor speed value if it has been set by the Menu Cursor Speed graphic pack
_checkCursorSpeed:
lis r11, const_0.0@ha ; Load a 0 float...
lfs f12, const_0.0@l(r11) ; ...into f12
lfs f7, 0xD4(r30) ; Load the external cursor speed offset
fcmpu cr0, f7, f12 ; Compare the value stored in the external memory offset to 0 (f12)
beq _convertTicksToFrametime ; Don't change the value if the menu cursor speed isn't manually set
lis r3, scrollSpeed@ha ; Load the address of the scrollSpeed from the cutscene patch...
stfs f7, scrollSpeed@l(r3) ; ...and then store the external cursor speed from f7 into that address
b _checkCursorSpeed
; If the manual speed has been set by an external program to something other then 0, use that as the static speed
_checkExternalSpeed:
@ -113,11 +105,11 @@ bne _setGamespeed
; If static FPS is enabled, always set currently "running" FPS to $fpsLimit
_checkStaticFPS:
li r3, $staticFPSMode ; Load the $staticFPSMode setting into r3
cmpwi r3, 1 ; Compare with 1, which is when it's enabled
bne _calcAverageFPS ; If the comparison is not equal, run
lis r3, fpsLimit@ha ; Load current FPS limit...
lfs f10, fpsLimit@l(r3) ; ...into f10
li r11, $staticFPSMode ; Load the $staticFPSMode setting into r3
cmpwi r11, 1 ; Compare with 1, which is when it's enabled
bne _convertTicksToFrametime ; If the comparison is not equal, run
lis r11, fpsLimit@ha ; Load current FPS limit...
lfs f10, fpsLimit@l(r11) ; ...into f10
b _setGamespeed ; Skip dynamic FPS code when static mode is enabled and go to the game speed setting code
; Calculate speed of current frame (FPS). It's calculated by using the ticks between the previous frame and now, which is stored in r12, and the amount of ticks that the Wii U executes in a second (the bus speed).

View File

@ -1,4 +1,5 @@
[BotW_MenuCursorSpeed_V208]
moduleMatches = 0x6267BFD0
0x10327D60 = .float $cursorSpeed ; sets cursor speed in a static memory address that's also used by the GameSpeed patch to read the cursor speed
0x10327D60 = .uint 0x1337 ; sets the value for when it's enabled
0x10327D64 = .float $cursorSpeed ; sets cursor speed in a static memory address that's also used by the GameSpeed patch to read the cursor speed