summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/asserts.asm42
-rw-r--r--macros/data.asm20
-rw-r--r--macros/scripts/events.asm8
-rw-r--r--macros/scripts/maps.asm52
-rw-r--r--macros/scripts/text.asm7
5 files changed, 45 insertions, 84 deletions
diff --git a/macros/asserts.asm b/macros/asserts.asm
index d04c7942..a07bc553 100644
--- a/macros/asserts.asm
+++ b/macros/asserts.asm
@@ -2,33 +2,27 @@
table_width: MACRO
CURRENT_TABLE_WIDTH = \1
-IF DEF(CURRENT_TABLE_START)
-PURGE CURRENT_TABLE_START
-ENDC
IF _NARG == 2
-CURRENT_TABLE_START EQUS "\2"
+REDEF CURRENT_TABLE_START EQUS "\2"
ELSE
-CURRENT_TABLE_START EQUS "._table_width\@"
-CURRENT_TABLE_START:
+REDEF CURRENT_TABLE_START EQUS "._table_width\@"
+{CURRENT_TABLE_START}:
ENDC
ENDM
assert_table_length: MACRO
x = \1
- ASSERT x * CURRENT_TABLE_WIDTH == @ - CURRENT_TABLE_START, \
+ ASSERT x * CURRENT_TABLE_WIDTH == @ - {CURRENT_TABLE_START}, \
"{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
ENDM
list_start: MACRO
list_index = 0
-IF DEF(CURRENT_LIST_START)
-PURGE CURRENT_LIST_START
-ENDC
IF _NARG == 1
-CURRENT_LIST_START EQUS "\1"
+REDEF CURRENT_LIST_START EQUS "\1"
ELSE
-CURRENT_LIST_START EQUS "._list_start\@"
-CURRENT_LIST_START:
+REDEF CURRENT_LIST_START EQUS "._list_start\@"
+{CURRENT_LIST_START}:
ENDC
ENDM
@@ -46,42 +40,36 @@ ENDM
def_grass_wildmons: MACRO
;\1: encounter rate
-if DEF(CURRENT_GRASS_WILDMONS_LABEL)
-PURGE CURRENT_GRASS_WILDMONS_LABEL
-endc
CURRENT_GRASS_WILDMONS_RATE = \1
-CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1"
-CURRENT_GRASS_WILDMONS_LABEL:
+REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1"
+{CURRENT_GRASS_WILDMONS_LABEL}:
db \1
ENDM
end_grass_wildmons: MACRO
IF CURRENT_GRASS_WILDMONS_RATE == 0
- assert 1 == @ - CURRENT_GRASS_WILDMONS_LABEL, \
+ assert 1 == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
"def_grass_wildmons {d:CURRENT_GRASS_WILDMONS_RATE}: expected 1 byte"
ELSE
- assert WILDDATA_LENGTH == @ - CURRENT_GRASS_WILDMONS_LABEL, \
+ assert WILDDATA_LENGTH == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
"def_grass_wildmons {d:CURRENT_GRASS_WILDMONS_RATE}: expected {d:WILDDATA_LENGTH} bytes"
ENDC
ENDM
def_water_wildmons: MACRO
;\1: encounter rate
-if DEF(CURRENT_WATER_WILDMONS_LABEL)
-PURGE CURRENT_WATER_WILDMONS_LABEL
-endc
CURRENT_WATER_WILDMONS_RATE = \1
-CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1"
-CURRENT_WATER_WILDMONS_LABEL:
+REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1"
+{CURRENT_WATER_WILDMONS_LABEL}:
db \1
ENDM
end_water_wildmons: MACRO
IF CURRENT_WATER_WILDMONS_RATE == 0
- assert 1 == @ - CURRENT_WATER_WILDMONS_LABEL, \
+ assert 1 == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
"def_water_wildmons {d:CURRENT_WATER_WILDMONS_RATE}: expected 1 byte"
ELSE
- assert WILDDATA_LENGTH == @ - CURRENT_WATER_WILDMONS_LABEL, \
+ assert WILDDATA_LENGTH == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
"def_water_wildmons {d:CURRENT_WATER_WILDMONS_RATE}: expected {d:WILDDATA_LENGTH} bytes"
ENDC
ENDM
diff --git a/macros/data.asm b/macros/data.asm
index 7ea7af2c..fb8ea844 100644
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -19,33 +19,23 @@ money EQUS "bcd3"
; used in data/pokemon/base_stats/*.asm
tmhm: MACRO
; initialize bytes to 0
-n = 0
-REPT (NUM_TM_HM + 7) / 8
-_TM_BYTE EQUS "_tm{d:n}"
-_TM_BYTE = 0
-PURGE _TM_BYTE
-n = n + 1
+FOR n, (NUM_TM_HM + 7) / 8
+_tm{d:n} = 0
ENDR
; set bits of bytes
REPT _NARG
IF DEF(\1_TMNUM)
n = (\1_TMNUM - 1) / 8
i = (\1_TMNUM - 1) % 8
-_TM_BYTE EQUS "_tm{d:n}"
-_TM_BYTE = _TM_BYTE | (1 << i)
-PURGE _TM_BYTE
+_tm{d:n} = _tm{d:n} | (1 << i)
ELSE
FAIL "\1 is not a TM or HM move"
ENDC
SHIFT
ENDR
; output bytes
-n = 0
-REPT (NUM_TM_HM + 7) / 8
-_TM_BYTE EQUS "_tm{d:n}"
- db _TM_BYTE
-PURGE _TM_BYTE
-n = n + 1
+FOR n, (NUM_TM_HM + 7) / 8
+ db _tm{d:n}
ENDR
ENDM
diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm
index e55aa00e..c7fdb484 100644
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -184,8 +184,8 @@ ENDM
SetEvents: MACRO
SetEvent \1
REPT _NARG - 1
- SetEventReuseHL \2
- SHIFT
+ SetEventReuseHL \2
+ SHIFT
ENDR
ENDM
@@ -236,8 +236,8 @@ ENDM
ResetEvents: MACRO
ResetEvent \1
REPT _NARG - 1
- ResetEventReuseHL \2
- SHIFT
+ ResetEventReuseHL \2
+ SHIFT
ENDR
ENDM
diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm
index 204098ad..8ab5c46d 100644
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -1,10 +1,7 @@
def_objects: MACRO
- IF DEF(_NUM_OBJECTS)
- PURGE _NUM_OBJECTS
- ENDC
-_NUM_OBJECTS EQUS "_NUM_OBJECTS_\@"
- db _NUM_OBJECTS
-_NUM_OBJECTS = 0
+REDEF _NUM_OBJECTS EQUS "_NUM_OBJECTS_\@"
+ db {_NUM_OBJECTS}
+{_NUM_OBJECTS} = 0
ENDM
;\1 sprite id
@@ -32,16 +29,13 @@ object: MACRO
ELSE
db \6
ENDC
-_NUM_OBJECTS = _NUM_OBJECTS + 1
+{_NUM_OBJECTS} = {_NUM_OBJECTS} + 1
ENDM
def_warps: MACRO
- IF DEF(_NUM_WARPS)
- PURGE _NUM_WARPS
- ENDC
-_NUM_WARPS EQUS "_NUM_WARPS_\@"
- db _NUM_WARPS
-_NUM_WARPS = 0
+REDEF _NUM_WARPS EQUS "_NUM_WARPS_\@"
+ db {_NUM_WARPS}
+{_NUM_WARPS} = 0
ENDM
;\1 x position
@@ -50,19 +44,15 @@ ENDM
;\4 destination map (-1 = wLastMap)
warp: MACRO
db \2, \1, \3, \4
-_TMP EQUS "\n_WARP_{d:{_NUM_WARPS}}_X = \1\n_WARP_{d:{_NUM_WARPS}}_Y = \2"
- _TMP
- PURGE _TMP
-_NUM_WARPS = _NUM_WARPS + 1
+_WARP_{d:{_NUM_WARPS}}_X = \1
+_WARP_{d:{_NUM_WARPS}}_Y = \2
+{_NUM_WARPS} = {_NUM_WARPS} + 1
ENDM
def_signs: MACRO
- IF DEF(_NUM_SIGNS)
- PURGE _NUM_SIGNS
- ENDC
-_NUM_SIGNS EQUS "_NUM_SIGNS_\@"
- db _NUM_SIGNS
-_NUM_SIGNS = 0
+REDEF _NUM_SIGNS EQUS "_NUM_SIGNS_\@"
+ db {_NUM_SIGNS}
+{_NUM_SIGNS} = 0
ENDM
;\1 x position
@@ -70,17 +60,13 @@ ENDM
;\3 sign id
sign: MACRO
db \2, \1, \3
-_NUM_SIGNS = _NUM_SIGNS + 1
+{_NUM_SIGNS} = {_NUM_SIGNS} + 1
ENDM
;\1 source map
def_warps_to: MACRO
-N = 0
- REPT _NUM_WARPS
-_TMP EQUS "warp_to _WARP_{d:N}_X, _WARP_{d:N}_Y, \1_WIDTH"
- _TMP
- PURGE _TMP
-N = N + 1
+ FOR n, _NUM_WARPS
+ warp_to _WARP_{d:n}_X, _WARP_{d:n}_Y, \1_WIDTH
ENDR
ENDM
@@ -146,10 +132,8 @@ ENDM
; Comes after map_header and connection macros
end_map_header: MACRO
- dw CURRENT_MAP_OBJECT
- PURGE CURRENT_MAP_WIDTH
- PURGE CURRENT_MAP_HEIGHT
- PURGE CURRENT_MAP_OBJECT
+ dw {CURRENT_MAP_OBJECT}
+ PURGE CURRENT_MAP_WIDTH, CURRENT_MAP_HEIGHT, CURRENT_MAP_OBJECT
ENDM
; Connections go in order: north, south, west, east
diff --git a/macros/scripts/text.asm b/macros/scripts/text.asm
index a947ca2f..c446c6c7 100644
--- a/macros/scripts/text.asm
+++ b/macros/scripts/text.asm
@@ -169,10 +169,9 @@ ENDM
script_mart: MACRO
db TX_SCRIPT_MART
db _NARG ; number of items
-REPT _NARG
- db \1 ; item id
- SHIFT
-ENDR
+ IF _NARG
+ db \# ; all item ids
+ ENDC
db -1 ; end
ENDM