feat(phase-30 S48-T6): propagate func_80187180 to its zero-crack siblings

This commit is contained in:
Drew T
2026-08-11 20:58:17 -06:00
parent 64c47c4f5e
commit 1bc5589588
7 changed files with 436 additions and 9 deletions
+60 -1
View File
@@ -7112,7 +7112,66 @@ void func_8017F6E8(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_8017FCF0);
extern s32 func_8012B8E4(s32 a0, s32 a1);
extern void func_8012B1B4(s32 a0, s32 a1);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */
void func_8017FCF0(s32 a0)
{
extern u8 D_80197498[];
extern s32 D_801974B4;
s16 pos1[4];
s16 pos2[4];
s32 s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF;
func_8012B1B4(a0, (s32)D_80197498);
{
s16 *p1 = pos1;
s16 *p2 = pos2;
s32 x, y, z;
x = *(u16 *)(a0 + 0x6);
p2[0] = x;
p1[0] = x;
y = *(u16 *)(a0 + 0xA);
p2[1] = y;
p1[1] = y;
z = *(u16 *)(a0 + 0xE);
p2[1] = y + 0x40;
p2[2] = z;
p1[2] = z;
s1 = func_8012CEB0((s32)p1, (s32)p2, 1);
}
if (s1 & 0x6000) {
if (!(s1 & 0x1000)) {
s1 = func_8012BCCC(a0);
if (s1 < 0x4001) {
if (func_8012BDBC(a0, 0x200) == 1) {
*(s16 *)(a0 + 0x2) = 4;
*(s16 *)(a0 + 0xFC) = 0;
*(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
}
}
}
}
if (s1 > 0x40000) {
*(s16 *)(a0 + 0x2) = 1;
}
if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_801974B4) & 0x1000) != 0) {
*(s16 *)(a0 + 0x2) = 0x12;
}
}
void func_8017FE24(s32 arg0) {
+68 -2
View File
@@ -4011,7 +4011,6 @@ extern s32 rand(void);
extern u8 D_801B1BC4[];
extern u8 D_801B2FF4[];
extern u8 D_801B1C98[];
extern u8 D_801B1C64[];
extern u8 D_801B9898[];
extern u8 D_801B1BF8[];
extern u8 D_801B1C04[];
@@ -4031,6 +4030,10 @@ extern u8 D_801B98DC;
void func_80181CE4(void *a0v)
{
/* [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_801B1C64[];
s32 e;
s32 r;
s32 o;
@@ -4484,11 +4487,74 @@ void func_80182490(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80182A98);
extern s32 func_8012B8E4(s32 a0, s32 a1);
extern void func_8012B1B4(s32 a0, s32 a1);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */
void func_80182A98(s32 a0)
{
extern u8 D_801B1C64[];
extern s32 D_801B1C80;
s16 pos1[4];
s16 pos2[4];
s32 s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF;
func_8012B1B4(a0, (s32)D_801B1C64);
{
s16 *p1 = pos1;
s16 *p2 = pos2;
s32 x, y, z;
x = *(u16 *)(a0 + 0x6);
p2[0] = x;
p1[0] = x;
y = *(u16 *)(a0 + 0xA);
p2[1] = y;
p1[1] = y;
z = *(u16 *)(a0 + 0xE);
p2[1] = y + 0x40;
p2[2] = z;
p1[2] = z;
s1 = func_8012CEB0((s32)p1, (s32)p2, 1);
}
if (s1 & 0x6000) {
if (!(s1 & 0x1000)) {
s1 = func_8012BCCC(a0);
if (s1 < 0x4001) {
if (func_8012BDBC(a0, 0x200) == 1) {
*(s16 *)(a0 + 0x2) = 4;
*(s16 *)(a0 + 0xFC) = 0;
*(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
}
}
}
}
if (s1 > 0x40000) {
*(s16 *)(a0 + 0x2) = 1;
}
if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_801B1C80) & 0x1000) != 0) {
*(s16 *)(a0 + 0x2) = 0x12;
}
}
#include "common.h"
void func_80182BCC(s32 arg0) {
/* [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_801B1C64[];
extern void func_8012C218(void *a0);
extern s32 func_8012CC64(s32 a0, void *a1);
extern s32 func_80133784(s32 a0, void *a1, s32 a2);
+60 -1
View File
@@ -3233,5 +3233,64 @@ void func_801833A4(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80182BF8", func_801839AC);
extern s32 func_8012B8E4(s32 a0, s32 a1);
extern void func_8012B1B4(s32 a0, s32 a1);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */
void func_801839AC(s32 a0)
{
extern u8 D_801A8B40[];
extern s32 D_801A8B5C;
s16 pos1[4];
s16 pos2[4];
s32 s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF;
func_8012B1B4(a0, (s32)D_801A8B40);
{
s16 *p1 = pos1;
s16 *p2 = pos2;
s32 x, y, z;
x = *(u16 *)(a0 + 0x6);
p2[0] = x;
p1[0] = x;
y = *(u16 *)(a0 + 0xA);
p2[1] = y;
p1[1] = y;
z = *(u16 *)(a0 + 0xE);
p2[1] = y + 0x40;
p2[2] = z;
p1[2] = z;
s1 = func_8012CEB0((s32)p1, (s32)p2, 1);
}
if (s1 & 0x6000) {
if (!(s1 & 0x1000)) {
s1 = func_8012BCCC(a0);
if (s1 < 0x4001) {
if (func_8012BDBC(a0, 0x200) == 1) {
*(s16 *)(a0 + 0x2) = 4;
*(s16 *)(a0 + 0xFC) = 0;
*(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
}
}
}
}
if (s1 > 0x40000) {
*(s16 *)(a0 + 0x2) = 1;
}
if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_801A8B5C) & 0x1000) != 0) {
*(s16 *)(a0 + 0x2) = 0x12;
}
}
+60 -1
View File
@@ -5652,7 +5652,66 @@ void func_80181128(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80181730);
extern s32 func_8012B8E4(s32 a0, s32 a1);
extern void func_8012B1B4(s32 a0, s32 a1);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */
void func_80181730(s32 a0)
{
extern u8 D_8019F28C[];
extern s32 D_8019F2A8;
s16 pos1[4];
s16 pos2[4];
s32 s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF;
func_8012B1B4(a0, (s32)D_8019F28C);
{
s16 *p1 = pos1;
s16 *p2 = pos2;
s32 x, y, z;
x = *(u16 *)(a0 + 0x6);
p2[0] = x;
p1[0] = x;
y = *(u16 *)(a0 + 0xA);
p2[1] = y;
p1[1] = y;
z = *(u16 *)(a0 + 0xE);
p2[1] = y + 0x40;
p2[2] = z;
p1[2] = z;
s1 = func_8012CEB0((s32)p1, (s32)p2, 1);
}
if (s1 & 0x6000) {
if (!(s1 & 0x1000)) {
s1 = func_8012BCCC(a0);
if (s1 < 0x4001) {
if (func_8012BDBC(a0, 0x200) == 1) {
*(s16 *)(a0 + 0x2) = 4;
*(s16 *)(a0 + 0xFC) = 0;
*(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
}
}
}
}
if (s1 > 0x40000) {
*(s16 *)(a0 + 0x2) = 1;
}
if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_8019F2A8) & 0x1000) != 0) {
*(s16 *)(a0 + 0x2) = 0x12;
}
}
#include "common.h"
+60 -1
View File
@@ -3273,7 +3273,66 @@ void func_8018242C(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_80182A34);
extern s32 func_8012B8E4(s32 a0, s32 a1);
extern void func_8012B1B4(s32 a0, s32 a1);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */
void func_80182A34(s32 a0)
{
extern u8 D_801C368C[];
extern s32 D_801C36A8;
s16 pos1[4];
s16 pos2[4];
s32 s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF;
func_8012B1B4(a0, (s32)D_801C368C);
{
s16 *p1 = pos1;
s16 *p2 = pos2;
s32 x, y, z;
x = *(u16 *)(a0 + 0x6);
p2[0] = x;
p1[0] = x;
y = *(u16 *)(a0 + 0xA);
p2[1] = y;
p1[1] = y;
z = *(u16 *)(a0 + 0xE);
p2[1] = y + 0x40;
p2[2] = z;
p1[2] = z;
s1 = func_8012CEB0((s32)p1, (s32)p2, 1);
}
if (s1 & 0x6000) {
if (!(s1 & 0x1000)) {
s1 = func_8012BCCC(a0);
if (s1 < 0x4001) {
if (func_8012BDBC(a0, 0x200) == 1) {
*(s16 *)(a0 + 0x2) = 4;
*(s16 *)(a0 + 0xFC) = 0;
*(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
}
}
}
}
if (s1 > 0x40000) {
*(s16 *)(a0 + 0x2) = 1;
}
if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_801C36A8) & 0x1000) != 0) {
*(s16 *)(a0 + 0x2) = 0x12;
}
}
#include "common.h"
+60 -1
View File
@@ -3305,7 +3305,66 @@ void func_80186B78(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187180);
extern s32 func_8012B8E4(s32 a0, s32 a1);
extern void func_8012B1B4(s32 a0, s32 a1);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */
void func_80187180(s32 a0)
{
extern u8 D_801C6FA8[];
extern s32 D_801C6FC4;
s16 pos1[4];
s16 pos2[4];
s32 s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF;
func_8012B1B4(a0, (s32)D_801C6FA8);
{
s16 *p1 = pos1;
s16 *p2 = pos2;
s32 x, y, z;
x = *(u16 *)(a0 + 0x6);
p2[0] = x;
p1[0] = x;
y = *(u16 *)(a0 + 0xA);
p2[1] = y;
p1[1] = y;
z = *(u16 *)(a0 + 0xE);
p2[1] = y + 0x40;
p2[2] = z;
p1[2] = z;
s1 = func_8012CEB0((s32)p1, (s32)p2, 1);
}
if (s1 & 0x6000) {
if (!(s1 & 0x1000)) {
s1 = func_8012BCCC(a0);
if (s1 < 0x4001) {
if (func_8012BDBC(a0, 0x200) == 1) {
*(s16 *)(a0 + 0x2) = 4;
*(s16 *)(a0 + 0xFC) = 0;
*(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
}
}
}
}
if (s1 > 0x40000) {
*(s16 *)(a0 + 0x2) = 1;
}
if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_801C6FC4) & 0x1000) != 0) {
*(s16 *)(a0 + 0x2) = 0x12;
}
}
#include "common.h"
+68 -2
View File
@@ -2753,7 +2753,6 @@ extern s32 rand(void);
extern u8 D_8019AE04[];
extern u8 D_8019C234[];
extern u8 D_8019AED8[];
extern u8 D_8019AEA4[];
extern u8 D_8019F038[];
extern u8 D_8019AE38[];
extern u8 D_8019AE44[];
@@ -2773,6 +2772,10 @@ extern u8 D_8019F07C;
void func_8017F210(void *a0v)
{
/* [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_8019AEA4[];
s32 e;
s32 r;
s32 o;
@@ -3226,12 +3229,75 @@ void func_8017F9BC(s32 a0)
}
INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_8017FFC4);
extern s32 func_8012B8E4(s32 a0, s32 a1);
extern void func_8012B1B4(s32 a0, s32 a1);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern s32 func_8012BCCC(s32 a0);
extern s32 func_8012BDBC(s32 a0, s32 a1);
extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */
void func_8017FFC4(s32 a0)
{
extern u8 D_8019AEA4[];
extern s32 D_8019AEC0;
s16 pos1[4];
s16 pos2[4];
s32 s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF;
func_8012B1B4(a0, (s32)D_8019AEA4);
{
s16 *p1 = pos1;
s16 *p2 = pos2;
s32 x, y, z;
x = *(u16 *)(a0 + 0x6);
p2[0] = x;
p1[0] = x;
y = *(u16 *)(a0 + 0xA);
p2[1] = y;
p1[1] = y;
z = *(u16 *)(a0 + 0xE);
p2[1] = y + 0x40;
p2[2] = z;
p1[2] = z;
s1 = func_8012CEB0((s32)p1, (s32)p2, 1);
}
if (s1 & 0x6000) {
if (!(s1 & 0x1000)) {
s1 = func_8012BCCC(a0);
if (s1 < 0x4001) {
if (func_8012BDBC(a0, 0x200) == 1) {
*(s16 *)(a0 + 0x2) = 4;
*(s16 *)(a0 + 0xFC) = 0;
*(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA);
}
}
}
}
if (s1 > 0x40000) {
*(s16 *)(a0 + 0x2) = 1;
}
if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_8019AEC0) & 0x1000) != 0) {
*(s16 *)(a0 + 0x2) = 0x12;
}
}
#include "common.h"
void func_801800F8(s32 arg0) {
/* [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_8019AEA4[];
extern void func_8012C218(void *a0);
extern s32 func_8012CC64(s32 a0, void *a1);
extern s32 func_80133784(s32 a0, void *a1, s32 a2);