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.

This commit is contained in:
Jeremy Rand 2020-09-13 15:18:18 -04:00
parent f99ff8e816
commit 03466f8847
3 changed files with 80 additions and 21 deletions

View File

@ -296,7 +296,6 @@ checkKey_slow anop
checkKey_centipede anop checkKey_centipede anop
jsl addHeadSegment jsl addHeadSegment
rtl
jsl addBodySegment jsl addBodySegment
jsl addBodySegment jsl addBodySegment
jsl addBodySegment jsl addBodySegment

View File

@ -172,10 +172,7 @@ updateSegments entry
inc a inc a
and #TILE_PIXEL_WIDTH-1 and #TILE_PIXEL_WIDTH-1
sta segmentPixelOffset sta segmentPixelOffset
and #1
lda segmentSpriteShift
eor #1
sta segmentSpriteShift
beq updateSegments_skipSpriteOffset beq updateSegments_skipSpriteOffset
lda segmentSpriteOffset lda segmentSpriteOffset
@ -1005,29 +1002,91 @@ addBodySegment entry
sta segmentPosOffset,x sta segmentPosOffset,x
tay 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 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 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 sta segmentFacing,y
lda tileScreenOffset,x lda tileScreenOffset
sec 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 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 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
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 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 sta segmentTileOffsetsLR,y
inc numSegments inc numSegments
stz segmentSpriteShift
stz segmentPixelOffset
rtl rtl
@ -1042,7 +1101,7 @@ addHeadSegment entry
lda #SEGMENT_STATE_HEAD lda #SEGMENT_STATE_HEAD
sta segmentStates,x sta segmentStates,x
lda #SEGMENT_SPEED_FAST lda #SEGMENT_SPEED_SLOW
sta segmentSpeed,x sta segmentSpeed,x
lda numSegments lda numSegments
@ -1059,23 +1118,24 @@ addHeadSegment entry
lda #SEGMENT_DIR_DOWN lda #SEGMENT_DIR_DOWN
sta segmentVerticalDir,y sta segmentVerticalDir,y
lda #SEGMENT_FACING_RIGHT lda #SEGMENT_FACING_DOWN_LEFT
sta segmentFacing,y sta segmentFacing,y
lda tileScreenOffset,x lda tileScreenOffset,x
sec sec
sbc #3 sbc #SCREEN_BYTES_PER_ROW*7+2
sta segmentScreenOffsets,y sta segmentScreenOffsets,y
txa txa
sta segmentTileOffsetsUL,y sta segmentTileOffsetsUL,y
sta segmentTileOffsetsUR,y
sta segmentTileOffsetsLL,y sta segmentTileOffsetsLL,y
lda tileRight,x
sta segmentTileOffsetsUR,y
sta segmentTileOffsetsLR,y sta segmentTileOffsetsLR,y
inc numSegments inc numSegments
stz segmentSpriteShift lda #5
stz segmentPixelOffset sta segmentPixelOffset
rtl rtl
@ -1112,7 +1172,6 @@ segmentTileOffsetsLR dc 96i2'0'
SEGMENT_SPRITE_LAST_OFFSET gequ 7*4 SEGMENT_SPRITE_LAST_OFFSET gequ 7*4
segmentSpriteOffset dc i2'0' segmentSpriteOffset dc i2'0'
segmentSpriteShift dc i2'0'
segmentPixelOffset dc i2'0' segmentPixelOffset dc i2'0'
segmentBeingUpdated dc i2'0' segmentBeingUpdated dc i2'0'

View File

@ -8,6 +8,7 @@ s6d2 =
s7d1 = /Users/jrand/Library/Developer/Xcode/DerivedData/BuGS-bffpexoblaghkzcbtjtzxeulnuto/Build/Products/Debug/BuGS.2mg 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 bram1[00] = 00 00 00 01 00 00 0d 06 02 01 01 00 01 00 00 00