summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extras/crystal.py2
-rw-r--r--preprocessor.py10
2 files changed, 10 insertions, 2 deletions
diff --git a/extras/crystal.py b/extras/crystal.py
index e26cf6dda..efe55b1bb 100644
--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -1871,6 +1871,8 @@ class GivePoke(Command):
4: {"name": "trainer_name_pointer", "class": MultiByteParam}, #should probably use TextLabelParam
5: {"name": "pkmn_nickname", "class": MultiByteParam}, #XXX TextLabelParam ?
}
+ allowed_lengths = [4, 6]
+
def parse(self):
self.params = {}
byte = ord(rom[self.address])
diff --git a/preprocessor.py b/preprocessor.py
index f350971af..0a0c8a0d6 100644
--- a/preprocessor.py
+++ b/preprocessor.py
@@ -481,14 +481,20 @@ def macro_translator(macro, token, line):
raise Exception, "dunno what to do with this non db/dw macro param: " + \
str(param_klass) + " in line: " + original_line
- assert len(params) == allowed_length, \
+ # sometimes the allowed length can vary
+ if hasattr(macro, "allowed_lengths"):
+ allowed_lengths = macro.allowed_lengths + [allowed_length]
+ else:
+ allowed_lengths = [allowed_length]
+
+ assert len(params) in allowed_lengths, \
"mismatched number of parameters on this line: " + \
original_line
# --- end of ridiculously long sanity check ---
index = 0
- while index < len(macro.param_types):
+ while index < len(params):
param_type = macro.param_types[index]
description = param_type["name"]
param_klass = param_type["class"]