Add the ability to display head segments of the centipede. Body segments is not working yet.

This commit is contained in:
Jeremy Rand 2020-08-27 23:36:16 -04:00
parent 3a63b2ef1b
commit df56cdecf1
4 changed files with 110 additions and 8 deletions

View File

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

View File

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

View File

@ -22,7 +22,7 @@
sta dirtyGameTiles,x
inx
inx
sta numDirtyGameTiles
stx numDirtyGameTiles
_dirtyGameTile_skip&SYSCNT anop
mend

View File

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