Decompile sub_49D0

This commit is contained in:
WhenGryphonsFly 2023-09-10 19:58:41 -05:00
parent 80af7bd81e
commit b08fc81a3c
5 changed files with 73 additions and 144 deletions

View File

@ -4,148 +4,6 @@
.text
thumb_func_start sub_49D0
sub_49D0: @ 0x080049D0
push {r4, r5, lr}
bl sub_599C
ldr r5, _08004A08 @ =gMain
ldrh r1, [r5, #0x18]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08004A1C
movs r0, #0x66
bl m4aSongNumStart
ldr r0, _08004A0C @ =gUnknown_0202BEC4
movs r1, #0
strb r1, [r0]
ldr r0, _08004A10 @ =gUnknown_0202BEFC
strb r1, [r0]
ldr r1, _08004A14 @ =gUnknown_0202BF04
movs r0, #1
strb r0, [r1]
ldr r0, _08004A18 @ =gUnknown_0202A588
movs r4, #1
strh r4, [r0]
bl sub_2568
strb r4, [r5, #3]
b _08004AF2
.align 2, 0
_08004A08: .4byte gMain
_08004A0C: .4byte gUnknown_0202BEC4
_08004A10: .4byte gUnknown_0202BEFC
_08004A14: .4byte gUnknown_0202BF04
_08004A18: .4byte gUnknown_0202A588
_08004A1C:
ldr r4, _08004A7C @ =gUnknown_0202ADD0
ldr r0, _08004A80 @ =gUnknown_0202BEC8
ldr r1, _08004A84 @ =gUnknown_0202C5F0
ldr r2, _08004A88 @ =gUnknown_0201A4D0
bl sub_1B04
str r0, [r4]
ldr r1, _08004A8C @ =gUnknown_0202BDF0
movs r3, #3
ands r3, r0
str r3, [r1]
ldr r2, _08004A90 @ =gUnknown_0201C1AC
movs r1, #0x1c
ands r1, r0
lsrs r1, r1, #2
strb r1, [r2]
ldr r2, _08004A94 @ =gUnknown_0202ADDC
movs r1, #0xe0
lsls r1, r1, #4
ands r1, r0
lsrs r1, r1, #9
strb r1, [r2]
movs r1, #0x40
ands r1, r0
cmp r1, #0
beq _08004AF2
cmp r3, #1
bhi _08004AF2
bl sub_5EC8
ldr r0, [r4]
movs r1, #0x80
lsls r1, r1, #1
ands r0, r1
cmp r0, #0
bne _08004AAC
bl sub_5EA4
lsls r0, r0, #0x10
asrs r1, r0, #0x10
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne _08004A98
movs r0, #9
strb r0, [r5, #3]
b _08004AAC
.align 2, 0
_08004A7C: .4byte gUnknown_0202ADD0
_08004A80: .4byte gUnknown_0202BEC8
_08004A84: .4byte gUnknown_0202C5F0
_08004A88: .4byte gUnknown_0201A4D0
_08004A8C: .4byte gUnknown_0202BDF0
_08004A90: .4byte gUnknown_0201C1AC
_08004A94: .4byte gUnknown_0202ADDC
_08004A98:
cmp r1, #1
bne _08004AAC
ldr r0, _08004AF8 @ =gUnknown_0202BEFC
movs r1, #2
strb r1, [r0]
movs r0, #8
strb r0, [r5, #3]
movs r0, #0x8a
bl m4aSongNumStart
_08004AAC:
ldr r1, _08004AFC @ =gUnknown_0201A510
ldrh r0, [r1]
adds r0, #1
strh r0, [r1]
ldr r0, _08004B00 @ =gUnknown_0202ADD0
ldr r0, [r0]
movs r1, #0xfe
lsls r1, r1, #0xf
ands r0, r1
cmp r0, #0
beq _08004AF2
ldr r0, _08004B04 @ =gUnknown_0201B128
movs r1, #0
ldrsb r1, [r0, r1]
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne _08004AF2
ldr r1, _08004B08 @ =gUnknown_0201A444
ldrh r0, [r1]
adds r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xb4
ble _08004AF2
ldr r1, _08004AF8 @ =gUnknown_0202BEFC
movs r0, #2
strb r0, [r1]
ldr r1, _08004B0C @ =gMain
movs r0, #8
strb r0, [r1, #3]
movs r0, #0x8a
bl m4aSongNumStart
_08004AF2:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08004AF8: .4byte gUnknown_0202BEFC
_08004AFC: .4byte gUnknown_0201A510
_08004B00: .4byte gUnknown_0202ADD0
_08004B04: .4byte gUnknown_0201B128
_08004B08: .4byte gUnknown_0201A444
_08004B0C: .4byte gMain
thumb_func_start sub_4B10
sub_4B10: @ 0x08004B10
ldr r1, _08004B2C @ =gUnknown_0201A444

View File

@ -798,7 +798,7 @@ extern void sub_19B4(void);
//extern ? sub_1A78();
//extern ? nullsub_15();
extern void sub_1AA4(void);
//extern ? sub_1B04();
extern s32 sub_1B04(u32 *, u32 *, u32 *);
//extern ? sub_1C5C();
//extern ? sub_1C84();
//extern ? sub_1CD4();

View File

@ -247,4 +247,15 @@ extern u8 gUnknown_0201B124;
extern struct PokemonSpecies gUnknown_086A3700[];
extern u32 gUnknown_0202ADD0;
extern u32 gUnknown_0202BEC8;
extern u32 gUnknown_0202C5F0;
extern u32 gUnknown_0201A4D0;
extern u32 gUnknown_0202BDF0;
extern u8 gUnknown_0201C1AC;
extern u8 gUnknown_0202ADDC;
extern u16 gUnknown_0201A510;
extern s16 gUnknown_0201A444;
extern s8 gUnknown_0201B128;
#endif // GUARD_VARIABLES_H

View File

@ -14,6 +14,8 @@ void sub_4D74(void);
void sub_4FC8(void);
void sub_5064(void);
void sub_51CC(void);
s16 sub_5EA4(void); // TODO Pretty sure it's s16, but could be u16
void sub_5EC8(void);
void sub_70E0(s16, s32);
void sub_88E4(void);
@ -520,3 +522,61 @@ void sub_49A8(void)
sub_599C();
gMain.subState = 7;
}
void sub_49D0(void)
{
s16 var0;
sub_599C();
if (gMain.newKeys & B_BUTTON)
{
m4aSongNumStart(0x66);
gUnknown_0202BEC4 = 0;
gUnknown_0202BEFC = 0;
gUnknown_0202BF04 = 1;
gUnknown_0202A588 = 1;
sub_2568();
gMain.subState = 1;
}
else
{
gUnknown_0202ADD0 = sub_1B04(&gUnknown_0202BEC8, &gUnknown_0202C5F0, &gUnknown_0201A4D0);
gUnknown_0202BDF0 = gUnknown_0202ADD0 & 3;
gUnknown_0201C1AC = (gUnknown_0202ADD0 & 0x1C) >> 2;
gUnknown_0202ADDC = (gUnknown_0202ADD0 & 0xe00) >> 9;
if ((gUnknown_0202ADD0 & 0x40) && (gUnknown_0202BDF0 < 2))
{
sub_5EC8();
if (!(gUnknown_0202ADD0 & 0x100))
{
var0 = sub_5EA4();
if (var0 == -1)
{
gMain.subState = 9;
}
else if (var0 == 1)
{
gUnknown_0202BEFC = 2;
gMain.subState = 8;
m4aSongNumStart(0x8A);
}
}
gUnknown_0201A510++;
if ((gUnknown_0202ADD0 & 0x7f0000) && (gUnknown_0201B128 == -1))
{
gUnknown_0201A444++;
if (0xB4 < gUnknown_0201A444)
{
gUnknown_0202BEFC = 2;
gMain.subState = 8;
m4aSongNumStart(0x8a);
}
}
}
}
}

View File

@ -2,7 +2,7 @@
#include "functions.h"
extern u32 gUnknown_0202ADD0;
extern u16 gUnknown_0201A444;
extern s16 gUnknown_0201A444;
extern u32 gUnknown_0202BDF0;
extern u8 gUnknown_0201C1AC;
extern u8 gUnknown_0202ADDC;