phase12: track verified adjacency sources

This commit is contained in:
Christopher Williams
2026-09-25 10:39:15 -04:00
parent e9f46c00c4
commit fbd57d38e1
2 changed files with 65 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
/*
* func_8008FFC4 — 100 bytes at 0x8008FFC4..0x80090028
*
* Gate one callback on a gp sentinel, then dispatch on the low byte of the
* argument to one of two no-argument callbacks.
*
* The globals and helper purposes are address-based hypotheses; the byte
* match is the evidence for this region.
*/
extern int D_80121EF4;
extern int D_80122660;
extern int D_80122670;
extern void func_8008FCD8(int, int);
extern void func_80100334(void);
extern void func_8010036C(void);
void func_8008FFC4(int a0)
{
if (D_80121EF4 != -1)
func_8008FCD8(D_80122660, D_80122670);
if ((a0 & 0xff) != 0)
func_80100334();
else
func_8010036C();
}
+38
View File
@@ -0,0 +1,38 @@
/*
* func_80107D18 — 100 bytes at 0x80107D18..0x80107D7C
*
* Insert a node into a doubly linked list, updating the head when the list is
* empty. The next field is cleared before the list walk so its store occupies
* the branch delay slot in the original.
*
* The list field meanings and global names are address-based hypotheses; the
* byte match is the evidence for this region.
*/
extern int D_801221C4;
extern int D_801221C8;
void func_80107D18(int *a0)
{
int *p = (int *)D_801221C4;
D_801221C8 = 1;
if (p == a0)
goto done;
if (a0[0] != 0)
goto done;
a0[1] = 0;
if (p == 0) {
D_801221C4 = (int)a0;
a0[0] = 0;
} else {
while (p[1] != 0)
p = (int *)p[1];
p[1] = (int)a0;
a0[0] = (int)p;
}
done:
D_801221C8 = 0;
}