Files
BFM-decomp/src/snd9.c
T
Drew T 8bbf2e8e4d feat(phase-8): link libspu+libsnd combined sound region (T9+T10) — 60 objs / +225 fns
- 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)
2026-06-15 18:54:21 -06:00

65 lines
1.6 KiB
C

#include "common.h"
INCLUDE_ASM("asm/nonmatchings/snd9", func_800414E4);
void VM_VSU_OBJ_BC(void) {
}
INCLUDE_ASM("asm/nonmatchings/snd9", func_800415A8);
INCLUDE_ASM("asm/nonmatchings/snd9", func_8004162C);
INCLUDE_ASM("asm/nonmatchings/snd9", S_M_F_OBJ_64);
INCLUDE_ASM("asm/nonmatchings/snd9", func_800416A8);
INCLUDE_ASM("asm/nonmatchings/snd9", S_M_INT_OBJ_50);
INCLUDE_ASM("asm/nonmatchings/snd9", S_M_INT_OBJ_C0);
INCLUDE_ASM("asm/nonmatchings/snd9", S_M_INT_OBJ_278);
INCLUDE_ASM("asm/nonmatchings/snd9", func_800419B0);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VFB_OBJ_5C);
INCLUDE_ASM("asm/nonmatchings/snd9", SsVabOpenHead);
INCLUDE_ASM("asm/nonmatchings/snd9", SsVabOpenHeadSticky);
INCLUDE_ASM("asm/nonmatchings/snd9", func_80041A80);
INCLUDE_ASM("asm/nonmatchings/snd9", func_80041AB0);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VH_OBJ_180);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VH_OBJ_190);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VH_OBJ_350);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VH_OBJ_364);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VH_OBJ_40C);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VH_OBJ_444);
INCLUDE_ASM("asm/nonmatchings/snd9", func_80041E8C);
INCLUDE_ASM("asm/nonmatchings/snd9", S_M_M_OBJ_54);
INCLUDE_ASM("asm/nonmatchings/snd9", S_M_M_OBJ_12C);
INCLUDE_ASM("asm/nonmatchings/snd9", S_M_M_OBJ_2A8);
INCLUDE_ASM("asm/nonmatchings/snd9", func_80042154);
INCLUDE_ASM("asm/nonmatchings/snd9", VS_VTBP_OBJ_13C);
INCLUDE_ASM("asm/nonmatchings/snd9", func_800422B4);
INCLUDE_ASM("asm/nonmatchings/snd9", S_STM_OBJ_1C);
INCLUDE_ASM("asm/nonmatchings/snd9", func_800422E8);
INCLUDE_ASM("asm/nonmatchings/snd9", func_80042374);