Add scoring
This commit is contained in:
parent
65a8c4cc1a
commit
f3e5856ac4
56
mato8.asm
56
mato8.asm
|
@ -16,6 +16,8 @@ define direction_down 6
|
||||||
define direction_left 12
|
define direction_left 12
|
||||||
define direction_right 18
|
define direction_right 18
|
||||||
|
|
||||||
|
define score_high_reg v5
|
||||||
|
define score_low_reg v6
|
||||||
define game_over_reg v7
|
define game_over_reg v7
|
||||||
define fruit_x_reg v8
|
define fruit_x_reg v8
|
||||||
define fruit_y_reg v9
|
define fruit_y_reg v9
|
||||||
|
@ -29,6 +31,9 @@ start:
|
||||||
cls
|
cls
|
||||||
ld game_over_reg, 0
|
ld game_over_reg, 0
|
||||||
|
|
||||||
|
ld score_high_reg, 0
|
||||||
|
ld score_low_reg, 0
|
||||||
|
|
||||||
rnd head_x_reg, 63
|
rnd head_x_reg, 63
|
||||||
rnd head_y_reg, 31
|
rnd head_y_reg, 31
|
||||||
|
|
||||||
|
@ -80,6 +85,8 @@ game_over:
|
||||||
ld st, v0
|
ld st, v0
|
||||||
call wait
|
call wait
|
||||||
|
|
||||||
|
call display_score
|
||||||
|
|
||||||
ld v0, 30
|
ld v0, 30
|
||||||
call wait
|
call wait
|
||||||
|
|
||||||
|
@ -96,6 +103,42 @@ game_over:
|
||||||
|
|
||||||
jp start
|
jp start
|
||||||
|
|
||||||
|
display_score:
|
||||||
|
cls
|
||||||
|
|
||||||
|
ld i, score_high_bcd
|
||||||
|
ld b, score_high_reg
|
||||||
|
ld i, score_low_bcd
|
||||||
|
ld b, score_low_reg
|
||||||
|
|
||||||
|
ld i, score_low_bcd
|
||||||
|
ld v2, [i]
|
||||||
|
; v0 and v1 are zero, v2 is ones
|
||||||
|
ld v3, v2
|
||||||
|
ld i, score_high_bcd
|
||||||
|
ld v2, [i]
|
||||||
|
; v0 is thousands, v1 is hundreds, v2 is tens
|
||||||
|
|
||||||
|
; Score is a four-digit number stored in v0 to v3
|
||||||
|
ld v4, 0
|
||||||
|
ld v5, 0
|
||||||
|
ld f, v0
|
||||||
|
drw v4, v5, 5
|
||||||
|
|
||||||
|
add v4, 5
|
||||||
|
ld f, v1
|
||||||
|
drw v4, v5, 5
|
||||||
|
|
||||||
|
add v4, 5
|
||||||
|
ld f, v2
|
||||||
|
drw v4, v5, 5
|
||||||
|
|
||||||
|
add v4, 5
|
||||||
|
ld f, v3
|
||||||
|
drw v4, v5, 5
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
wait:
|
wait:
|
||||||
ld dt, v0
|
ld dt, v0
|
||||||
wait_loop:
|
wait_loop:
|
||||||
|
@ -261,6 +304,8 @@ collision:
|
||||||
eat_fruit:
|
eat_fruit:
|
||||||
; Jumping to collision skips tail moving code, so we get the snake
|
; Jumping to collision skips tail moving code, so we get the snake
|
||||||
; lengthening for free
|
; lengthening for free
|
||||||
|
call increment_score
|
||||||
|
|
||||||
ld v0, 1
|
ld v0, 1
|
||||||
ld st, v0
|
ld st, v0
|
||||||
|
|
||||||
|
@ -268,8 +313,19 @@ eat_fruit:
|
||||||
drw fruit_x_reg, fruit_y_reg, 1
|
drw fruit_x_reg, fruit_y_reg, 1
|
||||||
jp spawn_fruit
|
jp spawn_fruit
|
||||||
|
|
||||||
|
increment_score:
|
||||||
|
; Low register stores 0…9
|
||||||
|
add score_low_reg, 1
|
||||||
|
se score_low_reg, 10
|
||||||
|
ret
|
||||||
|
ld score_low_reg, 0
|
||||||
|
add score_high_reg, 1
|
||||||
|
ret
|
||||||
|
|
||||||
tail_collision:
|
tail_collision:
|
||||||
ld game_over_reg, 1
|
ld game_over_reg, 1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
single_pixel: db #80
|
single_pixel: db #80
|
||||||
|
score_high_bcd: db 0, 0, 0
|
||||||
|
score_low_bcd: db 0, 0, 0
|
||||||
|
|
Loading…
Reference in New Issue