mirror of https://github.com/jeremysrand/BuGS.git
Change the code for centipede speed to skip slow speed segments entirely once the score is more than 40000.
Add segments at the start of the next level in reverse order so the single head segments are added first. This ensures they do collision detection properly in the updateSegment code. Fix a bug where a set of 16 tiles were always marked as occupied by a centipede segment because we didn't clear it properly on each updateSegment call. This fixed a problem with segments changing direction for no apparent reason. Test for collisions on the two tiles the segment is spanning and change direction if either is occupied. This should eliminate single segments travelling on top of each other. Add scorpions randomly during a game once we get to level 4. They are added with a 1 in 512 chance every 60 seconds so you should see a scorpion about once every 10 seconds or so. When the score is above 20000, add scorpions at fast speed 3/4 of the time, slow speed the other 1/4 of the time. Lower scores, the scorpion is always slow.
This commit is contained in:
parent
9a34532d77
commit
1d4f783a3e
|
@ -234,7 +234,7 @@ checkKey_loop2 anop
|
|||
beq checkKey_shootFlea
|
||||
|
||||
cmp #'s'
|
||||
beq checkKey_addScorpion
|
||||
beq checkKey_shootScorpion
|
||||
cmp #'S'
|
||||
beq checkKey_shootScorpion
|
||||
|
||||
|
@ -265,9 +265,6 @@ checkKey_addFlea anop
|
|||
checkKey_shootFlea anop
|
||||
jmp shootFlea
|
||||
|
||||
checkKey_addScorpion anop
|
||||
jmp addScorpion
|
||||
|
||||
checkKey_shootScorpion anop
|
||||
jmp shootScorpion
|
||||
|
||||
|
|
|
@ -79,7 +79,15 @@ jumpInst jmp >leftScorpion1
|
|||
updateScorpion entry
|
||||
lda scorpionState
|
||||
bne updateScorpion_cont
|
||||
rtl
|
||||
lda gameLevel
|
||||
cmp #3
|
||||
blt updateScorpion_doNotAdd
|
||||
jsl rand0_to_65534
|
||||
and #$3ff
|
||||
bne updateScorpion_doNotAdd
|
||||
jmp addScorpion
|
||||
updateScorpion_doNotAdd anop
|
||||
rtl
|
||||
|
||||
updateScorpion_cont anop
|
||||
cmp #SCORPION_STATE_EXPLODING
|
||||
|
@ -173,8 +181,6 @@ updateScorpion_done anop
|
|||
|
||||
updateScorpion_offScreen anop
|
||||
stz scorpionState
|
||||
; Uncomment the following line to continuously add scorpions
|
||||
; jsl addScorpion
|
||||
rtl
|
||||
|
||||
updateScorpion_exploding anop
|
||||
|
@ -239,12 +245,32 @@ addScorpion entry
|
|||
rtl
|
||||
|
||||
addScorpion_doit anop
|
||||
lda gameScore+2
|
||||
bne addScorpion_randomSpeed
|
||||
lda gameScore
|
||||
cmp #20000
|
||||
bge addScorpion_randomSpeed
|
||||
addScorpion_slow anop
|
||||
lda #SPRITE_SPEED_SLOW
|
||||
bra addScorpion_setSpeed
|
||||
addScorpion_randomSpeed anop
|
||||
jsl rand0_to_65534
|
||||
; We test the higher bits because we have already decided to add this scorpion because the bottom
|
||||
; bits are all zero. Because we shift bits in our "random" code, the bottom bits are guaranteed
|
||||
; to still be zero. So, look at a pair of upper bits to test for 1/4 of the time slow, 3/4 of the
|
||||
; time fast. Similarly for the L/R decision later on.
|
||||
and #$0c00
|
||||
beq addScorpion_slow
|
||||
lda #SPRITE_SPEED_FAST
|
||||
addScorpion_setSpeed anop
|
||||
jsl setScorpionSpeed
|
||||
|
||||
jsl rand0_to_14
|
||||
asl a
|
||||
tay
|
||||
|
||||
jsl rand0_to_65534
|
||||
and #1
|
||||
and #$1000
|
||||
beq addScorpion_right
|
||||
|
||||
lda #SCORPION_STATE_LEFT
|
||||
|
|
|
@ -212,7 +212,7 @@ updateSegments entry
|
|||
stz segmentTileMask+62
|
||||
stz segmentTileMask+64
|
||||
stz segmentTileMask+66
|
||||
stz segmentTileMask+78
|
||||
stz segmentTileMask+68
|
||||
stz segmentTileMask+70
|
||||
stz segmentTileMask+72
|
||||
stz segmentTileMask+74
|
||||
|
@ -526,6 +526,15 @@ updateSegmentLeftFast_checkDir anop
|
|||
bge updateSegmentLeftFast_changeDir
|
||||
lda tileType,x
|
||||
bne updateSegmentLeftFast_checkPoison
|
||||
phy
|
||||
txy
|
||||
ldx tileBitOffset,y
|
||||
lda tileBitMask,y
|
||||
ply
|
||||
and segmentTileMask,x
|
||||
bne updateSegmentLeftFast_changeDir
|
||||
ldx segmentTileOffsetsUL,y
|
||||
|
||||
lda tileLeft,x
|
||||
cmp #LHS_FIRST_TILE_OFFSET
|
||||
bge updateSegmentLeftFast_changeDir
|
||||
|
@ -540,6 +549,7 @@ updateSegmentLeftFast_checkDir anop
|
|||
and segmentTileMask,x
|
||||
bne updateSegmentLeftFast_changeDir
|
||||
rts
|
||||
|
||||
updateSegmentLeftFast_checkPoison anop
|
||||
cmp #TILE_POISON_MUSHROOM1
|
||||
blt updateSegmentLeftFast_changeDir
|
||||
|
@ -673,13 +683,10 @@ updateSegmentLeftSlow_checkDir anop
|
|||
tax
|
||||
lda tileType,x
|
||||
bne updateSegmentLeftSlow_checkPoison
|
||||
phy
|
||||
txy
|
||||
ldx tileBitOffset,y
|
||||
lda tileBitMask,y
|
||||
ply
|
||||
and segmentTileMask,x
|
||||
bne updateSegmentLeftSlow_changeDir
|
||||
; Don't bother looking for collisions on slow moving head segments. The only
|
||||
; slow moving head segments are calculated first in update and never collide with
|
||||
; other segemnts. Fast head segments collide with other fast segments or other
|
||||
; slow segments.
|
||||
rts
|
||||
updateSegmentLeftSlow_checkPoison anop
|
||||
cmp #TILE_POISON_MUSHROOM1
|
||||
|
@ -1106,6 +1113,15 @@ updateSegmentRightFast_checkDir anop
|
|||
bge updateSegmentRightFast_changeDir
|
||||
lda tileType,x
|
||||
bne updateSegmentRightFast_checkPoison
|
||||
phy
|
||||
txy
|
||||
ldx tileBitOffset,y
|
||||
lda tileBitMask,y
|
||||
ply
|
||||
and segmentTileMask,x
|
||||
bne updateSegmentRightFast_changeDir
|
||||
ldx segmentTileOffsetsUR,y
|
||||
|
||||
lda tileRight,x
|
||||
cmp #RHS_FIRST_TILE_OFFSET
|
||||
bge updateSegmentRightFast_changeDir
|
||||
|
@ -1253,13 +1269,10 @@ updateSegmentRightSlow_checkDir anop
|
|||
tax
|
||||
lda tileType,x
|
||||
bne updateSegmentRightSlow_checkPoison
|
||||
phy
|
||||
txy
|
||||
ldx tileBitOffset,y
|
||||
lda tileBitMask,y
|
||||
ply
|
||||
and segmentTileMask,x
|
||||
bne updateSegmentRightSlow_changeDir
|
||||
; Don't bother looking for collisions on slow moving head segments. The only
|
||||
; slow moving head segments are calculated first in update and never collide with
|
||||
; other segemnts. Fast head segments collide with other fast segments or other
|
||||
; slow segments.
|
||||
rts
|
||||
updateSegmentRightSlow_checkPoison anop
|
||||
cmp #TILE_POISON_MUSHROOM1
|
||||
|
|
|
@ -505,6 +505,7 @@ updateSpider_tilesDownCont anop
|
|||
updateSpider_downChangeDir anop
|
||||
lda spiderTargetRow
|
||||
sec
|
||||
; TODO - The actual top row of the spider changes as the score goes up. Need to handle that.
|
||||
sbc #SPIDER_TOP_ROW
|
||||
jsl randN
|
||||
inc a
|
||||
|
@ -540,8 +541,6 @@ updateSpider_downChangeDirDiagRight anop
|
|||
|
||||
updateSpider_offScreen anop
|
||||
stz spiderState
|
||||
; Uncomment the following line to continuously add
|
||||
; jsl addSpider
|
||||
rtl
|
||||
|
||||
|
||||
|
|
|
@ -138,6 +138,7 @@ VERTICAL_COUNTER gequ $e0c02e
|
|||
|
||||
gameRunning dc i2'1'
|
||||
numSegments dc i2'0'
|
||||
gameLevel dc i2'0'
|
||||
gameScore dc i4'0'
|
||||
|
||||
backupStack dc i2'0'
|
||||
|
|
393
BuGS/level.s
393
BuGS/level.s
|
@ -17,8 +17,11 @@ NEXT_LEVEL_FRAME_COUNT equ 60
|
|||
|
||||
|
||||
levelInit entry
|
||||
stz gameLevel
|
||||
stz centipedeLevelNum
|
||||
stz colourLevelNum
|
||||
lda #SEGMENT_SPEED_FAST
|
||||
sta levelOne+2
|
||||
rtl
|
||||
|
||||
|
||||
|
@ -31,6 +34,24 @@ levelStart entry
|
|||
tax
|
||||
lda |$0,x
|
||||
sta centipedeNum
|
||||
; We add centipedes in reverse order which means we need to load X up with the address
|
||||
; of the last centipede. To do so, we:
|
||||
; - subtract one from the number of centipedes
|
||||
; - multiply by eight
|
||||
; - add the starting location of the level information
|
||||
; - add 2 to skip past the number of centipedes so we should now be
|
||||
; at the start of the last centipede
|
||||
; We do this because it is important that the single head segments are the ones which
|
||||
; need to "avoid" the other segments and that happens when they are added first.
|
||||
; See the update code in gameSegments.s to see why.
|
||||
dec a
|
||||
asl a
|
||||
asl a
|
||||
asl a
|
||||
ldx centipedeLevelNum
|
||||
clc
|
||||
adc levelTable,x
|
||||
tax
|
||||
inx
|
||||
inx
|
||||
levelStart_loop anop
|
||||
|
@ -38,8 +59,8 @@ levelStart_loop anop
|
|||
dec centipedeNum
|
||||
beq levelStart_done
|
||||
txa
|
||||
clc
|
||||
adc #8
|
||||
sec
|
||||
sbc #8
|
||||
tax
|
||||
bra levelStart_loop
|
||||
levelStart_done anop
|
||||
|
@ -72,17 +93,56 @@ levelNext entry
|
|||
lda #0
|
||||
levelNext_skip anop
|
||||
sta colourLevelNum
|
||||
|
||||
inc gameLevel
|
||||
|
||||
lda gameScore+2
|
||||
bne levelNext_fastOnly
|
||||
lda gameScore
|
||||
cmp #40000
|
||||
bge levelNext_fastOnly
|
||||
|
||||
ldy centipedeLevelNum
|
||||
ldx levelTable,y
|
||||
lda |$2,x
|
||||
cmp #SEGMENT_SPEED_FAST
|
||||
beq levelNext_slowIncrement
|
||||
lda #SEGMENT_SPEED_FAST
|
||||
sta |$2,x
|
||||
rtl
|
||||
|
||||
levelNext_slowIncrement anop
|
||||
lda centipedeLevelNum
|
||||
cmp #LEVEL_TABLE_LAST_OFFSET
|
||||
bge levelNext_wrap
|
||||
bge levelNext_slowWrap
|
||||
inc a
|
||||
inc a
|
||||
bra levelNext_noWrap
|
||||
levelNext_wrap anop
|
||||
lda #LEVEL_TABLE_REPEAT_OFFSET
|
||||
levelNext_noWrap anop
|
||||
bra levelNext_slowNoWrap
|
||||
levelNext_slowWrap anop
|
||||
lda #0
|
||||
levelNext_slowNoWrap anop
|
||||
sta centipedeLevelNum
|
||||
tay
|
||||
ldx levelTable,y
|
||||
lda #SEGMENT_SPEED_SLOW
|
||||
sta |$2,x
|
||||
rtl
|
||||
|
||||
levelNext_fastOnly anop
|
||||
lda centipedeLevelNum
|
||||
cmp #LEVEL_TABLE_LAST_OFFSET
|
||||
bge levelNext_fastWrap
|
||||
inc a
|
||||
inc a
|
||||
bra levelNext_fastNoWrap
|
||||
levelNext_fastWrap anop
|
||||
lda #0
|
||||
levelNext_fastNoWrap anop
|
||||
sta centipedeLevelNum
|
||||
tay
|
||||
ldx levelTable,y
|
||||
lda #SEGMENT_SPEED_FAST
|
||||
sta |$2,x
|
||||
|
||||
rtl
|
||||
|
||||
|
||||
|
@ -115,17 +175,7 @@ levelTwo dc i2'2'
|
|||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelThree dc i2'2'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'10' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelFour dc i2'3'
|
||||
levelThree dc i2'3'
|
||||
dc i2'SEGMENT_SPEED_SLOW'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -139,21 +189,7 @@ levelFour dc i2'3'
|
|||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelFive dc i2'3'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'9' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelSix dc i2'4'
|
||||
levelFour dc i2'4'
|
||||
dc i2'SEGMENT_SPEED_SLOW'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -171,25 +207,7 @@ levelSix dc i2'4'
|
|||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelSeven dc i2'4'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'8' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelEight dc i2'5'
|
||||
levelFive dc i2'5'
|
||||
dc i2'SEGMENT_SPEED_SLOW'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -211,29 +229,7 @@ levelEight dc i2'5'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelNine dc i2'5'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'7' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTen dc i2'6'
|
||||
levelSix dc i2'6'
|
||||
dc i2'SEGMENT_SPEED_SLOW'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -259,33 +255,7 @@ levelTen dc i2'6'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelEleven dc i2'6'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'6' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'18' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTwelve dc i2'7'
|
||||
levelSeven dc i2'7'
|
||||
dc i2'SEGMENT_SPEED_SLOW'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -315,37 +285,7 @@ levelTwelve dc i2'7'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelThirteen dc i2'7'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'5' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'18' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'30' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelFourteen dc i2'8'
|
||||
levelEight dc i2'8'
|
||||
dc i2'SEGMENT_SPEED_SLOW'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -379,41 +319,7 @@ levelFourteen dc i2'8'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelFifteen dc i2'8'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'4' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'2' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'18' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'30' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelSixteen dc i2'9'
|
||||
levelNine dc i2'9'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -451,7 +357,7 @@ levelSixteen dc i2'9'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelSeventeen dc i2'10'
|
||||
levelTen dc i2'10'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -493,7 +399,7 @@ levelSeventeen dc i2'10'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelEighteen dc i2'11'
|
||||
levelEleven dc i2'11'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -539,7 +445,7 @@ levelEighteen dc i2'11'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelNineteen dc i2'12'
|
||||
levelTwelve dc i2'12'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
|
@ -589,138 +495,11 @@ levelNineteen dc i2'12'
|
|||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTwenty dc i2'1'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'11' ; Number of body segments
|
||||
|
||||
levelTwentyOne dc i2'2'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'10' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTwentyTwo dc i2'3'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'9' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTwentyThree dc i2'4'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'8' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTwentyFour dc i2'5'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'7' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTwentyFive dc i2'6'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'6' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'18' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
levelTwentySix dc i2'7'
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'26' ; Tile offset
|
||||
dc i2'5' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'6' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'14' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_LEFT'
|
||||
dc i2'18' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'30' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'38' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
dc i2'SEGMENT_SPEED_FAST'
|
||||
dc i2'SEGMENT_DIR_RIGHT'
|
||||
dc i2'46' ; Tile offset
|
||||
dc i2'0' ; Number of body segments
|
||||
|
||||
; Once we reach level 26 of the centipede levels, we go back to level 15. This is because
|
||||
; we only have fast speed centipedes, with one more head at the start and one less body
|
||||
; segment until they are all head segments and then back to a single 12 segment centipede at
|
||||
; fast speed. By looping back from 26th level to the 15th level, we do this.
|
||||
LEVEL_TABLE_LAST_OFFSET gequ 25*2
|
||||
LEVEL_TABLE_REPEAT_OFFSET gequ 14*2
|
||||
LEVEL_TABLE_LAST_OFFSET gequ 11*2
|
||||
levelTable dc i2'levelOne'
|
||||
dc i2'levelTwo'
|
||||
dc i2'levelThree'
|
||||
|
@ -733,19 +512,5 @@ levelTable dc i2'levelOne'
|
|||
dc i2'levelTen'
|
||||
dc i2'levelEleven'
|
||||
dc i2'levelTwelve'
|
||||
dc i2'levelThirteen'
|
||||
dc i2'levelFourteen'
|
||||
dc i2'levelFifteen'
|
||||
dc i2'levelSixteen'
|
||||
dc i2'levelSeventeen'
|
||||
dc i2'levelEighteen'
|
||||
dc i2'levelNineteen'
|
||||
dc i2'levelTwenty'
|
||||
dc i2'levelTwentyOne'
|
||||
dc i2'levelTwentyTwo'
|
||||
dc i2'levelTwentyThree'
|
||||
dc i2'levelTwentyFour'
|
||||
dc i2'levelTwentyFive'
|
||||
dc i2'levelTwentySix'
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue