mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-07-04 20:29:54 +00:00
Add code to poison a centipede.
This commit is contained in:
parent
03466f8847
commit
a9d3b12725
@ -324,6 +324,10 @@ updateSegmentLeftFast_nextOffset2 anop
|
|||||||
jmp updateSegmentLeftFast_done
|
jmp updateSegmentLeftFast_done
|
||||||
|
|
||||||
updateSegmentLeftFast_checkDir anop
|
updateSegmentLeftFast_checkDir anop
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda segmentStates,x
|
||||||
|
cmp #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
beq updateSegmentLeftFast_changeDir
|
||||||
lda segmentTileOffsetsUL,y
|
lda segmentTileOffsetsUL,y
|
||||||
tax
|
tax
|
||||||
lda tileLeft,x
|
lda tileLeft,x
|
||||||
@ -331,8 +335,14 @@ updateSegmentLeftFast_checkDir anop
|
|||||||
bge updateSegmentLeftFast_changeDir
|
bge updateSegmentLeftFast_changeDir
|
||||||
tax
|
tax
|
||||||
lda tileType,x
|
lda tileType,x
|
||||||
beq updateSegmentLeftFast_done
|
bne updateSegmentLeftFast_checkPoison
|
||||||
; TODO - Test the tile type to see if it is a poisoned mushroom.
|
jmp updateSegmentLeftFast_done
|
||||||
|
updateSegmentLeftFast_checkPoison anop
|
||||||
|
cmp #TILE_POISON_MUSHROOM1
|
||||||
|
blt updateSegmentLeftFast_changeDir
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
|
|
||||||
updateSegmentLeftFast_changeDir anop
|
updateSegmentLeftFast_changeDir anop
|
||||||
lda #SEGMENT_FACING_DOWN_LEFT
|
lda #SEGMENT_FACING_DOWN_LEFT
|
||||||
@ -370,6 +380,10 @@ updateSegmentLeftFast_dirDown anop
|
|||||||
lda segmentTileOffsetsUR,y
|
lda segmentTileOffsetsUR,y
|
||||||
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
||||||
blt updateSegmentLeftFast_doDown
|
blt updateSegmentLeftFast_doDown
|
||||||
|
; If the head segment was poisoned, it is no longer poisoned once the head is going up again.
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
lda #SEGMENT_DIR_UP
|
lda #SEGMENT_DIR_UP
|
||||||
sta segmentVerticalDir,y
|
sta segmentVerticalDir,y
|
||||||
bra updateSegmentLeftFast_doUp
|
bra updateSegmentLeftFast_doUp
|
||||||
@ -427,6 +441,10 @@ updateSegmentLeftSlow_nextOffset2 anop
|
|||||||
jmp updateSegmentLeftSlow_done
|
jmp updateSegmentLeftSlow_done
|
||||||
|
|
||||||
updateSegmentLeftSlow_checkDir anop
|
updateSegmentLeftSlow_checkDir anop
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda segmentStates,x
|
||||||
|
cmp #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
beq updateSegmentLeftSlow_changeDir
|
||||||
lda segmentTileOffsetsUL,y
|
lda segmentTileOffsetsUL,y
|
||||||
tax
|
tax
|
||||||
lda tileLeft,x
|
lda tileLeft,x
|
||||||
@ -434,8 +452,14 @@ updateSegmentLeftSlow_checkDir anop
|
|||||||
bge updateSegmentLeftSlow_changeDir
|
bge updateSegmentLeftSlow_changeDir
|
||||||
tax
|
tax
|
||||||
lda tileType,x
|
lda tileType,x
|
||||||
beq updateSegmentLeftSlow_done
|
bne updateSegmentLeftSlow_checkPoison
|
||||||
; TODO - Test the tile type to see if it is a poisoned mushroom.
|
jmp updateSegmentLeftSlow_done
|
||||||
|
updateSegmentLeftSlow_checkPoison anop
|
||||||
|
cmp #TILE_POISON_MUSHROOM1
|
||||||
|
blt updateSegmentLeftSlow_changeDir
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
|
|
||||||
updateSegmentLeftSlow_changeDir anop
|
updateSegmentLeftSlow_changeDir anop
|
||||||
lda #SEGMENT_FACING_DOWN_LEFT
|
lda #SEGMENT_FACING_DOWN_LEFT
|
||||||
@ -473,6 +497,10 @@ updateSegmentLeftSlow_dirDown anop
|
|||||||
lda segmentTileOffsetsUR,y
|
lda segmentTileOffsetsUR,y
|
||||||
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
||||||
blt updateSegmentLeftSlow_doDown
|
blt updateSegmentLeftSlow_doDown
|
||||||
|
; If the head segment was poisoned, it is no longer poisoned once the head is going up again.
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
lda #SEGMENT_DIR_UP
|
lda #SEGMENT_DIR_UP
|
||||||
sta segmentVerticalDir,y
|
sta segmentVerticalDir,y
|
||||||
bra updateSegmentLeftSlow_doUp
|
bra updateSegmentLeftSlow_doUp
|
||||||
@ -807,6 +835,10 @@ updateSegmentRightFast_nextOffset2 anop
|
|||||||
jmp updateSegmentRightFast_done
|
jmp updateSegmentRightFast_done
|
||||||
|
|
||||||
updateSegmentRightFast_checkDir anop
|
updateSegmentRightFast_checkDir anop
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda segmentStates,x
|
||||||
|
cmp #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
beq updateSegmentRightFast_changeDir
|
||||||
lda segmentTileOffsetsUR,y
|
lda segmentTileOffsetsUR,y
|
||||||
tax
|
tax
|
||||||
lda tileRight,x
|
lda tileRight,x
|
||||||
@ -814,8 +846,14 @@ updateSegmentRightFast_checkDir anop
|
|||||||
bge updateSegmentRightFast_changeDir
|
bge updateSegmentRightFast_changeDir
|
||||||
tax
|
tax
|
||||||
lda tileType,x
|
lda tileType,x
|
||||||
beq updateSegmentRightFast_done
|
bne updateSegmentRightFast_checkPoison
|
||||||
; TODO - Test the tile type to see if it is a poisoned mushroom.
|
jmp updateSegmentRightFast_done
|
||||||
|
updateSegmentRightFast_checkPoison anop
|
||||||
|
cmp #TILE_POISON_MUSHROOM1
|
||||||
|
blt updateSegmentRightFast_changeDir
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
|
|
||||||
updateSegmentRightFast_changeDir anop
|
updateSegmentRightFast_changeDir anop
|
||||||
lda #SEGMENT_FACING_DOWN_RIGHT
|
lda #SEGMENT_FACING_DOWN_RIGHT
|
||||||
@ -853,6 +891,10 @@ updateSegmentRightFast_dirDown anop
|
|||||||
lda segmentTileOffsetsUR,y
|
lda segmentTileOffsetsUR,y
|
||||||
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
||||||
blt updateSegmentRightFast_doDown
|
blt updateSegmentRightFast_doDown
|
||||||
|
; If the head segment was poisoned, it is no longer poisoned once the head is going up again.
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
lda #SEGMENT_DIR_UP
|
lda #SEGMENT_DIR_UP
|
||||||
sta segmentVerticalDir,y
|
sta segmentVerticalDir,y
|
||||||
bra updateSegmentRightFast_doUp
|
bra updateSegmentRightFast_doUp
|
||||||
@ -910,6 +952,10 @@ updateSegmentRightSlow_nextOffset2 anop
|
|||||||
jmp updateSegmentRightSlow_done
|
jmp updateSegmentRightSlow_done
|
||||||
|
|
||||||
updateSegmentRightSlow_checkDir anop
|
updateSegmentRightSlow_checkDir anop
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda segmentStates,x
|
||||||
|
cmp #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
beq updateSegmentRightSlow_changeDir
|
||||||
lda segmentTileOffsetsUR,y
|
lda segmentTileOffsetsUR,y
|
||||||
tax
|
tax
|
||||||
lda tileRight,x
|
lda tileRight,x
|
||||||
@ -917,8 +963,14 @@ updateSegmentRightSlow_checkDir anop
|
|||||||
bge updateSegmentRightSlow_changeDir
|
bge updateSegmentRightSlow_changeDir
|
||||||
tax
|
tax
|
||||||
lda tileType,x
|
lda tileType,x
|
||||||
beq updateSegmentRightSlow_done
|
bne updateSegmentRightSlow_checkPoison
|
||||||
; TODO - Test the tile type to see if it is a poisoned mushroom.
|
jmp updateSegmentRightSlow_done
|
||||||
|
updateSegmentRightSlow_checkPoison anop
|
||||||
|
cmp #TILE_POISON_MUSHROOM1
|
||||||
|
blt updateSegmentRightSlow_changeDir
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_POISONED_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
|
|
||||||
updateSegmentRightSlow_changeDir anop
|
updateSegmentRightSlow_changeDir anop
|
||||||
lda #SEGMENT_FACING_DOWN_RIGHT
|
lda #SEGMENT_FACING_DOWN_RIGHT
|
||||||
@ -956,11 +1008,14 @@ updateSegmentRightSlow_dirDown anop
|
|||||||
lda segmentTileOffsetsUR,y
|
lda segmentTileOffsetsUR,y
|
||||||
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
cmp #(NUM_GAME_TILES-GAME_NUM_TILES_WIDE)*SIZEOF_TILE_INFO
|
||||||
blt updateSegmentRightSlow_doDown
|
blt updateSegmentRightSlow_doDown
|
||||||
|
; If the head segment was poisoned, it is no longer poisoned once the head is going up again.
|
||||||
|
ldx segmentBeingUpdated
|
||||||
|
lda #SEGMENT_STATE_HEAD
|
||||||
|
sta segmentStates,x
|
||||||
lda #SEGMENT_DIR_UP
|
lda #SEGMENT_DIR_UP
|
||||||
sta segmentVerticalDir,y
|
sta segmentVerticalDir,y
|
||||||
bra updateSegmentRightSlow_doUp
|
bra updateSegmentRightSlow_doUp
|
||||||
|
|
||||||
|
|
||||||
updateSegmentRightSlow_doDown anop
|
updateSegmentRightSlow_doDown anop
|
||||||
lda segmentScreenOffsets,y
|
lda segmentScreenOffsets,y
|
||||||
clc
|
clc
|
||||||
@ -988,17 +1043,81 @@ addBodySegment entry
|
|||||||
asl a
|
asl a
|
||||||
tax
|
tax
|
||||||
|
|
||||||
|
inc numSegments
|
||||||
|
|
||||||
lda #SEGMENT_STATE_BODY
|
lda #SEGMENT_STATE_BODY
|
||||||
sta segmentStates,x
|
sta segmentStates,x
|
||||||
|
|
||||||
lda #SEGMENT_SPEED_SLOW
|
lda segmentSpeed+2,x
|
||||||
sta segmentSpeed,x
|
sta segmentSpeed,x
|
||||||
|
|
||||||
lda numSegments
|
beq addBodySegment_fast
|
||||||
asl a
|
jmp addBodySegment_slow
|
||||||
asl a
|
|
||||||
asl a
|
addBodySegment_fast anop
|
||||||
asl a
|
lda segmentPosOffset+2,x
|
||||||
|
clc
|
||||||
|
adc #8
|
||||||
|
sta segmentPosOffset,x
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda segmentHorizontalDir-8,y
|
||||||
|
sta segmentHorizontalDir-6,y
|
||||||
|
sta segmentHorizontalDir-4,y
|
||||||
|
sta segmentHorizontalDir-2,y
|
||||||
|
sta segmentHorizontalDir,y
|
||||||
|
|
||||||
|
lda segmentVerticalDir-8,y
|
||||||
|
sta segmentVerticalDir-6,y
|
||||||
|
sta segmentVerticalDir-4,y
|
||||||
|
sta segmentVerticalDir-2,y
|
||||||
|
sta segmentVerticalDir,y
|
||||||
|
|
||||||
|
lda segmentFacing-8,y
|
||||||
|
sta segmentFacing-6,y
|
||||||
|
sta segmentFacing-4,y
|
||||||
|
sta segmentFacing-2,y
|
||||||
|
sta segmentFacing,y
|
||||||
|
|
||||||
|
lda tileScreenOffset
|
||||||
|
sec
|
||||||
|
sbc #SCREEN_BYTES_PER_ROW*8
|
||||||
|
sta segmentScreenOffsets-6,y
|
||||||
|
sta segmentScreenOffsets-4,y
|
||||||
|
sta segmentScreenOffsets-2,y
|
||||||
|
sta segmentScreenOffsets,y
|
||||||
|
|
||||||
|
lda segmentTileOffsetsUL-8,y
|
||||||
|
sta segmentTileOffsetsUL-6,y
|
||||||
|
sta segmentTileOffsetsUL-4,y
|
||||||
|
sta segmentTileOffsetsUL-2,y
|
||||||
|
sta segmentTileOffsetsUL,y
|
||||||
|
|
||||||
|
lda segmentTileOffsetsUR-8,y
|
||||||
|
sta segmentTileOffsetsUR-6,y
|
||||||
|
sta segmentTileOffsetsUR-4,y
|
||||||
|
sta segmentTileOffsetsUR-2,y
|
||||||
|
sta segmentTileOffsetsUR,y
|
||||||
|
sta segmentTileOffsetsUR,y
|
||||||
|
|
||||||
|
lda segmentTileOffsetsLL-8,y
|
||||||
|
sta segmentTileOffsetsLL-6,y
|
||||||
|
sta segmentTileOffsetsLL-4,y
|
||||||
|
sta segmentTileOffsetsLL-2,y
|
||||||
|
sta segmentTileOffsetsLL,y
|
||||||
|
|
||||||
|
lda segmentTileOffsetsLR-8,y
|
||||||
|
sta segmentTileOffsetsLR-6,y
|
||||||
|
sta segmentTileOffsetsLR-4,y
|
||||||
|
sta segmentTileOffsetsLR-2,y
|
||||||
|
sta segmentTileOffsetsLR,y
|
||||||
|
sta segmentTileOffsetsLR,y
|
||||||
|
|
||||||
|
rtl
|
||||||
|
addBodySegment_slow anop
|
||||||
|
lda segmentPosOffset+2,x
|
||||||
|
clc
|
||||||
|
adc #16
|
||||||
sta segmentPosOffset,x
|
sta segmentPosOffset,x
|
||||||
tay
|
tay
|
||||||
|
|
||||||
@ -1086,8 +1205,6 @@ addBodySegment entry
|
|||||||
sta segmentTileOffsetsLR,y
|
sta segmentTileOffsetsLR,y
|
||||||
sta segmentTileOffsetsLR,y
|
sta segmentTileOffsetsLR,y
|
||||||
|
|
||||||
inc numSegments
|
|
||||||
|
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user