mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-27 06:50:35 +00:00
7a5baed841
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`.
103 lines
3.0 KiB
YAML
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]
|