Exemple #1
0
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
Exemple #2
0
        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:
Exemple #3
0
            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):
Exemple #4
0
            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):
Exemple #5
0

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):