nonmatching sub_81BF7A4

This commit is contained in:
scnorton 2017-09-18 13:54:39 -04:00
parent c5dddf41f5
commit 097a38f054
2 changed files with 68 additions and 37 deletions

View file

@ -5,42 +5,6 @@
.text
thumb_func_start sub_81BF7A4
sub_81BF7A4: @ 81BF7A4
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, =gUnknown_030012B8
ldr r0, [r5]
ldrb r0, [r0, 0x1]
cmp r0, r4
bne _081BF7BC
adds r0, r4, 0
b _081BF7DC
.pool
_081BF7BC:
cmp r0, 0x6
bne _081BF7CC
adds r0, r4, 0
bl sub_81BF7E8
ldr r0, [r5]
strb r4, [r0, 0x1]
b _081BF7D6
_081BF7CC:
bl sub_81BF8D8
ldr r1, [r5]
movs r0, 0x6
strb r0, [r1, 0x1]
_081BF7D6:
ldr r0, =gUnknown_030012B8
ldr r0, [r0]
ldrb r0, [r0, 0x1]
_081BF7DC:
pop {r4,r5}
pop {r1}
bx r1
.pool
thumb_func_end sub_81BF7A4
thumb_func_start sub_81BF7E8
sub_81BF7E8: @ 81BF7E8
push {r4-r6,lr}

View file

@ -30,7 +30,9 @@ extern berryfix_t *gUnknown_030012B8;
static void sub_81BF3DC(void);
static void sub_81BF5A4(void);
u32 sub_81BF7A4(u8);
static int sub_81BF7A4(int);
void sub_81BF7E8(int);
void sub_81BF8D8(int);
// .rodata
@ -179,6 +181,32 @@ static void sub_81BF5A4(void)
CopyWindowToVram(3, 2);
CopyWindowToVram(0, 2);
}
static int sub_81BF7A4(int checkval)
{
int retval;
retval = gUnknown_030012B8->unk1;
if (retval == checkval)
{
retval = checkval;
}
else
{
if (retval == 6)
{
sub_81BF7E8(checkval);
gUnknown_030012B8->unk1 = checkval;
}
else
{
sub_81BF8D8(gUnknown_030012B8->unk1);
gUnknown_030012B8->unk1 = 6;
}
retval = gUnknown_030012B8->unk1;
}
return retval;
}
#else
__attribute__((naked)) static void sub_81BF5A4(void)
{
@ -386,4 +414,43 @@ __attribute__((naked)) static void sub_81BF5A4(void)
"\t.pool\n"
".syntax divided");
}
__attribute__((naked)) static int sub_81BF7A4(int checkval)
{
asm(".syntax unified\n"
"\tpush {r4,r5,lr}\n"
"\tadds r4, r0, 0\n"
"\tldr r5, =gUnknown_030012B8\n"
"\tldr r0, [r5]\n"
"\tldrb r0, [r0, 0x1]\n"
"\tcmp r0, r4\n"
"\tbne _081BF7BC\n"
"\tadds r0, r4, 0\n"
"\tb _081BF7DC\n"
"\t.pool\n"
"_081BF7BC:\n"
"\tcmp r0, 0x6\n"
"\tbne _081BF7CC\n"
"\tadds r0, r4, 0\n"
"\tbl sub_81BF7E8\n"
"\tldr r0, [r5]\n"
"\tstrb r4, [r0, 0x1]\n"
"\tb _081BF7D6\n"
"_081BF7CC:\n"
"\tbl sub_81BF8D8\n"
"\tldr r1, [r5]\n"
"\tmovs r0, 0x6\n"
"\tstrb r0, [r1, 0x1]\n"
"_081BF7D6:\n"
"\tldr r0, =gUnknown_030012B8\n"
"\tldr r0, [r0]\n"
"\tldrb r0, [r0, 0x1]\n"
"_081BF7DC:\n"
"\tpop {r4,r5}\n"
"\tpop {r1}\n"
"\tbx r1\n"
"\t.pool\n"
".syntax divided");
}
#endif