Provide an API to set the default speed of a flea or a scorpion. This will allow the speed to be changed for different levels in the game. Need to add this API for spiders also.

This commit is contained in:
Jeremy Rand 2020-07-27 22:27:18 -04:00
parent 36be001229
commit 883d882d0e
4 changed files with 72 additions and 31 deletions

View File

@ -686,6 +686,11 @@ checkKey_loop2 anop
cmp #'P'
beq checkKey_shootSpider
cmp #'+'
beq checkKey_fast
cmp #'-'
beq checkKey_slow
lda colourPalette
inc a
cmp #NUM_COLOUR_PALETTES
@ -695,6 +700,9 @@ checkKey_skip anop
sta colourPalette
jmp setColour
checkKey_done anop
rtl
checkKey_addFlea anop
jmp addFlea
@ -713,10 +721,20 @@ checkKey_addSpider anop
checkKey_shootSpider anop
jmp shootSpider
checkKey_fast anop
lda #SPRITE_SPEED_FAST
jsl setFleaSpeed
lda #SPRITE_SPEED_FAST
jmp setScorpionSpeed
checkKey_slow anop
lda #SPRITE_SPEED_SLOW
jsl setFleaSpeed
lda #SPRITE_SPEED_SLOW
jmp setScorpionSpeed
checkKey_quit anop
stz shouldQuit
checkKey_done anop
rtl

View File

@ -17,7 +17,8 @@ FLEA_STATE_NONE equ 0
FLEA_STATE_FALLING equ 1
FLEA_STATE_EXPLODING equ 2
FLEA_SCREEN_SPEED equ 2*SCREEN_BYTES_PER_ROW
FLEA_SCREEN_SPEED_SLOW equ 2*SCREEN_BYTES_PER_ROW
FLEA_SCREEN_SPEED_FAST equ 4*SCREEN_BYTES_PER_ROW
FLEA_SLOW_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/2-1
FLEA_FAST_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/4-1
@ -198,16 +199,15 @@ addFlea entry
lda fleaState
bne addFlea_done
lda fleaSpriteSpeed
jsl setFleaSpeed
lda #FLEA_STATE_FALLING
sta fleaState
lda #FLEA_SLOW_UPDATES_PER_TILE
sta fleaUpdatePerTile
lda fleaUpdatePerTile
sta fleaHeightInTile
lda #FLEA_SCREEN_SPEED
sta fleaSpeed
stz fleaSpriteCounter
lda #FLEA_SPRITE_LAST_OFFSET
sta fleaSprite
@ -233,13 +233,34 @@ addFlea entry
addFlea_done anop
rtl
setFleaSpeed entry
sta fleaSpriteSpeed
cmp #SPRITE_SPEED_FAST
beq setFleaSpeed_fast
lda #FLEA_SCREEN_SPEED_SLOW
sta fleaSpeed
lda #FLEA_SLOW_UPDATES_PER_TILE
sta fleaUpdatePerTile
rtl
setFleaSpeed_fast anop
lda #FLEA_SCREEN_SPEED_FAST
sta fleaSpeed
lda #FLEA_FAST_UPDATES_PER_TILE
sta fleaUpdatePerTile
rtl
shootFlea entry
; TODO - Increment the score
lda fleaState
cmp #FLEA_STATE_FALLING
bne shootFlea_done
lda fleaSpeed
cmp #FLEA_SCREEN_SPEED
cmp #FLEA_SCREEN_SPEED_SLOW
beq shootFlea_faster
lda #FLEA_STATE_EXPLODING
@ -251,11 +272,7 @@ shootFlea entry
rtl
shootFlea_faster anop
asl a
sta fleaSpeed
lda #FLEA_FAST_UPDATES_PER_TILE
sta fleaUpdatePerTile
jsl setFleaSpeed_fast
lda fleaHeightInTile
lsr a
@ -266,7 +283,6 @@ shootFlea_faster anop
sec
sbc #SCREEN_BYTES_PER_ROW
sta fleaScreenOffset
; TODO - Increment the score
shootFlea_done anop
rtl
@ -288,7 +304,8 @@ fleaJumpTable dc i4'flea4'
dc i4'flea2'
dc i4'flea1'
fleaSpeed dc i2'0'
fleaUpdatePerTile dc i2'0'
fleaSpriteSpeed dc i2'SPRITE_SPEED_SLOW'
fleaSpeed dc i2'FLEA_SCREEN_SPEED_SLOW'
fleaUpdatePerTile dc i2'FLEA_SLOW_UPDATES_PER_TILE'
end

View File

@ -256,14 +256,10 @@ updateScorpion_explosionDone anop
rtl
addScorpion entry
lda scorpionState
beq addScorpion_doit
rtl
addScorpion_doit anop
; TODO - Add code to select between fast or slow scorpions based on the level
; bra addScorpion_fast
setScorpionSpeed entry
; TODO - Call this code with each level to set the scorpion speed
cmp #SPRITE_SPEED_FAST
beq setScorpionSpeed_fast
lda #SCORPION_SLOW_SPRITE_LAST_OFFSET
sta scorpionSpriteLastOffset
@ -281,9 +277,9 @@ addScorpion_doit anop
sta updateScorpion_nextByteTest
long i,m
bra addScorpion_cont
rtl
addScorpion_fast anop
setScorpionSpeed_fast anop
lda #SCORPION_FAST_SPRITE_LAST_OFFSET
sta scorpionSpriteLastOffset
@ -299,9 +295,16 @@ addScorpion_fast anop
lda #$09
sta updateScorpion_nextByteTest
long i,m
rtl
addScorpion_cont anop
addScorpion entry
lda scorpionState
beq addScorpion_doit
rtl
addScorpion_doit anop
jsl rand0_to_14
asl a
tay
@ -391,9 +394,9 @@ scorpionTileOffsets dc i2'0'
scorpionShiftInTile dc i2'0'
scorpionSprite dc i2'0'
scorpionSpriteLastOffset dc i2'0'
scorpionSpriteUpdateDec dc i2'0'
scorpionUpdatesPerTile dc i2'0'
scorpionSpriteLastOffset dc i2'SCORPION_SLOW_SPRITE_LAST_OFFSET'
scorpionSpriteUpdateDec dc i2'SCORPION_SLOW_SPRITE_UPDATE_DEC'
scorpionUpdatesPerTile dc i2'SCORPION_SLOW_UPDATES_PER_TILE'
SCORPION_SLOW_SPRITE_LAST_OFFSET gequ 15*4

View File

@ -120,6 +120,9 @@ TILE_RIGHT_OFFSET gequ 12
NUM_COLOUR_PALETTES gequ 14
SPRITE_SPEED_SLOW gequ 0
SPRITE_SPEED_FAST gequ 1
KEYBOARD gequ $e0c000
KEYBOARD_STROBE gequ $e0c010
READ_VBL gequ $e0c019