diff --git a/BuGS/colour.s b/BuGS/colour.s index 11c544a..fe6ddf0 100644 --- a/BuGS/colour.s +++ b/BuGS/colour.s @@ -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 diff --git a/BuGS/game.s b/BuGS/game.s index 1f1b617..8f72704 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -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 diff --git a/BuGS/gamePlayer.s b/BuGS/gamePlayer.s index 649daeb..5f05d83 100644 --- a/BuGS/gamePlayer.s +++ b/BuGS/gamePlayer.s @@ -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 diff --git a/BuGS/gameSpider.s b/BuGS/gameSpider.s index f22c72a..4529808 100644 --- a/BuGS/gameSpider.s +++ b/BuGS/gameSpider.s @@ -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 diff --git a/BuGS/global.macros b/BuGS/global.macros index 1edf209..f246a6b 100644 --- a/BuGS/global.macros +++ b/BuGS/global.macros @@ -158,7 +158,7 @@ _incrementScore_noCarry&SYSCNT anop sec sbc #12000 pha - jsl scoreEvery12000 + jsl playerAddLife pla _incrementScore_noExtraMan&SYSCNT anop sta scoreWithin12000 diff --git a/BuGS/globals.s b/BuGS/globals.s index acb334e..17c1be2 100644 --- a/BuGS/globals.s +++ b/BuGS/globals.s @@ -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' diff --git a/BuGS/score.s b/BuGS/score.s index c520e95..485276e 100644 --- a/BuGS/score.s +++ b/BuGS/score.s @@ -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' diff --git a/BuGS/sprites/scores.s b/BuGS/sprites/scores.s index 2bfbdf2..74b6d75 100644 --- a/BuGS/sprites/scores.s +++ b/BuGS/sprites/scores.s @@ -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 diff --git a/BuGS/sprites/ship.s b/BuGS/sprites/ship.s index 7b02415..2b1952d 100644 --- a/BuGS/sprites/ship.s +++ b/BuGS/sprites/ship.s @@ -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 diff --git a/BuGS/tileData.pl b/BuGS/tileData.pl index 9105eba..2a1d9d8 100755 --- a/BuGS/tileData.pl +++ b/BuGS/tileData.pl @@ -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--; - } }