mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-05-28 16:41:35 +00:00
Change the code to race the beam down the screen, redrawing the dirty game rows as it goes.
This commit is contained in:
parent
b07221c363
commit
22a22d3533
559
BuGS/game.s
559
BuGS/game.s
|
@ -102,25 +102,32 @@ gameDone anop
|
||||||
|
|
||||||
|
|
||||||
drawDirtyGameTiles entry
|
drawDirtyGameTiles entry
|
||||||
ldy numDirtyGameTiles
|
|
||||||
beq dirtyTileLoopDone
|
|
||||||
dirtyTileLoop anop
|
|
||||||
dey
|
|
||||||
dey
|
|
||||||
phy
|
|
||||||
|
|
||||||
ldx dirtyGameTiles,y
|
|
||||||
stz tileDirty,x
|
|
||||||
ldy tileOffset,x
|
|
||||||
lda tileType,x
|
|
||||||
|
|
||||||
jsl drawTile
|
|
||||||
|
|
||||||
ply
|
|
||||||
bne dirtyTileLoop
|
|
||||||
dirtyTileLoopDone anop
|
|
||||||
stz numDirtyGameTiles
|
stz numDirtyGameTiles
|
||||||
rtl
|
_drawDirtyGameRow 0
|
||||||
|
_drawDirtyGameRow 1
|
||||||
|
_drawDirtyGameRow 2
|
||||||
|
_drawDirtyGameRow 3
|
||||||
|
_drawDirtyGameRow 4
|
||||||
|
_drawDirtyGameRow 5
|
||||||
|
_drawDirtyGameRow 6
|
||||||
|
_drawDirtyGameRow 7
|
||||||
|
_drawDirtyGameRow 8
|
||||||
|
_drawDirtyGameRow 9
|
||||||
|
_drawDirtyGameRow 10
|
||||||
|
_drawDirtyGameRow 11
|
||||||
|
_drawDirtyGameRow 12
|
||||||
|
_drawDirtyGameRow 13
|
||||||
|
_drawDirtyGameRow 14
|
||||||
|
_drawDirtyGameRow 15
|
||||||
|
_drawDirtyGameRow 16
|
||||||
|
_drawDirtyGameRow 17
|
||||||
|
_drawDirtyGameRow 18
|
||||||
|
_drawDirtyGameRow 19
|
||||||
|
_drawDirtyGameRow 20
|
||||||
|
_drawDirtyGameRow 21
|
||||||
|
_drawDirtyGameRow 22
|
||||||
|
_drawDirtyGameRow 23
|
||||||
|
_drawDirtyGameRow 24
|
||||||
|
|
||||||
|
|
||||||
drawDirtyNonGameTiles entry
|
drawDirtyNonGameTiles entry
|
||||||
|
@ -133,7 +140,7 @@ dirtyTileLoop2 anop
|
||||||
|
|
||||||
ldx dirtyNonGameTiles,y
|
ldx dirtyNonGameTiles,y
|
||||||
stz tileDirty,x
|
stz tileDirty,x
|
||||||
ldy tileOffset,x
|
ldy tileScreenOffset,x
|
||||||
lda tileType,x
|
lda tileType,x
|
||||||
|
|
||||||
jsl drawTile
|
jsl drawTile
|
||||||
|
@ -156,500 +163,7 @@ drawTile entry
|
||||||
|
|
||||||
jumpInst jmp >mushroom1
|
jumpInst jmp >mushroom1
|
||||||
nop
|
nop
|
||||||
|
|
||||||
|
|
||||||
drawAll entry
|
|
||||||
ldy #$2003
|
|
||||||
jsl mushroom1
|
|
||||||
|
|
||||||
ldy #$200b
|
|
||||||
jsl mushroom2
|
|
||||||
|
|
||||||
ldy #$2013
|
|
||||||
jsl mushroom3
|
|
||||||
|
|
||||||
ldy #$201b
|
|
||||||
jsl mushroom4
|
|
||||||
|
|
||||||
ldy #$2023
|
|
||||||
jsl poisonedMushroom1
|
|
||||||
|
|
||||||
ldy #$202b
|
|
||||||
jsl poisonedMushroom2
|
|
||||||
|
|
||||||
ldy #$2033
|
|
||||||
jsl poisonedMushroom3
|
|
||||||
|
|
||||||
ldy #$203b
|
|
||||||
jsl poisonedMushroom4
|
|
||||||
|
|
||||||
ldy #$2043
|
|
||||||
jsl letterA
|
|
||||||
|
|
||||||
ldy #$204b
|
|
||||||
jsl letterB
|
|
||||||
|
|
||||||
ldy #$2053
|
|
||||||
jsl letterC
|
|
||||||
|
|
||||||
ldy #$205b
|
|
||||||
jsl letterD
|
|
||||||
|
|
||||||
ldy #$2063
|
|
||||||
jsl letterE
|
|
||||||
|
|
||||||
ldy #$206b
|
|
||||||
jsl letterF
|
|
||||||
|
|
||||||
ldy #$2073
|
|
||||||
jsl letterG
|
|
||||||
|
|
||||||
ldy #$207b
|
|
||||||
jsl letterH
|
|
||||||
|
|
||||||
ldy #$2083
|
|
||||||
jsl letterI
|
|
||||||
|
|
||||||
ldy #$208b
|
|
||||||
jsl letterJ
|
|
||||||
|
|
||||||
ldy #$2093
|
|
||||||
jsl letterK
|
|
||||||
|
|
||||||
ldy #$209b
|
|
||||||
jsl letterL
|
|
||||||
|
|
||||||
ldy #$2a03
|
|
||||||
jsl letterM
|
|
||||||
|
|
||||||
ldy #$2a0b
|
|
||||||
jsl letterN
|
|
||||||
|
|
||||||
ldy #$2a13
|
|
||||||
jsl letterO
|
|
||||||
|
|
||||||
ldy #$2a1b
|
|
||||||
jsl letterP
|
|
||||||
|
|
||||||
ldy #$2a23
|
|
||||||
jsl letterQ
|
|
||||||
|
|
||||||
ldy #$2a2b
|
|
||||||
jsl letterR
|
|
||||||
|
|
||||||
ldy #$2a33
|
|
||||||
jsl letterS
|
|
||||||
|
|
||||||
ldy #$2a3b
|
|
||||||
jsl letterT
|
|
||||||
|
|
||||||
ldy #$2a43
|
|
||||||
jsl letterU
|
|
||||||
|
|
||||||
ldy #$2a4b
|
|
||||||
jsl letterV
|
|
||||||
|
|
||||||
ldy #$2a53
|
|
||||||
jsl letterW
|
|
||||||
|
|
||||||
ldy #$2a5b
|
|
||||||
jsl letterX
|
|
||||||
|
|
||||||
ldy #$2a63
|
|
||||||
jsl letterY
|
|
||||||
|
|
||||||
ldy #$2a6b
|
|
||||||
jsl letterZ
|
|
||||||
|
|
||||||
ldy #$2a73
|
|
||||||
jsl symbolC
|
|
||||||
|
|
||||||
ldy #$2a7b
|
|
||||||
jsl symbolP
|
|
||||||
|
|
||||||
ldy #$2a83
|
|
||||||
jsl symbolDot
|
|
||||||
|
|
||||||
ldy #$2a8b
|
|
||||||
jsl symbolColon
|
|
||||||
|
|
||||||
ldy #$2a93
|
|
||||||
jsl solid0
|
|
||||||
|
|
||||||
ldy #$2a9b
|
|
||||||
jsl solid1
|
|
||||||
|
|
||||||
ldy #$3403
|
|
||||||
jsl solid2
|
|
||||||
|
|
||||||
ldy #$340b
|
|
||||||
jsl solid3
|
|
||||||
|
|
||||||
ldy #$3413
|
|
||||||
jsl number0
|
|
||||||
|
|
||||||
ldy #$341b
|
|
||||||
jsl number1
|
|
||||||
|
|
||||||
ldy #$3423
|
|
||||||
jsl number2
|
|
||||||
|
|
||||||
ldy #$342b
|
|
||||||
jsl number3
|
|
||||||
|
|
||||||
ldy #$3433
|
|
||||||
jsl number4
|
|
||||||
|
|
||||||
ldy #$343b
|
|
||||||
jsl number5
|
|
||||||
|
|
||||||
ldy #$3443
|
|
||||||
jsl number6
|
|
||||||
|
|
||||||
ldy #$344b
|
|
||||||
jsl number7
|
|
||||||
|
|
||||||
ldy #$3453
|
|
||||||
jsl number8
|
|
||||||
|
|
||||||
ldy #$345b
|
|
||||||
jsl number9
|
|
||||||
|
|
||||||
ldy #$345f
|
|
||||||
jsl flea1
|
|
||||||
|
|
||||||
ldy #$3467
|
|
||||||
jsl flea2
|
|
||||||
|
|
||||||
ldy #$346f
|
|
||||||
jsl flea3
|
|
||||||
|
|
||||||
ldy #$3477
|
|
||||||
jsl flea4
|
|
||||||
|
|
||||||
ldy #$347e
|
|
||||||
jsl score300
|
|
||||||
|
|
||||||
ldy #$3486
|
|
||||||
jsl score600
|
|
||||||
|
|
||||||
ldy #$348e
|
|
||||||
jsl score900
|
|
||||||
|
|
||||||
ldy #$3e04
|
|
||||||
jsl leftScorpion1
|
|
||||||
|
|
||||||
ldy #$3e14
|
|
||||||
jsl leftScorpion1s
|
|
||||||
|
|
||||||
ldy #$3e24
|
|
||||||
jsl leftScorpion2
|
|
||||||
|
|
||||||
ldy #$3e34
|
|
||||||
jsl leftScorpion2s
|
|
||||||
|
|
||||||
ldy #$3e44
|
|
||||||
jsl leftScorpion3
|
|
||||||
|
|
||||||
ldy #$3e54
|
|
||||||
jsl leftScorpion3s
|
|
||||||
|
|
||||||
ldy #$3e64
|
|
||||||
jsl leftScorpion4
|
|
||||||
|
|
||||||
ldy #$3e74
|
|
||||||
jsl leftScorpion4s
|
|
||||||
|
|
||||||
ldy #$4804
|
|
||||||
jsl rightScorpion1
|
|
||||||
|
|
||||||
ldy #$4814
|
|
||||||
jsl rightScorpion1s
|
|
||||||
|
|
||||||
ldy #$4824
|
|
||||||
jsl rightScorpion2
|
|
||||||
|
|
||||||
ldy #$4834
|
|
||||||
jsl rightScorpion2s
|
|
||||||
|
|
||||||
ldy #$4844
|
|
||||||
jsl rightScorpion3
|
|
||||||
|
|
||||||
ldy #$4854
|
|
||||||
jsl rightScorpion3s
|
|
||||||
|
|
||||||
ldy #$4864
|
|
||||||
jsl rightScorpion4
|
|
||||||
|
|
||||||
ldy #$4874
|
|
||||||
jsl rightScorpion4s
|
|
||||||
|
|
||||||
ldy #$5204
|
|
||||||
jsl spider1
|
|
||||||
|
|
||||||
ldy #$5214
|
|
||||||
jsl spider1s
|
|
||||||
|
|
||||||
ldy #$5224
|
|
||||||
jsl spider2
|
|
||||||
|
|
||||||
ldy #$5234
|
|
||||||
jsl spider2s
|
|
||||||
|
|
||||||
ldy #$5244
|
|
||||||
jsl spider3
|
|
||||||
|
|
||||||
ldy #$5254
|
|
||||||
jsl spider3s
|
|
||||||
|
|
||||||
ldy #$5264
|
|
||||||
jsl spider4
|
|
||||||
|
|
||||||
ldy #$5274
|
|
||||||
jsl spider4s
|
|
||||||
|
|
||||||
ldy #$5284
|
|
||||||
jsl spider5
|
|
||||||
|
|
||||||
ldy #$5294
|
|
||||||
jsl spider5s
|
|
||||||
|
|
||||||
ldy #$5c04
|
|
||||||
jsl spider6
|
|
||||||
|
|
||||||
ldy #$5c14
|
|
||||||
jsl spider6s
|
|
||||||
|
|
||||||
ldy #$5c24
|
|
||||||
jsl spider7
|
|
||||||
|
|
||||||
ldy #$5c34
|
|
||||||
jsl spider7s
|
|
||||||
|
|
||||||
ldy #$5c40
|
|
||||||
jsl explosion1
|
|
||||||
|
|
||||||
ldy #$5c48
|
|
||||||
jsl explosion2
|
|
||||||
|
|
||||||
ldy #$5c50
|
|
||||||
jsl explosion3
|
|
||||||
|
|
||||||
ldy #$5c58
|
|
||||||
jsl explosion4
|
|
||||||
|
|
||||||
ldy #$5c60
|
|
||||||
jsl explosion5
|
|
||||||
|
|
||||||
ldy #$5c68
|
|
||||||
jsl explosion6
|
|
||||||
|
|
||||||
ldy #$5c70
|
|
||||||
jsl leftHead1
|
|
||||||
|
|
||||||
ldy #$5c78
|
|
||||||
jsl leftHead1s
|
|
||||||
|
|
||||||
ldy #$5c80
|
|
||||||
jsl leftHead2
|
|
||||||
|
|
||||||
ldy #$5c88
|
|
||||||
jsl leftHead2s
|
|
||||||
|
|
||||||
ldy #$5c90
|
|
||||||
jsl leftHead3
|
|
||||||
|
|
||||||
ldy #$5c98
|
|
||||||
jsl leftHead3s
|
|
||||||
|
|
||||||
ldy #$6600
|
|
||||||
jsl leftHead4
|
|
||||||
|
|
||||||
ldy #$6608
|
|
||||||
jsl leftHead4s
|
|
||||||
|
|
||||||
ldy #$6610
|
|
||||||
jsl leftHead5
|
|
||||||
|
|
||||||
ldy #$6618
|
|
||||||
jsl leftHead5s
|
|
||||||
|
|
||||||
ldy #$6620
|
|
||||||
jsl leftBody1
|
|
||||||
|
|
||||||
ldy #$6628
|
|
||||||
jsl leftBody1s
|
|
||||||
|
|
||||||
ldy #$6630
|
|
||||||
jsl leftBody2
|
|
||||||
|
|
||||||
ldy #$6638
|
|
||||||
jsl leftBody2s
|
|
||||||
|
|
||||||
ldy #$6640
|
|
||||||
jsl leftBody3
|
|
||||||
|
|
||||||
ldy #$6648
|
|
||||||
jsl leftBody3s
|
|
||||||
|
|
||||||
ldy #$6650
|
|
||||||
jsl leftBody4
|
|
||||||
|
|
||||||
ldy #$6658
|
|
||||||
jsl leftBody4s
|
|
||||||
|
|
||||||
ldy #$6660
|
|
||||||
jsl leftBody5
|
|
||||||
|
|
||||||
ldy #$6668
|
|
||||||
jsl leftBody5s
|
|
||||||
|
|
||||||
ldy #$6670
|
|
||||||
jsl rightHead1
|
|
||||||
|
|
||||||
ldy #$6678
|
|
||||||
jsl rightHead1s
|
|
||||||
|
|
||||||
ldy #$6680
|
|
||||||
jsl rightHead2
|
|
||||||
|
|
||||||
ldy #$6688
|
|
||||||
jsl rightHead2s
|
|
||||||
|
|
||||||
ldy #$6690
|
|
||||||
jsl rightHead3
|
|
||||||
|
|
||||||
ldy #$6698
|
|
||||||
jsl rightHead3s
|
|
||||||
|
|
||||||
ldy #$7000
|
|
||||||
jsl rightHead4
|
|
||||||
|
|
||||||
ldy #$7008
|
|
||||||
jsl rightHead4s
|
|
||||||
|
|
||||||
ldy #$7010
|
|
||||||
jsl rightHead5
|
|
||||||
|
|
||||||
ldy #$7018
|
|
||||||
jsl rightHead5s
|
|
||||||
|
|
||||||
ldy #$7020
|
|
||||||
jsl rightBody1
|
|
||||||
|
|
||||||
ldy #$7028
|
|
||||||
jsl rightBody1s
|
|
||||||
|
|
||||||
ldy #$7030
|
|
||||||
jsl rightBody2
|
|
||||||
|
|
||||||
ldy #$7038
|
|
||||||
jsl rightBody2s
|
|
||||||
|
|
||||||
ldy #$7040
|
|
||||||
jsl rightBody3
|
|
||||||
|
|
||||||
ldy #$7048
|
|
||||||
jsl rightBody3s
|
|
||||||
|
|
||||||
ldy #$7050
|
|
||||||
jsl rightBody4
|
|
||||||
|
|
||||||
ldy #$7058
|
|
||||||
jsl rightBody4s
|
|
||||||
|
|
||||||
ldy #$7060
|
|
||||||
jsl rightBody5
|
|
||||||
|
|
||||||
ldy #$7068
|
|
||||||
jsl rightBody5s
|
|
||||||
|
|
||||||
ldy #$7070
|
|
||||||
jsl leftDownHead1
|
|
||||||
|
|
||||||
ldy #$7078
|
|
||||||
jsl leftDownHead1s
|
|
||||||
|
|
||||||
ldy #$7080
|
|
||||||
jsl leftDownHead2
|
|
||||||
|
|
||||||
ldy #$7088
|
|
||||||
jsl leftDownHead2s
|
|
||||||
|
|
||||||
ldy #$7090
|
|
||||||
jsl leftDownBody1
|
|
||||||
|
|
||||||
ldy #$7098
|
|
||||||
jsl leftDownBody1s
|
|
||||||
|
|
||||||
ldy #$7a00
|
|
||||||
jsl leftDownBody2
|
|
||||||
|
|
||||||
ldy #$7a08
|
|
||||||
jsl leftDownBody2s
|
|
||||||
|
|
||||||
ldy #$7a10
|
|
||||||
jsl rightDownHead1
|
|
||||||
|
|
||||||
ldy #$7a18
|
|
||||||
jsl rightDownHead1s
|
|
||||||
|
|
||||||
ldy #$7a20
|
|
||||||
jsl rightDownHead2
|
|
||||||
|
|
||||||
ldy #$7a28
|
|
||||||
jsl rightDownHead2s
|
|
||||||
|
|
||||||
ldy #$7a30
|
|
||||||
jsl rightDownBody1
|
|
||||||
|
|
||||||
ldy #$7a38
|
|
||||||
jsl rightDownBody1s
|
|
||||||
|
|
||||||
ldy #$7a40
|
|
||||||
jsl rightDownBody2
|
|
||||||
|
|
||||||
ldy #$7a48
|
|
||||||
jsl rightDownBody2s
|
|
||||||
|
|
||||||
ldy #$7a50
|
|
||||||
jsl downHead1
|
|
||||||
|
|
||||||
ldy #$7a58
|
|
||||||
jsl downHead2
|
|
||||||
|
|
||||||
ldy #$7a60
|
|
||||||
jsl downHead3
|
|
||||||
|
|
||||||
ldy #$7a68
|
|
||||||
jsl downBody1
|
|
||||||
|
|
||||||
ldy #$7a70
|
|
||||||
jsl downBody2
|
|
||||||
|
|
||||||
ldy #$7a78
|
|
||||||
jsl downBody3
|
|
||||||
|
|
||||||
ldy #$7a80
|
|
||||||
jsl drawShip
|
|
||||||
|
|
||||||
ldy #$7a88
|
|
||||||
jsl drawShipShift
|
|
||||||
|
|
||||||
ldy #$7a90
|
|
||||||
jsl drawHalfShot
|
|
||||||
|
|
||||||
ldy #$7a98
|
|
||||||
jsl drawHalfShotShift
|
|
||||||
|
|
||||||
ldy #$8400
|
|
||||||
jsl drawShot
|
|
||||||
|
|
||||||
ldy #$8408
|
|
||||||
jsl drawShotShift
|
|
||||||
|
|
||||||
rtl
|
|
||||||
|
|
||||||
|
|
||||||
setupScreen entry
|
setupScreen entry
|
||||||
short i,m
|
short i,m
|
||||||
|
@ -667,7 +181,7 @@ setupScreen entry
|
||||||
sei
|
sei
|
||||||
phd
|
phd
|
||||||
tsc
|
tsc
|
||||||
sta backupStack
|
sta >backupStack
|
||||||
lda >STATE_REGISTER ; Direct Page and Stack in Bank 01/
|
lda >STATE_REGISTER ; Direct Page and Stack in Bank 01/
|
||||||
ora #$0030
|
ora #$0030
|
||||||
sta >STATE_REGISTER
|
sta >STATE_REGISTER
|
||||||
|
@ -685,7 +199,7 @@ nextWord anop
|
||||||
lda >STATE_REGISTER
|
lda >STATE_REGISTER
|
||||||
and #$ffcf
|
and #$ffcf
|
||||||
sta >STATE_REGISTER
|
sta >STATE_REGISTER
|
||||||
lda backupStack
|
lda >backupStack
|
||||||
tcs
|
tcs
|
||||||
pld
|
pld
|
||||||
cli
|
cli
|
||||||
|
@ -814,17 +328,14 @@ waitForVbl entry
|
||||||
lda >BORDER_COLOUR_REGISTER
|
lda >BORDER_COLOUR_REGISTER
|
||||||
and #$f0
|
and #$f0
|
||||||
sta >BORDER_COLOUR_REGISTER
|
sta >BORDER_COLOUR_REGISTER
|
||||||
vblLoop1 anop
|
|
||||||
lda #$fe
|
|
||||||
cmp >READ_VBL
|
|
||||||
bpl vblLoop1
|
|
||||||
vblLoop2 anop
|
|
||||||
cmp >READ_VBL
|
|
||||||
bmi vblLoop2
|
|
||||||
lda >BORDER_COLOUR_REGISTER
|
|
||||||
ora #$0f
|
|
||||||
sta >BORDER_COLOUR_REGISTER
|
|
||||||
long i,m
|
long i,m
|
||||||
|
vblLoop anop
|
||||||
|
lda >VERTICAL_COUNTER ; load the counter value
|
||||||
|
and #$80ff ; mask out the VBL bits
|
||||||
|
asl a ; shift the word around
|
||||||
|
adc #0 ; move MSB -> LSB
|
||||||
|
cmp #$100
|
||||||
|
bge vblLoop
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ addFlea entry
|
||||||
sta fleaTileOffsets+2
|
sta fleaTileOffsets+2
|
||||||
sta fleaTileOffsets+6
|
sta fleaTileOffsets+6
|
||||||
|
|
||||||
lda tileOffset,x
|
lda tileScreenOffset,x
|
||||||
sec
|
sec
|
||||||
sbc #6*SCREEN_BYTES_PER_ROW+3
|
sbc #6*SCREEN_BYTES_PER_ROW+3
|
||||||
sta fleaScreenOffset
|
sta fleaScreenOffset
|
||||||
|
|
|
@ -253,7 +253,7 @@ addScorpion_doit anop
|
||||||
ldx scorpionLeftTileOffset,y
|
ldx scorpionLeftTileOffset,y
|
||||||
stx scorpionTileOffsets
|
stx scorpionTileOffsets
|
||||||
|
|
||||||
lda tileOffset,x
|
lda tileScreenOffset,x
|
||||||
dec a
|
dec a
|
||||||
sta scorpionScreenOffset
|
sta scorpionScreenOffset
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ addScorpion_right anop
|
||||||
sta scorpionTileOffsets+4
|
sta scorpionTileOffsets+4
|
||||||
|
|
||||||
tax
|
tax
|
||||||
lda tileOffset,x
|
lda tileScreenOffset,x
|
||||||
dec a
|
dec a
|
||||||
dec a
|
dec a
|
||||||
sta scorpionScreenOffset
|
sta scorpionScreenOffset
|
||||||
|
|
|
@ -161,7 +161,7 @@ addBodySegment entry
|
||||||
lda #SEGMENT_FACING_LEFT
|
lda #SEGMENT_FACING_LEFT
|
||||||
sta segmentFacing,x
|
sta segmentFacing,x
|
||||||
|
|
||||||
lda tileOffset,x
|
lda tileScreenOffset,x
|
||||||
sec
|
sec
|
||||||
sbc #3
|
sbc #3
|
||||||
sta segmentScreenOffsets,x
|
sta segmentScreenOffsets,x
|
||||||
|
@ -198,7 +198,7 @@ addHeadSegment entry
|
||||||
lda #SEGMENT_FACING_LEFT
|
lda #SEGMENT_FACING_LEFT
|
||||||
sta segmentFacing,x
|
sta segmentFacing,x
|
||||||
|
|
||||||
lda tileOffset,x
|
lda tileScreenOffset,x
|
||||||
sec
|
sec
|
||||||
sbc #3
|
sbc #3
|
||||||
sta segmentScreenOffsets,x
|
sta segmentScreenOffsets,x
|
||||||
|
|
|
@ -563,7 +563,7 @@ addSpider_left anop
|
||||||
sta spiderTileOffsets+4
|
sta spiderTileOffsets+4
|
||||||
|
|
||||||
tax
|
tax
|
||||||
lda tileOffset,x
|
lda tileScreenOffset,x
|
||||||
sec
|
sec
|
||||||
sbc #SPIDER_RHS_STARTING_SCREEN_OFFSET
|
sbc #SPIDER_RHS_STARTING_SCREEN_OFFSET
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
@ -597,7 +597,7 @@ addSpider_right anop
|
||||||
sta spiderTileOffsets+4
|
sta spiderTileOffsets+4
|
||||||
|
|
||||||
tax
|
tax
|
||||||
lda tileOffset,x
|
lda tileScreenOffset,x
|
||||||
sec
|
sec
|
||||||
sbc #SPIDER_LHS_STARTING_SCREEN_OFFSET
|
sbc #SPIDER_LHS_STARTING_SCREEN_OFFSET
|
||||||
sta spiderScreenOffset
|
sta spiderScreenOffset
|
||||||
|
|
|
@ -7,6 +7,67 @@
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
macro
|
||||||
|
_drawDirtyGameRow &rowNum
|
||||||
|
trace on
|
||||||
|
short i,m
|
||||||
|
lda >BORDER_COLOUR_REGISTER
|
||||||
|
and #$f0
|
||||||
|
sta >BORDER_COLOUR_REGISTER
|
||||||
|
long i,m
|
||||||
|
_drawDirtyGameRow_wait&rowNum anop
|
||||||
|
; This code loads into the accumulator the line currently being drawn to the
|
||||||
|
; screen by HW. It allows code to race just behind the beam and redraw the
|
||||||
|
; screen.
|
||||||
|
;
|
||||||
|
; Based on code found here:
|
||||||
|
; https://iigs.dreamhosters.com/gte/blitter.html
|
||||||
|
;
|
||||||
|
; Unlike that code, it does not change the baseline of the values. According
|
||||||
|
; to GS technote 39, this number ranges from $fa to $1ff. Scan line zero is
|
||||||
|
; $100 and scan line 199 is $1c7. We will race the beam by comparing to these
|
||||||
|
; offset numbers.
|
||||||
|
;
|
||||||
|
; Also according to that technote, it looks like these numbers are different
|
||||||
|
; in PAL mode. TODO - Do I need something here to handle PAL correctly?
|
||||||
|
lda >VERTICAL_COUNTER ; load the counter value
|
||||||
|
and #$80ff ; mask out the VBL bits
|
||||||
|
asl a ; shift the word around
|
||||||
|
adc #0 ; move MSB -> LSB
|
||||||
|
|
||||||
|
lcla &scanLineNum
|
||||||
|
&scanLineNum seta &rowNum
|
||||||
|
&scanLineNum seta &scanLineNum*8
|
||||||
|
&scanLineNum seta &scanLineNum+264
|
||||||
|
cmp #&scanLineNum
|
||||||
|
blt _drawDirtyGameRow_wait&rowNum
|
||||||
|
|
||||||
|
short i,m
|
||||||
|
lda >BORDER_COLOUR_REGISTER
|
||||||
|
ora #$0f
|
||||||
|
sta >BORDER_COLOUR_REGISTER
|
||||||
|
long i,m
|
||||||
|
|
||||||
|
lcla &tileOffset
|
||||||
|
&tileOffset seta &rowNum*50
|
||||||
|
lcla &lastTileOffset
|
||||||
|
&lastTileOffset seta 50+&tileOffset
|
||||||
|
|
||||||
|
.drawDirtyGameRowLoop
|
||||||
|
lda tileDirty+&tileOffset
|
||||||
|
beq _drawDirtyGameRow_skip&tileOffset
|
||||||
|
stz tileDirty+&tileOffset
|
||||||
|
ldy tileScreenOffset+&tileOffset
|
||||||
|
lda tileType+&tileOffset
|
||||||
|
jsl drawTile
|
||||||
|
|
||||||
|
_drawDirtyGameRow_skip&tileOffset anop
|
||||||
|
&tileOffset seta &tileOffset+2
|
||||||
|
aif &tileOffset<&lastTileOffset,.drawDirtyGameRowLoop
|
||||||
|
trace off
|
||||||
|
|
||||||
|
mend
|
||||||
|
|
||||||
; This macro uses the Y register as an index into the tile offsets. This is
|
; This macro uses the Y 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
|
||||||
|
|
|
@ -122,6 +122,7 @@ SHADOW_REGISTER gequ $e0c035
|
||||||
NEW_VIDEO_REGISTER gequ $e0c029
|
NEW_VIDEO_REGISTER gequ $e0c029
|
||||||
BORDER_COLOUR_REGISTER gequ $e0c034
|
BORDER_COLOUR_REGISTER gequ $e0c034
|
||||||
STATE_REGISTER gequ $e1c068
|
STATE_REGISTER gequ $e1c068
|
||||||
|
VERTICAL_COUNTER gequ $e0c02e
|
||||||
|
|
||||||
|
|
||||||
backupStack dc i2'0'
|
backupStack dc i2'0'
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy explosions.macros
|
mcopy explosions.macros
|
||||||
keep explosions
|
keep explosions
|
||||||
|
|
||||||
explosions start
|
explosions start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
explosion1 entry
|
explosion1 entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy fleas.macros
|
mcopy fleas.macros
|
||||||
keep fleas
|
keep fleas
|
||||||
|
|
||||||
fleas start
|
fleas start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy letters.macros
|
mcopy letters.macros
|
||||||
keep letters
|
keep letters
|
||||||
|
|
||||||
letters start
|
letters start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
letterA entry
|
letterA entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy mushrooms.macros
|
mcopy mushrooms.macros
|
||||||
keep mushrooms
|
keep mushrooms
|
||||||
|
|
||||||
mushrooms start
|
mushrooms start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
mushroom1 entry
|
mushroom1 entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy numbers.macros
|
mcopy numbers.macros
|
||||||
keep numbers
|
keep numbers
|
||||||
|
|
||||||
numbers start
|
numbers start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
number0 entry
|
number0 entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy scores.macros
|
mcopy scores.macros
|
||||||
keep scores
|
keep scores
|
||||||
|
|
||||||
scores start
|
scores start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
score300 entry
|
score300 entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy scorpions.macros
|
mcopy scorpions.macros
|
||||||
keep scorpions
|
keep scorpions
|
||||||
|
|
||||||
scorpions start
|
scorpions start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
leftScorpion1 entry
|
leftScorpion1 entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy segments.macros
|
mcopy segments.macros
|
||||||
keep segments
|
keep segments
|
||||||
|
|
||||||
segments start
|
segments start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
; IMPORTANT!!!! - It is critical that the X register is preserved in all of these
|
; IMPORTANT!!!! - It is critical that the X register is preserved in all of these
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy ship.macros
|
mcopy ship.macros
|
||||||
keep ship
|
keep ship
|
||||||
|
|
||||||
ship start
|
ship start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
drawShip entry
|
drawShip entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy shot.macros
|
mcopy shot.macros
|
||||||
keep shot
|
keep shot
|
||||||
|
|
||||||
shot start
|
shot start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
drawHalfShot entry
|
drawHalfShot entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy solid.macros
|
mcopy solid.macros
|
||||||
keep solid
|
keep solid
|
||||||
|
|
||||||
solid start
|
solid start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
solid0 entry
|
solid0 entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy spiders.macros
|
mcopy spiders.macros
|
||||||
keep spiders
|
keep spiders
|
||||||
|
|
||||||
spiders start
|
spiders start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
spider1 entry
|
spider1 entry
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
_spriteHeader
|
_spriteHeader
|
||||||
sei ; 2
|
sei ; 2
|
||||||
tsc ; 2
|
tsc ; 2
|
||||||
sta backupStack ; 5
|
sta >backupStack ; 5
|
||||||
lda >STATE_REGISTER ; 6 - Direct Page and Stack in Bank 01/
|
lda >STATE_REGISTER ; 6 - Direct Page and Stack in Bank 01/
|
||||||
ora #$0030 ; 3
|
ora #$0030 ; 3
|
||||||
sta >STATE_REGISTER ; 6
|
sta >STATE_REGISTER ; 6
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
lda >STATE_REGISTER ; 6
|
lda >STATE_REGISTER ; 6
|
||||||
and #$ffcf ; 3
|
and #$ffcf ; 3
|
||||||
sta >STATE_REGISTER ; 6
|
sta >STATE_REGISTER ; 6
|
||||||
lda backupStack ; 5
|
lda >backupStack ; 5
|
||||||
tcs ; 2
|
tcs ; 2
|
||||||
cli ; 2
|
cli ; 2
|
||||||
mend ; 24
|
mend ; 24
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
mcopy symbols.macros
|
mcopy symbols.macros
|
||||||
keep symbols
|
keep symbols
|
||||||
|
|
||||||
symbols start
|
symbols start spriteSeg
|
||||||
using globalData
|
using globalData
|
||||||
|
|
||||||
symbolC entry
|
symbolC entry
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
/* Globals */
|
/* Globals */
|
||||||
|
|
||||||
word tileDirty[TOTAL_NUM_TILES];
|
word tileDirty[TOTAL_NUM_TILES];
|
||||||
word tileOffset[TOTAL_NUM_TILES];
|
word tileScreenOffset[TOTAL_NUM_TILES];
|
||||||
tTileType tileType[TOTAL_NUM_TILES];
|
tTileType tileType[TOTAL_NUM_TILES];
|
||||||
tTileOffset tileAbove[TOTAL_NUM_TILES];
|
tTileOffset tileAbove[TOTAL_NUM_TILES];
|
||||||
tTileOffset tileBelow[TOTAL_NUM_TILES];
|
tTileOffset tileBelow[TOTAL_NUM_TILES];
|
||||||
|
@ -88,7 +88,7 @@ void initTiles(void)
|
||||||
for (tileX = 0; tileX < LHS_NUM_TILES_WIDE; tileX++)
|
for (tileX = 0; tileX < LHS_NUM_TILES_WIDE; tileX++)
|
||||||
{
|
{
|
||||||
tileDirty[lhsTileIndex] = 0;
|
tileDirty[lhsTileIndex] = 0;
|
||||||
tileOffset[lhsTileIndex] = lastOffset;
|
tileScreenOffset[lhsTileIndex] = lastOffset;
|
||||||
tileType[lhsTileIndex] = TILE_EMPTY;
|
tileType[lhsTileIndex] = TILE_EMPTY;
|
||||||
|
|
||||||
if (tileY == 0)
|
if (tileY == 0)
|
||||||
|
@ -119,7 +119,7 @@ void initTiles(void)
|
||||||
for (tileX = 0; tileX < GAME_NUM_TILES_WIDE; tileX++)
|
for (tileX = 0; tileX < GAME_NUM_TILES_WIDE; tileX++)
|
||||||
{
|
{
|
||||||
tileDirty[tileIndex] = 0;
|
tileDirty[tileIndex] = 0;
|
||||||
tileOffset[tileIndex] = lastOffset;
|
tileScreenOffset[tileIndex] = lastOffset;
|
||||||
tileType[tileIndex] = TILE_EMPTY;
|
tileType[tileIndex] = TILE_EMPTY;
|
||||||
|
|
||||||
if (tileY == 0)
|
if (tileY == 0)
|
||||||
|
@ -150,7 +150,7 @@ void initTiles(void)
|
||||||
for (tileX = 0; tileX < RHS_NUM_TILES_WIDE; tileX++)
|
for (tileX = 0; tileX < RHS_NUM_TILES_WIDE; tileX++)
|
||||||
{
|
{
|
||||||
tileDirty[rhsTileIndex] = 0;
|
tileDirty[rhsTileIndex] = 0;
|
||||||
tileOffset[rhsTileIndex] = lastOffset;
|
tileScreenOffset[rhsTileIndex] = lastOffset;
|
||||||
tileType[rhsTileIndex] = TILE_EMPTY;
|
tileType[rhsTileIndex] = TILE_EMPTY;
|
||||||
|
|
||||||
if (tileY == 0)
|
if (tileY == 0)
|
||||||
|
|
|
@ -106,7 +106,7 @@ typedef enum {
|
||||||
/* Globals */
|
/* Globals */
|
||||||
|
|
||||||
extern word tileDirty[TOTAL_NUM_TILES];
|
extern word tileDirty[TOTAL_NUM_TILES];
|
||||||
extern word tileOffset[TOTAL_NUM_TILES];
|
extern word tileScreenOffset[TOTAL_NUM_TILES];
|
||||||
extern tTileType tileType[TOTAL_NUM_TILES];
|
extern tTileType tileType[TOTAL_NUM_TILES];
|
||||||
extern tTileOffset tileAbove[TOTAL_NUM_TILES];
|
extern tTileOffset tileAbove[TOTAL_NUM_TILES];
|
||||||
extern tTileOffset tileBelow[TOTAL_NUM_TILES];
|
extern tTileOffset tileBelow[TOTAL_NUM_TILES];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user