mirror of https://github.com/jeremysrand/BuGS.git
Hook up the score. Shooting fleas, spiders, scorpions or segments will increase the score. We track the score in two ways. One is just as a 32-bit unsigned integer for doing numeric comparisons on the score (say to the high score list to be implemented in the future) and secondly as a series of numeric digits displayed in a tile. Both are updated.
This commit is contained in:
parent
b85000b4ed
commit
a1b4013e1c
|
@ -82,7 +82,7 @@
|
|||
9D62AF3F2499CD1E00348F45 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
|
||||
9D62AF402499CD3A00348F45 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||
9D8AF0B72535542400C10E3C /* level.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = level.s; sourceTree = "<group>"; };
|
||||
9D8AF0B82535543000C10E3C /* score.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = score.s; sourceTree = "<group>"; };
|
||||
9D8AF0B82535543000C10E3C /* score.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = score.s; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.asm.orcam; };
|
||||
9D8FFC602491CA28005C9327 /* game.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = game.s; sourceTree = "<group>"; };
|
||||
9D8FFC612491CAF0005C9327 /* game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = "<group>"; };
|
||||
9DB1505024C3801100558B87 /* gameFlea.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameFlea.s; sourceTree = "<group>"; };
|
||||
|
|
|
@ -1642,6 +1642,7 @@ addFastHeadSegment entry
|
|||
; Call this with the segment num * 2 in the X register
|
||||
shootSegment entry
|
||||
dec numSegments
|
||||
phx
|
||||
lda segmentStates,x
|
||||
cmp #SEGMENT_STATE_BODY
|
||||
beq shootSegment_body
|
||||
|
@ -1650,6 +1651,7 @@ shootSegment entry
|
|||
shootSegment_body anop
|
||||
jsl scoreAddTen
|
||||
shootSegment_doneScore anop
|
||||
plx
|
||||
lda #SEGMENT_STATE_EXPLODING
|
||||
sta segmentStates,x
|
||||
ldy segmentPosOffset,x
|
||||
|
|
|
@ -691,9 +691,21 @@ shootSpider entry
|
|||
lda spiderScreenOffset
|
||||
inc a
|
||||
sta spiderScreenOffset
|
||||
|
||||
; TODO - Increase the score and set the spiderScoreType to 0, 4 or 8 for
|
||||
; 300, 600 or 900 points depending on the distance from the player.
|
||||
|
||||
; 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
|
||||
|
||||
lda #SPIDER_SCORE_300
|
||||
sta spiderScoreType
|
||||
jmp scoreAddThreeHundred
|
||||
|
||||
shootSpider_600 anop
|
||||
lda #SPIDER_SCORE_600
|
||||
sta spiderScoreType
|
||||
jmp scoreAddSixHundred
|
||||
|
||||
shootSpider_900 anop
|
||||
lda #SPIDER_SCORE_900
|
||||
sta spiderScoreType
|
||||
jmp scoreAddNineHundred
|
||||
|
|
|
@ -8,7 +8,7 @@ s6d2 =
|
|||
|
||||
s7d1 = /Users/jrand/Library/Developer/Xcode/DerivedData/BuGS-bffpexoblaghkzcbtjtzxeulnuto/Build/Products/Debug/BuGS.2mg
|
||||
|
||||
g_limit_speed = 0
|
||||
g_limit_speed = 3
|
||||
|
||||
|
||||
bram1[00] = 00 00 00 01 00 00 0d 06 02 01 01 00 01 00 00 00
|
||||
|
|
260
BuGS/score.s
260
BuGS/score.s
|
@ -6,6 +6,7 @@
|
|||
;Copyright © 2020 Jeremy Rand. All rights reserved.
|
||||
;
|
||||
|
||||
|
||||
case on
|
||||
mcopy score.macros
|
||||
keep score
|
||||
|
@ -13,17 +14,15 @@
|
|||
score start
|
||||
using globalData
|
||||
|
||||
TILE_SCORE_ONES equ 4*LHS_NUM_TILES_WIDE+LHS_FIRST_TILE-2
|
||||
TILE_SCORE_ONES equ LHS_FIRST_TILE+LHS_NUM_TILES_WIDE+LHS_NUM_TILES_WIDE+LHS_NUM_TILES_WIDE+LHS_NUM_TILES_WIDE-2
|
||||
TILE_SCORE_ONES_OFFSET equ TILE_SCORE_ONES*SIZEOF_TILE_INFO
|
||||
TILE_SCORE_TENS_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
|
||||
|
||||
scoreStartGame entry
|
||||
stz gameScore
|
||||
stz gameScore+2
|
||||
lda #1
|
||||
sta gameIsHighScore
|
||||
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
lda #TILE_NUMBER_0
|
||||
|
@ -96,53 +95,268 @@ scoreStartGame entry
|
|||
rtl
|
||||
|
||||
|
||||
scoreAddOne entry
|
||||
; TODO - Write this code...
|
||||
; The score tile to increment is in the X register
|
||||
scoreAddOneToTile entry
|
||||
_dirtyNonGameTile
|
||||
lda tileType,x
|
||||
beq scoreAddOneToTile_empty
|
||||
cmp #TILE_NUMBER_9
|
||||
beq scoreAddOneToTile_isNine anop
|
||||
clc
|
||||
adc #4
|
||||
bra scoreAddOneToTile_done
|
||||
scoreAddOneToTile_empty anop
|
||||
lda #TILE_NUMBER_1
|
||||
scoreAddOneToTile_done anop
|
||||
sta tileType,x
|
||||
rtl
|
||||
scoreAddOneToTile_isNine anop
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType,x
|
||||
dex
|
||||
dex
|
||||
jmp scoreAddOneToTile
|
||||
|
||||
|
||||
; The score tile to add to is in the X register
|
||||
; The amount to add to the tile is in the accumulator
|
||||
; and must be 4 to 36 in multiples of 4. This is because
|
||||
; the tile types are all 4 apart. So, to add one, we
|
||||
; actually add 4 to the tile type.
|
||||
scoreAddToTile entry
|
||||
ldy tileType,x
|
||||
bne scoreAddToTile_notEmpty
|
||||
tay
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType,x
|
||||
tya
|
||||
scoreAddToTile_notEmpty anop
|
||||
clc
|
||||
adc tileType,x
|
||||
cmp #TILE_NUMBER_9+1
|
||||
blt scoreAddToTile_done
|
||||
sec
|
||||
sbc #40
|
||||
sta tileType,x
|
||||
_dirtyNonGameTile
|
||||
dex
|
||||
dex
|
||||
jmp scoreAddOneToTile
|
||||
scoreAddToTile_done anop
|
||||
sta tileType,x
|
||||
_dirtyNonGameTile
|
||||
rtl
|
||||
|
||||
|
||||
scoreAddOne entry
|
||||
inc gameScore
|
||||
bne scoreAddOne_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddOne_noCarry anop
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
jmp scoreAddOneToTile
|
||||
|
||||
|
||||
scoreAddFive entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #5
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddFive_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddFive_noCarry anop
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
lda #5*4
|
||||
jmp scoreAddToTile
|
||||
|
||||
|
||||
scoreAddTen entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #10
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddTen_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddTen_noCarry anop
|
||||
lda tileType+TILE_SCORE_ONES_OFFSET
|
||||
bne scoreAddTen_skipZeroOnes
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_ONES_OFFSET
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddTen_skipZeroOnes anop
|
||||
ldx #TILE_SCORE_TENS_OFFSET
|
||||
jmp scoreAddOneToTile
|
||||
|
||||
|
||||
scoreAddOneHundred entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #100
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddHundred_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddHundred_noCarry anop
|
||||
lda tileType+TILE_SCORE_ONES_OFFSET
|
||||
bne scoreAddHundred_skipZeroOnes
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_ONES_OFFSET
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddHundred_skipZeroOnes anop
|
||||
lda tileType+TILE_SCORE_TENS_OFFSET
|
||||
bne scoreAddHundred_skipZeroTens
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_TENS_OFFSET
|
||||
ldx #TILE_SCORE_TENS_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddHundred_skipZeroTens anop
|
||||
ldx #TILE_SCORE_HUNDREDS_OFFSET
|
||||
jmp scoreAddOneToTile
|
||||
|
||||
|
||||
scoreAddTwoHundred entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #200
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddTwoHundred_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddTwoHundred_noCarry anop
|
||||
lda tileType+TILE_SCORE_ONES_OFFSET
|
||||
bne scoreAddTwoHundred_skipZeroOnes
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_ONES_OFFSET
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddTwoHundred_skipZeroOnes anop
|
||||
lda tileType+TILE_SCORE_TENS_OFFSET
|
||||
bne scoreAddTwoHundred_skipZeroTens
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_TENS_OFFSET
|
||||
ldx #TILE_SCORE_TENS_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddTwoHundred_skipZeroTens anop
|
||||
ldx #TILE_SCORE_HUNDREDS_OFFSET
|
||||
lda #2*4
|
||||
jmp scoreAddToTile
|
||||
|
||||
|
||||
scoreAddThreeHundred entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #300
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddThreeHundred_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddThreeHundred_noCarry anop
|
||||
lda tileType+TILE_SCORE_ONES_OFFSET
|
||||
bne scoreAddThreeHundred_skipZeroOnes
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_ONES_OFFSET
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddThreeHundred_skipZeroOnes anop
|
||||
lda tileType+TILE_SCORE_TENS_OFFSET
|
||||
bne scoreAddThreeHundred_skipZeroTens
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_TENS_OFFSET
|
||||
ldx #TILE_SCORE_TENS_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddThreeHundred_skipZeroTens anop
|
||||
ldx #TILE_SCORE_HUNDREDS_OFFSET
|
||||
lda #3*4
|
||||
jmp scoreAddToTile
|
||||
|
||||
|
||||
scoreAddSixHundred entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #600
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddSixHundred_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddSixHundred_noCarry anop
|
||||
lda tileType+TILE_SCORE_ONES_OFFSET
|
||||
bne scoreAddSixHundred_skipZeroOnes
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_ONES_OFFSET
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddSixHundred_skipZeroOnes anop
|
||||
lda tileType+TILE_SCORE_TENS_OFFSET
|
||||
bne scoreAddSixHundred_skipZeroTens
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_TENS_OFFSET
|
||||
ldx #TILE_SCORE_TENS_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddSixHundred_skipZeroTens anop
|
||||
ldx #TILE_SCORE_HUNDREDS_OFFSET
|
||||
lda #6*4
|
||||
jmp scoreAddToTile
|
||||
|
||||
|
||||
scoreAddNineHundred entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #900
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddNineHundred_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddNineHundred_noCarry anop
|
||||
lda tileType+TILE_SCORE_ONES_OFFSET
|
||||
bne scoreAddNineHundred_skipZeroOnes
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_ONES_OFFSET
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddNineHundred_skipZeroOnes anop
|
||||
lda tileType+TILE_SCORE_TENS_OFFSET
|
||||
bne scoreAddNineHundred_skipZeroTens
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_TENS_OFFSET
|
||||
ldx #TILE_SCORE_TENS_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddNineHundred_skipZeroTens anop
|
||||
ldx #TILE_SCORE_HUNDREDS_OFFSET
|
||||
lda #9*4
|
||||
jmp scoreAddToTile
|
||||
|
||||
|
||||
scoreAddOneThousand entry
|
||||
; TODO - Write this code...
|
||||
rtl
|
||||
lda #1000
|
||||
clc
|
||||
adc gameScore
|
||||
sta gameScore
|
||||
bcc scoreAddOneThousand_noCarry
|
||||
inc gameScore+2
|
||||
scoreAddOneThousand_noCarry anop
|
||||
lda tileType+TILE_SCORE_ONES_OFFSET
|
||||
bne scoreAddOneThousand_skipZeroOnes
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_ONES_OFFSET
|
||||
ldx #TILE_SCORE_ONES_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddOneThousand_skipZeroOnes anop
|
||||
lda tileType+TILE_SCORE_TENS_OFFSET
|
||||
bne scoreAddOneThousand_skipZeroTens
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_TENS_OFFSET
|
||||
ldx #TILE_SCORE_TENS_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddOneThousand_skipZeroTens anop
|
||||
lda tileType+TILE_SCORE_HUNDREDS_OFFSET
|
||||
bne scoreAddOneThousand_skipZeroHundreds
|
||||
lda #TILE_NUMBER_0
|
||||
sta tileType+TILE_SCORE_HUNDREDS_OFFSET
|
||||
ldx #TILE_SCORE_HUNDREDS_OFFSET
|
||||
_dirtyNonGameTile
|
||||
scoreAddOneThousand_skipZeroHundreds anop
|
||||
ldx #TILE_SCORE_THOUSANDS_OFFSET
|
||||
jmp scoreAddOneToTile
|
||||
|
||||
|
||||
highScore dc i4'0'
|
||||
gameScore dc i4'0'
|
||||
gameIsHighScore dc i2'1'
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue