summaryrefslogtreecommitdiff
path: root/macros/coords.asm
diff options
context:
space:
mode:
Diffstat (limited to 'macros/coords.asm')
-rw-r--r--macros/coords.asm65
1 files changed, 65 insertions, 0 deletions
diff --git a/macros/coords.asm b/macros/coords.asm
new file mode 100644
index 00000000..302260d7
--- /dev/null
+++ b/macros/coords.asm
@@ -0,0 +1,65 @@
+validateCoords: MACRO
+ IF \1 >= SCREEN_WIDTH
+ fail "x coord out of range"
+ ENDC
+ IF \2 >= SCREEN_HEIGHT
+ fail "y coord out of range"
+ ENDC
+ENDM
+
+;\1 = r
+;\2 = X
+;\3 = Y
+;\4 = which tilemap (optional)
+coord: MACRO
+ validateCoords \2, \3
+ IF _NARG >= 4
+ ld \1, \4 + SCREEN_WIDTH * \3 + \2
+ ELSE
+ ld \1, wTileMap + SCREEN_WIDTH * \3 + \2
+ ENDC
+ENDM
+
+;\1 = X
+;\2 = Y
+;\3 = which tilemap (optional)
+aCoord: MACRO
+ validateCoords \1, \2
+ IF _NARG >= 3
+ ld a, [\3 + SCREEN_WIDTH * \2 + \1]
+ ELSE
+ ld a, [wTileMap + SCREEN_WIDTH * \2 + \1]
+ ENDC
+ENDM
+
+;\1 = X
+;\2 = Y
+;\3 = which tilemap (optional)
+Coorda: MACRO
+ validateCoords \1, \2
+ IF _NARG >= 3
+ ld [\3 + SCREEN_WIDTH * \2 + \1], a
+ ELSE
+ ld [wTileMap + SCREEN_WIDTH * \2 + \1], a
+ ENDC
+ENDM
+
+;\1 = X
+;\2 = Y
+;\3 = which tilemap (optional)
+dwCoord: MACRO
+ validateCoords \1, \2
+ IF _NARG >= 3
+ dw \3 + SCREEN_WIDTH * \2 + \1
+ ELSE
+ dw wTileMap + SCREEN_WIDTH * \2 + \1
+ ENDC
+ENDM
+
+;\1 = r
+;\2 = X
+;\3 = Y
+;\4 = map width
+overworldMapCoord: MACRO
+ ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2)))
+ENDM