Change the spider score colour to be the same as mushroom colours so the player does not detect it as a collision. Add code to display the number of lives and add to the number of lives ever 12,000 points. This lays the groundwork for handling player death and collisions.

This commit is contained in:
Jeremy Rand 2020-11-09 00:12:51 -05:00
parent f58a831eb9
commit c24b8ad072
10 changed files with 241 additions and 263 deletions

View File

@ -33,7 +33,7 @@ loop lda colour1,y
colour1 anop colour1 anop
dc i2'$0000' ; $0 - 0000 - Black dc i2'$0000' ; $0 - 0000 - Black
dc i2'$00f0' ; $1 - 0001 - Green Mushrooms ($1 to $3) dc i2'$00f0' ; $1 - 0001 - Green Mushrooms and spider scores ($1 to $3)
dc i2'$0f00' ; $2 - 0010 - Red dc i2'$0f00' ; $2 - 0010 - Red
dc i2'$0ffc' ; $3 - 0011 - Off-white dc i2'$0ffc' ; $3 - 0011 - Off-white
dc i2'$0f00' ; $4 - 0100 - Red dc i2'$0f00' ; $4 - 0100 - Red

View File

@ -210,10 +210,15 @@ startGame entry
stz gameRunning stz gameRunning
stz numSegments stz numSegments
jsl addRandomMushrooms jsl addRandomMushrooms
jsl scoreStartGame
jsl initPlayer jsl initPlayer
jsl spiderInitGame jsl spiderInitGame
jsl levelInit jsl levelInit
; Fall through intentionally here...
startLevel entry
jsl playerLevelStart
jmp levelStart jmp levelStart
checkKeyboard entry checkKeyboard entry
@ -251,9 +256,6 @@ checkKey_loop2 anop
beq checkKey_shootMushroom beq checkKey_shootMushroom
cmp #'M' cmp #'M'
beq checkKey_shootMushroom beq checkKey_shootMushroom
cmp #'+'
beq checkKey_scoreAdd
cmp #'g' cmp #'g'
beq checkKey_game beq checkKey_game
@ -280,9 +282,6 @@ checkKey_shootCentipede anop
checkKey_shootMushroom anop checkKey_shootMushroom anop
jmp shootRandomMushroom jmp shootRandomMushroom
checkKey_scoreAdd anop
jmp scoreAddTwentyThousand
checkKey_quit anop checkKey_quit anop
stz shouldQuit stz shouldQuit

View File

@ -16,10 +16,51 @@ gamePlayer start
using screenData using screenData
initPlayer entry initPlayer entry
ldy #STARTING_NUM_LIVES
sty numLives
ldx #P1_LIVES_OFFSET
initPlayer_loop anop
lda #TILE_PLAYER
sta tileType,x
phy
_dirtyNonGameTile
ply
dex
dex
dey
bne initPlayer_loop
rtl
playerLevelStart entry
lda #STARTING_MOUSE_X lda #STARTING_MOUSE_X
sta mouseX sta mouseX
lda #STARTING_MOUSE_Y lda #STARTING_MOUSE_Y
sta mouseY sta mouseY
dec numLives
lda #P1_LIVES_OFFSET
sec
sbc numLives
sec
sbc numLives
tax
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
rtl
playerAddLife entry
lda #P1_LIVES_OFFSET
sec
sbc numLives
sec
sbc numLives
tax
inc numLives
lda #TILE_PLAYER
sta tileType,x
_dirtyNonGameTile
rtl rtl
@ -124,6 +165,10 @@ updatePlayer_shift anop
bra updatePlayer_dirty bra updatePlayer_dirty
updatePlayer_dirty anop updatePlayer_dirty anop
beq updatePlayer_noCollision
; Player collision here...
; brk $00
updatePlayer_noCollision anop
lda mouseAddress lda mouseAddress
sec sec
sbc #SCREEN_ADDRESS sbc #SCREEN_ADDRESS
@ -156,6 +201,5 @@ updatePlayer_done anop
mouseX dc i2'0' mouseX dc i2'0'
mouseY dc i2'0' mouseY dc i2'0'
mouseDown dc i2'0' mouseDown dc i2'0'
mouseAddress dc i2'0'
end end

View File

