diff options
| -rw-r--r-- | pokemontools/crystal.py | 15 | 
1 files changed, 8 insertions, 7 deletions
| diff --git a/pokemontools/crystal.py b/pokemontools/crystal.py index 3cc5ea1..e2e04ca 100644 --- a/pokemontools/crystal.py +++ b/pokemontools/crystal.py @@ -4466,9 +4466,7 @@ class MapHeader:          output += "db " + ", ".join([self.location_on_world_map.to_asm(), self.music.to_asm(), self.time_of_day.to_asm(), self.fishing_group.to_asm()])          return output - -all_map_headers = [] -def parse_map_header_at(address, map_group=None, map_id=None, debug=True): +def parse_map_header_at(address, map_group=None, map_id=None, all_map_headers=None, debug=True):      """parses an arbitrary map header at some address"""      logging.debug("parsing a map header at {0}".format(hex(address)))      map_header = MapHeader(address, map_group=map_group, map_id=map_id, debug=debug) @@ -5655,6 +5653,7 @@ def parse_map_script_header_at(address, map_group=None, map_id=None, debug=True)  def parse_map_header_by_id(*args, **kwargs):      """convenience function to parse a specific map"""      map_group, map_id = None, None +    all_map_headers = kwargs["all_map_headers"]      if "map_group" in kwargs.keys():          map_group = kwargs["map_group"]      if "map_id" in kwargs.keys(): @@ -5671,9 +5670,9 @@ def parse_map_header_by_id(*args, **kwargs):          raise Exception("dunno what to do with input")      offset = map_names[map_group]["offset"]      map_header_offset = offset + ((map_id - 1) * map_header_byte_size) -    return parse_map_header_at(map_header_offset, map_group=map_group, map_id=map_id) +    return parse_map_header_at(map_header_offset, all_map_headers=all_map_headers, map_group=map_group, map_id=map_id) -def parse_all_map_headers(map_names, debug=True): +def parse_all_map_headers(map_names, all_map_headers=None, debug=True):      """      Calls parse_map_header_at for each map in each map group. Updates the      map_names structure. @@ -5694,7 +5693,7 @@ def parse_all_map_headers(map_names, debug=True):              map_header_offset = offset + ((map_id - 1) * map_header_byte_size)              map_names[group_id][map_id]["header_offset"] = map_header_offset -            new_parsed_map = parse_map_header_at(map_header_offset, map_group=group_id, map_id=map_id, debug=debug) +            new_parsed_map = parse_map_header_at(map_header_offset, map_group=group_id, map_id=map_id, all_map_headers=all_map_headers, debug=debug)              map_names[group_id][map_id]["header_new"] = new_parsed_map  class PokedexEntryPointerTable: @@ -6842,6 +6841,8 @@ def scan_for_predefined_labels(debug=False):      write_all_labels(all_labels)      return all_labels +all_map_headers = [] +  def run_main(rom=None):      if not rom:          # read the rom and figure out the offsets for maps @@ -6854,7 +6855,7 @@ def run_main(rom=None):      [map_names[map_group_id+1].update({"offset": offset}) for map_group_id, offset in enumerate(map_group_offsets)]      # parse map header bytes for each map -    parse_all_map_headers(map_names) +    parse_all_map_headers(map_names, all_map_headers=all_map_headers)      # find trainers based on scripts and map headers      # this can only happen after parsing the entire map and map scripts | 
