mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-30 07:31:59 -04:00
revert(revert): restore ov_SC04_011/func_80182DCC — it was NEVER a false bank
Reverts commit:3475. The bank is byte-identical; MY VERIFICATION WAS BROKEN.
A jtbl bank changes CARVE CONFIG (JTBL_PADS in config/overlays.mk + the splat
yaml). Those are splat INPUTS: asm/ and the linker script are regenerated FROM
them. I checked the binary with `make build` alone, so the build linked
newly-carved C against STALE extracted state and produced a mismatched SHA. That
is the R22 corollary ("a reverted config needs a make extract, not just a make
check") pointed the other way — a LANDED config change needs one too.
Proof, run on both binaries:
make extract BINARY=ov_SC06_025 && make build -> BYTE-IDENTICAL
make extract BINARY=ov_SC04_011 && make build -> BYTE-IDENTICAL
So: R40 against myself. I attributed the failure to the subject (the bank) when
the instrument (a build over stale extract state) was at fault — after writing
"it may not even be false" into the checkpoint and reverting without testing it.
The first revert also cost real work: it discarded a legitimate 96-line match.
STANDING FIX: a per-binary verify after any gate that touched config/ MUST be
`make extract BINARY=<b> && make build BINARY=<b>`. Build-only is a valid check
ONLY when the gate changed nothing under config/.
This commit is contained in:
+1
-1
@@ -3357,7 +3357,7 @@ build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o: JTBL_PADS := 0,0,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x40,+0x58
|
||||
build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o: JTBL_PADS := 0,0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x40,+0x58,+0x70
|
||||
build/src/ov_SC04_011/ov_SC04_011_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC04_011_CHECK_SHA := config/check.ov_SC04_011.sha
|
||||
ov_SC04_011_SYMBOLS := config/symbols.ov_SC04_011.txt
|
||||
|
||||
@@ -164,7 +164,7 @@ segments:
|
||||
- [0xc565c, .rodata, ov_SC04_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc5670, data, tail18]
|
||||
- [0xc57a8, .rodata, ov_SC04_011_jr_8017D494] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc5814, data, tail19]
|
||||
- [0xc5838, data, tail19]
|
||||
- [0xC9554, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0xC9557] # EOF marker = the 0.4.dec byte length
|
||||
# @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes
|
||||
|
||||
@@ -6333,7 +6333,101 @@ void func_80182D34(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80182DCC);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8018637C(s32 arg0, s32 arg1);
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern int func_80178970(void);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_8012BEE8(u8 *a0);
|
||||
extern void func_801439C0();
|
||||
extern void func_8018B5E4(s32 a0);
|
||||
extern void func_8018B1B4(s32 arg0);
|
||||
extern void func_8018B744(s32 *a0);
|
||||
extern void func_8018B2F8(s32 *a0, s32 a1);
|
||||
extern void func_80185D04(s32 a0);
|
||||
extern void func_80186D58(s32 a0);
|
||||
extern s32 func_80186DCC(s32 a0);
|
||||
extern s32 D_80194554;
|
||||
extern s32 D_80194558;
|
||||
extern s8 D_801945A4;
|
||||
extern s32 D_801EFD18;
|
||||
|
||||
void func_80182DCC(s32 a0) {
|
||||
/* §183: the TU spells D_801EFC4C as a file-scope `s32[]` rename (aFC4C) and as a
|
||||
* block-scope scalar elsewhere; keep the scalar spelling LOCAL so it cannot collide
|
||||
* with the later block-scope `extern s32 D_801EFC4C[];` in this same TU. */
|
||||
extern s32 D_801EFC4C;
|
||||
s32 v0;
|
||||
|
||||
switch (*(u16 *)(a0 + 0x34)) {
|
||||
case 0:
|
||||
if (*(s16 *)(a0 + 0x98) != 0) {
|
||||
break;
|
||||
}
|
||||
v0 = (s32)(*(s16 *)(a0 + 0xE2)) * 12;
|
||||
func_8018637C(a0, *(s32 *)((s32)&D_80194554 + v0));
|
||||
*(s16 *)(a0 + 0xF2) = 0;
|
||||
*(s16 *)(a0 + 0x10A) = 0;
|
||||
func_80178B18(a0, (s32)&D_801945A4);
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
break;
|
||||
case 1:
|
||||
*(s16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x6) + (func_8004787C(*(s16 *)(a0 + 0xF2)) >> 9);
|
||||
*(u16 *)(a0 + 0xF2) = *(u16 *)(a0 + 0xF2) + 0x400;
|
||||
if (*(s16 *)(a0 + 0x98) != 0) {
|
||||
break;
|
||||
}
|
||||
v0 = (s32)(*(s16 *)(a0 + 0xE2)) * 12;
|
||||
func_8018637C(a0, *(s32 *)((s32)&D_80194558 + v0));
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
func_8018B5E4((s32)&D_801EFC4C);
|
||||
break;
|
||||
case 2:
|
||||
if (*(s16 *)(a0 + 0x98) == 0) {
|
||||
func_80185D04(0);
|
||||
*(s32 *)(a0 + 0x1C) = 0x10;
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
}
|
||||
func_8018B744(&D_801EFC4C);
|
||||
break;
|
||||
case 3:
|
||||
if (((s32 (*)(s32))func_8012BEE8)(a0) != 0) {
|
||||
func_8018B1B4((s32)&D_801EFC4C);
|
||||
*(s32 *)(a0 + 0x1C) = 0x38;
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
}
|
||||
func_8018B744(&D_801EFC4C);
|
||||
break;
|
||||
case 4:
|
||||
func_8018B2F8(&D_801EFC4C, 0);
|
||||
func_8018B744(&D_801EFC4C);
|
||||
if (((s32 (*)(s32))func_8012BEE8)(a0) != 0) {
|
||||
*(s16 *)(a0 + 0x10A) = 1;
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (*(s16 *)(a0 + 0x10A) == 0) {
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
func_80186D58(a0);
|
||||
if (func_80186DCC(a0) != 0) {
|
||||
if (D_801EFD18 != 0) {
|
||||
func_801439C0(D_801EFD18);
|
||||
D_801EFD18 = 0;
|
||||
}
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
break;
|
||||
}
|
||||
((void (*)(s32))func_80178970)(a0);
|
||||
}
|
||||
|
||||
|
||||
s32 func_80183008(void) {
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user