blob: 8b7f8ce3d32b7027d97164924524cfd8e01db9df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
.segment "CODE"
.scope Driver
;; Timer for the player to be able to pick up the joypad upon entering the
;; game.
;;
;; NOTE: this memory address is shared with `zp_title_timer`, as they can
;; never conflict with each other.
zp_player_timer = $30
PLAYER_TIMER_VALUE = HZ * 2
.proc switch
;; Get the assets ready for the main screen. That is, make sure that the
;; palettes and such are as desired since the title screen needed
;; another setup.
jsr Assets::prepare_for_main_screen
;; Switch to the other base nametable.
lda #%10001010
sta PPU::zp_control
;; Setup the player timer.
.ifdef PARTIAL
lda #1
.else
lda #PLAYER_TIMER_VALUE
.endif
sta zp_player_timer
;; Mark the state of the game as "game". That is, the player has
;; started. Also set the `ppu` flag so the PPU control update takes
;; place.
lda #%01000001
ora Globals::zp_flags
sta Globals::zp_flags
rts
.endproc
.proc update
lda zp_player_timer
beq @game
dec zp_player_timer
beq @load_player
;; TODO: blinking of the selected player (every HZ count?).
rts
@load_player:
jsr Player::init
@game:
JAL Player::update
.endproc
.endscope
|