More general cleanup and get rid of more magic numbers.

This commit is contained in:
Jeremy Rand 2020-07-21 22:30:05 -04:00
parent c614164c14
commit 44cb944f22
4 changed files with 100 additions and 80 deletions

View File

@ -56,9 +56,9 @@ dirtyTileLoop anop
phy phy
ldx dirtyGameTiles,y ldx dirtyGameTiles,y
stz tiles,x stz tiles+TILE_DIRTY_OFFSET,x
ldy tiles+2,x ldy tiles+TILE_SCREEN_OFFSET_OFFSET,x
lda tiles+4,x lda tiles+TILE_TYPE_OFFSET,x
jsl drawTile jsl drawTile
@ -78,9 +78,9 @@ dirtyTileLoop2 anop
phy phy
ldx dirtyNonGameTiles,y ldx dirtyNonGameTiles,y
stz tiles,x stz tiles+TILE_DIRTY_OFFSET,x
ldy tiles+2,x ldy tiles+TILE_SCREEN_OFFSET_OFFSET,x
lda tiles+4,x lda tiles+TILE_TYPE_OFFSET,x
jsl drawTile jsl drawTile

View File

@ -18,8 +18,8 @@ FLEA_STATE_FALLING equ 1
FLEA_STATE_EXPLODING equ 2 FLEA_STATE_EXPLODING equ 2
FLEA_SCREEN_SPEED equ 2*SCREEN_BYTES_PER_ROW FLEA_SCREEN_SPEED equ 2*SCREEN_BYTES_PER_ROW
FLEA_SLOW_UPDATES_PER_TILE equ 3 FLEA_SLOW_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/2-1
FLEA_FAST_UPDATES_PER_TILE equ 1 FLEA_FAST_UPDATES_PER_TILE equ TILE_PIXEL_HEIGHT/4-1
drawFlea entry drawFlea entry
@ -33,10 +33,10 @@ drawFlea entry
ldy numDirtyGameTiles ldy numDirtyGameTiles
ldx fleaTileOffsets ldx fleaTileOffsets
lda tiles,x lda tiles+TILE_DIRTY_OFFSET,x
bne drawFlea_skipTile1 bne drawFlea_skipTile1
lda #TILE_STATE_DIRTY lda #TILE_STATE_DIRTY
sta tiles,x sta tiles+TILE_DIRTY_OFFSET,x
txa txa
sta dirtyGameTiles,y sta dirtyGameTiles,y
iny iny
@ -45,10 +45,10 @@ drawFlea entry
drawFlea_skipTile1 anop drawFlea_skipTile1 anop
ldx fleaTileOffsets+2 ldx fleaTileOffsets+2
lda tiles,x lda tiles+TILE_DIRTY_OFFSET,x
bne drawFlea_skipTile2 bne drawFlea_skipTile2
lda #TILE_STATE_DIRTY lda #TILE_STATE_DIRTY
sta tiles,x sta tiles+TILE_DIRTY_OFFSET,x
txa txa
sta dirtyGameTiles,y sta dirtyGameTiles,y
iny iny
@ -57,10 +57,10 @@ drawFlea_skipTile1 anop
drawFlea_skipTile2 anop drawFlea_skipTile2 anop
ldx fleaTileOffsets+4 ldx fleaTileOffsets+4
lda tiles,x lda tiles+TILE_DIRTY_OFFSET,x
bne drawFlea_skipTile3 bne drawFlea_skipTile3
lda #TILE_STATE_DIRTY lda #TILE_STATE_DIRTY
sta tiles,x sta tiles+TILE_DIRTY_OFFSET,x
txa txa
sta dirtyGameTiles,y sta dirtyGameTiles,y
iny iny
@ -69,10 +69,10 @@ drawFlea_skipTile2 anop
drawFlea_skipTile3 anop drawFlea_skipTile3 anop
ldx fleaTileOffsets+6 ldx fleaTileOffsets+6
lda tiles,x lda tiles+TILE_DIRTY_OFFSET,x
bne drawFlea_skipTile4 bne drawFlea_skipTile4
lda #TILE_STATE_DIRTY lda #TILE_STATE_DIRTY
sta tiles,x sta tiles+TILE_DIRTY_OFFSET,x
txa txa
sta dirtyGameTiles,y sta dirtyGameTiles,y
iny iny
@ -117,6 +117,7 @@ updateFlea_cont anop
; Handle explosion ; Handle explosion
lda fleaSprite lda fleaSprite
beq updateFlea_explosionDone beq updateFlea_explosionDone
sec
sbc #$4 sbc #$4
sta fleaSprite sta fleaSprite
rtl rtl
@ -141,6 +142,7 @@ updateFlea_bottomOfTile anop
lda fleaSprite lda fleaSprite
beq updateFlea_resetSprite beq updateFlea_resetSprite
sec
sbc #$4 sbc #$4
sta fleaSprite sta fleaSprite
bra updateFlea_nextAction bra updateFlea_nextAction
@ -156,25 +158,25 @@ updateFlea_nextTile anop
ldx fleaTileOffsets ldx fleaTileOffsets
stx fleaTileOffsets+4 stx fleaTileOffsets+4
lda tiles+8,x lda tiles+TILE_BELOW_OFFSET,x
cmp #INVALID_TILE_NUM cmp #INVALID_TILE_NUM
beq updateFlea_bottom beq updateFlea_bottom
sta fleaTileOffsets sta fleaTileOffsets
ldx fleaTileOffsets+2 ldx fleaTileOffsets+2
stx fleaTileOffsets+6 stx fleaTileOffsets+6
lda tiles+8,x lda tiles+TILE_BELOW_OFFSET,x
sta fleaTileOffsets+2 sta fleaTileOffsets+2
ldx fleaTileOffsets+4 ldx fleaTileOffsets+4
lda tiles+4,x lda tiles+TILE_TYPE_OFFSET,x
bne updateFlea_nextAction bne updateFlea_nextAction
jsl rand65535 jsl rand65535
and #$7 and #$7
bne updateFlea_nextAction bne updateFlea_nextAction
lda #TILE_MUSHROOM4 lda #TILE_MUSHROOM4
sta tiles+4,x sta tiles+TILE_TYPE_OFFSET,x
bra updateFlea_nextAction bra updateFlea_nextAction
@ -219,11 +221,11 @@ addFlea entry
sta fleaTileOffsets+4 sta fleaTileOffsets+4
tax tax
lda tiles+10,x lda tiles+TILE_LEFT_OFFSET,x
sta fleaTileOffsets+2 sta fleaTileOffsets+2
sta fleaTileOffsets+6 sta fleaTileOffsets+6
lda tiles+2,x lda tiles+TILE_SCREEN_OFFSET_OFFSET,x
sec sec
sbc #6*SCREEN_BYTES_PER_ROW+3 sbc #6*SCREEN_BYTES_PER_ROW+3
sta fleaScreenOffset sta fleaScreenOffset
@ -261,6 +263,7 @@ shootFlea_faster anop
bcc shootFlea_done bcc shootFlea_done
lda fleaScreenOffset lda fleaScreenOffset
sec
sbc #SCREEN_BYTES_PER_ROW sbc #SCREEN_BYTES_PER_ROW
sta fleaScreenOffset sta fleaScreenOffset

