summaryrefslogtreecommitdiff
path: root/crystal.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2012-04-21 02:16:12 -0500
committerBryan Bishop <kanzure@gmail.com>2012-04-21 02:16:12 -0500
commit15a35a1a4a36cb0ccd91b01d7e003ac28838e539 (patch)
tree7f337d0985763e53f609deb23d83b44330df7f6f /crystal.py
parenta04f88fbc0f90c311f7232af77647ef32c9a3f2b (diff)
fix trainer label output
original-commit-id: 64af1959ae3b90c386569d358dfe4870990c4058
Diffstat (limited to 'crystal.py')
-rw-r--r--crystal.py41
1 files changed, 37 insertions, 4 deletions
diff --git a/crystal.py b/crystal.py
index 02d41e1..13ae06a 100644
--- a/crystal.py
+++ b/crystal.py
@@ -1493,6 +1493,9 @@ class Command:
#set up some variables
self.address = address
self.last_address = None
+ #setup the label based on base_label if available
+ if hasattr(self, "base_label"):
+ self.label = self.base_label + hex(self.address)
#params are where this command's byte parameters are stored
self.params = {}
#override default settings
@@ -2188,13 +2191,25 @@ class ItemFragmentParam(PointerLabelParam):
def parse(self):
PointerLabelParam.parse(self)
+
address = calculate_pointer_from_bytes_at(self.address, bank=self.bank)
+ self.calculated_address = address
+
itemfrag = ItemFragment(address=address, map_group=self.map_group, map_id=self.map_id, debug=self.debug)
- self.remotes = [itemfrag]
+ self.itemfrag = itemfrag
+ self.dependencies = [itemfrag].extend(itemfrag.get_dependencies())
+
+ def get_dependencies(self):
+ #self.dependencies = [itemfrag].extend(itemfrag.get_dependencies())
+ return self.dependencies
class TrainerFragment(Command):
"""used by TrainerFragmentParam and PeopleEvent for trainer data
+
+ Maybe this shouldn't be a Command. The output might sprawl
+ over multiple lines, and maybe it should be commented in to_asm?
+
[Bit no. (2byte)][Trainer group][Trainer]
[2byte pointer to Text when seen]
[2byte pointer to text when trainer beaten]
@@ -2230,17 +2245,35 @@ class TrainerFragment(Command):
Command.__init__(self, *args, **kwargs)
self.last_address = self.address + self.size
script_parse_table[self.address : self.last_address] = self
-
+
+ def get_dependencies(self):
+ deps = []
+ deps.append(self.params[3])
+ deps.extend(self.params[3].get_dependencies())
+ deps.append(self.params[4])
+ deps.extend(self.params[4].get_dependencies())
+ deps.append(self.params[5])
+ deps.extend(self.params[5].get_dependencies())
+ deps.append(self.params[6])
+ deps.extend(self.params[6].get_dependencies())
+ return deps
class TrainerFragmentParam(PointerLabelParam):
"""used by PeopleEvent to point to trainer data"""
def parse(self):
address = calculate_pointer_from_bytes_at(self.address, bank=self.bank)
+ self.calculated_address = address
trainerfrag = TrainerFragment(address=address, map_group=self.map_group, map_id=self.map_id, debug=self.debug)
- self.remotes = [trainerfrag]
+ self.dependencies = [trainerfrag]
PointerLabelParam.parse(self)
+ def get_dependencies(self):
+ deps = []
+ deps.extend(self.dependencies)
+ if len(self.dependencies) > 0:
+ deps.extend(self.dependencies[0].get_dependencies())
+ return deps
class PeopleEvent(Command):
size = people_event_byte_size
@@ -2936,7 +2969,7 @@ class SecondMapHeader:
self.event_bank = ord(rom[address+6])
self.event_header_address = calculate_pointer_from_bytes_at(address+9, bank=ord(rom[address+6]))
- self.event_header = MapEventHeader(self.event_header_address)
+ self.event_header = MapEventHeader(self.event_header_address, map_group=self.map_group, map_id=self.map_id, debug=self.debug)
self.connections = DecimalParam(address=address+11)
all_map_event_headers.append(self.event_header)