Add the code to animate a flea down the screen on demand.

This commit is contained in:
Jeremy Rand 2020-07-18 23:41:21 -04:00
parent 0336c692c4
commit 36104869b8
3 changed files with 122 additions and 23 deletions

View File

@ -7,7 +7,7 @@
<key>Binary.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>3</integer>
</dict>
<key>BuGS.xcscheme_^#shared#^_</key>
<dict>
@ -17,12 +17,12 @@
<key>DiskImage.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
<integer>1</integer>
</dict>
<key>doNotBuild.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
<integer>2</integer>
</dict>
</dict>
</dict>

View File

@ -637,7 +637,7 @@ checkKeyboard entry
checkKey_loop2 anop
short i,m
lda $e0c000
bpl quit
bpl checkKey_done
sta $e0c010
long i,m
and #$007f
@ -676,28 +676,13 @@ checkKey_done anop
waitForKey entry
loop2 short i,m
loop1 anop
short i,m
waitForKey_loop anop
lda $e0c000
bpl loop1
bpl waitForKey_loop
sta $e0c010
long i,m
and #$007f
cmp #'q'
beq quit
cmp #'Q'
beq quit
cmp #$001b
beq quit
lda colourPalette
inc a
cmp #$000e
blt skip
lda #$0000
skip sta colourPalette
jsl setColour
bra loop2
quit rtl
rtl
waitForVbl entry

View File

@ -23,7 +23,56 @@ drawFlea entry
ldy fleaScreenOffset
jsl flea1
ldy numDirtyGameTiles
ldx fleaTileOffsets
lda tiles,x
bne drawFlea_skipTile1
lda #$1
sta tiles,x
txa
sta dirtyGameTiles,y
iny
iny
drawFlea_skipTile1 anop
ldx fleaTileOffsets+2
lda tiles,x
bne drawFlea_skipTile2
lda #$1
sta tiles,x
txa
sta dirtyGameTiles,y
iny
iny
drawFlea_skipTile2 anop
ldx fleaTileOffsets+4
lda tiles,x
bne drawFlea_skipTile3
lda #$1
sta tiles,x
txa
sta dirtyGameTiles,y
iny
iny
drawFlea_skipTile3 anop
ldx fleaTileOffsets+6
lda tiles,x
bne drawFlea_skipTile4
lda #$1
sta tiles,x
txa
sta dirtyGameTiles,y
iny
iny
drawFlea_skipTile4 anop
sty numDirtyGameTiles
drawFlea_done anop
rtl
@ -33,11 +82,75 @@ updateFlea entry
lda fleaState
beq updateFlea_done
lda fleaHeightInTile
beq updateFlea_nextTile
dec a
sta fleaHeightInTile
beq updateFlea_bottomOfTile
bra updateFlea_nextAction
updateFlea_bottomOfTile anop
lda fleaTileOffsets
sta fleaTileOffsets+4
lda fleaTileOffsets+2
sta fleaTileOffsets+6
bra updateFlea_nextAction
updateFlea_nextTile anop
lda #$7
sta fleaHeightInTile
ldx fleaTileOffsets
lda tiles+8,x
cmp #$ffff
beq updateFlea_bottom
sta fleaTileOffsets
ldx fleaTileOffsets+2
lda tiles+8,x
sta fleaTileOffsets+2
bra updateFlea_nextAction
updateFlea_bottom anop
stz fleaState
rtl
updateFlea_nextAction anop
lda fleaScreenOffset
clc
adc #$a0
sta fleaScreenOffset
updateFlea_done anop
rtl
addFlea entry
lda fleaState
bne addFlea_done
lda #fleaState_falling
sta fleaState
lda #$7
sta fleaHeightInTile
lda #$40
sta fleaTileOffsets
sta fleaTileOffsets+4
tax
lda tiles+10,x
sta fleaTileOffsets+2
sta fleaTileOffsets+6
lda tiles+2,x
sec
sbc #$463
sta fleaScreenOffset
addFlea_done anop
rtl
@ -47,5 +160,6 @@ fleaTileOffsets dc i2'0'
dc i2'0'
dc i2'0'
dc i2'0'
fleaHeightInTile dc i2'0'
end