mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
starting dependencies work
This commit is contained in:
parent
a8da5fbda9
commit
c80279b98f
@ -1208,6 +1208,9 @@ class MultiByteParam():
|
|||||||
else:
|
else:
|
||||||
self.parsed_address = calculate_pointer_from_bytes_at(self.address, bank=None)
|
self.parsed_address = calculate_pointer_from_bytes_at(self.address, bank=None)
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
return []
|
||||||
|
|
||||||
#you won't actually use this to_asm because it's too generic
|
#you won't actually use this to_asm because it's too generic
|
||||||
#def to_asm(self): return ", ".join([(self.prefix+"%.2x")%x for x in self.bytes])
|
#def to_asm(self): return ", ".join([(self.prefix+"%.2x")%x for x in self.bytes])
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
@ -1243,6 +1246,11 @@ class PointerLabelParam(MultiByteParam):
|
|||||||
self.parsed_address = calculate_pointer_from_bytes_at(self.address, bank=self.bank)
|
self.parsed_address = calculate_pointer_from_bytes_at(self.address, bank=self.bank)
|
||||||
MultiByteParam.parse(self)
|
MultiByteParam.parse(self)
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = [script_parse_table[self.parsed_address]]
|
||||||
|
dependencies.append(script_parse_table[self.parsed_address].get_dependencies())
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
bank = self.bank
|
bank = self.bank
|
||||||
#we pass bank= for whether or not to include a bank byte when reading
|
#we pass bank= for whether or not to include a bank byte when reading
|
||||||
@ -1482,6 +1490,14 @@ class Command:
|
|||||||
#start parsing this command's parameter bytes
|
#start parsing this command's parameter bytes
|
||||||
self.parse()
|
self.parse()
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = []
|
||||||
|
for (key, param) in self.params.items():
|
||||||
|
if hasattr("get_dependencies", param):
|
||||||
|
deps = param.get_dependencies()
|
||||||
|
dependencies.extend(deps)
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
#start with the rgbasm macro name for this command
|
#start with the rgbasm macro name for this command
|
||||||
output = self.macro_name
|
output = self.macro_name
|
||||||
@ -1942,6 +1958,13 @@ class Script():
|
|||||||
self.commands = commands
|
self.commands = commands
|
||||||
return commands
|
return commands
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = []
|
||||||
|
for command in self.commands:
|
||||||
|
deps = command.get_dependencies()
|
||||||
|
dependencies.extend(deps)
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
asm_output = "".join([command.to_asm()+"\n" for command in self.commands])
|
asm_output = "".join([command.to_asm()+"\n" for command in self.commands])
|
||||||
return asm_output
|
return asm_output
|
||||||
@ -2438,6 +2461,13 @@ class SignpostRemoteBase:
|
|||||||
else: self.label = label
|
else: self.label = label
|
||||||
self.parse()
|
self.parse()
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = []
|
||||||
|
for p in self.params:
|
||||||
|
deps = p.get_dependencies()
|
||||||
|
dependencies.extend(deps)
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
"""very similar to Command.to_asm"""
|
"""very similar to Command.to_asm"""
|
||||||
if len(self.params) == 0: return ""
|
if len(self.params) == 0: return ""
|
||||||
@ -2662,6 +2692,13 @@ class Signpost:
|
|||||||
self.params.append(mb)
|
self.params.append(mb)
|
||||||
else:
|
else:
|
||||||
raise Exception, "unknown signpost type byte="+hex(func) + " signpost@"+hex(self.address)
|
raise Exception, "unknown signpost type byte="+hex(func) + " signpost@"+hex(self.address)
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = []
|
||||||
|
for p in self.params:
|
||||||
|
dependencies.extend(p.get_dependencies())
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
output = self.macro_name + " "
|
output = self.macro_name + " "
|
||||||
if self.params == []: raise Exception, "signpost has no params?"
|
if self.params == []: raise Exception, "signpost has no params?"
|
||||||
@ -2775,6 +2812,11 @@ class MapHeader:
|
|||||||
self.music = HexByte(address=address+6)
|
self.music = HexByte(address=address+6)
|
||||||
self.time_of_day = DecimalParam(address=address+7)
|
self.time_of_day = DecimalParam(address=address+7)
|
||||||
self.fishing_group = DecimalParam(address=address+8)
|
self.fishing_group = DecimalParam(address=address+8)
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = [self.second_map_header]
|
||||||
|
dependencies.append(self.second_map_header.get_dependencies())
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
output = "; bank, tileset, permission\n"
|
output = "; bank, tileset, permission\n"
|
||||||
@ -2902,6 +2944,12 @@ class SecondMapHeader:
|
|||||||
#self.connections = connections
|
#self.connections = connections
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = [self.script_header, self.event_header, self.blockdata]
|
||||||
|
dependencies.append(self.script_header.get_dependencies())
|
||||||
|
dependencies.append(self.event_header.get_dependencies())
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
output = "; border block\n"
|
output = "; border block\n"
|
||||||
@ -3070,6 +3118,12 @@ class MapEventHeader:
|
|||||||
else:
|
else:
|
||||||
self.last_address = after_signposts+1
|
self.last_address = after_signposts+1
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = self.people_events + self.signposts + self.xy_triggers + self.warps
|
||||||
|
for p in list(dependencies):
|
||||||
|
dependencies.extend(p.get_dependencies())
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
xspacing = "" #was =spacing
|
xspacing = "" #was =spacing
|
||||||
@ -3245,6 +3299,14 @@ class MapScriptHeader:
|
|||||||
self.last_address = current_address
|
self.last_address = current_address
|
||||||
print "done parsing a MapScriptHeader map_group="+str(map_group)+" map_id="+str(map_id)
|
print "done parsing a MapScriptHeader map_group="+str(map_group)+" map_id="+str(map_id)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def get_dependencies(self):
|
||||||
|
dependencies = self.triggers
|
||||||
|
for p in list(dependencies):
|
||||||
|
dependencies.extend(p.get_dependencies())
|
||||||
|
for callback in self.callbacks:
|
||||||
|
dependencies.extend(callback["callback"].get_dependencies())
|
||||||
|
return dependencies
|
||||||
|
|
||||||
def to_asm(self):
|
def to_asm(self):
|
||||||
output = ""
|
output = ""
|
||||||
@ -4050,6 +4112,19 @@ def to_asm(some_object):
|
|||||||
asm += "\n; " + hex(last_address)
|
asm += "\n; " + hex(last_address)
|
||||||
return asm
|
return asm
|
||||||
|
|
||||||
|
def get_dependencies_for(some_object):
|
||||||
|
"""
|
||||||
|
calculates which labels need to be satisfied for an object
|
||||||
|
to be inserted into the asm and compile successfully.
|
||||||
|
|
||||||
|
You could also choose to not insert labels into the asm, but
|
||||||
|
then you're losing out on the main value of having asm in the
|
||||||
|
first place.
|
||||||
|
"""
|
||||||
|
if isinstance(some_object, int):
|
||||||
|
some_object = script_parse_table[some_object]
|
||||||
|
return some_object.get_dependencies()
|
||||||
|
|
||||||
def isolate_incbins():
|
def isolate_incbins():
|
||||||
"find each incbin line"
|
"find each incbin line"
|
||||||
global incbin_lines, asm
|
global incbin_lines, asm
|
||||||
|
Loading…
Reference in New Issue
Block a user