Add support for having both fast and slow centipedes in play at the same time.

This commit is contained in:
Jeremy Rand 2020-09-21 22:57:06 -04:00
parent c4902f486b
commit 1dfbe8156a
4 changed files with 92 additions and 6 deletions

View File

@ -7,7 +7,7 @@
<key>Binary.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
<integer>1</integer>
</dict>
<key>BuGS.xcscheme_^#shared#^_</key>
<dict>
@ -22,7 +22,7 @@
<key>doNotBuild.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>3</integer>
</dict>
</dict>
</dict>

View File

@ -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

View File

@ -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

View File

@ -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