file splitting, structs unificiation

This commit is contained in:
DizzyEggg
2025-07-09 11:37:07 +02:00
parent 74e6d58fd1
commit 2d6aa48f9d
9 changed files with 321 additions and 392 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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