shithub: pokecrystal

Download patch

ref: 6eb1478f1b89eea93744ac67cd2d198d951ac9ca
parent: a06cb374ef12552ffd2404eac561c5eb1810b324
author: Bryan Bishop <[email protected]>
date: Sun Apr 29 06:40:34 EDT 2012

clean up comments in Script.parse method

--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -2082,38 +2082,73 @@
             sys.exit(1)
         if is_script_already_parsed_at(start_address) and not force and not force_top:
             raise Exception, "this script has already been parsed before, please use that instance ("+hex(start_address)+")"
+        
+        # load up the rom if it hasn't been loaded already
         load_rom()
+
+        # in the event that the script parsing fails.. it would be nice to leave evidence
         script_parse_table[start_address:start_address+1] = "incomplete parse_script_with_command_classes"
+
+        # start with a blank script
         commands = []
+
+        # use this to control the while loop
         end = False
+
+        # for each command found..
         while not end:
+            # get the current scripting byte
             cur_byte = ord(rom[current_address])
-            #find the right address
-            right_kls = None
-            for kls in command_classes:
-                if kls.id == cur_byte:
-                    right_kls = kls
-            if right_kls == None:
+
+            # reset the command class (last command was probably different)
+            scripting_command_class = None
+
+            # match the command id byte to a scripting command class like GivePoke
+            for class_ in command_classes:
+                if class_.id == cur_byte:
+                    scripting_command_class = class_
+
+            # no matching command found (not implemented yet)- just end this script
+            # NOTE: might be better to raise an exception and end the program?
+            if scripting_command_class == None:
                 print "parsing script; current_address is: " + hex(current_address)
                 current_address += 1
-                #continue
                 asm_output = "\n".join([command.to_asm() for command in commands])
                 end = True
                 continue
-                #XXX maybe a bad idea to not die ?
+                # maybe the program should exit with failure instead?
                 #raise Exception, "no command found? id: " + hex(cur_byte) + " at " + hex(current_address) + " asm is:\n" + asm_output
-            #print "about to parse command(script@"+hex(start_address)+"): " + str(right_kls.macro_name)
-            cls = right_kls(address=current_address, force=force, map_group=map_group, map_id=map_id)
-            #print cls.to_asm()
-            end = cls.end
+
+            # create an instance of the command class and let it parse its parameter bytes
+            #print "about to parse command(script@"+hex(start_address)+"): " + str(scripting_command_class.macro_name)
+            cls = scripting_command_class(address=current_address, force=force, map_group=map_group, map_id=map_id)
+            
+            #if self.debug:
+            #    print cls.to_asm()
+            
+            # store it in this script object
             commands.append(cls)
+            
+            # certain commands will end the scripting engine
+            end = cls.end
+            
+            # skip past the command's parameter bytes to go to the next command
             #current_address = cls.last_address + 1
             current_address += cls.size
+
+        # last byte belonging to script is last byte of last command,
+        # or the last byte of the last command's last parameter
         self.last_address = current_address
+
+        # store the script in the global table/map thing
         script_parse_table[start_address:current_address] = self
+        
         asm_output = "\n".join([command.to_asm() for command in commands])
         print "--------------\n"+asm_output
+        
+        # store the script
         self.commands = commands
+        
         return commands
 
     def get_dependencies(self, recompute=False, global_dependencies=set()):