ref: 441cb01c397ca37584ddbddf6e67079e1dcf199f
parent: cbd896b8b97f986250baeaa66a9b620f16b4bb62
author: Bryan Bishop <[email protected]>
date: Sat Apr 14 21:18:25 EDT 2012
corrections to almost make things run
--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -2204,6 +2204,7 @@
size = 2
#default is to not parse out a bank
bank = False
+ force = False
def __init__(self, *args, **kwargs):
#bank can be overriden
if "bank" in kwargs.keys():
@@ -5304,19 +5305,19 @@
else:
self.label = label
self.last_address = address + 8
- sccript_parse_table[address : self.last_address] = self
+ script_parse_table[address : self.last_address] = self
self.parse()
def parse(self):
address = self.address
- self.bank = HexByte(address)
- self.tileset = HexByte(address+1)
- self.permission = DecimalParam(address+2)
+ self.bank = HexByte(address=address)
+ self.tileset = HexByte(address=address+1)
+ self.permission = DecimalParam(address=address+2)
#TODO: is the bank really supposed to be 0x25 all the time ??
- self.second_map_header = SecondMapHeader(calculate_pointer(ord(rom[address+3])+(ord(rom[address+4])<<8), self.bank))
- self.location_on_world_map = HexByte(address+5)
- self.music = HexByte(address+6)
- self.time_of_day = DecimalParam(address+7)
- self.fishing_group = DecimalParam(address+8)
+ self.second_map_header = SecondMapHeader(calculate_pointer(ord(rom[address+3])+(ord(rom[address+4])<<8), self.bank.byte), map_group=self.map_group, map_id=self.map_id, debug=self.debug)
+ self.location_on_world_map = HexByte(address=address+5)
+ self.music = HexByte(address=address+6)
+ self.time_of_day = DecimalParam(address=address+7)
+ self.fishing_group = DecimalParam(address=address+8)
def to_asm(self):
output = "; bank, tileset, permission\n"
output += "db " + ", ".join([self.bank.to_asm(), self.tileset.to_asm(), self.permission.to_asm()])
@@ -5340,8 +5341,8 @@
self.map_id = map_id
self.debug = debug
self.bank = bank
- if !label:
- self.label = base_label + hex(address)
+ if not label:
+ self.label = self.base_label + hex(address)
else: self.label = label
self.last_address = address+12
#i think it's always a static size?
@@ -5351,9 +5352,9 @@
address = self.address
bytes = rom_interval(address, second_map_header_byte_size, strings=False)
- self.border_block = HexByte(address)
- self.height = DecimalParam(address+1)
- self.width = DecimalParam(address+2)
+ self.border_block = HexByte(address=address)
+ self.height = DecimalParam(address=address+1)
+ self.width = DecimalParam(address=address+2)
#TODO: process blockdata ?
#bank appears first
@@ -5365,7 +5366,7 @@
self.script_header = MapScriptHeader(address+6, map_group=self.map_group, map_id=self.map_id, debug=self.debug)
self.event_header = MapEventHeader(address+8)
- self.connections = DecimalParam(address+11)
+ self.connections = DecimalParam(address=address+11)
#border_block = bytes[0]
#height = bytes[1]
@@ -5434,7 +5435,7 @@
self.label = label
else:
self.label = self.base_label + hex(address)
- self.last_address = self.address + (self.width * self.height)
+ self.last_address = self.address + (self.width.byte * self.height.byte)
script_parse_table[address : self.last_address] = self
self.parse()
def save_to_file(self):
@@ -5442,7 +5443,8 @@
map_path = self.map_path
if not os.path.exists(map_path):
#dump to file
- bytes = rom_interval(self.address, self.width*self.height, strings=True)
+ #bytes = rom_interval(self.address, self.width.byte*self.height.byte, strings=True)
+ bytes = rom[self.address : self.address + self.width.byte*self.height.byte]
file_handler = open(map_path, "w")
file_handler.write(bytes)
file_handler.close()
@@ -5619,7 +5621,7 @@
current_address = address
for (index, trigger_bytes) in enumerate(groups):
print "parsing a trigger header..."
- script = ScriptPointerLabelParam(current_address, map_group=map_group, map_id=map_id, debug=debug)
+ script = ScriptPointerLabelParam(address=current_address, map_group=map_group, map_id=map_id, debug=debug)
self.triggers.append(script)
current_address += ptr_line_size
current_address = address + (self.trigger_count * ptr_line_size) + 1
@@ -5629,7 +5631,7 @@
self.callbacks = []
for index in range(callback_count):
hook_byte = HexByte(current_address)
- callback = ScriptPointerLabelParam(current_address+1, map_group=map_group, map_id=map_id, debug=debug)
+ callback = ScriptPointerLabelParam(address=current_address+1, map_group=map_group, map_id=map_id, debug=debug)
callbacks.append({"hook": hook_byte, "callback": callback})
return True
def to_asm(self):