def load_modules(): all_modules = [] with open_asset("modulelist.txt") as f: for line in f: line = line.rstrip('\n') if line[0] == '#': continue components = line.split('.') mod = __import__("coilsnake.modules." + line, globals(), locals(), [components[-1]]) all_modules.append((line, mod.__dict__[components[-1]])) return all_modules
cls.pointer_table_entry.to_block(block, offset, to_snes_address(data_offset)) cls.data_table_entry.to_block(block, data_offset, value) class EbRowTableEntry(GenericLittleEndianRowTableEntry): TABLE_ENTRY_CLASS_MAP = dict( GenericLittleEndianRowTableEntry.TABLE_ENTRY_CLASS_MAP, **{"pointer": (EbPointerTableEntry, ["name", "size"]), "palette": (EbPaletteTableEntry, ["name", "size"]), "standardtext": (EbStandardTextTableEntry, ["name", "size"]), "standardtext null-terminated": (EbStandardNullTerminatedTextTableEntry, ["name", "size"])}) _EB_SCHEMA_MAP = None with open_asset("structures", "eb.yml") as f: i = 1 for doc in yaml.load_all(f, Loader=yaml.CSafeLoader): if i == 1: i += 1 elif i == 2: _EB_SCHEMA_MAP = doc break def eb_table_from_offset(offset, single_column=None, matrix_dimensions=None, hidden_columns=None, num_rows=None, name=None): if hidden_columns is None: hidden_columns = [] try:
self[allocated_range[0]:allocated_range[1] + 1] = data return allocated_range[0] def get_largest_unallocated_range(self): largest_begin, largest_end = 1, 0 for begin, end in self.unallocated_ranges: if end - begin > largest_end - largest_begin: largest_begin = begin largest_end = end if largest_end - largest_begin <= 0: raise NotEnoughUnallocatedSpaceError("Not enough free space left") return largest_begin, largest_end with open_asset("romtypes.yml") as f: ROM_TYPE_MAP = yml_load(f) ROM_TYPE_NAME_UNKNOWN = "Unknown" class Rom(AllocatableBlock): def reset(self, size=0): super(Rom, self).reset(size) self.type = ROM_TYPE_NAME_UNKNOWN def from_file(self, filename): super(Rom, self).from_file(filename) self._setup_rom_post_load() def _setup_rom_post_load(self):
self[allocated_range[0]:allocated_range[1] + 1] = data return allocated_range[0] def get_largest_unallocated_range(self): largest_begin, largest_end = 1, 0 for begin, end in self.unallocated_ranges: if end - begin > largest_end - largest_begin: largest_begin = begin largest_end = end if largest_end - largest_begin <= 0: raise NotEnoughUnallocatedSpaceError("Not enough free space left") return largest_begin, largest_end with open_asset("romtypes.yml") as f: ROM_TYPE_MAP = yml_load(f) ROM_TYPE_NAME_UNKNOWN = "Unknown" class Rom(AllocatableBlock): def reset(self, size=0): super(Rom, self).reset(size) self.type = ROM_TYPE_NAME_UNKNOWN def from_file(self, filename): super(Rom, self).from_file(filename) self._setup_rom_post_load() def _setup_rom_post_load(self):
class EbRowTableEntry(GenericLittleEndianRowTableEntry): TABLE_ENTRY_CLASS_MAP = dict( GenericLittleEndianRowTableEntry.TABLE_ENTRY_CLASS_MAP, **{ "pointer": (EbPointerTableEntry, ["name", "size"]), "palette": (EbPaletteTableEntry, ["name", "size"]), "standardtext": (EbStandardTextTableEntry, ["name", "size"]), "standardtext null-terminated": (EbStandardNullTerminatedTextTableEntry, ["name", "size"]) }) _EB_SCHEMA_MAP = None with open_asset("structures", "eb.yml") as f: i = 1 for doc in yaml.load_all(f, Loader=yaml.CSafeLoader): if i == 1: i += 1 elif i == 2: _EB_SCHEMA_MAP = doc break def eb_table_from_offset(offset, single_column=None, matrix_dimensions=None, hidden_columns=None, num_rows=None, name=None):