mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-06-08 10:53:45 +00:00
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'
|
cmp #'P'
|
||||||
beq checkKey_shootSpider
|
beq checkKey_shootSpider
|
||||||
|
|
||||||
|
cmp #'+'
|
||||||
|
beq checkKey_fast
|
||||||
|
cmp #'-'
|
||||||
|
beq checkKey_slow
|
||||||
|
|
||||||
lda colourPalette
|
lda colourPalette
|
||||||
inc a
|
inc a
|
||||||
cmp #NUM_COLOUR_PALETTES
|
cmp #NUM_COLOUR_PALETTES
|
||||||
|
@ -695,6 +700,9 @@ checkKey_skip anop
|
||||||
sta colourPalette
|
sta colourPalette
|
||||||
jmp setColour
|
jmp setColour
|
||||||
|
|
||||||
|
checkKey_done anop
|
||||||
|
rtl
|
||||||
|
|
||||||
checkKey_addFlea anop
|
checkKey_addFlea anop
|
||||||
jmp addFlea
|
jmp addFlea
|
||||||
|
|
||||||
|
@ -713,10 +721,20 @@ checkKey_addSpider anop
|
||||||
checkKey_shootSpider anop
|
checkKey_shootSpider anop
|
||||||
jmp shootSpider
|
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
|
checkKey_quit anop
|
||||||
stz shouldQuit
|
stz shouldQuit
|
||||||
|
|
||||||
checkKey_done anop
|
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,8 @@ FLEA_STATE_NONE equ 0
|
||||||
FLEA_STATE_FALLING equ 1
|
FLEA_STATE_FALLING equ 1
|
||||||
FLEA_STATE_EXPLODING equ 2
|
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_SLOW_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/2-1
|
||||||
FLEA_FAST_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/4-1
|
FLEA_FAST_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/4-1
|
||||||
|
|
||||||
|
@ -198,16 +199,15 @@ addFlea entry
|
||||||
lda fleaState
|
lda fleaState
|
||||||
bne addFlea_done
|
bne addFlea_done
|
||||||
|
|
||||||
|
lda fleaSpriteSpeed
|
||||||
|
jsl setFleaSpeed
|
||||||
|
|
||||||
lda #FLEA_STATE_FALLING
|
lda #FLEA_STATE_FALLING
|
||||||
sta fleaState
|
sta fleaState
|
||||||
|
|
||||||
lda #FLEA_SLOW_UPDATES_PER_TILE
|
lda fleaUpdatePerTile
|
||||||
sta fleaUpdatePerTile
|
|
||||||
sta fleaHeightInTile
|
sta fleaHeightInTile
|
||||||
|
|
||||||
lda #FLEA_SCREEN_SPEED
|
|
||||||
sta fleaSpeed
|
|
||||||
|
|
||||||
stz fleaSpriteCounter
|
stz fleaSpriteCounter
|
||||||
lda #FLEA_SPRITE_LAST_OFFSET
|
lda #FLEA_SPRITE_LAST_OFFSET
|
||||||
sta fleaSprite
|
sta fleaSprite
|
||||||
|
@ -233,13 +233,34 @@ addFlea entry
|
||||||
addFlea_done anop
|
addFlea_done anop
|
||||||
rtl
|
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
|
shootFlea entry
|
||||||
|
; TODO - Increment the score
|
||||||
lda fleaState
|
lda fleaState
|
||||||
cmp #FLEA_STATE_FALLING
|
cmp #FLEA_STATE_FALLING
|
||||||
bne shootFlea_done
|
bne shootFlea_done
|
||||||
|
|
||||||
lda fleaSpeed
|
lda fleaSpeed
|
||||||
cmp #FLEA_SCREEN_SPEED
|
cmp #FLEA_SCREEN_SPEED_SLOW
|
||||||
beq shootFlea_faster
|
beq shootFlea_faster
|
||||||
|
|
||||||
lda #FLEA_STATE_EXPLODING
|
lda #FLEA_STATE_EXPLODING
|
||||||
|
@ -251,11 +272,7 @@ shootFlea entry
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
shootFlea_faster anop
|
shootFlea_faster anop
|
||||||
asl a
|
jsl setFleaSpeed_fast
|
||||||
sta fleaSpeed
|
|
||||||
|
|
||||||
lda #FLEA_FAST_UPDATES_PER_TILE
|
|
||||||
sta fleaUpdatePerTile
|
|
||||||
|
|
||||||
lda fleaHeightInTile
|
lda fleaHeightInTile
|
||||||
lsr a
|
lsr a
|
||||||
|
@ -266,7 +283,6 @@ shootFlea_faster anop
|
||||||
sec
|
sec
|
||||||
sbc #SCREEN_BYTES_PER_ROW
|
sbc #SCREEN_BYTES_PER_ROW
|
||||||
sta fleaScreenOffset
|
sta fleaScreenOffset
|
||||||
; TODO - Increment the score
|
|
||||||
|
|
||||||
shootFlea_done anop
|
shootFlea_done anop
|
||||||
rtl
|
rtl
|
||||||
|
@ -288,7 +304,8 @@ fleaJumpTable dc i4'flea4'
|
||||||
dc i4'flea2'
|
dc i4'flea2'
|
||||||
dc i4'flea1'
|
dc i4'flea1'
|
||||||
|
|
||||||
fleaSpeed dc i2'0'
|
fleaSpriteSpeed dc i2'SPRITE_SPEED_SLOW'
|
||||||
fleaUpdatePerTile dc i2'0'
|
fleaSpeed dc i2'FLEA_SCREEN_SPEED_SLOW'
|
||||||
|
fleaUpdatePerTile dc i2'FLEA_SLOW_UPDATES_PER_TILE'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -256,14 +256,10 @@ updateScorpion_explosionDone anop
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
addScorpion entry
|
setScorpionSpeed entry
|
||||||
lda scorpionState
|
; TODO - Call this code with each level to set the scorpion speed
|
||||||
beq addScorpion_doit
|
cmp #SPRITE_SPEED_FAST
|
||||||
rtl
|
beq setScorpionSpeed_fast
|
||||||
|
|
||||||
addScorpion_doit anop
|
|
||||||
; TODO - Add code to select between fast or slow scorpions based on the level
|
|
||||||
; bra addScorpion_fast
|
|
||||||
|
|
||||||
lda #SCORPION_SLOW_SPRITE_LAST_OFFSET
|
lda #SCORPION_SLOW_SPRITE_LAST_OFFSET
|
||||||
sta scorpionSpriteLastOffset
|
sta scorpionSpriteLastOffset
|
||||||
|
@ -281,9 +277,9 @@ addScorpion_doit anop
|
||||||
sta updateScorpion_nextByteTest
|
sta updateScorpion_nextByteTest
|
||||||
long i,m
|
long i,m
|
||||||
|
|
||||||
bra addScorpion_cont
|
rtl
|
||||||
|
|
||||||
addScorpion_fast anop
|
setScorpionSpeed_fast anop
|
||||||
lda #SCORPION_FAST_SPRITE_LAST_OFFSET
|
lda #SCORPION_FAST_SPRITE_LAST_OFFSET
|
||||||
sta scorpionSpriteLastOffset
|
sta scorpionSpriteLastOffset
|
||||||
|
|
||||||
|
@ -299,9 +295,16 @@ addScorpion_fast anop
|
||||||
lda #$09
|
lda #$09
|
||||||
sta updateScorpion_nextByteTest
|
sta updateScorpion_nextByteTest
|
||||||
long i,m
|
long i,m
|
||||||
|
|
||||||
|
rtl
|
||||||
|
|
||||||
addScorpion_cont anop
|
|
||||||
|
|
||||||
|
addScorpion entry
|
||||||
|
lda scorpionState
|
||||||
|
beq addScorpion_doit
|
||||||
|
rtl
|
||||||
|
|
||||||
|
addScorpion_doit anop
|
||||||
jsl rand0_to_14
|
jsl rand0_to_14
|
||||||
asl a
|
asl a
|
||||||
tay
|
tay
|
||||||
|
@ -391,9 +394,9 @@ scorpionTileOffsets dc i2'0'
|
||||||
scorpionShiftInTile dc i2'0'
|
scorpionShiftInTile dc i2'0'
|
||||||
scorpionSprite dc i2'0'
|
scorpionSprite dc i2'0'
|
||||||
|
|
||||||
scorpionSpriteLastOffset dc i2'0'
|
scorpionSpriteLastOffset dc i2'SCORPION_SLOW_SPRITE_LAST_OFFSET'
|
||||||
scorpionSpriteUpdateDec dc i2'0'
|
scorpionSpriteUpdateDec dc i2'SCORPION_SLOW_SPRITE_UPDATE_DEC'
|
||||||
scorpionUpdatesPerTile dc i2'0'
|
scorpionUpdatesPerTile dc i2'SCORPION_SLOW_UPDATES_PER_TILE'
|
||||||
|
|
||||||
|
|
||||||
SCORPION_SLOW_SPRITE_LAST_OFFSET gequ 15*4
|
SCORPION_SLOW_SPRITE_LAST_OFFSET gequ 15*4
|
||||||
|
|
|
@ -120,6 +120,9 @@ TILE_RIGHT_OFFSET gequ 12
|
||||||
|
|
||||||
NUM_COLOUR_PALETTES gequ 14
|
NUM_COLOUR_PALETTES gequ 14
|
||||||
|
|
||||||
|
SPRITE_SPEED_SLOW gequ 0
|
||||||
|
SPRITE_SPEED_FAST gequ 1
|
||||||
|
|
||||||
KEYBOARD gequ $e0c000
|
KEYBOARD gequ $e0c000
|
||||||
KEYBOARD_STROBE gequ $e0c010
|
KEYBOARD_STROBE gequ $e0c010
|
||||||
READ_VBL gequ $e0c019
|
READ_VBL gequ $e0c019
|
||||||
|
|
Loading…
Reference in New Issue
Block a user