summaryrefslogtreecommitdiff
path: root/src/macros/data.asm
blob: 2fd4b7d1fd13759ac040ecc7d3de7a411347b7c9 (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
57
58
59
60
61
62
63
64
65
66
67
68
69
dn: MACRO
	db \1 << 4 | \2
ENDM

dbw: MACRO
	db \1
	dw \2
ENDM

dwb: MACRO
	dw \1
	db \2
ENDM

dx: MACRO
x = 8 * ((\1) - 1)
	rept \1
	db ((\2) >> x) & $ff
x = x + -8
	endr
	ENDM

dt: MACRO ; three-byte (big-endian)
	dx 3, \1
	ENDM

dd: MACRO ; four-byte (big-endian)
	dx 4, \1
	ENDM

bigdw: MACRO ; big-endian word
	dx 2, \1
	ENDM

sgb: MACRO
	db \1 << 3 + \2 ; sgb_command * 8 + length
ENDM

rgb: MACRO
	dw (\3 << 10 | \2 << 5 | \1)
ENDM

; macros used in data/cards.asm, but might be useful elsewhere eventually

energy: MACRO
en = 0
if _NARG > 1
	rept _NARG / 2
x = 4 - 8 * (\1 % 2)
en = en + \2 << ((\1 * 4) + x)
	shift
	shift
	endr
	rept NUM_TYPES / 2
	db LOW(en)
en = en >> 8
	endr
else
	db 0, 0, 0, 0
endc
ENDM

gfx: MACRO
	dw ($4000 * (BANK(\1) - BANK(CardGraphics)) + (\1 - $4000)) / 8
ENDM

tx: MACRO
	dw \1_
ENDM