summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/slot_machine.s2002
-rw-r--r--data/slot_machine.s358
-rw-r--r--graphics/slot_machine/unk_8464974.pal19
-rw-r--r--graphics/slot_machine/unk_8464994.pal19
-rw-r--r--graphics/slot_machine/unk_84649b4.pal19
-rw-r--r--graphics/slot_machine/unk_84649d4.pal19
-rw-r--r--graphics/slot_machine/unk_84649f4.pal19
-rw-r--r--graphics/slot_machine/unk_8464a14.pngbin0 -> 1234 bytes
-rw-r--r--graphics/slot_machine/unk_846504c.pal19
-rw-r--r--graphics/slot_machine/unk_846506c.pngbin0 -> 909 bytes
-rw-r--r--graphics/slot_machine/unk_8465524.pal19
-rw-r--r--graphics/slot_machine/unk_8465544.pngbin0 -> 215 bytes
-rw-r--r--graphics/slot_machine/unk_8465930.pal19
-rw-r--r--graphics/slot_machine/unk_8465950.pal19
-rw-r--r--graphics/slot_machine/unk_8465970.pal19
-rw-r--r--graphics/slot_machine/unk_8465990.pal19
-rw-r--r--graphics/slot_machine/unk_84659b0.pal19
-rw-r--r--graphics/slot_machine/unk_84659d0.pngbin0 -> 1736 bytes
-rw-r--r--graphics/slot_machine/unk_84661d4.binbin0 -> 1280 bytes
-rw-r--r--graphics/slot_machine/unk_84664bc.pal19
-rw-r--r--graphics/slot_machine/unk_84664dc.pal19
-rw-r--r--graphics/slot_machine/unk_84664fc.pal19
-rw-r--r--graphics/slot_machine/unk_846651c.pal19
-rw-r--r--graphics/slot_machine/unk_846653c.pngbin0 -> 229 bytes
-rw-r--r--graphics/slot_machine/unk_84665c0.pal19
-rw-r--r--graphics/slot_machine/unk_84665e0.pal19
-rw-r--r--graphics/slot_machine/unk_8466600.pal19
-rw-r--r--graphics/slot_machine/unk_8466620.pngbin0 -> 772 bytes
-rw-r--r--graphics/slot_machine/unk_8466998.binbin0 -> 1280 bytes
-rw-r--r--graphics_file_rules.mk7
-rw-r--r--include/quest_log.h1
-rw-r--r--include/slot_machine.h2
-rw-r--r--include/songs.h468
-rw-r--r--ld_script.txt1
-rw-r--r--src/slot_machine.c778
-rw-r--r--src/vs_seeker.c2
-rw-r--r--sym_ewram.txt4
37 files changed, 1501 insertions, 2483 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 02e17cbb0..62ff4a784 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,1964 +5,6 @@
.text
- thumb_func_start PlaySlotMachine
-PlaySlotMachine: @ 813F804
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- bl ResetTasks
- ldr r4, _0813F828 @ =gUnknown_203F3A0
- movs r0, 0x54
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- bne _0813F82C
- adds r0, r6, 0
- bl SetMainCallback2
- b _0813F840
- .align 2, 0
-_0813F828: .4byte gUnknown_203F3A0
-_0813F82C:
- cmp r5, 0x5
- bls _0813F832
- movs r5, 0
-_0813F832:
- strh r5, [r0, 0x4]
- str r6, [r0]
- bl sub_813F84C
- ldr r0, _0813F848 @ =sub_813F898
- bl SetMainCallback2
-_0813F840:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F848: .4byte sub_813F898
- thumb_func_end PlaySlotMachine
-
- thumb_func_start sub_813F84C
-sub_813F84C: @ 813F84C
- push {r4-r6,lr}
- movs r1, 0
- strh r1, [r0, 0x6]
- strh r1, [r0, 0xE]
- adds r0, 0x50
- strh r1, [r0]
- movs r3, 0
- ldr r6, _0813F894 @ =gUnknown_203F3A0
- movs r4, 0
- movs r5, 0x15
-_0813F860:
- ldr r2, [r6]
- lsls r1, r3, 2
- adds r0, r2, 0
- adds r0, 0x14
- adds r0, r1
- str r4, [r0]
- lsls r1, r3, 1
- adds r0, r2, 0
- adds r0, 0x20
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x26
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x2C
- adds r0, r1
- strh r5, [r0]
- adds r3, 0x1
- cmp r3, 0x2
- ble _0813F860
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F894: .4byte gUnknown_203F3A0
- thumb_func_end sub_813F84C
-
- thumb_func_start sub_813F898
-sub_813F898: @ 813F898
- push {r4,lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _0813F8BC @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- beq _0813F8C0
- cmp r0, 0x1
- beq _0813F8EC
- b _0813F916
- .align 2, 0
-_0813F8BC: .4byte gMain
-_0813F8C0:
- bl sub_814104C
- cmp r0, 0
- beq _0813F8DC
- ldr r0, _0813F8D8 @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_813F92C
- b _0813F916
- .align 2, 0
-_0813F8D8: .4byte gUnknown_203F3A0
-_0813F8DC:
- movs r0, 0
- movs r1, 0
- bl sub_8141148
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0813F916
-_0813F8EC:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813F916
- ldr r0, _0813F91C @ =sub_813F964
- movs r1, 0
- bl CreateTask
- ldr r4, _0813F920 @ =gUnknown_203F3A0
- ldr r1, [r4]
- strb r0, [r1, 0x10]
- ldr r0, _0813F924 @ =sub_8140060
- movs r1, 0x1
- bl CreateTask
- ldr r1, [r4]
- strb r0, [r1, 0x11]
- ldr r0, _0813F928 @ =sub_813F94C
- bl SetMainCallback2
-_0813F916:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F91C: .4byte sub_813F964
-_0813F920: .4byte gUnknown_203F3A0
-_0813F924: .4byte sub_8140060
-_0813F928: .4byte sub_813F94C
- thumb_func_end sub_813F898
-
- thumb_func_start sub_813F92C
-sub_813F92C: @ 813F92C
- push {r4,lr}
- bl sub_8141094
- ldr r4, _0813F948 @ =gUnknown_203F3A0
- ldr r0, [r4]
- cmp r0, 0
- beq _0813F942
- bl Free
- movs r0, 0
- str r0, [r4]
-_0813F942:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F948: .4byte gUnknown_203F3A0
- thumb_func_end sub_813F92C
-
- thumb_func_start sub_813F94C
-sub_813F94C: @ 813F94C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_813F94C
-
- thumb_func_start sub_813F964
-sub_813F964: @ 813F964
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813F988 @ =gTasks+0x8
- adds r6, r1, r0
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x4
- bls _0813F97E
- b _0813FBB8
-_0813F97E:
- lsls r0, 2
- ldr r1, _0813F98C @ =_0813F990
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813F988: .4byte gTasks+0x8
-_0813F98C: .4byte _0813F990
- .align 2, 0
-_0813F990:
- .4byte _0813F9A4
- .4byte _0813FAA8
- .4byte _0813FAE4
- .4byte _0813FB08
- .4byte _0813FB48
-_0813F9A4:
- bl GetCoins
- lsls r0, 16
- cmp r0, 0
- bne _0813F9BC
- ldr r0, _0813F9B8 @ =sub_813FBC0
- bl sub_8140030
- b _0813FBB8
- .align 2, 0
-_0813F9B8: .4byte sub_813FBC0
-_0813F9BC:
- ldr r1, _0813F9F4 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _0813F9FC
- ldr r0, _0813F9F8 @ =gUnknown_203F3A0
- ldr r1, [r0]
- ldrh r0, [r1, 0xE]
- adds r0, 0x1
- strh r0, [r1, 0xE]
- movs r0, 0x1
- bl TakeCoins
- movs r0, 0x58
- bl PlaySE
- movs r0, 0x8
- movs r1, 0
- bl sub_8141148
- movs r0, 0x2
- movs r1, 0x1
- bl sub_8141148
- movs r0, 0x1
- b _0813FBB6
- .align 2, 0
-_0813F9F4: .4byte gMain
-_0813F9F8: .4byte gUnknown_203F3A0
-_0813F9FC:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r2
- cmp r0, 0
- beq _0813FA5C
- ldr r5, _0813FA2C @ =gUnknown_203F3A0
- ldr r0, [r5]
- ldrh r0, [r0, 0xE]
- movs r7, 0x3
- subs r4, r7, r0
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- blt _0813FA30
- ldr r0, [r5]
- strh r7, [r0, 0xE]
- lsls r0, r4, 16
- lsrs r0, 16
- bl TakeCoins
- b _0813FA42
- .align 2, 0
-_0813FA2C: .4byte gUnknown_203F3A0
-_0813FA30:
- bl GetCoins
- ldr r1, [r5]
- ldrh r2, [r1, 0xE]
- adds r0, r2
- strh r0, [r1, 0xE]
- movs r0, 0
- bl SetCoins
-_0813FA42:
- movs r0, 0x58
- bl PlaySE
- movs r0, 0x8
- movs r1, 0
- bl sub_8141148
- movs r0, 0x2
- movs r1, 0x1
- bl sub_8141148
- movs r0, 0x1
- b _0813FBB6
-_0813FA5C:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0813FA78
- ldr r0, _0813FA74 @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0xE]
- cmp r0, 0
- beq _0813FA78
- movs r0, 0x2
- b _0813FBB6
- .align 2, 0
-_0813FA74: .4byte gUnknown_203F3A0
-_0813FA78:
- ldrh r1, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0813FA90
- ldr r0, _0813FA8C @ =sub_813FCAC
- bl sub_8140030
- b _0813FBB8
- .align 2, 0
-_0813FA8C: .4byte sub_813FCAC
-_0813FA90:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0813FA9A
- b _0813FBB8
-_0813FA9A:
- ldr r0, _0813FAA4 @ =sub_813FC2C
- bl sub_8140030
- b _0813FBB8
- .align 2, 0
-_0813FAA4: .4byte sub_813FC2C
-_0813FAA8:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- beq _0813FAB4
- b _0813FBB8
-_0813FAB4:
- movs r0, 0x1
- bl sub_8141180
- adds r4, r0, 0
- cmp r4, 0
- beq _0813FAC2
- b _0813FBB8
-_0813FAC2:
- ldr r0, _0813FADC @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0xE]
- cmp r0, 0x3
- beq _0813FAD6
- bl GetCoins
- lsls r0, 16
- cmp r0, 0
- bne _0813FAE0
-_0813FAD6:
- movs r0, 0x2
- b _0813FBB6
- .align 2, 0
-_0813FADC: .4byte gUnknown_203F3A0
-_0813FAE0:
- strh r4, [r6]
- b _0813FBB8
-_0813FAE4:
- bl sub_811539C
- bl sub_81409B4
- bl sub_8140148
- ldr r0, _0813FB04 @ =gUnknown_203F3A0
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0x6]
- movs r0, 0x3
- movs r1, 0
- bl sub_8141148
- b _0813FBB4
- .align 2, 0
-_0813FB04: .4byte gUnknown_203F3A0
-_0813FB08:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FBB8
- ldr r0, _0813FB40 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813FBB8
- movs r0, 0x18
- bl PlaySE
- ldr r4, _0813FB44 @ =gUnknown_203F3A0
- ldr r0, [r4]
- ldrh r1, [r0, 0x6]
- adds r0, r1, 0
- bl sub_814016C
- ldr r0, [r4]
- ldrb r0, [r0, 0x6]
- movs r1, 0
- bl sub_8141C30
- movs r0, 0x4
- b _0813FBB6
- .align 2, 0
-_0813FB40: .4byte gMain
-_0813FB44: .4byte gUnknown_203F3A0
-_0813FB48:
- ldr r5, _0813FB90 @ =gUnknown_203F3A0
- ldr r0, [r5]
- ldrh r0, [r0, 0x6]
- bl sub_81401A0
- cmp r0, 0
- bne _0813FBB8
- movs r0, 0
- bl sub_8141180
- adds r4, r0, 0
- cmp r4, 0
- bne _0813FBB8
- ldr r1, [r5]
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bls _0813FBB4
- bl sub_8140A80
- ldr r1, [r5]
- strh r0, [r1, 0xA]
- strh r4, [r1, 0xE]
- strh r4, [r1, 0x6]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0813FB98
- ldr r0, _0813FB94 @ =sub_813FD84
- bl sub_8140030
- b _0813FBB8
- .align 2, 0
-_0813FB90: .4byte gUnknown_203F3A0
-_0813FB94: .4byte sub_813FD84
-_0813FB98:
- cmp r0, 0x6
- bne _0813FBA2
- movs r0, 0x1C
- bl IncrementGameStat
-_0813FBA2:
- bl sub_8140A70
- ldr r0, _0813FBB0 @ =sub_813FE1C
- bl sub_8140030
- b _0813FBB8
- .align 2, 0
-_0813FBB0: .4byte sub_813FE1C
-_0813FBB4:
- movs r0, 0x3
-_0813FBB6:
- strh r0, [r6]
-_0813FBB8:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_813F964
-
- thumb_func_start sub_813FBC0
-sub_813FBC0: @ 813FBC0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813FBE4 @ =gTasks+0x8
- adds r4, r1, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0813FBF8
- cmp r0, 0x1
- bgt _0813FBE8
- cmp r0, 0
- beq _0813FBEE
- b _0813FC1C
- .align 2, 0
-_0813FBE4: .4byte gTasks+0x8
-_0813FBE8:
- cmp r0, 0x2
- beq _0813FC0A
- b _0813FC1C
-_0813FBEE:
- movs r0, 0x9
- movs r1, 0
- bl sub_8141148
- b _0813FC02
-_0813FBF8:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FC1C
-_0813FC02:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0813FC1C
-_0813FC0A:
- ldr r0, _0813FC24 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _0813FC1C
- ldr r0, _0813FC28 @ =sub_813FFD8
- bl sub_8140030
-_0813FC1C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813FC24: .4byte gMain
-_0813FC28: .4byte sub_813FFD8
- thumb_func_end sub_813FBC0
-
- thumb_func_start sub_813FC2C
-sub_813FC2C: @ 813FC2C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813FC50 @ =gTasks+0x8
- adds r4, r1, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0813FC62
- cmp r0, 0x1
- bgt _0813FC54
- cmp r0, 0
- beq _0813FC5E
- b _0813FCA0
- .align 2, 0
-_0813FC50: .4byte gTasks+0x8
-_0813FC54:
- cmp r0, 0x2
- beq _0813FC6E
- cmp r0, 0x3
- beq _0813FC90
- b _0813FCA0
-_0813FC5E:
- movs r0, 0xE
- b _0813FC7C
-_0813FC62:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FCA0
- b _0813FC82
-_0813FC6E:
- ldr r0, _0813FC8C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0813FCA0
- movs r0, 0xF
-_0813FC7C:
- movs r1, 0
- bl sub_8141148
-_0813FC82:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0813FCA0
- .align 2, 0
-_0813FC8C: .4byte gMain
-_0813FC90:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FCA0
- ldr r0, _0813FCA8 @ =sub_813F964
- bl sub_8140030
-_0813FCA0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813FCA8: .4byte sub_813F964
- thumb_func_end sub_813FC2C
-
- thumb_func_start sub_813FCAC
-sub_813FCAC: @ 813FCAC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813FCD0 @ =gTasks+0x8
- adds r4, r1, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bhi _0813FD78
- lsls r0, 2
- ldr r1, _0813FCD4 @ =_0813FCD8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813FCD0: .4byte gTasks+0x8
-_0813FCD4: .4byte _0813FCD8
- .align 2, 0
-_0813FCD8:
- .4byte _0813FCEC
- .4byte _0813FCF6
- .4byte _0813FD08
- .4byte _0813FD52
- .4byte _0813FD68
-_0813FCEC:
- movs r0, 0xA
- movs r1, 0
- bl sub_8141148
- b _0813FD00
-_0813FCF6:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FD78
-_0813FD00:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0813FD78
-_0813FD08:
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0813FD28
- cmp r1, 0
- bgt _0813FD22
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0813FD44
- b _0813FD78
-_0813FD22:
- cmp r1, 0x1
- beq _0813FD44
- b _0813FD78
-_0813FD28:
- ldr r0, _0813FD40 @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0xE]
- bl GiveCoins
- movs r0, 0x8
- movs r1, 0
- bl sub_8141148
- movs r0, 0x3
- strh r0, [r4]
- b _0813FD78
- .align 2, 0
-_0813FD40: .4byte gUnknown_203F3A0
-_0813FD44:
- movs r0, 0xB
- movs r1, 0
- bl sub_8141148
- movs r0, 0x4
- strh r0, [r4]
- b _0813FD78
-_0813FD52:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FD78
- ldr r0, _0813FD64 @ =sub_813FFD8
- bl sub_8140030
- b _0813FD78
- .align 2, 0
-_0813FD64: .4byte sub_813FFD8
-_0813FD68:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FD78
- ldr r0, _0813FD80 @ =sub_813F964
- bl sub_8140030
-_0813FD78:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813FD80: .4byte sub_813F964
- thumb_func_end sub_813FCAC
-
- thumb_func_start sub_813FD84
-sub_813FD84: @ 813FD84
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813FDA8 @ =gTasks+0x8
- adds r5, r1, r0
- movs r0, 0
- ldrsh r4, [r5, r0]
- cmp r4, 0x1
- beq _0813FDBE
- cmp r4, 0x1
- bgt _0813FDAC
- cmp r4, 0
- beq _0813FDB2
- b _0813FE10
- .align 2, 0
-_0813FDA8: .4byte gTasks+0x8
-_0813FDAC:
- cmp r4, 0x2
- beq _0813FDEC
- b _0813FE10
-_0813FDB2:
- movs r0, 0x6
- movs r1, 0
- bl sub_8141148
- strh r4, [r5, 0x2]
- b _0813FDE4
-_0813FDBE:
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _0813FE10
- movs r0, 0x7
- movs r1, 0
- bl sub_8141148
- movs r0, 0x2
- movs r1, 0x1
- bl sub_8141148
- movs r0, 0xD
- movs r1, 0x2
- bl sub_8141148
-_0813FDE4:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- b _0813FE10
-_0813FDEC:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FE10
- movs r0, 0x1
- bl sub_8141180
- cmp r0, 0
- bne _0813FE10
- movs r0, 0x2
- bl sub_8141180
- cmp r0, 0
- bne _0813FE10
- ldr r0, _0813FE18 @ =sub_813F964
- bl sub_8140030
-_0813FE10:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813FE18: .4byte sub_813F964
- thumb_func_end sub_813FD84
-
- thumb_func_start sub_813FE1C
-sub_813FE1C: @ 813FE1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813FE40 @ =gTasks+0x8
- adds r5, r1, r0
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x5
- bls _0813FE36
- b _0813FFCE
-_0813FE36:
- lsls r0, 2
- ldr r1, _0813FE44 @ =_0813FE48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813FE40: .4byte gTasks+0x8
-_0813FE44: .4byte _0813FE48
- .align 2, 0
-_0813FE48:
- .4byte _0813FE60
- .4byte _0813FEA0
- .4byte _0813FECC
- .4byte _0813FF78
- .4byte _0813FF92
- .4byte _0813FFB4
-_0813FE60:
- ldr r0, _0813FE7C @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0xA]
- subs r0, 0x5
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0813FE80
- movs r0, 0x86
- lsls r0, 1
- bl PlayFanfare
- b _0813FE86
- .align 2, 0
-_0813FE7C: .4byte gUnknown_203F3A0
-_0813FE80:
- ldr r0, _0813FE9C @ =0x0000010d
- bl PlayFanfare
-_0813FE86:
- movs r0, 0x8
- movs r1, 0
- bl sub_8141148
- movs r0, 0x4
- movs r1, 0x1
- bl sub_8141148
- movs r0, 0x8
- strh r0, [r5, 0x2]
- b _0813FFAC
- .align 2, 0
-_0813FE9C: .4byte 0x0000010d
-_0813FEA0:
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- bgt _0813FEB0
- b _0813FFCE
-_0813FEB0:
- movs r0, 0x8
- strh r0, [r5, 0x2]
- ldr r0, _0813FEC8 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813FFAC
- movs r0, 0x2
- strh r0, [r5, 0x2]
- b _0813FFAC
- .align 2, 0
-_0813FEC8: .4byte gMain
-_0813FECC:
- movs r0, 0
- bl sub_8141180
- adds r6, r0, 0
- cmp r6, 0
- bne _0813FFCE
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _0813FF0C
- ldr r0, _0813FF04 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0813FF0C
- ldr r4, _0813FF08 @ =gUnknown_203F3A0
- ldr r0, [r4]
- adds r0, 0x50
- ldrh r0, [r0]
- bl GiveCoins
- ldr r0, [r4]
- adds r0, 0x50
- strh r6, [r0]
- b _0813FF58
- .align 2, 0
-_0813FF04: .4byte gMain
-_0813FF08: .4byte gUnknown_203F3A0
-_0813FF0C:
- ldrh r0, [r5, 0x2]
- subs r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- cmp r0, 0
- bne _0813FF58
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _0813FF28
- movs r0, 0x15
- bl PlaySE
-_0813FF28:
- ldr r4, _0813FF70 @ =gUnknown_203F3A0
- ldr r0, [r4]
- adds r0, 0x50
- ldrh r0, [r0]
- cmp r0, 0
- beq _0813FF44
- movs r0, 0x1
- bl GiveCoins
- ldr r1, [r4]
- adds r1, 0x50
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_0813FF44:
- movs r0, 0x8
- strh r0, [r5, 0x2]
- ldr r0, _0813FF74 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813FF58
- movs r0, 0x2
- strh r0, [r5, 0x2]
-_0813FF58:
- movs r0, 0x8
- movs r1, 0
- bl sub_8141148
- ldr r0, _0813FF70 @ =gUnknown_203F3A0
- ldr r0, [r0]
- adds r0, 0x50
- ldrh r0, [r0]
- cmp r0, 0
- bne _0813FFCE
- b _0813FFAC
- .align 2, 0
-_0813FF70: .4byte gUnknown_203F3A0
-_0813FF74: .4byte gMain
-_0813FF78:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _0813FFCE
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FFCE
- movs r0, 0x5
- movs r1, 0
- b _0813FFA8
-_0813FF92:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FFCE
- movs r0, 0x2
- movs r1, 0
- bl sub_8141148
- movs r0, 0xD
- movs r1, 0x1
-_0813FFA8:
- bl sub_8141148
-_0813FFAC:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- b _0813FFCE
-_0813FFB4:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _0813FFCE
- movs r0, 0x1
- bl sub_8141180
- cmp r0, 0
- bne _0813FFCE
- ldr r0, _0813FFD4 @ =sub_813F964
- bl sub_8140030
-_0813FFCE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813FFD4: .4byte sub_813F964
- thumb_func_end sub_813FE1C
-
- thumb_func_start sub_813FFD8
-sub_813FFD8: @ 813FFD8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813FFF8 @ =gTasks+0x8
- adds r4, r1, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0813FFFC
- cmp r0, 0x1
- beq _0814000C
- b _08140024
- .align 2, 0
-_0813FFF8: .4byte gTasks+0x8
-_0813FFFC:
- movs r0, 0x1
- movs r1, 0
- bl sub_8141148
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _08140024
-_0814000C:
- movs r0, 0
- bl sub_8141180
- cmp r0, 0
- bne _08140024
- ldr r0, _0814002C @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_813F92C
-_08140024:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814002C: .4byte gUnknown_203F3A0
- thumb_func_end sub_813FFD8
-
- thumb_func_start sub_8140030
-sub_8140030: @ 8140030
- push {r4,lr}
- ldr r4, _08140058 @ =gTasks
- ldr r1, _0814005C @ =gUnknown_203F3A0
- ldr r3, [r1]
- ldrb r2, [r3, 0x10]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r4
- str r0, [r1]
- ldrb r1, [r3, 0x10]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08140058: .4byte gTasks
-_0814005C: .4byte gUnknown_203F3A0
- thumb_func_end sub_8140030
-
- thumb_func_start sub_8140060
-sub_8140060: @ 8140060
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0
- mov r12, r0
- ldr r1, _08140144 @ =gUnknown_203F3A0
- mov r10, r1
- mov r8, r10
- mov r9, r0
- movs r6, 0
- movs r7, 0
-_0814007A:
- mov r2, r8
- ldr r3, [r2]
- adds r0, r3, 0
- adds r0, 0x14
- adds r0, r7
- ldr r0, [r0]
- mov r1, r12
- lsls r4, r1, 1
- cmp r0, 0
- bne _0814009C
- adds r0, r3, 0
- adds r0, 0x26
- adds r0, r6
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- beq _0814011A
-_0814009C:
- adds r0, r3, 0
- adds r0, 0x26
- adds r2, r0, r6
- ldrh r5, [r2]
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _081400C4
- adds r1, r3, 0
- adds r1, 0x20
- adds r1, r4
- adds r0, r3, 0
- adds r0, 0x2C
- adds r0, r4
- movs r4, 0
- ldrsh r1, [r1, r4]
- movs r4, 0
- ldrsh r0, [r0, r4]
- cmp r1, r0
- beq _08140104
-_081400C4:
- adds r0, r5, 0x1
- movs r1, 0
- strh r0, [r2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _081400EA
- strh r1, [r2]
- adds r0, r3, 0
- adds r0, 0x20
- adds r1, r0, r6
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bge _081400EA
- movs r0, 0x14
- strh r0, [r1]
-_081400EA:
- mov r1, r8
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x20
- adds r1, r6
- adds r0, 0x2C
- adds r0, r6
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r4, 0
- ldrsh r0, [r0, r4]
- cmp r1, r0
- bne _0814011A
-_08140104:
- mov r1, r8
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x2C
- adds r1, r6
- movs r2, 0x15
- strh r2, [r1]
- adds r0, 0x14
- adds r0, r7
- mov r2, r9
- str r2, [r0]
-_0814011A:
- adds r6, 0x2
- adds r7, 0x4
- movs r4, 0x1
- add r12, r4
- mov r0, r12
- cmp r0, 0x2
- ble _0814007A
- mov r2, r10
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x20
- adds r1, 0x26
- bl sub_8140D7C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08140144: .4byte gUnknown_203F3A0
- thumb_func_end sub_8140060
-
- thumb_func_start sub_8140148
-sub_8140148: @ 8140148
- push {r4,lr}
- movs r2, 0
- ldr r4, _08140168 @ =gUnknown_203F3A0
- movs r3, 0x1
-_08140150:
- ldr r0, [r4]
- lsls r1, r2, 2
- adds r0, 0x14
- adds r0, r1
- str r3, [r0]
- adds r2, 0x1
- cmp r2, 0x2
- ble _08140150
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08140168: .4byte gUnknown_203F3A0
- thumb_func_end sub_8140148
-
- thumb_func_start sub_814016C
-sub_814016C: @ 814016C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- adds r2, r1, 0
- cmp r1, 0x1
- beq _08140192
- cmp r1, 0x1
- bgt _08140186
- cmp r1, 0
- beq _0814018C
- b _0814019C
-_08140186:
- cmp r2, 0x2
- beq _08140198
- b _0814019C
-_0814018C:
- bl sub_81401F0
- b _0814019C
-_08140192:
- bl sub_81403BC
- b _0814019C
-_08140198:
- bl sub_81404B8
-_0814019C:
- pop {r0}
- bx r0
- thumb_func_end sub_814016C
-
- thumb_func_start sub_81401A0
-sub_81401A0: @ 81401A0
- lsls r0, 16
- ldr r1, _081401B0 @ =gUnknown_203F3A0
- ldr r1, [r1]
- lsrs r0, 14
- adds r1, 0x14
- adds r1, r0
- ldr r0, [r1]
- bx lr
- .align 2, 0
-_081401B0: .4byte gUnknown_203F3A0
- thumb_func_end sub_81401A0
-
- thumb_func_start sub_81401B4
-sub_81401B4: @ 81401B4
- push {lr}
- lsls r0, 16
- ldr r1, _081401E8 @ =gUnknown_203F3A0
- ldr r2, [r1]
- lsrs r0, 15
- adds r1, r2, 0
- adds r1, 0x20
- adds r1, r0
- ldrh r1, [r1]
- adds r2, 0x26
- adds r2, r0
- movs r3, 0
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _081401E0
- lsls r0, r1, 16
- ldr r1, _081401EC @ =0xffff0000
- adds r0, r1
- lsrs r1, r0, 16
- cmp r0, 0
- bge _081401E0
- movs r1, 0x14
-_081401E0:
- lsls r0, r1, 16
- asrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_081401E8: .4byte gUnknown_203F3A0
-_081401EC: .4byte 0xffff0000
- thumb_func_end sub_81401B4
-
- thumb_func_start sub_81401F0
-sub_81401F0: @ 81401F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- bl sub_81401B4
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0
- mov r8, r0
- ldr r0, _0814023C @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- bne _08140294
- mov r2, r9
- cmp r2, 0
- bne _08140294
- movs r7, 0
- lsls r1, 16
- str r1, [sp, 0xC]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r10, r0
-_0814022A:
- movs r6, 0
- ldr r1, [sp, 0xC]
- asrs r0, r1, 16
- subs r0, r7
- adds r0, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- adds r5, r7, 0x1
- b _08140248
- .align 2, 0
-_0814023C: .4byte gUnknown_203F3A0
-_08140240:
- adds r6, 0x1
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_08140248:
- cmp r6, 0x2
- bgt _0814026E
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _08140256
- movs r2, 0
-_08140256:
- lsls r0, r2, 16
- asrs r4, r0, 16
- mov r2, r10
- adds r0, r4, r2
- ldr r1, _08140284 @ =gUnknown_8464926
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- bl sub_81408F4
- cmp r0, 0
- beq _08140240
-_0814026E:
- cmp r6, 0x3
- bne _0814027C
- mov r0, sp
- add r0, r8
- strb r7, [r0]
- movs r2, 0x1
- add r8, r2
-_0814027C:
- adds r7, r5, 0
- cmp r7, 0x4
- ble _0814022A
- b _08140348
- .align 2, 0
-_08140284: .4byte gUnknown_8464926
-_08140288:
- mov r1, sp
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- mov r8, r0
- b _081402FE
-_08140294:
- ldr r0, _08140364 @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- cmp r0, 0x1
- bne _081402AE
- lsls r2, r1, 16
- str r2, [sp, 0xC]
- mov r0, r9
- lsls r0, 1
- str r0, [sp, 0x8]
- mov r2, r9
- cmp r2, 0
- bne _08140348
-_081402AE:
- movs r7, 0
- lsls r1, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r1, r2
- lsrs r2, r0, 16
- str r1, [sp, 0xC]
- mov r0, r9
- lsls r6, r0, 2
- lsls r0, 1
- str r0, [sp, 0x8]
- ldr r1, _08140368 @ =gUnknown_8464926
- mov r10, r1
- mov r1, r9
- adds r0, r6, r1
- lsls r0, 2
- adds r5, r0, r1
-_081402D0:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _081402DA
- movs r2, 0
-_081402DA:
- ldr r0, _08140364 @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- lsls r1, r2, 16
- asrs r4, r1, 16
- adds r1, r4, r5
- add r1, r10
- ldrb r1, [r1]
- bl sub_81408F4
- cmp r0, 0
- bne _08140288
- adds r7, 0x1
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r7, 0x2
- ble _081402D0
-_081402FE:
- movs r7, 0
- ldr r0, [sp, 0xC]
- lsrs r2, r0, 16
- ldr r1, _08140368 @ =gUnknown_8464926
- mov r10, r1
- mov r1, r9
- adds r0, r6, r1
- lsls r0, 2
- adds r6, r0, r1
-_08140310:
- lsls r0, r2, 16
- cmp r0, 0
- bge _08140318
- movs r2, 0x14
-_08140318:
- ldr r0, _08140364 @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- lsls r1, r2, 16
- asrs r4, r1, 16
- adds r1, r4, r6
- add r1, r10
- ldrb r1, [r1]
- bl sub_81408F4
- adds r5, r7, 0x1
- cmp r0, 0
- beq _0814033C
- mov r0, sp
- add r0, r8
- strb r5, [r0]
- movs r2, 0x1
- add r8, r2
-_0814033C:
- adds r7, r5, 0
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r7, 0x3
- ble _08140310
-_08140348:
- mov r0, r8
- cmp r0, 0
- bne _0814036C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- lsrs r2, r0, 16
- b _0814037E
- .align 2, 0
-_08140364: .4byte gUnknown_203F3A0
-_08140368: .4byte gUnknown_8464926
-_0814036C:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r8
- bl __modsi3
- add r0, sp
- ldrb r2, [r0]
-_0814037E:
- ldr r0, [sp, 0xC]
- 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 _08140398
- adds r0, 0x15
- lsls r0, 16
- lsrs r2, r0, 16
-_08140398:
- ldr r0, _081403B8 @ =gUnknown_203F3A0
- ldr r0, [r0]
- mov r1, r9
- strh r1, [r0, 0x32]
- adds r0, 0x2C
- ldr r1, [sp, 0x8]
- adds r0, r1
- strh r2, [r0]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081403B8: .4byte gUnknown_203F3A0
- thumb_func_end sub_81401F0
-
- 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 @ =gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 gUnknown_203F3A0
-_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 @ =gUnknown_203F3A0
- 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 gUnknown_203F3A0
-_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}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- adds r7, r0, 0
- adds r6, r1, 0
- mov r8, r2
- adds r5, r3, 0
- ldr r0, [sp, 0x34]
- mov r9, r0
- mov r0, sp
- movs r1, 0
- movs r2, 0x9
- bl memset
- movs r1, 0x7
- add r0, sp, 0x8
-_08140572:
- strb r1, [r0]
- subs r0, 0x1
- cmp r0, sp
- bge _08140572
- movs r4, 0
- lsls r2, r7, 1
- lsls r0, r7, 2
- mov r1, r8
- lsls r1, 1
- str r1, [sp, 0x10]
- mov r3, r8
- lsls r1, r3, 2
- ldr r3, _081405E8 @ =gUnknown_8464926
- mov r12, r3
- adds r0, r7
- lsls r0, 2
- adds r0, r7
- mov r10, r0
- adds r2, r7
- add r2, sp
- ldr r3, [sp, 0x10]
- add r3, r8
- add r1, r8
- lsls r1, 2
- add r1, r8
- str r1, [sp, 0xC]
- add r3, sp
-_081405A8:
- mov r1, r10
- adds r0, r6, r1
- add r0, r12
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, [sp, 0xC]
- adds r0, r5, r1
- add r0, r12
- ldrb r0, [r0]
- strb r0, [r3]
- adds r6, 0x1
- cmp r6, 0x14
- ble _081405C4
- movs r6, 0
-_081405C4:
- adds r5, 0x1
- cmp r5, 0x14
- ble _081405CC
- movs r5, 0
-_081405CC:
- adds r2, 0x1
- adds r3, 0x1
- adds r4, 0x1
- cmp r4, 0x2
- ble _081405A8
- mov r3, r9
- cmp r3, 0x1
- beq _08140630
- cmp r3, 0x1
- bgt _081405EC
- cmp r3, 0
- beq _081405F4
- b _081406A8
- .align 2, 0
-_081405E8: .4byte gUnknown_8464926
-_081405EC:
- mov r5, r9
- cmp r5, 0x2
- beq _08140680
- b _081406A8
-_081405F4:
- movs r4, 0
-_081405F6:
- mov r1, sp
- adds r0, r1, r4
- ldrb r1, [r0]
- movs r0, 0x1
- bl sub_81408F4
- cmp r0, 0
- bne _081406D2
- adds r4, 0x1
- cmp r4, 0x2
- ble _081405F6
- movs r4, 0
- ldr r3, _0814062C @ =gUnknown_8464890
-_08140610:
- ldrb r0, [r3]
- mov r5, sp
- adds r2, r5, r0
- ldrb r0, [r3, 0x1]
- adds r1, r5, r0
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- beq _081406A4
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0xE
- ble _08140610
- b _081406D2
- .align 2, 0
-_0814062C: .4byte gUnknown_8464890
-_08140630:
- cmp r7, 0
- beq _0814063A
- mov r0, r8
- cmp r0, 0
- bne _081406A4
-_0814063A:
- cmp r7, 0x1
- beq _08140644
- mov r1, r8
- cmp r1, 0x1
- bne _08140662
-_08140644:
- movs r4, 0
- ldr r3, _0814067C @ =gUnknown_8464890
-_08140648:
- ldrb r0, [r3]
- mov r5, sp
- adds r2, r5, r0
- ldrb r0, [r3, 0x1]
- adds r1, r5, r0
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- beq _081406D2
- adds r3, 0x6
- adds r4, 0x3
- cmp r4, 0xE
- ble _08140648
-_08140662:
- movs r4, 0
-_08140664:
- mov r1, sp
- adds r0, r1, r4
- ldrb r1, [r0]
- mov r0, r9
- bl sub_81408F4
- cmp r0, 0
- bne _081406A4
- adds r4, 0x1
- cmp r4, 0x2
- ble _08140664
- b _081406D2
- .align 2, 0
-_0814067C: .4byte gUnknown_8464890
-_08140680:
- cmp r7, 0x2
- beq _0814068A
- mov r3, r8
- cmp r3, 0x2
- bne _081406A8
-_0814068A:
- movs r4, 0
-_0814068C:
- mov r5, sp
- adds r0, r5, r4
- ldrb r1, [r0]
- mov r0, r9
- bl sub_81408F4
- cmp r0, 0
- bne _081406A4
- adds r4, 0x1
- cmp r4, 0x8
- ble _0814068C
- b _081406D2
-_081406A4:
- movs r0, 0x1
- b _081406D4
-_081406A8:
- movs r4, 0
- ldr r5, _081406E4 @ =gUnknown_8464890
-_081406AC:
- ldrb r0, [r5]
- mov r1, sp
- adds r2, r1, r0
- ldrb r0, [r5, 0x1]
- adds r1, r0
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _081406CA
- adds r1, r0, 0
- mov r0, r9
- bl sub_81408F4
- cmp r0, 0
- bne _081406A4
-_081406CA:
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0xE
- ble _081406AC
-_081406D2:
- movs r0, 0
-_081406D4:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081406E4: .4byte gUnknown_8464890
- thumb_func_end sub_814054C
-
thumb_func_start sub_81406E8
sub_81406E8: @ 81406E8
push {r4-r7,lr}
@@ -1974,7 +16,7 @@ sub_81406E8: @ 81406E8
adds r7, r0, 0
adds r5, r1, 0
mov r8, r2
- ldr r0, _081407C8 @ =gUnknown_203F3A0
+ ldr r0, _081407C8 @ =sSlotMachineState
ldr r2, [r0]
movs r1, 0x32
ldrsh r0, [r2, r1]
@@ -2085,7 +127,7 @@ _081407AE:
beq _081407D8
b _081408A0
.align 2, 0
-_081407C8: .4byte gUnknown_203F3A0
+_081407C8: .4byte sSlotMachineState
_081407CC: .4byte gUnknown_8464926
_081407D0:
mov r6, r8
@@ -2361,7 +403,7 @@ sub_81409B4: @ 81409B4
bl Random
lsls r0, 16
lsrs r2, r0, 18
- ldr r0, _08140A60 @ =gUnknown_203F3A0
+ ldr r0, _08140A60 @ =sSlotMachineState
ldr r0, [r0]
ldrh r1, [r0, 0x4]
lsls r0, r1, 3
@@ -2383,7 +425,7 @@ _081409D8:
cmp r2, r1
bcs _081409D8
_081409E6:
- ldr r6, _08140A60 @ =gUnknown_203F3A0
+ ldr r6, _08140A60 @ =sSlotMachineState
ldr r1, [r6]
ldrh r0, [r1, 0x8]
cmp r0, 0x4
@@ -2408,7 +450,7 @@ _081409E6:
_08140A16:
strh r0, [r4, 0xC]
_08140A18:
- ldr r0, _08140A60 @ =gUnknown_203F3A0
+ ldr r0, _08140A60 @ =sSlotMachineState
ldr r1, [r0]
ldrh r1, [r1, 0xC]
cmp r1, 0
@@ -2422,7 +464,7 @@ _08140A22:
ldr r0, _08140A6C @ =0x00002ccb
cmp r1, r0
bhi _08140A4A
- ldr r0, _08140A60 @ =gUnknown_203F3A0
+ ldr r0, _08140A60 @ =sSlotMachineState
ldr r4, [r0]
bl Random
movs r1, 0x1
@@ -2434,7 +476,7 @@ _08140A22:
_08140A48:
strh r0, [r4, 0xC]
_08140A4A:
- ldr r2, _08140A60 @ =gUnknown_203F3A0
+ ldr r2, _08140A60 @ =sSlotMachineState
ldr r1, [r2]
ldrh r0, [r1, 0xC]
subs r0, 0x1
@@ -2448,7 +490,7 @@ _08140A5A:
pop {r0}
bx r0
.align 2, 0
-_08140A60: .4byte gUnknown_203F3A0
+_08140A60: .4byte sSlotMachineState
_08140A64: .4byte gUnknown_84648D2
_08140A68: .4byte 0x00003fff
_08140A6C: .4byte 0x00002ccb
@@ -2456,13 +498,13 @@ _08140A6C: .4byte 0x00002ccb
thumb_func_start sub_8140A70
sub_8140A70: @ 8140A70
- ldr r0, _08140A7C @ =gUnknown_203F3A0
+ ldr r0, _08140A7C @ =sSlotMachineState
ldr r1, [r0]
movs r0, 0
strh r0, [r1, 0x8]
bx lr
.align 2, 0
-_08140A7C: .4byte gUnknown_203F3A0
+_08140A7C: .4byte sSlotMachineState
thumb_func_end sub_8140A70
thumb_func_start sub_8140A80
@@ -2477,7 +519,7 @@ sub_8140A80: @ 8140A80
movs r2, 0x9
bl memset
movs r5, 0
- ldr r2, _08140B58 @ =gUnknown_203F3A0
+ ldr r2, _08140B58 @ =sSlotMachineState
movs r3, 0
adds r4, r2, 0
_08140A9C:
@@ -2538,7 +580,7 @@ _08140AE8:
subs r5, 0x1
cmp r5, 0
bge _08140AD0
- ldr r0, _08140B58 @ =gUnknown_203F3A0
+ ldr r0, _08140B58 @ =sSlotMachineState
ldr r0, [r0]
adds r0, 0x50
movs r1, 0
@@ -2548,7 +590,7 @@ _08140AE8:
movs r6, 0
movs r5, 0x4
_08140B18:
- ldr r0, _08140B58 @ =gUnknown_203F3A0
+ ldr r0, _08140B58 @ =sSlotMachineState
ldr r1, [r0]
mov r0, r8
adds r0, 0x3
@@ -2579,7 +621,7 @@ _08140B18:
movs r3, 0x2
b _08140B92
.align 2, 0
-_08140B58: .4byte gUnknown_203F3A0
+_08140B58: .4byte sSlotMachineState
_08140B5C: .4byte gUnknown_8464926
_08140B60: .4byte gUnknown_84648BD
_08140B64:
@@ -2608,7 +650,7 @@ _08140B8E:
cmp r3, 0
beq _08140BB0
_08140B92:
- ldr r0, _08140BD4 @ =gUnknown_203F3A0
+ ldr r0, _08140BD4 @ =sSlotMachineState
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x3C
@@ -2644,34 +686,34 @@ _08140BB6:
pop {r1}
bx r1
.align 2, 0
-_08140BD4: .4byte gUnknown_203F3A0
+_08140BD4: .4byte sSlotMachineState
_08140BD8: .4byte gUnknown_8464966
thumb_func_end sub_8140A80
thumb_func_start sub_8140BDC
sub_8140BDC: @ 8140BDC
- ldr r0, _08140BE8 @ =gUnknown_203F3A0
+ ldr r0, _08140BE8 @ =sSlotMachineState
ldr r0, [r0]
adds r0, 0x50
ldrh r0, [r0]
bx lr
.align 2, 0
-_08140BE8: .4byte gUnknown_203F3A0
+_08140BE8: .4byte sSlotMachineState
thumb_func_end sub_8140BDC
thumb_func_start sub_8140BEC
sub_8140BEC: @ 8140BEC
- ldr r0, _08140BF4 @ =gUnknown_203F3A0
+ ldr r0, _08140BF4 @ =sSlotMachineState
ldr r0, [r0]
ldrb r0, [r0, 0xE]
bx lr
.align 2, 0
-_08140BF4: .4byte gUnknown_203F3A0
+_08140BF4: .4byte sSlotMachineState
thumb_func_end sub_8140BEC
thumb_func_start sub_8140BF8
sub_8140BF8: @ 8140BF8
- ldr r1, _08140C08 @ =gUnknown_203F3A0
+ ldr r1, _08140C08 @ =sSlotMachineState
ldr r1, [r1]
lsls r0, 2
adds r1, 0x3C
@@ -2679,7 +721,7 @@ sub_8140BF8: @ 8140BF8
ldr r0, [r1]
bx lr
.align 2, 0
-_08140C08: .4byte gUnknown_203F3A0
+_08140C08: .4byte sSlotMachineState
thumb_func_end sub_8140BF8
thumb_func_start sub_8140C0C
diff --git a/data/slot_machine.s b/data/slot_machine.s
index dac396602..a85e26b75 100644
--- a/data/slot_machine.s
+++ b/data/slot_machine.s
@@ -1,94 +1,390 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
.section .rodata
.align 2
gUnknown_8464890:: @ 8464890
- .incbin "baserom.gba", 0x464890, 0x1E
+ .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
- .incbin "baserom.gba", 0x4648AE, 0xF
+ .byte 0x00, 0x03, 0x06
+ .byte 0x01, 0x04, 0x07
+ .byte 0x02, 0x05, 0x08
+ .byte 0x00, 0x04, 0x08
+ .byte 0x02, 0x04, 0x06
gUnknown_84648BD:: @ 84648BD
- .incbin "baserom.gba", 0x4648BD, 0x15
+ .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
- .incbin "baserom.gba", 0x4648D2, 0x54
+ .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
- .incbin "baserom.gba", 0x464926, 0x40
+ .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
- .incbin "baserom.gba", 0x464966, 0xC4A
+ .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
- .incbin "baserom.gba", 0x4655B0, 0x18
+ obj_tiles gUnknown_8464A14, 0x0e00, 0
+ obj_tiles gUnknown_846506C, 0x0c00, 1
+ obj_tiles gUnknown_8465544, 0x0280, 2
gUnknown_84655C8:: @ 84655C8
- .incbin "baserom.gba", 0x4655C8, 0x40
+ 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
- .incbin "baserom.gba", 0x465608, 0xE
+ .2byte 0x0002, 0x0002, 0x0000, 0x0000, 0x0002, 0x0004, 0x0003
gUnknown_8465616:: @ 8465616
- .incbin "baserom.gba", 0x465616, 0xC0
+ .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
- .incbin "baserom.gba", 0x4656D6, 0x10E
+ .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
+gUnknown_8465738::
+ .4byte 0x80000100, 0x00000c00
+
+gUnknown_8465740::
+ obj_image_anim_frame 0x00, 4
+ obj_image_anim_end
+
+gUnknown_8465748::
+ obj_image_anim_frame 0x10, 4
+ obj_image_anim_end
+
+gUnknown_8465750::
+ obj_image_anim_frame 0x20, 4
+ obj_image_anim_end
+
+gUnknown_8465758::
+ obj_image_anim_frame 0x30, 4
+ obj_image_anim_end
+
+gUnknown_8465760::
+ obj_image_anim_frame 0x40, 4
+ obj_image_anim_end
+
+gUnknown_8465768::
+ obj_image_anim_frame 0x50, 4
+ obj_image_anim_end
+
+gUnknown_8465770::
+ obj_image_anim_frame 0x60, 4
+ obj_image_anim_end
+
+gUnknown_8465778::
+ obj_image_anim_frame 0x20, 4
+ obj_image_anim_end
+
+gUnknown_8465780::
+ obj_image_anim_frame 0x30, 4
+ obj_image_anim_end
+
+gUnknown_8465788::
+ obj_image_anim_frame 0x40, 4
+ obj_image_anim_end
+
+gUnknown_8465790::
+ obj_image_anim_frame 0x50, 4
+ obj_image_anim_end
+
+gUnknown_8465798::
+ obj_image_anim_frame 0x60, 4
+ obj_image_anim_end
+
+gUnknown_84657A0::
+ .4byte gUnknown_8465740
+ .4byte gUnknown_8465748
+ .4byte gUnknown_8465750
+ .4byte gUnknown_8465758
+ .4byte gUnknown_8465760
+ .4byte gUnknown_8465768
+ .4byte gUnknown_8465770
+ .4byte gUnknown_8465778
+ .4byte gUnknown_8465780
+ .4byte gUnknown_8465788
+ .4byte gUnknown_8465790
+ .4byte gUnknown_8465798
+
+gUnknown_84657D0::
+ obj_rot_scal_anim_frame 0x100, 0x100, 0, 1
+ obj_rot_scal_anim_end
+
+gUnknown_84657E0:: @ unused
+ .4byte gUnknown_84657D0
gUnknown_84657E4:: @ 84657E4
- .incbin "baserom.gba", 0x4657E4, 0x98
+ spr_template 0, 0, gUnknown_8465738, gUnknown_84657A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+gUnknown_84657FC::
+ .4byte 0x00008000, 0x00000400
+
+gUnknown_8465804::
+ obj_image_anim_frame 0x00, 4
+ obj_image_anim_end
+
+gUnknown_846580C::
+ obj_image_anim_frame 0x02, 4
+ obj_image_anim_end
+
+gUnknown_8465814::
+ obj_image_anim_frame 0x04, 4
+ obj_image_anim_end
+
+gUnknown_846581C::
+ obj_image_anim_frame 0x06, 4
+ obj_image_anim_end
+
+gUnknown_8465824::
+ obj_image_anim_frame 0x08, 4
+ obj_image_anim_end
+
+gUnknown_846582C::
+ obj_image_anim_frame 0x0a, 4
+ obj_image_anim_end
+
+gUnknown_8465834::
+ obj_image_anim_frame 0x0c, 4
+ obj_image_anim_end
+
+gUnknown_846583C::
+ obj_image_anim_frame 0x0e, 4
+ obj_image_anim_end
+
+gUnknown_8465844::
+ obj_image_anim_frame 0x10, 4
+ obj_image_anim_end
+
+gUnknown_846584C::
+ obj_image_anim_frame 0x12, 4
+ obj_image_anim_end
+
+gUnknown_8465854::
+ .4byte gUnknown_8465804
+ .4byte gUnknown_846580C
+ .4byte gUnknown_8465814
+ .4byte gUnknown_846581C
+ .4byte gUnknown_8465824
+ .4byte gUnknown_846582C
+ .4byte gUnknown_8465834
+ .4byte gUnknown_846583C
+ .4byte gUnknown_8465844
+ .4byte gUnknown_846584C
gUnknown_846587C:: @ 846587C
- .incbin "baserom.gba", 0x46587C, 0x5C
+ spr_template 2, 6, gUnknown_84657FC, gUnknown_8465854, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+gUnknown_8465894::
+ .4byte 0x80000000, 0x00000400
+
+gUnknown_846589C::
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+gUnknown_84658A4::
+ obj_image_anim_frame 0, 24
+ obj_image_anim_frame 16, 24
+ obj_image_anim_jump 0
+
+gUnknown_84658B0::
+ obj_image_anim_frame 32, 28
+ obj_image_anim_frame 48, 28
+ obj_image_anim_jump 0
+
+gUnknown_84658BC::
+ obj_image_anim_frame 64, 12
+ obj_image_anim_frame 80, 12
+ obj_image_anim_jump 0
+
+gUnknown_84658C8::
+ .4byte gUnknown_846589C
+ .4byte gUnknown_84658A4
+ .4byte gUnknown_84658B0
+ .4byte gUnknown_84658BC
gUnknown_84658D8:: @ 84658D8
- .incbin "baserom.gba", 0x4658D8, 0x18
+ spr_template 1, 5, gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gUnknown_84658F0:: @ 84658F0
- .incbin "baserom.gba", 0x4658F0, 0x40
+ .4byte sub_8141198
+ .4byte sub_8141460
+ .4byte sub_81414AC
+ .4byte sub_81414EC
+ .4byte sub_81414FC
+ .4byte sub_8141518
+ .4byte sub_8141558
+ .4byte sub_8141568
+ .4byte sub_8141578
+ .4byte sub_8141584
+ .4byte sub_81415C8
+ .4byte sub_8141610
+ .4byte sub_8141650
+ .4byte sub_8141690
+ .4byte sub_81416C8
+ .4byte sub_8141764
gUnknown_8465930:: @ 8465930
- .incbin "baserom.gba", 0x465930, 0x20
+ .incbin "graphics/slot_machine/unk_8465930.gbapal"
gUnknown_8465950:: @ 8465950
- .incbin "baserom.gba", 0x465950, 0x80
+ .incbin "graphics/slot_machine/unk_8465950.gbapal"
+ .incbin "graphics/slot_machine/unk_8465970.gbapal"
+ .incbin "graphics/slot_machine/unk_8465990.gbapal"
+ .incbin "graphics/slot_machine/unk_84659b0.gbapal"
gUnknown_84659D0:: @ 84659D0
- .incbin "baserom.gba", 0x4659D0, 0x804
+ .incbin "graphics/slot_machine/unk_84659d0.4bpp.lz"
gUnknown_84661D4:: @ 84661D4
- .incbin "baserom.gba", 0x4661D4, 0x2E8
+ .incbin "graphics/slot_machine/unk_84661d4.bin.lz"
gUnknown_84664BC:: @ 84664BC
- .incbin "baserom.gba", 0x4664BC, 0x20
+ .incbin "graphics/slot_machine/unk_84664bc.gbapal"
gUnknown_84664DC:: @ 84664DC
- .incbin "baserom.gba", 0x4664DC, 0x60
+ .incbin "graphics/slot_machine/unk_84664dc.gbapal"
+ .incbin "graphics/slot_machine/unk_84664fc.gbapal"
+ .incbin "graphics/slot_machine/unk_846651c.gbapal"
gUnknown_846653C:: @ 846653C
- .incbin "baserom.gba", 0x46653C, 0x84
+ .incbin "graphics/slot_machine/unk_846653c.4bpp.lz"
gUnknown_84665C0:: @ 84665C0
- .incbin "baserom.gba", 0x4665C0, 0x60
+ .incbin "graphics/slot_machine/unk_84665c0.gbapal"
+ .incbin "graphics/slot_machine/unk_84665e0.gbapal"
+ .incbin "graphics/slot_machine/unk_8466600.gbapal"
gUnknown_8466620:: @ 8466620
- .incbin "baserom.gba", 0x466620, 0x378
+ .incbin "graphics/slot_machine/unk_8466620.4bpp.lz"
gUnknown_8466998:: @ 8466998
- .incbin "baserom.gba", 0x466998, 0x178
+ .incbin "graphics/slot_machine/unk_8466998.bin.lz"
+ .align 2 @ bg templates
gUnknown_8466B10:: @ 8466B10
- .incbin "baserom.gba", 0x466B10, 0x10
+ .4byte 0x000001d0
+ .4byte 0x000031ff
+ .4byte 0x000021ea
+ .4byte 0x000001c5
gUnknown_8466B20:: @ 8466B20
- .incbin "baserom.gba", 0x466B20, 0xEC
+ window_template 0x00, 0x05, 0x0f, 0x14, 0x04, 0x0f, 0x004f
+ window_template 0x00, 0x00, 0x00, 0x1e, 0x02, 0x0e, 0x0013
+ window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000
+
+gUnknown_8466B38::
+ .2byte 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218
+ .2byte 0x0219, 0x0237, 0x0238, 0x0239
+gUnknown_8466B60::
+ .2byte 0x00e4, 0x00e5, 0x00e6, 0x00f7, 0x00f8, 0x00f9, 0x0104, 0x0105, 0x0106, 0x0107, 0x010c, 0x0111, 0x0116, 0x0117, 0x0118, 0x0119
+ .2byte 0x0124, 0x0125, 0x0126, 0x0137, 0x0138, 0x0139
+
+gUnknown_8466B8C::
+ .2byte 0x0144, 0x0145, 0x0146, 0x0157, 0x0158, 0x0159, 0x0164, 0x0165, 0x0166, 0x0167, 0x016c, 0x0171, 0x0176, 0x0177, 0x0178, 0x0179
+ .2byte 0x0184, 0x0185, 0x0186, 0x0197, 0x0198, 0x0199
+
+gUnknown_8466BB8::
+ .2byte 0x01a4, 0x01a5, 0x01a6, 0x01b7, 0x01b8, 0x01b9, 0x01c4, 0x01c5, 0x01c6, 0x01c7, 0x01cc, 0x01d1, 0x01d6, 0x01d7, 0x01d8, 0x01d9
+ .2byte 0x01e4, 0x01e5, 0x01e6, 0x01f7, 0x01f8, 0x01f9
+
+gUnknown_8466BE4::
+ .2byte 0x0204, 0x0205, 0x0206, 0x0224, 0x0225, 0x0226, 0x01e7, 0x0207, 0x018c, 0x01ac, 0x0131, 0x0151, 0x00d6, 0x00f6, 0x00b7, 0x00b8
+ .2byte 0x00b9, 0x00d7, 0x00d8, 0x00d9
+
+ .align 2
gUnknown_8466C0C:: @ 8466C0C
- .incbin "baserom.gba", 0x466C0C, 0x28
+ .4byte gUnknown_8466B38, 0x14
+ .4byte gUnknown_8466B60, 0x16
+ .4byte gUnknown_8466B8C, 0x16
+ .4byte gUnknown_8466BB8, 0x16
+ .4byte gUnknown_8466BE4, 0x14
gUnknown_8466C34:: @ 8466C34
- .incbin "baserom.gba", 0x466C34, 0x4
+ .byte 0x02, 0x04
+ .align 2
gUnknown_8466C38:: @ 8466C38
- .incbin "baserom.gba", 0x466C38, 0x8
+ window_template 0x00, 0x13, 0x09, 0x06, 0x04, 0x0f, 0x009f
gUnknown_8466C40:: @ 8466C40
- .incbin "baserom.gba", 0x466C40, 0x18
+ .2byte 0x0229, 0x022a, 0x0249, 0x024a, 0x022e, 0x022f, 0x024e, 0x024f, 0x0233, 0x0234, 0x0253, 0x0254
diff --git a/graphics/slot_machine/unk_8464974.pal b/graphics/slot_machine/unk_8464974.pal
new file mode 100644
index 000000000..6bc8bed9a
--- /dev/null
+++ b/graphics/slot_machine/unk_8464974.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+65 65 65
+255 246 0
+255 172 0
+246 246 255
+255 246 213
+246 213 156
+238 222 0
+98 98 98
+131 98 41
+255 106 0
+222 57 0
+213 180 0
+222 222 230
+0 0 0
+0 0 0
diff --git a/graphics/slot_machine/unk_8464994.pal b/graphics/slot_machine/unk_8464994.pal
new file mode 100644
index 000000000..8dee9dd3e
--- /dev/null
+++ b/graphics/slot_machine/unk_8464994.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+123 255 255
+65 65 65
+246 246 255
+246 74 0
+205 65 0
+255 205 189
+222 222 230
+0 0 0
+255 238 238
+164 32 0
+205 123 24
+255 222 115
+123 82 0
+255 246 0
+230 205 0
+164 123 41
diff --git a/graphics/slot_machine/unk_84649b4.pal b/graphics/slot_machine/unk_84649b4.pal
new file mode 100644
index 000000000..d54cfc65f
--- /dev/null
+++ b/graphics/slot_machine/unk_84649b4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 255 139
+65 65 65
+255 0 0
+255 255 255
+255 131 0
+255 205 0
+0 0 255
+0 131 255
+0 205 255
+156 238 74
+205 205 230
+222 0 0
+0 156 0
+131 131 148
+164 164 189
+180 0 0
diff --git a/graphics/slot_machine/unk_84649d4.pal b/graphics/slot_machine/unk_84649d4.pal
new file mode 100644
index 000000000..d06616c5d
--- /dev/null
+++ b/graphics/slot_machine/unk_84649d4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 156 230
+57 65 65
+255 246 213
+246 213 123
+255 205 172
+255 172 115
+172 156 90
+246 246 255
+213 98 41
+222 222 230
+148 148 156
+238 172 255
+246 131 180
+197 74 106
+148 74 197
+205 131 255
diff --git a/graphics/slot_machine/unk_84649f4.pal b/graphics/slot_machine/unk_84649f4.pal
new file mode 100644
index 000000000..ef5e9a7ae
--- /dev/null
+++ b/graphics/slot_machine/unk_84649f4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 230 115
+57 65 65
+106 115 115
+197 205 205
+230 238 238
+246 246 255
+164 172 172
+255 90 65
+65 90 255
+189 213 255
+255 213 189
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/slot_machine/unk_8464a14.png b/graphics/slot_machine/unk_8464a14.png
new file mode 100644
index 000000000..be8dfb6e8
--- /dev/null
+++ b/graphics/slot_machine/unk_8464a14.png
Binary files differ
diff --git a/graphics/slot_machine/unk_846504c.pal b/graphics/slot_machine/unk_846504c.pal
new file mode 100644
index 000000000..9a5bab429
--- /dev/null
+++ b/graphics/slot_machine/unk_846504c.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+238 172 0
+156 115 115
+246 205 205
+123 90 90
+222 164 164
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+222 123 32
+255 205 32
+205 90 0
diff --git a/graphics/slot_machine/unk_846506c.png b/graphics/slot_machine/unk_846506c.png
new file mode 100644
index 000000000..1fe951e50
--- /dev/null
+++ b/graphics/slot_machine/unk_846506c.png
Binary files differ
diff --git a/graphics/slot_machine/unk_8465524.pal b/graphics/slot_machine/unk_8465524.pal
new file mode 100644
index 000000000..b8cf64bae
--- /dev/null
+++ b/graphics/slot_machine/unk_8465524.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+98 98 90
+255 255 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 255 0
diff --git a/graphics/slot_machine/unk_8465544.png b/graphics/slot_machine/unk_8465544.png
new file mode 100644
index 000000000..0e3154f61
--- /dev/null
+++ b/graphics/slot_machine/unk_8465544.png
Binary files differ
diff --git a/graphics/slot_machine/unk_8465930.pal b/graphics/slot_machine/unk_8465930.pal
new file mode 100644
index 000000000..f2c377a3f
--- /dev/null
+++ b/graphics/slot_machine/unk_8465930.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+57 57 49
+230 230 230
+255 255 255
+238 172 0
+197 74 24
+205 90 0
+255 205 32
+222 123 32
+255 164 41
+57 148 255
+164 222 255
+0 49 123
+139 0 0
+98 98 90
+0 0 0
diff --git a/graphics/slot_machine/unk_8465950.pal b/graphics/slot_machine/unk_8465950.pal
new file mode 100644
index 000000000..634aa770d
--- /dev/null
+++ b/graphics/slot_machine/unk_8465950.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+222 222 222
+255 255 255
+238 172 0
+255 90 0
+222 41 0
+255 90 0
+222 41 0
+255 90 0
+222 41 0
+255 90 0
+222 41 0
+255 90 0
+222 41 0
+255 205 32
+156 0 0
+0 0 0
diff --git a/graphics/slot_machine/unk_8465970.pal b/graphics/slot_machine/unk_8465970.pal
new file mode 100644
index 000000000..1d932206e
--- /dev/null
+++ b/graphics/slot_machine/unk_8465970.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+74 74 213
+115 172 255
+115 164 74
+156 238 74
+255 90 0
+255 164 41
+255 238 32
+222 41 0
+189 189 189
+156 156 156
+123 123 123
+90 90 90
+65 65 65
+0 0 0
diff --git a/graphics/slot_machine/unk_8465990.pal b/graphics/slot_machine/unk_8465990.pal
new file mode 100644
index 000000000..2c2b3d843
--- /dev/null
+++ b/graphics/slot_machine/unk_8465990.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+238 172 0
+172 106 106
+222 156 156
+148 82 82
+197 131 131
+8 123 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+222 123 32
+255 205 32
+205 90 0
diff --git a/graphics/slot_machine/unk_84659b0.pal b/graphics/slot_machine/unk_84659b0.pal
new file mode 100644
index 000000000..742063525
--- /dev/null
+++ b/graphics/slot_machine/unk_84659b0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+222 222 222
+213 57 0
+205 90 0
+255 255 255
+238 172 0
+0 0 197
+180 65 0
+180 65 0
+0 106 0
+0 106 0
+82 123 255
+246 156 0
+246 156 0
+41 180 82
+41 180 82
+0 0 0
diff --git a/graphics/slot_machine/unk_84659d0.png b/graphics/slot_machine/unk_84659d0.png
new file mode 100644
index 000000000..5223d0d3f
--- /dev/null
+++ b/graphics/slot_machine/unk_84659d0.png
Binary files differ
diff --git a/graphics/slot_machine/unk_84661d4.bin b/graphics/slot_machine/unk_84661d4.bin
new file mode 100644
index 000000000..23182cba7
--- /dev/null
+++ b/graphics/slot_machine/unk_84661d4.bin
Binary files differ
diff --git a/graphics/slot_machine/unk_84664bc.pal b/graphics/slot_machine/unk_84664bc.pal
new file mode 100644
index 000000000..87103918b
--- /dev/null
+++ b/graphics/slot_machine/unk_84664bc.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+222 222 222
+213 57 0
+205 90 0
+255 255 255
+238 172 0
+0 164 238
+238 131 0
+238 131 0
+0 222 0
+0 222 0
+139 255 255
+255 238 106
+255 238 106
+148 255 148
+148 255 148
+0 0 0
diff --git a/graphics/slot_machine/unk_84664dc.pal b/graphics/slot_machine/unk_84664dc.pal
new file mode 100644
index 000000000..12dfa2b28
--- /dev/null
+++ b/graphics/slot_machine/unk_84664dc.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+222 222 222
+255 255 255
+238 172 0
+255 255 131
+255 180 65
+255 255 255
+255 255 131
+255 255 131
+255 180 65
+255 180 65
+255 90 0
+255 90 0
+222 41 0
+255 205 32
+156 0 0
+0 0 0
diff --git a/graphics/slot_machine/unk_84664fc.pal b/graphics/slot_machine/unk_84664fc.pal
new file mode 100644
index 000000000..fe26d000a
--- /dev/null
+++ b/graphics/slot_machine/unk_84664fc.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+222 222 222
+255 255 255
+238 172 0
+255 180 65
+255 90 0
+255 255 131
+255 180 65
+255 255 255
+255 255 131
+255 255 131
+255 180 65
+255 180 65
+255 90 0
+255 205 32
+156 0 0
+0 0 0
diff --git a/graphics/slot_machine/unk_846651c.pal b/graphics/slot_machine/unk_846651c.pal
new file mode 100644
index 000000000..339886b3b
--- /dev/null
+++ b/graphics/slot_machine/unk_846651c.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+222 222 222
+255 255 255
+238 172 0
+255 90 0
+222 41 0
+255 180 65
+255 90 0
+255 255 131
+255 180 65
+255 255 255
+255 255 131
+255 255 131
+255 180 65
+255 205 32
+156 0 0
+0 0 0
diff --git a/graphics/slot_machine/unk_846653c.png b/graphics/slot_machine/unk_846653c.png
new file mode 100644
index 000000000..4fb62b7a3
--- /dev/null
+++ b/graphics/slot_machine/unk_846653c.png
Binary files differ
diff --git a/graphics/slot_machine/unk_84665c0.pal b/graphics/slot_machine/unk_84665c0.pal
new file mode 100644
index 000000000..362860109
--- /dev/null
+++ b/graphics/slot_machine/unk_84665c0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+230 189 230
+65 65 65
+255 255 255
+139 238 255
+172 255 255
+106 205 222
+246 222 123
+255 230 180
+213 189 90
+222 49 0
+255 238 0
+246 205 115
+213 156 41
+246 49 0
+222 255 205
+255 230 230
diff --git a/graphics/slot_machine/unk_84665e0.pal b/graphics/slot_machine/unk_84665e0.pal
new file mode 100644
index 000000000..758d58497
--- /dev/null
+++ b/graphics/slot_machine/unk_84665e0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 255 255
+65 65 65
+246 246 246
+255 82 82
+49 180 255
+65 213 255
+255 156 82
+0 156 0
+156 238 74
+164 164 189
+255 238 0
+255 246 164
+197 164 57
+238 222 0
+222 255 205
+255 230 230
diff --git a/graphics/slot_machine/unk_8466600.pal b/graphics/slot_machine/unk_8466600.pal
new file mode 100644
index 000000000..bf0a84def
--- /dev/null
+++ b/graphics/slot_machine/unk_8466600.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 255 255
+65 65 65
+246 246 246
+123 131 131
+197 205 205
+255 139 115
+90 123 255
+213 131 255
+148 74 197
+189 90 65
+255 180 172
+246 230 106
+246 74 0
+197 255 255
+222 255 205
+255 230 230
diff --git a/graphics/slot_machine/unk_8466620.png b/graphics/slot_machine/unk_8466620.png
new file mode 100644
index 000000000..73b5d1046
--- /dev/null
+++ b/graphics/slot_machine/unk_8466620.png
Binary files differ
diff --git a/graphics/slot_machine/unk_8466998.bin b/graphics/slot_machine/unk_8466998.bin
new file mode 100644
index 000000000..d7dc278da
--- /dev/null
+++ b/graphics/slot_machine/unk_8466998.bin
Binary files differ
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index 145dc0810..27931e87e 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -23,6 +23,7 @@ PSSGFXDIR := graphics/pokemon_storage
EVENTOBJGFXDIR := graphics/event_objects
MISCGFXDIR := graphics/misc
TEXTWINDOWGFXDIR := graphics/text_window
+SLOTMACHINEGFXDIR := graphics/slot_machine
types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark
contest_types := cool beauty cute smart tough
@@ -483,3 +484,9 @@ $(MISCGFXDIR)/unk_846B008.4bpp: %.4bpp: %.png
$(TEXTWINDOWGFXDIR)/unk_8470B0C.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 19
+
+$(SLOTMACHINEGFXDIR)/unk_8466620.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 66
+
+$(SLOTMACHINEGFXDIR)/unk_84659d0.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 138
diff --git a/include/quest_log.h b/include/quest_log.h
index cdd28371f..aca3e5fe8 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -22,6 +22,7 @@ extern const u16 gUnknown_84566A8[];
void sub_8112720(u8);
void sub_8113550(u16, const u16 *);
+void sub_811539C(void);
void sub_8115748(u16);
u8 sub_8112CAC(void);
bool8 sub_81119D4(void (*func)(void));
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 5c96384fa..37120f66b 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -3,6 +3,6 @@
#include "global.h"
-void PlaySlotMachine(u8, void *);
+void PlaySlotMachine(u16, void (*)(void));
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/songs.h b/include/songs.h
deleted file mode 100644
index f8d0fbf5b..000000000
--- a/include/songs.h
+++ /dev/null
@@ -1,468 +0,0 @@
-#ifndef GUARD_SONGS_H
-#define GUARD_SONGS_H
-
-#include "global.h"
-
-enum
-{
- /*0x00*/ SE_STOP,
- /*0x01*/ SE_KAIFUKU,
- /*0x02*/ SE_PC_LOGON,
- /*0x03*/ SE_PC_OFF,
- /*0x04*/ SE_PC_ON,
- /*0x05*/ SE_SELECT,
- /*0x06*/ SE_WIN_OPEN,
- /*0x07*/ SE_WALL_HIT,
- /*0x08*/ SE_DOOR,
- /*0x09*/ SE_KAIDAN,
- /*0x0A*/ SE_DANSA,
- /*0x0B*/ SE_JITENSYA,
- /*0x0C*/ SE_KOUKA_L, // Goggle told me Kouka means 'effectiveness' which makes sense, because
- /*0x0D*/ SE_KOUKA_M, // those three sounds play whenever you use a move
- /*0x0E*/ SE_KOUKA_H,
- /*0x0F*/ SE_BOWA2,
- /*0x10*/ SE_POKE_DEAD,
- /*0x11*/ SE_NIGERU,
- /*0x12*/ SE_JIDO_DOA,
- /*0x13*/ SE_NAMINORI,
- /*0x14*/ SE_BAN,
- /*0x15*/ SE_PIN,
- /*0x16*/ SE_BOO,
- /*0x17*/ SE_BOWA,
- /*0x18*/ SE_JYUNI,
- /*0x19*/ SE_A,
- /*0x1A*/ SE_I,
- /*0x1B*/ SE_U,
- /*0x1C*/ SE_E,
- /*0x1D*/ SE_O,
- /*0x1E*/ SE_N,
- /*0x1F*/ SE_SEIKAI,
- /*0x20*/ SE_HAZURE,
- /*0x21*/ SE_EXP,
- /*0x22*/ SE_JITE_PYOKO,
- /*0x23*/ SE_MU_PACHI,
- /*0x24*/ SE_TK_KASYA,
- /*0x25*/ SE_FU_ZAKU,
- /*0x26*/ SE_FU_ZAKU2,
- /*0x27*/ SE_FU_ZUZUZU,
- /*0x28*/ SE_RU_GASHIN,
- /*0x29*/ SE_RU_GASYAN,
- /*0x2A*/ SE_RU_BARI,
- /*0x2B*/ SE_RU_HYUU,
- /*0x2C*/ SE_KI_GASYAN,
- /*0x2D*/ SE_TK_WARPIN,
- /*0x2E*/ SE_TK_WARPOUT,
- /*0x2F*/ SE_TU_SAA,
- /*0x30*/ SE_HI_TURUN,
- /*0x31*/ SE_TRACK_MOVE,
- /*0x32*/ SE_TRACK_STOP,
- /*0x33*/ SE_TRACK_HAIK,
- /*0x34*/ SE_TRACK_DOOR,
- /*0x35*/ SE_MOTER,
- /*0x36*/ SE_CARD,
- /*0x37*/ SE_SAVE,
- /*0x38*/ SE_KON,
- /*0x39*/ SE_KON2,
- /*0x3A*/ SE_KON3,
- /*0x3B*/ SE_KON4,
- /*0x3C*/ SE_SUIKOMU,
- /*0x3D*/ SE_NAGERU,
- SE_TOY_C,
- SE_TOY_D,
- SE_TOY_E,
- SE_TOY_F,
- SE_TOY_G,
- SE_TOY_A,
- SE_TOY_B,
- SE_TOY_C1,
- SE_MIZU,
- SE_HASHI,
- SE_DAUGI,
- SE_PINPON,
- SE_FUUSEN1,
- SE_FUUSEN2,
- SE_FUUSEN3,
- SE_TOY_KABE,
- SE_TOY_DANGO,
- SE_DOKU,
- SE_ESUKA,
- SE_T_AME,
- SE_T_AME_E,
- SE_T_OOAME,
- SE_T_OOAME_E,
- SE_T_KOAME,
- SE_T_KOAME_E,
- SE_T_KAMI,
- SE_T_KAMI2,
- SE_ELEBETA,
- /*0x5A*/ SE_HINSI,
- /*0x5B*/ SE_EXPMAX,
- /*0x5C*/ SE_TAMAKORO,
- /*0x5D*/ SE_TAMAKORO_E,
- /*0x5E*/ SE_BASABASA,
- /*0x5F*/ SE_REGI,
- SE_C_GAJI,
- SE_C_MAKU_U,
- SE_C_MAKU_D,
- SE_C_PASI,
- SE_C_SYU,
- SE_C_PIKON,
- /*0x66*/ SE_REAPOKE,
- /*0x67*/ SE_OP_BASYU,
- /*0x68*/ SE_BT_START,
- SE_DENDOU,
- SE_JIHANKI,
- SE_TAMA,
- SE_Z_SCROLL,
- /*0x6D*/ SE_Z_PAGE,
- /*0x6E*/ SE_PN_ON,
- /*0x6F*/ SE_PN_OFF,
- /*0x70*/ SE_Z_SEARCH,
- /*0x71*/ SE_TAMAGO,
- /*0x72*/ SE_TB_START,
- /*0x73*/ SE_TB_KON,
- /*0x74*/ SE_TB_KARA,
- /*0x75*/ SE_BIDORO,
- /*0x76*/ SE_W085,
- /*0x77*/ SE_W085B,
- /*0x78*/ SE_W231,
- /*0x79*/ SE_W171,
- /*0x7A*/ SE_W233,
- /*0x7B*/ SE_W233B,
- /*0x7C*/ SE_W145,
- /*0x7D*/ SE_W145B,
- /*0x7E*/ SE_W145C,
- /*0x7F*/ SE_W240,
- /*0x80*/ SE_W015,
- /*0x81*/ SE_W081,
- /*0x82*/ SE_W081B,
- /*0x83*/ SE_W088,
- /*0x84*/ SE_W016,
- /*0x85*/ SE_W016B,
- /*0x86*/ SE_W003,
- /*0x87*/ SE_W104,
- /*0x88*/ SE_W013,
- /*0x89*/ SE_W196,
- /*0x8A*/ SE_W086,
- /*0x8B*/ SE_W004,
- /*0x8C*/ SE_W025,
- /*0x8D*/ SE_W025B,
- SE_W152,
- SE_W026,
- SE_W172,
- SE_W172B,
- SE_W053,
- SE_W007,
- SE_W092,
- SE_W221,
- SE_W221B,
- SE_W052,
- SE_W036,
- SE_W059,
- SE_W059B,
- SE_W010,
- SE_W011,
- SE_W017,
- SE_W019,
- SE_W028,
- SE_W013B,
- SE_W044,
- SE_W029,
- SE_W057,
- SE_W056,
- SE_W250,
- SE_W030,
- SE_W039,
- SE_W054,
- SE_W077,
- SE_W020,
- SE_W082,
- SE_W047,
- SE_W195,
- SE_W006,
- SE_W091,
- SE_W146,
- SE_W120,
- SE_W153,
- SE_W071B,
- SE_W071,
- SE_W103,
- /*0xB6*/ SE_W062,
- /*0xB7*/ SE_W062B,
- /*0xB8*/ SE_W048,
- /*0xB9*/ SE_W187,
- /*0xBA*/ SE_W118,
- /*0xBB*/ SE_W155,
- /*0xBC*/ SE_W122,
- /*0xBD*/ SE_W060,
- /*0xBE*/ SE_W185,
- /*0xBF*/ SE_W014,
- /*0xC0*/ SE_W043,
- /*0xC1*/ SE_W207,
- /*0xC2*/ SE_W207B,
- /*0xC3*/ SE_W215,
- /*0xC4*/ SE_W109,
- /*0xC5*/ SE_W173,
- /*0xC6*/ SE_W280,
- /*0xC7*/ SE_W202,
- /*0xC8*/ SE_W060B,
- /*0xC9*/ SE_W076,
- /*0xCA*/ SE_W080,
- /*0xCB*/ SE_W100,
- /*0xCC*/ SE_W107,
- SE_W166,
- SE_W129,
- SE_W115,
- SE_W112,
- SE_W197,
- SE_W199,
- SE_W236,
- SE_W204,
- SE_W268,
- SE_W070,
- SE_W063,
- SE_W127,
- SE_W179,
- SE_W151,
- SE_W201,
- SE_W161,
- SE_W161B,
- SE_W227,
- SE_W227B,
- SE_W226,
- SE_W208,
- SE_W213,
- SE_W213B,
- SE_W234,
- SE_W260,
- SE_W328,
- SE_W320,
- SE_W255,
- SE_W291,
- SE_W089,
- SE_W239,
- SE_W230,
- SE_W281,
- SE_W327,
- SE_W287,
- SE_W257,
- SE_W253,
- SE_W258,
- SE_W322,
- SE_W298,
- SE_W287B,
- SE_W114,
- SE_W063B,
- BGM_STOP = 349,
- /*0x15E*/ BGM_TETSUJI,
- /*0x15F*/ BGM_FIELD13,
- /*0x160*/ BGM_KACHI22,
- /*0x161*/ BGM_KACHI2,
- /*0x162*/ BGM_KACHI3,
- /*0x163*/ BGM_KACHI5,
- /*0x164*/ BGM_PCC,
- /*0x165*/ BGM_NIBI,
- /*0x166*/ BGM_SUIKUN,
- /*0x167*/ BGM_DOORO1,
- /*0x168*/ BGM_DOORO_X1,
- /*0x169*/ BGM_DOORO_X3,
- /*0x16A*/ BGM_MACHI_S2,
- /*0x16B*/ BGM_MACHI_S4,
- /*0x16C*/ BGM_GIM,
- /*0x16D*/ BGM_NAMINORI,
- /*0x16E*/ BGM_DAN01,
- /*0x16F*/ BGM_FANFA1,
- /*0x170*/ BGM_ME_ASA,
- /*0x171*/ BGM_ME_BACHI,
- /*0x172*/ BGM_FANFA4,
- /*0x173*/ BGM_FANFA5,
- /*0x174*/ BGM_ME_WAZA,
- /*0x175*/ BGM_BIJYUTU,
- /*0x176*/ BGM_DOORO_X4,
- /*0x177*/ BGM_FUNE_KAN,
- /*0x178*/ BGM_ME_SHINKA,
- /*0x179*/ BGM_SHINKA,
- /*0x17A*/ BGM_ME_WASURE,
- /*0x17B*/ BGM_SYOUJOEYE,
- /*0x17C*/ BGM_BOYEYE,
- /*0x17D*/ BGM_DAN02,
- /*0x17E*/ BGM_MACHI_S3,
- /*0x17F*/ BGM_ODAMAKI,
- /*0x180*/ BGM_B_TOWER,
- /*0x181*/ BGM_SWIMEYE,
- /*0x182*/ BGM_DAN03,
- /*0x183*/ BGM_ME_KINOMI,
- /*0x184*/ BGM_ME_TAMA,
- /*0x185*/ BGM_ME_B_BIG,
- /*0x186*/ BGM_ME_B_SMALL,
- /*0x187*/ BGM_ME_ZANNEN,
- /*0x188*/ BGM_BD_TIME,
- /*0x189*/ BGM_TEST1,
- /*0x18A*/ BGM_TEST2,
- /*0x18B*/ BGM_TEST3,
- /*0x18C*/ BGM_TEST4,
- /*0x18D*/ BGM_TEST,
- /*0x18E*/ BGM_GOMACHI0,
- /*0x18F*/ BGM_GOTOWN,
- /*0x190*/ BGM_POKECEN,
- /*0x191*/ BGM_NEXTROAD,
- /*0x192*/ BGM_GRANROAD,
- /*0x193*/ BGM_CYCLING,
- /*0x194*/ BGM_FRIENDLY,
- /*0x195*/ BGM_MISHIRO,
- /*0x196*/ BGM_TOZAN,
- /*0x197*/ BGM_GIRLEYE,
- /*0x198*/ BGM_MINAMO,
- /*0x199*/ BGM_ASHROAD,
- /*0x19A*/ BGM_EVENT0,
- /*0x19B*/ BGM_DEEPDEEP,
- /*0x19C*/ BGM_KACHI1,
- /*0x19D*/ BGM_TITLE3,
- /*0x19E*/ BGM_DEMO1,
- /*0x19F*/ BGM_GIRL_SUP,
- /*0x1A0*/ BGM_HAGESHII,
- /*0x1A1*/ BGM_KAKKOII,
- /*0x1A2*/ BGM_KAZANBAI,
- /*0x1A3*/ BGM_AQA_0,
- /*0x1A4*/ BGM_TSURETEK,
- /*0x1A5*/ BGM_BOY_SUP,
- /*0x1A6*/ BGM_RAINBOW,
- /*0x1A7*/ BGM_AYASII,
- /*0x1A8*/ BGM_KACHI4,
- /*0x1A9*/ BGM_ROPEWAY,
- /*0x1AA*/ BGM_CASINO,
- /*0x1AB*/ BGM_HIGHTOWN,
- /*0x1AC*/ BGM_SAFARI,
- BGM_C_ROAD,
- BGM_AJITO,
- BGM_M_BOAT,
- BGM_M_DUNGON,
- BGM_FINECITY,
- BGM_MACHUPI,
- BGM_P_SCHOOL,
- BGM_DENDOU,
- BGM_TONEKUSA,
- BGM_MABOROSI,
- BGM_CON_FAN,
- BGM_CONTEST0,
- BGM_MGM0,
- BGM_T_BATTLE,
- BGM_OOAME,
- BGM_HIDERI,
- BGM_RUNECITY,
- BGM_CON_K,
- BGM_EIKOU_R,
- BGM_KARAKURI,
- BGM_HUTAGO,
- BGM_SITENNOU,
- BGM_YAMA_EYE,
- BGM_CONLOBBY,
- BGM_INTER_V,
- BGM_DAIGO,
- BGM_THANKFOR,
- BGM_END,
- /*0x1C9*/ BGM_BATTLE_FRONTIER, // human-readable names start here because we don't know the actual filenames
- BGM_BATTLE_ARENA,
- BGM_ME_BATTLE_POINTS, // ME_ as in messagebox? Used for KINOMI (berries) and stuff above
- BGM_ME_MATCH_CALL,
- BGM_BATTLE_PYRAMID,
- BGM_BATTLE_PYRAMID_SUMMIT,
- BGM_BATTLE_PALACE,
- BGM_FANFA_RAYQUAZA,
- BGM_BATTLE_TOWER,
- BGM_ME_BATTLE_SYMBOL,
- BGM_BATTLE_DOME_TOURNAMENT,
- BGM_BATTLE_PIKE,
- BGM_BATTLE_FACTORY,
- BGM_BATTLE_LEGENDARY,
- BGM_BATTLE_FRONTIER_BRAIN,
- BGM_BATTLE_MEW,
- BGM_BATTLE_DOME, // end of the human-readable names
- /*0x1DA*/ BGM_BATTLE27, // wild
- BGM_BATTLE31, // aqua/magma grunt
- BGM_BATTLE20, // trainer
- BGM_BATTLE32, // gym leader
- BGM_BATTLE33, // champion
- BGM_BATTLE36, // regi
- BGM_BATTLE34, // weather trio
- BGM_BATTLE35, // rival
- BGM_BATTLE38, // elite four
- BGM_BATTLE30, // aqua/magma leader
- /*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again!
- BGM_FRLG_GAMECORNER,
- BGM_FRLG_ROCKET_HIDEOUT,
- BGM_FRLG_GYM,
- BGM_FRLG_JIGGLYPUFF,
- BGM_FRLG_OPENING,
- BGM_FRLG_TITLE,
- BGM_FRLG_CINNABAR_ISLAND,
- BGM_FRLG_LAVENDER_TOWN,
- BGM_FRLG_HEALING_TEST,
- BGM_FRLG_BICYCLE,
- BGM_FRLG_SUSPICIOUS_EYE,
- BGM_FRLG_GIRL_EYE,
- BGM_FRLG_BOY_EYE,
- BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME,
- BGM_FRLG_VIRIDIAN_FOREST,
- BGM_FRLG_MT_MOON,
- BGM_FRLG_POKEMON_MANSION,
- BGM_FRLG_CREDITS,
- BGM_FRLG_ROUTE_1,
- BGM_FRLG_ROUTE_24,
- BGM_FRLG_ROUTE_3,
- BGM_FRLG_ROUTE_11,
- BGM_FRLG_INDIGO_PLATEAU,
- BGM_FRLG_BATTLE_LEADER,
- BGM_FRLG_BATTLE_TRAINER,
- BGM_FRLG_BATTLE_WILD_POKEMON,
- BGM_FRLG_BATTLE_CHAMPION,
- BGM_FRLG_PALLET_TOWN,
- BGM_FRLG_OAK_LAB,
- BGM_FRLG_PROF_OAK,
- BGM_FRLG_POKEMON_CENTER,
- BGM_FRLG_SS_ANNE,
- BGM_FRLG_SURF,
- BGM_FRLG_POKEMON_TOWER,
- BGM_FRLG_SILPH,
- BGM_FRLG_CERULEAN_CITY,
- BGM_FRLG_CELADON_CITY,
- BGM_FRLG_KACHI_TRAINER, // KACHI used in RS test - victory
- BGM_FRLG_KACHI_WILD_POKEMON,
- BGM_FRLG_KACHI_LEADER,
- BGM_FRLG_VERMILION_CITY,
- BGM_FRLG_VIRIDIAN_CITY,
- BGM_FRLG_RIVAL,
- BGM_FRLG_RIVAL_POSTBATTLE,
- BGM_FRLG_ME_POKEDEX_EVAL,
- BGM_FRLG_ME_KEYITEM,
- BGM_FRLG_FANFA_POKEMON_CAUGHT,
- BGM_FRLG_FANFA_TRAINERCARD_PHOTO,
- BGM_FRLG_GAMEFREAK_LOGO,
- BGM_FRLG_CAUGHT_POKEMON,
- BGM_FRLG_GAME_EXPLANATION_START,
- BGM_FRLG_GAME_EXPLANATION_MIDDLE,
- BGM_FRLG_GAME_EXPLANATION_END,
- BGM_FRLG_POKEMON_JUMP,
- BGM_FRLG_UNION_ROOM,
- BGM_FRLG_POKEMON_NETWORK_CENTER,
- BGM_FRLG_MYSTERY_GIFT,
- BGM_FRLG_DODRIO_BERRY_PICK,
- BGM_FRLG_MT_EMBER,
- BGM_FRLG_TEACHY_TV_EPISODE,
- BGM_FRLG_SEVII_ISLANDS,
- BGM_FRLG_TANOBY_RUINS,
- BGM_FRLG_ISLAND_ONE,
- BGM_FRLG_ISLAND_FOUR,
- BGM_FRLG_ISLAND_SIX,
- BGM_FRLG_FLUTE,
- BGM_FRLG_BATTLE_DEOXYS,
- BGM_FRLG_BATTLE_MEWTWO,
- BGM_FRLG_BATTLE_LEGENDARY,
- BGM_FRLG_LEADER_EYE,
- BGM_FRLG_DEOXYS_EYE,
- BGM_FRLG_TRAINER_TOWER,
- BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
- /*0x22E*/BGM_FRLG_TEACHY_TV,
-};
-
-#endif // GUARD_SONGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 4b7fafa2e..ea0c43fd1 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -237,6 +237,7 @@ SECTIONS {
asm/berry_pouch.o(.text);
asm/itemfinder.o(.text);
asm/buy_menu_helpers.o(.text);
+ src/slot_machine.o(.text);
asm/slot_machine.o(.text);
src/roamer.o(.text);
src/mystery_gift_menu.o(.text);
diff --git a/src/slot_machine.c b/src/slot_machine.c
new file mode 100644
index 000000000..41271b425
--- /dev/null
+++ b/src/slot_machine.c
@@ -0,0 +1,778 @@
+#include "global.h"
+#include "palette.h"
+#include "task.h"
+#include "main.h"
+#include "malloc.h"
+#include "sound.h"
+#include "coins.h"
+#include "quest_log.h"
+#include "overworld.h"
+#include "slot_machine.h"
+#include "menu.h"
+#include "random.h"
+#include "constants/songs.h"
+
+struct SlotMachineState
+{
+ MainCallback savedCallback;
+ u16 machineidx;
+ u16 field_06;
+ u16 field_08;
+ u16 slotRewardClass;
+ u8 filler_0C[2];
+ u16 bet;
+ u8 field_10;
+ u8 field_11;
+ bool32 field_14[3];
+ s16 field_20[3];
+ s16 field_26[3];
+ s16 field_2C[3];
+ s16 field_32[3];
+ u32 field_38;
+ u8 filler_3C[0x14];
+ u16 payout;
+};
+
+EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL;
+
+void sub_813F84C(struct SlotMachineState * ptr);
+void sub_813F898(void);
+void sub_813F92C(void);
+void sub_813F94C(void);
+void MainTask_SlotsGameLoop(u8 taskId);
+void MainTask_NoCoinsGameOver(u8 taskId);
+void MainTask_ShowHelp(u8 taskId);
+void MainTask_ConfirmExitGame(u8 taskId);
+void MainTask_DarnNoPayout(u8 taskId);
+void MainTask_WinHandlePayout(u8 taskId);
+void MainTask_ExitSlots(u8 taskId);
+static void SetMainTask(TaskFunc taskFunc);
+void sub_8140060(u8 taskId);
+void sub_8140148(void);
+void sub_814016C(u16 whichReel, u16 whichReel2);
+bool32 sub_81401A0(u16);
+void sub_81401F0(u16 whichReel);
+void sub_81403BC(u16 whichReel);
+void sub_81404B8(u16 whichReel);
+bool32 sub_814054C(s32, s32, s32, s32, s32);
+bool32 sub_81406E8(s32, s32, s32);
+bool32 sub_81408F4(s32, s32);
+void sub_81409B4(void);
+void sub_8140A70(void);
+u16 sub_8140A80(void);
+void sub_8140D7C(s16 *, s16 *);
+bool32 sub_814104C(void);
+void sub_8141094(void);
+void sub_8141148(u16 a0, u8 a1);
+bool32 sub_8141180(u8 a0);
+void sub_8141C30(u8, u8);
+
+extern const u8 gUnknown_8464890[][2];
+extern const u8 gUnknown_8464926[][21];
+
+void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback)
+{
+ ResetTasks();
+ sSlotMachineState = Alloc(sizeof(*sSlotMachineState));
+ if (sSlotMachineState == NULL)
+ SetMainCallback2(savedCallback);
+ else
+ {
+ if (machineIdx > 5)
+ machineIdx = 0;
+ sSlotMachineState->machineidx = machineIdx;
+ sSlotMachineState->savedCallback = savedCallback;
+ sub_813F84C(sSlotMachineState);
+ SetMainCallback2(sub_813F898);
+ }
+}
+
+void sub_813F84C(struct SlotMachineState * ptr)
+{
+ s32 i;
+
+ ptr->field_06 = 0;
+ ptr->bet = 0;
+ ptr->payout = 0;
+ // for whatever reason, the loop does not use the ptr param
+ for (i = 0; i < 3; i++)
+ {
+ sSlotMachineState->field_14[i] = FALSE;
+ sSlotMachineState->field_20[i] = 0;
+ sSlotMachineState->field_26[i] = 0;
+ sSlotMachineState->field_2C[i] = 21;
+ }
+}
+
+void sub_813F898(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+
+ switch (gMain.state)
+ {
+ case 0:
+ if (sub_814104C())
+ {
+ SetMainCallback2(sSlotMachineState->savedCallback);
+ sub_813F92C();
+ }
+ else
+ {
+ sub_8141148(0, 0);
+ gMain.state++;
+ }
+ break;
+ case 1:
+ if (!sub_8141180(0))
+ {
+ sSlotMachineState->field_10 = CreateTask(MainTask_SlotsGameLoop, 0);
+ sSlotMachineState->field_11 = CreateTask(sub_8140060, 1);
+ SetMainCallback2(sub_813F94C);
+ }
+ break;
+ }
+}
+
+void sub_813F92C(void)
+{
+ sub_8141094();
+ if (sSlotMachineState != NULL)
+ {
+ Free(sSlotMachineState);
+ sSlotMachineState = NULL;
+ }
+}
+
+void sub_813F94C(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void MainTask_SlotsGameLoop(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ if (GetCoins() == 0)
+ {
+ SetMainTask(MainTask_NoCoinsGameOver);
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ sSlotMachineState->bet++;
+ TakeCoins(1);
+ PlaySE(SE_T_KAMI2);
+ sub_8141148(8, 0);
+ sub_8141148(2, 1);
+ data[0] = 1;
+ }
+ else if (JOY_NEW(R_BUTTON))
+ {
+ s32 toAdd = 3 - sSlotMachineState->bet;
+ if (GetCoins() >= toAdd)
+ {
+ sSlotMachineState->bet = 3;
+ TakeCoins(toAdd);
+ }
+ else
+ {
+ sSlotMachineState->bet += GetCoins();
+ SetCoins(0);
+ }
+ PlaySE(SE_T_KAMI2);
+ sub_8141148(8, 0);
+ sub_8141148(2, 1);
+ data[0] = 1;
+ }
+ else if (JOY_NEW(A_BUTTON) && sSlotMachineState->bet != 0)
+ {
+ data[0] = 2;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ SetMainTask(MainTask_ConfirmExitGame);
+ }
+ else if (JOY_NEW(DPAD_RIGHT))
+ {
+ SetMainTask(MainTask_ShowHelp);
+ }
+ break;
+ case 1:
+ if (!sub_8141180(0) && !sub_8141180(1))
+ {
+ if (sSlotMachineState->bet == 3 || GetCoins() == 0)
+ data[0] = 2;
+ else
+ data[0] = 0;
+ }
+ break;
+ case 2:
+ sub_811539C();
+ sub_81409B4();
+ sub_8140148();
+ sSlotMachineState->field_06 = 0;
+ sub_8141148(3, 0);
+ data[0] = 3;
+ break;
+ case 3:
+ if (!sub_8141180(0))
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_JYUNI);
+ sub_814016C(sSlotMachineState->field_06, sSlotMachineState->field_06);
+ sub_8141C30(sSlotMachineState->field_06, 0);
+ data[0] = 4;
+ }
+ }
+ break;
+ case 4:
+ if (sub_81401A0(sSlotMachineState->field_06) == 0 && !sub_8141180(0))
+ {
+ sSlotMachineState->field_06++;
+ if (sSlotMachineState->field_06 >= 3)
+ {
+ sSlotMachineState->slotRewardClass = sub_8140A80();
+ sSlotMachineState->bet = 0;
+ sSlotMachineState->field_06 = 0;
+ if (sSlotMachineState->slotRewardClass == 0)
+ SetMainTask(MainTask_DarnNoPayout);
+ else
+ {
+ if (sSlotMachineState->slotRewardClass == 6)
+ IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
+ sub_8140A70();
+ SetMainTask(MainTask_WinHandlePayout);
+ }
+ }
+ else
+ data[0] = 3;
+ }
+ break;
+ }
+}
+
+void MainTask_NoCoinsGameOver(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8141148(9, 0);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_8141180(0))
+ data[0]++;
+ break;
+ case 2:
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
+ SetMainTask(MainTask_ExitSlots);
+ break;
+ }
+}
+
+void MainTask_ShowHelp(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8141148(14, 0);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_8141180(0))
+ data[0]++;
+ break;
+ case 2:
+ if (JOY_NEW(DPAD_LEFT))
+ {
+ sub_8141148(15, 0);
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (!sub_8141180(0))
+ SetMainTask(MainTask_SlotsGameLoop);
+ break;
+ }
+}
+
+void MainTask_ConfirmExitGame(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8141148(10, 0);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_8141180(0))
+ data[0]++;
+ break;
+ case 2:
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ GiveCoins(sSlotMachineState->bet);
+ sub_8141148(8, 0);
+ data[0] = 3;
+ break;
+ case 1:
+ case -1:
+ sub_8141148(11, 0);
+ data[0] = 4;
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_8141180(0))
+ SetMainTask(MainTask_ExitSlots);
+ break;
+ case 4:
+ if (!sub_8141180(0))
+ SetMainTask(MainTask_SlotsGameLoop);
+ break;
+ }
+}
+
+void MainTask_DarnNoPayout(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8141148(6, 0);
+ data[1] = 0;
+ data[0]++;
+ break;
+ case 1:
+ data[1]++;
+ if (data[1] > 60)
+ {
+ sub_8141148(7, 0);
+ sub_8141148(2, 1);
+ sub_8141148(13, 2);
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!sub_8141180(0) && !sub_8141180(1) && !sub_8141180(2))
+ SetMainTask(MainTask_SlotsGameLoop);
+ break;
+ }
+}
+
+void MainTask_WinHandlePayout(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ if (sSlotMachineState->slotRewardClass == 5 || sSlotMachineState->slotRewardClass == 6)
+ PlayFanfare(MUS_ME_B_BIG);
+ else
+ PlayFanfare(MUS_ME_B_SMALL);
+ sub_8141148(8, 0);
+ sub_8141148(4, 1);
+ data[1] = 8;
+ data[0]++;
+ break;
+ case 1:
+ data[1]++;
+ if (data[1] > 120)
+ {
+ data[1] = 8;
+ if (JOY_HELD(A_BUTTON))
+ data[1] = 2;
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!sub_8141180(0))
+ {
+ if (IsFanfareTaskInactive() && JOY_NEW(START_BUTTON))
+ {
+ GiveCoins(sSlotMachineState->payout);
+ sSlotMachineState->payout = 0;
+ }
+ else
+ {
+ data[1]--;
+ if (data[1] == 0)
+ {
+ if (IsFanfareTaskInactive())
+ PlaySE(SE_PIN);
+ if (sSlotMachineState->payout != 0)
+ {
+ GiveCoins(1);
+ sSlotMachineState->payout--;
+ }
+ data[1] = 8;
+ if (JOY_HELD(A_BUTTON))
+ data[1] = 2;
+ }
+ }
+ sub_8141148(8, 0);
+ if (sSlotMachineState->payout == 0)
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (IsFanfareTaskInactive() && !sub_8141180(0))
+ {
+ sub_8141148(5, 0);
+ data[0]++;
+ }
+ break;
+ case 4:
+ if (!sub_8141180(0))
+ {
+ sub_8141148(2, 0);
+ sub_8141148(13, 1);
+ data[0]++;
+ }
+ break;
+ case 5:
+ if (!sub_8141180(0) && !sub_8141180(1))
+ SetMainTask(MainTask_SlotsGameLoop);
+ break;
+ }
+}
+
+void MainTask_ExitSlots(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8141148(1, 0);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_8141180(0))
+ {
+ SetMainCallback2(sSlotMachineState->savedCallback);
+ sub_813F92C();
+ }
+ break;
+ }
+}
+
+static void SetMainTask(TaskFunc taskFunc)
+{
+ gTasks[sSlotMachineState->field_10].func = taskFunc;
+ gTasks[sSlotMachineState->field_10].data[0] = 0;
+}
+
+void sub_8140060(u8 taskId)
+{
+ // taskId is never used
+
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (sSlotMachineState->field_14[i] || sSlotMachineState->field_26[i] != 0)
+ {
+ if (sSlotMachineState->field_26[i] != 0 || sSlotMachineState->field_20[i] != sSlotMachineState->field_2C[i])
+ {
+ sSlotMachineState->field_26[i]++;
+ if (sSlotMachineState->field_26[i] > 2)
+ {
+ sSlotMachineState->field_26[i] = 0;
+ sSlotMachineState->field_20[i]--;
+ if (sSlotMachineState->field_20[i] < 0)
+ sSlotMachineState->field_20[i] = 20;
+ }
+ if (sSlotMachineState->field_20[i] != sSlotMachineState->field_2C[i])
+ continue;
+ }
+ sSlotMachineState->field_2C[i] = 21;
+ sSlotMachineState->field_14[i] = FALSE;
+ }
+ }
+ sub_8140D7C(sSlotMachineState->field_20, sSlotMachineState->field_26);
+}
+
+void sub_8140148(void)
+{
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ sSlotMachineState->field_14[i] = TRUE;
+ }
+}
+
+void sub_814016C(u16 whichReel, u16 whichReel2)
+{
+ switch (whichReel2)
+ {
+ case 0:
+ sub_81401F0(whichReel);
+ break;
+ case 1:
+ sub_81403BC(whichReel);
+ break;
+ case 2:
+ sub_81404B8(whichReel);
+ break;
+ }
+}
+
+bool32 sub_81401A0(u16 whichReel)
+{
+ return sSlotMachineState->field_14[whichReel];
+}
+
+s16 sub_81401B4(u16 whichReel)
+{
+ s16 position = sSlotMachineState->field_20[whichReel];
+ if (sSlotMachineState->field_26[whichReel] != 0)
+ {
+ position--;
+ if (position < 0)
+ position = 20;
+ }
+ return position;
+}
+
+void sub_81401F0(u16 whichReel)
+{
+ s32 i, j;
+ s16 r2;
+ u8 sp0[5];
+ s16 sp0C = sub_81401B4(whichReel);
+ s32 r8 = 0;
+
+ if (sSlotMachineState->field_08 == 0 && whichReel == 0)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0, r2 = sp0C - i + 1; j < 3; j++, r2++)
+ {
+ if (r2 >= 21)
+ r2 = 0;
+ if (sub_81408F4(1, gUnknown_8464926[whichReel][r2]))
+ break;
+ }
+ if (j == 3)
+ {
+ sp0[r8] = i;
+ r8++;
+ }
+ }
+ }
+ else if (sSlotMachineState->field_08 != 1 || whichReel == 0)
+ {
+ for (i = 0, r2 = sp0C + 1; i < 3; i++, r2++)
+ {
+ if (r2 >= 21)
+ r2 = 0;
+ if (sub_81408F4(sSlotMachineState->field_08, gUnknown_8464926[whichReel][r2]))
+ {
+ sp0[0] = 0;
+ r8 = 1;
+ break;
+ }
+ }
+ for (i = 0, r2 = sp0C; i < 4; i++, r2--)
+ {
+ if (r2 < 0)
+ r2 = 20;
+ if (sub_81408F4(sSlotMachineState->field_08, gUnknown_8464926[whichReel][r2]))
+ {
+ sp0[r8] = i + 1;
+ r8++;
+ }
+ }
+ }
+ if (r8 == 0)
+ {
+ r2 = Random() % 5;
+ }
+ else
+ {
+ r2 = sp0[Random() % r8];
+ }
+ r2 = sp0C - r2;
+ if (r2 < 0)
+ r2 += 21;
+ sSlotMachineState->field_32[0] = whichReel;
+ sSlotMachineState->field_2C[whichReel] = r2;
+}
+
+void sub_81403BC(u16 whichReel)
+{
+ s16 r2, r4, r7, sp10;
+ s32 i;
+ s32 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;
+ s32 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;
+}
+
+bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4)
+{
+ s32 i;
+ s32 r5;
+ u8 sp0[9] = {};
+
+ for (i = 0; i < 9; i++)
+ sp0[i] = 7;
+
+ for (i = 0; i < 3; i++)
+ {
+ sp0[3 * a0 + i] = gUnknown_8464926[a0][a1];
+ sp0[3 * a2 + i] = gUnknown_8464926[a2][a3];
+ a1++;
+ if (a1 >= 21)
+ a1 = 0;
+ a3++;
+ if (a3 >= 21)
+ a3 = 0;
+ }
+
+ switch (a4)
+ {
+ case 0:
+ for (i = 0; i < 3; i++)
+ {
+ if (sub_81408F4(1, sp0[i]))
+ return FALSE;
+ }
+ for (i = 0; i < 15; i++)
+ {
+ if (sp0[gUnknown_8464890[i][0]] == sp0[gUnknown_8464890[i][1]])
+ return TRUE;
+ }
+ return FALSE;
+ case 1:
+ if (a0 == 0 || a2 == 0)
+ {
+ if (a0 == 1 || a2 == 1)
+ {
+ for (i = 0; i < 15; i += 3)
+ {
+ if (sp0[gUnknown_8464890[i][0]] == sp0[gUnknown_8464890[i][1]])
+ return FALSE;
+ }
+ }
+ for (i = 0; i < 3; i++)
+ {
+ if (sub_81408F4(a4, sp0[i]))
+ return TRUE;
+ }
+ return FALSE;
+ }
+ else
+ return TRUE;
+ case 2:
+ if (a0 == 2 || a2 == 2)
+ {
+ for (i = 0; i < 9; i++)
+ {
+ if (sub_81408F4(a4, sp0[i]))
+ return TRUE;
+ }
+ return FALSE; // wrong level
+ }
+ }
+ for (i = 0; i < 15; i++)
+ {
+ if (sp0[gUnknown_8464890[i][0]] == sp0[gUnknown_8464890[i][1]] && sub_81408F4(a4, sp0[gUnknown_8464890[i][0]]))
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index bd5b9c7ea..6c6daf803 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "task.h"
#include "malloc.h"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index a5151ebc0..fa2499ace 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1589,8 +1589,8 @@ gUnknown_203F38C: @ 203F38C
gUnknown_203F39C: @ 203F39C
.space 0x4
-gUnknown_203F3A0: @ 203F3A0
- .space 0x4
+ .align 2
+ .include "src/slot_machine.o"
gUnknown_203F3A4: @ 203F3A4
.space 0x4