Improve transition animation from straight stairs

This commit is contained in:
Catobat
2021-10-31 21:17:18 +01:00
parent a1fafb72cd
commit 3f34e50a62
3 changed files with 13 additions and 4 deletions

View File

@@ -9,6 +9,7 @@
; Normal doors use $FE to store the trap door indicator ; Normal doors use $FE to store the trap door indicator
; Normal doors use $045e to store Y coordinate when transitioning to in-room stairs ; Normal doors use $045e to store Y coordinate when transitioning to in-room stairs
; Normal doors use $045f to determine the order in which supertile quadrants are drawn ; Normal doors use $045f to determine the order in which supertile quadrants are drawn
; Straight stairs use $046d to store X coordinate on animation start
; Spiral doors use $045e to store stair type ; Spiral doors use $045e to store stair type
; Gfx uses $b1 to for sub-sub-sub-module thing ; Gfx uses $b1 to for sub-sub-sub-module thing

View File

@@ -150,15 +150,14 @@ LoadRoomVert:
.notEdge .notEdge
lda $01 : and #$03 : cmp #$03 : bne .normal lda $01 : and #$03 : cmp #$03 : bne .normal
jsr ScrollToInroomStairs jsr ScrollToInroomStairs
stz $046d
bra .end bra .end
.normal .normal
ldy #$01 : jsr ShiftVariablesMainDir ldy #$01 : jsr ShiftVariablesMainDir
jsr PrepScrollToNormal jsr PrepScrollToNormal
.scroll .scroll
lda $01 : and #$40 : pha lda $01 : and #$40 : sta $046d
jsr ScrollX jsr ScrollX
pla : beq .end
ldy #$00 : jsr ApplyScroll
.end .end
plb ; restore db register plb ; restore db register
rts rts
@@ -291,6 +290,11 @@ StraightStairsAdj:
stx $0464 : sty $012e ; what we wrote over stx $0464 : sty $012e ; what we wrote over
lda.l DRMode : beq + lda.l DRMode : beq +
lda $045e : bne .toInroom lda $045e : bne .toInroom
lda $046d : beq .noScroll
sta $22
ldy #$00 : jsr ApplyScroll
stz $046d
.noScroll
jsr GetTileAttribute : tax jsr GetTileAttribute : tax
lda $11 : cmp #$12 : beq .goingNorth lda $11 : cmp #$12 : beq .goingNorth
lda $a2 : cmp #$51 : bne ++ lda $a2 : cmp #$51 : bne ++

View File

@@ -168,7 +168,11 @@ ScrollX: ;change the X offset variables
pla : sta $00 pla : sta $00
sep #$30 sep #$30
lda $04 : sta $22 lda $04 : ldx $046d : bne .straight
sta $22 : bra +
.straight
sta $046d ; set X position later
+
lda $00 : sta $23 : sta $0609 : sta $060d lda $00 : sta $23 : sta $0609 : sta $060d
lda $01 : sta $a9 lda $01 : sta $a9
lda $0e : asl : ora $ac : sta $ac lda $0e : asl : ora $ac : sta $ac