slot_machine through sub_81404B8

This commit is contained in:
PikalaxALT
2019-05-21 15:39:20 -04:00
parent ce6f476408
commit d7832f2182
2 changed files with 91 additions and 218 deletions
-215
View File
@@ -5,221 +5,6 @@
.text
thumb_func_start sub_81403BC
sub_81403BC: @ 81403BC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
lsls r0, 16
lsrs r0, 16
mov r8, r0
ldr r0, _08140470 @ =sSlotMachineState
ldr r0, [r0]
ldrh r1, [r0, 0x32]
lsls r7, r1, 16
asrs r1, r7, 15
adds r0, 0x20
adds r0, r1
ldrh r0, [r0]
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
asrs r0, 16
cmp r0, 0x14
ble _081403EC
movs r4, 0
_081403EC:
mov r0, r8
bl sub_81401B4
lsls r1, r0, 16
movs r2, 0x80
lsls r2, 9
adds r0, r1, r2
lsrs r2, r0, 16
asrs r0, 16
cmp r0, 0x14
ble _08140404
movs r2, 0
_08140404:
movs r6, 0
movs r5, 0
mov r10, r7
lsls r4, 16
mov r9, r4
str r1, [sp, 0x10]
mov r0, r8
lsls r0, 1
str r0, [sp, 0xC]
_08140416:
lsls r0, r2, 16
asrs r4, r0, 16
ldr r7, _08140470 @ =sSlotMachineState
ldr r0, [r7]
ldrh r0, [r0, 0x8]
str r0, [sp]
mov r1, r10
asrs r0, r1, 16
mov r2, r9
asrs r1, r2, 16
mov r2, r8
adds r3, r4, 0
bl sub_814054C
cmp r0, 0
beq _08140440
mov r0, sp
adds r0, r6
adds r0, 0x4
strb r5, [r0]
adds r6, 0x1
_08140440:
subs r0, r4, 0x1
lsls r0, 16
lsrs r2, r0, 16
cmp r0, 0
bge _0814044C
movs r2, 0x14
_0814044C:
adds r5, 0x1
cmp r5, 0x4
ble _08140416
cmp r6, 0
bne _08140474
ldr r0, [r7]
str r6, [r0, 0x38]
ldrh r0, [r0, 0x8]
subs r0, 0x5
lsls r0, 16
lsrs r0, 16
movs r2, 0
adds r3, r7, 0
cmp r0, 0x1
bhi _08140480
movs r2, 0x4
b _08140480
.align 2, 0
_08140470: .4byte sSlotMachineState
_08140474:
ldr r0, [r7]
movs r1, 0x1
str r1, [r0, 0x38]
add r0, sp, 0x4
ldrb r2, [r0]
adds r3, r7, 0
_08140480:
ldr r0, [sp, 0x10]
asrs r1, r0, 16
lsls r0, r2, 16
asrs r0, 16
subs r1, r0
lsls r1, 16
lsrs r2, r1, 16
asrs r0, r1, 16
cmp r0, 0
bge _0814049A
adds r0, 0x15
lsls r0, 16
lsrs r2, r0, 16
_0814049A:
ldr r0, [r3]
mov r1, r8
strh r1, [r0, 0x34]
adds r0, 0x2C
ldr r1, [sp, 0xC]
adds r0, r1
strh r2, [r0]
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_81403BC
thumb_func_start sub_81404B8
sub_81404B8: @ 81404B8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x8
lsls r0, 16
lsrs r0, 16
mov r8, r0
bl sub_81401B4
lsls r0, 16
asrs r0, 16
mov r9, r0
mov r4, r9
movs r6, 0
movs r5, 0
_081404D8:
ldr r7, _0814051C @ =sSlotMachineState
ldr r0, [r7]
ldrh r2, [r0, 0x8]
mov r0, r8
adds r1, r4, 0
bl sub_81406E8
cmp r0, 0
beq _081404F2
mov r1, sp
adds r0, r1, r6
strb r5, [r0]
adds r6, 0x1
_081404F2:
subs r4, 0x1
cmp r4, 0
bge _081404FA
movs r4, 0x14
_081404FA:
adds r5, 0x1
cmp r5, 0x4
ble _081404D8
cmp r6, 0
bne _08140520
ldr r0, [r7]
ldrh r0, [r0, 0x8]
subs r0, 0x5
lsls r0, 16
lsrs r0, 16
movs r2, 0
adds r1, r7, 0
cmp r0, 0x1
bhi _08140526
movs r2, 0x4
b _08140526
.align 2, 0
_0814051C: .4byte sSlotMachineState
_08140520:
mov r0, sp
ldrb r2, [r0]
adds r1, r7, 0
_08140526:
mov r3, r9
subs r2, r3, r2
cmp r2, 0
bge _08140530
adds r2, 0x15
_08140530:
ldr r0, [r1]
mov r3, r8
lsls r1, r3, 1
adds r0, 0x2C
adds r0, r1
strh r2, [r0]
add sp, 0x8
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_81404B8
thumb_func_start sub_814054C
sub_814054C: @ 814054C
push {r4-r7,lr}
+91 -3
View File
@@ -27,8 +27,9 @@ struct SlotMachineState
s16 field_20[3];
s16 field_26[3];
s16 field_2C[3];
u16 field_32;
u8 filler_34[0x1C];
s16 field_32[3];
u32 field_38;
u8 filler_3C[0x14];
u16 payout;
};
@@ -54,6 +55,8 @@ void sub_81401F0(u16 whichReel);
void sub_81403BC(u16 whichReel);
void sub_81404B8(u16 whichReel);
bool32 sub_81408F4(u32 a0, u32 a1);
bool32 sub_814054C(u32, u32, u32, u32, u32);
bool32 sub_81406E8(u32, u32, u32);
void sub_81409B4(void);
void sub_8140A70(void);
u16 sub_8140A80(void);
@@ -610,6 +613,91 @@ void sub_81401F0(u16 whichReel)
r2 = sp0C - r2;
if (r2 < 0)
r2 += 21;
sSlotMachineState->field_32 = whichReel;
sSlotMachineState->field_32[0] = whichReel;
sSlotMachineState->field_2C[whichReel] = r2;
}
void sub_81403BC(u16 whichReel)
{
s16 r2, r4, r7, sp10;
s32 i;
u32 r6;
u8 sp4[5];
r7 = sSlotMachineState->field_32[0];
r4 = sSlotMachineState->field_20[r7] + 1;
if (r4 >= 21)
r4 = 0;
sp10 = sub_81401B4(whichReel);
r2 = sp10 + 1;
if (r2 >= 21)
r2 = 0;
r6 = 0;
for (i = 0; i < 5; i++)
{
if (sub_814054C(r7, r4, whichReel, r2, sSlotMachineState->field_08))
{
sp4[r6] = i;
r6++;
}
r2--;
if (r2 < 0)
r2 = 20;
}
if (r6 == 0)
{
sSlotMachineState->field_38 = 0;
if (sSlotMachineState->field_08 == 5 || sSlotMachineState->field_08 == 6)
r2 = 4;
else
r2 = 0;
}
else
{
sSlotMachineState->field_38 = 1;
r2 = sp4[0];
}
r2 = sp10 - r2;
if (r2 < 0)
r2 += 21;
sSlotMachineState->field_32[1] = whichReel;
sSlotMachineState->field_2C[whichReel] = r2;
}
void sub_81404B8(u16 whichReel)
{
s32 i;
u32 r6;
s32 r9;
s32 r4;
s32 r2;
u8 sp0[5];
r9 = sub_81401B4(whichReel);
r4 = r9;
r6 = 0;
for (i = 0; i < 5; i++)
{
if (sub_81406E8(whichReel, r4, sSlotMachineState->field_08))
{
sp0[r6] = i;
r6++;
}
r4--;
if (r4 < 0)
r4 = 20;
}
if (r6 == 0)
{
if (sSlotMachineState->field_08 == 5 || sSlotMachineState->field_08 == 6)
r2 = 4;
else
r2 = 0;
}
else
r2 = sp0[0];
r2 = r9 - r2;
if (r2 < 0)
r2 += 21;
sSlotMachineState->field_2C[whichReel] = r2;
}