2022-01-01 17:45:41 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
2023-07-02 22:13:37 +00:00
|
|
|
import os
|
|
|
|
|
|
|
|
|
2022-01-24 20:41:45 +00:00
|
|
|
def add_custom_arguments(parser):
|
2023-02-21 22:03:18 +00:00
|
|
|
parser.add_argument(
|
|
|
|
"--version",
|
2023-07-02 22:13:37 +00:00
|
|
|
default=None,
|
|
|
|
dest="version",
|
2023-02-21 22:03:18 +00:00
|
|
|
help="Decide what version of the game to use (us, jp12, pspeu, etc.)",
|
|
|
|
)
|
2022-01-24 20:41:45 +00:00
|
|
|
parser.add_argument(
|
|
|
|
"--overlay",
|
|
|
|
default="dra",
|
2023-07-02 22:13:37 +00:00
|
|
|
dest="overlay",
|
2022-01-24 20:41:45 +00:00
|
|
|
help="Defines which overlay to use for the diff (main, dra, st/mad, etc.)",
|
|
|
|
)
|
|
|
|
|
2023-01-02 16:49:03 +00:00
|
|
|
|
2023-07-02 22:13:37 +00:00
|
|
|
def apply_psx_base(config, version, name):
|
|
|
|
config["baseimg"] = f"disks/{version}" + (f"{name}.bin").upper()
|
|
|
|
config["myimg"] = f"build/{version}" + (f"{name}.bin").upper()
|
|
|
|
config["mapfile"] = f"build/{version}/{name}.map"
|
|
|
|
config["source_directories"] = [f"src/{name}", "include", f"asm/{version}/{name}"]
|
|
|
|
config["objdump_executable"] = "mipsel-linux-gnu-objdump"
|
|
|
|
|
2023-02-08 14:42:25 +00:00
|
|
|
|
2023-07-02 22:13:37 +00:00
|
|
|
def apply_psx_bin(config, version, name):
|
|
|
|
config["baseimg"] = f"disks/{version}" + (f"BIN/{name}.BIN").upper()
|
|
|
|
config["myimg"] = f"build/{version}" + (f"{name}.bin").upper()
|
|
|
|
config["mapfile"] = f"build/{version}/{name}.map"
|
|
|
|
config["source_directories"] = [f"src/{name}", "include", f"asm/{version}/{name}"]
|
|
|
|
config["objdump_executable"] = "mipsel-linux-gnu-objdump"
|
2023-02-08 14:42:25 +00:00
|
|
|
|
|
|
|
|
2023-07-02 22:13:37 +00:00
|
|
|
def apply_psx_servant(config, version, name):
|
|
|
|
config["baseimg"] = f"disks/{version}" + (f"SERVANT/{name}.bin").upper()
|
|
|
|
config["myimg"] = f"build/{version}" + (f"{name}.bin").upper()
|
|
|
|
config["mapfile"] = f"build/{version}/{name}.map"
|
|
|
|
config["source_directories"] = [
|
|
|
|
f"src/servant/{name}",
|
|
|
|
"include",
|
|
|
|
f"asm/{version}/servant/{name}",
|
|
|
|
]
|
|
|
|
config["objdump_executable"] = "mipsel-linux-gnu-objdump"
|
2023-02-08 14:42:25 +00:00
|
|
|
|
2022-01-24 20:41:45 +00:00
|
|
|
|
2023-08-14 16:21:59 +00:00
|
|
|
def apply_psx_weapon(config, version, name):
|
|
|
|
config["baseimg"] = f"disks/{version}" + (f"SERVANT/{name}.bin").upper()
|
|
|
|
config["myimg"] = f"build/{version}/weapon/w0_{name[2:]}.bin"
|
|
|
|
config["mapfile"] = f"build/{version}/weapon/w0_{name[2:]}.map"
|
|
|
|
config["source_directories"] = [
|
|
|
|
f"src/weapon/{name}",
|
|
|
|
"include",
|
|
|
|
f"asm/{version}/weapon/{name}",
|
|
|
|
]
|
|
|
|
config["objdump_executable"] = "mipsel-linux-gnu-objdump"
|
|
|
|
|
|
|
|
|
2023-07-02 22:13:37 +00:00
|
|
|
def apply_psx_stage(config, version, name):
|
|
|
|
config["baseimg"] = f"disks/{version}" + (f"ST/{name}/{name}.BIN").upper()
|
|
|
|
config["myimg"] = f"build/{version}" + (f"{name}.bin").upper()
|
|
|
|
config["mapfile"] = f"build/{version}/st{name}.map"
|
|
|
|
config["source_directories"] = [
|
|
|
|
f"src/st/{name}",
|
|
|
|
"include",
|
|
|
|
f"asm/{version}/st/{name}",
|
|
|
|
]
|
|
|
|
config["objdump_executable"] = "mipsel-linux-gnu-objdump"
|
2022-11-19 12:24:20 +00:00
|
|
|
|
2023-02-08 14:42:25 +00:00
|
|
|
|
2023-06-21 23:14:54 +00:00
|
|
|
def apply_saturn(config, name):
|
|
|
|
config["arch"] = "sh2"
|
2023-07-02 22:13:37 +00:00
|
|
|
config["baseimg"] = f"disks/saturn" + (f"/{name}.PRG").upper()
|
|
|
|
config["myimg"] = f"build/saturn" + (f"/{name}.PRG").upper()
|
|
|
|
config["mapfile"] = f"build/saturn/{name}.map"
|
|
|
|
config["source_directories"] = [f"src/saturn/"]
|
|
|
|
config["objdump_executable"] = "sh-elf-objdump"
|
|
|
|
|
2023-02-08 14:42:25 +00:00
|
|
|
|
|
|
|
def apply(config, args):
|
2023-07-02 22:13:37 +00:00
|
|
|
version = args.version or os.getenv("VERSION") or "us"
|
|
|
|
if version == "saturn":
|
2023-06-21 23:14:54 +00:00
|
|
|
apply_saturn(config, args.overlay)
|
2023-02-08 14:42:25 +00:00
|
|
|
else:
|
2023-07-02 22:13:37 +00:00
|
|
|
name = args.overlay or "dra"
|
2023-06-21 23:14:54 +00:00
|
|
|
if name.startswith("st/"):
|
2023-07-02 22:13:37 +00:00
|
|
|
apply_psx_stage(config, version, name[3:])
|
2023-06-21 23:14:54 +00:00
|
|
|
elif name.startswith("tt_"):
|
2023-07-02 22:13:37 +00:00
|
|
|
apply_psx_servant(config, version, name)
|
2023-08-14 16:21:59 +00:00
|
|
|
elif name.startswith("w_"):
|
|
|
|
apply_psx_weapon(config, version, name)
|
2023-08-19 12:40:24 +00:00
|
|
|
elif name == "dra" or name == "main":
|
2023-07-02 22:13:37 +00:00
|
|
|
apply_psx_base(config, version, name)
|
2023-06-21 23:14:54 +00:00
|
|
|
else:
|
2023-07-02 22:13:37 +00:00
|
|
|
apply_psx_bin(config, version, name)
|
2023-06-21 23:14:54 +00:00
|
|
|
config["arch"] = "mipsel"
|
2023-07-02 22:13:37 +00:00
|
|
|
config["objdump_executable"] = "mipsel-linux-gnu-objdump"
|