Files
BFM-decomp/src/libmcrd1.c
T
Drew T 0d6380c845 feat(phase-8): link libmcrd byte-identical (T5) — 2 objs / +104 fns
- splat: split 800c into [800c][libmcrd1][800c2][libmcrd2]; LIBMCRD.o (2186 ins,
  the 55 LIBMCRD_OBJ_* + _card_* memcard I/O) and USERFUNC.o (68 ins) are 2
  non-adjacent blocks split by game/libc2/libapi/libcard code (800c2)
- Makefile LIBMCRD_* + gated psyq_integrate libmcrd1,libmcrd2 + -T
- region byte-verified: 2/2 objects, 27 .bss commons all recovered (not scattered)
- src/800c.c trimmed (0 real-C moved); src/{libmcrd1,800c2,libmcrd2}.c committed
- dual byte-gate PASS: 143dbb89 with and without the libmcrd objects
- LINKED 424 -> 528; REAL still 43; byte-identical 29.29%
- NB: these are the libmcrd SDK objects; the game SaveLoadRoutine/Q#5 is Phase 12
2026-06-15 18:23:59 -06:00

203 lines
5.8 KiB
C

#include "common.h"
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_8005FC68);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", MemCardEnd);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_8005FCB8);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", MemCardStop);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_8005FD58);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_15C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_exist_back);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_2E4);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_308);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_310);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_330);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_334);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_8005FFB4);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_3B8);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_accept_back);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_404);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_438);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_490);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_4B0);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_4DC);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_594);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_5BC);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_5C0);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_8006023C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_6DC);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_730);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_800603BC);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80060404);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_840);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_84C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_read_data);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_990);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_994);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80060614);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_A50);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_A5C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_write_data);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_BA0);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_BA4);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", MemCardReadFile);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_C90);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_C9C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_read_file);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_D08);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_D2C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_D6C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_D9C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_DD0);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_E5C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_E60);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80060AE0);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_F4C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_F58);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_write_file);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_FC4);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_FE8);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1028);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1058);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_108C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1118);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_111C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80060D9C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1284);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_12E8);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1374);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061010);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061024);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1460);
void LIBMCRD_OBJ_14A4(void) {
}
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061114);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_15EC);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_16B8);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", MemCardDeleteFile);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_17E0);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_189C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061524);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1944);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", MemCardUnformat);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_19F8);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061678);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", LIBMCRD_OBJ_1A60);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _callback_handler);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061770);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpIOE);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpError);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpTimeout);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpNewcard);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpIOEx);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpErrorx);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpTimeoutx);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", funcEvSpNewcardx);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_8006186C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_8006189C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_close);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", _card_stop);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061B58);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061C60);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061D3C);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061E18);
INCLUDE_ASM("asm/nonmatchings/libmcrd1", func_80061E54);