summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2020-08-17 19:30:32 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2020-08-17 19:39:58 -0400
commit5e1865a7b160696de4f82f7d172c038f3b4726e0 (patch)
tree75da932ea7e790ccdfd8d5c7e7d92a54aa7b1309
parent6fa8a553cbb53a9abe59bee8d0cc176d19cde47f (diff)
Implement def_warps_to in a simpler way
Instead of building a semicolon-separated "array" of warp_to coordinates in _WARP_TO_BUFFER, just declare a new EQUS for each one: _WARP_TO_NUM_1, _WARP_TO_NUM_2, etc. Then have def_warps_to output and PURGE each one of them.
-rw-r--r--macros/scripts/maps.asm28
1 files changed, 12 insertions, 16 deletions
diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm
index f5f913a2..a85d8fe6 100644
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -42,10 +42,6 @@ def_warps: MACRO
_NUM_WARPS EQUS "_NUM_WARPS_\@"
db _NUM_WARPS
_NUM_WARPS = 0
- IF DEF(_WARP_TO_BUFFER)
- PURGE _WARP_TO_BUFFER
- ENDC
-_WARP_TO_BUFFER EQUS ""
ENDM
;\1 x position
@@ -55,10 +51,9 @@ ENDM
warp: MACRO
db \2, \1, \3, \4
_NUM_WARPS = _NUM_WARPS + 1
-_TMP EQUS "{_WARP_TO_BUFFER}\1,\2; "
- PURGE _WARP_TO_BUFFER
-_WARP_TO_BUFFER EQUS "{_TMP}"
- PURGE _TMP
+_WARP_TO_NAME EQUS "_WARP_TO_NUM_{d:{_NUM_WARPS}}"
+_WARP_TO_NAME EQUS "warp_to \1, \2, _WARP_TO_WIDTH"
+ PURGE _WARP_TO_NAME
ENDM
def_signs: MACRO
@@ -78,17 +73,18 @@ sign: MACRO
_NUM_SIGNS = _NUM_SIGNS + 1
ENDM
+;\1 source map
def_warps_to: MACRO
_WARP_TO_WIDTH = \1_WIDTH
+_WARP_TO_N = 1
REPT _NUM_WARPS
-_SEP = STRIN("{_WARP_TO_BUFFER}", ";")
-_WARP_TO_NTH EQUS STRCAT(STRCAT("warp_to ", STRSUB("{_WARP_TO_BUFFER}", 1, _SEP - 1)), ", _WARP_TO_WIDTH")
-_TMP EQUS STRSUB("{_WARP_TO_BUFFER}", _SEP + 1, STRLEN("{_WARP_TO_BUFFER}") - _SEP)
- PURGE _WARP_TO_BUFFER
-_WARP_TO_BUFFER EQUS "{_TMP}"
- PURGE _TMP
- _WARP_TO_NTH
- PURGE _WARP_TO_NTH
+_WARP_TO_NAME EQUS "_WARP_TO_NUM_{d:_WARP_TO_N}"
+ _WARP_TO_NAME
+_WARP_TO_N = _WARP_TO_N + 1
+_PURGE_WARP_TO_NUM EQUS "PURGE {_WARP_TO_NAME}"
+ _PURGE_WARP_TO_NUM
+ PURGE _PURGE_WARP_TO_NUM
+ PURGE _WARP_TO_NAME
ENDR
ENDM