mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-08 01:34:14 -04:00
feat(decomp): ox wave bq overlays — 81 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
+2
-1
@@ -2852,7 +2852,7 @@ ov_SC03_121_ELF := $(ov_SC03_121_OUT).elf
|
||||
ov_SC03_121_MAPFILE := $(ov_SC03_121_OUT).map
|
||||
ov_SC03_121_LD_SCRIPT := $(ov_SC03_121_OUT).ld
|
||||
ov_SC03_121_SPLAT_YAML := config/splat.ov_SC03_121.yaml
|
||||
ov_SC03_121_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_121.o,ov_SC03_121_jr_8012ACE0.o,tail2.data.o,ov_SC03_121_jr_80135888.o,tail3.data.o,ov_SC03_121_jr_80135A4C.o,tail4.data.o,ov_SC03_121_jr_80135D20.o,tail5.data.o,ov_SC03_121_jr_801380E0.o,ov_SC03_121_o0c.o,tail6.data.o,ov_SC03_121_jr_8013F350.o,tail7.data.o,ov_SC03_121_jr_8013FFD8.o,tail8.data.o,ov_SC03_121_jr_80140608.o,tail9.data.o,ov_SC03_121_jr_8015444C.o,ov_SC03_121_jr_80154C24.o,ov_SC03_121_jr_801588CC.o,ov_SC03_121_jr_80159C84.o,tail10.data.o,ov_SC03_121_jr_8015A3C8.o,tail11.data.o,ov_SC03_121_jr_8015AE2C.o,tail12.data.o,ov_SC03_121_jr_8015C32C.o,tail13.data.o,ov_SC03_121_jr_8016AB6C.o,tail14.data.o,ov_SC03_121_jr_80171B4C.o,ov_SC03_121_jr_801734BC.o,tail15.data.o,ov_SC03_121_jr_801789AC.o,ov_SC03_121_jr_80178D40.o,tail16.data.o,ov_SC03_121_jr_8017A4AC.o,tail17.data.o,ov_SC03_121_jr_8017AE2C.o,ov_SC03_121_jr_8017BEBC.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
ov_SC03_121_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_121.o,ov_SC03_121_jr_8012ACE0.o,tail2.data.o,ov_SC03_121_jr_80135888.o,tail3.data.o,ov_SC03_121_jr_80135A4C.o,tail4.data.o,ov_SC03_121_jr_80135D20.o,tail5.data.o,ov_SC03_121_jr_801380E0.o,ov_SC03_121_o0c.o,tail6.data.o,ov_SC03_121_jr_8013F350.o,tail7.data.o,ov_SC03_121_jr_8013FFD8.o,tail8.data.o,ov_SC03_121_jr_80140608.o,tail9.data.o,ov_SC03_121_jr_8015444C.o,ov_SC03_121_jr_80154C24.o,ov_SC03_121_jr_801588CC.o,ov_SC03_121_jr_80159C84.o,tail10.data.o,ov_SC03_121_jr_8015A3C8.o,tail11.data.o,ov_SC03_121_jr_8015AE2C.o,tail12.data.o,ov_SC03_121_jr_8015C32C.o,tail13.data.o,ov_SC03_121_jr_8016AB6C.o,tail14.data.o,ov_SC03_121_jr_80171B4C.o,ov_SC03_121_jr_801734BC.o,tail15.data.o,ov_SC03_121_jr_801789AC.o,ov_SC03_121_jr_80178D40.o,tail16.data.o,ov_SC03_121_jr_8017A4AC.o,tail17.data.o,ov_SC03_121_jr_8017AE2C.o,ov_SC03_121_jr_8017BEBC.o,tail18.data.o,ov_SC03_121_jr_8017E1D0.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
build/src/ov_SC03_121/ov_SC03_121.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
|
||||
build/src/ov_SC03_121/ov_SC03_121_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
|
||||
@@ -3009,6 +3009,7 @@ build/src/ov_SC04_002/ov_SC04_002_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC04_002/ov_SC04_002_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_002/ov_SC04_002_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_002/ov_SC04_002_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC04_002/ov_SC04_002_jr_8017BEBC.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC04_002/ov_SC04_002_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC04_002_CHECK_SHA := config/check.ov_SC04_002.sha
|
||||
ov_SC04_002_SYMBOLS := config/symbols.ov_SC04_002.txt
|
||||
|
||||
@@ -121,6 +121,7 @@ segments:
|
||||
- [0x52354, c, ov_SC03_121_jr_8017A4AC]
|
||||
- [0x52cd4, c, ov_SC03_121_jr_8017AE2C]
|
||||
- [0x53d64, c, ov_SC03_121_jr_8017BEBC]
|
||||
- [0x56078, c, ov_SC03_121_jr_8017E1D0]
|
||||
- [0x59fe0, data, tail]
|
||||
- [0x84680, .rodata, ov_SC03_121] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x8475c, .rodata, ov_SC03_121_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
@@ -164,6 +165,8 @@ segments:
|
||||
- [0x857a0, .rodata, ov_SC03_121_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x857b4, .rodata, ov_SC03_121_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x857d4, data, tail18]
|
||||
- [0x85804, .rodata, ov_SC03_121_jr_8017E1D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x85818, data, tail19]
|
||||
- [0x86E54, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0x86E57] # 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
|
||||
|
||||
@@ -163,7 +163,7 @@ segments:
|
||||
- [0x97894, data, tail17]
|
||||
- [0x97898, .rodata, ov_SC04_002_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x978ac, .rodata, ov_SC04_002_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0x978cc, data, tail18]
|
||||
- [0x978e0, data, tail18]
|
||||
- [0x995DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0x995DF] # 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
|
||||
|
||||
@@ -5679,7 +5679,22 @@ void func_80186B08(s32 param_1)
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80186BB8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80186C0C);
|
||||
void func_80186C0C(void *a0) {
|
||||
typedef struct { u8 pad[0x5C]; u16 f5C; } F5C_S;
|
||||
extern F5C_S *D_801E43CC[];
|
||||
extern s8 D_80195ABC[];
|
||||
s32 i;
|
||||
s32 ent;
|
||||
s32 c;
|
||||
|
||||
for (i = 0; (c = D_80195ABC[i]) >= 0; i++) {
|
||||
ent = (s32)D_801E43CC[c];
|
||||
if (*(s32 *)(ent + 0xDC) == 0) {
|
||||
*(u16 *)(ent + 0xAE) = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct {
|
||||
u8 pad[0x5C];
|
||||
@@ -6724,7 +6739,35 @@ void func_801884C8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018850C);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8013240C(s32 a0, s32 a1, u32 a2);
|
||||
extern void func_80183FCC();
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern void func_80132784(s32 a0, s32 a1, u32 a2);
|
||||
extern s32 D_801E44E0;
|
||||
extern u32 D_801E44EC;
|
||||
extern void (*D_80196338[])(void);
|
||||
|
||||
void func_8018850C(s32 *s0) {
|
||||
s32 *v1;
|
||||
|
||||
v1 = (s32 *)*(s32 *)((u8 *)s0 + 0x20);
|
||||
*(u16 *)((u8 *)v1 + 0x2C) |= 1;
|
||||
((void (*)(s32))func_8013240C)((s32)&D_801E44E0);
|
||||
|
||||
if (D_801E44EC & 0x4000) {
|
||||
v1 = (s32 *)*(s32 *)((u8 *)s0 + 0x64);
|
||||
*(u32 *)((u8 *)v1 + 0xE8) |= 2;
|
||||
func_80183FCC((s32)s0);
|
||||
*(u8 *)((u8 *)s0 + 0xC1) = 0;
|
||||
*(u16 *)((u8 *)s0 + 0x5E) = 0;
|
||||
func_8012AD44(s0, 2);
|
||||
*(s32 *)((u8 *)s0 + 0x58) = (s32)&D_80196338 | 0x40000000;
|
||||
func_80132784((s32)s0, *(s32 *)((u8 *)s0 + 0x64), 0x15);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -10223,7 +10266,23 @@ void func_8018DDFC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018DE5C);
|
||||
extern s32 D_801270C8;
|
||||
extern void func_801439C0(u8 *a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
|
||||
void func_8018DE5C(void *a0) {
|
||||
void *p;
|
||||
|
||||
if (D_801270C8 > 0x15) {
|
||||
p = *(void **)((s32)a0 + 0xD0);
|
||||
if (p != NULL) {
|
||||
*(s16 *)((s32)p + 0) = 0;
|
||||
}
|
||||
func_801439C0((u8 *)*(s32 *)((s32)a0 + 0xCC));
|
||||
func_8012C218((void *)a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8018DEB8(s16 param_1) {
|
||||
struct {
|
||||
|
||||
@@ -9228,7 +9228,23 @@ void func_80186734(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80186740);
|
||||
s32 func_80186740(void)
|
||||
{
|
||||
typedef struct { unsigned char b[4]; } __attribute__((packed, aligned(1))) Block4;
|
||||
|
||||
extern Block4 D_801EB524;
|
||||
extern unsigned char D_801EB525;
|
||||
extern unsigned char D_801EB526;
|
||||
|
||||
unsigned char *p = (unsigned char *)&D_801EB524;
|
||||
|
||||
if (*p < 0xF8U) {
|
||||
*p += 4;
|
||||
D_801EB525 += 4;
|
||||
D_801EB526 += 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 arg0, s32 arg1);
|
||||
|
||||
@@ -9194,7 +9194,68 @@ void func_801856A0(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_8018584C);
|
||||
#define SRM_8018584C(r0) __asm__ volatile ( \
|
||||
"lw $12, 0( %0 );" \
|
||||
"lw $13, 4( %0 );" \
|
||||
"ctc2 $12, $0;" \
|
||||
"ctc2 $13, $1;" \
|
||||
"lw $12, 8( %0 );" \
|
||||
"lw $13, 12( %0 );" \
|
||||
"lw $14, 16( %0 );" \
|
||||
"ctc2 $12, $2;" \
|
||||
"ctc2 $13, $3;" \
|
||||
"ctc2 $14, $4" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "$13", "$14" )
|
||||
#define STM_8018584C(r0) __asm__ volatile ( \
|
||||
"lw $12, 20( %0 );" \
|
||||
"lw $13, 24( %0 );" \
|
||||
"ctc2 $12, $5;" \
|
||||
"lw $14, 28( %0 );" \
|
||||
"ctc2 $13, $6;" \
|
||||
"ctc2 $14, $7" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "$13", "$14" )
|
||||
|
||||
/* DEF-SIDE ALIAS (§37/§124, §136f#2): TU declares `extern s32 func_8018584C(s32)`
|
||||
* (TU:8796) and both callers discard the result; the real definition is
|
||||
* effectively VOID (nothing carried out in $v0 — §42d#1 inverse rule). */
|
||||
void aF8018584C(s32 a0) __asm__("func_8018584C");
|
||||
|
||||
void aF8018584C(s32 a0)
|
||||
{
|
||||
extern u8 D_801C5A48[];
|
||||
extern u8 D_801C5A50[];
|
||||
|
||||
s32 out0[2]; /* sp+0x10 */
|
||||
s32 out1[2]; /* sp+0x18 */
|
||||
s32 flag; /* sp+0x20 */
|
||||
s32 *mtx;
|
||||
s32 t;
|
||||
|
||||
mtx = *(s32 **)(a0 + 0x20) + 13;
|
||||
SRM_8018584C(mtx);
|
||||
STM_8018584C(mtx);
|
||||
|
||||
RotTransSV(D_801C5A48, out0, &flag);
|
||||
RotTransSV(D_801C5A50, out1, &flag);
|
||||
|
||||
func_8018594C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12),
|
||||
(s32)out0,
|
||||
*(s16 *)(a0 + 0xDC));
|
||||
func_8018594C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12),
|
||||
(s32)out1,
|
||||
*(s16 *)(a0 + 0xDC));
|
||||
|
||||
t = *(u16 *)(a0 + 0xDC) + 1;
|
||||
*(u16 *)(a0 + 0xDC) = t;
|
||||
if ((s16)t >= 3) {
|
||||
*(u16 *)(a0 + 0xDC) = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern u32 D_801C5988[];
|
||||
extern u8 *func_801290DC(s32 a0, u8 *a1);
|
||||
|
||||
@@ -8821,7 +8821,42 @@ void func_80185948(s16 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_80185A24);
|
||||
extern void func_8012CBA4(s32 a0);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
extern void func_80185D3C(void *a0, s32 a1);
|
||||
|
||||
s32 func_80185A24(s32 arg0) {
|
||||
s32 ret;
|
||||
s32 raw;
|
||||
s32 flags;
|
||||
s32 h;
|
||||
|
||||
ret = 0;
|
||||
raw = ((s32 (*)(s32))func_8012CBA4)(arg0);
|
||||
flags = raw;
|
||||
__asm__ __volatile__("" : "=r"(flags) : "0"(flags));
|
||||
if ((raw & 0x6000) != 0x2000) {
|
||||
func_8012ADE4((u8 *)arg0);
|
||||
if (*(s32 *)(arg0 + 0x1C) > 8) {
|
||||
*(s32 *)(arg0 + 0x1C) = *(s32 *)(arg0 + 0x1C) - 8;
|
||||
}
|
||||
}
|
||||
h = (s16)flags;
|
||||
if (((h & 0x8000) != 0) || ((flags & 0x6000) != 0x2000)) {
|
||||
if (*(s16 *)(arg0 + 0x106) == 0) {
|
||||
*(s16 *)(arg0 + 0x106) = (h < 0) ? -0x100 : 0x100;
|
||||
}
|
||||
if (*(s32 *)(arg0 + 0x1C) > 4) {
|
||||
*(s32 *)(arg0 + 0x1C) = *(s32 *)(arg0 + 0x1C) - 4;
|
||||
}
|
||||
ret = 1;
|
||||
*(u16 *)(arg0 + 0x108) = *(u16 *)(arg0 + 0x108) + 1;
|
||||
} else {
|
||||
*(u16 *)(arg0 + 0x106) = 0;
|
||||
}
|
||||
return (s16)(ret | ((s32 (*)(void *, s32))func_80185D3C)((void *)arg0, 0));
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3292,7 +3292,19 @@ void func_8017D980(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017D9BC);
|
||||
extern int func_8001AAA0(void);
|
||||
extern void func_8017E2C8(void);
|
||||
|
||||
s32 func_8017D9BC(s32 a0) {
|
||||
if (((s32 (*)(s32))func_8001AAA0)(0x64) == 0) {
|
||||
return 0;
|
||||
}
|
||||
func_8017E2C8();
|
||||
*(s32 *)(a0 + 0x28) = 0x80;
|
||||
*(u8 *)(a0 + 0x15) += 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_800D1E28(void);
|
||||
@@ -3370,7 +3382,33 @@ void func_8017DB84(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017DC38);
|
||||
extern int func_800D0F8C(int a0);
|
||||
extern void func_80171A04(s32 *a0);
|
||||
extern void func_80171A10(s32 *a0);
|
||||
|
||||
void func_8017DC38(s32 *a0) {
|
||||
s32 ent = a0;
|
||||
u8 id;
|
||||
|
||||
switch (*(u8 *)(ent + 0x218) + 1) {
|
||||
case 1:
|
||||
id = 0x5B;
|
||||
break;
|
||||
case 4:
|
||||
id = 0x5C;
|
||||
break;
|
||||
case 8:
|
||||
id = 0x5D;
|
||||
break;
|
||||
}
|
||||
|
||||
if (func_800D0F8C(id) != 0) {
|
||||
func_80171A04(ent);
|
||||
} else {
|
||||
func_80171A10(ent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017DCDC(s32 arg0)
|
||||
{
|
||||
@@ -3399,7 +3437,44 @@ void func_8017DD5C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017DD98);
|
||||
extern s32 D_8019BE48;
|
||||
extern s32 D_8019BE8C;
|
||||
extern s32 D_8019BED0;
|
||||
extern void func_80029124(s32, s32);
|
||||
extern void func_800D0F4C(s32);
|
||||
extern s32 func_8013767C(s32);
|
||||
extern s32 func_80171990(u8 *);
|
||||
|
||||
void func_8017DD98(s32 a0) {
|
||||
register s32 *ptr __asm__("$16");
|
||||
register s32 id __asm__("$17");
|
||||
s32 ev;
|
||||
s32 v1;
|
||||
|
||||
v1 = *(u8 *)(a0 + 0x218) + 1;
|
||||
switch (v1) {
|
||||
case 1:
|
||||
ev = 0xC1;
|
||||
ptr = &D_8019BE48;
|
||||
id = 0x5B;
|
||||
break;
|
||||
case 4:
|
||||
ev = 0xC2;
|
||||
ptr = &D_8019BE8C;
|
||||
id = 0x5C;
|
||||
break;
|
||||
case 8:
|
||||
ev = 0xC3;
|
||||
id = 0x5D;
|
||||
ptr = &D_8019BED0;
|
||||
break;
|
||||
}
|
||||
func_80029124(ev, 1);
|
||||
func_800D0F4C(id & 0xFF);
|
||||
*(s32 *)(a0 + 0x198) = func_8013767C(ptr);
|
||||
func_80171990((u8 *)a0);
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_801399F0(s32 a0);
|
||||
extern void func_80139914(s32 a0);
|
||||
@@ -3786,7 +3861,39 @@ INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017F0A
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017F140);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017F198);
|
||||
void func_8017F198(s32 a0) {
|
||||
extern s32 *D_80126B78;
|
||||
extern u16 D_80184E90[];
|
||||
extern s32 func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_80029124(s32, s32);
|
||||
extern void func_8012C218();
|
||||
extern s16 func_80174774(void);
|
||||
extern void func_801439C0(u8 *);
|
||||
extern void func_8017ED40(s32);
|
||||
|
||||
if (func_80178970() != 0) {
|
||||
((void (*)(s32))func_80178D18)(a0);
|
||||
if (*(s16 *)(a0 + 0x10A) == 2) {
|
||||
func_80029124(D_80184E90[*(s16 *)(a0 + 0x70)], 1);
|
||||
func_8012C218(a0);
|
||||
} else {
|
||||
func_8017ED40(a0);
|
||||
}
|
||||
} else {
|
||||
if (*(s16 *)(a0 + 0x10A) != 0) {
|
||||
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) =
|
||||
*(u16 *)((s8 *)D_80126B78 + 0x12) + 0x400;
|
||||
if (((s32 (*)(void))func_80174774)() != 0) {
|
||||
*(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x80000000;
|
||||
if (*(s32 *)(a0 + 0xCC) != 0) {
|
||||
func_801439C0((u8 *)*(s32 *)(a0 + 0xCC));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017F288);
|
||||
|
||||
@@ -3980,9 +4087,47 @@ void func_8017FE4C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017FE88);
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern s32 func_80029504(void);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern s32 func_80143970(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void (*D_80184F4C[])(void *);
|
||||
extern s32 D_801A45A8;
|
||||
|
||||
void func_8017FE88(s32 arg0)
|
||||
{
|
||||
if (func_8012C354(arg0, (s32)D_80184F4C) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((u32)func_80029504() >= 0x3D4) {
|
||||
func_8012C218((void *)arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
*(u8 *)((s32)arg0 + 0xC0) = 1;
|
||||
*(s32 *)((s32)arg0 + 0xB4) = -1;
|
||||
func_80143970(arg0);
|
||||
func_8012A828(arg0, &D_801A45A8);
|
||||
(*(u16 *)((s32)arg0 + 0x2))++;
|
||||
func_8012B23C(arg0);
|
||||
*(s32 *)((s32)arg0 + 0x1C) = 0x1E;
|
||||
*(s32 *)((s32)arg0 + 0xD4) = (s32)arg0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern s16 D_80184FB0;
|
||||
|
||||
void func_8017FF28(s32 a0) {
|
||||
if (--*(s32 *)(a0 + 0x1C) == 0) {
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
func_80178B18(a0, (s32)&D_80184FB0);
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017FF28);
|
||||
|
||||
|
||||
|
||||
@@ -4269,7 +4414,30 @@ s32 func_801803E8(u32 a0v)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_80180494);
|
||||
extern u16 D_800B99D8;
|
||||
extern void func_80180518(s32 a0);
|
||||
|
||||
void func_80180494(void *a0)
|
||||
{
|
||||
s32 mode;
|
||||
s32 v;
|
||||
|
||||
if (*(u16 *)((s32)a0 + 2) == 0) {
|
||||
func_80180518((s32)a0);
|
||||
return;
|
||||
}
|
||||
mode = D_800B99D8;
|
||||
if (mode & 4) {
|
||||
v = ((mode & 3) * 48) + 0x3F;
|
||||
} else {
|
||||
v = ~((mode & 3) * 48);
|
||||
}
|
||||
{
|
||||
extern u8 D_801AD358[1];
|
||||
D_801AD358[0] = (u8)v;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef struct { u8 c[4]; } Blk4_80180518;
|
||||
|
||||
|
||||
@@ -4265,7 +4265,30 @@ DEFINE_func_80188470() /* dedup: shared engine-core @0x80188470 (src/shared) */
|
||||
DEFINE_func_80188478() /* dedup: shared engine-core @0x80188478 (src/shared) */
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_8018858C);
|
||||
extern s32 func_80184028();
|
||||
extern u16 D_80126B66;
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_8018858C(s32 a0) {
|
||||
s32 v0 = *(s16 *)(a0 + 0x84);
|
||||
if (v0 != 0) {
|
||||
v0 = func_80184028();
|
||||
if (v0 == 0x18) {
|
||||
*(s16 *)(a0 + 0x84) = 0;
|
||||
}
|
||||
} else {
|
||||
s32 a1;
|
||||
v0 = func_80184028();
|
||||
if (v0 == 0xF) {
|
||||
*(s16 *)(a0 + 0x84) = 1;
|
||||
a1 = -(s16)D_80126B66 >> 3;
|
||||
if (a1 < 0) a1 = 0;
|
||||
if (a1 > 0x7F) a1 = 0x7F;
|
||||
func_8002D4C8(0xBAB, (u16)(a1 | 0x1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801918B0[])(void);
|
||||
@@ -4628,7 +4651,29 @@ extern s32 func_80189110(void);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_801897C4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_80189824);
|
||||
extern u8 D_801EAC94;
|
||||
extern u8 D_801EAC95;
|
||||
extern u8 D_801EAC96;
|
||||
|
||||
void func_80189824(void *arg0) {
|
||||
s16 *p;
|
||||
u8 *q;
|
||||
|
||||
p = *(s16 **)((s32)arg0 + 0x20);
|
||||
if (*(s16 *)((s32)p + 0x18) > 0x800) {
|
||||
*(s16 *)((s32)p + 0x18) = *(s16 *)((s32)p + 0x18) - 0x200;
|
||||
}
|
||||
if (*(s16 *)((s32)p + 0x1A) > 0x800) {
|
||||
*(s16 *)((s32)p + 0x1A) = *(s16 *)((s32)p + 0x1A) - 0x200;
|
||||
}
|
||||
q = &D_801EAC94;
|
||||
if (*q >= 0xC1) {
|
||||
*q -= 4;
|
||||
D_801EAC95 -= 8;
|
||||
D_801EAC96 -= 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -4690,7 +4735,23 @@ void func_801899F4(int param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_80189A60);
|
||||
|
||||
|
||||
extern SV4 D_80191BEC;
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern void func_80029124(s32, s32);
|
||||
extern s32 func_801899AC(void *a0, s32 *p);
|
||||
|
||||
void func_80189A60(void *a0) {
|
||||
if (func_80029504() == 0x2DA) {
|
||||
if ((func_80029178(0x11F) & 0xFF) == 0) {
|
||||
func_80029124(0x11F, 1);
|
||||
*(s32 *)((s32)a0 + 0xDC) = func_801899AC(a0, (s32 *)&D_80191BEC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_80189AC4);
|
||||
|
||||
@@ -5106,7 +5167,18 @@ s32 aF8018A224(param_1)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_8018A31C);
|
||||
typedef struct { s16 x; u16 y; u16 z; s16 w; } Rec8_8018A31C;
|
||||
void func_8018A31C(s32 a0) {
|
||||
extern Rec8_8018A31C D_801E3990[];
|
||||
s32 i = 0;
|
||||
if (D_801E3990[0].x != 0) {
|
||||
do {
|
||||
func_8012C658(0x10D, i, a0);
|
||||
i++;
|
||||
} while (D_801E3990[i].x != 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* func_8018A390 — allocates a GTE-projection slot, seeds a random spread
|
||||
* vector from a per-index table, rotates it by the model's Y angle, applies
|
||||
|
||||
@@ -7890,7 +7890,37 @@ INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_8018923
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801892E0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80189380);
|
||||
extern void func_800183E0(s32 a0);
|
||||
extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
extern s32 D_80190780[];
|
||||
|
||||
void func_80189380(s32 arg0)
|
||||
{
|
||||
u16 var;
|
||||
s16 cmp;
|
||||
s32 a0;
|
||||
|
||||
var = *(u16 *)(arg0 + 0xFC);
|
||||
if ((s16)var < 13) {
|
||||
func_800183E0(D_80190780[(s16)var >> 1]);
|
||||
cmp = *(s16 *)(arg0 + 0xFC);
|
||||
if (cmp == 5) {
|
||||
if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) {
|
||||
a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0);
|
||||
if (a0 != 0) {
|
||||
*(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64);
|
||||
*(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4);
|
||||
*(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000;
|
||||
*(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC);
|
||||
*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
*(s16 *)(arg0 + 2) = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8018947C(s32 arg0) {
|
||||
extern u8 D_8019079C[];
|
||||
@@ -8049,7 +8079,37 @@ void func_80189D8C(s32 arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80189E28);
|
||||
void func_80189E28(s32 arg0)
|
||||
{
|
||||
extern void func_800183E0(s32);
|
||||
extern u8 D_801E0B3C[];
|
||||
extern u8 D_801E0B5C[];
|
||||
extern u8 D_80078E78[];
|
||||
u8 *base;
|
||||
s32 a;
|
||||
s32 b;
|
||||
s32 cond;
|
||||
|
||||
base = D_80078E78;
|
||||
if (*(u16 *)(arg0 + 0xFC) & 0xF) {
|
||||
func_800183E0(D_801E0B5C);
|
||||
} else {
|
||||
func_800183E0(D_801E0B3C);
|
||||
}
|
||||
|
||||
a = *(s16 *)(arg0 + 0xDE);
|
||||
if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) {
|
||||
cond = b + 0x5A0 < a;
|
||||
} else {
|
||||
cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A);
|
||||
}
|
||||
if (cond == 0) {
|
||||
*(s16 *)(arg0 + 2) = 2;
|
||||
*(u8 *)(arg0 + 0xC1) = 0;
|
||||
*(u16 *)(arg0 + 0x5C) = 0x8000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80189EDC(s32 arg0) {
|
||||
s16 var;
|
||||
@@ -8965,7 +9025,39 @@ void func_8018B5F4(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_8018B698);
|
||||
extern void func_8014C010(s32 a0, s32 a1);
|
||||
extern u16 D_800B99DA;
|
||||
extern void func_8013C9C4(void *a0);
|
||||
extern s32 D_80190E98;
|
||||
|
||||
void func_8018B698(s32 *s0) {
|
||||
s32 pad[8]; /* dead: forces target's 0x38 frame */
|
||||
|
||||
func_80149020(s0);
|
||||
func_80147A84((s32)s0);
|
||||
func_801473EC(s0);
|
||||
func_80148038((s32)s0, 0x18000);
|
||||
func_80147460((s32)s0);
|
||||
|
||||
if ((D_800B99DA & 1) == 0) {
|
||||
func_8014C010((s32)s0, 2);
|
||||
}
|
||||
|
||||
if (func_801535F4(s0) == 4) {
|
||||
func_8013C9C4(&D_80190E98);
|
||||
} else if (func_80146E98((s32)s0) == 0) {
|
||||
goto clamp;
|
||||
}
|
||||
func_801477E8(s0, 0x40000);
|
||||
func_80146CA0(s0);
|
||||
return;
|
||||
clamp:
|
||||
if (*(s16 *)((u8 *)s0 + 0xE) >= 0x240) {
|
||||
return;
|
||||
}
|
||||
*(s16 *)((u8 *)s0 + 0xE) = 0x240;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -4229,7 +4229,20 @@ void func_801814B0(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801814EC);
|
||||
extern u8 func_8014BF6C(void);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
|
||||
void func_801814EC(void *a0) {
|
||||
s32 s0;
|
||||
|
||||
s0 = ((s32 (*)(void))func_8014BF6C)();
|
||||
while ((s0 & 0xFF) != 0) {
|
||||
func_8012C658(0x103, (s0 & 0xFF) - 1, (s32)a0);
|
||||
s0 = s0 - 1;
|
||||
}
|
||||
func_8012AD50(a0);
|
||||
}
|
||||
|
||||
|
||||
void func_80181554(void) {
|
||||
}
|
||||
@@ -4559,7 +4572,39 @@ void func_80182050(u8 *a0, u8 *a1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801820E4);
|
||||
#include "common.h"
|
||||
|
||||
extern u8 D_8018BBAC[];
|
||||
extern s32 D_80126B58;
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern s32 func_80013294(void *a0, void *a1);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_801820E4(u8 *arg0)
|
||||
{
|
||||
s32 sp10[2];
|
||||
u8 *p;
|
||||
s32 base;
|
||||
s16 snd;
|
||||
|
||||
p = D_8018BBAC + *(s16 *)(arg0 + 0xFC) * 8;
|
||||
base = (s32)&D_80126B58;
|
||||
if (*(s16 *)(p + 6) != 0) {
|
||||
func_80015978(base + 4, sp10);
|
||||
snd = func_80013294(sp10, p);
|
||||
if (snd < 0xC00) {
|
||||
snd = (0xC00 - snd) * 127 / 0xC00;
|
||||
if (snd < 0) {
|
||||
snd = 0;
|
||||
}
|
||||
if (snd >= 0x80) {
|
||||
snd = 0x7F;
|
||||
}
|
||||
func_8002D4C8(*(u16 *)(p + 6), (u16)snd | 0x1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018BC04[])(void);
|
||||
@@ -4959,7 +5004,22 @@ void func_80182AF4(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_80182B34);
|
||||
extern void func_8012BD14(s32 a0);
|
||||
extern s32 func_80178BF8();
|
||||
extern void func_80172710(void);
|
||||
|
||||
s32 aF80182B34(void *a0) __asm__("func_80182B34");
|
||||
|
||||
s32 aF80182B34(void *a0)
|
||||
{
|
||||
if (((s32 (*)(s32))func_8012BD14)(*(s32 *)((s32)a0 + 0x64)) > 0x1000) {
|
||||
return 0;
|
||||
}
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = 2;
|
||||
func_80178BF8();
|
||||
return (s32)func_80172710;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_801C4250[])(void);
|
||||
@@ -7485,7 +7545,31 @@ void func_801866A4(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8017DC70", func_801866CC);
|
||||
extern void func_80186F9C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012B14C(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_801C9234;
|
||||
extern u8 D_801C93E0[];
|
||||
extern u8 D_801C93EC[];
|
||||
extern u8 D_801C9268[];
|
||||
|
||||
void func_801866CC(s32 param_1) {
|
||||
s32 s0 = param_1;
|
||||
s32 v1;
|
||||
|
||||
*(u8 *)(s0 + 0xC2) = 0;
|
||||
*(u8 *)(s0 + 0xC3) = 0;
|
||||
*(u16 *)(s0 + 0x98) = 0;
|
||||
func_80186F9C(s0, (s32)&D_801C9234, 0);
|
||||
v1 = *(u16 *)(s0 + 0x5E);
|
||||
if (v1 == 9 || v1 == 0x1C) {
|
||||
func_8012B14C(s0, (s32)D_801C93E0);
|
||||
} else {
|
||||
func_8012B14C(s0, (s32)D_801C93EC);
|
||||
}
|
||||
func_8012A828(s0, (void *)D_801C9268);
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3813,7 +3813,73 @@ void func_8017EC5C(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_8017EC98);
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001CA1C(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8017F0C8(s32 a0, s32 a1);
|
||||
extern s32 func_8012B77C(s32 out, s32 from, s32 to);
|
||||
extern void func_80049CAC(s32 a0, s32 a1);
|
||||
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 D_80126B64;
|
||||
extern u8 D_8018E064[];
|
||||
extern u8 D_8018E0C4[];
|
||||
extern u8 D_8018E10C[];
|
||||
extern u8 D_8018E11C[];
|
||||
|
||||
void func_8017EC98(void *a0) {
|
||||
s32 sp10[3];
|
||||
s16 sp20[3];
|
||||
s32 sp28[3];
|
||||
s32 sp38[8];
|
||||
s32 sp58;
|
||||
s32 obj;
|
||||
|
||||
obj = ((s32 (*)(void))func_8012C1B8)();
|
||||
if (obj == 0) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
|
||||
*(s32 *)(a0 + 0x20) = obj;
|
||||
func_8001CA1C(obj, (s32)D_8018E064);
|
||||
func_8012A828((s32)a0, D_8018E0C4);
|
||||
|
||||
*(s16 *)(obj + 0x18) = (*(s16 *)(a0 + 0xFC) < 0) ? 0x3000 : -0x3000;
|
||||
*(s16 *)(obj + 0x1A) = *(s32 *)(a0 + 0xDC);
|
||||
*(s32 *)(obj + 0x4) |= 0x50000000;
|
||||
*(u16 *)(obj + 0x2C) |= 0x10;
|
||||
*(u16 *)(a0 + 0x5C) = 0x8000;
|
||||
*(s16 *)(a0 + 0xAE) = -1;
|
||||
if (*(u16 *)(a0 + 0x70) & 1) {
|
||||
func_8017F0C8((s32)a0, 0xFFF40000);
|
||||
*(u16 *)(a0 + 0x34) += 1;
|
||||
} else {
|
||||
sp10[0] = *(s32 *)(a0 + 0x4);
|
||||
sp10[1] = 0xFEFE0000;
|
||||
sp10[2] = D_80126B64;
|
||||
func_8012B77C((s32)&sp58, (s32)(a0 + 4), (s32)sp10);
|
||||
|
||||
sp20[2] = 0;
|
||||
sp28[1] = 0;
|
||||
sp28[0] = 0;
|
||||
sp28[2] = -0x8000;
|
||||
sp20[0] = sp58;
|
||||
sp20[1] = sp58 >> 16;
|
||||
func_80049CAC((s32)sp20, (s32)sp38);
|
||||
func_800484EC((s32)sp38, (s32)sp28, (s32)(a0 + 0x44));
|
||||
}
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) < 0) {
|
||||
*(s32 *)(a0 + 0x58) = (((s32)D_8018E10C | 0x40000000) | 0x20000000);
|
||||
} else {
|
||||
*(s32 *)(a0 + 0x58) = (((s32)D_8018E11C | 0x40000000) | 0x20000000);
|
||||
}
|
||||
*(u16 *)(a0 + 0x2) += 1;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -4926,7 +4992,7 @@ extern void func_80185218(void *arg0);
|
||||
* target .s call-site register setup (decl_prior had no "tu" row to adopt). */
|
||||
extern s32 func_80185680(void *a0, void *a1);
|
||||
extern void func_80185810(s32 a0);
|
||||
extern s32 func_80185480(void *a0, s32 a1);
|
||||
extern s32 func_80185480();
|
||||
|
||||
extern s32 func_80047D3C(s32 a0);
|
||||
typedef struct { s16 vx, vy, vz, pad; } SVEC_801BA5A8;
|
||||
@@ -5455,7 +5521,65 @@ s32 func_8018526C(s32 a0, s32 a1, s32 a2, s32 a3) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80185380);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8017C8D0", func_80185480);
|
||||
typedef struct { s16 x, y, z, w; } V4_80185480;
|
||||
typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_80185480;
|
||||
|
||||
extern void func_80185FB4(s32, s32, s32);
|
||||
extern void func_8012F14C(s32, s32, s32);
|
||||
extern s32 func_80135888(s32, s32, s32, s32);
|
||||
extern void func_8012F568(s32, s32, s32, s32, s32, s32);
|
||||
extern s32 D_80126B58;
|
||||
extern u8 D_801152A8[];
|
||||
|
||||
s32 func_80185480(void *a0, void *a1)
|
||||
{
|
||||
V4_80185480 va;
|
||||
V4_80185480 vb;
|
||||
V4_80185480 c;
|
||||
V4_80185480 d;
|
||||
Mtx32_80185480 mtx;
|
||||
u8 *s4p;
|
||||
u8 *b58;
|
||||
s32 w0;
|
||||
s32 w1;
|
||||
s32 sum;
|
||||
s32 i;
|
||||
|
||||
s4p = (u8 *)a0 + 0x20;
|
||||
|
||||
((void (*)(s32, void *, void *))func_80185FB4)(*(s32 *)(*(s32 *)((s32)a0 + 0x40) + 0x20),
|
||||
*(s32 *)((s32)a0 + 0x20), &mtx);
|
||||
|
||||
b58 = (u8 *)&D_80126B58;
|
||||
w0 = *(s32 *)((s32)a0 + 0x10) << 1;
|
||||
w1 = *(s32 *)((s32)a0 + 0x18) << 1;
|
||||
|
||||
va.x = 0;
|
||||
vb.x = (*(s16 *)(s4p + 0x14) + *((s16 *)&w0 + 1)) >> 1;
|
||||
va.z = 0;
|
||||
vb.z = (*(s16 *)(s4p + 0x18) + *((s16 *)&w1 + 1)) >> 1;
|
||||
sum = *(u16 *)(s4p + 0x16) + *(u16 *)(s4p + 0x1E) + 0x30;
|
||||
vb.y = sum;
|
||||
va.y = sum;
|
||||
|
||||
i = 0;
|
||||
do {
|
||||
func_8012F14C((s32)&mtx, (s32)&va, (s32)&c);
|
||||
func_8012F14C((s32)&mtx, (s32)&vb, (s32)&d);
|
||||
if (func_80135888(*(s32 *)(b58 + 0x20), *(s32 *)(b58 + 0x38),
|
||||
(s32)&c, (s32)&d) == 0) {
|
||||
va = vb;
|
||||
vb.x = *(u16 *)(s4p + 0x14) + *((u16 *)&w0 + 1);
|
||||
vb.z = *(u16 *)(s4p + 0x18) + *((u16 *)&w1 + 1);
|
||||
i++;
|
||||
} else {
|
||||
func_8012F568(1, 0x4201, 0, (s32)a1, (s32)&d, (s32)D_801152A8);
|
||||
return 1;
|
||||
}
|
||||
} while (i < 2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 ratan2(s32 a0, s32 a1);
|
||||
|
||||
|
||||
@@ -4755,7 +4755,25 @@ s32 func_80184214(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017FB84", func_801842DC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017FB84", func_80184334);
|
||||
extern s32 D_801D4358;
|
||||
extern s32 D_801D435C;
|
||||
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
void func_80184334(int param_1) {
|
||||
struct W80184334 {
|
||||
s32 pad[15];
|
||||
s32 f3C, f40, f44, f48, f4C, f50;
|
||||
};
|
||||
struct W80184334 *p = (struct W80184334 *)param_1;
|
||||
|
||||
p->f48 = (short)func_80012C6C((int)*(short *)&p->f48, (int)*(short *)D_801D4358, 0x20);
|
||||
p->f4C = (short)func_80012C6C((int)*(short *)&p->f4C, (int)*(short *)(D_801D4358 + 2), 0x20);
|
||||
p->f50 = (short)func_80012C6C((int)*(short *)&p->f50, (int)*(short *)(D_801D4358 + 4), 0x20);
|
||||
p->f3C = (short)func_80012C6C((int)*(short *)&p->f3C, (int)*(short *)D_801D435C, 0x20);
|
||||
p->f40 = (short)func_80012C6C((int)*(short *)&p->f40, (int)*(short *)(D_801D435C + 2), 0x20);
|
||||
p->f44 = (short)func_80012C6C((int)*(short *)&p->f44, (int)*(short *)(D_801D435C + 4), 0x20);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018EC14[])(void);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -6491,7 +6491,22 @@ void func_8018167C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80181794);
|
||||
#include "common.h"
|
||||
|
||||
extern void (*D_80198EE8[])();
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_801659CC(void);
|
||||
|
||||
void func_80181794(int param_1) {
|
||||
D_80198EE8[*(u16 *)(param_1 + 2)]();
|
||||
if (param_1 != 0 && *(s16 *)(param_1 + 0x70) == 3) {
|
||||
if (func_801659CC() != 0) {
|
||||
*(s16 *)(param_1 + 0x70) = 0;
|
||||
func_8002D4C8(0xB6B, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
@@ -6869,7 +6884,7 @@ s32 func_80181FE0(void *arg0)
|
||||
#include "common.h"
|
||||
|
||||
extern void func_80181F40(void *a0);
|
||||
extern s32 func_80182618(void *a0, void *a1);
|
||||
extern s32 func_80182618();
|
||||
extern void func_8012A8B0(u8 *a0, s32 a1);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
@@ -7114,7 +7129,39 @@ zeroret:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80182618);
|
||||
extern void func_8012B2CC(s32 a0);
|
||||
extern void func_8012B178(s32 a0, s32 a1);
|
||||
extern void func_8012CBA4(s32);
|
||||
extern s32 func_801826E8(s32 a0);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
|
||||
typedef struct { s32 f0, f1, f2; } S_80182618;
|
||||
|
||||
s32 func_80182618(s32 a0, s32 *a1) {
|
||||
S_80182618 tmp;
|
||||
s32 cba4;
|
||||
|
||||
tmp.f0 = *(s32 *)(a0 + 0x10);
|
||||
tmp.f1 = *(s32 *)(a0 + 0x14);
|
||||
tmp.f2 = *(s32 *)(a0 + 0x18);
|
||||
func_8012B2CC(a0);
|
||||
func_8012B178(a0, 0xFFF10000);
|
||||
cba4 = ((s32 (*)(s32))func_8012CBA4)(a0);
|
||||
*(s32 *)(a0 + 0x10) = tmp.f0;
|
||||
*(s32 *)(a0 + 0x14) = tmp.f1;
|
||||
*(s32 *)(a0 + 0x18) = tmp.f2;
|
||||
*a1 = func_801826E8(a0);
|
||||
func_8012ADE4((u8 *)a0);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) &= ~1;
|
||||
if (*a1 != 0) {
|
||||
return 0;
|
||||
}
|
||||
if (cba4 == 0x2000) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -7568,7 +7615,7 @@ void func_80182EA0(void *arg0) {
|
||||
|
||||
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_80182618(void *a0, void *a1);
|
||||
extern s32 func_80182618();
|
||||
extern s32 func_80181FE0();
|
||||
extern void func_80182BA4(s32 a0, s32 a1);
|
||||
|
||||
@@ -7585,7 +7632,7 @@ void func_80182FBC(s32 a0) {
|
||||
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 func_80182808(s32 a0);
|
||||
extern s32 func_80182618(void *a0, void *a1);
|
||||
extern s32 func_80182618();
|
||||
|
||||
void func_80183008(s32 param_1) {
|
||||
s16 ret;
|
||||
@@ -7745,7 +7792,7 @@ void func_801832C4(s32 a0) {
|
||||
|
||||
#include "common.h"
|
||||
|
||||
extern s32 func_80182618(void *a0, void *a1);
|
||||
extern s32 func_80182618();
|
||||
extern void func_8012A8B0(u8 *a0, s32 a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
@@ -7941,7 +7988,37 @@ INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_8018382
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80183904);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_8018395C);
|
||||
|
||||
|
||||
extern void RotMatrixY(s32 angle, void *mtx);
|
||||
extern void ApplyMatrixSV(void *m, void *vin, void *vout);
|
||||
extern s32 func_8012B8A4(s16 *arg);
|
||||
extern void func_8012F568(s32 a, s32 b, s32 c, s32 d, s32 e, s32 f);
|
||||
extern u8 D_801152A8[];
|
||||
extern Mtx8 D_800AE620;
|
||||
|
||||
void func_8018395C(s32 arg0)
|
||||
{
|
||||
s32 scale;
|
||||
s16 rot;
|
||||
s16 out[3];
|
||||
s16 in[3];
|
||||
Mtx8 m;
|
||||
|
||||
m = D_800AE620;
|
||||
scale = *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x18) * 9 >> 9;
|
||||
in[1] = 0;
|
||||
in[0] = 0;
|
||||
in[2] = -scale;
|
||||
rot = func_8012B8A4((s16 *)arg0);
|
||||
RotMatrixY(rot, &m);
|
||||
ApplyMatrixSV(&m, in, out);
|
||||
out[0] += *(u16 *)(arg0 + 6);
|
||||
out[1] += *(u16 *)(arg0 + 0xA) - scale;
|
||||
out[2] += *(u16 *)(arg0 + 0xE);
|
||||
func_8012F568(1, 0x4002, 0, 0x14, (s32)out, (s32)D_801152A8);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80183A88);
|
||||
|
||||
@@ -9420,7 +9497,16 @@ void func_80185DA8(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80185F98);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern u8 D_801BE288[];
|
||||
|
||||
void func_80185F98(s32 arg0) {
|
||||
*(s16 *)(arg0 + 2) = 0x14;
|
||||
func_8012A828(arg0, D_801BE288);
|
||||
func_8012B23C(arg0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
@@ -9453,7 +9539,16 @@ void func_8018603C(void *arg0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80186078);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_801860F8);
|
||||
void func_801860F8(void *a0) {
|
||||
if (*(u32 *)((char *)a0 + 0xC4) & 4) {
|
||||
*(short *)((char *)a0 + 2) = 0x13;
|
||||
} else {
|
||||
*(short *)((char *)a0 + 2) = 1;
|
||||
}
|
||||
*(short *)((char *)a0 + 0x5C) = *(unsigned short *)(*(int *)((char *)a0 + 0x78) + 2);
|
||||
*(int *)((char *)a0 + 0xE0) = 0;
|
||||
}
|
||||
|
||||
|
||||
extern void func_8002A04C(s32 a0);
|
||||
extern void func_8012C098(void);
|
||||
@@ -9657,7 +9752,48 @@ void func_801863A4(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80186544);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_8012B200(u8 *a0);
|
||||
|
||||
s32 func_80186544(s32 a0) {
|
||||
extern s32 D_8011F730;
|
||||
extern u8 D_801BDD38[];
|
||||
extern s32 D_801BDBB0;
|
||||
extern s32 D_801BDC18;
|
||||
extern s16 D_801BDCD0;
|
||||
|
||||
s32 ret;
|
||||
|
||||
ret = 1;
|
||||
switch (D_8011F730) {
|
||||
case 1:
|
||||
func_8012B200((u8 *)a0);
|
||||
func_8012A828(a0, &D_801BDD38);
|
||||
*(u16 *)(a0 + 0x2) = 8;
|
||||
*(u16 *)(a0 + 0x34) = 0;
|
||||
break;
|
||||
case 2:
|
||||
*(u16 *)(a0 + 0x2) = 0xB;
|
||||
break;
|
||||
case 3:
|
||||
func_8012A828(a0, &D_801BDBB0);
|
||||
*(u16 *)(a0 + 0x2) = 0xE;
|
||||
break;
|
||||
case 4:
|
||||
func_8012A828(a0, &D_801BDC18);
|
||||
*(u16 *)(a0 + 0x2) = 0x10;
|
||||
break;
|
||||
case 5:
|
||||
*(u16 *)(a0 + 0x2) = 0x12;
|
||||
func_8012A828(a0, &D_801BDCD0);
|
||||
break;
|
||||
default:
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8017BEBC", func_80186638);
|
||||
|
||||
|
||||
@@ -9018,7 +9018,14 @@ void func_801886C4(s32 *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80188764);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
|
||||
void func_80188764(s32 param_1) {
|
||||
*(s16 *)(param_1 + 0xAE) = -5;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x100;
|
||||
func_8012AD44((s32 *)param_1, 3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_80194840[])(void);
|
||||
@@ -14512,7 +14519,35 @@ extern s32 func_8012AD50(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_8018FD38);
|
||||
extern u8 D_801EBE44[];
|
||||
extern u16 D_80126B66;
|
||||
extern void func_80190264(s32 a0, s32 a1);
|
||||
extern void func_8018FE20(s32 a0, void *a1, void *a2, s32 a3);
|
||||
extern void func_8012C098(void *a0);
|
||||
|
||||
void func_8018FD38(s32 arg0) {
|
||||
register s32 s2 __asm__("$18") = arg0;
|
||||
u8 *s0;
|
||||
u8 *s1;
|
||||
|
||||
s0 = &D_801EBE44[0];
|
||||
func_80190264(s2, *(s16 *)(s2 + 0xFE));
|
||||
s1 = s0 + 8;
|
||||
func_8018FE20(s2, s0, s1, *(s16 *)(s2 + 0xFC));
|
||||
s0 += 0x10;
|
||||
*(u16 *)(s2 + 0xFE) += 0xC;
|
||||
func_80190264(s2, *(s16 *)(s2 + 0x100));
|
||||
func_8018FE20(s2, s0, s0 + 8, *(s16 *)(s2 + 0xFC));
|
||||
*(u16 *)(s2 + 0x100) += 0xC;
|
||||
func_80190264(s2, *(s16 *)(s2 + 0x102));
|
||||
func_8018FE20(s2, s1 + 0x18, s1 + 0x20, *(s16 *)(s2 + 0xFC));
|
||||
*(u16 *)(s2 + 0x102) += 0xC;
|
||||
|
||||
if (*(s16 *)&D_80126B66 >= 0x901) {
|
||||
func_8012C098((void *)s2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_8018FE20);
|
||||
|
||||
|
||||
@@ -3333,7 +3333,50 @@ void func_8017D0EC(s32 *a0) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017D118);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017D588);
|
||||
void func_8017D588(void *a0) {
|
||||
extern s32 func_800149E0(s32);
|
||||
extern s32 func_800CF8B4();
|
||||
extern s32 func_80029178(s32 arg);
|
||||
extern s32 func_8017B368();
|
||||
extern void func_80029124(s32, s32);
|
||||
extern s32 func_8012A828(void *a0, void *a1);
|
||||
extern s32 func_801789AC(s32 arg0);
|
||||
extern void func_80178D18();
|
||||
extern u8 D_8018492C;
|
||||
extern u8 D_80183C54;
|
||||
extern u8 D_80183EAC;
|
||||
extern u8 D_8018458C;
|
||||
|
||||
if (!((func_800149E0(0) & 0x840) && func_800CF8B4())) {
|
||||
if (func_80029178(0x125) & 0xFF) {
|
||||
((s32 (*)(s32, s32))func_8017B368)((s32)a0, (s32)&D_8018492C);
|
||||
}
|
||||
if (func_80029178(0x126) & 0xFF) {
|
||||
func_80029124(0x126, 0);
|
||||
((void (*)(s32, s32))func_8012A828)(M2C_FIELD(a0, s32 *, 0xCC), &D_80183C54);
|
||||
}
|
||||
if (func_80029178(0x131) & 0xFF) {
|
||||
func_80029124(0x131, 0);
|
||||
((void (*)(s32, s32))func_8012A828)(M2C_FIELD(a0, s32 *, 0xCC), &D_80183EAC);
|
||||
}
|
||||
if (func_80029178(0x127) & 0xFF) {
|
||||
*(short *)(*(int *)((char *)a0 + 0xd4) + 0x10a) = -0x7300;
|
||||
} else {
|
||||
*(short *)(*(int *)((char *)a0 + 0xd4) + 0x10a) = -0x7100;
|
||||
}
|
||||
if (func_80029178(0x133) & 0xFF) {
|
||||
func_80029124(0x133, 0);
|
||||
((void (*)(s32, s32))func_8012A828)(M2C_FIELD(a0, s32 *, 0xD4), &D_8018458C);
|
||||
}
|
||||
if (func_801789AC((s32)a0)) {
|
||||
((void (*)(void *))func_80178D18)(a0);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
*(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 2) + 1;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017D6D8);
|
||||
|
||||
@@ -3394,7 +3437,45 @@ INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E6E
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E960);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017EA74);
|
||||
extern u8 D_801ABB40[];
|
||||
extern u8 D_801ABB44[];
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern s32 D_801A6B40;
|
||||
|
||||
void func_8017EA74(void) {
|
||||
s32 p; /* s0 */
|
||||
s32 i; /* s1 */
|
||||
s32 end; /* s2 */
|
||||
s32 one; /* s3 */
|
||||
s32 tbl;
|
||||
s32 v;
|
||||
s32 lim;
|
||||
|
||||
one = 1;
|
||||
p = (s32)D_801ABB40;
|
||||
i = 0;
|
||||
end = p + 0x5F0;
|
||||
do {
|
||||
if (*(s32 *)p != 0) {
|
||||
tbl = *(s32 *)(D_801ABB44 + i);
|
||||
v = *(u16 *)tbl;
|
||||
if (v == one) {
|
||||
func_80016714((void *)tbl, 0x84);
|
||||
} else if (tbl != 0) {
|
||||
func_80016714((void *)tbl, 0x38);
|
||||
}
|
||||
*(s32 *)p = 0;
|
||||
}
|
||||
p += 0x4C;
|
||||
i += 0x4C;
|
||||
} while (p < end);
|
||||
lim = 0x4FB0;
|
||||
do {
|
||||
*(s32 *)((s32)((u8 *)&D_801A6B40) + lim) = 0;
|
||||
lim -= 0x50;
|
||||
} while (lim >= 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_8012A828(void *a0, void *a1);
|
||||
@@ -3517,7 +3598,25 @@ void func_8017EDC4(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017EE20);
|
||||
extern s32 func_8012C51C(void *arg0, s32 arg1);
|
||||
|
||||
|
||||
|
||||
void func_8017EE20(s32 arg0) {
|
||||
St_8017EDC4 st;
|
||||
|
||||
st.f3 = 0x337;
|
||||
st.f4 = 7;
|
||||
st.f0 = 0x120;
|
||||
st.f5 = 0;
|
||||
st.f6 = 0;
|
||||
st.f7 = 0;
|
||||
st.f8 = 0;
|
||||
st.f1 = -0x202;
|
||||
st.f2 = 0;
|
||||
func_8012C51C(&st, arg0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017EE78);
|
||||
|
||||
|
||||
@@ -4888,7 +4888,24 @@ extern s32 func_8012AD50(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FF30);
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_80182240();
|
||||
extern void func_8017FF80(void *a0);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
extern s32 D_8019C678;
|
||||
|
||||
void func_8017FF30(s32 param_1) {
|
||||
s32 var_v0;
|
||||
|
||||
var_v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(param_1 + 0x20) = var_v0;
|
||||
if (var_v0 != 0) {
|
||||
func_80182240((void *)param_1, &D_8019C678);
|
||||
func_8017FF80((void *)param_1);
|
||||
func_8012AD50((void *)param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8017FF80);
|
||||
|
||||
@@ -5446,7 +5463,39 @@ INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801812F
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181380);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801813D4);
|
||||
void func_801813D4(s32 a0)
|
||||
{
|
||||
extern s32 func_801823B8(void*, s32, void*);
|
||||
extern s32 func_80182334(void);
|
||||
extern void func_8012C098(void);
|
||||
|
||||
s32 s1 = a0;
|
||||
s32 s0;
|
||||
s32 pad[1];
|
||||
u16 u0;
|
||||
|
||||
u0 = *(u16 *)((s32)s1 + 0x6);
|
||||
u0 = (u16)(u0 - 0x50);
|
||||
*(u16 *)((s32)s1 + 0x6) = u0;
|
||||
if ((s16)u0 < *(s16 *)((s32)s1 + 0x88)) {
|
||||
if (*(s16 *)((s32)s1 + 0xFE) == 0) {
|
||||
*(s16 *)((s32)s1 + 0xFE) += 1;
|
||||
func_8002D4C8(0x892, 0);
|
||||
}
|
||||
*(u16 *)((s32)s1 + 0x6) = *(u16 *)((s32)s1 + 0x88);
|
||||
}
|
||||
s0 = ((s32 (*)(s32, s32, s32))func_801823B8)(s1, 1, 0) |
|
||||
((s32 (*)(s32, s32, s32))func_801823B8)(s1, 1, -1);
|
||||
s0 |= ((s32 (*)(s32, s32, s32))func_801823B8)(s1, 1, -2);
|
||||
if (s0 != 0) {
|
||||
func_8012C658(0x209, 6, s1);
|
||||
*(s32 *)(*(s32 *)((s32)s1 + 0x20) + 4) |= 0x80000000;
|
||||
}
|
||||
if (((s32 (*)(s32))func_80182334)(s1) == 0) {
|
||||
((void (*)(s32))func_8012C098)(s1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_80013328(s32 a0, s32 a1);
|
||||
@@ -5479,9 +5528,49 @@ extern s32 func_8012AD50(void *a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_801815A0);
|
||||
extern s32 func_800291B4(s32 arg);
|
||||
extern void func_8012C098(void);
|
||||
extern void func_8012C1B8(void);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
extern void func_8018227C(void*, void*);
|
||||
extern u8 D_8019A248[];
|
||||
|
||||
void func_801815A0(s32 arg0) {
|
||||
s32 ret;
|
||||
|
||||
if ((func_800291B4(0xE1) & 0xFF) >= 8u) {
|
||||
((void (*)(s32))func_8012C098)(arg0);
|
||||
return;
|
||||
}
|
||||
ret = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)((s32)arg0 + 0x20) = ret;
|
||||
if (ret == 0) {
|
||||
return;
|
||||
}
|
||||
func_8018227C((void *)arg0, D_8019A248);
|
||||
*(u16 *)((s32)arg0 + 0x88) = *(u16 *)((s32)arg0 + 6);
|
||||
*(u16 *)((s32)arg0 + 6) = *(u16 *)((s32)arg0 + 6) - 0x100;
|
||||
func_8012AD50((void *)arg0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_80182334(void);
|
||||
extern s32 func_80182478();
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
|
||||
void func_80181628(void *arg0) {
|
||||
void *sp0;
|
||||
|
||||
sp0 = arg0;
|
||||
func_80182334();
|
||||
if (func_80182478() + 0x28 == *(s32 *)((s32)sp0 + 0xDC)) {
|
||||
*(s16 *)((s32)sp0 + 0xFE) = 0;
|
||||
func_8002D4C8(0x88F, 0);
|
||||
func_8012AD50(sp0);
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_80181628);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8017AE2C", func_8018167C);
|
||||
|
||||
|
||||
@@ -4205,7 +4205,31 @@ void func_8018645C(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80181CDC", func_801864E4);
|
||||
void func_801864E4(int a0) {
|
||||
int t;
|
||||
int r;
|
||||
int sel;
|
||||
int start;
|
||||
|
||||
t = *(u16 *)(a0 + 0xFC) + 0x20;
|
||||
*(u16 *)(a0 + 0xFC) = t;
|
||||
*(int *)(a0 + 4) = *(int *)(a0 + 0x10) + (func_80047948((s16)t) << 13);
|
||||
*(int *)(a0 + 8) = *(int *)(a0 + 0x14) - (func_8004787C(*(s16 *)(a0 + 0xFC)) << 13);
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) >= 0x400) {
|
||||
sel = (rand() & 1) ? -0x255555 : -0x1D5555;
|
||||
__asm__("" : "=r"(sel) : "0"(sel));
|
||||
start = sel;
|
||||
for (; start <= 0x3AAAA9; start += 0x1AAAAA) {
|
||||
r = func_8012C658(0x29E, 1, a0);
|
||||
if (r != 0) {
|
||||
*(int *)(r + 0x10) = start;
|
||||
}
|
||||
}
|
||||
func_8012C218(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
|
||||
@@ -3588,7 +3588,24 @@ void func_8017F254(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_8017F2BC);
|
||||
extern s32 func_8012E544(s32 arg);
|
||||
|
||||
void func_8017F2BC() {
|
||||
s32 v1;
|
||||
|
||||
v1 = func_8012E544(0x19C);
|
||||
if (v1 != 0) {
|
||||
*(s16 *)(v1 + 0xFC) = 0;
|
||||
}
|
||||
|
||||
v1 = func_8012E544(0x29A);
|
||||
if (v1 != 0) {
|
||||
*(s16 *)(v1 + 6) = -0x180;
|
||||
*(s16 *)(v1 + 10) = -0x380;
|
||||
*(s16 *)(v1 + 14) = 0x6A0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018A8DC[])(void);
|
||||
@@ -3970,7 +3987,38 @@ void func_8017FC74(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_8017FD94);
|
||||
extern void func_8012A018(s32 a, s32 b);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017FF9C(u8*);
|
||||
|
||||
|
||||
void func_8017FD94(void) {
|
||||
|
||||
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;
|
||||
|
||||
D_80126954 = 0x12C;
|
||||
D_8012695C = 0x384;
|
||||
D_80126968 = 0x71;
|
||||
D_8012696A = 0x800;
|
||||
D_80126976 = -0x30;
|
||||
D_8012696C = 0;
|
||||
D_80126978 = 0x80;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_8017FF9C, 1);
|
||||
func_8012A094((s32)D_80126948);
|
||||
((void (*)(void *))func_8017FF9C)(D_80126948);
|
||||
func_8012A094((s32)D_80126948);
|
||||
((void (*)(void *))func_8017FF9C)(D_80126948);
|
||||
}
|
||||
|
||||
|
||||
void func_8017FE44(void)
|
||||
{
|
||||
@@ -4342,7 +4390,33 @@ void func_801809B8(s32 arg0, s32 arg1, s32 arg2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80180ACC);
|
||||
extern void func_80180BE0();
|
||||
extern void func_80049CAC(s32 a0, s32 a1);
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
void func_80180ACC(s32 arg0, s32 arg1, s32 arg2, s32 arg3)
|
||||
{
|
||||
struct St80180ACC { s16 a[3]; u16 b[3]; } st;
|
||||
u16 v[3];
|
||||
s16 out[6];
|
||||
s32 r[4];
|
||||
|
||||
((void (*)(s32, s32, s32))func_80180BE0)(arg0, arg1, (s32)&st);
|
||||
v[0] = st.b[0];
|
||||
v[1] = st.b[1];
|
||||
v[2] = st.b[2];
|
||||
((void (*)(s32, s32))func_80049CAC)((s32)v, (s32)out);
|
||||
r[1] = st.a[0];
|
||||
r[2] = st.a[1];
|
||||
r[3] = st.a[2];
|
||||
((void (*)(s32, s32, s32))func_8012F14C)((s32)out, arg2, arg3);
|
||||
if (*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x2C) & 0x10) {
|
||||
*(s16 *)((s32)arg3 + 0) = *(s16 *)((s32)arg3 + 0) * *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x18) >> 12;
|
||||
*(s16 *)((s32)arg3 + 2) = *(s16 *)((s32)arg3 + 2) * *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) >> 12;
|
||||
*(s16 *)((s32)arg3 + 4) = *(s16 *)((s32)arg3 + 4) * *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x1C) >> 12;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80180BE0);
|
||||
|
||||
@@ -4447,7 +4521,20 @@ void func_80181474(s32 *a0) {
|
||||
void func_80181518(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80181520);
|
||||
extern void func_8012E88C(s32);
|
||||
extern void func_8012A828(void);
|
||||
extern void func_8012E8E0(s32, s32);
|
||||
extern short D_801CC330;
|
||||
extern s32 D_8018AA24;
|
||||
|
||||
s32 func_80181520(void *arg0) {
|
||||
s32 s0 = (s32)arg0;
|
||||
*(u16 *)(s0 + 2) = 2;
|
||||
func_8012E88C(s0);
|
||||
((void (*)(s32 *, s32))func_8012A828)((s32 *)arg0, (s32)&D_801CC330);
|
||||
func_8012E8E0((s32)arg0, (s32)&D_8018AA24);
|
||||
}
|
||||
|
||||
|
||||
extern void (*D_8018AB24[])(void);
|
||||
|
||||
@@ -4733,7 +4820,44 @@ s32 func_80181B80(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80181BF4);
|
||||
void func_80181BF4(void *arg0)
|
||||
{
|
||||
extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_80029514(s32);
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern u16 D_80126B5E;
|
||||
extern u16 D_80126B62;
|
||||
extern u16 D_80126B66;
|
||||
extern u8 D_8018AB74;
|
||||
s32 state;
|
||||
struct {
|
||||
u16 f0;
|
||||
u16 f1;
|
||||
u16 f2;
|
||||
} pos;
|
||||
|
||||
state = *(u16 *)((s32)arg0 + 0x34);
|
||||
if (state != 1) {
|
||||
if (state < 2 && state == 0) {
|
||||
pos.f0 = D_80126B5E;
|
||||
pos.f1 = D_80126B62;
|
||||
pos.f2 = D_80126B66;
|
||||
if (func_8012CB64((s32)&pos, -0x380, -0x180, 0x40D, 0x60D) != 0) {
|
||||
*(u16 *)((s32)arg0 + 0x34) += 1;
|
||||
func_80178B18((s32)arg0, (s32)&D_8018AB74);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (((s32 (*)(s32))func_80178970)((s32)arg0) != 0) {
|
||||
((void (*)(s32))func_80178D18)((s32)arg0);
|
||||
func_80029514(0x47E);
|
||||
func_801819B0(arg0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80181CC4(void *arg0) {
|
||||
extern void func_80178CBC(s32, s32);
|
||||
@@ -4781,7 +4905,37 @@ s32 func_80181D88(void)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80181DCC);
|
||||
void func_80181DCC(void *arg0)
|
||||
{
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_8017FB8C(void);
|
||||
extern void func_80129CF8();
|
||||
extern void func_8012C218(void *arg0);
|
||||
extern s32 D_8018ACBC;
|
||||
|
||||
switch (*(u16 *)((s32)arg0 + 0x34)) {
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
func_80178B18((s32)arg0, (s32)&D_8018ACBC);
|
||||
*(u16 *)((s32)arg0 + 0x34) = *(u16 *)((s32)arg0 + 0x34) + 1;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (((s32 (*)(s32))func_80178970)((s32)arg0) != 0) {
|
||||
((void (*)(s32))func_80178D18)((s32)arg0);
|
||||
func_8017FB8C();
|
||||
func_80129CF8();
|
||||
func_8012C218(*(void **)((s32)arg0 + 0xD4));
|
||||
func_8012C218(arg0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_80029504(void);
|
||||
extern u8 D_80078EAE;
|
||||
@@ -4862,7 +5016,17 @@ extern void func_8018469C(void *a0, s32 a1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80182048);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern void func_8012E8A8(u8 *a0);
|
||||
|
||||
void func_80182048(void *arg0) {
|
||||
extern short D_8018AD84;
|
||||
*(short *)((char *)arg0 + 0x2) = 2;
|
||||
*(short *)((char *)arg0 + 0x34) = 0;
|
||||
func_8012E8A8((u8 *)arg0);
|
||||
func_8012E8E0((s32)arg0, (s32)&D_8018AD84);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012E8E0(s32, s32);
|
||||
extern void func_8012E88C(s32);
|
||||
@@ -4907,7 +5071,30 @@ void func_80182304(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80182384);
|
||||
void func_80182384(void *arg0) {
|
||||
extern void func_80178CBC(s32 arg0, s32 arg1);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
extern void func_8018469C(void *a0, s32 a1);
|
||||
extern short D_8018AD84;
|
||||
extern short D_8018AE34;
|
||||
|
||||
switch (*(u16 *)((s32)arg0 + 0x34)) {
|
||||
case 0:
|
||||
func_80178CBC((s32)arg0, (s32)&D_8018AE34);
|
||||
*(u16 *)((s32)arg0 + 0x34) = *(u16 *)((s32)arg0 + 0x34) + 1;
|
||||
break;
|
||||
case 1:
|
||||
if (((s32 (*)(s32))func_80178970)((s32)arg0) != 0) {
|
||||
((void (*)(s32))func_80178D18)((s32)arg0);
|
||||
*(s16 *)((s32)arg0 + 0x2) = 1;
|
||||
*(s16 *)((s32)arg0 + 0x34) = 0;
|
||||
((void (*)(s32, s32))func_8018469C)((s32)arg0, (s32)&D_8018AD84);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80182420);
|
||||
|
||||
@@ -5882,7 +6069,34 @@ void func_80183EC8(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8017D604", func_80183F28);
|
||||
extern s32 func_8012BD14(s32 a0);
|
||||
extern s32 func_80178BF8();
|
||||
extern void func_80172710(void);
|
||||
|
||||
s32 func_80183F28_body(void *a0) __asm__("func_80183F28");
|
||||
|
||||
s32 func_80183F28_body(void *a0)
|
||||
{
|
||||
if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) != 2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (func_8012BD14((s32)a0) >= 0x4000) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
{
|
||||
s32 p;
|
||||
u16 st2;
|
||||
p = *(s32 *)((s32)a0 + 0x64);
|
||||
st2 = *(u16 *)((s32)p + 0x2);
|
||||
st2++;
|
||||
*(u16 *)((s32)p + 0x2) = st2;
|
||||
}
|
||||
func_80178BF8();
|
||||
return (s32)func_80172710;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80183F9C — guarded dispatch: ask ((s32 (*)(s32, s32))func_80184590)(9, 0x12); if it answers
|
||||
|
||||
@@ -3341,7 +3341,18 @@ void func_8017BF20(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017BF58);
|
||||
extern void func_801827F4(void);
|
||||
extern void func_80171A1C(u8 *a0);
|
||||
extern s32 func_80174650(s32 a0);
|
||||
|
||||
void func_8017BF58(void *a0) {
|
||||
if (((s32 (*)(void *))func_801827F4)(a0) == 0) {
|
||||
return;
|
||||
}
|
||||
func_80171A1C(a0);
|
||||
func_80174650(a0);
|
||||
}
|
||||
|
||||
|
||||
DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */
|
||||
|
||||
@@ -6959,7 +6970,35 @@ void func_801815E8(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801816AC);
|
||||
void func_801816AC(void) {
|
||||
extern struct { u8 b[8]; } D_8018C0E0, D_801274E8;
|
||||
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 void func_8012A018(s32, s32);
|
||||
extern void func_8012A094(s32);
|
||||
extern void func_80181A78(void *);
|
||||
|
||||
D_801274E8 = D_8018C0E0;
|
||||
D_80126954 = 0x190;
|
||||
D_8012695C = 0x900;
|
||||
D_80126968 = 0x140;
|
||||
D_8012696A = 0xE00;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = 0;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_80181A78, 2);
|
||||
func_8012A094((s32)D_80126948);
|
||||
func_80181A78((void *)D_80126948);
|
||||
}
|
||||
|
||||
|
||||
typedef struct { u8 b[8]; } Blk8_80181774;
|
||||
|
||||
@@ -7056,7 +7095,23 @@ void func_80181AB4(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80181BA4);
|
||||
void func_80181BA4(s32 param_1)
|
||||
{
|
||||
typedef struct { u8 b[8]; } Blk8_80181774;
|
||||
typedef struct { s16 m0, m1, m2, m3; } Sp10_80181BA4;
|
||||
extern Blk8_80181774 D_801274E8;
|
||||
extern s32 ratan2(s32 dx, s32 dy);
|
||||
extern void func_80181CCC();
|
||||
extern void func_80181F14();
|
||||
Sp10_80181BA4 sp10;
|
||||
register s32 ang __asm__("$16");
|
||||
|
||||
sp10 = *(Sp10_80181BA4 *)D_801274E8.b;
|
||||
ang = ratan2(sp10.m0, sp10.m2) & 0xFFF;
|
||||
func_80181CCC(param_1, (s32)&sp10, ang);
|
||||
func_80181F14(param_1, (s32)&sp10, ang);
|
||||
}
|
||||
|
||||
|
||||
void func_80181C38(s32 param_1)
|
||||
{
|
||||
|
||||
@@ -3450,11 +3450,48 @@ void func_8017DC60(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8017DCC0);
|
||||
s32 func_8017DCC0(s32 arg0)
|
||||
{
|
||||
s32 w;
|
||||
|
||||
switch (*(u16 *)(arg0 + 0x34)) {
|
||||
case 0:
|
||||
w = *(u16 *)(arg0 + 0xA) - 8;
|
||||
*(u16 *)(arg0 + 0xA) = w;
|
||||
if ((s16)w < -0x5F) {
|
||||
*(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1;
|
||||
func_8002D4C8(0xB02, 0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
w = *(u16 *)(arg0 + 0xFC) + 0x40;
|
||||
*(u16 *)(arg0 + 0xFC) = w;
|
||||
*(u16 *)(arg0 + 0xA) = -0x60 - (func_8004787C((s16)w) >> 5);
|
||||
if (*(s16 *)(arg0 + 0xFC) < 0x400) {
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8017DD88);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8017DE08);
|
||||
extern s16 D_80197090;
|
||||
|
||||
void func_8017DE08(s32 param_1) {
|
||||
s32 v;
|
||||
|
||||
v = *(s32 *)(param_1 + 0x1C) - 1;
|
||||
*(s32 *)(param_1 + 0x1C) = v;
|
||||
if (v == 0) {
|
||||
func_80178B18(param_1, (s32)&D_80197090);
|
||||
*(u16 *)(param_1 + 2) = 2;
|
||||
func_8002D4C8(0xB23, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern int func_80178970(void);
|
||||
@@ -4750,7 +4787,30 @@ void func_8017FA90(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8017FACC);
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern void func_8002A04C(s32 a0);
|
||||
extern void func_8012C218(void *a0);
|
||||
|
||||
void func_8017FACC(s32 a0)
|
||||
{
|
||||
if (*(s16 *)(a0 + 0x70) != 0) {
|
||||
*(u16 *)(a0 + 0x2) = 4;
|
||||
*(u16 *)(a0 + 0x5C) = 0;
|
||||
*(u16 *)(a0 + 0x5E) = 0;
|
||||
*(u8 *)(a0 + 0xC1) = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (*(s32 *)(a0 + 0xCC) != 0)
|
||||
func_80016714(*(void **)(a0 + 0xCC), 0x84);
|
||||
|
||||
if (*(s32 *)(a0 + 0xD0) != 0)
|
||||
func_80016714(*(void **)(a0 + 0xD0), 0x84);
|
||||
|
||||
func_8002A04C(a0);
|
||||
func_8012C218((void *)a0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8002D4C8(s32 arg0, s32 arg1);
|
||||
@@ -4781,7 +4841,20 @@ extern void func_8017ED60(void);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8017FBE8);
|
||||
extern void func_80131E00(s32 a0, s32 a1);
|
||||
extern void func_8017ED60(void);
|
||||
|
||||
void func_8017FBE8(s32 a0) {
|
||||
if (*(s16 *)(a0 + 0x76) < 0) {
|
||||
func_80131E00(a0, 6);
|
||||
return;
|
||||
}
|
||||
*(u16 *)(a0 + 0x2) = 1;
|
||||
*(u16 *)(a0 + 0x100) = 0x3C;
|
||||
*(u16 *)(a0 + 0x34) = 0;
|
||||
func_8017ED60();
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern int func_80143C74(short*, int);
|
||||
@@ -8096,7 +8169,23 @@ void func_80185320(s32 p) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_80185400);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_80185440);
|
||||
extern u8 D_801B5164[];
|
||||
extern void func_8012F214(s32, s32, s32);
|
||||
extern s32 func_80189284(void *a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012BCCC(s32 a0);
|
||||
extern s32 func_8012BEE8();
|
||||
|
||||
void func_80185440(s32 p) {
|
||||
s32 buf10[2];
|
||||
((void (*)(s32, void *, void *))func_8012F214)(p, D_801B5164, buf10);
|
||||
if (func_80189284(buf10, *(s16 *)(*(s32 *)(p + 0x20) + 0x12), 0x380) != 0 &&
|
||||
func_8012BCCC(p) < 0x64000) {
|
||||
*(u16 *)(p + 2) = 0x1C;
|
||||
} else if (func_8012BEE8(p) != 0) {
|
||||
*(u16 *)(p + 2) = 0x18;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8012A828(s32, void*);
|
||||
|
||||
@@ -3528,7 +3528,43 @@ void func_8017DA9C(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017DAE0);
|
||||
extern s32 func_80128DB4(s32, s32 *);
|
||||
extern void func_80128D60(s32, s32 *, s32 *);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern s32 D_801E1120[];
|
||||
extern s32 D_80193418;
|
||||
extern s32 D_801933F8;
|
||||
extern s32 D_80193338;
|
||||
|
||||
void func_8017DAE0(s32 param_1)
|
||||
{
|
||||
s32 *p;
|
||||
|
||||
switch (*(u16 *)(param_1 + 0x34)) {
|
||||
case 0:
|
||||
func_80128D60(0, D_801E1120, &D_80193418);
|
||||
*(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1;
|
||||
*(s32 *)(param_1 + 0x1C) = 0x3C;
|
||||
/* fall through */
|
||||
case 1:
|
||||
p = D_801E1120;
|
||||
func_80128DB4(0, p);
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
func_80128D60(0, p, &D_801933F8);
|
||||
*(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1;
|
||||
}
|
||||
return;
|
||||
case 2:
|
||||
if (func_80128DB4(0, D_801E1120) == 1) {
|
||||
func_80128D60(0, D_801E1120, &D_80193338);
|
||||
*(u16 *)(param_1 + 0x2) = 5;
|
||||
*(u16 *)(param_1 + 0x34) = 0;
|
||||
*(u16 *)(param_1 + 0xAE) = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017DBFC);
|
||||
|
||||
@@ -3714,7 +3750,20 @@ void func_8017FA1C(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8017FB28);
|
||||
extern s32 func_8012D624(void *a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012C218(s32 a0);
|
||||
extern u16 D_80126B96;
|
||||
|
||||
void func_8017FB28(s32 param_1) {
|
||||
if (func_8012D624((void *)param_1, 0x40, 0x78) == 1) {
|
||||
D_80126B96 = 0x4001;
|
||||
}
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
func_8012C218(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8017FB84(s32 self) {
|
||||
s32 obj;
|
||||
@@ -3937,7 +3986,64 @@ INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8018036
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_80180594);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_80180724);
|
||||
extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
|
||||
void func_80180724(s32 arg0) {
|
||||
register s32 s1 __asm__("$17") = arg0;
|
||||
register s32 s2 __asm__("$18");
|
||||
register s32 s0 __asm__("$16");
|
||||
register s32 v0 __asm__("$2");
|
||||
register s32 v1 __asm__("$3");
|
||||
register s32 zr __asm__("$0");
|
||||
|
||||
s2 = *(u16 *)(s1 + 0x34);
|
||||
switch (s2) {
|
||||
case 0:
|
||||
v0 = func_8012BE54(s1 + zr);
|
||||
if (v0 <= 0x64000) {
|
||||
*(u16 *)(s1 + 0x34) = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
s0 = func_8012C588(0x263, s1);
|
||||
if (s0 != 0) {
|
||||
*(s32 *)(s1 + 0xCC) = s0;
|
||||
*(u16 *)(s1 + 0xFC) = *(u16 *)(s0 + 0x36);
|
||||
*(u16 *)(s0 + 0xFC) = 0x60;
|
||||
*(u16 *)(s1 + 0x34) = 2;
|
||||
*(s32 *)(s0 + 0xDC) = s2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
s0 = *(s32 *)(s1 + 0xCC);
|
||||
if (*(s16 *)(s1 + 0xFC) == *(s16 *)(s0 + 0x36)) {
|
||||
v0 = *(u16 *)(s1 + 0xA);
|
||||
v1 = 0x19;
|
||||
*(u16 *)(s0 + 0xFC) = v1;
|
||||
*(u16 *)(s0 + 0xA) = v0 - 0x20;
|
||||
}
|
||||
v1 = *(s16 *)(s1 + 6);
|
||||
v0 = *(s16 *)(*(s32 *)(s1 + 0x64) + 6);
|
||||
if ((u32)(v0 - v1 - 1) < 0x7F) {
|
||||
v0 = -0x14;
|
||||
*(u16 *)(s0 + 0x16) = v0;
|
||||
v0 = -7;
|
||||
*(u16 *)(s0 + 0x1A) = v0;
|
||||
*(u16 *)(s1 + 0x34) = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
s0 = *(s32 *)(s1 + 0xCC);
|
||||
if (*(s16 *)(s1 + 0xFC) == *(s16 *)(s0 + 0x36)) {
|
||||
func_8012CBCC(s0);
|
||||
if (*(s16 *)(s0 + 0xFC) == 0) {
|
||||
*(u16 *)(s1 + 0x34) = 4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_80180894);
|
||||
|
||||
|
||||
@@ -6087,7 +6087,114 @@ INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80184FF
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80185214);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_801852E4);
|
||||
typedef struct { s16 vx, vy, vz, pad; } SV;
|
||||
|
||||
extern void func_8012C218(void *a0);
|
||||
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
||||
extern void RotMatrixY(s32 r, void *m);
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_800176F0(void *a0);
|
||||
extern Blk20 D_800AE620;
|
||||
extern u8 D_800AF648;
|
||||
|
||||
#define gte_ldv0(r0) __asm__ volatile ("lwc2 $0, 0( %0 );" "lwc2 $1, 4( %0 )" : : "r"(r0))
|
||||
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
|
||||
#define gte_stsxy(r0) __asm__ volatile ("swc2 $14, 0( %0 )" : : "r"(r0) : "memory")
|
||||
#define gte_stflg(r0) __asm__ volatile ("cfc2 $12, $31;" "nop;" "sw $12, 0( %0 )" : : "r"(r0) : "$12", "memory")
|
||||
#define gte_stszotz(r0) __asm__ volatile ("mfc2 $12, $19;" "nop;" "sra $12, $12, 2;" "sw $12, 0( %0 )" : : "r"(r0) : "$12", "memory")
|
||||
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
|
||||
"lw $12, 0( %0 );" \
|
||||
"lw $13, 4( %0 );" \
|
||||
"ctc2 $12, $0;" \
|
||||
"ctc2 $13, $1;" \
|
||||
"lw $12, 8( %0 );" \
|
||||
"lw $13, 12( %0 );" \
|
||||
"lw $14, 16( %0 );" \
|
||||
"ctc2 $12, $2;" \
|
||||
"ctc2 $13, $3;" \
|
||||
"ctc2 $14, $4" \
|
||||
: : "r"(r0) : "$12", "$13", "$14" )
|
||||
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
|
||||
"lw $12, 20( %0 );" \
|
||||
"lw $13, 24( %0 );" \
|
||||
"ctc2 $12, $5;" \
|
||||
"lw $14, 28( %0 );" \
|
||||
"ctc2 $13, $6;" \
|
||||
"ctc2 $14, $7" \
|
||||
: : "r"(r0) : "$12", "$13", "$14" )
|
||||
|
||||
void func_801852E4(s32 arg0)
|
||||
{
|
||||
struct B { SV v[4]; u32 w[6]; } b;
|
||||
SV *vp;
|
||||
MTX m;
|
||||
s32 otz[4];
|
||||
u32 flag;
|
||||
s32 i;
|
||||
s32 t;
|
||||
s32 h;
|
||||
|
||||
if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0x36) != *(s16 *)(arg0 + 0x100)) {
|
||||
func_8012C218((void *)arg0);
|
||||
return;
|
||||
}
|
||||
*(s32 *)(arg0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) + 0xFF000000;
|
||||
(*(s32 *)(arg0 + 0xE0)) -= 0x40;
|
||||
if (*(s32 *)(arg0 + 0xE0) < -0x200) {
|
||||
*(s32 *)(arg0 + 0xE0) = -0x200;
|
||||
}
|
||||
b.v[0].vx = -0x10;
|
||||
b.v[1].vx = 0x10;
|
||||
b.v[1].vz = -0x140;
|
||||
b.v[0].vz = -0x140;
|
||||
b.v[2].vz = *(s32 *)(arg0 + 0xE0);
|
||||
b.v[3].vz = *(s32 *)(arg0 + 0xE0);
|
||||
b.v[3].vy = 0;
|
||||
b.v[2].vy = 0;
|
||||
b.v[3].vx = 0;
|
||||
b.v[2].vx = 0;
|
||||
b.v[1].vy = 0;
|
||||
b.v[0].vy = 0;
|
||||
func_8012F214(arg0, (s32)&b.v[0], (s32)&b.v[0]);
|
||||
func_8012F214(arg0, (s32)&b.v[1], (s32)&b.v[1]);
|
||||
m = (*(MTX *)&D_800AE620);
|
||||
RotMatrixY(*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + *(s16 *)(arg0 + 0xFE), &m);
|
||||
func_8012F14C((s32)&m, (s32)&b.v[2], (s32)&b.v[2]);
|
||||
m = (*(MTX *)&D_800AE620);
|
||||
RotMatrixY(*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - *(s16 *)(arg0 + 0xFE), &m);
|
||||
func_8012F14C((s32)&m, (s32)&b.v[3], (s32)&b.v[3]);
|
||||
*(u16 *)&b.v[2].vx += *(u16 *)&b.v[0].vx;
|
||||
*(u16 *)&b.v[2].vy += *(u16 *)&b.v[0].vy;
|
||||
*(u16 *)&b.v[2].vz += *(u16 *)&b.v[0].vz;
|
||||
*(u16 *)&b.v[3].vx += *(u16 *)&b.v[1].vx;
|
||||
*(u16 *)&b.v[3].vy += *(u16 *)&b.v[1].vy;
|
||||
*(u16 *)&b.v[3].vz += *(u16 *)&b.v[1].vz;
|
||||
gte_SetRotMatrix(&D_800AF648);
|
||||
gte_SetTransMatrix(&D_800AF648);
|
||||
for (i = 0, vp = b.v; i < 4; i++, vp++) {
|
||||
gte_ldv0(vp);
|
||||
gte_rtps();
|
||||
gte_stsxy(vp);
|
||||
gte_stflg(&flag);
|
||||
gte_stszotz(&otz[i]);
|
||||
if (flag & ~0x1000u) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
t = otz[2];
|
||||
if (otz[3] < t) t = otz[3];
|
||||
h = otz[0];
|
||||
if (otz[1] < h) h = otz[1];
|
||||
if (t < h) h = t;
|
||||
*(u16 *)&b.v[0].vz = h;
|
||||
b.w[0] = 0xC0C0C0;
|
||||
b.w[1] = 0xC0C0C0;
|
||||
b.w[2] = 0;
|
||||
b.w[3] = 0;
|
||||
b.w[4] = 0x50000000;
|
||||
func_800176F0((void *)b.v);
|
||||
}
|
||||
|
||||
|
||||
extern void (*D_80190A20[])(void);
|
||||
|
||||
@@ -7870,7 +7977,18 @@ extern s16 D_801DFFDC;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80188568);
|
||||
extern s32 *D_80126B78;
|
||||
extern u8 D_80126B5C;
|
||||
extern s32 func_8012BB3C(s32 a0, s32 a1, u32 a2, s32 a3);
|
||||
|
||||
s32 func_80188568(s32 arg0) {
|
||||
s32 r;
|
||||
r = func_8012BB3C((s32)&D_80126B5C, *(s32 *)(arg0 + 0xD4) + 4,
|
||||
((s16 *)D_80126B78)[9], 8);
|
||||
((s16 *)D_80126B78)[9] += r;
|
||||
return (s16)r == 0;
|
||||
}
|
||||
|
||||
|
||||
void func_801885C0(s32 *a0, s32 *a1)
|
||||
{
|
||||
|
||||
@@ -8994,7 +8994,56 @@ void func_8018D15C(s32 arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018D264);
|
||||
void func_8018D264(s32 arg0) {
|
||||
s32 v;
|
||||
s32 d;
|
||||
u16 w;
|
||||
|
||||
v = func_8012B864(arg0);
|
||||
|
||||
d = (v + *(s16 *)(arg0 + 0x100)) - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12);
|
||||
if (d > 0x800) {
|
||||
s32 t = *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + 0x1000;
|
||||
d = v - t;
|
||||
}
|
||||
if (d < -0x800) {
|
||||
s32 t = *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - 0x1000;
|
||||
d = v - t;
|
||||
}
|
||||
if (d > 0) {
|
||||
if (d > 0x20) {
|
||||
d = 0x20;
|
||||
}
|
||||
*(u16 *)(arg0 + 0xFE) = w = *(u16 *)(arg0 + 0xFE) + d;
|
||||
if ((s16)w >= 0x201) {
|
||||
*(u16 *)(arg0 + 0xFE) = 0x200;
|
||||
}
|
||||
} else if (d < 0) {
|
||||
if (d < -0x20) {
|
||||
d = -0x20;
|
||||
}
|
||||
*(u16 *)(arg0 + 0xFE) = w = *(u16 *)(arg0 + 0xFE) + d;
|
||||
if ((s16)w < -0x200) {
|
||||
*(s16 *)(arg0 + 0xFE) = -0x200;
|
||||
}
|
||||
} else {
|
||||
*(s16 *)(arg0 + 0x100) = (rand() & 0x7FF) - 0x400;
|
||||
}
|
||||
|
||||
d = *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) - *(s16 *)(arg0 + 0xFC);
|
||||
if (d > 0) {
|
||||
if (d > 8) {
|
||||
d = 8;
|
||||
}
|
||||
*(s16 *)(arg0 + 0xFC) = *(s16 *)(arg0 + 0xFC) + d;
|
||||
} else if (d < 0) {
|
||||
if (d < -8) {
|
||||
d = -8;
|
||||
}
|
||||
*(s16 *)(arg0 + 0xFC) = *(s16 *)(arg0 + 0xFC) + d;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018D3A4);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user