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
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'$0ffc' ; $3 - 0011 - Off-white
dc i2'$0f00' ; $4 - 0100 - Red

View File

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

View File

@ -16,10 +16,51 @@ gamePlayer start
using screenData
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
sta mouseX
lda #STARTING_MOUSE_Y
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
@ -124,6 +165,10 @@ updatePlayer_shift anop
bra updatePlayer_dirty
updatePlayer_dirty anop
beq updatePlayer_noCollision
; Player collision here...
; brk $00
updatePlayer_noCollision anop
lda mouseAddress
sec
sbc #SCREEN_ADDRESS
@ -156,6 +201,5 @@ updatePlayer_done anop
mouseX dc i2'0'
mouseY dc i2'0'
mouseDown dc i2'0'
mouseAddress dc i2'0'
end

View File

@ -766,10 +766,21 @@ shootSpider entry
lda spiderScreenOffset
inc a
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.
; For now, just hard code 900.
bra shootSpider_900
shootSpider_testDistance anop
cmp #SPIDER_DISTANCE_900
blt shootSpider_900
cmp #SPIDER_DISTANCE_600
blt shootSpider_600
lda #SPIDER_SCORE_300
sta spiderScoreType

View File

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

View File

@ -27,6 +27,8 @@ SEGMENT_DIR_RIGHT equ 1
SEGMENT_SPEED_FAST equ 0
SEGMENT_SPEED_SLOW equ 1
STARTING_NUM_LIVES gequ 3
INVALID_TILE_NUM gequ $ffff
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
; switches.
numSegments dc i2'0'
numLives dc i2'0'
gameLevel dc i2'0'
gameScore dc i4'0'
scoreWithin12000 dc i2'0'
@ -130,6 +133,7 @@ numInfieldMushrooms dc i2'0'
; tileType
mouseAddress dc i2'0'
backupStack dc i2'0'
tileJumpTable dc a4'solid0'

View File

