2020-07-19 02:11:20 +00:00
|
|
|
;
|
|
|
|
; gameFlea.s
|
|
|
|
; BuGS
|
|
|
|
;
|
|
|
|
; Created by Jeremy Rand on 2020-07-18.
|
|
|
|
;Copyright © 2020 Jeremy Rand. All rights reserved.
|
|
|
|
;
|
|
|
|
|
|
|
|
case on
|
|
|
|
mcopy gameFlea.macros
|
|
|
|
keep gameFlea
|
|
|
|
|
|
|
|
gameFlea start
|
2020-07-22 01:47:50 +00:00
|
|
|
using globalData
|
|
|
|
|
|
|
|
FLEA_STATE_NONE equ 0
|
|
|
|
FLEA_STATE_FALLING equ 1
|
|
|
|
FLEA_STATE_EXPLODING equ 2
|
|
|
|
|
2020-07-28 02:27:18 +00:00
|
|
|
FLEA_SCREEN_SPEED_SLOW equ 2*SCREEN_BYTES_PER_ROW
|
|
|
|
FLEA_SCREEN_SPEED_FAST equ 4*SCREEN_BYTES_PER_ROW
|
2020-07-22 02:30:05 +00:00
|
|
|
FLEA_SLOW_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/2-1
|
|
|
|
FLEA_FAST_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/4-1
|
2020-07-19 02:11:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
drawFlea entry
|
|
|
|
lda fleaState
|
|
|
|
beq drawFlea_done
|
|
|
|
|
|
|
|
ldy fleaScreenOffset
|
2020-07-19 19:15:45 +00:00
|
|
|
ldx fleaSprite
|
|
|
|
jsl fleaJump
|
2020-07-19 02:11:20 +00:00
|
|
|
|
2020-07-19 03:41:21 +00:00
|
|
|
ldy numDirtyGameTiles
|
|
|
|
|
2020-08-28 02:36:04 +00:00
|
|
|
_dirtyGameTileWithY fleaTileOffsets
|
|
|
|
_dirtyGameTileWithY fleaTileOffsets+2
|
|
|
|
_dirtyGameTileWithY fleaTileOffsets+4
|
|
|
|
_dirtyGameTileWithY fleaTileOffsets+6
|
2020-07-19 03:41:21 +00:00
|
|
|
|
|
|
|
sty numDirtyGameTiles
|
2020-07-19 02:11:20 +00:00
|
|
|
|
|
|
|
drawFlea_done anop
|
|
|
|
rtl
|
|
|
|
|
|
|
|
|
2020-07-19 19:15:45 +00:00
|
|
|
fleaJump entry
|
2020-07-22 01:47:50 +00:00
|
|
|
cmp #FLEA_STATE_FALLING
|
2020-07-20 04:05:18 +00:00
|
|
|
bne fleaJump_explosion
|
|
|
|
|
2020-07-19 19:15:45 +00:00
|
|
|
lda fleaJumpTable,x
|
|
|
|
sta jumpInst+1
|
|
|
|
|
|
|
|
lda fleaJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
2020-07-20 04:05:18 +00:00
|
|
|
bra jumpInst
|
|
|
|
|
|
|
|
fleaJump_explosion anop
|
|
|
|
lda explosionJumpTable,x
|
|
|
|
sta jumpInst+1
|
2020-07-19 19:15:45 +00:00
|
|
|
|
2020-07-20 04:05:18 +00:00
|
|
|
lda explosionJumpTable+2,x
|
|
|
|
sta jumpInst+3
|
2020-07-19 19:15:45 +00:00
|
|
|
jumpInst jmp >flea1
|
|
|
|
nop
|
|
|
|
|
|
|
|
|
2020-07-19 02:11:20 +00:00
|
|
|
updateFlea entry
|
|
|
|
lda fleaState
|
2020-07-19 19:15:45 +00:00
|
|
|
bne updateFlea_cont
|
|
|
|
|
|
|
|
updateFlea_cont anop
|
2020-07-22 01:47:50 +00:00
|
|
|
cmp #FLEA_STATE_FALLING
|
2020-07-20 04:05:18 +00:00
|
|
|
beq updateFlea_cont2
|
|
|
|
|
|
|
|
; Handle explosion
|
|
|
|
lda fleaSprite
|
2020-07-22 01:47:50 +00:00
|
|
|
beq updateFlea_explosionDone
|
2020-07-22 02:30:05 +00:00
|
|
|
sec
|
2020-07-22 01:47:50 +00:00
|
|
|
sbc #$4
|
2020-07-20 04:05:18 +00:00
|
|
|
sta fleaSprite
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateFlea_explosionDone anop
|
|
|
|
stz fleaState
|
|
|
|
rtl
|
|
|
|
|
|
|
|
updateFlea_cont2 anop
|
2020-07-19 03:41:21 +00:00
|
|
|
lda fleaHeightInTile
|
|
|
|
beq updateFlea_nextTile
|
|
|
|
dec a
|
|
|
|
sta fleaHeightInTile
|
|
|
|
beq updateFlea_bottomOfTile
|
|
|
|
bra updateFlea_nextAction
|
|
|
|
|
|
|
|
updateFlea_bottomOfTile anop
|
2020-07-19 19:15:45 +00:00
|
|
|
lda fleaSpriteCounter
|
|
|
|
eor #$1
|
|
|
|
sta fleaSpriteCounter
|
|
|
|
bne updateFlea_nextAction
|
|
|
|
|
|
|
|
lda fleaSprite
|
|
|
|
beq updateFlea_resetSprite
|
2020-07-22 02:30:05 +00:00
|
|
|
sec
|
2020-07-22 01:47:50 +00:00
|
|
|
sbc #$4
|
2020-07-19 19:15:45 +00:00
|
|
|
sta fleaSprite
|
|
|
|
bra updateFlea_nextAction
|
|
|
|
|
|
|
|
updateFlea_resetSprite anop
|
2020-07-22 01:47:50 +00:00
|
|
|
lda #FLEA_SPRITE_LAST_OFFSET
|
|
|
|
sta fleaSprite
|
2020-07-19 03:41:21 +00:00
|
|
|
bra updateFlea_nextAction
|
|
|
|
|
|
|
|
updateFlea_nextTile anop
|
2020-07-20 04:05:18 +00:00
|
|
|
lda fleaUpdatePerTile
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaHeightInTile
|
|
|
|
|
|
|
|
ldx fleaTileOffsets
|
2020-07-20 04:05:18 +00:00
|
|
|
stx fleaTileOffsets+4
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileBelow,x
|
2020-07-22 01:47:50 +00:00
|
|
|
cmp #INVALID_TILE_NUM
|
2020-07-19 03:41:21 +00:00
|
|
|
beq updateFlea_bottom
|
|
|
|
sta fleaTileOffsets
|
|
|
|
|
|
|
|
ldx fleaTileOffsets+2
|
2020-07-20 04:05:18 +00:00
|
|
|
stx fleaTileOffsets+6
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileBelow,x
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaTileOffsets+2
|
|
|
|
|
2020-07-19 19:15:45 +00:00
|
|
|
ldx fleaTileOffsets+4
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileType,x
|
2020-07-19 19:15:45 +00:00
|
|
|
bne updateFlea_nextAction
|
|
|
|
|
2020-07-22 04:06:01 +00:00
|
|
|
jsl rand0_to_65534
|
2020-07-28 19:44:55 +00:00
|
|
|
and #$3
|
2020-07-19 19:15:45 +00:00
|
|
|
bne updateFlea_nextAction
|
2020-07-22 01:47:50 +00:00
|
|
|
lda #TILE_MUSHROOM4
|
2020-09-02 04:15:53 +00:00
|
|
|
sta tileType,x
|
2020-07-19 19:15:45 +00:00
|
|
|
|
2020-07-19 03:41:21 +00:00
|
|
|
bra updateFlea_nextAction
|
|
|
|
|
|
|
|
updateFlea_bottom anop
|
|
|
|
stz fleaState
|
2020-08-28 02:36:04 +00:00
|
|
|
; Uncomment the next line to continuously display fleas.
|
|
|
|
; jsl addFlea
|
2020-07-19 03:41:21 +00:00
|
|
|
rtl
|
|
|
|
|
|
|
|
updateFlea_nextAction anop
|
|
|
|
lda fleaScreenOffset
|
|
|
|
clc
|
2020-07-20 04:05:18 +00:00
|
|
|
adc fleaSpeed
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaScreenOffset
|
|
|
|
|
2020-07-19 02:11:20 +00:00
|
|
|
updateFlea_done anop
|
|
|
|
rtl
|
|
|
|
|
|
|
|
|
|
|
|
addFlea entry
|
2020-07-19 03:41:21 +00:00
|
|
|
lda fleaState
|
|
|
|
bne addFlea_done
|
|
|
|
|
2020-07-28 02:27:18 +00:00
|
|
|
lda fleaSpriteSpeed
|
|
|
|
jsl setFleaSpeed
|
|
|
|
|
2020-07-22 01:47:50 +00:00
|
|
|
lda #FLEA_STATE_FALLING
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaState
|
|
|
|
|
2020-07-28 02:27:18 +00:00
|
|
|
lda fleaUpdatePerTile
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaHeightInTile
|
|
|
|
|
2020-07-19 19:15:45 +00:00
|
|
|
stz fleaSpriteCounter
|
2020-07-22 01:47:50 +00:00
|
|
|
lda #FLEA_SPRITE_LAST_OFFSET
|
|
|
|
sta fleaSprite
|
2020-07-19 19:15:45 +00:00
|
|
|
|
|
|
|
jsl rand25
|
|
|
|
asl a
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaTileOffsets
|
|
|
|
sta fleaTileOffsets+4
|
|
|
|
|
|
|
|
tax
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileLeft,x
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaTileOffsets+2
|
|
|
|
sta fleaTileOffsets+6
|
|
|
|
|
2020-09-02 04:15:53 +00:00
|
|
|
lda tileOffset,x
|
2020-07-19 03:41:21 +00:00
|
|
|
sec
|
2020-07-22 01:47:50 +00:00
|
|
|
sbc #6*SCREEN_BYTES_PER_ROW+3
|
2020-07-19 03:41:21 +00:00
|
|
|
sta fleaScreenOffset
|
|
|
|
|
|
|
|
addFlea_done anop
|
2020-07-19 02:11:20 +00:00
|
|
|
rtl
|
|
|
|
|
2020-07-28 02:27:18 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
2020-07-20 04:05:18 +00:00
|
|
|
shootFlea entry
|
2020-07-28 02:27:18 +00:00
|
|
|
; TODO - Increment the score
|
2020-07-20 04:05:18 +00:00
|
|
|
lda fleaState
|
2020-07-22 01:47:50 +00:00
|
|
|
cmp #FLEA_STATE_FALLING
|
2020-07-20 04:05:18 +00:00
|
|
|
bne shootFlea_done
|
|
|
|
|
|
|
|
lda fleaSpeed
|
2020-07-28 02:27:18 +00:00
|
|
|
cmp #FLEA_SCREEN_SPEED_SLOW
|
2020-07-20 04:05:18 +00:00
|
|
|
beq shootFlea_faster
|
|
|
|
|
2020-07-22 01:47:50 +00:00
|
|
|
lda #FLEA_STATE_EXPLODING
|
2020-07-20 04:05:18 +00:00
|
|
|
sta fleaState
|
|
|
|
|
2020-07-22 01:47:50 +00:00
|
|
|
lda #EXPLOSION_LAST_OFFSET
|
|
|
|
sta fleaSprite
|
2020-07-20 04:05:18 +00:00
|
|
|
|
|
|
|
rtl
|
|
|
|
|
|
|
|
shootFlea_faster anop
|
2020-07-28 02:27:18 +00:00
|
|
|
jsl setFleaSpeed_fast
|
2020-07-20 04:05:18 +00:00
|
|
|
|
|
|
|
lda fleaHeightInTile
|
|
|
|
lsr a
|
|
|
|
sta fleaHeightInTile
|
|
|
|
bcc shootFlea_done
|
|
|
|
|
|
|
|
lda fleaScreenOffset
|
2020-07-22 02:30:05 +00:00
|
|
|
sec
|
2020-07-22 01:47:50 +00:00
|
|
|
sbc #SCREEN_BYTES_PER_ROW
|
2020-07-20 04:05:18 +00:00
|
|
|
sta fleaScreenOffset
|
|
|
|
|
|
|
|
shootFlea_done anop
|
|
|
|
rtl
|
|
|
|
|
2020-07-19 02:11:20 +00:00
|
|
|
|
2020-07-22 01:47:50 +00:00
|
|
|
fleaState dc i2'FLEA_STATE_NONE'
|
2020-07-19 02:11:20 +00:00
|
|
|
fleaScreenOffset dc i2'0'
|
|
|
|
fleaTileOffsets dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
dc i2'0'
|
|
|
|
dc i2'0'
|
2020-07-19 03:41:21 +00:00
|
|
|
fleaHeightInTile dc i2'0'
|
2020-07-19 19:15:45 +00:00
|
|
|
fleaSpriteCounter dc i2'0'
|
|
|
|
fleaSprite dc i2'0'
|
|
|
|
|
2020-07-22 01:47:50 +00:00
|
|
|
FLEA_SPRITE_LAST_OFFSET gequ 3*4
|
|
|
|
fleaJumpTable dc i4'flea4'
|
2020-07-19 19:15:45 +00:00
|
|
|
dc i4'flea3'
|
2020-07-22 01:47:50 +00:00
|
|
|
dc i4'flea2'
|
|
|
|
dc i4'flea1'
|
2020-07-20 04:05:18 +00:00
|
|
|
|
2020-07-28 02:27:18 +00:00
|
|
|
fleaSpriteSpeed dc i2'SPRITE_SPEED_SLOW'
|
|
|
|
fleaSpeed dc i2'FLEA_SCREEN_SPEED_SLOW'
|
|
|
|
fleaUpdatePerTile dc i2'FLEA_SLOW_UPDATES_PER_TILE'
|
2020-07-20 04:05:18 +00:00
|
|
|
|
2020-07-19 02:11:20 +00:00
|
|
|
end
|