summaryrefslogtreecommitdiff
path: root/macros.asm
diff options
context:
space:
mode:
Diffstat (limited to 'macros.asm')
-rw-r--r--macros.asm95
1 files changed, 95 insertions, 0 deletions
diff --git a/macros.asm b/macros.asm
new file mode 100644
index 000000000..e5291ade5
--- /dev/null
+++ b/macros.asm
@@ -0,0 +1,95 @@
+; rgbds macros
+
+dwb: MACRO
+ dw \1
+ db \2
+ ENDM
+
+dbw: MACRO
+ db \1
+ dw \2
+ ENDM
+
+dn: MACRO
+ db \1 << 4 + \2
+ ENDM
+
+dt: MACRO ; three-byte (big-endian)
+ db (\1 >> 16) & $ff
+ db (\1 >> 8) & $ff
+ db \1 & $ff
+ ENDM
+
+bigdw: MACRO ; big-endian word
+ dw ((\1)/$100) + (((\1)&$ff)*$100)
+ ENDM
+
+callab: MACRO ; address, bank
+ ld hl, \1
+ ld a, BANK(\1)
+ rst FarCall
+ ENDM
+
+callba: MACRO ; bank, address
+ ld a, BANK(\1)
+ ld hl, \1
+ rst FarCall
+ ENDM
+
+TX_RAM: MACRO
+ db 1
+ dw \1
+ ENDM
+
+TX_FAR: MACRO
+ db $16
+ dw \1
+ db BANK(\1)
+ ENDM
+
+RGB: MACRO
+ dw ((\3 << 10) | (\2 << 5) | (\1))
+ ENDM
+
+note: MACRO
+ db \1
+ ENDM
+
+; It's better to use *coord than FuncCoord.
+FuncCoord: MACRO
+Coord = $c4a0 + 20 * \2 + \1
+ ENDM
+
+bccoord: MACRO
+ FuncCoord \1, \2
+ ld bc, Coord
+ ENDM
+
+decoord: MACRO
+ FuncCoord \1, \2
+ ld de, Coord
+ ENDM
+
+hlcoord: MACRO
+ FuncCoord \1, \2
+ ld hl, Coord
+ 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
+