sotn-decomp/config/splat.us.stno3.yaml
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

103 lines
3.0 KiB
YAML

options:
platform: psx
basename: stno3
base_path: ..
build_path: build/us
target_path: disks/us/ST/NO3/NO3.BIN
asm_path: asm/us/st/no3
asset_path: assets/st/no3
src_path: src/st/no3
ld_script_path: build/us/stno3.ld
compiler: GCC
symbol_addrs_path:
- config/symbols.us.txt
- config/symbols.us.stno3.txt
undefined_funcs_auto_path: config/undefined_funcs_auto.us.stno3.txt
undefined_syms_auto_path: config/undefined_syms_auto.us.stno3.txt
find_file_boundaries: yes
use_legacy_include_asm: no
migrate_rodata_to_functions: no
asm_jtbl_label_macro: jlabel
extensions_path: tools/splat_ext
section_order:
- ".data"
- ".rodata"
- ".text"
- ".bss"
segments:
- name: stno3
type: code
start: 0x00000000
vram: 0x80180000
subalign: 4
subsegments:
- [0x0, data]
- [0x920, data]
- [0xAAC, data]
- [0xDC0, data]
- [0xDD0, data]
- [0xE50, data]
- [0xE70, data]
- [0xE80, data]
- [0xE90, data]
- [0xEA0, data]
- [0x11F0, data]
- [0x1B40, data]
- [0x1CEC, .data, collision]
- [0x20AC, .data, e_red_door]
- [0x20C4, data]
- [0x25B4, .data, entity_relic_orb]
- [0x2618, data]
- [0x3180, data]
- [0x39A0, data]
- [0x3AC0, data]
- [0x3AF0, data]
- [0x3B30, data]
- [0x3CC4, roomdef, g_Rooms]
- [0x3DC8, data]
- [0x4CE0, data]
- [0x373E0, data]
- [0x373E8, .rodata, 377D4] # EntityCastleDoor
- [0x37400, .rodata, 377D4] # EntityStairwayPiece
- [0x37414, .rodata, 3C4EC]
- [0x3742C, .rodata, 3E134]
- [0x37440, rodata]
- [0x37458, rodata]
- [0x374DC, .rodata, 3FF00] # EntityRoomTransition2
- [0x374F4, .rodata, 3FF00] # EntityDeathStolenItems
- [0x37514, .rodata, 3FF00] # EntityDeath
- [0x37564, .rodata, 3FF00] # EntityWargExplosionPuffOpaque
- [0x37578, .rodata, e_red_door] # EntityRedDoor
- [0x37590, rodata]
- [0x375E0, .rodata, 46684] # EntityPrizeDrop
- [0x37600, .rodata, 46684] # EntityEquipItemDrop
- [0x37618, .rodata, entity_relic_orb]
- [0x37650, .rodata, entity_message_box]
- [0x37664, .rodata, 48A84] # EntityStageNamePopup
- [0x37698, rodata]
- [0x376E8, rodata]
- [0x377A4, .rodata, 56264] # EntityBat
- [0x377B8, .rodata, 564B0] # EntityZombie
- [0x377CC, rodata] #g_UnkPrimHelperRot
- [0x377D4, c]
- [0x3C4EC, c]
- [0x3E134, c]
- [0x3FF00, c]
- [0x4184C, c, random]
- [0x4187C, c, update]
- [0x41B78, c, update_stage_entities]
- [0x41C80, c, collision]
- [0x4343C, c, create_entity]
- [0x43FB4, c, e_red_door]
- [0x44C64, c]
- [0x46684, c]
- [0x47930, c, entity_relic_orb]
- [0x48400, c, entity_heart_drop]
- [0x48528, c, entity_message_box]
- [0x48A84, c]
- [0x56264, c]
- [0x564B0, c]
- [0x56880, c, prim_helpers]
- [0x570B0, sbss]
- [0x57E18]