mirror of https://github.com/jeremysrand/BuGS.git
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:
parent
36be001229
commit
883d882d0e
22
BuGS/game.s
22
BuGS/game.s
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue