diff options
-rw-r--r-- | asm/slot_machine.s | 175 | ||||
-rw-r--r-- | src/field/slot_machine.c | 67 |
2 files changed, 67 insertions, 175 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s index c3e802291..ba64c3c70 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,181 +5,6 @@ .text - thumb_func_start sub_810333C -sub_810333C: @ 810333C - push {r4-r7,lr} - bl sub_81032E8 - lsls r0, 24 - cmp r0, 0 - beq _0810339A - ldr r1, _0810338C @ =gSharedMem - movs r2, 0x34 - ldrsh r0, [r1, r2] - cmp r0, 0x2 - beq _08103396 - movs r2, 0x30 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - ble _08103396 - cmp r0, 0x4 - beq _08103396 - movs r5, 0 - movs r7, 0x2 - adds r6, r1, 0 -_08103364: - lsls r0, r5, 16 - asrs r4, r0, 16 - subs r1, r7, r4 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - bl sub_8102BF8 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r6, 0x7] - cmp r0, r1 - beq _08103390 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _08103364 - b _08103396 - .align 2, 0 -_0810338C: .4byte gSharedMem -_08103390: - movs r0, 0x2 - strh r0, [r6, 0x36] - strh r5, [r6, 0x30] -_08103396: - movs r0, 0x1 - b _081033D2 -_0810339A: - ldr r1, _081033D8 @ =gSharedMem - movs r2, 0x34 - ldrsh r0, [r1, r2] - cmp r0, 0x2 - beq _081033D0 - movs r5, 0 - movs r7, 0x2 - adds r6, r1, 0 -_081033AA: - lsls r0, r5, 16 - asrs r4, r0, 16 - subs r1, r7, r4 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - bl sub_8102BF8 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r6, 0x7] - cmp r0, r1 - beq _08103390 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _081033AA -_081033D0: - movs r0, 0 -_081033D2: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081033D8: .4byte gSharedMem - thumb_func_end sub_810333C - - thumb_func_start sub_81033DC -sub_81033DC: @ 81033DC - push {r4,lr} - ldr r0, _08103414 @ =gSharedMem - ldrb r3, [r0, 0x7] - adds r4, r3, 0 - ldrb r2, [r0, 0x4] - movs r1, 0x40 - ands r1, r2 - cmp r1, 0 - beq _081033F6 - movs r3, 0 - cmp r4, 0 - bne _081033F6 - movs r3, 0x1 -_081033F6: - ldr r1, _08103418 @ =gUnknown_083ECB7C - movs r2, 0x12 - ldrsh r0, [r0, r2] - subs r0, 0x1 - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r3, 0 - bl _call_via_r1 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08103414: .4byte gSharedMem -_08103418: .4byte gUnknown_083ECB7C - thumb_func_end sub_81033DC - - thumb_func_start sub_810341C -sub_810341C: @ 810341C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _0810345C @ =gSharedMem - movs r5, 0 - ldrh r1, [r0, 0x36] - mov r8, r1 - movs r1, 0x36 - ldrsh r7, [r0, r1] - adds r6, r0, 0 -_08103438: - lsls r0, r5, 16 - asrs r4, r0, 16 - subs r1, r7, r4 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x2 - bl sub_8102BF8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, r9 - bne _08103460 - mov r0, r8 - strh r0, [r6, 0x38] - strh r5, [r6, 0x32] - movs r0, 0x1 - b _0810346E - .align 2, 0 -_0810345C: .4byte gSharedMem -_08103460: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _08103438 - movs r0, 0 -_0810346E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_810341C - thumb_func_start sub_810347C sub_810347C: @ 810347C push {r4-r7,lr} diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 469753726..df6a6bd0b 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1529,6 +1529,73 @@ bool8 sub_81032E8(void) return FALSE; } +bool8 sub_810333C(void) +{ + s16 i; + if (sub_81032E8()) + { + if (eSlotMachine->unk34[0] != 2 && eSlotMachine->unk2E[1] > 1 && eSlotMachine->unk2E[1] != 4) + { + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(1, 2 - i) == eSlotMachine->unk07) + { + eSlotMachine->unk34[1] = 2; + eSlotMachine->unk2E[1] = i; + break; + } + } + } + return TRUE; + } + if (eSlotMachine->unk34[0] != 2) + { + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(1, 2 - i) == eSlotMachine->unk07) + { + eSlotMachine->unk34[1] = 2; + eSlotMachine->unk2E[1] = i; + return TRUE; + } + } + } + return FALSE; +} + +extern bool8 (*const gUnknown_083ECB7C[])(u8 a0); + +bool8 sub_81033DC(void) +{ + u8 r3 = eSlotMachine->unk07; + if (eSlotMachine->unk04 & 0x40) + { + r3 = 0; + if (eSlotMachine->unk07 == 0) + { + r3 = 1; + } + } + return gUnknown_083ECB7C[eSlotMachine->bet - 1](r3); +} + +bool8 sub_810341C(u8 a0) +{ + s16 i; + s16 unk34_1 = eSlotMachine->unk34[1]; + + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(2, unk34_1 - i) == a0) + { + eSlotMachine->unk34[2] = unk34_1; + eSlotMachine->unk2E[2] = i; + return TRUE; + } + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); |