fix preprocessor/givepoke for variable-number-of-parameter macros

This commit is contained in:
Bryan Bishop 2012-05-16 12:44:55 -05:00
parent 2d763b53a6
commit 079afeea46
2 changed files with 10 additions and 2 deletions

View File

@ -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])

View File

@ -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"]