summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-23 19:51:07 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-23 19:51:07 -0500
commitaf86226a5b15ccf1d7d1fea2dc96ff6bba0dc5fc (patch)
tree976f58c81a1dbe05a893cc23eaea759658655261 /src
parent73c16c109cdb996fa59f5aa63e9f030c21cbe54f (diff)
sub_81025BC and matching sub_8102578
Diffstat (limited to 'src')
-rw-r--r--src/field/slot_machine.c75
1 files changed, 36 insertions, 39 deletions
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index f6d58e592..08506a59f 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -874,60 +874,57 @@ static bool8 sub_8102540(void)
return FALSE;
}
-extern const u8 gUnknown_083ECD16[][3];
+extern const u8 gUnknown_083ECD16[][6];
-#ifdef NONMATCHING
static u8 sub_8102578(void)
{
s16 i;
for (i = 0; i < 3; i++)
{
- if ((Random() & 0xff) <= gUnknown_083ECD16[i][eSlotMachine->unk01])
+ s16 rval = Random() & 0xff;
+ s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01];
+ if (value > rval)
{
break;
}
}
return i;
}
-#else
-static __attribute__((naked)) u8 sub_8102578(void)
+
+extern const u8 gUnknown_083ECD28[][6];
+
+u8 sub_81025BC(void)
{
- asm_unified("\tpush {r4-r6,lr}\n"
- "\tmovs r5, 0\n"
- "\tldr r6, =gUnknown_083ECD16\n"
- "_0810257E:\n"
- "\tbl Random\n"
- "\tmovs r2, 0xFF\n"
- "\tldr r3, =gSharedMem\n"
- "\tlsls r1, r5, 16\n"
- "\tasrs r4, r1, 16\n"
- "\tlsls r1, r4, 1\n"
- "\tadds r1, r4\n"
- "\tlsls r1, 1\n"
- "\tldrb r3, [r3, 0x1]\n"
- "\tadds r1, r3\n"
- "\tadds r1, r6\n"
- "\tldrb r1, [r1]\n"
- "\tands r2, r0\n"
- "\tcmp r1, r2\n"
- "\tbgt _081025AA\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tasrs r0, 16\n"
- "\tcmp r0, 0x2\n"
- "\tble _0810257E\n"
- "_081025AA:\n"
- "\tlsls r0, r5, 24\n"
- "\tlsrs r0, 24\n"
- "\tpop {r4-r6}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "\t.pool");
+ s16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ s16 rval = Random() & 0xff;
+ s16 r3 = gUnknown_083ECD28[i][eSlotMachine->unk01];
+ if (i == 0 && eSlotMachine->unk03 == 1)
+ {
+ r3 += 10;
+ if (r3 > 0x100)
+ {
+ r3 = 0x100;
+ }
+ }
+ else if (i == 4 && eSlotMachine->unk03 == 1)
+ {
+ r3 -= 10;
+ if (r3 < 0)
+ {
+ r3 = 0;
+ }
+ }
+ if (r3 > rval)
+ {
+ break;
+ }
+ }
+ return i;
}
-#endif
asm(".section .text_a");