shithub: pokecrystal

Download patch

ref: a1a9fa5560e01d97c7c33bbf8bb19fe4e76d3c28
parent: bdad293da37598386c2fd5be4ea1188cd2989f84
author: Bryan Bishop <[email protected]>
date: Fri Nov 30 04:54:02 EST 2012

move allowed_lengths for music macros out

This moves the allowed_lengths setting out of the preprocessor. Special
cases should not be hardcoded in the preprocessor.

--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -2990,8 +2990,6 @@
 music_command_enders = [0xEA, 0xEB, 0xEE, 0xFC, 0xFF,]
 # special case for 0xFD (if loopchannel.count = 0, break)
 
-
-
 def create_music_command_classes(debug=False):
     klasses = [GivePoke]
     for (byte, cmd) in music_commands_new.items():
@@ -3010,6 +3008,10 @@
         klass_name = cmd_name+"Command"
         klass = classobj(klass_name, (Command,), params)
         globals()[klass_name] = klass
+        if klass.macro_name == "notetype":
+            klass.allowed_lengths = [1, 2]
+        elif klass.macro_name in ["togglenoise", "sfxtogglenoise"]:
+            klass.allowed_lengths = [0, 1]
         klasses.append(klass)
     # later an individual klass will be instantiated to handle something
     return klasses
--- a/preprocessor.py
+++ b/preprocessor.py
@@ -490,12 +490,6 @@
     else:
         allowed_lengths = [allowed_length]
 
-    if macro.macro_name == "notetype":
-        allowed_lengths = [1,2]
-    elif macro.macro_name == "togglenoise" \
-    or macro.macro_name == "sfxtogglenoise":
-        allowed_lengths = [0,1]
-
     assert len(params) in allowed_lengths, \
            "mismatched number of parameters on this line: " + \
            original_line
@@ -589,4 +583,4 @@
             sys.stdout.write(comment)
 
 for l in sys.stdin:
-    read_line(l)
\ No newline at end of file
+    read_line(l)