blob: 35665f7913b5e6c070a662e9bc8af7985c1bed76 (
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
|
;; Global variables used throughout the code base.
.scope Globals
;;;
;; Argument values reserved passing arguments to functions in memory.
zp_arg0 = $00
zp_arg1 = $01
zp_arg2 = $02
zp_arg3 = $03
zp_arg4 = $04
;;;
;; Random values that can be used inside of functions for temporary values
;; so `zp_argX` variables are not overwritten as often.
zp_tmp0 = $05
zp_tmp1 = $06
zp_tmp2 = $07
zp_tmp3 = $08
;;;
;; Reserve a byte of memory for preserving indices on memory. This is needed
;; whenever the `x` and `y` registers might not be reliable because of
;; underlying `jsr` calls that might tamper with their values. Sometimes
;; saving the value in memory is enough instead of playing with the stack.
zp_idx = $09
;; Flags that manage the state of the game.
;;
;; | Bit | Short name | Meaning when set |
;; |-----+------------+-------------------------------------------------------------|
;; | 7 | render | Game logic is over, block main code until NMI code is over. |
;; | 6 | ppu | PPU registers have to be touched |
;; | 5-3 | - | Unused |
;; | 2 | title over | We are transitioning from title to game |
;; | 1-0 | game | 0: title; 1: game; 2: game over, 3: game over (coin) |
zp_flags = $20
.endscope
|