Reverse the order in which segments are added in memory and add some data for tracking the tiles occupied by segments. This will allow for segment collision detection next.

This commit is contained in:
Jeremy Rand 2020-09-23 23:04:05 -04:00
parent 69efb23800
commit a9f62257f9
2 changed files with 60 additions and 22 deletions

View File

@ -168,6 +168,48 @@ segmentBodyJump_jumpInst anop
nop nop
updateSegments entry updateSegments entry
; Clear the segment mask to start.
stz segmentTileMask+0
stz segmentTileMask+2
stz segmentTileMask+4
stz segmentTileMask+6
stz segmentTileMask+8
stz segmentTileMask+10
stz segmentTileMask+12
stz segmentTileMask+14
stz segmentTileMask+16
stz segmentTileMask+18
stz segmentTileMask+20
stz segmentTileMask+22
stz segmentTileMask+24
stz segmentTileMask+26
stz segmentTileMask+28
stz segmentTileMask+30
stz segmentTileMask+32
stz segmentTileMask+34
stz segmentTileMask+36
stz segmentTileMask+38
stz segmentTileMask+40
stz segmentTileMask+42
stz segmentTileMask+44
stz segmentTileMask+46
stz segmentTileMask+48
stz segmentTileMask+50
stz segmentTileMask+52
stz segmentTileMask+54
stz segmentTileMask+56
stz segmentTileMask+58
stz segmentTileMask+60
stz segmentTileMask+62
stz segmentTileMask+64
stz segmentTileMask+66
stz segmentTileMask+78
stz segmentTileMask+70
stz segmentTileMask+72
stz segmentTileMask+74
stz segmentTileMask+76
stz segmentTileMask+78
lda segmentPixelOffset lda segmentPixelOffset
inc a inc a
and #TILE_PIXEL_WIDTH-1 and #TILE_PIXEL_WIDTH-1
@ -238,6 +280,8 @@ updateSegments_headWrapPos anop
sta segmentTileOffsetsLL+SEGMENT_MAX_POSITION_OFFSET sta segmentTileOffsetsLL+SEGMENT_MAX_POSITION_OFFSET
lda segmentTileOffsetsLR lda segmentTileOffsetsLR
sta segmentTileOffsetsLR+SEGMENT_MAX_POSITION_OFFSET sta segmentTileOffsetsLR+SEGMENT_MAX_POSITION_OFFSET
lda segmentCurrentTile
sta segmentCurrentTile+SEGMENT_MAX_POSITION_OFFSET
; Important - Do facing last because we use that to index into the jump ; Important - Do facing last because we use that to index into the jump
; table for update. ; table for update.
@ -261,6 +305,8 @@ updateSegments_headNoWrap anop
sta segmentTileOffsetsLL,y sta segmentTileOffsetsLL,y
lda segmentTileOffsetsLR+2,y lda segmentTileOffsetsLR+2,y
sta segmentTileOffsetsLR,y sta segmentTileOffsetsLR,y
lda segmentCurrentTile+2,y
sta segmentCurrentTile,y
; Important - Do facing last because we use that to index into the jump ; Important - Do facing last because we use that to index into the jump
; table for update. ; table for update.
@ -1066,9 +1112,7 @@ updateSegmentRightSlow_doDown anop
addBodySegment entry addBodySegment entry
lda #SEGMENT_MAX_NUM-1 lda numSegments
sec
sbc numSegments
asl a asl a
tax tax
@ -1077,14 +1121,14 @@ addBodySegment entry
lda #SEGMENT_STATE_BODY lda #SEGMENT_STATE_BODY
sta segmentStates,x sta segmentStates,x
lda segmentSpeed+2,x lda segmentSpeed-2,x
sta segmentSpeed,x sta segmentSpeed,x
beq addBodySegment_fast beq addBodySegment_fast
jmp addBodySegment_slow jmp addBodySegment_slow
addBodySegment_fast anop addBodySegment_fast anop
lda segmentPosOffset+2,x lda segmentPosOffset-2,x
clc clc
adc #8 adc #8
sta segmentPosOffset,x sta segmentPosOffset,x
@ -1144,7 +1188,7 @@ addBodySegment_fast anop
rtl rtl
addBodySegment_slow anop addBodySegment_slow anop
lda segmentPosOffset+2,x lda segmentPosOffset-2,x
clc clc
adc #16 adc #16
sta segmentPosOffset,x sta segmentPosOffset,x
@ -1238,9 +1282,7 @@ addBodySegment_slow anop
addSlowHeadSegment entry addSlowHeadSegment entry
lda #SEGMENT_MAX_NUM-1 lda numSegments
sec
sbc numSegments
asl a asl a
tax tax
@ -1250,8 +1292,7 @@ addSlowHeadSegment entry
lda #SEGMENT_SPEED_SLOW lda #SEGMENT_SPEED_SLOW
sta segmentSpeed,x sta segmentSpeed,x
lda numSegments txa
asl a
asl a asl a
asl a asl a
asl a asl a
@ -1267,9 +1308,7 @@ addSlowHeadSegment entry
lda #SEGMENT_FACING_DOWN_LEFT lda #SEGMENT_FACING_DOWN_LEFT
sta segmentFacing,y sta segmentFacing,y
txa ldx #16
asl a
tax
lda tileScreenOffset,x lda tileScreenOffset,x
sec sec
sbc #SCREEN_BYTES_PER_ROW*7+2 sbc #SCREEN_BYTES_PER_ROW*7+2
@ -1290,9 +1329,7 @@ addSlowHeadSegment entry
addFastHeadSegment entry addFastHeadSegment entry
lda #SEGMENT_MAX_NUM-1 lda numSegments
sec
sbc numSegments
asl a asl a
tax tax
@ -1302,8 +1339,7 @@ addFastHeadSegment entry
lda #SEGMENT_SPEED_FAST lda #SEGMENT_SPEED_FAST
sta segmentSpeed,x sta segmentSpeed,x
lda numSegments txa
asl a
asl a asl a
asl a asl a
asl a asl a
@ -1319,9 +1355,7 @@ addFastHeadSegment entry
lda #SEGMENT_FACING_DOWN_LEFT lda #SEGMENT_FACING_DOWN_LEFT
sta segmentFacing,y sta segmentFacing,y
txa ldx #32
asl a
tax
lda tileScreenOffset,x lda tileScreenOffset,x
sec sec
sbc #SCREEN_BYTES_PER_ROW*8+2 sbc #SCREEN_BYTES_PER_ROW*8+2
@ -1370,6 +1404,9 @@ segmentTileOffsetsUL dc 96i2'0'
segmentTileOffsetsUR dc 96i2'0' segmentTileOffsetsUR dc 96i2'0'
segmentTileOffsetsLL dc 96i2'0' segmentTileOffsetsLL dc 96i2'0'
segmentTileOffsetsLR dc 96i2'0' segmentTileOffsetsLR dc 96i2'0'
segmentCurrentTile dc 96i2'0'
segmentTileMask dc 40i2'0'
SEGMENT_SPRITE_LAST_OFFSET gequ 7*4 SEGMENT_SPRITE_LAST_OFFSET gequ 7*4
segmentSpriteOffset dc i2'0' segmentSpriteOffset 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