2020-07-24 03:41:12 +00:00
|
|
|
;
|
|
|
|
; gameSpider.s
|
|
|
|
; BuGS
|
|
|
|
;
|
|
|
|
; Created by Jeremy Rand on 2020-07-23.
|
|
|
|
;Copyright © 2020 Jeremy Rand. All rights reserved.
|
|
|
|
;
|
|
|
|
|
|
|
|
case on
|
|
|
|
mcopy gameSpider.macros
|
|
|
|
keep gameSpider
|
|
|
|
|
|
|
|
gameSpider start
|
|
|
|
using globalData
|
2020-11-05 03:48:18 +00:00
|
|
|
using tileData
|
2020-07-24 03:41:12 +00:00
|
|
|
|
|
|
|
SPIDER_STATE_NONE equ 0
|
2020-07-25 03:27:33 +00:00
|
|
|
SPIDER_STATE_EXPLODING equ 1
|
2020-07-27 18:22:34 +00:00
|
|
|
SPIDER_STATE_SCORE equ 2
|
|
|
|
SPIDER_STATE_LEFT_DIAG_DOWN equ 3
|
|
|
|
SPIDER_STATE_LEFT_DIAG_UP equ 4
|
|
|
|
SPIDER_STATE_LEFT_DOWN equ 5
|
|
|
|
SPIDER_STATE_LEFT_UP equ 6
|
|
|
|
SPIDER_STATE_RIGHT_DIAG_DOWN equ 7
|
|
|
|
SPIDER_STATE_RIGHT_DIAG_UP equ 8
|
|
|
|
SPIDER_STATE_RIGHT_DOWN equ 9
|
|
|
|
SPIDER_STATE_RIGHT_UP equ 10
|
2020-07-24 03:41:12 +00:00
|
|
|
|
2020-07-24 18:42:03 +00:00
|
|
|
|
2020-10-27 02:32:46 +00:00
|
|
|
SPIDER_LHS_TILE_OFFSET equ SPIDER_STARTING_TOP_ROW_OFFSET
|
|
|
|
SPIDER_RHS_TILE_OFFSET equ SPIDER_STARTING_TOP_ROW_OFFSET+(GAME_NUM_TILES_WIDE-1)*SIZEOF_TILE_INFO
|
2020-07-24 18:42:03 +00:00
|
|
|
|
|
|
|
; 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.
|
2020-07-28 03:30:11 +00:00
|
|
|
SPIDER_STARTING_SHIFT_SLOW equ 2
|
|
|
|
SPIDER_STARTING_SHIFT_FAST equ 1
|
|
|
|
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
|
2020-07-24 18:42:03 +00:00
|
|
|
|
2020-07-25 18:54:35 +00:00
|
|
|
; Every four frames, change the spider sprite
|
2020-07-25 03:50:01 +00:00
|
|
|
SPIDER_SPRITE_REFRESH_COUNT equ 4
|
|
|
|
|
2020-07-27 18:25:22 +00:00
|
|
|
SPIDER_SCORE_NUM_FRAMES equ 120
|
|
|
|
|
2020-11-19 04:36:01 +00:00
|
|
|
SPIDER_SCORE_300 equ 0
|
|
|
|
SPIDER_SCORE_600 equ 4
|
|
|
|
SPIDER_SCORE_900 equ 8
|
|
|
|
SPIDER_SCORE_NONE equ $ffff
|
2020-07-27 18:22:34 +00:00
|
|
|
|
2020-07-28 03:30:11 +00:00
|
|
|
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
|
|
|
|
|
2020-10-22 04:00:16 +00:00
|
|
|
; Two seconds or 120 frames after a spider disappears, a spider is added.
|
|
|
|
SPIDER_ADD_TIME equ 120
|
|
|
|
|
|
|
|
|
|
|
|
spiderInitGame entry
|
2020-10-27 02:32:46 +00:00
|
|
|
lda #SPIDER_STARTING_TOP_ROW
|
|
|
|
sta spiderTopRow
|
2020-10-22 04:00:16 +00:00
|
|
|
lda #SPRITE_SPEED_SLOW
|
|
|
|
jmp setSpiderSpeed
|
|
|
|
|
2020-11-12 04:51:09 +00:00
|
|
|
spiderInitLevel entry
|
|
|
|
stz spiderAddTime
|
|
|
|
stz spiderState
|
|
|
|
rtl
|
|
|
|
|
2020-07-24 18:42:03 +00:00
|
|
|
|
2020-07-24 03:41:12 +00:00
|
|
|
drawSpider entry
|
|
|
|
lda spiderState
|
|
|
|
bne drawSpider_cont
|
|
|
|
rtl
|
|
|
|
|
|
|
|
drawSpider_cont anop
|
|
|
|
ldy spiderScreenOffset
|
|
|
|
ldx spiderSprite
|
|
|
|
jsl spiderJump
|
|
|
|
|
2020-07-31 03:34:48 +00:00
|
|
|
_dirtyGameOrNonGameTile spiderTileOffsets
|
|
|
|
_dirtyGameOrNonGameTile spiderTileOffsets+2
|
|
|
|
_dirtyGameOrNonGameTile spiderTileOffsets+4
|
|
|
|
_dirtyGameOrNonGameTile spiderTileOffsets+6
|
|
|
|
_dirtyGameOrNonGameTile spiderTileOffsets+8
|
|
|
|
_dirtyGameOrNonGameTile spiderTileOffsets+10
|
2020-07-24 03:41:12 +00:00
|
|
|
|
|
|
|
rtl
|
|
|
|
|
|
|
|
spiderJump entry
|
|
|
|
cmp #SPIDER_STATE_EXPLODING
|
|
|
|
beq spiderJump_exploding
|
|
|
|
|
2020-07-27 18:22:34 +00:00
|
|
|
cmp #SPIDER_STATE_SCORE
|
|
|
|
beq spiderJump_score
|
|
|
|
|
2020-07-24 03:41:12 +00:00
|
|
|
lda spiderScreenShift
|
2020-07-25 03:50:01 +00:00
|
|
|
bne spiderJump_shift
|
2020-07-24 03:41:12 +00:00
|
|
|
|
|
|
|
lda spiderJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda spiderJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
|
|
|
bra jumpInst
|
|
|
|
|
|
|
|
spiderJump_shift anop
|
|
|
|
lda spiderShiftJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda spiderShiftJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
|
|
|
bra jumpInst
|
|
|
|
|
2020-07-27 18:22:34 +00:00
|
|
|
spiderJump_score anop
|
|
|
|
lda spiderScoreJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda spiderScoreJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
|
|
|
bra jumpInst
|
2020-07-24 03:41:12 +00:00
|
|
|
|
2020-07-27 18:22:34 +00:00
|
|
|
spiderJump_exploding anop
|
|
|
|
iny
|
2020-07-24 03:41:12 +00:00
|
|
|
lda explosionJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda explosionJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
|
|
|
|
|
|
|
jumpInst jmp >spider1
|
|
|
|
nop
|
|
|
|
|
|
|
|
|
|
|
|
updateSpider entry
|
2020-11-12 04:51:09 +00:00
|
|
|
lda playerState
|
|
|
|
cmp #PLAYER_STATE_ONSCREEN
|
|
|
|
beq updateSpider_cont
|
2020-11-19 04:36:01 +00:00
|
|
|
ldx spiderState
|
2020-12-22 06:00:10 +00:00
|
|
|
cpx #SPIDER_STATE_EXPLODING
|
2020-11-19 04:36:01 +00:00
|
|
|
beq updateSpider_testState
|
2020-11-12 04:51:09 +00:00
|
|
|
rtl
|
|
|
|
updateSpider_cont anop
|
2020-07-26 04:05:32 +00:00
|
|
|
ldx spiderState
|
|
|
|
cpx #SPIDER_STATE_LEFT_DIAG_DOWN
|
|
|
|
blt updateSpider_testState
|
2020-07-25 03:27:33 +00:00
|
|
|
|
2020-07-25 03:50:01 +00:00
|
|
|
lda spiderSpriteRefresh
|
|
|
|
beq updateSpider_spriteRefresh
|
|
|
|
dec a
|
|
|
|
sta spiderSpriteRefresh
|
|
|
|
bra updateSpider_testState
|
|
|
|
|
|
|
|
updateSpider_spriteRefresh anop
|
|
|
|
lda #SPIDER_SPRITE_REFRESH_COUNT
|
|
|
|
sta spiderSpriteRefresh
|
2020-07-25 03:27:33 +00:00
|
|
|
lda spiderSprite
|
|
|
|
beq updateSpider_resetSprite
|
|
|
|
sec
|
|
|
|
sbc #$4
|
|
|
|
sta spiderSprite
|
|
|
|
bra updateSpider_testState
|
|
|
|
|
|
|
|
updateSpider_resetSprite anop
|
|
|
|
lda #SPIDER_SPRITE_LAST_OFFSET
|
|
|
|
sta spiderSprite
|
|
|
|
|
|
|
|
updateSpider_testState anop
|
2020-07-26 04:05:32 +00:00
|
|
|
txa
|
|
|
|
asl a
|
|
|
|
tax
|
|
|
|
jmp (spiderUpdateJumpTable,x)
|
2020-07-25 03:27:33 +00:00
|
|
|
|
|
|
|
updateSpider_exploding anop
|
|
|
|
lda spiderSprite
|
|
|
|
beq updateSpider_explosionDone
|
|
|
|
sec
|
|
|
|
sbc #$4
|
|
|
|
sta spiderSprite
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_explosionDone anop
|
2020-11-19 04:36:01 +00:00
|
|
|
lda spiderScoreType
|
|
|
|
bmi updateSpider_scoreDone
|
|
|
|
|
|
|
|
updateSpider_explosionShowScore anop
|
2020-07-27 18:22:34 +00:00
|
|
|
lda #SPIDER_STATE_SCORE
|
|
|
|
sta spiderState
|
|
|
|
|
|
|
|
lda #SPIDER_SCORE_NUM_FRAMES
|
|
|
|
sta spiderScoreFrames
|
|
|
|
|
|
|
|
lda spiderScoreType
|
|
|
|
sta spiderSprite
|
|
|
|
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_score anop
|
|
|
|
lda spiderScoreFrames
|
|
|
|
beq updateSpider_scoreDone
|
|
|
|
dec a
|
|
|
|
sta spiderScoreFrames
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_scoreDone anop
|
2020-07-25 03:27:33 +00:00
|
|
|
stz spiderState
|
|
|
|
rtl
|
|
|
|
|
2020-07-26 06:13:06 +00:00
|
|
|
updateSpider_leftDown anop
|
2020-07-25 03:27:33 +00:00
|
|
|
updateSpider_rightDown anop
|
2020-07-26 04:05:32 +00:00
|
|
|
lda spiderScreenOffset
|
|
|
|
clc
|
2020-07-28 03:30:11 +00:00
|
|
|
adc spiderVertSpeed
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderScreenOffset
|
|
|
|
|
|
|
|
lda spiderShiftInTile
|
|
|
|
dec a
|
|
|
|
sta spiderShiftInTile
|
|
|
|
bne updateSpider_done
|
|
|
|
jmp updateSpider_tilesDown
|
2020-07-26 06:13:06 +00:00
|
|
|
|
|
|
|
updateSpider_leftUp anop
|
2020-07-26 04:05:32 +00:00
|
|
|
updateSpider_rightUp anop
|
|
|
|
lda spiderScreenOffset
|
|
|
|
sec
|
2020-07-28 03:30:11 +00:00
|
|
|
sbc spiderVertSpeed
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderScreenOffset
|
|
|
|
|
|
|
|
lda spiderShiftInTile
|
|
|
|
dec a
|
|
|
|
sta spiderShiftInTile
|
|
|
|
bne updateSpider_done
|
|
|
|
jmp updateSpider_tilesUp
|
2020-07-25 03:27:33 +00:00
|
|
|
|
|
|
|
updateSpider_rightDiagDown anop
|
|
|
|
lda spiderScreenOffset
|
|
|
|
clc
|
2020-07-28 03:30:11 +00:00
|
|
|
adc spiderVertSpeed
|
2020-07-25 03:27:33 +00:00
|
|
|
sta spiderScreenOffset
|
|
|
|
|
|
|
|
lda spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
updateSpider_rightDiagDown_eor anop
|
2020-07-25 03:27:33 +00:00
|
|
|
eor #1
|
|
|
|
sta spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderRightStartingScreenShift
|
2020-07-25 03:27:33 +00:00
|
|
|
bne updateSpider_rightDiagDown_skipInc
|
|
|
|
inc spiderScreenOffset
|
|
|
|
|
|
|
|
updateSpider_rightDiagDown_skipInc anop
|
2020-07-26 04:05:32 +00:00
|
|
|
lda spiderShiftInTile
|
|
|
|
dec a
|
|
|
|
sta spiderShiftInTile
|
|
|
|
bne updateSpider_rightDiagDown_cont
|
|
|
|
jmp updateSpider_tilesDown
|
|
|
|
|
|
|
|
updateSpider_rightDiagDown_cont anop
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderStartingShift
|
2020-07-26 04:05:32 +00:00
|
|
|
bne updateSpider_done
|
|
|
|
jmp updateSpider_tilesRight
|
2020-07-26 06:13:06 +00:00
|
|
|
|
2020-07-26 04:05:32 +00:00
|
|
|
updateSpider_leftDiagDown anop
|
2020-07-26 06:13:06 +00:00
|
|
|
lda spiderScreenOffset
|
|
|
|
clc
|
2020-07-28 03:30:11 +00:00
|
|
|
adc spiderVertSpeed
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderScreenOffset
|
|
|
|
|
|
|
|
lda spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
updateSpider_leftDiagDown_eor anop
|
2020-07-26 06:13:06 +00:00
|
|
|
eor #1
|
|
|
|
sta spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderLeftStartingScreenShift
|
|
|
|
bne updateSpider_leftDiagDown_skipInc
|
2020-07-26 06:13:06 +00:00
|
|
|
dec spiderScreenOffset
|
|
|
|
|
|
|
|
updateSpider_leftDiagDown_skipInc anop
|
|
|
|
lda spiderShiftInTile
|
|
|
|
dec a
|
|
|
|
sta spiderShiftInTile
|
|
|
|
bne updateSpider_leftDiagDown_cont
|
|
|
|
jmp updateSpider_tilesDown
|
|
|
|
|
|
|
|
updateSpider_leftDiagDown_cont anop
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderStartingShift
|
2020-07-26 06:13:06 +00:00
|
|
|
bne updateSpider_done
|
2020-07-26 20:00:46 +00:00
|
|
|
jmp updateSpider_tilesLeft
|
2020-07-26 06:13:06 +00:00
|
|
|
|
|
|
|
updateSpider_done anop
|
2020-10-22 04:00:16 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_maybeAdd anop
|
|
|
|
lda gameRunning
|
|
|
|
bne updateSpider_done
|
|
|
|
lda spiderAddTime
|
|
|
|
bne updateSpider_waitForAdd
|
|
|
|
lda #SPIDER_ADD_TIME
|
|
|
|
sta spiderAddTime
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_waitForAdd anop
|
|
|
|
dec a
|
|
|
|
sta spiderAddTime
|
|
|
|
bne updateSpider_done
|
|
|
|
jmp addSpider
|
|
|
|
|
2020-07-26 06:13:06 +00:00
|
|
|
|
2020-07-26 04:05:32 +00:00
|
|
|
updateSpider_leftDiagUp anop
|
2020-07-26 06:13:06 +00:00
|
|
|
lda spiderScreenOffset
|
|
|
|
sec
|
2020-07-28 03:30:11 +00:00
|
|
|
sbc spiderVertSpeed
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderScreenOffset
|
|
|
|
|
|
|
|
lda spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
updateSpider_leftDiagUp_eor anop
|
2020-07-26 06:13:06 +00:00
|
|
|
eor #1
|
|
|
|
sta spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderLeftStartingScreenShift
|
|
|
|
bne updateSpider_lefttDiagUp_skipInc
|
2020-07-26 06:13:06 +00:00
|
|
|
dec spiderScreenOffset
|
|
|
|
|
|
|
|
updateSpider_lefttDiagUp_skipInc anop
|
|
|
|
lda spiderShiftInTile
|
|
|
|
dec a
|
|
|
|
sta spiderShiftInTile
|
|
|
|
bne updateSpider_lefttDiagUp_cont
|
|
|
|
jmp updateSpider_tilesUp
|
|
|
|
|
|
|
|
updateSpider_lefttDiagUp_cont anop
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderStartingShift
|
2020-07-26 06:13:06 +00:00
|
|
|
bne updateSpider_done
|
2020-07-26 20:00:46 +00:00
|
|
|
jmp updateSpider_tilesLeft
|
2020-07-26 04:05:32 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_rightDiagUp anop
|
|
|
|
lda spiderScreenOffset
|
|
|
|
sec
|
2020-07-28 03:30:11 +00:00
|
|
|
sbc spiderVertSpeed
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderScreenOffset
|
|
|
|
|
|
|
|
lda spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
updateSpider_rightDiagUp_eor anop
|
2020-07-26 04:05:32 +00:00
|
|
|
eor #1
|
|
|
|
sta spiderScreenShift
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderRightStartingScreenShift
|
2020-07-26 04:05:32 +00:00
|
|
|
bne updateSpider_rightDiagUp_skipInc
|
|
|
|
inc spiderScreenOffset
|
2020-07-25 03:27:33 +00:00
|
|
|
|
2020-07-26 04:05:32 +00:00
|
|
|
updateSpider_rightDiagUp_skipInc anop
|
2020-07-25 03:27:33 +00:00
|
|
|
lda spiderShiftInTile
|
|
|
|
dec a
|
|
|
|
sta spiderShiftInTile
|
2020-07-26 04:05:32 +00:00
|
|
|
bne updateSpider_rightDiagUp_cont
|
|
|
|
jmp updateSpider_tilesUp
|
2020-07-25 18:34:44 +00:00
|
|
|
|
2020-07-26 04:05:32 +00:00
|
|
|
updateSpider_rightDiagUp_cont anop
|
2020-07-28 03:30:11 +00:00
|
|
|
cmp spiderStartingShift
|
2020-07-26 04:05:32 +00:00
|
|
|
bne updateSpider_done
|
|
|
|
jmp updateSpider_tilesRight
|
2020-07-25 03:27:33 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_tilesRight anop
|
|
|
|
ldx spiderTileOffsets+4
|
2020-07-26 04:05:32 +00:00
|
|
|
cpx #RHS_FIRST_TILE_OFFSET
|
|
|
|
blt updateSpider_tilesRight_cont
|
|
|
|
cpx #LHS_FIRST_TILE_OFFSET
|
|
|
|
bge updateSpider_tilesRight_cont
|
|
|
|
jmp updateSpider_offScreen
|
|
|
|
updateSpider_tilesRight_cont anop
|
2020-07-25 03:27:33 +00:00
|
|
|
stx spiderTileOffsets+8
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
stx spiderTileOffsets+10
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+2
|
|
|
|
stx spiderTileOffsets+6
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileRight,x
|
2020-07-25 03:27:33 +00:00
|
|
|
sta spiderTileOffsets+2
|
|
|
|
|
|
|
|
ldx spiderTileOffsets
|
|
|
|
stx spiderTileOffsets+4
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileRight,x
|
2020-07-25 03:27:33 +00:00
|
|
|
sta spiderTileOffsets
|
2020-12-23 04:40:21 +00:00
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
jmp updateSpiderSound
|
2020-07-26 04:05:32 +00:00
|
|
|
|
|
|
|
updateSpider_tilesLeft anop
|
|
|
|
ldx spiderTileOffsets+4
|
|
|
|
cpx #LHS_FIRST_TILE_OFFSET
|
|
|
|
blt updateSpider_tilesLeft_cont
|
|
|
|
jmp updateSpider_offScreen
|
|
|
|
updateSpider_tilesLeft_cont anop
|
|
|
|
stx spiderTileOffsets
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
stx spiderTileOffsets+2
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+10
|
|
|
|
stx spiderTileOffsets+6
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileLeft,x
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderTileOffsets+10
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+8
|
|
|
|
stx spiderTileOffsets+4
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileLeft,x
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderTileOffsets+8
|
2020-12-23 04:40:21 +00:00
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
jmp updateSpiderSound
|
2020-07-26 04:05:32 +00:00
|
|
|
|
|
|
|
updateSpider_tilesUp anop
|
2020-07-28 03:30:11 +00:00
|
|
|
lda spiderMaxShiftInTile
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderShiftInTile
|
|
|
|
|
|
|
|
lda spiderCurrentRow
|
|
|
|
dec a
|
|
|
|
sta spiderCurrentRow
|
|
|
|
cmp spiderTargetRow
|
|
|
|
beq updateSpider_upChangeDir
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+2
|
|
|
|
stx spiderTileOffsets
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderTileOffsets+2
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
stx spiderTileOffsets+4
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderTileOffsets+6
|
|
|
|
|
|
|
|
; As per the below, clear any mushroom if present
|
|
|
|
cpx #RHS_FIRST_TILE_OFFSET
|
|
|
|
bge updateSpider_tilesUpCont
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileType,x
|
2020-07-26 04:05:32 +00:00
|
|
|
beq updateSpider_tilesUpCont
|
|
|
|
lda #TILE_EMPTY
|
2020-09-02 04:15:53 +00:00
|
|
|
sta tileType,x
|
2020-10-27 02:32:46 +00:00
|
|
|
cpx #SPIDER_STARTING_TOP_ROW_OFFSET
|
2020-10-26 03:11:11 +00:00
|
|
|
blt updateSpider_tilesUpCont
|
|
|
|
dec numInfieldMushrooms
|
2020-07-26 04:05:32 +00:00
|
|
|
|
|
|
|
updateSpider_tilesUpCont anop
|
|
|
|
ldx spiderTileOffsets+10
|
|
|
|
stx spiderTileOffsets+8
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderTileOffsets+10
|
2020-12-23 04:40:21 +00:00
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
jmp updateSpiderSound
|
2020-07-26 04:05:32 +00:00
|
|
|
|
|
|
|
updateSpider_upChangeDir anop
|
|
|
|
lda #GAME_NUM_TILES_TALL-1
|
2020-07-26 06:13:06 +00:00
|
|
|
sec
|
|
|
|
sbc spiderTargetRow
|
|
|
|
jsl randN
|
|
|
|
inc a
|
|
|
|
clc
|
|
|
|
adc spiderTargetRow
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderTargetRow
|
2020-07-26 06:13:06 +00:00
|
|
|
|
|
|
|
jsl rand0_to_65534
|
|
|
|
and #1
|
|
|
|
beq updateSpider_upChangeDirDiag
|
|
|
|
lda spiderState
|
|
|
|
cmp #SPIDER_STATE_RIGHT_DIAG_DOWN
|
|
|
|
bge updateSpider_upChangeDirDownRight
|
|
|
|
lda #SPIDER_STATE_LEFT_DOWN
|
|
|
|
sta spiderState
|
|
|
|
rtl
|
|
|
|
updateSpider_upChangeDirDownRight anop
|
|
|
|
lda #SPIDER_STATE_RIGHT_DOWN
|
|
|
|
sta spiderState
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_upChangeDirDiag anop
|
|
|
|
lda spiderState
|
|
|
|
cmp #SPIDER_STATE_RIGHT_DIAG_DOWN
|
|
|
|
bge updateSpider_upChangeDirDiagRight
|
|
|
|
lda #SPIDER_STATE_LEFT_DIAG_DOWN
|
|
|
|
sta spiderState
|
|
|
|
rtl
|
|
|
|
updateSpider_upChangeDirDiagRight anop
|
2020-07-26 04:05:32 +00:00
|
|
|
lda #SPIDER_STATE_RIGHT_DIAG_DOWN
|
|
|
|
sta spiderState
|
|
|
|
rtl
|
2020-07-25 03:27:33 +00:00
|
|
|
|
|
|
|
updateSpider_tilesDown anop
|
2020-07-28 03:30:11 +00:00
|
|
|
lda spiderMaxShiftInTile
|
2020-07-25 18:34:44 +00:00
|
|
|
sta spiderShiftInTile
|
|
|
|
|
2020-07-26 04:05:32 +00:00
|
|
|
lda spiderCurrentRow
|
|
|
|
inc a
|
|
|
|
sta spiderCurrentRow
|
|
|
|
cmp spiderTargetRow
|
|
|
|
beq updateSpider_downChangeDir
|
|
|
|
|
2020-07-25 03:27:33 +00:00
|
|
|
ldx spiderTileOffsets
|
|
|
|
stx spiderTileOffsets+2
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileBelow,x
|
2020-07-25 03:27:33 +00:00
|
|
|
sta spiderTileOffsets
|
|
|
|
|
|
|
|
ldx spiderTileOffsets+4
|
|
|
|
stx spiderTileOffsets+6
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileBelow,x
|
2020-07-25 03:27:33 +00:00
|
|
|
sta spiderTileOffsets+4
|
|
|
|
|
2020-07-25 18:54:35 +00:00
|
|
|
; If the middle tile is a game time and it isn't empty, then
|
|
|
|
; empty it. Spiders "consume" mushrooms as they pass over them.
|
2020-07-25 18:34:44 +00:00
|
|
|
cpx #RHS_FIRST_TILE_OFFSET
|
|
|
|
bge updateSpider_tilesDownCont
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileType,x
|
2020-07-25 18:34:44 +00:00
|
|
|
beq updateSpider_tilesDownCont
|
|
|
|
lda #TILE_EMPTY
|
2020-09-02 04:15:53 +00:00
|
|
|
sta tileType,x
|
2020-10-27 02:32:46 +00:00
|
|
|
cpx #SPIDER_STARTING_TOP_ROW_OFFSET
|
2020-10-26 03:11:11 +00:00
|
|
|
blt updateSpider_tilesDownCont
|
|
|
|
dec numInfieldMushrooms
|
2020-07-25 18:34:44 +00:00
|
|
|
|
|
|
|
updateSpider_tilesDownCont anop
|
2020-07-25 03:27:33 +00:00
|
|
|
ldx spiderTileOffsets+8
|
|
|
|
stx spiderTileOffsets+10
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileBelow,x
|
2020-07-25 03:27:33 +00:00
|
|
|
sta spiderTileOffsets+8
|
2020-12-23 04:40:21 +00:00
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
jmp updateSpiderSound
|
2020-07-25 03:27:33 +00:00
|
|
|
|
2020-07-26 04:05:32 +00:00
|
|
|
updateSpider_downChangeDir anop
|
2020-07-26 06:13:06 +00:00
|
|
|
lda spiderTargetRow
|
|
|
|
sec
|
2020-10-27 02:32:46 +00:00
|
|
|
sbc spiderTopRow
|
2020-07-26 06:13:06 +00:00
|
|
|
jsl randN
|
|
|
|
clc
|
2020-10-27 02:32:46 +00:00
|
|
|
adc spiderTopRow
|
2020-07-26 04:05:32 +00:00
|
|
|
sta spiderTargetRow
|
2020-07-26 06:13:06 +00:00
|
|
|
|
|
|
|
jsl rand0_to_65534
|
|
|
|
and #1
|
|
|
|
beq updateSpider_downChangeDirDiag
|
|
|
|
lda spiderState
|
|
|
|
cmp #SPIDER_STATE_RIGHT_DIAG_DOWN
|
|
|
|
bge updateSpider_downChangeDirUpRight
|
|
|
|
lda #SPIDER_STATE_LEFT_UP
|
|
|
|
sta spiderState
|
|
|
|
rtl
|
|
|
|
updateSpider_downChangeDirUpRight anop
|
|
|
|
lda #SPIDER_STATE_RIGHT_UP
|
|
|
|
sta spiderState
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_downChangeDirDiag anop
|
|
|
|
lda spiderState
|
|
|
|
cmp #SPIDER_STATE_RIGHT_DIAG_DOWN
|
|
|
|
bge updateSpider_downChangeDirDiagRight
|
|
|
|
lda #SPIDER_STATE_LEFT_DIAG_UP
|
|
|
|
sta spiderState
|
|
|
|
rtl
|
|
|
|
updateSpider_downChangeDirDiagRight anop
|
2020-07-26 04:05:32 +00:00
|
|
|
lda #SPIDER_STATE_RIGHT_DIAG_UP
|
|
|
|
sta spiderState
|
2020-07-25 03:27:33 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
updateSpider_offScreen anop
|
2020-12-18 05:50:01 +00:00
|
|
|
jsl stopSpiderSound
|
2020-07-25 03:27:33 +00:00
|
|
|
stz spiderState
|
|
|
|
rtl
|
2020-07-24 03:41:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
addSpider entry
|
|
|
|
lda spiderState
|
2020-10-22 04:00:16 +00:00
|
|
|
beq addSpider_checkSpeed
|
2020-07-26 06:13:06 +00:00
|
|
|
rtl
|
|
|
|
|
2020-10-22 04:00:16 +00:00
|
|
|
addSpider_checkSpeed anop
|
|
|
|
lda gameScore+2
|
|
|
|
bne addSpider_fast
|
|
|
|
lda gameScore
|
|
|
|
cmp #5000
|
2020-10-27 02:32:46 +00:00
|
|
|
bge addSpider_fast
|
|
|
|
lda #SPRITE_SPEED_SLOW
|
|
|
|
bra addSpider_setSpeed
|
2020-10-22 04:00:16 +00:00
|
|
|
addSpider_fast anop
|
|
|
|
lda #SPRITE_SPEED_FAST
|
2020-10-27 02:32:46 +00:00
|
|
|
addSpider_setSpeed anop
|
2020-10-22 04:00:16 +00:00
|
|
|
cmp spiderSpeed
|
2020-10-27 02:32:46 +00:00
|
|
|
beq addSpider_setHeight
|
2020-10-22 04:00:16 +00:00
|
|
|
jsl setSpiderSpeed
|
|
|
|
|
2020-10-27 02:32:46 +00:00
|
|
|
addSpider_setHeight anop
|
|
|
|
; The actual top row of the spider changes as the score goes up.
|
|
|
|
; The top row of the spider based on the score is:
|
|
|
|
; 0 to 119,000 - 10th row from bottom
|
|
|
|
; 120,000 to 139,999 - 9th row from bottom
|
|
|
|
; 140,000 to 159,999 - 8th row from bottom
|
|
|
|
; 160,000 to ... - 7th row from bottom
|
|
|
|
lda scoreNum20000
|
|
|
|
cmp #6
|
|
|
|
blt addSpider_height10
|
|
|
|
beq addSpider_height9
|
|
|
|
cmp #7
|
|
|
|
beq addSpider_height8
|
|
|
|
lda #SPIDER_STARTING_TOP_ROW+3
|
|
|
|
bra addSpider_doneHeight
|
|
|
|
addSpider_height10 anop
|
|
|
|
lda #SPIDER_STARTING_TOP_ROW
|
|
|
|
bra addSpider_doneHeight
|
|
|
|
addSpider_height9 anop
|
|
|
|
lda #SPIDER_STARTING_TOP_ROW+1
|
|
|
|
bra addSpider_doneHeight
|
|
|
|
addSpider_height8 anop
|
|
|
|
lda #SPIDER_STARTING_TOP_ROW+2
|
|
|
|
addSpider_doneHeight anop
|
|
|
|
sta spiderTopRow
|
|
|
|
|
2020-07-28 03:30:11 +00:00
|
|
|
lda spiderStartingShift
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderShiftInTile
|
|
|
|
|
|
|
|
lda #SPIDER_SPRITE_LAST_OFFSET
|
|
|
|
sta spiderSprite
|
|
|
|
|
|
|
|
lda #SPIDER_SPRITE_REFRESH_COUNT
|
|
|
|
sta spiderSpriteRefresh
|
|
|
|
|
2020-10-27 02:32:46 +00:00
|
|
|
lda #SPIDER_STARTING_TOP_ROW-1
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderCurrentRow
|
|
|
|
|
2020-10-27 02:32:46 +00:00
|
|
|
lda #GAME_NUM_TILES_TALL-1
|
|
|
|
sec
|
|
|
|
sbc spiderTopRow
|
2020-07-26 06:13:06 +00:00
|
|
|
jsl randN
|
2020-10-27 02:32:46 +00:00
|
|
|
; We intentionally set carry before adding here. I want to add (spiderTopRow + 1) to the
|
|
|
|
; random number we already got. That way, the target row is (spiderTopRow + 1) to
|
|
|
|
; (GAME_NUM_TILES_TALL - 1)
|
|
|
|
sec
|
|
|
|
adc spiderTopRow
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderTargetRow
|
|
|
|
|
|
|
|
jsl rand0_to_65534
|
|
|
|
and #1
|
2020-07-26 20:00:46 +00:00
|
|
|
beq addSpider_right
|
2020-07-26 06:13:06 +00:00
|
|
|
|
|
|
|
addSpider_left anop
|
|
|
|
lda #SPIDER_STATE_LEFT_DIAG_DOWN
|
|
|
|
sta spiderState
|
|
|
|
|
2020-07-28 03:30:11 +00:00
|
|
|
lda spiderLeftStartingScreenShift
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderScreenShift
|
|
|
|
|
|
|
|
ldx #SPIDER_RHS_TILE_OFFSET
|
|
|
|
stx spiderTileOffsets+8
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderTileOffsets+10
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileRight,x
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderTileOffsets+4
|
|
|
|
|
|
|
|
tax
|
2020-09-04 04:17:19 +00:00
|
|
|
lda tileScreenOffset,x
|
2020-07-26 06:13:06 +00:00
|
|
|
sec
|
|
|
|
sbc #SPIDER_RHS_STARTING_SCREEN_OFFSET
|
|
|
|
sta spiderScreenOffset
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderTileOffsets+6
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileRight,x
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderTileOffsets
|
|
|
|
|
|
|
|
tax
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-26 06:13:06 +00:00
|
|
|
sta spiderTileOffsets+2
|
2020-12-23 04:40:21 +00:00
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
jsl startSpiderSound
|
2020-07-26 06:13:06 +00:00
|
|
|
|
|
|
|
rtl
|
2020-07-24 03:41:12 +00:00
|
|
|
|
2020-07-26 06:13:06 +00:00
|
|
|
addSpider_right anop
|
2020-07-25 03:27:33 +00:00
|
|
|
lda #SPIDER_STATE_RIGHT_DIAG_DOWN
|
2020-07-24 03:41:12 +00:00
|
|
|
sta spiderState
|
|
|
|
|
2020-07-28 03:30:11 +00:00
|
|
|
lda spiderRightStartingScreenShift
|
|
|
|
sta spiderScreenShift
|
2020-07-24 18:42:03 +00:00
|
|
|
|
|
|
|
ldx #SPIDER_LHS_TILE_OFFSET
|
|
|
|
stx spiderTileOffsets
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-24 18:42:03 +00:00
|
|
|
sta spiderTileOffsets+2
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileLeft,x
|
2020-07-24 18:42:03 +00:00
|
|
|
sta spiderTileOffsets+4
|
|
|
|
|
|
|
|
tax
|
2020-09-04 04:17:19 +00:00
|
|
|
lda tileScreenOffset,x
|
2020-07-24 18:42:03 +00:00
|
|
|
sec
|
|
|
|
sbc #SPIDER_LHS_STARTING_SCREEN_OFFSET
|
|
|
|
sta spiderScreenOffset
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-24 18:42:03 +00:00
|
|
|
sta spiderTileOffsets+6
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileLeft,x
|
2020-07-24 18:42:03 +00:00
|
|
|
sta spiderTileOffsets+8
|
|
|
|
|
|
|
|
tax
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileAbove,x
|
2020-07-24 18:42:03 +00:00
|
|
|
sta spiderTileOffsets+10
|
2020-12-23 04:40:21 +00:00
|
|
|
|
|
|
|
ldx spiderTileOffsets+6
|
|
|
|
jsl startSpiderSound
|
|
|
|
|
2020-07-24 03:41:12 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
|
2020-07-28 03:30:11 +00:00
|
|
|
setSpiderSpeed entry
|
2020-10-22 04:00:16 +00:00
|
|
|
sta spiderSpeed
|
2020-07-28 03:30:11 +00:00
|
|
|
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
|
2020-11-18 03:53:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
; The accumulator has the tile where the collision occurred.
|
|
|
|
; The y register has the address where the collision occurred.
|
|
|
|
; This routine is expected to preserve the y register and the
|
|
|
|
; accummulator. It can change the x register.
|
|
|
|
;
|
|
|
|
; For now, the implementation is very rough and just looks to see if
|
|
|
|
; collision is in a tile overlapping with the spider. It would be
|
|
|
|
; better to look closely at the address and try to figure out if it
|
|
|
|
; really collided.
|
|
|
|
;
|
|
|
|
; The result here is returned in the C bit of the processor status
|
|
|
|
; register
|
|
|
|
isSpiderCollision entry
|
|
|
|
ldx spiderState
|
|
|
|
cpx #SPIDER_STATE_LEFT_DIAG_DOWN
|
|
|
|
bge isSpiderCollision_test
|
|
|
|
isSpiderCollision_returnFalse anop
|
|
|
|
clc
|
|
|
|
rtl
|
|
|
|
isSpiderCollision_test anop
|
|
|
|
cmp spiderTileOffsets
|
|
|
|
beq isSpiderCollision_returnTrue
|
|
|
|
cmp spiderTileOffsets+2
|
|
|
|
beq isSpiderCollision_returnTrue
|
|
|
|
cmp spiderTileOffsets+4
|
|
|
|
beq isSpiderCollision_returnTrue
|
|
|
|
cmp spiderTileOffsets+6
|
|
|
|
beq isSpiderCollision_returnTrue
|
|
|
|
cmp spiderTileOffsets+8
|
|
|
|
beq isSpiderCollision_returnTrue
|
|
|
|
cmp spiderTileOffsets+10
|
|
|
|
bne isSpiderCollision_returnFalse
|
|
|
|
isSpiderCollision_returnTrue anop
|
|
|
|
sec
|
|
|
|
rtl
|
|
|
|
|
2020-07-28 03:30:11 +00:00
|
|
|
|
2020-07-24 03:41:12 +00:00
|
|
|
shootSpider entry
|
2020-07-27 18:22:34 +00:00
|
|
|
lda spiderState
|
|
|
|
cmp #SPIDER_STATE_LEFT_DIAG_DOWN
|
|
|
|
blt shootSpider_done
|
2020-12-10 05:45:48 +00:00
|
|
|
|
2020-12-23 04:40:21 +00:00
|
|
|
ldx spiderTileOffsets+6
|
2020-12-16 17:00:56 +00:00
|
|
|
jsl playKillSound
|
2020-11-19 04:36:01 +00:00
|
|
|
jsl explodeSpider
|
2020-11-09 05:12:51 +00:00
|
|
|
cmp mouseAddress
|
|
|
|
blt shootSpider_playerBelow
|
|
|
|
sec
|
|
|
|
sbc mouseAddress
|
|
|
|
bra shootSpider_testDistance
|
|
|
|
shootSpider_playerBelow anop
|
|
|
|
lda mouseAddress
|
|
|
|
sec
|
|
|
|
sbc spiderScreenOffset
|
2020-10-14 03:24:15 +00:00
|
|
|
|
2020-11-09 05:12:51 +00:00
|
|
|
shootSpider_testDistance anop
|
|
|
|
cmp #SPIDER_DISTANCE_900
|
|
|
|
blt shootSpider_900
|
|
|
|
cmp #SPIDER_DISTANCE_600
|
|
|
|
blt shootSpider_600
|
2020-10-14 03:24:15 +00:00
|
|
|
|
|
|
|
lda #SPIDER_SCORE_300
|
|
|
|
sta spiderScoreType
|
|
|
|
jmp scoreAddThreeHundred
|
|
|
|
|
|
|
|
shootSpider_600 anop
|
|
|
|
lda #SPIDER_SCORE_600
|
|
|
|
sta spiderScoreType
|
|
|
|
jmp scoreAddSixHundred
|
|
|
|
|
|
|
|
shootSpider_900 anop
|
2020-07-27 18:25:22 +00:00
|
|
|
lda #SPIDER_SCORE_900
|
|
|
|
sta spiderScoreType
|
2020-10-13 04:09:37 +00:00
|
|
|
jmp scoreAddNineHundred
|
2020-07-27 18:22:34 +00:00
|
|
|
|
|
|
|
shootSpider_done anop
|
2020-07-24 03:41:12 +00:00
|
|
|
rtl
|
2020-11-19 04:36:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
explodeSpider entry
|
|
|
|
lda #SPIDER_SCORE_NONE
|
|
|
|
sta spiderScoreType
|
|
|
|
lda spiderState
|
|
|
|
cmp #SPIDER_STATE_LEFT_DIAG_DOWN
|
|
|
|
blt explodeSpider_done
|
|
|
|
|
|
|
|
lda #SPIDER_STATE_EXPLODING
|
|
|
|
sta spiderState
|
|
|
|
|
|
|
|
lda #EXPLOSION_LAST_OFFSET
|
|
|
|
sta spiderSprite
|
|
|
|
|
|
|
|
lda spiderScreenOffset
|
|
|
|
inc a
|
|
|
|
sta spiderScreenOffset
|
2020-12-18 05:50:01 +00:00
|
|
|
jsl stopSpiderSound
|
2020-11-19 04:36:01 +00:00
|
|
|
explodeSpider_done anop
|
|
|
|
rtl
|
|
|
|
|
2020-07-24 03:41:12 +00:00
|
|
|
|
|
|
|
spiderState dc i2'SPIDER_STATE_NONE'
|
2020-10-22 04:00:16 +00:00
|
|
|
spiderSpeed dc i2'SPRITE_SPEED_SLOW'
|
2020-07-24 03:41:12 +00:00
|
|
|
spiderSprite dc i2'0'
|
2020-07-25 03:50:01 +00:00
|
|
|
spiderSpriteRefresh dc i2'0'
|
2020-07-24 03:41:12 +00:00
|
|
|
spiderScreenOffset dc i2'0'
|
|
|
|
spiderScreenShift dc i2'0'
|
|
|
|
spiderShiftInTile dc i2'0'
|
2020-10-22 04:00:16 +00:00
|
|
|
spiderAddTime dc i2'0'
|
2020-07-24 03:41:12 +00:00
|
|
|
|
2020-10-27 02:32:46 +00:00
|
|
|
spiderTopRow dc i2'SPIDER_STARTING_TOP_ROW'
|
2020-07-25 18:54:35 +00:00
|
|
|
spiderCurrentRow dc i2'0'
|
|
|
|
spiderTargetRow dc i2'0'
|
|
|
|
|
2020-07-27 18:22:34 +00:00
|
|
|
spiderScoreType dc i2'0'
|
|
|
|
spiderScoreFrames dc i2'0'
|
|
|
|
|
2020-07-28 03:30:11 +00:00
|
|
|
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'
|
|
|
|
|
2020-07-25 03:27:33 +00:00
|
|
|
|
|
|
|
; 10 6 2
|
|
|
|
; 8 4 0
|
2020-07-24 03:41:12 +00:00
|
|
|
spiderTileOffsets dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
|
|
|
|
SPIDER_SPRITE_LAST_OFFSET gequ 7*4
|
|
|
|
spiderJumpTable dc i4'spider7'
|
|
|
|
dc i4'spider6'
|
|
|
|
dc i4'spider2'
|
|
|
|
dc i4'spider3'
|
|
|
|
dc i4'spider4'
|
|
|
|
dc i4'spider3'
|
|
|
|
dc i4'spider2'
|
|
|
|
dc i4'spider1'
|
|
|
|
|
|
|
|
|
|
|
|
spiderShiftJumpTable dc i4'spider7s'
|
|
|
|
dc i4'spider6s'
|
|
|
|
dc i4'spider2s'
|
|
|
|
dc i4'spider3s'
|
|
|
|
dc i4'spider4s'
|
|
|
|
dc i4'spider3s'
|
|
|
|
dc i4'spider2s'
|
|
|
|
dc i4'spider1s'
|
2020-07-26 04:05:32 +00:00
|
|
|
|
2020-07-26 06:13:06 +00:00
|
|
|
|
2020-10-22 04:00:16 +00:00
|
|
|
spiderUpdateJumpTable dc i2'updateSpider_maybeAdd'
|
2020-07-26 04:05:32 +00:00
|
|
|
dc i2'updateSpider_exploding'
|
2020-07-27 18:22:34 +00:00
|
|
|
dc i2'updateSpider_score'
|
2020-07-26 04:05:32 +00:00
|
|
|
dc i2'updateSpider_leftDiagDown'
|
|
|
|
dc i2'updateSpider_leftDiagUp'
|
|
|
|
dc i2'updateSpider_leftDown'
|
|
|
|
dc i2'updateSpider_leftUp'
|
|
|
|
dc i2'updateSpider_rightDiagDown'
|
|
|
|
dc i2'updateSpider_rightDiagUp'
|
|
|
|
dc i2'updateSpider_rightDown'
|
|
|
|
dc i2'updateSpider_rightUp'
|
2020-07-27 18:22:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
spiderScoreJumpTable dc i4'score300'
|
|
|
|
dc i4'score600'
|
|
|
|
dc i4'score900'
|
|
|
|
|
2020-07-24 03:41:12 +00:00
|
|
|
|
|
|
|
end
|