diff --git a/BuGS.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist b/BuGS.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist index c7870af..0d0faee 100644 --- a/BuGS.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/BuGS.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Binary.xcscheme_^#shared#^_ orderHint - 1 + 3 BuGS.xcscheme_^#shared#^_ @@ -17,12 +17,12 @@ DiskImage.xcscheme_^#shared#^_ orderHint - 2 + 1 doNotBuild.xcscheme_^#shared#^_ orderHint - 3 + 2 diff --git a/BuGS/game.s b/BuGS/game.s index 098e096..a95d6df 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -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 diff --git a/BuGS/gameFlea.s b/BuGS/gameFlea.s index c655738..91b0469 100644 --- a/BuGS/gameFlea.s +++ b/BuGS/gameFlea.s @@ -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