sotn-decomp/config/symbols.us.stno3.txt
Luciano Ciccariello de46f99e2e
New asset manager (#1343)
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>
2024-07-02 21:38:36 +01:00

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;