mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 14:59:48 -04:00
feat(decomp): ox wave cy overlays — 6 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
@@ -4446,6 +4446,7 @@ build/src/ov_SC06_024/ov_SC06_024_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC06_024/ov_SC06_024_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_024/ov_SC06_024_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_024/ov_SC06_024_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC06_024/ov_SC06_024_jr_8017BEBC.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC06_024/ov_SC06_024_jr_801851E0.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
|
||||
build/src/ov_SC06_024/ov_SC06_024_jr_80186F00.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
|
||||
build/src/ov_SC06_024/ov_SC06_024_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
|
||||
@@ -166,7 +166,7 @@ segments:
|
||||
- [0xb7a8c, data, tail17]
|
||||
- [0xb7a90, .rodata, ov_SC06_024_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb7aa4, .rodata, ov_SC06_024_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb7ac4, data, tail18]
|
||||
- [0xb7aec, data, tail18]
|
||||
- [0xb7b58, .rodata, ov_SC06_024_jr_801851E0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb7c38, .rodata, ov_SC06_024_jr_801867DC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb7c50, .rodata, ov_SC06_024_jr_80186F00] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
|
||||
@@ -3575,7 +3575,51 @@ extern void func_8017F630(void);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F630);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F6A4);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012A8B0(u8 *a0, s32 a1);
|
||||
extern s32 func_80132EF4(s32 a0, s32 a1);
|
||||
extern void func_8017F190(s32 a0);
|
||||
extern void func_8017F11C(s32 a0);
|
||||
|
||||
void func_8017F6A4(s32 param_1) {
|
||||
extern u8 D_801A2D40;
|
||||
extern u8 D_801A2EC4;
|
||||
s32 v0;
|
||||
s32 inst;
|
||||
s32 v1;
|
||||
s32 t;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
inst = v0;
|
||||
*(s32 *)(param_1 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
((void (*)(s32))func_8012CAE4)(param_1);
|
||||
return;
|
||||
}
|
||||
((void (*)(s32, void *))func_8001C214)(inst, &D_801A2D40);
|
||||
*(s16 *)(inst + 0x1C) = 0x800;
|
||||
*(s16 *)(inst + 0x1A) = 0x800;
|
||||
*(s16 *)(inst + 0x18) = 0x800;
|
||||
*(s16 *)(inst + 0x2C) |= 0x10;
|
||||
((void (*)(u8 *, s32))func_8012A8B0)((u8 *)param_1, (s32)&D_801A2EC4);
|
||||
*(s16 *)(param_1 + 0x84) = 0;
|
||||
v1 = func_80132EF4(param_1, 0x2A);
|
||||
*(s32 *)(param_1 + 0xCC) = v1;
|
||||
if (v1 != 0) {
|
||||
*(u16 *)(v1 + 0x2C) = *(u8 *)(param_1 + 0x70);
|
||||
t = *(u16 *)(param_1 + 0x36);
|
||||
*(s32 *)(v1 + 0x30) = param_1;
|
||||
*(u16 *)(v1 + 0x2E) = t;
|
||||
}
|
||||
if (*(s16 *)(param_1 + 0x70) & 0x8000) {
|
||||
((void (*)(s32))func_8017F190)(param_1);
|
||||
} else {
|
||||
((void (*)(s32))func_8017F11C)(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F78C);
|
||||
|
||||
|
||||
@@ -3610,7 +3610,20 @@ void func_8017D8C8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017D948);
|
||||
void func_8017D948(s32 s0) {
|
||||
extern void func_80178D18(void);
|
||||
if (func_80178970() == 0) {
|
||||
return;
|
||||
}
|
||||
((void (*)(s32))func_80178D18)(s0);
|
||||
*(s16 *)(s0 + 2) = 1;
|
||||
if (*(s16 *)(s0 + 0x70) == 0) {
|
||||
*(s32 *)(*(s32 *)(s0 + 0x20) + 4) |= 0x80000000;
|
||||
} else {
|
||||
*(s32 *)(*(s32 *)(s0 + 0x20) + 4) &= 0x7FFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017D9C4);
|
||||
|
||||
|
||||
@@ -3272,7 +3272,98 @@ void func_80183C84(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80183D5C);
|
||||
typedef struct { s16 vx, vy, vz, pad; } SV83;
|
||||
|
||||
void func_80183D5C(s32 arg0)
|
||||
{
|
||||
extern void func_8004914C(void *);
|
||||
extern void func_800491AC(void *);
|
||||
extern s32 func_8004787C(s32);
|
||||
extern s32 func_80047948(s32);
|
||||
extern s32 RotTransPers3(void *, void *, void *, s32 *, s32 *, s32 *, s32 *, s32 *);
|
||||
extern void *func_80010A08(s32);
|
||||
extern s32 GetTPage(s32, s32, s32, s32);
|
||||
extern s32 func_8005A600(s32, s32, s32, s32, s32);
|
||||
extern s32 AddPrim(s32, void *);
|
||||
extern u8 D_800AF648;
|
||||
extern s32 D_800A651C[];
|
||||
extern s16 D_800B9A02;
|
||||
|
||||
register u8 *db __asm__("$16");
|
||||
register s32 obj __asm__("$17");
|
||||
void *q;
|
||||
SV83 v[3];
|
||||
s32 scr[6];
|
||||
s32 ret;
|
||||
s32 tp;
|
||||
s32 i;
|
||||
u16 *e;
|
||||
u8 *r;
|
||||
s32 ot;
|
||||
|
||||
obj = arg0;
|
||||
db = &D_800AF648;
|
||||
func_8004914C(db);
|
||||
func_800491AC(db);
|
||||
|
||||
v[0].vx = *(u16 *)((char *)obj + 6);
|
||||
v[0].vy = *(u16 *)((char *)obj + 0xA);
|
||||
v[0].vz = *(u16 *)((char *)obj + 0xE);
|
||||
|
||||
ret = func_8004787C(*(s16 *)((char *)obj + 0xFC) + 0x40);
|
||||
v[1].vx = *(u16 *)((char *)obj + 6) - (ret * *(s16 *)((char *)obj + 0x100) >> 7);
|
||||
v[1].vy = *(u16 *)((char *)obj + 0xA) - (*(u16 *)((char *)obj + 0x100) << 5);
|
||||
ret = func_80047948(*(s16 *)((char *)obj + 0xFC) + 0x40);
|
||||
v[1].vz = *(u16 *)((char *)obj + 0xE) - (ret * *(s16 *)((char *)obj + 0x100) >> 7);
|
||||
ret = func_8004787C(*(s16 *)((char *)obj + 0xFC) - 0x40);
|
||||
v[2].vx = *(u16 *)((char *)obj + 6) - (ret * *(s16 *)((char *)obj + 0x100) >> 7);
|
||||
v[2].vy = *(u16 *)((char *)obj + 0xA) - (*(u16 *)((char *)obj + 0x100) << 5);
|
||||
ret = func_80047948(*(s16 *)((char *)obj + 0xFC) - 0x40);
|
||||
v[2].vz = *(u16 *)((char *)obj + 0xE) - (ret * *(s16 *)((char *)obj + 0x100) >> 7);
|
||||
|
||||
ret = RotTransPers3(&v[0], &v[1], &v[2], &scr[0], &scr[1], &scr[2], &scr[4], &scr[5]);
|
||||
if (ret <= 0 || scr[5] < 0) {
|
||||
*(u16 *)((char *)obj + 0x102) = 0;
|
||||
*(u16 *)((char *)obj + 0x100) = *(u16 *)((char *)obj + 0x100) - 1;
|
||||
return;
|
||||
}
|
||||
ret -= 0x10;
|
||||
|
||||
ot = D_800A651C[*(u16 *)&D_800B9A02 * 5] + (ret << 2);
|
||||
|
||||
q = func_80010A08(0x30);
|
||||
if (q == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
tp = GetTPage(0, 1, 0, 0);
|
||||
func_8005A600((s32)q, 0, 0, (u16)tp, 0);
|
||||
|
||||
r = (u8 *)q + 0xC;
|
||||
for (i = 0, e = (u16 *)scr; i < 3; i++) {
|
||||
if (!((u16)(e[0] + 0xA0) < 0x141 && (u16)(e[1] + 0x78) < 0xF1)) {
|
||||
*(u16 *)((char *)obj + 0x102) = 0;
|
||||
}
|
||||
e += 2;
|
||||
}
|
||||
|
||||
r[0x1C] = r[0x14] = r[0xC] = r[4] = 0xFF;
|
||||
r[0x1D] = r[0x15] = r[0xD] = r[5] = 0xFF;
|
||||
r[0x1E] = r[0x16] = r[0xE] = r[6] = 0xFF;
|
||||
r[3] = 8;
|
||||
r[7] = 0x3A;
|
||||
*(u16 *)(r + 8) = *(volatile u16 *)&scr[0];
|
||||
*(u16 *)(r + 0x10) = *(volatile u16 *)&scr[0];
|
||||
*(u16 *)(r + 0x18) = *(volatile u16 *)&scr[1];
|
||||
*(u16 *)(r + 0x20) = *(volatile u16 *)&scr[2];
|
||||
*(u16 *)(r + 0xA) = *(volatile u16 *)((u16 *)&scr[0] + 1);
|
||||
*(u16 *)(r + 0x12) = *(volatile u16 *)((u16 *)&scr[0] + 1);
|
||||
*(u16 *)(r + 0x1A) = *(volatile u16 *)((u16 *)&scr[1] + 1);
|
||||
*(u16 *)(r + 0x22) = *(volatile u16 *)((u16 *)&scr[2] + 1);
|
||||
AddPrim(ot, r);
|
||||
AddPrim(ot, q);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_80184084);
|
||||
|
||||
|
||||
@@ -5344,7 +5344,22 @@ void func_80181840(void *s0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_8018191C);
|
||||
extern void func_8012F568();
|
||||
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
void func_8018191C(s32 a0, void *a1, void *a2, s32 a3)
|
||||
{
|
||||
extern s32 *D_80126B78;
|
||||
extern s32 *D_80126B90;
|
||||
extern s16 D_80126B9A;
|
||||
extern u8 D_801152A8[];
|
||||
|
||||
if (func_80135888((s32)D_80126B78, (s32)D_80126B90, (s32)a1, (s32)a2) != 0) {
|
||||
func_8012F568(1, 0x4201, a3, 0x5A, a2, D_801152A8);
|
||||
D_80126B9A = a3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -5637,7 +5652,38 @@ void func_8018205C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_801820E0);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern int func_800D0CE0(void);
|
||||
extern void func_8017C068(void);
|
||||
extern s16 D_8019F71C;
|
||||
|
||||
void func_801820E0(s32 a0) {
|
||||
u16 var = *(u16 *)(a0 + 0x34);
|
||||
|
||||
switch (var) {
|
||||
case 0:
|
||||
*(u16 *)(a0 + 0x34) = var + 1;
|
||||
break;
|
||||
case 1:
|
||||
if (((s32 (*)(s32))func_80178970)(a0) != 0) {
|
||||
((void (*)(s32))func_80178D18)(a0);
|
||||
*(s32 *)(a0 + 0xDC) = 0;
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (func_800D0CE0() == 1) {
|
||||
*(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
func_8017C068();
|
||||
D_8019F71C = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern u16 D_80188BB4;
|
||||
|
||||
|
||||
@@ -3648,7 +3648,240 @@ void func_8017DAE0(s32 param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017DBFC);
|
||||
extern void func_8012EC04(s32, s32, s32 *);
|
||||
extern void func_8012F14C(s32, s32, s32);
|
||||
extern s32 func_80132EF4(s32, s32);
|
||||
extern s32 func_80128DB4(s32, s32*);
|
||||
extern s32 func_8012BE54(s32);
|
||||
extern void func_8017EC4C(s32);
|
||||
extern void func_8017EADC(s32);
|
||||
extern s32 func_8012BEE8(s32);
|
||||
extern s32 func_8012BA10(s32, s32);
|
||||
extern s32 func_8012BDBC(s32, s32);
|
||||
extern void func_8002D4C8(s32, s32);
|
||||
extern void func_80128D60(s32, s32 *, s32 *);
|
||||
|
||||
extern u8 D_80193470;
|
||||
extern u8 D_80193471;
|
||||
extern u8 D_80193472;
|
||||
extern u16 D_80193378[];
|
||||
extern u16 D_801933B8[];
|
||||
extern void (*D_80193438)(void);
|
||||
extern u16 D_80193440[];
|
||||
extern u16 D_80193442;
|
||||
extern u16 D_80193444;
|
||||
extern s32 D_80126B58;
|
||||
extern s32 D_801E1118;
|
||||
extern s32 D_801E1120[];
|
||||
extern s32 D_801E1158;
|
||||
|
||||
void func_8017DBFC(s32 arg0)
|
||||
{
|
||||
register s32 s0 __asm__("$16");
|
||||
s32 s1;
|
||||
u16 buf[16];
|
||||
u16 vec[8];
|
||||
|
||||
s0 = arg0;
|
||||
switch (*(u16 *)(s0 + 0x34)) {
|
||||
case 0:
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
*(s32 *)(s0 + 0xE4) = *(s32 *)(s0 + 0xE4) & ~4;
|
||||
*(u16 *)(s0 + 0x100) = 0;
|
||||
*(u16 *)(s0 + 0x102) = 0;
|
||||
*(s32 *)(s0 + 0x1C) = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (func_8012BEE8(s0) != 0) {
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
v0 = func_8012BA10(s0, 8);
|
||||
v1 = *(s32 *)(s0 + 0x20);
|
||||
*(s16 *)(v1 + 0x12) = *(s16 *)(v1 + 0x12) + v0;
|
||||
if (func_8012BDBC(s0, 0x100) != 0) {
|
||||
*(s32 *)(s0 + 0x1C) = 0x1E;
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
func_8002D4C8(0x95A, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
v0 = func_8012BA10(s0, 8);
|
||||
v1 = *(s32 *)(s0 + 0x20);
|
||||
*(s16 *)(v1 + 0x12) = *(s16 *)(v1 + 0x12) + v0;
|
||||
if (func_8012BEE8(s0) != 0) {
|
||||
*(s32 *)(s0 + 0x1C) = 7;
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
func_8002D4C8(4, 0x95A);
|
||||
}
|
||||
*(u16 *)(s0 + 0x102) = *(u16 *)(s0 + 0x102) + 0x10;
|
||||
func_8017EADC(s0);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
s1 = func_80132EF4(&D_80126B58, 0x5B);
|
||||
if (s1 != 0) {
|
||||
v0 = *(s32 *)(s0 + 0x1C);
|
||||
v1 = *(s32 *)(s1 + 0x20);
|
||||
*(s16 *)(v1 + 0x1A) = v0 << 12;
|
||||
*(s16 *)(v1 + 0x18) = v0 << 12;
|
||||
*(u16 *)(s1 + 0xA) = *(u16 *)(s1 + 0xA) - 0x30;
|
||||
if (*(s32 *)(s0 + 0x1C) == 7) {
|
||||
func_8002D4C8(0x95B, 0);
|
||||
}
|
||||
}
|
||||
if (func_8012BEE8(s0) != 0) {
|
||||
*(u16 *)(s0 + 0x102) = 0;
|
||||
*(s32 *)(s0 + 0x1C) = 0x1E;
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
func_80128D60(0, D_801E1120, D_80193378);
|
||||
*(s32 *)(*(s32 *)(s0 + 0xD4) + 4) &= 0x7FFFFFFF;
|
||||
D_80193470 = 0x20;
|
||||
D_80193471 = 0x20;
|
||||
D_80193472 = 0x20;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
u8 *p = &D_80193470;
|
||||
*p = *p + 7;
|
||||
D_80193471 = D_80193471 + 7;
|
||||
D_80193472 = D_80193472 + 7;
|
||||
if (func_8012BEE8(s0) != 0) {
|
||||
func_80128D60(0, D_801E1120, D_801933B8);
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
func_8002D4C8(0x95C, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
*(u16 *)(s0 + 0x102) = *(u16 *)(s0 + 0x102) + 0x18;
|
||||
if ((*(s32 *)(s0 + 0xE4) & 4) != 0) {
|
||||
*(s32 *)(s0 + 0x1C) = 0x20;
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
}
|
||||
func_8017EC4C(s0);
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
s32 v1;
|
||||
*(u16 *)(s0 + 0x102) = *(u16 *)(s0 + 0x102) + 0x18;
|
||||
if (func_8012BEE8(s0) != 0) {
|
||||
*(s32 *)(s0 + 0x1C) = 0x60;
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
v1 = *(s32 *)(s0 + 0x20);
|
||||
if ((u32)((*(u16 *)(v1 + 0x12) & 0xFFF) - 0x501) < 0x800) {
|
||||
func_8002D4C8(0x963, 0);
|
||||
D_801E1118 = 0;
|
||||
} else {
|
||||
func_8002D4C8(0x962, 0);
|
||||
D_801E1118 = 1;
|
||||
}
|
||||
}
|
||||
func_8017EC4C(s0);
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
*(u16 *)(s0 + 0x102) = *(u16 *)(s0 + 0x102) + 0x18;
|
||||
v1 = *(s32 *)(s0 + 0x20);
|
||||
*(s16 *)(v1 + 0x12) = *(s16 *)(v1 + 0x12) + 0x80;
|
||||
v0 = *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) & 0xFFF;
|
||||
if (D_801E1118 != 0) {
|
||||
if ((u32)(v0 - 0x501) < 0x800) {
|
||||
func_8002D4C8(0x963, 0);
|
||||
D_801E1118 = 0;
|
||||
}
|
||||
} else {
|
||||
if ((u32)(v0 - 0x501) >= 0x800) {
|
||||
func_8002D4C8(0x962, 0);
|
||||
D_801E1118 = 1;
|
||||
}
|
||||
}
|
||||
if (func_8012BEE8(s0) != 0) {
|
||||
*(s32 *)(s0 + 0x1C) = 0xA;
|
||||
*(u16 *)(s0 + 0x34) = *(u16 *)(s0 + 0x34) + 1;
|
||||
}
|
||||
if ((*(s32 *)(s0 + 0xE4) & 4) != 0) {
|
||||
s1 = func_80132EF4(s0, 0x22);
|
||||
if (s1 != 0) {
|
||||
func_8012EC04(s0, D_801E1158, buf);
|
||||
vec[0] = D_80193440[0];
|
||||
vec[1] = D_80193442;
|
||||
vec[2] = D_80193444 - 0xD0;
|
||||
func_8012F14C(buf, vec, &vec[4]);
|
||||
*(u16 *)(s1 + 0x34) = 0x3000;
|
||||
*(u16 *)(s1 + 6) = vec[4];
|
||||
*(u16 *)(s1 + 0xA) = vec[5];
|
||||
*(u16 *)(s1 + 0xE) = vec[6];
|
||||
}
|
||||
}
|
||||
func_8017EC4C(s0);
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
u8 *p;
|
||||
*(u16 *)(s0 + 0x100) = *(u16 *)(s0 + 0x100) + 0x18;
|
||||
if ((*(s32 *)(s0 + 0xE4) & 4) == 0) {
|
||||
*(u16 *)(s0 + 0x102) = *(u16 *)(s0 + 0x102) + 0x18;
|
||||
}
|
||||
if (func_8012BEE8(s0) == 0) {
|
||||
p = &D_80193470;
|
||||
*p = *p - 0x18;
|
||||
D_80193471 = D_80193471 - 0x18;
|
||||
D_80193472 = D_80193472 - 0x18;
|
||||
}
|
||||
v0 = *(s16 *)(s0 + 0x100) - *(s16 *)(s0 + 0x102);
|
||||
if (v0 >= 0) {
|
||||
if (v0 < 0x20) {
|
||||
goto Ljoin9;
|
||||
}
|
||||
goto Lexit9;
|
||||
}
|
||||
if (*(s16 *)(s0 + 0x102) - *(s16 *)(s0 + 0x100) >= 0x20) {
|
||||
goto Lexit9;
|
||||
}
|
||||
Ljoin9:
|
||||
*(u16 *)(s0 + 0x100) = *(u16 *)(s0 + 0x102);
|
||||
v1 = func_8012BE54(s0);
|
||||
if (0x2FFFF < v1) {
|
||||
func_80128D60(0, D_801E1120, ((u16 *)&D_80193438));
|
||||
*(u16 *)(s0 + 2) = 1;
|
||||
} else {
|
||||
*(u16 *)(s0 + 2) = 3;
|
||||
}
|
||||
*(u16 *)(s0 + 0x34) = 0;
|
||||
*(s32 *)(*(s32 *)(s0 + 0xD4) + 4) |= 0x80000000;
|
||||
*(s32 *)(*(s32 *)(s0 + 0xD8) + 4) |= 0x80000000;
|
||||
func_8002D4C8(4, 0x95C);
|
||||
break;
|
||||
Lexit9:
|
||||
func_8017EC4C(s0);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
((void (*)(s32, s32 *))func_80128DB4)(0, D_801E1120);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017E1F0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user