feat(decomp): parallel gate — 71 fns across 47 binaries (10 workers)

ov_SC02_028    func_8018754C
  ov_SC02_005    func_8018BFBC
  ov_SC02_026    func_8017F390 func_8017F538
  ov_SC02_035    func_801803A4
  ov_SC03_015    func_8017DD7C
  ov_SC02_031    func_80181AE0
  ov_SC03_023    func_8017DAD0
  ov_SC03_093    func_8017F768
  ov_SC03_095    func_8017DD30
  ov_SC03_029    func_80187118
  ov_SC03_089    func_80184A08 func_8018545C
  ov_SC03_091    func_80184B28 func_8018558C func_80187954
  ov_SC03_096    func_8017EDAC func_8017F308
  ov_SC03_090    func_80183C3C func_80184958 func_80186AAC func_8018AA88
  ov_SC03_024    func_8017DD7C
  ov_SC03_100    func_80180E18
  ov_SC03_104    func_80181AD0 func_80181CA8 func_80181EA0 func_801827EC
  ov_SC03_112    func_8018172C
  ov_SC03_110    func_8017FB14 func_80180AF0
  ov_SC03_108    func_8017F788 func_8017FD08
  ov_SC03_101    func_801807F4 func_80181374
  ov_SC03_097    func_80180294 func_801803FC
  ov_SC03_115    func_8017E998 func_8017EFB8
  ov_SC03_124    func_801836B8
  ov_SC03_119    func_8017DD7C
  ov_SC03_114    func_8017D740
  ov_SC03_125    func_80180230
  ov_SC03_118    func_8017DD7C
  ov_SC04_007    func_8017F01C
  ov_SC04_010    func_8017D6C4
  ov_SC04_020    func_8017FAD4
  ov_SC04_005    func_8017F5E0
  ov_SC04_019    func_8018B2B8 func_8018B400
  ov_SC05_001    func_80184028 func_80184430
  ov_SC05_006    func_8017F16C
  ov_SC05_004    func_8017F188
  ov_SC05_010    func_80187B80
  ov_SC05_007    func_8017F568
  ov_SC06_000    func_8017DD7C
  ov_SC06_024    func_80186CF0
  ov_SC06_020    func_801808F4 func_8018348C func_801834F0
  ov_SC06_018    func_80188234 func_8018931C
  ov_SC06_022    func_8017F9FC func_801809D4 func_80184818 func_80187414
  ov_SC06_033    func_80187E08
  ov_SC07_002    func_8018672C
  ov_SC07_009    func_8017CFC0
  ov_SC06_030    func_8017DE08
