Merge branch 'slot_machine' of github.com:pret/pokefirered into slot_machine

This commit is contained in:
PikalaxALT
2019-05-22 21:50:31 -04:00
5 changed files with 695 additions and 1036 deletions
-912
View File
@@ -5,918 +5,6 @@
.text .text
thumb_func_start sub_81406E8
sub_81406E8: @ 81406E8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
adds r7, r0, 0
adds r5, r1, 0
mov r8, r2
ldr r0, _081407C8 @ =sSlotMachineState
ldr r2, [r0]
movs r1, 0x32
ldrsh r0, [r2, r1]
lsls r0, 1
adds r1, r2, 0
adds r1, 0x20
adds r0, r1, r0
movs r3, 0
ldrsh r0, [r0, r3]
adds r6, r0, 0x1
movs r3, 0x34
ldrsh r0, [r2, r3]
lsls r0, 1
adds r1, r0
movs r3, 0
ldrsh r0, [r1, r3]
adds r3, r0, 0x1
adds r5, 0x1
cmp r6, 0x14
ble _08140726
movs r6, 0
_08140726:
cmp r3, 0x14
ble _0814072C
movs r3, 0
_0814072C:
cmp r5, 0x14
ble _08140732
movs r5, 0
_08140732:
movs r4, 0
lsls r1, r7, 1
lsls r0, r7, 2
mov r9, r2
ldr r2, _081407CC @ =gUnknown_8464926
mov r10, r2
adds r1, r7
add r1, sp
mov r12, r1
adds r0, r7
lsls r0, 2
adds r0, r7
str r0, [sp, 0xC]
_0814074C:
mov r7, r9
movs r0, 0x32
ldrsh r1, [r7, r0]
lsls r0, r1, 1
adds r0, r1
adds r0, r4
mov r7, sp
adds r2, r7, r0
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r1
adds r0, r6, r0
add r0, r10
ldrb r0, [r0]
strb r0, [r2]
mov r0, r9
movs r2, 0x34
ldrsh r1, [r0, r2]
lsls r0, r1, 1
adds r0, r1
adds r0, r4
adds r2, r7, r0
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r1
adds r0, r3, r0
add r0, r10
ldrb r0, [r0]
strb r0, [r2]
ldr r7, [sp, 0xC]
adds r0, r5, r7
add r0, r10
ldrb r0, [r0]
mov r1, r12
strb r0, [r1]
adds r6, 0x1
cmp r6, 0x14
ble _0814079E
movs r6, 0
_0814079E:
adds r3, 0x1
cmp r3, 0x14
ble _081407A6
movs r3, 0
_081407A6:
adds r5, 0x1
cmp r5, 0x14
ble _081407AE
movs r5, 0
_081407AE:
movs r2, 0x1
add r12, r2
adds r4, 0x1
cmp r4, 0x2
ble _0814074C
mov r3, r8
cmp r3, 0x1
beq _08140828
cmp r3, 0x1
bgt _081407D0
cmp r3, 0
beq _081407D8
b _081408A0
.align 2, 0
_081407C8: .4byte sSlotMachineState
_081407CC: .4byte gUnknown_8464926
_081407D0:
mov r6, r8
cmp r6, 0x2
beq _08140870
b _081408A0
_081407D8:
movs r4, 0
_081407DA:
mov r7, sp
adds r0, r7, r4
ldrb r1, [r0]
movs r0, 0x1
bl sub_81408F4
cmp r0, 0
bne _081408DC
adds r4, 0x1
cmp r4, 0x2
ble _081407DA
movs r4, 0
ldr r2, _08140824 @ =gUnknown_84648AE
movs r3, 0
adds r5, r2, 0x2
_081407F8:
ldrb r0, [r2]
mov r6, sp
adds r1, r6, r0
ldrb r0, [r2, 0x1]
add r0, sp
ldrb r1, [r1]
ldrb r0, [r0]
cmp r1, r0
bne _08140816
adds r0, r3, r5
ldrb r0, [r0]
add r0, sp
ldrb r0, [r0]
cmp r1, r0
beq _081408DC
_08140816:
adds r2, 0x3
adds r3, 0x3
adds r4, 0x1
cmp r4, 0x4
ble _081407F8
_08140820:
movs r0, 0x1
b _081408DE
.align 2, 0
_08140824: .4byte gUnknown_84648AE
_08140828:
movs r4, 0
ldr r5, _0814086C @ =gUnknown_84648AE
_0814082C:
ldrb r0, [r5]
mov r7, sp
adds r2, r7, r0
ldrb r0, [r5, 0x1]
adds r1, r7, r0
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
bne _0814084A
adds r1, r0, 0
mov r0, r8
bl sub_81408F4
cmp r0, 0
bne _081408DC
_0814084A:
adds r5, 0x3
adds r4, 0x1
cmp r4, 0x4
ble _0814082C
movs r4, 0
_08140854:
mov r1, sp
adds r0, r1, r4
ldrb r1, [r0]
mov r0, r8
bl sub_81408F4
cmp r0, 0
bne _08140820
adds r4, 0x1
cmp r4, 0x2
ble _08140854
b _081408DC
.align 2, 0
_0814086C: .4byte gUnknown_84648AE
_08140870:
movs r4, 0
ldr r5, _0814089C @ =gUnknown_84648AE
_08140874:
ldrb r0, [r5]
mov r3, sp
adds r2, r3, r0
ldrb r0, [r5, 0x1]
adds r1, r3, r0
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
bne _08140892
adds r1, r0, 0
mov r0, r8
bl sub_81408F4
cmp r0, 0
bne _08140820
_08140892:
adds r5, 0x3
adds r4, 0x1
cmp r4, 0x4
ble _08140874
b _081408DC
.align 2, 0
_0814089C: .4byte gUnknown_84648AE
_081408A0:
movs r4, 0
ldr r5, _081408F0 @ =gUnknown_84648AE
adds r7, r5, 0
movs r6, 0
_081408A8:
ldrb r0, [r5]
mov r1, sp
adds r2, r1, r0
adds r0, r7, 0x1
adds r0, r6, r0
ldrb r0, [r0]
add r0, sp
ldrb r1, [r2]
ldrb r0, [r0]
cmp r1, r0
bne _081408D2
ldrb r0, [r5, 0x2]
add r0, sp
ldrb r0, [r0]
cmp r1, r0
bne _081408D2
mov r0, r8
bl sub_81408F4
cmp r0, 0
bne _08140820
_081408D2:
adds r5, 0x3
adds r6, 0x3
adds r4, 0x1
cmp r4, 0x4
ble _081408A8
_081408DC:
movs r0, 0
_081408DE:
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_081408F0: .4byte gUnknown_84648AE
thumb_func_end sub_81406E8
thumb_func_start sub_81408F4
sub_81408F4: @ 81408F4
push {lr}
adds r2, r1, 0
cmp r0, 0x6
bhi _08140966
lsls r0, 2
ldr r1, _08140908 @ =_0814090C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08140908: .4byte _0814090C
.align 2, 0
_0814090C:
.4byte _08140928
.4byte _08140934
.4byte _08140934
.4byte _0814093E
.4byte _08140944
.4byte _08140952
.4byte _0814095C
_08140928:
movs r1, 0x4
eors r1, r2
negs r0, r1
orrs r0, r1
lsrs r0, 31
b _08140968
_08140934:
movs r0, 0
cmp r2, 0x4
bne _08140968
movs r0, 0x1
b _08140968
_0814093E:
movs r1, 0
subs r0, r2, 0x5
b _08140948
_08140944:
movs r1, 0
subs r0, r2, 0x2
_08140948:
cmp r0, 0x1
bhi _0814094E
movs r1, 0x1
_0814094E:
adds r0, r1, 0
b _08140968
_08140952:
movs r0, 0
cmp r2, 0x1
bne _08140968
movs r0, 0x1
b _08140968
_0814095C:
movs r0, 0
cmp r2, 0
bne _08140968
movs r0, 0x1
b _08140968
_08140966:
movs r0, 0
_08140968:
pop {r1}
bx r1
thumb_func_end sub_81408F4
thumb_func_start sub_814096C
sub_814096C: @ 814096C
push {lr}
cmp r0, 0x6
bhi _0814099C
lsls r0, 2
ldr r1, _0814097C @ =_08140980
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0814097C: .4byte _08140980
.align 2, 0
_08140980:
.4byte _081409AC
.4byte _081409A8
.4byte _081409A4
.4byte _081409A4
.4byte _0814099C
.4byte _081409A0
.4byte _081409A0
_0814099C:
movs r0, 0x1
b _081409AE
_081409A0:
movs r0, 0x3
b _081409AE
_081409A4:
movs r0, 0x4
b _081409AE
_081409A8:
movs r0, 0x5
b _081409AE
_081409AC:
movs r0, 0x6
_081409AE:
pop {r1}
bx r1
thumb_func_end sub_814096C
thumb_func_start sub_81409B4
sub_81409B4: @ 81409B4
push {r4-r6,lr}
bl Random
lsls r0, 16
lsrs r2, r0, 18
ldr r0, _08140A60 @ =sSlotMachineState
ldr r0, [r0]
ldrh r1, [r0, 0x4]
lsls r0, r1, 3
subs r0, r1
lsls r0, 1
ldr r1, _08140A64 @ =gUnknown_84648D2
adds r4, r0, r1
movs r5, 0
ldrh r0, [r4]
cmp r2, r0
bcc _081409E6
adds r0, r4, 0
_081409D8:
adds r0, 0x2
adds r5, 0x1
cmp r5, 0x5
bgt _081409E6
ldrh r1, [r0]
cmp r2, r1
bcs _081409D8
_081409E6:
ldr r6, _08140A60 @ =sSlotMachineState
ldr r1, [r6]
ldrh r0, [r1, 0x8]
cmp r0, 0x4
bhi _08140A5A
ldrh r0, [r1, 0xC]
cmp r0, 0
bne _08140A22
bl Random
ldr r1, _08140A68 @ =0x00003fff
ands r1, r0
ldrh r4, [r4, 0xC]
cmp r1, r4
bcs _08140A18
ldr r4, [r6]
bl Random
movs r1, 0x1
ands r1, r0
movs r0, 0x3C
cmp r1, 0
beq _08140A16
movs r0, 0x5
_08140A16:
strh r0, [r4, 0xC]
_08140A18:
ldr r0, _08140A60 @ =sSlotMachineState
ldr r1, [r0]
ldrh r1, [r1, 0xC]
cmp r1, 0
beq _08140A56
_08140A22:
cmp r5, 0
bne _08140A4A
bl Random
ldr r1, _08140A68 @ =0x00003fff
ands r1, r0
ldr r0, _08140A6C @ =0x00002ccb
cmp r1, r0
bhi _08140A4A
ldr r0, _08140A60 @ =sSlotMachineState
ldr r4, [r0]
bl Random
movs r1, 0x1
ands r1, r0
movs r0, 0x3C
cmp r1, 0
beq _08140A48
movs r0, 0x5
_08140A48:
strh r0, [r4, 0xC]
_08140A4A:
ldr r2, _08140A60 @ =sSlotMachineState
ldr r1, [r2]
ldrh r0, [r1, 0xC]
subs r0, 0x1
strh r0, [r1, 0xC]
adds r0, r2, 0
_08140A56:
ldr r0, [r0]
strh r5, [r0, 0x8]
_08140A5A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08140A60: .4byte sSlotMachineState
_08140A64: .4byte gUnknown_84648D2
_08140A68: .4byte 0x00003fff
_08140A6C: .4byte 0x00002ccb
thumb_func_end sub_81409B4
thumb_func_start sub_8140A70
sub_8140A70: @ 8140A70
ldr r0, _08140A7C @ =sSlotMachineState
ldr r1, [r0]
movs r0, 0
strh r0, [r1, 0x8]
bx lr
.align 2, 0
_08140A7C: .4byte sSlotMachineState
thumb_func_end sub_8140A70
thumb_func_start sub_8140A80
sub_8140A80: @ 8140A80
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xC
mov r0, sp
movs r1, 0
movs r2, 0x9
bl memset
movs r5, 0
ldr r2, _08140B58 @ =sSlotMachineState
movs r3, 0
adds r4, r2, 0
_08140A9C:
ldr r0, [r2]
lsls r1, r5, 2
adds r0, 0x3C
adds r0, r1
str r3, [r0]
adds r5, 0x1
cmp r5, 0x4
ble _08140A9C
movs r0, 0
mov r9, r0
ldr r0, [r4]
movs r1, 0x20
ldrsh r4, [r0, r1]
movs r7, 0x22
ldrsh r3, [r0, r7]
movs r1, 0x24
ldrsh r2, [r0, r1]
ldr r6, _08140B5C @ =gUnknown_8464926
movs r7, 0x2A
adds r7, r6
mov r8, r7
mov r1, sp
movs r0, 0x15
adds r0, r6
mov r12, r0
movs r5, 0x2
_08140AD0:
adds r4, 0x1
cmp r4, 0x14
ble _08140AD8
movs r4, 0
_08140AD8:
adds r3, 0x1
cmp r3, 0x14
ble _08140AE0
movs r3, 0
_08140AE0:
adds r2, 0x1
cmp r2, 0x14
ble _08140AE8
movs r2, 0
_08140AE8:
adds r0, r4, r6
ldrb r0, [r0]
strb r0, [r1]
mov r7, r12
adds r0, r3, r7
ldrb r0, [r0]
strb r0, [r1, 0x3]
mov r7, r8
adds r0, r2, r7
ldrb r0, [r0]
strb r0, [r1, 0x6]
adds r1, 0x1
subs r5, 0x1
cmp r5, 0
bge _08140AD0
ldr r0, _08140B58 @ =sSlotMachineState
ldr r0, [r0]
adds r0, 0x50
movs r1, 0
strh r1, [r0]
ldr r7, _08140B60 @ =gUnknown_84648BD
mov r8, r7
movs r6, 0
movs r5, 0x4
_08140B18:
ldr r0, _08140B58 @ =sSlotMachineState
ldr r1, [r0]
mov r0, r8
adds r0, 0x3
adds r0, r6, r0
ldrh r1, [r1, 0xE]
ldrb r0, [r0]
cmp r1, r0
bcc _08140BB6
ldrb r0, [r7]
mov r1, sp
adds r4, r1, r0
ldrb r1, [r4]
movs r0, 0x1
bl sub_81408F4
cmp r0, 0
beq _08140B64
mov r0, r8
adds r0, 0x1
adds r0, r6, r0
ldrb r0, [r0]
add r0, sp
ldrb r1, [r0]
movs r0, 0x2
bl sub_81408F4
movs r3, 0x1
cmp r0, 0
beq _08140B8E
movs r3, 0x2
b _08140B92
.align 2, 0
_08140B58: .4byte sSlotMachineState
_08140B5C: .4byte gUnknown_8464926
_08140B60: .4byte gUnknown_84648BD
_08140B64:
mov r0, r8
adds r0, 0x1
adds r0, r6, r0
ldrb r0, [r0]
add r0, sp
ldrb r1, [r4]
ldrb r0, [r0]
cmp r1, r0
bne _08140B8C
ldrb r0, [r7, 0x2]
add r0, sp
ldrb r0, [r0]
cmp r1, r0
bne _08140B8C
adds r0, r1, 0
bl sub_814096C
lsls r0, 24
lsrs r3, r0, 24
b _08140B8E
_08140B8C:
movs r3, 0
_08140B8E:
cmp r3, 0
beq _08140BB0
_08140B92:
ldr r0, _08140BD4 @ =sSlotMachineState
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x3C
adds r0, r6
movs r1, 0x1
str r1, [r0]
adds r2, 0x50
ldr r1, _08140BD8 @ =gUnknown_8464966
lsls r0, r3, 1
adds r0, r1
ldrh r0, [r0]
ldrh r1, [r2]
adds r0, r1
strh r0, [r2]
_08140BB0:
cmp r3, r9
ble _08140BB6
mov r9, r3
_08140BB6:
adds r7, 0x4
adds r6, 0x4
subs r5, 0x1
cmp r5, 0
bge _08140B18
mov r7, r9
lsls r0, r7, 16
lsrs r0, 16
add sp, 0xC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08140BD4: .4byte sSlotMachineState
_08140BD8: .4byte gUnknown_8464966
thumb_func_end sub_8140A80
thumb_func_start sub_8140BDC
sub_8140BDC: @ 8140BDC
ldr r0, _08140BE8 @ =sSlotMachineState
ldr r0, [r0]
adds r0, 0x50
ldrh r0, [r0]
bx lr
.align 2, 0
_08140BE8: .4byte sSlotMachineState
thumb_func_end sub_8140BDC
thumb_func_start sub_8140BEC
sub_8140BEC: @ 8140BEC
ldr r0, _08140BF4 @ =sSlotMachineState
ldr r0, [r0]
ldrb r0, [r0, 0xE]
bx lr
.align 2, 0
_08140BF4: .4byte sSlotMachineState
thumb_func_end sub_8140BEC
thumb_func_start sub_8140BF8
sub_8140BF8: @ 8140BF8
ldr r1, _08140C08 @ =sSlotMachineState
ldr r1, [r1]
lsls r0, 2
adds r1, 0x3C
adds r1, r0
ldr r0, [r1]
bx lr
.align 2, 0
_08140C08: .4byte sSlotMachineState
thumb_func_end sub_8140BF8
thumb_func_start sub_8140C0C
sub_8140C0C: @ 8140C0C
push {r4,r5,lr}
movs r5, 0
ldr r4, _08140C3C @ =gUnknown_84655B0
_08140C12:
adds r0, r4, 0
bl LoadCompressedObjectPic
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x2
bls _08140C12
ldr r0, _08140C40 @ =gUnknown_84655C8
bl LoadSpritePalettes
ldr r4, _08140C44 @ =gUnknown_203F3A4
movs r0, 0x74
bl Alloc
str r0, [r4]
cmp r0, 0
beq _08140C48
bl sub_8140C6C
movs r0, 0x1
b _08140C4A
.align 2, 0
_08140C3C: .4byte gUnknown_84655B0
_08140C40: .4byte gUnknown_84655C8
_08140C44: .4byte gUnknown_203F3A4
_08140C48:
movs r0, 0
_08140C4A:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8140C0C
thumb_func_start sub_8140C50
sub_8140C50: @ 8140C50
push {r4,lr}
ldr r4, _08140C68 @ =gUnknown_203F3A4
ldr r0, [r4]
cmp r0, 0
beq _08140C62
bl Free
movs r0, 0
str r0, [r4]
_08140C62:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08140C68: .4byte gUnknown_203F3A4
thumb_func_end sub_8140C50
thumb_func_start sub_8140C6C
sub_8140C6C: @ 8140C6C
push {r4-r6,lr}
adds r4, r0, 0
movs r2, 0
movs r5, 0
adds r6, r4, 0
adds r6, 0xC
_08140C78:
lsls r0, r2, 2
adds r1, r4, r0
str r5, [r1]
adds r3, r2, 0x1
adds r0, r2
lsls r0, 2
movs r1, 0x4
adds r0, r6
adds r0, 0x10
_08140C8A:
str r5, [r0]
subs r0, 0x4
subs r1, 0x1
cmp r1, 0
bge _08140C8A
adds r2, r3, 0
cmp r2, 0x2
ble _08140C78
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8140C6C
thumb_func_start sub_8140CA0
sub_8140CA0: @ 8140CA0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
movs r7, 0
_08140CAE:
movs r6, 0
lsls r0, r7, 2
adds r1, r7, 0x1
str r1, [sp]
adds r0, r7
mov r10, r0
mov r2, r10
lsls r2, 2
mov r8, r2
movs r3, 0xB0
lsls r3, 14
mov r9, r3
_08140CC6:
mov r0, r10
lsls r1, r0, 19
movs r2, 0xA0
lsls r2, 15
adds r1, r2
mov r3, r9
asrs r2, r3, 16
ldr r0, _08140D64 @ =gUnknown_84657E4
asrs r1, 16
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r2, _08140D68 @ =gUnknown_8464926
mov r3, r8
adds r1, r3, r7
adds r1, r6, r1
adds r1, r2
ldrb r4, [r1]
lsls r5, r0, 4
adds r5, r0
lsls r5, 2
ldr r0, _08140D6C @ =gSprites
adds r5, r0
adds r0, r5, 0
adds r1, r4, 0
bl StartSpriteAnim
ldr r0, _08140D70 @ =gUnknown_8465608
lsls r4, 1
adds r4, r0
ldrh r0, [r4]
bl IndexOfSpritePaletteTag
lsls r0, 4
ldrb r2, [r5, 0x5]
movs r1, 0xF
ands r1, r2
orrs r1, r0
strb r1, [r5, 0x5]
movs r0, 0
strh r7, [r5, 0x2E]
strh r6, [r5, 0x30]
strh r6, [r5, 0x32]
strh r0, [r5, 0x34]
ldrb r0, [r5, 0x3]
movs r2, 0x3F
negs r2, r2
adds r1, r2, 0
ands r0, r1
strb r0, [r5, 0x3]
ldr r0, _08140D74 @ =gUnknown_203F3A4
ldr r2, [r0]
lsls r1, r6, 2
add r1, r8
adds r0, r2, 0
adds r0, 0xC
adds r0, r1
str r5, [r0]
ldr r0, _08140D78 @ =0x07000006
str r0, [r2, 0x70]
movs r3, 0xC0
lsls r3, 13
add r9, r3
adds r6, 0x1
cmp r6, 0x4
ble _08140CC6
ldr r7, [sp]
cmp r7, 0x2
ble _08140CAE
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08140D64: .4byte gUnknown_84657E4
_08140D68: .4byte gUnknown_8464926
_08140D6C: .4byte gSprites
_08140D70: .4byte gUnknown_8465608
_08140D74: .4byte gUnknown_203F3A4
_08140D78: .4byte 0x07000006
thumb_func_end sub_8140CA0
thumb_func_start sub_8140D7C thumb_func_start sub_8140D7C
sub_8140D7C: @ 8140D7C sub_8140D7C: @ 8140D7C
push {r4-r7,lr} push {r4-r7,lr}
-117
View File
@@ -2,123 +2,6 @@
.include "constants/constants.inc" .include "constants/constants.inc"
.section .rodata .section .rodata
.align 2
gUnknown_8464890:: @ 8464890
.byte 0x00, 0x03
.byte 0x00, 0x06
.byte 0x03, 0x06
.byte 0x01, 0x04
.byte 0x01, 0x07
.byte 0x04, 0x07
.byte 0x02, 0x05
.byte 0x02, 0x08
.byte 0x05, 0x08
.byte 0x00, 0x04
.byte 0x00, 0x08
.byte 0x04, 0x08
.byte 0x02, 0x04
.byte 0x02, 0x06
.byte 0x04, 0x06
gUnknown_84648AE:: @ 84648AE
.byte 0x00, 0x03, 0x06
.byte 0x01, 0x04, 0x07
.byte 0x02, 0x05, 0x08
.byte 0x00, 0x04, 0x08
.byte 0x02, 0x04, 0x06
gUnknown_84648BD:: @ 84648BD
.byte 0x00, 0x04, 0x08, 0x03
.byte 0x00, 0x03, 0x06, 0x02
.byte 0x01, 0x04, 0x07, 0x01
.byte 0x02, 0x05, 0x08, 0x02
.byte 0x02, 0x04, 0x06, 0x03
.align 1
gUnknown_84648D2:: @ 84648D2
.2byte 0x1fa1, 0x2eab, 0x3630, 0x39f3, 0x3bd4, 0x3bfc, 0x0049
.2byte 0x1f97, 0x2ea2, 0x3627, 0x39e9, 0x3bca, 0x3bf8, 0x0049
.2byte 0x1f91, 0x2e9b, 0x3620, 0x39e3, 0x3bc4, 0x3bf4, 0x0049
.2byte 0x1f87, 0x2e92, 0x3617, 0x39d9, 0x3bba, 0x3bef, 0x0050
.2byte 0x1f7f, 0x2e89, 0x360e, 0x39d1, 0x3bb2, 0x3bea, 0x0050
.2byte 0x1fc9, 0x2efc, 0x3696, 0x3a63, 0x3c49, 0x3c8b, 0x0073
gUnknown_8464926:: @ 8464926
.byte 0x00, 0x03, 0x04, 0x01, 0x02, 0x06, 0x02, 0x05, 0x00, 0x06, 0x03, 0x01, 0x04, 0x02, 0x06, 0x00, 0x05, 0x02, 0x01, 0x06, 0x02
.byte 0x00, 0x05, 0x04, 0x03, 0x01, 0x05, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x00, 0x05, 0x04, 0x01, 0x03, 0x06, 0x05, 0x03, 0x04
.byte 0x00, 0x03, 0x06, 0x05, 0x02, 0x03, 0x06, 0x05, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x01
.align 1
gUnknown_8464966:: @ 8464966
.2byte 0
.2byte 2
.2byte 6
.2byte 8
.2byte 15
.2byte 100
.2byte 300
gUnknown_8464974::
.incbin "graphics/slot_machine/unk_8464974.gbapal"
gUnknown_8464994::
.incbin "graphics/slot_machine/unk_8464994.gbapal"
gUnknown_84649B4::
.incbin "graphics/slot_machine/unk_84649b4.gbapal"
gUnknown_84649D4::
.incbin "graphics/slot_machine/unk_84649d4.gbapal"
gUnknown_84649F4::
.incbin "graphics/slot_machine/unk_84649f4.gbapal"
gUnknown_8464A14::
.incbin "graphics/slot_machine/unk_8464a14.4bpp.lz"
gUnknown_846504C::
.incbin "graphics/slot_machine/unk_846504c.gbapal"
gUnknown_846506C::
.incbin "graphics/slot_machine/unk_846506c.4bpp.lz"
gUnknown_8465524::
.incbin "graphics/slot_machine/unk_8465524.gbapal"
gUnknown_8465544::
.incbin "graphics/slot_machine/unk_8465544.4bpp.lz"
gUnknown_84655B0:: @ 84655B0
obj_tiles gUnknown_8464A14, 0x0e00, 0
obj_tiles gUnknown_846506C, 0x0c00, 1
obj_tiles gUnknown_8465544, 0x0280, 2
gUnknown_84655C8:: @ 84655C8
obj_pal gUnknown_8464974, 0
obj_pal gUnknown_8464994, 1
obj_pal gUnknown_84649B4, 2
obj_pal gUnknown_84649D4, 3
obj_pal gUnknown_84649F4, 4
obj_pal gUnknown_846504C, 5
obj_pal gUnknown_8465524, 6
null_obj_pal
gUnknown_8465608:: @ 8465608
.2byte 0x0002, 0x0002, 0x0000, 0x0000, 0x0002, 0x0004, 0x0003
gUnknown_8465616:: @ 8465616
.2byte 0x0120, 0x011f, 0x011e, 0x011d, 0x011c, 0x011b, 0x011a, 0x0119, 0x0118, 0x0117, 0x0116, 0x0115, 0x0114, 0x0113, 0x0112, 0x0111
.2byte 0x0110, 0x010f, 0x010e, 0x010d, 0x010c, 0x010b, 0x010a, 0x0109, 0x0108, 0x0107, 0x0106, 0x0105, 0x0104, 0x0103, 0x0102, 0x0101
.2byte 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100
.2byte 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100
.2byte 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010b, 0x010c, 0x010d, 0x010e, 0x010f, 0x0110
.2byte 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, 0x011e, 0x011f, 0x0120
gUnknown_84656D6:: @ 84656D6
.byte 0x10, 0x10, 0x10, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f
.align 2 .align 2
gUnknown_8465738:: gUnknown_8465738::
.4byte 0x80000100, 0x00000c00 .4byte 0x80000100, 0x00000c00
+1
View File
@@ -416,6 +416,7 @@ SECTIONS {
data/berry_pouch.o(.rodata); data/berry_pouch.o(.rodata);
data/itemfinder.o(.rodata); data/itemfinder.o(.rodata);
data/buy_menu_helpers.o(.rodata); data/buy_menu_helpers.o(.rodata);
src/slot_machine.o(.rodata);
data/slot_machine.o(.rodata); data/slot_machine.o(.rodata);
src/roamer.o(.rodata); src/roamer.o(.rodata);
src/mystery_gift_menu.o(.rodata); src/mystery_gift_menu.o(.rodata);
+694 -4
View File
@@ -1,5 +1,6 @@
#include "global.h" #include "global.h"
#include "palette.h" #include "palette.h"
#include "decompress.h"
#include "task.h" #include "task.h"
#include "main.h" #include "main.h"
#include "malloc.h" #include "malloc.h"
@@ -19,7 +20,7 @@ struct SlotMachineState
u16 field_06; u16 field_06;
u16 field_08; u16 field_08;
u16 slotRewardClass; u16 slotRewardClass;
u8 filler_0C[2]; u16 field_0C;
u16 bet; u16 bet;
u8 field_10; u8 field_10;
u8 field_11; u8 field_11;
@@ -29,11 +30,20 @@ struct SlotMachineState
s16 field_2C[3]; s16 field_2C[3];
s16 field_32[3]; s16 field_32[3];
u32 field_38; u32 field_38;
u8 filler_3C[0x14]; u32 field_3C[5];
u16 payout; u16 payout;
}; };
struct SlotMachineGfxManager
{
u32 field_00[3];
struct Sprite * field_0C[3][5];
u8 filler_4C[0x28];
u32 field_70;
};
EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL;
EWRAM_DATA struct SlotMachineGfxManager * gUnknown_203F3A4 = NULL;
void sub_813F84C(struct SlotMachineState * ptr); void sub_813F84C(struct SlotMachineState * ptr);
void sub_813F898(void); void sub_813F898(void);
@@ -60,6 +70,7 @@ bool32 sub_81408F4(s32, s32);
void sub_81409B4(void); void sub_81409B4(void);
void sub_8140A70(void); void sub_8140A70(void);
u16 sub_8140A80(void); u16 sub_8140A80(void);
void sub_8140C6C(struct SlotMachineGfxManager * manager);
void sub_8140D7C(s16 *, s16 *); void sub_8140D7C(s16 *, s16 *);
bool32 sub_814104C(void); bool32 sub_814104C(void);
void sub_8141094(void); void sub_8141094(void);
@@ -67,8 +78,123 @@ void sub_8141148(u16 a0, u8 a1);
bool32 sub_8141180(u8 a0); bool32 sub_8141180(u8 a0);
void sub_8141C30(u8, u8); void sub_8141C30(u8, u8);
extern const u8 gUnknown_8464890[][2]; const u8 gUnknown_8464890[][2] = {
extern const u8 gUnknown_8464926[][21]; {0x00, 0x03},
{0x00, 0x06},
{0x03, 0x06},
{0x01, 0x04},
{0x01, 0x07},
{0x04, 0x07},
{0x02, 0x05},
{0x02, 0x08},
{0x05, 0x08},
{0x00, 0x04},
{0x00, 0x08},
{0x04, 0x08},
{0x02, 0x04},
{0x02, 0x06},
{0x04, 0x06}
};
const u8 gUnknown_84648AE[][3] = {
{0x00, 0x03, 0x06}, // top row
{0x01, 0x04, 0x07}, // middle row
{0x02, 0x05, 0x08}, // bottom row
{0x00, 0x04, 0x08}, // tl-br
{0x02, 0x04, 0x06} // bl-tr
};
const u8 gUnknown_84648BD[][4] = {
{0x00, 0x04, 0x08, 0x03}, // tl-br
{0x00, 0x03, 0x06, 0x02}, // top row
{0x01, 0x04, 0x07, 0x01}, // middle row
{0x02, 0x05, 0x08, 0x02}, // bottom row
{0x02, 0x04, 0x06, 0x03} // bl-tr
};
const u16 gUnknown_84648D2[][7] = {
{0x1fa1, 0x2eab, 0x3630, 0x39f3, 0x3bd4, 0x3bfc, 0x0049},
{0x1f97, 0x2ea2, 0x3627, 0x39e9, 0x3bca, 0x3bf8, 0x0049},
{0x1f91, 0x2e9b, 0x3620, 0x39e3, 0x3bc4, 0x3bf4, 0x0049},
{0x1f87, 0x2e92, 0x3617, 0x39d9, 0x3bba, 0x3bef, 0x0050},
{0x1f7f, 0x2e89, 0x360e, 0x39d1, 0x3bb2, 0x3bea, 0x0050},
{0x1fc9, 0x2efc, 0x3696, 0x3a63, 0x3c49, 0x3c8b, 0x0073},
};
const u8 gUnknown_8464926[][21] = {
{0x00, 0x03, 0x04, 0x01, 0x02, 0x06, 0x02, 0x05, 0x00, 0x06, 0x03, 0x01, 0x04, 0x02, 0x06, 0x00, 0x05, 0x02, 0x01, 0x06, 0x02},
{0x00, 0x05, 0x04, 0x03, 0x01, 0x05, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x00, 0x05, 0x04, 0x01, 0x03, 0x06, 0x05, 0x03, 0x04},
{0x00, 0x03, 0x06, 0x05, 0x02, 0x03, 0x06, 0x05, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x01},
};
const u16 gUnknown_8464966[] = {
0,
2,
6,
8,
15,
100,
300
};
const u16 gUnknown_8464974[] = INCBIN_U16("graphics/slot_machine/unk_8464974.gbapal");
const u16 gUnknown_8464994[] = INCBIN_U16("graphics/slot_machine/unk_8464994.gbapal");
const u16 gUnknown_84649B4[] = INCBIN_U16("graphics/slot_machine/unk_84649b4.gbapal");
const u16 gUnknown_84649D4[] = INCBIN_U16("graphics/slot_machine/unk_84649d4.gbapal");
const u16 gUnknown_84649F4[] = INCBIN_U16("graphics/slot_machine/unk_84649f4.gbapal");
const u32 gUnknown_8464A14[] = INCBIN_U32("graphics/slot_machine/unk_8464a14.4bpp.lz");
const u16 gUnknown_846504C[] = INCBIN_U16("graphics/slot_machine/unk_846504c.gbapal");
const u32 gUnknown_846506C[] = INCBIN_U32("graphics/slot_machine/unk_846506c.4bpp.lz");
const u16 gUnknown_8465524[] = INCBIN_U16("graphics/slot_machine/unk_8465524.gbapal");
const u32 gUnknown_8465544[] = INCBIN_U32("graphics/slot_machine/unk_8465544.4bpp.lz");
const struct CompressedSpriteSheet gUnknown_84655B0[] = {
{(const void *)gUnknown_8464A14, 0xe00, 0},
{(const void *)gUnknown_846506C, 0xc00, 1},
{(const void *)gUnknown_8465544, 0x280, 2},
};
const struct SpritePalette gUnknown_84655C8[] = {
{gUnknown_8464974, 0},
{gUnknown_8464994, 1},
{gUnknown_84649B4, 2},
{gUnknown_84649D4, 3},
{gUnknown_84649F4, 4},
{gUnknown_846504C, 5},
{gUnknown_8465524, 6},
{NULL}
};
const u16 gUnknown_8465608[] = {
2,
2,
0,
0,
2,
4,
3
};
const u16 gUnknown_8465616[] = {
0x0120, 0x011f, 0x011e, 0x011d, 0x011c, 0x011b, 0x011a, 0x0119, 0x0118, 0x0117, 0x0116, 0x0115, 0x0114, 0x0113, 0x0112, 0x0111,
0x0110, 0x010f, 0x010e, 0x010d, 0x010c, 0x010b, 0x010a, 0x0109, 0x0108, 0x0107, 0x0106, 0x0105, 0x0104, 0x0103, 0x0102, 0x0101,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010b, 0x010c, 0x010d, 0x010e, 0x010f, 0x0110,
0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, 0x011e, 0x011f, 0x0120
};
const u8 gUnknown_84656D6[] = {
0x10, 0x10, 0x10, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f
};
extern const struct SpriteTemplate gUnknown_84657E4;
void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback)
{ {
@@ -776,3 +902,567 @@ bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4)
} }
return FALSE; return FALSE;
} }
#ifdef NONMATCHING
bool32 sub_81406E8(s32 a0, s32 a1, s32 a2)
{
u8 sp0[9];
s32 r3, r6;
s32 i;
r6 = sSlotMachineState->field_20[sSlotMachineState->field_32[0]] + 1;
r3 = sSlotMachineState->field_20[sSlotMachineState->field_32[1]] + 1;
a1++;
if (r6 >= 21)
r6 = 0;
if (r3 >= 21)
r3 = 0;
if (a1 >= 21)
a1 = 0;
for (i = 0; i < 3; i++)
{
sp0[sSlotMachineState->field_32[0] * 3 + i] = gUnknown_8464926[sSlotMachineState->field_32[0]][r6];
sp0[sSlotMachineState->field_32[1] * 3 + i] = gUnknown_8464926[sSlotMachineState->field_32[1]][r3];
sp0[a0 * 3 + i] = gUnknown_8464926[a0][a1];
r6++;
if (r6 >= 21)
r6 = 0;
r3++;
if (r3 >= 21)
r3 = 0;
a1++;
if (a1 >= 21)
a1++;
}
switch (a2)
{
case 0:
for (i = 0; i < 3; i++)
{
if (sub_81408F4(1, sp0[i]))
return FALSE;
}
for (i = 0; i < 5; i++)
{
if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][2]])
return FALSE;
}
return TRUE;
case 1:
for (i = 0; i < 5; i++)
{
if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sub_81408F4(a2, sp0[gUnknown_84648AE[i][0]]))
return FALSE;
}
for (i = 0; i < 3; i++)
{
if (sub_81408F4(a2, sp0[i]))
return TRUE;
}
return FALSE;
case 2:
for (i = 0; i < 5; i++)
{
if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sub_81408F4(a2, sp0[gUnknown_84648AE[i][0]]))
return TRUE;
}
return FALSE;
}
for (i = 0; i < 5; i++)
{
if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][2]] && sub_81408F4(a2, sp0[gUnknown_84648AE[i][0]]))
return TRUE;
}
return FALSE;
}
#else
NAKED
bool32 sub_81406E8(s32 a0, s32 a1, s32 a2)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
"\tmov r6, r9\n"
"\tmov r5, r8\n"
"\tpush {r5-r7}\n"
"\tsub sp, 0x10\n"
"\tadds r7, r0, 0\n"
"\tadds r5, r1, 0\n"
"\tmov r8, r2\n"
"\tldr r0, _081407C8 @ =sSlotMachineState\n"
"\tldr r2, [r0]\n"
"\tmovs r1, 0x32\n"
"\tldrsh r0, [r2, r1]\n"
"\tlsls r0, 1\n"
"\tadds r1, r2, 0\n"
"\tadds r1, 0x20\n"
"\tadds r0, r1, r0\n"
"\tmovs r3, 0\n"
"\tldrsh r0, [r0, r3]\n"
"\tadds r6, r0, 0x1\n"
"\tmovs r3, 0x34\n"
"\tldrsh r0, [r2, r3]\n"
"\tlsls r0, 1\n"
"\tadds r1, r0\n"
"\tmovs r3, 0\n"
"\tldrsh r0, [r1, r3]\n"
"\tadds r3, r0, 0x1\n"
"\tadds r5, 0x1\n"
"\tcmp r6, 0x14\n"
"\tble _08140726\n"
"\tmovs r6, 0\n"
"_08140726:\n"
"\tcmp r3, 0x14\n"
"\tble _0814072C\n"
"\tmovs r3, 0\n"
"_0814072C:\n"
"\tcmp r5, 0x14\n"
"\tble _08140732\n"
"\tmovs r5, 0\n"
"_08140732:\n"
"\tmovs r4, 0\n"
"\tlsls r1, r7, 1\n"
"\tlsls r0, r7, 2\n"
"\tmov r9, r2\n"
"\tldr r2, _081407CC @ =gUnknown_8464926\n"
"\tmov r10, r2\n"
"\tadds r1, r7\n"
"\tadd r1, sp\n"
"\tmov r12, r1\n"
"\tadds r0, r7\n"
"\tlsls r0, 2\n"
"\tadds r0, r7\n"
"\tstr r0, [sp, 0xC]\n"
"_0814074C:\n"
"\tmov r7, r9\n"
"\tmovs r0, 0x32\n"
"\tldrsh r1, [r7, r0]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tadds r0, r4\n"
"\tmov r7, sp\n"
"\tadds r2, r7, r0\n"
"\tlsls r0, r1, 2\n"
"\tadds r0, r1\n"
"\tlsls r0, 2\n"
"\tadds r0, r1\n"
"\tadds r0, r6, r0\n"
"\tadd r0, r10\n"
"\tldrb r0, [r0]\n"
"\tstrb r0, [r2]\n"
"\tmov r0, r9\n"
"\tmovs r2, 0x34\n"
"\tldrsh r1, [r0, r2]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tadds r0, r4\n"
"\tadds r2, r7, r0\n"
"\tlsls r0, r1, 2\n"
"\tadds r0, r1\n"
"\tlsls r0, 2\n"
"\tadds r0, r1\n"
"\tadds r0, r3, r0\n"
"\tadd r0, r10\n"
"\tldrb r0, [r0]\n"
"\tstrb r0, [r2]\n"
"\tldr r7, [sp, 0xC]\n"
"\tadds r0, r5, r7\n"
"\tadd r0, r10\n"
"\tldrb r0, [r0]\n"
"\tmov r1, r12\n"
"\tstrb r0, [r1]\n"
"\tadds r6, 0x1\n"
"\tcmp r6, 0x14\n"
"\tble _0814079E\n"
"\tmovs r6, 0\n"
"_0814079E:\n"
"\tadds r3, 0x1\n"
"\tcmp r3, 0x14\n"
"\tble _081407A6\n"
"\tmovs r3, 0\n"
"_081407A6:\n"
"\tadds r5, 0x1\n"
"\tcmp r5, 0x14\n"
"\tble _081407AE\n"
"\tmovs r5, 0\n"
"_081407AE:\n"
"\tmovs r2, 0x1\n"
"\tadd r12, r2\n"
"\tadds r4, 0x1\n"
"\tcmp r4, 0x2\n"
"\tble _0814074C\n"
"\tmov r3, r8\n"
"\tcmp r3, 0x1\n"
"\tbeq _08140828\n"
"\tcmp r3, 0x1\n"
"\tbgt _081407D0\n"
"\tcmp r3, 0\n"
"\tbeq _081407D8\n"
"\tb _081408A0\n"
"\t.align 2, 0\n"
"_081407C8: .4byte sSlotMachineState\n"
"_081407CC: .4byte gUnknown_8464926\n"
"_081407D0:\n"
"\tmov r6, r8\n"
"\tcmp r6, 0x2\n"
"\tbeq _08140870\n"
"\tb _081408A0\n"
"_081407D8:\n"
"\tmovs r4, 0\n"
"_081407DA:\n"
"\tmov r7, sp\n"
"\tadds r0, r7, r4\n"
"\tldrb r1, [r0]\n"
"\tmovs r0, 0x1\n"
"\tbl sub_81408F4\n"
"\tcmp r0, 0\n"
"\tbne _081408DC_return_false\n"
"\tadds r4, 0x1\n"
"\tcmp r4, 0x2\n"
"\tble _081407DA\n"
"\tmovs r4, 0\n"
"\tldr r2, _08140824 @ =gUnknown_84648AE\n"
"\tmovs r3, 0\n"
"\tadds r5, r2, 0x2\n"
"_081407F8:\n"
"\tldrb r0, [r2]\n"
"\tmov r6, sp\n"
"\tadds r1, r6, r0\n"
"\tldrb r0, [r2, 0x1]\n"
"\tadd r0, sp\n"
"\tldrb r1, [r1]\n"
"\tldrb r0, [r0]\n"
"\tcmp r1, r0\n"
"\tbne _08140816\n"
"\tadds r0, r3, r5\n"
"\tldrb r0, [r0]\n"
"\tadd r0, sp\n"
"\tldrb r0, [r0]\n"
"\tcmp r1, r0\n"
"\tbeq _081408DC_return_false\n"
"_08140816:\n"
"\tadds r2, 0x3\n"
"\tadds r3, 0x3\n"
"\tadds r4, 0x1\n"
"\tcmp r4, 0x4\n"
"\tble _081407F8\n"
"_08140820_return_true:\n"
"\tmovs r0, 0x1\n"
"\tb _081408DE\n"
"\t.align 2, 0\n"
"_08140824: .4byte gUnknown_84648AE\n"
"_08140828:\n"
"\tmovs r4, 0\n"
"\tldr r5, _0814086C @ =gUnknown_84648AE\n"
"_0814082C:\n"
"\tldrb r0, [r5]\n"
"\tmov r7, sp\n"
"\tadds r2, r7, r0\n"
"\tldrb r0, [r5, 0x1]\n"
"\tadds r1, r7, r0\n"
"\tldrb r0, [r2]\n"
"\tldrb r1, [r1]\n"
"\tcmp r0, r1\n"
"\tbne _0814084A\n"
"\tadds r1, r0, 0\n"
"\tmov r0, r8\n"
"\tbl sub_81408F4\n"
"\tcmp r0, 0\n"
"\tbne _081408DC_return_false\n"
"_0814084A:\n"
"\tadds r5, 0x3\n"
"\tadds r4, 0x1\n"
"\tcmp r4, 0x4\n"
"\tble _0814082C\n"
"\tmovs r4, 0\n"
"_08140854:\n"
"\tmov r1, sp\n"
"\tadds r0, r1, r4\n"
"\tldrb r1, [r0]\n"
"\tmov r0, r8\n"
"\tbl sub_81408F4\n"
"\tcmp r0, 0\n"
"\tbne _08140820_return_true\n"
"\tadds r4, 0x1\n"
"\tcmp r4, 0x2\n"
"\tble _08140854\n"
"\tb _081408DC_return_false\n"
"\t.align 2, 0\n"
"_0814086C: .4byte gUnknown_84648AE\n"
"_08140870:\n"
"\tmovs r4, 0\n"
"\tldr r5, _0814089C @ =gUnknown_84648AE\n"
"_08140874:\n"
"\tldrb r0, [r5]\n"
"\tmov r3, sp\n"
"\tadds r2, r3, r0\n"
"\tldrb r0, [r5, 0x1]\n"
"\tadds r1, r3, r0\n"
"\tldrb r0, [r2]\n"
"\tldrb r1, [r1]\n"
"\tcmp r0, r1\n"
"\tbne _08140892\n"
"\tadds r1, r0, 0\n"
"\tmov r0, r8\n"
"\tbl sub_81408F4\n"
"\tcmp r0, 0\n"
"\tbne _08140820_return_true\n"
"_08140892:\n"
"\tadds r5, 0x3\n"
"\tadds r4, 0x1\n"
"\tcmp r4, 0x4\n"
"\tble _08140874\n"
"\tb _081408DC_return_false\n"
"\t.align 2, 0\n"
"_0814089C: .4byte gUnknown_84648AE\n"
"_081408A0:\n"
"\tmovs r4, 0\n"
"\tldr r5, _081408F0 @ =gUnknown_84648AE\n"
"\tadds r7, r5, 0\n"
"\tmovs r6, 0\n"
"_081408A8:\n"
"\tldrb r0, [r5]\n"
"\tmov r1, sp\n"
"\tadds r2, r1, r0\n"
"\tadds r0, r7, 0x1\n"
"\tadds r0, r6, r0\n"
"\tldrb r0, [r0]\n"
"\tadd r0, sp\n"
"\tldrb r1, [r2]\n"
"\tldrb r0, [r0]\n"
"\tcmp r1, r0\n"
"\tbne _081408D2\n"
"\tldrb r0, [r5, 0x2]\n"
"\tadd r0, sp\n"
"\tldrb r0, [r0]\n"
"\tcmp r1, r0\n"
"\tbne _081408D2\n"
"\tmov r0, r8\n"
"\tbl sub_81408F4\n"
"\tcmp r0, 0\n"
"\tbne _08140820_return_true\n"
"_081408D2:\n"
"\tadds r5, 0x3\n"
"\tadds r6, 0x3\n"
"\tadds r4, 0x1\n"
"\tcmp r4, 0x4\n"
"\tble _081408A8\n"
"_081408DC_return_false:\n"
"\tmovs r0, 0\n"
"_081408DE:\n"
"\tadd sp, 0x10\n"
"\tpop {r3-r5}\n"
"\tmov r8, r3\n"
"\tmov r9, r4\n"
"\tmov r10, r5\n"
"\tpop {r4-r7}\n"
"\tpop {r1}\n"
"\tbx r1\n"
"\t.align 2, 0\n"
"_081408F0: .4byte gUnknown_84648AE");
}
#endif //NONMATCHING
bool32 sub_81408F4(s32 a0, s32 a1)
{
switch (a0)
{
case 0:
return a1 ^ 4 ? TRUE : FALSE;
case 1:
case 2:
return a1 == 4 ? TRUE : FALSE;
case 3:
return a1 == 5 || a1 == 6 ? TRUE : FALSE;
case 4:
return a1 == 2 || a1 == 3 ? TRUE : FALSE;
case 5:
return a1 == 1 ? TRUE : FALSE;
case 6:
return a1 == 0 ? TRUE : FALSE;
default:
return FALSE;
}
}
u8 sub_814096C(s32 a0)
{
switch (a0)
{
default:
case 4:
return 1;
case 5:
case 6:
return 3;
case 2:
case 3:
return 4;
case 1:
return 5;
case 0:
return 6;
}
}
void sub_81409B4(void)
{
u16 r2 = Random() / 4;
s32 i;
const u16 * r4 = gUnknown_84648D2[sSlotMachineState->machineidx];
for (i = 0; i < 6; i++)
{
if (r2 < r4[i])
break;
}
if (sSlotMachineState->field_08 < 5)
{
if (sSlotMachineState->field_0C == 0)
{
if ((Random() & 0x3FFF) < r4[6])
sSlotMachineState->field_0C = (Random() & 1) ? 5 : 60;
}
if (sSlotMachineState->field_0C != 0)
{
if (i == 0 && (Random() & 0x3FFF) < 0x2CCC)
sSlotMachineState->field_0C = (Random() & 1) ? 5 : 60;
sSlotMachineState->field_0C--;
}
sSlotMachineState->field_08 = i;
}
}
void sub_8140A70(void)
{
sSlotMachineState->field_08 = 0;
}
u16 sub_8140A80(void)
{
u8 sp0[9] = {};
s32 i;
s32 r4, r3, r2;
s32 r9;
for (i = 0; i < 5; i++)
sSlotMachineState->field_3C[i] = 0;
r9 = 0;
r4 = sSlotMachineState->field_20[0];
r3 = sSlotMachineState->field_20[1];
r2 = sSlotMachineState->field_20[2];
for (i = 0; i < 3; i++)
{
r4++;
if (r4 >= 21)
r4 = 0;
r3++;
if (r3 >= 21)
r3 = 0;
r2++;
if (r2 >= 21)
r2 = 0;
sp0[0 * 3 + i] = gUnknown_8464926[0][r4];
sp0[1 * 3 + i] = gUnknown_8464926[1][r3];
sp0[2 * 3 + i] = gUnknown_8464926[2][r2];
}
sSlotMachineState->payout = 0;
for (i = 0; i < 5; i++)
{
if (sSlotMachineState->bet >= gUnknown_84648BD[i][3])
{
if (sub_81408F4(1, sp0[gUnknown_84648BD[i][0]]))
r3 = sub_81408F4(2, sp0[gUnknown_84648BD[i][1]]) ? 2 : 1;
else if (sp0[gUnknown_84648BD[i][0]] == sp0[gUnknown_84648BD[i][1]] && sp0[gUnknown_84648BD[i][0]] == sp0[gUnknown_84648BD[i][2]])
r3 = sub_814096C(sp0[gUnknown_84648BD[i][0]]);
else
r3 = 0;
if (r3 != 0)
{
sSlotMachineState->field_3C[i] = 1;
sSlotMachineState->payout += gUnknown_8464966[r3];
}
if (r3 > r9)
r9 = r3;
}
}
return r9;
}
u16 sub_8140BDC(void)
{
return sSlotMachineState->payout;
}
u8 sub_8140BEC(void)
{
return sSlotMachineState->bet;
}
bool32 sub_8140BF8(s32 a0)
{
return sSlotMachineState->field_3C[a0];
}
bool32 sub_8140C0C(void)
{
s32 i;
for (i = 0; i < NELEMS(gUnknown_84655B0); i++)
LoadCompressedObjectPic(&gUnknown_84655B0[i]);
LoadSpritePalettes(gUnknown_84655C8);
gUnknown_203F3A4 = Alloc(sizeof(*gUnknown_203F3A4));
if (gUnknown_203F3A4 == NULL)
return FALSE;
sub_8140C6C(gUnknown_203F3A4);
return TRUE;
}
void sub_8140C50(void)
{
if (gUnknown_203F3A4 != NULL)
{
Free(gUnknown_203F3A4);
gUnknown_203F3A4 = NULL;
}
}
void sub_8140C6C(struct SlotMachineGfxManager * manager)
{
s32 i, j;
for (i = 0; i < 3; i++)
{
manager->field_00[i] = 0;
for (j = 0; j < 5; j++)
{
manager->field_0C[i][j] = NULL;
}
}
}
void sub_8140CA0(void)
{
struct Sprite * sprite;
s32 i, j;
s32 spriteId;
s32 animId;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
{
spriteId = CreateSprite(&gUnknown_84657E4, 80 + 40 * i, 44 + 24 * j, 2);
animId = gUnknown_8464926[i][j];
sprite = &gSprites[spriteId];
StartSpriteAnim(sprite, animId);
sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_8465608[animId]);
sprite->data[0] = i;
sprite->data[1] = j;
sprite->data[2] = j;
sprite->data[3] = 0;
sprite->oam.matrixNum = 0;
gUnknown_203F3A4->field_0C[i][j] = sprite;
gUnknown_203F3A4->field_70 = 0x07000006;
}
}
}
-3
View File
@@ -1592,9 +1592,6 @@ gUnknown_203F39C: @ 203F39C
.align 2 .align 2
.include "src/slot_machine.o" .include "src/slot_machine.o"
gUnknown_203F3A4: @ 203F3A4
.space 0x4
sLocationHistory: @ 203F3A8 sLocationHistory: @ 203F3A8
.space 0x6 .space 0x6