mirror of
https://github.com/pret/pmd-red.git
synced 2026-06-17 14:10:27 -05:00
decomp sub_80861F8
This commit is contained in:
parent
184b6255cd
commit
bcfaa6bf3e
|
|
@ -1,105 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80861F8
|
||||
sub_80861F8:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x2C
|
||||
adds r6, r1, 0
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
adds r5, r0, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r10, r2
|
||||
bl sub_800EE5C
|
||||
bl sub_800EF64
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
ldr r0, [r6, 0x70]
|
||||
mov r8, r0
|
||||
movs r1, 0
|
||||
mov r9, r1
|
||||
str r1, [sp, 0x28]
|
||||
adds r0, r5, 0
|
||||
bl sub_800E700
|
||||
adds r7, r0, 0
|
||||
add r4, sp, 0x28
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
cmp r7, r2
|
||||
beq _0808624A
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x28
|
||||
lsls r2, r7, 24
|
||||
lsrs r2, 24
|
||||
adds r0, r4, 0
|
||||
bl sub_800569C
|
||||
_0808624A:
|
||||
str r5, [sp]
|
||||
mov r3, r9
|
||||
str r3, [sp, 0x4]
|
||||
mov r0, r8
|
||||
adds r0, 0x46
|
||||
ldrb r0, [r0]
|
||||
str r0, [sp, 0x8]
|
||||
mov r1, sp
|
||||
ldr r0, [r6, 0xC]
|
||||
cmp r0, 0
|
||||
bge _08086262
|
||||
adds r0, 0xFF
|
||||
_08086262:
|
||||
asrs r0, 8
|
||||
strh r0, [r1, 0xC]
|
||||
mov r1, sp
|
||||
ldr r0, [r6, 0x10]
|
||||
cmp r0, 0
|
||||
bge _08086270
|
||||
adds r0, 0xFF
|
||||
_08086270:
|
||||
asrs r0, 8
|
||||
strh r0, [r1, 0xE]
|
||||
mov r1, sp
|
||||
ldrh r0, [r4]
|
||||
strh r0, [r1, 0x10]
|
||||
add r0, sp, 0x28
|
||||
ldrh r0, [r0, 0x2]
|
||||
strh r0, [r1, 0x12]
|
||||
str r7, [sp, 0x14]
|
||||
ldr r0, _080862B4
|
||||
str r0, [sp, 0x18]
|
||||
add r1, sp, 0x1C
|
||||
ldr r0, _080862B8
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
mov r0, sp
|
||||
bl sub_800E890
|
||||
mov r4, r10
|
||||
cmp r4, 0
|
||||
beq _080862A2
|
||||
bl sub_8085F44
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_080862A2:
|
||||
add sp, 0x2C
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080862B4: .4byte 0x0000ffff
|
||||
_080862B8: .4byte gUnknown_8107380
|
||||
thumb_func_end sub_80861F8
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -6,15 +6,41 @@
|
|||
#include "code_806CD90.h"
|
||||
#include "dungeon_music.h"
|
||||
|
||||
typedef struct unkStruct_80416E0
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
u16 x;
|
||||
u16 y;
|
||||
u16 unk10;
|
||||
u16 unk12;
|
||||
s32 unk14;
|
||||
u32 unk18;
|
||||
} unkStruct_80416E0;
|
||||
extern s32 sub_800E890(unkStruct_80416E0 *);
|
||||
|
||||
struct unkStruct_8107380
|
||||
{
|
||||
u8 unk0[12];
|
||||
};
|
||||
extern struct unkStruct_8107380 gUnknown_8107380;
|
||||
|
||||
extern const u8 *gUnknown_810665C[];
|
||||
extern const u8 *gUnknown_810668C[];
|
||||
extern const u8 *gUnknown_81066D4[];
|
||||
extern const u8 *gUnknown_81066F0[];
|
||||
extern const u8 *gUnknown_810671C[];
|
||||
|
||||
|
||||
static void sub_80861EC(Entity *);
|
||||
|
||||
void sub_800EE5C(s32);
|
||||
void sub_800EF64();
|
||||
void sub_803E46C(s32);
|
||||
s32 sub_800E700(s32);
|
||||
void sub_800569C(Position *, EntitySpriteInfo *, u8);
|
||||
void sub_8085F44(void);
|
||||
|
||||
void sub_8052FB8(const u8 *);
|
||||
|
||||
void sub_8086124(Entity *entity, u8 param_2)
|
||||
|
|
@ -63,3 +89,50 @@ void sub_80861EC(Entity *a0)
|
|||
{
|
||||
a0->info->unkFE = 0x63;
|
||||
}
|
||||
|
||||
s32 sub_80861F8(s16 param_1,Entity *param_2,bool32 param_3)
|
||||
{
|
||||
EntityInfo *info;
|
||||
s32 uVar2;
|
||||
s32 uStack_38;
|
||||
Position pos;
|
||||
unkStruct_80416E0 stack;
|
||||
struct unkStruct_8107380 stack4;
|
||||
|
||||
#ifdef NONMATCHING
|
||||
s32 param_1_s32 = param_1;
|
||||
#else
|
||||
register s32 param_1_s32 asm("r5") = param_1;
|
||||
#endif
|
||||
|
||||
u8 param_3_bool32 = param_3;
|
||||
|
||||
sub_800EE5C(param_1);
|
||||
sub_800EF64();
|
||||
sub_803E46C(0x46);
|
||||
info = param_2->info;
|
||||
pos.x = 0;
|
||||
pos.y = 0;
|
||||
uStack_38 = sub_800E700(param_1_s32);
|
||||
if (uStack_38 != -1) {
|
||||
sub_800569C(&pos,¶m_2->spriteInfo,uStack_38);
|
||||
}
|
||||
stack.unk0 = param_1_s32;
|
||||
stack.unk4 = 0;
|
||||
stack.unk8 = (u32)(info->action).direction;
|
||||
stack.x = (param_2->pixelPos).x / 256;
|
||||
stack.y = (param_2->pixelPos).y / 256;
|
||||
|
||||
stack.unk10 = pos.x;
|
||||
stack.unk12 = pos.y;
|
||||
stack.unk14 = uStack_38;
|
||||
stack.unk18 = 0xffff;
|
||||
stack4 = gUnknown_8107380;
|
||||
|
||||
uVar2 = sub_800E890(&stack);
|
||||
if (param_3_bool32 != '\0') {
|
||||
sub_8085F44();
|
||||
uVar2 = -1;
|
||||
}
|
||||
return uVar2;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user