mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 14:02:04 -04:00
3788a89b3c
The first real PsyQ library is sourced from real SDK objects in the byte-identical
build, replacing the libcd-region asm stubs. Tasks 2'.1/2'.2/2'.3 — the whole
PsyQ-library-into-build mechanism, proven on the simplest library (libcd).
- psyq_link.py: per-object byte-link engine — recovers externals from the EXE's
resolved relocations (R_MIPS_26 / HI16+LO16); weakens psyq-obj-parser's
mislabelled common-style .bss globals so a strong --defsym wins
- psyq_link_lib.py: whole-library verify — 18/18 libcd objects byte-identical
- psyq_link_region.py: region link via NOLOAD data placement (no carving) +
weaken-all-.bss; gap-aware per-object placement
- psyq_integrate.py: build wiring — splat resegment swap + per-object .text at
vram + NOLOAD data; external resolution (func_<addr> aliases, symbols.us.txt
jump-table names, recovered St*/CD_* globals, all weakened .bss commons);
idempotent; conditional on tools/psyq/ (fresh clone builds via stubs)
- split_src_region.py: H5-safe src/*.c split at vram boundaries (preserves
matched C + NON_MATCHING blocks)
- splat.us.exe.yaml: 5-way text split [pre][libcd1][gap][libcd2][post]
- src/800.c trimmed to <0x80043088; src/{800b,gap,libcd1,libcd2}.c splat stubs
- Makefile: libcd integration in the $(OUT) recipe (conditional + idempotent)
- cookbook §9.1/9.2/9.3 (the reusable mechanism for libgs/Gen2); CURRENT_PHASE
session-D log; ≥3-session green bar A/B/C/+D
- make clean && extract && build && check -> 143dbb89... BYTE-IDENTICAL
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
#include "common.h"
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", data_ready_callback);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", StGetBackloc);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_004_OBJ_DC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", StSetStream);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", StFreeRing);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_007_OBJ_AC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", init_ring_status);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", StGetNext);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", func_80046CFC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", StCdInterrupt);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_270);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_3D0);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_7BC);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_85C);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_900);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_960);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", mem2mem);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", dma_execute);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_A30);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/libcd2", C_011_OBJ_A90);
|