Move non-game code out of the main segment to make more room for more high score code.

This commit is contained in:
Jeremy Rand 2021-06-28 22:33:01 -04:00
parent 08be64a61c
commit 701585df1a
4 changed files with 283 additions and 264 deletions

View File

@ -18,6 +18,7 @@
; more on-screen action. ; more on-screen action.
case on case on
datachk off
mcopy game.macros mcopy game.macros
keep game keep game
@ -344,7 +345,7 @@ updateGameState_doneBonus anop
stz isSinglePlayer stz isSinglePlayer
bra updateGameState_twoPlayer bra updateGameState_twoPlayer
updateGameState_isSinglePlayer anop updateGameState_isSinglePlayer anop
jmp setGameNotRunning jmp >setGameNotRunning
updateGameState_notHighScore anop updateGameState_notHighScore anop
lda isSinglePlayer lda isSinglePlayer
beq updateGameState_isSinglePlayer beq updateGameState_isSinglePlayer
@ -512,8 +513,96 @@ copyFromPlayer2Tiles_skip anop
cpx #RHS_FIRST_TILE_OFFSET cpx #RHS_FIRST_TILE_OFFSET
blt copyFromPlayer2Tiles_loop blt copyFromPlayer2Tiles_loop
rtl rtl
checkKeyboard entry
checkKey_loop2 anop
short i,m
lda >KEYBOARD
bpl checkKey_done
sta >KEYBOARD_STROBE
long i,m
and #$007f
ldx gameState
bne checkKey_pause
cmp #'q'
beq checkKey_quit
cmp #'Q'
beq checkKey_quit
cmp #'1'
beq checkKey_game
cmp #'2'
beq checkKey_game
cmp #'s'
beq checkKey_swapStereo
cmp #'S'
beq checkKey_swapStereo
checkKey_done anop
long i,m
rtl
checkKey_pause anop
jmp >pauseGame
checkKey_quit anop
stz shouldQuit
rtl
checkKey_game anop
sec
sbc #'1'
jmp startGame
checkKey_swapStereo anop
jsl swapStereoSettings
jmp >staticGameBoard
waitForBeam entry
beamLoop 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 #$1c8
bge beamLoop
rtl
waitForVbl entry
vblLoop1 anop
short m
lda #$fe
cmp >READ_VBL
bpl vblLoop1
vblLoop2 anop
cmp >READ_VBL
bmi vblLoop2
long m
rtl
borderColour dc i2'0'
frameCount dc i2'0'
shouldPreloadSound dc i2'0'
highScoreCountdown dc i2'0'
end
gameExtras start extraSeg
using globalData
using tileData
using playerData
overwriteGameTile entry overwriteGameTile entry
phy phy
tay tay
@ -527,12 +616,11 @@ overwriteGameTile entry
inx inx
inx inx
ply ply
rts rtl
pauseGame entry pauseGame entry
jsl pauseSound jsl pauseSound
ldx #GAME_NUM_TILES_WIDE*4+2 ldx #GAME_NUM_TILES_WIDE*4+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -555,7 +643,7 @@ pauseGame entry
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*6+2 ldx #GAME_NUM_TILES_WIDE*6+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -578,7 +666,7 @@ pauseGame entry
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*8+2 ldx #GAME_NUM_TILES_WIDE*8+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -601,7 +689,7 @@ pauseGame entry
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*10+2 ldx #GAME_NUM_TILES_WIDE*10+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -624,7 +712,7 @@ pauseGame entry
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*12+2 ldx #GAME_NUM_TILES_WIDE*12+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_LETTER_O _overwriteGameTile TILE_LETTER_O
@ -647,7 +735,7 @@ pauseGame entry
_overwriteGameTile TILE_LETTER_M _overwriteGameTile TILE_LETTER_M
_overwriteGameTile TILE_LETTER_E _overwriteGameTile TILE_LETTER_E
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*14+2 ldx #GAME_NUM_TILES_WIDE*14+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -670,7 +758,7 @@ pauseGame entry
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
short i,m short i,m
pauseGame_loop anop pauseGame_loop anop
lda >KEYBOARD lda >KEYBOARD
@ -688,7 +776,7 @@ pauseGame_quit anop
stz shouldQuit stz shouldQuit
rtl rtl
setGameTile entry setGameTile entry
cmp tileType,x cmp tileType,x
beq setGameTile_skip beq setGameTile_skip
@ -698,9 +786,9 @@ setGameTile entry
setGameTile_skip anop setGameTile_skip anop
inx inx
inx inx
rts rtl
; This must come before staticGameBoard because it falls into it.
setGameNotRunning entry setGameNotRunning entry
lda #GAME_STATE_NOT_RUNNING lda #GAME_STATE_NOT_RUNNING
sta gameState sta gameState
@ -710,15 +798,13 @@ setGameNotRunning entry
jsl fleaInitLevel jsl fleaInitLevel
jsl addRandomMushrooms jsl addRandomMushrooms
stz displayGlobalHighScores stz displayGlobalHighScores
jmp staticGameBoard ; Fall through into staticGameBoard...
staticGameBoard entry staticGameBoard entry
lda #TILE_PLAYER lda #TILE_PLAYER
sta tileType+RHS_FIRST_TILE_OFFSET-GAME_NUM_TILES_WIDE-1 sta tileType+RHS_FIRST_TILE_OFFSET-GAME_NUM_TILES_WIDE-1
lda #TILE_STATE_DIRTY lda #TILE_STATE_DIRTY
sta tileDirty+RHS_FIRST_TILE_OFFSET-GAME_NUM_TILES_WIDE-1 sta tileDirty+RHS_FIRST_TILE_OFFSET-GAME_NUM_TILES_WIDE-1
lda displayGlobalHighScores lda displayGlobalHighScores
beq staticGameBoard_localHighScores beq staticGameBoard_localHighScores
jmp staticGameBoard_globalHighScores jmp staticGameBoard_globalHighScores
@ -746,7 +832,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*10+2 ldx #GAME_NUM_TILES_WIDE*10+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 0 _highScoreRow 0
@ -756,7 +842,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*12+2 ldx #GAME_NUM_TILES_WIDE*12+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 1 _highScoreRow 1
@ -766,7 +852,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*14+2 ldx #GAME_NUM_TILES_WIDE*14+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 2 _highScoreRow 2
@ -776,7 +862,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*16+2 ldx #GAME_NUM_TILES_WIDE*16+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 3 _highScoreRow 3
@ -786,7 +872,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*18+2 ldx #GAME_NUM_TILES_WIDE*18+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 4 _highScoreRow 4
@ -796,7 +882,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*20+2 ldx #GAME_NUM_TILES_WIDE*20+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 5 _highScoreRow 5
@ -806,7 +892,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*22+2 ldx #GAME_NUM_TILES_WIDE*22+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 6 _highScoreRow 6
@ -816,7 +902,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*24+2 ldx #GAME_NUM_TILES_WIDE*24+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 7 _highScoreRow 7
@ -826,7 +912,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*26+2 ldx #GAME_NUM_TILES_WIDE*26+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 8 _highScoreRow 8
@ -836,7 +922,7 @@ staticGameBoard_localHighScores anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*28+2 ldx #GAME_NUM_TILES_WIDE*28+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_highScoreRow 9 _highScoreRow 9
@ -995,7 +1081,7 @@ staticGameBoard_Options anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*32+2 ldx #GAME_NUM_TILES_WIDE*32+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_LETTER_P _setGameTile TILE_LETTER_P
@ -1018,7 +1104,7 @@ staticGameBoard_Options anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*34+2 ldx #GAME_NUM_TILES_WIDE*34+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
@ -1041,7 +1127,7 @@ staticGameBoard_Options anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*36+2 ldx #GAME_NUM_TILES_WIDE*36+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
@ -1064,7 +1150,7 @@ staticGameBoard_Options anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*38+2 ldx #GAME_NUM_TILES_WIDE*38+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
@ -1082,7 +1168,7 @@ staticGameBoard_Options anop
_setGameTile TILE_LETTER_E _setGameTile TILE_LETTER_E
_setGameTile TILE_LETTER_O _setGameTile TILE_LETTER_O
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
lda settings+SETTINGS_SWAP_STEREO_OFFSET lda settings+SETTINGS_SWAP_STEREO_OFFSET
bne staticGameBoard_swapped bne staticGameBoard_swapped
_setGameTile TILE_LETTER_L _setGameTile TILE_LETTER_L
@ -1096,7 +1182,7 @@ staticGameBoard_swapped anop
staticGameBoard_cont anop staticGameBoard_cont anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*40+2 ldx #GAME_NUM_TILES_WIDE*40+2
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
@ -1119,7 +1205,7 @@ staticGameBoard_cont anop
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
_setGameTile TILE_EMPTY _setGameTile TILE_EMPTY
rtl rtl
@ -1151,97 +1237,17 @@ displayConnectionString entry
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
rtl rtl
checkKeyboard entry
checkKey_loop2 anop
short i,m
lda >KEYBOARD
bpl checkKey_done
sta >KEYBOARD_STROBE
long i,m
and #$007f
ldx gameState
bne checkKey_pause
cmp #'q'
beq checkKey_quit
cmp #'Q'
beq checkKey_quit
cmp #'1'
beq checkKey_game
cmp #'2'
beq checkKey_game
cmp #'s'
beq checkKey_swapStereo
cmp #'S'
beq checkKey_swapStereo
checkKey_done anop
long i,m
rtl
checkKey_pause anop
jmp pauseGame
checkKey_quit anop
stz shouldQuit
rtl
checkKey_game anop
sec
sbc #'1'
jmp startGame
checkKey_swapStereo anop
jsl swapStereoSettings
jmp staticGameBoard
waitForKey entry waitForKey entry
short m short m
waitForKey_loop anop waitForKey_loop anop
lda >KEYBOARD lda >KEYBOARD
bpl waitForKey_loop bpl waitForKey_loop
sta >KEYBOARD_STROBE sta >KEYBOARD_STROBE
long m long m
and #$7f and #$7f
rtl rtl
waitForBeam entry
beamLoop 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 #$1c8
bge beamLoop
rtl
waitForVbl entry end
vblLoop1 anop
short m
lda #$fe
cmp >READ_VBL
bpl vblLoop1
vblLoop2 anop
cmp >READ_VBL
bmi vblLoop2
long m
rtl
shouldQuit dc i2'1'
borderColour dc i2'0'
frameCount dc i2'0'
shouldPreloadSound dc i2'0'
displayGlobalHighScores dc i2'0'
highScoreCountdown dc i2'0'
end

