mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 07:40:42 -04:00
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:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) */
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) */
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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[];
|
||||
|
||||
|
||||
@@ -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[];
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) */
|
||||
|
||||
|
||||
@@ -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) */
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) */
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) ---- */
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user