4343; IDA: 0x02D66B58 = mr r4, r29
4444;0x02D66B58 = bla import.coreinit.hook_TestPlayerSetMtxTeleport
4545
46- RoomscaleDelta = 0x20
47- RoomscaleStep = 0x30
48- RoomscaleCurrent = 0x40
49- RoomscaleHit = 0x50
50- RoomscaleLayerMask = 0x60
51- RoomscaleSavedLR = 0x64
52- RoomscaleQuery = 0x70
53-
54- const_roomscaleQuarter:
55- . float 0 . 25
46+ RoomscaleScratch = 0x20
47+ RoomscaleCurrent = RoomscaleScratch + 0x00
48+ RoomscaleCastFrom = RoomscaleScratch + 0x0C
49+ RoomscaleCastDelta = RoomscaleScratch + 0x18
50+ RoomscaleHit = RoomscaleScratch + 0x24
51+ RoomscaleLayerMask = RoomscaleScratch + 0x30
52+ RoomscaleSavedLR = 0x58
53+ RoomscaleQuery = 0x60
5654
5755ApplyRoomscaleAfterPlayerVelocity:
58- stwu r1 , - 0x120 (r1)
56+ stwu r1 , - 0x110 (r1)
5957mflr r0
60- stw r0 , 0x124 (r1)
58+ stw r0 , 0x114 (r1)
6159stw r30 , 0x14 (r1)
6260stw r31 , 0x18 (r1)
6361
6462mr r3 , r31
65- addi r4 , r1 , RoomscaleDelta
66- bla import.coreinit.hook_GetRoomscaleDelta
63+ addi r4 , r1 , RoomscaleScratch
64+ bla import.coreinit.hook_BeginRoomscaleMovement
6765lwz r31 , 0x18 (r1)
6866
6967cmpwi r3 , 0
7068beq ApplyRoomscaleAfterPlayerVelocity_Continue
7169
72- lis r12 , const_roomscaleQuarter@ha
73- lfs f0 , const_roomscaleQuarter@l( r12 )
74-
75- lfs f1 , RoomscaleDelta + 0x0 (r1)
76- fmuls f1 , f1 , f0
77- stfs f1 , RoomscaleStep + 0x0 (r1)
78-
79- lfs f1 , RoomscaleDelta + 0x4 (r1)
80- fmuls f1 , f1 , f0
81- stfs f1 , RoomscaleStep + 0x4 (r1)
82-
83- lfs f1 , RoomscaleDelta + 0x8 (r1)
84- fmuls f1 , f1 , f0
85- stfs f1 , RoomscaleStep + 0x8 (r1)
86-
8770mr r3 , r31
8871addi r4 , r1 , RoomscaleCurrent
8972bl RigidBody_getPosition
9073
91- li r30 , 4
92-
9374ApplyRoomscaleAfterPlayerVelocity_Loop:
94- cmpwi r30 , 0
75+ addi r3 , r1 , RoomscaleScratch
76+ bla import.coreinit.hook_PrepareRoomscaleRaycast
77+ lwz r31 , 0x18 (r1)
78+ cmpwi r3 , 2
9579beq ApplyRoomscaleAfterPlayerVelocity_Warp
96-
97- li r0 , 15
98- stw r0 , RoomscaleLayerMask(r1)
80+ cmpwi r3 , 1
81+ bne ApplyRoomscaleAfterPlayerVelocity_Continue
9982
10083addi r3 , r1 , RoomscaleQuery
10184li r4 , 0
@@ -107,54 +90,35 @@ addi r4, r31, 0x208
10790bl RayCast_setLayers
10891
10992addi r3 , r1 , RoomscaleQuery
110- addi r4 , r1 , RoomscaleCurrent
111- addi r5 , r1 , RoomscaleStep
93+ addi r4 , r1 , RoomscaleCastFrom
94+ addi r5 , r1 , RoomscaleCastDelta
11295bl RayCast_setFromAndDelta
11396
11497addi r3 , r1 , RoomscaleQuery
11598li r4 , 0
11699bl RayCastBodyQuery_worldRayCast
117- cmpwi r3 , 0
118- beq ApplyRoomscaleAfterPlayerVelocity_NoHit
100+ mr r30 , r3
101+ cmpwi r30 , 0
102+ beq ApplyRoomscaleAfterPlayerVelocity_Consume
119103
120104addi r3 , r1 , RoomscaleQuery
121105addi r4 , r1 , RoomscaleHit
122106bl RayCast_getHitPosition
123107
108+ ApplyRoomscaleAfterPlayerVelocity_Consume:
124109addi r3 , r1 , RoomscaleQuery
125110li r4 , 2
126111bl RayCastBodyQuery_dtor
127112
128- lfs f0 , RoomscaleHit + 0x0 (r1)
129- stfs f0 , RoomscaleCurrent + 0x0 (r1)
130- lfs f0 , RoomscaleHit + 0x4 (r1)
131- stfs f0 , RoomscaleCurrent + 0x4 (r1)
132- lfs f0 , RoomscaleHit + 0x8 (r1)
133- stfs f0 , RoomscaleCurrent + 0x8 (r1)
134- b ApplyRoomscaleAfterPlayerVelocity_Warp
135-
136- ApplyRoomscaleAfterPlayerVelocity_NoHit:
137- addi r3 , r1 , RoomscaleQuery
138- li r4 , 2
139- bl RayCastBodyQuery_dtor
140-
141- lfs f0 , RoomscaleCurrent + 0x0 (r1)
142- lfs f1 , RoomscaleStep + 0x0 (r1)
143- fadds f0 , f0 , f1
144- stfs f0 , RoomscaleCurrent + 0x0 (r1)
145-
146- lfs f0 , RoomscaleCurrent + 0x4 (r1)
147- lfs f1 , RoomscaleStep + 0x4 (r1)
148- fadds f0 , f0 , f1
149- stfs f0 , RoomscaleCurrent + 0x4 (r1)
150-
151- lfs f0 , RoomscaleCurrent + 0x8 (r1)
152- lfs f1 , RoomscaleStep + 0x8 (r1)
153- fadds f0 , f0 , f1
154- stfs f0 , RoomscaleCurrent + 0x8 (r1)
155-
156- addi r30 , r30 , - 1
157- b ApplyRoomscaleAfterPlayerVelocity_Loop
113+ addi r3 , r1 , RoomscaleScratch
114+ mr r4 , r30
115+ bla import.coreinit.hook_ConsumeRoomscaleRaycast
116+ lwz r31 , 0x18 (r1)
117+ cmpwi r3 , 2
118+ beq ApplyRoomscaleAfterPlayerVelocity_Warp
119+ cmpwi r3 , 1
120+ beq ApplyRoomscaleAfterPlayerVelocity_Loop
121+ b ApplyRoomscaleAfterPlayerVelocity_Continue
158122
159123ApplyRoomscaleAfterPlayerVelocity_Warp:
160124lwz r11 , 0xE8 (r31)
@@ -198,8 +162,8 @@ bl SyncPhysicsFieldAfterSetPosition
198162ApplyRoomscaleAfterPlayerVelocity_Continue:
199163lwz r31 , 0x18 (r1)
200164lwz r30 , 0x14 (r1)
201- lwz r0 , 0x124 (r1)
202- addi r1 , r1 , 0x120
165+ lwz r0 , 0x114 (r1)
166+ addi r1 , r1 , 0x110
203167mtlr r0
204168lwz r3 , 0x4 (r31)
205169lis r12 , ContinueAfterApplyRoomscaleAfterPlayerVelocity@ha
0 commit comments