mirror of
https://github.com/jeremysrand/BuGS.git
synced 2025-01-04 23:30:06 +00:00
Move non-game code out of the main segment to make more room for more high score code.
This commit is contained in:
parent
08be64a61c
commit
701585df1a
182
BuGS/game.s
182
BuGS/game.s
@ -18,6 +18,7 @@
|
||||
; more on-screen action.
|
||||
|
||||
case on
|
||||
datachk off
|
||||
mcopy game.macros
|
||||
keep game
|
||||
|
||||
@ -344,7 +345,7 @@ updateGameState_doneBonus anop
|
||||
stz isSinglePlayer
|
||||
bra updateGameState_twoPlayer
|
||||
updateGameState_isSinglePlayer anop
|
||||
jmp setGameNotRunning
|
||||
jmp >setGameNotRunning
|
||||
updateGameState_notHighScore anop
|
||||
lda isSinglePlayer
|
||||
beq updateGameState_isSinglePlayer
|
||||
@ -514,6 +515,94 @@ copyFromPlayer2Tiles_skip anop
|
||||
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
|
||||
phy
|
||||
tay
|
||||
@ -527,8 +616,7 @@ overwriteGameTile entry
|
||||
inx
|
||||
inx
|
||||
ply
|
||||
rts
|
||||
|
||||
rtl
|
||||
|
||||
pauseGame entry
|
||||
jsl pauseSound
|
||||
@ -698,9 +786,9 @@ setGameTile entry
|
||||
setGameTile_skip anop
|
||||
inx
|
||||
inx
|
||||
rts
|
||||
|
||||
rtl
|
||||
|
||||
; This must come before staticGameBoard because it falls into it.
|
||||
setGameNotRunning entry
|
||||
lda #GAME_STATE_NOT_RUNNING
|
||||
sta gameState
|
||||
@ -710,9 +798,7 @@ setGameNotRunning entry
|
||||
jsl fleaInitLevel
|
||||
jsl addRandomMushrooms
|
||||
stz displayGlobalHighScores
|
||||
jmp staticGameBoard
|
||||
|
||||
|
||||
; Fall through into staticGameBoard...
|
||||
staticGameBoard entry
|
||||
lda #TILE_PLAYER
|
||||
sta tileType+RHS_FIRST_TILE_OFFSET-GAME_NUM_TILES_WIDE-1
|
||||
@ -1153,55 +1239,6 @@ displayConnectionString entry
|
||||
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
|
||||
short m
|
||||
waitForKey_loop anop
|
||||
@ -1213,35 +1250,4 @@ waitForKey_loop anop
|
||||
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
|
||||
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
|
||||
|
@ -137,14 +137,14 @@ _dirtyNonGameTile_skip&SYSCNT anop
|
||||
macro
|
||||
_overwriteGameTile &type
|
||||
lda #&type
|
||||
jsr overwriteGameTile
|
||||
jsl overwriteGameTile
|
||||
mend
|
||||
|
||||
|
||||
macro
|
||||
_setGameTile &type
|
||||
lda #&type
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
mend
|
||||
|
||||
|
||||
@ -153,70 +153,70 @@ _dirtyNonGameTile_skip&SYSCNT anop
|
||||
ldy #SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_SCORE_TEXT_OFFSET+&nthScore*SETTINGS_HIGH_SCORE_SIZE
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
lda #TILE_EMPTY
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda settings,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
mend
|
||||
|
||||
|
||||
@ -225,70 +225,70 @@ _dirtyNonGameTile_skip&SYSCNT anop
|
||||
ldy #2+&nthScore*SETTINGS_HIGH_SCORE_SIZE
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
lda #TILE_EMPTY
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
|
||||
iny
|
||||
lda highScoreResponse,y
|
||||
jsl asciiToTileType
|
||||
jsr setGameTile
|
||||
jsl setGameTile
|
||||
mend
|
||||
|
||||
|
||||
|
@ -193,6 +193,9 @@ backupStack dc i2'0'
|
||||
collision dc i2'0'
|
||||
collisionAddr dc i2'0'
|
||||
numSegments dc i2'0'
|
||||
displayGlobalHighScores dc i2'0'
|
||||
shouldQuit dc i2'1'
|
||||
scoreIndex dc i2'0'
|
||||
|
||||
|
||||
tileJumpTable dc a4'solid0'
|
||||
|
162
BuGS/score.s
162
BuGS/score.s
@ -8,6 +8,7 @@
|
||||
|
||||
|
||||
case on
|
||||
datachk off
|
||||
mcopy score.macros
|
||||
keep score
|
||||
|
||||
@ -16,78 +17,6 @@ score start
|
||||
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
|
||||
stz gameScore
|
||||
stz gameScore+2
|
||||
@ -380,6 +309,90 @@ scoreAddOneThousand_skipZeroHundreds anop
|
||||
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
|
||||
ldy #0
|
||||
checkHighScore_loop anop
|
||||
@ -740,7 +753,7 @@ checkHighScore_isValid anop
|
||||
sta settings+SETTINGS_HIGH_SCORE_OFFSET+HIGH_SCORE_WHO_OFFSET,y
|
||||
iny
|
||||
jsl asciiToTileType
|
||||
jsr overwriteGameTile
|
||||
jsl overwriteGameTile
|
||||
_overwriteGameTile TILE_SOLID2
|
||||
dex
|
||||
dex
|
||||
@ -867,7 +880,4 @@ uploadSpin3 entry
|
||||
_overwriteGameTile TILE_SOLID1
|
||||
rtl
|
||||
|
||||
|
||||
scoreIndex dc i2'0'
|
||||
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user