diff options
-rw-r--r-- | asm/slot_machine.s | 107 | ||||
-rw-r--r-- | src/field/slot_machine.c | 51 |
2 files changed, 51 insertions, 107 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 4d492fa2a..dc97ee42f 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,113 +5,6 @@ .text - thumb_func_start sub_81026DC -sub_81026DC: @ 81026DC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl Random - movs r1, 0xFF - ands r1, r0 - ldr r0, _081026FC @ =gUnknown_083ECE12 - lsls r4, 1 - adds r4, r0 - ldrh r4, [r4] - cmp r1, r4 - bcc _08102700 - movs r0, 0 - b _08102702 - .align 2, 0 -_081026FC: .4byte gUnknown_083ECE12 -_08102700: - movs r0, 0x1 -_08102702: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81026DC - - thumb_func_start dp15_jump_random_unknown -dp15_jump_random_unknown: @ 8102708 - push {r4,r5,lr} - movs r4, 0 - ldr r0, _0810271C @ =gSharedMem - movs r2, 0x10 - ldrsh r1, [r0, r2] - ldr r0, _08102720 @ =0x0000012b - cmp r1, r0 - ble _08102724 - movs r4, 0x4 - b _0810273A - .align 2, 0 -_0810271C: .4byte gSharedMem -_08102720: .4byte 0x0000012b -_08102724: - cmp r1, 0xF9 - ble _0810272C - movs r4, 0x3 - b _0810273A -_0810272C: - cmp r1, 0xC7 - ble _08102734 - movs r4, 0x2 - b _0810273A -_08102734: - cmp r1, 0x95 - ble _0810273A - movs r4, 0x1 -_0810273A: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r5, _0810275C @ =gUnknown_083ECE1C - lsls r4, 2 - adds r0, r4, r5 - ldrb r0, [r0] - cmp r1, r0 - bcs _08102760 - movs r0, 0x4 - b _0810279A - .align 2, 0 -_0810275C: .4byte gUnknown_083ECE1C -_08102760: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - adds r2, r5, 0x2 - adds r2, r4, r2 - ldr r3, _08102790 @ =gUnknown_083ECE30 - ldr r1, _08102794 @ =gSharedMem - ldrb r1, [r1, 0xB] - lsls r1, 1 - adds r1, r3 - ldrb r1, [r1] - ldrb r2, [r2] - adds r1, r2 - lsls r1, 24 - cmp r0, r1 - bcc _08102798 - movs r0, 0x8 - b _0810279A - .align 2, 0 -_08102790: .4byte gUnknown_083ECE30 -_08102794: .4byte gSharedMem -_08102798: - movs r0, 0x2 -_0810279A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end dp15_jump_random_unknown - thumb_func_start sub_81027A0 sub_81027A0: @ 81027A0 push {r4,lr} diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index cc8c28654..be6c8746b 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -960,6 +960,57 @@ void sub_8102680(void) eSlotMachine->unk05 = i; } +extern const u16 gUnknown_083ECE12[]; + +bool8 sub_81026DC(u16 a0) +{ + u16 rval = Random() & 0xff; + if (rval < gUnknown_083ECE12[a0]) + { + return TRUE; + } + return FALSE; +} + +extern const u16 gUnknown_083ECE1C[][2]; +extern const u16 gUnknown_083ECE30[]; + +u16 dp15_jump_random_unknown(void) +{ + u8 r4 = 0; + u8 rval; + u8 value; + if (eSlotMachine->unk10 >= 300) + { + r4 = 4; + } + else if (eSlotMachine->unk10 >= 250) + { + r4 = 3; + } + else if (eSlotMachine->unk10 >= 200) + { + r4 = 2; + } + else if (eSlotMachine->unk10 >= 150) + { + r4 = 1; + } + rval = Random() % 100; + value = gUnknown_083ECE1C[r4][0]; + if (rval < value) + { + return 4; + } + rval = Random() % 100; + value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[eSlotMachine->unk0B]; + if (rval < value) + { + return 2; + } + return 8; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); |