diff options
Diffstat (limited to 'extras')
| -rw-r--r-- | extras/crystal.py | 22 | 
1 files changed, 16 insertions, 6 deletions
| diff --git a/extras/crystal.py b/extras/crystal.py index e40312e4f..239c84596 100644 --- a/extras/crystal.py +++ b/extras/crystal.py @@ -398,7 +398,8 @@ class TextScript:      def __init__(self, address, map_group=None, map_id=None, debug=False, label=None, force=False, show=None):          self.address = address          # $91, $84, $82, $54, $8c  -        if address in [0x26f2, 0x6ee, 0x1071, 0x5ce33, 0x69523, 0x7ee98, 0x72176, 0x7a578, 0x19c09b]: +        # 0x19768c is a a weird problem? +        if address in [0x26f2, 0x6ee, 0x1071, 0x5ce33, 0x69523, 0x7ee98, 0x72176, 0x7a578, 0x19c09b, 0x19768c]:              return None          self.map_group, self.map_id, self.debug = map_group, map_id, debug          self.dependencies = None @@ -2136,7 +2137,7 @@ class MainText(TextCommand):          jump = min([jump57, jump50, jump58])          # if $57 appears first then this command is the last in this text script -        if jump == jump57: +        if jump == jump57 or jump == jump58:              self.end = True          # we want the address after the $57 @@ -2205,7 +2206,7 @@ class MainText(TextCommand):              elif byte == 0x50:                  # technically you could have this i guess... db "@"                  # but in most situations it will be added to the end of the previous line -                assert not new_line, "can't have $50 or '@' as the first character on a newline" +                #assert not new_line, "can't have $50 or '@' as the first character on a newline in the text at "+hex(self.address)                  if in_quotes:                      output += "@\"\n" @@ -2220,8 +2221,11 @@ class MainText(TextCommand):                  new_line  = True                  was_comma = False                  end       = True + +                # self.end should be set in parse or constructor +                # so this is very useless here.. but it's a truism i guess                  self.end  = True -            elif byte == 0x57: +            elif byte == 0x57 or byte == 0x58:                  # close any quotes                  if in_quotes:                      output += "\"" @@ -2230,12 +2234,18 @@ class MainText(TextCommand):                  if not was_comma:                      output += ", " -                output += "$57\n" +                output += "$%.2x\n" % (byte)                  in_quotes = False                  new_line  = True                  was_comma = False                  end       = True + +                # dunno if $58 should end a text script or not +                # also! self.end should be set in parse not in to_asm +                # so this is pretty useless overall... +                if byte == 0x58: +                    self.end = True              elif byte in chars.keys():                  # figure out what the character actually is                  char = chars[byte] @@ -2289,7 +2299,7 @@ class MainText(TextCommand):          # this shouldn't happen because of the rom_until calls in the parse method          if not end: -            raise Exception, "ran out of bytes without the script ending?" +            raise Exception, "ran out of bytes without the script ending? starts at "+hex(self.address)          # last character may or may not be allowed to be a newline?          # Script.to_asm() has command.to_asm()+"\n" | 
