コード例 #1
0
ファイル: segment.py プロジェクト: pmret/papermario
    def __init__(
        self,
        rom_start: RomAddr,
        rom_end: RomAddr,
        type: str,
        name: str,
        vram_start: Any,
        extract: bool = True,
        given_subalign: int = options.get_subalign(),
        exclusive_ram_id: Optional[str] = None,
        given_dir: Path = Path(),
        symbol_name_format: str = options.get_symbol_name_format(),
        symbol_name_format_no_rom: str = options.get_symbol_name_format_no_rom(),
        args=[],
        yaml={},
    ):
        self.rom_start = rom_start
        self.rom_end = rom_end
        self.type = type
        self.name = name
        self.vram_start = vram_start
        self.extract = extract

        self.given_subalign = given_subalign
        self.exclusive_ram_id = exclusive_ram_id
        self.given_dir = given_dir
        self.given_seg_symbols: Dict[
            int, List[Symbol]
        ] = {}  # Symbols known to be in this segment
        self.given_section_order: List[str] = options.get_section_order()

        self.given_symbol_name_format = symbol_name_format
        self.given_symbol_name_format_no_rom = symbol_name_format_no_rom

        self.parent: Optional[Segment] = None
        self.sibling: Optional[Segment] = None

        self.args: List[str] = args
        self.yaml = yaml

        if self.rom_start == "auto":
            self.extract = False

        if self.type.startswith("."):
            self.extract = False

        self.warnings: List[str] = []
        self.did_run = False

        if isinstance(self.rom_start, int) and isinstance(self.rom_end, int):
            if self.rom_start > self.rom_end:
                log.error(
                    f"Error: segments out of order - ({self.name} starts at 0x{self.rom_start:X}, but next segment starts at 0x{self.rom_end:X})"
                )
コード例 #2
0
ファイル: segment.py プロジェクト: ethteck/splat
    def __init__(self,
                 rom_start,
                 rom_end,
                 type,
                 name,
                 vram_start,
                 extract=True,
                 given_subalign=options.get_subalign(),
                 given_is_overlay: Optional[bool] = False,
                 given_dir: Path = Path(),
                 args=[],
                 yaml={}):
        self.rom_start = rom_start
        self.rom_end = rom_end
        self.type = type
        self.name = name
        self.vram_start = vram_start
        self.extract = extract

        self.given_subalign = given_subalign
        self.given_is_overlay = given_is_overlay
        self.given_dir = given_dir
        self.given_seg_symbols: Dict[int, Symbol] = {
        }  # Symbols known to be in this segment
        self.given_ext_symbols: Dict[int, Symbol] = {
        }  # Symbols not in this segment but also not from other overlapping ram address ranges

        self.parent: Optional[Segment] = None
        self.sibling: Optional[Segment] = None

        self.args: List[str] = args
        self.yaml = yaml

        if "skip" in self.args:
            self.extract = False

        if self.rom_start == "auto":
            self.extract = False

        if self.type.startswith("."):
            self.extract = False

        self.warnings: List[str] = []
        self.did_run = False

        if isinstance(self.rom_start, int) and isinstance(self.rom_end, int):
            if self.rom_start > self.rom_end:
                print(
                    f"Error: segments out of order - ({self.name} starts at 0x{self.rom_start:X}, but next segment starts at 0x{self.rom_end:X})"
                )
                sys.exit(1)
コード例 #3
0
ファイル: segment.py プロジェクト: mkst/n64splat
def parse_segment_subalign(segment: Union[dict, list]) -> int:
    default = options.get_subalign()
    if isinstance(segment, dict):
        return int(segment.get("subalign", default))
    return default