diff options
| author | dannye <33dannye@gmail.com> | 2020-11-04 00:06:44 -0600 |
|---|---|---|
| committer | dannye <33dannye@gmail.com> | 2020-11-04 00:06:44 -0600 |
| commit | 5647ca687b92954dcf37a6ea6bfbc9a341c32de4 (patch) | |
| tree | dde1937a1bfdb3a835f4155e1c2eb8f1aaf86f63 /macros/coords.asm | |
| parent | Merge pull request #55 from Deokishisu/patch-1 (diff) | |
| download | pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.tar.gz pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.tar.xz pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.zip | |
Sync with pokered
Diffstat (limited to 'macros/coords.asm')
| -rw-r--r-- | macros/coords.asm | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/macros/coords.asm b/macros/coords.asm new file mode 100644 index 00000000..6b16e7f7 --- /dev/null +++ b/macros/coords.asm @@ -0,0 +1,90 @@ +validate_coords: MACRO + IF _NARG >= 4 + IF \1 >= \3 + fail "x coord out of range" + ENDC + IF \2 >= \4 + fail "y coord out of range" + ENDC + ELSE + validate_coords \1, \2, SCREEN_WIDTH, SCREEN_HEIGHT + ENDC +ENDM + +hlcoord EQUS "coord hl," +bccoord EQUS "coord bc," +decoord EQUS "coord de," + +coord: MACRO +; register, x, y[, origin] + validate_coords \2, \3 + IF _NARG >= 4 + ld \1, (\3) * SCREEN_WIDTH + (\2) + \4 + ELSE + ld \1, (\3) * SCREEN_WIDTH + (\2) + wTileMap + ENDC +ENDM + +hlbgcoord EQUS "bgcoord hl," +bcbgcoord EQUS "bgcoord bc," +debgcoord EQUS "bgcoord de," + +bgcoord: MACRO +; register, x, y[, origin] + validate_coords \2, \3, BG_MAP_WIDTH, BG_MAP_HEIGHT + IF _NARG >= 4 + ld \1, (\3) * BG_MAP_WIDTH + (\2) + \4 + ELSE + ld \1, (\3) * BG_MAP_WIDTH + (\2) + vBGMap0 + ENDC +ENDM + +hlowcoord EQUS "owcoord hl," +bcowcoord EQUS "owcoord bc," +deowcoord EQUS "owcoord de," + +owcoord: MACRO +; register, x, y, map width + ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2))) +ENDM + +event_displacement: MACRO +; map width, x blocks, y blocks + dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\3) >> 1) + ((\2) >> 1)) + db \3, \2 +ENDM + +dwcoord: MACRO +; x, y + validate_coords \1, \2 + IF _NARG >= 3 + dw (\2) * SCREEN_WIDTH + (\1) + \3 + ELSE + dw (\2) * SCREEN_WIDTH + (\1) + wTileMap + ENDC +ENDM + +ldcoord_a: MACRO +; x, y[, origin] + validate_coords \1, \2 + IF _NARG >= 3 + ld [(\2) * SCREEN_WIDTH + (\1) + \3], a + ELSE + ld [(\2) * SCREEN_WIDTH + (\1) + wTileMap], a + ENDC +ENDM + +lda_coord: MACRO +; x, y[, origin] + validate_coords \1, \2 + IF _NARG >= 3 + ld a, [(\2) * SCREEN_WIDTH + (\1) + \3] + ELSE + ld a, [(\2) * SCREEN_WIDTH + (\1) + wTileMap] + ENDC +ENDM + +dbmapcoord: MACRO +; x, y + db \2, \1 +ENDM |
