diff options
-rw-r--r-- | asm/slot_machine.s | 80 | ||||
-rw-r--r-- | src/field/slot_machine.c | 42 |
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); |