summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2015-01-20 14:26:16 -0800
committeryenatch <yenatch@gmail.com>2015-01-20 14:26:16 -0800
commitf036cdf13b0e215cd9a14cc9dba24f821a9679c0 (patch)
tree2f517ab85b4e173a6d8b47c8d1dfb22a20ff9811 /macros
parent9303752e3fac18a5245870a992a04d11772bed52 (diff)
Move around some more macros.
Diffstat (limited to 'macros')
-rw-r--r--macros/map.asm26
-rw-r--r--macros/predef.asm21
-rw-r--r--macros/rst.asm17
-rw-r--r--macros/sound.asm32
4 files changed, 96 insertions, 0 deletions
diff --git a/macros/map.asm b/macros/map.asm
index 297646a79..ef62f386f 100644
--- a/macros/map.asm
+++ b/macros/map.asm
@@ -1,3 +1,29 @@
+map: MACRO
+; This is a silly hack to get around an rgbds bug.
+
+; Ideally:
+; db GROUP_\1, MAP_\1
+
+\1\@ EQUS "GROUP_\1"
+\1\@2 EQUS "MAP_\1"
+ db \1\@, \1\@2
+ENDM
+
+roam_map: MACRO
+; A map and an arbitrary number of some more maps.
+
+ map \1
+ db \2
+
+ rept \2
+ map \3
+ shift
+ endr
+
+ db 0
+ENDM
+
+
person_event: macro
db \1 ; sprite
db \2 ; y
diff --git a/macros/predef.asm b/macros/predef.asm
new file mode 100644
index 000000000..d6c0344e6
--- /dev/null
+++ b/macros/predef.asm
@@ -0,0 +1,21 @@
+add_predef: MACRO
+\1Predef::
+ dw \1
+ db BANK(\1)
+ENDM
+
+predef_id: MACRO
+; Some functions load the predef id
+; without immediately calling Predef.
+ ld a, (\1Predef - PredefPointers) / 3
+ENDM
+
+predef: MACRO
+ predef_id \1
+ call Predef
+ENDM
+
+predef_jump: MACRO
+ predef_id \1
+ jp Predef
+ENDM
diff --git a/macros/rst.asm b/macros/rst.asm
new file mode 100644
index 000000000..50259c968
--- /dev/null
+++ b/macros/rst.asm
@@ -0,0 +1,17 @@
+FarCall EQU $08
+Bankswitch EQU $10
+JumpTable EQU $28
+
+farcall: MACRO ; bank, address
+ ld a, BANK(\1)
+ ld hl, \1
+ rst FarCall
+ ENDM
+
+callba EQUS "farcall"
+
+callab: MACRO ; address, bank
+ ld hl, \1
+ ld a, BANK(\1)
+ rst FarCall
+ ENDM
diff --git a/macros/sound.asm b/macros/sound.asm
index 38c72f1cf..8b8de34b2 100644
--- a/macros/sound.asm
+++ b/macros/sound.asm
@@ -1,3 +1,35 @@
+note: MACRO
+ dn (\1), (\2) - 1
+ ENDM
+
+sound: macro
+ db \1 ; duration
+ db \2 ; intensity
+ dw \3 ; frequency
+ endm
+
+noise: macro
+ db \1 ; duration
+ db \2 ; intensity
+ db \3 ; frequency
+ endm
+
+; pitch
+__ EQU 0
+C_ EQU 1
+C# EQU 2
+D_ EQU 3
+D# EQU 4
+E_ EQU 5
+F_ EQU 6
+F# EQU 7
+G_ EQU 8
+G# EQU 9
+A_ EQU 10
+A# EQU 11
+B_ EQU 12
+
+
octave: macro
db $d8 - (\1)
endm