mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-29 23:24:32 -04:00
feat(decomp): ov_SC03_015 — 7 resolver-held drafts banked after the T2a surgery (func_8017C104, func_8017D890, func_8017DCC0, func_80180638, func_80180CF8, func_80188FB4, func_801893BC); gate-time §8a carve (yaml+mk) re-verified byte-identical from a clean rebuild; T2a log (P31 S62)
This commit is contained in:
+2
-1
@@ -1590,7 +1590,8 @@ build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC03_015/ov_SC03_015_jr_80185B44.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x38 (S62 T2a: order re-aligned to the yaml after the 17:43 mk restore)
|
||||
build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC03_015/ov_SC03_015_jr_80185B44.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x38
|
||||
build/src/ov_SC03_015/ov_SC03_015_o0e.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC03_015_CHECK_SHA := config/check.ov_SC03_015.sha
|
||||
ov_SC03_015_SYMBOLS := config/symbols.ov_SC03_015.txt
|
||||
|
||||
@@ -168,7 +168,7 @@ segments:
|
||||
- [0xc10e0, .rodata, ov_SC03_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc116c, data, tail17]
|
||||
- [0xc1170, .rodata, ov_SC03_015_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc1184, data, tail18]
|
||||
- [0xc1198, data, tail18]
|
||||
- [0xc11b0, .rodata, ov_SC03_015_jr_8017EB7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc11d0, data, tail19]
|
||||
- [0xc1308, .rodata, ov_SC03_015_jr_80184F14] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
|
||||
@@ -2299,3 +2299,16 @@ HEAD commit:3078).
|
||||
targets — re-judge the 54 carve-refused under the new comparer before the carver spends builds.
|
||||
|
||||
**NEXT: T2a** — red surgery ov_SC03_015 (Max, solo).
|
||||
|
||||
**T2a DONE (ov_SC03_015 GREEN, red 5 → 4, +7 banks).** Two defects, one cause: the 17:43 (08-25)
|
||||
"RESTORE overlays.mk" blanket-restore resurrected the 06:58-era `_JTBL_INTERLEAVE` order (data
|
||||
`tail20` wedged BETWEEN the jr_80184F14 and jr_80185B44 carves + a phantom `tail21`) after wave de
|
||||
(11:17) had merged the carves in the yaml → `make extract` died (`tail21.data.o` not found) and no
|
||||
JTBL_PADS value could ever win the S61 search (the order was wrong, not the pads). Retail words at
|
||||
0xc1308–0xc139c read as 12 | 8 | 6 | 11 entries: jr_80184F14's table, then jr_80185B44's three
|
||||
(func_80185B44 / func_801874C0 / func_80187884) — exactly the 3 `.align 3` tables the TU now emits.
|
||||
Fix: order re-aligned to the yaml, pads `0,0,0` (`commit:3084`); R22 clean rebuild byte-identical
|
||||
(`d84b01a2`); then the 7 resolver drafts it held gated 7/7 (the gate's own §8a carve for the new
|
||||
switch fns updated yaml+mk; re-verified clean). Lesson for R59: a blanket restore of overlays.mk
|
||||
must be diffed against every yaml it describes (order ⇔ subseg sequence) — `tools/`-worthy check.
|
||||
**NEXT: T2b** — ov_SC03_024 (+4 rodata shift in jr_8017AE2C.o; Max, solo).
|
||||
|
||||
@@ -3392,7 +3392,23 @@ void func_8017C0C8(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C104);
|
||||
|
||||
|
||||
void func_8017C104(a0)
|
||||
u8 *a0;
|
||||
{
|
||||
s32 frame_pad[10];
|
||||
u16 v1;
|
||||
u16 v0;
|
||||
(void)&frame_pad;
|
||||
v1 = *(u16 *)(a0 + 0x2);
|
||||
v0 = *(u16 *)(a0 + 0xE);
|
||||
v1 += 0x1;
|
||||
v0 += 0x10;
|
||||
*(u16 *)(a0 + 0xE) = v0;
|
||||
*(u16 *)(a0 + 0x2) = v1;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8017C154();
|
||||
void func_8017C12C(void) {
|
||||
@@ -4432,7 +4448,30 @@ void func_8017D804(s32 param) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017D890);
|
||||
extern u8 D_801EA884;
|
||||
extern u8 D_801EA885;
|
||||
extern u8 D_801EA886;
|
||||
|
||||
void func_8017D890(arg0, a1)
|
||||
void *arg0;
|
||||
void *a1;
|
||||
{
|
||||
s16 var;
|
||||
|
||||
a1 = *(void **)((s32)arg0 + 0x20);
|
||||
var = *(u16 *)((s32)a1 + 0x1A) + 0x200;
|
||||
*(u16 *)((s32)a1 + 0x1A) = var;
|
||||
*(u16 *)((s32)a1 + 0x18) = var;
|
||||
if (var >= 0x1001) {
|
||||
D_801EA884 = 0xFF;
|
||||
D_801EA885 = 0xFF;
|
||||
D_801EA886 = 0xFF;
|
||||
*(u16 *)((s32)a1 + 0x1A) = 0x1000;
|
||||
*(u16 *)((s32)a1 + 0x18) = 0x1000;
|
||||
*(u16 *)((s32)arg0 + 2) = *(u16 *)((s32)arg0 + 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_8017D900 — fade the 4-byte colour quad at D_801EA880 one step toward 0
|
||||
@@ -4585,7 +4624,29 @@ void func_8017DC28(void *a0) {
|
||||
|
||||
DEFINE_func_8017DC4C() /* dedup: shared engine-core @0x8017DC4C (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DCC0);
|
||||
extern s16 D_80126B3A;
|
||||
extern s16 D_80126B3C;
|
||||
extern void func_80171A1C(u8 *a0);
|
||||
extern void func_8017C624(void *a0, s32 a1, s32 a2);
|
||||
|
||||
void func_8017DCC0(a0)
|
||||
u8 *a0;
|
||||
{
|
||||
s32 v;
|
||||
if (*(u16 *)(a0 + 0xB8) & 0x8000) {
|
||||
switch ((s16)(*(u16 *)&D_80126B3A - 2)) {
|
||||
case 0: v = 0; break;
|
||||
case 1: v = 1; break;
|
||||
case 2: v = 2; break;
|
||||
case 3: v = 3; break;
|
||||
case 4: v = 4; break;
|
||||
}
|
||||
D_80126B3C = v;
|
||||
func_8017C624(a0, -0x60, v);
|
||||
func_80171A1C(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */
|
||||
|
||||
|
||||
@@ -3611,7 +3611,21 @@ DEFINE_func_801805BC() /* dedup: shared engine-core @0x801805BC (src/shared) */
|
||||
|
||||
DEFINE_func_801805F8() /* dedup: shared engine-core @0x801805F8 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017EB7C", func_80180638);
|
||||
extern s32 func_80171990(u8 *a0);
|
||||
extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8);
|
||||
extern void func_80147324(s32 arg0);
|
||||
|
||||
void func_80180638(arg0)
|
||||
void *arg0;
|
||||
{
|
||||
if (*(u16 *)((s32)arg0 + 0xB8) & 0x4000) {
|
||||
*(s32 *)((s32)arg0 + 0x44) |= 0x20000;
|
||||
func_801466F0(0x16, (s32)arg0, 0, -0x80, -0x10, 0, 0, 0);
|
||||
func_80147324(0x7BC);
|
||||
func_80171990((u8 *)arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8014C088(s32 a0, s32 a1);
|
||||
extern s32 func_8014CB58(void);
|
||||
@@ -3871,7 +3885,38 @@ void func_80180C34(s32 p) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017EB7C", func_80180CF8);
|
||||
extern s32 func_80146E98(s32 a0);
|
||||
extern void func_80162CCC(void);
|
||||
|
||||
void func_80180CF8(arg0)
|
||||
s32 arg0;
|
||||
{
|
||||
s32 tbl;
|
||||
s32 obj;
|
||||
u16 t1;
|
||||
u16 t2;
|
||||
|
||||
tbl = *(s32 *)(arg0 + 0x4C);
|
||||
obj = *(s32 *)(arg0 + 0x20);
|
||||
if (func_80146E98(arg0) != 0) {
|
||||
t1 = *(u16 *)(obj + 0x1C) + 0x400;
|
||||
*(s16 *)(obj + 0x1C) = t1;
|
||||
*(s16 *)(obj + 0x18) = t1;
|
||||
if ((s16)t1 >= 0x7001) {
|
||||
*(s16 *)(obj + 0x1C) = 0x7000;
|
||||
*(s16 *)(obj + 0x18) = 0x7000;
|
||||
}
|
||||
t2 = *(u16 *)(obj + 0x1A) + 0x100;
|
||||
*(s16 *)(obj + 0x1A) = t2;
|
||||
if ((s16)t2 >= 0x7001) {
|
||||
*(s16 *)(obj + 0x1A) = 0x7000;
|
||||
}
|
||||
}
|
||||
if (*(u16 *)tbl != 0x16) {
|
||||
((void (*)(s32))func_80162CCC)(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4207,7 +4207,41 @@ void func_80188F28(s32 a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80185B44", func_80188F80);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80185B44", func_80188FB4);
|
||||
|
||||
|
||||
int func_80188FB4(int a0, void* a1)
|
||||
{
|
||||
s16 stack_buf[8];
|
||||
register s16 *s0 __asm__("$16") = (s16 *)a1;
|
||||
s16 v0;
|
||||
s32 result;
|
||||
s32 ret;
|
||||
|
||||
v0 = s0[2];
|
||||
stack_buf[0] = v0;
|
||||
v0 = s0[3];
|
||||
stack_buf[4] = v0;
|
||||
v0 = s0[5];
|
||||
stack_buf[5] = v0;
|
||||
stack_buf[1] = v0;
|
||||
v0 = s0[6];
|
||||
stack_buf[6] = v0;
|
||||
stack_buf[2] = v0;
|
||||
|
||||
result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);
|
||||
|
||||
if (result != 0) {
|
||||
ret = 1;
|
||||
} else {
|
||||
v0 = s0[7];
|
||||
stack_buf[6] = v0;
|
||||
stack_buf[2] = v0;
|
||||
result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);
|
||||
ret = (result != 0);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
extern s32 *D_80126B78;
|
||||
extern s32 *D_80126B90;
|
||||
@@ -4324,7 +4358,24 @@ DEFINE_func_801892E4() /* dedup: shared engine-core @0x801892E4 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80185B44", func_80189310);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80185B44", func_801893BC);
|
||||
extern int func_80178970(void);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
|
||||
void func_801893BC(a0)
|
||||
s32 a0;
|
||||
{
|
||||
if (func_8012BEE8(a0) == 0) {
|
||||
if ((*(s32 *)(a0 + 0x1C) & 3) == 0) {
|
||||
func_8012C658(0x2b4, 1, a0);
|
||||
}
|
||||
}
|
||||
if (*(s16 *)(a0 + 0x98) == 0) {
|
||||
func_80188C0C(a0);
|
||||
}
|
||||
((s32 (*)(s32))func_80178970)(a0);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8018942C() /* dedup: shared engine-core @0x8018942C (src/shared) */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user