summaryrefslogtreecommitdiff
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
parent73c16c109cdb996fa59f5aa63e9f030c21cbe54f (diff)
sub_81025BC and matching sub_8102578
-rw-r--r--asm/slot_machine.s76
-rw-r--r--src/field/slot_machine.c75
2 files changed, 36 insertions, 115 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index a6201c22e..423735f9f 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,82 +5,6 @@
.text
- thumb_func_start sub_81025BC
-sub_81025BC: @ 81025BC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r0, _08102600 @ =gUnknown_083ECD28
- mov r8, r0
- ldr r5, _08102604 @ =gSharedMem
- movs r7, 0x80
- lsls r7, 17
-_081025CE:
- bl Random
- movs r4, 0xFF
- ands r4, r0
- lsls r2, r6, 16
- asrs r1, r2, 16
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- ldrb r3, [r5, 0x1]
- adds r0, r3
- add r0, r8
- ldrb r3, [r0]
- cmp r1, 0
- bne _08102608
- ldrb r0, [r5, 0x3]
- cmp r0, 0x1
- bne _08102608
- adds r3, 0xA
- asrs r0, r7, 16
- cmp r3, r0
- ble _08102622
- adds r3, r0, 0
- b _08102622
- .align 2, 0
-_08102600: .4byte gUnknown_083ECD28
-_08102604: .4byte gSharedMem
-_08102608:
- asrs r0, r2, 16
- cmp r0, 0x4
- bne _08102622
- ldrb r0, [r5, 0x3]
- cmp r0, 0x1
- bne _08102622
- lsls r0, r3, 16
- ldr r1, _08102648 @ =0xfff60000
- adds r0, r1
- lsrs r3, r0, 16
- cmp r0, 0
- bge _08102622
- movs r3, 0
-_08102622:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, r4
- bgt _08102638
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r6, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _081025CE
-_08102638:
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08102648: .4byte 0xfff60000
- thumb_func_end sub_81025BC
-
thumb_func_start sub_810264C
sub_810264C: @ 810264C
push {lr}
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");