mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-23 13:09:44 +00:00
de46f99e2e
This aims to deprecate all the Splat tools in `tools/splat_ext` in favour of a more centralised asset manager. This brings the following advantages: * Much faster extraction * Faster build * Automatically define `static` symbols or unique names whenever `static` is not possible * Allow to embed assets into the output binary * Drastically simplify `Makefile` by removing all the asset build rules * Avoid situations where it is not possible to extract and build assets that is not 4-byte aligned This is achieved by having the splat YAML targeting a normal C file as data and have an external tool to take care of the following: 1. Extract asset files straight from the overlay binary file into human readable file in `assets/st/STAGE_NAME` 2. Build assets as header files that go into `src/st/STAGE_NAME` to just include them from any C file This requires each stage header to have the following new format: please see `src/st/nz0/header.c` Built assets in `src/st` are ignored by Git. As for now, for simplicity sake, the steps `make extract_assets` and `make build_assets` are just executed within `make extract` exclusively for the US version. I plan to auto-generate files such as `src/st/nz0/tile_data.c`. For a first iteration I am aiming to handle the following: * [X] Extract rooms: `assets/st/*/rooms.json` * [X] Extract room layers: `assets/st/*/entity_layouts.json` * [X] Extract tilemap data: `assets/st/*/tilemap_*.bin` * [X] Extract tilemap definitions: `assets/st/*/tiledef_*.json` * [X] Extract sprites: `assets/st/*/sprites.json` * [x] Extract entity layouts * [X] Build rooms: `src/st/*/rooms.h` * [X] Build room layers: `src/st/*/layers.h` * [X] Build tilemap data: `src/st/*/tilemap_*.h` * [X] Build tilemap definitions: `src/st/*/tiledef_*.h` * [x] Build sprites (aka `g_SpriteBanks`) * [x] Build entity layouts * [x] Allow the tool to suggest how to adjust the Splat config for each overlay I want the tool to cover the following stages: * [x] CEN * [x] DRE * ~MAD~ I do not think this can be done, it is way too different from the other overlays * [x] NO3 * [x] NP3 * [X] NZ0 * [x] ST0 * [X] WRP * [x] RWRP * ~WRP (PSP)~ Maybe in a follow-up PR For a later iteration I plan on extracting and build: * Entity GFX thingie * The CLUT thingie in the header * Uncompressed GFX data * Cutscene data * Blueprints * The `src/config_us.h` thingie --------- Co-authored-by: Josh Lory <josh.lory@outlook.com>
155 lines
4.9 KiB
Plaintext
155 lines
4.9 KiB
Plaintext
g_GfxBanks = 0x8018072C;
|
|
PfnEntityUpdates = 0x80180924;
|
|
g_eBreakableInit = 0x80180AAC;
|
|
g_InitializeData0 = 0x80180AB8;
|
|
g_InitializeEntityData0 = 0x80180AC4;
|
|
g_EInitGeneric = 0x80180ADC;
|
|
g_InitDataEnt13 = 0x80180AE8;
|
|
g_eInitGeneric2 = 0x80180B00;
|
|
g_eDamageDisplayInit = 0x80180B0C;
|
|
g_eRedDoorTiles = 0x80180DA0;
|
|
g_eBreakableAnimations = 0x80180E50;
|
|
g_eBreakableHitboxes = 0x80180E70;
|
|
g_eBreakableExplosionTypes = 0x80180E78;
|
|
g_eBreakableanimSets = 0x80180E80;
|
|
g_eBreakableDrawModes = 0x80180E90;
|
|
g_TrapDoorFlag = 0x8018123C;
|
|
UNK_Invincibility0 = 0x80181CC0;
|
|
g_goldCollectTexts = 0x80182438;
|
|
c_GoldPrizes = 0x80182460;
|
|
c_HeartPrizes = 0x801824F0;
|
|
g_ExplosionYVelocities = 0x801824F4;
|
|
g_bigRedFireballAnim = 0x8018251C;
|
|
g_ExplosionAnimations = 0x801825A0;
|
|
g_eUnk14SpawnRots = 0x80182618;
|
|
unk15_rot = 0x80182628;
|
|
unk15_yVel = 0x80182638;
|
|
unk14_yVel = 0x80182650;
|
|
unk14_startFrame = 0x80182668;
|
|
unk14_lifetime = 0x8018266C;
|
|
g_olroxDroolCollOffsets = 0x80182674;
|
|
g_UnkRecursPrimVecOrder = 0x8018268C;
|
|
g_UnkRecursPrim2Inds = 0x801826AC;
|
|
g_ESoulStealOrbAngles = 0x801826D0;
|
|
g_ESoulStealOrbSprt = 0x801826E0;
|
|
g_ESoulStealOrbAnim = 0x80182740;
|
|
EntityCavernDoorVase = 0x801B77D4;
|
|
EntityUnkId12 = 0x801B78A8;
|
|
EntityBreakable = 0x801B7A64;
|
|
EntityUnkId16 = 0x801B7B98;
|
|
EntityBackgroundLightning = 0x801B7C4C;
|
|
EntityShuttingWindow = 0x801B8254;
|
|
EntityCastleDoor = 0x801B8564;
|
|
EntityBackgroundBushes = 0x801B8A74;
|
|
EntityUnkId1C = 0x801B8ED0;
|
|
EntityTransparentWater = 0x801B9198;
|
|
EntityCavernDoorLever = 0x801B9650;
|
|
EntityCavernDoorPlatform = 0x801B97D0;
|
|
EntityCavernDoor = 0x801B989C;
|
|
EntityClickSwitch = 0x801B9CE8;
|
|
EntityPathBlockSmallWeight = 0x801B9E10;
|
|
EntityPathBlockTallWeight = 0x801BA0A0;
|
|
EntityTrapDoor = 0x801BA348;
|
|
EntityMermanRockLeftSide = 0x801BA4C0;
|
|
EntityMermanRockRightSide = 0x801BA868;
|
|
EntityUnkId26 = 0x801BABE8;
|
|
EntityFallingRock2 = 0x801BAD6C;
|
|
EntityStairwayPiece = 0x801BAEF0;
|
|
EntityFallingRock = 0x801BB3BC;
|
|
EntityDeathSkySwirl = 0x801BBB8C;
|
|
EntityUnkId29 = 0x801BBDC0;
|
|
EntityUnkId2A = 0x801BBE70;
|
|
EntitySwitch = 0x801BBF38;
|
|
EntityHeartRoomGoldDoor = 0x801BC05C;
|
|
EntityUnkId49 = 0x801BC3FC;
|
|
EntityPushAlucard = 0x801BC4EC;
|
|
EntityCastleDoorTransition = 0x801BC780;
|
|
EntityForegroundTree = 0x801BC93C;
|
|
EntityUnkId50 = 0x801BCC4C;
|
|
EntityBackgroundPineTrees = 0x801BCE08;
|
|
EntityUnkId52 = 0x801BD564;
|
|
EntityCastleBridge = 0x801BD71C;
|
|
EntityBackgroundTrees = 0x801BDEB0;
|
|
EntityBackgroundCastleWall = 0x801BE080;
|
|
EntityFlyingOwlAndLeaves = 0x801BE134;
|
|
EntityFallingLeaf = 0x801BE444;
|
|
EntityDeathCutscene = 0x801BEEB0;
|
|
EntityRoomTransition2 = 0x801BFF00;
|
|
EntityDeathStolenItem = 0x801C033C;
|
|
EntityDeath = 0x801C083C;
|
|
EntityUnkId5B = 0x801C11A4;
|
|
EntityUnkId5E = 0x801C12E8;
|
|
EntityWargExplosionPuffOpaque = 0x801C14B8;
|
|
Random = 0x801C184C;
|
|
EntityDamageDisplay = 0x801C2D98;
|
|
CreateEntityFromCurrentEntity = 0x801C3EC4;
|
|
CreateEntityFromEntity = 0x801C3F38;
|
|
EntityRedDoor = 0x801C402C;
|
|
DestroyEntity = 0x801C4C64;
|
|
AnimateEntity = 0x801C4D94;
|
|
GetDistanceToPlayerX = 0x801C4F64;
|
|
GetDistanceToPlayerY = 0x801C4FA0;
|
|
GetSideToPlayer = 0x801C4FD4;
|
|
MoveEntity = 0x801C5018;
|
|
FallEntity = 0x801C5048;
|
|
AllocEntity = 0x801C54D4;
|
|
SetStep = 0x801C58A4;
|
|
InitializeEntity = 0x801C5974;
|
|
EntityDummy = 0x801C5A70;
|
|
EntityPrizeDrop = 0x801C6684;
|
|
EntityExplosion = 0x801C6EF8;
|
|
EntityEquipItemDrop = 0x801C7098;
|
|
EntityRelicOrb = 0x801C7930;
|
|
EntityHeartDrop = 0x801C8400;
|
|
EntityMessageBox = 0x801C8528;
|
|
EntityUnkId13 = 0x801C8B74;
|
|
EntityUnkId14Spawner = 0x801C8C84;
|
|
EntityUnkId14 = 0x801C8E9C;
|
|
EntityUnkId15 = 0x801C8F8C;
|
|
EntityIntenseExplosion = 0x801C992C;
|
|
EntityStageNamePopup = 0x801CAFF0;
|
|
EntitySoulStealOrb = 0x801CBC74;
|
|
EntityEnemyBlood = 0x801CC008;
|
|
EntityRoomForeground = 0x801CC4B8;
|
|
EntityStrongWarg = 0x801CC974;
|
|
EntityUnkId30 = 0x801CDD80;
|
|
EntityUnkId31 = 0x801CDF10;
|
|
EntityExplosion3 = 0x801CE2F4;
|
|
EntityStrongWargWaveAttack = 0x801CE98C;
|
|
EntityUnkId2F = 0x801CED60;
|
|
EntityStrongWargDeathBeams = 0x801CEF88;
|
|
EntityWarg = 0x801CF740;
|
|
EntityUnkId4B = 0x801D04A4;
|
|
EntityWargExplosionPuffTransparent = 0x801D0624;
|
|
EntityAlucardWaterEffect = 0x801D0B34;
|
|
EntitySplashWater = 0x801D16B4;
|
|
EntitySurfacingWater = 0x801D1FC0;
|
|
EntitySideWaterSplash = 0x801D24AC;
|
|
EntitySmallWaterDrop = 0x801D2840;
|
|
EntityWaterDrop = 0x801D2A9C;
|
|
EntityMerman3 = 0x801D2E4C;
|
|
EntityExplosion2 = 0x801D3F38;
|
|
EntityMediumWaterSplash = 0x801D4168;
|
|
EntityMermanWaterSplash = 0x801D423C;
|
|
EntityFallingObject2 = 0x801D4668;
|
|
EntityUnkId3D = 0x801D4700;
|
|
EntityLargeFallingObject = 0x801D48F8;
|
|
EntityMermanSpawner = 0x801D49C4;
|
|
EntityMerman = 0x801D4B20;
|
|
EntityMermanFireball = 0x801D56D8;
|
|
EntityFallingObject = 0x801D583C;
|
|
EntityMermanExplosion = 0x801D58D4;
|
|
EntityBoneScimitar = 0x801D5AAC;
|
|
EntityBoneScimitarParts = 0x801D615C;
|
|
EntityBat = 0x801D6264;
|
|
EntityZombie = 0x801D64B0;
|
|
EntityZombieSpawner = 0x801D6710;
|
|
UnkPrimHelper = 0x801D6880;
|
|
UnkPolyFunc2 = 0x801D6FCC;
|
|
g_LayoutObjHorizontal = 0x801D7110;
|
|
g_LayoutObjVertical = 0x801D7114;
|
|
g_LayoutObjPosHorizontal = 0x801D7118;
|
|
g_LayoutObjPosVertical = 0x801D711C;
|
|
g_Dialogue = 0x801D7D24;
|
|
g_ItemIconSlots = 0x801D7DD8;
|