diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-08-17 19:30:32 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-08-17 19:39:58 -0400 |
commit | 5e1865a7b160696de4f82f7d172c038f3b4726e0 (patch) | |
tree | 75da932ea7e790ccdfd8d5c7e7d92a54aa7b1309 /macros/scripts/maps.asm | |
parent | 6fa8a553cbb53a9abe59bee8d0cc176d19cde47f (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.
Diffstat (limited to 'macros/scripts/maps.asm')
-rw-r--r-- | macros/scripts/maps.asm | 28 |
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 |