@ -766,10 +766,21 @@ shootSpider entry
lda spiderScreenOffset lda spiderScreenOffset
inc a inc a
sta spiderScreenOffset sta spiderScreenOffset
cmp mouseAddress
blt shootSpider_playerBelow
sec
sbc mouseAddress
bra shootSpider_testDistance
shootSpider_playerBelow anop
lda mouseAddress
sec
sbc spiderScreenOffset
; TODO - Set the spiderScoreType to 0, 4 or 8 for 300, 600 or 900 points depending on the distance from the player. shootSpider_testDistance anop
; For now, just hard code 900. cmp #SPIDER_DISTANCE_900
bra shootSpider_900 blt shootSpider_900
cmp #SPIDER_DISTANCE_600
blt shootSpider_600
lda #SPIDER_SCORE_300 lda #SPIDER_SCORE_300
sta spiderScoreType sta spiderScoreType

View File

@ -158,7 +158,7 @@ _incrementScore_noCarry&SYSCNT anop
sec sec
sbc #12000 sbc #12000
pha pha
jsl scoreEvery12000 jsl playerAddLife
pla pla
_incrementScore_noExtraMan&SYSCNT anop _incrementScore_noExtraMan&SYSCNT anop
sta scoreWithin12000 sta scoreWithin12000

View File

@ -27,6 +27,8 @@ SEGMENT_DIR_RIGHT equ 1
SEGMENT_SPEED_FAST equ 0 SEGMENT_SPEED_FAST equ 0
SEGMENT_SPEED_SLOW equ 1 SEGMENT_SPEED_SLOW equ 1
STARTING_NUM_LIVES gequ 3
INVALID_TILE_NUM gequ $ffff INVALID_TILE_NUM gequ $ffff
TILE_STATE_CLEAN gequ 0 TILE_STATE_CLEAN gequ 0
@ -119,6 +121,7 @@ gameRunning dc i2'1'
; this information will need to be copied to a backup location when the player ; this information will need to be copied to a backup location when the player
; switches. ; switches.
numSegments dc i2'0' numSegments dc i2'0'
numLives dc i2'0'
gameLevel dc i2'0' gameLevel dc i2'0'
gameScore dc i4'0' gameScore dc i4'0'
scoreWithin12000 dc i2'0' scoreWithin12000 dc i2'0'
@ -130,6 +133,7 @@ numInfieldMushrooms dc i2'0'
; tileType ; tileType
mouseAddress dc i2'0'
backupStack dc i2'0' backupStack dc i2'0'
tileJumpTable dc a4'solid0' tileJumpTable dc a4'solid0'

View File

