Configure offsets for code and overlay assets

This commit is contained in:
cadmic
2024-06-19 14:53:35 -07:00
parent 8e0199bcc0
commit 0e43c07aa5
44 changed files with 1012 additions and 335 deletions
+21
View File
@@ -18,12 +18,16 @@ PROJECT_ROOT = Path(__file__).parent.parent
@dataclasses.dataclass
class VersionConfig:
# Version name
version: str
# ROM offset to start of DMA table
dmadata_start: int
# DMA segment information, in ROM order
dmadata_segments: OrderedDict[str, SegmentInfo]
# Addresses of important variables needed for asset extraction
variables: Dict[str, int]
# Assets to extract
assets: list[AssetConfig]
@dataclasses.dataclass
@@ -32,6 +36,13 @@ class SegmentInfo:
vram: int | None
@dataclasses.dataclass
class AssetConfig:
xml_path: Path
start_offset: int | None
end_offset: int | None
def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]:
segments = OrderedDict()
with open(PROJECT_ROOT / f"baseroms/{version}/segments.csv", "r") as f:
@@ -46,8 +57,18 @@ def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]:
def load_version_config(version: str) -> VersionConfig:
with open(PROJECT_ROOT / f"baseroms/{version}/config.yml", "r") as f:
config = yaml.load(f, Loader=yaml.Loader)
assets = []
for asset in config["assets"]:
xml_path = asset["xml_path"]
start_offset = asset.get("start_offset", None)
end_offset = asset.get("end_offset", None)
assets.append(AssetConfig(xml_path, start_offset, end_offset))
return VersionConfig(
version=version,
dmadata_start=config["dmadata_start"],
dmadata_segments=load_dmadata_segments(version),
variables=config["variables"],
assets=assets,
)