decomp 801C8C4

This commit is contained in:
Seth Barberee 2022-04-29 07:58:12 -07:00
parent 576ae3a98b
commit c806523537
2 changed files with 69 additions and 149 deletions

View File

@ -5,155 +5,6 @@
.text
thumb_func_start sub_801C8C4
sub_801C8C4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r4, r0, 0
adds r6, r1, 0
mov r9, r2
mov r10, r3
bl sub_801CF14
lsls r0, 24
cmp r0, 0
beq _0801C8E4
movs r0, 0
b _0801C9D0
_0801C8E4:
ldr r5, _0801C9E0
ldr r0, [r5]
cmp r0, 0
bne _0801C8F6
ldr r0, _0801C9E4
movs r1, 0x8
bl MemoryAlloc
str r0, [r5]
_0801C8F6:
ldr r0, [r5]
str r4, [r0]
bl sub_801CF94
ldr r0, [r5]
movs r4, 0x9D
lsls r4, 3
adds r1, r0, r4
str r6, [r1]
ldr r1, _0801C9E8
mov r8, r1
adds r2, r0, r1
lsls r1, r6, 1
adds r1, r6
lsls r1, 3
movs r7, 0x9E
lsls r7, 3
adds r1, r7
adds r1, r0, r1
str r1, [r2]
adds r0, r7
bl sub_8006518
ldr r1, [r5]
adds r4, r1, r4
ldr r2, [r4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, r7
ldr r0, _0801C9EC
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r2, [r5]
mov r1, r8
adds r0, r2, r1
ldr r1, [r0]
movs r3, 0xAA
lsls r3, 3
adds r0, r2, r3
str r0, [r1, 0x14]
mov r4, r9
cmp r4, 0
beq _0801C96C
movs r1, 0x9D
lsls r1, 3
adds r0, r2, r1
ldr r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
subs r3, 0x58
adds r1, r2, r3
adds r1, r0
ldr r0, [r4]
str r0, [r1]
_0801C96C:
ldr r0, [r5]
add r0, r8
ldr r0, [r0]
mov r1, r10
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r5]
adds r0, r7
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r4, [r5]
ldr r0, _0801C9F0
adds r4, r0
bl sub_801CE58
adds r1, r0, 0
adds r0, r4, 0
mov r2, r10
adds r3, r6, 0
bl sub_8013818
ldr r0, _0801C9F4
ldr r4, [r5]
ldr r1, [r0]
ldr r0, [r4]
cmp r1, r0
bne _0801C9C6
ldr r0, _0801C9F8
ldrh r1, [r0]
ldr r2, _0801C9FC
adds r0, r4, r2
strh r1, [r0]
ldr r0, _0801CA00
ldrh r1, [r0]
ldr r3, _0801CA04
adds r0, r4, r3
strh r1, [r0]
ldr r1, _0801C9F0
adds r0, r4, r1
bl sub_8013984
_0801C9C6:
bl sub_801CC38
bl sub_801CCD8
movs r0, 0x1
_0801C9D0:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0801C9E0: .4byte gUnknown_203B244
_0801C9E4: .4byte 0x00000554
_0801C9E8: .4byte 0x000004ec
_0801C9EC: .4byte gUnknown_80DBE54
_0801C9F0: .4byte 0x000004b4
_0801C9F4: .4byte gUnknown_203B248
_0801C9F8: .4byte gUnknown_203B24C
_0801C9FC: .4byte 0x000004cc
_0801CA00: .4byte gUnknown_203B24E
_0801CA04: .4byte 0x000004d2
thumb_func_end sub_801C8C4
thumb_func_start sub_801CA08
sub_801CA08:
push {r4-r6,lr}

View File

@ -24,12 +24,46 @@ struct unkStruct_203B240
u32 unk90;
};
struct unkStruct_203B244
{
// size: 0x554
u32 unk0;
u8 fill4[0x4B4 - 0x4];
u32 unk4B4;
u8 fill4B8[0x4CC - 0x4B8];
u16 unk4CC;
u16 unk4CE;
u16 unk4D0;
u16 unk4D2;
u8 fill4D4[0x4E8 - 0x4D4];
u32 unk4E8;
struct UnkTextStruct2 * unk4EC;
struct UnkTextStruct2 unk4F0[4];
u8 unk550[4];
};
extern const struct UnkTextStruct2 gUnknown_80DBE54;
extern struct unkStruct_203B244 *gUnknown_203B244;
extern struct unkStruct_203B240 *gUnknown_203B240;
extern u32 gUnknown_203B248;
extern u16 gUnknown_203B24C;
extern u16 gUnknown_203B24E;
extern char gUnknown_80DBE2C[]; // {ARG_MOVE_ITEM_0}
extern char gUnknown_80DBE30[]; // {ARG_POKEMON_0}
extern u8 gUnknown_202DE58[0x58];
extern u8 gAvailablePokemonNames[0x58];
extern bool8 sub_801CF14(u32);
extern void sub_8012D08(struct UnkTextStruct2 *, u32);
extern void sub_8013818(u32 *, u32, u32, u32);
extern u32 sub_801CE58(void);
extern void sub_8013984(void *);
extern void sub_801CC38(void);
extern void sub_801CCD8(void);
extern void sub_801CF94(void);
extern void ResetSprites(u32);
extern void sub_801317C(u32 *);
@ -204,3 +238,38 @@ void sub_801C848(void)
break;
}
}
bool8 sub_801C8C4(s32 param_1, s32 param_2, struct UnkTextStruct2_sub *param_3, u32 param_4)
{
if (sub_801CF14(param_1)) {
return FALSE;
}
else
{
if (gUnknown_203B244 == NULL) {
gUnknown_203B244 = MemoryAlloc(sizeof(struct unkStruct_203B244), 8);
}
gUnknown_203B244->unk0 = param_1;
sub_801CF94();
gUnknown_203B244->unk4E8 = param_2;
gUnknown_203B244->unk4EC = &gUnknown_203B244->unk4F0[param_2];
sub_8006518(gUnknown_203B244->unk4F0);
gUnknown_203B244->unk4F0[gUnknown_203B244->unk4E8] = gUnknown_80DBE54;
gUnknown_203B244->unk4EC->unk14 = gUnknown_203B244->unk550;
if (param_3 != NULL) {
gUnknown_203B244->unk4F0[gUnknown_203B244->unk4E8].unk08 = *param_3;
}
sub_8012D08(gUnknown_203B244->unk4EC, param_4);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B244->unk4F0,1,1);
sub_8013818(&gUnknown_203B244->unk4B4, sub_801CE58(), param_4, param_2);
if (gUnknown_203B248 == gUnknown_203B244->unk0) {
gUnknown_203B244->unk4CC = gUnknown_203B24C;
gUnknown_203B244->unk4D2 = gUnknown_203B24E;
sub_8013984(&gUnknown_203B244->unk4B4);
}
sub_801CC38();
sub_801CCD8();
return TRUE;
}
}