decomp a few more funcs

This commit is contained in:
Seth Barberee 2025-02-07 17:37:53 -08:00
parent 29df447bad
commit 151821a077
7 changed files with 123 additions and 214 deletions

View File

@ -1441,165 +1441,4 @@ _0800E7CA:
bx r1
thumb_func_end sub_800E790
thumb_func_start sub_800E7D0
sub_800E7D0:
push {r4-r6,lr}
sub sp, 0x10
adds r4, r0, 0
movs r6, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
str r0, [sp]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x2
ldrsh r0, [r0, r1]
str r0, [sp, 0x4]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
str r0, [sp, 0x8]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x6
ldrsh r0, [r0, r1]
str r0, [sp, 0xC]
movs r5, 0
mov r4, sp
b _0800E812
_0800E80E:
adds r4, 0x4
adds r5, 0x1
_0800E812:
cmp r5, 0x3
bgt _0800E82C
ldr r0, [r4]
bl sub_800ECA4
movs r1, 0
ldr r0, [r0]
cmp r0, 0x4
bne _0800E826
movs r1, 0x1
_0800E826:
adds r6, r1, 0
cmp r6, 0
beq _0800E80E
_0800E82C:
adds r0, r6, 0
add sp, 0x10
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800E7D0
thumb_func_start sub_800E838
sub_800E838:
push {r4,r5,lr}
sub sp, 0x10
adds r4, r0, 0
adds r5, r1, 0
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0
ldrsh r0, [r0, r1]
str r0, [sp]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x2
ldrsh r0, [r0, r1]
str r0, [sp, 0x4]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x4
ldrsh r0, [r0, r1]
str r0, [sp, 0x8]
ldrh r0, [r4]
bl sub_800ECB8
movs r1, 0x6
ldrsh r0, [r0, r1]
str r0, [sp, 0xC]
lsls r5, 2
mov r1, sp
adds r0, r1, r5
ldr r0, [r0]
bl sub_800ECA4
movs r1, 0
ldr r0, [r0]
cmp r0, 0x4
bne _0800E886
movs r1, 0x1
_0800E886:
adds r0, r1, 0
add sp, 0x10
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_800E838
thumb_func_start sub_800E890
sub_800E890:
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4]
bl sub_800E900
str r0, [r4, 0x14]
movs r0, 0x7
adds r1, r4, 0
bl sub_800E208
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_800E890
thumb_func_start sub_800E8AC
sub_800E8AC:
push {r4-r7,lr}
adds r4, r1, 0
adds r5, r2, 0
adds r6, r3, 0
ldr r7, [sp, 0x14]
bl sub_800E2C0
adds r1, r0, 0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0800E8F2
ldr r2, _0800E8F8
movs r0, 0xD0
muls r1, r0
ldr r0, [r2]
adds r1, r0, r1
cmp r4, 0
beq _0800E8D6
ldr r0, [r4]
str r0, [r1, 0x18]
_0800E8D6:
cmp r5, 0
beq _0800E8DE
ldr r0, [r5]
str r0, [r1, 0x1C]
_0800E8DE:
ldr r0, _0800E8FC
cmp r6, r0
beq _0800E8E6
str r6, [r1, 0x24]
_0800E8E6:
cmp r7, 0
beq _0800E8F2
adds r1, 0x28
adds r0, r7, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
_0800E8F2:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0800E8F8: .4byte gUnknown_203B0CC
_0800E8FC: .4byte 0x0000ffff
thumb_func_end sub_800E8AC
.align 2,0

View File

@ -3,6 +3,7 @@
#include "structs/sprite_oam.h"
#include "structs/str_position.h"
#include "code_800E9A8.h"
typedef struct unkStruct_80416E0
{
@ -25,6 +26,6 @@ void sub_800DAC0(u32);
void sub_800DB7C(void);
void sub_800DBBC(void);
bool8 sub_800E90C(DungeonPos *);
void sub_800E8AC(s32 a0, void *a1, void *a2, s32 a3, void *a4); // a2 could be DungeonPos
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, struct unkStruct_203B0CC_sub_2 *a4);
#endif // GUARD_CODE_800DAC0_H

View File

