From 03466f88478b06bcb4a46e03432d093b311591a6 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sun, 13 Sep 2020 15:18:18 -0400 Subject: [PATCH] Add code to allow a centipede and all its body segments to scroll in at the top of the screen at slow speed. Need to do the same for fast speed. --- BuGS/game.s | 1 - BuGS/gameSegments.s | 99 +++++++++++++++++++++++++++++++++++--------- BuGS/make/config.txt | 1 + 3 files changed, 80 insertions(+), 21 deletions(-) diff --git a/BuGS/game.s b/BuGS/game.s index b44d5b6..e2b0796 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -296,7 +296,6 @@ checkKey_slow anop checkKey_centipede anop jsl addHeadSegment - rtl jsl addBodySegment jsl addBodySegment jsl addBodySegment diff --git a/BuGS/gameSegments.s b/BuGS/gameSegments.s index 7a1039a..8454cd8 100644 --- a/BuGS/gameSegments.s +++ b/BuGS/gameSegments.s @@ -172,10 +172,7 @@ updateSegments entry inc a and #TILE_PIXEL_WIDTH-1 sta segmentPixelOffset - - lda segmentSpriteShift - eor #1 - sta segmentSpriteShift + and #1 beq updateSegments_skipSpriteOffset lda segmentSpriteOffset @@ -1005,29 +1002,91 @@ addBodySegment entry sta segmentPosOffset,x tay - lda #SEGMENT_DIR_RIGHT + lda segmentHorizontalDir-16,y + sta segmentHorizontalDir-14,y + sta segmentHorizontalDir-12,y + sta segmentHorizontalDir-10,y + sta segmentHorizontalDir-8,y + sta segmentHorizontalDir-6,y + sta segmentHorizontalDir-4,y + sta segmentHorizontalDir-2,y sta segmentHorizontalDir,y - lda #SEGMENT_DIR_DOWN + lda segmentVerticalDir-16,y + sta segmentVerticalDir-14,y + sta segmentVerticalDir-12,y + sta segmentVerticalDir-10,y + sta segmentVerticalDir-8,y + sta segmentVerticalDir-6,y + sta segmentVerticalDir-4,y + sta segmentVerticalDir-2,y sta segmentVerticalDir,y - - lda #SEGMENT_FACING_RIGHT + + lda segmentFacing-16,y + sta segmentFacing-14,y + sta segmentFacing-12,y + sta segmentFacing-10,y + sta segmentFacing-8,y + sta segmentFacing-6,y + sta segmentFacing-4,y + sta segmentFacing-2,y sta segmentFacing,y - lda tileScreenOffset,x + lda tileScreenOffset sec - sbc #3 + sbc #SCREEN_BYTES_PER_ROW*8 + sta segmentScreenOffsets-14,y + sta segmentScreenOffsets-12,y + sta segmentScreenOffsets-10,y + sta segmentScreenOffsets-8,y + sta segmentScreenOffsets-6,y + sta segmentScreenOffsets-4,y + sta segmentScreenOffsets-2,y sta segmentScreenOffsets,y - txa + lda segmentTileOffsetsUL-16,y + sta segmentTileOffsetsUL-14,y + sta segmentTileOffsetsUL-12,y + sta segmentTileOffsetsUL-10,y + sta segmentTileOffsetsUL-8,y + sta segmentTileOffsetsUL-6,y + sta segmentTileOffsetsUL-4,y + sta segmentTileOffsetsUL-2,y sta segmentTileOffsetsUL,y + + lda segmentTileOffsetsUR-16,y + sta segmentTileOffsetsUR-14,y + sta segmentTileOffsetsUR-12,y + sta segmentTileOffsetsUR-10,y + sta segmentTileOffsetsUR-8,y + sta segmentTileOffsetsUR-6,y + sta segmentTileOffsetsUR-4,y + sta segmentTileOffsetsUR-2,y sta segmentTileOffsetsUR,y + sta segmentTileOffsetsUR,y + + lda segmentTileOffsetsLL-16,y + sta segmentTileOffsetsLL-14,y + sta segmentTileOffsetsLL-12,y + sta segmentTileOffsetsLL-10,y + sta segmentTileOffsetsLL-8,y + sta segmentTileOffsetsLL-6,y + sta segmentTileOffsetsLL-4,y + sta segmentTileOffsetsLL-2,y sta segmentTileOffsetsLL,y + + lda segmentTileOffsetsLR-16,y + sta segmentTileOffsetsLR-14,y + sta segmentTileOffsetsLR-12,y + sta segmentTileOffsetsLR-10,y + sta segmentTileOffsetsLR-8,y + sta segmentTileOffsetsLR-6,y + sta segmentTileOffsetsLR-4,y + sta segmentTileOffsetsLR-2,y + sta segmentTileOffsetsLR,y sta segmentTileOffsetsLR,y inc numSegments - stz segmentSpriteShift - stz segmentPixelOffset rtl @@ -1042,7 +1101,7 @@ addHeadSegment entry lda #SEGMENT_STATE_HEAD sta segmentStates,x - lda #SEGMENT_SPEED_FAST + lda #SEGMENT_SPEED_SLOW sta segmentSpeed,x lda numSegments @@ -1059,23 +1118,24 @@ addHeadSegment entry lda #SEGMENT_DIR_DOWN sta segmentVerticalDir,y - lda #SEGMENT_FACING_RIGHT + lda #SEGMENT_FACING_DOWN_LEFT sta segmentFacing,y lda tileScreenOffset,x sec - sbc #3 + sbc #SCREEN_BYTES_PER_ROW*7+2 sta segmentScreenOffsets,y txa sta segmentTileOffsetsUL,y - sta segmentTileOffsetsUR,y sta segmentTileOffsetsLL,y + lda tileRight,x + sta segmentTileOffsetsUR,y sta segmentTileOffsetsLR,y inc numSegments - stz segmentSpriteShift - stz segmentPixelOffset + lda #5 + sta segmentPixelOffset rtl @@ -1112,7 +1172,6 @@ segmentTileOffsetsLR dc 96i2'0' SEGMENT_SPRITE_LAST_OFFSET gequ 7*4 segmentSpriteOffset dc i2'0' -segmentSpriteShift dc i2'0' segmentPixelOffset dc i2'0' segmentBeingUpdated dc i2'0' diff --git a/BuGS/make/config.txt b/BuGS/make/config.txt index b9b3a04..6e02df5 100644 --- a/BuGS/make/config.txt +++ b/BuGS/make/config.txt @@ -8,6 +8,7 @@ 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