mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 14:02:04 -04:00
chore(phase-29 crack-wave): log wave2+fable+type-lift outcome (fleet 74.6% instr) + preserve drafts
Session-total 72.1->74.6% instr (+2.5pp). 8 exemplars + ~815 members banked; 3 Fable source-read cracks (cse.c address-CSE, post-reload sched, reorg j-slot). Follow-ups: 801670e4/8016cbc0 per-sibling decl-norm, 8013d53c caller-thread, 801412a8 §29 wall, 4 permuter near-misses. All drafts preserved (R20).
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
#include "common.h"
|
||||
|
||||
typedef struct { s32 a, b, c, d; } Blk16;
|
||||
|
||||
typedef struct {
|
||||
u8 pad0[0x1C];
|
||||
s16 f1C;
|
||||
s16 f1E;
|
||||
u8 pad20[0x14];
|
||||
u16 f34;
|
||||
u16 f36;
|
||||
u16 f38;
|
||||
u16 f3A;
|
||||
u8 pad3C[2];
|
||||
s16 f3E;
|
||||
u16 f40;
|
||||
u16 f42;
|
||||
u8 pad44[0x10];
|
||||
} Ent;
|
||||
|
||||
extern s16 D_80114EE0;
|
||||
extern u8 D_800B9A78[];
|
||||
extern u8 D_801D9484[];
|
||||
extern u8 D_801D9485[];
|
||||
extern u8 D_801D9486[];
|
||||
extern u8 D_801D9488[];
|
||||
extern u8 D_801D9489[];
|
||||
extern u8 D_801D948A[];
|
||||
extern u8 D_801DAAA0;
|
||||
extern u8 D_800AF630[];
|
||||
extern u8 D_800A6518[];
|
||||
|
||||
extern void func_801299C8();
|
||||
extern void func_80015B6C(s32, s16, s32, s16, s32, s32, s32, s32, s32, s32);
|
||||
extern void GsSortBg(s32 *, void *, u16, s32 *);
|
||||
extern void GsSortFastBg(s32 *, void *, u16, s32 *);
|
||||
|
||||
void func_8012956C(void) {
|
||||
register s32 *sp10 __asm__("$21");
|
||||
register u8 *afbase __asm__("$22");
|
||||
register s32 *sp0 __asm__("$23");
|
||||
Ent *base;
|
||||
s32 i;
|
||||
s16 a1;
|
||||
register u32 temp_a3 __asm__("$7");
|
||||
register u32 arg0 __asm__("$4");
|
||||
register u32 s __asm__("$2");
|
||||
register u32 s2 __asm__("$3");
|
||||
register u32 t6 __asm__("$8");
|
||||
s32 code;
|
||||
|
||||
sp10 = (s32 *)0x1F800010;
|
||||
sp0 = (s32 *)0x1F800000;
|
||||
afbase = (u8 *)&D_800AF630;
|
||||
if (D_80114EE0 == 0) {
|
||||
return;
|
||||
}
|
||||
base = (Ent *)&D_800B9A78;
|
||||
__asm__("" : "=r"(base) : "0"(base));
|
||||
i = 0;
|
||||
do {
|
||||
s32 idx = i * 8 + 4;
|
||||
code = base->f34;
|
||||
if (code == 0x7FFE) {
|
||||
goto case_7FFE;
|
||||
}
|
||||
if (code < 0x7FFF) {
|
||||
a1 = i + 3;
|
||||
if (code == 0x7FFD) {
|
||||
goto case_7FFD;
|
||||
}
|
||||
goto do_default;
|
||||
}
|
||||
a1 = i + 3;
|
||||
if (code != 0x7FFF) {
|
||||
goto do_default;
|
||||
}
|
||||
goto next;
|
||||
case_7FFD:
|
||||
if (i == 0) {
|
||||
func_801299C8(D_801DAAA0, 1, base);
|
||||
}
|
||||
func_80015B6C(-0xA0, -0x74, 0x140, 0x8C,
|
||||
D_801D9488[0], D_801D9488[1], D_801D9488[2],
|
||||
D_801D9488[4], D_801D9488[5], D_801D9488[6]);
|
||||
func_80015B6C(-0xA0, 0x18, 0x140, 0x3C,
|
||||
D_801D9488[4], D_801D9488[5], D_801D9488[6],
|
||||
D_801D9488[8], D_801D9488[9], D_801D9488[0xA]);
|
||||
func_80015B6C(-0xA0, 0x54, 0x140, 0x28,
|
||||
D_801D9488[8], D_801D9488[9], D_801D9488[0xA],
|
||||
D_801D9488[0xC], D_801D9488[0xD], D_801D9488[0xE]);
|
||||
goto next;
|
||||
case_7FFE:
|
||||
func_801299C8(D_801DAAA0, (s16)(i * 2), base);
|
||||
func_80015B6C(-0xA0, *(s16 *)&base->f3A, 0x140, base->f3E,
|
||||
D_801D9484[idx], D_801D9485[idx], D_801D9486[idx],
|
||||
D_801D9488[idx], D_801D9489[idx], D_801D948A[idx]);
|
||||
goto next;
|
||||
do_default:
|
||||
__asm__("");
|
||||
arg0 = D_801DAAA0;
|
||||
s = base->f40;
|
||||
temp_a3 = base->f38;
|
||||
s += temp_a3;
|
||||
base->f1C = s;
|
||||
s2 = base->f42;
|
||||
t6 = base->f3A;
|
||||
s2 += t6;
|
||||
base->f1E = s2;
|
||||
func_801299C8(arg0, a1, base, temp_a3);
|
||||
*(Blk16 *)sp0 = *(Blk16 *)base;
|
||||
{
|
||||
s32 *dst = sp10;
|
||||
s32 *src = (s32 *)((u8 *)base + 0x10);
|
||||
s32 *end = (s32 *)((u8 *)base + 0x30);
|
||||
do {
|
||||
*(Blk16 *)dst = *(Blk16 *)src;
|
||||
src += 4;
|
||||
dst += 4;
|
||||
} while (src != end);
|
||||
*dst = *src;
|
||||
sp10[5] = (s32)sp0;
|
||||
if (base->f36 == 0) {
|
||||
GsSortFastBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst);
|
||||
} else {
|
||||
GsSortBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst);
|
||||
}
|
||||
}
|
||||
next:
|
||||
base += 1;
|
||||
i += 1;
|
||||
} while (i < 2);
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
#include "common.h"
|
||||
|
||||
typedef struct { u8 b[9]; } S9; /* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
typedef struct {
|
||||
u16 cmd; /* 0x0 */
|
||||
u16 pad2; /* 0x2 */
|
||||
u16 pad4; /* 0x4 */
|
||||
u16 pad6; /* 0x6 */
|
||||
s16 w; /* 0x8 */
|
||||
s16 h; /* 0xA */
|
||||
u16 *data; /* 0xC */
|
||||
} Cmd; /* 0x10 */
|
||||
|
||||
extern s32 D_801D95A0;
|
||||
extern u8 D_80078EAF;
|
||||
extern s32 D_801D9588;
|
||||
|
||||
extern u8 D_80187484[]; /* stride 12 */
|
||||
extern u8 D_80187488[];
|
||||
extern u8 D_8018748C[];
|
||||
extern S9 D_8018744C[]; /* stride 9 */
|
||||
|
||||
extern u8 D_801DAABA;
|
||||
extern u8 D_801DAB2E;
|
||||
extern u8 D_801DA9C2;
|
||||
extern u8 D_801DAA9C;
|
||||
extern u8 D_801DA998;
|
||||
extern u8 D_801DA9C1;
|
||||
|
||||
extern S9 D_801DA9B8;
|
||||
extern S9 D_801DAA78;
|
||||
|
||||
extern s32 D_801DAAA0;
|
||||
extern s32 D_801D959C;
|
||||
extern s32 D_801D9598;
|
||||
extern s32 D_801D9594;
|
||||
extern s32 D_801D9580;
|
||||
extern s32 D_801D958C;
|
||||
extern s32 D_801D9590;
|
||||
|
||||
extern s32 *D_801D9570;
|
||||
extern Cmd *D_801D957C;
|
||||
extern s32 D_801D95A8;
|
||||
extern s32 *D_801D9578;
|
||||
extern s32 D_801D95AC;
|
||||
extern s32 D_801D95B0;
|
||||
extern s32 D_801D95B4;
|
||||
|
||||
void func_8013D53C(Cmd *arg0) {
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801D95A0 & 1)) {
|
||||
D_801D9588 = 1;
|
||||
} else {
|
||||
D_801D9588 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = D_80187484[D_801D9588 * 12];
|
||||
D_801DAABA = b0;
|
||||
D_801DAB2E = b0;
|
||||
b1 = D_80187488[D_801D9588 * 12];
|
||||
D_801DA9C2 = b1;
|
||||
D_801DAA9C = b1;
|
||||
b2 = D_8018748C[D_801D9588 * 12];
|
||||
D_801DA998 = b2;
|
||||
D_801DA9C1 = b2;
|
||||
|
||||
D_801DA9B8 = D_8018744C[D_801D9588];
|
||||
D_801DAA78 = *(S9 *)(&D_801DA998 + 0x20); /* same addr as D_801DA9B8; distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801DAAA0 = 1;
|
||||
D_801D959C = -1;
|
||||
D_801D9598 = 0;
|
||||
D_801D9594 = -1;
|
||||
D_801D9580 = 0;
|
||||
D_801D958C = 0;
|
||||
D_801D9590 = 0;
|
||||
|
||||
if ((D_801D95A0 & 2) && (D_801D9588 == 4)) {
|
||||
s0v = D_801D9570[18];
|
||||
t9v = D_801D9570[19];
|
||||
t8v = D_801D9570[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801D9588 * 12 + (s32) D_801D9570); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
D_801D957C = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801D95A8 != 0) {
|
||||
s32 *p = (s32 *)(D_801D9588 * 12 + (s32) D_801D9578);
|
||||
D_801D95AC = p[0];
|
||||
D_801D95B0 = p[1];
|
||||
D_801D95B4 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
// @class: schedule
|
||||
// @stuck: 16/279 masked. 3 runs, ONE residual class: gcc's list-scheduler puts `la $s2` (p=DATA) + `addu $s4,$zero,$zero` (i=0) BEFORE the callee-arg address setup (addiu $a1,$sp,0x10 / addu $a2,$a1,$zero); the target emits them AFTER. Inert to ~40 statement-order permutations + pin/barrier combos (sched priority dominates the LUID tie-break, sched.c rank_for_schedule). Runs: 19-24 (blk1), 111-114 (region-B cx-load rotation), 177-182 (blk3). Permuter fuel.
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
typedef short s16;
|
||||
typedef unsigned short u16;
|
||||
typedef int s32;
|
||||
typedef unsigned int u32;
|
||||
|
||||
typedef struct { s16 x, y, z, pad; } SVec_801670E4; /* 8 bytes */
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 cx, cy, cz;
|
||||
/* 0x06 */ u16 _p06;
|
||||
/* 0x08 */ u16 a8[4];
|
||||
/* 0x10 */ s32 pos[3];
|
||||
/* 0x1C */ s32 _p1C;
|
||||
/* 0x20 */ SVec_801670E4 v[4];
|
||||
/* 0x40 */ struct { u8 r, g, b, cd; } col[4];
|
||||
/* 0x50 */ u32 code;
|
||||
/* 0x54 */ s32 _p54;
|
||||
/* 0x58 */ u8 m1[0x20];
|
||||
/* 0x78 */ u8 m2[0x20];
|
||||
} Fr_801670E4; /* 0x98 bytes -> sp+0x10 .. sp+0xA8 */
|
||||
|
||||
extern void func_80149350(s32 a0, void *a1, void *a2);
|
||||
extern void func_800D20C0(void *a0, void *a1, s32 a2);
|
||||
extern void func_80017E68(void *a0, void *a1);
|
||||
extern void func_800D23D0(void *a0);
|
||||
extern void RotMatrixYXZ(void *a0, void *a1);
|
||||
extern s32 func_80017758(void *a0, void *a1);
|
||||
extern s32 func_80017DC4(void *a0, void *a1);
|
||||
extern void func_80048EAC(void *a0, void *a1);
|
||||
|
||||
extern u8 D_80189A20[];
|
||||
extern u8 D_80189A0C[];
|
||||
extern u8 D_80189A34[];
|
||||
extern s32 D_801269A4;
|
||||
extern s32 D_801269A8;
|
||||
extern s32 D_801269AC;
|
||||
extern u16 D_80126CE0;
|
||||
|
||||
s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
|
||||
Fr_801670E4 f;
|
||||
register u8 *p __asm__("$18"); /* $s2 */
|
||||
register s32 ent __asm__("$19"); /* $s3 */
|
||||
s16 i;
|
||||
s32 d;
|
||||
s32 node;
|
||||
u16 c;
|
||||
u8 cv;
|
||||
u8 cv2;
|
||||
register s32 gA __asm__("$2");
|
||||
register s32 cxv __asm__("$4");
|
||||
register s32 czv __asm__("$5");
|
||||
u8 *vc;
|
||||
u8 *ap;
|
||||
u8 *mp;
|
||||
u8 *va;
|
||||
u8 *vb;
|
||||
|
||||
ent = arg0;
|
||||
node = *(s32 *)(ent + 0x34);
|
||||
f.v[1].z = 0;
|
||||
f.v[1].y = 0;
|
||||
f.v[1].x = 0;
|
||||
f.v[3].z = 0;
|
||||
f.v[2].z = 0;
|
||||
f.v[0].z = 0;
|
||||
f.col[1].b = 0x70;
|
||||
cv = *(u8 *)(ent + 0x12);
|
||||
f.cx = arg1;
|
||||
__asm__ __volatile__("");
|
||||
va = (u8 *)&f.cx;
|
||||
__asm__ __volatile__("" : "=r"(va) : "0"(va));
|
||||
f.cy = arg2;
|
||||
vb = va;
|
||||
__asm__ __volatile__("" : "=r"(vb) : "0"(vb));
|
||||
p = D_80189A20;
|
||||
i = 0;
|
||||
f.col[0].b = 0;
|
||||
f.col[0].g = 0;
|
||||
f.col[0].r = 0;
|
||||
f.col[2].b = 0;
|
||||
f.col[2].g = 0;
|
||||
f.col[2].r = 0;
|
||||
f.col[3].b = 0;
|
||||
f.col[3].g = 0;
|
||||
f.col[3].r = 0;
|
||||
f.code = 0x50000000;
|
||||
f.cz = arg3;
|
||||
f.col[1].r = cv;
|
||||
f.col[1].g = cv;
|
||||
func_80149350(node, va, vb);
|
||||
|
||||
c = f.cx;
|
||||
*(s16 *)(ent + 0x06) = c;
|
||||
*(s32 *)(ent + 0x4C) = (s16)c;
|
||||
c = f.cy;
|
||||
*(s16 *)(ent + 0x0A) = c;
|
||||
*(s32 *)(ent + 0x50) = (s16)c;
|
||||
c = f.cz;
|
||||
*(s16 *)(ent + 0x0E) = c;
|
||||
*(s32 *)(ent + 0x54) = (s16)c;
|
||||
func_800D20C0(&f.cx, f.a8, 7);
|
||||
func_80017E68(&f.cx, f.m1);
|
||||
func_800D23D0(f.a8);
|
||||
RotMatrixYXZ(f.a8, f.m1);
|
||||
|
||||
do {
|
||||
f.v[0].x = (s8)*p++;
|
||||
f.v[0].y = (s8)*p++;
|
||||
f.v[2].x = (s8)*p++;
|
||||
f.v[2].y = (s8)*p++;
|
||||
f.v[3].x = (s8)*p++;
|
||||
f.v[3].y = (s8)*p--;
|
||||
func_80017758(f.v, f.m1);
|
||||
} while ((i = i + 1) < 4);
|
||||
|
||||
p = D_80189A0C;
|
||||
gA = 0xA0;
|
||||
cxv = (s16)f.cx;
|
||||
f.col[1].g = gA;
|
||||
gA = D_801269A4;
|
||||
czv = (s16)f.cz;
|
||||
f.col[1].b = 0x10;
|
||||
f.col[1].r = 0x10;
|
||||
f.pos[0] = gA - cxv;
|
||||
i = 0;
|
||||
f.v[3].y = 0;
|
||||
f.v[2].y = 0;
|
||||
f.v[0].y = 0;
|
||||
f.pos[1] = D_801269A8 - (s16)f.cy;
|
||||
f.pos[2] = D_801269AC - czv;
|
||||
|
||||
do {
|
||||
f.v[0].x = (s8)*p++;
|
||||
f.v[0].z = (s8)*p++;
|
||||
f.v[2].x = (s8)*p++;
|
||||
f.v[2].z = (s8)*p++;
|
||||
f.v[3].x = (s8)*p++;
|
||||
f.v[3].z = (s8)*p--;
|
||||
func_80017758(f.v, (void *)(ent + 0x38));
|
||||
} while ((i = i + 1) < 4);
|
||||
|
||||
if (*(s32 *)(ent + 0x30) > 0) {
|
||||
vc = (u8 *)&f.cx;
|
||||
__asm__ __volatile__("" : "=r"(vc) : "0"(vc));
|
||||
mp = f.m1;
|
||||
ap = mp;
|
||||
__asm__ __volatile__("" : "=r"(ap) : "0"(ap));
|
||||
p = D_80189A34;
|
||||
i = 0;
|
||||
d = (s16)f.a8[0] >> 6;
|
||||
f.cx += d;
|
||||
f.cy += d;
|
||||
f.cz += d;
|
||||
func_80017E68(vc, ap);
|
||||
f.cx = f.cy = f.cz = ((u32)*(s32 *)(ent + 0x30) >> 1) + D_80126CE0 * 0x20;
|
||||
func_80017DC4(&f.cx, f.m2);
|
||||
func_80048EAC(f.m2, mp);
|
||||
f.v[3].z = 0;
|
||||
f.v[2].z = 0;
|
||||
f.v[0].z = 0;
|
||||
cv2 = *(u8 *)(ent + 0x12);
|
||||
f.col[1].b = 0x20;
|
||||
f.col[1].r = 0x20;
|
||||
f.col[3].b = 0;
|
||||
f.col[3].r = 0;
|
||||
f.col[2].b = 0;
|
||||
f.col[2].r = 0;
|
||||
f.col[0].b = 0;
|
||||
f.col[0].r = 0;
|
||||
f.col[3].g = 0;
|
||||
f.col[2].g = 0;
|
||||
f.col[0].g = 0;
|
||||
f.col[1].g = cv2 + 0x60;
|
||||
do {
|
||||
f.v[0].x = (s8)*p++;
|
||||
f.v[0].y = (s8)*p++;
|
||||
f.v[2].x = (s8)*p++;
|
||||
f.v[2].y = (s8)*p++;
|
||||
f.v[3].x = (s8)*p++;
|
||||
f.v[3].y = (s8)*p--;
|
||||
func_80017758(f.v, f.m1);
|
||||
} while ((i = i + 1) < 8);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
|
||||
typedef unsigned char u8;
|
||||
typedef unsigned short u16;
|
||||
typedef unsigned int u32;
|
||||
typedef signed char s8;
|
||||
typedef short s16;
|
||||
typedef int s32;
|
||||
typedef float f32;
|
||||
typedef unsigned long long u64;
|
||||
typedef long long s64;
|
||||
typedef double f64;
|
||||
typedef s32 M2C_UNK;
|
||||
typedef s8 M2C_UNK8;
|
||||
typedef s16 M2C_UNK16;
|
||||
typedef s32 M2C_UNK32;
|
||||
typedef s64 M2C_UNK64;
|
||||
typedef struct
|
||||
{
|
||||
u16 x;
|
||||
u16 y;
|
||||
u16 z;
|
||||
u16 w;
|
||||
} V4;
|
||||
typedef struct
|
||||
{
|
||||
u16 x;
|
||||
u16 y;
|
||||
u16 z;
|
||||
u16 w;
|
||||
s32 pad[4];
|
||||
s32 f18;
|
||||
s32 f1C;
|
||||
s32 f20;
|
||||
} Desc;
|
||||
typedef struct Ent
|
||||
{
|
||||
u16 f0;
|
||||
u16 f2;
|
||||
u16 f4;
|
||||
u16 x;
|
||||
u16 f8;
|
||||
u16 y;
|
||||
u16 fC;
|
||||
u16 z;
|
||||
u8 p10[0x10];
|
||||
s32 f20;
|
||||
u8 p24[0x34];
|
||||
s32 f58;
|
||||
u16 f5C;
|
||||
u16 f5E;
|
||||
u8 p60[0x10C - 0x60];
|
||||
} Ent;
|
||||
extern s16 currentLocationId;
|
||||
extern Ent D_801202A0[];
|
||||
extern u8 D_8018876C[];
|
||||
extern u16 D_801152A8;
|
||||
extern u16 D_801152AC;
|
||||
extern s32 ratan2(s32 a0, s32 a1);
|
||||
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3);
|
||||
extern s32 func_80012A60(s32 a0, s32 a1);
|
||||
extern void func_800139C8(s32 a0, void *a1, void *a2);
|
||||
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern s32 func_8014DCE0(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_80133784(s32 a0, void *a1, s32 a2);
|
||||
s32 func_8014D820(s32 a0, u16 *a1, u16 *a2x)
|
||||
{
|
||||
register u16 *a2 __asm__("$7") = a2x;
|
||||
V4 out[3];
|
||||
V4 pos;
|
||||
Desc desc;
|
||||
Ent *ent;
|
||||
Ent *p;
|
||||
s32 dx;
|
||||
s32 dz;
|
||||
s32 ex;
|
||||
s32 ez;
|
||||
s32 r1;
|
||||
s32 r2;
|
||||
s32 r3;
|
||||
s32 ang;
|
||||
s32 x0;
|
||||
s32 y0;
|
||||
s32 z0;
|
||||
s32 tx;
|
||||
s32 tz;
|
||||
s32 r;
|
||||
s32 t;
|
||||
s32 ap;
|
||||
s32 loc;
|
||||
register s32 u __asm__("$2");
|
||||
register s32 w __asm__("$4");
|
||||
__asm__ __volatile__("" : "=r"(a2) : "0"(a2));
|
||||
t = a2[0];
|
||||
u = a1[0];
|
||||
dx = t - u;
|
||||
ap = a0;
|
||||
__asm__ __volatile__("" :: "r"(ap));
|
||||
t = a2[2];
|
||||
u = a1[2];
|
||||
dz = t - u;
|
||||
if (((s16) (dx | dz)) == 0)
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
w = dx;
|
||||
desc.x = w;
|
||||
desc.y = a2[1] - a1[1];
|
||||
desc.z = a2[2] - a1[2];
|
||||
ent = *((Ent **) (ap + 0x170));
|
||||
if (ent->f0 == 0)
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
if ((ent->f5C & 0x1000) == 0)
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
if (ent->f58 == 0)
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
if (((s32 (*)(s32, s32, s32)) func_80135A4C)(ent->f20, ent->f58, (s32) a1) == 0)
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
ex = ent->x - (*((u16 *) (ap + 6)));
|
||||
ez = ent->z - (*((u16 *) (ap + 0xE)));
|
||||
r1 = (s16) ratan2((s16) dz, (s16) dx);
|
||||
r2 = (s16) ratan2((s16) ez, (s16) ex);
|
||||
r3 = (s16) func_80012A60(r1, r2);
|
||||
if (r3 >= 0x400)
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
desc.f20 = 0;
|
||||
desc.f1C = 0;
|
||||
desc.f18 = 0;
|
||||
pos.x = (x0 = ent->x);
|
||||
z0 = ent->z;
|
||||
tx = x0 + desc.x;
|
||||
u = ent->y;
|
||||
pos.y = u;
|
||||
desc.y = (u + desc.y) + 8;
|
||||
tz = z0 + desc.z;
|
||||
loc = currentLocationId;
|
||||
desc.x = tx;
|
||||
pos.z = z0;
|
||||
desc.z = tz;
|
||||
if (loc != 0x3008)
|
||||
{
|
||||
for (p = D_801202A0; p < (D_801202A0 + 96); p++)
|
||||
{
|
||||
if (p == ent)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (p->f0 == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (p->f5C == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (p->f58 == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
func_80135888(p->f20, p->f58, (s32) (&pos), (s32) (&desc));
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ang = ratan2(((s16) x0) - ((s16) tx), ((s16) z0) - ((s16) tz)) & 0xFFF;
|
||||
func_800139C8(ang, D_8018876C, &out[0]);
|
||||
func_800139C8((s16) (ang - 0x155), D_8018876C, &out[1]);
|
||||
func_800139C8((s16) (ang + 0x155), D_8018876C, &out[2]);
|
||||
out[0].x += pos.x;
|
||||
out[0].y = pos.y;
|
||||
out[0].z += pos.z;
|
||||
out[1].x += pos.x;
|
||||
out[1].y = pos.y;
|
||||
out[1].z += pos.z;
|
||||
out[2].x += pos.x;
|
||||
out[2].y = pos.y;
|
||||
out[2].z += pos.z;
|
||||
for (p = D_801202A0; p < (D_801202A0 + 96); p++)
|
||||
{
|
||||
if (p == ent)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (p->f0 == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (p->f5C == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (p->f58 == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (func_8014DCE0((s32) p, (s32) (&pos), (s32) (&out[0])) != 0)
|
||||
{
|
||||
__builtin_memcpy((void *) ((s32) (&desc)), (void *) ((s32) (&pos)), 8);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
r = func_80133784(0, &pos, (s32) (&desc));
|
||||
if ((r == 0) || ((r == 0x2000) && ((D_801152A8 | D_801152AC) == 0)))
|
||||
{
|
||||
ent->x = desc.x - desc.f18;
|
||||
ent->y = desc.y;
|
||||
ent->z = desc.z - desc.f20;
|
||||
desc.x -= pos.x;
|
||||
desc.y -= pos.y;
|
||||
desc.z -= pos.z;
|
||||
*((u16 *) (ap + 6)) = a1[0] + desc.x;
|
||||
u = desc.y + 0x10;
|
||||
*((u16 *) (ap + 0xA)) = a1[1] + u;
|
||||
*((u16 *) (ap + 0xE)) = a1[2] + desc.z;
|
||||
}
|
||||
else
|
||||
{
|
||||
*((u16 *) (ap + 6)) = a1[0];
|
||||
*((u16 *) (ap + 0xA)) = a1[1] + 0x10;
|
||||
*((u16 *) (ap + 0xE)) = a1[2];
|
||||
}
|
||||
return 1;
|
||||
fail:
|
||||
*((s32 *) (ap + 0x170)) = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
#include "common.h"
|
||||
|
||||
extern u8 D_8011F7F0;
|
||||
extern u8 D_8018A1DC[];
|
||||
typedef struct { s32 unk0; s32 count; s32 buf; } AFEntry;
|
||||
extern AFEntry D_800AF630[];
|
||||
extern u8 D_800B9A13;
|
||||
extern u16 D_8018A238;
|
||||
extern u16 D_8018A22C[];
|
||||
extern u8 D_8018A2CC[];
|
||||
extern u8 D_8018A2B8[];
|
||||
extern s32 D_8018A2E4[];
|
||||
extern u8 D_800D45D4;
|
||||
extern u8 D_800D43D4;
|
||||
extern u8 D_800D4414;
|
||||
|
||||
extern s32 *func_8017742C(s32 *a0, s16 a1, s16 a2, s32 a3);
|
||||
extern void func_8005A600(s32 *a0, s32 a1, s32 a2, s32 a3, s32 a4);
|
||||
extern void func_800183E0(void *a0, void *a1);
|
||||
|
||||
void func_80175DA8(s16 arg0) {
|
||||
register u8 *base __asm__("$18");
|
||||
u8 *s1;
|
||||
u8 *src = D_8018A1DC;
|
||||
u8 *s0;
|
||||
s32 i;
|
||||
register s32 t __asm__("$3");
|
||||
s32 cond;
|
||||
|
||||
base = &D_8011F7F0;
|
||||
s1 = base - 0x48;
|
||||
s0 = (u8 *)(D_800AF630[arg0].buf + (D_800AF630[arg0].count << 2));
|
||||
*(s32 *)(s1 + arg0 * 4 + 0x28) = (s32)s0;
|
||||
i = 0;
|
||||
do {
|
||||
*(u32 *)s0 = (((u32)s0 - 0x14) & 0xFFFFFF) | 0x4000000;
|
||||
*(u32 *)(s0 + 4) = *(u32 *)src;
|
||||
__asm__("" : "=r"(i) : "0"(i));
|
||||
src += 4;
|
||||
if ((s16)i < 2) {
|
||||
*(s16 *)(s0 + 8) = *(u16 *)src + *(u16 *)(s1 + 0xC);
|
||||
src += 2;
|
||||
*(s16 *)(s0 + 0xA) = *(u16 *)src + *(u16 *)(s1 + 0xE);
|
||||
src += 2;
|
||||
} else if ((s16)i == 2) {
|
||||
*(s16 *)(s0 + 8) = *(u16 *)src + *(u16 *)(s1 + 0x10);
|
||||
src += 2;
|
||||
*(s16 *)(s0 + 0xA) = *(u16 *)src + *(u16 *)(s1 + 0x12);
|
||||
src += 2;
|
||||
} else {
|
||||
*(s16 *)(s0 + 8) = *(u16 *)src + *(u16 *)(s1 + 0x14);
|
||||
src += 2;
|
||||
*(s16 *)(s0 + 0xA) = *(u16 *)src + *(u16 *)(s1 + 0x16);
|
||||
src += 2;
|
||||
}
|
||||
*(u32 *)(s0 + 0xC) = *(u32 *)src;
|
||||
src += 4;
|
||||
t = i + 1;
|
||||
cond = (s16)t < 5;
|
||||
i = t;
|
||||
*(u32 *)(s0 + 0x10) = *(u32 *)src;
|
||||
src += 4;
|
||||
s0 += 0x14;
|
||||
} while (cond);
|
||||
|
||||
*(u8 *)(s1 + 7) = D_800B9A13;
|
||||
s0 = (u8 *)func_8017742C((s32 *)s0,
|
||||
(s16)(*(u16 *)(s1 + 0x10) - 0x98),
|
||||
(s16)(*(u16 *)(s1 + 0x12) + 9),
|
||||
i);
|
||||
func_8005A600((s32 *)s0, 0, 0, 0x16, 0);
|
||||
*(u32 *)s0 = (((u32)s0 - 0x14) & 0xFFFFFF) | 0x2000000;
|
||||
*(s32 *)(s1 + arg0 * 4 + 0x30) = (s32)s0;
|
||||
s0 += 0x14;
|
||||
D_800AF630[arg0].count +=
|
||||
((s32)s0 - *(s32 *)(s1 + arg0 * 4 + 0x28)) >> 2;
|
||||
s0 = (u8 *)*(s32 *)(s1 + arg0 * 4 + 0x28);
|
||||
if (base[0x48] != 0) {
|
||||
*(u8 *)(s0 + 0xD) = 0;
|
||||
} else {
|
||||
*(u8 *)(s0 + 0xD) = 0xA0;
|
||||
}
|
||||
|
||||
{
|
||||
void *arg;
|
||||
u8 *q = (u8 *)*(s32 *)(s1 + arg0 * 4 + 0x28);
|
||||
s32 c;
|
||||
*(s16 *)(q + 0x22) = 0x6CD6;
|
||||
c = base[0x48];
|
||||
if (c & 0x80) {
|
||||
arg = &D_800D45D4;
|
||||
*(s16 *)(q + 0x20) = D_8018A238;
|
||||
} else {
|
||||
u16 *p = &D_8018A22C[0];
|
||||
if ((c & 0xFF) != 0) {
|
||||
p = (u16 *)((u8 *)&D_8018A22C[0] + ((c & 0xFF) - 1) * 2);
|
||||
}
|
||||
*(s16 *)(q + 0x20) = *p;
|
||||
arg = (void *)D_8018A2E4[base[0x48]];
|
||||
}
|
||||
func_800183E0(arg, q);
|
||||
}
|
||||
|
||||
{
|
||||
u8 *q = (u8 *)*(s32 *)(s1 + arg0 * 4 + 0x28);
|
||||
s32 h = *(u16 *)(base + 0x2E) << 16;
|
||||
if (h != 0) {
|
||||
*(u8 *)(q + 0x49) = D_8018A2CC[h >> 20];
|
||||
} else {
|
||||
*(u8 *)(q + 0x49) = 0xA0;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
u8 *q = (u8 *)*(s32 *)(s1 + arg0 * 4 + 0x28);
|
||||
void *arg;
|
||||
u16 w = *(u16 *)(base + 0x40);
|
||||
if (w < 0x64) {
|
||||
*(u8 *)(q + 0x5D) = D_8018A2B8[w / 5];
|
||||
} else {
|
||||
*(u8 *)(q + 0x5D) = 0;
|
||||
}
|
||||
{
|
||||
s32 flag = *(s16 *)(base + 0x1E) & 0x8000;
|
||||
__asm__("");
|
||||
arg = &D_800D43D4;
|
||||
if (flag) {
|
||||
arg = &D_800D4414;
|
||||
}
|
||||
}
|
||||
func_800183E0(arg, q);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "common.h"
|
||||
typedef struct { u32 addr : 24; u32 len : 8; } PTag_1412A8;
|
||||
typedef struct { u32 *ot; u32 pad[4]; } Env_1412A8;
|
||||
typedef struct { u32 tag; u32 w1; u32 w2; u32 w3; } Prim_1412A8;
|
||||
extern Env_1412A8 D_800AE7BC[];
|
||||
extern short D_800B9A02;
|
||||
extern u16 D_80115116;
|
||||
#define OT_1412A8 (D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot)
|
||||
#define getaddr_1412A8(t) (((PTag_1412A8 *)(t))->addr)
|
||||
#define setaddr_1412A8(t, v) (((PTag_1412A8 *)(t))->addr = (u32)(v))
|
||||
#define addPrim_1412A8(ot, p) (setaddr_1412A8(p, getaddr_1412A8(ot)), setaddr_1412A8(ot, p))
|
||||
Prim_1412A8 *func_801412A8(Prim_1412A8 *out, int a1, int a2, int a3, u16 a4, u16 a5) {
|
||||
Prim_1412A8 *p = out;
|
||||
int y = a5;
|
||||
|
||||
int color = 0xF800F8;
|
||||
int val;
|
||||
if ((short)a1) {
|
||||
val = 0x5E;
|
||||
if (D_80115116 & 1) { color = 0xF89C00; }
|
||||
} else if ((short)a2) {
|
||||
val = (short)a3 * 0x5E / (short)a2;
|
||||
} else {
|
||||
val = 0x5E;
|
||||
color = 0xF89C00;
|
||||
}
|
||||
p->tag = 0x03000000;
|
||||
p->w1 = color | 0x60000000;
|
||||
p->w2 = a4 | (((short)y + 0xA) << 16);
|
||||
p->w3 = val | 0x20000;
|
||||
addPrim_1412A8(&OT_1412A8[2], p);
|
||||
p++;
|
||||
p->w1 = 0x60080808;
|
||||
p->tag = 0x03000000;
|
||||
p->w2 = a4 | (((short)y + 0xA) << 16);
|
||||
p->w3 = 0x2005E;
|
||||
addPrim_1412A8(&OT_1412A8[2], p);
|
||||
p++;
|
||||
p->w1 = 0x60FFFFFF;
|
||||
p->tag = 0x03000000;
|
||||
p->w2 = (((short)y + 9) << 16) | (u16)(a4 - 1);
|
||||
p->w3 = 0x20060;
|
||||
addPrim_1412A8(&OT_1412A8[2], p);
|
||||
p++;
|
||||
p->tag = 0x03000000;
|
||||
p->w1 = 0x60E0C0A0;
|
||||
p->w2 = (((short)y + 0xB) << 16) | (u16)(a4 - 1);
|
||||
p->w3 = 0x20060;
|
||||
addPrim_1412A8(&OT_1412A8[2], p);
|
||||
return p + 1;
|
||||
}
|
||||
/* BANK BLOCKER (Phase-29, 2026-07-18): match_one MATCH (198) but §29 narrow-param def-side wall.
|
||||
* Def needs u16 a4/a5 (lhu reloads, the crack depends on it); caller func_80141100's canonical decl
|
||||
* is int(6). Changing the caller decl to u16 compiles but ADDS masking insns in the callers (SHA fail
|
||||
* 072fd9af vs d19c9580) — not byte-neutral. Genuine §29 wall (return-widen has a macro escape, param
|
||||
* narrow does not). Fable/careful caller-threading follow-up. Draft above is the byte-correct body. */
|
||||
@@ -0,0 +1,40 @@
|
||||
#include "common.h"
|
||||
|
||||
extern u8 D_801202A0[];
|
||||
extern u8 D_80126720[];
|
||||
extern u8 D_801152A8[];
|
||||
extern s32 func_80135D20(s32 a0, s32 a1, void *a2);
|
||||
|
||||
typedef struct { s16 unk0, unk2, unk4, unk6; } Vec8;
|
||||
|
||||
s32 func_8014FFDC(s32 e, void *a1, void *a2) {
|
||||
Vec8 save;
|
||||
Vec8 test;
|
||||
s32 found;
|
||||
u8 *p;
|
||||
|
||||
found = 0;
|
||||
__builtin_memcpy(&save, a1, 8);
|
||||
*(s16 *)((s32)a1 + 2) = 0x7fff;
|
||||
p = D_801202A0;
|
||||
if (p < p + 0x6480) {
|
||||
do {
|
||||
if (*(u16 *)p != 0) {
|
||||
if ((*(u16 *)(p + 0x5C) & 0x400) != 0) {
|
||||
if (*(s32 *)(p + 0x58) != 0) {
|
||||
test = save;
|
||||
if (func_80135D20(*(s32 *)(p + 0x20), *(s32 *)(p + 0x58), &test) != 0) {
|
||||
found = 1;
|
||||
if (test.unk2 < *(s16 *)((s32)a1 + 2)) {
|
||||
__builtin_memcpy(a1, &test, 8);
|
||||
__builtin_memcpy(a2, D_801152A8, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
p += 0x10C;
|
||||
} while (p < D_80126720);
|
||||
}
|
||||
return found;
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
#include "common.h"
|
||||
|
||||
extern void func_80148AFC(void);
|
||||
extern s32 func_80161B18(void *);
|
||||
extern s32 func_80161B84(void *);
|
||||
extern s32 func_80148800(void *);
|
||||
extern s32 func_8014BEF8(void *);
|
||||
extern s32 func_80165624(void *);
|
||||
extern s32 func_801488A8(void *);
|
||||
extern s32 func_8014D738(void *);
|
||||
extern s32 func_80161208(void *);
|
||||
extern void func_80154A74(void *, s32);
|
||||
extern void func_8015DAC4(void *);
|
||||
extern void func_8015DE24(void *);
|
||||
extern void func_8015DA5C(void *);
|
||||
extern void func_8015F948(void *);
|
||||
extern void func_800CAF14(void *);
|
||||
extern void func_80154150(void *, s32);
|
||||
extern void func_80146DB8(void *, void *);
|
||||
extern void func_80147A84(void *);
|
||||
extern void func_801473EC(void *);
|
||||
extern void func_80149374(void *, void *);
|
||||
extern void func_80147078(void *, s32);
|
||||
extern void func_80159B70(void *);
|
||||
extern void func_8015C714(void *);
|
||||
extern void func_801483E8(void *);
|
||||
|
||||
extern void (*D_801891B8[])(void *);
|
||||
extern u8 D_80078E78[];
|
||||
extern u8 D_801893FC[];
|
||||
extern u8 D_8018917C[];
|
||||
extern u8 D_8018918C[];
|
||||
|
||||
void func_8015D738(void *arg0) {
|
||||
u8 *p = D_80078E78;
|
||||
s32 s1;
|
||||
func_80148AFC();
|
||||
if (func_80161B18(arg0) != 0) return;
|
||||
if (func_80161B84(arg0) != 0) return;
|
||||
s1 = *(s32 *)((char *)arg0 + 0x178);
|
||||
if (s1 != 0) {
|
||||
if (*(u16 *)s1 == 0x360) goto block_808;
|
||||
}
|
||||
__asm__ __volatile__("");
|
||||
if (s1 != 0) {
|
||||
if (*(u16 *)s1 != 0) goto block_7F4;
|
||||
}
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80147078(arg0, 0);
|
||||
func_80159B70(arg0);
|
||||
return;
|
||||
block_7F4:
|
||||
if (func_80148800(arg0) & 0x80) {
|
||||
block_808:
|
||||
func_80154A74(arg0, 0x11);
|
||||
func_8015DAC4(arg0);
|
||||
return;
|
||||
}
|
||||
if ((func_80148800(arg0) & 0x10) && func_8014BEF8(arg0) != 0) {
|
||||
func_80154A74(arg0, 0x11);
|
||||
func_8015DE24(arg0);
|
||||
return;
|
||||
}
|
||||
if ((func_80148800(arg0) & 0x20) && p[0x49] == 0xA) {
|
||||
if (func_80165624(arg0) != 0) {
|
||||
func_8015DA5C(arg0);
|
||||
func_8015F948(arg0);
|
||||
return;
|
||||
}
|
||||
func_80154A74(arg0, 0x11);
|
||||
func_800CAF14(arg0);
|
||||
return;
|
||||
}
|
||||
if (func_801488A8(arg0) != 0 && *(u16 *)(*(s32 *)((char *)arg0 + 0x178)) != 0x82) {
|
||||
func_80154150(arg0, 0x1B);
|
||||
func_80146DB8(arg0, &D_8018917C);
|
||||
} else {
|
||||
func_80154150(arg0, 0x1A);
|
||||
func_80146DB8(arg0, &D_8018918C);
|
||||
}
|
||||
func_80147A84(arg0);
|
||||
func_801473EC(arg0);
|
||||
s1 = *(s32 *)((char *)arg0 + 0x178);
|
||||
*(s16 *)(s1 + 6) = (s16)((s8)D_801893FC[*(s32 *)((char *)arg0 + 0x234)] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xc));
|
||||
*(s16 *)(s1 + 0xa) = (s16)((s8)D_801893FC[*(s32 *)((char *)arg0 + 0x234) + 1] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xe));
|
||||
*(s16 *)(s1 + 0xe) = (s16)((s8)D_801893FC[*(s32 *)((char *)arg0 + 0x234) + 2] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0x10));
|
||||
func_80149374(arg0, (void *)(s1 + 4));
|
||||
*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12) = (*(u16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12) + 0x800) & 0xFFF;
|
||||
if (func_8014D738(arg0) != 0) {
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80147078(arg0, 9);
|
||||
func_8015C714(arg0);
|
||||
return;
|
||||
}
|
||||
if (func_80161208(arg0) != 0) return;
|
||||
func_801483E8(arg0);
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
#include "common.h"
|
||||
|
||||
extern s32 func_801487F4(void);
|
||||
extern void func_80147078(void *a0, s16 a1);
|
||||
extern void func_80159B70(void *a0);
|
||||
extern s32 func_80149D10(void *a0);
|
||||
extern void func_80175150(void *a0);
|
||||
extern void func_8016EE40(s32 a0, s32 a1);
|
||||
extern s32 func_80149744(void *a0);
|
||||
extern void func_80149788(void *a0);
|
||||
extern s32 func_80161B84(void *a0);
|
||||
extern s32 func_8014A4B4(void *a0);
|
||||
extern void func_8014A4FC(void *a0);
|
||||
extern s32 func_80149AA8(void *a0);
|
||||
extern void func_80149AD4(void *a0);
|
||||
extern s32 func_80149B54(void *a0);
|
||||
extern void func_80149BAC(void *a0);
|
||||
extern s32 func_800CF8B4(void);
|
||||
extern s32 func_801491C4(void *a0);
|
||||
extern s32 func_80148E54(void *a0);
|
||||
extern void func_8001382C(s32 a0, void *a1, void *a2);
|
||||
extern void func_80146DB8(void *a0, void *a1);
|
||||
extern void func_80147A84(void *a0);
|
||||
extern void func_801473EC(void *a0);
|
||||
extern void func_80154150(void *a0, s32 a1);
|
||||
extern s32 func_8014D738(void *a0);
|
||||
extern void func_8015C714(void *a0);
|
||||
extern s32 func_80161208(void *a0);
|
||||
extern void func_801483E8(void *a0);
|
||||
|
||||
extern void (*D_801891B8[])(void *);
|
||||
extern u16 D_801152A0;
|
||||
|
||||
void func_8015EA3C(void *arg0) {
|
||||
s32 invec[4];
|
||||
s32 outbuf[4];
|
||||
s32 temp;
|
||||
s32 r;
|
||||
|
||||
if (!(func_801487F4() & 8)) {
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80147078(arg0, 0);
|
||||
func_80159B70(arg0);
|
||||
return;
|
||||
}
|
||||
r = func_80149D10(arg0);
|
||||
if (r == 1) goto Lcase1;
|
||||
if (r < 2) goto Ldefault;
|
||||
if (r == 2) goto Lcase2;
|
||||
goto Ldefault;
|
||||
Lcase1:
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80175150(arg0);
|
||||
return;
|
||||
Lcase2:
|
||||
func_8016EE40(*(s32 *)((u8 *)arg0 + 0x21C), 0x01000000);
|
||||
return;
|
||||
Ldefault:
|
||||
if (func_80149744(arg0) != 0) {
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80149788(arg0);
|
||||
return;
|
||||
}
|
||||
if (func_80161B84(arg0) != 0) {
|
||||
return;
|
||||
}
|
||||
if (func_8014A4B4(arg0) != 0) {
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_8014A4FC(arg0);
|
||||
return;
|
||||
}
|
||||
if (func_80149AA8(arg0) != 0) {
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80149AD4(arg0);
|
||||
return;
|
||||
}
|
||||
if (func_80149B54(arg0) != 0) {
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80149BAC(arg0);
|
||||
return;
|
||||
}
|
||||
if (func_800CF8B4() != 0) {
|
||||
*(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12) =
|
||||
(D_801152A0 + func_801491C4(arg0)) & 0xFFF;
|
||||
}
|
||||
temp = func_80148E54(arg0);
|
||||
if ((s16)temp >= 0) {
|
||||
s32 d = temp - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12);
|
||||
invec[0] = 0;
|
||||
invec[1] = 0;
|
||||
invec[2] = 0xFFFC0000;
|
||||
func_8001382C((s16)d, invec, outbuf);
|
||||
func_80146DB8(arg0, outbuf);
|
||||
func_80147A84(arg0);
|
||||
func_801473EC(arg0);
|
||||
func_80154150(arg0, 0x1E);
|
||||
} else {
|
||||
func_80154150(arg0, 0x1D);
|
||||
}
|
||||
if (func_8014D738(arg0) != 0) {
|
||||
D_801891B8[*(u16 *)arg0](arg0);
|
||||
func_80147078(arg0, 9);
|
||||
func_8015C714(arg0);
|
||||
return;
|
||||
}
|
||||
if (func_80161208(arg0) == 0) {
|
||||
func_801483E8(arg0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
#include "common.h"
|
||||
|
||||
extern void (*D_801891B8[])(void *);
|
||||
extern s32 D_80062BD0;
|
||||
extern s32 D_801894C4;
|
||||
extern s32 D_801894D4;
|
||||
extern s32 D_801894E4;
|
||||
|
||||
extern s32 func_80149884(void);
|
||||
extern s32 func_801496D4(s32 a0);
|
||||
extern void func_80149724(s32 a0);
|
||||
extern void func_801477E8(s32 a0, s32 a1);
|
||||
extern s32 func_80148800(s32 a0);
|
||||
extern s32 func_80148980(s32 a0);
|
||||
extern s32 func_8014F1F4(s32 a0);
|
||||
extern s32 func_8014FCFC(s32 a0);
|
||||
extern void func_80146A6C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
extern void func_80147A84(s32 a0);
|
||||
extern void func_801473EC(s32 a0);
|
||||
extern void func_80146DB8(s32 a0, s32 *a1);
|
||||
extern void func_80146E90(s32 a0, s32 a1);
|
||||
extern void func_8014ED28(s32 a0);
|
||||
extern void func_8014FA04(s32 a0);
|
||||
extern void func_801725B8(s32 a0);
|
||||
extern void func_80147324(s32 a0);
|
||||
extern void func_80019064(s32 *a0);
|
||||
extern void func_801484B0(void *a0, void *a1);
|
||||
extern void func_80148534(void *a0, void *a1);
|
||||
|
||||
void func_8015F448(s32 arg0) {
|
||||
s32 sp20[2];
|
||||
s32 sp28[2];
|
||||
|
||||
if (((*(u32 *)(arg0 + 0x44) & 0x100) && (func_80149884() != 0)) ||
|
||||
(func_801496D4(arg0) != 0)) {
|
||||
D_801891B8[*(u16 *)arg0]((void *)arg0);
|
||||
*(u8 *)(arg0 + 0x1BE) = 0xA;
|
||||
func_80149724(arg0);
|
||||
func_801477E8(arg0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (*(u8 *)(arg0 + 0x245) == 0) {
|
||||
if (*(u8 *)(arg0 + 0x244) == 0) {
|
||||
if (func_80148800(arg0) & 0x10) {
|
||||
*(u8 *)(arg0 + 0x244) = 1;
|
||||
*(u8 *)(arg0 + 0x245) = 1;
|
||||
}
|
||||
} else if (func_80148800(arg0) & 0x80) {
|
||||
*(u8 *)(arg0 + 0x244) = 0;
|
||||
*(u8 *)(arg0 + 0x245) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (*(u16 *)(arg0 + 0xB8) & 0x3000) {
|
||||
if (*(u16 *)(arg0 + 0xB8) & 0x2000) {
|
||||
func_801484B0(sp20, sp28);
|
||||
func_80147324(0x56D);
|
||||
} else {
|
||||
func_80148534(sp20, sp28);
|
||||
func_80147324(0x56E);
|
||||
}
|
||||
func_80019064(&D_80062BD0);
|
||||
func_80146A6C(0x25, arg0, *(s16 *)(arg0 + 6),
|
||||
(s16)(*(u16 *)(arg0 + 0xA) - 0x14),
|
||||
*(s16 *)(arg0 + 0xE), 0, 0);
|
||||
func_80146A6C(0x25, arg0, *(s16 *)(arg0 + 6),
|
||||
(s16)(*(u16 *)(arg0 + 0xA) - 0x14),
|
||||
*(s16 *)(arg0 + 0xE), 1, 0);
|
||||
}
|
||||
|
||||
if (*(u16 *)(arg0 + 0xB8) & 0x8000) {
|
||||
if (*(u8 *)(arg0 + 0x245) != 0) {
|
||||
*(u8 *)(arg0 + 0x245) = 0;
|
||||
*(u16 *)(arg0 + 0xB8) = *(u16 *)(arg0 + 0xBA);
|
||||
if (func_80148980(arg0) != 0) {
|
||||
func_80146DB8(arg0, &D_801894C4);
|
||||
} else {
|
||||
func_80146DB8(arg0, &D_801894D4);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
*(u16 *)(arg0 + 0x246) = *(u16 *)(arg0 + 6);
|
||||
*(u16 *)(arg0 + 0x248) = *(u16 *)(arg0 + 0xA);
|
||||
*(u16 *)(arg0 + 0x24A) = *(u16 *)(arg0 + 0xE);
|
||||
func_80147A84(arg0);
|
||||
func_801473EC(arg0);
|
||||
if (func_8014F1F4(arg0) != 0) {
|
||||
*(u16 *)(arg0 + 6) = *(u16 *)(arg0 + 0x246);
|
||||
*(u16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0x248);
|
||||
*(u16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0x24A);
|
||||
}
|
||||
}
|
||||
|
||||
if (func_8014FCFC(arg0) == 0) {
|
||||
D_801891B8[*(u16 *)arg0]((void *)arg0);
|
||||
*(u8 *)(arg0 + 0x1BE) = 0xA;
|
||||
func_80149724(arg0);
|
||||
func_801477E8(arg0, 0xFFE80000);
|
||||
func_80146DB8(arg0, &D_801894E4);
|
||||
func_80146E90(arg0, 0x10);
|
||||
return;
|
||||
}
|
||||
|
||||
func_8014ED28(arg0);
|
||||
func_8014FA04(arg0);
|
||||
func_801725B8(arg0);
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
#include "common.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u16 h[6];
|
||||
} Rec_8016CBC0;
|
||||
typedef struct
|
||||
{
|
||||
u8 f0;
|
||||
u8 f1;
|
||||
u8 f2;
|
||||
u8 f3;
|
||||
Rec_8016CBC0 ent[16];
|
||||
} Blk_8016CBC0;
|
||||
typedef struct
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
s16 z;
|
||||
s16 pad;
|
||||
} SVEC_8016CBC0;
|
||||
typedef struct
|
||||
{
|
||||
u8 r;
|
||||
u8 g;
|
||||
u8 b;
|
||||
u8 pad;
|
||||
} CLR_8016CBC0;
|
||||
typedef struct
|
||||
{
|
||||
SVEC_8016CBC0 v[4];
|
||||
CLR_8016CBC0 col[4];
|
||||
s32 tag;
|
||||
} Poly_8016CBC0;
|
||||
typedef struct
|
||||
{
|
||||
s32 w[8];
|
||||
} Mtx8_8016CBC0;
|
||||
extern s32 func_80017758(void *a0, void *a1);
|
||||
extern Mtx8_8016CBC0 D_800AE620;
|
||||
extern Blk_8016CBC0 D_801D9CA0[];
|
||||
short func_8016CBC0(void)
|
||||
{
|
||||
Poly_8016CBC0 p0;
|
||||
Poly_8016CBC0 p1;
|
||||
Mtx8_8016CBC0 mtx;
|
||||
Blk_8016CBC0 *blk;
|
||||
Rec_8016CBC0 *sub;
|
||||
Rec_8016CBC0 *pv;
|
||||
unsigned int uVar9;
|
||||
unsigned int w9;
|
||||
unsigned int uc;
|
||||
unsigned int a2;
|
||||
int col;
|
||||
int iVar3;
|
||||
int w3;
|
||||
unsigned int w3b;
|
||||
short count;
|
||||
short i;
|
||||
register unsigned int zr __asm__("$0");
|
||||
mtx = D_800AE620;
|
||||
count = 0;
|
||||
p1.tag = 0x50000000;
|
||||
p0.tag = 0x50000000;
|
||||
p1.col[3].b = 0;
|
||||
p1.col[3].g = 0;
|
||||
p1.col[3].r = 0;
|
||||
p1.col[1].b = 0;
|
||||
p1.col[1].g = 0;
|
||||
p1.col[1].r = 0;
|
||||
p0.col[2].b = 0;
|
||||
p0.col[2].g = 0;
|
||||
p0.col[2].r = 0;
|
||||
p0.col[0].b = 0;
|
||||
p0.col[0].g = 0;
|
||||
p0.col[0].r = 0;
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
blk = &D_801D9CA0[i];
|
||||
if (blk->f0 != 0)
|
||||
{
|
||||
sub = blk->ent;
|
||||
uVar9 = blk->f1;
|
||||
iVar3 = blk->f2;
|
||||
col = blk->f3;
|
||||
count = count + 1;
|
||||
w3 = iVar3 - 1;
|
||||
iVar3 = w3 + zr;
|
||||
if (w3 != (-1))
|
||||
{
|
||||
do
|
||||
{
|
||||
pv = &sub[(short) uVar9];
|
||||
{
|
||||
unsigned int a = pv->h[0];
|
||||
unsigned int b;
|
||||
p0.v[0].x = a;
|
||||
b = pv->h[3];
|
||||
p1.v[1].x = b;
|
||||
p0.v[1].x = (p1.v[0].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1);
|
||||
}
|
||||
{
|
||||
unsigned int a = pv->h[1];
|
||||
unsigned int b;
|
||||
p0.v[0].y = a;
|
||||
b = pv->h[4];
|
||||
uc = ((unsigned) (col & 0xFF)) >> 3;
|
||||
p1.v[1].y = b;
|
||||
p0.v[1].y = (p1.v[0].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1);
|
||||
w9 = uVar9 - 1;
|
||||
uVar9 = w9 + zr;
|
||||
}
|
||||
{
|
||||
unsigned int a = pv->h[2];
|
||||
unsigned int b;
|
||||
p0.v[0].z = a;
|
||||
b = pv->h[5];
|
||||
p1.col[0].g = col;
|
||||
p0.col[1].g = col;
|
||||
p1.col[0].b = uc;
|
||||
p0.col[1].b = uc;
|
||||
p1.col[0].r = uc;
|
||||
p0.col[1].r = uc;
|
||||
p1.v[1].z = b;
|
||||
p0.v[1].z = (p1.v[0].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1);
|
||||
}
|
||||
if (((int) (w9 << 16)) < 0)
|
||||
{
|
||||
uVar9 = 0xF;
|
||||
}
|
||||
pv = &sub[(short) uVar9];
|
||||
col = col - 0xF;
|
||||
a2 = (unsigned) (col & 0xFF);
|
||||
a2 = a2 >> 3;
|
||||
{
|
||||
unsigned int a = pv->h[0];
|
||||
unsigned int b;
|
||||
p0.v[2].x = a;
|
||||
b = pv->h[3];
|
||||
p1.v[3].x = b;
|
||||
p0.v[3].x = (p1.v[2].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1);
|
||||
}
|
||||
{
|
||||
unsigned int a = pv->h[1];
|
||||
unsigned int b;
|
||||
p0.v[2].y = a;
|
||||
b = pv->h[4];
|
||||
p1.v[3].y = b;
|
||||
p0.v[3].y = (p1.v[2].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1);
|
||||
}
|
||||
{
|
||||
unsigned int a = pv->h[2];
|
||||
unsigned int b;
|
||||
p0.v[2].z = a;
|
||||
b = pv->h[5];
|
||||
p1.col[2].g = col;
|
||||
p0.col[3].g = col;
|
||||
p1.col[2].b = a2;
|
||||
p0.col[3].b = a2;
|
||||
p1.col[2].r = a2;
|
||||
p0.col[3].r = a2;
|
||||
p1.v[3].z = b;
|
||||
p0.v[3].z = (p1.v[2].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1);
|
||||
}
|
||||
func_80017758(&p0, &mtx);
|
||||
func_80017758(&p1, &mtx);
|
||||
uc = iVar3 - 1;
|
||||
w3b = uc;
|
||||
iVar3 = w3b + zr;
|
||||
}
|
||||
while (((short) w3b) != (-1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
+45
-45
@@ -2,11 +2,11 @@
|
||||
|
||||
> Generated by `tools/family_hseq.py` from the 134 overlay sigs + per-overlay src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter.
|
||||
|
||||
**Fleet (overlays):** 86.9% fn / 73.4% instr / 56.9% distinct-code matched. Unmatched: 46,028 instances / 3,479,432 ins (27,022 distinct classes).
|
||||
**Fleet (overlays):** 87.0% fn / 73.7% instr / 57.5% distinct-code matched. Unmatched: 45,883 instances / 3,443,679 ins (26,884 distinct classes).
|
||||
|
||||
**Tail cross-check (Phase-25 close):** 31,371 tail fns / 1,529,064 ins → 596 h_seq families ≥2, **178 substantial (nins≥80) / 1,042,083 ins**.
|
||||
**Tail cross-check (Phase-25 close):** 30,955 tail fns / 1,496,040 ins → 595 h_seq families ≥2, **177 substantial (nins≥80) / 1,009,152 ins**.
|
||||
|
||||
**Full frontier (all unmatched by h_seq):** 2763 target families (≥2 members or a matched sibling) + 3787 singletons (Step-D residue). Substantial: **591 families / 2,143,449 templatable ins**, 64 with a matched sibling (zero-crack). Substantial member classes: 13,661 PURE · 40 IMM · 6 STRUCT-excluded.
|
||||
**Full frontier (all unmatched by h_seq):** 2762 target families (≥2 members or a matched sibling) + 3787 singletons (Step-D residue). Substantial: **590 families / 2,107,696 templatable ins**, 71 with a matched sibling (zero-crack). Substantial member classes: 13,516 PURE · 40 IMM · 6 STRUCT-excluded.
|
||||
|
||||
|
||||
## Top substantial families (by templatable byte-weight)
|
||||
@@ -18,48 +18,48 @@
|
||||
| 3 | 329 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | Y | 0x8013c414 matched-ov077 | 45,073 |
|
||||
| 4 | 304 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8014d820 draft-ov077 | 41,952 |
|
||||
| 5 | 289 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135eb0 draft-ov077 | 39,882 |
|
||||
| 6 | 279 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x801670e4 draft-ov077 | 38,502 |
|
||||
| 6 | 279 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x801670e4 matched-ov077 | 38,223 |
|
||||
| 7 | 272 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8013b83c draft-ov077 | 37,536 |
|
||||
| 8 | 271 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8015b950 draft-ov077 | 37,398 |
|
||||
| 9 | 260 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80140958 draft-ov077 | 35,880 |
|
||||
| 10 | 249 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8013cb84 matched-ov077 | 34,113 |
|
||||
| 11 | 240 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8013d53c draft-ov077 | 33,120 |
|
||||
| 12 | 231 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80175da8 draft-ov077 | 31,878 |
|
||||
| 13 | 226 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8012956c draft-ov077 | 31,188 |
|
||||
| 14 | 222 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8015c32c draft-ov077 | 30,636 |
|
||||
| 15 | 209 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8016cbc0 draft-ov077 | 28,842 |
|
||||
| 16 | 204 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8015ea3c draft-ov077 | 28,152 |
|
||||
| 17 | 201 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8015d738 draft-ov077 | 27,738 |
|
||||
| 18 | 198 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8013bd74 draft-ov077 | 27,324 |
|
||||
| 19 | 198 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x801412a8 draft-ov077 | 27,324 |
|
||||
| 20 | 188 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8015f448 draft-ov077 | 25,944 |
|
||||
| 21 | 188 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80175ab8 draft-ov077 | 25,944 |
|
||||
| 22 | 93 | 276 (276/0/0) | 2/138 | cross-address | PURE | 0 | · | 0x8014ffdc draft-ov077 | 25,668 |
|
||||
| 23 | 183 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8014032c draft-ov077 | 25,254 |
|
||||
| 24 | 181 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135a4c draft-ov077 | 24,978 |
|
||||
| 25 | 174 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8017ae2c draft-ov077 | 24,012 |
|
||||
| 26 | 173 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80154c24 draft-ov077 | 23,874 |
|
||||
| 27 | 165 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80178004 draft-ov077 | 22,770 |
|
||||
| 28 | 162 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80169bbc draft-ov077 | 22,356 |
|
||||
| 29 | 161 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80160534 draft-ov077 | 22,218 |
|
||||
| 30 | 161 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8016dc20 matched-ov077 | 22,057 |
|
||||
| 31 | 158 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x801299c8 draft-ov077 | 21,804 |
|
||||
| 32 | 154 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8013c0f8 draft-ov077 | 21,252 |
|
||||
| 33 | 154 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x80144090 matched-ov077 | 20,944 |
|
||||
| 34 | 155 | 133 (133/0/0) | 1/133 | per-location | PURE | 5 | · | 0x801365b8 matched-ov077 | 20,615 |
|
||||
| 35 | 148 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8016d1d8 draft-ov077 | 20,424 |
|
||||
| 36 | 147 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80177b5c draft-ov077 | 20,286 |
|
||||
| 37 | 141 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x8013d9b0 matched-ov077 | 19,176 |
|
||||
| 38 | 137 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x80133ab0 matched-ov077 | 18,769 |
|
||||
| 39 | 136 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135260 draft-ov077 | 18,768 |
|
||||
| 40 | 131 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x801555f4 draft-ov077 | 18,078 |
|
||||
| 41 | 125 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8012aaac draft-ov077 | 17,250 |
|
||||
| 42 | 123 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80140608 draft-ov077 | 16,974 |
|
||||
| 43 | 123 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8016c998 draft-ov077 | 16,974 |
|
||||
| 44 | 123 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80174cb0 draft-ov077 | 16,974 |
|
||||
| 45 | 122 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x801588cc draft-ov077 | 16,836 |
|
||||
| 46 | 3338 | 5 (5/0/0) | 3/5 | cross-address | PURE | 0 | · | 0x8017d960 modal | 16,690 |
|
||||
| 47 | 114 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8015d1b8 draft-ov077 | 15,732 |
|
||||
| 48 | 113 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135888 draft-ov077 | 15,594 |
|
||||
| 49 | 112 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8016b234 draft-ov077 | 15,456 |
|
||||
| 50 | 111 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80179b74 draft-ov077 | 15,318 |
|
||||
| 10 | 240 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8013d53c matched-ov077 | 32,880 |
|
||||
| 11 | 231 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80175da8 draft-ov077 | 31,878 |
|
||||
| 12 | 226 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8012956c matched-ov077 | 30,962 |
|
||||
| 13 | 222 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8015c32c draft-ov077 | 30,636 |
|
||||
| 14 | 209 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8016cbc0 matched-ov077 | 28,633 |
|
||||
| 15 | 204 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8015ea3c matched-ov077 | 27,948 |
|
||||
| 16 | 201 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8015d738 matched-ov077 | 27,537 |
|
||||
| 17 | 198 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8013bd74 draft-ov077 | 27,324 |
|
||||
| 18 | 198 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x801412a8 draft-ov077 | 27,324 |
|
||||
| 19 | 188 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80175ab8 draft-ov077 | 25,944 |
|
||||
| 20 | 188 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8015f448 matched-ov077 | 25,756 |
|
||||
| 21 | 93 | 275 (275/0/0) | 2/138 | cross-address | PURE | 1 | · | 0x8014ffdc matched-ov077 | 25,575 |
|
||||
| 22 | 183 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8014032c draft-ov077 | 25,254 |
|
||||
| 23 | 181 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135a4c draft-ov077 | 24,978 |
|
||||
| 24 | 174 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8017ae2c draft-ov077 | 24,012 |
|
||||
| 25 | 173 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80154c24 draft-ov077 | 23,874 |
|
||||
| 26 | 165 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80178004 draft-ov077 | 22,770 |
|
||||
| 27 | 162 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80169bbc draft-ov077 | 22,356 |
|
||||
| 28 | 161 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80160534 draft-ov077 | 22,218 |
|
||||
| 29 | 161 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x8016dc20 matched-ov077 | 22,057 |
|
||||
| 30 | 158 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x801299c8 draft-ov077 | 21,804 |
|
||||
| 31 | 154 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8013c0f8 draft-ov077 | 21,252 |
|
||||
| 32 | 154 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x80144090 matched-ov077 | 20,944 |
|
||||
| 33 | 155 | 133 (133/0/0) | 1/133 | per-location | PURE | 5 | · | 0x801365b8 matched-ov077 | 20,615 |
|
||||
| 34 | 148 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8016d1d8 draft-ov077 | 20,424 |
|
||||
| 35 | 147 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80177b5c draft-ov077 | 20,286 |
|
||||
| 36 | 141 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x8013d9b0 matched-ov077 | 19,176 |
|
||||
| 37 | 137 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x80133ab0 matched-ov077 | 18,769 |
|
||||
| 38 | 136 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135260 draft-ov077 | 18,768 |
|
||||
| 39 | 131 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x801555f4 draft-ov077 | 18,078 |
|
||||
| 40 | 125 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8012aaac draft-ov077 | 17,250 |
|
||||
| 41 | 123 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80140608 draft-ov077 | 16,974 |
|
||||
| 42 | 123 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8016c998 draft-ov077 | 16,974 |
|
||||
| 43 | 123 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80174cb0 draft-ov077 | 16,974 |
|
||||
| 44 | 122 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x801588cc draft-ov077 | 16,836 |
|
||||
| 45 | 3338 | 5 (5/0/0) | 3/5 | cross-address | PURE | 0 | · | 0x8017d960 modal | 16,690 |
|
||||
| 46 | 114 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8015d1b8 draft-ov077 | 15,732 |
|
||||
| 47 | 113 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135888 draft-ov077 | 15,594 |
|
||||
| 48 | 112 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x8016b234 draft-ov077 | 15,456 |
|
||||
| 49 | 111 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80179b74 draft-ov077 | 15,318 |
|
||||
| 50 | 110 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x801330e0 draft-ov077 | 15,180 |
|
||||
|
||||
+143
-143
@@ -4,156 +4,156 @@
|
||||
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
|
||||
|
||||
# THREE progress metrics (all matter — see the labels):
|
||||
FLEET fn-count byte-ident: 306776 / 353722 = 86.73% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 9634605 / 13081451 = 73.7% (shipped .text across resident+138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 3206708 / 5574674 = 57.5% (60553/87459 unique fns; the DISTINCT-RE number)
|
||||
FLEET fn-count byte-ident: 307463 / 353722 = 86.92% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 9760499 / 13081451 = 74.6% (shipped .text across resident+138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 3313721 / 5574674 = 59.4% (61074/87459 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 436 / 60201 = 0.7% (Phase-27 T10; SEPARATE — LINKED-excluding Ghidra sig dated 2026-06-14, PROVISIONAL until a fresh/complete main sig; NOT folded into the fleet number)
|
||||
|
||||
FLEET REAL substantive : 304921 (of which dedup-shared 234161 via 1846 groups / 234205 instances)
|
||||
FLEET REAL substantive : 305608 (of which dedup-shared 234161 via 1846 groups / 234205 instances)
|
||||
FLEET LINKED PsyQ objs : 959
|
||||
FLEET NON_MATCHING : 7 (0 in any default build — G4)
|
||||
FLEET INCLUDE_ASM stubs : 46939
|
||||
FLEET INCLUDE_ASM stubs : 46252
|
||||
FLEET matchable : 353722
|
||||
|
||||
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|
||||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| main | 54 | 2 | 959 | 1055 | 2096 | 50.3% |
|
||||
| resident | 129 | 0 | 0 | 131 | 145 | 90.3% |
|
||||
| ov_SC01_000 | 2183 | 1704 | 0 | 2183 | 2403 | 90.8% |
|
||||
| ov_SC01_001 | 2188 | 1704 | 0 | 2190 | 2466 | 88.8% |
|
||||
| ov_SC01_004 | 2181 | 1695 | 0 | 2182 | 2414 | 90.4% |
|
||||
| ov_SC01_005 | 2210 | 1717 | 0 | 2210 | 2503 | 88.3% |
|
||||
| ov_SC01_006 | 2210 | 1717 | 0 | 2210 | 2503 | 88.3% |
|
||||
| ov_SC01_008 | 2181 | 1695 | 0 | 2183 | 2426 | 90.0% |
|
||||
| ov_SC01_009 | 2206 | 1696 | 0 | 2207 | 2507 | 88.0% |
|
||||
| ov_SC01_074 | 2184 | 1696 | 0 | 2186 | 2425 | 90.1% |
|
||||
| ov_SC01_077 | 2375 | 1664 | 0 | 2377 | 2585 | 92.0% |
|
||||
| ov_SC01_080 | 2222 | 1699 | 0 | 2222 | 2512 | 88.5% |
|
||||
| ov_SC01_084 | 2230 | 1699 | 0 | 2235 | 2579 | 86.7% |
|
||||
| ov_SC02_000 | 2281 | 1734 | 0 | 2281 | 2683 | 85.0% |
|
||||
| ov_SC02_003 | 2281 | 1734 | 0 | 2281 | 2683 | 85.0% |
|
||||
| ov_SC02_004 | 2189 | 1699 | 0 | 2189 | 2401 | 91.2% |
|
||||
| ov_SC02_005 | 2296 | 1695 | 0 | 2306 | 2927 | 78.8% |
|
||||
| ov_SC02_011 | 2305 | 1702 | 0 | 2316 | 2893 | 80.1% |
|
||||
| ov_SC02_015 | 2190 | 1701 | 0 | 2190 | 2414 | 90.7% |
|
||||
| ov_SC02_016 | 2220 | 1701 | 0 | 2223 | 2545 | 87.3% |
|
||||
| ov_SC02_017 | 2266 | 1701 | 0 | 2274 | 2732 | 83.2% |
|
||||
| ov_SC02_021 | 2196 | 1701 | 0 | 2196 | 2437 | 90.1% |
|
||||
| ov_SC02_026 | 2211 | 1699 | 0 | 2217 | 2572 | 86.2% |
|
||||
| ov_SC02_027 | 2234 | 1699 | 0 | 2243 | 2692 | 83.3% |
|
||||
| ov_SC02_028 | 2235 | 1699 | 0 | 2245 | 2701 | 83.1% |
|
||||
| ov_SC02_031 | 2221 | 1700 | 0 | 2226 | 2562 | 86.9% |
|
||||
| ov_SC02_035 | 2197 | 1699 | 0 | 2200 | 2520 | 87.3% |
|
||||
| ov_SC02_039 | 2182 | 1699 | 0 | 2182 | 2416 | 90.3% |
|
||||
| ov_SC02_041 | 2217 | 1699 | 0 | 2220 | 2561 | 86.7% |
|
||||
| ov_SC03_001 | 2316 | 1700 | 0 | 2333 | 2869 | 81.3% |
|
||||
| ov_SC03_002 | 2243 | 1704 | 0 | 2258 | 2631 | 85.8% |
|
||||
| ov_SC03_003 | 2192 | 1699 | 0 | 2193 | 2423 | 90.5% |
|
||||
| ov_SC03_006 | 2255 | 1705 | 0 | 2264 | 2767 | 81.8% |
|
||||
| ov_SC03_007 | 2236 | 1699 | 0 | 2240 | 2623 | 85.4% |
|
||||
| ov_SC03_010 | 2198 | 1699 | 0 | 2198 | 2470 | 89.0% |
|
||||
| ov_SC03_011 | 2206 | 1699 | 0 | 2212 | 2527 | 87.5% |
|
||||
| ov_SC03_012 | 2184 | 1699 | 0 | 2185 | 2406 | 90.8% |
|
||||
| ov_SC03_013 | 2203 | 1699 | 0 | 2203 | 2492 | 88.4% |
|
||||
| ov_SC03_014 | 2261 | 1724 | 0 | 2261 | 2685 | 84.2% |
|
||||
| ov_SC03_015 | 2262 | 1724 | 0 | 2262 | 2685 | 84.2% |
|
||||
| ov_SC03_023 | 2190 | 1699 | 0 | 2191 | 2435 | 90.0% |
|
||||
| ov_SC03_024 | 2248 | 1704 | 0 | 2255 | 2641 | 85.4% |
|
||||
| ov_SC03_028 | 2230 | 1699 | 0 | 2234 | 2664 | 83.9% |
|
||||
| ov_SC03_029 | 2232 | 1701 | 0 | 2242 | 2644 | 84.8% |
|
||||
| ov_SC03_030 | 2204 | 1704 | 0 | 2206 | 2495 | 88.4% |
|
||||
| ov_SC03_031 | 2202 | 1699 | 0 | 2205 | 2514 | 87.7% |
|
||||
| ov_SC03_089 | 2216 | 1699 | 0 | 2223 | 2581 | 86.1% |
|
||||
| ov_SC03_090 | 2218 | 1699 | 0 | 2226 | 2625 | 84.8% |
|
||||
| ov_SC03_091 | 2221 | 1699 | 0 | 2229 | 2640 | 84.4% |
|
||||
| ov_SC03_092 | 2232 | 1699 | 0 | 2244 | 2587 | 86.7% |
|
||||
| ov_SC03_093 | 2208 | 1699 | 0 | 2212 | 2563 | 86.3% |
|
||||
| ov_SC03_094 | 2203 | 1699 | 0 | 2209 | 2577 | 85.7% |
|
||||
| ov_SC03_095 | 2193 | 1699 | 0 | 2196 | 2474 | 88.8% |
|
||||
| ov_SC03_096 | 2193 | 1699 | 0 | 2196 | 2465 | 89.1% |
|
||||
| ov_SC03_097 | 2222 | 1699 | 0 | 2229 | 2603 | 85.6% |
|
||||
| ov_SC03_098 | 2201 | 1699 | 0 | 2204 | 2541 | 86.7% |
|
||||
| ov_SC03_099 | 2194 | 1699 | 0 | 2197 | 2504 | 87.7% |
|
||||
| ov_SC03_100 | 2204 | 1699 | 0 | 2208 | 2539 | 87.0% |
|
||||
| ov_SC03_101 | 2204 | 1699 | 0 | 2208 | 2528 | 87.3% |
|
||||
| ov_SC03_102 | 2196 | 1699 | 0 | 2199 | 2492 | 88.2% |
|
||||
| ov_SC03_103 | 2199 | 1701 | 0 | 2202 | 2510 | 87.7% |
|
||||
| ov_SC03_104 | 2224 | 1699 | 0 | 2231 | 2616 | 85.3% |
|
||||
| ov_SC03_105 | 2217 | 1699 | 0 | 2224 | 2597 | 85.6% |
|
||||
| ov_SC03_108 | 2186 | 1699 | 0 | 2186 | 2443 | 89.5% |
|
||||
| ov_SC03_109 | 2187 | 1699 | 0 | 2189 | 2424 | 90.3% |
|
||||
| ov_SC03_110 | 2192 | 1699 | 0 | 2192 | 2468 | 88.8% |
|
||||
| ov_SC03_111 | 2204 | 1699 | 0 | 2207 | 2510 | 87.9% |
|
||||
| ov_SC03_112 | 2197 | 1701 | 0 | 2199 | 2526 | 87.1% |
|
||||
| ov_SC03_113 | 2190 | 1701 | 0 | 2193 | 2468 | 88.9% |
|
||||
| ov_SC03_114 | 2180 | 1699 | 0 | 2182 | 2415 | 90.4% |
|
||||
| ov_SC03_115 | 2197 | 1699 | 0 | 2199 | 2472 | 89.0% |
|
||||
| ov_SC03_116 | 2187 | 1699 | 0 | 2190 | 2438 | 89.8% |
|
||||
| ov_SC03_117 | 2215 | 1699 | 0 | 2221 | 2557 | 86.9% |
|
||||
| ov_SC03_118 | 2262 | 1723 | 0 | 2263 | 2685 | 84.3% |
|
||||
| ov_SC03_119 | 2260 | 1723 | 0 | 2261 | 2685 | 84.2% |
|
||||
| ov_SC03_121 | 2194 | 1699 | 0 | 2197 | 2459 | 89.3% |
|
||||
| ov_SC03_124 | 2273 | 1695 | 0 | 2293 | 2741 | 83.7% |
|
||||
| ov_SC03_125 | 2230 | 1699 | 0 | 2242 | 2588 | 86.6% |
|
||||
| ov_SC03_126 | 2193 | 1701 | 0 | 2193 | 2423 | 90.5% |
|
||||
| ov_SC04_000 | 2209 | 1703 | 0 | 2218 | 2546 | 87.1% |
|
||||
| ov_SC04_002 | 2225 | 1699 | 0 | 2229 | 2636 | 84.6% |
|
||||
| ov_SC04_003 | 2203 | 1699 | 0 | 2207 | 2502 | 88.2% |
|
||||
| ov_SC04_004 | 2212 | 1699 | 0 | 2214 | 2558 | 86.6% |
|
||||
| ov_SC04_005 | 2220 | 1699 | 0 | 2226 | 2612 | 85.2% |
|
||||
| ov_SC04_006 | 2193 | 1699 | 0 | 2195 | 2454 | 89.4% |
|
||||
| ov_SC04_007 | 2213 | 1699 | 0 | 2217 | 2569 | 86.3% |
|
||||
| ov_SC04_008 | 2183 | 1699 | 0 | 2183 | 2415 | 90.4% |
|
||||
| ov_SC04_009 | 2199 | 1699 | 0 | 2202 | 2441 | 90.2% |
|
||||
| ov_SC04_010 | 2190 | 1699 | 0 | 2191 | 2419 | 90.6% |
|
||||
| ov_SC04_011 | 2246 | 1699 | 0 | 2252 | 2803 | 80.3% |
|
||||
| ov_SC04_012 | 2186 | 1699 | 0 | 2187 | 2420 | 90.4% |
|
||||
| ov_SC04_015 | 2249 | 1700 | 0 | 2260 | 2611 | 86.6% |
|
||||
| ov_SC04_016 | 2189 | 1699 | 0 | 2191 | 2440 | 89.8% |
|
||||
| ov_SC04_018 | 2300 | 1734 | 0 | 2300 | 2857 | 80.5% |
|
||||
| ov_SC04_019 | 2305 | 1734 | 0 | 2305 | 2857 | 80.7% |
|
||||
| ov_SC04_020 | 2217 | 1699 | 0 | 2229 | 2567 | 86.8% |
|
||||
| ov_SC04_021 | 2194 | 1701 | 0 | 2194 | 2423 | 90.5% |
|
||||
| ov_SC05_000 | 2190 | 1703 | 0 | 2193 | 2422 | 90.5% |
|
||||
| ov_SC05_001 | 2213 | 1699 | 0 | 2218 | 2574 | 86.2% |
|
||||
| ov_SC05_002 | 2195 | 1699 | 0 | 2198 | 2442 | 90.0% |
|
||||
| ov_SC05_003 | 2192 | 1699 | 0 | 2193 | 2481 | 88.4% |
|
||||
| ov_SC05_004 | 2187 | 1699 | 0 | 2189 | 2464 | 88.8% |
|
||||
| ov_SC05_005 | 2194 | 1699 | 0 | 2195 | 2491 | 88.1% |
|
||||
| ov_SC05_006 | 2186 | 1699 | 0 | 2186 | 2430 | 90.0% |
|
||||
| ov_SC05_007 | 2196 | 1699 | 0 | 2201 | 2482 | 88.7% |
|
||||
| ov_SC05_008 | 2213 | 1699 | 0 | 2215 | 2543 | 87.1% |
|
||||
| ov_SC05_009 | 2191 | 1699 | 0 | 2195 | 2438 | 90.0% |
|
||||
| ov_SC05_010 | 2217 | 1699 | 0 | 2221 | 2588 | 85.8% |
|
||||
| ov_SC05_011 | 2189 | 1699 | 0 | 2190 | 2409 | 90.9% |
|
||||
| ov_SC05_017 | 2296 | 1696 | 0 | 2307 | 2842 | 81.2% |
|
||||
| ov_SC05_018 | 2243 | 1699 | 0 | 2256 | 2673 | 84.4% |
|
||||
| ov_SC05_019 | 2194 | 1701 | 0 | 2194 | 2423 | 90.5% |
|
||||
| ov_SC06_000 | 2254 | 1708 | 0 | 2257 | 2691 | 83.9% |
|
||||
| ov_SC06_006 | 2209 | 1699 | 0 | 2210 | 2511 | 88.0% |
|
||||
| ov_SC06_008 | 2219 | 1701 | 0 | 2225 | 2542 | 87.5% |
|
||||
| ov_SC06_010 | 2203 | 1699 | 0 | 2208 | 2517 | 87.7% |
|
||||
| ov_SC06_011 | 2197 | 1699 | 0 | 2201 | 2468 | 89.2% |
|
||||
| ov_SC06_013 | 2191 | 1699 | 0 | 2192 | 2425 | 90.4% |
|
||||
| ov_SC06_014 | 2197 | 1699 | 0 | 2199 | 2453 | 89.6% |
|
||||
| ov_SC06_015 | 2194 | 1699 | 0 | 2194 | 2421 | 90.6% |
|
||||
| ov_SC06_016 | 2211 | 1699 | 0 | 2213 | 2549 | 86.8% |
|
||||
| ov_SC06_018 | 2208 | 1702 | 0 | 2215 | 2665 | 83.1% |
|
||||
| ov_SC06_020 | 2201 | 1701 | 0 | 2202 | 2518 | 87.5% |
|
||||
| ov_SC06_022 | 2215 | 1699 | 0 | 2223 | 2642 | 84.1% |
|
||||
| ov_SC06_024 | 2220 | 1699 | 0 | 2226 | 2667 | 83.5% |
|
||||
| ov_SC06_025 | 2212 | 1699 | 0 | 2217 | 2572 | 86.2% |
|
||||
| ov_SC06_027 | 2180 | 1699 | 0 | 2181 | 2408 | 90.6% |
|
||||
| ov_SC06_029 | 2238 | 1699 | 0 | 2250 | 2662 | 84.5% |
|
||||
| ov_SC06_030 | 2193 | 1699 | 0 | 2193 | 2456 | 89.3% |
|
||||
| ov_SC06_032 | 2205 | 1700 | 0 | 2212 | 2658 | 83.2% |
|
||||
| ov_SC06_033 | 2208 | 1700 | 0 | 2215 | 2631 | 84.2% |
|
||||
| ov_SC07_000 | 2207 | 1703 | 0 | 2209 | 2521 | 87.6% |
|
||||
| ov_SC07_001 | 2193 | 1699 | 0 | 2195 | 2454 | 89.4% |
|
||||
| ov_SC07_002 | 2220 | 1699 | 0 | 2224 | 2579 | 86.2% |
|
||||
| ov_SC07_006 | 1966 | 1547 | 0 | 2046 | 2456 | 83.3% |
|
||||
| ov_SC07_007 | 1982 | 1548 | 0 | 2066 | 2614 | 79.0% |
|
||||
| ov_SC07_008 | 2177 | 1699 | 0 | 2177 | 2386 | 91.2% |
|
||||
| ov_SC07_009 | 2187 | 1699 | 0 | 2189 | 2430 | 90.1% |
|
||||
| ov_SC07_010 | 1995 | 1548 | 0 | 2078 | 2526 | 82.3% |
|
||||
| ov_SC07_011 | 1982 | 1547 | 0 | 2062 | 2450 | 84.2% |
|
||||
| ov_SC01_000 | 2188 | 1704 | 0 | 2188 | 2403 | 91.1% |
|
||||
| ov_SC01_001 | 2193 | 1704 | 0 | 2195 | 2466 | 89.0% |
|
||||
| ov_SC01_004 | 2186 | 1695 | 0 | 2187 | 2414 | 90.6% |
|
||||
| ov_SC01_005 | 2215 | 1717 | 0 | 2215 | 2503 | 88.5% |
|
||||
| ov_SC01_006 | 2215 | 1717 | 0 | 2215 | 2503 | 88.5% |
|
||||
| ov_SC01_008 | 2186 | 1695 | 0 | 2188 | 2426 | 90.2% |
|
||||
| ov_SC01_009 | 2211 | 1696 | 0 | 2212 | 2507 | 88.2% |
|
||||
| ov_SC01_074 | 2189 | 1696 | 0 | 2191 | 2425 | 90.4% |
|
||||
| ov_SC01_077 | 2384 | 1664 | 0 | 2386 | 2585 | 92.3% |
|
||||
| ov_SC01_080 | 2227 | 1699 | 0 | 2227 | 2512 | 88.7% |
|
||||
| ov_SC01_084 | 2235 | 1699 | 0 | 2240 | 2579 | 86.9% |
|
||||
| ov_SC02_000 | 2286 | 1734 | 0 | 2286 | 2683 | 85.2% |
|
||||
| ov_SC02_003 | 2286 | 1734 | 0 | 2286 | 2683 | 85.2% |
|
||||
| ov_SC02_004 | 2194 | 1699 | 0 | 2194 | 2401 | 91.4% |
|
||||
| ov_SC02_005 | 2301 | 1695 | 0 | 2311 | 2927 | 79.0% |
|
||||
| ov_SC02_011 | 2310 | 1702 | 0 | 2321 | 2893 | 80.2% |
|
||||
| ov_SC02_015 | 2195 | 1701 | 0 | 2195 | 2414 | 90.9% |
|
||||
| ov_SC02_016 | 2225 | 1701 | 0 | 2228 | 2545 | 87.5% |
|
||||
| ov_SC02_017 | 2271 | 1701 | 0 | 2279 | 2732 | 83.4% |
|
||||
| ov_SC02_021 | 2201 | 1701 | 0 | 2201 | 2437 | 90.3% |
|
||||
| ov_SC02_026 | 2216 | 1699 | 0 | 2222 | 2572 | 86.4% |
|
||||
| ov_SC02_027 | 2239 | 1699 | 0 | 2248 | 2692 | 83.5% |
|
||||
| ov_SC02_028 | 2240 | 1699 | 0 | 2250 | 2701 | 83.3% |
|
||||
| ov_SC02_031 | 2226 | 1700 | 0 | 2231 | 2562 | 87.1% |
|
||||
| ov_SC02_035 | 2202 | 1699 | 0 | 2205 | 2520 | 87.5% |
|
||||
| ov_SC02_039 | 2187 | 1699 | 0 | 2187 | 2416 | 90.5% |
|
||||
| ov_SC02_041 | 2222 | 1699 | 0 | 2225 | 2561 | 86.9% |
|
||||
| ov_SC03_001 | 2321 | 1700 | 0 | 2338 | 2869 | 81.5% |
|
||||
| ov_SC03_002 | 2248 | 1704 | 0 | 2263 | 2631 | 86.0% |
|
||||
| ov_SC03_003 | 2197 | 1699 | 0 | 2198 | 2423 | 90.7% |
|
||||
| ov_SC03_006 | 2260 | 1705 | 0 | 2269 | 2767 | 82.0% |
|
||||
| ov_SC03_007 | 2241 | 1699 | 0 | 2245 | 2623 | 85.6% |
|
||||
| ov_SC03_010 | 2203 | 1699 | 0 | 2203 | 2470 | 89.2% |
|
||||
| ov_SC03_011 | 2211 | 1699 | 0 | 2217 | 2527 | 87.7% |
|
||||
| ov_SC03_012 | 2189 | 1699 | 0 | 2190 | 2406 | 91.0% |
|
||||
| ov_SC03_013 | 2208 | 1699 | 0 | 2208 | 2492 | 88.6% |
|
||||
| ov_SC03_014 | 2266 | 1724 | 0 | 2266 | 2685 | 84.4% |
|
||||
| ov_SC03_015 | 2267 | 1724 | 0 | 2267 | 2685 | 84.4% |
|
||||
| ov_SC03_023 | 2195 | 1699 | 0 | 2196 | 2435 | 90.2% |
|
||||
| ov_SC03_024 | 2253 | 1704 | 0 | 2260 | 2641 | 85.6% |
|
||||
| ov_SC03_028 | 2235 | 1699 | 0 | 2239 | 2664 | 84.0% |
|
||||
| ov_SC03_029 | 2237 | 1701 | 0 | 2247 | 2644 | 85.0% |
|
||||
| ov_SC03_030 | 2209 | 1704 | 0 | 2211 | 2495 | 88.6% |
|
||||
| ov_SC03_031 | 2207 | 1699 | 0 | 2210 | 2514 | 87.9% |
|
||||
| ov_SC03_089 | 2221 | 1699 | 0 | 2228 | 2581 | 86.3% |
|
||||
| ov_SC03_090 | 2223 | 1699 | 0 | 2231 | 2625 | 85.0% |
|
||||
| ov_SC03_091 | 2226 | 1699 | 0 | 2234 | 2640 | 84.6% |
|
||||
| ov_SC03_092 | 2237 | 1699 | 0 | 2249 | 2587 | 86.9% |
|
||||
| ov_SC03_093 | 2213 | 1699 | 0 | 2217 | 2563 | 86.5% |
|
||||
| ov_SC03_094 | 2208 | 1699 | 0 | 2214 | 2577 | 85.9% |
|
||||
| ov_SC03_095 | 2198 | 1699 | 0 | 2201 | 2474 | 89.0% |
|
||||
| ov_SC03_096 | 2198 | 1699 | 0 | 2201 | 2465 | 89.3% |
|
||||
| ov_SC03_097 | 2227 | 1699 | 0 | 2234 | 2603 | 85.8% |
|
||||
| ov_SC03_098 | 2206 | 1699 | 0 | 2209 | 2541 | 86.9% |
|
||||
| ov_SC03_099 | 2199 | 1699 | 0 | 2202 | 2504 | 87.9% |
|
||||
| ov_SC03_100 | 2209 | 1699 | 0 | 2213 | 2539 | 87.2% |
|
||||
| ov_SC03_101 | 2209 | 1699 | 0 | 2213 | 2528 | 87.5% |
|
||||
| ov_SC03_102 | 2201 | 1699 | 0 | 2204 | 2492 | 88.4% |
|
||||
| ov_SC03_103 | 2204 | 1701 | 0 | 2207 | 2510 | 87.9% |
|
||||
| ov_SC03_104 | 2229 | 1699 | 0 | 2236 | 2616 | 85.5% |
|
||||
| ov_SC03_105 | 2222 | 1699 | 0 | 2229 | 2597 | 85.8% |
|
||||
| ov_SC03_108 | 2191 | 1699 | 0 | 2191 | 2443 | 89.7% |
|
||||
| ov_SC03_109 | 2192 | 1699 | 0 | 2194 | 2424 | 90.5% |
|
||||
| ov_SC03_110 | 2197 | 1699 | 0 | 2197 | 2468 | 89.0% |
|
||||
| ov_SC03_111 | 2209 | 1699 | 0 | 2212 | 2510 | 88.1% |
|
||||
| ov_SC03_112 | 2202 | 1701 | 0 | 2204 | 2526 | 87.3% |
|
||||
| ov_SC03_113 | 2195 | 1701 | 0 | 2198 | 2468 | 89.1% |
|
||||
| ov_SC03_114 | 2185 | 1699 | 0 | 2187 | 2415 | 90.6% |
|
||||
| ov_SC03_115 | 2202 | 1699 | 0 | 2204 | 2472 | 89.2% |
|
||||
| ov_SC03_116 | 2192 | 1699 | 0 | 2195 | 2438 | 90.0% |
|
||||
| ov_SC03_117 | 2220 | 1699 | 0 | 2226 | 2557 | 87.1% |
|
||||
| ov_SC03_118 | 2267 | 1723 | 0 | 2268 | 2685 | 84.5% |
|
||||
| ov_SC03_119 | 2265 | 1723 | 0 | 2266 | 2685 | 84.4% |
|
||||
| ov_SC03_121 | 2199 | 1699 | 0 | 2202 | 2459 | 89.5% |
|
||||
| ov_SC03_124 | 2278 | 1695 | 0 | 2298 | 2741 | 83.8% |
|
||||
| ov_SC03_125 | 2235 | 1699 | 0 | 2247 | 2588 | 86.8% |
|
||||
| ov_SC03_126 | 2198 | 1701 | 0 | 2198 | 2423 | 90.7% |
|
||||
| ov_SC04_000 | 2214 | 1703 | 0 | 2223 | 2546 | 87.3% |
|
||||
| ov_SC04_002 | 2230 | 1699 | 0 | 2234 | 2636 | 84.7% |
|
||||
| ov_SC04_003 | 2208 | 1699 | 0 | 2212 | 2502 | 88.4% |
|
||||
| ov_SC04_004 | 2217 | 1699 | 0 | 2219 | 2558 | 86.7% |
|
||||
| ov_SC04_005 | 2225 | 1699 | 0 | 2231 | 2612 | 85.4% |
|
||||
| ov_SC04_006 | 2198 | 1699 | 0 | 2200 | 2454 | 89.6% |
|
||||
| ov_SC04_007 | 2218 | 1699 | 0 | 2222 | 2569 | 86.5% |
|
||||
| ov_SC04_008 | 2188 | 1699 | 0 | 2188 | 2415 | 90.6% |
|
||||
| ov_SC04_009 | 2204 | 1699 | 0 | 2207 | 2441 | 90.4% |
|
||||
| ov_SC04_010 | 2195 | 1699 | 0 | 2196 | 2419 | 90.8% |
|
||||
| ov_SC04_011 | 2251 | 1699 | 0 | 2257 | 2803 | 80.5% |
|
||||
| ov_SC04_012 | 2191 | 1699 | 0 | 2192 | 2420 | 90.6% |
|
||||
| ov_SC04_015 | 2254 | 1700 | 0 | 2265 | 2611 | 86.7% |
|
||||
| ov_SC04_016 | 2194 | 1699 | 0 | 2196 | 2440 | 90.0% |
|
||||
| ov_SC04_018 | 2305 | 1734 | 0 | 2305 | 2857 | 80.7% |
|
||||
| ov_SC04_019 | 2310 | 1734 | 0 | 2310 | 2857 | 80.9% |
|
||||
| ov_SC04_020 | 2222 | 1699 | 0 | 2234 | 2567 | 87.0% |
|
||||
| ov_SC04_021 | 2199 | 1701 | 0 | 2199 | 2423 | 90.8% |
|
||||
| ov_SC05_000 | 2195 | 1703 | 0 | 2198 | 2422 | 90.8% |
|
||||
| ov_SC05_001 | 2218 | 1699 | 0 | 2223 | 2574 | 86.4% |
|
||||
| ov_SC05_002 | 2200 | 1699 | 0 | 2203 | 2442 | 90.2% |
|
||||
| ov_SC05_003 | 2197 | 1699 | 0 | 2198 | 2481 | 88.6% |
|
||||
| ov_SC05_004 | 2192 | 1699 | 0 | 2194 | 2464 | 89.0% |
|
||||
| ov_SC05_005 | 2199 | 1699 | 0 | 2200 | 2491 | 88.3% |
|
||||
| ov_SC05_006 | 2191 | 1699 | 0 | 2191 | 2430 | 90.2% |
|
||||
| ov_SC05_007 | 2201 | 1699 | 0 | 2206 | 2482 | 88.9% |
|
||||
| ov_SC05_008 | 2218 | 1699 | 0 | 2220 | 2543 | 87.3% |
|
||||
| ov_SC05_009 | 2196 | 1699 | 0 | 2200 | 2438 | 90.2% |
|
||||
| ov_SC05_010 | 2222 | 1699 | 0 | 2226 | 2588 | 86.0% |
|
||||
| ov_SC05_011 | 2194 | 1699 | 0 | 2195 | 2409 | 91.1% |
|
||||
| ov_SC05_017 | 2301 | 1696 | 0 | 2312 | 2842 | 81.4% |
|
||||
| ov_SC05_018 | 2248 | 1699 | 0 | 2261 | 2673 | 84.6% |
|
||||
| ov_SC05_019 | 2199 | 1701 | 0 | 2199 | 2423 | 90.8% |
|
||||
| ov_SC06_000 | 2259 | 1708 | 0 | 2262 | 2691 | 84.1% |
|
||||
| ov_SC06_006 | 2214 | 1699 | 0 | 2215 | 2511 | 88.2% |
|
||||
| ov_SC06_008 | 2224 | 1701 | 0 | 2230 | 2542 | 87.7% |
|
||||
| ov_SC06_010 | 2208 | 1699 | 0 | 2213 | 2517 | 87.9% |
|
||||
| ov_SC06_011 | 2202 | 1699 | 0 | 2206 | 2468 | 89.4% |
|
||||
| ov_SC06_013 | 2196 | 1699 | 0 | 2197 | 2425 | 90.6% |
|
||||
| ov_SC06_014 | 2202 | 1699 | 0 | 2204 | 2453 | 89.8% |
|
||||
| ov_SC06_015 | 2199 | 1699 | 0 | 2199 | 2421 | 90.8% |
|
||||
| ov_SC06_016 | 2216 | 1699 | 0 | 2218 | 2549 | 87.0% |
|
||||
| ov_SC06_018 | 2213 | 1702 | 0 | 2220 | 2665 | 83.3% |
|
||||
| ov_SC06_020 | 2206 | 1701 | 0 | 2207 | 2518 | 87.6% |
|
||||
| ov_SC06_022 | 2220 | 1699 | 0 | 2228 | 2642 | 84.3% |
|
||||
| ov_SC06_024 | 2225 | 1699 | 0 | 2231 | 2667 | 83.7% |
|
||||
| ov_SC06_025 | 2217 | 1699 | 0 | 2222 | 2572 | 86.4% |
|
||||
| ov_SC06_027 | 2185 | 1699 | 0 | 2186 | 2408 | 90.8% |
|
||||
| ov_SC06_029 | 2243 | 1699 | 0 | 2255 | 2662 | 84.7% |
|
||||
| ov_SC06_030 | 2198 | 1699 | 0 | 2198 | 2456 | 89.5% |
|
||||
| ov_SC06_032 | 2210 | 1700 | 0 | 2217 | 2658 | 83.4% |
|
||||
| ov_SC06_033 | 2213 | 1700 | 0 | 2220 | 2631 | 84.4% |
|
||||
| ov_SC07_000 | 2212 | 1703 | 0 | 2214 | 2521 | 87.8% |
|
||||
| ov_SC07_001 | 2198 | 1699 | 0 | 2200 | 2454 | 89.6% |
|
||||
| ov_SC07_002 | 2225 | 1699 | 0 | 2229 | 2579 | 86.4% |
|
||||
| ov_SC07_006 | 1969 | 1547 | 0 | 2049 | 2456 | 83.4% |
|
||||
| ov_SC07_007 | 1985 | 1548 | 0 | 2069 | 2614 | 79.2% |
|
||||
| ov_SC07_008 | 2182 | 1699 | 0 | 2182 | 2386 | 91.5% |
|
||||
| ov_SC07_009 | 2192 | 1699 | 0 | 2194 | 2430 | 90.3% |
|
||||
| ov_SC07_010 | 1999 | 1548 | 0 | 2082 | 2526 | 82.4% |
|
||||
| ov_SC07_011 | 1985 | 1547 | 0 | 2065 | 2450 | 84.3% |
|
||||
|
||||
@@ -374,3 +374,30 @@ conditional) · main-EXE/B9 + GLM/B6 + resident's 14 walls (P30) · behemoths B7
|
||||
`make sig-overlays` + `family_hseq.py` regen (→matched-ov077) → standard `family_sweep --hseq --only` (137/137).
|
||||
**BATCH R22: check-all 140/140 byte-identical; tools-health green; dedup 1846/0.** Fleet **73.4→73.7% instr ·
|
||||
56.9→57.5% distinct · 86.73% fn-count**. Commit `commit:0699`.
|
||||
|
||||
- **✅ 2026-07-18 — CRACK-WAVE 2 + FABLE AGENTS + TYPE-LIFT RECOVERY (Ultracode→xHigh). Fleet 73.4→74.6% instr.**
|
||||
**Two Opus crack-waves (15 fresh-core agents) + 3 Fable5 agents (gcc-2.7.2 source-readers) + a permuter track.**
|
||||
Wave-1: `func_8013CB84` (249) MATCH → **banked ×138**. Wave-2 (8 non-jr cores 93-209 ins): **6 MATCH**
|
||||
(8016cbc0/8015ea3c/8015d738/8015f448/8014ffdc[×276]/801412a8) + 2 near (80175ab8=58, 80178004=39).
|
||||
**Fable5 (each read the compiler source): 3 MATCH** — `func_8013D53C` (240, the cse.c cross-statement
|
||||
address-CSE wall: `*(S9*)(&D_801DA998+0x20)` never unifies with SYMBOL_REF while gas folds %hi/%lo(sym+k)
|
||||
byte-identical — NEW family-portable idiom), `func_801670E4` (279, post-reload scheduler boost-kill re-ties),
|
||||
`func_8012956C` (226, 4 stacked mechanisms incl. the reorg j-slot-steal barrier) — plus 2 near driven far
|
||||
closer (8014D820 33→**11**, 80175DA8 30→**11**, permuter/Fable seeds preserved).
|
||||
**BANKED: 8 exemplars ×1** (all but 801412a8) **+ ~815 members swept**: first sweep 538 (4 clean families:
|
||||
8015ea3c 134 / 8015d738 134 / 8015f448 138 / 8014ffdc 135) + type-lift recovery (8012956c **137/137**,
|
||||
801670e4 partial 4). **R22 clean-fleet 140/140 byte-identical; tools-health green; dedup 1846/0; 0 NON_MATCHING.**
|
||||
Fleet **74.6% instr · 59.4% distinct-code · 86.92% fn-count** (crack-wave arc start 73.4/56.9/86.61;
|
||||
**session-total 72.1→74.6 = +2.5pp instr**). Commits `commit:0699`..`commit:0708`.
|
||||
**NEW LESSONS (R30):** (a) crack-wave sweep needs a **map-regen** step (freshly-cracked exemplar is draft-ov077
|
||||
→ family_sweep finds 0; bank ×1 → sig-overlays + family_hseq.py → matched-ov077 → standard sweep). (b) The
|
||||
reconcile ladder (cast_call_sites→reconcile_tu→scope_data_externs) handles most, but recurring manual fixups:
|
||||
**func_80161208/func_801670E4 all-decls-normalized-to-no-proto** (a reconcile re-adds a file-scope prototyped
|
||||
decl that poisons every no-proto call), scalar-typedef strip, §17a-1 fn-ptr casts, local-typedef uniquify vs
|
||||
same-file siblings. (c) **Type-lift recovers clean-TYPE families 137/137** (Blk16_956C/Ent_956C, SVec/Fr →
|
||||
engine_types.h, byte-neutral) but NOT def-sig/per-sibling-decl-conflict families.
|
||||
**CARRIED FOLLOW-UPS (all preserved, R20):** (1) 801670e4/8016cbc0 — type-lifted but the sweep hits a
|
||||
per-sibling func_801670E4 decl-conflict (needs the func_80161208-style all-decls-normalize applied per sibling,
|
||||
or a sweep enhancement). (2) 8013d53c family — void* def-sig caller-decl thread per sibling. (3) 801412a8 —
|
||||
§29 narrow-u16-param def-side wall (caller decl int; matching adds masking). (4) permuter/Fable fuel: 8014d820
|
||||
(11), 80175da8 (11), 80175ab8 (58), 80178004 (39). Drafts in .run/giants/{wave2_,fable_,*.close11}*.
|
||||
|
||||
Reference in New Issue
Block a user