diff --git a/BuGS.xcodeproj/project.pbxproj b/BuGS.xcodeproj/project.pbxproj index 6c9e955..1de3759 100644 --- a/BuGS.xcodeproj/project.pbxproj +++ b/BuGS.xcodeproj/project.pbxproj @@ -82,6 +82,7 @@ 9D62AF402499CD3A00348F45 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 9D8FFC602491CA28005C9327 /* game.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = game.s; sourceTree = ""; }; 9D8FFC612491CAF0005C9327 /* game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = ""; }; + 9DB1505024C3801100558B87 /* gameFlea.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameFlea.s; sourceTree = ""; }; 9DC4D7BD24B7652100BACF4B /* ship.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ship.s; sourceTree = ""; }; 9DC4D7BE24B80C9600BACF4B /* shot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = shot.s; sourceTree = ""; }; 9DC4D7BF24BE9F7100BACF4B /* tiles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tiles.h; sourceTree = ""; }; @@ -128,6 +129,7 @@ 9DC4D7C024BE9F7100BACF4B /* tiles.c */, 9D8FFC602491CA28005C9327 /* game.s */, 9D8FFC612491CAF0005C9327 /* game.h */, + 9DB1505024C3801100558B87 /* gameFlea.s */, 9D62AF3B249871A300348F45 /* colour.s */, 9D3396F324AECACC003222B3 /* sprites */, 9D1716912491C49300C83148 /* main.rez */, diff --git a/BuGS/game.s b/BuGS/game.s index 074cb10..098e096 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -26,12 +26,20 @@ game start lda colourPalette jsl setColour - + +gameLoop anop jsl drawDirtyGameTiles - + jsl drawFlea jsl drawDirtyNonGameTiles - jsl waitForKey + jsl updateFlea + + jsl checkKeyboard + jsl waitForVbl + + lda shouldQuit + bne gameLoop + rtl @@ -624,6 +632,49 @@ nextWord anop rtl + +checkKeyboard entry +checkKey_loop2 anop + short i,m + lda $e0c000 + bpl quit + sta $e0c010 + long i,m + and #$007f + + cmp #'q' + beq checkKey_quit + cmp #'Q' + beq checkKey_quit + cmp #$001b + beq checkKey_quit + + cmp #'f' + beq checkKey_addFlea + cmp #'F' + beq checkKey_addFlea + + lda colourPalette + inc a + cmp #$000e + blt checkKey_skip + lda #$0000 +checkKey_skip anop + sta colourPalette + jsl setColour + rtl + +checkKey_addFlea anop + jsl addFlea + rtl + +checkKey_quit anop + stz shouldQuit + +checkKey_done anop + rtl + + waitForKey entry loop2 short i,m loop1 anop @@ -632,9 +683,9 @@ loop1 anop sta $e0c010 long i,m and #$007f - cmp #$0051 + cmp #'q' beq quit - cmp #$0071 + cmp #'Q' beq quit cmp #$001b beq quit @@ -663,6 +714,7 @@ vblLoop2 anop backupStack dc i2'0' colourPalette dc i2'0' +shouldQuit dc i2'1' tileJumpTable dc a4'solid0' dc a4'mushroom4' diff --git a/BuGS/gameFlea.s b/BuGS/gameFlea.s new file mode 100644 index 0000000..c655738 --- /dev/null +++ b/BuGS/gameFlea.s @@ -0,0 +1,51 @@ +; +; 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 + +fleaState_none equ 0 +fleaState_falling equ 1 +fleaState_exploding equ 2 + +drawFlea entry + lda fleaState + beq drawFlea_done + + ldy fleaScreenOffset + jsl flea1 + + ldx fleaTileOffsets + +drawFlea_done anop + rtl + + +updateFlea entry + lda fleaState + beq updateFlea_done + +updateFlea_done anop + rtl + + +addFlea entry + rtl + + +fleaState dc i2'fleaState_none' +fleaScreenOffset dc i2'0' +fleaTileOffsets dc i2'0' + dc i2'0' + dc i2'0' + dc i2'0' + + end