From ff4bc60e09205e44aff2caca637afbe129ddeb11 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 5 Aug 2026 00:00:20 -0600 Subject: [PATCH] feat(phase-30 S39): propagate free h_exact class 0x8017bee0 (10 ins x 6) - R22 140/140 --- config/dedup.us.yaml | 7 +++++++ docs/progress.fleet.md | 24 +++++++++++------------ src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c | 5 +---- src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c | 2 +- src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c | 2 +- src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c | 2 +- src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c | 2 +- src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c | 2 +- src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c | 2 +- src/shared/engine_core.h | 12 ++++++++++++ 10 files changed, 38 insertions(+), 22 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index 3221dce71..c7d33c05d 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -13501,3 +13501,10 @@ groups: func: DEFINE_func_801758FC vram: 0x801758FC 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_8017BEE0 + tier: h_exact + hash: 3c9a6d8e20bbd5ea59810eb0ed8057774aca74d2 + source: src/shared/engine_core.h + func: DEFINE_func_8017BEE0 + vram: 0x8017BEE0 + binaries: [ov_SC03_028, ov_SC03_105, ov_SC05_010, ov_SC06_016, ov_SC06_029, ov_SC06_030, ov_SC07_002] diff --git a/docs/progress.fleet.md b/docs/progress.fleet.md index 753f8a6e4..51e3b0809 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: 341353 / 353717 = 96.50% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) -FLEET instr-weighted : 12419002 / 13141652 = 94.5% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) +FLEET fn-count byte-ident: 341359 / 353717 = 96.51% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) +FLEET instr-weighted : 12419062 / 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: 12418566 / 13081451 = 94.9%) + (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12418626 / 13081451 = 94.9%) -FLEET REAL substantive : 339498 (of which dedup-shared 241280 via 1911 groups / 241354 instances) +FLEET REAL substantive : 339504 (of which dedup-shared 241287 via 1912 groups / 241361 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) -FLEET INCLUDE_ASM stubs : 12357 +FLEET INCLUDE_ASM stubs : 12351 FLEET matchable : 353717 | binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % | @@ -60,7 +60,7 @@ FLEET matchable : 353717 | ov_SC03_015 | 2570 | 1778 | 0 | 2570 | 2685 | 95.7% | | ov_SC03_023 | 2397 | 1750 | 0 | 2398 | 2435 | 98.5% | | ov_SC03_024 | 2514 | 1755 | 0 | 2521 | 2641 | 95.5% | -| ov_SC03_028 | 2457 | 1750 | 0 | 2461 | 2664 | 92.4% | +| ov_SC03_028 | 2457 | 1751 | 0 | 2461 | 2664 | 92.4% | | ov_SC03_029 | 2497 | 1752 | 0 | 2507 | 2644 | 94.8% | | ov_SC03_030 | 2415 | 1755 | 0 | 2417 | 2495 | 96.9% | | ov_SC03_031 | 2444 | 1750 | 0 | 2447 | 2514 | 97.3% | @@ -80,7 +80,7 @@ FLEET matchable : 353717 | ov_SC03_102 | 2467 | 1750 | 0 | 2470 | 2492 | 99.1% | | ov_SC03_103 | 2491 | 1752 | 0 | 2494 | 2510 | 99.4% | | ov_SC03_104 | 2537 | 1755 | 0 | 2544 | 2616 | 97.2% | -| ov_SC03_105 | 2444 | 1750 | 0 | 2451 | 2597 | 94.4% | +| ov_SC03_105 | 2445 | 1751 | 0 | 2452 | 2597 | 94.4% | | ov_SC03_108 | 2397 | 1750 | 0 | 2397 | 2443 | 98.1% | | ov_SC03_109 | 2404 | 1750 | 0 | 2406 | 2424 | 99.3% | | ov_SC03_110 | 2438 | 1750 | 0 | 2438 | 2468 | 98.8% | @@ -125,7 +125,7 @@ FLEET matchable : 353717 | ov_SC05_007 | 2428 | 1750 | 0 | 2433 | 2482 | 98.0% | | ov_SC05_008 | 2439 | 1750 | 0 | 2441 | 2543 | 96.0% | | ov_SC05_009 | 2405 | 1750 | 0 | 2409 | 2438 | 98.8% | -| ov_SC05_010 | 2444 | 1750 | 0 | 2448 | 2588 | 94.6% | +| ov_SC05_010 | 2445 | 1751 | 0 | 2449 | 2588 | 94.6% | | ov_SC05_011 | 2393 | 1750 | 0 | 2394 | 2409 | 99.4% | | ov_SC05_017 | 2642 | 1747 | 0 | 2653 | 2842 | 93.3% | | ov_SC05_018 | 2540 | 1750 | 0 | 2553 | 2673 | 95.5% | @@ -138,20 +138,20 @@ FLEET matchable : 353717 | ov_SC06_013 | 2402 | 1750 | 0 | 2403 | 2425 | 99.1% | | ov_SC06_014 | 2413 | 1750 | 0 | 2415 | 2453 | 98.5% | | ov_SC06_015 | 2407 | 1750 | 0 | 2407 | 2421 | 99.4% | -| ov_SC06_016 | 2448 | 1750 | 0 | 2450 | 2549 | 96.1% | +| ov_SC06_016 | 2449 | 1751 | 0 | 2451 | 2549 | 96.2% | | ov_SC06_018 | 2489 | 1752 | 0 | 2496 | 2665 | 93.7% | | ov_SC06_020 | 2440 | 1752 | 0 | 2441 | 2518 | 96.9% | | ov_SC06_022 | 2472 | 1750 | 0 | 2480 | 2642 | 93.9% | | ov_SC06_024 | 2491 | 1750 | 0 | 2497 | 2667 | 93.6% | | ov_SC06_025 | 2448 | 1750 | 0 | 2453 | 2572 | 95.4% | | ov_SC06_027 | 2388 | 1750 | 0 | 2389 | 2408 | 99.2% | -| ov_SC06_029 | 2471 | 1750 | 0 | 2483 | 2662 | 93.3% | -| ov_SC06_030 | 2409 | 1750 | 0 | 2409 | 2456 | 98.1% | +| ov_SC06_029 | 2472 | 1751 | 0 | 2484 | 2662 | 93.3% | +| ov_SC06_030 | 2410 | 1751 | 0 | 2410 | 2456 | 98.1% | | ov_SC06_032 | 2482 | 1751 | 0 | 2489 | 2658 | 93.6% | | ov_SC06_033 | 2477 | 1751 | 0 | 2484 | 2631 | 94.4% | | ov_SC07_000 | 2429 | 1754 | 0 | 2431 | 2521 | 96.4% | | ov_SC07_001 | 2401 | 1750 | 0 | 2403 | 2454 | 97.9% | -| ov_SC07_002 | 2455 | 1750 | 0 | 2459 | 2579 | 95.3% | +| ov_SC07_002 | 2456 | 1751 | 0 | 2460 | 2579 | 95.4% | | ov_SC07_006 | 2316 | 1574 | 0 | 2396 | 2455 | 97.6% | | ov_SC07_007 | 2334 | 1606 | 0 | 2418 | 2612 | 92.6% | | ov_SC07_008 | 2382 | 1750 | 0 | 2382 | 2386 | 99.8% | diff --git a/src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c b/src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c index 40ef6fac0..102b38aec 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_8017AE2C.c @@ -3317,10 +3317,7 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017BEBC); -extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2) { - func_8017BF34(arg0, arg1, arg2, 0); - } +DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c b/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c index 4e97c3659..4dc38cfac 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8017AE2C.c @@ -3323,7 +3323,7 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017BEBC); -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017AE2C", func_8017BEE0); +DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ diff --git a/src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c b/src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c index 662a61e6b..07c039cfc 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_8017AE2C.c @@ -3322,7 +3322,7 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017BEBC); -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017AE2C", func_8017BEE0); +DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c b/src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c index fd5732c19..39c162f10 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_8017AE2C.c @@ -3322,7 +3322,7 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017BEBC); -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017AE2C", func_8017BEE0); +DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c b/src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c index 3e6cd139b..ce0ec5852 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_8017AE2C.c @@ -3316,7 +3316,7 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017BEBC); -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017AE2C", func_8017BEE0); +DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c b/src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c index 3f65a9c66..05ef1a685 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8017AE2C.c @@ -3316,7 +3316,7 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017BEBC); -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017AE2C", func_8017BEE0); +DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ diff --git a/src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c b/src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c index b1fb4b20f..ee75e0e2c 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_8017AE2C.c @@ -3322,7 +3322,7 @@ DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017BEBC); -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017AE2C", func_8017BEE0); +DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */ diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index d42779a9a..5dd9fe649 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -467,6 +467,12 @@ } \ } +#define DEFINE_func_8017BEE0() \ + extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \ + void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2) { \ + func_8017BF34(arg0, arg1, arg2, 0); \ + } + #endif #define DEFINE_func_80128EA8() \ @@ -30339,4 +30345,10 @@ } \ } +#define DEFINE_func_8017BEE0() \ + extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \ + void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2) { \ + func_8017BF34(arg0, arg1, arg2, 0); \ + } + #endif