ref: 849a57c9f1583f975d3d01eacd6083493633c7df
parent: fe8476d6bc241a0bb40cde980693cb46d9395c91
author: Bryan Bishop <[email protected]>
date: Thu Jan 10 10:58:24 EST 2013
disable macro error checking by default
--- a/preprocessor.py
+++ b/preprocessor.py
@@ -35,6 +35,9 @@
# show lines before preprocessing in stdout
show_original_lines = False
+# helpful for debugging macros
+do_macro_sanity_check = False
+
chars = {
"ガ": 0x05,
"ギ": 0x06,
@@ -462,45 +465,47 @@
# do: all scripting macros
# don't: signpost, warp_def, person_event, xy_trigger
if not macro.override_byte_check:
- sys.stdout.write("db $%.2x\n" % (macro.id))
+ sys.stdout.write("db ${0:02X}\n".format(macro.id))
# --- long-winded sanity check goes here ---
- # sanity check... this won't work because PointerLabelBeforeBank shows
- # up as two params, so these two lengths will always be different.
- #assert len(params) == len(macro.param_types), \
- # "mismatched number of parameters on this line: " + \
- # original_line
+ if do_macro_sanity_check:
- # v2 sanity check :) although it sorta sucks that this loop happens twice?
- allowed_length = 0
- for (index, param_type) in macro.param_types.items():
- param_klass = param_type["class"]
+ # sanity check... this won't work because PointerLabelBeforeBank shows
+ # up as two params, so these two lengths will always be different.
+ #assert len(params) == len(macro.param_types), \
+ # "mismatched number of parameters on this line: " + \
+ # original_line
- if param_klass.byte_type == "db":
- allowed_length += 1 # just one value
- elif param_klass.byte_type == "dw":
- if param_klass.size == 2:
- allowed_length += 1 # just label
- elif param_klass == MoneyByteParam:
- allowed_length += 1
- elif param_klass.size == 3:
- allowed_length += 2 # bank and label
+ # v2 sanity check :) although it sorta sucks that this loop happens twice?
+ allowed_length = 0
+ for (index, param_type) in macro.param_types.items():
+ param_klass = param_type["class"]
+
+ if param_klass.byte_type == "db":
+ allowed_length += 1 # just one value
+ elif param_klass.byte_type == "dw":
+ if param_klass.size == 2:
+ allowed_length += 1 # just label
+ elif param_klass == MoneyByteParam:
+ allowed_length += 1
+ elif param_klass.size == 3:
+ allowed_length += 2 # bank and label
+ else:
+ raise Exception, "dunno what to do with a macro param with a size > 3"
else:
- raise Exception, "dunno what to do with a macro param with a size > 3"
+ raise Exception, "dunno what to do with this non db/dw macro param: " + \
+ str(param_klass) + " in line: " + original_line
+
+ # sometimes the allowed length can vary
+ if hasattr(macro, "allowed_lengths"):
+ allowed_lengths = macro.allowed_lengths + [allowed_length]
else:
- raise Exception, "dunno what to do with this non db/dw macro param: " + \
- str(param_klass) + " in line: " + original_line
+ allowed_lengths = [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
+ assert len(params) in allowed_lengths, \
+ "mismatched number of parameters on this line: " + \
+ original_line
# --- end of ridiculously long sanity check ---