From 2d6aa48f9d7c563aef37b0953b812baa3199fda1 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 9 Jul 2025 11:37:07 +0200 Subject: [PATCH] file splitting, structs unificiation --- include/code_800DAC0.h | 16 +- include/code_800E9A8.h | 18 +-- ld_script.ld | 1 - src/code_800DAC0.c | 360 ++++++++++++++++++++++++++++------------- src/code_800E9A8.c | 171 -------------------- src/code_800E9E4.c | 77 ++++----- src/code_8041AD0.c | 40 ++--- src/code_80848F0.c | 20 +-- src/ground_sprite.c | 10 +- 9 files changed, 321 insertions(+), 392 deletions(-) delete mode 100644 src/code_800E9A8.c diff --git a/include/code_800DAC0.h b/include/code_800DAC0.h index d5b97d875..801ef319a 100644 --- a/include/code_800DAC0.h +++ b/include/code_800DAC0.h @@ -5,21 +5,7 @@ #include "structs/str_position.h" #include "code_800E9A8.h" -typedef struct unkStruct_80416E0 -{ - s32 unk0; - s32 unk4; - s32 dir; - u16 x; - u16 y; - u16 unk10; - u16 unk12; - s32 unk14; - u32 unk18; - unkStruct_2039DB0 unk1C; -} unkStruct_80416E0; - -u32 sub_800E890(unkStruct_80416E0 *); +s32 sub_800E890(unkStruct_80416E0 *); void sub_800DC14(s32); bool8 sub_800E9A8(s32); diff --git a/include/code_800E9A8.h b/include/code_800E9A8.h index 754b62c1d..a38f275fc 100644 --- a/include/code_800E9A8.h +++ b/include/code_800E9A8.h @@ -16,17 +16,17 @@ struct unkStruct_203B0CC_x94 u8 unk20; }; -struct unkStruct_203B0CC_xC +typedef struct unkStruct_80416E0 { - s32 unkC; - s32 unk10; + s32 unk0; + s32 unk4; + s32 dir; + DungeonPos pos1; + DungeonPos pos2; s32 unk14; - DungeonPos unk18; - DungeonPos unk1c; - s32 unk20; - s32 unk24; + u32 unk18; unkStruct_2039DB0 spriteMasks; -}; +} unkStruct_80416E0; struct unkStruct_203B0CC_sub { @@ -34,7 +34,7 @@ struct unkStruct_203B0CC_sub u32 unk0; s32 unk4; s32 unk8; - struct unkStruct_203B0CC_xC unkC; + unkStruct_80416E0 unkC; u32 unk34; u32 effectID; s32 paletteNum; diff --git a/ld_script.ld b/ld_script.ld index 892829ce3..974e86610 100755 --- a/ld_script.ld +++ b/ld_script.ld @@ -82,7 +82,6 @@ SECTIONS { src/code_800D090.o(.text); src/code_800D090_1.o(.text); src/code_800DAC0.o(.text); - src/code_800E9A8.o(.text); src/code_800E9E4.o(.text); src/code_800ED38.o(.text); src/code_800F034.o(.text); diff --git a/src/code_800DAC0.c b/src/code_800DAC0.c index b59c100db..f98141de5 100644 --- a/src/code_800DAC0.c +++ b/src/code_800DAC0.c @@ -25,19 +25,41 @@ struct unkStruct_800F18C u32 counter; }; +struct UnkStruct_8040094 +{ + u16 unk0; + s16 unk2; + DungeonPos unk4; + DungeonPos unk8; + s32 unkC; + s32 unk10; +}; + +extern s16 gUnknown_2026E4E; + extern s32 sub_800E2C0(s32); extern s32 sub_800E900(s32 a0); extern void sub_8009BE4(void); extern void sub_800F204(OpenedFile *file); extern struct unkStruct_800F18C *sub_800F18C(s32); extern void sub_800DCA8(struct unkStruct_203B0CC_sub *); - extern void sub_800F034(void); extern void sub_800ED38(u32); extern void sub_800F078(); extern void sub_800ED64(); extern void sub_800ED80(); extern void sub_800F094(); +extern void sub_809971C(u16 a0, const RGB *a1, int a2); + +s32 sub_800E2B8(OpenedFile *a0); +OpenedFile *sub_800F1C0(u32 animType, s32 effectID); +s32 sub_800E2F0(void); +s32 sub_800E750(s32 a0, s32 a1); +s32 sub_800E700(s32); +void sub_800F15C(s32 effectID); +unkStruct_80C183C *sub_800ECD0(s32 param_1); + +extern const unkStruct_2039DB0 gUnknown_80B9C60; void sub_800DAC0(u32 fileSelection) { @@ -425,9 +447,6 @@ bool8 sub_800DE38(struct unkStruct_203B0CC_sub *a1) return TRUE; } -extern s16 gUnknown_2026E4E; -extern void sub_809971C(u16 a0, const RGB *a1, int a2); - static inline const EfoFileData *GetFileEfo(struct unkStruct_203B0CC_sub *a0) { return a0->unkB8->data; @@ -510,25 +529,21 @@ bool8 sub_800DE8C(struct unkStruct_203B0CC_sub *a0, DungeonPos *unused) return TRUE; } -s32 sub_800E2B8(OpenedFile *a0); -OpenedFile *sub_800F1C0(u32 animType, s32 effectID); -s32 sub_800E2F0(void); - void sub_800E0B4(struct unkStruct_203B0CC_sub *r5) { s32 r2; - unkStruct_80B9CC4 *r6 = sub_800ECA4(r5->unkC.unkC); + unkStruct_80B9CC4 *r6 = sub_800ECA4(r5->unkC.unk0); r5->unk34 = r6->animType; r5->effectID = r6->effectId; r5->unk4C = r6->unk10; - r5->unk50 = r5->unkC.unk10 + r6->unk14; + r5->unk50 = r5->unkC.unk4 + r6->unk14; r5->unk55 = r6->loop; r5->unk54 = r6->unk20; r2 = sub_800E2B8(r5->unkB8); r5->unk8 = r2; r5->unk40 = r6->animId; - if (r5->unkC.unk14 != -1 && (r2 % 8) == 0) { - r5->unk40 += r5->unkC.unk14; + if (r5->unkC.dir != -1 && (r2 % 8) == 0) { + r5->unk40 += r5->unkC.dir; } switch (r5->unk34) { @@ -572,12 +587,12 @@ void sub_800E0B4(struct unkStruct_203B0CC_sub *r5) } } -s32 sub_800E208(s32 a0, struct unkStruct_203B0CC_xC *a1) +s32 sub_800E208(s32 a0, unkStruct_80416E0 *a1) { s32 i; struct unkStruct_203B0CC_sub *ptr = gUnknown_203B0CC->unk0; - if (a1->unkC == 0) + if (a1->unk0 == 0) return -1; for (i = 0; i < UNK_203B0CC_ARR_COUNT; i++, ptr++) { @@ -585,7 +600,7 @@ s32 sub_800E208(s32 a0, struct unkStruct_203B0CC_xC *a1) unkStruct_80B9CC4 *strPtr; MemoryClear8(ptr, sizeof(*ptr)); - strPtr = sub_800ECA4(a1->unkC); + strPtr = sub_800ECA4(a1->unk0); if (strPtr->animType == 2 && gUnknown_203B0CC->fileSelection != 1) return -1; if (strPtr->animType == 1 && gUnknown_203B0CC->fileSelection != 0) @@ -631,31 +646,17 @@ s32 sub_800E2F0(void) return prev; } -struct UnkStruct_sub_800E308_1 -{ - u16 unk0; - s16 unk2; - DungeonPos unk4; - DungeonPos unk8; - s32 unkC; - s32 unk10; -}; - -s32 sub_800E750(s32 a0, s32 a1); - -extern const unkStruct_2039DB0 gUnknown_80B9C60; - -s32 sub_800E308(struct UnkStruct_sub_800E308_1 *a0, DungeonPos *a1) +s32 sub_800E308(struct UnkStruct_8040094 *a0, DungeonPos *a1) { s32 id; - struct unkStruct_203B0CC_xC sp = { - .unkC = sub_800ECB8(a0->unk0)->unk6, - .unk10 = a0->unk10, - .unk14 = a0->unkC, - .unk18 = a0->unk4, - .unk1c = a0->unk8, - .unk20 = sub_800E750(a0->unk2, a0->unk0), - .unk24 = 0xFFFF, + unkStruct_80416E0 sp = { + .unk0 = sub_800ECB8(a0->unk0)->unk6, + .unk4 = a0->unk10, + .dir = a0->unkC, + .pos1 = a0->unk4, + .pos2 = a0->unk8, + .unk14 = sub_800E750(a0->unk2, a0->unk0), + .unk18 = 0xFFFF, .spriteMasks = gUnknown_80B9C60, }; s32 retVal = sub_800E208(2, &sp); @@ -669,7 +670,7 @@ s32 sub_800E308(struct UnkStruct_sub_800E308_1 *a0, DungeonPos *a1) ptr->unkBC = a0->unk4; ptr->unkC0 = *a1; ptr->unkC4 = a0->unk2; - ptr->unkC8 = ptr->unkC.unk1c; + ptr->unkC8 = ptr->unkC.pos2; return retVal; } @@ -686,82 +687,66 @@ void sub_800E3AC(s32 a0, DungeonPos *pos, s32 a2) return; ptr = &gUnknown_203B0CC->unk0[id]; - ptr->unkC.unk18 = *pos; + ptr->unkC.pos1 = *pos; val = max(abs(ptr->unkC0.x - ptr->unkBC.x), abs(ptr->unkC0.y - ptr->unkBC.y)) / 4; valMinus1 = val - 1; - ptr->unkC.unk1c.y += 9; - ptr->unkC.unk1c.x *= valMinus1; - ptr->unkC.unk1c.y *= valMinus1; - ptr->unkC.unk1c.x /= val; - ptr->unkC.unk1c.y /= val; - ptr->unkC.unk1c.y -= 9; + ptr->unkC.pos2.y += 9; + ptr->unkC.pos2.x *= valMinus1; + ptr->unkC.pos2.y *= valMinus1; + ptr->unkC.pos2.x /= val; + ptr->unkC.pos2.y /= val; + ptr->unkC.pos2.y -= 9; - ptr->unkC.unk24 = a2; + ptr->unkC.unk18 = a2; } s32 sub_800E448(u8 a0, DungeonPos *pos) { - struct unkStruct_203B0CC_xC sp = { - .unkC = sub_800ECE4(a0), - .unk10 = 0, + unkStruct_80416E0 sp = { + .unk0 = sub_800ECE4(a0), + .unk4 = 0, + .dir = -1, + .pos1 = *pos, + .pos2 = {0, 0}, .unk14 = -1, - .unk18 = *pos, - .unk1c = {0, 0}, - .unk20 = -1, - .unk24 = 0xFFFF, + .unk18 = 0xFFFF, .spriteMasks = gUnknown_80B9C60, }; return sub_800E208(3, &sp); } -s32 sub_800E700(s32); - s32 sub_800E49C(u8 a0, DungeonPos *pos, DungeonPos posArray[4], bool8 a3, s32 a4) { s32 r4 = a3 ? sub_800ECF8(a0) : sub_800ED0C(a0); s32 r5 = sub_800E700(r4); - struct unkStruct_203B0CC_xC sp = { - .unkC = r4, - .unk10 = 0, + unkStruct_80416E0 sp = { + .unk0 = r4, + .unk4 = 0, + .dir = -1, + .pos1 = *pos, + .pos2 = {0, 0}, .unk14 = -1, - .unk18 = *pos, - .unk1c = {0, 0}, - .unk20 = -1, - .unk24 = 0, + .unk18 = 0, .spriteMasks = gUnknown_80B9C60, }; - sp.unk24 = a4; + sp.unk18 = a4; if (a3) { if (r5 != -1) { - sp.unk20 = r5; - sp.unk1c = posArray[r5]; + sp.unk14 = r5; + sp.pos2 = posArray[r5]; } } else { - sp.unk20 = 3; - sp.unk1c = posArray[3]; + sp.unk14 = 3; + sp.pos2 = posArray[3]; } return sub_800E208(4, &sp); } -// TODO: MERGE WITH UnkStruct_sub_800E308_1 - -struct UnkStruct_8040094 -{ - u16 unk0; - s16 unk2; - DungeonPos unk4; - DungeonPos unk8; - s32 unkC; - s32 unk10; -}; - -void sub_800F15C(s32 effectID); - s32 sub_800E52C(struct UnkStruct_8040094 *a0) { s32 i; @@ -777,23 +762,23 @@ s32 sub_800E52C(struct UnkStruct_8040094 *a0) { -100, 32 }, { -120, -48 }, }; - struct unkStruct_203B0CC_xC sp[8]; + unkStruct_80416E0 sp[8]; s32 ret = 0; for (i = 0; i < 8; i++) { s32 possibleRet; s32 id; - struct unkStruct_203B0CC_xC *curr = &sp[i]; + unkStruct_80416E0 *curr = &sp[i]; - curr->unkC = sub_800ECB8(a0->unk0)->unk2; - curr->unk10 = a0->unk10; - curr->unk14 = a0->unkC; - curr->unk18 = a0->unk4; - curr->unk18.y += 64; - curr->unk1c = a0->unk8; - curr->unk1c.x += positions[i].x; - curr->unk1c.y += positions[i].y - 64; - curr->unk20 = sub_800E750(a0->unk2, a0->unk0); - curr->unk24 = 0xFFFF; + curr->unk0 = sub_800ECB8(a0->unk0)->unk2; + curr->unk4 = a0->unk10; + curr->dir = a0->unkC; + curr->pos1 = a0->unk4; + curr->pos1.y += 64; + curr->pos2 = a0->unk8; + curr->pos2.x += positions[i].x; + curr->pos2.y += positions[i].y - 64; + curr->unk14 = sub_800E750(a0->unk2, a0->unk0); + curr->unk18 = 0xFFFF; curr->spriteMasks = gUnknown_80B9C60; possibleRet = sub_800E208(1, curr); id = sub_800E2C0(possibleRet); @@ -813,14 +798,14 @@ s32 sub_800E52C(struct UnkStruct_8040094 *a0) return ret; } else { - struct unkStruct_203B0CC_xC sp = { - .unkC = sub_800ECB8(a0->unk0)->unk2, - .unk10 = a0->unk10, - .unk14 = a0->unkC, - .unk18 = a0->unk4, - .unk1c = a0->unk8, - .unk20 = sub_800E750(a0->unk2, a0->unk0), - .unk24 = 0xFFFF, + unkStruct_80416E0 sp = { + .unk0 = sub_800ECB8(a0->unk0)->unk2, + .unk4 = a0->unk10, + .dir = a0->unkC, + .pos1 = a0->unk4, + .pos2 = a0->unk8, + .unk14 = sub_800E750(a0->unk2, a0->unk0), + .unk18 = 0xFFFF, .spriteMasks = gUnknown_80B9C60, }; return sub_800E208(1, &sp); @@ -832,13 +817,13 @@ UNUSED static void sub_800E698(s32 a0, DungeonPos *pos1, DungeonPos *pos2) s32 id = sub_800E2C0(a0); if (id != -1) { struct unkStruct_203B0CC_sub *ptr = &gUnknown_203B0CC->unk0[id]; - ptr->unkC.unk18 = *pos1; - if (ptr->unkC.unk20 != -1) { - ptr->unkC.unk1c = *pos2; + ptr->unkC.pos1 = *pos1; + if (ptr->unkC.unk14 != -1) { + ptr->unkC.pos2 = *pos2; } else { - ptr->unkC.unk1c.x = 0; - ptr->unkC.unk1c.y = 0; + ptr->unkC.pos2.x = 0; + ptr->unkC.pos2.y = 0; } } } @@ -848,7 +833,7 @@ s32 sub_800E6D8(s32 a0) s32 id = sub_800E2C0(a0); if (id != -1) { struct unkStruct_203B0CC_sub *ptr = &gUnknown_203B0CC->unk0[id]; - return ptr->unkC.unk20; + return ptr->unkC.unk14; } else { return -1; @@ -860,8 +845,6 @@ s32 sub_800E700(s32 a0) return sub_800E900((s16) a0); } -unkStruct_80C183C *sub_800ECD0(s32 param_1); - s32 sub_800E710(s32 a0_, s32 a1) { s32 i; @@ -909,4 +892,159 @@ s32 sub_800E790(s32 a0_, s32 a1) return unkPtr1->unk18; } -// +bool8 sub_800E7D0(u16 *param_1) +{ + int local_1c [4]; + bool8 flag; + s32 index; + + flag = FALSE; + local_1c[0] = sub_800ECB8(*param_1)->unk0; + local_1c[1] = sub_800ECB8(*param_1)->unk2; + local_1c[2] = sub_800ECB8(*param_1)->unk4; + local_1c[3] = sub_800ECB8(*param_1)->unk6; + for(index = 0; index < 4; index++) + { + flag = (sub_800ECA4(local_1c[index])->animType == 4); + if(flag) break; + } + return flag; +} + +bool8 sub_800E838(u16 *param_1, s32 param_2) +{ + s32 local_1c [4]; + + local_1c[0] = sub_800ECB8(*param_1)->unk0; + local_1c[1] = sub_800ECB8(*param_1)->unk2; + local_1c[2] = sub_800ECB8(*param_1)->unk4; + local_1c[3] = sub_800ECB8(*param_1)->unk6; + return sub_800ECA4(local_1c[param_2])->animType == 4; +} + +s32 sub_800E890(unkStruct_80416E0 *param_1) +{ + param_1->unk14 = sub_800E900(param_1->unk0); + return sub_800E208(7, param_1); +} + +void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, unkStruct_2039DB0 *a4) +{ + s32 index = sub_800E2C0(a0); + if (index != -1) { + struct unkStruct_203B0CC_sub *ptr = &gUnknown_203B0CC->unk0[index]; + + if (a1 != NULL) ptr->unkC.pos1 = *a1; + if (a2 != NULL) ptr->unkC.pos2 = *a2; + if (a3 != 0xFFFF) ptr->unkC.unk18 = a3; + if (a4 != NULL) ptr->unkC.spriteMasks = *a4; + } +} + +s32 sub_800E900(s32 r0) +{ + return sub_800ECA4(r0)->unk1c; +} + +bool8 sub_800E90C(DungeonPos *param_1) +{ + s32 i; + struct unkStruct_203B0CC_sub *ptr; + bool8 flag = FALSE; + + for (i = 0, ptr = &gUnknown_203B0CC->unk0[i]; i < UNK_203B0CC_ARR_COUNT; i++, ptr++) { + if (ptr->unk4 != -1) { + if (ptr->unkC.unk4 <= 0) { + if (ptr->unk34 == 4) { + sub_800DE8C(ptr, param_1); + } + else { + sub_800DD0C(ptr, param_1); + } + } + if (ptr->unkC.unk4 > 0) + ptr->unkC.unk4--; + sub_800DCD0(ptr); + if (ptr->unk54 == 0) + flag = TRUE; + } + } + + return flag; +} + +void sub_800E970(void) +{ + s32 i; + struct unkStruct_203B0CC_sub *ptr; + + for (i = 0, ptr = &gUnknown_203B0CC->unk0[i]; i < UNK_203B0CC_ARR_COUNT; i++, ptr++) { + if (ptr->unk4 != -1 && ptr->unkC.unk4 <= 0 && ptr->unk34 != 4) { + sub_800DE38(ptr); + } + } +} + +bool8 sub_800E9A8(s32 a0) +{ + s32 i; + struct unkStruct_203B0CC_sub *ptr; + + if (a0 == -1) + return FALSE; + + ptr = gUnknown_203B0CC->unk0; + for (i = 0; i < UNK_203B0CC_ARR_COUNT; i++, ptr++) { + if (ptr->unk4 == a0) { + if (ptr->unk54 != 0) + return FALSE; + return TRUE; + } + } + + return FALSE; +} + +bool8 sub_800E9E4(u32 param_1) +{ + if (sub_800E2C0(param_1) != -1) { + return TRUE; + } + else { + return FALSE; + } +} + +bool8 sub_800E9FC(u8 a0) +{ + s32 i; + struct unkStruct_203B0CC_sub *ptr = gUnknown_203B0CC->unk0; + for (i = 0; i < UNK_203B0CC_ARR_COUNT; i++, ptr++) { + if (ptr->unk4 != -1) { + if (a0 != 0) + return TRUE; + if (ptr->unk54 == 0) + return TRUE; + } + } + + if (sub_800EC74()) + return TRUE; + return FALSE; +} + +u8 sub_800EA44(unkStruct_800EA44 param_1, s32 param_2) +{ + s32 i; + s32 a = param_1.unk0; + unkStruct_80BDBC4 *ret = sub_800ECB8(param_2); + unkStruct_80C183C *unkStruct2 = sub_800ECD0(ret->unk20); + + for (i = 0; i < ret->unk1C; i++, unkStruct2++) { + if (unkStruct2->unk0 == a) { + return unkStruct2->unk2; + } + } + + return ret->unk10; +} diff --git a/src/code_800E9A8.c b/src/code_800E9A8.c deleted file mode 100644 index d59b4af27..000000000 --- a/src/code_800E9A8.c +++ /dev/null @@ -1,171 +0,0 @@ -#include "global.h" -#include "structs/code_800E9E4.h" -#include "code_800DAC0.h" -#include "code_800E9A8.h" -#include "code_800E9E4.h" -#include "structs/str_position.h" - -s32 sub_800E2C0(u32); - -extern struct unkStruct_203B0CC *gUnknown_203B0CC; - -void sub_800DE38(struct unkStruct_203B0CC_sub *); -void sub_800DE8C(struct unkStruct_203B0CC_sub *, DungeonPos *); -void sub_800DD0C(struct unkStruct_203B0CC_sub *, DungeonPos *); -void sub_800DCD0(struct unkStruct_203B0CC_sub *); - -s32 sub_800E900(s32 r0); -s32 sub_800E208(s32, unkStruct_800E208*); - -bool8 sub_800E7D0(u16 *param_1) -{ - int local_1c [4]; - bool8 flag; - s32 index; - - flag = FALSE; - local_1c[0] = sub_800ECB8(*param_1)->unk0; - local_1c[1] = sub_800ECB8(*param_1)->unk2; - local_1c[2] = sub_800ECB8(*param_1)->unk4; - local_1c[3] = sub_800ECB8(*param_1)->unk6; - for(index = 0; index < 4; index++) - { - flag = (sub_800ECA4(local_1c[index])->animType == 4); - if(flag) break; - } - return flag; -} - -bool8 sub_800E838(u16 *param_1, s32 param_2) -{ - s32 local_1c [4]; - - local_1c[0] = sub_800ECB8(*param_1)->unk0; - local_1c[1] = sub_800ECB8(*param_1)->unk2; - local_1c[2] = sub_800ECB8(*param_1)->unk4; - local_1c[3] = sub_800ECB8(*param_1)->unk6; - return sub_800ECA4(local_1c[param_2])->animType == 4; -} - -// TODO: look at this later -// https://decomp.me/scratch/luz2f -u32 sub_800E890(unkStruct_80416E0 *param_1) -{ - param_1->unk14 = sub_800E900(param_1->unk0); - return sub_800E208(7, (void*)¶m_1->unk0); -} - -void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, unkStruct_2039DB0 *a4) -{ - s32 index; - struct unkStruct_203B0CC_sub *ptr; - - index = sub_800E2C0(a0); - if(index != -1) - { - ptr = &gUnknown_203B0CC->unk0[index]; - - if(a1 != NULL) ptr->unkC.unk18 = *a1; - if(a2 != NULL) ptr->unkC.unk1c = *a2; - if(a3 != 0xFFFF) ptr->unkC.unk24 = a3; - if(a4 != NULL) ptr->unkC.spriteMasks = *a4; - } -} - -s32 sub_800E900(s32 r0) -{ - return sub_800ECA4(r0)->unk1c; -} - -bool8 sub_800E90C(DungeonPos *param_1) -{ - bool8 flag; - s32 iVar1; - struct unkStruct_203B0CC_sub *ptr; - - flag = FALSE; - - for (iVar1 = 0, ptr = &gUnknown_203B0CC->unk0[iVar1]; iVar1 < 0x20; iVar1++, ptr++) { - if (ptr->unk4 != -1) { - if (ptr->unkC.unk10 <= 0) { - if (ptr->unk34 == 4) { - sub_800DE8C(ptr, param_1); - } - else { - sub_800DD0C(ptr, param_1); - } - } - if (ptr->unkC.unk10 > 0) - ptr->unkC.unk10--; - sub_800DCD0(ptr); - if (ptr->unk54 == 0) - flag = TRUE; - } - } - - return flag; -} - -void sub_800E970(void) -{ - s32 iVar1; - struct unkStruct_203B0CC_sub *ptr; - - for (iVar1 = 0, ptr = &gUnknown_203B0CC->unk0[iVar1]; iVar1 < 0x20; iVar1++, ptr++) { - if (ptr->unk4 != -1 && ptr->unkC.unk10 <= 0 && ptr->unk34 != 4) { - sub_800DE38(ptr); - } - } -} - -bool8 sub_800E9A8(s32 a0) -{ - s32 i; - struct unkStruct_203B0CC_sub *ptr; - - if (a0 == -1) - return FALSE; - - ptr = gUnknown_203B0CC->unk0; - for (i = 0; i < 32; i++, ptr++) { - if (ptr->unk4 == a0) { - if (ptr->unk54 != 0) - return FALSE; - return TRUE; - } - } - - return FALSE; -} - -bool8 sub_800E9E4(u32 param_1) -{ - if(sub_800E2C0(param_1) != -1) - { - return TRUE; - } - else { - return FALSE; - } -} - -bool8 sub_800E9FC(u8 a0) -{ - s32 i; - struct unkStruct_203B0CC_sub *ptr; - - - ptr = gUnknown_203B0CC->unk0; - for (i = 0; i < 32; i++, ptr++) { - if (ptr->unk4 != -1) { - if(a0 != 0) - return TRUE; - if (ptr->unk54 == 0) - return TRUE; - } - } - - if(sub_800EC74()) - return TRUE; - return FALSE; -} diff --git a/src/code_800E9E4.c b/src/code_800E9E4.c index 73bbc8cff..ccd26eee5 100644 --- a/src/code_800E9E4.c +++ b/src/code_800E9E4.c @@ -25,27 +25,7 @@ extern unkStruct_80C183C gUnknown_80C183C[4336]; unkStruct_80C183C *sub_800ECD0(s32 param_1); -u8 sub_800EA44(unkStruct_800EA44 param_1, s32 param_2) -{ - s32 a; - unkStruct_80BDBC4 *ret; - unkStruct_80C183C *unkStruct2; - s32 i; - a = (s32) param_1.unk0; - ret = sub_800ECB8(param_2); - unkStruct2 = sub_800ECD0(ret->unk20); - - for (i = 0; i < ret->unk1C; i++, unkStruct2++) - { - if (unkStruct2->unk0 == a) - { - return unkStruct2->unk2; - } - } - - return ret->unk10; -} s32 sub_800E208(s32, unkStruct_800E208*); @@ -73,22 +53,20 @@ s32 sub_800EA84(s32 *param_1) return sub_800E208(5, &stack[0]); } -void sub_800EAE4(s32 param_1, DungeonPos *param_2, DungeonPos *param_3) +UNUSED static void sub_800EAE4(s32 param_1, DungeonPos *param_2, DungeonPos *param_3) { s32 idx = sub_800E2C0(param_1); if (idx != -1) { struct unkStruct_203B0CC_sub *a; a = &gUnknown_203B0CC->unk0[idx]; - a->unkC.unk18 = *param_2; - if (a->unkC.unk20 != -1) - { - a->unkC.unk1c = *param_3; + a->unkC.pos1 = *param_2; + if (a->unkC.unk14 != -1) { + a->unkC.pos2 = *param_3; } - else - { - a->unkC.unk1c.x = 0; - a->unkC.unk1c.y = 0; + else { + a->unkC.pos2.x = 0; + a->unkC.pos2.y = 0; } } } @@ -97,30 +75,29 @@ void sub_800EB24(s32 param_1, DungeonPos *param_2, DungeonPos *param_3, s32 r5, { s32 idx = sub_800E2C0(param_1); if (idx != -1) { - struct unkStruct_203B0CC_sub *curStruct; - curStruct = &gUnknown_203B0CC->unk0[idx]; + struct unkStruct_203B0CC_sub *curStruct = &gUnknown_203B0CC->unk0[idx]; if (curStruct->unkCC.x == 0 && curStruct->unkCC.y == 0) { - curStruct->unkC.unk18 = *param_2; + curStruct->unkC.pos1 = *param_2; } if (curStruct->unk0 == 6) { - curStruct->unkC.unk24 = r5 + 1; + curStruct->unkC.unk18 = r5 + 1; } - else if ((curStruct->unk8 & 0x7) == 0) { + else if ((curStruct->unk8 % 8) == 0) { s32 newStruct[8]; memcpy(newStruct, gUnknown_80B9C9C, sizeof(s32) * 8); - curStruct->unkC.unk24 = r5 + newStruct[r4 & 7]; + curStruct->unkC.unk18 = r5 + newStruct[r4 & 7]; } else { - curStruct->unkC.unk24 = r5 + 1; + curStruct->unkC.unk18 = r5 + 1; } - if (curStruct->unkC.unk20 != -1) { - curStruct->unkC.unk1c = *param_3; + if (curStruct->unkC.unk14 != -1) { + curStruct->unkC.pos2 = *param_3; } else { - curStruct->unkC.unk1c.x = 0; - curStruct->unkC.unk1c.y = 0; + curStruct->unkC.pos2.x = 0; + curStruct->unkC.pos2.y = 0; } } } @@ -154,7 +131,7 @@ s32 sub_800EBC8(s32 *param_1) return sub_800E208(6, &stack[0]); } -void sub_800EC28(u32 param_1, DungeonPos *param_2, DungeonPos *param_3) +UNUSED static void sub_800EC28(u32 param_1, DungeonPos *param_2, DungeonPos *param_3) { s32 idx; idx = sub_800E2C0(param_1); @@ -162,15 +139,15 @@ void sub_800EC28(u32 param_1, DungeonPos *param_2, DungeonPos *param_3) { struct unkStruct_203B0CC_sub *struct203B0CC; struct203B0CC = &gUnknown_203B0CC->unk0[idx]; - struct203B0CC->unkC.unk18 = *param_2; - if (struct203B0CC->unkC.unk20 != -1) + struct203B0CC->unkC.pos1 = *param_2; + if (struct203B0CC->unkC.unk14 != -1) { - struct203B0CC->unkC.unk1c = *param_3; + struct203B0CC->unkC.pos2 = *param_3; } else { - struct203B0CC->unkC.unk1c.x = 0; - struct203B0CC->unkC.unk1c.y = 0; + struct203B0CC->unkC.pos2.x = 0; + struct203B0CC->unkC.pos2.y = 0; } } } @@ -188,18 +165,18 @@ u8 sub_800EC74(void) u8 sub_800EC84(s32 param_1) { - unkStruct_80BDBC4 *ret; - ret = sub_800ECB8(param_1); + unkStruct_80BDBC4 *ret = sub_800ECB8(param_1); return ret->unk8; } u8 sub_800EC94(s32 param_1) { - unkStruct_80BDBC4 *ret; - ret = sub_800ECB8(param_1); + unkStruct_80BDBC4 *ret = sub_800ECB8(param_1); return ret->unk9; } +// FILE SPLIT + unkStruct_80B9CC4 *sub_800ECA4(s32 param_1) { return &gUnknown_80B9CC4[param_1]; diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 2ffd0ba60..e0e0636bf 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -246,14 +246,14 @@ s32 sub_8041550(Entity *entity, s32 a1, u8 a2, u8 a3, s32 a4, u8 a5) sp.unk0 = a1; sp.unk4 = 0; sp.dir = -1; - sp.x = pixelPos.x / 256; - sp.y = pixelPos.y / 256; + sp.pos1.x = pixelPos.x / 256; + sp.pos1.y = pixelPos.y / 256; sp.unk14 = -1; - sp.unk10 = 0; - sp.unk12 = 0; + sp.pos2.x = 0; + sp.pos2.y = 0; sp.unk18 = var; - sub_8004E8C(&sp.unk1C); + sub_8004E8C(&sp.spriteMasks); r4 = sub_8041764(&sp, FALSE); if (a2) { for (i = 0; i < 100; i++) { @@ -286,14 +286,14 @@ s32 sub_80416E0(PixelPos *pos, u32 param_2, bool8 param_3) auStack_10.unk4 = 0; auStack_10.dir = -1; - auStack_10.x = pos->x / 256; - auStack_10.y = pos->y / 256; + auStack_10.pos1.x = pos->x / 256; + auStack_10.pos1.y = pos->y / 256; auStack_10.unk14 = -1; - auStack_10.unk10 = 0; - auStack_10.unk12 = 0; + auStack_10.pos2.x = 0; + auStack_10.pos2.y = 0; auStack_10.unk18 = 0xffff; - sub_8004E8C(&auStack_10.unk1C); + sub_8004E8C(&auStack_10.spriteMasks); ret = sub_8041764(&auStack_10, FALSE); if (param_3) { counter = 0; @@ -1232,13 +1232,13 @@ s32 sub_8042520(Entity *a0) local_58.unk0 = 357; local_58.unk4 = 0; local_58.dir = dir; - local_58.x = pos.x; - local_58.y = pos.y; - local_58.unk10 = 0; - local_58.unk12 = 0; + local_58.pos1.x = pos.x; + local_58.pos1.y = pos.y; + local_58.pos2.x = 0; + local_58.pos2.y = 0; local_58.unk14 = -1; local_58.unk18 = iVar8; - sub_8004E8C(&local_58.unk1C); + sub_8004E8C(&local_58.spriteMasks); uVar4 = sub_8041764(&local_58, 0); for (i = 0; i < 6; i++) { @@ -1578,19 +1578,19 @@ void sub_8042B34(s32 a0, s32 a1, s32 a2) spStruct.unk0 = gUnknown_80F6624[gUnknown_203B414->unk0][r8].unk0; spStruct.unk4 = i; spStruct.dir = 0; - spStruct.x = leader->pixelPos.x / 256; - spStruct.y = leader->pixelPos.y / 256; + spStruct.pos1.x = leader->pixelPos.x / 256; + spStruct.pos1.y = leader->pixelPos.y / 256; rnd = RandInt(2); gUnknown_203B414->unk4C[i] = (gUnknown_80F6624[gUnknown_203B414->unk0][r8].unk4 * 2) + rnd; gUnknown_203B414->unk8C[i].x = RandInt(240) + 152; gUnknown_203B414->unk8C[i].y = RandInt(8 + (i * 2)) - (((i - (i / 4 * 4)) * 40) - 24); - spStruct.unk10 = gUnknown_203B414->unk8C[i].x; - spStruct.unk12 = gUnknown_203B414->unk8C[i].y; + spStruct.pos2.x = gUnknown_203B414->unk8C[i].x; + spStruct.pos2.y = gUnknown_203B414->unk8C[i].y; spStruct.unk14 = 4; spStruct.unk18 = 0xFFFF; - spStruct.unk1C = gUnknown_80F683C; + spStruct.spriteMasks = gUnknown_80F683C; gUnknown_203B414->unkC[i] = sub_800E890(&spStruct); r8++; diff --git a/src/code_80848F0.c b/src/code_80848F0.c index f7e258a02..17b6328a8 100644 --- a/src/code_80848F0.c +++ b/src/code_80848F0.c @@ -1349,12 +1349,12 @@ u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,DungeonPos *param_4, bool32 local_40.unk0 = param_1; local_40.unk4 = param_2; local_40.dir = param_3; - local_40.x = param_4->x; - local_40.y = param_4->y; - local_40.unk10 = 0; - local_40.unk12 = 0; + local_40.pos1.x = param_4->x; + local_40.pos1.y = param_4->y; + local_40.pos2.x = 0; + local_40.pos2.y = 0; local_40.unk18 = 0xffff; - local_40.unk1C = (unkStruct_2039DB0) {0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0}; + local_40.spriteMasks = (unkStruct_2039DB0) {0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0}; uVar1 = sub_800E890(&local_40); if (param_5_bool8) { @@ -1493,14 +1493,14 @@ s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3) stack.unk0 = param_1Copy; stack.unk4 = 0; stack.dir = info->action.direction; - stack.x = (param_2->pixelPos).x / 256; - stack.y = (param_2->pixelPos).y / 256; + stack.pos1.x = (param_2->pixelPos).x / 256; + stack.pos1.y = (param_2->pixelPos).y / 256; - stack.unk10 = pos.x; - stack.unk12 = pos.y; + stack.pos2.x = pos.x; + stack.pos2.y = pos.y; stack.unk14 = uStack_38; stack.unk18 = 0xffff; - stack.unk1C = (unkStruct_2039DB0) {0xFFFF, 0xFFFF, 0xFFFF, 0, 0}; + stack.spriteMasks = (unkStruct_2039DB0) {0xFFFF, 0xFFFF, 0xFFFF, 0, 0}; uVar2 = sub_800E890(&stack); if (param_3_bool32) { diff --git a/src/ground_sprite.c b/src/ground_sprite.c index d84ee9f1f..de4fca3af 100644 --- a/src/ground_sprite.c +++ b/src/ground_sprite.c @@ -799,13 +799,13 @@ bool8 sub_80A7094(struct UnkGroundSpriteStruct *ptr, PixelPos *r10, PixelPos *po unkStruct.unk0 = ptr->unk58; unkStruct.unk4 = 0; unkStruct.dir = (s8) ptr->unk5A; - unkStruct.x = posArg->x / 256; - unkStruct.y = posArg->y / 256; - unkStruct.unk10 = 0; - unkStruct.unk12 = 0; + unkStruct.pos1.x = posArg->x / 256; + unkStruct.pos1.y = posArg->y / 256; + unkStruct.pos2.x = 0; + unkStruct.pos2.y = 0; unkStruct.unk14 = -1; unkStruct.unk18 = 0; - unkStruct.unk1C = unkSubStruct; + unkStruct.spriteMasks = unkSubStruct; ptr->unk5C = sub_800E890(&unkStruct); } else if (!sub_800E9E4(ptr->unk5C)) {