aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.nasm/segments.txt2
-rw-r--r--src/driver.s12
2 files changed, 11 insertions, 3 deletions
diff --git a/.nasm/segments.txt b/.nasm/segments.txt
index a63d9cd..e98dba4 100644
--- a/.nasm/segments.txt
+++ b/.nasm/segments.txt
@@ -1,4 +1,4 @@
- HEADER: 16/16 (100%)
-- ROM0: 9187/32762 (28.04%)
+- ROM0: 9195/32762 (28.07%)
- ROMV: 6/6 (100%)
- ROM2: 8192/8192 (100%)
diff --git a/src/driver.s b/src/driver.s
index 67cba5c..1bcef27 100644
--- a/src/driver.s
+++ b/src/driver.s
@@ -870,14 +870,22 @@
;; Flip the 'D' bit. If doing so results on a zero bit, then we know we
;; are back at the ground and hence we should stop the
- ;; animation. Otherwise we should store the result so we move downwards
- ;; next time.
+ ;; animation.
lda Driver::zp_flags
eor #$02
tax
and #$02
+ beq @over
+
+ ;; If in the next level the shuttle kind will change, then we call off
+ ;; the animation, as it happened in the original game. Otherwise we
+ ;; should store the result so we move downwards next time.
+ lda Globals::zp_level
+ and #$03
+ cmp #$03
bne @set
+ @over:
;; The animation is over. Reset the flags to the expected 'S' one. Not
;; that we care too much about it, but at least we will be consistent
;; with player's death and other scenarios like that.