summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/slot_machine.s80
-rw-r--r--src/field/slot_machine.c42
2 files changed, 38 insertions, 84 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index dc97ee42f..ea93063ea 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,86 +5,6 @@
.text
- thumb_func_start sub_81027A0
-sub_81027A0: @ 81027A0
- push {r4,lr}
- ldr r4, _081027CC @ =gSharedMem
- movs r0, 0
- strh r0, [r4, 0x8]
- bl sub_81027D0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- ble _081027B8
- bl sub_8102840
-_081027B8:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x2
- ble _081027C4
- bl sub_810290C
-_081027C4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081027CC: .4byte gSharedMem
- thumb_func_end sub_81027A0
-
- thumb_func_start sub_81027D0
-sub_81027D0: @ 81027D0
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0x2
- bl sub_8102BA4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- movs r1, 0x2
- bl sub_8102BA4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x2
- bl sub_8102BA4
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81029D4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0810282E
- ldr r2, _08102834 @ =gSharedMem
- ldr r0, _08102838 @ =gUnknown_083ECE6C
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, _0810283C @ =gUnknown_083ECE5A
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
- movs r0, 0
- bl sub_8103E04
-_0810282E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08102834: .4byte gSharedMem
-_08102838: .4byte gUnknown_083ECE6C
-_0810283C: .4byte gUnknown_083ECE5A
- thumb_func_end sub_81027D0
-
thumb_func_start sub_8102840
sub_8102840: @ 8102840
push {r4,r5,lr}
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index be6c8746b..2e47317a5 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -86,10 +86,16 @@ static void sub_8102484(void);
static void sub_81024F0(void);
static bool8 sub_8102540(void);
static u8 sub_8102578(void);
-u8 sub_81025BC(void);
-void sub_81027A0(void);
+u16 dp15_jump_random_unknown(void);
+static u8 sub_81025BC(void);
+static void sub_81027A0(void);
+void sub_81027D0(void);
+void sub_8102840(void);
+void sub_810290C(void);
+u8 sub_81029D4(u8 a0, u8 a1, u8 a2);
void sub_8102A24(void);
bool8 sub_8102A44(void);
+u8 sub_8102BA4(u8 a0, u8 a1);
void sub_8102DA8(void);
void sub_8102DEC(u8 a0);
void sub_8102E1C(u8 a0);
@@ -98,6 +104,7 @@ void sub_8103C14(u8 a0);
void sub_8103D50(u8 a0);
void sub_8103D8C(u8 a0);
void sub_8103DC8(void);
+void sub_8103E04(u8 a0);
void sub_8103F70(void);
bool8 sub_8103FA0(void);
void sub_8104048(void);
@@ -117,7 +124,6 @@ void sub_81050C4(void);
void sub_81063C0(void);
static void sub_8106448(void);
void sub_81064B8(void);
-u16 dp15_jump_random_unknown(void);
static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
sub_8101D5C,
@@ -894,7 +900,7 @@ static u8 sub_8102578(void)
extern const u8 gUnknown_083ECD28[][6];
-u8 sub_81025BC(void)
+static u8 sub_81025BC(void)
{
s16 i;
@@ -1011,6 +1017,34 @@ u16 dp15_jump_random_unknown(void)
return 8;
}
+static void sub_81027A0(void)
+{
+ eSlotMachine->unk08 = 0;
+ sub_81027D0();
+ if (eSlotMachine->bet > 1)
+ {
+ sub_8102840();
+ }
+ if (eSlotMachine->bet > 2)
+ {
+ sub_810290C();
+ }
+}
+
+extern const u16 gUnknown_083ECE6C[];
+extern const u16 gUnknown_083ECE5A[];
+
+void sub_81027D0(void)
+{
+ u8 payout = sub_81029D4(sub_8102BA4(0, 2), sub_8102BA4(1, 2), sub_8102BA4(2, 2));
+ if (payout != 9)
+ {
+ eSlotMachine->unk0E += gUnknown_083ECE6C[payout];
+ eSlotMachine->unk08 |= gUnknown_083ECE5A[payout];
+ sub_8103E04(0);
+ }
+}
+
asm(".section .text_a");
static void LoadSlotMachineWheelOverlay(void);