Finish up work on the scorpion, adding support for shooting the scorpion. Some more cleanup of hard coded constants, moving them to globals.

This commit is contained in:
Jeremy Rand 2020-07-22 23:46:04 -04:00
parent 68ecca75df
commit ada774960b
4 changed files with 50 additions and 23 deletions

View File

@ -599,21 +599,21 @@ drawAll entry
setupScreen entry
short i,m
lda $e0c035 ; Enable shadowing of SHR
lda >SHADOW_REGISTER ; Enable shadowing of SHR
and #$f7
sta $e0c035
sta >SHADOW_REGISTER
lda #$a1
sta $e0c029 ; Enable SHR mode
sta >NEW_VIDEO_REGISTER ; Enable SHR mode
long i,m
sei
phd
tsc
sta backupStack
lda $e1c068 ; Direct Page and Stack in Bank 01/
lda >STATE_REGISTER ; Direct Page and Stack in Bank 01/
ora #$0030
sta $e1c068
sta >STATE_REGISTER
ldx #$0000
lda #$9dfe
@ -625,9 +625,9 @@ nextWord anop
dey
bpl nextWord
lda $e1c068
lda >STATE_REGISTER
and #$ffcf
sta $e1c068
sta >STATE_REGISTER
lda backupStack
tcs
pld
@ -640,9 +640,9 @@ nextWord anop
checkKeyboard entry
checkKey_loop2 anop
short i,m
lda $e0c000
lda >KEYBOARD
bpl checkKey_done
sta $e0c010
sta >KEYBOARD_STROBE
long i,m
and #$007f
@ -665,7 +665,7 @@ checkKey_loop2 anop
lda colourPalette
inc a
cmp #$000e
cmp #NUM_COLOUR_PALETTES
blt checkKey_skip
lda #$0000
checkKey_skip anop
@ -694,9 +694,9 @@ checkKey_done anop
waitForKey entry
short i,m
waitForKey_loop anop
lda $e0c000
lda >KEYBOARD
bpl waitForKey_loop
sta $e0c010
sta >KEYBOARD_STROBE
long i,m
rtl
@ -705,10 +705,10 @@ waitForVbl entry
short i,m
vblLoop1 anop
lda #$fe
cmp $e0c019
cmp >READ_VBL
bpl vblLoop1
vblLoop2 anop
cmp $e0c019
cmp >READ_VBL
bmi vblLoop2
long i,m
rtl

View File

@ -158,7 +158,7 @@ updateScorpion entry
updateScorpion_cont anop
cmp #SCORPION_STATE_EXPLODING
bra updateScorpion_notExploding
bne updateScorpion_notExploding
jmp updateScorpion_exploding
updateScorpion_notExploding anop
@ -243,6 +243,7 @@ updateScorpion_maybePoison anop
ora #TILE_POISON_A_MUSHROOM
sta tiles+TILE_TYPE_OFFSET,x
updateScorpion_done anop
rtl
updateScorpion_offScreen anop
@ -250,9 +251,15 @@ updateScorpion_offScreen anop
rtl
updateScorpion_exploding anop
; Write this code
updateScorpion_done anop
lda scorpionSprite
beq updateScorpion_explosionDone
sec
sbc #$4
sta scorpionSprite
rtl
updateScorpion_explosionDone anop
stz scorpionState
rtl
@ -362,7 +369,18 @@ addScorpion_done anop
shootScorpion entry
; TODO - Write this code
lda scorpionState
beq shootScorpion_done
cmp #SCORPION_STATE_EXPLODING
beq shootScorpion_done
lda #SCORPION_STATE_EXPLODING
sta scorpionState
lda #EXPLOSION_LAST_OFFSET
sta scorpionSprite
shootScorpion_done anop
rtl

View File

@ -118,6 +118,15 @@ TILE_BELOW_OFFSET gequ 8
TILE_LEFT_OFFSET gequ 10
TILE_RIGHT_OFFSET gequ 12
NUM_COLOUR_PALETTES gequ 14
KEYBOARD gequ $e0c000
KEYBOARD_STROBE gequ $e0c010
READ_VBL gequ $e0c019
SHADOW_REGISTER gequ $e0c035
NEW_VIDEO_REGISTER gequ $e0c029
STATE_REGISTER gequ $e1c068
backupStack dc i2'0'

View File

@ -11,9 +11,9 @@
sei
tsc
sta backupStack
lda $e1c068 ; Direct Page and Stack in Bank 01/
lda >STATE_REGISTER ; Direct Page and Stack in Bank 01/
ora #$0030
sta $e1c068
sta >STATE_REGISTER
clc
tya
tcs
@ -22,9 +22,9 @@
macro
_spriteFooter
lda $e1c068
lda >STATE_REGISTER
and #$ffcf
sta $e1c068
sta >STATE_REGISTER
lda backupStack
tcs
cli