@ -3,6 +3,13 @@
#include "structs/str_position.h"
struct unkStruct_203B0CC_sub_2
{
u32 unk0;
u32 unk4;
u32 unk8;
};
struct unkStruct_203B0CC_sub
{
// size: 0xD0
@ -12,11 +19,11 @@ struct unkStruct_203B0CC_sub
s32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
DungeonPos unk18;
DungeonPos unk1c;
s32 unk20;
s32 unk24;
u8 fill28[0x32 - 0x28];
struct unkStruct_203B0CC_sub_2 unk28;
u32 unk34;
u32 effectID;
u8 fill3C[0x4C - 0x3C];

View File

@ -0,0 +1,37 @@
#ifndef GUARD_STRUCTS_CODE_800E9E4_H
#define GUARD_STRUCTS_CODE_800E9E4_H
typedef struct unkStruct_80B9C60
{
s32 unk0;
s32 unk1;
s32 unk2;
} unkStruct_80B9C60;
typedef struct unkStruct_80CE37C
{
s16 unk0;
s16 unk2;
} unkStruct_80CE37C;
typedef struct unkStruct_80C183C
{
// size: 0xc
s16 unk0;
s16 unk2;
u8 fill4[0xc - 0x4];
} unkStruct_80C183C;
typedef struct unkStruct_800EA44
{
s16 unk0;
s16 unk2;
} unkStruct_800EA44;
typedef struct unkStruct_800E208
{
s32 unk00[7];
unkStruct_80B9C60 unk1c;
} unkStruct_800E208;
#endif

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "structs/code_800E9E4.h"
#include "code_800DAC0.h"
#include "code_800E9A8.h"
#include "code_800E9E4.h"
@ -13,6 +14,64 @@ 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, struct unkStruct_203B0CC_sub_2 *a4)
{
s32 index;
struct unkStruct_203B0CC_sub *ptr;
index = sub_800E2C0(a0);
if(index != -1)
{
ptr = &gUnknown_203B0CC->unk0[index];
if(a1 != NULL) ptr->unk18 = *a1;
if(a2 != NULL) ptr->unk1c = *a2;
if(a3 != 0xFFFF) ptr->unk24 = a3;
if(a4 != NULL) ptr->unk28 = *a4;
}
}
s32 sub_800E900(s32 r0)
{
return sub_800ECA4(r0)->unk1c;

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "structs/code_800E9E4.h"
#include "code_800E9E4.h"
#include "code_800E9A8.h"
@ -9,44 +10,20 @@ s32 sub_800EC68(s32);
struct unkStruct_203B0CC *gUnknown_203B0CC;
typedef struct unkStruct_80B9C60
{
s32 unk0;
s32 unk1;
s32 unk2;
} unkStruct_80B9C60;
extern unkStruct_80B9C60 gUnknown_80B9C60;
extern s32 gUnknown_80B9C9C[8];
extern s16 gUnknown_80CE73C[20];
typedef struct unkStruct_80CE37C
{
s16 unk0;
s16 unk2;
} unkStruct_80CE37C;
unkStruct_80CE37C gUnknown_80CE37C[1];
extern unkStruct_80BDBC4 gUnknown_80BDBC4[430];
extern unkStruct_80B9CC4 gUnknown_80B9CC4[448];
typedef struct unkStruct_80C183C
{
// size: 0xc
s16 unk0;
s16 unk2;
u8 fill4[0xc - 0x4];
} unkStruct_80C183C;
extern unkStruct_80C183C gUnknown_80C183C[4336];
unkStruct_80C183C *sub_800ECD0(s32 param_1);
typedef struct unkStruct_800EA44
{
s16 unk0;
s16 unk2;
} unkStruct_800EA44;
u8 sub_800EA44(unkStruct_800EA44 param_1, s32 param_2)
{
@ -70,11 +47,6 @@ u8 sub_800EA44(unkStruct_800EA44 param_1, s32 param_2)
return ret->unk10;
}
typedef struct unkStruct_800E208
{
s32 unk00[7];
unkStruct_80B9C60 unk1c;
} unkStruct_800E208;
s32 sub_800E208(s32, unkStruct_800E208*);
@ -101,14 +73,14 @@ s32 sub_800EA84(s32 *param_1)
return sub_800E208(5, &stack[0]);
}
void sub_800EAE4(s32 param_1, s32 *param_2, DungeonPos *param_3)
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->unk18 = param_2[0];
a->unk18 = *param_2;
if (a->unk20 != -1)
{
a->unk1c = *param_3;
@ -121,14 +93,14 @@ void sub_800EAE4(s32 param_1, s32 *param_2, DungeonPos *param_3)
}
}
void sub_800EB24(s32 param_1, s32 *param_2, DungeonPos *param_3, s32 r5, s32 r4)
void sub_800EB24(s32 param_1, DungeonPos *param_2, DungeonPos *param_3, s32 r5, s32 r4)
{
s32 idx = sub_800E2C0(param_1);
if (idx != -1) {
struct unkStruct_203B0CC_sub *curStruct;
curStruct = &gUnknown_203B0CC->unk0[idx];
if (curStruct->unkCC == 0) {
curStruct->unk18 = param_2[0];
curStruct->unk18 = *param_2;
}
if (curStruct->unk0 == 6) {
@ -182,7 +154,7 @@ s32 sub_800EBC8(s32 *param_1)
return sub_800E208(6, &stack[0]);
}
void sub_800EC28(u32 param_1, s32 *param_2, DungeonPos *param_3)
void sub_800EC28(u32 param_1, DungeonPos *param_2, DungeonPos *param_3)
{
s32 idx;
idx = sub_800E2C0(param_1);
@ -190,7 +162,7 @@ void sub_800EC28(u32 param_1, s32 *param_2, DungeonPos *param_3)
{
struct unkStruct_203B0CC_sub *struct203B0CC;
struct203B0CC = &gUnknown_203B0CC->unk0[idx];
struct203B0CC->unk18 = param_2[0];
struct203B0CC->unk18 = *param_2;
if (struct203B0CC->unk20 != -1)
{
struct203B0CC->unk1c = *param_3;

View File

@ -45,12 +45,6 @@ extern void sub_800EE5C(s32);
extern void sub_800EF64(void);
extern void sub_800F15C(s32);
struct Sub_UnkStruct_203B414 // Maybe DungeonPos?
{
s16 a0;
s16 a2;
};
struct UnkStruct_203B414
{
s32 unk0;
@ -58,7 +52,7 @@ struct UnkStruct_203B414
s32 unk8;
s32 unkC[16];
s32 unk4C[16];
struct Sub_UnkStruct_203B414 unk8C[16];
struct DungeonPos unk8C[16];
};
EWRAM_INIT DungeonPos gUnknown_203B410 = {100, 100};
@ -104,11 +98,11 @@ void sub_8042B34(s32 a0, s32 a1, s32 a2)
rnd = RandInt(2);
sUnknown_203B414->unk4C[i] = (gUnknown_80F6624[sUnknown_203B414->unk0][r8].unk4 * 2) + rnd;
sUnknown_203B414->unk8C[i].a0 = RandInt(240) + 152;
sUnknown_203B414->unk8C[i].a2 = RandInt(8 + (i * 2)) - (((i - (i / 4 * 4)) * 40) - 24);
sUnknown_203B414->unk8C[i].x = RandInt(240) + 152;
sUnknown_203B414->unk8C[i].y = RandInt(8 + (i * 2)) - (((i - (i / 4 * 4)) * 40) - 24);
spStruct.unk10 = sUnknown_203B414->unk8C[i].a0;
spStruct.unk12 = sUnknown_203B414->unk8C[i].a2;
spStruct.unk10 = sUnknown_203B414->unk8C[i].x;
spStruct.unk12 = sUnknown_203B414->unk8C[i].y;
spStruct.unk14 = 4;
spStruct.unk18 = 0xFFFF;
stack1C = gUnknown_80F683C;
@ -134,13 +128,13 @@ bool8 sub_8042CC0(void)
}
for (i = 0; i < sUnknown_203B414->unk8; i++) {
sUnknown_203B414->unk8C[i].a0 -= sUnknown_203B414->unk4C[i];
if (sUnknown_203B414->unk8C[i].a0 <= -152) {
sUnknown_203B414->unk8C[i].x -= sUnknown_203B414->unk4C[i];
if (sUnknown_203B414->unk8C[i].x <= -152) {
if (sUnknown_203B414->unk4 > 0) {
sUnknown_203B414->unk8C[i].a0 = 152;
sUnknown_203B414->unk8C[i].x = 152;
}
else {
sUnknown_203B414->unk8C[i].a0 = -152;
sUnknown_203B414->unk8C[i].x = -152;
}
}
else {