summaryrefslogtreecommitdiff
path: root/src/berry_fix_program.c
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-18 13:54:39 -0400
committerscnorton <scnorton@biociphers.org>2017-09-18 13:54:39 -0400
commit097a38f054c8a858917049fdf8973cb16a26c771 (patch)
tree6156d125fbc1aee781aead38fa34cd5a51f3d399 /src/berry_fix_program.c
parentc5dddf41f58446139b52d3b60cb8738052e4a084 (diff)
nonmatching sub_81BF7A4
Diffstat (limited to 'src/berry_fix_program.c')
-rw-r--r--src/berry_fix_program.c69
1 files changed, 68 insertions, 1 deletions
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index 58e50e509..b63bc12be 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -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
+