Skip to content

Commit 8886e2c

Browse files
committed
Fix several bugs relating to Respawning
- Fixed an issue where RestartArea could change your checkpoint even after leaving the level - Fixed an issue where Zone Overrides were not working correctly - Fixed #133
1 parent 97d3ded commit 8886e2c

12 files changed

Lines changed: 58 additions & 16 deletions

Source/ObjectEngine/NPC/NPC_Utility.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ mr r4, r30
139139
bl isJMapEntryProgressComplete
140140
b .BranchFunc_Return
141141

142-
143142
.BranchFunc_Case_8:
144143

145144
.BranchFunc_Case_9:
@@ -1178,6 +1177,7 @@ b .Penguin_RegisterGlobals_Return
11781177

11791178

11801179
.GLE ADDRESS .MINI_COMET_CONNECTOR
1180+
11811181
#====== PenguinCoach ======
11821182
.GLE ADDRESS init__12PenguinCoachFRC12JMapInfoIter +0x18C
11831183
#Can't reuse the Bob-omb Buddy 'cause different registers

Source/ObjectEngine/RestartArea.s

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ lbz r3, 0x1C(r31)
107107
cmpwi r3, 0
108108
beq .RestartArea_Movement_Return
109109

110+
#WHY DOES THIS NEED TO BE HERE????
111+
bl isScenarioSelecting__2MRFv
112+
cmpwi r3, 0
113+
bne .RestartArea_Movement_Return
114+
110115
bl getPlayerPos__2MRFv
111116
mr r4, r3
112117
mr r3, r31

Source/ObjectEngine/SceneChangeArea.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ mtlr r0
8484
addi r1, r1, 0x10
8585
blr
8686

87-
87+
.GLE PRINTADDRESS
8888
SceneChangeArea_Movement:
8989
stwu r1, -0x40(r1)
9090
mflr r0

Source/ObjectEngine/StaffRollDemoObj.s

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ addi r4, r13, .StaffRollDemoObj_NrvRun_sInstance - STATIC_R13
148148
bl setNerve__9LiveActorFPC5Nerve
149149

150150
mr r3, r31
151-
bl startStarPointerModeEnding__2MRFPv
151+
#bl startStarPointerModeEnding__2MRFPv
152+
nop
152153

153154
lwz r0, 0x14(r1)
154155
lwz r31, 0x0C(r1)

Source/SceneEngine/GameScene.s

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ addi r3, r3, AllCompleteMessage@l
169169
li r4, 1
170170
bl .MR_GetGameSetting
171171
cmpwi r3, 0
172-
beq .NoWC24
172+
nop #beq .NoWC24
173+
173174

174175
li r3, 0x98 # WiiMessageBoardEmailSender
175176
bl createSceneObj__2MRFi
@@ -470,8 +471,8 @@ blr
470471

471472

472473
.requestGalaxyMove_Ex:
473-
bl .GetSceneStartID
474-
bl setRestartMarioNo__2MRFRC10JMapIdInfo
474+
# bl .GetSceneStartID
475+
# bl setRestartMarioNo__2MRFRC10JMapIdInfo
475476
addi r11, r1, 0x20
476477
b .requestGalaxyMove_Ex_Return
477478

@@ -515,7 +516,7 @@ b .requestGalaxyMove_Ex
515516
.GLE ENDADDRESS
516517

517518
.GLE ADDRESS init__18ScenePlayingResultFv +0x64
518-
bl .GetSceneStartID
519+
#bl .GetSceneStartID
519520
.GLE ENDADDRESS
520521

521522

Source/SceneEngine/SavePoints.s

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,4 +220,9 @@ b GameDataWorldMapStorage_Extension_Return
220220
EntireLevelFlag:
221221
.string "EntireLevelFlag" AUTO
222222

223+
.GLE ENDADDRESS
224+
225+
.GLE ADDRESS isView120StarsEnding__8UserFileCFv
226+
li r3, 1
227+
blr
223228
.GLE ENDADDRESS

Source/SceneEngine/SceneUtility.s

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,14 @@ bl getStageDataHolder__2MRFv
3232
mr r4, r31
3333
bl getStageDataHolderFromZoneId__15StageDataHolderFi
3434

35+
cmpwi r3, 0
36+
beq .StageDataHolder_GetListJMapInfo_Return
37+
3538
addi r4, r3, 0xF8
3639
mr r5, r30
3740
bl findJmpInfoFromArray__15StageDataHolderCFPCQ22MR26AssignableArray<8JMapInfo>PCc
3841
#Returns 0 if BCSV is not found
39-
42+
.StageDataHolder_GetListJMapInfo_Return:
4043
lwz r31, 0x0C(r1)
4144
lwz r30, 0x08(r1)
4245
lwz r0, 0x14(r1)
@@ -45,7 +48,8 @@ addi r1, r1, 0x10
4548
blr
4649

4750