This commit is contained in:
Drew T
2026-08-29 18:57:37 -06:00
parent e9449ef0fe
commit 375238f6df
54 changed files with 1479 additions and 87 deletions
+6 -1
View File
@@ -9380,7 +9380,12 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018BFBC);
void func_8018BFBC(s32 a0) {
func_8012AD44((s32 *)a0, 4);
}
extern void func_8012AD44(s32 *a0, s16 a1);
void func_8018BFDC(u8 *a0) {
+40 -2
View File
@@ -4666,7 +4666,28 @@ void func_8017F17C(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F390);
extern s32 func_8012D624(void *a0, s32 a1, s32 a2);
extern u16 D_80126B96;
extern s16 D_80126B9A;
s32 aF801869C0(s32 param_1) __asm__("func_8017F390");
s32 aF801869C0(s32 param_1) {
s32 p;
u16 val;
if (func_8012D624(param_1, (*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x18) * 3) >> 9, 0x21) == 1) {
p = *(s32 *)(param_1 + 0x20);
val = *(u16 *)(p + 0x12);
D_80126B96 = 0x4002;
D_80126B9A = val;
return 1;
}
return 0;
}
extern void func_8017F440();
@@ -4722,7 +4743,24 @@ void func_8017F47C(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180", func_8017F538);
void func_8017F538(s32 a0, s32 a1)
{
typedef struct { s32 w[8]; } Blk32_8017F76C_80186D9C;
extern Blk32_8017F76C_80186D9C D_800AE620;
Blk32_8017F76C_80186D9C mtx;
s32 vel[3];
mtx = D_800AE620;
vel[1] = 0;
vel[0] = 0;
vel[2] = a1;
RotMatrixY(*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12), &mtx);
func_800484EC((s32)&mtx, (s32)&vel[0], a0 + 0x10);
}
extern s32 func_8012BD14(s32 a0);
extern void func_8002D59C(s32 a0, u16 a1, s32 a2);
+18 -1
View File
@@ -4476,7 +4476,24 @@ void func_80187490(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_80184BD8", func_8018754C);
void func_8018754C(s32 a0, s32 a1)
{
typedef struct { s32 w[8]; } Blk32_8017F76C_80186D9C;
extern Blk32_8017F76C_80186D9C D_800AE620;
Blk32_8017F76C_80186D9C mtx;
s32 vel[3];
mtx = D_800AE620;
vel[1] = 0;
vel[0] = 0;
vel[2] = a1;
RotMatrixY(*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12), &mtx);
func_800484EC((s32)&mtx, (s32)&vel[0], a0 + 0x10);
}
extern s32 func_8012BD14(s32 a0);
extern void func_8002D59C(s32 a0, u16 a1, s32 a2);
+25 -1
View File
@@ -6993,7 +6993,31 @@ void func_80181A44(void) {
}
INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80181AE0);
typedef struct { s32 w[8]; } Copy32;
extern s16 D_80126CB4;
s32 func_80181AE0(void *arg0, s32 arg1) {
void *p;
s32 best;
s32 lim;
s32 w;
s32 val;
best = 0xFFFF;
p = arg0;
while (*(s16 *)((u8 *)p + 6) == 0) {
lim = (s16)arg1;
w = func_80013294(&D_80126CB4, p);
val = w & 0xFFFF;
if (val < lim && (u32)val < (u32)(u16)best) {
best = w;
}
p = (u8 *)p + 8;
}
return best & 0xFFFF;
}
extern void (*D_80188E08[])(void);
+20 -1
View File
@@ -5253,7 +5253,26 @@ void func_8018023C(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017BEBC", func_801803A4);
extern u8 D_801202A0[];
s32 func_801803A4(void) {
s32 count = 0;
s32 i = 0;
u8 *p = D_801202A0;
do {
if (*(u16 *)p == 0x17F && (*(u16 *)(p + 0x70) & 0xF) == 0) {
count++;
}
i++;
p += 0x10C;
} while (i < 0x60);
return count < 0xB;
}
extern u8 *func_801290DC(s32 a0, u8 *a1);
+14 -1
View File
@@ -4735,7 +4735,20 @@ u8 *a0;
DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017DD7C);
extern s32 func_8013767C(s32 a0);
extern void func_80171A1C(u8 *a0);
extern s32 D_8012750C;
extern s32 D_80126B58;
extern s32 D_80126CF0;
void func_8017DD7C(void) {
s32 v0;
v0 = func_8013767C(D_8012750C);
D_80126CF0 = v0;
func_80171A1C((u8 *)&D_80126B58);
}
DEFINE_func_8017DDBC() /* dedup: shared engine-core @0x8017DDBC (src/shared) */
+25 -1
View File
@@ -4261,7 +4261,31 @@ void func_8017DA54(void) {
}
INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8017AE2C", func_8017DAD0);
extern void func_8012A018(s32 a0, s32 a1);
extern void func_8017DB48(void *a0);
void func_8017DAD0(void) {
extern s32 D_80126954;
extern s32 D_8012695C;
extern s16 D_80126968;
extern s16 D_8012696A;
extern s16 D_8012696C;
extern s16 D_80126976;
extern s16 D_80126978;
extern s16 D_8012697A;
D_80126954 = 0x1F4;
D_8012695C = 0x5dc;
D_80126968 = 0x238;
D_8012696A = 0x800;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = 0;
D_8012697A = 0;
func_8012A018((s32)func_8017DB48, 0);
}
extern void (*D_801829EC[])(void);
+14 -1
View File
@@ -4740,7 +4740,20 @@ u8 *a0;
DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017DD7C);
extern s32 func_8013767C(s32 a0);
extern void func_80171A1C(u8 *a0);
extern s32 D_8012750C;
extern s32 D_80126B58;
extern s32 D_80126CF0;
void func_8017DD7C(void) {
s32 v0;
v0 = func_8013767C(D_8012750C);
D_80126CF0 = v0;
func_80171A1C((u8 *)&D_80126B58);
}
DEFINE_func_8017DDBC() /* dedup: shared engine-core @0x8017DDBC (src/shared) */
+53 -2
View File
@@ -7143,7 +7143,7 @@ extern s32 func_80186DD4(s32 a0);
extern void func_80186ECC(s32 a0, s32 a1);
extern void func_80186F60(s32 a0);
extern s32 func_801870B8(s32 a0);
extern s32 func_80187118(s32 a0, s32 a1);
extern s32 func_80187118();
void func_801860C0(s32 obj) {
s32 d;
@@ -7823,7 +7823,58 @@ s32 func_801870B8(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017FF7C", func_80187118);
typedef struct { s16 vx; u16 vy; s16 vz, pad; } SVec_8017F67C_801869CC;
/* match_one's standalone common.h does not reach src/shared/engine_types.h, where the
* real TU's Blk20 { s32 w[8]; } and Vec32 { s32 vx, vy, vz, pad; } live. Local copies here;
* integrator may drop these and reuse the TU's own (engine_types.h:472, :1098). */
typedef struct { s32 w[8]; } Blk20_80188AF4;
typedef struct { s32 vx, vy, vz, pad; } Vec32_80188AF4;
s32 func_80187118(s32 a0, s32 a1)
{
extern s32 func_8012B864(s32 a0);
extern void RotMatrixY(s32 a0, void *a1);
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern struct Mtx32_80184008 D_800AE620;
u32 pos[3];
Vec32_80188AF4 out;
u8 rotIn[8];
u8 rotOut[8];
Blk20_80188AF4 m;
m = (*(Blk20_80188AF4 *)&(*(Mtx8_8017DE10_8017E710 *)&D_800AE620));
RotMatrixY(func_8012B864(a0), &m);
func_800484EC((s32)&m, a1, (s32)&out);
pos[0] = *(s32 *)(a0 + 0x4) + out.vx;
pos[1] = *(s32 *)(a0 + 0x8) + out.vy;
pos[2] = *(s32 *)(a0 + 0xC) + out.vz;
{
register u16 rix __asm__("$2");
register u16 roy __asm__("$3");
register u16 roz __asm__("$7");
register u16 riz __asm__("$8");
rix = *(u16 *)(a0 + 0x3A);
roy = *((u16 *)&pos[1] + 1);
roz = *((u16 *)&pos[2] + 1);
*(u16 *)(rotIn + 0) = rix;
*(u16 *)(rotIn + 2) = *(u16 *)(a0 + 0x3E);
riz = *(u16 *)(a0 + 0x42);
*(u16 *)(rotOut + 0) = *((u16 *)&pos[0] + 1);
*(u16 *)(rotOut + 2) = roy;
*(u16 *)(rotOut + 4) = roz;
*(u16 *)(rotIn + 4) = riz;
}
func_8012CEB0((s32)&rotIn[0], (s32)&rotOut[0], 0);
}
s32 func_8018723C(void *a0) {
short a[4];
+32 -4
View File
@@ -6330,7 +6330,23 @@ void func_801848AC(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_80184A08);
extern s32 func_8012BEE8(s32 a0);
extern void func_8012E88C(u8 *a0);
void func_80184A08(s32 a0) {
s32 u;
if (func_8012BEE8(a0) != 0) {
*(s16 *)(a0 + 0x2) = 1;
func_8012E88C((u8 *)a0);
u = *(s32 *)(a0 + 0xCC);
if (u != 0) {
*(s16 *)(u + 0xFC) = 0;
}
}
}
void func_80184A58(s32 arg0) {
if (*(s32*)(arg0 + 0xCC) != 0) {
@@ -6596,7 +6612,7 @@ extern s32 func_8012C588(s32 a0, s32 a1);
extern void func_8002D4C8(s32 a0, s32 a1);
extern s32 func_8012BEE8(s32 a0);
extern void func_8018517C(void *a0);
extern void func_8018545C(void *a0);
extern void func_8018545C();
void func_80184F98(s32 a0)
{
@@ -6634,7 +6650,7 @@ extern void func_80185144(s32 param_1);
extern void func_8012E88C(u8 *a0);
extern void func_8018549C(s32 arg0);
extern void func_8012B2CC(s32 a0);
extern void func_8018545C(void *a0);
extern void func_8018545C();
void func_80185098(void *a0)
{
@@ -6816,7 +6832,19 @@ void func_801851A8(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_8018545C);
void func_8018545C(s32 a0) {
s32 v1;
v1 = *(s32 *)(a0 + 0xCC);
if (v1 != 0) {
*(u16 *)(v1 + 0x8) = *(u16 *)(a0 + 0x6);
*(u16 *)(v1 + 0xA) = *(u16 *)(a0 + 0xA) - 0x19;
*(u16 *)(v1 + 0xC) = *(u16 *)(a0 + 0xE);
}
}
void func_8018549C(s32 arg0) {
if (arg0 != 0) {
+47 -3
View File
@@ -5782,7 +5782,18 @@ void func_80183BF0(s32 a0, s32 a1) {
}
INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017CA80", func_80183C3C);
extern void func_8013B598(s32 a0, u16 *a1);
void func_80183C3C(s32 a0, s32 a1) {
u16 sp[3];
sp[0] = *(u16 *)(a0 + 0x2);
sp[1] = *(u16 *)(a0 + 0x6);
sp[2] = *(u16 *)(a0 + 0xA);
func_8013B598(a1, sp);
}
extern void func_8013B6A0(s32 idx, u16 *src, s32 val);
@@ -6395,7 +6406,21 @@ void func_80184888(s32 out, s32 a1, s32 a2) {
}
INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017CA80", func_80184958);
extern s32 func_80134510(s32 arg);
s32 func_80184958(s32 a0)
{
u16 sp[3];
s32 result;
sp[0] = *(u16 *)(a0 + 0x6);
sp[1] = *(u16 *)(a0 + 0xA);
sp[2] = *(u16 *)(a0 + 0xE);
result = func_80134510((s32)sp);
return ((u32)result > 0) ? 1 : 0;
}
extern s32 func_8012BD14(s32 a0);
@@ -7974,7 +7999,26 @@ void func_80186944(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017CA80", func_80186AAC);
extern u8 D_801202A0[];
s32 func_80186AAC(void) {
s32 count = 0;
s32 i = 0;
u8 *p = D_801202A0;
do {
if (*(u16 *)p == 0x17F && (*(u16 *)(p + 0x70) & 0xF) == 0) {
count++;
}
i++;
p += 0x10C;
} while (i < 0x60);
return count < 0xB;
}
extern u8 *func_801290DC(s32 a0, u8 *a1);
+16 -1
View File
@@ -4821,7 +4821,22 @@ s32 func_8018A9C8(void *a0, s32 a1) {
}
INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80188274", func_8018AA88);
void func_8018AA88(void) {
extern u8 D_801202A0[];
u8 *p;
s32 i;
p = D_801202A0;
for (i = 0; i < 0x60; i++, p += 0x10C) {
if (*(u16 *)p == 0x1E1) {
*(u16 *)(p + 0x70) |= 0x1000;
}
}
}
extern void func_8002D4C8(s32 a0, s32 a1);
+47 -3
View File
@@ -3663,7 +3663,16 @@ void func_80184AE4(s32 a0, s32 a1) {
}
INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018326C", func_80184B28);
void func_80184B28(s32 a0, s32 a1, s32 a2) {
u16 sp[3];
sp[0] = *(u16 *)(a0 + 0x2);
sp[1] = *(u16 *)(a0 + 0x6);
sp[2] = *(u16 *)(a0 + 0xA);
func_8013B6A0(a1, sp, a2);
}
void func_80184B6C(void) {
}
@@ -4166,7 +4175,23 @@ void func_80185430(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018326C", func_8018558C);
extern s32 func_8012BEE8(s32 a0);
extern void func_8012E88C(u8 *a0);
void func_8018558C(s32 a0) {
s32 u;
if (func_8012BEE8(a0) != 0) {
*(s16 *)(a0 + 0x2) = 1;
func_8012E88C((u8 *)a0);
u = *(s32 *)(a0 + 0xCC);
if (u != 0) {
*(s16 *)(u + 0xFC) = 0;
}
}
}
void func_801855DC(s32 arg0) {
s32 ptr = *(s32*)(arg0 + 0xCC);
@@ -5865,7 +5890,26 @@ void func_801877EC(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018326C", func_80187954);
extern u8 D_801202A0[];
s32 func_80187954(void) {
s32 count = 0;
s32 i = 0;
u8 *p = D_801202A0;
do {
if (*(u16 *)p == 0x17F && (*(u16 *)(p + 0x70) & 0xF) == 0) {
count++;
}
i++;
p += 0x10C;
} while (i < 0x60);
return count < 0xB;
}
extern u8 *func_801290DC(s32 a0, u8 *a1);
+16 -1
View File
@@ -3894,7 +3894,22 @@ void func_8017F72C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8017D898", func_8017F768);
extern void func_80016224(s32 a0, s32 a1);
void func_8017F768(void *a0) {
s16 t;
if (*(s16 *)((s32)a0 + 0xFE) != 0) {
func_80016224(*(s16 *)((s32)a0 + 0xFE) & 0xFF, 4);
*(s16 *)((s32)a0 + 0x2A) = -2;
t = 0x80 - *(s16 *)((s32)a0 + 0xFE) * 3;
*(s16 *)((s32)a0 + 0x28) = t;
*(s16 *)((s32)a0 + 0x26) = t;
*(s16 *)((s32)a0 + 0x24) = t;
}
}
extern u8 D_801202A0[];
+16 -1
View File
@@ -3867,7 +3867,22 @@ void func_8017DCF4(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8017BEBC", func_8017DD30);
extern void func_80016224(s32 a0, s32 a1);
void func_8017DD30(void *a0) {
s16 t;
if (*(s16 *)((s32)a0 + 0xFE) != 0) {
func_80016224(*(s16 *)((s32)a0 + 0xFE) & 0xFF, 4);
*(s16 *)((s32)a0 + 0x2A) = -2;
t = 0x80 - *(s16 *)((s32)a0 + 0xFE) * 3;
*(s16 *)((s32)a0 + 0x28) = t;
*(s16 *)((s32)a0 + 0x26) = t;
*(s16 *)((s32)a0 + 0x24) = t;
}
}
extern u8 D_801202A0[];
+43 -3
View File
@@ -4325,7 +4325,27 @@ void func_8017ECD4(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_8017EDAC);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
void func_8017EDAC(a0, a1, a2)
void *a0;
void *a1;
s32 a2;
{
s32 i;
for (i = 0; *(s16 *)((s32)a1 + i) != 0; i += 6) {
s32 v1 = func_8012C658(0x167, (s16)a2, (s32)a0);
if (v1 != 0) {
*(u16 *)(v1 + 0x6) = *(u16 *)((s32)a1 + i + 0);
*(u16 *)(v1 + 0xA) = *(u16 *)((s32)a1 + i + 2);
*(u16 *)(v1 + 0xE) = *(u16 *)((s32)a1 + i + 4);
}
}
}
extern void func_8012AD44(s32 *a0, s16 a1);
void func_8017EE48(s32 a0) {
@@ -4575,7 +4595,27 @@ void func_8017F2A4(s32 arg0) {
}
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_8017F308);
extern u8 D_801202A0[];
void func_8017F308(s32 param_1) {
u8 *ptr = D_801202A0;
u8 *end = ptr + 0x6480;
if (ptr < end) {
s32 want = param_1 & 0xFFFF;
s32 mask = 0x7FFFFFFF;
u8 *lim = end;
do {
if (*(u16 *)ptr == want) {
(*(s32 **)(ptr + 0x20))[1] &= mask;
}
ptr += 0x10C;
} while (ptr < lim);
}
}
extern void (*D_80192A64[])(void);
@@ -4588,7 +4628,7 @@ void func_8017F370(void *a0) {
extern s32 D_80192A34[];
extern s32 D_80192A04[];
extern void (*D_80192A18[])(void);
extern void func_8017EDAC(s32, void *, s32);
extern void func_8017EDAC();
extern s32 D_8019A7D0;
void func_8017F3AC(s32 a0) {
+22 -2
View File
@@ -4439,7 +4439,13 @@ extern void func_80178B18(s32 a0, s32 a1);
}
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180294);
extern void func_8012AD44(s32 *a0, s16 a1);
void func_80180294(void *arg0) {
((void (*)(void *, int))func_8012AD44)(arg0, 0x6);
}
// @class: struct
@@ -4497,7 +4503,21 @@ void func_801803B8(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_801803FC);
extern void func_801330E0(void *, s16 *, s32);
s32 func_801803FC(s32 a0) {
s32 v1;
v1 = *(s32 *)(a0 + 0xCC);
if (v1 != 0) {
*(u16 *)(v1 + 0x8) = *(u16 *)(a0 + 0x6);
*(u16 *)(v1 + 0xA) = *(u16 *)(a0 + 0xA);
*(u16 *)(v1 + 0xC) = *(u16 *)(a0 + 0xE);
func_801330E0((void *)(v1 + 0x8), (s16 *)(v1 + 0x8), -0x100);
}
}
typedef struct {
u16 x, y, z;
+17 -1
View File
@@ -4651,7 +4651,23 @@ void func_80180D18(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8017D898", func_80180E18);
extern s32 *D_80126B78;
void func_80180E18(s32 a0) {
s16 t;
*(u16 *)(*(u32 *)(a0 + 0x20) + 0x10) += *(u16 *)(a0 + 0xFE);
*(u16 *)(*(u32 *)(a0 + 0x20) + 0x12) += *(u16 *)(a0 + 0x100);
*(u16 *)(*(u32 *)(a0 + 0x20) + 0x14) += *(u16 *)(a0 + 0x102);
t = *(s16 *)(a0 + 0x100);
if (t != 0 && *(u8 *)(a0 + 0x74) != 0) {
*(u16 *)((s32)D_80126B78 + 0x12) += t;
}
}
extern s32 func_8004787C(s32 a0);
+23 -2
View File
@@ -5082,7 +5082,13 @@ void func_801807B8(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017CA80", func_801807F4);
extern void func_8012AD44(s32 *a0, s16 a1);
void func_801807F4(void *arg0) {
((void (*)(void *, int))func_8012AD44)(arg0, 0x6);
}
// @class: struct
@@ -5581,7 +5587,22 @@ s32 func_801812B4(void *arg0, s32 arg1) {
}
INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017CA80", func_80181374);
void func_80181374(void) {
extern u8 D_801202A0[];
u8 *p;
s32 i;
p = D_801202A0;
for (i = 0; i < 0x60; i++, p += 0x10C) {
if (*(u16 *)p == 0x1E1) {
*(u16 *)(p + 0x70) |= 0x1000;
}
}
}
extern void func_8002D4C8(s32 a0, s32 a1);
+46 -3
View File
@@ -4501,7 +4501,18 @@ void func_80181A84(s32 a0, s32 a1) {
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181AD0);
extern void func_8013B598(s32 a0, u16 *a1);
void func_80181AD0(s32 a0, s32 a1) {
u16 sp[3];
sp[0] = *(u16 *)(a0 + 0x2);
sp[1] = *(u16 *)(a0 + 0x6);
sp[2] = *(u16 *)(a0 + 0xA);
func_8013B598(a1, sp);
}
extern void func_8013B6A0(s32 idx, u16 *src, s32 val);
@@ -4563,7 +4574,27 @@ void func_80181BDC(void *arg0)
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181CA8);
void func_80181CA8(s32 arg0)
{
extern s32 rand(void);
extern void func_8012B200(u8 *a0);
register s32 rec __asm__("$17");
s32 r;
s32 n;
rec = arg0;
r = rand();
*(u16 *)(rec + 0x104) = *(u16 *)(rec + 0xFC);
func_8012B200((u8 *)rec);
n = rand();
*(s32 *)(rec + 0x1C) = n % 60 + 0x78;
*(s16 *)(rec + 0xFE) = (s16)r % 32 + 0xA;
*(s16 *)(rec + 0x2) = 2;
}
typedef struct { s16 a, b, c; } SV3x_80184B30_80181D58;
typedef struct { short m[3][3]; long t[3]; } MTX_801851A8_801839C4_80181D58;
@@ -4648,7 +4679,19 @@ void func_80181D58(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8017CA80", func_80181EA0);
extern void func_8012CBF4(s32 a0);
extern s32 func_80013478(s32 a0, s32 a1);
void func_80181EA0(s32 arg0) {
func_8012CBF4(arg0);
if (func_80013478(arg0 + 4, arg0 + 0x88) < 0x101) {
*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = 0;
*(s16 *)(arg0 + 2) = 4;
}
}
+15 -1
View File
@@ -3125,7 +3125,21 @@ void func_8018271C(s32 out, s32 a1, s32 a2) {
}
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80182038", func_801827EC);
extern s32 func_80134510(s32 arg);
s32 func_801827EC(s32 a0)
{
u16 sp[3];
s32 result;
sp[0] = *(u16 *)(a0 + 0x6);
sp[1] = *(u16 *)(a0 + 0xA);
sp[2] = *(u16 *)(a0 + 0xE);
result = func_80134510((s32)sp);
return ((u32)result > 0) ? 1 : 0;
}
extern s32 func_8012BD14(s32 a0);
+42 -1
View File
@@ -4981,4 +4981,45 @@ end:
}
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017BEBC", func_8017F788);
typedef struct {
u8 r; /* 0x00 */
u8 g; /* 0x01 */
u8 b; /* 0x02 */
u8 cd; /* 0x03 (never written; the block move copies it anyway) */
} Col4_80181574;
extern u16 D_80126B5E;
extern u16 D_80126B62;
extern u16 D_80126B66;
extern void func_8012B2CC(s32 a0);
extern void func_8012B200(u8 *a0);
extern void func_8012B178(s32 a0, s32 a1);
extern s32 func_8012B77C(s32 out, s32 from, s32 to);
void func_8017F788(s32 a0) {
s16 sp10[8]; /* 0x10 */
s32 sp20[2]; /* 0x20 */
s16 t;
s32 r;
sp10[1] = D_80126B5E;
t = D_80126B62;
sp10[3] = t - 0x30;
sp10[5] = D_80126B66;
func_8012B77C((s32)sp20, a0 + 4, (s32)sp10);
r = sp20[0];
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = r;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = r >> 16;
func_8012B2CC(a0);
func_8012B200((u8 *)a0);
func_8012B178(a0, 0xFFF00000);
*(u16 *)(a0 + 2) = 5;
*(u16 *)(a0 + 0x34) = 0;
*(s32 *)(a0 + 0x1C) = 0;
*(u16 *)(a0 + 0xFE) = D_80126B62 - 96;
}
+18 -1
View File
@@ -2946,7 +2946,24 @@ void func_8017FC3C(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017F83C", func_8017FD08);
extern void func_8012BE54(s32 a0);
extern void func_8012B21C(void *a0);
extern void func_8012E88C(s32 a0);
extern void func_80143994(s32 *a0, s32 a1);
void func_8017FD08(void *arg0) {
if (((s32 (*)(s32))func_8012BE54)((s32)arg0) <= 0x40000) {
*(s16 *)((char *)arg0 + 0x2) = 9;
func_8012B21C(arg0);
func_8012E88C((s32)arg0);
*(s32 *)((char *)arg0 + 0xCC) =
((s32 (*)(s32 *, s32))func_80143994)(arg0, 0x1000);
}
}
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017F83C", func_8017FD64);
+42 -1
View File
@@ -4047,4 +4047,45 @@ end:
}
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017D898", func_8017FB14);
typedef struct {
u8 r; /* 0x00 */
u8 g; /* 0x01 */
u8 b; /* 0x02 */
u8 cd; /* 0x03 (never written; the block move copies it anyway) */
} Col4_80181574;
extern u16 D_80126B5E;
extern u16 D_80126B62;
extern u16 D_80126B66;
extern void func_8012B2CC(s32 a0);
extern void func_8012B200(u8 *a0);
extern void func_8012B178(s32 a0, s32 a1);
extern s32 func_8012B77C(s32 out, s32 from, s32 to);
void func_8017FB14(s32 a0) {
s16 sp10[8]; /* 0x10 */
s32 sp20[2]; /* 0x20 */
s16 t;
s32 r;
sp10[1] = D_80126B5E;
t = D_80126B62;
sp10[3] = t - 0x30;
sp10[5] = D_80126B66;
func_8012B77C((s32)sp20, a0 + 4, (s32)sp10);
r = sp20[0];
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = r;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = r >> 16;
func_8012B2CC(a0);
func_8012B200((u8 *)a0);
func_8012B178(a0, 0xFFF00000);
*(u16 *)(a0 + 2) = 5;
*(u16 *)(a0 + 0x34) = 0;
*(s32 *)(a0 + 0x1C) = 0;
*(u16 *)(a0 + 0xFE) = D_80126B62 - 96;
}
+22 -4
View File
@@ -2958,7 +2958,7 @@ extern s32 D_8019BFAC;
extern void func_80180D2C();
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8012A828(s32*, s32);
extern void func_80180AF0(void);
extern void func_80180AF0();
void func_8018066C(s32 *a0) {
((void (*)(s32 *))func_80180AF0)(a0);
@@ -2968,7 +2968,7 @@ void func_8018066C(s32 *a0) {
}
extern void func_80180AF0(void);
extern void func_80180AF0();
extern void func_80180D2C();
void func_801806B8(s32 a0) {
func_80180AF0();
@@ -2982,7 +2982,7 @@ extern s32 D_8019C114;
extern s32 D_8019BFAC;
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80180D2C();
extern void func_80180AF0(void);
extern void func_80180AF0();
void func_801806E8(s32 param_1) {
*(u8 *)(param_1 + 0xC2) = 0;
@@ -3160,7 +3160,25 @@ LAB_80180740:
}
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180AF0);
void func_80180AF0(s32 *a0)
{
extern void func_8012B2CC(s32 a0);
extern void func_8012B23C(s32 a0);
s32 ptr;
*(u16 *)((s32)a0 + 0x5C) = *(u16 *)((s32)a0 + 0x5C) & 0xFFFE;
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = (*(u16 *)((s32)a0 + 0x62) + 0x800) & 0xFFF;
ptr = *(s32 *)((s32)a0 + 0x20);
*(u16 *)(ptr + 0x14) = 0;
*(u16 *)(ptr + 0x10) = 0;
*(s32 *)((s32)a0 + 0x1C) = 0;
func_8012B2CC((s32)a0);
func_8012B23C((s32)a0);
}
extern void func_8012A828(s32 *a0, s32 a1);
extern s32 func_8012B030(u8 *a0);
+42 -1
View File
@@ -6330,4 +6330,45 @@ end:
}
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017C294", func_8018172C);
typedef struct {
u8 r; /* 0x00 */
u8 g; /* 0x01 */
u8 b; /* 0x02 */
u8 cd; /* 0x03 (never written; the block move copies it anyway) */
} Col4_80181574;
extern u16 D_80126B5E;
extern u16 D_80126B62;
extern u16 D_80126B66;
extern void func_8012B2CC(s32 a0);
extern void func_8012B200(u8 *a0);
extern void func_8012B178(s32 a0, s32 a1);
extern s32 func_8012B77C(s32 out, s32 from, s32 to);
void func_8018172C(s32 a0) {
s16 sp10[8]; /* 0x10 */
s32 sp20[2]; /* 0x20 */
s16 t;
s32 r;
sp10[1] = D_80126B5E;
t = D_80126B62;
sp10[3] = t - 0x30;
sp10[5] = D_80126B66;
func_8012B77C((s32)sp20, a0 + 4, (s32)sp10);
r = sp20[0];
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = r;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = r >> 16;
func_8012B2CC(a0);
func_8012B200((u8 *)a0);
func_8012B178(a0, 0xFFF00000);
*(u16 *)(a0 + 2) = 5;
*(u16 *)(a0 + 0x34) = 0;
*(s32 *)(a0 + 0x1C) = 0;
*(u16 *)(a0 + 0xFE) = D_80126B62 - 96;
}
+23 -3
View File
@@ -3543,7 +3543,27 @@ void func_8017D704(void *a0) {
}
INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8017BEBC", func_8017D740);
extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2);
extern void func_8012A828(s32, void*);
void func_8017D740(void *arg0) {
s16 hval;
s32 temp;
hval = *(s16 *)((char *)arg0 + 0x10A);
if (hval & 0x8000) {
*(s16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12) =
func_80012ABC(*(s16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12), hval & 0xFFF, 4);
}
temp = *(s32 *)((char *)arg0 + 0xF8);
if (temp != 0 && *(s32 *)((char *)arg0 + 0x90) != temp) {
((void (*)(s32, s32))func_8012A828)((s32)arg0, temp);
*(s32 *)((char *)arg0 + 0xF8) = 0;
}
}
extern s32 D_80182BD0;
@@ -3646,7 +3666,7 @@ void func_8017DA28(void) {
extern void func_8012A828(s32 a0, void *a1);
extern void func_800183E0(s32 a0);
extern s32 rand(void);
extern void func_8017D740(s32 a0);
extern void func_8017D740();
extern void (*D_80182908[])(s32);
extern s32 D_80182A60;
extern s32 D_80182BD0;
@@ -3697,7 +3717,7 @@ e58_chk:
extern void func_8012A828(s32 a0, void *a1);
extern void func_8017D740(s32 a0);
extern void func_8017D740();
extern void (*D_80182F88[])(void);
extern void (*D_80183050[])(void);
extern u8 D_801A5EFC[];
+67 -6
View File
@@ -3696,7 +3696,7 @@ s32 func_8017DA34(void) {
extern s32 func_8012C044(s32 a0);
extern u32 D_8018AB80[];
extern void func_8017EFB8(s32 a0);
extern void func_8017EFB8();
void func_8017DA3C(s32 a0) {
s32 *s0 = (s32 *)a0;
@@ -4348,7 +4348,7 @@ void func_8017E71C(s32 param_1) {
extern s32 func_8012BEE8(s32 a0);
extern u16 D_800B99DA;
extern void func_80130D48(s32 a0);
extern void func_8017EFB8(s32);
extern void func_8017EFB8();
void func_8017E778(s32 a0) {
s32 v0;
@@ -4426,7 +4426,7 @@ void func_8017E800(s32 param_1) {
extern s32 func_8012BEE8(s32 a0);
extern u16 D_800B99DA;
extern void func_80130D48(s32 a0);
extern void func_8017EFB8(s32);
extern void func_8017EFB8();
void func_8017E8D0(s32 a0)
{
@@ -4460,7 +4460,45 @@ void func_8017E8D0(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017E998);
typedef struct { s16 vx, vy, vz, pad; } SVEC2_C974_8017BA3C;
typedef struct {
SVECTOR v[4]; /* 0x00 */
s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */
u8 f6; /* 0x38 */
u8 pad[7]; /* -> 0x40 */
} Prim_8016E7C8_8016B6BC;
extern void func_80143BDC(u16*);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8012B0B4(u32 *a0, s32 a1, s32 a2);
void func_8017E998(s32 arg0) {
s32 i;
s32 q;
u16 sp10[3];
u32 buf[2];
s32 v;
u32 *bp;
if (*(s16 *)(arg0 + 0xAA) <= 0) {
for (i = 0; i < 20; i++) {
bp = buf;
func_8012B0B4(bp, rand() % 4096, 64);
v = *(s32 *)buf;
sp10[0] = *(u16 *)(arg0 + 0x6) + v;
sp10[1] = *(u16 *)(arg0 + 0xA) - 0x60;
sp10[2] = *(u16 *)(arg0 + 0xE) + (v >> 16);
q = ((s32 (*)(u16 *))func_80143BDC)(sp10);
if (q != 0) {
*(u8 *)(*(s32 *)(q + 0xCC) + 0x27) = 0x5B;
}
}
func_8002D4C8(0x521, 0);
}
}
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern char D_8018ABB0;
@@ -4568,7 +4606,7 @@ extern void func_8012ADE4(u8 *a0);
extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3);
extern void func_8012CBA4(s32 a0);
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
extern void func_8017EFB8(s32);
extern void func_8017EFB8();
s32 func_8017EC80(s32 arg0) {
@@ -4677,7 +4715,30 @@ s32 func_8017EE7C(s32 a0, s32 a1) {
}
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017EFB8);
extern void func_8002A04C(s32 a0);
extern void func_8002AC00(s32 arg0);
extern void func_8012C218(void *a0);
void func_8017EFB8(void *a0)
{
s32 v1;
if (*(short *)((char *)a0 + 0x102) == 0) {
func_8002A04C((s32)a0);
func_8002AC00(0x1A);
}
if (!((*(short *)((char *)a0 + 0x70) & 0x8000))) {
v1 = *(s32 *)((char *)a0 + 0x68);
if (v1 != 0 && ((*(short *)((char *)a0 + 0x72) & 0x8000))) {
*(unsigned short *)(v1 + 0xA) = *(unsigned short *)(v1 + 0xA) & 0x7FFF;
}
}
func_8012C218(a0);
}
extern void func_8017FD20(void *a0);
+14 -1
View File
@@ -4700,7 +4700,20 @@ u8 *a0;
DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017DD7C);
extern s32 func_8013767C(s32 a0);
extern void func_80171A1C(u8 *a0);
extern s32 D_8012750C;
extern s32 D_80126B58;
extern s32 D_80126CF0;
void func_8017DD7C(void) {
s32 v0;
v0 = func_8013767C(D_8012750C);
D_80126CF0 = v0;
func_80171A1C((u8 *)&D_80126B58);
}
DEFINE_func_8017DDBC() /* dedup: shared engine-core @0x8017DDBC (src/shared) */
+14 -1
View File
@@ -4690,7 +4690,20 @@ u8 *a0;
DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017DD7C);
extern s32 func_8013767C(s32 a0);
extern void func_80171A1C(u8 *a0);
extern s32 D_8012750C;
extern s32 D_80126B58;
extern s32 D_80126CF0;
void func_8017DD7C(void) {
s32 v0;
v0 = func_8013767C(D_8012750C);
D_80126CF0 = v0;
func_80171A1C((u8 *)&D_80126B58);
}
DEFINE_func_8017DDBC() /* dedup: shared engine-core @0x8017DDBC (src/shared) */
+9 -1
View File
@@ -4128,7 +4128,15 @@ extern void func_8012B414(int a0);
}
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80181B44", func_801836B8);
void func_801836B8(s32 arg0)
{
extern u16 D_800B99DA;
extern s32 func_8004787C(s32 a0);
*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = (u32)func_8004787C(D_800B99DA * 48) >> 5;
}
extern s32 func_80029504(void);
extern void func_8012C1B8(void);
+36 -1
View File
@@ -4311,7 +4311,42 @@ void func_80180148(void *a0, void *a1, void *a2, void *a3)
}
INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8017D604", func_80180230);
extern void ApplyMatrixSV(void *a0, void *a1, void *a2);
extern void RotMatrixYXZ(void *a0, void *a1);
extern s32 rand(void);
void func_80180230(void *a0, void *a1, s16 a2, s16 a3)
{
extern u8 *func_8012913C(s32 a0);
s16 i;
s16 rot[4];
s32 mtx[8];
u8 *ent;
i = 0;
if (0 < a3) {
do {
ent = func_8012913C(0x46);
if (ent != 0) {
rot[0] = (rand() & 0x7F) * 8 + 0xF00;
rot[1] = a2 + (s16)((rand() & 0x7F00) >> 5);
rot[2] = 0;
RotMatrixYXZ(rot, mtx);
ApplyMatrixSV(mtx, a1, rot);
*(s16 *)(ent + 6) = *(s16 *)a0 + rot[0];
*(s16 *)(ent + 10) = *(s16 *)((s8 *)a0 + 2) + rot[1];
*(s16 *)(ent + 14) = *(s16 *)((s8 *)a0 + 4) + rot[2];
*(s32 *)(ent + 0x10) = (s32)rot[0] << 12;
*(s32 *)(ent + 0x14) = (s32)rot[1] << 12;
*(s32 *)(ent + 0x18) = (s32)rot[2] << 12;
}
i = i + 1;
} while (i < a3);
}
}
extern void (*D_80188138[])(void);
+21 -2
View File
@@ -5024,7 +5024,7 @@ void func_8017F4BC(void *a0) {
void func_8017F4F8(s32 a0) {
extern void (*D_8018B8D4)(void);
extern u8 D_80187E20[];
extern void func_8017F5E0(void);
extern void func_8017F5E0();
s32 s0 = a0;
if (func_8012C354(a0, (s32)&D_8018B8D4)) {
*(u8 *)(s0 + 0xC0) = 1;
@@ -5060,7 +5060,26 @@ void func_8017F5A0(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_8017F5E0);
extern void func_8012BD14(s32);
extern s32 func_8016F1AC(void);
extern s32 func_80178BF8();
extern void func_80172710(void);
s32 func_8017D698_x(s32 a0) __asm__("func_8017F5E0");
s32 func_8017D698_x(s32 a0) {
if (((s32 (*)(s32))func_8012BD14)(*(s32 *)(a0 + 0x64)) >= 0x1001) {
return 0;
}
if (func_8016F1AC() != 0) {
return 0;
}
*(s16 *)(*(s32 *)(a0 + 0x64) + 2) = 2;
func_80178BF8();
return (s32)func_80172710;
}
extern s32 D_801274D8;
extern s32 D_801274DC;
+21 -2
View File
@@ -4743,7 +4743,7 @@ extern s32 func_8012C354(s32 a0, s32 a1);
extern void func_8012A828(s32, s32);
extern s32 func_801788B8(s32 arg0, s32 arg1);
extern void func_8017F01C(void);
extern void func_8017F01C();
void func_8017EF38(s32 a0) {
@@ -4783,7 +4783,26 @@ void func_8017EFDC(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_8017F01C);
extern void func_8012BD14(s32);
extern s32 func_8016F1AC(void);
extern s32 func_80178BF8();
extern void func_80172710(void);
s32 func_8017D698_x(s32 a0) __asm__("func_8017F01C");
s32 func_8017D698_x(s32 a0) {
if (((s32 (*)(s32))func_8012BD14)(*(s32 *)(a0 + 0x64)) >= 0x1001) {
return 0;
}
if (func_8016F1AC() != 0) {
return 0;
}
*(s16 *)(*(s32 *)(a0 + 0x64) + 2) = 2;
func_80178BF8();
return (s32)func_80172710;
}
extern s16 D_80126CAC;
extern s32 D_801274D8;
+8 -2
View File
@@ -3561,7 +3561,13 @@ s32 func_8017D5DC(void* param_1)
}
INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8017BEBC", func_8017D6C4);
s32 func_8017D6C4(void *a0)
{
*(s16 *)((s32)a0 + 0xFE) = 0;
}
INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8017BEBC", func_8017D6CC);
@@ -3653,7 +3659,7 @@ extern s32 func_80029504(void);
extern void func_8012CAE4(void *a0);
extern s32 func_8012C354(s32 a0, s32 a1);
extern s32 func_8017D5DC(void *a0);
extern s32 func_8017D6C4(s32 a0);
extern s32 func_8017D6C4();
extern s32 func_8012AD50(void *a0);
extern u8 D_80181CBC[];
+41 -2
View File
@@ -4649,7 +4649,33 @@ void func_8018B19C(u8 *arg0)
}
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80188E1C", func_8018B2B8);
extern void func_8012AD80(s32 a0);
extern s32 func_80128ED8(s32 a0, s32 *a1);
extern s32 func_8012BEE8(s32 a0);
extern void func_80016714(void *a0, s32 a1);
extern void func_8012C218(void *a0);
void func_8018B2B8(void *arg0) {
s32 temp_s1;
s32 temp_v1;
temp_s1 = *(s32 *)((s32)arg0 + 0xCC);
func_8012AD80((s32)arg0);
temp_v1 = *(s32 *)((s32)arg0 + 0xCC);
*(u16 *)(temp_v1 + 8) = *(u16 *)((s32)arg0 + 6);
*(u16 *)(temp_v1 + 0xA) = *(u16 *)((s32)arg0 + 0xA);
*(u16 *)(temp_v1 + 0xC) = *(u16 *)((s32)arg0 + 0xE);
if ((*(s32 *)((s32)arg0 + 0x1C) & 7) == 0) {
func_80128ED8(temp_s1, (s32 *)((s32)arg0 + 0xD0));
}
if (func_8012BEE8((s32)arg0) != 0) {
func_80016714((void *)temp_s1, 0x38);
func_8012C218(arg0);
}
}
extern void func_8012B414(int a0);
@@ -4662,7 +4688,20 @@ extern void func_8012B414(int a0);
DEFINE_func_8018B388() /* dedup: shared engine-core @0x8018B388 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80188E1C", func_8018B400);
extern u16 D_800B99DA;
extern s32 func_8004787C(s32);
void func_8018B400(void *arg0) {
u32 ret;
u8 *v1;
ret = func_8004787C(D_800B99DA * 48);
v1 = *(u8 **)((char *)arg0 + 0x20);
*(u16 *)(v1 + 0x10) = ret >> 5;
}
extern s32 D_801B60B0[];
extern s32 D_801E053C[];
+36 -1
View File
@@ -3880,7 +3880,42 @@ void func_8017F9EC(void *a0, void *a1, void *a2, void *a3)
}
INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8017D604", func_8017FAD4);
extern void ApplyMatrixSV(void *a0, void *a1, void *a2);
extern void RotMatrixYXZ(void *a0, void *a1);
extern s32 rand(void);
void func_8017FAD4(void *a0, void *a1, s16 a2, s16 a3)
{
extern u8 *func_8012913C(s32 a0);
s16 i;
s16 rot[4];
s32 mtx[8];
u8 *ent;
i = 0;
if (0 < a3) {
do {
ent = func_8012913C(0x46);
if (ent != 0) {
rot[0] = (rand() & 0x7F) * 8 + 0xF00;
rot[1] = a2 + (s16)((rand() & 0x7F00) >> 5);
rot[2] = 0;
RotMatrixYXZ(rot, mtx);
ApplyMatrixSV(mtx, a1, rot);
*(s16 *)(ent + 6) = *(s16 *)a0 + rot[0];
*(s16 *)(ent + 10) = *(s16 *)((s8 *)a0 + 2) + rot[1];
*(s16 *)(ent + 14) = *(s16 *)((s8 *)a0 + 4) + rot[2];
*(s32 *)(ent + 0x10) = (s32)rot[0] << 12;
*(s32 *)(ent + 0x14) = (s32)rot[1] << 12;
*(s32 *)(ent + 0x18) = (s32)rot[2] << 12;
}
i = i + 1;
} while (i < a3);
}
}
extern void (*D_801874C4[])(void);
+47 -2
View File
@@ -3127,7 +3127,34 @@ extern void func_80184430(s32 *a0);
}
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80183508", func_80184028);
void func_80184028(s32 param_1)
{
extern void func_80184430(s32 *a0);
extern void func_8012B14C(s32 a0, s32 a1);
extern void func_8012A828(s32*, s32);
extern s32 func_8018466C();
extern s32 D_801AE350;
extern s32 D_801AE4A8;
extern s32 D_801AE4B8;
s32 s0 = param_1;
*(u8 *)(s0 + 0xC2) = 0;
*(u8 *)(s0 + 0xC3) = 0;
func_80184430((s32 *)param_1);
if (*(u16 *)(s0 + 0x5E) == 9 || *(u16 *)(s0 + 0x5E) == 0x1C) {
func_8012B14C(s0, (s32)&D_801AE4A8);
} else {
func_8012B14C(s0, (s32)&D_801AE4B8);
}
((void (*)(s32, void *))func_8012A828)(s0, (void *)&D_801AE350);
func_8018466C(s0);
}
void func_801840AC(s32 param_1) {
@@ -3289,7 +3316,25 @@ LAB_80180740:
}
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80183508", func_80184430);
void func_80184430(s32 *a0)
{
extern void func_8012B2CC(s32 a0);
extern void func_8012B23C(s32 a0);
s32 ptr;
*(u16 *)((s32)a0 + 0x5C) = *(u16 *)((s32)a0 + 0x5C) & 0xFFFE;
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = (*(u16 *)((s32)a0 + 0x62) + 0x800) & 0xFFF;
ptr = *(s32 *)((s32)a0 + 0x20);
*(u16 *)(ptr + 0x14) = 0;
*(u16 *)(ptr + 0x10) = 0;
*(s32 *)((s32)a0 + 0x1C) = 0;
func_8012B2CC((s32)a0);
func_8012B23C((s32)a0);
}
extern void func_8012A828(s32*, s32);
extern s32 func_8012B030(u8 *a0);
+22 -1
View File
@@ -4784,4 +4784,25 @@ void func_8017F0B8(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017BEBC", func_8017F188);
extern void func_8012DFD4(u8 *a0);
void func_8017F188(s32 param_1) {
extern s32 *D_80126B78;
s32 a0;
s32 v1;
if (*(s16 *)(param_1 + 0xFE) == 0) {
a0 = *(s32 *)(param_1 + 0x20);
v1 = *(s32 *)(param_1 + 0x64);
*(u16 *)(a0 + 0x12) = *(u16 *)(a0 + 0x12) + *(u16 *)(v1 + 0xFC);
func_8012DFD4((u8 *)param_1);
if (*(u8 *)(param_1 + 0x74) != 0) {
a0 = (s32)D_80126B78;
v1 = *(s32 *)(param_1 + 0x64);
*(u16 *)(a0 + 0x12) = *(u16 *)(a0 + 0x12) + *(u16 *)(v1 + 0xFC);
}
}
}
+65 -1
View File
@@ -4873,7 +4873,71 @@ void func_8017F130(void *a0) {
}
INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8017BEBC", func_8017F16C);
typedef struct { u8 b[0x6C]; } Blk6C_80184CB0;
/* §193-A banked twin: ov_SC06_018:func_8018AF88 (sim 0.708) establishes the
* `local = D_800AE620;` whole-struct-copy idiom for this exact symbol, with
* the address cached in a pointer local (forced into $s1, callee-saved,
* live across the RotMatrixY + follow-up calls). Same-TU sibling
* func_80185730 (src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c ~L5479) is an
* even closer structural relative: `m = D_800AE620;` on an 8-word Mat32_*
* typedef (§48 struct-assign -> 3+3+2 lw/sw grouping), RotMatrixY's angle
* arg read as `*(s16*)(*(s32*)((s32)a0 + 0x20) + 0x12)` mirrors this
* target's own `lw v0,0x20($s0); lh a0,0x12($v0)` chain almost verbatim
* (that sibling has one extra outer +0x64 hop this target does not).
* RotTransSV / func_8004914C / func_800491AC already carry file-scope
* `void *` decls in the destination TU (~L2639-2641) -- reused verbatim.
* SV4 {s16 a,b,c,d;} (src/shared/engine_types.h:598) is already used
* alongside RotTransSV/D_801C112C in the same TU and is the exact 8-byte
* shape both local vectors need (frame math: 16B implicit arg-spill +
* 32B Mat32 m + 8B sv + 8B out = 64B locals, + 12B saves + 4B pad = 0x50,
* matching the target's `addiu $sp,$sp,-0x50` exactly -- no 12-byte VECTOR
* fits, ruling that guess out).
*/
typedef struct { s32 w[8]; } Mat32_80186C20;
typedef struct { s16 a, b, c, d; } SV4_80186C20;
void func_8017F16C(void *a0)
{
/* §183 STRUCT-view-cast. The destination TU declares this symbol four
* different ways at block scope; the reconciler flattens scope and reads
* the LAST one (`extern s32 D_800AE620;`, L6403) as the TU's spelling, so
* adopt that verbatim and take the struct view at the USE site -- exactly
* the idiom the TU itself already uses at L6420. */
extern s32 D_800AE620;
extern void RotMatrixY(s32 a0, void *a1);
extern void func_8004914C(void *a0);
extern void func_800491AC(void *a0);
extern void RotTransSV(void *a0, void *a1, void *a2);
Mat32_80186C20 m;
SV4_80186C20 sv;
SV4_80186C20 out;
void *mp;
m = *(Mat32_80186C20 *)&D_800AE620;
mp = &m;
RotMatrixY(*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12), mp);
m.w[5] = *(s16 *)((s32)a0 + 0xFE);
m.w[6] = *(s16 *)((s32)a0 + 0xA);
m.w[7] = *(s16 *)((s32)a0 + 0x100);
func_8004914C(mp);
func_800491AC(mp);
sv.a = 0;
sv.b = 0;
sv.c = *(u16 *)((s32)a0 + 0xE2);
RotTransSV(&sv, &sv, &out);
*(s16 *)((s32)a0 + 0x6) = sv.a;
*(s16 *)((s32)a0 + 0xE) = sv.c;
}
extern s32 func_8012AD50(void *a0);
extern u8 D_80183090[];
+24 -1
View File
@@ -4926,7 +4926,30 @@ s32 func_8017F42C(s32 a0, s32 a1) {
}
INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8017BEBC", func_8017F568);
extern void func_8002A04C(s32 a0);
extern void func_8002AC00(s32 arg0);
extern void func_8012C218(void *a0);
void func_8017F568(void *a0)
{
s32 v1;
if (*(short *)((char *)a0 + 0x102) == 0) {
func_8002A04C((s32)a0);
func_8002AC00(0x1A);
}
if (!((*(short *)((char *)a0 + 0x70) & 0x8000))) {
v1 = *(s32 *)((char *)a0 + 0x68);
if (v1 != 0 && ((*(short *)((char *)a0 + 0x72) & 0x8000))) {
*(unsigned short *)(v1 + 0xA) = *(unsigned short *)(v1 + 0xA) & 0x7FFF;
}
}
func_8012C218(a0);
}
extern void func_801802D0(void *a0);
+7 -1
View File
@@ -5732,7 +5732,13 @@ void func_80187B28(void) {
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187B80);
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3);
void func_80187B80(void *arg0) {
((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, arg0, 0);
}
extern s32 func_8014C050(s32 a0, s32 a1);
+14 -1
View File
@@ -4705,7 +4705,20 @@ void func_8017DCC0(u8 *a0)
DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DD7C);
extern s32 func_8013767C(s32 a0);
extern void func_80171A1C(u8 *a0);
extern s32 D_8012750C;
extern s32 D_80126B58;
extern s32 D_80126CF0;
void func_8017DD7C(void) {
s32 v0;
v0 = func_8013767C(D_8012750C);
D_80126CF0 = v0;
func_80171A1C((u8 *)&D_80126B58);
}
DEFINE_func_8017DDBC() /* dedup: shared engine-core @0x8017DDBC (src/shared) */
+59 -2
View File
@@ -3281,7 +3281,25 @@ void func_801880C4(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80187AEC", func_80188234);
typedef struct { u16 x, y, z, w; } V4_80188E10_80182F80;
void func_80188234(s32 param_1) {
s32 obj;
s32 obj2;
u16 w;
obj = *(s32 *)(param_1 + 0x20);
*(s32 *)(param_1 + 0x1C) = 0x18;
*(s16 *)(obj + 0x10) = 0x80;
obj2 = *(s32 *)(param_1 + 0x20);
w = *(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x12);
*(s16 *)(obj2 + 0x12) = w;
func_8012B2CC(param_1);
func_8012B178(param_1, 0xFFF00000);
*(s16 *)(param_1 + 2) = 2;
}
extern void func_8012C218(void *a0);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
@@ -4068,7 +4086,46 @@ s32 func_80189284(void *a0, s32 a1, s32 a2) {
}
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80187AEC", func_8018931C);
extern s32 func_8012C51C(void *a0, s32 a1);
typedef struct {
u16 f10; /* 0x10 */
u16 f12; /* 0x12 */
u16 f14; /* 0x14 */
s16 f16; /* 0x16 */
s16 f18; /* 0x18 */
s16 f1a; /* 0x1A */
s16 f1c; /* 0x1C */
u16 f1e; /* 0x1E */
s32 f20; /* 0x20 */
} buf_801873B0;
void func_8018931C(a0, a1, a2, a3, a4, a5)
s32 a0;
void *a1;
s32 a2;
s32 a3;
u16 a4;
s32 a5;
{
buf_801873B0 sp;
u16 t;
sp.f10 = *(u16 *)a1;
sp.f12 = *(u16 *)(2 + (char *)a1);
t = *(u16 *)(4 + (char *)a1);
sp.f16 = a2;
sp.f18 = a3;
sp.f1a = 0;
sp.f1e = a4;
sp.f20 = a5;
sp.f1c = 0x7FFF;
sp.f14 = t;
func_8012C51C(&sp, a0);
}
extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
+11 -1
View File
@@ -2950,7 +2950,17 @@ void func_801808A8(u8 *a0) {
}
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_801803E0", func_801808F4);
void func_801808F4(s32 param_1) {
if (*(u8 *)(param_1 + 0xC1) != 0) {
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = func_80047948(*(s32 *)(param_1 + 0xE4) << 7) >> 5;
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = func_8004787C(*(s32 *)(param_1 + 0xE4) << 7) >> 4;
func_8012B370(param_1);
*(s32 *)(param_1 + 0xE4) += 1;
}
}
extern void func_80131B14();
extern void func_8012A828(s32 a0, void *a1);
+53 -2
View File
@@ -4570,9 +4570,60 @@ s32 func_801833F4(void *a0, s32 a1, s32 a2) {
}
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80180B04", func_8018348C);
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80180B04", func_801834F0);
extern s32 func_8012C51C(void *a0, s32 a1);
typedef struct {
u16 f10; /* 0x10 */
u16 f12; /* 0x12 */
u16 f14; /* 0x14 */
s16 f16; /* 0x16 */
s16 f18; /* 0x18 */
s16 f1a; /* 0x1A */
s16 f1c; /* 0x1C */
u16 f1e; /* 0x1E */
s32 f20; /* 0x20 */
} buf_801873B0;
void func_8018348C(a0, a1, a2, a3, a4, a5)
s32 a0;
void *a1;
s32 a2;
s32 a3;
u16 a4;
s32 a5;
{
buf_801873B0 sp;
u16 t;
sp.f10 = *(u16 *)a1;
sp.f12 = *(u16 *)(2 + (char *)a1);
t = *(u16 *)(4 + (char *)a1);
sp.f16 = a2;
sp.f18 = a3;
sp.f1a = 0;
sp.f1e = a4;
sp.f20 = a5;
sp.f1c = 0x7FFF;
sp.f14 = t;
func_8012C51C(&sp, a0);
}
extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
void func_801834F0(s32 a0, void *a1, void *a2, s32 a3) {
s32 buf0;
s32 buf1;
s32 buf2;
s32 temp[8];
func_8012EC04(a0, a3, temp);
func_8012F14C((s32)temp, (s32)a1, (s32)a2);
}
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
+33 -2
View File
@@ -4569,7 +4569,13 @@ s32 func_8017F830(s16 *a0) {
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_8017F85C);
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_8017F9FC);
extern void func_8012AD44(s32 *a0, s16 a1);
void func_8017F9FC(void *arg0) {
((void (*)(s32, s32))func_8012AD44)((s32)arg0, 1);
}
extern void func_801800CC(s32 a0);
extern void func_8002D4C8(s32 a0, s32 a1);
@@ -5147,7 +5153,32 @@ void func_80180838(void *a0)
}
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_801809D4);
extern void func_8012AD44(s32 *a0, s16 a1);
void func_801809D4(void)
{
int new_var;
((void (*)(s32, s32)) func_8012AD44)(new_var, 3);
new_var = 0x51AB;
}
/* ---- callees (TU canon: src/ov_SC06_024/ov_SC06_024_jr_8017BEBC.c L3514/3515) ---- */
+11 -1
View File
@@ -2998,7 +2998,17 @@ void func_801847CC(s32 *a0) {
}
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184304", func_80184818);
void func_80184818(s32 param_1) {
if (*(u8 *)(param_1 + 0xC1) != 0) {
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = func_80047948(*(s32 *)(param_1 + 0xE4) << 7) >> 5;
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = func_8004787C(*(s32 *)(param_1 + 0xE4) << 7) >> 4;
func_8012B370(param_1);
*(s32 *)(param_1 + 0xE4) += 1;
}
}
extern void func_802A828_dummy_never_used(void);
extern void func_8012A828(s32 a0, void *a1);
+13 -1
View File
@@ -4477,7 +4477,19 @@ s32 a5;
}
INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_80187414);
extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
void func_80187414(s32 a0, void *a1, void *a2, s32 a3) {
s32 buf0;
s32 buf1;
s32 buf2;
s32 temp[8];
func_8012EC04(a0, a3, temp);
func_8012F14C((s32)temp, (s32)a1, (s32)a2);
}
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
+11 -1
View File
@@ -3032,7 +3032,17 @@ void func_80186CA4(s32 param_1) {
}
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801867DC", func_80186CF0);
void func_80186CF0(s32 param_1) {
if (*(u8 *)(param_1 + 0xC1) != 0) {
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = func_80047948(*(s32 *)(param_1 + 0xE4) << 7) >> 5;
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = func_8004787C(*(s32 *)(param_1 + 0xE4) << 7) >> 4;
func_8012B370(param_1);
*(s32 *)(param_1 + 0xE4) += 1;
}
}
extern void func_80131B14();
extern void func_8012A828(s32 a0, void *a1);
+55 -1
View File
@@ -3432,7 +3432,61 @@ void func_8017DC70(s32 param_1, s16 *param_2) {
}
INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_8017DE08);
extern void *func_80010A08(s32 a0);
extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
extern s32 AddPrim(s32 a0, void *a1);
extern s32 D_800A651C;
extern s16 D_800B9A02;
s32 func_8017DE08(s32 a0)
{
u8 *p;
s32 ot;
s32 tp;
register s32 c1 __asm__("$3");
ot = *(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14));
p = (u8 *)func_80010A08(0x30);
if (p != 0) {
tp = GetTPage(0, 1, 0, 0);
func_8005A600((s32)p, 0, 0, (u16)tp, 0);
/* r0,r1,r2,r3 then g0..g3 then b0..b3 -- one load each */
*(u8 *)(p + 0x10) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x18) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x20) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x28) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x11) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x19) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x21) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x29) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x12) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x1A) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x22) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0x2A) = *(s32 *)((u8 *)a0 + 0x1C);
*(u8 *)(p + 0xF) = 8; /* tag len */
*(u8 *)(p + 0x13) = 0x3A; /* code */
*(s16 *)(p + 0x1C) = 0xA0; /* x1 */
*(s16 *)(p + 0x2C) = 0xA0; /* x3 */
*(s16 *)(p + 0x16) = -0x78; /* y0 */
*(s16 *)(p + 0x1E) = -0x78; /* y1 */
c1 = -0xA0;
*(s16 *)(p + 0x14) = c1; /* x0 */
*(s16 *)(p + 0x24) = c1; /* x2 */
*(s16 *)(p + 0x26) = 0x78; /* y2 */
*(s16 *)(p + 0x2E) = 0x78; /* y3 */
AddPrim(ot, p + 0xC);
AddPrim(ot, p);
}
}
INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_8017DF70);
+13 -1
View File
@@ -3984,7 +3984,19 @@ s32 a5;
}
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80186574", func_80187E08);
extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3);
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
void func_80187E08(s32 a0, void *a1, void *a2, s32 a3) {
s32 buf0;
s32 buf1;
s32 buf2;
s32 temp[8];
func_8012EC04(a0, a3, temp);
func_8012F14C((s32)temp, (s32)a1, (s32)a2);
}
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
+7 -1
View File
@@ -8847,7 +8847,13 @@ void aF801866D4(void)
}
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_8018672C);
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3);
void func_8018672C(void *arg0) {
((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, arg0, 0);
}
extern s32 func_8014C050(s32 a0, s32 a1);
+23 -1
View File
@@ -3886,7 +3886,29 @@ s32 func_8017CF44(void *a0) {
}
INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8017AE2C", func_8017CFC0);
extern s32 func_800167F0(s32 a0);
extern void func_80029514(s32 a0);
extern void func_80029124(s32 a0, s32 a1);
extern void func_8002AEE4(void);
extern s8 D_80078EC6;
s32 func_8017CFC0(void) {
s32 v0;
v0 = func_800167F0(4);
if ((v0 & 0xFFFF) != 0) {
func_80029514(0x6A4);
func_80029124(0x11D, 1);
func_80029124(0x123, 1);
D_80078EC6 = 1;
func_8002AEE4();
return 1;
}
return 0;
}
extern void (*D_80181858[])(void);