2020-07-21 03:04:27 +00:00
|
|
|
;
|
|
|
|
; gameScorpion.s
|
|
|
|
; BuGS
|
|
|
|
;
|
|
|
|
; Created by Jeremy Rand on 2020-07-20.
|
|
|
|
;Copyright © 2020 Jeremy Rand. All rights reserved.
|
|
|
|
;
|
|
|
|
|
|
|
|
case on
|
|
|
|
mcopy gameScorpion.macros
|
|
|
|
keep gameScorpion
|
|
|
|
|
|
|
|
gameScorpion start
|
2020-07-22 01:47:50 +00:00
|
|
|
using globalData
|
2020-07-21 03:04:27 +00:00
|
|
|
|
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
SCORPION_STATE_NONE equ 0
|
|
|
|
SCORPION_STATE_LEFT equ 1
|
|
|
|
SCORPION_STATE_RIGHT equ 2
|
|
|
|
SCORPION_STATE_EXPLODING equ 3
|
2020-07-21 03:04:27 +00:00
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
SCORPION_SLOW_UPDATES_PER_TILE equ TILE_PIXEL_WIDTH-1
|
|
|
|
SCORPION_FAST_UPDATES_PER_TILE equ TILE_PIXEL_WIDTH/2-1
|
2020-07-21 03:04:27 +00:00
|
|
|
|
|
|
|
drawScorpion entry
|
2020-07-22 01:47:50 +00:00
|
|
|
lda scorpionState
|
|
|
|
bne drawScorpion_cont
|
|
|
|
rtl
|
|
|
|
|
|
|
|
drawScorpion_cont anop
|
|
|
|
ldy scorpionScreenOffset
|
|
|
|
ldx scorpionSprite
|
|
|
|
jsl scorpionJump
|
|
|
|
|
|
|
|
ldx scorpionTileOffsets
|
2020-07-22 02:30:05 +00:00
|
|
|
lda tiles+TILE_DIRTY_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
bne drawScorpion_skipTile1
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #TILE_STATE_DIRTY
|
|
|
|
sta tiles+TILE_DIRTY_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
txa
|
|
|
|
cmp #RHS_FIRST_TILE_OFFSET
|
|
|
|
bge drawScorpion_nonGame1
|
|
|
|
|
|
|
|
ldy numDirtyGameTiles
|
|
|
|
sta dirtyGameTiles,y
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
sty numDirtyGameTiles
|
|
|
|
bra drawScorpion_skipTile1
|
|
|
|
|
|
|
|
drawScorpion_nonGame1 anop
|
|
|
|
ldy numDirtyNonGameTiles
|
|
|
|
sta dirtyNonGameTiles,y
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
sty numDirtyNonGameTiles
|
|
|
|
|
|
|
|
drawScorpion_skipTile1 anop
|
|
|
|
|
|
|
|
ldx scorpionTileOffsets+2
|
2020-07-22 02:30:05 +00:00
|
|
|
lda tiles+TILE_DIRTY_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
bne drawScorpion_skipTile2
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #TILE_STATE_DIRTY
|
|
|
|
sta tiles+TILE_DIRTY_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
txa
|
|
|
|
cmp #RHS_FIRST_TILE_OFFSET
|
|
|
|
bge drawScorpion_nonGame2
|
|
|
|
|
|
|
|
ldy numDirtyGameTiles
|
|
|
|
sta dirtyGameTiles,y
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
sty numDirtyGameTiles
|
|
|
|
bra drawScorpion_skipTile2
|
|
|
|
|
|
|
|
drawScorpion_nonGame2 anop
|
|
|
|
ldy numDirtyNonGameTiles
|
|
|
|
sta dirtyNonGameTiles,y
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
sty numDirtyNonGameTiles
|
|
|
|
|
|
|
|
drawScorpion_skipTile2 anop
|
|
|
|
|
|
|
|
ldx scorpionTileOffsets+4
|
2020-07-22 02:30:05 +00:00
|
|
|
lda tiles+TILE_DIRTY_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
bne drawScorpion_done
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #TILE_STATE_DIRTY
|
|
|
|
sta tiles+TILE_DIRTY_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
txa
|
|
|
|
cmp #RHS_FIRST_TILE_OFFSET
|
|
|
|
bge drawScorpion_nonGame3
|
|
|
|
|
|
|
|
ldy numDirtyGameTiles
|
|
|
|
sta dirtyGameTiles,y
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
sty numDirtyGameTiles
|
|
|
|
rtl
|
|
|
|
|
|
|
|
drawScorpion_nonGame3 anop
|
|
|
|
ldy numDirtyNonGameTiles
|
|
|
|
sta dirtyNonGameTiles,y
|
|
|
|
iny
|
|
|
|
iny
|
|
|
|
sty numDirtyNonGameTiles
|
|
|
|
|
|
|
|
drawScorpion_done anop
|
2020-07-21 03:04:27 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
|
2020-07-22 01:47:50 +00:00
|
|
|
scorpionJump entry
|
2020-07-22 02:30:05 +00:00
|
|
|
cmp #SCORPION_STATE_LEFT
|
2020-07-22 01:47:50 +00:00
|
|
|
bne scorpionJump_next
|
|
|
|
|
|
|
|
lda scorpionLeftJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda scorpionLeftJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
|
|
|
bra jumpInst
|
|
|
|
|
|
|
|
scorpionJump_next anop
|
2020-07-22 02:30:05 +00:00
|
|
|
cmp #SCORPION_STATE_RIGHT
|
2020-07-22 01:47:50 +00:00
|
|
|
bne scorpionJump_explosion
|
|
|
|
|
|
|
|
lda scorpionRightJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda scorpionRightJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
|
|
|
bra jumpInst
|
|
|
|
|
|
|
|
scorpionJump_explosion anop
|
|
|
|
tya
|
|
|
|
clc
|
2020-07-22 02:30:05 +00:00
|
|
|
adc #TILE_BYTE_WIDTH
|
2020-07-22 01:47:50 +00:00
|
|
|
tay
|
|
|
|
|
|
|
|
lda explosionJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda explosionJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
|
|
|
|
|
|
|
jumpInst jmp >leftScorpion1
|
|
|
|
nop
|
|
|
|
|
|
|
|
|
2020-07-21 03:04:27 +00:00
|
|
|
updateScorpion entry
|
2020-07-22 01:47:50 +00:00
|
|
|
lda scorpionState
|
|
|
|
beq updateScorpion_done
|
|
|
|
|
|
|
|
lda scorpionSprite
|
|
|
|
beq updateScorpionLeft_resetSprite
|
2020-07-22 02:30:05 +00:00
|
|
|
sec
|
|
|
|
sbc #$4
|
2020-07-22 01:47:50 +00:00
|
|
|
sta scorpionSprite
|
|
|
|
|
|
|
|
bra updateScorpionLeft_nextAction
|
|
|
|
|
|
|
|
updateScorpionLeft_resetSprite anop
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #SCORPION_SPRITE_LAST_OFFSET
|
|
|
|
sta scorpionSprite
|
2020-07-22 01:47:50 +00:00
|
|
|
|
|
|
|
updateScorpionLeft_nextAction anop
|
|
|
|
lda scorpionShiftInTile
|
|
|
|
beq updateScorpionLeft_nextTile
|
|
|
|
dec a
|
|
|
|
sta scorpionShiftInTile
|
|
|
|
|
|
|
|
and #$1
|
|
|
|
beq updateScorpion_done
|
|
|
|
dec scorpionScreenOffset
|
|
|
|
bra updateScorpion_done
|
|
|
|
|
|
|
|
updateScorpionLeft_nextTile anop
|
|
|
|
dec scorpionScreenOffset
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #SCORPION_SLOW_UPDATES_PER_TILE
|
2020-07-22 01:47:50 +00:00
|
|
|
sta scorpionShiftInTile
|
|
|
|
|
|
|
|
ldx scorpionTileOffsets+2
|
|
|
|
cpx #LHS_FIRST_TILE_OFFSET
|
|
|
|
bge updateScorpion_offScreen
|
|
|
|
|
|
|
|
stx scorpionTileOffsets+4
|
|
|
|
ldx scorpionTileOffsets
|
|
|
|
stx scorpionTileOffsets+2
|
2020-07-22 02:30:05 +00:00
|
|
|
lda tiles+TILE_LEFT_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
sta scorpionTileOffsets
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateScorpion_offScreen anop
|
|
|
|
stz scorpionState
|
|
|
|
|
|
|
|
updateScorpion_done anop
|
2020-07-21 03:04:27 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
|
|
|
|
addScorpion entry
|
|
|
|
lda scorpionState
|
2020-07-22 01:47:50 +00:00
|
|
|
bne addScorpion_done
|
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #SCORPION_STATE_LEFT
|
2020-07-22 01:47:50 +00:00
|
|
|
sta scorpionState
|
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
ldx #(24+25)*16
|
2020-07-22 01:47:50 +00:00
|
|
|
stx scorpionTileOffsets
|
2020-07-22 02:30:05 +00:00
|
|
|
lda tiles+TILE_SCREEN_OFFSET_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
dec a
|
|
|
|
sta scorpionScreenOffset
|
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
lda tiles+TILE_RIGHT_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
sta scorpionTileOffsets+2
|
|
|
|
|
|
|
|
tax
|
2020-07-22 02:30:05 +00:00
|
|
|
lda tiles+TILE_RIGHT_OFFSET,x
|
2020-07-22 01:47:50 +00:00
|
|
|
sta scorpionTileOffsets+4
|
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #SCORPION_SLOW_UPDATES_PER_TILE
|
2020-07-22 01:47:50 +00:00
|
|
|
sta scorpionShiftInTile
|
2020-07-21 03:04:27 +00:00
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
lda #SCORPION_SPRITE_LAST_OFFSET
|
|
|
|
sta scorpionSprite
|
|
|
|
|
2020-07-21 03:04:27 +00:00
|
|
|
addScorpion_done anop
|
|
|
|
rtl
|
|
|
|
|
|
|
|
|
|
|
|
shootScorpion entry
|
|
|
|
rtl
|
|
|
|
|
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
scorpionState dc i2'SCORPION_STATE_NONE'
|
2020-07-21 03:04:27 +00:00
|
|
|
scorpionScreenOffset dc i2'0'
|
|
|
|
scorpionTileOffsets dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
dc i2'0'
|
2020-07-22 01:47:50 +00:00
|
|
|
scorpionShiftInTile dc i2'0'
|
|
|
|
scorpionSprite dc i2'0'
|
2020-07-21 03:04:27 +00:00
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
|
|
|
|
SCORPION_SPRITE_LAST_OFFSET gequ 15*4
|
|
|
|
scorpionLeftJumpTable dc i4'leftScorpion4'
|
2020-07-21 03:04:27 +00:00
|
|
|
dc i4'leftScorpion4s'
|
|
|
|
dc i4'leftScorpion4'
|
|
|
|
dc i4'leftScorpion4s'
|
2020-07-22 02:30:05 +00:00
|
|
|
dc i4'leftScorpion3'
|
|
|
|
dc i4'leftScorpion3s'
|
|
|
|
dc i4'leftScorpion3'
|
|
|
|
dc i4'leftScorpion3s'
|
|
|
|
dc i4'leftScorpion2'
|
|
|
|
dc i4'leftScorpion2s'
|
|
|
|
dc i4'leftScorpion2'
|
|
|
|
dc i4'leftScorpion2s'
|
|
|
|
dc i4'leftScorpion1'
|
|
|
|
dc i4'leftScorpion1s'
|
|
|
|
dc i4'leftScorpion1'
|
|
|
|
dc i4'leftScorpion1s'
|
|
|
|
|
2020-07-22 01:47:50 +00:00
|
|
|
|
2020-07-22 02:30:05 +00:00
|
|
|
scorpionRightJumpTable dc i4'rightScorpion4'
|
2020-07-22 01:47:50 +00:00
|
|
|
dc i4'rightScorpion4s'
|
|
|
|
dc i4'rightScorpion4'
|
|
|
|
dc i4'rightScorpion4s'
|
2020-07-22 02:30:05 +00:00
|
|
|
dc i4'rightScorpion3'
|
|
|
|
dc i4'rightScorpion3s'
|
|
|
|
dc i4'rightScorpion3'
|
|
|
|
dc i4'rightScorpion3s'
|
|
|
|
dc i4'rightScorpion2'
|
|
|
|
dc i4'rightScorpion2s'
|
|
|
|
dc i4'rightScorpion2'
|
|
|
|
dc i4'rightScorpion2s'
|
|
|
|
dc i4'rightScorpion1'
|
|
|
|
dc i4'rightScorpion1s'
|
|
|
|
dc i4'rightScorpion1'
|
|
|
|
dc i4'rightScorpion1s'
|
2020-07-21 03:04:27 +00:00
|
|
|
|
|
|
|
|
|
|
|
end
|