feat(t5): Claude wave t5a — 41 banked (sonnet 39/44, opus 2/4); fleet 213 passed, 0 failed of 213 (P31 S62 T5)

This commit is contained in:
Drew T
2026-08-26 20:12:09 -06:00
parent 3591ac6566
commit bfd591c9cc
19 changed files with 1188 additions and 45 deletions
+2 -1
View File
@@ -686,7 +686,7 @@ ov_SC01_009_ELF := $(ov_SC01_009_OUT).elf
ov_SC01_009_MAPFILE := $(ov_SC01_009_OUT).map
ov_SC01_009_LD_SCRIPT := $(ov_SC01_009_OUT).ld
ov_SC01_009_SPLAT_YAML := config/splat.ov_SC01_009.yaml
ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_80135888.o,tail3.data.o,ov_SC01_009_jr_80135A4C.o,tail4.data.o,ov_SC01_009_jr_80135D20.o,tail5.data.o,ov_SC01_009_jr_801380E0.o,ov_SC01_009_o0c.o,tail6.data.o,ov_SC01_009_jr_8013F350.o,tail7.data.o,ov_SC01_009_jr_8013FFD8.o,tail8.data.o,ov_SC01_009_jr_80140608.o,tail9.data.o,ov_SC01_009_jr_8015444C.o,ov_SC01_009_jr_80154C24.o,ov_SC01_009_jr_801588CC.o,ov_SC01_009_jr_80159C84.o,tail10.data.o,ov_SC01_009_jr_8015A3C8.o,tail11.data.o,ov_SC01_009_jr_8015AE2C.o,tail12.data.o,ov_SC01_009_jr_8015C32C.o,tail13.data.o,ov_SC01_009_jr_8016AB6C.o,tail14.data.o,ov_SC01_009_jr_80171B4C.o,ov_SC01_009_jr_801734BC.o,tail15.data.o,ov_SC01_009_jr_801789AC.o,ov_SC01_009_jr_80178D40.o,tail16.data.o,ov_SC01_009_jr_8017A4AC.o,tail17.data.o,ov_SC01_009_jr_8017AE2C.o,ov_SC01_009_jr_8017BE9C.o,tail18.data.o,ov_SC01_009_jr_8017E378.o,ov_SC01_009_jr_8017E590.o,tail19.data.o,ov_SC01_009_jr_8018057C.o,tail20.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_80135888.o,tail3.data.o,ov_SC01_009_jr_80135A4C.o,tail4.data.o,ov_SC01_009_jr_80135D20.o,tail5.data.o,ov_SC01_009_jr_801380E0.o,ov_SC01_009_o0c.o,tail6.data.o,ov_SC01_009_jr_8013F350.o,tail7.data.o,ov_SC01_009_jr_8013FFD8.o,tail8.data.o,ov_SC01_009_jr_80140608.o,tail9.data.o,ov_SC01_009_jr_8015444C.o,ov_SC01_009_jr_80154C24.o,ov_SC01_009_jr_801588CC.o,ov_SC01_009_jr_80159C84.o,tail10.data.o,ov_SC01_009_jr_8015A3C8.o,tail11.data.o,ov_SC01_009_jr_8015AE2C.o,tail12.data.o,ov_SC01_009_jr_8015C32C.o,tail13.data.o,ov_SC01_009_jr_8016AB6C.o,tail14.data.o,ov_SC01_009_jr_80171B4C.o,ov_SC01_009_jr_801734BC.o,tail15.data.o,ov_SC01_009_jr_801789AC.o,ov_SC01_009_jr_80178D40.o,tail16.data.o,ov_SC01_009_jr_8017A4AC.o,tail17.data.o,ov_SC01_009_jr_8017AE2C.o,ov_SC01_009_jr_8017BE9C.o,tail18.data.o,ov_SC01_009_jr_8017E378.o,ov_SC01_009_jr_8017E590.o,ov_SC01_009_jr_8018057C.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
build/src/ov_SC01_009/ov_SC01_009.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
build/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
build/src/ov_SC01_009/ov_SC01_009_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
@@ -699,6 +699,7 @@ build/src/ov_SC01_009/ov_SC01_009_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
build/src/ov_SC01_009/ov_SC01_009_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC01_009/ov_SC01_009_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC01_009/ov_SC01_009_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
build/src/ov_SC01_009/ov_SC01_009_jr_8017E590.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28
build/src/ov_SC01_009/ov_SC01_009_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
ov_SC01_009_CHECK_SHA := config/check.ov_SC01_009.sha
ov_SC01_009_SYMBOLS := config/symbols.ov_SC01_009.txt
+1 -2
View File
@@ -169,9 +169,8 @@ segments:
- [0xc96c8, data, tail18]
- [0xc9bd0, .rodata, ov_SC01_009_jr_8017E378] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xc9bf8, .rodata, ov_SC01_009_jr_8017E590] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xc9c20, data, tail19]
- [0xc9c48, .rodata, ov_SC01_009_jr_8018057C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xc9ce4, data, tail20]
- [0xc9ce4, data, tail19]
- [0xCB304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
- [0xCB307] # EOF marker = the 0.4.dec byte length
# @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes
+38 -2
View File
@@ -3399,7 +3399,21 @@ DEFINE_func_8017D7E0() /* dedup: shared engine-core @0x8017D7E0 (src/shared) */
DEFINE_func_8017D808() /* dedup: shared engine-core @0x8017D808 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017D9A0);
extern int D_800C7C60;
extern int *D_800C7C64;
extern int D_800A2E20;
extern int D_800AE9F0;
extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10);
void func_8017D9A0(void)
{
int *p = &D_800C7C60;
*p = 0x3E;
D_800C7C64 = &D_800A2E20;
((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AE9F0, 0, p);
}
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017D9F4);
@@ -3457,7 +3471,29 @@ void func_8017DB50(void) {
}
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017C340", func_8017DBC0);
void func_8017DBC0(void) {
extern void func_800D24A0(s32 a0);
extern s16 D_801CD878;
extern u16 D_8011511A;
extern u16 D_80115112;
extern u32 D_801CD9B0;
extern u32 D_801CD9A8;
extern s32 D_80115130;
func_800D24A0(4);
func_8017DC48();
if (D_801CD878 == 0) {
D_8011511A = 0;
} else {
D_8011511A = D_801CD878;
}
D_801CD9B0 = 0;
D_801CD9A8 = 0;
D_80115130 = 0;
D_801CD878 = 0;
D_80115112++;
}
/* Declarations reconciled against src/ov_SC01_004/ov_SC01_004_jr_8017BE9C.c:
+30 -2
View File
@@ -3284,11 +3284,39 @@ block_126:
}
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_801803AC);
extern u8 D_80185E5C[];
extern void func_80029514(s32);
extern void func_800D1724(s32 a0);
void func_801803AC(s32 arg0) {
if ((*(s32 *)(arg0 + 0x1c) -= 1) == -1) {
func_80029514(2);
((void (*)(u8 *))func_800D1724)(D_80185E5C);
}
}
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_801803F0);
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018041C);
void func_8018041C(param_1)
s32 param_1;
{
extern void func_8017FD50(s32);
extern s32 func_8016F1AC(void);
extern s32 func_80178B18(s32 param_1, s32 param_2);
extern u8 D_801BC348[];
func_8017FD50(param_1);
if (*(s32 *)(param_1 + 0x1C) != 0) {
(*(s32 *)(param_1 + 0x1C))--;
} else {
if (func_8016F1AC() == 0) {
func_80178B18(param_1, (s32)D_801BC348);
*(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1;
}
}
}
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018048C);
+72 -1
View File
@@ -3710,7 +3710,78 @@ void func_8017D920(void) {
}
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_8017D93C);
#include "common.h"
extern s16 D_800B9A02;
extern s32 D_801151C8[];
extern s32 D_801151D0;
extern s32 func_8017DC10(void);
extern void func_8017DEF0(void);
extern u16 D_8011511A;
extern s16 func_8014168C(s16 a0);
extern s16 D_80115126;
extern u8 D_80115138[];
extern u32 D_801F32B8;
extern s32 func_8017E590(s32 param_1, s32 param_2);
extern s32 D_80115130;
extern void func_80139954(void);
extern s32 D_801E906C;
extern void *func_801376E8(s32 a0, s32 a1);
extern u32 D_801F32BC;
extern void func_80137B80(void);
extern void func_8002D4C8(s32 a0, s32 a1);
extern u8 D_800B9A15;
extern u16 D_80115112;
void func_8017D93C(void) {
s32 pad[2];
s32 ret_dc10;
s16 ret_168c;
u8 c;
s32 v0;
s32 s0;
s16 s0_16;
D_801151D0 = D_801151C8[*(u16 *)&D_800B9A02];
ret_dc10 = func_8017DC10();
func_8017DEF0();
ret_168c = func_8014168C((s16)D_8011511A);
c = D_80115138[D_8011511A];
if (D_80115126 != 4) {
v0 = D_801F32B8;
if (v0 == 0) {
s0 = func_8017E590(c, (s16)ret_168c);
} else {
s0 = v0;
}
if (s0 != 0) {
s32 *p = &D_80115130;
if (s0 != *p) {
*p = s0;
func_80139954();
D_801F32BC = (u32)func_801376E8(s0, (s32)&D_801E906C);
}
}
func_80137B80();
}
s0_16 = (s16)ret_dc10;
if (s0_16 < 0) {
func_80139954();
D_800B9A15 = 0;
if (s0_16 == -1) {
func_8002D4C8(0x474, 0);
}
{
u16 *p = &D_80115112;
*p = *p + 2;
}
}
}
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_8017DA8C);
+207 -1
View File
@@ -3084,7 +3084,213 @@ s32 *func_8017E7DC(s32 *ot, void *a1p, s32 idx, void *a3p, s32 tag) {
}
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017EB08);
#include "common.h"
s32 func_8017EB08(s32 a0, s32 a1) {
extern u16 D_8011511A;
extern u16 D_8011514A;
extern s16 D_8011514C;
extern s16 D_8011515A;
extern u8 D_80183A40[];
extern s16 D_801F3180;
extern s16 D_801F3184;
extern u16 D_801F318C;
extern u16 D_801F3190;
extern u8 *D_801F32B4;
extern u32 D_801F32B8;
extern u32 D_801EEE4C;
extern u32 D_801EEE74;
extern u32 D_801EEEB0;
extern u32 D_801EEF40;
extern u32 D_801EEF68;
extern u32 D_801EEFC0;
extern u32 D_801EF030;
extern u32 D_801EF054;
extern u32 D_801EF094;
extern u32 D_801EF0E0;
extern u32 D_801EF18C;
extern s32 func_80029504(void);
extern s32 func_800291B4(s32 arg);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_80029124(s32 a0, s32 a1);
extern s16 func_8014168C(s16 a0);
s32 mode;
s16 idx;
s32 lt;
s32 t;
s32 r;
s32 b;
u32 sel;
mode = func_80029504();
idx = a0 - 1;
switch (idx) {
case 1:
case 2:
if ((s16)a1 != 0) {
return -1;
}
{
u16 *p = &D_8011511A;
*p = *p + 1;
}
func_8002D4C8(0x45D, 0);
return 0;
case 3:
if ((s16)a1 == 2) {
return -1;
}
lt = mode < 0xA;
if ((s16)a1 != 0) {
if (lt || (D_8011515A == 0x100)) {
sel = (u32)&D_801EEF68;
goto set_sel;
}
D_8011511A++;
func_8002D4C8(0x45D, 0);
return 0;
}
if (!lt) {
D_801F3180 = 1;
return -1;
}
sel = (u32)&D_801EEF40;
goto set_sel;
case 4:
if ((s16)a1 == 0) {
D_801F3180 = 1;
}
if ((s16)a1 != 1) {
return -1;
}
if ((func_800291B4(D_801F3184 + 0x62) & 0x20) != 0) {
goto call_45F;
}
D_801F3180 = 2;
return -1;
case 5:
t = (s16)a1;
if (t == 0) {
sel = (u32)&D_801EF030;
goto set_sel;
}
if (t == 3) {
goto sel_054;
}
if (t == 5) {
__asm__ ("" : "=r"(t) : "0"(t));
if (t != 3) {
goto sel_094;
}
sel_054:
sel = (u32)&D_801EF054;
goto set_sel;
sel_094:
if ((func_800291B4(0x40) & 0xFF) == 0) {
goto call_45F;
}
sel = (u32)&D_801EF094;
goto set_sel;
}
if ((func_800291B4(D_80183A40[t]) & 0xFF) == 0) {
goto call_45F;
}
if ((u32)(mode - 0x294) < 0xF0) {
if ((t == 0xC) || (t == 0x11) || (t == 0x1A)) {
sel = (u32)&D_801EF0E0;
goto set_sel;
}
}
if ((u32)(mode - 0xA0) < 0x28) {
if ((u16)(a1 - 0xA) < 4) {
sel = (u32)&D_801EF18C;
goto set_sel;
}
}
D_801F3180 = a1 + 1;
return -1;
case 6:
if ((s16)a1 >= 3) {
if ((func_800291B4(0x62) & 0xFF) == 0) {
sel = (u32)&D_801EEFC0;
goto set_sel;
}
}
case 8:
func_8002D4C8(0x45D, 0);
{
u16 *q = &D_8011511A;
*q = *q + 1;
}
break;
case 7:
r = ((s32 (*)(s32))func_8014168C)(1);
if ((s16)r == 0) {
func_80029124(0xE8, 1);
}
D_801F3180 = ((r + 1) << 8) | (a1 + 1);
return -1;
case 9:
b = D_801F32B4[(s16)a1];
if ((func_800291B4(b + 0x62) & 0x40) == 0) {
goto call_45F;
}
D_801F3180 = b | 0x100;
D_801F3184 = b;
D_801F318C = D_8011514A;
D_801F3190 = *(u16 *)&D_8011514C;
return -1;
case 0:
if (mode == 0x294) {
if ((s16)a1 < 4) {
if ((s16)a1 == 3) {
D_801F3180 = a1;
return -2;
}
sel = (u32)&D_801EEE4C;
goto set_sel;
}
}
if (mode == 0x3B6) {
if ((s16)a1 < 5) {
if ((s16)a1 == 3) {
D_801F3180 = a1;
return -2;
}
sel = (u32)&D_801EEE74;
goto set_sel;
}
}
if ((u32)(mode - 0x44C) < 0x32) {
if ((s16)a1 == 5) {
sel = (u32)&D_801EEEB0;
set_sel:
D_801F32B8 = sel;
call_45F:
func_8002D4C8(0x45F, 0);
return 0;
}
}
D_801F3180 = a1;
if ((s16)a1 == 3) {
return -2;
}
return -1;
}
return 0;
}
s16 func_8017EF64(void) {
extern s32 func_800291B4(s32 arg);
+73 -1
View File
@@ -3890,7 +3890,79 @@ void func_8017C59C(s32 arg0)
}
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017D468);
#include "common.h"
/* Declarations conformed to the fleet/engine_core canon (engine_core.h:3695, :3797,
* :3794, :3800, :3833, :3836, :108) and to this TU's own existing spellings
* (ov_SC01_080_jr_8017AE2C.c:2206 func_8004787C, :2470 D_800B9A02, :3379 RotTransPers).
* The vertex struct is BLOCK-scope on purpose: engine_types.h already typedefs a
* file-scope `SVEC`, so a second file-scope definition would be a C89 redefinition. */
extern void func_8012E32C(void);
extern s32 func_8004787C(s32 a0);
extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3);
extern void *func_80010A08(s32);
extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3);
extern s32 AddPrim(s32, void *);
extern void func_8012E28C(s32 arg0, s32 arg1);
extern u32 D_80186FF8[];
extern s32 D_800A651C;
extern s16 D_800B9A02;
void func_8017D468(void* p)
{
struct { s16 vx, vy, vz, pad; } v[4];
u16 base[3];
s32 buf[2];
s32 sp40;
s32 sp44;
s32 A;
s32 rs, i, ang, k, d, r;
u32 *prim;
func_8012E32C();
rs = func_8004787C((*(s32 *)(p + 0x1C) * 0x800) / 30);
base[0] = *(u16 *)(p + 6);
base[1] = *(u16 *)(p + 0xA);
A = (rs << 8) >> 12;
base[2] = *(u16 *)(p + 0xE);
ang = *(s32 *)(p + 0x1C) << 4;
i = 0;
do {
func_8012B0B4((unsigned int *)buf, ang, 0x20);
k = rs * 3 + 0x1000;
d = buf[0];
v[0].vx = base[0] + d;
v[0].vy = base[1];
v[0].vz = base[2] + (d >> 16);
v[2].vx = base[0] + (((s16)d * k) >> 12);
v[2].vy = base[1] - A;
v[2].vz = base[2] + (((d >> 16) * k) >> 12);
func_8012B0B4((unsigned int *)buf, ang + 0x2AA, 0x20);
d = buf[0];
v[1].vx = base[0] + d;
v[1].vy = base[1];
v[1].vz = base[2] + (d >> 16);
v[3].vx = base[0] + (((s16)d * k) >> 12);
v[3].vy = base[1] - A;
v[3].vz = base[2] + (((d >> 16) * k) >> 12);
prim = (u32 *)func_80010A08(0x24);
prim[1] = D_80186FF8[i];
prim[3] = D_80186FF8[i + 1];
*((u8 *)prim + 7) = 0x3A;
prim[7] = 0;
prim[5] = 0;
prim[0] = 0x8000000;
r = RotTransPers((s32)&v[0], (s32)(prim + 2), &sp40, &sp44);
RotTransPers((s32)&v[1], (s32)(prim + 4), &sp40, &sp44);
RotTransPers((s32)&v[2], (s32)(prim + 6), &sp40, &sp44);
RotTransPers((s32)&v[3], (s32)(prim + 8), &sp40, &sp44);
AddPrim(*(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + r * 4, prim);
func_8012E28C(r, 1);
i++;
ang = ang + 0x2AA;
} while (i < 6);
}
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_8017D72C);
+62 -4
View File
@@ -3409,7 +3409,17 @@ void func_8017DE50(s32 *a0) {
}
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017CA80", func_8017DE84);
#include "common.h"
extern s32 ratan2(s32 dx, s32 dy);
extern u16 D_80126B5E;
extern u16 D_80126B66;
extern s32 func_8017DECC(s32 param_1, s32 param_2);
void func_8017DE84(s32 param_1) {
func_8017DECC(param_1, ratan2(*(s16 *)&D_80126B5E, *(s16 *)&D_80126B66) & 0xFFF);
}
#include "common.h"
@@ -3520,7 +3530,23 @@ void func_8017E170(void *a0) {
}
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017CA80", func_8017E1AC);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8001BFD0(void);
extern void func_800D0C48(s32 a0);
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2);
extern void func_8017E524(void *a0);
s32 func_8017E1AC(s32 param_1)
{
func_8002D4C8(0x1c, 0);
func_8001BFD0();
func_800D0C48(2);
func_8002D4C8(7, 0);
((void (*)(void *, s32))func_8016EDEC)(func_8017E524, 0x1000000);
*(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1;
return 0;
}
s32 func_8017E21C(void) {
return 0;
@@ -3543,7 +3569,29 @@ void func_8017E290(void *a0) {
}
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017CA80", func_8017E2CC);
extern void func_8016F398(void);
extern s32 func_800CF854();
extern void func_8017DC04(void);
extern void func_80154274(s32 *a0, s32 a1);
extern void func_8014706C(void *arg0);
extern u8 D_800D5A34[];
void func_8017E2CC(int param_1)
{
s8 sVar1;
func_8016F398();
if (func_800CF854() != 0) {
sVar1 = 3;
} else {
func_8017DC04();
func_80154274((s32 *)param_1, (s32)&D_800D5A34);
func_8014706C((void *)param_1);
sVar1 = *(u8 *)(param_1 + 0x214) + 1;
}
*(u8 *)(param_1 + 0x214) = sVar1;
}
extern s32 func_8013767C(s32 a0);
extern u16 D_80126980;
@@ -3711,7 +3759,17 @@ void func_8017E734(void *a0) {
}
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017CA80", func_8017E770);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8017DBA0(void);
extern void func_80175454(void);
void func_8017E770(void *a0) {
func_8002D4C8(0x12, 2);
func_8017DBA0();
func_80175454();
(*(u8 *)((s32)a0 + 0x214))++;
}
void func_8017E7C0(void *a0) {
+91 -3
View File
@@ -3269,7 +3269,29 @@ s32 func_8017D848(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017D888);
extern void func_80029124(s32 a0, s32 a1);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8001BFD0(void);
extern void func_800D0C48(s32 a0);
extern void func_800D1E28(void);
s32 func_8017D888(s32 a0) {
s32 t;
t = *(s32 *)(a0 + 0x28) - 1;
*(s32 *)(a0 + 0x28) = t;
if (t == -1) {
func_80029124(0x90, 1);
func_8002D4C8(0x1C, 0);
func_8001BFD0();
func_8002D4C8(0x1D, 0);
func_800D0C48(1);
func_800D1E28();
*(u8 *)(a0 + 0x15) += 1;
}
return 0;
}
extern void func_800D1EBC(void);
void func_8017D910(void) {
@@ -3371,7 +3393,18 @@ void func_8017DAC8(s32 *a0) {
void func_8017DB20(void) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017DB28);
void func_8017DB28(s32 *a0)
{
s32 iVar1;
iVar1 = func_80029504();
if ((u32)(iVar1 - 0x3b6) < 0x32) {
func_80171A10(a0);
} else {
func_80171A04(a0);
}
}
extern s32 D_80184FF4(void *a0);
extern s32 D_801A2238;
@@ -4149,7 +4182,62 @@ void func_8017ECD4(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_8017EF28);
extern s32 func_80132EF4(s32 a0, s32 a1);
extern void func_80129374(s32 a0, s32 a1);
extern s32 func_8017F14C(s32 a0, s32 a1);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8017F0D0(s32 a0);
extern u16 D_80126B5E;
extern u16 D_80126B66;
extern u16 D_80126B96;
extern s16 D_80126B98;
extern s16 D_80185448;
void func_8017EF28(s32 arg0) {
s16 var_s3;
s16 var_s2;
s32 temp_v1;
s32 obj;
s32 dist;
u16 *p96;
var_s3 = D_80126B5E - *(u16 *)(arg0 + 6);
if (var_s3 < 0) {
var_s3 = -var_s3;
}
var_s2 = D_80126B66 - *(u16 *)(arg0 + 0xE);
if (var_s2 < 0) {
var_s2 = -var_s2;
}
if ((var_s3 < 0x201) && (var_s2 < 0x201)) {
temp_v1 = *(s32 *)(arg0 + 0x1C);
*(s32 *)(arg0 + 0x1C) = temp_v1 + 1;
if (temp_v1 & 1) {
obj = func_80132EF4(arg0, 0x22);
if (obj != 0) {
func_80129374(obj, arg0);
*(u16 *)(obj + 0x34) = 0x4000;
}
}
if (func_8017F14C(arg0, (s32)&D_80185448) != 0) {
p96 = &D_80126B96;
D_80126B98 = 0xC;
*p96 |= 0x4000;
}
if ((*(s32 *)(arg0 + 0x1C) & 3) == 0) {
dist = (var_s3 * var_s3) + (var_s2 * var_s2);
if (dist <= 0x30000) {
func_8002D4C8(0x645, (0x1000 | (((0x30000 - dist) * 127) / 0x30000)) & 0xFFFF);
*(s16 *)(arg0 + 0xFC) = 1;
return;
}
} else {
return;
}
}
func_8017F0D0(arg0);
}
void func_8017F0D0(s32 a0) {
if (*(s16 *)(a0 + 0xFC) != 0) {
+45 -1
View File
@@ -5104,7 +5104,51 @@ INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8018473
void func_801847B0(void) {
}
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_801847B8);
struct vec;
extern void func_80185238(struct vec *a0);
extern void func_80185218(void *arg0);
extern s32 func_80185680(void *a0, void *a1);
extern void func_8018574C(void *a0);
extern void func_80185810(s32 a0);
extern s32 rand(void);
void func_801847B8(void *a0) {
s32 pad[4];
u16 state = *(u16 *)((u8 *)a0 + 0x2);
if (state != 0) {
s32 cnt = *(s32 *)((u8 *)a0 + 0x1C);
if (cnt != 0) {
*(s32 *)((u8 *)a0 + 0x1C) = cnt - 1;
} else {
void *s1 = (u8 *)a0 + 0x20;
if (func_80185680(s1, (u8 *)a0 + 0x48) == 1) {
if (rand() & 1) {
func_8018574C(s1);
}
func_80185218(a0);
} else {
u16 v0, v1, a1;
func_80185238((struct vec *)a0);
v0 = *(u16 *)((u8 *)a0 + 0x6);
v1 = *(u16 *)((u8 *)a0 + 0xA);
a1 = *(u16 *)((u8 *)a0 + 0xE);
*(u16 *)((u8 *)a0 + 0x34) = v0;
*(u16 *)((u8 *)a0 + 0x36) = v1;
*(u16 *)((u8 *)a0 + 0x38) = a1;
func_80185810((s32)s1);
}
}
} else {
s32 r;
*(u16 *)((u8 *)a0 + 0x2) = state + 1;
r = rand();
*(s32 *)((u8 *)a0 + 0x1C) = r % 4;
}
}
#include "common.h"
+82 -5
View File
@@ -4394,7 +4394,32 @@ extern s32 D_801151D4;
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80180228);
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80180320);
void func_80180320(s32 param_1) {
s16 sVar1;
s16 local[4];
switch (*(s16 *)(param_1 + 0xA0)) {
case 0:
sVar1 = *(s16 *)(param_1 + 0x22) + 2;
*(s16 *)(param_1 + 0x22) = sVar1;
*(s16 *)(param_1 + 0x1A) = sVar1;
if (0x800 < sVar1) {
*(s16 *)(param_1 + 0xA0) = 1;
}
break;
case 1:
sVar1 = *(s16 *)(param_1 + 0x22) - 2;
*(s16 *)(param_1 + 0x22) = sVar1;
*(s16 *)(param_1 + 0x1A) = sVar1;
if (sVar1 < 0x400) {
*(s16 *)(param_1 + 0xA0) = 0;
}
break;
}
func_80186EFC((s32)local);
func_801803D8(param_1, local);
}
@@ -4526,7 +4551,22 @@ s32 func_80180660(void *param)
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_801806B8);
void func_801806B8(void *arg0)
{
extern u16 D_801EFD40;
extern u8 D_80194460[];
extern void func_8018332C(s32 a0, s32 a1);
extern s32 D_801EFCA0;
extern void func_8018A47C(void *a0);
s32 v;
D_801EFD40 = (D_801EFD40 | 0x20) & 0xFFF7;
func_8018332C((s32)arg0, (s32)&D_80194460);
v = D_801EFCA0;
*(s32 *)((s32)arg0 + 0x1C) = 0x20;
func_8018A47C((void *)v);
}
extern void func_801833D4(int a0, int a1);
extern s32 func_80183A28(u8 *a0);
@@ -4550,7 +4590,18 @@ s32 func_80180750(u8 *a0) {
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80180790);
#include "common.h"
extern void func_801837C4(s32, s32);
extern void func_80183BAC(u8*);
void func_80180790(s32 self) {
((void (*)(s32))func_801837C4)(self);
((void (*)(s32))func_80183BAC)(self);
*(u16 *)(self + 0x100) = 0;
*(s32 *)(self + 0x1C) = 0x70;
}
extern u16 D_801EFD20;
extern s32 aFC4C[] __asm__("D_801EFC4C");
@@ -4659,7 +4710,33 @@ s32 func_80180A20(s32 *param_1) {
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80180AB4);
struct Ent_80180AB4 {
/* 0x00 */ u8 pad00[0x34];
/* 0x34 */ u16 unk34;
/* 0x36 */ u8 pad36[0xAA];
/* 0xE0 */ u16 unkE0;
/* 0xE2 */ u8 padE2[0x10];
/* 0xF2 */ s16 unkF2;
/* 0xF4 */ s16 unkF4;
};
void func_80180AB4(struct Ent_80180AB4 *arg0) {
extern u8 D_80194470[];
extern void func_8018332C(s32 a0, s32 a1);
extern void func_80183BAC(u8 *a0);
extern u16 D_801EFD40;
extern void func_8012AD44(s32 *a0, s16 a1);
arg0->unkF4 = 0;
func_8018332C((s32)arg0, (s32)&D_80194470);
func_80183BAC((u8 *)arg0);
arg0->unkE0 = 0x10;
arg0->unkF2 = 0;
D_801EFD40 |= 0x200;
func_8012AD44((s32 *)arg0, 3);
arg0->unk34 = 3;
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80180B24);
@@ -8584,7 +8661,7 @@ extern void func_80139A68(s32 a0, u16 a1);
extern u8 D_80194378[];
extern s32 D_801EFD28;
extern s32 D_801EFD2C;
extern void func_80180AB4(s32 a0);
extern void func_80180AB4();
void func_80187068(s32 a0) {
extern u16 D_80126B58;
+64 -4
View File
@@ -4862,7 +4862,22 @@ void func_8017F82C(void *a0) {
}
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F874);
void func_8017F874(void *a0) {
extern s32 D_801151D4;
extern s32 func_801823B8(void*, s32, void*);
extern s32 func_80182334(void);
extern void func_8012C098(void);
if (*(s32 *)((s32)a0 + 0xDC) - 10 == *(u16 *)(D_801151D4 + 0x38)) {
func_8002D4C8(0x894, 3);
}
((void (*)(s32, s32, s32))func_801823B8)((s32)a0, 0, -1);
if (((s32 (*)(s32))func_80182334)((s32)a0) == 0) {
((void (*)(s32))func_8012C098)((s32)a0);
func_8002D4C8(0xA76, 0);
}
}
extern void (*D_80186634[])(void);
extern s32 func_80013328(s32 a0, s32 a1);
@@ -4893,9 +4908,39 @@ extern s32 func_8012AD50(void *a0);
}
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017F9FC);
extern void func_8012C1B8(void);
extern void func_8018227C(void*, void*);
extern s32 func_8012AD50(void *a0);
extern s32 D_80199608;
void func_8017F9FC(void *a0) {
s32 ret;
ret = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((s32)a0 + 0x20) = ret;
if (ret != 0) {
func_8018227C(a0, &D_80199608);
func_8012AD50(a0);
}
}
void func_8017FA44(void *a0) {
extern s32 D_801151D4;
extern s32 func_801823B8(void*, s32, void*);
extern s32 func_80182334(void);
extern void func_8012C098(void);
if (*(s32 *)((s32)a0 + 0xDC) - 10 == *(u16 *)(D_801151D4 + 0x38)) {
func_8002D4C8(0x894, 4);
}
((void (*)(s32, s32, s32))func_801823B8)((s32)a0, 0, 0);
if (((s32 (*)(s32))func_80182334)((s32)a0) == 0) {
((void (*)(s32))func_8012C098)((s32)a0);
func_8002D4C8(0xA76, 0);
}
}
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FA44);
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FAC4);
@@ -4920,7 +4965,22 @@ void func_8017FBCC(void *a0) {
}
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FC14);
void func_8017FC14(void *a0) {
extern s32 D_801151D4;
extern s32 func_801823B8(void*, s32, void*);
extern s32 func_80182334(void);
extern void func_8012C098(void);
if (*(s32 *)((s32)a0 + 0xDC) - 10 == *(u16 *)(D_801151D4 + 0x38)) {
func_8002D4C8(0x894, 5);
}
((void (*)(s32, s32, s32))func_801823B8)((s32)a0, 0, 1);
if (((s32 (*)(s32))func_80182334)((s32)a0) == 0) {
((void (*)(s32))func_8012C098)((s32)a0);
func_8002D4C8(0xA76, 0);
}
}
extern void (*D_8018664C[])(void);
extern s32 func_80013328(s32 a0, s32 a1);
+7 -1
View File
@@ -3320,7 +3320,13 @@ DEFINE_func_8017BEAC() /* dedup: shared engine-core @0x8017BEAC (src/shared) */
DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_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) */
+64 -3
View File
@@ -3902,9 +3902,59 @@ extern s32 func_80147054(void *a0);
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017C8D0", func_8017E874);
void func_8017E874(void) {
extern void func_8012A094(s32 a0);
extern void func_8017E9D4(void *a0);
D_80126954 = 0x190;
D_8012695C = 0x4B0;
D_80126968 = 0x155;
D_8012696A = 0x800;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0xC0;
D_8012697A = 0;
func_8012A018((s32)func_8017E9D4, 0);
func_8012A094((s32)D_80126948);
func_8017E9D4(D_80126948);
}
#include "common.h"
extern s32 D_80126E60[];
extern s32 D_80126E6C;
extern s32 D_80126E74;
extern s16 D_80126E80;
extern s16 D_80126E82;
extern s16 D_80126E84;
extern s16 D_80126E8E;
extern s16 D_80126E90;
extern s16 D_80126E92;
extern void func_8012A048(void *a0, s32 a1, u8 a2);
extern void func_8012A094(s32 a0);
extern void func_8017E9D4(void *a0);
extern void func_8012A100(s8 a0);
void func_8017E910(void) {
s32 *s0 = (s32 *)D_80126E60;
D_80126E6C = 0xC8;
D_80126E74 = 0x2BC;
D_80126E80 = -0xE3;
D_80126E82 = 0x400;
D_80126E84 = 0;
D_80126E8E = 0;
D_80126E90 = 0;
D_80126E92 = 0;
func_8012A048(s0, (s32)func_8017E9D4, 1);
func_8012A094((s32)s0);
func_8017E9D4(s0);
func_8012A100(1);
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017C8D0", func_8017E910);
extern void func_8012A100(s8 a0);
void func_8017E9B4(void) {
@@ -3944,7 +3994,18 @@ void func_8017EA10(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017C8D0", func_8017EAB0);
extern void func_8017EAE4(s32 param_1, s16 *param_2);
void func_8017EAB0(s32 a0) {
extern s16 D_80192288;
s16 v0;
v0 = *(u16 *)(a0 + 0x22) + 0xB;
*(s16 *)(a0 + 0x22) = v0;
*(s16 *)(a0 + 0x1A) = v0;
func_8017EAE4(a0, &D_80192288);
}
// @class: schedule
+137 -3
View File
@@ -7342,7 +7342,46 @@ void func_80181C38(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181CCC);
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2);
extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2);
extern void func_801860A8(u16 *r, s16 *m);
extern void ApplyMatrixSV(void *a0, void *a1, void *a2);
void func_80181CCC(s32 param_1, s32 param_2, s32 param_3)
{
u8 mat[0x20];
s16 svIn[4];
u16 vecOut[4];
u16 r[4];
*(s32 *)(param_1 + 0x8) = (s16)func_80012C6C(*(s16 *)(param_1 + 0x8), *(s16 *)(param_1 + 0xC), 4);
*(s32 *)(param_1 + 0x10) = (s16)func_80012C6C(*(s16 *)(param_1 + 0x10), *(s16 *)(param_1 + 0x14), 4);
*(s16 *)(param_1 + 0x18) = func_80012ABC(*(s16 *)(param_1 + 0x18), *(s16 *)(param_1 + 0x20), 4);
*(s16 *)(param_1 + 0x1A) = func_80012ABC(*(s16 *)(param_1 + 0x1A), *(s16 *)(param_1 + 0x22), 4);
*(s16 *)(param_1 + 0x1C) = func_80012ABC(*(s16 *)(param_1 + 0x1C), *(s16 *)(param_1 + 0x24), 4);
*(s16 *)(param_1 + 0x28) = func_80012C6C(*(s16 *)(param_1 + 0x28), *(s16 *)(param_1 + 0x2E), 0x10);
*(s16 *)(param_1 + 0x2A) = func_80012C6C(*(s16 *)(param_1 + 0x2A), *(s16 *)(param_1 + 0x30), 0x10);
*(s16 *)(param_1 + 0x2C) = func_80012C6C(*(s16 *)(param_1 + 0x2C), *(s16 *)(param_1 + 0x32), 0x10);
*(s32 *)(param_1 + 0x48) = *(s16 *)(param_1 + 0x28) + *(s16 *)(param_2 + 0);
*(s32 *)(param_1 + 0x4C) = *(s16 *)(param_1 + 0x2A) + *(s16 *)(param_2 + 2);
*(s32 *)(param_1 + 0x50) = *(s16 *)(param_1 + 0x2C) + *(s16 *)(param_2 + 4);
r[0] = *(u16 *)(param_1 + 0x18);
r[1] = *(u16 *)(param_1 + 0x1A) + param_3;
r[2] = *(u16 *)(param_1 + 0x1C);
func_801860A8(r, (s16 *)mat);
svIn[0] = 0;
svIn[1] = 0;
svIn[2] = *(s32 *)(param_1 + 0x10);
ApplyMatrixSV(mat, svIn, vecOut);
*(s32 *)(param_1 + 0x3C) = ((s16)vecOut[0] >> 3) + *(s16 *)(param_1 + 0x28) + *(s16 *)(param_2 + 0);
*(s32 *)(param_1 + 0x40) = ((s16)vecOut[1] >> 3) + *(s16 *)(param_1 + 0x2A) + *(s16 *)(param_2 + 2);
*(s32 *)(param_1 + 0x44) = ((s16)vecOut[2] >> 3) + *(s16 *)(param_1 + 0x2C) + *(s16 *)(param_2 + 4);
}
void func_80181E98(void) {
}
@@ -8249,7 +8288,41 @@ void func_80183884(s32 arg0) {
}
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801838FC);
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C810(s32 a0, s32 a1);
extern s32 func_8012AD50(void *a0);
extern u8 D_801A7DB0[];
extern u16 D_8018C674[];
extern u16 D_8018C676[];
extern u16 D_8018C678[];
extern u16 D_8018C67A[];
extern u8 D_8018C68C[];
void func_801838FC(s32 a0)
{
s32 v0;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)(a0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4((void *)a0);
return;
}
func_8001C810(v0, (s32)D_801A7DB0);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10;
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x4) |= 0x8040;
*(u16 *)(a0 + 0x6) = D_8018C674[*(s16 *)(a0 + 0x70) * 4];
*(u16 *)(a0 + 0xA) = D_8018C676[*(s16 *)(a0 + 0x70) * 4];
*(u16 *)(a0 + 0xE) = D_8018C678[*(s16 *)(a0 + 0x70) * 4];
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = D_8018C67A[*(s16 *)(a0 + 0x70) * 4];
*(s32 *)(a0 + 0x58) = (s32)D_8018C68C | 0x20000000;
*(u8 *)(a0 + 0x75) = 2;
*(u16 *)(a0 + 0x5C) = 0xCC00;
func_8012AD50((void *)a0);
}
void func_80183A1C(s32 a0) {
switch (*(u16 *)(a0 + 0x34)) {
@@ -8541,7 +8614,68 @@ L_da8:
}
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801840F8);
extern void func_8013CABC(void);
extern void func_80184A50(void *a0);
extern int func_8001AAA0(void);
extern void func_8018278C(void);
extern s32 func_8012BEE8(s32 a0);
extern void func_80184398(s32 a0);
extern void func_801842CC(s32 arg0);
extern int func_80178970(void);
extern s32 D_801AECC0;
void func_801840F8(s32 arg0)
{
s32 t;
t = *(s32 *)(arg0 + 0x1C);
if (t == 0x30) {
func_8013CABC();
} else if (t == 0x10) {
func_80184A50((void *)*(s32 *)(arg0 + 0xD0));
}
if (*(u16 *)(arg0 + 0x84) & 1) {
t = *(s32 *)(arg0 + 0x64);
*(u16 *)(t + 0x6) -= 3;
t = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20);
*(u16 *)(t + 0x8) -= 3;
*(u16 *)(arg0 + 0x6) -= 3;
} else {
t = *(s32 *)(arg0 + 0x64);
*(u16 *)(t + 0x6) += 3;
t = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20);
*(u16 *)(t + 0x8) += 3;
*(u16 *)(arg0 + 0x6) += 3;
}
*(u16 *)(arg0 + 0x84) += 1;
switch (*(u16 *)(arg0 + 0x34)) {
case 0:
if (((int (*)(int))func_8001AAA0)(0x7B) != 0) {
*(u16 *)(arg0 + 0x34) += 1;
}
break;
case 1:
if (D_801AECC0 == 0) {
D_801AECC0 = ((s32 (*)(void))func_8018278C)();
}
break;
}
if ((func_8012BEE8(arg0) != 0) && (D_801AECC0 != 0)) {
func_80184398(arg0);
} else {
if (*(s32 *)(arg0 + 0x1C) < 0x48) {
if ((*(u16 *)(arg0 + 0x84) & 3) == 0) {
func_801842CC(arg0);
}
}
}
((void (*)(s32))func_80178970)(arg0);
}
void func_801842CC(s32 arg0)
{
+56 -3
View File
@@ -3167,7 +3167,27 @@ void func_8017BEBC(s32 arg0)
}
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017BEBC", func_8017CD9C);
#include "common.h"
extern void func_8002931C(void);
extern int func_8017DAF0(int);
extern u8 D_80189E74[];
extern u8 D_80189EC4[];
extern u8 *D_801274C8;
extern void *D_801274CC;
void func_8017CD9C(void)
{
((void (*)(s32))func_8002931C)(0x3C00000);
D_801274C8 = D_80189E74;
D_801274CC = D_80189EC4;
func_8017DAF0(0);
}
#include "common.h"
@@ -3669,7 +3689,18 @@ int func_8017DAF0(int param_1)
}
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017BEBC", func_8017DB20);
extern void func_8017DD80(void *a0);
void func_8017DB20(void) {
extern s32 D_801B21FC;
extern s32 D_801AC714;
if (D_801B21FC == 0) {
func_8017DD80(&D_801AC714);
D_801B21FC = D_801B21FC + 1;
}
}
extern void func_8017DB98(s32 a0, s32 a1);
void func_8017DB6C(s32 a0) {
@@ -3898,7 +3929,29 @@ void func_8017E290(void *a0) {
}
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017BEBC", func_8017E2F0);
extern s32 func_80047948(s32 a0);
s32 func_8017E2F0(s32 a0)
{
switch (*(u16 *)(a0 + 0x34)) {
case 0:
*(u16 *)(a0 + 0xFC) += 0x40;
if (*(s16 *)(a0 + 0xFC) >= 0x400) {
*(u16 *)(a0 + 0x34) += 1;
}
*(s32 *)(a0 + 8) -= (0x1000 - func_80047948(*(s16 *)(a0 + 0xFC))) << 7;
break;
case 1:
if (*(s16 *)(a0 + 0xA) < -0x156) {
*(s16 *)(a0 + 0xA) = -0x156;
return 1;
}
*(s16 *)(a0 + 0xA) -= 8;
break;
}
return 0;
}
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017BEBC", func_8017E3C0);
+94 -4
View File
@@ -3898,7 +3898,41 @@ void func_8017D1F0(void) {
}
INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017D288);
#include "common.h"
extern void func_8012A018(s32 a0, s32 a1);
extern void func_8012A094(s32 a0);
extern void func_8017D648(void *a0);
void func_8017D288(void) {
typedef struct { s8 c[8]; } Blk8;
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;
extern Blk8 D_801274F0;
extern Blk8 D_801869C0;
D_80126954 = 0x190;
D_8012695C = 0x15E;
D_80126968 = 0;
D_8012696A = 0x800;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0x60;
D_8012697A = 0;
func_8012A018((s32)func_8017D648, 3);
D_801274F0 = D_801869C0;
func_8012A094((s32)D_80126948);
func_8017D648(D_80126948);
}
#include "common.h"
@@ -3936,7 +3970,41 @@ void func_8017D350(void) {
}
INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017D41C);
#include "common.h"
extern void func_8012A018(s32 a0, s32 a1);
extern void func_8012A094(s32 a0);
extern void func_8017D648(void *a0);
void func_8017D41C(void) {
typedef struct { s16 x0, x1, x2, x3; } BlkT;
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;
extern u8 D_801274E8[];
extern u8 D_801869D0;
D_80126954 = 0x190;
D_8012695C = 0x15E;
D_80126968 = -0x38;
D_8012696A = 0;
D_8012696C = 0;
D_80126976 = 0;
D_80126978 = -0x60;
D_8012697A = 0;
func_8012A018((s32)func_8017D648, 5);
*(BlkT *)&D_801274E8 = *(BlkT *)&D_801869D0;
func_8012A094((s32)D_80126948);
func_8017D648(D_80126948);
}
#include "common.h"
@@ -4372,7 +4440,12 @@ void func_8017E1D8(void) {
}
INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017E234);
extern void func_80016714(void *a0, s32 a1);
void func_8017E234(void *a0) {
func_80016714(a0, 0x18);
}
s32 func_8017E254(void * arg0)
{
@@ -4381,7 +4454,24 @@ s32 func_8017E254(void * arg0)
}
INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017E268);
extern s32 D_801151D4;
extern void func_80016714(void *a0, s32 a1);
void func_8017E268(s32 a0) {
s32 p;
s32 t;
p = D_801151D4;
t = *(s32 *)(p + 0x14) - 1;
*(s32 *)(p + 0x14) = t;
*(s32 *)(p + 0x10) = t;
if (t < 400) {
*(s32 *)(p + 0x10) = 400;
*(s32 *)(p + 0x14) = 400;
func_80016714((void *)a0, 0x18);
}
}
INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017E2B8);
+7 -1
View File
@@ -1849,7 +1849,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_010/nonmatchings/ov_SC07_010_jr_801457A4", func_8014C1A0);
extern void func_8014C1C8(s32 a0, s32 a1, void *a2);
extern s32 D_80183C00;
void func_8014C1A0(s32 arg0, s32 arg1) {
func_8014C1C8(arg0, arg1, &D_80183C00);
}
DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014c1c8 (src/shared) */
+56 -3
View File
@@ -4041,9 +4041,39 @@ s32 func_8017D574(u8 *a0) {
}
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D5F0);
#include "common.h"
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_8017D5F0(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 func_8017DCB8(s32 a0);
extern void func_80171928(void *a0);
void func_8017D654(void *a0) {
func_8017DCB8(1);
func_80171928(a0);
}
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D654);
@@ -4131,7 +4161,30 @@ void func_8017D85C(s32 *a0) {
}
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017D898);
extern s32 func_80171A88(s32 a0);
extern void func_80015978(s32 a0, s32 *a1);
extern void func_8017EBB8(void *a0, void *a1);
extern void func_80147324(s32 a0);
extern void func_8014706C(void *a0);
extern void func_801542A4(s32 *a0, s32 a1);
extern s32 func_80171990(u8 *a0);
extern s32 D_80185A10;
void func_8017D898(s32 param_1) {
s32 sp10[2];
if (func_80171A88(param_1) != 0) {
func_80015978(param_1 + 4, sp10);
*(s16 *)sp10 -= 0x20;
*(s16 *)((u8 *)sp10 + 2) -= 0x20;
func_8017EBB8((void *)0, sp10);
func_80147324(0xC13);
func_8014706C((void *)param_1);
func_801542A4((s32 *)param_1, (s32)&D_80185A10);
func_80171990((u8 *)param_1);
}
}
extern s32 D_801151D4;
extern s32 D_80185AC8;