@ -14,14 +14,7 @@
score start score start
using globalData using globalData
using tileData using tileData
TILE_SCORE_7TH_ROW equ LHS_FIRST_TILE+7*LHS_NUM_TILES_WIDE
TILE_SCORE_ONES equ TILE_SCORE_7TH_ROW-2
TILE_SCORE_ONES_OFFSET equ TILE_SCORE_ONES*SIZEOF_TILE_INFO
TILE_SCORE_TENS_OFFSET equ TILE_SCORE_ONES_OFFSET-SIZEOF_TILE_INFO
TILE_SCORE_HUNDREDS_OFFSET equ TILE_SCORE_TENS_OFFSET-SIZEOF_TILE_INFO
TILE_SCORE_THOUSANDS_OFFSET equ TILE_SCORE_HUNDREDS_OFFSET-SIZEOF_TILE_INFO
TILE_SCORE_TEN_THOUSANDS_OFFSET equ TILE_SCORE_THOUSANDS_OFFSET-SIZEOF_TILE_INFO
scoreStartGame entry scoreStartGame entry
stz gameScore stz gameScore
@ -30,73 +23,19 @@ scoreStartGame entry
stz scoreWithin20000 stz scoreWithin20000
stz scoreNum20000 stz scoreNum20000
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType,x sta tileType,x
_dirtyNonGameTile _dirtyNonGameTile
; Tens scoreStartGame_loop anop
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Hundreds
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Thousands
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Tens of Thousands
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Hundreds of Thousands
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Millions
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Tens of Millions
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Hundreds of Millions
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
; Billions
dex dex
dex dex
lda #TILE_EMPTY lda #TILE_EMPTY
sta tileType,x sta tileType,x
_dirtyNonGameTile _dirtyNonGameTile
cpx #P1_SCORE_FIRST_OFFSET
bne scoreStartGame_loop
rtl rtl
@ -165,175 +104,160 @@ scoreAddToTile_done anop
scoreAddOne entry scoreAddOne entry
_incrementScore 1 _incrementScore 1
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
jmp scoreAddOneToTile jmp scoreAddOneToTile
scoreAddFive entry scoreAddFive entry
_incrementScore 5 _incrementScore 5
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
lda #5*4 lda #5*4
jmp scoreAddToTile jmp scoreAddToTile
scoreAddTen entry scoreAddTen entry
_incrementScore 10 _incrementScore 10
lda tileType+TILE_SCORE_ONES_OFFSET lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddTen_skipZeroOnes bne scoreAddTen_skipZeroOnes
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET sta tileType+P1_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddTen_skipZeroOnes anop scoreAddTen_skipZeroOnes anop
ldx #TILE_SCORE_TENS_OFFSET ldx #P1_SCORE_TENS_OFFSET
jmp scoreAddOneToTile jmp scoreAddOneToTile
scoreAddOneHundred entry scoreAddOneHundred entry
_incrementScore 100 _incrementScore 100
lda tileType+TILE_SCORE_ONES_OFFSET lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddHundred_skipZeroOnes bne scoreAddHundred_skipZeroOnes
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET sta tileType+P1_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddHundred_skipZeroOnes anop scoreAddHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddHundred_skipZeroTens bne scoreAddHundred_skipZeroTens
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET sta tileType+P1_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddHundred_skipZeroTens anop scoreAddHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET ldx #P1_SCORE_HUNDREDS_OFFSET
jmp scoreAddOneToTile jmp scoreAddOneToTile
scoreAddTwoHundred entry scoreAddTwoHundred entry
_incrementScore 200 _incrementScore 200
lda tileType+TILE_SCORE_ONES_OFFSET lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddTwoHundred_skipZeroOnes bne scoreAddTwoHundred_skipZeroOnes
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET sta tileType+P1_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddTwoHundred_skipZeroOnes anop scoreAddTwoHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddTwoHundred_skipZeroTens bne scoreAddTwoHundred_skipZeroTens
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET sta tileType+P1_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddTwoHundred_skipZeroTens anop scoreAddTwoHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET ldx #P1_SCORE_HUNDREDS_OFFSET
lda #2*4 lda #2*4
jmp scoreAddToTile jmp scoreAddToTile
scoreAddThreeHundred entry scoreAddThreeHundred entry
_incrementScore 300 _incrementScore 300
lda tileType+TILE_SCORE_ONES_OFFSET lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddThreeHundred_skipZeroOnes bne scoreAddThreeHundred_skipZeroOnes
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET sta tileType+P1_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddThreeHundred_skipZeroOnes anop scoreAddThreeHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddThreeHundred_skipZeroTens bne scoreAddThreeHundred_skipZeroTens
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET sta tileType+P1_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddThreeHundred_skipZeroTens anop scoreAddThreeHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET ldx #P1_SCORE_HUNDREDS_OFFSET
lda #3*4 lda #3*4
jmp scoreAddToTile jmp scoreAddToTile
scoreAddSixHundred entry scoreAddSixHundred entry
_incrementScore 600 _incrementScore 600
lda tileType+TILE_SCORE_ONES_OFFSET lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddSixHundred_skipZeroOnes bne scoreAddSixHundred_skipZeroOnes
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET sta tileType+P1_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddSixHundred_skipZeroOnes anop scoreAddSixHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddSixHundred_skipZeroTens bne scoreAddSixHundred_skipZeroTens
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET sta tileType+P1_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddSixHundred_skipZeroTens anop scoreAddSixHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET ldx #P1_SCORE_HUNDREDS_OFFSET
lda #6*4 lda #6*4
jmp scoreAddToTile jmp scoreAddToTile
scoreAddNineHundred entry scoreAddNineHundred entry
_incrementScore 900 _incrementScore 900
lda tileType+TILE_SCORE_ONES_OFFSET lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddNineHundred_skipZeroOnes bne scoreAddNineHundred_skipZeroOnes
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET sta tileType+P1_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddNineHundred_skipZeroOnes anop scoreAddNineHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddNineHundred_skipZeroTens bne scoreAddNineHundred_skipZeroTens
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET sta tileType+P1_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddNineHundred_skipZeroTens anop scoreAddNineHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET ldx #P1_SCORE_HUNDREDS_OFFSET
lda #9*4 lda #9*4
jmp scoreAddToTile jmp scoreAddToTile
scoreAddOneThousand entry scoreAddOneThousand entry
_incrementScore 1000 _incrementScore 1000
lda tileType+TILE_SCORE_ONES_OFFSET lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddOneThousand_skipZeroOnes bne scoreAddOneThousand_skipZeroOnes
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET sta tileType+P1_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddOneThousand_skipZeroOnes anop scoreAddOneThousand_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddOneThousand_skipZeroTens bne scoreAddOneThousand_skipZeroTens
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET sta tileType+P1_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddOneThousand_skipZeroTens anop scoreAddOneThousand_skipZeroTens anop
lda tileType+TILE_SCORE_HUNDREDS_OFFSET lda tileType+P1_SCORE_HUNDREDS_OFFSET
bne scoreAddOneThousand_skipZeroHundreds bne scoreAddOneThousand_skipZeroHundreds
lda #TILE_NUMBER_0 lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_HUNDREDS_OFFSET sta tileType+P1_SCORE_HUNDREDS_OFFSET
ldx #TILE_SCORE_HUNDREDS_OFFSET ldx #P1_SCORE_HUNDREDS_OFFSET
_dirtyNonGameTile _dirtyNonGameTile
scoreAddOneThousand_skipZeroHundreds anop scoreAddOneThousand_skipZeroHundreds anop
ldx #TILE_SCORE_THOUSANDS_OFFSET ldx #P1_SCORE_THOUSANDS_OFFSET
jmp scoreAddOneToTile jmp scoreAddOneToTile
; This function is used purely for debug to test high score threshold stuff. It
; doesn't do all the right things though to update the score on the display so I am
; cheating a bit here.
scoreAddTwentyThousand entry
_incrementScore 20000
ldx #TILE_SCORE_TEN_THOUSANDS_OFFSET
lda #2*4
jmp scoreAddToTile
scoreEvery12000 entry
; TODO - Write code to add a new life.
rtl
highScore dc i4'0' highScore dc i4'0'

