mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 22:45:39 -04:00
feat(decomp): family-remap gate — +11 fns x0 propagated (fleet 98.8%)
This commit is contained in:
@@ -3315,7 +3315,14 @@ DEFINE_func_8017BEAC() /* dedup: shared engine-core @0x8017BEAC (src/shared) */
|
||||
|
||||
DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017BEBC);
|
||||
|
||||
extern void func_80174684(void *);
|
||||
extern void func_8017BEE4(void *);
|
||||
|
||||
void func_8017BEBC(void) {
|
||||
func_80174684((void *)func_8017BEE4);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018D354[])(void);
|
||||
|
||||
@@ -3017,7 +3017,42 @@ void func_80183C58(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80183830", func_80183C94);
|
||||
|
||||
|
||||
void func_80183C94(s32 param_1)
|
||||
{
|
||||
extern u8 D_8018E8A8[];
|
||||
extern s32 func_80184214(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4);
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern s32 func_80029178(s32 a0);
|
||||
s32 v0;
|
||||
s32 p;
|
||||
|
||||
v0 = func_80184214(param_1, (s32)D_8018E8A8, 0x300, 0x140, 0x88);
|
||||
*(s32 *)((s32)param_1 + 0xCC) = v0;
|
||||
if (v0 == 0) {
|
||||
goto fail;
|
||||
}
|
||||
v0 = func_80184214(param_1, (s32)D_8018E8A8, 0x310, 0x140, 0x89);
|
||||
*(s32 *)((s32)param_1 + 0xD0) = v0;
|
||||
if (v0 == 0) {
|
||||
func_80016714((void *)*(s32 *)((s32)param_1 + 0xCC), 0x38);
|
||||
fail:
|
||||
func_8012CAE4((void *)param_1);
|
||||
return;
|
||||
}
|
||||
p = *(s32 *)((s32)param_1 + 0x68);
|
||||
*(u16 *)(*(s32 *)((s32)param_1 + 0xCC) + 0x12) = *(u16 *)(p + 0xC);
|
||||
p = *(s32 *)((s32)param_1 + 0x68);
|
||||
*(u16 *)(*(s32 *)((s32)param_1 + 0xD0) + 0x12) = *(u16 *)(p + 0xC);
|
||||
if ((func_80029178(0xB8) & 0xFF) == 0) {
|
||||
*(s16 *)((s32)param_1 + 2) = 1;
|
||||
} else {
|
||||
*(s16 *)((s32)param_1 + 2) = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -3231,7 +3266,27 @@ s32 func_80184214(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80183830", func_801842DC);
|
||||
|
||||
|
||||
extern s32 D_801D4358;
|
||||
extern s32 D_801D435C;
|
||||
|
||||
void func_801842DC(s32 arg0) {
|
||||
s16 *a;
|
||||
s16 *b;
|
||||
s32 t;
|
||||
|
||||
a = (s16 *) D_801D4358;
|
||||
*(s32 *) (arg0 + 0x48) = a[0];
|
||||
*(s32 *) (arg0 + 0x4C) = a[1];
|
||||
t = a[2];
|
||||
b = (s16 *) D_801D435C;
|
||||
*(s32 *) (arg0 + 0x50) = t;
|
||||
*(s32 *) (arg0 + 0x3C) = b[0];
|
||||
*(s32 *) (arg0 + 0x40) = b[1];
|
||||
*(s32 *) (arg0 + 0x44) = b[2];
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801D4358;
|
||||
extern s32 D_801D435C;
|
||||
@@ -3269,9 +3324,67 @@ void func_8018446C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80183830", func_801844A8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80183830", func_80184540);
|
||||
|
||||
extern s32 func_8012C51C(void *a0, s32 a1);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern s32 func_80178B18(s32 a0, s32 a1);
|
||||
|
||||
void func_801844A8(void *param_1)
|
||||
{
|
||||
/* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every
|
||||
LATER function in this TU, which blocks a byte-true decl of a different type.
|
||||
Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */
|
||||
extern u8 D_8018EC18[];
|
||||
extern void (*D_8018EC98[])(void);
|
||||
s32 s0;
|
||||
s32 v0;
|
||||
|
||||
s0 = (s32)param_1;
|
||||
v0 = func_8012C51C(D_8018EC18, (s32)param_1);
|
||||
*(s32 *)(s0 + 0xCC) = v0;
|
||||
if (v0 != 0) {
|
||||
v0 = func_8012C51C(&D_8018EC18[0x14], (s32)param_1);
|
||||
*(s32 *)(s0 + 0xD0) = v0;
|
||||
if (v0 != 0) {
|
||||
goto success;
|
||||
}
|
||||
func_8012C218((void *)*(s32 *)(s0 + 0xCC));
|
||||
}
|
||||
func_8012CAE4(param_1);
|
||||
return;
|
||||
success:
|
||||
func_80178B18((s32)param_1, (s32)D_8018EC98);
|
||||
*(u16 *)(s0 + 2) += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
extern s32 func_801789AC(s32 arg0);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_8012A568(void (*a0)(void));
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_800D0C48(s32 a0);
|
||||
extern void func_8002AC00(s32 a0);
|
||||
extern void func_80181A64(void);
|
||||
|
||||
void func_80184540(s32 a0) {
|
||||
s32 s0 = a0;
|
||||
s32 v0 = func_801789AC(a0);
|
||||
if (v0 == 1) {
|
||||
((void (*)(s32))func_80178D18)(s0);
|
||||
func_8012A568(&func_80181A64);
|
||||
func_8012C218((void *)*(s32 *)(s0 + 0xCC));
|
||||
func_8012C218((void *)*(s32 *)(s0 + 0xD0));
|
||||
func_800D0C48(1);
|
||||
*(s32 *)(s0 + 0x1C) = 0x1F;
|
||||
*(s16 *)(s0 + 2) = *(s16 *)(s0 + 2) + 1;
|
||||
func_8002AC00(0x1B);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern int func_8001AAA0(void);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
@@ -3440,7 +3553,12 @@ __asm__ __volatile__("" ::: "memory");
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80183830", func_8018490C);
|
||||
|
||||
void func_8018490C(s32 arg0) {
|
||||
*(s32 *)((u8 *)*(s32 **)(arg0 + 0xCC) + 0xE0) &= 0xDFFFFFFF;
|
||||
*(s32 *)((u8 *)*(s32 **)(arg0 + 0xD0) + 0xE0) &= 0xDFFFFFFF;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018EF74[])(void);
|
||||
@@ -3450,7 +3568,34 @@ void func_80184940(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80183830", func_8018497C);
|
||||
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern s32 func_8012A828(void*, void*);
|
||||
extern void func_80143994(s32 a0, s32 a1);
|
||||
|
||||
extern void (*D_8018EF44[])(void);
|
||||
extern void (*D_8018EF4C[])(void);
|
||||
|
||||
void func_8018497C(void *a0)
|
||||
{
|
||||
s32 v0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
func_8001C214(v0, D_8018EF44[*(u16 *)((s32)a0 + 0x70) & 0xF]);
|
||||
((void (*)(void *, void *))func_8012A828)(a0, D_8018EF4C[*(u16 *)((s32)a0 + 0x70) & 0xF]);
|
||||
func_80143994((s32)a0, 0x2000);
|
||||
*(u16 *)((s32)a0 + 2) = 1;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -2856,7 +2856,16 @@ extern void func_801830C4(void *a0);
|
||||
/* ==== end §8b carried decl layer ==== */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_80183178);
|
||||
|
||||
|
||||
extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10);
|
||||
extern u8 D_800AF058;
|
||||
s32 func_80183178(void) {
|
||||
s32 ret;
|
||||
ret = func_8001ABBC(0, 0, &D_800AF058, 0, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_801831D0);
|
||||
|
||||
@@ -2882,10 +2891,104 @@ void func_80183280(Ent_80183280 *arg) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_801832E0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_801833C4);
|
||||
|
||||
void func_801833C4(s32 arg0)
|
||||
{
|
||||
extern u8 D_801D47E0[];
|
||||
extern u8 D_801B5D38[];
|
||||
extern u8 D_801B86B4[];
|
||||
extern s32 D_801270C8;
|
||||
|
||||
typedef struct {
|
||||
u8 pad0[2];
|
||||
union { s16 s; u16 u; } f02;
|
||||
u8 pad1[0xD8];
|
||||
union { s16 s; u16 u; } fDC;
|
||||
u8 pad2[4];
|
||||
s16 fE2;
|
||||
u8 pad3[2];
|
||||
s16 fE6;
|
||||
u8 pad4[4];
|
||||
u16 fEC;
|
||||
u16 fEE;
|
||||
} St;
|
||||
|
||||
#define P ((St *)arg0)
|
||||
|
||||
func_80180A64(D_801D47E0, D_801B5D38, P->fDC.s, P->fE2);
|
||||
func_80180A64(D_801D47E0, D_801B86B4, P->fDC.s, P->fE6);
|
||||
P->fDC.u = P->fDC.u + 8;
|
||||
if (D_801270C8 != 0) {
|
||||
func_8002D4C8(0x77B, 0);
|
||||
P->fEC = 1;
|
||||
P->fEE = 0x3C;
|
||||
P->f02.u++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_801834DC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_80183634);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_o0d", func_801837B0);
|
||||
extern s32 D_801D47E0;
|
||||
extern s32 D_801B5D38;
|
||||
extern s32 D_801B86B4;
|
||||
extern s32 D_801270C8;
|
||||
extern void func_8013373C(s32 a0);
|
||||
|
||||
typedef struct {
|
||||
u8 pad0[2];
|
||||
u16 f002;
|
||||
u8 pad1[0xD8];
|
||||
struct {
|
||||
s16 f0DC;
|
||||
u16 f0DE;
|
||||
union {
|
||||
struct { s32 f0E0; s32 f0E4; } l;
|
||||
struct { u8 p[2]; s16 f0E2; u8 q[2]; s16 f0E6; } h;
|
||||
} u;
|
||||
u16 f0E8;
|
||||
} f;
|
||||
} Work_80183634;
|
||||
|
||||
void func_80183634(Work_80183634 *work)
|
||||
{
|
||||
func_80180A64(&D_801D47E0, &D_801B5D38, work->f.f0DC, work->f.u.h.f0E2);
|
||||
func_80180A64(&D_801D47E0, &D_801B86B4, work->f.f0DC, work->f.u.h.f0E6);
|
||||
work->f.u.l.f0E0 = work->f.u.l.f0E0 + -0x252E5;
|
||||
work->f.u.l.f0E4 = work->f.u.l.f0E4 + 0x168D6;
|
||||
work->f.f0DC = work->f.f0DC + 0xC;
|
||||
if ((s16)(++work->f.f0E8) >= 0x6A) {
|
||||
func_8002D4C8(4, 0x77B);
|
||||
D_801270C8 = 2;
|
||||
func_8013373C(0);
|
||||
++work->f002;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void func_801837B0(s32 arg0)
|
||||
{
|
||||
typedef struct {
|
||||
u8 _[0xDC];
|
||||
s16 fDC;
|
||||
u8 _2[4];
|
||||
s16 fE2;
|
||||
} Args_801837B0;
|
||||
typedef struct {
|
||||
u8 _[0xDC];
|
||||
u16 fDC;
|
||||
} Rmw_801837B0;
|
||||
|
||||
extern s32 D_801D47E0;
|
||||
extern s32 D_801B5D38;
|
||||
extern void func_80180A64(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
||||
|
||||
func_80180A64(&D_801D47E0, &D_801B5D38,
|
||||
((Args_801837B0 *)arg0)->fDC,
|
||||
((Args_801837B0 *)arg0)->fE2);
|
||||
((Rmw_801837B0 *)arg0)->fDC += 7;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user