mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 15:46:18 -05:00
decomp a few more funcs
This commit is contained in:
parent
29df447bad
commit
151821a077
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
37
include/structs/code_800E9E4.h
Normal file
37
include/structs/code_800E9E4.h
Normal 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
|
||||
|
|
@ -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*)¶m_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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user