diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-29 18:04:53 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-29 18:04:53 -0500 |
commit | b7f9313a2183203a92d1eac744c52b13119202b7 (patch) | |
tree | 24ec8c1c9d54ada3a56552c400e11e0b489f201a | |
parent | 31660ed578795464ed46f663bfaacd1ecb2006a6 (diff) |
sub_8103A78
-rw-r--r-- | asm/slot_machine.s | 204 | ||||
-rw-r--r-- | src/field/slot_machine.c | 49 |
2 files changed, 49 insertions, 204 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 3d3f9a813..3fdbadee9 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,210 +5,6 @@ .text - thumb_func_start sub_8103A78 -sub_8103A78: @ 8103A78 - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl sub_8103910 - ldr r4, _08103B10 @ =gSharedMem - movs r0, 0x36 - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _08103B20 - ldrh r2, [r4, 0x34] - movs r3, 0x34 - ldrsh r0, [r4, r3] - cmp r0, r1 - beq _08103B20 - ldrb r1, [r4, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08103B20 - ldrh r1, [r4, 0x2E] - subs r1, r2, r1 - lsls r1, 16 - asrs r1, 16 - movs r0, 0 - bl sub_8102BF8 - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r1, [r4, 0x36] - ldrh r0, [r4, 0x30] - subs r1, r0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - bl sub_8102BF8 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_8103764 - lsls r0, 24 - cmp r0, 0 - beq _08103B20 - movs r1, 0x1 - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0x1 - bne _08103AE0 - movs r1, 0x3 -_08103AE0: - movs r3, 0 - lsls r1, 16 - mov r8, r1 - adds r7, r4, 0 -_08103AE8: - ldrh r2, [r7, 0x32] - lsls r0, r3, 16 - asrs r5, r0, 16 - adds r2, r5, r2 - mov r3, r8 - asrs r1, r3, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x2 - bl sub_8102BF8 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r6, r4 - bne _08103B14 - ldrh r0, [r7, 0x32] - adds r0, r5, r0 - strh r0, [r7, 0x32] - b _08103B20 - .align 2, 0 -_08103B10: .4byte gSharedMem -_08103B14: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _08103AE8 -_08103B20: - ldr r7, _08103B90 @ =gSharedMem -_08103B22: - ldrh r0, [r7, 0x2E] - movs r1, 0x1 - subs r1, r0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0 - bl sub_8102BF8 - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r7, 0x30] - movs r1, 0x2 - subs r1, r0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - bl sub_8102BF8 - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r7, 0x32] - movs r1, 0x3 - subs r1, r0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x2 - bl sub_8102BF8 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_81037BC - lsls r0, 24 - cmp r0, 0 - bne _08103B94 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_810378C - lsls r0, 24 - cmp r0, 0 - beq _08103B88 - ldrb r1, [r7, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08103B94 -_08103B88: - ldrh r0, [r7, 0x32] - adds r0, 0x1 - strh r0, [r7, 0x32] - b _08103B22 - .align 2, 0 -_08103B90: .4byte gSharedMem -_08103B94: - ldr r7, _08103C04 @ =gSharedMem -_08103B96: - ldrh r0, [r7, 0x2E] - movs r1, 0x3 - subs r1, r0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0 - bl sub_8102BF8 - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r7, 0x30] - movs r1, 0x2 - subs r1, r0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - bl sub_8102BF8 - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r7, 0x32] - movs r1, 0x1 - subs r1, r0 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x2 - bl sub_8102BF8 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_81037BC - lsls r0, 24 - cmp r0, 0 - bne _08103C08 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_810378C - lsls r0, 24 - cmp r0, 0 - beq _08103BFC - ldrb r1, [r7, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08103C08 -_08103BFC: - ldrh r0, [r7, 0x32] - adds r0, 0x1 - strh r0, [r7, 0x32] - b _08103B96 - .align 2, 0 -_08103C04: .4byte gSharedMem -_08103C08: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8103A78 - thumb_func_start sub_8103C14 sub_8103C14: @ 8103C14 push {r4,r5,lr} diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index bea32d9fb..04cd699d3 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -2023,6 +2023,55 @@ void sub_8103910(void) eSlotMachine->unk2E[2] = sp0; } +void sub_8103A78(void) +{ + u8 r6; + u8 r5; + u8 r4; + s16 r8; + s16 i; + + sub_8103910(); + if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] != eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80) + { + r6 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + r5 = sub_8102BF8(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]); + if (sub_8103764(r6, r5)) + { + r8 = 1; + if (eSlotMachine->unk34[0] == 1) + r8 = 3; + for (i = 0; i < 5; i++) + { + r4 = sub_8102BF8(2, r8 - (eSlotMachine->unk2E[2] + i)); + if (r6 == r4) + { + eSlotMachine->unk2E[2] += i; + break; + } + } + } + } + while (1) + { + r6 = sub_8102BF8(0, 1 - eSlotMachine->unk2E[0]); + r5 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); + r4 = sub_8102BF8(2, 3 - eSlotMachine->unk2E[2]); + if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80)) + break; + eSlotMachine->unk2E[2]++; + } + while (1) + { + r6 = sub_8102BF8(0, 3 - eSlotMachine->unk2E[0]); + r5 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); + r4 = sub_8102BF8(2, 1 - eSlotMachine->unk2E[2]); + if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80)) + break; + eSlotMachine->unk2E[2]++; + } +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); |