View File

@ -34,33 +34,33 @@ score300 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $4,s sta $4,s
lda $a0,s lda $a0,s
; and #$f0ff and #$f0ff
ora #$0800 ora #$0300
sta $a0,s sta $a0,s
lda $a2,s lda $a2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a2,s sta $a2,s
lda $a4,s lda $a4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a4,s sta $a4,s
tsc tsc
@ -68,33 +68,33 @@ score300 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $4,s sta $4,s
lda $a0,s lda $a0,s
; and #$f0ff and #$f0ff
ora #$0800 ora #$0300
sta $a0,s sta $a0,s
lda $a2,s lda $a2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a2,s sta $a2,s
lda $a4,s lda $a4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a4,s sta $a4,s
tsc tsc
@ -102,18 +102,18 @@ score300 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $4,s sta $4,s
_spriteFooter _spriteFooter
@ -142,33 +142,33 @@ score600 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $4,s sta $4,s
lda $a0,s lda $a0,s
; and #$fff0 and #$fff0
ora #$0008 ora #$0003
sta $a0,s sta $a0,s
lda $a2,s lda $a2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a2,s sta $a2,s
lda $a4,s lda $a4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a4,s sta $a4,s
tsc tsc
@ -176,33 +176,33 @@ score600 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $4,s sta $4,s
lda $a0,s lda $a0,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a0,s sta $a0,s
lda $a2,s lda $a2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a2,s sta $a2,s
lda $a4,s lda $a4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a4,s sta $a4,s
tsc tsc
@ -210,18 +210,18 @@ score600 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $4,s sta $4,s
_spriteFooter _spriteFooter
@ -250,33 +250,33 @@ score900 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $4,s sta $4,s
lda $a0,s lda $a0,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a0,s sta $a0,s
lda $a2,s lda $a2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a2,s sta $a2,s
lda $a4,s lda $a4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a4,s sta $a4,s
tsc tsc
@ -284,33 +284,33 @@ score900 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $4,s sta $4,s
lda $a0,s lda $a0,s
; and #$f0ff and #$f0ff
ora #$0800 ora #$0300
sta $a0,s sta $a0,s
lda $a2,s lda $a2,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a2,s sta $a2,s
lda $a4,s lda $a4,s
; and #$f0f0 and #$f0f0
ora #$0808 ora #$0303
sta $a4,s sta $a4,s
tsc tsc
@ -318,18 +318,18 @@ score900 entry
tcs tcs
lda $0,s lda $0,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $0,s sta $0,s
lda $2,s lda $2,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $2,s sta $2,s
lda $4,s lda $4,s
; and #$00f0 and #$00f0
ora #$8808 ora #$3303
sta $4,s sta $4,s
_spriteFooter _spriteFooter