View File

@ -14,11 +14,13 @@ gameScorpion start
using globalData using globalData
scorpionState_none equ 0 SCORPION_STATE_NONE equ 0
scorpionState_left equ 1 SCORPION_STATE_LEFT equ 1
scorpionState_right equ 2 SCORPION_STATE_RIGHT equ 2
scorpionState_exploding equ 3 SCORPION_STATE_EXPLODING equ 3
SCORPION_SLOW_UPDATES_PER_TILE equ TILE_PIXEL_WIDTH-1
SCORPION_FAST_UPDATES_PER_TILE equ TILE_PIXEL_WIDTH/2-1
drawScorpion entry drawScorpion entry
lda scorpionState lda scorpionState
@ -31,10 +33,10 @@ drawScorpion_cont anop
jsl scorpionJump jsl scorpionJump
ldx scorpionTileOffsets ldx scorpionTileOffsets
lda tiles,x lda tiles+TILE_DIRTY_OFFSET,x
bne drawScorpion_skipTile1 bne drawScorpion_skipTile1
lda #$1 lda #TILE_STATE_DIRTY
sta tiles,x sta tiles+TILE_DIRTY_OFFSET,x
txa txa
cmp #RHS_FIRST_TILE_OFFSET cmp #RHS_FIRST_TILE_OFFSET
bge drawScorpion_nonGame1 bge drawScorpion_nonGame1
@ -56,10 +58,10 @@ drawScorpion_nonGame1 anop
drawScorpion_skipTile1 anop drawScorpion_skipTile1 anop
ldx scorpionTileOffsets+2 ldx scorpionTileOffsets+2
lda tiles,x lda tiles+TILE_DIRTY_OFFSET,x
bne drawScorpion_skipTile2 bne drawScorpion_skipTile2
lda #$1 lda #TILE_STATE_DIRTY
sta tiles,x sta tiles+TILE_DIRTY_OFFSET,x
txa txa
cmp #RHS_FIRST_TILE_OFFSET cmp #RHS_FIRST_TILE_OFFSET
bge drawScorpion_nonGame2 bge drawScorpion_nonGame2
@ -81,10 +83,10 @@ drawScorpion_nonGame2 anop
drawScorpion_skipTile2 anop drawScorpion_skipTile2 anop
ldx scorpionTileOffsets+4 ldx scorpionTileOffsets+4
lda tiles,x lda tiles+TILE_DIRTY_OFFSET,x
bne drawScorpion_done bne drawScorpion_done
lda #$1 lda #TILE_STATE_DIRTY
sta tiles,x sta tiles+TILE_DIRTY_OFFSET,x
txa txa
cmp #RHS_FIRST_TILE_OFFSET cmp #RHS_FIRST_TILE_OFFSET
bge drawScorpion_nonGame3 bge drawScorpion_nonGame3
@ -108,7 +110,7 @@ drawScorpion_done anop
scorpionJump entry scorpionJump entry
cmp #scorpionState_left cmp #SCORPION_STATE_LEFT
bne scorpionJump_next bne scorpionJump_next
lda scorpionLeftJumpTable,x lda scorpionLeftJumpTable,x
@ -119,7 +121,7 @@ scorpionJump entry
bra jumpInst bra jumpInst
scorpionJump_next anop scorpionJump_next anop
cmp #scorpionState_right cmp #SCORPION_STATE_RIGHT
bne scorpionJump_explosion bne scorpionJump_explosion
lda scorpionRightJumpTable,x lda scorpionRightJumpTable,x
@ -132,7 +134,7 @@ scorpionJump_next anop
scorpionJump_explosion anop scorpionJump_explosion anop
tya tya
clc clc
adc #$4 adc #TILE_BYTE_WIDTH
tay tay
lda explosionJumpTable,x lda explosionJumpTable,x
@ -150,16 +152,16 @@ updateScorpion entry
beq updateScorpion_done beq updateScorpion_done
lda scorpionSprite lda scorpionSprite
cmp #$3c
beq updateScorpionLeft_resetSprite beq updateScorpionLeft_resetSprite
clc sec
adc #$4 sbc #$4
sta scorpionSprite sta scorpionSprite
bra updateScorpionLeft_nextAction bra updateScorpionLeft_nextAction
updateScorpionLeft_resetSprite anop updateScorpionLeft_resetSprite anop
stz scorpionSprite lda #SCORPION_SPRITE_LAST_OFFSET
sta scorpionSprite
updateScorpionLeft_nextAction anop updateScorpionLeft_nextAction anop
lda scorpionShiftInTile lda scorpionShiftInTile
@ -174,7 +176,7 @@ updateScorpionLeft_nextAction anop
updateScorpionLeft_nextTile anop updateScorpionLeft_nextTile anop
dec scorpionScreenOffset dec scorpionScreenOffset
lda #$7 lda #SCORPION_SLOW_UPDATES_PER_TILE
sta scorpionShiftInTile sta scorpionShiftInTile
ldx scorpionTileOffsets+2 ldx scorpionTileOffsets+2
@ -184,7 +186,7 @@ updateScorpionLeft_nextTile anop
stx scorpionTileOffsets+4 stx scorpionTileOffsets+4
ldx scorpionTileOffsets ldx scorpionTileOffsets
stx scorpionTileOffsets+2 stx scorpionTileOffsets+2
lda tiles+10,x lda tiles+TILE_LEFT_OFFSET,x
sta scorpionTileOffsets sta scorpionTileOffsets
rtl rtl
@ -199,25 +201,28 @@ addScorpion entry
lda scorpionState lda scorpionState
bne addScorpion_done bne addScorpion_done
lda #scorpionState_left lda #SCORPION_STATE_LEFT
sta scorpionState sta scorpionState
ldx #24*16 ldx #(24+25)*16
stx scorpionTileOffsets stx scorpionTileOffsets
lda tiles+2,x lda tiles+TILE_SCREEN_OFFSET_OFFSET,x
dec a dec a
sta scorpionScreenOffset sta scorpionScreenOffset
lda tiles+12,x lda tiles+TILE_RIGHT_OFFSET,x
sta scorpionTileOffsets+2 sta scorpionTileOffsets+2
tax tax
lda tiles+12,x lda tiles+TILE_RIGHT_OFFSET,x
sta scorpionTileOffsets+4 sta scorpionTileOffsets+4
lda #$7 lda #SCORPION_SLOW_UPDATES_PER_TILE
sta scorpionShiftInTile sta scorpionShiftInTile
lda #SCORPION_SPRITE_LAST_OFFSET
sta scorpionSprite
addScorpion_done anop addScorpion_done anop
rtl rtl
@ -226,7 +231,7 @@ shootScorpion entry
rtl rtl
scorpionState dc i2'scorpionState_none' scorpionState dc i2'SCORPION_STATE_NONE'
scorpionScreenOffset dc i2'0' scorpionScreenOffset dc i2'0'
scorpionTileOffsets dc i2'0' scorpionTileOffsets dc i2'0'
dc i2'0' dc i2'0'
@ -234,39 +239,42 @@ scorpionTileOffsets dc i2'0'
scorpionShiftInTile dc i2'0' scorpionShiftInTile dc i2'0'
scorpionSprite dc i2'0' scorpionSprite dc i2'0'
scorpionLeftJumpTable dc i4'leftScorpion1s'
SCORPION_SPRITE_LAST_OFFSET gequ 15*4
scorpionLeftJumpTable dc i4'leftScorpion4'
dc i4'leftScorpion4s'
dc i4'leftScorpion4'
dc i4'leftScorpion4s'
dc i4'leftScorpion3'
dc i4'leftScorpion3s'
dc i4'leftScorpion3'
dc i4'leftScorpion3s'
dc i4'leftScorpion2'
dc i4'leftScorpion2s'
dc i4'leftScorpion2'
dc i4'leftScorpion2s'
dc i4'leftScorpion1' dc i4'leftScorpion1'
dc i4'leftScorpion1s' dc i4'leftScorpion1s'
dc i4'leftScorpion1' dc i4'leftScorpion1'
dc i4'leftScorpion2s' dc i4'leftScorpion1s'
dc i4'leftScorpion2'
dc i4'leftScorpion2s'
dc i4'leftScorpion2'
dc i4'leftScorpion3s'
dc i4'leftScorpion3'
dc i4'leftScorpion3s'
dc i4'leftScorpion3'
dc i4'leftScorpion4s'
dc i4'leftScorpion4'
dc i4'leftScorpion4s'
dc i4'leftScorpion4'
scorpionRightJumpTable dc i4'rightScorpion1s' scorpionRightJumpTable dc i4'rightScorpion4'
dc i4'rightScorpion4s'
dc i4'rightScorpion4'
dc i4'rightScorpion4s'
dc i4'rightScorpion3'
dc i4'rightScorpion3s'
dc i4'rightScorpion3'
dc i4'rightScorpion3s'
dc i4'rightScorpion2'
dc i4'rightScorpion2s'
dc i4'rightScorpion2'
dc i4'rightScorpion2s'
dc i4'rightScorpion1' dc i4'rightScorpion1'
dc i4'rightScorpion1s' dc i4'rightScorpion1s'
dc i4'rightScorpion1' dc i4'rightScorpion1'
dc i4'rightScorpion2s' dc i4'rightScorpion1s'
dc i4'rightScorpion2'
dc i4'rightScorpion2s'
dc i4'rightScorpion2'
dc i4'rightScorpion3s'
dc i4'rightScorpion3'
dc i4'rightScorpion3s'
dc i4'rightScorpion3'
dc i4'rightScorpion4s'
dc i4'rightScorpion4'
dc i4'rightScorpion4s'
dc i4'rightScorpion4'
end end

View File

@ -20,6 +20,11 @@ SCREEN_BYTES_PER_ROW gequ 160
SIZEOF_TILE_INFO gequ 16 SIZEOF_TILE_INFO gequ 16
TILE_PIXEL_WIDTH gequ 8
TILE_PIXEL_HEIGHT gequ 8
TILE_BYTE_WIDTH gequ TILE_PIXEL_WIDTH/2
GAME_NUM_TILES_WIDE gequ 25 GAME_NUM_TILES_WIDE gequ 25
GAME_NUM_TILES_TALL gequ 25 GAME_NUM_TILES_TALL gequ 25
@ -103,9 +108,13 @@ TILE_SOLID3 gequ 51*4
TILE_PLAYER gequ 52*4 TILE_PLAYER gequ 52*4
TILE_DIRTY_OFFSET gequ 0
tileState gequ tiles TILE_SCREEN_OFFSET_OFFSET gequ 2
tileScreenOffset gequ tileState+2 TILE_TYPE_OFFSET gequ 4
TILE_ABOVE_OFFSET gequ 6
TILE_BELOW_OFFSET gequ 8
TILE_LEFT_OFFSET gequ 10
TILE_RIGHT_OFFSET gequ 12
backupStack dc i2'0' backupStack dc i2'0'