ld [hl], a
@skip:
ret
+
+ ; sub routine for game over
+ ; never call outside of blank!
+player_game_over:
+ ; if timer is not set
+ ; set up game over now
+ ld a, [game_over_timer]
+ cp a, 0
+ jr nz, @game_over_timer REL
+
+ ld hl, STR_GAME_OVER
+ ld de, SCRN0
+ call puts
+
+ ; set game over timer
+ ld a, 60
+ ld [game_over_timer], a
+
+ ret
+@game_over_timer:
+ ; otherwise timer--
+ ; and wait
+ dec a
+ ld [game_over_timer], a
+ ; if timer has reached 1 restart game
+ cp a, 0
+ jr z, @restart REL
+
+ ret
+@restart:
+ ; restart game
+ ; TODO: maybe just go to title?
+ ; FIXME: this is not clearing the stack!
+ jp entry
ld [RBGP], a
ret ; return for one more frame
@no_damage_taken:
+
call ui_draw
+
+ ; check for game over animation
+ ld a, [player+player_hp]
+ cp a, 0
+ jr nz, @not_game_over REL
+ call player_game_over
+ ret ; never set frame to be ready during game-over
+@not_game_over:
+
ld a, 1
ld [frame_ready], a
ret
; itmp is the same as tmp but
; for use during an interrupt
itmp: .adv 16
+
+ ; timer for game over. when
+ ; it reaches 0 re-start game
+game_over_timer: .adv 1