View File

@ -188,11 +188,11 @@ drawShipShift entry
and #$0f00 and #$0f00
ora #$4084 ora #$4084
sta $2,s sta $2,s
lda $a0,s lda $a0,s
_collision #$cc0c _collision #$cc0c
and #$00f0 and #$00f0
lda #$4408 ora #$4408
sta $a0,s sta $a0,s
lda $a2,s lda $a2,s
@ -204,10 +204,10 @@ drawShipShift entry
adc #$140 adc #$140
tcs tcs
lda $a0,s lda $0,s
_collision #$cc0c _collision #$cc0c
and #$00f0 and #$00f0
lda #$8808 ora #$8808
sta $0,s sta $0,s
lda $2,s lda $2,s

View File

@ -54,6 +54,8 @@ $gEquates{"NUM_NON_GAME_TILES"} = $gEquates{"NUM_RHS_NON_GAMES_TILES"} + $gEquat
$gEquates{"SPIDER_MAX_NUM_POSSIBLE_ROWS"} = 10; $gEquates{"SPIDER_MAX_NUM_POSSIBLE_ROWS"} = 10;
$gEquates{"SPIDER_STARTING_TOP_ROW"} = $gEquates{"GAME_NUM_TILES_TALL"} - $gEquates{"SPIDER_MAX_NUM_POSSIBLE_ROWS"}; $gEquates{"SPIDER_STARTING_TOP_ROW"} = $gEquates{"GAME_NUM_TILES_TALL"} - $gEquates{"SPIDER_MAX_NUM_POSSIBLE_ROWS"};
$gEquates{"SPIDER_STARTING_TOP_ROW_OFFSET"} = $gEquates{"SPIDER_STARTING_TOP_ROW"} * $gEquates{"GAME_NUM_TILES_WIDE"} * $gEquates{"SIZEOF_TILE_INFO"}; $gEquates{"SPIDER_STARTING_TOP_ROW_OFFSET"} = $gEquates{"SPIDER_STARTING_TOP_ROW"} * $gEquates{"GAME_NUM_TILES_WIDE"} * $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"SPIDER_DISTANCE_900"} = $gEquates{"SCREEN_BYTES_PER_ROW"} * $gEquates{"TILE_PIXEL_HEIGHT"} * 2;
$gEquates{"SPIDER_DISTANCE_600"} = $gEquates{"SCREEN_BYTES_PER_ROW"} * $gEquates{"TILE_PIXEL_HEIGHT"} * 5;
$gEquates{"PLAYER_TILES_HIGH"} = 7; $gEquates{"PLAYER_TILES_HIGH"} = 7;
$gEquates{"MOUSE_MAX_X"} = (($gEquates{"GAME_NUM_TILES_WIDE"} - 1) * $gEquates{"TILE_PIXEL_WIDTH"}) + 1; $gEquates{"MOUSE_MAX_X"} = (($gEquates{"GAME_NUM_TILES_WIDE"} - 1) * $gEquates{"TILE_PIXEL_WIDTH"}) + 1;
@ -61,6 +63,24 @@ $gEquates{"MOUSE_MAX_Y"} = (($gEquates{"PLAYER_TILES_HIGH"} - 1) * $gEquates{"TI
$gEquates{"STARTING_MOUSE_X"} = $gEquates{"MOUSE_MAX_X"} / 2; $gEquates{"STARTING_MOUSE_X"} = $gEquates{"MOUSE_MAX_X"} / 2;
$gEquates{"STARTING_MOUSE_Y"} = $gEquates{"MOUSE_MAX_Y"} - 1; $gEquates{"STARTING_MOUSE_Y"} = $gEquates{"MOUSE_MAX_Y"} - 1;
$gEquates{"P1_SCORE_ONES_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 6) + ($gEquates{"LHS_NUM_TILES_WIDE"} - 2)) * $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P1_SCORE_TENS_OFFSET"} = $gEquates{"P1_SCORE_ONES_OFFSET"} - $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P1_SCORE_HUNDREDS_OFFSET"} = $gEquates{"P1_SCORE_TENS_OFFSET"} - $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P1_SCORE_THOUSANDS_OFFSET"} = $gEquates{"P1_SCORE_HUNDREDS_OFFSET"} - $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P1_SCORE_FIRST_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 6)) * $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P1_LIVES_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 9) + ($gEquates{"LHS_NUM_TILES_WIDE"} - 2)) * $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P2_SCORE_ONES_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 19) + ($gEquates{"LHS_NUM_TILES_WIDE"} - 2)) * $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P2_SCORE_TENS_OFFSET"} = $gEquates{"P2_SCORE_ONES_OFFSET"} - $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P2_SCORE_HUNDREDS_OFFSET"} = $gEquates{"P2_SCORE_TENS_OFFSET"} - $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P2_SCORE_THOUSANDS_OFFSET"} = $gEquates{"P2_SCORE_HUNDREDS_OFFSET"} - $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P2_SCORE_FIRST_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 19)) * $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"P2_LIVES_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 22) + ($gEquates{"LHS_NUM_TILES_WIDE"} - 2)) * $gEquates{"SIZEOF_TILE_INFO"};
$gEquates{"HIGH_SCORE_ONES_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 13) + ($gEquates{"LHS_NUM_TILES_WIDE"} - 2)) * $gEquates{"SIZEOF_TILE_INFO"};
our @gTileDirty = ("TILE_STATE_CLEAN") x $gEquates{"TOTAL_NUM_TILES"}; our @gTileDirty = ("TILE_STATE_CLEAN") x $gEquates{"TOTAL_NUM_TILES"};
our @gTileScreenOffset = (0) x $gEquates{"TOTAL_NUM_TILES"}; our @gTileScreenOffset = (0) x $gEquates{"TOTAL_NUM_TILES"};
@ -371,22 +391,10 @@ sub initNonGameTiles
$y = 5; $y = 5;
addLhsGameString($x, $y, "SCORE:"); addLhsGameString($x, $y, "SCORE:");
$x = $gEquates{"LHS_NUM_TILES_WIDE"} - 2;
$y = 6;
addLhsGameString($x, $y, "0");
$x = 2; $x = 2;
$y = 8; $y = 8;
addLhsGameString($x, $y, "LIVES:"); addLhsGameString($x, $y, "LIVES:");
$x = $gEquates{"LHS_NUM_TILES_WIDE"} - 2;
$y = 9;
for (my $i = 0; $i < 3; $i++)
{
addLhsGameTile($x, $y, "TILE_PLAYER");
$x--;
}
$x = 0; $x = 0;
$y = 12; $y = 12;
addLhsGameString($x, $y, "HIGH SCORE:"); addLhsGameString($x, $y, "HIGH SCORE:");
@ -403,21 +411,9 @@ sub initNonGameTiles
$y = 18; $y = 18;
addLhsGameString($x, $y, "SCORE:"); addLhsGameString($x, $y, "SCORE:");
$x = $gEquates{"LHS_NUM_TILES_WIDE"} - 2;
$y = 19;
addLhsGameString($x, $y, "0");
$x = 2; $x = 2;
$y = 21; $y = 21;
addLhsGameString($x, $y, "LIVES:"); addLhsGameString($x, $y, "LIVES:");
$x = $gEquates{"LHS_NUM_TILES_WIDE"} - 2;
$y = 22;
for (my $i = 0; $i < 3; $i++)
{
addLhsGameTile($x, $y, "TILE_PLAYER");
$x--;
}
} }