@ -14,14 +14,7 @@
score start
using globalData
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
stz gameScore
@ -30,73 +23,19 @@ scoreStartGame entry
stz scoreWithin20000
stz scoreNum20000
ldx #TILE_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
lda #TILE_NUMBER_0
sta tileType,x
_dirtyNonGameTile
; Tens
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
scoreStartGame_loop anop
dex
dex
lda #TILE_EMPTY
sta tileType,x
_dirtyNonGameTile
cpx #P1_SCORE_FIRST_OFFSET
bne scoreStartGame_loop
rtl
@ -165,175 +104,160 @@ scoreAddToTile_done anop
scoreAddOne entry
_incrementScore 1
ldx #TILE_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
jmp scoreAddOneToTile
scoreAddFive entry
_incrementScore 5
ldx #TILE_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
lda #5*4
jmp scoreAddToTile
scoreAddTen entry
_incrementScore 10
lda tileType+TILE_SCORE_ONES_OFFSET
lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddTen_skipZeroOnes
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET
sta tileType+P1_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile
scoreAddTen_skipZeroOnes anop
ldx #TILE_SCORE_TENS_OFFSET
ldx #P1_SCORE_TENS_OFFSET
jmp scoreAddOneToTile
scoreAddOneHundred entry
_incrementScore 100
lda tileType+TILE_SCORE_ONES_OFFSET
lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddHundred_skipZeroOnes
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET
sta tileType+P1_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile
scoreAddHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET
lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddHundred_skipZeroTens
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET
sta tileType+P1_SCORE_TENS_OFFSET
ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile
scoreAddHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET
ldx #P1_SCORE_HUNDREDS_OFFSET
jmp scoreAddOneToTile
scoreAddTwoHundred entry
_incrementScore 200
lda tileType+TILE_SCORE_ONES_OFFSET
lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddTwoHundred_skipZeroOnes
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET
sta tileType+P1_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile
scoreAddTwoHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET
lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddTwoHundred_skipZeroTens
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET
sta tileType+P1_SCORE_TENS_OFFSET
ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile
scoreAddTwoHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET
ldx #P1_SCORE_HUNDREDS_OFFSET
lda #2*4
jmp scoreAddToTile
scoreAddThreeHundred entry
_incrementScore 300
lda tileType+TILE_SCORE_ONES_OFFSET
lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddThreeHundred_skipZeroOnes
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET
sta tileType+P1_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile
scoreAddThreeHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET
lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddThreeHundred_skipZeroTens
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET
sta tileType+P1_SCORE_TENS_OFFSET
ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile
scoreAddThreeHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET
ldx #P1_SCORE_HUNDREDS_OFFSET
lda #3*4
jmp scoreAddToTile
scoreAddSixHundred entry
_incrementScore 600
lda tileType+TILE_SCORE_ONES_OFFSET
lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddSixHundred_skipZeroOnes
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET
sta tileType+P1_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile
scoreAddSixHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET
lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddSixHundred_skipZeroTens
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET
sta tileType+P1_SCORE_TENS_OFFSET
ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile
scoreAddSixHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET
ldx #P1_SCORE_HUNDREDS_OFFSET
lda #6*4
jmp scoreAddToTile
scoreAddNineHundred entry
_incrementScore 900
lda tileType+TILE_SCORE_ONES_OFFSET
lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddNineHundred_skipZeroOnes
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET
sta tileType+P1_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile
scoreAddNineHundred_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET
lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddNineHundred_skipZeroTens
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET
sta tileType+P1_SCORE_TENS_OFFSET
ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile
scoreAddNineHundred_skipZeroTens anop
ldx #TILE_SCORE_HUNDREDS_OFFSET
ldx #P1_SCORE_HUNDREDS_OFFSET
lda #9*4
jmp scoreAddToTile
scoreAddOneThousand entry
_incrementScore 1000
lda tileType+TILE_SCORE_ONES_OFFSET
lda tileType+P1_SCORE_ONES_OFFSET
bne scoreAddOneThousand_skipZeroOnes
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_ONES_OFFSET
ldx #TILE_SCORE_ONES_OFFSET
sta tileType+P1_SCORE_ONES_OFFSET
ldx #P1_SCORE_ONES_OFFSET
_dirtyNonGameTile
scoreAddOneThousand_skipZeroOnes anop
lda tileType+TILE_SCORE_TENS_OFFSET
lda tileType+P1_SCORE_TENS_OFFSET
bne scoreAddOneThousand_skipZeroTens
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_TENS_OFFSET
ldx #TILE_SCORE_TENS_OFFSET
sta tileType+P1_SCORE_TENS_OFFSET
ldx #P1_SCORE_TENS_OFFSET
_dirtyNonGameTile
scoreAddOneThousand_skipZeroTens anop
lda tileType+TILE_SCORE_HUNDREDS_OFFSET
lda tileType+P1_SCORE_HUNDREDS_OFFSET
bne scoreAddOneThousand_skipZeroHundreds
lda #TILE_NUMBER_0
sta tileType+TILE_SCORE_HUNDREDS_OFFSET
ldx #TILE_SCORE_HUNDREDS_OFFSET
sta tileType+P1_SCORE_HUNDREDS_OFFSET
ldx #P1_SCORE_HUNDREDS_OFFSET
_dirtyNonGameTile
scoreAddOneThousand_skipZeroHundreds anop
ldx #TILE_SCORE_THOUSANDS_OFFSET
ldx #P1_SCORE_THOUSANDS_OFFSET
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'

View File

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

View File

@ -188,11 +188,11 @@ drawShipShift entry
and #$0f00
ora #$4084
sta $2,s
lda $a0,s
_collision #$cc0c
and #$00f0
lda #$4408
ora #$4408
sta $a0,s
lda $a2,s
@ -204,10 +204,10 @@ drawShipShift entry
adc #$140
tcs
lda $a0,s
lda $0,s
_collision #$cc0c
and #$00f0
lda #$8808
ora #$8808
sta $0,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_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_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{"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_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 @gTileScreenOffset = (0) x $gEquates{"TOTAL_NUM_TILES"};
@ -371,22 +391,10 @@ sub initNonGameTiles
$y = 5;
addLhsGameString($x, $y, "SCORE:");
$x = $gEquates{"LHS_NUM_TILES_WIDE"} - 2;
$y = 6;
addLhsGameString($x, $y, "0");
$x = 2;
$y = 8;
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;
$y = 12;
addLhsGameString($x, $y, "HIGH SCORE:");
@ -403,21 +411,9 @@ sub initNonGameTiles
$y = 18;
addLhsGameString($x, $y, "SCORE:");
$x = $gEquates{"LHS_NUM_TILES_WIDE"} - 2;
$y = 19;
addLhsGameString($x, $y, "0");
$x = 2;
$y = 21;
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--;
}
}