Files
alttpr-baserom/rewind.asm
Kara Alexandra 89cf2e29ff Minor bug fixes:
- single-entrance teleporting was borked
- glove palettes
- updating HUD on changing item
2024-11-28 03:04:46 -06:00

282 lines
3.4 KiB
NASM

pushpc
org $82D6E2
JSL CheckLoadRewind
BCC +
JMP.w $D83F
+
pullpc
CheckLoadRewind:
; what we wrote over
STZ.w $011A
STZ.w $011C
; STZ.w $010A ; removed for MSU patch anyway
LDA.l RewindTrigger
AND.w #$00FF
BEQ .no_state
JSR.w LoadRewind
SEC
RTL
.no_state
LDA.l $7EF3CC ; rest of what we wrote over
CLC
RTL
LoadRewind:
LDA.l RewindDungeonEntrance
STA.w $010E
LDA.l RewindRoomId
STA.b $A0
STA.w $048E
LDA.l RewindVerticalScroll
STA.b $E8
STA.b $E6
STA.w $0122
STA.w $0124
LDA.l RewindHorizontalScroll
STA.b $E2
STA.b $E0
STA.w $011E
STA.w $0120
LDA.l RewindYCoordinate
STA.b $20
LDA.l RewindXCoordinate
STA.b $22
LDA.l RewindCameraTriggerY
STA.w $0618
INC A
INC A
STA.w $061A
LDA.l RewindCameraTriggerX
STA.w $061C
INC A
INC A
STA.w $061E
LDA.w #$01F8
STA.b $EC
LDA.l RewindOverworldDoorTilemap
STA.w $0696
STZ.w $0698
LDA.w #$0000
STA.w $0610
LDA.w #$0110
STA.w $0612
LDA.w #$0000
STA.w $0614
LDA.w #$0100
STA.w $0616
SEP #$20
LDA.l RewindCameraScrollBoundaries
STA.w $0601
LDA.l RewindCameraScrollBoundaries+1
STA.w $0603
LDA.l RewindCameraScrollBoundaries+2
STA.w $0605
LDA.l RewindCameraScrollBoundaries+3
STA.w $0607
LDA.l RewindCameraScrollBoundaries+4
STA.w $0609
LDA.l RewindCameraScrollBoundaries+5
STA.w $060B
LDA.l RewindCameraScrollBoundaries+6
STA.w $060D
LDA.l RewindCameraScrollBoundaries+7
STA.w $060F
STZ.w $0600
STZ.w $0602
LDA.b #$10
STA.w $0604
STA.w $0606
STZ.w $0608
STZ.w $060A
STZ.w $060C
STZ.w $060E
LDA.l RewindLinkFacing
STA.b $2F
LDA.l RewindMainGFX
STA.w $0AA1
LDA.l RewindSong
STA.w $0132
LDA.l RewindFloor
STA.b $A4
LDA.l RewindDungeonId
STA.w $040C
LDA.l Rewind_6C
STA.b $6C
LDA.l Rewind_EE
STA.b $EE
LDA.l Rewind_0476
STA.w $0476
LDA.l Rewind_A6
STA.b $A6
LDA.l Rewind_A7
STA.b $A7
LDA.l Rewind_A9
STA.b $A9
LDA.l Rewind_AA
STA.b $AA
STZ.w $02E4
PHP
REP #$30
LDA.w #$0000
STA.l RewindTrigger
LDA.w #$FFFF
STA.l RewindRoomId
PHB
LDX.w #RewindEntranceCache
LDY.w #$C140
LDA.w #$27
MVN $7E, RewindEntranceCache>>16
PLB
PLP
RTS
SaveRewind:
PHP
REP #$20
LDA.w $010E
STA.l RewindDungeonEntrance
LDA.b $A0
STA.l RewindRoomId
LDA.b $E8
STA.l RewindVerticalScroll
LDA.b $E2
STA.l RewindHorizontalScroll
LDA.b $20
STA.l RewindYCoordinate
LDA.b $22
STA.l RewindXCoordinate
LDA.w $0618
STA.l RewindCameraTriggerY
LDA.w $061C
STA.l RewindCameraTriggerX
LDA.w $0696
STA.l RewindOverworldDoorTilemap
SEP #$20
LDA.w $0601
STA.l RewindCameraScrollBoundaries
LDA.w $0603
STA.l RewindCameraScrollBoundaries+1
LDA.w $0605
STA.l RewindCameraScrollBoundaries+2
LDA.w $0607
STA.l RewindCameraScrollBoundaries+3
LDA.w $0609
STA.l RewindCameraScrollBoundaries+4
LDA.w $060B
STA.l RewindCameraScrollBoundaries+5
LDA.w $060D
STA.l RewindCameraScrollBoundaries+6
LDA.w $060F
STA.l RewindCameraScrollBoundaries+7
LDA.b $2F
STA.l RewindLinkFacing
LDA.w $0AA1
STA.l RewindMainGFX
LDA.w $0132
STA.l RewindSong
LDA.b $A4
STA.l RewindFloor
LDA.w $040C
STA.l RewindDungeonId
LDA.b $6C
STA.l Rewind_6C
LDA.b $EE
STA.l Rewind_EE
LDA.w $0476
STA.l Rewind_0476
LDA.b $A6
STA.l Rewind_A6
LDA.b $A7
STA.l Rewind_A7
LDA.b $A9
STA.l Rewind_A9
LDA.b $AA
STA.l Rewind_AA
PHB
REP #$30
LDX.w #$C140
LDY.w #RewindEntranceCache
LDA.w #$27
MVN RewindEntranceCache>>16, $7E
PLB
PLP
RTL