summaryrefslogtreecommitdiff
path: root/include/code_macros.inc
diff options
context:
space:
mode:
Diffstat (limited to 'include/code_macros.inc')
-rw-r--r--include/code_macros.inc54
1 files changed, 54 insertions, 0 deletions
diff --git a/include/code_macros.inc b/include/code_macros.inc
new file mode 100644
index 0000000..531281d
--- /dev/null
+++ b/include/code_macros.inc
@@ -0,0 +1,54 @@
+lb: macro
+ ld \1, ((\2) & $ff) << 8 | ((\3) & $ff)
+endm
+
+ln: macro
+ ld \1, ((\2) & $f) << 4 | ((\3) & $f)
+endm
+
+ld16: macro
+ ld a, LOW(\2)
+ ld [\1 + 0], a
+ ld a, HIGH(\2)
+ ld [\1 + 1], a
+endm
+
+
+farcall: macro
+ push af
+ ld a, LOW(\1)
+ ld [w_farcall_target + 0], a
+ ld a, HIGH(\1)
+ ld [w_farcall_target + 1], a
+ ld a, BANK(\1)
+ ld [w_bank_temp], a
+ pop af
+ call _farcall
+endm
+
+farjp: macro
+ push af
+ ld a, LOW(\1)
+ ld [w_farcall_target + 0], a
+ ld a, HIGH(\1)
+ ld [w_farcall_target + 1], a
+ ld a, BANK(\1)
+ ld [w_bank_temp], a
+ pop af
+ jp _farjp
+endm
+
+
+push_bank_rom: macro
+ ld a, [w_bank_rom]
+ push af
+ ld a, \1
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+endm
+
+pop_bank_rom: macro
+ pop af
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+endm