mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-06-09 01:29:44 +00:00
Add the code to support switching between fast and slow spiders.
This commit is contained in:
parent
883d882d0e
commit
8bcd4fccf6
|
@ -725,12 +725,16 @@ checkKey_fast anop
|
||||||
lda #SPRITE_SPEED_FAST
|
lda #SPRITE_SPEED_FAST
|
||||||
jsl setFleaSpeed
|
jsl setFleaSpeed
|
||||||
lda #SPRITE_SPEED_FAST
|
lda #SPRITE_SPEED_FAST
|
||||||
|
jsl setSpiderSpeed
|
||||||
|
lda #SPRITE_SPEED_FAST
|
||||||
jmp setScorpionSpeed
|
jmp setScorpionSpeed
|
||||||
|
|
||||||
checkKey_slow anop
|
checkKey_slow anop
|
||||||
lda #SPRITE_SPEED_SLOW
|
lda #SPRITE_SPEED_SLOW
|
||||||
jsl setFleaSpeed
|
jsl setFleaSpeed
|
||||||
lda #SPRITE_SPEED_SLOW
|
lda #SPRITE_SPEED_SLOW
|
||||||
|
jsl setSpiderSpeed
|
||||||
|
lda #SPRITE_SPEED_SLOW
|
||||||
jmp setScorpionSpeed
|
jmp setScorpionSpeed
|
||||||
|
|
||||||
checkKey_quit anop
|
checkKey_quit anop
|
||||||
|
|
|
@ -35,9 +35,10 @@ SPIDER_RHS_TILE_OFFSET equ SPIDER_TOP_ROW_OFFSET+(GAME_NUM_TILES_WIDE-1)*SI
|
||||||
|
|
||||||
; The spider starts 2 pixel rows above the top row offset so it can slide in on the edge of
|
; The spider starts 2 pixel rows above the top row offset so it can slide in on the edge of
|
||||||
; the screen on a diagonal and hit the centre of the tiles with the middle of its body.
|
; the screen on a diagonal and hit the centre of the tiles with the middle of its body.
|
||||||
SPIDER_STARTING_SHIFT equ 2
|
SPIDER_STARTING_SHIFT_SLOW equ 2
|
||||||
SPIDER_LHS_STARTING_SCREEN_OFFSET equ SCREEN_BYTES_PER_ROW*SPIDER_STARTING_SHIFT+6
|
SPIDER_STARTING_SHIFT_FAST equ 1
|
||||||
SPIDER_RHS_STARTING_SCREEN_OFFSET equ SCREEN_BYTES_PER_ROW*SPIDER_STARTING_SHIFT+4
|
SPIDER_LHS_STARTING_SCREEN_OFFSET equ SCREEN_BYTES_PER_ROW*SPIDER_STARTING_SHIFT_SLOW+6
|
||||||
|
SPIDER_RHS_STARTING_SCREEN_OFFSET equ SCREEN_BYTES_PER_ROW*SPIDER_STARTING_SHIFT_SLOW+4
|
||||||
|
|
||||||
; Every four frames, change the spider sprite
|
; Every four frames, change the spider sprite
|
||||||
SPIDER_SPRITE_REFRESH_COUNT equ 4
|
SPIDER_SPRITE_REFRESH_COUNT equ 4
|
||||||
|
@ -48,6 +49,17 @@ SPIDER_SCORE_300 equ 0
|
||||||
SPIDER_SCORE_600 equ 4
|
SPIDER_SCORE_600 equ 4
|
||||||
SPIDER_SCORE_900 equ 8
|
SPIDER_SCORE_900 equ 8
|
||||||
|
|
||||||
|
SPIDER_VERT_SPEED_SLOW equ SCREEN_BYTES_PER_ROW
|
||||||
|
SPIDER_VERT_SPEED_FAST equ SCREEN_BYTES_PER_ROW*2
|
||||||
|
|
||||||
|
SPIDER_MAX_SHIFT_IN_TILE_SLOW equ TILE_PIXEL_HEIGHT
|
||||||
|
SPIDER_MAX_SHIFT_IN_TILE_FAST equ TILE_PIXEL_HEIGHT/2
|
||||||
|
|
||||||
|
SPIDER_LEFT_SCREEN_SHIFT_SLOW equ 1
|
||||||
|
SPIDER_LEFT_SCREEN_SHIFT_FAST equ 0
|
||||||
|
SPIDER_RIGHT_SCREEN_SHIFT_SLOW equ 0
|
||||||
|
SPIDER_RIGHT_SCREEN_SHIFT_FAST equ 1
|
||||||
|
|
||||||
|
|
||||||
drawSpider entry
|
drawSpider entry
|
||||||
lda spiderState
|
lda spiderState
|
||||||
|
@ -316,7 +328,7 @@ updateSpider_leftDown anop
|
||||||
updateSpider_rightDown anop
|
updateSpider_rightDown anop
|
||||||
lda spiderScreenOffset
|
lda spiderScreenOffset
|
||||||
clc
|
clc
|
||||||
adc #SCREEN_BYTES_PER_ROW
|
adc spiderVertSpeed
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
|
||||||
lda spiderShiftInTile
|
lda spiderShiftInTile
|
||||||
|
@ -329,7 +341,7 @@ updateSpider_leftUp anop
|
||||||
updateSpider_rightUp anop
|
updateSpider_rightUp anop
|
||||||
lda spiderScreenOffset
|
lda spiderScreenOffset
|
||||||
sec
|
sec
|
||||||
sbc #SCREEN_BYTES_PER_ROW
|
sbc spiderVertSpeed
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
|
||||||
lda spiderShiftInTile
|
lda spiderShiftInTile
|
||||||
|
@ -341,12 +353,14 @@ updateSpider_rightUp anop
|
||||||
updateSpider_rightDiagDown anop
|
updateSpider_rightDiagDown anop
|
||||||
lda spiderScreenOffset
|
lda spiderScreenOffset
|
||||||
clc
|
clc
|
||||||
adc #SCREEN_BYTES_PER_ROW
|
adc spiderVertSpeed
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
|
||||||
lda spiderScreenShift
|
lda spiderScreenShift
|
||||||
|
updateSpider_rightDiagDown_eor anop
|
||||||
eor #1
|
eor #1
|
||||||
sta spiderScreenShift
|
sta spiderScreenShift
|
||||||
|
cmp spiderRightStartingScreenShift
|
||||||
bne updateSpider_rightDiagDown_skipInc
|
bne updateSpider_rightDiagDown_skipInc
|
||||||
inc spiderScreenOffset
|
inc spiderScreenOffset
|
||||||
|
|
||||||
|
@ -358,20 +372,22 @@ updateSpider_rightDiagDown_skipInc anop
|
||||||
jmp updateSpider_tilesDown
|
jmp updateSpider_tilesDown
|
||||||
|
|
||||||
updateSpider_rightDiagDown_cont anop
|
updateSpider_rightDiagDown_cont anop
|
||||||
cmp #SPIDER_STARTING_SHIFT
|
cmp spiderStartingShift
|
||||||
bne updateSpider_done
|
bne updateSpider_done
|
||||||
jmp updateSpider_tilesRight
|
jmp updateSpider_tilesRight
|
||||||
|
|
||||||
updateSpider_leftDiagDown anop
|
updateSpider_leftDiagDown anop
|
||||||
lda spiderScreenOffset
|
lda spiderScreenOffset
|
||||||
clc
|
clc
|
||||||
adc #SCREEN_BYTES_PER_ROW
|
adc spiderVertSpeed
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
|
||||||
lda spiderScreenShift
|
lda spiderScreenShift
|
||||||
|
updateSpider_leftDiagDown_eor anop
|
||||||
eor #1
|
eor #1
|
||||||
sta spiderScreenShift
|
sta spiderScreenShift
|
||||||
beq updateSpider_leftDiagDown_skipInc
|
cmp spiderLeftStartingScreenShift
|
||||||
|
bne updateSpider_leftDiagDown_skipInc
|
||||||
dec spiderScreenOffset
|
dec spiderScreenOffset
|
||||||
|
|
||||||
updateSpider_leftDiagDown_skipInc anop
|
updateSpider_leftDiagDown_skipInc anop
|
||||||
|
@ -382,7 +398,7 @@ updateSpider_leftDiagDown_skipInc anop
|
||||||
jmp updateSpider_tilesDown
|
jmp updateSpider_tilesDown
|
||||||
|
|
||||||
updateSpider_leftDiagDown_cont anop
|
updateSpider_leftDiagDown_cont anop
|
||||||
cmp #SPIDER_STARTING_SHIFT
|
cmp spiderStartingShift
|
||||||
bne updateSpider_done
|
bne updateSpider_done
|
||||||
jmp updateSpider_tilesLeft
|
jmp updateSpider_tilesLeft
|
||||||
|
|
||||||
|
@ -392,13 +408,15 @@ updateSpider_done anop
|
||||||
updateSpider_leftDiagUp anop
|
updateSpider_leftDiagUp anop
|
||||||
lda spiderScreenOffset
|
lda spiderScreenOffset
|
||||||
sec
|
sec
|
||||||
sbc #SCREEN_BYTES_PER_ROW
|
sbc spiderVertSpeed
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
|
||||||
lda spiderScreenShift
|
lda spiderScreenShift
|
||||||
|
updateSpider_leftDiagUp_eor anop
|
||||||
eor #1
|
eor #1
|
||||||
sta spiderScreenShift
|
sta spiderScreenShift
|
||||||
beq updateSpider_lefttDiagUp_skipInc
|
cmp spiderLeftStartingScreenShift
|
||||||
|
bne updateSpider_lefttDiagUp_skipInc
|
||||||
dec spiderScreenOffset
|
dec spiderScreenOffset
|
||||||
|
|
||||||
updateSpider_lefttDiagUp_skipInc anop
|
updateSpider_lefttDiagUp_skipInc anop
|
||||||
|
@ -409,7 +427,7 @@ updateSpider_lefttDiagUp_skipInc anop
|
||||||
jmp updateSpider_tilesUp
|
jmp updateSpider_tilesUp
|
||||||
|
|
||||||
updateSpider_lefttDiagUp_cont anop
|
updateSpider_lefttDiagUp_cont anop
|
||||||
cmp #SPIDER_STARTING_SHIFT
|
cmp spiderStartingShift
|
||||||
bne updateSpider_done
|
bne updateSpider_done
|
||||||
jmp updateSpider_tilesLeft
|
jmp updateSpider_tilesLeft
|
||||||
rtl
|
rtl
|
||||||
|
@ -417,12 +435,14 @@ updateSpider_lefttDiagUp_cont anop
|
||||||
updateSpider_rightDiagUp anop
|
updateSpider_rightDiagUp anop
|
||||||
lda spiderScreenOffset
|
lda spiderScreenOffset
|
||||||
sec
|
sec
|
||||||
sbc #SCREEN_BYTES_PER_ROW
|
sbc spiderVertSpeed
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
|
||||||
lda spiderScreenShift
|
lda spiderScreenShift
|
||||||
|
updateSpider_rightDiagUp_eor anop
|
||||||
eor #1
|
eor #1
|
||||||
sta spiderScreenShift
|
sta spiderScreenShift
|
||||||
|
cmp spiderRightStartingScreenShift
|
||||||
bne updateSpider_rightDiagUp_skipInc
|
bne updateSpider_rightDiagUp_skipInc
|
||||||
inc spiderScreenOffset
|
inc spiderScreenOffset
|
||||||
|
|
||||||
|
@ -434,7 +454,7 @@ updateSpider_rightDiagUp_skipInc anop
|
||||||
jmp updateSpider_tilesUp
|
jmp updateSpider_tilesUp
|
||||||
|
|
||||||
updateSpider_rightDiagUp_cont anop
|
updateSpider_rightDiagUp_cont anop
|
||||||
cmp #SPIDER_STARTING_SHIFT
|
cmp spiderStartingShift
|
||||||
bne updateSpider_done
|
bne updateSpider_done
|
||||||
jmp updateSpider_tilesRight
|
jmp updateSpider_tilesRight
|
||||||
rtl
|
rtl
|
||||||
|
@ -487,7 +507,7 @@ updateSpider_tilesLeft_cont anop
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
updateSpider_tilesUp anop
|
updateSpider_tilesUp anop
|
||||||
lda #TILE_PIXEL_HEIGHT
|
lda spiderMaxShiftInTile
|
||||||
sta spiderShiftInTile
|
sta spiderShiftInTile
|
||||||
|
|
||||||
lda spiderCurrentRow
|
lda spiderCurrentRow
|
||||||
|
@ -558,7 +578,7 @@ updateSpider_upChangeDirDiagRight anop
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
updateSpider_tilesDown anop
|
updateSpider_tilesDown anop
|
||||||
lda #TILE_PIXEL_HEIGHT
|
lda spiderMaxShiftInTile
|
||||||
sta spiderShiftInTile
|
sta spiderShiftInTile
|
||||||
|
|
||||||
lda spiderCurrentRow
|
lda spiderCurrentRow
|
||||||
|
@ -640,8 +660,7 @@ addSpider entry
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
addSpider_doit anop
|
addSpider_doit anop
|
||||||
|
lda spiderStartingShift
|
||||||
lda #SPIDER_STARTING_SHIFT
|
|
||||||
sta spiderShiftInTile
|
sta spiderShiftInTile
|
||||||
|
|
||||||
lda #SPIDER_SPRITE_LAST_OFFSET
|
lda #SPIDER_SPRITE_LAST_OFFSET
|
||||||
|
@ -666,7 +685,7 @@ addSpider_left anop
|
||||||
lda #SPIDER_STATE_LEFT_DIAG_DOWN
|
lda #SPIDER_STATE_LEFT_DIAG_DOWN
|
||||||
sta spiderState
|
sta spiderState
|
||||||
|
|
||||||
lda #1
|
lda spiderLeftStartingScreenShift
|
||||||
sta spiderScreenShift
|
sta spiderScreenShift
|
||||||
|
|
||||||
ldx #SPIDER_RHS_TILE_OFFSET
|
ldx #SPIDER_RHS_TILE_OFFSET
|
||||||
|
@ -700,7 +719,8 @@ addSpider_right anop
|
||||||
lda #SPIDER_STATE_RIGHT_DIAG_DOWN
|
lda #SPIDER_STATE_RIGHT_DIAG_DOWN
|
||||||
sta spiderState
|
sta spiderState
|
||||||
|
|
||||||
stz spiderScreenShift
|
lda spiderRightStartingScreenShift
|
||||||
|
sta spiderScreenShift
|
||||||
|
|
||||||
ldx #SPIDER_LHS_TILE_OFFSET
|
ldx #SPIDER_LHS_TILE_OFFSET
|
||||||
stx spiderTileOffsets
|
stx spiderTileOffsets
|
||||||
|
@ -730,6 +750,68 @@ addSpider_right anop
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
setSpiderSpeed entry
|
||||||
|
cmp #SPRITE_SPEED_FAST
|
||||||
|
beq setSpiderSpeed_fast
|
||||||
|
|
||||||
|
lda #SPIDER_VERT_SPEED_SLOW
|
||||||
|
sta spiderVertSpeed
|
||||||
|
|
||||||
|
lda #SPIDER_MAX_SHIFT_IN_TILE_SLOW
|
||||||
|
sta spiderMaxShiftInTile
|
||||||
|
|
||||||
|
lda #SPIDER_STARTING_SHIFT_SLOW
|
||||||
|
sta spiderStartingShift
|
||||||
|
|
||||||
|
lda #SPIDER_LEFT_SCREEN_SHIFT_SLOW
|
||||||
|
sta spiderLeftStartingScreenShift
|
||||||
|
|
||||||
|
lda #SPIDER_RIGHT_SCREEN_SHIFT_SLOW
|
||||||
|
sta spiderRightStartingScreenShift
|
||||||
|
|
||||||
|
; This is funky. This sets the instruction at these location to be an immediate eor
|
||||||
|
; instruction. That causes us to only move to the next byte every other frame.
|
||||||
|
short i,m
|
||||||
|
lda #$49
|
||||||
|
sta updateSpider_rightDiagDown_eor
|
||||||
|
sta updateSpider_rightDiagUp_eor
|
||||||
|
sta updateSpider_leftDiagDown_eor
|
||||||
|
sta updateSpider_leftDiagUp_eor
|
||||||
|
long i,m
|
||||||
|
|
||||||
|
rtl
|
||||||
|
|
||||||
|
setSpiderSpeed_fast anop
|
||||||
|
lda #SPIDER_VERT_SPEED_FAST
|
||||||
|
sta spiderVertSpeed
|
||||||
|
|
||||||
|
lda #SPIDER_MAX_SHIFT_IN_TILE_FAST
|
||||||
|
sta spiderMaxShiftInTile
|
||||||
|
|
||||||
|
lda #SPIDER_STARTING_SHIFT_FAST
|
||||||
|
sta spiderStartingShift
|
||||||
|
|
||||||
|
lda #SPIDER_LEFT_SCREEN_SHIFT_FAST
|
||||||
|
sta spiderLeftStartingScreenShift
|
||||||
|
|
||||||
|
lda #SPIDER_RIGHT_SCREEN_SHIFT_FAST
|
||||||
|
sta spiderRightStartingScreenShift
|
||||||
|
|
||||||
|
; This is funky. This sets the instruction at these location to be an immediate or
|
||||||
|
; instruction for the right and and immediate and instruction for the left. That causes
|
||||||
|
; us to only move to the next byte on every frame.
|
||||||
|
short i,m
|
||||||
|
lda #$09
|
||||||
|
sta updateSpider_rightDiagDown_eor
|
||||||
|
sta updateSpider_rightDiagUp_eor
|
||||||
|
lda #$29
|
||||||
|
sta updateSpider_leftDiagDown_eor
|
||||||
|
sta updateSpider_leftDiagUp_eor
|
||||||
|
long i,m
|
||||||
|
|
||||||
|
rtl
|
||||||
|
|
||||||
|
|
||||||
shootSpider entry
|
shootSpider entry
|
||||||
lda spiderState
|
lda spiderState
|
||||||
cmp #SPIDER_STATE_LEFT_DIAG_DOWN
|
cmp #SPIDER_STATE_LEFT_DIAG_DOWN
|
||||||
|
@ -767,6 +849,12 @@ spiderTargetRow dc i2'0'
|
||||||
spiderScoreType dc i2'0'
|
spiderScoreType dc i2'0'
|
||||||
spiderScoreFrames dc i2'0'
|
spiderScoreFrames dc i2'0'
|
||||||
|
|
||||||
|
spiderVertSpeed dc i2'SPIDER_VERT_SPEED_SLOW'
|
||||||
|
spiderMaxShiftInTile dc i2'SPIDER_MAX_SHIFT_IN_TILE_SLOW'
|
||||||
|
spiderStartingShift dc i2'SPIDER_STARTING_SHIFT_SLOW'
|
||||||
|
spiderLeftStartingScreenShift dc i2'SPIDER_LEFT_SCREEN_SHIFT_SLOW'
|
||||||
|
spiderRightStartingScreenShift dc i2'SPIDER_RIGHT_SCREEN_SHIFT_SLOW'
|
||||||
|
|
||||||
|
|
||||||
; 10 6 2
|
; 10 6 2
|
||||||
; 8 4 0
|
; 8 4 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user