mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-29 23:24:32 -04:00
feat(decomp): ox wave cm overlays — 30 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
This commit is contained in:
+1
-1
@@ -3922,7 +3922,7 @@ ov_SC05_017_ELF := $(ov_SC05_017_OUT).elf
|
||||
ov_SC05_017_MAPFILE := $(ov_SC05_017_OUT).map
|
||||
ov_SC05_017_LD_SCRIPT := $(ov_SC05_017_OUT).ld
|
||||
ov_SC05_017_SPLAT_YAML := config/splat.ov_SC05_017.yaml
|
||||
ov_SC05_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_017.o,ov_SC05_017_jr_8012ACE0.o,tail2.data.o,ov_SC05_017_jr_80135888.o,tail3.data.o,ov_SC05_017_jr_80135A4C.o,tail4.data.o,ov_SC05_017_jr_80135D20.o,tail5.data.o,ov_SC05_017_jr_801380E0.o,ov_SC05_017_o0c.o,tail6.data.o,ov_SC05_017_jr_8013F350.o,tail7.data.o,ov_SC05_017_jr_8013FFD8.o,tail8.data.o,ov_SC05_017_jr_80140608.o,tail9.data.o,ov_SC05_017_jr_8015444C.o,ov_SC05_017_jr_80154C24.o,ov_SC05_017_jr_801588CC.o,ov_SC05_017_jr_80159C84.o,tail10.data.o,ov_SC05_017_jr_8015A3C8.o,tail11.data.o,ov_SC05_017_jr_8015AE2C.o,tail12.data.o,ov_SC05_017_jr_8015C32C.o,tail13.data.o,ov_SC05_017_jr_8016AB6C.o,tail14.data.o,ov_SC05_017_jr_80171B4C.o,ov_SC05_017_jr_801734BC.o,tail15.data.o,ov_SC05_017_jr_801789AC.o,ov_SC05_017_jr_80178D40.o,tail16.data.o,ov_SC05_017_jr_8017A4AC.o,tail17.data.o,ov_SC05_017_jr_8017AE2C.o,tail18.data.o,ov_SC05_017_jr_801828EC.o,tail19.data.o,ov_SC05_017_jr_80182A74.o,ov_SC05_017_jr_80185A70.o,tail20.data.o,ov_SC05_017_jr_80186270.o,tail21.data.o,ov_SC05_017_jr_801875E8.o,ov_SC05_017_jr_80188B1C.o,tail22.data.o,ov_SC05_017_jr_8018C694.o,tail23.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
ov_SC05_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_017.o,ov_SC05_017_jr_8012ACE0.o,tail2.data.o,ov_SC05_017_jr_80135888.o,tail3.data.o,ov_SC05_017_jr_80135A4C.o,tail4.data.o,ov_SC05_017_jr_80135D20.o,tail5.data.o,ov_SC05_017_jr_801380E0.o,ov_SC05_017_o0c.o,tail6.data.o,ov_SC05_017_jr_8013F350.o,tail7.data.o,ov_SC05_017_jr_8013FFD8.o,tail8.data.o,ov_SC05_017_jr_80140608.o,tail9.data.o,ov_SC05_017_jr_8015444C.o,ov_SC05_017_jr_80154C24.o,ov_SC05_017_jr_801588CC.o,ov_SC05_017_jr_80159C84.o,tail10.data.o,ov_SC05_017_jr_8015A3C8.o,tail11.data.o,ov_SC05_017_jr_8015AE2C.o,tail12.data.o,ov_SC05_017_jr_8015C32C.o,tail13.data.o,ov_SC05_017_jr_8016AB6C.o,tail14.data.o,ov_SC05_017_jr_80171B4C.o,ov_SC05_017_jr_801734BC.o,tail15.data.o,ov_SC05_017_jr_801789AC.o,ov_SC05_017_jr_80178D40.o,tail16.data.o,ov_SC05_017_jr_8017A4AC.o,tail17.data.o,ov_SC05_017_jr_8017AE2C.o,tail18.data.o,ov_SC05_017_jr_801808D4.o,ov_SC05_017_jr_801828EC.o,tail19.data.o,ov_SC05_017_jr_80182A74.o,ov_SC05_017_jr_80185A70.o,tail20.data.o,ov_SC05_017_jr_80186270.o,tail21.data.o,ov_SC05_017_jr_801875E8.o,ov_SC05_017_jr_80188B1C.o,tail22.data.o,ov_SC05_017_jr_8018C694.o,tail23.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
build/src/ov_SC05_017/ov_SC05_017.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
|
||||
build/src/ov_SC05_017/ov_SC05_017_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
|
||||
|
||||
@@ -120,6 +120,7 @@ segments:
|
||||
- [0x50be8, c, ov_SC05_017_jr_80178D40]
|
||||
- [0x52354, c, ov_SC05_017_jr_8017A4AC]
|
||||
- [0x52cd4, c, ov_SC05_017_jr_8017AE2C]
|
||||
- [0x5877c, c, ov_SC05_017_jr_801808D4]
|
||||
- [0x5a794, c, ov_SC05_017_jr_801828EC]
|
||||
- [0x5a91c, c, ov_SC05_017_jr_80182A74]
|
||||
- [0x5d918, c, ov_SC05_017_jr_80185A70]
|
||||
@@ -169,6 +170,7 @@ segments:
|
||||
- [0xc3240, data, tail17]
|
||||
- [0xc3244, .rodata, ov_SC05_017_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc3278, data, tail18]
|
||||
- [0xc3290, .rodata, ov_SC05_017_jr_801808D4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc32a4, .rodata, ov_SC05_017_jr_801828EC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc32b8, data, tail19]
|
||||
- [0xc32bc, .rodata, ov_SC05_017_jr_80182A74] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
|
||||
@@ -17,7 +17,134 @@ INCLUDE_RODATA("asm/md_MAIN_034/nonmatchings/md_MAIN_034", D_800CAE08);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CB00C);
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CB1F8);
|
||||
#include "common.h"
|
||||
|
||||
/* ---- PsyQ inline GTE macros (same spellings as the matched siblings
|
||||
* func_800CBA18 / func_800CBC2C in this TU) ---- */
|
||||
|
||||
#define gte_ldv0(r0) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) )
|
||||
|
||||
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 );" \
|
||||
"lwc2 $2, 0( %1 );" \
|
||||
"lwc2 $3, 4( %1 );" \
|
||||
"lwc2 $4, 0( %2 );" \
|
||||
"lwc2 $5, 4( %2 )" \
|
||||
: \
|
||||
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
|
||||
|
||||
#define gte_ldrgb(r0) __asm__ volatile ( \
|
||||
"lwc2 $6, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) )
|
||||
|
||||
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
|
||||
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
|
||||
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
|
||||
#define gte_nccs() __asm__ volatile ("nop;nop;nccs")
|
||||
|
||||
#define gte_stflg(r0) __asm__ volatile ( \
|
||||
"cfc2 $12, $31;" \
|
||||
"nop;" \
|
||||
"sw $12, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "memory" )
|
||||
|
||||
#define gte_stopz(r0) __asm__ volatile ( \
|
||||
"swc2 $24, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stotz(r0) __asm__ volatile ( \
|
||||
"swc2 $7, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
|
||||
"swc2 $12, 8( %0 );" \
|
||||
"swc2 $13, 12( %0 );" \
|
||||
"swc2 $14, 16( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_strgb(r0) __asm__ volatile ( \
|
||||
"swc2 $22, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
/* ---- types ------------------------------------------------------------- */
|
||||
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB1F8; /* 0x08 */
|
||||
|
||||
/* face record, 0x10 bytes; word 1 is the face base colour */
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 unk00;
|
||||
/* 0x04 */ u32 rgb;
|
||||
/* 0x08 */ u16 n0;
|
||||
/* 0x0A */ u16 v0;
|
||||
/* 0x0C */ u16 v1;
|
||||
/* 0x0E */ u16 v2;
|
||||
} Face10_800CB1F8; /* 0x10 */
|
||||
|
||||
typedef struct { /* flat tri packet, 0x14 bytes */
|
||||
/* 0x00 */ u32 tag;
|
||||
/* 0x04 */ u32 rgb0;
|
||||
/* 0x08 */ u32 xy0;
|
||||
/* 0x0C */ u32 xy1;
|
||||
/* 0x10 */ u32 xy2;
|
||||
} F3P_800CB1F8; /* 0x14 */
|
||||
|
||||
extern s16 D_800C7C74; /* double-buffer parity index */
|
||||
extern u32 D_800CC9F8; /* flat colour used when func_800CC0A0() says so */
|
||||
|
||||
extern s32 func_800CC0A0(void *prim);
|
||||
extern void func_800CC110(s32 ot, s32 otz, s32 shift, void *prim, u32 code);
|
||||
|
||||
F3P_800CB1F8 *func_800CB1F8(Face10_800CB1F8 *f, SVEC8_800CB1F8 *verts,
|
||||
SVEC8_800CB1F8 *norms, F3P_800CB1F8 *prims,
|
||||
s32 count, s32 shift, s32 ot)
|
||||
{
|
||||
struct { s32 flag, opz; } g;
|
||||
F3P_800CB1F8 *prim;
|
||||
|
||||
prim = &prims[D_800C7C74];
|
||||
|
||||
for (; count != 0; count--, f++, prim += 2) {
|
||||
gte_ldv3(&verts[f->v0], &verts[f->v1], &verts[f->v2]);
|
||||
gte_rtpt();
|
||||
gte_stflg(&g.flag);
|
||||
if (!(g.flag & ~0x1000)) {
|
||||
gte_nclip();
|
||||
gte_stopz(&g.opz);
|
||||
if (g.opz > 0) {
|
||||
gte_stsxy3_f3(prim);
|
||||
gte_avsz3();
|
||||
gte_stotz(&g.opz);
|
||||
if (func_800CC0A0(prim) != 0) {
|
||||
prim->rgb0 = D_800CC9F8;
|
||||
} else {
|
||||
gte_ldrgb(&f->rgb);
|
||||
gte_ldv0(&norms[f->n0]);
|
||||
gte_nccs();
|
||||
gte_strgb(&prim->rgb0);
|
||||
}
|
||||
func_800CC110(ot, g.opz, shift, prim, 0x4000000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return prim;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CB3C0);
|
||||
|
||||
@@ -154,7 +281,148 @@ Prim1C_800CB5D0 *func_800CB5D0(Face14_800CB5D0 *f, SVEC8_800CB5D0 *verts,
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CB7BC);
|
||||
#define gte_ldv0(r0) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) )
|
||||
|
||||
#define gte_ldrgb(r0) __asm__ volatile ( \
|
||||
"lwc2 $6, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) )
|
||||
|
||||
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 );" \
|
||||
"lwc2 $2, 0( %1 );" \
|
||||
"lwc2 $3, 4( %1 );" \
|
||||
"lwc2 $4, 0( %2 );" \
|
||||
"lwc2 $5, 4( %2 )" \
|
||||
: \
|
||||
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
|
||||
|
||||
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
|
||||
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
|
||||
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
|
||||
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
|
||||
#define gte_ncct() __asm__ volatile ("nop;nop;ncct")
|
||||
#define gte_nccs() __asm__ volatile ("nop;nop;nccs")
|
||||
|
||||
#define gte_stflg(r0) __asm__ volatile ( \
|
||||
"cfc2 $12, $31;" \
|
||||
"nop;" \
|
||||
"sw $12, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "memory" )
|
||||
|
||||
#define gte_stopz(r0) __asm__ volatile ( \
|
||||
"swc2 $24, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stotz(r0) __asm__ volatile ( \
|
||||
"swc2 $7, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stsxy(r0) __asm__ volatile ( \
|
||||
"swc2 $14, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stsxy3_gt4(r0) __asm__ volatile ( \
|
||||
"swc2 $12, 8( %0 );" \
|
||||
"swc2 $13, 16( %0 );" \
|
||||
"swc2 $14, 24( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_strgb(r0) __asm__ volatile ( \
|
||||
"swc2 $22, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_strgb3_gt4(r0) __asm__ volatile ( \
|
||||
"swc2 $20, 4( %0 );" \
|
||||
"swc2 $21, 12( %0 );" \
|
||||
"swc2 $22, 20( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB7BC; /* 0x08 */
|
||||
|
||||
typedef struct { u32 unk00; u32 rgb; u16 n0, v0; u16 n1, v1; u16 n2, v2; u16 n3, v3; } FaceGT4_800CB7BC; /* 0x18 */
|
||||
|
||||
typedef struct {
|
||||
u32 tag;
|
||||
u32 rgb0, xy0;
|
||||
u32 rgb1, xy1;
|
||||
u32 rgb2, xy2;
|
||||
u32 rgb3, xy3;
|
||||
} PktGT4_800CB7BC; /* 0x24 */
|
||||
|
||||
extern s16 D_800C7C74;
|
||||
extern u32 D_800CCA0C;
|
||||
|
||||
extern s32 func_800CC0A0(void *prim);
|
||||
extern void func_800CC110(s32 ot, s32 otz, s32 shift, void *prim, u32 code);
|
||||
|
||||
PktGT4_800CB7BC *func_800CB7BC(FaceGT4_800CB7BC *face, SVEC8_800CB7BC *vtx,
|
||||
SVEC8_800CB7BC *nrm, PktGT4_800CB7BC *prims,
|
||||
s32 count, s32 shift, s32 ot)
|
||||
{
|
||||
struct { s32 flag, opz; } g;
|
||||
PktGT4_800CB7BC *pkt;
|
||||
|
||||
pkt = &prims[D_800C7C74];
|
||||
|
||||
for (; count != 0; count--, face++, pkt += 2) {
|
||||
gte_ldv3(&vtx[face->v0], &vtx[face->v1], &vtx[face->v2]);
|
||||
gte_rtpt();
|
||||
gte_stflg(&g.flag);
|
||||
if (!(g.flag & ~0x1000)) {
|
||||
gte_nclip();
|
||||
gte_stopz(&g.opz);
|
||||
if (g.opz > 0) {
|
||||
gte_stsxy3_gt4(pkt);
|
||||
gte_ldv0(&vtx[face->v3]);
|
||||
gte_rtps();
|
||||
gte_stflg(&g.flag);
|
||||
if (!(g.flag & ~0x1000)) {
|
||||
gte_stsxy(&pkt->xy3);
|
||||
gte_avsz4();
|
||||
gte_stotz(&g.opz);
|
||||
if (func_800CC0A0(pkt) != 0) {
|
||||
pkt->rgb0 = D_800CCA0C;
|
||||
pkt->rgb1 = D_800CCA0C;
|
||||
pkt->rgb2 = D_800CCA0C;
|
||||
pkt->rgb3 = D_800CCA0C;
|
||||
} else {
|
||||
gte_ldrgb(&face->rgb);
|
||||
gte_ldv3(&nrm[face->n0], &nrm[face->n0], &nrm[face->n0]);
|
||||
gte_ncct();
|
||||
gte_strgb3_gt4(pkt);
|
||||
gte_ldv0(&nrm[face->n0]);
|
||||
gte_nccs();
|
||||
gte_strgb(&pkt->rgb3);
|
||||
}
|
||||
func_800CC110(ot, g.opz, shift, pkt, 0x08000000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pkt;
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -531,4 +531,36 @@ void func_800CBCBC(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_MAIN_039/nonmatchings/md_MAIN_039", func_800CBD90);
|
||||
extern void func_80146C3C(void);
|
||||
extern s32 func_80128ED8(s32 param_1, s32 *param_2);
|
||||
|
||||
void func_800CBD90(void *arg0) {
|
||||
s32 q;
|
||||
u8 a;
|
||||
u8 b;
|
||||
u16 h;
|
||||
|
||||
q = *(s32 *)((s32)arg0 + 0x20);
|
||||
|
||||
a = *(u8 *)(q + 0x24) - 0x20;
|
||||
*(u8 *)(q + 0x24) = a;
|
||||
if (a < 0x80) {
|
||||
*(u8 *)(q + 0x24) = 0x80;
|
||||
}
|
||||
|
||||
b = *(u8 *)(q + 0x25) + 0x20;
|
||||
*(u8 *)(q + 0x25) = b;
|
||||
if (b > 0x80) {
|
||||
*(u8 *)(q + 0x25) = 0x80;
|
||||
}
|
||||
|
||||
h = *(u16 *)(q + 0x1A) + 0x400;
|
||||
*(u8 *)(q + 0x26) = *(u8 *)(q + 0x25);
|
||||
*(u16 *)(q + 0x1A) = h;
|
||||
*(u16 *)(q + 0x18) = h;
|
||||
|
||||
if (func_80128ED8(q, (s32 *)((s32)arg0 + 0x24)) != 0) {
|
||||
((void (*)(void *))func_80146C3C)(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1470,7 +1470,17 @@ void func_801A5470(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A54AC);
|
||||
void func_801A54AC(s32 param_1) {
|
||||
extern u16 D_80126B96;
|
||||
extern s16 D_80126B98;
|
||||
extern s32 func_801A54F0();
|
||||
|
||||
if (func_801A54F0(param_1, 0x40)) {
|
||||
D_80126B98 = 0x78;
|
||||
D_80126B96 |= 0x4000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -3104,7 +3104,23 @@ s32 *func_8017E804(s32 *ot, void *a1p, s32 idx, void *a3p, s32 tag) {
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017E5B8", func_8017EB30);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017E5B8", func_8017EF8C);
|
||||
s16 func_8017EF8C(void) {
|
||||
extern u8 D_801802E4[];
|
||||
extern u8 D_801802EA;
|
||||
|
||||
s32 result;
|
||||
s16 idx;
|
||||
|
||||
if ((func_800291B4(D_801802EA) & 0xFF) == 0) {
|
||||
result = 0;
|
||||
goto end;
|
||||
}
|
||||
idx = func_8014168C(1);
|
||||
result = (func_800291B4(D_801802E4[idx]) & 0xFF) == 0;
|
||||
end:
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void (*D_8018C2EC[])(void);
|
||||
|
||||
@@ -4541,7 +4541,24 @@ s32 func_801801DC(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80180234);
|
||||
void func_80180234(void *arg0) {
|
||||
typedef struct { u8 b[8]; } Blk8;
|
||||
extern Blk8 D_801E2DF0;
|
||||
extern s32 func_80171D78(s32 a0, s32 a1);
|
||||
extern s32 func_8013767C(s32 a0);
|
||||
extern s32 D_801975C8;
|
||||
extern s16 D_80126974;
|
||||
extern s16 D_8012697A;
|
||||
Blk8 buffer;
|
||||
|
||||
buffer = D_801E2DF0;
|
||||
if (func_80171D78((s32)arg0, (s32)&buffer)) {
|
||||
D_80126974 = D_8012697A = D_8012697A;
|
||||
*(s32 *)((s32)arg0 + 0x198) = func_8013767C((s32)&D_801975C8);
|
||||
*(u8 *)((s32)arg0 + 0x214) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern s32 func_801399F0(s32 a0);
|
||||
extern void func_80139914(s32 a0);
|
||||
|
||||
@@ -4166,7 +4166,82 @@ void func_8018102C(void *a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898", func_801810A0);
|
||||
typedef struct {
|
||||
u8 pad0[0x20];
|
||||
s32 f20;
|
||||
u8 pad24[0x10];
|
||||
u16 f34;
|
||||
u8 pad36[0xC6];
|
||||
s16 fFC;
|
||||
s16 fFE;
|
||||
} W_801810A0;
|
||||
|
||||
extern s32 func_8012BDBC(s32 a0, s32 a1);
|
||||
extern s32 func_8018152C(s32 a0, s16 a1);
|
||||
extern s32 func_8012B8E4(s32 a0, s32 a1);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 func_8012C51C(s32 a0, s32 a1);
|
||||
|
||||
void func_801810A0(W_801810A0 *w) {
|
||||
extern u64 D_8018F298[];
|
||||
struct {
|
||||
s16 f0, f1, f2, f3, f4, f5, f6;
|
||||
u16 timer;
|
||||
s32 tbl;
|
||||
s32 pad[5];
|
||||
} L;
|
||||
register s32 t asm("v0");
|
||||
s32 f;
|
||||
register s32 u asm("a0");
|
||||
|
||||
if (func_8012BDBC((s32)w, 0x380)) {
|
||||
__asm__ __volatile__("" ::: "memory");
|
||||
if (!func_8018152C((s32)w, 0x380)) {
|
||||
goto el;
|
||||
}
|
||||
__asm__ __volatile__("" ::: "memory");
|
||||
*(s16 *)(w->f20 + 0x12) += func_8012B8E4((s32)w, 0x14);
|
||||
if (w->f34 == 0) {
|
||||
if (w->fFE == 0) {
|
||||
func_8002D4C8(0x68B, 0);
|
||||
w->fFE = 1;
|
||||
}
|
||||
if (w->fFC >= 0xA) {
|
||||
w->fFC = 0xA;
|
||||
w->f34 += 1;
|
||||
}
|
||||
L.tbl = (s32)&D_8018F298[*(s16 *)&w->fFC];
|
||||
L.f3 = 0x175;
|
||||
L.f6 = 0x7FFF;
|
||||
L.f2 = 0;
|
||||
L.f1 = 0;
|
||||
L.f0 = 0;
|
||||
L.f5 = 0;
|
||||
L.f4 = 0;
|
||||
L.timer = w->fFC;
|
||||
if (func_8012C51C((s32)&L, (s32)w)) {
|
||||
w->fFC += 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
el:
|
||||
t = w->fFC;
|
||||
if (t != 0) {
|
||||
f = w->fFE;
|
||||
u = t;
|
||||
__asm__ __volatile__("" : "=r"(u) : "0"(u));
|
||||
__asm__ __volatile__("" : : "r"(t));
|
||||
t = u - 1;
|
||||
w->fFC = t;
|
||||
w->f34 = 0;
|
||||
if (f != 0) {
|
||||
w->fFE = 0;
|
||||
func_8002D4C8(4, 0x68B);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80181200(s32 a0)
|
||||
{
|
||||
|
||||
@@ -3122,9 +3122,45 @@ void func_80184278(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_801842B4);
|
||||
extern u8 *func_8012913C(s32 a0);
|
||||
extern void func_8001CD50(s32 a0, s32 a1);
|
||||
|
||||
void func_801842B4(s32 a0)
|
||||
{
|
||||
extern u8 D_801ACEA0[];
|
||||
u8 pad[16];
|
||||
u8 *result;
|
||||
|
||||
result = func_8012913C(0x7C);
|
||||
if (result != 0) {
|
||||
*(u16 *)(result + 0x6) = *(u16 *)(a0 + 0x6);
|
||||
*(u16 *)(result + 0xA) = *(u16 *)(a0 + 0xA);
|
||||
*(u16 *)(result + 0xE) = *(u16 *)(a0 + 0xE);
|
||||
func_8001CD50(*(s32 *)(result + 0x20), (s32)D_801ACEA0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80184318(void *a0) {
|
||||
extern s32 D_801151D4;
|
||||
extern void (*D_801A8BFC[])(void *);
|
||||
extern s32 func_8012B77C(s32 a0, s32 a1, s32 a2);
|
||||
s16 arrA[8];
|
||||
s32 bufB[2];
|
||||
s32 base;
|
||||
s32 t;
|
||||
|
||||
base = D_801151D4;
|
||||
arrA[1] = *(s32 *)(base + 0x5C);
|
||||
arrA[3] = *(s32 *)(base + 0x60);
|
||||
arrA[5] = *(s32 *)(base + 0x64);
|
||||
func_8012B77C((s32)bufB, (s32)a0 + 4, (s32)arrA);
|
||||
t = bufB[0];
|
||||
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = t;
|
||||
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = t >> 16;
|
||||
D_801A8BFC[*(u16 *)((s32)a0 + 2)](a0);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184318);
|
||||
|
||||
|
||||
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
|
||||
@@ -3244,7 +3280,26 @@ void func_80184538(s32 a0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184624);
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2);
|
||||
|
||||
void func_80184624(s32 a0)
|
||||
{
|
||||
s16 t;
|
||||
|
||||
*(u16 *)(a0 + 0xFC) = *(u16 *)(a0 + 0xFC) + 0x20;
|
||||
*(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0x100);
|
||||
*(s32 *)(a0 + 0x8) -= func_8004787C(*(s16 *)(a0 + 0xFC)) << 10;
|
||||
|
||||
if (*(s16 *)(a0 + 0xFC) < 0x400) {
|
||||
return;
|
||||
}
|
||||
|
||||
*(s16 *)(a0 + 0x2) = 5;
|
||||
*(s16 *)(a0 + 0xFE) = 4;
|
||||
func_8012E688(a0, 0x98F, 0);
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801A8B4C;
|
||||
extern s32 D_801A8B54;
|
||||
@@ -3331,7 +3386,21 @@ void func_80184900(s32 a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184990);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_80184990(s32 a0)
|
||||
{
|
||||
if (--*(s16 *)(a0 + 0xFC) == 0) {
|
||||
*(s16 *)(a0 + 0x2) = 0xB;
|
||||
}
|
||||
if (*(s16 *)(a0 + 0xFC) == 6) {
|
||||
func_8012C658(0x1EA, 0xE, a0);
|
||||
func_8002D4C8(0xC5D, 0);
|
||||
}
|
||||
func_80184194(a0);
|
||||
}
|
||||
|
||||
|
||||
void func_80184A04(s32 a0) {
|
||||
s16 w;
|
||||
@@ -3379,7 +3448,31 @@ void func_80184A54(s32 param_1) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184AD4);
|
||||
extern void func_8012BE54(s32 a0);
|
||||
|
||||
void func_80184AD4(void *a0)
|
||||
{
|
||||
s32 s0;
|
||||
s32 p;
|
||||
s32 v0;
|
||||
|
||||
s0 = (s32)a0;
|
||||
if (((s32 (*)(s32))func_8012BE54)(s0) <= 0x23FFFF) {
|
||||
v0 = *(s32 *)(s0 + 0x1C);
|
||||
v0 = v0 - 1;
|
||||
*(s32 *)(s0 + 0x1C) = v0;
|
||||
if (v0 == 0) {
|
||||
p = func_8012C658(0x1EA, 0xF, s0);
|
||||
v0 = rand() & 0x1F;
|
||||
v0 = v0 + 0x2D;
|
||||
*(s32 *)(s0 + 0x1C) = v0;
|
||||
if (*(s16 *)(s0 + 0x70) == 0x18 && p != 0) {
|
||||
*(u16 *)(*(s32 *)(p + 0x20) + 0x12) = 0x400;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern int func_8012C658(int arg0, int arg1, int arg2);
|
||||
|
||||
@@ -4566,7 +4566,22 @@ void func_8017DF90(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017DFCC);
|
||||
void func_8017DFCC(int param_1)
|
||||
|
||||
{
|
||||
int iVar1;
|
||||
int iVar2;
|
||||
int iVar3;
|
||||
extern s32 D_801C9364;
|
||||
|
||||
iVar1 = (int)*(short *)(*(int *)(param_1 + 0x20) + 0x12) + 0x100;
|
||||
iVar2 = D_801C9364;
|
||||
for (iVar3 = 0; iVar3 < 0x10; iVar3++) {
|
||||
*(int *)(iVar2 + iVar3 * 0x10 + 4) = iVar1;
|
||||
iVar1 = iVar1 + 0x100;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3615,7 +3615,39 @@ INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80182DB
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80182E1C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80182E70);
|
||||
extern void func_80182F2C(u16 *a0, s32 a1);
|
||||
|
||||
void func_80182E70(u16 *a0, s32 a1)
|
||||
{
|
||||
extern u16 D_800B99DA;
|
||||
extern u8 D_801C4470[];
|
||||
|
||||
u8 col[4];
|
||||
s32 n;
|
||||
s32 x;
|
||||
s32 h;
|
||||
|
||||
if (D_801C4470[D_800B99DA & 0xF] == 0) {
|
||||
n = 0x60;
|
||||
} else {
|
||||
n = 0x50;
|
||||
}
|
||||
x = n * ++a1;
|
||||
n = x / 32;
|
||||
h = n / 2;
|
||||
col[0] = n;
|
||||
col[1] = n;
|
||||
col[2] = h;
|
||||
col[3] = 0;
|
||||
|
||||
if ((s16)a0[3] != -1) {
|
||||
do {
|
||||
func_80182F2C(a0, *(s32 *)col);
|
||||
a0 += 4;
|
||||
} while ((s16)a0[3] != -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* func_80182F2C (ov_SC04_018, ov_SC04_018_jr_8017AE2C) — MATCH (250 ins)
|
||||
@@ -4096,7 +4128,26 @@ void func_801839F0(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80183A24);
|
||||
extern s32 D_801C4288;
|
||||
extern s32 D_801C9238;
|
||||
extern s32 func_80029504(void);
|
||||
|
||||
extern s32 func_80182DB4_call(s32 arg0, s32 arg1) __asm__("func_80182DB4");
|
||||
|
||||
s32 func_80183A24(void) {
|
||||
s32 r;
|
||||
|
||||
D_801C9238 = &D_801C4288;
|
||||
r = func_80182DB4_call(0x168, 0x1A4);
|
||||
if (r == -1) {
|
||||
r = func_80182DB4_call(0x474, 0x4EC);
|
||||
}
|
||||
if ((u32)(func_80029504() - 0xC8) < 0xDC) {
|
||||
return -1;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801C42C8;
|
||||
extern s32 D_801C9238;
|
||||
@@ -4193,7 +4244,30 @@ s32 func_80183C34(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80183C3C);
|
||||
extern u8 D_80078EB0;
|
||||
extern u8 D_80078EB1;
|
||||
extern s32 D_801C923C;
|
||||
extern s32 D_801C9254;
|
||||
extern s32 D_801C90A0[];
|
||||
extern void func_80182E1C(void *a0);
|
||||
|
||||
void func_80183C3C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
D_801C923C = (((D_80078EB1 << 4) - D_80078EB1) << 2) + D_80078EB0;
|
||||
for (i = 0; i < 6; i++) {
|
||||
*(s32 *)(D_801C90A0[i] + 4) |= 0x80000000;
|
||||
}
|
||||
for (i = 2; i < 18; i++) {
|
||||
func_80182E1C((void *)i);
|
||||
}
|
||||
func_801837C4();
|
||||
if (D_801C9254 != 0) {
|
||||
D_801C9254 -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern void func_8001C214(s32, s32);
|
||||
extern void func_8012C1B8(void);
|
||||
@@ -4308,7 +4382,29 @@ void func_80183DE8(u8 *arg0)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80183F04);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern s32 func_80128ED8(s32 param_1, s32 *param_2);
|
||||
extern void func_80016714(void *a0, s32 a1);
|
||||
extern void func_8012C218(void *a0);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
|
||||
void func_80183F04(u8 *a0) {
|
||||
u8 *s1 = *(u8 **)(a0 + 0xCC);
|
||||
u8 *v1;
|
||||
func_8012AD80((s32)a0);
|
||||
v1 = *(u8 **)(a0 + 0xCC);
|
||||
*(u16 *)(v1 + 8) = *(u16 *)(a0 + 6);
|
||||
*(u16 *)(v1 + 0xA) = *(u16 *)(a0 + 0xA);
|
||||
*(u16 *)(v1 + 0xC) = *(u16 *)(a0 + 0xE);
|
||||
if ((*(u32 *)(a0 + 0x1C) & 7) == 0) {
|
||||
func_80128ED8(s1, a0 + 0xD0);
|
||||
}
|
||||
if (func_8012BEE8((s32)a0)) {
|
||||
func_80016714(s1, 0x38);
|
||||
func_8012C218(a0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8012B414(int a0);
|
||||
@@ -4341,11 +4437,72 @@ extern void func_8012B414(int a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_8018404C);
|
||||
void func_8018404C(void *a0)
|
||||
{
|
||||
extern u16 D_800B99DA;
|
||||
u16 var;
|
||||
s32 ret;
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80184094);
|
||||
var = D_800B99DA;
|
||||
ret = func_8004787C(((s32)var * 3) << 4);
|
||||
*(u16 *)(*(s32 *)((char *)a0 + 0x20) + 0x10) = (u16)((u32)ret >> 5);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C810(s32 a0, s32 a1);
|
||||
extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern s32 func_80029504(void);
|
||||
extern s32 D_801ACF90[];
|
||||
extern s32 D_801C44CC[];
|
||||
|
||||
void func_80184094(s32 a0) {
|
||||
s32 v0;
|
||||
if ((u32)(func_80029504() - 0x181) < 0x55) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
*(s32 *)(a0 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)a0);
|
||||
return;
|
||||
}
|
||||
func_8001C810(v0, (s32)D_801ACF90);
|
||||
*(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000;
|
||||
func_8001D0E8(*(s32 *)(a0 + 0x20), 0x7FFF, 0x7FFF);
|
||||
func_8012E8E0(a0, (s32)D_801C44CC);
|
||||
*(s16 *)(a0 + 0x2) = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void func_80184138(s32 arg0) {
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012E8E0(s32 a0, s32 a1);
|
||||
extern s32 D_801AD490[];
|
||||
extern s32 D_801C44DC[];
|
||||
|
||||
s32 v0;
|
||||
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(arg0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)arg0);
|
||||
return;
|
||||
}
|
||||
func_8001C214(v0, (s32)D_801AD490);
|
||||
func_8012E8E0(arg0, (s32)D_801C44DC);
|
||||
*(u16 *)(arg0 + 2) = 1;
|
||||
*(u16 *)(arg0 + 0x34) = 0;
|
||||
*(s32 *)(arg0 + 0xDC) = 0;
|
||||
*(s32 *)(arg0 + 0xE0) = 0;
|
||||
*(s32 *)(arg0 + 0xE4) = 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801820DC", func_80184138);
|
||||
|
||||
|
||||
extern void (*D_801C5F0C[])(void);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -4119,7 +4119,42 @@ void func_8017E7EC(void *arg0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC", func_8017E8CC);
|
||||
#include "common.h"
|
||||
|
||||
extern u8 D_801202A0[];
|
||||
extern s32 func_80013328(s32 a0, s32 a1);
|
||||
extern s32 D_80194888;
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern void func_8012F2E8(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_8017E8CC(void *arg0) {
|
||||
void *s3;
|
||||
s32 best;
|
||||
s32 k;
|
||||
u8 *s0;
|
||||
s32 sp10[2];
|
||||
|
||||
s3 = arg0;
|
||||
best = 0x7FFFFFFF;
|
||||
D_80194888 = NULL;
|
||||
for (k = 0; k < 0x60; k++) {
|
||||
s0 = (u8 *)D_801202A0 + k * 0x10C;
|
||||
if (*(u16 *)s0 == 0x26E) {
|
||||
s16 ret = func_80013328((s32)s3 + 4, (s32)s0 + 4);
|
||||
if (ret < best) {
|
||||
best = ret;
|
||||
D_80194888 = (s32)s0;
|
||||
}
|
||||
}
|
||||
}
|
||||
*(u16 *)((s32)s3 + 0x208) = 0;
|
||||
func_80015978((s32)s3 + 4, sp10);
|
||||
func_8012F2E8(D_80194888, (s32)sp10, (s32)s3 + 0x20C);
|
||||
*(s32 *)((s32)s3 + 0x204) = D_80194888;
|
||||
func_8002D4C8(0x8B0, 0);
|
||||
}
|
||||
|
||||
|
||||
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_80015954(s32 a0, s32 a1);
|
||||
|
||||
@@ -3393,7 +3393,24 @@ void func_8017D6F0(void *a0) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017D72C);
|
||||
extern s32 rand(void);
|
||||
extern s32 func_8012AD50(void *a0);
|
||||
|
||||
void func_8017D72C(s32 a0) {
|
||||
u16 h0;
|
||||
u16 h1;
|
||||
|
||||
h0 = *(u16 *)(a0 + 0xFC);
|
||||
h1 = *(u16 *)(a0 + 0x70);
|
||||
*(s32 *)(a0 + 0xDC) = 0;
|
||||
*(s32 *)(a0 + 0xE0) = 0;
|
||||
*(s32 *)(a0 + 0xE4) = 0;
|
||||
*(u16 *)(a0 + 0x100) = h0;
|
||||
*(u16 *)(a0 + 0x102) = h1;
|
||||
*(u16 *)(a0 + 0xFE) = (rand() & 0x1F) + (rand() & 0x1F) + 0x3C;
|
||||
func_8012AD50((void *)a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017D79C);
|
||||
|
||||
@@ -3694,7 +3711,20 @@ INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E24
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E27C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E304);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_8017E304(s32 param_1)
|
||||
{
|
||||
extern u8 D_801B5AC0[];
|
||||
s32 *s0 = (s32 *)param_1;
|
||||
s32 temp;
|
||||
|
||||
func_8012A828(param_1, D_801B5AC0);
|
||||
temp = *(s32 *)(param_1 + 0xE0);
|
||||
*(s16 *)(param_1 + 2) = 9;
|
||||
*(s32 *)(param_1 + 0xE0) = (temp | 2) & ~0x10;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_801812A0(s32 a0, s32 a1);
|
||||
@@ -3759,7 +3789,17 @@ set_and_return:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E48C);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern u8 D_801B63D8[];
|
||||
|
||||
void func_8017E48C(s32 p) {
|
||||
func_8012A828(p, D_801B63D8);
|
||||
*(u16 *)(p + 2) = 0xB;
|
||||
*(u16 *)(p + 0x34) = 0;
|
||||
*(s32 *)(p + 0x10) *= 2;
|
||||
*(s32 *)(p + 0x18) *= 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern s32 func_801812A0(s32 a0, s32 a1);
|
||||
@@ -3824,7 +3864,22 @@ void *arg0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E670);
|
||||
void func_8017E670(s32 p) {
|
||||
extern void func_8012F214(s32, s32, s32);
|
||||
extern s32 func_801833F4(void *a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012BEE8();
|
||||
extern u8 D_8019E994[];
|
||||
extern s32 D_80126B9C;
|
||||
s32 buf10[2];
|
||||
|
||||
((void (*)(s32, void *, void *))func_8012F214)(p, D_8019E994, buf10);
|
||||
if (func_8012BEE8(p) != 0 && (D_80126B9C & 2) == 0) {
|
||||
*(u16 *)(p + 2) = 4;
|
||||
} else if (func_801833F4(buf10, *(s16 *)(*(s32 *)(p + 0x20) + 0x12), 0x400) == 0) {
|
||||
*(u16 *)(p + 2) = 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void func_8012C218(void *a0);
|
||||
@@ -4079,7 +4134,23 @@ void func_8017EC6C(s32 p)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017ED7C);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_8017ED7C(s32 a0)
|
||||
{
|
||||
extern u8 D_801B5D60[];
|
||||
|
||||
*(s16 *)(a0 + 2) = 0x16;
|
||||
if ((*(u32 *)(a0 + 0xE0) & 0x400) == 0) {
|
||||
func_8012A828(a0, D_801B5D60);
|
||||
*(s16 *)(a0 + 0x34) = 4;
|
||||
*(s32 *)(a0 + 0x1C) = 0xF;
|
||||
} else {
|
||||
*(s32 *)(a0 + 0x1C) = 0x1E;
|
||||
*(s16 *)(a0 + 0x34) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
@@ -7306,7 +7306,18 @@ void func_80186C14(void) {
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80186C3C);
|
||||
extern void func_8012AD80(s32 a0);
|
||||
extern s32 D_801DFF78;
|
||||
|
||||
s32 func_80186C3C(s32 param_1)
|
||||
{
|
||||
s16 v;
|
||||
func_8012AD80(D_801DFF78);
|
||||
v = *(u16 *)(param_1 + 0x10A) - 1;
|
||||
*(u16 *)(param_1 + 0x10A) = v;
|
||||
return v == 0;
|
||||
}
|
||||
|
||||
|
||||
extern s32 D_801DFF78;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user