mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-02 16:00:27 -04:00
8bbf2e8e4d
- libspu and libsnd interleave in 0x3A444..0x4239C (the 800-subseg tail), so they link
as ONE combined region rather than two tangled passes
- NEW tools/make_snd_used.py: build the curated combined dir — merge both libs by vram,
pick the byte-matching object per aliased address (link_object), exclude 4 addresses
that don't reconcile in-region (kept as byte-identical stubs):
0x3C438 S_R/S_W, 0x3D424 S_GRMDT/FB/T — scattered-.bss commons, cross-object (§9.1)
0x3D94C S_IH/UT_RON — false placement (inside libsnd SSSTART.o)
0x3FA64 VM_F (237 ins) — scattered-.bss commons (the one real loss)
- subsegs via gen_lib_subsegs.py (9 snd blocks + 8 sgap game/excluded-stub gaps);
integrate window 0x3A444..0x4239C; region byte-verified 60/60
- src/800.c trimmed at [0x3A444,0x4239C): kept 732 items < 0x3A444 (ALL matched C +
game + the deferred SSGM stub preserved), 0 real-C moved
- dual byte-gate PASS: 143dbb89 with and without the sound objects
- LINKED 710 -> 935 (+225); REAL still 43; byte-identical 48.66% (nearly half the EXE)
- deferred: SSGM.o @0x1BD80 (isolated, matched-C region, 8 ins)
137 lines
3.5 KiB
C
137 lines
3.5 KiB
C
#include "common.h"
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003C498);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_STSA_OBJ_48);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003C4F0);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_ITC_OBJ_88);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_ITC_OBJ_90);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003C598);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_5C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_64);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_6C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_74);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_7C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_84);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_8C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_94);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_9C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_CC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_124);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_12C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_134);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_13C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_144);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_14C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_154);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_15C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_164);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_194);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_288);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_2DC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_330);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_SCA_OBJ_384);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003C92C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_1EC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_1F4);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_1FC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_204);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_20C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_214);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_21C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_224);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_22C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_25C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2BC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2C4);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2CC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2D4);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2DC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2E4);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2EC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2F4);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_2FC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_32C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_3C0);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_514);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_598);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_SV_OBJ_608);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", _spu_2pitch);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003CFF8);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_N2P_OBJ_11C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", _spu_pitch2note);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", S_N2P_OBJ_208);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003D25C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_GAKS_OBJ_B4);
|
|
|
|
void SR_GAKS_OBJ_C8(void) {
|
|
}
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SpuGetAllKeysStatus);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", SR_GAKS_OBJ_140);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003D3B4);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/snd2", func_8003D3F8);
|