48-
51+
.GLE PRINTMESSAGE == GLE::RequestMoveStageFromJMapInfo ==
52+
.GLE PRINTADDRESS
4953
#Note for Aurum or someone with symbol map access, address 0x8004C860 is the wrong function. It should be "getValue_Ul___8JMapInfoCFiPCcPl_Cb"
5054
.MR_RequestMoveStageFromJMapInfo:
5155
#Reads a BCSV Entry and warps the player there
@@ -154,6 +158,8 @@ mtlr r0
154158
addi r1, r1, 0x60
155159
blr
156160

161+
.GLE PRINTMESSAGE == GLE::RequestMoveStage ==
162+
.GLE PRINTADDRESS
157163
.MR_RequestMoveStage:
158164
#Makes the game start the level change process
159165
#r3 = Destination Stage Name
@@ -174,6 +180,7 @@ mr r30, r4
174180
mr r29, r5
175181
mr r28, r6
176182
mr r24, r8
183+
li r23, 0
177184

178185
#Always check for changing players
179186
mr r3, r7
@@ -193,9 +200,7 @@ bne .MR_RequestMoveStage_NotScenarioSelect
193200
#specifically to the ScenarioSelect of the galaxy
194201

195202
#2022-02-22: Oh wow you somehow listened before I even put this on github
196-
mr r3, r31
197-
bl requestChangeScenarioSelect__20GameSequenceFunctionFPCc
198-
b .MR_RequestMoveStage_Return
203+
li r23, 1
199204

200205

201206
.MR_RequestMoveStage_NotScenarioSelect:
@@ -218,6 +223,25 @@ addi r3, r1, 0x0C
218223
mr r4, r28
219224
bl __ct__10JMapIdInfoFll
220225

226+
addi r3, r1, 0x0C
227+
bl setRestartMarioNo__2MRFRC10JMapIdInfo
228+
229+
lwz r3, sInstance__29SingletonHolder_10GameSystem_ - STATIC_R13(r13)
230+
lwz r3, 0x24(r3)
231+
addi r3, r3, 0x8C
232+
lwz r3, 0x88(r3)
233+
addi r4, r1, 0x0C
234+
bl __as__10JMapIdInfoFRC10JMapIdInfo
235+
236+
cmpwi r23, 0
237+
beq .MR_RequestMoveStage_NoPleaseDont
238+
239+
mr r3, r31
240+
bl requestChangeScenarioSelect__20GameSequenceFunctionFPCc
241+
b .MR_RequestMoveStage_Return
242+
243+
.MR_RequestMoveStage_NoPleaseDont:
244+
221245
#Make corrections for hidden/seeker stars
222246
li r23, -1
223247

@@ -619,6 +643,9 @@ lwz r3, 0x08(r1)
619643

620644
cmpwi r3, -1
621645
bne .CheckNotDefault
646+
#do not save the default if it has already been saved
647+
cmpwi r27, -1
648+
bne .CheckNotDefault
622649
mr r27, r28 #Save the default
623650

624651
.CheckNotDefault:
@@ -1990,7 +2017,8 @@ nop
19902017
.ResetForGameOver:
19912018

19922019
bl forceCloseSystemWipeFade__2MRFv
1993-
bl resetPlayResultInStageHolder__2MRFv
2020+
#THIS IS NO LONGER NEEDED due to the Restart Syncing that MoveStage does.
2021+
#bl resetPlayResultInStageHolder__2MRFv
19942022

19952023
lis r3, PlayerLeft_Setting@ha
19962024
addi r3, r3, PlayerLeft_Setting@l

Source/_Symbols_NTSC-J.s

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,4 +541,5 @@
541541
.set sub_804B4C90, 0x804B4C90
542542
.set sub_8013A180, 0x8013A180
543543
.set hasFaceShipEvent__2MRFv, 0x804D8320
544+
.set cInitializeStartIdInfo__23_unnamed_SceneUtil_cpp_, 0x80727EB0
544545
.GLE REGION END

Source/_Symbols_NTSC-K.s

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,4 +541,5 @@
541541
.set sub_804B4C90, 0x804B4D00
542542
.set sub_8013A180, 0x8013A180
543543
.set hasFaceShipEvent__2MRFv, 0x804D83B0
544+
.set cInitializeStartIdInfo__23_unnamed_SceneUtil_cpp_, 0x8073B3F0
544545
.GLE REGION END

Source/_Symbols_NTSC-U.s

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -766,9 +766,7 @@
766766
.set sub_804B4C90, 0x804B4C90
767767
.set sub_8013A180, 0x8013A180
768768
.set hasFaceShipEvent__2MRFv, 0x804D8320
769-
770-
771-
769+
.set cInitializeStartIdInfo__23_unnamed_SceneUtil_cpp_, 0x807286F0
772770

773771

774772
.GLE REGION END

0 commit comments

Comments
 (0)