Merge pull request #211 from dplewis/1AB70
Some checks failed
C/C++ CI / build (push) Has been cancelled

1AB70
This commit is contained in:
Revo 2025-09-15 18:22:30 -04:00 committed by GitHub
commit c9006556e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 199 additions and 52 deletions

View File

@ -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;
@ -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];
@ -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];

View File

@ -192,18 +192,18 @@ 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;
@ -211,8 +211,8 @@ typedef struct unk_D_86002F58_004_000_040_test {
#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;

View File

@ -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;
@ -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);

View File

@ -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 {
@ -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);

View File

@ -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;
@ -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;
@ -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;
#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001AFD8.s")
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_8001B010.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;
}
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);
@ -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;
@ -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;

View File

@ -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*);

View File

@ -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;
@ -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;
@ -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) {

View File

@ -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);

View File

@ -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;

View File

@ -409,7 +409,7 @@ void func_86900188(void) {
}
unk_D_86002F58_004_000_010_024* func_86900244(unk_func_80026268_arg0* arg0) {
unk_D_86002F58_004_000_010_02C sp1C;
arg1_func_80010CA8 sp1C;
unk_D_86002F58_004_000_010* sp18;
arg0->unk_00.unk_00 = 25;

View File

@ -2144,7 +2144,7 @@ void func_82602578(s16 arg0) {
}
void func_82602614(s16 arg0) {
unk_D_86002F58_004_000_010_02C sp24;
arg1_func_80010CA8 sp24;
s16 idx = ((D_82607B54 + arg0 + D_8267E4F0) % D_8267E4F0) + 1;
D_82607B52 = (D_82607B50 + arg0 + 5) % 5;
@ -2154,7 +2154,7 @@ void func_82602614(s16 arg0) {
}
void func_826026D4(s16 arg0) {
unk_D_86002F58_004_000_010_02C sp54;
arg1_func_80010CA8 sp54;
s16 temp_s1 = ((D_82607B54 + arg0 + D_8267E4F0) % D_8267E4F0) + 1;
unk_func_800228F0 sp2C;

View File

@ -803,7 +803,7 @@ void func_84B07294(unk_D_84B25A28* arg0) {
}
void func_84B07370(unk_D_84B25A28* arg0) {
func_8001AA18(arg0->unk_20, 0, arg0);
func_8001AA18(arg0->unk_20, 0);
arg0->unk_01++;
if ((arg0->unk_01 >= 0x1E) && (func_8001B010(arg0->unk_20) != 0)) {

View File

@ -1016,7 +1016,7 @@ void func_84B09F60(unk_D_84B25A58* arg0) {
}
void func_84B0A18C(unk_D_84B25A58* arg0) {
func_8001AA18(arg0->unk_1C, 0, arg0);
func_8001AA18(arg0->unk_1C, 0);
arg0->unk_01++;
if ((arg0->unk_01 >= 0x1E) && (func_8001B010(arg0->unk_1C) != 0)) {

View File

@ -67,7 +67,7 @@ def calc_struct_sizes():
max_rounding = 0
testMe = False
#if name == "unk_D_86002F58_004_000_010_02C":
#if name == "arg1_func_80010CA8":
# testMe = True
#print(data)