From 1dfbe8156a1e019f6beb723ef971fad8c4e04b03 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Mon, 21 Sep 2020 22:57:06 -0400 Subject: [PATCH] Add support for having both fast and slow centipedes in play at the same time. --- .../xcschemes/xcschememanagement.plist | 4 +- BuGS/game.s | 4 +- BuGS/gameSegments.s | 89 ++++++++++++++++++- BuGS/make/config.txt | 1 - 4 files changed, 92 insertions(+), 6 deletions(-) diff --git a/BuGS.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist b/BuGS.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist index dc9e153..c7870af 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 - 3 + 1 BuGS.xcscheme_^#shared#^_ @@ -22,7 +22,7 @@ doNotBuild.xcscheme_^#shared#^_ orderHint - 1 + 3 diff --git a/BuGS/game.s b/BuGS/game.s index e2b0796..de34e0b 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -295,8 +295,8 @@ checkKey_slow anop jmp setScorpionSpeed checkKey_centipede anop - jsl addHeadSegment - jsl addBodySegment + jsl addFastHeadSegment + jsl addSlowHeadSegment jsl addBodySegment jsl addBodySegment jsl addBodySegment diff --git a/BuGS/gameSegments.s b/BuGS/gameSegments.s index 240de3b..c8b3613 100644 --- a/BuGS/gameSegments.s +++ b/BuGS/gameSegments.s @@ -526,6 +526,22 @@ updateSegmentLeftSlow_done anop updateSegmentDownLeftFast entry + lda segmentScreenOffsets,y + cmp #$2000-(7*SCREEN_BYTES_PER_ROW) + bge updateSegmentDownLeftFast_notOffscreen + lda segmentPixelOffset + cmp #7 + beq updateSegmentDownLeftFast_moveOnScreen + rts + +updateSegmentDownLeftFast_moveOnScreen anop + lda segmentScreenOffsets,y + clc + adc #2*SCREEN_BYTES_PER_ROW + sta segmentScreenOffsets,y + rts + +updateSegmentDownLeftFast_notOffscreen anop lda segmentVerticalDir,y beq updateSegmentDownLeftFast_down lda segmentScreenOffsets,y @@ -706,6 +722,22 @@ updateSegmentDownSlow_done anop updateSegmentDownRightFast entry + lda segmentScreenOffsets,y + cmp #$2000-(7*SCREEN_BYTES_PER_ROW) + bge updateSegmentDownRightFast_notOffscreen + lda segmentPixelOffset + cmp #7 + beq updateSegmentDownRightFast_moveOnScreen + rts + +updateSegmentDownRightFast_moveOnScreen anop + lda segmentScreenOffsets,y + clc + adc #2*SCREEN_BYTES_PER_ROW + sta segmentScreenOffsets,y + rts + +updateSegmentDownRightFast_notOffscreen anop lda segmentVerticalDir,y beq updateSegmentDownRightFast_down lda segmentScreenOffsets,y @@ -1208,7 +1240,7 @@ addBodySegment_slow anop rtl -addHeadSegment entry +addSlowHeadSegment entry lda #SEGMENT_MAX_NUM-1 sec sbc numSegments @@ -1238,6 +1270,9 @@ addHeadSegment entry lda #SEGMENT_FACING_DOWN_LEFT sta segmentFacing,y + txa + asl a + tax lda tileScreenOffset,x sec sbc #SCREEN_BYTES_PER_ROW*7+2 @@ -1255,6 +1290,58 @@ addHeadSegment entry sta segmentPixelOffset rtl + + +addFastHeadSegment entry + lda #SEGMENT_MAX_NUM-1 + sec + sbc numSegments + asl a + tax + + lda #SEGMENT_STATE_HEAD + sta segmentStates,x + + lda #SEGMENT_SPEED_FAST + sta segmentSpeed,x + + lda numSegments + asl a + asl a + asl a + asl a + sta segmentPosOffset,x + tay + + lda #SEGMENT_DIR_RIGHT + sta segmentHorizontalDir,y + + lda #SEGMENT_DIR_DOWN + sta segmentVerticalDir,y + + lda #SEGMENT_FACING_DOWN_LEFT + sta segmentFacing,y + + txa + asl a + tax + lda tileScreenOffset,x + sec + sbc #SCREEN_BYTES_PER_ROW*8+2 + sta segmentScreenOffsets,y + + txa + sta segmentTileOffsetsUL,y + sta segmentTileOffsetsLL,y + lda tileRight,x + sta segmentTileOffsetsUR,y + sta segmentTileOffsetsLR,y + + inc numSegments + lda #5 + sta segmentPixelOffset + + rtl shootSegment entry diff --git a/BuGS/make/config.txt b/BuGS/make/config.txt index 6e02df5..b9b3a04 100644 --- a/BuGS/make/config.txt +++ b/BuGS/make/config.txt @@ -8,7 +8,6 @@ s6d2 = s7d1 = /Users/jrand/Library/Developer/Xcode/DerivedData/BuGS-bffpexoblaghkzcbtjtzxeulnuto/Build/Products/Debug/BuGS.2mg -g_limit_speed = 0 bram1[00] = 00 00 00 01 00 00 0d 06 02 01 01 00 01 00 00 00