mirror of https://github.com/jeremysrand/BuGS.git
Improve the performance of the centipede segment draw function.
This commit is contained in:
parent
07f8df4b4f
commit
f5d1aa9ee6
|
@ -35,10 +35,8 @@ drawSegments entry
|
||||||
ldx #SEGMENT_MAX_OFFSET
|
ldx #SEGMENT_MAX_OFFSET
|
||||||
drawSegments_nextSegment anop
|
drawSegments_nextSegment anop
|
||||||
lda segmentStates,x
|
lda segmentStates,x
|
||||||
bne drawSegments_cont
|
beq drawSegments_skipSegment
|
||||||
jmp drawSegments_skipSegment
|
|
||||||
|
|
||||||
drawSegments_cont anop
|
|
||||||
lda segmentFacing,x
|
lda segmentFacing,x
|
||||||
clc
|
clc
|
||||||
adc segmentSpriteOffset
|
adc segmentSpriteOffset
|
||||||
|
@ -54,23 +52,16 @@ drawSegments_head anop
|
||||||
jsl segmentHeadJump
|
jsl segmentHeadJump
|
||||||
|
|
||||||
drawSegments_handleTiles anop
|
drawSegments_handleTiles anop
|
||||||
phx
|
_dirtyGameTileWithX segmentTileOffsetsUL
|
||||||
txa
|
_dirtyGameTileWithX segmentTileOffsetsUR
|
||||||
asl a
|
_dirtyGameTileWithX segmentTileOffsetsLL
|
||||||
asl a
|
_dirtyGameTileWithX segmentTileOffsetsLR
|
||||||
tay
|
|
||||||
|
|
||||||
_dirtyGameTileWithY segmentTileOffsets
|
|
||||||
_dirtyGameTileWithY segmentTileOffsets+2
|
|
||||||
_dirtyGameTileWithY segmentTileOffsets+4
|
|
||||||
_dirtyGameTileWithY segmentTileOffsets+6
|
|
||||||
plx
|
|
||||||
|
|
||||||
drawSegments_skipSegment anop
|
drawSegments_skipSegment anop
|
||||||
dex
|
dex
|
||||||
dex
|
dex
|
||||||
bmi drawSegments_done
|
bmi drawSegments_done
|
||||||
jmp drawSegments_nextSegment
|
bra drawSegments_nextSegment
|
||||||
|
|
||||||
drawSegments_done anop
|
drawSegments_done anop
|
||||||
rtl
|
rtl
|
||||||
|
@ -169,15 +160,10 @@ addBodySegment entry
|
||||||
stz segmentScreenShifts,x
|
stz segmentScreenShifts,x
|
||||||
|
|
||||||
txa
|
txa
|
||||||
asl a
|
sta segmentTileOffsetsUL,x
|
||||||
asl a
|
sta segmentTileOffsetsUR,x
|
||||||
tay
|
sta segmentTileOffsetsLL,x
|
||||||
|
sta segmentTileOffsetsLR,x
|
||||||
txa
|
|
||||||
sta segmentTileOffsets,y
|
|
||||||
sta segmentTileOffsets+2,y
|
|
||||||
sta segmentTileOffsets+4,y
|
|
||||||
sta segmentTileOffsets+6,y
|
|
||||||
|
|
||||||
inc numSegments
|
inc numSegments
|
||||||
|
|
||||||
|
@ -206,15 +192,10 @@ addHeadSegment entry
|
||||||
stz segmentScreenShifts,x
|
stz segmentScreenShifts,x
|
||||||
|
|
||||||
txa
|
txa
|
||||||
asl a
|
sta segmentTileOffsetsUL,x
|
||||||
asl a
|
sta segmentTileOffsetsUR,x
|
||||||
tay
|
sta segmentTileOffsetsLL,x
|
||||||
|
sta segmentTileOffsetsLR,x
|
||||||
txa
|
|
||||||
sta segmentTileOffsets,y
|
|
||||||
sta segmentTileOffsets+2,y
|
|
||||||
sta segmentTileOffsets+4,y
|
|
||||||
sta segmentTileOffsets+6,y
|
|
||||||
|
|
||||||
inc numSegments
|
inc numSegments
|
||||||
|
|
||||||
|
@ -233,7 +214,10 @@ segmentDirections dc 12i2'SEGMENT_DIR_RIGHT'
|
||||||
segmentFacing dc 12i2'SEGMENT_FACING_DOWN'
|
segmentFacing dc 12i2'SEGMENT_FACING_DOWN'
|
||||||
segmentScreenOffsets dc 12i2'0'
|
segmentScreenOffsets dc 12i2'0'
|
||||||
segmentScreenShifts dc 12i2'0'
|
segmentScreenShifts dc 12i2'0'
|
||||||
segmentTileOffsets dc 48i2'0'
|
segmentTileOffsetsUL dc 12i2'0'
|
||||||
|
segmentTileOffsetsUR dc 12i2'0'
|
||||||
|
segmentTileOffsetsLL dc 12i2'0'
|
||||||
|
segmentTileOffsetsLR dc 12i2'0'
|
||||||
|
|
||||||
SEGMENT_SPRITE_LAST_OFFSET gequ 7*4
|
SEGMENT_SPRITE_LAST_OFFSET gequ 7*4
|
||||||
segmentSpriteOffset dc i2'SEGMENT_SPRITE_LAST_OFFSET'
|
segmentSpriteOffset dc i2'SEGMENT_SPRITE_LAST_OFFSET'
|
||||||
|
|
|
@ -66,13 +66,13 @@ _drawDirtyGameRow_skip&tileOffset anop
|
||||||
|
|
||||||
mend
|
mend
|
||||||
|
|
||||||
; This macro uses the Y register as an index into the tile offsets. This is
|
; This macro uses the X register as an index into the tile offsets. This is
|
||||||
; needed for segments because each segment has their own dirty tile offsets.
|
; needed for segments because each segment has their own dirty tile offsets.
|
||||||
macro
|
macro
|
||||||
_dirtyGameTileWithY &tileOffset
|
_dirtyGameTileWithX &tileOffset
|
||||||
ldx &tileOffset,y
|
ldy &tileOffset,x
|
||||||
lda #TILE_STATE_DIRTY
|
lda #TILE_STATE_DIRTY
|
||||||
sta tileDirty,x
|
sta tileDirty,y
|
||||||
mend
|
mend
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +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
|
g_limit_speed = 3
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue