diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-23 19:51:07 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-23 19:51:07 -0500 |
commit | af86226a5b15ccf1d7d1fea2dc96ff6bba0dc5fc (patch) | |
tree | 976f58c81a1dbe05a893cc23eaea759658655261 | |
parent | 73c16c109cdb996fa59f5aa63e9f030c21cbe54f (diff) |
sub_81025BC and matching sub_8102578
-rw-r--r-- | asm/slot_machine.s | 76 | ||||
-rw-r--r-- | src/field/slot_machine.c | 75 |
2 files changed, 36 insertions, 115 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s index a6201c22e..423735f9f 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,82 +5,6 @@ .text - thumb_func_start sub_81025BC -sub_81025BC: @ 81025BC - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r0, _08102600 @ =gUnknown_083ECD28 - mov r8, r0 - ldr r5, _08102604 @ =gSharedMem - movs r7, 0x80 - lsls r7, 17 -_081025CE: - bl Random - movs r4, 0xFF - ands r4, r0 - lsls r2, r6, 16 - asrs r1, r2, 16 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - ldrb r3, [r5, 0x1] - adds r0, r3 - add r0, r8 - ldrb r3, [r0] - cmp r1, 0 - bne _08102608 - ldrb r0, [r5, 0x3] - cmp r0, 0x1 - bne _08102608 - adds r3, 0xA - asrs r0, r7, 16 - cmp r3, r0 - ble _08102622 - adds r3, r0, 0 - b _08102622 - .align 2, 0 -_08102600: .4byte gUnknown_083ECD28 -_08102604: .4byte gSharedMem -_08102608: - asrs r0, r2, 16 - cmp r0, 0x4 - bne _08102622 - ldrb r0, [r5, 0x3] - cmp r0, 0x1 - bne _08102622 - lsls r0, r3, 16 - ldr r1, _08102648 @ =0xfff60000 - adds r0, r1 - lsrs r3, r0, 16 - cmp r0, 0 - bge _08102622 - movs r3, 0 -_08102622: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, r4 - bgt _08102638 - movs r3, 0x80 - lsls r3, 9 - adds r0, r2, r3 - lsrs r6, r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _081025CE -_08102638: - lsls r0, r6, 24 - lsrs r0, 24 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08102648: .4byte 0xfff60000 - thumb_func_end sub_81025BC - thumb_func_start sub_810264C sub_810264C: @ 810264C push {lr} diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index f6d58e592..08506a59f 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -874,60 +874,57 @@ static bool8 sub_8102540(void) return FALSE; } -extern const u8 gUnknown_083ECD16[][3]; +extern const u8 gUnknown_083ECD16[][6]; -#ifdef NONMATCHING static u8 sub_8102578(void) { s16 i; for (i = 0; i < 3; i++) { - if ((Random() & 0xff) <= gUnknown_083ECD16[i][eSlotMachine->unk01]) + s16 rval = Random() & 0xff; + s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01]; + if (value > rval) { break; } } return i; } -#else -static __attribute__((naked)) u8 sub_8102578(void) + +extern const u8 gUnknown_083ECD28[][6]; + +u8 sub_81025BC(void) { - asm_unified("\tpush {r4-r6,lr}\n" - "\tmovs r5, 0\n" - "\tldr r6, =gUnknown_083ECD16\n" - "_0810257E:\n" - "\tbl Random\n" - "\tmovs r2, 0xFF\n" - "\tldr r3, =gSharedMem\n" - "\tlsls r1, r5, 16\n" - "\tasrs r4, r1, 16\n" - "\tlsls r1, r4, 1\n" - "\tadds r1, r4\n" - "\tlsls r1, 1\n" - "\tldrb r3, [r3, 0x1]\n" - "\tadds r1, r3\n" - "\tadds r1, r6\n" - "\tldrb r1, [r1]\n" - "\tands r2, r0\n" - "\tcmp r1, r2\n" - "\tbgt _081025AA\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0810257E\n" - "_081025AA:\n" - "\tlsls r0, r5, 24\n" - "\tlsrs r0, 24\n" - "\tpop {r4-r6}\n" - "\tpop {r1}\n" - "\tbx r1\n" - "\t.align 2, 0\n" - "\t.pool"); + s16 i; + + for (i = 0; i < 5; i++) + { + s16 rval = Random() & 0xff; + s16 r3 = gUnknown_083ECD28[i][eSlotMachine->unk01]; + if (i == 0 && eSlotMachine->unk03 == 1) + { + r3 += 10; + if (r3 > 0x100) + { + r3 = 0x100; + } + } + else if (i == 4 && eSlotMachine->unk03 == 1) + { + r3 -= 10; + if (r3 < 0) + { + r3 = 0; + } + } + if (r3 > rval) + { + break; + } + } + return i; } -#endif asm(".section .text_a"); |