prime/configure.py

1385 lines
64 KiB
Python
Executable File

#!/usr/bin/env python3
###
# Generates build files for the project.
# This file also includes the project configuration,
# such as compiler flags and the object matching status.
#
# Usage:
# python3 configure.py
# ninja
#
# Append --help to see available options.
###
import argparse
import sys
from pathlib import Path
from tools.project import (
Object,
ProgressCategory,
ProjectConfig,
calculate_progress,
generate_build,
is_windows,
)
# Game versions
DEFAULT_VERSION = 0
VERSIONS = [
"GM8E01_00", # mp-v1.088 NTSC-U
"GM8E01_01", # mp-v1.093 NTSC-U
# "GM8E01_48", # mp-v1.097 NTSC-K
# "GM8P01_00", # mp-v1.110 PAL
# "GM8J01_00", # mp-v1.111 NTSC-J
# "GM8E01_02", # mp-v1.111 NTSC-U
# "R3IJ01_00", # mp-v3.570 New Play Controls
# "R3ME01_00", # mp-v3.593 Trilogy NTSC
# "R3MP01_00", # mp-v3.629 Trilogy PAL
]
parser = argparse.ArgumentParser()
parser.add_argument(
"mode",
choices=["configure", "progress"],
default="configure",
help="script mode (default: configure)",
nargs="?",
)
parser.add_argument(
"-v",
"--version",
choices=VERSIONS,
type=str.upper,
default=VERSIONS[DEFAULT_VERSION],
help="version to build",
)
parser.add_argument(
"--build-dir",
metavar="DIR",
type=Path,
default=Path("build"),
help="base build directory (default: build)",
)
parser.add_argument(
"--binutils",
metavar="BINARY",
type=Path,
help="path to binutils (optional)",
)
parser.add_argument(
"--compilers",
metavar="DIR",
type=Path,
help="path to compilers (optional)",
)
parser.add_argument(
"--map",
action="store_true",
help="generate map file(s)",
)
parser.add_argument(
"--debug",
action="store_true",
help="build with debug info (non-matching)",
)
if not is_windows():
parser.add_argument(
"--wrapper",
metavar="BINARY",
type=Path,
help="path to wibo or wine (optional)",
)
parser.add_argument(
"--dtk",
metavar="BINARY | DIR",
type=Path,
help="path to decomp-toolkit binary or source (optional)",
)
parser.add_argument(
"--objdiff",
metavar="BINARY | DIR",
type=Path,
help="path to objdiff-cli binary or source (optional)",
)
parser.add_argument(
"--sjiswrap",
metavar="EXE",
type=Path,
help="path to sjiswrap.exe (optional)",
)
parser.add_argument(
"--verbose",
action="store_true",
help="print verbose output",
)
parser.add_argument(
"--non-matching",
dest="non_matching",
action="store_true",
help="builds equivalent (but non-matching) or modded objects",
)
parser.add_argument(
"--no-progress",
dest="progress",
action="store_false",
help="disable progress calculation",
)
args = parser.parse_args()
config = ProjectConfig()
config.version = str(args.version)
version_num = VERSIONS.index(config.version)
# Apply arguments
config.build_dir = args.build_dir
config.dtk_path = args.dtk
config.objdiff_path = args.objdiff
config.binutils_path = args.binutils
config.compilers_path = args.compilers
config.generate_map = args.map
config.non_matching = args.non_matching
config.sjiswrap_path = args.sjiswrap
config.progress = args.progress
if not is_windows():
config.wrapper = args.wrapper
# Don't build asm unless we're --non-matching
if not config.non_matching:
config.asm_dir = None
# Tool versions
config.binutils_tag = "2.42-1"
config.compilers_tag = "20240706"
config.dtk_tag = "v1.1.2"
config.objdiff_tag = "v2.3.2"
config.sjiswrap_tag = "v1.1.1"
config.wibo_tag = "0.6.11"
# Project
config.config_path = Path("config") / config.version / "config.yml"
config.check_sha_path = Path("config") / config.version / "build.sha1"
config.asflags = [
"-mgekko",
"--strip-local-absolute",
"-I include",
f"-I build/{config.version}/include",
f"--defsym version={version_num}",
]
config.ldflags = [
"-fp hardware",
"-nodefaults",
]
if args.debug:
config.ldflags.append("-g")
if args.map:
config.ldflags.append("-mapunused")
config.build_rels = False
# Base flags, common to most GC/Wii games.
# Generally leave untouched, with overrides added below.
cflags_base = [
"-nodefaults",
"-proc gekko",
"-align powerpc",
"-enum int",
"-fp hardware",
"-Cpp_exceptions off",
# "-W all",
"-O4,p",
"-inline auto",
'-pragma "cats off"',
'-pragma "warn_notinlined off"',
"-maxerrors 1",
"-nosyspath",
"-RTTI off",
"-fp_contract on",
"-str reuse",
"-multibyte",
"-i include",
"-i extern/musyx/include",
"-i libc",
f"-i build/{config.version}/include",
f"-DVERSION={version_num}",
"-DPRIME1",
"-DNONMATCHING=0",
]
# Debug flags
if args.debug:
cflags_base.extend(["-sym on", "-DDEBUG=1"])
else:
cflags_base.append("-DNDEBUG=1")
# Metrowerks library flags
cflags_runtime = [
*cflags_base,
"-use_lmw_stmw on",
"-str reuse,pool,readonly",
"-gccinc",
"-common off",
"-inline deferred,auto",
]
cflags_retro = [
*cflags_base,
"-use_lmw_stmw on",
"-str reuse,pool,readonly",
"-gccinc",
"-inline deferred,noauto",
"-common on",
"-DMUSY_TARGET=MUSY_TARGET_DOLPHIN",
]
cflags_musyx = [
"-proc gekko",
"-nodefaults",
"-nosyspath",
"-i include",
"-i extern/musyx/include",
"-i libc",
"-inline auto,depth=4",
"-O4,p",
"-fp hard",
"-enum int",
"-Cpp_exceptions off",
"-str reuse,pool,readonly",
"-fp_contract off",
"-DMUSY_TARGET=MUSY_TARGET_DOLPHIN",
]
cflags_musyx_debug = [
"-proc gecko",
"-fp hard",
"-nodefaults",
"-nosyspath",
"-i include",
"-i extern/musyx/include",
"-i libc",
"-g",
"-sym on",
"-D_DEBUG=1",
"-fp hard",
"-enum int",
"-Cpp_exceptions off",
"-DMUSY_TARGET=MUSY_TARGET_DOLPHIN",
]
# REL flags
cflags_rel = [
"-proc gecko",
"-fp hard",
"-nodefaults",
"-nosyspath",
"-i include",
"-i libc",
"-O0",
"-sdata 0",
"-sdata2 0",
"-str noreuse",
"-Cpp_exceptions off",
]
config.linker_version = "GC/1.3.2"
# Helper function for Dolphin libraries
def DolphinLib(lib_name, objects):
return {
"lib": lib_name + "D" if args.debug else "",
"mw_version": "GC/1.2.5n",
"cflags": cflags_base,
"host": False,
"progress_category": "sdk",
"objects": objects,
}
def RetroLib(lib_name, progress_category, objects):
return {
"lib": lib_name + "CW" + "D" if args.debug else "",
"mw_version": "GC/1.3.2",
"cflags": cflags_retro,
"host": False,
"progress_category": progress_category,
"objects": objects,
}
def MusyX(objects, mw_version="GC/1.3.2", debug=False, major=2, minor=0, patch=0):
cflags = cflags_musyx if not debug else cflags_musyx_debug
return {
"lib": "musyx",
"mw_version": mw_version,
"src_dir": "extern/musyx/src",
"host": False,
"cflags": [
*cflags,
f"-DMUSY_VERSION_MAJOR={major}",
f"-DMUSY_VERSION_MINOR={minor}",
f"-DMUSY_VERSION_PATCH={patch}",
],
"progress_category": "third_party",
"objects": objects,
}
# Helper function for REL script objects
def Rel(lib_name, objects):
return {
"lib": lib_name,
"mw_version": "GC/1.3.2",
"cflags": cflags_rel,
"host": True,
"progress_category": "third_party",
"objects": objects,
}
Matching = True # Object matches and should be linked
NonMatching = False # Object does not match and should not be linked
Equivalent = (
config.non_matching
) # Object should be linked when configured with --non-matching
config.warn_missing_config = True
config.warn_missing_source = False
config.libs = [
DolphinLib(
"TRK_MINNOW_DOLPHIN",
[
Object(Matching, "MetroTRK/mslsupp.c"),
],
),
RetroLib(
"MetroidPrime",
"game",
[
Object(NonMatching, "MetroidPrime/main.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CCameraManager.cpp"),
Object(Matching, "MetroidPrime/CControlMapper.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CFirstPersonCamera.cpp"),
Object(Matching, "MetroidPrime/CObjectList.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayer.cpp"),
Object(Matching, "MetroidPrime/CAxisAngle.cpp"),
Object(NonMatching, "MetroidPrime/CEulerAngles.cpp"),
Object(Matching, "MetroidPrime/CArchMsgParmUserInput.cpp"),
Object(NonMatching, "MetroidPrime/CFrontEndUI.cpp"),
Object(NonMatching, "MetroidPrime/CInputGenerator.cpp"),
Object(NonMatching, "MetroidPrime/CMainFlow.cpp"),
Object(NonMatching, "MetroidPrime/CMFGame.cpp"),
Object(NonMatching, "MetroidPrime/CCredits.cpp"),
Object(NonMatching, "MetroidPrime/CSplashScreen.cpp"),
Object(NonMatching, "MetroidPrime/CAnimData.cpp"),
Object(NonMatching, "MetroidPrime/Factories/CCharacterFactory.cpp"),
Object(NonMatching, "MetroidPrime/Factories/CAssetFactory.cpp"),
Object(Matching, "MetroidPrime/Tweaks/CTweakPlayer.cpp"),
Object(NonMatching, "MetroidPrime/Tweaks/CTweaks.cpp"),
Object(Matching, "MetroidPrime/Tweaks/CTweakGame.cpp"),
Object(NonMatching, "MetroidPrime/CGameProjectile.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerGun.cpp"),
Object(NonMatching, "MetroidPrime/CStateManager.cpp"),
Object(Matching, "MetroidPrime/CEntity.cpp"),
Object(Matching, "MetroidPrime/CArchMsgParmInt32.cpp"),
Object(Matching, "MetroidPrime/CArchMsgParmInt32Int32VoidPtr.cpp"),
Object(Matching, "MetroidPrime/CArchMsgParmNull.cpp"),
Object(Matching, "MetroidPrime/CArchMsgParmReal32.cpp"),
Object(Matching, "MetroidPrime/Decode.cpp"),
Object(NonMatching, "MetroidPrime/CIOWinManager.cpp"),
Object(Matching, "MetroidPrime/CIOWin.cpp"),
Object(NonMatching, "MetroidPrime/CActor.cpp"),
Object(NonMatching, "MetroidPrime/CWorld.cpp"),
Object(Matching, "MetroidPrime/Tweaks/CTweakParticle.cpp"),
Object(Matching, "MetroidPrime/Clamp_int.cpp"),
Object(Matching, "MetroidPrime/CArchMsgParmControllerStatus.cpp"),
Object(Matching, "MetroidPrime/CExplosion.cpp"),
Object(Matching, "MetroidPrime/CEffect.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CGameCamera.cpp"),
Object(NonMatching, "MetroidPrime/CGameArea.cpp"),
Object(NonMatching, "MetroidPrime/HUD/CSamusHud.cpp"),
Object(NonMatching, "MetroidPrime/CAnimationDatabaseGame.cpp"),
Object(NonMatching, "MetroidPrime/CTransitionDatabaseGame.cpp"),
Object(Matching, "MetroidPrime/Tweaks/CTweakPlayerControl.cpp"),
Object(NonMatching, "MetroidPrime/Tweaks/CTweakPlayerGun.cpp"),
Object(NonMatching, "MetroidPrime/CPauseScreen.cpp"),
Object(NonMatching, "MetroidPrime/Tweaks/CTweakGui.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptActor.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptTrigger.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptWaypoint.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CPatterned.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptDoor.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CStateMachine.cpp"),
Object(NonMatching, "MetroidPrime/CMapArea.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CBallCamera.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptEffect.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CBomb.cpp"),
Object(Matching, "MetroidPrime/Tweaks/CTweakBall.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerState.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptTimer.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CCinematicCamera.cpp"),
Object(NonMatching, "MetroidPrime/CAutoMapper.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptCounter.cpp"),
Object(NonMatching, "MetroidPrime/CMapWorld.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CAi.cpp"),
Object(Matching, "MetroidPrime/Enemies/PatternedCastTo.cpp"),
Object(Matching, "MetroidPrime/TCastTo.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptSound.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptPlatform.cpp"),
Object(Matching, "MetroidPrime/UserNames.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptGenerator.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptCameraWaypoint.cpp"),
Object(Matching, "MetroidPrime/CGameLight.cpp"),
Object(NonMatching, "MetroidPrime/Tweaks/CTweakTargeting.cpp"),
Object(Matching, "MetroidPrime/Tweaks/CTweakAutoMapper.cpp"),
Object(Matching, "MetroidPrime/CParticleGenInfoGeneric.cpp"),
Object(Matching, "MetroidPrime/CParticleGenInfo.cpp"),
Object(NonMatching, "MetroidPrime/CParticleDatabase.cpp"),
Object(NonMatching, "MetroidPrime/Tweaks/CTweakGunRes.cpp"),
Object(NonMatching, "MetroidPrime/CTargetReticles.cpp"),
Object(NonMatching, "MetroidPrime/CWeaponMgr.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptPickup.cpp"),
Object(NonMatching, "MetroidPrime/CDamageInfo.cpp"),
Object(Matching, "MetroidPrime/CMemoryDrawEnum.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptDock.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptCameraHint.cpp"),
Object(NonMatching, "MetroidPrime/ScriptLoader.cpp"),
Object(NonMatching, "MetroidPrime/CSamusDoll.cpp"),
Object(Matching if config.version == "GM8E01_00" else NonMatching, "MetroidPrime/Factories/CStateMachineFactory.cpp"),
Object(Matching, "MetroidPrime/Weapons/CPlasmaBeam.cpp"),
Object(Matching, "MetroidPrime/Weapons/CPowerBeam.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CWaveBeam.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CIceBeam.cpp"),
Object(NonMatching, "MetroidPrime/CScriptMailbox.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptRelay.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptSpawnPoint.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptRandomRelay.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CBeetle.cpp"),
Object(Matching, "MetroidPrime/HUD/CHUDMemoParms.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptHUDMemo.cpp"),
Object(NonMatching, "MetroidPrime/CMappableObject.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerCameraBob.cpp"),
Object(
Matching, "MetroidPrime/ScriptObjects/CScriptCameraFilterKeyframe.cpp"
),
Object(
Matching, "MetroidPrime/ScriptObjects/CScriptCameraBlurKeyframe.cpp"
),
Object(NonMatching, "MetroidPrime/Cameras/CCameraFilter.cpp"),
Object(NonMatching, "MetroidPrime/Player/CMorphBall.cpp"),
Object(
NonMatching, "MetroidPrime/ScriptObjects/CScriptDamageableTrigger.cpp"
),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptDebris.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptCameraShaker.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptActorKeyframe.cpp"),
Object(Matching, "MetroidPrime/CConsoleOutputWindow.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptWater.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CWeapon.cpp"),
Object(NonMatching, "MetroidPrime/CDamageVulnerability.cpp"),
Object(NonMatching, "MetroidPrime/CActorLights.cpp"),
Object(Matching, "MetroidPrime/Enemies/CPatternedInfo.cpp"),
Object(NonMatching, "MetroidPrime/CSimpleShadow.cpp"),
Object(Matching, "MetroidPrime/CActorParameters.cpp"),
Object(NonMatching, "MetroidPrime/CInGameGuiManager.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CWarWasp.cpp"),
Object(NonMatching, "MetroidPrime/CWorldShadow.cpp"),
Object(Matching, "MetroidPrime/CAudioStateWin.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerVisor.cpp"),
Object(NonMatching, "MetroidPrime/CModelData.cpp"),
Object(NonMatching, "MetroidPrime/CDecalManager.cpp"),
Object(
NonMatching, "MetroidPrime/ScriptObjects/CScriptSpiderBallWaypoint.cpp"
),
Object(NonMatching, "MetroidPrime/Enemies/CBloodFlower.cpp"),
Object(Matching, "MetroidPrime/TGameTypes.cpp"),
Object(NonMatching, "MetroidPrime/CPhysicsActor.cpp"),
Object(Matching, "MetroidPrime/CPhysicsState.cpp"),
Object(NonMatching, "MetroidPrime/CRipple.cpp"),
Object(Matching, "MetroidPrime/CFluidUVMotion.cpp"),
Object(NonMatching, "MetroidPrime/CRippleManager.cpp"),
Object(NonMatching, "MetroidPrime/Player/CGrappleArm.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CSpacePirate.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptCoverPoint.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CPathCamera.cpp"),
Object(NonMatching, "MetroidPrime/CFluidPlane.cpp"),
Object(NonMatching, "MetroidPrime/CFluidPlaneManager.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptGrapplePoint.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CHUDBillboardEffect.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CFlickerBat.cpp"),
Object(
NonMatching,
"MetroidPrime/BodyState/CBodyStateCmdMgr.cpp",
cflags=[*cflags_retro, "-inline auto"],
),
Object(NonMatching, "MetroidPrime/BodyState/CBodyStateInfo.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSAttack.cpp"),
Object(Matching, "MetroidPrime/BodyState/CBSDie.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSFall.cpp"),
Object(Matching, "MetroidPrime/BodyState/CBSGetup.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSKnockBack.cpp"),
Object(Matching, "MetroidPrime/BodyState/CBSLieOnGround.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSLocomotion.cpp"),
Object(Matching, "MetroidPrime/BodyState/CBSStep.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSTurn.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBodyController.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSLoopAttack.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CTargetableProjectile.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSLoopReaction.cpp"),
Object(NonMatching, "MetroidPrime/CSteeringBehaviors.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSGroundHit.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CChozoGhost.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CFireFlea.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSSlide.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSHurled.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSJump.cpp"),
Object(Matching, "MetroidPrime/BodyState/CBSGenerate.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CPuddleSpore.cpp"),
Object(Matching, "MetroidPrime/BodyState/CBSTaunt.cpp"),
Object(NonMatching, "MetroidPrime/CSortedLists.cpp"),
Object(
Matching, "MetroidPrime/ScriptObjects/CScriptDebugCameraWaypoint.cpp"
),
Object(
NonMatching,
"MetroidPrime/ScriptObjects/CScriptSpiderBallAttractionSurface.cpp",
),
Object(Matching, "MetroidPrime/BodyState/CBSScripted.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CPuddleToadGamma.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptDistanceFog.cpp"),
Object(Matching, "MetroidPrime/BodyState/CBSProjectileAttack.cpp"),
Object(Matching, "MetroidPrime/Weapons/CPowerBomb.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CMetaree.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptDockAreaChange.cpp"),
Object(
NonMatching, "MetroidPrime/ScriptObjects/CScriptSpecialFunction.cpp"
),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptActorRotate.cpp"),
Object(Matching, "MetroidPrime/Player/CFidget.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CSpankWeed.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CParasite.cpp"),
Object(NonMatching, "MetroidPrime/Player/CSamusFaceReflection.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptPlayerHint.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CRipper.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CCameraShakeData.cpp"),
Object(
NonMatching, "MetroidPrime/ScriptObjects/CScriptPickupGenerator.cpp"
),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptPointOfInterest.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CDrone.cpp"),
Object(NonMatching, "MetroidPrime/CMapWorldInfo.cpp"),
Object(NonMatching, "MetroidPrime/Factories/CScannableObjectInfo.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CMetroid.cpp"),
Object(NonMatching, "MetroidPrime/Player/CScanDisplay.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptSteam.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptRipple.cpp"),
Object(NonMatching, "MetroidPrime/CBoneTracking.cpp"),
Object(NonMatching, "MetroidPrime/Player/CFaceplateDecoration.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSCover.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptBallTrigger.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CPlasmaProjectile.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerOrbit.cpp"),
Object(NonMatching, "MetroidPrime/CGameCollision.cpp"),
Object(Matching, "MetroidPrime/CBallFilter.cpp"),
Object(Matching, "MetroidPrime/CAABoxFilter.cpp"),
Object(NonMatching, "MetroidPrime/CGroundMovement.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CNewIntroBoss.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CPhazonBeam.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptTargetingPoint.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CBSWallHang.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptEMPulse.cpp"),
Object(NonMatching, "MetroidPrime/HUD/CHudDecoInterface.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CFlameThrower.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CBeamProjectile.cpp"),
Object(NonMatching, "MetroidPrime/CFluidPlaneCPU.cpp"),
Object(NonMatching, "MetroidPrime/CFluidPlaneDoor.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptRoomAcoustics.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CIceSheegoth.cpp"),
Object(NonMatching, "MetroidPrime/CCollisionActorManager.cpp"),
Object(NonMatching, "MetroidPrime/CCollisionActor.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptPlayerActor.cpp"),
Object(NonMatching, "MetroidPrime/Tweaks/CTweakPlayerRes.cpp"),
Object(Matching, "MetroidPrime/Enemies/CBurstFire.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CFlaahgra.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerEnergyDrain.cpp"),
Object(NonMatching, "MetroidPrime/CFlameWarp.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CIceImpact.cpp"),
Object(Matching, "MetroidPrime/GameObjectLists.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CAuxWeapon.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CGunWeapon.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptAreaAttributes.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CWaveBuster.cpp"),
Object(NonMatching, "MetroidPrime/Player/CStaticInterference.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CMetroidBeta.cpp"),
Object(NonMatching, "MetroidPrime/PathFinding/CPathFindSearch.cpp"),
Object(NonMatching, "MetroidPrime/PathFinding/CPathFindRegion.cpp"),
Object(NonMatching, "MetroidPrime/PathFinding/CPathFindArea.cpp"),
Object(
NonMatching, "MetroidPrime/Weapons/GunController/CGunController.cpp"
),
Object(NonMatching, "MetroidPrime/Weapons/GunController/CGSFreeLook.cpp"),
Object(Matching, "MetroidPrime/Weapons/GunController/CGSComboFire.cpp"),
Object(NonMatching, "MetroidPrime/HUD/CHudBallInterface.cpp"),
Object(NonMatching, "MetroidPrime/Tweaks/CTweakGuiColors.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CFishCloud.cpp"),
Object(Matching, "MetroidPrime/CHealthInfo.cpp"),
Object(NonMatching, "MetroidPrime/Player/CGameState.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptVisorFlare.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptWorldTeleporter.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptVisorGoo.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CJellyZap.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptControllerAction.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/GunController/CGunMotion.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptSwitch.cpp"),
Object(Matching, "MetroidPrime/BodyState/CABSIdle.cpp"),
Object(Matching, "MetroidPrime/BodyState/CABSFlinch.cpp"),
Object(NonMatching, "MetroidPrime/BodyState/CABSAim.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptPlayerStateChange.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CThardus.cpp"),
Object(NonMatching, "MetroidPrime/CActorParticles.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CWallCrawlerSwarm.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptAiJumpPoint.cpp"),
Object(NonMatching, "MetroidPrime/CMessageScreen.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CFlaahgraTentacle.cpp"),
Object(Matching, "MetroidPrime/Weapons/GunController/CGSFidget.cpp"),
Object(Matching, "MetroidPrime/BodyState/CABSReaction.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CIceProjectile.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CFlyingPirate.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptColorModulate.cpp"),
Object(NonMatching, "MetroidPrime/CMapUniverse.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CThardusRockProjectile.cpp"),
Object(NonMatching, "MetroidPrime/CInventoryScreen.cpp"),
Object(NonMatching, "MetroidPrime/CVisorFlare.cpp"),
Object(Matching, "MetroidPrime/Enemies/CFlaahgraPlants.cpp"),
Object(NonMatching, "MetroidPrime/CWorldTransManager.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptMidi.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptStreamedAudio.cpp"),
Object(NonMatching, "MetroidPrime/CRagDoll.cpp"),
Object(NonMatching, "MetroidPrime/Player/CGameOptions.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CRepulsor.cpp"),
Object(NonMatching, "MetroidPrime/CEnvFxManager.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CEnergyProjectile.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptGunTurret.cpp"),
Object(Matching, "MetroidPrime/Weapons/CProjectileInfo.cpp"),
Object(NonMatching, "MetroidPrime/CInGameTweakManager.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CBabygoth.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CEyeBall.cpp"),
Object(NonMatching, "MetroidPrime/CIkChain.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptCameraPitchVolume.cpp"),
Object(Matching if config.version == "GM8E01_00" else NonMatching, "MetroidPrime/RumbleFxTable.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CElitePirate.cpp"),
Object(Matching, "MetroidPrime/CRumbleManager.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CBouncyGrenade.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CGrenadeLauncher.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CShockWave.cpp"),
Object(Matching, "MetroidPrime/Enemies/CRipperControlledPlatform.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CKnockBackController.cpp"),
Object(NonMatching, "MetroidPrime/Player/CWorldLayerState.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CMagdolite.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CTeamAiMgr.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CSnakeWeedSwarm.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CBallCameraFailsafeState.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CActorContraption.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CScriptSpindleCamera.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptMemoryRelay.cpp"),
Object(NonMatching, "MetroidPrime/CPauseScreenFrame.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CAtomicAlpha.cpp"),
Object(NonMatching, "MetroidPrime/CLogBookScreen.cpp"),
Object(Matching, "MetroidPrime/CGBASupport.cpp"),
Object(NonMatching, "MetroidPrime/Player/CWorldSaveGameInfo.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptCameraHintTrigger.cpp"),
Object(Matching, "MetroidPrime/Enemies/CAmbientAI.cpp"),
Object(NonMatching, "MetroidPrime/CMemoryCardDriver.cpp"),
Object(NonMatching, "MetroidPrime/CSaveGameScreen.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CAtomicBeta.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CElectricBeamProjectile.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CRidley.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CPuffer.cpp"),
Object(NonMatching, "MetroidPrime/ScriptObjects/CFire.cpp"),
Object(Matching, "MetroidPrime/CPauseScreenBlur.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CTryclops.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CNewFlameThrower.cpp"),
Object(NonMatching, "MetroidPrime/Cameras/CInterpolationCamera.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CSeedling.cpp"),
Object(NonMatching, "MetroidPrime/Player/CGameHintInfo.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CWallWalker.cpp"),
Object(NonMatching, "MetroidPrime/CErrorOutputWindow.cpp"),
Object(NonMatching, "MetroidPrime/CRainSplashGenerator.cpp"),
Object(NonMatching, "MetroidPrime/Factories/CWorldSaveGameInfoFactory.cpp"),
Object(NonMatching, "MetroidPrime/CFluidPlaneRender.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CBurrower.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CMetroidPrimeExo.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptBeam.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CMetroidPrimeEssence.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CMetroidPrimeRelay.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerDynamics.cpp"),
Object(Matching, "MetroidPrime/ScriptObjects/CScriptMazeNode.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/WeaponTypes.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/COmegaPirate.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CPhazonPool.cpp"),
Object(NonMatching, "MetroidPrime/CNESEmulator.cpp"),
Object(NonMatching, "MetroidPrime/Enemies/CPhazonHealingNodule.cpp"),
Object(NonMatching, "MetroidPrime/Player/CMorphBallShadow.cpp"),
Object(NonMatching, "MetroidPrime/Player/CPlayerStuckTracker.cpp"),
Object(NonMatching, "MetroidPrime/CSlideShow.cpp"),
Object(Matching, "MetroidPrime/Tweaks/CTweakSlideShow.cpp"),
Object(NonMatching, "MetroidPrime/CArtifactDoll.cpp"),
Object(NonMatching, "MetroidPrime/CProjectedShadow.cpp"),
Object(Matching, "MetroidPrime/CPreFrontEnd.cpp"),
Object(Matching, "MetroidPrime/CGameCubeDoll.cpp"),
Object(
NonMatching, "MetroidPrime/ScriptObjects/CScriptProjectedShadow.cpp"
),
Object(NonMatching, "MetroidPrime/ScriptObjects/CEnergyBall.cpp"),
Object(Matching, "MetroidPrime/Enemies/CMetroidPrimeProjectile.cpp"),
Object(Matching, "MetroidPrime/Enemies/SPositionHistory.cpp"),
],
),
RetroLib(
"WorldFormat",
"core",
[
Object(NonMatching, "WorldFormat/CAreaOctTree_Tests.cpp"),
Object(Matching, "WorldFormat/CCollisionSurface.cpp"),
Object(Matching, "WorldFormat/CMetroidModelInstance.cpp"),
Object(Matching, "WorldFormat/CAreaBspTree.cpp"),
Object(NonMatching, "WorldFormat/CAreaOctTree.cpp"),
Object(NonMatching, "WorldFormat/CMetroidAreaCollider.cpp"),
Object(NonMatching, "WorldFormat/CWorldLight.cpp"),
Object(NonMatching, "WorldFormat/COBBTree.cpp"),
Object(NonMatching, "WorldFormat/CCollidableOBBTree.cpp"),
Object(NonMatching, "WorldFormat/CCollidableOBBTreeGroup.cpp"),
Object(NonMatching, "WorldFormat/CPVSAreaSet.cpp"),
Object(NonMatching, "WorldFormat/CAreaRenderOctTree.cpp"),
],
),
RetroLib(
"Weapons",
"core",
[
Object(NonMatching, "Weapons/CProjectileWeapon.cpp"),
Object(NonMatching, "Weapons/CProjectileWeaponDataFactory.cpp"),
Object(NonMatching, "Weapons/CCollisionResponseData.cpp"),
Object(Matching, "Weapons/IWeaponRenderer.cpp"),
Object(NonMatching, "Weapons/CDecalDataFactory.cpp"),
Object(NonMatching, "Weapons/CDecal.cpp"),
Object(NonMatching, "Weapons/CWeaponDescription.cpp"),
Object(Matching, "Weapons/CDecalDescription.cpp"),
],
),
RetroLib(
"MetaRender",
"core",
[
Object(NonMatching, "MetaRender/CCubeRenderer.cpp"),
],
),
RetroLib(
"GuiSys",
"core",
[
Object(Matching, "GuiSys/CAuiMain.cpp"),
Object(NonMatching, "GuiSys/CAuiMeter.cpp"),
Object(NonMatching, "GuiSys/CGuiGroup.cpp"),
Object(NonMatching, "GuiSys/CGuiHeadWidget.cpp"),
Object(Matching, "GuiSys/CGuiLight.cpp"),
Object(NonMatching, "GuiSys/CGuiModel.cpp"),
Object(NonMatching, "GuiSys/CGuiObject.cpp"),
Object(NonMatching, "GuiSys/CGuiPane.cpp"),
Object(NonMatching, "GuiSys/CGuiSliderGroup.cpp"),
Object(Matching, "GuiSys/CGuiSys.cpp"),
Object(NonMatching, "GuiSys/CGuiTableGroup.cpp"),
Object(NonMatching, "GuiSys/CGuiTextPane.cpp"),
Object(NonMatching, "GuiSys/CGuiTextSupport.cpp"),
Object(NonMatching, "GuiSys/CGuiWidget.cpp"),
Object(Matching, "GuiSys/CGuiWidgetIdDB.cpp"),
Object(Matching, "GuiSys/CGuiWidgetDrawParms.cpp"),
Object(NonMatching, "GuiSys/CAuiEnergyBarT01.cpp"),
Object(NonMatching, "GuiSys/CAuiImagePane.cpp"),
Object(Matching, "GuiSys/CRepeatState.cpp"),
],
),
RetroLib(
"Collision",
"core",
[
Object(NonMatching, "Collision/CCollidableAABox.cpp"),
Object(Matching, "Collision/CCollidableCollisionSurface.cpp"),
Object(Matching, "Collision/CCollisionInfo.cpp"),
Object(Matching, "Collision/InternalColliders.cpp"),
Object(NonMatching, "Collision/CCollisionPrimitive.cpp"),
Object(Matching, "Collision/CMaterialList.cpp"),
Object(NonMatching, "Collision/CollisionUtil.cpp"),
Object(NonMatching, "Collision/CCollidableSphere.cpp"),
Object(Matching, "Collision/CMaterialFilter.cpp"),
Object(NonMatching, "Collision/COBBox.cpp"),
Object(Matching, "Collision/CMRay.cpp"),
],
),
RetroLib(
"Kyoto1",
"core",
[
Object(Matching, "Kyoto/Basics/CBasics.cpp"),
Object(Matching, "Kyoto/Basics/CStopwatch.cpp"),
Object(Matching, "Kyoto/Basics/CBasicsDolphin.cpp"),
Object(Matching, "Kyoto/Alloc/CCallStackDolphin.cpp"),
Object(Matching, "Kyoto/Basics/COsContextDolphin.cpp"),
Object(Matching, "Kyoto/Basics/CSWDataDolphin.cpp"),
Object(Matching, "Kyoto/Basics/RAssertDolphin.cpp"),
Object(Matching, "Kyoto/Animation/CAnimation.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimationManager.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimationSet.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimCharacterSet.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeLoopIn.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeSequence.cpp"),
Object(NonMatching, "Kyoto/Animation/CCharacterInfo.cpp"),
Object(NonMatching, "Kyoto/Animation/CCharacterSet.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaAnimBlend.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaAnimFactory.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaAnimPhaseBlend.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaAnimPlay.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaAnimRandom.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaAnimSequence.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaTransFactory.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaTransMetaAnim.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaTransPhaseTrans.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaTransSnap.cpp"),
Object(NonMatching, "Kyoto/Animation/CMetaTransTrans.cpp"),
Object(Matching, "Kyoto/Animation/CPASAnimInfo.cpp"),
Object(Matching, "Kyoto/Animation/CPASAnimParm.cpp"),
Object(NonMatching, "Kyoto/Animation/CPASAnimState.cpp"),
Object(NonMatching, "Kyoto/Animation/CPASDatabase.cpp"),
Object(Matching, "Kyoto/Animation/CPASParmInfo.cpp"),
Object(Matching, "Kyoto/Animation/CPrimitive.cpp"),
Object(NonMatching, "Kyoto/Animation/CSequenceHelper.cpp"),
Object(Matching, "Kyoto/Animation/CTransition.cpp"),
Object(Matching, "Kyoto/Animation/CTransitionManager.cpp"),
Object(NonMatching, "Kyoto/Animation/CTreeUtils.cpp"),
Object(NonMatching, "Kyoto/Animation/IMetaAnim.cpp"),
Object(Matching, "Kyoto/Audio/CSfxHandle.cpp"),
Object(NonMatching, "Kyoto/Audio/CSfxManager.cpp"),
Object(NonMatching, "Kyoto/Animation/CAdvancementDeltas.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimMathUtils.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimPOIData.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimSource.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimSourceReader.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimSourceReaderBase.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeAnimReaderContainer.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeBlend.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeContinuousPhaseBlend.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeDoubleChild.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeNode.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeSingleChild.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeTimeScale.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeTransition.cpp"),
Object(NonMatching, "Kyoto/Animation/CAnimTreeTweenBase.cpp"),
Object(Matching, "Kyoto/Animation/CBoolPOINode.cpp"),
Object(NonMatching, "Kyoto/Animation/CCharAnimMemoryMetrics.cpp"),
Object(NonMatching, "Kyoto/Animation/CCharLayoutInfo.cpp"),
Object(NonMatching, "Kyoto/Animation/CFBStreamedAnimReader.cpp"),
Object(NonMatching, "Kyoto/Animation/CFBStreamedCompression.cpp"),
Object(NonMatching, "Kyoto/Animation/CHierarchyPoseBuilder.cpp"),
Object(Matching, "Kyoto/Animation/CInt32POINode.cpp"),
Object(Matching, "Kyoto/Animation/CParticlePOINode.cpp"),
Object(Matching, "Kyoto/Animation/CPOINode.cpp"),
Object(NonMatching, "Kyoto/Animation/CSegStatementSet.cpp"),
Object(NonMatching, "Kyoto/Animation/CTimeScaleFunctions.cpp"),
Object(NonMatching, "Kyoto/Animation/IAnimReader.cpp"),
Object(NonMatching, "Kyoto/Animation/CAllFormatsAnimSource.cpp"),
Object(Matching, "Kyoto/CDvdRequestManager.cpp"),
Object(Matching, "Kyoto/CDvdRequest.cpp"),
Object(Matching, "Kyoto/Text/CColorInstruction.cpp"),
Object(Matching, "Kyoto/Text/CColorOverrideInstruction.cpp"),
Object(Matching, "Kyoto/Text/CDrawStringOptions.cpp"),
Object(NonMatching, "Kyoto/Text/CFontInstruction.cpp"),
Object(NonMatching, "Kyoto/Text/CFontRenderState.cpp"),
Object(Matching, "Kyoto/Text/CLineExtraSpaceInstruction.cpp"),
Object(NonMatching, "Kyoto/Text/CLineInstruction.cpp"),
Object(Matching, "Kyoto/Text/CLineSpacingInstruction.cpp"),
Object(Matching, "Kyoto/Text/CPopStateInstruction.cpp"),
Object(Matching, "Kyoto/Text/CPushStateInstruction.cpp"),
Object(NonMatching, "Kyoto/Text/CRasterFont.cpp"),
Object(Matching, "Kyoto/Text/CRemoveColorOverrideInstruction.cpp"),
Object(Matching, "Kyoto/Text/CSaveableState.cpp"),
Object(NonMatching, "Kyoto/Text/CTextExecuteBuffer.cpp"),
Object(NonMatching, "Kyoto/Text/CTextInstruction.cpp"),
Object(NonMatching, "Kyoto/Text/CTextParser.cpp"),
Object(NonMatching, "Kyoto/Text/CWordBreakTables.cpp"),
Object(NonMatching, "Kyoto/Text/CWordInstruction.cpp"),
Object(Matching, "Kyoto/Text/CBlockInstruction.cpp"),
Object(Matching, "Kyoto/Text/CFont.cpp"),
Object(Matching, "Kyoto/Graphics/CLight.cpp"),
Object(NonMatching, "Kyoto/Graphics/CCubeModel.cpp"),
Object(Matching, "Kyoto/Graphics/CGX.cpp"),
Object(Matching, "Kyoto/Graphics/CTevCombiners.cpp"),
Object(NonMatching, "Kyoto/Graphics/DolphinCGraphics.cpp"),
Object(Matching, "Kyoto/Graphics/DolphinCPalette.cpp"),
Object(Matching, "Kyoto/Graphics/DolphinCTexture.cpp"),
Object(Matching, "Kyoto/Math/CloseEnough.cpp"),
Object(NonMatching, "Kyoto/Math/CMatrix3f.cpp"),
Object(NonMatching, "Kyoto/Math/CMatrix4f.cpp"),
Object(NonMatching, "Kyoto/Math/CQuaternion.cpp"),
Object(Matching, "Kyoto/CRandom16.cpp"),
Object(NonMatching, "Kyoto/Math/CTransform4f.cpp"),
Object(Matching, "Kyoto/Math/CUnitVector3f.cpp"),
Object(Matching, "Kyoto/Math/CVector2f.cpp"),
Object(Matching, "Kyoto/Math/CVector2i.cpp"),
Object(Matching, "Kyoto/Math/CVector3d.cpp"),
Object(Matching, "Kyoto/Math/CVector3f.cpp"),
Object(Matching, "Kyoto/Math/CVector3i.cpp"),
Object(NonMatching, "Kyoto/Math/RMathUtils.cpp"),
Object(Matching, "Kyoto/CCrc32.cpp"),
Object(Matching, "Kyoto/Alloc/CCircularBuffer.cpp"),
Object(Matching, "Kyoto/Alloc/CMemory.cpp"),
Object(Matching, "Kyoto/Alloc/IAllocator.cpp"),
Object(NonMatching, "Kyoto/PVS/CPVSVisOctree.cpp"),
Object(NonMatching, "Kyoto/PVS/CPVSVisSet.cpp"),
Object(Matching, "Kyoto/Particles/CColorElement.cpp"),
Object(NonMatching, "Kyoto/Particles/CElementGen.cpp"),
Object(Matching, "Kyoto/Particles/CIntElement.cpp"),
Object(Matching, "Kyoto/Particles/CModVectorElement.cpp"),
Object(NonMatching, "Kyoto/Particles/CParticleDataFactory.cpp"),
Object(Matching, "Kyoto/Particles/CParticleGen.cpp"),
Object(Matching, "Kyoto/Particles/CParticleGlobals.cpp"),
Object(NonMatching, "Kyoto/Particles/CParticleSwoosh.cpp"),
Object(NonMatching, "Kyoto/Particles/CParticleSwooshDataFactory.cpp"),
Object(Matching, "Kyoto/Particles/CRealElement.cpp"),
Object(NonMatching, "Kyoto/Particles/CSpawnSystemKeyframeData.cpp"),
Object(NonMatching, "Kyoto/Particles/CUVElement.cpp"),
Object(NonMatching, "Kyoto/Particles/CVectorElement.cpp"),
Object(Matching, "Kyoto/Particles/CWarp.cpp"),
Object(Matching, "Kyoto/Math/CPlane.cpp"),
Object(Matching, "Kyoto/Math/CSphere.cpp"),
Object(NonMatching, "Kyoto/Math/CAABox.cpp"),
Object(NonMatching, "Kyoto/CFactoryMgr.cpp"),
Object(NonMatching, "Kyoto/CResFactory.cpp"),
Object(NonMatching, "Kyoto/CResLoader.cpp"),
Object(NonMatching, "Kyoto/rstl/rstl_map.cpp"),
Object(NonMatching, "Kyoto/rstl/rstl_strings.cpp"),
Object(NonMatching, "Kyoto/rstl/RstlExtras.cpp"),
Object(Matching, "Kyoto/Streams/CInputStream.cpp"),
Object(Matching, "Kyoto/Streams/CMemoryInStream.cpp"),
Object(Matching, "Kyoto/Streams/CMemoryStreamOut.cpp"),
Object(Matching, "Kyoto/Streams/COutputStream.cpp"),
Object(Matching, "Kyoto/Streams/CZipInputStream.cpp"),
Object(Matching, "Kyoto/Streams/CZipOutputStream.cpp"),
Object(Matching, "Kyoto/Streams/CZipSupport.cpp"),
Object(Matching, "Kyoto/CFactoryStore.cpp"),
Object(Matching, "Kyoto/CObjectReference.cpp"),
Object(NonMatching, "Kyoto/CSimplePool.cpp"),
Object(Matching, "Kyoto/CToken.cpp"),
Object(Matching, "Kyoto/IObj.cpp"),
],
),
# TODO: Merge back into Kyoto
{
"lib": "zlib",
"mw_version": "GC/1.3.2",
"cflags": cflags_runtime,
"host": False,
"progress_category": "third_party",
"objects": [
Object(Matching, "Kyoto/zlib/adler32.c"),
Object(Matching, "Kyoto/zlib/deflate.c"),
Object(Matching, "Kyoto/zlib/infblock.c"),
Object(Matching, "Kyoto/zlib/infcodes.c"),
Object(Matching, "Kyoto/zlib/inffast.c"),
Object(Matching, "Kyoto/zlib/inflate.c"),
Object(Matching, "Kyoto/zlib/inftrees.c"),
Object(Matching, "Kyoto/zlib/infutil.c"),
Object(Matching, "Kyoto/zlib/trees.c"),
Object(Matching, "Kyoto/zlib/zutil.c"),
],
},
# TODO: Merge this with zlib and Kyoto1
RetroLib(
"Kyoto2",
"core",
[
Object(Matching, "Kyoto/CARAMManager.cpp"),
Object(NonMatching, "Kyoto/Math/CFrustumPlanes.cpp"),
Object(NonMatching, "Kyoto/Graphics/CCubeMaterial.cpp"),
Object(Matching, "Kyoto/Graphics/CCubeSurface.cpp"),
Object(Matching, "Kyoto/Animation/CCharAnimTime.cpp"),
Object(Matching, "Kyoto/Animation/CSegIdList.cpp"),
Object(Matching, "Kyoto/Input/CFinalInput.cpp"),
Object(Matching, "Kyoto/Graphics/CColor.cpp"),
Object(NonMatching, "Kyoto/Audio/DolphinCAudioGroupSet.cpp"),
Object(NonMatching, "Kyoto/Audio/DolphinCAudioSys.cpp"),
Object(NonMatching, "Kyoto/DolphinCMemoryCardSys.cpp"),
Object(Matching, "Kyoto/Input/DolphinIController.cpp"),
Object(Matching, "Kyoto/Input/CDolphinController.cpp"),
Object(Matching, "Kyoto/DolphinCDvdFile.cpp"),
Object(NonMatching, "Kyoto/Alloc/CMediumAllocPool.cpp"),
Object(Matching, "Kyoto/Alloc/CSmallAllocPool.cpp"),
Object(NonMatching, "Kyoto/Alloc/CGameAllocator.cpp"),
Object(NonMatching, "Kyoto/Animation/DolphinCSkinnedModel.cpp"),
Object(NonMatching, "Kyoto/Animation/DolphinCSkinRules.cpp"),
Object(NonMatching, "Kyoto/Animation/DolphinCVirtualBone.cpp"),
Object(NonMatching, "Kyoto/Graphics/DolphinCModel.cpp"),
Object(Matching, "Kyoto/Text/CStringTable.cpp"),
Object(NonMatching, "Kyoto/Particles/CEmitterElement.cpp"),
Object(Matching, "Kyoto/Particles/CEffectComponent.cpp"),
Object(NonMatching, "Kyoto/Particles/CParticleData.cpp"),
Object(NonMatching, "Kyoto/Animation/CVertexMorphEffect.cpp"),
Object(NonMatching, "Kyoto/Animation/CSkinnedModelWithAvgNormals.cpp"),
Object(Matching, "Kyoto/CTimeProvider.cpp"),
Object(Matching, "Kyoto/CARAMToken.cpp"),
Object(Matching, "Kyoto/Audio/CMidiManager.cpp"),
Object(Matching, "Kyoto/Text/CFontImageDef.cpp"),
Object(NonMatching, "Kyoto/Text/CImageInstruction.cpp"),
Object(NonMatching, "Kyoto/Text/CTextRenderBuffer.cpp"),
Object(NonMatching, "Kyoto/Graphics/CCubeMoviePlayer.cpp"),
Object(NonMatching, "Kyoto/Animation/CAdditiveAnimPlayback.cpp"),
Object(NonMatching, "Kyoto/Particles/CParticleElectricDataFactory.cpp"),
Object(NonMatching, "Kyoto/Particles/CParticleElectric.cpp"),
Object(Matching, "Kyoto/Graphics/DolphinCColor.cpp"),
Object(NonMatching, "Kyoto/Audio/CDSPStreamManager.cpp"),
Object(Matching, "Kyoto/CDependencyGroup.cpp"),
Object(NonMatching, "Kyoto/Audio/CStreamAudioManager.cpp"),
Object(Matching, "Kyoto/Animation/CHalfTransition.cpp"),
Object(NonMatching, "Kyoto/Particles/CElectricDescription.cpp"),
Object(NonMatching, "Kyoto/Particles/CSwooshDescription.cpp"),
Object(NonMatching, "Kyoto/Particles/CGenDescription.cpp"),
Object(NonMatching, "Kyoto/CPakFile.cpp"),
Object(NonMatching, "Kyoto/Animation/CPoseAsTransformsVariableSize.cpp"),
Object(NonMatching, "Kyoto/Input/CRumbleVoice.cpp"),
Object(Matching, "Kyoto/Input/RumbleAdsr.cpp"),
Object(Matching, "Kyoto/Input/CRumbleGenerator.cpp"),
Object(NonMatching, "Kyoto/Audio/CDSPStream.cpp"),
Object(Matching, "Kyoto/Audio/g721.cpp"),
Object(NonMatching, "Kyoto/Audio/CStaticAudioPlayer.cpp"),
Object(NonMatching, "Kyoto/CFrameDelayedKiller.cpp"),
],
),
DolphinLib(
"ai",
[
Object(Matching, "Dolphin/ai.c"),
],
),
DolphinLib(
"ar",
[
Object(Matching, "Dolphin/ar/ar.c"),
Object(Matching, "Dolphin/ar/arq.c"),
],
),
DolphinLib(
"base",
[
Object(Matching, "Dolphin/PPCArch.c"),
],
),
DolphinLib(
"db",
[
Object(Matching, "Dolphin/db.c"),
],
),
DolphinLib(
"dsp",
[
Object(Matching, "Dolphin/dsp/dsp.c"),
Object(Matching, "Dolphin/dsp/dsp_debug.c"),
Object(Matching, "Dolphin/dsp/dsp_task.c"),
],
),
DolphinLib(
"dvd",
[
Object(Matching, "Dolphin/dvd/dvdlow.c"),
Object(Matching, "Dolphin/dvd/dvdfs.c"),
Object(Matching, "Dolphin/dvd/dvd.c"),
Object(Matching, "Dolphin/dvd/dvdqueue.c"),
Object(Matching, "Dolphin/dvd/dvderror.c"),
Object(Matching, "Dolphin/dvd/dvdidutils.c"),
Object(Matching, "Dolphin/dvd/dvdfatal.c"),
Object(Matching, "Dolphin/dvd/fstload.c"),
],
),
DolphinLib(
"gx",
[
Object(NonMatching, "Dolphin/gx/GXInit.c"),
Object(NonMatching, "Dolphin/gx/GXFifo.c"),
Object(NonMatching, "Dolphin/gx/GXAttr.c"),
Object(NonMatching, "Dolphin/gx/GXMisc.c"),
Object(NonMatching, "Dolphin/gx/GXGeometry.c"),
Object(NonMatching, "Dolphin/gx/GXFrameBuf.c"),
Object(NonMatching, "Dolphin/gx/GXLight.c"),
Object(NonMatching, "Dolphin/gx/GXTexture.c"),
Object(NonMatching, "Dolphin/gx/GXBump.c"),
Object(NonMatching, "Dolphin/gx/GXTev.c"),
Object(NonMatching, "Dolphin/gx/GXPixel.c"),
Object(NonMatching, "Dolphin/gx/GXStubs.c"),
Object(NonMatching, "Dolphin/gx/GXDisplayList.c"),
Object(NonMatching, "Dolphin/gx/GXTransform.c"),
Object(NonMatching, "Dolphin/gx/GXPerf.c"),
],
),
DolphinLib(
"mtx",
[
Object(
Matching, "Dolphin/mtx/mtx.c", cflags=[*cflags_base, "-fp_contract off"]
),
Object(NonMatching, "Dolphin/mtx/mtx44vec.c"),
Object(NonMatching, "Dolphin/mtx/mtx44.c"),
Object(NonMatching, "Dolphin/mtx/vec.c"),
Object(NonMatching, "Dolphin/mtx/psmtx.c"),
],
),
DolphinLib(
"os",
[
Object(Matching, "Dolphin/os/__start.c"),
Object(Matching, "Dolphin/os/OS.c"),
Object(Matching, "Dolphin/os/OSAlarm.c"),
Object(Matching, "Dolphin/os/OSArena.c"),
Object(Matching, "Dolphin/os/OSAudioSystem.c"),
Object(Matching, "Dolphin/os/OSCache.c"),
Object(Matching, "Dolphin/os/OSContext.c"),
Object(Matching, "Dolphin/os/OSError.c"),
Object(NonMatching, "Dolphin/os/OSFatal.c"),
Object(NonMatching, "Dolphin/os/OSFont.c"),
Object(Matching, "Dolphin/os/OSInterrupt.c"),
Object(Matching, "Dolphin/os/OSLink.c"),
Object(Matching, "Dolphin/os/OSMessage.c"),
Object(Matching, "Dolphin/os/OSMemory.c"),
Object(Matching, "Dolphin/os/OSMutex.c"),
Object(NonMatching, "Dolphin/os/OSReboot.c"),
Object(Matching, "Dolphin/os/OSReset.c"),
Object(Matching, "Dolphin/os/OSResetSW.c"),
Object(Matching, "Dolphin/os/OSRtc.c"),
Object(Matching, "Dolphin/os/OSSync.c"),
Object(Matching, "Dolphin/os/OSThread.c"),
Object(Matching, "Dolphin/os/OSTime.c"),
Object(Matching, "Dolphin/os/__ppc_eabi_init.cpp"),
],
),
DolphinLib(
"pad",
[
Object(Matching, "Dolphin/pad/PadClamp.c"),
Object(Matching, "Dolphin/pad/pad.c"),
],
),
DolphinLib(
"vi",
[
Object(NonMatching, "Dolphin/vi.c"),
],
),
{
"lib": "MSL_C.PPCEABI.bare.H",
"mw_version": "GC/1.3.2",
"cflags": cflags_runtime,
"host": False,
"progress_category": "sdk",
"objects": [
Object(Matching, "Runtime/__mem.c"),
Object(Matching, "Runtime/__va_arg.c"),
Object(Matching, "Runtime/global_destructor_chain.c"),
Object(Matching, "Runtime/CPlusLibPPC.cpp"),
Object(Matching, "Runtime/NMWException.cpp"),
Object(Matching, "Runtime/ptmf.c"),
Object(Matching, "Runtime/runtime.c"),
Object(Matching, "Runtime/__init_cpp_exceptions.cpp"),
Object(Matching, "Runtime/Gecko_ExceptionPPC.cpp"),
Object(Matching, "Runtime/abort_exit.c"),
Object(NonMatching, "Runtime/alloc.c"),
Object(Matching, "Runtime/ansi_files.c"),
Object(NonMatching, "Runtime/ansi_fp.c"),
Object(Matching, "Runtime/arith.c"),
Object(Matching, "Runtime/buffer_io.c"),
Object(Matching, "Runtime/ctype.c"),
Object(Matching, "Runtime/locale.c"),
Object(Matching, "Runtime/direct_io.c"),
Object(Matching, "Runtime/file_io.c"),
Object(Matching, "Runtime/errno.c"),
Object(Matching, "Runtime/FILE_POS.c"),
Object(Matching, "Runtime/mbstring.c"),
Object(Matching, "Runtime/mem.c"),
Object(Matching, "Runtime/mem_funcs.c"),
Object(Matching, "Runtime/misc_io.c"),
Object(NonMatching, "Runtime/printf.c"),
Object(NonMatching, "Runtime/qsort.c"),
Object(Matching, "Runtime/rand.c"),
Object(Matching, "Runtime/sscanf.c"),
Object(Matching, "Runtime/string.c"),
Object(Matching, "Runtime/float.c"),
Object(NonMatching, "Runtime/strtold.c"),
Object(Matching, "Runtime/uart_console_io.c"),
Object(Matching, "Runtime/wchar_io.c"),
Object(Matching, "Runtime/e_acos.c"),
Object(Matching, "Runtime/e_asin.c"),
Object(Matching, "Runtime/e_atan2.c"),
Object(NonMatching, "Runtime/e_exp.c"), # CW 1.3.2 lib bug
Object(Matching, "Runtime/e_fmod.c"),
Object(Matching, "Runtime/e_log.c"),
Object(NonMatching, "Runtime/e_pow.c"), # CW 1.3.2 lib bug
Object(Matching, "Runtime/e_rem_pio2.c"),
Object(Matching, "Runtime/k_cos.c"),
Object(Matching, "Runtime/k_rem_pio2.c"),
Object(Matching, "Runtime/k_sin.c"),
Object(Matching, "Runtime/k_tan.c"),
Object(NonMatching, "Runtime/s_atan.c"), # CW 1.3.2 lib bug
Object(Matching, "Runtime/s_copysign.c"),
Object(Matching, "Runtime/s_cos.c"),
Object(Matching, "Runtime/s_floor.c"),
Object(Matching, "Runtime/s_frexp.c"),
Object(Matching, "Runtime/s_ldexp.c"),
Object(Matching, "Runtime/s_modf.c"),
Object(Matching, "Runtime/s_nextafter.c"),
Object(Matching, "Runtime/s_sin.c"),
Object(Matching, "Runtime/s_tan.c"),
Object(Matching, "Runtime/w_acos.c"),
Object(Matching, "Runtime/w_asin.c"),
Object(Matching, "Runtime/w_atan2.c"),
Object(Matching, "Runtime/w_exp.c"),
Object(Matching, "Runtime/w_fmod.c"),
Object(Matching, "Runtime/w_log.c"),
Object(Matching, "Runtime/w_pow.c"),
Object(Matching, "Runtime/math_ppc.c"),
],
},
MusyX(
# debug=True,
# mw_version="GC/1.2.5",
# major=1,
# minor=5,
# patch=3,
objects=[
Object(Matching, "musyx/runtime/seq.c"),
Object(Matching, "musyx/runtime/synth.c"),
Object(Matching, "musyx/runtime/seq_api.c"),
Object(Matching, "musyx/runtime/snd_synthapi.c"),
Object(Matching, "musyx/runtime/stream.c"),
Object(Matching, "musyx/runtime/synthdata.c"),
Object(Matching, "musyx/runtime/synthmacros.c"),
Object(Matching, "musyx/runtime/synthvoice.c"),
Object(Matching, "musyx/runtime/synth_ac.c"),
Object(Matching, "musyx/runtime/synth_adsr.c"),
Object(Matching, "musyx/runtime/synth_vsamples.c"),
Object(Matching, "musyx/runtime/synth_dbtab.c"),
Object(Matching, "musyx/runtime/s_data.c"),
Object(NonMatching, "musyx/runtime/hw_dspctrl.c"),
Object(Matching, "musyx/runtime/hw_volconv.c"),
Object(Matching, "musyx/runtime/snd3d.c"),
Object(Matching, "musyx/runtime/snd_init.c"),
Object(Matching, "musyx/runtime/snd_math.c"),
Object(NonMatching, "musyx/runtime/snd_midictrl.c"),
Object(Matching, "musyx/runtime/snd_service.c"),
Object(Matching, "musyx/runtime/hardware.c"),
Object(Matching, "musyx/runtime/hw_aramdma.c"),
Object(Matching, "musyx/runtime/dsp_import.c"),
Object(Matching, "musyx/runtime/hw_dolphin.c"),
Object(Matching, "musyx/runtime/hw_memory.c"),
Object(Matching, "musyx/runtime/hw_lib_dummy.c"),
Object(Matching, "musyx/runtime/CheapReverb/creverb_fx.c"),
Object(Matching, "musyx/runtime/CheapReverb/creverb.c"),
Object(Matching, "musyx/runtime/StdReverb/reverb_fx.c"),
Object(Matching, "musyx/runtime/StdReverb/reverb.c"),
Object(Matching, "musyx/runtime/Delay/delay_fx.c"),
Object(Matching, "musyx/runtime/Chorus/chorus_fx.c"),
Object(Matching, "musyx/runtime/profile.c"),
],
),
DolphinLib(
"dtk",
[
Object(Matching, "Dolphin/dtk.c"),
],
),
DolphinLib(
"card",
[
Object(Matching, "Dolphin/card/CARDBios.c"),
Object(Matching, "Dolphin/card/CARDUnlock.c"),
Object(Matching, "Dolphin/card/CARDRdwr.c"),
Object(Matching, "Dolphin/card/CARDBlock.c"),
Object(Matching, "Dolphin/card/CARDDir.c"),
Object(Matching, "Dolphin/card/CARDCheck.c"),
Object(Matching, "Dolphin/card/CARDMount.c"),
Object(Matching, "Dolphin/card/CARDFormat.c"),
Object(Matching, "Dolphin/card/CARDOpen.c"),
Object(Matching, "Dolphin/card/CARDCreate.c"),
Object(Matching, "Dolphin/card/CARDRead.c"),
Object(Matching, "Dolphin/card/CARDWrite.c"),
Object(Matching, "Dolphin/card/CARDDelete.c"),
Object(Matching, "Dolphin/card/CARDStat.c"),
Object(Matching, "Dolphin/card/CARDRename.c"),
Object(Matching, "Dolphin/card/CARDNet.c"),
],
),
DolphinLib(
"si",
[
Object(Matching, "Dolphin/si/SIBios.c"),
Object(Matching, "Dolphin/si/SISamplingRate.c"),
],
),
DolphinLib(
"exi",
[
Object(Matching, "Dolphin/exi/EXIBios.c"),
Object(Matching, "Dolphin/exi/EXIUart.c"),
],
),
DolphinLib(
"thp",
[
Object(NonMatching, "Dolphin/thp/THPDec.c"),
Object(NonMatching, "Dolphin/thp/THPAudio.c"),
],
),
DolphinLib(
"gba",
[
Object(Matching, "Dolphin/GBA/GBA.c"),
Object(Matching, "Dolphin/GBA/GBAGetProcessStatus.c"),
Object(Matching, "Dolphin/GBA/GBAJoyBoot.c"),
Object(Matching, "Dolphin/GBA/GBARead.c"),
Object(Matching, "Dolphin/GBA/GBAWrite.c"),
Object(Matching, "Dolphin/GBA/GBAXfer.c"),
Object(Matching, "Dolphin/GBA/GBAKey.c"),
],
),
Rel(
"NESemuP",
[
Object(
Matching,
"NESemu/modwrapper.c",
),
],
),
]
# Optional extra categories for progress tracking
config.progress_categories = [
ProgressCategory("game", "Game"),
ProgressCategory("core", "Core Engine (Kyoto)"),
ProgressCategory("sdk", "SDK"),
ProgressCategory("third_party", "Third Party"),
]
config.progress_all = False
config.progress_each_module = args.verbose
config.progress_modules = False
config.progress_use_fancy = True
config.progress_code_fancy_frac = 1499
config.progress_code_fancy_item = "Energy"
config.progress_data_fancy_frac = 250
config.progress_data_fancy_item = "Missiles"
if args.mode == "configure":
# Write build.ninja and objdiff.json
generate_build(config)
elif args.mode == "progress":
# Print progress and write progress.json
calculate_progress(config)
else:
sys.exit("Unknown mode: " + args.mode)