View File

@ -137,14 +137,14 @@ _dirtyNonGameTile_skip&SYSCNT anop
macro macro
_overwriteGameTile &type _overwriteGameTile &type
lda #&type lda #&type
jsr overwriteGameTile jsl overwriteGameTile
mend mend
macro macro
_setGameTile &type _setGameTile &type
lda #&type lda #&type
jsr setGameTile jsl setGameTile
mend mend
@ -153,70 +153,70 @@ _dirtyNonGameTile_skip&SYSCNT anop
ldy #SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+&nthScore*SETTINGS_HIGH_SCORE_SIZE ldy #SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+&nthScore*SETTINGS_HIGH_SCORE_SIZE
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
lda #TILE_EMPTY lda #TILE_EMPTY
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda settings,y lda settings,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
mend mend
@ -225,70 +225,70 @@ _dirtyNonGameTile_skip&SYSCNT anop
ldy #2+&nthScore*SETTINGS_HIGH_SCORE_SIZE ldy #2+&nthScore*SETTINGS_HIGH_SCORE_SIZE
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
lda #TILE_EMPTY lda #TILE_EMPTY
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
iny iny
lda highScoreResponse,y lda highScoreResponse,y
jsl asciiToTileType jsl asciiToTileType
jsr setGameTile jsl setGameTile
mend mend

