sotn-decomp/config/symbols.us.stnz0.txt
Luciano Ciccariello 7a5baed841
Share more code and data between stage overlays (#1281)
Given the fact that sharing compiled C objects is not exactly possible
(code heavily copy&pasted maybe? this initiative is now abandoned 👉
53a566f075)
I decided to keep pressing forward with shared headers. Thanks a lot to
@hohle for making our life much easier by cross-referencing symbols.

The file split on WRP seems to be the closest file split we might have
compared to the original source code (still speculating here). I think
it would be a good idea to start splitting other overlays too with the
same approach.

My idea is to have a file split like the following:

```
st/
   cen/
       e_particles.c
       e_misc.c
       st_common.c
   nz0/
       e_particles.c
       e_misc.c
       st_common.c
   wrp/
       e_particles.c
       e_misc.c
       st_common.c
   e_particles.h
   e_misc.h
   st_common.h
```

each of those C files will just be a one-line `#include
"../the_shared_code.h"` as usual. Right now we create individual headers
for single functions, sometimes for more than one function when we think
grouping makes sense. But I think we can start merging some of those
headers and consolidate the code. This can be done gradually. For
example `src/st/e_particles.h` is still importing function headers under
the hood. That is okay for now, but later on I wish to import those
headers functions into their respective parent headers.

Another important aspect to consider that will validate a correct file
split is to start importing the data inside these new C files. Right now
we have floating data such as `src/st/wrp_psp/wrp_data_EA00.c` or
monstrosities such as `src/st/wrp/6FD0.c`. An example of a (possibly)
correct migrated data is what this PR does with WRP PSP and NZ0 PSX,
with data pointing in `src/st/*/e_particles.c`.
2024-06-08 20:34:58 +01:00

105 lines
3.3 KiB
Plaintext

g_SpriteBanks = 0x8018002C;
g_Cluts = 0x80180160;
g_TileLayers = 0x80180394;
g_EntityGfxs = 0x80180888;
g_pStObjLayoutHorizontal = 0x801808EC;
g_pStObjLayoutVertical = 0x801809C0;
PfnEntityUpdates = 0x80180A94;
g_InitializeData0 = 0x80180BD4;
g_InitializeEntityData0 = 0x80180BE0;
g_EInitGeneric = 0x80180BF8;
g_InitDataEnt13 = 0x80180C04;
g_eInitGeneric2 = 0x80180C1C;
g_eDamageDisplayInit = 0x80180C28;
g_eRedDoorTiles = 0x80180D8C;
g_CallElevator = 0x80180EEC;
g_BossFlag = 0x80181010;
g_ElevatorTarget = 0x801813A4;
g_ElevatorTargetPos = 0x801813A8;
UNK_Invincibility0 = 0x80181574;
g_eUnk14SpawnRots = 0x80181ECC;
unk15_rot = 0x80181EDC;
unk15_yVel = 0x80181EEC;
unk14_yVel = 0x80181F04;
unk14_startFrame = 0x80181F1C;
unk14_lifetime = 0x80181F20;
g_olroxDroolCollOffsets = 0x80181F28;
g_Rooms = 0x8018272C;
g_UnkPrimHelperRot = 0x801B0934;
EntityBreakable = 0x801B0EEC;
EntityRedEyeBust = 0x801B11C0;
EntityPurpleBrickScrollingBackground = 0x801B12E8;
EntityLeftSecretRoomWall = 0x801B14C4;
EntityBottomSecretRoomFloor = 0x801B1770;
EntityMoveableBox = 0x801B20CC;
EntityCannonLever = 0x801B23B4;
EntityCannon = 0x801B25C4;
EntityCannonShot = 0x801B2874;
EntityCannonWall = 0x801B2978;
EntityElevator2 = 0x801B2D08;
EntityFloorSpikes = 0x801B3294;
EntityTableWithGlobe = 0x801B3534;
EntityBossFightManager = 0x801B3FCC;
EntityBossRoomBlock = 0x801B4518;
EntitySlogra = 0x801B4778;
EntitySlograSpear = 0x801B54A8;
EntitySlograSpearProjectile = 0x801B5654;
EntityGaibon = 0x801B5778;
EntitySmallGaibonProjectile = 0x801B6AAC;
EntityLargeGaibonProjectile = 0x801B6BBC;
EntityElevator = 0x801B7034;
EntityMariaCutscene = 0x801B7D58;
Update = 0x801B9504;
UpdateStageEntities = 0x801B9800;
HitDetection = 0x801B9908;
EntityDamageDisplay = 0x801BAA20;
InitRoomEntities = 0x801BB920;
UpdateRoomPosition = 0x801BBA98;
CreateEntityFromCurrentEntity = 0x801BBB4C;
EntityRedDoor = 0x801BBCB4;
DestroyEntity = 0x801BC8EC;
AnimateEntity = 0x801BCA1C;
GetSideToPlayer = 0x801BCC5C;
MoveEntity = 0x801BCCA0;
AllocEntity = 0x801BD15C;
SetStep = 0x801BD52C;
InitializeEntity = 0x801BD5FC;
EntityDummy = 0x801BD6F8;
GetPlayerCollisionWith = 0x801BD9A0;
EntityPrizeDrop = 0x801BE30C;
EntityExplosion = 0x801BEB80;
EntityEquipItemDrop = 0x801BED20;
EntityRelicOrb = 0x801BF5B8;
EntityHeartDrop = 0x801C0088;
EntityMessageBox = 0x801C01B0;
EntityUnkId13 = 0x801C07FC;
EntityUnkId14 = 0x801C0B24;
EntityUnkId15 = 0x801C0C14;
EntityIntenseExplosion = 0x801C15B4;
EntitySoulStealOrb = 0x801C2AA8;
EntityEnemyBlood = 0x801C2E3C;
EntityRoomForeground = 0x801C32EC;
EntityBoneScimitar = 0x801C37E4;
EntityBoneScimitarParts = 0x801C3E94;
EntityAxeKnight = 0x801C45BC;
EntityAxeKnightThrowingAxe = 0x801C4D18;
EntityBloodSplatter = 0x801C4EAC;
EntityBloodyZombie = 0x801C5568;
EntitySkeleton = 0x801C5FC4;
EntitySpittleBone = 0x801C672C;
EntityRotateSpittlebone = 0x801C6B24;
EntitySpittleBoneSpit = 0x801C6C6C;
EntitySubWeaponContainer = 0x801C7048;
EntityBloodSkeleton = 0x801C7958;
EntityIsNearPlayer2 = 0x801C7CF0;
EntityMagicallySealedDoor = 0x801C7D68;
EntityStageNamePopup = 0x801C8CAC;
UnkPolyFunc2 = 0x801CA07C;
EntityLifeUpSpawn = 0x801CA160;
g_LayoutObjHorizontal = 0x801CAA74;
g_LayoutObjVertical = 0x801CAA78;
g_LayoutObjPosHorizontal = 0x801CAA7C;
g_LayoutObjPosVertical = 0x801CAA80;
g_Dialogue = 0x801CB688;
g_ItemIconSlots = 0x801CB740;