diff --git a/BuGS/game.s b/BuGS/game.s index 0fdc05c..61d6419 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -693,6 +693,9 @@ checkKey_loop2 anop cmp #'-' beq checkKey_slow + cmp #'c' + beq checkKey_centipede + lda colourPalette inc a cmp #NUM_COLOUR_PALETTES @@ -722,6 +725,10 @@ checkKey_addSpider anop checkKey_shootSpider anop jmp shootSpider + +checkKey_quit anop + stz shouldQuit + rtl checkKey_fast anop lda #SPRITE_SPEED_FAST @@ -738,10 +745,21 @@ checkKey_slow anop jsl setSpiderSpeed lda #SPRITE_SPEED_SLOW jmp setScorpionSpeed - -checkKey_quit anop - stz shouldQuit - rtl + +checkKey_centipede anop + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jsl addHeadSegment + jmp addHeadSegment +; jmp addBodySegment waitForKey entry diff --git a/BuGS/gameSegments.s b/BuGS/gameSegments.s index 3f81cf9..04e1e1a 100644 --- a/BuGS/gameSegments.s +++ b/BuGS/gameSegments.s @@ -125,6 +125,11 @@ segmentBodyJump_jumpInst anop updateSegments entry + lda segmentSpriteShift + eor #1 + sta segmentSpriteShift + beq updateSegments_skipSpriteOffset + lda segmentSpriteOffset beq updateSegments_resetSpriteOffset sec @@ -136,17 +141,95 @@ updateSegments_resetSpriteOffset anop updateSegments_spriteOffsetCont anop sta segmentSpriteOffset +updateSegments_skipSpriteOffset anop + ; Write this code... rtl addBodySegment entry -; Write this code... + lda numSegments + asl a + tax + + lda #SEGMENT_STATE_BODY + sta segmentStates,x + + lda #SEGMENT_DIR_LEFT + sta segmentDirections,x + + lda #SEGMENT_FACING_LEFT + sta segmentFacing,x + + txa + asl a + asl a + asl a + tay + + lda tiles+TILE_SCREEN_OFFSET_OFFSET,y + sec + sbc #3 + sta segmentScreenOffsets,x + + stz segmentScreenShifts,x + + txa + asl a + asl a + tax + + tya + sta segmentTileOffsets,x + sta segmentTileOffsets+2,x + sta segmentTileOffsets+4,x + sta segmentTileOffsets+6,x + + inc numSegments + rtl addHeadSegment entry -; Write this code... + lda numSegments + asl a + tax + + lda #SEGMENT_STATE_HEAD + sta segmentStates,x + + lda #SEGMENT_DIR_LEFT + sta segmentDirections,x + + lda #SEGMENT_FACING_LEFT + sta segmentFacing,x + + txa + asl a + asl a + asl a + tay + + lda tiles+TILE_SCREEN_OFFSET_OFFSET,y + sec + sbc #3 + sta segmentScreenOffsets,x + + stz segmentScreenShifts,x + + txa + asl a + asl a + tax + + tya + sta segmentTileOffsets,x + sta segmentTileOffsets+2,x + sta segmentTileOffsets+4,x + sta segmentTileOffsets+6,x + + inc numSegments + rtl @@ -166,6 +249,7 @@ segmentTileOffsets dc 48i2'0' SEGMENT_SPRITE_LAST_OFFSET gequ 7*4 segmentSpriteOffset dc i2'SEGMENT_SPRITE_LAST_OFFSET' +segmentSpriteShift dc i2'0' headJumpTable anop diff --git a/BuGS/global.macros b/BuGS/global.macros index eafe596..ebe5ef4 100644 --- a/BuGS/global.macros +++ b/BuGS/global.macros @@ -22,7 +22,7 @@ sta dirtyGameTiles,x inx inx - sta numDirtyGameTiles + stx numDirtyGameTiles _dirtyGameTile_skip&SYSCNT anop mend diff --git a/BuGS/make/config.txt b/BuGS/make/config.txt index 6e02df5..4cf9182 100644 --- a/BuGS/make/config.txt +++ b/BuGS/make/config.txt @@ -8,7 +8,7 @@ s6d2 = s7d1 = /Users/jrand/Library/Developer/Xcode/DerivedData/BuGS-bffpexoblaghkzcbtjtzxeulnuto/Build/Products/Debug/BuGS.2mg -g_limit_speed = 0 +g_limit_speed = 3 bram1[00] = 00 00 00 01 00 00 0d 06 02 01 01 00 01 00 00 00