aboutsummaryrefslogtreecommitdiff
path: root/utils.gbasm
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-11-05 19:42:46 +0900
committerAstatin <[email protected]>2024-11-05 19:42:46 +0900
commit6c8f7c72cb96ce59ffcda5279225381ecb394b4f (patch)
tree941e6b464bd0fe90b325ae792b3a6fdbdc9b40fe /utils.gbasm
parent14ae7d8def1159b395bf1176b351651cbd98ba19 (diff)
Add a jump table macro
Diffstat (limited to 'utils.gbasm')
-rw-r--r--utils.gbasm24
1 files changed, 24 insertions, 0 deletions
diff --git a/utils.gbasm b/utils.gbasm
index 5dad3a9..cb1822a 100644
--- a/utils.gbasm
+++ b/utils.gbasm
@@ -31,6 +31,30 @@ bzero: ; dest = HL, n = BC
$end:
.END
+.MACRODEF JUMP_TABLE ; Jump table pointer in BC, index in A, also overwrites DE
+ LD E, A
+ LD D, $00
+
+ SLA E
+ RL D
+ SLA E
+ RL D
+
+ LD A, E
+ ADD C
+ LD E, A
+ LD A, D
+ ADC B
+ LD D, A
+
+ ; CALL DE
+ LD BC, =$end
+ PUSH BC
+ PUSH DE
+ RET
+ $end:
+.END
+
Print_8bit: ; Number in A, Memory Tilemap position in HL
PUSH AF
PUSH BC