From e88eccac608e069d660254cd18ebe1530cc269c4 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 5 Aug 2026 00:13:15 -0600 Subject: [PATCH] feat(phase-30 S39): propagate free h_exact class 0x8018625c (19 ins x 1) - R22 140/140 --- config/dedup.us.yaml | 7 +++++++ docs/progress.fleet.md | 14 ++++++------- src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c | 11 +---------- src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c | 2 +- src/shared/engine_core.h | 24 +++++++++++++++++++++++ 5 files changed, 40 insertions(+), 18 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 25983b281..0baa2aec1 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -13515,3 +13515,10 @@ groups: func: DEFINE_func_80176144 vram: 0x80176144 binaries: [ov_SC01_077, ov_SC01_005, ov_SC01_006, ov_SC03_001, ov_SC01_000, ov_SC01_001, ov_SC02_000, ov_SC02_003, ov_SC03_002, ov_SC03_006, ov_SC04_000, ov_SC04_018, ov_SC04_019, ov_SC05_000, ov_SC06_000, ov_SC07_000, ov_SC01_004, ov_SC01_008, ov_SC01_009, ov_SC01_074, ov_SC01_080, ov_SC01_084, ov_SC02_004, ov_SC02_005, ov_SC02_011, ov_SC02_015, ov_SC02_016, ov_SC02_017, ov_SC02_021, ov_SC02_026, ov_SC02_027, ov_SC02_028, ov_SC02_031, ov_SC02_035, ov_SC02_039, ov_SC02_041, ov_SC03_003, ov_SC03_007, ov_SC03_010, ov_SC03_011, ov_SC03_012, ov_SC03_013, ov_SC03_014, ov_SC03_015, ov_SC03_023, ov_SC03_024, ov_SC03_028, ov_SC03_029, ov_SC03_030, ov_SC03_031, ov_SC03_089, ov_SC03_090, ov_SC03_091, ov_SC03_092, ov_SC03_093, ov_SC03_094, ov_SC03_095, ov_SC03_096, ov_SC03_097, ov_SC03_098, ov_SC03_099, ov_SC03_100, ov_SC03_101, ov_SC03_102, ov_SC03_103, ov_SC03_104, ov_SC03_105, ov_SC03_108, ov_SC03_109, ov_SC03_110, ov_SC03_111, ov_SC03_112, ov_SC03_113, ov_SC03_114, ov_SC03_115, ov_SC03_116, ov_SC03_117, ov_SC03_118, ov_SC03_119, ov_SC03_121, ov_SC03_124, ov_SC03_125, ov_SC03_126, ov_SC04_002, ov_SC04_003, ov_SC04_004, ov_SC04_005, ov_SC04_006, ov_SC04_007, ov_SC04_008, ov_SC04_009, ov_SC04_010, ov_SC04_011, ov_SC04_012, ov_SC04_015, ov_SC04_016, ov_SC04_020, ov_SC04_021, ov_SC05_001, ov_SC05_002, ov_SC05_003, ov_SC05_004, ov_SC05_005, ov_SC05_006, ov_SC05_007, ov_SC05_008, ov_SC05_009, ov_SC05_010, ov_SC05_011, ov_SC05_017, ov_SC05_018, ov_SC05_019, ov_SC06_006, ov_SC06_008, ov_SC06_010, ov_SC06_011, ov_SC06_013, ov_SC06_014, ov_SC06_015, ov_SC06_016, ov_SC06_018, ov_SC06_020, ov_SC06_022, ov_SC06_024, ov_SC06_025, ov_SC06_027, ov_SC06_029, ov_SC06_030, ov_SC06_032, ov_SC06_033, ov_SC07_001, ov_SC07_002, ov_SC07_008, ov_SC07_009, ov_SC07_006, ov_SC07_007, ov_SC07_010, ov_SC07_011] + - id: E_func_8018625C + tier: h_exact + hash: 3b4847517d5f0eb7020328ccfe75c14f3cf73c50 + source: src/shared/engine_core.h + func: DEFINE_func_8018625C + vram: 0x8018625C + binaries: [ov_SC04_018, ov_SC04_019] diff --git a/docs/progress.fleet.md b/docs/progress.fleet.md index a15a30e6d..6bb532bbe 100644 --- a/docs/progress.fleet.md +++ b/docs/progress.fleet.md @@ -4,16 +4,16 @@ # cross-binary collapsible-byte leverage: docs/duplicates.cross.md. # THREE progress metrics (all matter — see the labels): -FLEET fn-count byte-ident: 341360 / 353717 = 96.51% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) -FLEET instr-weighted : 12419115 / 13141652 = 94.5% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) +FLEET fn-count byte-ident: 341361 / 353717 = 96.51% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) +FLEET instr-weighted : 12419134 / 13141652 = 94.5% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 5029454 / 5634875 = 89.3% (77973/87459 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 436 / 60201 = 0.7% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-06-14; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift) - (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12418679 / 13081451 = 94.9%) + (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12418698 / 13081451 = 94.9%) -FLEET REAL substantive : 339505 (of which dedup-shared 241425 via 1913 groups / 241499 instances) +FLEET REAL substantive : 339506 (of which dedup-shared 241427 via 1914 groups / 241501 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) -FLEET INCLUDE_ASM stubs : 12350 +FLEET INCLUDE_ASM stubs : 12349 FLEET matchable : 353717 | binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % | @@ -111,8 +111,8 @@ FLEET matchable : 353717 | ov_SC04_012 | 2394 | 1751 | 0 | 2395 | 2420 | 99.0% | | ov_SC04_015 | 2527 | 1752 | 0 | 2538 | 2611 | 97.2% | | ov_SC04_016 | 2398 | 1751 | 0 | 2400 | 2440 | 98.4% | -| ov_SC04_018 | 2668 | 1787 | 0 | 2668 | 2857 | 93.4% | -| ov_SC04_019 | 2665 | 1787 | 0 | 2665 | 2857 | 93.3% | +| ov_SC04_018 | 2668 | 1788 | 0 | 2668 | 2857 | 93.4% | +| ov_SC04_019 | 2666 | 1788 | 0 | 2666 | 2857 | 93.3% | | ov_SC04_020 | 2508 | 1751 | 0 | 2520 | 2567 | 98.2% | | ov_SC04_021 | 2396 | 1753 | 0 | 2396 | 2423 | 98.9% | | ov_SC05_000 | 2403 | 1755 | 0 | 2406 | 2422 | 99.3% | diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c index 73c370499..432ed67e4 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c @@ -8194,16 +8194,7 @@ void func_8018613C(void *a0) } -s32 func_8018625C(void *a0) { - a0 = *(void **)((char *)a0 + 0xCC); - if (a0 == 0) { - return 0; - } - if (*(u16 *)a0 != 0x61) { - return 0; - } - return func_801862A8(a0); -} +DEFINE_func_8018625C() /* dedup: shared engine-core @0x8018625C (src/shared) */ /* func_801862A8 — scan the 96-entry / 0x10C-stride D_801202A0 actor table for diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c b/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c index 223bb0c45..d1918cb11 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c @@ -8213,7 +8213,7 @@ void func_8018613C(void *a0) } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_8018625C); +DEFINE_func_8018625C() /* dedup: shared engine-core @0x8018625C (src/shared) */ /* func_801862A8 — scan the 96-entry / 0x10C-stride D_801202A0 actor table for diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index 1a3cbb39a..2998fa636 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -497,6 +497,18 @@ aAF634[param_1].g0 += ((s32)p - (s32)slot[14]) >> 2; \ } +#define DEFINE_func_8018625C() \ + s32 func_8018625C(void *a0) { \ + a0 = *(void **)((char *)a0 + 0xCC); \ + if (a0 == 0) { \ + return 0; \ + } \ + if (*(u16 *)a0 != 0x61) { \ + return 0; \ + } \ + return func_801862A8(a0); \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -30399,4 +30411,16 @@ aAF634[param_1].g0 += ((s32)p - (s32)slot[14]) >> 2; \ } +#define DEFINE_func_8018625C() \ + s32 func_8018625C(void *a0) { \ + a0 = *(void **)((char *)a0 + 0xCC); \ + if (a0 == 0) { \ + return 0; \ + } \ + if (*(u16 *)a0 != 0x61) { \ + return 0; \ + } \ + return func_801862A8(a0); \ + } + #endif