View File

@ -193,6 +193,9 @@ backupStack dc i2'0'
collision dc i2'0' collision dc i2'0'
collisionAddr dc i2'0' collisionAddr dc i2'0'
numSegments dc i2'0' numSegments dc i2'0'
displayGlobalHighScores dc i2'0'
shouldQuit dc i2'1'
scoreIndex dc i2'0'
tileJumpTable dc a4'solid0' tileJumpTable dc a4'solid0'

View File

@ -8,6 +8,7 @@
case on case on
datachk off
mcopy score.macros mcopy score.macros
keep score keep score
@ -15,78 +16,6 @@ score start
using globalData using globalData
using tileData using tileData
updateHighScore entry
ldx #HIGH_SCORE_ONES_OFFSET
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+9
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+8
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+7
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+6
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+5
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+4
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+3
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+2
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+1
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
rtl
scoreStartGame entry scoreStartGame entry
stz gameScore stz gameScore
@ -380,6 +309,90 @@ scoreAddOneThousand_skipZeroHundreds anop
jmp scoreAddOneToTile jmp scoreAddOneToTile
end
scoreExtras start extraSeg
using globalData
using tileData
using playerData
updateHighScore entry
ldx #HIGH_SCORE_ONES_OFFSET
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+9
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+8
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+7
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+6
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+5
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+4
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+3
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+2
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+1
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
dex
dex
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET
jsl asciiToTileType
sta tileType,x
_dirtyNonGameTile
rtl
checkHighScore entry checkHighScore entry
ldy #0 ldy #0
checkHighScore_loop anop checkHighScore_loop anop
@ -429,7 +442,7 @@ checkHighScore_doneCopy anop
lda gameScore+2,x lda gameScore+2,x
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_OFFSET+2,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_OFFSET+2,y
sta setHighScoreRequest+8 sta setHighScoreRequest+8
lda playerNum lda playerNum
cmp #PLAYER_ONE cmp #PLAYER_ONE
beq checkHighScore_isPlayer1 beq checkHighScore_isPlayer1
@ -441,61 +454,61 @@ checkHighScore_saveHighScore anop
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+1,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+1,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+2,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+2,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+3,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+3,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+4,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+4,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+5,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+5,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+6,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+6,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+7,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+7,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+8,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+8,y
inx inx
inx inx
lda tileType,x lda tileType,x
jsl tileTypeToAscii jsl tileTypeToAscii
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+9,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+9,y
ldx #GAME_NUM_TILES_WIDE*4+2 ldx #GAME_NUM_TILES_WIDE*4+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -518,7 +531,7 @@ checkHighScore_saveHighScore anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*6+2 ldx #GAME_NUM_TILES_WIDE*6+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -541,7 +554,7 @@ checkHighScore_saveHighScore anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*8+2 ldx #GAME_NUM_TILES_WIDE*8+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -570,7 +583,7 @@ checkHighScore_donePrintingPlayer anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*10+2 ldx #GAME_NUM_TILES_WIDE*10+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -593,7 +606,7 @@ checkHighScore_donePrintingPlayer anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*12+2 ldx #GAME_NUM_TILES_WIDE*12+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -616,7 +629,7 @@ checkHighScore_donePrintingPlayer anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*14+2 ldx #GAME_NUM_TILES_WIDE*14+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_LETTER_E _overwriteGameTile TILE_LETTER_E
@ -639,7 +652,7 @@ checkHighScore_donePrintingPlayer anop
_overwriteGameTile TILE_LETTER_L _overwriteGameTile TILE_LETTER_L
_overwriteGameTile TILE_LETTER_S _overwriteGameTile TILE_LETTER_S
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*16+2 ldx #GAME_NUM_TILES_WIDE*16+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -662,7 +675,7 @@ checkHighScore_donePrintingPlayer anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*18+2 ldx #GAME_NUM_TILES_WIDE*18+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -685,7 +698,7 @@ checkHighScore_donePrintingPlayer anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*20+2 ldx #GAME_NUM_TILES_WIDE*20+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -708,7 +721,7 @@ checkHighScore_donePrintingPlayer anop
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
ldx #GAME_NUM_TILES_WIDE*18+20 ldx #GAME_NUM_TILES_WIDE*18+20
checkHighScore_nextKey anop checkHighScore_nextKey anop
jsl waitForKey jsl waitForKey
@ -733,14 +746,14 @@ checkHighScore_skipToUpperCase anop
blt checkHighScore_isInvalid blt checkHighScore_isInvalid
cmp #'Z'+1 cmp #'Z'+1
bge checkHighScore_isInvalid bge checkHighScore_isInvalid
checkHighScore_isValid anop checkHighScore_isValid anop
cpx #GAME_NUM_TILES_WIDE*18+26 cpx #GAME_NUM_TILES_WIDE*18+26
bge checkHighScore_isInvalid bge checkHighScore_isInvalid
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_WHO_OFFSET,y sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_WHO_OFFSET,y
iny iny
jsl asciiToTileType jsl asciiToTileType
jsr overwriteGameTile jsl overwriteGameTile
_overwriteGameTile TILE_SOLID2 _overwriteGameTile TILE_SOLID2
dex dex
dex dex
@ -759,14 +772,14 @@ checkHighScore_backspace anop
dex dex
dex dex
bra checkHighScore_nextKey bra checkHighScore_nextKey
checkHighScore_isEnter anop checkHighScore_isEnter anop
cpx #GAME_NUM_TILES_WIDE*18+26 cpx #GAME_NUM_TILES_WIDE*18+26
blt checkHighScore_isInvalid blt checkHighScore_isInvalid
bra checkHighScore_doneInitials bra checkHighScore_doneInitials
checkHighScore_isInvalid anop checkHighScore_isInvalid anop
bra checkHighScore_nextKey bra checkHighScore_nextKey
checkHighScore_doneInitials anop checkHighScore_doneInitials anop
lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_WHO_OFFSET-3,y lda settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_WHO_OFFSET-3,y
sta setHighScoreRequest+2 sta setHighScoreRequest+2
@ -803,7 +816,7 @@ checkHighScore_retry anop
jsl sendHighScore jsl sendHighScore
beq checkHighScore_retryPrompt beq checkHighScore_retryPrompt
brl checkHighScore_doneNetwork brl checkHighScore_doneNetwork
checkHighScore_retryPrompt anop checkHighScore_retryPrompt anop
ldx #GAME_NUM_TILES_WIDE*22+2 ldx #GAME_NUM_TILES_WIDE*22+2
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
@ -827,7 +840,7 @@ checkHighScore_retryPrompt anop
_overwriteGameTile TILE_LETTER_N _overwriteGameTile TILE_LETTER_N
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
jsl waitForKey jsl waitForKey
and #$df and #$df
cmp #'N' cmp #'N'
@ -837,37 +850,34 @@ checkHighScore_retryPrompt anop
brl checkHighScore_retry brl checkHighScore_retry
checkHighScore_doRetry anop checkHighScore_doRetry anop
brl checkHighScore_retryPrompt brl checkHighScore_retryPrompt
checkHighScore_doneNetwork anop checkHighScore_doneNetwork anop
jsl updateHighScore jsl updateHighScore
sec sec
rtl rtl
uploadSpin1 entry uploadSpin1 entry
ldx #GAME_NUM_TILES_WIDE*22+36 ldx #GAME_NUM_TILES_WIDE*22+36
_overwriteGameTile TILE_SOLID1 _overwriteGameTile TILE_SOLID1
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
rtl rtl
uploadSpin2 entry uploadSpin2 entry
ldx #GAME_NUM_TILES_WIDE*22+36 ldx #GAME_NUM_TILES_WIDE*22+36
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_SOLID1 _overwriteGameTile TILE_SOLID1
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
rtl rtl
uploadSpin3 entry uploadSpin3 entry
ldx #GAME_NUM_TILES_WIDE*22+36 ldx #GAME_NUM_TILES_WIDE*22+36
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_EMPTY _overwriteGameTile TILE_EMPTY
_overwriteGameTile TILE_SOLID1 _overwriteGameTile TILE_SOLID1
rtl rtl
end
scoreIndex dc i2'0'
end