mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 22:45:39 -04:00
feat(t5): Claude wave t5j — 45 banked (sonnet 41/44, opus 4/4, +recovery); fleet 213 passed, 0 failed of 213 (P31 S62 T5)
This commit is contained in:
@@ -3167,9 +3167,37 @@ void func_8017D898(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898", func_8017E778);
|
||||
extern u8 D_8018F494[];
|
||||
extern u8 D_8018F570[];
|
||||
extern u8 *D_801274C8;
|
||||
extern void *D_801274CC;
|
||||
extern s32 D_8012704C;
|
||||
extern s32 func_8017FB44(s32 param_1);
|
||||
|
||||
void func_8017E778(void)
|
||||
{
|
||||
D_801274C8 = D_8018F494;
|
||||
D_801274CC = D_8018F570;
|
||||
func_8017FB44(0);
|
||||
D_8012704C = 1;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8017FB44(s32 param_1);
|
||||
|
||||
void func_8017E7C4(void)
|
||||
{
|
||||
extern u8 D_8018F494[];
|
||||
extern u8 D_8018F570[];
|
||||
extern u8 *D_801274C8;
|
||||
extern void *D_801274CC;
|
||||
extern s32 D_8012704C;
|
||||
D_801274C8 = D_8018F494;
|
||||
D_801274CC = ((s16 *)D_8018F570);
|
||||
func_8017FB44(0);
|
||||
D_8012704C = 1;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898", func_8017E7C4);
|
||||
|
||||
|
||||
extern int func_8017FB44(int param_1);
|
||||
@@ -3632,7 +3660,36 @@ void func_8017F0F0(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898", func_8017F188);
|
||||
/* A-prop sibling of func_8017F054 / func_8017F0F0 in this TU (same skeleton,
|
||||
* different per-overlay constants + func_8012A018's second arg). Symbol
|
||||
* surface taken from asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898/func_8017F188.s. */
|
||||
extern void func_8012A018(s32 a0, s32 a1);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017F3E4(void *a0);
|
||||
extern u8 D_80126948[];
|
||||
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;
|
||||
|
||||
void func_8017F188(void) {
|
||||
D_80126954 = 0x12C;
|
||||
D_8012695C = 0x2BC;
|
||||
D_80126968 = 0x71;
|
||||
D_8012696A = 0;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = -0x70;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_8017F3E4, 2);
|
||||
func_8012A094((s32)D_80126948);
|
||||
func_8017F3E4(D_80126948);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
|
||||
@@ -7224,7 +7224,78 @@ void func_801821F4(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8017AE2C", func_80182328);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern void func_80182674(s32 a0, s16 *vec, s32 count, s32 flag);
|
||||
extern void func_80182848(void *a0, u8 *a1, s32 a2, s32 a3, s32 a4);
|
||||
extern s32 func_80133784(s32 a0, void *a1, s32 a2);
|
||||
extern void func_8013C98C(void);
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
extern u16 D_80188E58;
|
||||
extern u16 D_80188E5A;
|
||||
extern u16 D_80188E5C;
|
||||
extern u16 D_80188E60;
|
||||
extern u16 D_80188E62;
|
||||
extern u16 D_80188E64;
|
||||
extern u8 D_80188E68[];
|
||||
|
||||
void func_80182328(void *a0)
|
||||
{
|
||||
extern void (*D_80188F48[])(void);
|
||||
s16 sp18[3];
|
||||
s16 sp20[3];
|
||||
s16 sp28[3];
|
||||
s32 v0;
|
||||
s32 pad[2];
|
||||
|
||||
func_8012AD80((s32)a0);
|
||||
|
||||
sp18[0] = *(u16 *)((s8 *)a0 + 0x3A);
|
||||
sp18[1] = *(u16 *)((s8 *)a0 + 0x3E);
|
||||
sp18[2] = *(u16 *)((s8 *)a0 + 0x42);
|
||||
|
||||
sp20[0] = *(u16 *)((s8 *)a0 + 0x6);
|
||||
sp20[1] = *(u16 *)((s8 *)a0 + 0xA);
|
||||
sp20[2] = *(u16 *)((s8 *)a0 + 0xE);
|
||||
|
||||
sp28[0] = sp20[0] + D_80188E60;
|
||||
sp28[1] = sp20[1] + D_80188E62;
|
||||
sp28[2] = sp20[2] + D_80188E64;
|
||||
|
||||
func_80182674((s32)a0, sp28, 5, 0);
|
||||
|
||||
if ((*(s32 *)((s8 *)a0 + 0x1C) & 7) == 0) {
|
||||
func_80182848(a0, D_80188E68, 5, 0, 0);
|
||||
func_80182848(a0, D_80188E68, 5, 0, 1);
|
||||
}
|
||||
|
||||
sp18[0] = sp18[0] + D_80188E58;
|
||||
sp18[1] = sp18[1] + D_80188E5A;
|
||||
sp18[2] = sp18[2] + D_80188E5C;
|
||||
|
||||
sp20[0] = sp20[0] + D_80188E58;
|
||||
sp20[1] = sp20[1] + D_80188E5A;
|
||||
sp20[2] = sp20[2] + D_80188E5C;
|
||||
|
||||
*(s32 *)((s8 *)a0 + 0x1C) = *(s32 *)((s8 *)a0 + 0x1C) + 1;
|
||||
v0 = func_80133784(1, sp18, (s32)sp20);
|
||||
|
||||
if ((v0 & 0x2000) != 0) {
|
||||
*(u16 *)((s8 *)a0 + 0x2) = 4;
|
||||
*(s32 *)((s8 *)a0 + 0x1C) = 0x3C;
|
||||
*(u16 *)((s8 *)a0 + 0x34) = 0;
|
||||
func_8013C98C();
|
||||
func_8013C9C4(&D_80188F48);
|
||||
*(s32 *)((s8 *)a0 + 0xE0) = 3;
|
||||
func_8002D4C8(0x63E, 0);
|
||||
}
|
||||
|
||||
func_80182618(a0);
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_80188E80[];
|
||||
|
||||
|
||||
@@ -3315,7 +3315,12 @@ DEFINE_func_8017BEAC() /* dedup: shared engine-core @0x8017BEAC (src/shared) */
|
||||
|
||||
DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017AE2C", func_8017BEBC);
|
||||
extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
||||
|
||||
void func_8017BEBC(s32 arg0, s32 arg1) {
|
||||
func_8017BF34(arg0, arg1, 0xC, 0);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8017BEE0() /* dedup: shared engine-core @0x8017BEE0 (src/shared) */
|
||||
|
||||
|
||||
@@ -4973,7 +4973,26 @@ skip_escape:;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80182628);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_8012BA10(s32 a0, s32 a1);
|
||||
extern u8 D_801ADE54[];
|
||||
|
||||
void func_80182628(void *a0) {
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
iVar1 = func_8012BA10((s32)a0, 4);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += iVar1;
|
||||
iVar2 = *(s32 *)(a0 + 0x1C) - 1;
|
||||
*(s32 *)(a0 + 0x1C) = iVar2;
|
||||
if (iVar2 == 0) {
|
||||
*(u16 *)(a0 + 0x2) = 0x1A;
|
||||
func_8012A828((s32)a0, D_801ADE54);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
@@ -3519,7 +3519,21 @@ void func_80186894(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80185C14", func_801869C0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_801ADC6C;
|
||||
|
||||
void func_801869C0(s32 param_1)
|
||||
{
|
||||
s32 v0;
|
||||
|
||||
v0 = *(s32 *)(param_1 + 0x1c) - 1;
|
||||
*(s32 *)(param_1 + 0x1c) = v0;
|
||||
if (v0 == 0) {
|
||||
*(s16 *)(param_1 + 2) = 6;
|
||||
func_8012A828(param_1, &D_801ADC6C);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80186A00(s32 a0) {
|
||||
extern s32 func_8012B8E4(s32 a0, s32 a1);
|
||||
@@ -4064,7 +4078,26 @@ void func_8018741C(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80185C14", func_801874D0);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern u8 D_801ADE54[];
|
||||
|
||||
void func_801874D0(s32 a0) {
|
||||
register s32 s0 __asm__("$16");
|
||||
s32 v0;
|
||||
|
||||
s0 = a0;
|
||||
if ((*(u16 *)(s0 + 0x72) & 0x4000) != 0) {
|
||||
func_8002D4C8(0x619, 0);
|
||||
}
|
||||
v0 = *(s32 *)(s0 + 0x1C) - 1;
|
||||
*(s32 *)(s0 + 0x1C) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012A828(s0, D_801ADE54);
|
||||
*(s16 *)(s0 + 0x2) = 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3305,7 +3305,36 @@ void func_8017ECF0(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017ED18);
|
||||
extern s32 D_80126954;
|
||||
extern s32 D_80126950;
|
||||
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;
|
||||
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern u8 D_80126948[];
|
||||
extern void func_8017EDBC(void *a0);
|
||||
|
||||
void func_8017ED18(void) {
|
||||
D_80126954 = 0x12C;
|
||||
D_80126950 = 0x12C;
|
||||
D_8012695C = 0x4B0;
|
||||
D_80126968 = 0x2AA;
|
||||
D_8012696A = 0x800;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = 0;
|
||||
D_8012697A = 0x100;
|
||||
func_8012A018((s32) func_8017EDBC, 0);
|
||||
func_8012A094((s32) D_80126948);
|
||||
func_8017EDBC((void *) D_80126948);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80185FB8[])(void);
|
||||
@@ -3476,9 +3505,53 @@ void func_8017F1B4(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017F23C);
|
||||
extern void func_8012B200(u8 *a0);
|
||||
extern void func_8012B178(s32 a0, s32 a1);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_8017F23C(void *a0) {
|
||||
*(u16 *)((s32)a0 + 0x2) = 3;
|
||||
func_8012B200(a0);
|
||||
func_8012B178((s32)a0, 0xFFFE0000);
|
||||
*(s32 *)((s32)a0 + 0x1C) = 0x41;
|
||||
func_8002D4C8(0x5C2, 0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012AD80(s32);
|
||||
extern s32 func_8012BEE8(s32);
|
||||
extern void func_8017BEBC(s32 a0, s16 *a1, s16 a2);
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern s8 D_80186174[];
|
||||
extern u8 D_80186114[];
|
||||
|
||||
void func_8017F28C(void *arg0)
|
||||
{
|
||||
u8 *s0 = arg0;
|
||||
s32 v1;
|
||||
s16 *s2;
|
||||
s32 i;
|
||||
|
||||
v1 = *(s32 *)(s0 + 0x20);
|
||||
*(u16 *)(v1 + 0x10) += 0x10;
|
||||
|
||||
func_8012AD80((s32) s0);
|
||||
|
||||
if (func_8012BEE8((s32) s0) != 0) {
|
||||
v1 = *(s32 *)(s0 + 0x20);
|
||||
*(u16 *)(v1 + 0x10) = 0x400;
|
||||
*(u16 *)(s0 + 2) = 4;
|
||||
s2 = (s16 *)(D_80186174 + ((*(u16 *)(s0 + 0x70) & 0xF) << 3));
|
||||
for (i = 0; i < 5; i++) {
|
||||
func_8017BEBC((s32) s0, s2, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (*(s32 *)(s0 + 0x1C) == 0x38) {
|
||||
func_8013C9C4(D_80186114);
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017F28C);
|
||||
|
||||
extern void func_8012B200(u8 *a0);
|
||||
extern s32 func_8017F860(void *a0);
|
||||
@@ -3515,7 +3588,22 @@ void func_8017F394(void *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017F428);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017F6B8);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8017F95C(s32 a0);
|
||||
extern void func_8012B2CC(s32 a0);
|
||||
extern u8 D_80185FF0[];
|
||||
extern s32 D_801860F4;
|
||||
|
||||
void func_8017F6B8(s32 a0) {
|
||||
*(s16 *)(a0 + 0x2) = 8;
|
||||
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0x500;
|
||||
*(s32 *)(a0 + 0x58) = (s32)D_80185FF0 | 0x40000000 | 0x20000000;
|
||||
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x20) = (s32)&D_801860F4;
|
||||
func_8017F95C(a0);
|
||||
func_8012B2CC(a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8017DB5C", func_8017F728);
|
||||
|
||||
|
||||
@@ -5769,7 +5769,33 @@ s32 func_8017FD58(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FD70);
|
||||
#include "common.h"
|
||||
|
||||
void func_8017FD70(s32 arg0) {
|
||||
extern s32 D_80126B9C;
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern void func_80029514(s32);
|
||||
extern s16 D_8018F7C8;
|
||||
extern int func_80178970();
|
||||
extern void func_80178D18();
|
||||
extern void func_8017F40C(void *arg0);
|
||||
switch (*(u16 *)(arg0 + 0x34)) {
|
||||
case 0:
|
||||
if (D_80126B9C & 0x8000000) {
|
||||
*(u16 *)(arg0 + 0x34) = 1;
|
||||
func_80178B18(arg0, &D_8018F7C8);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (((s32 (*)(s32))func_80178970)(arg0) != 0) {
|
||||
((void (*)(s32))func_80178D18)((s32)arg0);
|
||||
func_80029514(0x1AE);
|
||||
func_8017F40C((void *)arg0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017FE10(void) {
|
||||
}
|
||||
@@ -5919,7 +5945,20 @@ void func_80180230(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8018023C);
|
||||
extern u16 D_800B99DA;
|
||||
extern u8 D_8018FC10;
|
||||
extern u8 D_8018FC11;
|
||||
extern u8 D_8018FC12;
|
||||
extern u8 D_8018FC13;
|
||||
extern s32 func_801842F8(u8 a0, u8 a1, u8 a2, u8 a3);
|
||||
extern void func_8017FF64(void *a0);
|
||||
|
||||
void func_8018023C(void *a0) {
|
||||
if ((D_800B99DA & 3) == 0 && func_801842F8(D_8018FC10, D_8018FC11, D_8018FC12, D_8018FC13) != 0) {
|
||||
func_8017FF64(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_801846CC(s32 a0);
|
||||
extern void func_801845FC(s32, s32, s32, s32);
|
||||
@@ -6133,7 +6172,31 @@ extern void func_800D1724(s32 a0);
|
||||
void func_8018072C(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_80180734);
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern int func_800D0F8C(int a0);
|
||||
extern void func_80178CBC(s32 *a0, s32 a1);
|
||||
extern void func_80029124(s32, s32);
|
||||
extern void func_800D0F4C(s32 a0);
|
||||
extern u8 D_8018FD84;
|
||||
extern u8 D_8018FC54;
|
||||
extern u8 D_8018FCB4;
|
||||
|
||||
void func_80180734(s32 a0) {
|
||||
s32 t;
|
||||
|
||||
*(s16 *)(a0 + 2) = 3;
|
||||
t = func_80029178(0x106);
|
||||
if ((t & 0xFF) != 0) {
|
||||
func_80178CBC((s32 *)a0, (s32)&D_8018FD84);
|
||||
} else if (func_800D0F8C(0x58) == 0) {
|
||||
func_80178CBC((s32 *)a0, (s32)&D_8018FC54);
|
||||
} else {
|
||||
func_80178CBC((s32 *)a0, (s32)&D_8018FCB4);
|
||||
func_80029124(0x106, 1);
|
||||
func_800D0F4C(0x58);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -6317,7 +6317,23 @@ void func_80181D04(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181D4C);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_80181D4C(s32 arg0) {
|
||||
extern u16 D_80126980;
|
||||
extern s32 func_80182334(void);
|
||||
extern void func_8012C098(void);
|
||||
extern void func_801823B8();
|
||||
|
||||
if (*(s32 *)((s32)arg0 + 0xDC) - 0xA == D_80126980) {
|
||||
func_8002D4C8(0x88E, 0);
|
||||
}
|
||||
func_801823B8(arg0, 2, 0);
|
||||
if (!((s32 (*)(s32))func_80182334)(arg0)) {
|
||||
((void (*)(s32))func_8012C098)(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80013328(s32 a0, s32 a1);
|
||||
@@ -6350,7 +6366,21 @@ extern s32 func_8012AD50(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181E88);
|
||||
void func_80181E88(void *a0) {
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8018227C(void *, void *);
|
||||
extern s32 func_8012AD50(void *);
|
||||
extern s32 D_8019BA68;
|
||||
s32 ret;
|
||||
|
||||
ret = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)a0 + 0x20) = ret;
|
||||
if (ret != 0) {
|
||||
func_8018227C(a0, &D_8019BA68);
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80181ED0(s32 arg0) {
|
||||
extern u16 D_80126980;
|
||||
@@ -6449,9 +6479,39 @@ extern s32 func_8012AD50(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018218C);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8018227C(void*, void*);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
extern s32 D_8019C8B8;
|
||||
|
||||
void func_8018218C(void *a0) {
|
||||
s32 ret;
|
||||
|
||||
ret = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)a0 + 0x20) = ret;
|
||||
if (ret != 0) {
|
||||
func_8018227C(a0, &D_8019C8B8);
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_801821D4(void *a0) {
|
||||
extern s32 D_801151D4;
|
||||
extern s32 func_80182334(void);
|
||||
extern void func_8012C098(void);
|
||||
|
||||
s32 wp = D_801151D4;
|
||||
|
||||
if (((s32 (*)(s32))func_80182334)((s32)a0) == 0) {
|
||||
((void (*)(s32))func_8012C098)((s32)a0);
|
||||
} else {
|
||||
if (*(s32 *)((s32)a0 + 0xDC) - 0xA == *(u16 *)(wp + 0x38)) {
|
||||
func_8002D4C8(0x88E, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801821D4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80182240);
|
||||
|
||||
|
||||
@@ -4721,7 +4721,44 @@ extern void func_8012CBCC(s32 a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186624);
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8012B200(u8 *a0);
|
||||
extern void func_8001CA1C(void *a0, void *a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 rand(void);
|
||||
|
||||
extern u8 D_80192AFC[];
|
||||
extern u8 D_80192B38[];
|
||||
|
||||
void func_80186624(s32 param_1)
|
||||
{
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
|
||||
if ((*(s32 *)(param_1 + 0x20) = func_8012C1B8()) == 0) {
|
||||
func_8012CAE4((void *)param_1);
|
||||
} else {
|
||||
func_8012B200((u8 *)param_1);
|
||||
func_8001CA1C((void *)(*(s32 *)(param_1 + 0x20)), D_80192AFC);
|
||||
func_8012A828(param_1, D_80192B38);
|
||||
*(s16 *)(param_1 + 2) = 1;
|
||||
*(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000;
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2C) |= 0x10;
|
||||
v1 = *(s32 *)(param_1 + 0x20);
|
||||
*(s16 *)(v1 + 0x1A) = 0x4000;
|
||||
*(s16 *)(v1 + 0x18) = 0x4000;
|
||||
v0 = rand();
|
||||
v1 = ((v0 & 0x7FF) - 0x400) * 0x156;
|
||||
*(s32 *)(param_1 + 0x10) = v1;
|
||||
v0 = rand();
|
||||
*(s32 *)(param_1 + 0x14) = ((v0 & 0x7FF) - 0x400) * 0x80;
|
||||
*(s16 *)(param_1 + 6) = 0x270;
|
||||
*(s16 *)(param_1 + 0xA) = -0xC0;
|
||||
*(s16 *)(param_1 + 0xE) = -0x40;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
@@ -4927,7 +4964,38 @@ void func_80186BD8(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80186C44);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
extern s32 rand(void);
|
||||
|
||||
void func_80186C44(s32 a0)
|
||||
{
|
||||
s32 s1 = a0;
|
||||
s32 v;
|
||||
s32 i;
|
||||
s32 s0;
|
||||
|
||||
v = *(s32 *)(s1 + 0x1C) - 1;
|
||||
*(s32 *)(s1 + 0x1C) = v;
|
||||
if (v == 0) {
|
||||
*(s32 *)(s1 + 0x1C) = 2;
|
||||
*(u16 *)(s1 + 2) = 3;
|
||||
func_8002D4C8(0x89D, 0);
|
||||
for (i = 0; i < 8; i++) {
|
||||
s0 = func_8012C588(0x2ED, s1);
|
||||
if (s0 != 0) {
|
||||
*(s16 *)(s0 + 0x16) = -0x10;
|
||||
*(s16 *)(s0 + 0xA) = *(u16 *)(s0 + 0xA) + 0x20;
|
||||
*(s16 *)(s0 + 0xE) = *(u16 *)(s0 + 0xE) - 0x18;
|
||||
*(u16 *)(s0 + 0x12) = (rand() & 7) - 4;
|
||||
*(u16 *)(s0 + 0x1A) = -4 - (rand() & 7);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
*(u16 *)(s1 + 6) = *(u16 *)(s1 + 6) ^ 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80186D38(void) {
|
||||
}
|
||||
@@ -5158,7 +5226,36 @@ extern void func_8012C218(void*);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187438);
|
||||
#include "common.h"
|
||||
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void func_8001CA1C(void *a0, void *a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
extern u8 D_80192E3C[];
|
||||
extern u8 D_80192E48[];
|
||||
|
||||
void func_80187438(s32 param_1)
|
||||
{
|
||||
s32 v0;
|
||||
|
||||
if ((*(s32 *)(param_1 + 0x20) = func_8012C1B8()) == 0) {
|
||||
func_8012CAE4((void *)param_1);
|
||||
} else {
|
||||
func_8012B23C(param_1);
|
||||
func_8001CA1C((void *)(*(s32 *)(param_1 + 0x20)), D_80192E3C);
|
||||
func_8012A828(param_1, D_80192E48);
|
||||
v0 = *(s32 *)(param_1 + 0x20);
|
||||
*(u16 *)(param_1 + 2) = 1;
|
||||
*(s16 *)(param_1 + 0xE) = -0x30;
|
||||
*(u32 *)(v0 + 4) |= 0x8000000;
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = 0xC00;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x14;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012C218(void*);
|
||||
extern void func_8017ECE4(void);
|
||||
@@ -5518,7 +5615,32 @@ void func_80187D00(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80187D70);
|
||||
extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */
|
||||
extern void func_80149020(s32 *a0);
|
||||
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_80146CA0(void *a0);
|
||||
|
||||
void func_80187D70(s32 a0)
|
||||
{
|
||||
extern s16 D_801C3D10;
|
||||
extern s16 D_801C3D12;
|
||||
extern s16 D_801C3D14;
|
||||
s16 *sp0 = &D_801C3D10;
|
||||
|
||||
*sp0 = func_8017EC7C(a0);
|
||||
func_80149020((s32 *)a0);
|
||||
*(s16 *)(a0 + 0x6) = func_80012C6C(*(s16 *)(a0 + 0x6), *sp0, 8);
|
||||
*(s16 *)(a0 + 0xA) = func_80012C6C(*(s16 *)(a0 + 0xA), D_801C3D12, 8);
|
||||
*(s16 *)(a0 + 0xE) = func_80012C6C(*(s16 *)(a0 + 0xE), D_801C3D14, 8);
|
||||
if ((*(s16 *)(a0 + 0x6) == *sp0) &&
|
||||
(*(s16 *)(a0 + 0xA) == D_801C3D12) &&
|
||||
(*(s16 *)(a0 + 0xE) == D_801C3D14)) {
|
||||
*(u8 *)(a0 + 0xDE) = 0;
|
||||
*(u8 *)(a0 + 0xDF) = 0;
|
||||
func_80146CA0((void *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80187E48(s32 a0) {
|
||||
s32 pad[4];
|
||||
|
||||
@@ -3160,9 +3160,43 @@ void func_8017BEBC(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017CD9C);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8002931C(s32 a0);
|
||||
extern s32 func_8017D7D4(s32 param_1);
|
||||
|
||||
extern u8 D_801939DC[];
|
||||
extern u8 D_80193B1C[];
|
||||
|
||||
extern u8 *D_801274C8;
|
||||
extern void *D_801274CC;
|
||||
|
||||
void func_8017CD9C(void)
|
||||
{
|
||||
func_8002931C(0x3C00000);
|
||||
|
||||
D_801274C8 = D_801939DC;
|
||||
D_801274CC = D_80193B1C;
|
||||
|
||||
func_8017D7D4(0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8002931C(s32 a0);
|
||||
extern u8 D_80193B80[];
|
||||
extern u8 D_80193BE4[];
|
||||
extern u8 *D_801274C8;
|
||||
extern void *D_801274CC;
|
||||
extern int func_8017D7D4(int);
|
||||
|
||||
void func_8017CDE4(void)
|
||||
{
|
||||
func_8002931C(0x3C00000);
|
||||
D_801274C8 = D_80193B80;
|
||||
D_801274CC = D_80193BE4;
|
||||
func_8017D7D4(1);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017CDE4);
|
||||
|
||||
|
||||
extern void (*D_8019327C[])(void);
|
||||
@@ -3595,7 +3629,24 @@ int func_8017D7D4(int param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017D804);
|
||||
extern void (*D_80193514[])(void);
|
||||
extern s32 func_8017E8F8(s32 a0);
|
||||
extern void func_8017F4FC(void *a0);
|
||||
extern s32 func_8012BDBC(s32, s32);
|
||||
|
||||
void func_8017D804(s32 a0) {
|
||||
D_80193514[*(u16 *)(a0 + 0x2)]();
|
||||
if (*(u16 *)(a0 + 0x0) != 0) {
|
||||
func_8017E8F8(a0);
|
||||
func_8017F4FC((void *)a0);
|
||||
if (func_8012BDBC(a0, 0x200) == 0) {
|
||||
*(u16 *)(a0 + 0x5C) |= 0x4000;
|
||||
} else {
|
||||
*(u16 *)(a0 + 0x5C) &= 0xBFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017D89C);
|
||||
|
||||
@@ -4131,7 +4182,63 @@ void func_8017EADC(s32 a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017EC4C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017F4FC);
|
||||
extern u16 D_800B99DA;
|
||||
extern s32 D_801E1158;
|
||||
extern s32 D_801935B0;
|
||||
extern s32 D_801935B8;
|
||||
extern void func_8012EC04(s32 a0, s32 a1, s32 *a2);
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
extern s32 rand(void);
|
||||
|
||||
void func_8017F4FC(void* a0)
|
||||
{
|
||||
s16 m[16];
|
||||
s16 vec[4];
|
||||
s32 obj;
|
||||
|
||||
if (*(s32 *)(a0 + 0xE4) & 1) {
|
||||
if (D_800B99DA % 5 == 0) {
|
||||
obj = func_80132EF4(a0, 0x22);
|
||||
if (obj != 0) {
|
||||
func_8012EC04(a0, D_801E1158, (s32 *)m);
|
||||
func_8012F14C((s32)m, (s32)&D_801935B0, (s32)vec);
|
||||
*(u16 *)(obj + 0x34) = 0x2001;
|
||||
*(u16 *)(obj + 0x6) = vec[0];
|
||||
*(u16 *)(obj + 0xA) = vec[1];
|
||||
*(u16 *)(obj + 0xE) = vec[2];
|
||||
*(s32 *)(obj + 0x14) = -0x60000 - ((rand() % 3) << 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (*(s32 *)(a0 + 0xE4) & 2) {
|
||||
if (D_800B99DA % 5 == 0) {
|
||||
obj = func_80132EF4(a0, 0x22);
|
||||
if (obj != 0) {
|
||||
func_8012EC04(a0, D_801E1158, (s32 *)m);
|
||||
func_8012F14C((s32)m, (s32)&D_801935B0, (s32)vec);
|
||||
*(u16 *)(obj + 0x34) = 0x2001;
|
||||
*(u16 *)(obj + 0x6) = vec[0];
|
||||
*(u16 *)(obj + 0xA) = vec[1];
|
||||
*(u16 *)(obj + 0xE) = vec[2];
|
||||
*(s32 *)(obj + 0x14) = -0x60000 - ((rand() % 3) << 16);
|
||||
}
|
||||
}
|
||||
if (D_800B99DA % 6 == 0) {
|
||||
obj = func_80132EF4(a0, 0x22);
|
||||
if (obj != 0) {
|
||||
func_8012EC04(a0, D_801E1158, (s32 *)m);
|
||||
func_8012F14C((s32)m, (s32)&D_801935B8, (s32)vec);
|
||||
*(u16 *)(obj + 0x34) = 0x2001;
|
||||
*(u16 *)(obj + 0x6) = vec[0];
|
||||
*(u16 *)(obj + 0xA) = vec[1];
|
||||
*(u16 *)(obj + 0xE) = vec[2];
|
||||
*(s32 *)(obj + 0x14) = -0x60000 - ((rand() % 3) << 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801935C8[])(void);
|
||||
|
||||
@@ -4859,7 +4859,62 @@ s32 func_801825D8(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_801825EC);
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern void func_80029124(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_801A249C;
|
||||
extern s32 func_801399F0(s32 a0);
|
||||
extern s32 D_801B1B54;
|
||||
extern void func_80174714(void);
|
||||
extern void func_801823FC(s32 a0);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern u8 D_801889F8[];
|
||||
extern u8 D_801A08B4[];
|
||||
extern s16 D_801B1714;
|
||||
extern s16 D_801B1708;
|
||||
extern s16 D_801B1724;
|
||||
extern s16 D_801B1744;
|
||||
extern s16 D_801B1710;
|
||||
extern s32 D_801270C8;
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern void func_8016F388();
|
||||
extern void func_80180D84(void *arg0);
|
||||
extern u8 D_80188E40[];
|
||||
|
||||
void func_801825EC(s32 param_1)
|
||||
{
|
||||
u16 var;
|
||||
|
||||
if ((func_80029178(0x120) & 0xFF) != 0) {
|
||||
func_80029124(0x120, 0);
|
||||
func_8012A828(param_1, &D_801A249C);
|
||||
}
|
||||
|
||||
if (func_801399F0(D_801B1B54) != 0) {
|
||||
func_80174714();
|
||||
func_801823FC(D_801B1B54);
|
||||
*(u16 *)(param_1 + 2) = 3;
|
||||
func_8012E8E0(param_1, (s32)&D_801889F8);
|
||||
func_8012A828(param_1, &D_801A08B4);
|
||||
*(s32 *)(param_1 + 0x1C) = 0x3C;
|
||||
var = (*(u16 *)&D_801B1714);
|
||||
*(u16 *)(param_1 + 0x34) = 0;
|
||||
*(u16 *)(param_1 + 0xDC) = 0;
|
||||
*(u16 *)(param_1 + 0xDE) = 0;
|
||||
D_801B1708 = 0;
|
||||
D_801B1724 = 0;
|
||||
D_801B1744 = 1;
|
||||
D_801B1710 = var + 1;
|
||||
if (D_801B1710 >= 4) {
|
||||
func_80180D84((void *)param_1);
|
||||
} else {
|
||||
func_80178B18(param_1, (s32)&D_80188E40);
|
||||
func_8016F388();
|
||||
D_801270C8 = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_8012BEE8(s32 arg);
|
||||
extern s16 D_80126B66;
|
||||
@@ -4931,7 +4986,27 @@ void func_80182850(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_801828A0);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern s32 D_80188EF4;
|
||||
extern void func_80015D4C(s32 a0, s32 a1, s32 a2, s32 a3, u8 a4, u8 a5, u8 a6, u16 a7, u16 a8);
|
||||
|
||||
void func_801828A0(s32 a0) {
|
||||
s32 s0;
|
||||
register s32 sum __asm__("$2");
|
||||
s32 x;
|
||||
|
||||
s0 = a0;
|
||||
func_8012AD80(s0);
|
||||
*(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) += D_80188EF4;
|
||||
sum = *(s32 *)(s0 + 0x1C) + 4;
|
||||
x = sum;
|
||||
*(s32 *)(s0 + 0x1C) = x;
|
||||
if (x >= 0x100) {
|
||||
x = 0xFF;
|
||||
}
|
||||
func_80015D4C(-0xA0, -0x78, 0x140, 0xF0, x, x, x, 0x20, 1);
|
||||
}
|
||||
|
||||
|
||||
s32 func_80182938(u8 *param_1)
|
||||
{
|
||||
@@ -4941,7 +5016,19 @@ s32 func_80182938(u8 *param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182950);
|
||||
void func_80182950(u8 *param_1)
|
||||
{
|
||||
s32 x;
|
||||
|
||||
x = *(s32 *)(param_1 + 0x1C) - 0x10;
|
||||
*(s32 *)(param_1 + 0x1C) = x;
|
||||
if (x < 0) {
|
||||
x = 0;
|
||||
}
|
||||
x &= 0xFF;
|
||||
func_80015D4C(-0xA0, -0x78, 0x140, 0xF0, x, x, x, 0x20, 1);
|
||||
}
|
||||
|
||||
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
@@ -5101,7 +5188,47 @@ void func_80182C74(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182D4C);
|
||||
extern void func_8012C1B8(void); /* fleet-modal spelling, cast at call */
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern void (*D_80189094[])(void);
|
||||
extern void (*D_801890A4[])(void);
|
||||
|
||||
void func_80182D4C(void *a0)
|
||||
{
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
s16 v;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)a0 + 0x20) = v0;
|
||||
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
func_8001C810(v0, ((s32 *)D_80189094)[*(s16 *)((s32)a0 + 0x70)]);
|
||||
|
||||
v1 = *(s32 *)((s32)a0 + 0x20);
|
||||
*(s32 *)(v1 + 0x4) |= 0x8000;
|
||||
|
||||
v1 = *(s32 *)((s32)a0 + 0x20);
|
||||
*(u16 *)(v1 + 0x2C) |= 0x10;
|
||||
|
||||
v1 = *(s32 *)((s32)a0 + 0x20);
|
||||
*(u16 *)(v1 + 0x1C) = 0xC00;
|
||||
*(u16 *)(v1 + 0x1A) = 0xC00;
|
||||
*(u16 *)(v1 + 0x18) = 0xC00;
|
||||
|
||||
*(s16 *)((s32)a0 + 0x2) = 1;
|
||||
v = *(s16 *)((s32)a0 + 0x70);
|
||||
func_8012E8E0((s32)a0, (s32)D_801890A4 + (v << 3));
|
||||
|
||||
*(s32 *)((s32)a0 + 0x1C) = 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182E14);
|
||||
|
||||
|
||||
@@ -3429,7 +3429,41 @@ s32 param_1;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017AE2C", func_8017C120);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_800139C8(s32 a0, void *a1, void *a2);
|
||||
extern void func_80146E90(s32 *a0, s32 a1);
|
||||
extern s16 D_80195254;
|
||||
|
||||
void func_8017C120(param_1)
|
||||
int param_1;
|
||||
{
|
||||
int addr;
|
||||
int tmp;
|
||||
int iVar1;
|
||||
int cnt;
|
||||
s16 *p;
|
||||
u16 local[4];
|
||||
|
||||
addr = *(int *)(param_1 + 0x20);
|
||||
tmp = *(int *)(param_1 + 0x2C) + 0xE3;
|
||||
*(int *)(param_1 + 0x2C) = tmp;
|
||||
iVar1 = func_8004787C(tmp);
|
||||
p = &D_80195254;
|
||||
if (iVar1 < 0) {
|
||||
iVar1 = iVar1 + 0xFF;
|
||||
}
|
||||
*p = (s16)(iVar1 >> 8);
|
||||
func_800139C8(*(short *)(addr + 0x14), p - 2, local);
|
||||
*(short *)(param_1 + 6) = *(u16 *)(param_1 + 0x12) + local[0];
|
||||
*(short *)(param_1 + 0xE) = *(u16 *)(param_1 + 0x1A) + local[2];
|
||||
cnt = *(int *)(param_1 + 0x1C) - 1;
|
||||
*(int *)(param_1 + 0x1C) = cnt;
|
||||
if (cnt == -1) {
|
||||
func_80146E90(param_1, 0x10);
|
||||
*(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80146E98(s32 a0);
|
||||
extern void func_80146C3C();
|
||||
|
||||
@@ -3429,7 +3429,46 @@ void func_8017D6A4(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017D6CC);
|
||||
#ifndef BFM_ENGINE_TYPES_H
|
||||
|
||||
#endif
|
||||
|
||||
extern void func_8012A018(s32 a0, s32 a1);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017DC10(void *a0);
|
||||
extern void func_8017D7A4(void *a0);
|
||||
|
||||
void func_8017D6CC(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;
|
||||
extern u8 D_80126948[];
|
||||
extern Blk8 D_80126940;
|
||||
extern Blk8 D_801274E8;
|
||||
extern Blk8 D_801274F0;
|
||||
|
||||
D_80126954 = 0x190;
|
||||
D_8012695C = 0x4b0;
|
||||
D_80126968 = 0x2aa;
|
||||
D_8012696A = 0x800;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = 0;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_8017D7A4, 0);
|
||||
func_8012A094((s32)D_80126948);
|
||||
D_801274E8 = D_80126940;
|
||||
*(s16 *)&D_801274F0 = 0;
|
||||
func_8017DC10(D_80126948);
|
||||
func_8017D7A4(D_80126948);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801952F4[])(void);
|
||||
@@ -3439,7 +3478,104 @@ void func_8017D7A4(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017D7E0);
|
||||
#include "common.h"
|
||||
|
||||
void func_8017D7E0(s32 param_1) {
|
||||
typedef struct { s16 x0, x1, x2, x3; } UnalignedShortBlock;
|
||||
|
||||
extern u16 func_80148800(s32 *a0);
|
||||
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8017DA78(s32 a0, s16 *a1);
|
||||
extern void func_8017DC18(void);
|
||||
extern void func_8017DD48(void);
|
||||
extern void func_8017DD88(void);
|
||||
|
||||
extern s32 D_80126B58;
|
||||
extern UnalignedShortBlock D_80126940;
|
||||
extern s16 D_801274E8;
|
||||
extern s16 D_801274EA;
|
||||
extern s16 D_801274EC;
|
||||
extern s16 D_801274F0;
|
||||
extern s16 D_801952F8[];
|
||||
|
||||
UnalignedShortBlock sp10;
|
||||
s16 lo;
|
||||
s16 hi;
|
||||
s16 zc;
|
||||
s16 v2E;
|
||||
s16 v32;
|
||||
s32 idx;
|
||||
s16 *p;
|
||||
s16 *q;
|
||||
|
||||
if (func_80148800(&D_80126B58) & 3) {
|
||||
idx = (*(u8 *)(param_1 + 5) + 1) & 1;
|
||||
*(u8 *)(param_1 + 5) = idx;
|
||||
*(s32 *)(param_1 + 0x14) = D_801952F8[idx];
|
||||
}
|
||||
|
||||
sp10 = D_80126940;
|
||||
|
||||
if (sp10.x2 > 0xF80) {
|
||||
sp10.x2 = 0xF80;
|
||||
}
|
||||
|
||||
if (sp10.x2 < 0x240) {
|
||||
lo = -0x1C0; hi = 0x1C0; zc = -0x100; v2E = 0; v32 = 0xA0;
|
||||
} else if (sp10.x2 < 0x6C0) {
|
||||
lo = -0x1C0; hi = 0x1C0; zc = -0x100; v2E = 0; v32 = 0x40;
|
||||
} else if (sp10.x2 < 0xC00) {
|
||||
lo = 0; hi = 0; zc = -0x100; v2E = 0; v32 = 0;
|
||||
} else {
|
||||
lo = -0x140; hi = 0x140; zc = -0x1000; v2E = 0; v32 = 0;
|
||||
}
|
||||
|
||||
p = &D_801274F0;
|
||||
switch (*p) {
|
||||
case 0:
|
||||
zc = -0x100;
|
||||
if (sp10.x2 > 0xAC0) {
|
||||
zc = -0x1000;
|
||||
*(s16 *)(param_1 + 0x20) = 0xE3;
|
||||
*p = 1;
|
||||
func_8017DD48();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
zc = -0x1000;
|
||||
if (sp10.x2 < 0x9C0) {
|
||||
zc = -0x100;
|
||||
*(s16 *)(param_1 + 0x20) = 0x2AA;
|
||||
*p = 0;
|
||||
func_8017DD88();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (sp10.x0 < lo) {
|
||||
sp10.x0 = lo;
|
||||
} else if (sp10.x0 > hi) {
|
||||
sp10.x0 = hi;
|
||||
}
|
||||
if (sp10.x1 < zc) {
|
||||
sp10.x1 = zc;
|
||||
}
|
||||
|
||||
q = &D_801274E8;
|
||||
*q = func_80012C6C((s32)*q, (s32)sp10.x0, 8);
|
||||
D_801274EA = sp10.x1;
|
||||
D_801274EC = sp10.x2;
|
||||
if ((u16)sp10.x2 >= 0xAC1 && (u16)sp10.x2 < 0xC00) {
|
||||
*(s32 *)(param_1 + 0x14) = 0x4B0;
|
||||
} else {
|
||||
*(s32 *)(param_1 + 0x14) = D_801952F8[*(u8 *)(param_1 + 5)];
|
||||
}
|
||||
*(s16 *)(param_1 + 0x2E) = v2E;
|
||||
*(s16 *)(param_1 + 0x32) = v32;
|
||||
func_8017DA78(param_1, &D_801274E8);
|
||||
((void (*)(s32, s16 *))func_8017DC18)(param_1, &D_801274E8);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// @class: schedule
|
||||
@@ -3565,7 +3701,19 @@ void func_8017DD48(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017DD88);
|
||||
extern u8 D_801202A0[];
|
||||
|
||||
void func_8017DD88(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0x60; i++) {
|
||||
u8 *rec = &D_801202A0[i * 0x10C];
|
||||
if (*(u16 *)rec == 0x315) {
|
||||
*(u16 *)(rec + 0x104) = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801952FC[])(void);
|
||||
|
||||
@@ -4629,7 +4629,27 @@ void func_8017F3FC(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017F464);
|
||||
extern void func_8017F4F8(s32 a0);
|
||||
|
||||
void func_8017F464(s32 a0)
|
||||
{
|
||||
s16 v1;
|
||||
|
||||
v1 = *(s16 *)(a0 + 0x100);
|
||||
switch (v1) {
|
||||
case 0x3c:
|
||||
func_8017F4F8(1);
|
||||
break;
|
||||
case 0x3f:
|
||||
func_8017F4F8(0);
|
||||
break;
|
||||
case 0x60:
|
||||
*(s16 *)(a0 + 0x100) = 0;
|
||||
break;
|
||||
}
|
||||
*(u16 *)(a0 + 0x100) = *(u16 *)(a0 + 0x100) + 1;
|
||||
}
|
||||
|
||||
|
||||
extern u16 D_8018657C[];
|
||||
extern u16 D_8018657E[];
|
||||
@@ -4650,7 +4670,19 @@ s32 a0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_8017F554);
|
||||
extern void func_8017F958(s32 a0);
|
||||
extern s16 D_801CC230;
|
||||
extern void func_8012A828();
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
|
||||
void func_8017F554(s32 a0)
|
||||
{
|
||||
s32 s0 = a0;
|
||||
func_8017F958(0);
|
||||
func_8012A828(s0, &D_801CC230);
|
||||
func_8012AD44((s32 *)s0, 2);
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80132EF4();
|
||||
extern void func_8012A828();
|
||||
@@ -5098,7 +5130,46 @@ void func_8018096C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_801809A4);
|
||||
#include "common.h"
|
||||
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void D_801B9C88;
|
||||
extern void D_80186550;
|
||||
extern void func_8017F888(s32 *a0, s32 *a1);
|
||||
extern s32 func_80143970(s32 a0);
|
||||
extern void D_801BCCAC;
|
||||
extern void func_8012A828();
|
||||
extern void func_8017F4F8(s32 a0);
|
||||
extern void func_8017EE40(s32 a0);
|
||||
|
||||
void func_801809A4(void *a0) {
|
||||
s32 ret;
|
||||
s32 p;
|
||||
|
||||
ret = func_8012C1B8();
|
||||
*(s32 *)((u8 *)a0 + 0x20) = ret;
|
||||
if (ret == 0) {
|
||||
func_8012CAE4(a0);
|
||||
return;
|
||||
}
|
||||
|
||||
func_8001C214(ret, (s32)&D_801B9C88);
|
||||
|
||||
p = *(s32 *)((u8 *)a0 + 0x20);
|
||||
*(u16 *)((u8 *)p + 0x2C) |= 0x10;
|
||||
func_8017F888((s32 *)a0, (s32 *)&D_80186550);
|
||||
|
||||
func_80143970((s32)a0);
|
||||
|
||||
func_8012A828(a0, &D_801BCCAC);
|
||||
|
||||
func_8017F4F8(0);
|
||||
|
||||
func_8017EE40((s32)a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8017BEBC", func_80180A3C);
|
||||
|
||||
|
||||
@@ -6083,7 +6083,22 @@ void func_801829F0(s32* a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182AD4);
|
||||
extern u8 D_801202A0[];
|
||||
|
||||
s32 func_80182AD4(s32 a0) {
|
||||
s32 i;
|
||||
u8 *v1;
|
||||
|
||||
v1 = D_801202A0;
|
||||
for (i = 0; i < 0x60; i++) {
|
||||
if (*(u16 *)v1 == 0x306) {
|
||||
return (s32) v1;
|
||||
}
|
||||
v1 += 0x10C;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182B10);
|
||||
|
||||
@@ -6328,7 +6343,97 @@ void func_801830D8(s32 *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_801831FC);
|
||||
extern s32 func_8012C1B8(void);
|
||||
extern void func_8012CAE4(s32 a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 func_8012C51C(void *a0, s32 a1);
|
||||
extern void func_80132288(s32 *a0, s32 *a1, s32 a2);
|
||||
extern void GsMapModelingData(u32 *p);
|
||||
extern s16 D_8019FD68;
|
||||
extern u8 D_8019F0F0[];
|
||||
extern s32 D_8019F0E0[];
|
||||
extern u32 *D_80197DCC;
|
||||
extern s32 D_80186B14;
|
||||
extern void (*D_8018A4B4)(void *);
|
||||
|
||||
void func_801831FC(s32 param_1)
|
||||
{
|
||||
/* the 0x10..0x20 sub-block handed to func_8012C51C — same spelling as func_801830D8 */
|
||||
struct {
|
||||
u16 f0; /* 0x10 */
|
||||
s16 f2; /* 0x12 */
|
||||
u16 f4; /* 0x14 */
|
||||
u16 f6; /* 0x16 */
|
||||
u16 f8; /* 0x18 */
|
||||
u16 fA; /* 0x1A */
|
||||
u16 fC; /* 0x1C */
|
||||
u16 fE; /* 0x1E */
|
||||
s32 f10; /* 0x20 */
|
||||
} sub;
|
||||
s16 i; /* ONE pseudo: the loop counter AND the 0x200/0x600 value -> $s0 in both arms */
|
||||
s16 *pp;
|
||||
u32 **pd; /* &D_80197DCC held in a call-saved reg across GsMapModelingData */
|
||||
s32 o;
|
||||
s32 t;
|
||||
|
||||
if (*(s16 *)(param_1 + 0x70) < 0) {
|
||||
sub.f6 = 0x352;
|
||||
sub.fA = 0;
|
||||
sub.fC = 0;
|
||||
sub.f10 = *(s16 *)(param_1 + 0xFC);
|
||||
sub.f0 = *(u16 *)(param_1 + 6);
|
||||
sub.f2 = -0x208;
|
||||
sub.f4 = *(u16 *)(param_1 + 0xE);
|
||||
for (i = 0; i < 0x13; i++) {
|
||||
sub.f8 = i;
|
||||
sub.fE = D_8019FD68++;
|
||||
func_8012C51C(&sub, param_1);
|
||||
}
|
||||
if (*(s16 *)(param_1 + 0x10A) == 0) {
|
||||
pd = &D_80197DCC;
|
||||
GsMapModelingData(*pd);
|
||||
func_80132288(D_8019F0E0, (s32 *)&D_8018A4B4, (s32)*pd);
|
||||
}
|
||||
pp = (s16 *)(param_1 + 0xF0);
|
||||
/* both stores duplicated in each arm: cross-jump merges only the last 3 ins */
|
||||
if (*(s16 *)(param_1 + 0xFC) == 0) {
|
||||
pp[*(s16 *)(param_1 + 0x10A) * 2 + 1] = 0x38;
|
||||
pp[*(s16 *)(param_1 + 0x10A) * 2] = 0x600;
|
||||
} else {
|
||||
pp[*(s16 *)(param_1 + 0x10A) * 2 + 1] = 0x38;
|
||||
pp[*(s16 *)(param_1 + 0x10A) * 2] = 0x200;
|
||||
}
|
||||
*(s16 *)(param_1 + 2) = 1;
|
||||
} else {
|
||||
o = func_8012C1B8();
|
||||
*(s32 *)(param_1 + 0x20) = o;
|
||||
if (o == 0) {
|
||||
func_8012CAE4(param_1);
|
||||
return;
|
||||
}
|
||||
func_8001C214(o, (s32)&D_80197DCC);
|
||||
func_8001D0E8(*(s32 *)(param_1 + 0x20), 0x7FFF, 0x7FFF);
|
||||
func_8012A828(param_1, &D_80186B14);
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2C) |= 0xA0;
|
||||
*(s32 *)(*(s32 *)(param_1 + 0x20) + 0x80) =
|
||||
(s32)&D_8019F0F0[*(s16 *)(param_1 + 0xFC) * 0x38];
|
||||
i = 0x200;
|
||||
if (*(s32 *)(param_1 + 0xDC) == 0) {
|
||||
i = 0x600;
|
||||
}
|
||||
t = *(s32 *)(param_1 + 0x20);
|
||||
*(s16 *)(t + 0x1C) = i;
|
||||
*(s16 *)(t + 0x18) = i;
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1A) = 0;
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(s16 *)(param_1 + 0x70) * 0xE3;
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2C) |= 0x10;
|
||||
*(s32 *)(param_1 + 0x1C) = 8;
|
||||
*(s16 *)(param_1 + 2) = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80183458);
|
||||
|
||||
@@ -6525,7 +6630,50 @@ void func_80183AAC(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80183F28);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_8012CBF4(s32 a0);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern void func_80183FE0(s32 p);
|
||||
extern void func_8012C218(void *arg0);
|
||||
|
||||
void func_80183F28(s32 param_1)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) =
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + *(u16 *)(param_1 + 0xFE);
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) =
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + *(u16 *)(param_1 + 0x100);
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) =
|
||||
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + *(u16 *)(param_1 + 0x102);
|
||||
|
||||
iVar1 = func_8012BEE8(param_1);
|
||||
if (iVar1 != 0) {
|
||||
goto LAB_80183FAC;
|
||||
}
|
||||
if (*(s16 *)(param_1 + 0x70) != 0) {
|
||||
goto LAB_80183FBC;
|
||||
}
|
||||
iVar1 = func_8012CBF4(param_1);
|
||||
if (iVar1 == 0) {
|
||||
goto LAB_80183FC4;
|
||||
}
|
||||
LAB_80183FAC:
|
||||
func_8012C218((void *)param_1);
|
||||
return;
|
||||
LAB_80183FBC:
|
||||
func_8012AD80(param_1);
|
||||
LAB_80183FC4:
|
||||
func_80183FE0(param_1);
|
||||
}
|
||||
|
||||
|
||||
#define gte_SetRotMatrix_1(r0) __asm__ __volatile__ ( \
|
||||
"lw $12, 0( %0 );" \
|
||||
|
||||
@@ -2741,7 +2741,13 @@ DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014c118 (src/shared) */
|
||||
DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014c168 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801457A4", func_8014C1A0);
|
||||
extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2);
|
||||
extern s16 (*D_8018C04C[])();
|
||||
|
||||
void func_8014C1A0(s32 arg0, s32 arg1) {
|
||||
func_8014C1C8(arg0, arg1, D_8018C04C);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014c1c8 (src/shared) */
|
||||
|
||||
|
||||
@@ -5081,7 +5081,45 @@ void func_80182158(s32 x)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8017BEBC", func_80182268);
|
||||
extern s32 D_801BFCDC;
|
||||
extern void (*D_8018E4B0[])(void);
|
||||
extern u8 D_8018DF10;
|
||||
extern void func_8017D8A4(s32 a0, void *a1, void *a2, s32 a3, s32 a4);
|
||||
extern void func_80143C74(s32 a0, s32 a1);
|
||||
extern void func_80128EA8(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 rand(void);
|
||||
|
||||
void func_80182268(s32 param_1, s32 param_2) {
|
||||
s32 work;
|
||||
s32 mod;
|
||||
s32 a;
|
||||
s32 d;
|
||||
|
||||
func_8017D8A4(D_801BFCDC + 0x60, D_8018E4B0, D_8018E4B0 + 3, param_2, 1);
|
||||
if (param_2 <= 0) {
|
||||
return;
|
||||
}
|
||||
work = ((s32 (*)())func_80143C74)(param_1, 0);
|
||||
if (work == 0) {
|
||||
return;
|
||||
}
|
||||
mod = rand() % ((param_2 * 160) >> 12);
|
||||
a = rand() & 0x7F;
|
||||
d = *(u16 *)(D_801BFCDC + 0x60) - 0x40;
|
||||
*(u16 *)(work + 0xE) = *(u16 *)(work + 0xE) - (d + a);
|
||||
__asm__("" ::: "memory");
|
||||
*(u16 *)(work + 0xA) = *(u16 *)(work + 0xA) + (*(u16 *)(D_801BFCDC + 0x62) + mod);
|
||||
__asm__("" ::: "memory");
|
||||
*(u16 *)(work + 6) = *(u16 *)(work + 6) + (*(u16 *)(D_801BFCDC + 0x64) + mod);
|
||||
*(u32 *)(work + 0x18) = ((rand() & 0xFF) - 0x80) << 10;
|
||||
*(u16 *)(work + 0x16) = -((rand() & 3) + 4);
|
||||
*(u32 *)(work + 0x10) = (rand() & 0xFF) << 11;
|
||||
func_80128EA8(*(u32 *)(work + 0x20), (void *)(work + 0xD0), &D_8018DF10);
|
||||
func_8012C658(0x3AC, 6, work);
|
||||
func_8012C658(0x3AC, 6, work);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_801823F8 — banked from the S40 wave-1 draft.
|
||||
@@ -5184,6 +5222,119 @@ void func_80182B8C(s32 param_1, s32 param_2) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8017BEBC", func_80182D4C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8017BEBC", func_80182F3C);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_800599B8(u16 *);
|
||||
extern void func_8017FDF8(s32 a0);
|
||||
extern void func_80181148(s32 a0);
|
||||
extern void func_8017DC1C(s32 a0);
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern void func_80143994(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8017F3D4(s32 a0, s32 a1);
|
||||
extern void func_80182D4C(s32 a0, s32 a1);
|
||||
extern void func_80182B8C(s32 a0, s32 a1);
|
||||
extern void func_801826E0(s32 a0, s32 a1);
|
||||
extern void func_80182268(s32 a0, s32 a1);
|
||||
extern void func_80182000(s32 a0, s32 a1);
|
||||
extern void func_80181C74(s32 a0, s32 a1);
|
||||
extern void func_8017D8A4(s32 a0, void *a1, void *a2, s32 a3, s32 a4);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
|
||||
extern u8 *func_8012913C(s32 a0);
|
||||
extern void func_800233CC(void *, unsigned short);
|
||||
extern void func_8001CD50(s32 a0, s32 a1);
|
||||
extern s32 rand(void);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
extern u8 D_8018DFB0[];
|
||||
extern u16 D_8018E254[];
|
||||
extern s32 D_8018E61C;
|
||||
extern s32 D_801BFCB4;
|
||||
extern s32 D_801BFCBC;
|
||||
extern s32 D_801BFCC4;
|
||||
extern s32 D_801BFCD4;
|
||||
extern u8 D_8018E3A8[];
|
||||
extern u8 D_8018E27C[];
|
||||
extern u8 D_8018E288[];
|
||||
extern u8 D_8018E294[];
|
||||
extern u8 D_8018E2A0[];
|
||||
extern u8 D_8018E2DC[];
|
||||
extern u8 D_8018E2E8[];
|
||||
extern u8 D_8018E2F4[];
|
||||
extern u8 D_8018E300[];
|
||||
extern u8 D_801F6180[];
|
||||
extern u8 D_801F6140[];
|
||||
extern s32 D_801F61C0[];
|
||||
|
||||
void func_80182F3C(s32 a0)
|
||||
{
|
||||
u8 *p;
|
||||
s32 i;
|
||||
|
||||
((void (*)(u8 *, u16 *))func_800599B8)(D_8018DFB0, D_8018E254);
|
||||
func_8017FDF8(0);
|
||||
func_80181148(0);
|
||||
func_8017DC1C(0);
|
||||
if (func_8012C354(a0, (s32)&D_8018E61C) == 0) {
|
||||
return;
|
||||
}
|
||||
*(s8 *)(a0 + 0xC0) = 1;
|
||||
*(s32 *)(a0 + 0xB4) = -1;
|
||||
func_80143994(a0, 0x7000);
|
||||
func_8012A828(a0, &D_801BFCB4);
|
||||
func_8017F3D4(a0, 0);
|
||||
func_80182D4C(a0, 0);
|
||||
func_80182B8C(a0, 0);
|
||||
func_801826E0(a0, 0);
|
||||
func_80182268(a0, 0);
|
||||
func_8017D8A4(D_801BFCD4, D_8018E3A8, &D_8018E3A8[0xB4], 0, 1);
|
||||
func_80182000(a0, 0);
|
||||
func_80181C74(a0, 0);
|
||||
{ s32 m = (s32)D_8018E2DC; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCC4 + 0x84, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E2E8; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCC4 + 0x90, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E2F4; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCC4 + 0x9C, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E2DC; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCBC + 0x84, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E2E8; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCBC + 0x90, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E2F4; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCBC + 0x9C, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
func_8017D8A4(D_801BFCBC + 0xA8, D_8018E300, D_8018E300 + 0x30, 0, 1);
|
||||
{ s32 m = (s32)D_8018E27C; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCBC + 0x3C, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E288; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCBC + 0x48, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E294; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCBC + 0x54, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E27C; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCB4 + 0x3C, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E288; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCB4 + 0x48, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
{ s32 m = (s32)D_8018E294; __asm__ __volatile__("" : "=r"(m) : "0"(m)); func_8017D8A4(D_801BFCB4 + 0x54, (void *)m, (void *)(m + 0x30), 0, 1); }
|
||||
func_8017D8A4(D_801BFCB4 + 0x60, D_8018E2A0, D_8018E2A0 + 0x30, 0, 1);
|
||||
*(s16 *)(a0 + 0x2) = 1;
|
||||
func_8012B23C(a0);
|
||||
*(s8 *)(a0 + 0x75) = 2;
|
||||
func_8001D0E8(*(s32 *)(a0 + 0x20), 0x280, 0x1E0);
|
||||
*(s16 *)(a0 + 0x102) = 0x1C7;
|
||||
*(s32 *)(a0 + 0x1C) = 0xF;
|
||||
p = func_8012913C(0x78);
|
||||
if (p != 0) {
|
||||
*(s32 *)(a0 + 0xCC) = (s32)p;
|
||||
func_800233CC(D_801F6180, 0x80);
|
||||
*(u16 *)(p + 0x6) = *(u16 *)(a0 + 0x6) - 0x20;
|
||||
*(u16 *)(p + 0xA) = *(u16 *)(a0 + 0xA) - 0xA8;
|
||||
*(u16 *)(p + 0xE) = *(u16 *)(a0 + 0xE);
|
||||
func_8001CD50(*(s32 *)(p + 0x20), (s32)D_801F6180);
|
||||
}
|
||||
p = func_8012913C(0x78);
|
||||
if (p != 0) {
|
||||
*(s32 *)(a0 + 0xD0) = (s32)p;
|
||||
func_800233CC(D_801F6140, 0xA0);
|
||||
*(u16 *)(p + 0x6) = *(u16 *)(a0 + 0x6) - 0x28;
|
||||
*(u16 *)(p + 0xA) = *(u16 *)(a0 + 0xA) - 0xA8;
|
||||
*(u16 *)(p + 0xE) = *(u16 *)(a0 + 0xE);
|
||||
func_8001CD50(*(s32 *)(p + 0x20), (s32)D_801F6140);
|
||||
*(s32 *)(p + 0x2C) = 1;
|
||||
}
|
||||
for (i = 0; i < 16; i++) {
|
||||
D_801F61C0[i] = rand() & 0x7FFF;
|
||||
}
|
||||
func_8002D4C8(0xBB7, 0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_8017BEBC", func_80183374);
|
||||
|
||||
@@ -5716,7 +5716,39 @@ void func_80189D98(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80183814", func_80189DB8);
|
||||
extern void func_80143C74(s32, s32);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012CBCC(s32);
|
||||
|
||||
void func_80189DB8(void *a0) {
|
||||
s32 s1;
|
||||
|
||||
if (*(s32 *)((s32)a0 + 0x1C) == 0x1E) {
|
||||
s1 = ((s32 (*)(s32, s32))func_80143C74)((s32)a0, 0);
|
||||
if (s1 != 0) {
|
||||
*(u16 *)(s1 + 0x6) = *(u16 *)((s32)a0 + 0x6) + (*(u16 *)((s32)a0 + 0x12) << 2);
|
||||
*(u16 *)(s1 + 0xA) = *(u16 *)((s32)a0 + 0xA) + (*(u16 *)((s32)a0 + 0x16) << 2);
|
||||
*(u16 *)(s1 + 0xE) = *(u16 *)((s32)a0 + 0xE) + (*(u16 *)((s32)a0 + 0x1A) << 2);
|
||||
}
|
||||
}
|
||||
*(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) - 1;
|
||||
if ((((s32 (*)(s32))func_8012CBCC)((s32)a0) & 0x2000) != 0 ||
|
||||
*(s32 *)((s32)a0 + 0x1C) == 0) {
|
||||
func_8012C218((void *)a0);
|
||||
} else {
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) =
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) - 0x88;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) =
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) - 0x88;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) =
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) + 0x200;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) =
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) + 0x100;
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) =
|
||||
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) + 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
|
||||
Reference in New Issue
Block a user