Skip to content
Merged

1AB70 #211

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions include/global.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,15 @@ typedef unsigned int uintptr_t;

struct unk_D_86002F58_004_000_00C;

typedef union arg1_func_80010CA8 {
struct {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s8 unk_02;
/* 0x03 */ s8 unk_03;
};
u32 raw;
} arg1_func_80010CA8; // size = 0x4

typedef struct unk_D_86002F58_004_000_00C_028 {
/* 0x00 */ char pad0[4];
/* 0x04 */ u8 unk_04;
Expand All @@ -29,14 +38,6 @@ typedef struct unk_D_86002F58_004_000_00C_028 {

typedef unk_D_86002F58_004_000_00C_028* (*unk_D_86002F58_004_000_00C_028_func)(s32, s32);

typedef union unk_D_86002F58_004_000_010_02C {
struct {
u16 unk_00;
u16 unk_02;
};
u32 raw;
} unk_D_86002F58_004_000_010_02C; // size = 0x4

typedef struct unk_D_86002F58_004_000_010_024 {
/* 0x00 */ u16 unk_00;
/* 0x02 */ char unk02[0x6];
Expand All @@ -54,7 +55,7 @@ typedef struct unk_D_86002F58_004_000_010 {
/* 0x20 */ s32 unk_20;
/* 0x24 */ unk_D_86002F58_004_000_010_024* unk_24;
/* 0x28 */ s32 unk_28;
/* 0x2C */ unk_D_86002F58_004_000_010_02C unk_2C;
/* 0x2C */ arg1_func_80010CA8 unk_2C;
/* 0x30 */ OSMesgQueue unk_30;
/* 0x48 */ OSMesg unk_48;
/* 0x4C */ char pad4C[0x4];
Expand Down
10 changes: 5 additions & 5 deletions src/17300.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,27 +192,27 @@ f32 func_80016F20(unk_D_800ABCC0* arg0, s32 arg1) {
return var_fv1;
}

typedef union unk_D_86002F58_004_000_010_02C_test {
typedef union arg1_func_80010CA8_test {
struct {
s16 unk_00;
s16 unk_02;
};
s32 raw;
} unk_D_86002F58_004_000_010_02C_test; // size = 0x4
} arg1_func_80010CA8_test; // size = 0x4

typedef struct unk_D_86002F58_004_000_040_test {
/* 0x00 */ s16 unk_00;
/* 0x04 */ unk_D_86002F58_004_000_040_004* unk_04;
/* 0x08 */ unk_D_86002F58_004_000_010_02C_test unk_08;
/* 0x08 */ arg1_func_80010CA8_test unk_08;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ char unk10[0x2];
/* 0x12 */ u16 unk_12;
} unk_D_86002F58_004_000_040_test; // size >= 0x14

#ifdef NON_MATCHING
s32 func_80016FBC(unk_D_86002F58_004_000_040_test* arg0, u16 arg1) {
unk_D_86002F58_004_000_010_02C_test spC;
unk_D_86002F58_004_000_010_02C_test* ptr;
arg1_func_80010CA8_test spC;
arg1_func_80010CA8_test* ptr;
unk_D_86002F58_004_000_040_004* temp_v0;

spC = arg0->unk_08;
Expand Down
4 changes: 2 additions & 2 deletions src/19840.c
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ void func_8001987C(void) {
D_800ABE10.unk_A04.unk_08 = main_pool_alloc(0x28000, 1);
}

s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2) {
s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2) {
s32 sp1C;
sp18_func_800198E4* sp18;
s32 var_v1;
Expand Down Expand Up @@ -379,7 +379,7 @@ s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004
return sp1C;
}

s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2, s16 arg3) {
s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2, s16 arg3) {
if ((arg0->unk_00 & 8) && !(arg0->unk_01 & 1)) {
arg0->unk_02 = arg3;
func_800198E4(arg0, arg1, arg2);
Expand Down
6 changes: 3 additions & 3 deletions src/19840.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ typedef struct sp18_func_800198E4 {
/* 0x0C */ s32 unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ unk_D_86002F58_004_000_010_02C unk_18;
/* 0x18 */ arg1_func_80010CA8 unk_18;
} sp18_func_800198E4; // size = 0x1C

typedef struct unk_D_800ABE10_A04 {
Expand Down Expand Up @@ -68,8 +68,8 @@ void func_80019600(UNUSED void* arg0);
void func_800196DC(void);
unk_D_86002F58_004_000_010* func_80019760(u32 arg0);
void func_8001987C(void);
s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2);
s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2, s16 arg3);
s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2);
s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2, s16 arg3);
s32 func_80019A7C(unk_D_86002F58_004_000_010* arg0, s32 arg1, s32 arg2);
s32 func_80019B48(unk_D_86002F58_004_000_010* arg0, sp18_func_800198E4* arg1);
s32 func_80019C08(unk_D_86002F58_004_000_010* arg0);
Expand Down
170 changes: 162 additions & 8 deletions src/1AB70.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,40 @@ void func_8001A324(unk_func_8001A024* arg0, s32 arg1, s32 arg2, u16 arg3) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001A324.s")
#endif

#ifdef NON_MATCHING
void func_8001A46C(unk_func_8001A024* arg0, s32 arg1, unk_func_80026268_arg0* arg2, u16 arg3) {
s32 w;
s32 h;

if (arg1 >= arg0->unk_01) {
return;
}
w = arg0->unk_08[arg1].unk_0C->width;
h = arg0->unk_08[arg1].unk_0C->height;
bzero(arg0->unk_08[arg1].unk_0C->img_p, w * h * 2);
if (((s32) arg2->unk_00.unk_00 > 0) && ((s32) arg2->unk_00.unk_00 < 0x98)) {
arg0->unk_08[arg1].unk_00 = 3;
arg0->unk_08[arg1].unk_14.raw = arg2;;
arg0->unk_08[arg1].unk_02 = arg3 & ~1;
arg0->unk_08[arg1].unk_08 = arg0->unk_18[arg2->unk_00.unk_00 - 1].unk_02 / 100.0f;
func_8001BEE8(&arg0->unk_08[arg1].unk_10, arg2);
if (arg0->unk_18[arg2->unk_00.unk_00 - 1].name == NULL) {
arg0->unk_08[arg1].unk_04 = arg0->unk_18[arg2->unk_00.unk_00 - 1].unk_08 - 0xE38;;
return;
}
arg0->unk_08[arg1].unk_04 = -0xE38;
return;
}
arg0->unk_08[arg1].unk_00 = 1;
arg0->unk_08[arg1].unk_02 = arg3 & ~1;
arg0->unk_08[arg1].unk_14.raw = 0x98;
arg0->unk_08[arg1].unk_08 = (f32) ((f32) arg0->unk_18[151].unk_02 / 100.0f);
arg0->unk_08[arg1].unk_10.raw = 0;
arg0->unk_08[arg1].unk_04 = -0xE38;
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001A46C.s")
#endif

void func_8001A654(u16* arg0, s32 a1, arg1_func_80010CA8 arg2) {
s32 cond;
Expand Down Expand Up @@ -224,11 +257,58 @@ void func_8001A714(unk_func_8001A024* arg0, s32 arg1) {
func_80015094(arg0->unk_0C);
}

#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001AA18.s")
s32 func_8001AA18(unk_func_8001A024* arg0, s32 arg1) {
s32 i;
s32 var_v0;
s32 sp24;
s32 sp20;
unk_func_8001A024_008* temp_v0_2;

sp24 = -1;
sp20 = arg0->unk_02;
if (arg0->unk_00 & 1) {
if (arg1 == 1) {
var_v0 = func_80019CA8(arg0->unk_04);
} else {
var_v0 = func_80019C08(arg0->unk_04);
}
if (var_v0 != 0) {
arg0->unk_00 &= 0xFFFE;
arg0->unk_08[sp20].unk_00 &= 0xFFFE;
func_8001A714(arg0, sp20);
arg0->unk_03 = sp20;
sp24 = sp20;
arg0->unk_02++;
if (arg0->unk_02 >= arg0->unk_01) {
arg0->unk_02 = 0;
}
}
} else {
for (i = 0; i < arg0->unk_01; i++) {
temp_v0_2 = &arg0->unk_08[sp20];
if (temp_v0_2->unk_00 & 1) {
arg0->unk_00 |= 1;
if (temp_v0_2->unk_00 & 2) {
func_800198E4(arg0->unk_04, *temp_v0_2->unk_14.ptr, temp_v0_2->unk_10);
} else {
func_800198E4(arg0->unk_04, temp_v0_2->unk_14.unk_02, temp_v0_2->unk_10);
}
arg0->unk_02 = sp20;
break;
} else {
sp20 += 1;
if (sp20 >= arg0->unk_01) {
sp20 = 0;
}
}
}
}
return sp24;
}

s32 func_8001ABAC(unk_func_8001A024* arg0, s32 arg1) {
UNUSED s32 pad;
unk_D_86002F58_004_000_010_02C sp48;
arg1_func_80010CA8 sp48;
s32 sp44;
s32 var_s1;
unk_func_8001A024_008* temp_s0;
Expand Down Expand Up @@ -284,13 +364,87 @@ s32 func_8001ABAC(unk_func_8001A024* arg0, s32 arg1) {
return sp44;
}

#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001AD90.s")
s32 func_8001AD90(unk_func_8001A024* arg0, s32 arg1) {
s32 i;
s32 var_a2;
s32 var_s0;
unk_func_8001A024_008* temp_a0;
unk_func_8001A024_008* temp_s1;

var_a2 = -1;
var_s0 = arg0->unk_02;
temp_a0 = arg0->unk_08;

for (i = 0; i < arg0->unk_01; i++) {
temp_s1 = &arg0->unk_08[var_s0];
if (temp_s1->unk_00 & 1) {
while (func_80001C90() == 0) {}

if (temp_s1->unk_00 & 2) {
func_800198E4(arg0->unk_04, *temp_s1->unk_14.ptr, temp_s1->unk_10);
} else {
func_800198E4(arg0->unk_04, temp_s1->unk_14.unk_02, temp_s1->unk_10);
}
func_80019CA8(arg0->unk_04);
arg0->unk_08[var_s0].unk_00 &= ~1;
func_8001A714(arg0, var_s0);
arg0->unk_02 = var_s0;
var_a2 = var_s0;
arg0->unk_02++;
arg0->unk_03 = var_s0;
if (arg0->unk_02 >= arg0->unk_01) {
arg0->unk_02 = 0;
}
break;
} else {
var_s0 += 1;
if (var_s0 >= arg0->unk_01) {
var_s0 = 0;
}
}
}
return var_a2;
}

#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001AEEC.s")
void func_8001AEEC(unk_func_8001A024* arg0, s32 arg1) {
s32 i;

if (arg1 == arg0->unk_03) {
func_80006498(&gDisplayListHead, arg0->unk_08[arg1].unk_0C);
func_8000699C(&gDisplayListHead, arg0->unk_08[arg1].unk_02);
func_8001533C(1);
func_80015094(arg0->unk_0C);
return;
}
for (i = arg0->unk_01; i > 0; i--) {
if (arg0->unk_08[i - 1].unk_00 & 1) {
break;
}
}
if (i == 0) {
arg0->unk_08[arg1].unk_00 |= 1;
}
}

#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001AFD8.s")
u8* func_8001AFD8(unk_func_8001A024* arg0, s32 arg1) {
u8* image;
image = NULL;
if (arg1 < (s32)arg0->unk_01) {
image = arg0->unk_08[arg1].unk_0C->img_p;
}
return image;
}

#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001B010.s")
s32 func_8001B010(unk_func_8001A024* arg0) {
s32 i;

for (i = 0; i < arg0->unk_01; i++) {
if (arg0->unk_08[i].unk_00 & 5) {
return 0;
}
}
return 1;
}

void func_8001B058(void) {
D_800ABE10.unk_A04.unk_10 = func_800044F4(0x820000, NULL, 1, 1);
Expand Down Expand Up @@ -367,7 +521,7 @@ unk_func_8001B1FC* func_8001B1FC(unk_D_86002F58_004_000_010* arg0, s16 arg1, s16
}

void func_8001B2D8(unk_func_8001B1FC* arg0, unk_func_80026268_arg0* arg1, u16 arg2) {
unk_D_86002F58_004_000_010_02C sp2C;
arg1_func_80010CA8 sp2C;
s16 tmp1 = (s16)(D_8006FF00[arg1->unk_00.unk_00 - 1].unk_14 >> 0x10) >> 6;
s16 tmp2 = (s16)(D_8006FF00[arg1->unk_00.unk_00 - 1].unk_14 >> 6) >> 4;
s16 tmp3 = (s16)(D_8006FF00[arg1->unk_00.unk_00 - 1].unk_14 << 6) >> 6;
Expand Down Expand Up @@ -395,7 +549,7 @@ void func_8001B2D8(unk_func_8001B1FC* arg0, unk_func_80026268_arg0* arg1, u16 ar
}

void func_8001B480(unk_func_8001B1FC* arg0, s32 arg1, u16 arg2) {
unk_D_86002F58_004_000_010_02C sp34;
arg1_func_80010CA8 sp34;
s16 tmp1 = (s16)(D_8006FF00[arg1 - 1].unk_14 >> 0x10) >> 6;
s16 tmp2 = (s16)(D_8006FF00[arg1 - 1].unk_14 >> 6) >> 4;
s16 tmp3 = (s16)(D_8006FF00[arg1 - 1].unk_14 << 6) >> 6;
Expand Down
7 changes: 4 additions & 3 deletions src/1AB70.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,11 @@ void func_8001A1D0(unk_func_8001A024*, unk_D_86002F58_004_000_010*, unk_D_80068B
void func_8001A250(unk_func_8001A024*, unk_D_8006FF00*);
void func_8001A258(unk_func_8001A024*);
void func_8001A324(unk_func_8001A024*, s32, s32, u16);
void func_8001A46C(unk_func_8001A024*, s32, unk_func_80026268_arg0*, s32);
void func_8001AA18(unk_func_8001A024*, s32, unk_D_84B25A28*);
void func_8001A46C(unk_func_8001A024*, s32, unk_func_80026268_arg0*, u16);
s32 func_8001AA18(unk_func_8001A024*, s32);
s32 func_8001ABAC(unk_func_8001A024*, s32);
void* func_8001AFD8(unk_func_8001A024*, s32);
s32 func_8001AD90(unk_func_8001A024*, s32);
u8* func_8001AFD8(unk_func_8001A024*, s32);
s32 func_8001B010(unk_func_8001A024*);
void func_8001B058(void);
void func_8001B0DC(u16*, s32, unk_func_80026268_arg0*);
Expand Down
10 changes: 5 additions & 5 deletions src/1C720.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,10 @@ unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32
return var_v1;
}

unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* arg0, unk_func_80026268_arg0* arg1) {
arg1_func_80010CA8* func_8001BEE8(arg1_func_80010CA8* arg0, unk_func_80026268_arg0* arg1) {
UNUSED s32 pad;
char sp38[0xB];
unk_D_86002F58_004_000_010_02C sp34;
arg1_func_80010CA8 sp34;
unk_D_8006FF00* sp30;
UNUSED s32 pad2;
u8 var_a0;
Expand Down Expand Up @@ -158,7 +158,7 @@ unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* ar
return arg0;
}

void func_8001C014(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001C014* arg1, u16 arg2) {
void func_8001C014(arg1_func_80010CA8* arg0, unk_func_8001C014* arg1, u16 arg2) {
unk_func_80026268_arg0 stack;

stack.unk_00.unk_00 = arg2;
Expand All @@ -171,10 +171,10 @@ void func_8001C014(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001C014* arg1

#ifdef NON_MATCHING
typedef struct stack_func_8001C07C {
/* 0x00 */ unk_D_86002F58_004_000_010_02C unk_00;
/* 0x00 */ arg1_func_80010CA8 unk_00;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0C */ unk_D_86002F58_004_000_010_02C unk_0C;
/* 0x0C */ arg1_func_80010CA8 unk_0C;
} stack_func_8001C07C; // size == 0x30

void func_8001C07C(unk_func_8001C07C_arg0* arg0) {
Expand Down
4 changes: 2 additions & 2 deletions src/1C720.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ void func_8001BE34(unk_D_86002F58_004_000* arg0, u8 arg1, u8 arg2, u8 arg3, u8 a
void func_8001BE78(unk_D_86002F58_004_000* arg0, u8 arg1);
void func_8001BE84(unk_D_86002F58_004_000* arg0, u8 arg1);
unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32 arg1);
unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* arg0, unk_func_80026268_arg0* arg1);
void func_8001C014(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001C014* arg1, u16 arg2);
arg1_func_80010CA8* func_8001BEE8(arg1_func_80010CA8* arg0, unk_func_80026268_arg0* arg1);
void func_8001C014(arg1_func_80010CA8* arg0, unk_func_8001C014* arg1, u16 arg2);
void func_8001C07C(unk_func_8001C07C_arg0* arg0);
void func_8001C198(unk_func_8001C248* arg0);
void func_8001C1E8(unk_func_8001C248* arg0);
Expand Down
9 changes: 0 additions & 9 deletions src/F420.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,6 @@

#include "global.h"

typedef union arg1_func_80010CA8 {
struct {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s8 unk_02;
/* 0x03 */ s8 unk_03;
};
u32 raw;
} arg1_func_80010CA8; // size = 0x4

extern Vec3f D_8006F050;
extern Vec3s D_8006F05C;
extern Vec3f D_8006F064;
Expand Down
Loading