summaryrefslogtreecommitdiff
path: root/macros.asm
blob: 81d5f2e79f80e84317e47e496b3f2ea3fa54d861 (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
INCLUDE "macros/event.asm"
INCLUDE "macros/sound.asm"
INCLUDE "macros/text.asm"
INCLUDE "macros/charmap.asm"
INCLUDE "macros/move_effect.asm"
INCLUDE "macros/move_anim.asm"
INCLUDE "macros/movement.asm"
INCLUDE "macros/map.asm"
INCLUDE "macros/predef.asm"
INCLUDE "macros/rst.asm"


RGB: MACRO
	dw ((\3) << 10) + ((\2) << 5) + (\1)
	ENDM


percent EQUS "* $ff / 100"


dwb: MACRO
	dw \1
	db \2
	ENDM

dbw: MACRO
	db \1
	dw \2
	ENDM

dbbw: MACRO
	db \1, \2
	dw \3
	ENDM

dbwww: MACRO
	db \1
	dw \2, \3, \4
	ENDM

dn: MACRO
	rept _NARG / 2
	db (\1) << 4 + (\2)
	shift
	shift
	endr
	ENDM

dt: MACRO ; three-byte (big-endian)
	db ((\1) >> 16) & $ff
	db ((\1) >> 8)  & $ff
	db (\1)         & $ff
	ENDM

bigdw: MACRO ; big-endian word
	db (\1) / $100
	db (\1) % $100
	ENDM


lb: MACRO ; r, hi, lo
	ld \1, (\2) << 8 + (\3)
	ENDM


bccoord: MACRO
	coord bc, \1, \2
	ENDM

decoord: MACRO
	coord de, \1, \2
	ENDM

hlcoord: MACRO
	coord hl, \1, \2
	ENDM

coord: MACRO
	ld \1, TileMap + SCREEN_WIDTH * (\3) + (\2)
	ENDM


; pic animations
frame: MACRO
	db \1
	db \2
	ENDM
setrepeat: MACRO
	db $fe
	db \1
	ENDM
dorepeat: MACRO
	db $fd
	db \1
	ENDM
endanim: MACRO
	db $ff
	ENDM


; Constant enumeration

const_def: MACRO
const_value SET 0
ENDM

const: MACRO
\1 EQU const_value
const_value SET const_value + 1
ENDM


sine_wave: MACRO
; \1: amplitude

x = 0
	rept $20
	; Round up.
	dw (sin(x) + (sin(x) & $ff)) >> 8
x = x + (\1) * $40000
	endr
ENDM