summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/slot_machine.s4358
-rw-r--r--data/slot_machine.s95
-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/menu.h3
-rw-r--r--include/new_menu_helpers.h1
-rw-r--r--include/quest_log.h1
-rw-r--r--include/slot_machine.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/slot_machine.c2724
-rw-r--r--src/vs_seeker.c2
-rw-r--r--sym_ewram.txt7
38 files changed, 3111 insertions, 4452 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index c5f6d2b72..e5aa4ff05 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,4364 +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}
- 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 @ =gUnknown_203F3A0
- 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 gUnknown_203F3A0
-_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 @ =gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 gUnknown_203F3A0
-_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 @ =gUnknown_203F3A0
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0x8]
- bx lr
- .align 2, 0
-_08140A7C: .4byte gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 @ =gUnknown_203F3A0
- 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 gUnknown_203F3A0
-_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 @ =gUnknown_203F3A0
- 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 gUnknown_203F3A0
-_08140BD8: .4byte gUnknown_8464966
- thumb_func_end sub_8140A80
-
- thumb_func_start sub_8140BDC
-sub_8140BDC: @ 8140BDC
- ldr r0, _08140BE8 @ =gUnknown_203F3A0
- ldr r0, [r0]
- adds r0, 0x50
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_08140BE8: .4byte gUnknown_203F3A0
- thumb_func_end sub_8140BDC
-
- thumb_func_start sub_8140BEC
-sub_8140BEC: @ 8140BEC
- ldr r0, _08140BF4 @ =gUnknown_203F3A0
- ldr r0, [r0]
- ldrb r0, [r0, 0xE]
- bx lr
- .align 2, 0
-_08140BF4: .4byte gUnknown_203F3A0
- thumb_func_end sub_8140BEC
-
- thumb_func_start sub_8140BF8
-sub_8140BF8: @ 8140BF8
- ldr r1, _08140C08 @ =gUnknown_203F3A0
- ldr r1, [r1]
- lsls r0, 2
- adds r1, 0x3C
- adds r1, r0
- ldr r0, [r1]
- bx lr
- .align 2, 0
-_08140C08: .4byte gUnknown_203F3A0
- 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 LoadCompressedSpriteSheet
- 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
-sub_8140D7C: @ 8140D7C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r3, r0, 0
- movs r2, 0
- ldr r0, _08140E34 @ =gUnknown_203F3A4
- mov r8, r0
-_08140D90:
- movs r4, 0
- ldrsh r6, [r3, r4]
- movs r4, 0
- ldrsh r0, [r1, r4]
- lsls r0, 3
- mov r10, r0
- lsls r0, r2, 2
- adds r3, 0x2
- str r3, [sp]
- adds r1, 0x2
- str r1, [sp, 0x4]
- adds r1, r2, 0x1
- str r1, [sp, 0x8]
- adds r0, r2
- lsls r0, 2
- adds r2, r0
- mov r9, r2
- adds r5, r0, 0
- movs r7, 0x4
-_08140DB6:
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0xC
- adds r1, r5
- ldr r0, [r1]
- mov r3, r10
- strh r3, [r0, 0x26]
- ldr r2, _08140E38 @ =gUnknown_8464926
- mov r4, r9
- adds r0, r6, r4
- adds r0, r2
- ldrb r4, [r0]
- ldr r0, [r1]
- adds r1, r4, 0
- bl StartSpriteAnim
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0xC
- adds r0, r5
- ldr r0, [r0]
- adds r1, r4, 0
- bl StartSpriteAnim
- ldr r0, _08140E3C @ =gUnknown_8465608
- lsls r4, 1
- adds r4, r0
- ldrh r0, [r4]
- bl IndexOfSpritePaletteTag
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0xC
- adds r1, r5
- ldr r3, [r1]
- lsls r0, 4
- ldrb r2, [r3, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x5]
- adds r6, 0x1
- cmp r6, 0x14
- ble _08140E10
- movs r6, 0
-_08140E10:
- adds r5, 0x4
- subs r7, 0x1
- cmp r7, 0
- bge _08140DB6
- ldr r3, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- cmp r2, 0x2
- ble _08140D90
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08140E34: .4byte gUnknown_203F3A4
-_08140E38: .4byte gUnknown_8464926
-_08140E3C: .4byte gUnknown_8465608
- thumb_func_end sub_8140D7C
-
- thumb_func_start sub_8140E40
-sub_8140E40: @ 8140E40
- push {lr}
- ldr r0, _08140E68 @ =0x04000006
- ldrh r0, [r0]
- adds r3, r0, 0
- subs r3, 0x2B
- cmp r3, 0x53
- bhi _08140E7C
- ldr r0, _08140E6C @ =gUnknown_203F3A4
- ldr r0, [r0]
- ldr r2, [r0, 0x70]
- ldr r1, _08140E70 @ =gUnknown_8465616
- lsls r0, r3, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- ldr r1, _08140E74 @ =0x04000054
- ldr r0, _08140E78 @ =gUnknown_84656D6
- adds r0, r3, r0
- ldrb r0, [r0]
- b _08140E8E
- .align 2, 0
-_08140E68: .4byte 0x04000006
-_08140E6C: .4byte gUnknown_203F3A4
-_08140E70: .4byte gUnknown_8465616
-_08140E74: .4byte 0x04000054
-_08140E78: .4byte gUnknown_84656D6
-_08140E7C:
- ldr r0, _08140E94 @ =gUnknown_203F3A4
- ldr r0, [r0]
- ldr r1, [r0, 0x70]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08140E98 @ =0x04000054
- movs r0, 0
-_08140E8E:
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08140E94: .4byte gUnknown_203F3A4
-_08140E98: .4byte 0x04000054
- thumb_func_end sub_8140E40
-
- thumb_func_start sub_8140E9C
-sub_8140E9C: @ 8140E9C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r5, 0
- ldr r0, _08140F20 @ =gUnknown_846587C
- mov r10, r0
- ldr r0, _08140F24 @ =gUnknown_203F3A4
- mov r9, r0
- ldr r0, _08140F28 @ =gSprites
- mov r8, r0
- movs r7, 0x85
- lsls r7, 16
- movs r6, 0xAA
- lsls r6, 15
-_08140EBC:
- asrs r1, r6, 16
- mov r0, r10
- movs r2, 0x1E
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- mov r0, r9
- ldr r1, [r0]
- lsls r4, r5, 2
- adds r1, 0x48
- adds r1, r4
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- add r0, r8
- str r0, [r1]
- asrs r1, r7, 16
- mov r0, r10
- movs r2, 0x1E
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- mov r0, r9
- ldr r1, [r0]
- adds r1, 0x58
- adds r1, r4
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- add r0, r8
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 11
- adds r7, r0
- adds r6, r0
- adds r5, 0x1
- cmp r5, 0x3
- ble _08140EBC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08140F20: .4byte gUnknown_846587C
-_08140F24: .4byte gUnknown_203F3A4
-_08140F28: .4byte gSprites
- thumb_func_end sub_8140E9C
-
- thumb_func_start sub_8140F2C
-sub_8140F2C: @ 8140F2C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- bl sub_8140BDC
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- movs r6, 0xFA
- lsls r6, 2
- movs r7, 0
- ldr r0, _08140FC0 @ =gUnknown_203F3A4
- mov r10, r0
-_08140F54:
- mov r0, r9
- adds r1, r6, 0
- bl __divsi3
- adds r4, r0, 0
- mov r1, r10
- ldr r0, [r1]
- lsls r5, r7, 2
- adds r0, 0x48
- adds r0, r5
- ldr r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0
- muls r0, r6
- mov r1, r9
- subs r1, r0
- mov r9, r1
- mov r0, r8
- adds r1, r6, 0
- bl __divsi3
- adds r4, r0, 0
- mov r1, r10
- ldr r0, [r1]
- adds r0, 0x58
- adds r0, r5
- ldr r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0
- muls r0, r6
- mov r1, r8
- subs r1, r0
- mov r8, r1
- adds r0, r6, 0
- movs r1, 0xA
- bl __divsi3
- adds r6, r0, 0
- adds r7, 0x1
- cmp r7, 0x3
- ble _08140F54
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08140FC0: .4byte gUnknown_203F3A4
- thumb_func_end sub_8140F2C
-
- thumb_func_start sub_8140FC4
-sub_8140FC4: @ 8140FC4
- push {r4-r6,lr}
- ldr r6, _08141014 @ =gUnknown_84658D8
- adds r0, r6, 0
- movs r1, 0x10
- movs r2, 0x88
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r5, _08141018 @ =gUnknown_203F3A4
- ldr r1, [r5]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r4, _0814101C @ =gSprites
- adds r0, r4
- str r0, [r1, 0x68]
- adds r0, r6, 0
- movs r1, 0xE0
- movs r2, 0x88
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, [r5]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r4
- str r0, [r1, 0x6C]
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08141014: .4byte gUnknown_84658D8
-_08141018: .4byte gUnknown_203F3A4
-_0814101C: .4byte gSprites
- thumb_func_end sub_8140FC4
-
- thumb_func_start sub_8141020
-sub_8141020: @ 8141020
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r6, _08141048 @ =gUnknown_203F3A4
-_0814102A:
- ldr r0, [r6]
- lsls r1, r4, 2
- adds r0, 0x68
- adds r0, r1
- ldr r0, [r0]
- adds r1, r5, 0
- bl StartSpriteAnim
- adds r4, 0x1
- cmp r4, 0x1
- ble _0814102A
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08141048: .4byte gUnknown_203F3A4
- thumb_func_end sub_8141020
-
- thumb_func_start sub_814104C
-sub_814104C: @ 814104C
- push {r4,lr}
- ldr r0, _0814108C @ =0x0000285c
- bl Alloc
- adds r4, r0, 0
- cmp r4, 0
- beq _08141082
- ldr r2, _08141090 @ =sub_81410CC
- movs r1, 0
- adds r0, r4, 0
- adds r0, 0x1C
-_08141062:
- strb r1, [r0, 0x3]
- subs r0, 0x4
- cmp r0, r4
- bge _08141062
- movs r0, 0
- str r0, [r4, 0x28]
- adds r0, r2, 0
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- adds r2, r4, 0
- bl SetWordTaskArg
-_08141082:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0814108C: .4byte 0x0000285c
-_08141090: .4byte sub_81410CC
- thumb_func_end sub_814104C
-
- thumb_func_start sub_8141094
-sub_8141094: @ 8141094
- push {r4,lr}
- ldr r4, _081410C8 @ =sub_81410CC
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _081410BA
- bl sub_814112C
- bl Free
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_081410BA:
- bl sub_8140C50
- bl FreeAllWindowBuffers
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081410C8: .4byte sub_81410CC
- thumb_func_end sub_8141094
-
- thumb_func_start sub_81410CC
-sub_81410CC: @ 81410CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetWordTaskArg
- adds r6, r0, 0
- ldr r0, _08141114 @ =gUnknown_84658F0
- mov r8, r0
- adds r4, r6, 0x2
- adds r5, r6, 0
- movs r7, 0x7
-_081410E8:
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08141100
- ldrh r0, [r5]
- lsls r0, 2
- add r0, r8
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r6, 0
- bl _call_via_r2
- strb r0, [r4, 0x1]
-_08141100:
- adds r4, 0x4
- adds r5, 0x4
- subs r7, 0x1
- cmp r7, 0
- bge _081410E8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08141114: .4byte gUnknown_84658F0
- thumb_func_end sub_81410CC
-
- thumb_func_start sub_8141118
-sub_8141118: @ 8141118
- push {lr}
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- pop {r0}
- bx r0
- thumb_func_end sub_8141118
-
- thumb_func_start sub_814112C
-sub_814112C: @ 814112C
- push {lr}
- ldr r0, _08141144 @ =sub_81410CC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetWordTaskArg
- pop {r1}
- bx r1
- .align 2, 0
-_08141144: .4byte sub_81410CC
- thumb_func_end sub_814112C
-
- thumb_func_start sub_8141148
-sub_8141148: @ 8141148
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- bl sub_814112C
- adds r1, r0, 0
- lsls r5, 2
- adds r5, r1, r5
- movs r0, 0
- strh r4, [r5]
- strb r0, [r5, 0x2]
- ldr r0, _0814117C @ =gUnknown_84658F0
- lsls r4, 2
- adds r4, r0
- adds r0, r5, 0x2
- ldr r2, [r4]
- bl _call_via_r2
- strb r0, [r5, 0x3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814117C: .4byte gUnknown_84658F0
- thumb_func_end sub_8141148
-
- thumb_func_start sub_8141180
-sub_8141180: @ 8141180
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_814112C
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0, 0x3]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141180
-
- thumb_func_start sub_8141198
-sub_8141198: @ 8141198
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r7, r0, 0
- mov r8, r1
- ldrb r6, [r7]
- cmp r6, 0x1
- beq _081411D0
- cmp r6, 0x1
- bgt _081411B4
- cmp r6, 0
- beq _081411C2
- b _08141450
-_081411B4:
- cmp r6, 0x2
- bne _081411BA
- b _081413E4
-_081411BA:
- cmp r6, 0x3
- bne _081411C0
- b _08141436
-_081411C0:
- b _08141450
-_081411C2:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- b _0814142E
-_081411D0:
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r1, 0xE0
- lsls r1, 19
- movs r2, 0x80
- lsls r2, 3
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- movs r1, 0xC0
- lsls r1, 19
- movs r0, 0
- movs r2, 0x20
- movs r3, 0x1
- bl RequestDma3Fill
- ldr r1, _0814139C @ =0x0600c000
- movs r0, 0
- movs r2, 0x20
- movs r3, 0x1
- bl RequestDma3Fill
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl ResetBgPositions
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _081413A0 @ =gUnknown_8466B10
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r0, _081413A4 @ =gUnknown_8466B20
- bl InitWindows
- ldr r1, _081413A8 @ =0x0000205c
- add r1, r8
- movs r0, 0x3
- bl SetBgTilemapBuffer
- movs r4, 0x20
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- bl ResetTempTileDataBuffers
- ldr r1, _081413AC @ =gUnknown_84659D0
- movs r5, 0
- str r5, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r1, _081413B0 @ =gUnknown_846653C
- str r5, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0xC0
- bl DecompressAndCopyTileDataToVram
- ldr r1, _081413B4 @ =0x0000185c
- add r1, r8
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, _081413B8 @ =gUnknown_84661D4
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, _081413BC @ =gUnknown_8465930
- movs r1, 0
- movs r2, 0xA0
- bl LoadPalette
- ldr r0, _081413C0 @ =gUnknown_84664BC
- movs r1, 0x50
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _081413C4 @ =gUnknown_84665C0
- movs r1, 0x70
- movs r2, 0x60
- bl LoadPalette
- ldr r1, _081413C8 @ =0x00007fde
- add r0, sp, 0xC
- strh r1, [r0]
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD0
- bl LoadUserWindowBorderGfx
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xF0
- bl sub_814FDA0
- ldr r1, _081413CC @ =0x0000085c
- add r1, r8
- movs r0, 0
- bl SetBgTilemapBuffer
- str r4, [sp]
- movs r0, 0x1E
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _081413D0 @ =gUnknown_8466620
- str r5, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r1, _081413D4 @ =gUnknown_8466998
- str r6, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl stdpal_get
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x1
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0x1
- bl PutWindowTilemap
- ldr r4, _081413D8 @ =gUnknown_841B779
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- movs r2, 0xEC
- subs r2, r0
- add r1, sp, 0x10
- movs r0, 0xF
- strb r0, [r1]
- strb r6, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- lsls r2, 24
- lsrs r2, 24
- str r1, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl AddTextPrinterParameterized3
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r1, 0x83
- lsls r1, 5
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0x50
- movs r1, 0xF8
- bl SetGpuReg
- bl sub_8140C0C
- bl sub_8140CA0
- bl sub_8140E9C
- bl sub_8140FC4
- bl sub_8140F2C
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, _081413DC @ =sub_8141118
- bl SetVBlankCallback
- ldr r0, _081413E0 @ =sub_8140E40
- bl SetHBlankCallback
- b _0814142E
- .align 2, 0
-_0814139C: .4byte 0x0600c000
-_081413A0: .4byte gUnknown_8466B10
-_081413A4: .4byte gUnknown_8466B20
-_081413A8: .4byte 0x0000205c
-_081413AC: .4byte gUnknown_84659D0
-_081413B0: .4byte gUnknown_846653C
-_081413B4: .4byte 0x0000185c
-_081413B8: .4byte gUnknown_84661D4
-_081413BC: .4byte gUnknown_8465930
-_081413C0: .4byte gUnknown_84664BC
-_081413C4: .4byte gUnknown_84665C0
-_081413C8: .4byte 0x00007fde
-_081413CC: .4byte 0x0000085c
-_081413D0: .4byte gUnknown_8466620
-_081413D4: .4byte gUnknown_8466998
-_081413D8: .4byte gUnknown_841B779
-_081413DC: .4byte sub_8141118
-_081413E0: .4byte sub_8140E40
-_081413E4:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08141450
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x1
- bl HideBg
- bl sub_8141B34
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- str r5, [sp]
- adds r0, r4, 0
- adds r1, r4, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x3
- bl EnableInterrupts
-_0814142E:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _08141450
-_08141436:
- bl UpdatePaletteFade
- ldr r0, _0814144C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08141450
- movs r0, 0
- b _08141452
- .align 2, 0
-_0814144C: .4byte gPaletteFade
-_08141450:
- movs r0, 0x1
-_08141452:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8141198
-
- thumb_func_start sub_8141460
-sub_8141460: @ 8141460
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08141472
- cmp r0, 0x1
- beq _0814148A
- b _081414A0
-_08141472:
- movs r1, 0x1
- negs r1, r1
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _081414A0
-_0814148A:
- ldr r0, _0814149C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081414A0
- movs r0, 0
- b _081414A2
- .align 2, 0
-_0814149C: .4byte gPaletteFade
-_081414A0:
- movs r0, 0x1
-_081414A2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141460
-
- thumb_func_start sub_81414AC
-sub_81414AC: @ 81414AC
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _081414BC
- cmp r0, 0x1
- beq _081414D4
- b _081414E2
-_081414BC:
- movs r0, 0x2
- bl GetBgTilemapBuffer
- bl sub_8141834
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _081414E2
-_081414D4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081414E2
- movs r0, 0
- b _081414E4
-_081414E2:
- movs r0, 0x1
-_081414E4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81414AC
-
- thumb_func_start sub_81414EC
-sub_81414EC: @ 81414EC
- push {lr}
- movs r0, 0x1
- bl sub_8141020
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_81414EC
-
- thumb_func_start sub_81414FC
-sub_81414FC: @ 81414FC
- push {lr}
- movs r0, 0x2
- bl sub_8141020
- ldr r0, _08141514 @ =sub_814191C
- movs r1, 0x3
- bl CreateTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08141514: .4byte sub_814191C
- thumb_func_end sub_81414FC
-
- thumb_func_start sub_8141518
-sub_8141518: @ 8141518
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08141528
- cmp r0, 0x1
- beq _08141534
- b _08141550
-_08141528:
- bl sub_8141AB0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08141550
-_08141534:
- ldr r0, _0814154C @ =sub_814191C
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08141550
- movs r0, 0
- bl sub_8141020
- movs r0, 0
- b _08141552
- .align 2, 0
-_0814154C: .4byte sub_814191C
-_08141550:
- movs r0, 0x1
-_08141552:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141518
-
- thumb_func_start sub_8141558
-sub_8141558: @ 8141558
- push {lr}
- movs r0, 0x3
- bl sub_8141020
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8141558
-
- thumb_func_start sub_8141568
-sub_8141568: @ 8141568
- push {lr}
- movs r0, 0
- bl sub_8141020
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8141568
-
- thumb_func_start sub_8141578
-sub_8141578: @ 8141578
- push {lr}
- bl sub_8140F2C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8141578
-
- thumb_func_start sub_8141584
-sub_8141584: @ 8141584
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08141594
- cmp r0, 0x1
- beq _081415B0
- b _081415BE
-_08141594:
- ldr r0, _081415AC @ =gUnknown_841B747
- bl sub_81417E4
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _081415BE
- .align 2, 0
-_081415AC: .4byte gUnknown_841B747
-_081415B0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081415BE
- movs r0, 0
- b _081415C0
-_081415BE:
- movs r0, 0x1
-_081415C0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141584
-
- thumb_func_start sub_81415C8
-sub_81415C8: @ 81415C8
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _081415D8
- cmp r0, 0x1
- beq _081415F8
- b _08141606
-_081415D8:
- ldr r0, _081415F4 @ =gUnknown_841B76B
- bl sub_81417E4
- movs r0, 0
- bl sub_8141AD8
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08141606
- .align 2, 0
-_081415F4: .4byte gUnknown_841B76B
-_081415F8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08141606
- movs r0, 0
- b _08141608
-_08141606:
- movs r0, 0x1
-_08141608:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81415C8
-
- thumb_func_start sub_8141610
-sub_8141610: @ 8141610
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08141620
- cmp r0, 0x1
- beq _08141638
- b _08141646
-_08141620:
- bl sub_8141828
- bl sub_8141B18
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08141646
-_08141638:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08141646
- movs r0, 0
- b _08141648
-_08141646:
- movs r0, 0x1
-_08141648:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141610
-
- thumb_func_start sub_8141650
-sub_8141650: @ 8141650
- push {r4,lr}
- adds r4, r0, 0
- ldrb r2, [r4]
- cmp r2, 0
- beq _08141660
- cmp r2, 0x1
- beq _08141678
- b _08141686
-_08141660:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- bl sub_8141BA0
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08141686
-_08141678:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08141686
- movs r0, 0
- b _08141688
-_08141686:
- movs r0, 0x1
-_08141688:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141650
-
- thumb_func_start sub_8141690
-sub_8141690: @ 8141690
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _081416A0
- cmp r0, 0x1
- beq _081416B2
- b _081416C0
-_081416A0:
- bl sub_8141BE4
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _081416C0
-_081416B2:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081416C0
- movs r0, 0
- b _081416C2
-_081416C0:
- movs r0, 0x1
-_081416C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141690
-
- thumb_func_start sub_81416C8
-sub_81416C8: @ 81416C8
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- ldrb r4, [r6]
- cmp r4, 0x1
- beq _08141724
- cmp r4, 0x1
- bgt _081416DE
- cmp r4, 0
- beq _081416E4
- b _0814175A
-_081416DE:
- cmp r4, 0x2
- beq _08141756
- b _0814175A
-_081416E4:
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3D
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0xA0
- bl SetGpuReg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x6
- bl PlaySE
- str r4, [r5, 0x24]
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _0814175A
-_08141724:
- ldr r0, [r5, 0x24]
- adds r0, 0x10
- str r0, [r5, 0x24]
- cmp r0, 0xFF
- ble _0814173A
- movs r0, 0x80
- lsls r0, 1
- str r0, [r5, 0x24]
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_0814173A:
- ldr r0, [r5, 0x24]
- movs r1, 0x80
- lsls r1, 1
- subs r1, r0
- lsls r1, 8
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgX
- ldrh r1, [r5, 0x24]
- movs r0, 0x40
- bl SetGpuReg
- b _0814175A
-_08141756:
- movs r0, 0
- b _0814175C
-_0814175A:
- movs r0, 0x1
-_0814175C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81416C8
-
- thumb_func_start sub_8141764
-sub_8141764: @ 8141764
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _08141790
- cmp r0, 0x1
- bgt _0814177A
- cmp r0, 0
- beq _08141784
- b _081417DC
-_0814177A:
- cmp r0, 0x2
- beq _081417C0
- cmp r0, 0x3
- beq _081417D8
- b _081417DC
-_08141784:
- movs r0, 0x6
- bl PlaySE
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08141790:
- ldr r0, [r5, 0x24]
- subs r0, 0x10
- str r0, [r5, 0x24]
- cmp r0, 0
- bgt _081417A4
- movs r0, 0
- str r0, [r5, 0x24]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_081417A4:
- ldr r0, [r5, 0x24]
- movs r1, 0x80
- lsls r1, 1
- subs r1, r0
- lsls r1, 8
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgX
- ldrh r1, [r5, 0x24]
- movs r0, 0x40
- bl SetGpuReg
- b _081417DC
-_081417C0:
- movs r0, 0x1
- bl HideBg
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _081417DC
-_081417D8:
- movs r0, 0
- b _081417DE
-_081417DC:
- movs r0, 0x1
-_081417DE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8141764
-
- thumb_func_start sub_81417E4
-sub_81417E4: @ 81417E4
- push {r4,lr}
- sub sp, 0x14
- adds r4, r0, 0
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xF
- bl DrawTextBorderOuter
- movs r1, 0x2
- str r1, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r0, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized5
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81417E4
-
- thumb_func_start sub_8141828
-sub_8141828: @ 8141828
- push {lr}
- movs r0, 0
- bl rbox_fill_rectangle
- pop {r0}
- bx r0
- thumb_func_end sub_8141828
-
- thumb_func_start sub_8141834
-sub_8141834: @ 8141834
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8140BEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081418B4
- cmp r0, 0x1
- bgt _0814184E
- cmp r0, 0
- beq _08141858
- b _081418BE
-_0814184E:
- cmp r0, 0x2
- beq _081418A0
- cmp r0, 0x3
- beq _0814188C
- b _081418BE
-_08141858:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x4
- bl sub_81418C4
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x4
- bl sub_81418C4
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0x4
- bl sub_81418C4
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0x4
- bl sub_81418C4
- adds r0, r4, 0
- movs r1, 0x4
- movs r2, 0x4
- bl sub_81418C4
- b _081418BE
-_0814188C:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x5
- bl sub_81418C4
- adds r0, r4, 0
- movs r1, 0x4
- movs r2, 0x5
- bl sub_81418C4
-_081418A0:
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x5
- bl sub_81418C4
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0x5
- bl sub_81418C4
-_081418B4:
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0x5
- bl sub_81418C4
-_081418BE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8141834
-
- thumb_func_start sub_81418C4
-sub_81418C4: @ 81418C4
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 16
- ldr r3, _08141914 @ =gUnknown_8466C0C
- lsrs r1, 13
- adds r0, r1, r3
- ldr r4, [r0]
- lsls r2, 28
- lsrs r7, r2, 16
- movs r5, 0
- adds r3, 0x4
- adds r1, r3
- ldr r1, [r1]
- cmp r5, r1
- bcs _0814190C
- ldr r0, _08141918 @ =0x00000fff
- mov r12, r0
- adds r3, r1, 0
-_081418E8:
- ldrh r1, [r4]
- lsls r1, 1
- adds r1, r6
- ldrh r2, [r1]
- mov r0, r12
- ands r0, r2
- strh r0, [r1]
- ldrh r1, [r4]
- lsls r1, 1
- adds r1, r6
- ldrh r2, [r1]
- adds r0, r7, 0
- orrs r0, r2
- strh r0, [r1]
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, r3
- bcc _081418E8
-_0814190C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08141914: .4byte gUnknown_8466C0C
-_08141918: .4byte 0x00000fff
- thumb_func_end sub_81418C4
-
thumb_func_start sub_814191C
sub_814191C: @ 814191C
push {r4,r5,lr}
diff --git a/data/slot_machine.s b/data/slot_machine.s
index dac396602..1ff90742f 100644
--- a/data/slot_machine.s
+++ b/data/slot_machine.s
@@ -1,94 +1,15 @@
- .section .rodata
- .align 2
-gUnknown_8464890:: @ 8464890
- .incbin "baserom.gba", 0x464890, 0x1E
-
-gUnknown_84648AE:: @ 84648AE
- .incbin "baserom.gba", 0x4648AE, 0xF
-
-gUnknown_84648BD:: @ 84648BD
- .incbin "baserom.gba", 0x4648BD, 0x15
-
-gUnknown_84648D2:: @ 84648D2
- .incbin "baserom.gba", 0x4648D2, 0x54
-
-gUnknown_8464926:: @ 8464926
- .incbin "baserom.gba", 0x464926, 0x40
-
-gUnknown_8464966:: @ 8464966
- .incbin "baserom.gba", 0x464966, 0xC4A
-
-gUnknown_84655B0:: @ 84655B0
- .incbin "baserom.gba", 0x4655B0, 0x18
-
-gUnknown_84655C8:: @ 84655C8
- .incbin "baserom.gba", 0x4655C8, 0x40
-
-gUnknown_8465608:: @ 8465608
- .incbin "baserom.gba", 0x465608, 0xE
-
-gUnknown_8465616:: @ 8465616
- .incbin "baserom.gba", 0x465616, 0xC0
-
-gUnknown_84656D6:: @ 84656D6
- .incbin "baserom.gba", 0x4656D6, 0x10E
-
-gUnknown_84657E4:: @ 84657E4
- .incbin "baserom.gba", 0x4657E4, 0x98
-
-gUnknown_846587C:: @ 846587C
- .incbin "baserom.gba", 0x46587C, 0x5C
-
-gUnknown_84658D8:: @ 84658D8
- .incbin "baserom.gba", 0x4658D8, 0x18
-
-gUnknown_84658F0:: @ 84658F0
- .incbin "baserom.gba", 0x4658F0, 0x40
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
-gUnknown_8465930:: @ 8465930
- .incbin "baserom.gba", 0x465930, 0x20
-
-gUnknown_8465950:: @ 8465950
- .incbin "baserom.gba", 0x465950, 0x80
-
-gUnknown_84659D0:: @ 84659D0
- .incbin "baserom.gba", 0x4659D0, 0x804
-
-gUnknown_84661D4:: @ 84661D4
- .incbin "baserom.gba", 0x4661D4, 0x2E8
-
-gUnknown_84664BC:: @ 84664BC
- .incbin "baserom.gba", 0x4664BC, 0x20
-
-gUnknown_84664DC:: @ 84664DC
- .incbin "baserom.gba", 0x4664DC, 0x60
-
-gUnknown_846653C:: @ 846653C
- .incbin "baserom.gba", 0x46653C, 0x84
-
-gUnknown_84665C0:: @ 84665C0
- .incbin "baserom.gba", 0x4665C0, 0x60
-
-gUnknown_8466620:: @ 8466620
- .incbin "baserom.gba", 0x466620, 0x378
-
-gUnknown_8466998:: @ 8466998
- .incbin "baserom.gba", 0x466998, 0x178
-
-gUnknown_8466B10:: @ 8466B10
- .incbin "baserom.gba", 0x466B10, 0x10
-
-gUnknown_8466B20:: @ 8466B20
- .incbin "baserom.gba", 0x466B20, 0xEC
-
-gUnknown_8466C0C:: @ 8466C0C
- .incbin "baserom.gba", 0x466C0C, 0x28
+ .section .rodata
+ .align 2
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 dfe15881a..20d2efc21 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -19,6 +19,7 @@ PSSGFXDIR := graphics/pokemon_storage
EVENTOBJGFXDIR := graphics/event_objects
MISCGFXDIR := graphics/misc
TEXTWINDOWGFXDIR := graphics/text_window
+SLOTMACHINEGFXDIR := graphics/slot_machine
TEACHYTVGFXDIR := graphics/teachy_tv
SSANNEGFXDIR := graphics/ss_anne
ITEMPCGFXDIR := graphics/item_pc
@@ -478,6 +479,12 @@ $(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
+
$(TEACHYTVGFXDIR)/tiles.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 233
diff --git a/include/menu.h b/include/menu.h
index 6d8de3274..19d7c82a4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -24,6 +24,9 @@ void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u
void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
+void sub_810F260(u8 windowId, u8 a1);
+void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
u8 sub_812EA78(u16 species, u32 personality, u8 a2);
s8 sub_812EAE4(u16 species, u32 personality, u8 a2);
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index d68957e62..7b83c913b 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -31,6 +31,7 @@ void DrawDialogueFrame(u8 windowId, bool8 transfer);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow);
+void sub_80F6C14(void);
void sub_80F771C(bool8 copyToVram);
void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
void sub_80F7768(u8 windowId, bool8 copyToVram);
diff --git a/include/quest_log.h b/include/quest_log.h
index 4fb4fe0fa..858ea593a 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/ld_script.txt b/ld_script.txt
index c6b35f651..0fcc799e3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -254,6 +254,7 @@ SECTIONS {
asm/berry_pouch.o(.text);
asm/itemfinder.o(.text);
src/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);
@@ -452,6 +453,7 @@ SECTIONS {
data/berry_pouch.o(.rodata);
data/itemfinder.o(.rodata);
src/buy_menu_helpers.o(.rodata);
+ src/slot_machine.o(.rodata);
data/slot_machine.o(.rodata);
src/roamer.o(.rodata);
src/mystery_gift_menu.o(.rodata);
diff --git a/src/slot_machine.c b/src/slot_machine.c
new file mode 100644
index 000000000..5b4020a5f
--- /dev/null
+++ b/src/slot_machine.c
@@ -0,0 +1,2724 @@
+#include "global.h"
+#include "gpu_regs.h"
+#include "dma3.h"
+#include "bg.h"
+#include "palette.h"
+#include "decompress.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 "new_menu_helpers.h"
+#include "text_window.h"
+#include "random.h"
+#include "constants/songs.h"
+
+extern const u8 gUnknown_841B747[];
+extern const u8 gUnknown_841B76B[];
+extern const u8 gUnknown_841B779[];
+
+struct SlotMachineState
+{
+ MainCallback savedCallback;
+ u16 machineidx;
+ u16 field_06;
+ u16 field_08;
+ u16 slotRewardClass;
+ u16 field_0C;
+ 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;
+ u32 field_3C[5];
+ u16 payout;
+};
+
+struct SlotMachineGfxManager
+{
+ u32 field_00[3];
+ struct Sprite * field_0C[3][5];
+ struct Sprite * field_48[4];
+ struct Sprite * field_58[4];
+ struct Sprite * field_68[2];
+ vu16 * field_70;
+};
+
+struct SlotMachineSetupTaskDataSub_0000
+{
+ u16 unk0;
+ u8 unk2;
+ u8 unk3;
+};
+
+struct SlotMachineSetupTaskData
+{
+ struct SlotMachineSetupTaskDataSub_0000 field_0000[8];
+ u8 field_0020;
+ // align 2
+ s32 field_0024;
+ u32 field_0028;
+ u8 filler_002C[0x830];
+ u8 field_085C[0x800];
+ u8 field_105C[0x800];
+ u8 field_185C[0x800];
+ u8 field_205C[0x800];
+}; // size: 285C
+
+struct UnkStruct_8466C0C
+{
+ const u16 * tiles;
+ u32 count;
+};
+
+EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL;
+EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = 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_8140C6C(struct SlotMachineGfxManager * manager);
+void sub_8140D7C(const s16 *, const s16 *);
+bool32 sub_814104C(void);
+void sub_8141094(void);
+struct SlotMachineSetupTaskData * sub_814112C(void);
+void sub_81410CC(u8 taskId);
+void sub_8141148(u16 a0, u8 a1);
+bool32 sub_8141180(u8 a0);
+bool8 sub_8141198(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141460(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_81414AC(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_81414EC(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_81414FC(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141518(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141558(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141568(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141578(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141584(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_81415C8(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141610(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *);
+bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *);
+void sub_81417E4(const u8 * str);
+void sub_8141828(void);
+void sub_8141834(u16 * bgTilemapBuffer);
+void sub_81418C4(u16 * bgTilemapBuffer, u16 a0, u16 a1);
+void sub_814191C(u8 taskId);
+void sub_8141AB0(void);
+void sub_8141AD8(u8 a0);
+void sub_8141B18(void);
+void sub_8141B34(void);
+void sub_8141BA0(u8 a0);
+void sub_8141BE4(void);
+void sub_8141C30(u8, u8);
+
+const u8 gUnknown_8464890[][2] = {
+ {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
+};
+
+const struct OamData gUnknown_8465738 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = ST_OAM_SIZE_2,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+const union AnimCmd gUnknown_8465740[] = {
+ ANIMCMD_FRAME(0x00, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465748[] = {
+ ANIMCMD_FRAME(0x10, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465750[] = {
+ ANIMCMD_FRAME(0x20, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465758[] = {
+ ANIMCMD_FRAME(0x30, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465760[] = {
+ ANIMCMD_FRAME(0x40, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465768[] = {
+ ANIMCMD_FRAME(0x50, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465770[] = {
+ ANIMCMD_FRAME(0x60, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465778[] = {
+ ANIMCMD_FRAME(0x20, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465780[] = {
+ ANIMCMD_FRAME(0x30, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465788[] = {
+ ANIMCMD_FRAME(0x40, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465790[] = {
+ ANIMCMD_FRAME(0x50, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465798[] = {
+ ANIMCMD_FRAME(0x60, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_84657A0[] = {
+ gUnknown_8465740,
+ gUnknown_8465748,
+ gUnknown_8465750,
+ gUnknown_8465758,
+ gUnknown_8465760,
+ gUnknown_8465768,
+ gUnknown_8465770,
+ gUnknown_8465778,
+ gUnknown_8465780,
+ gUnknown_8465788,
+ gUnknown_8465790,
+ gUnknown_8465798
+};
+
+const union AffineAnimCmd gUnknown_84657D0[] = {
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 1),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gUnknown_84657E0[] = {
+ gUnknown_84657D0
+};
+
+const struct SpriteTemplate gUnknown_84657E4 = {
+ 0, 0, &gUnknown_8465738, gUnknown_84657A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+const struct OamData gUnknown_84657FC = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = ST_OAM_SIZE_0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+const union AnimCmd gUnknown_8465804[] = {
+ ANIMCMD_FRAME(0x00, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_846580C[] = {
+ ANIMCMD_FRAME(0x02, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465814[] = {
+ ANIMCMD_FRAME(0x04, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_846581C[] = {
+ ANIMCMD_FRAME(0x06, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465824[] = {
+ ANIMCMD_FRAME(0x08, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_846582C[] = {
+ ANIMCMD_FRAME(0x0a, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465834[] = {
+ ANIMCMD_FRAME(0x0c, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_846583C[] = {
+ ANIMCMD_FRAME(0x0e, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_8465844[] = {
+ ANIMCMD_FRAME(0x10, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_846584C[] = {
+ ANIMCMD_FRAME(0x12, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_8465854[] = {
+ gUnknown_8465804,
+ gUnknown_846580C,
+ gUnknown_8465814,
+ gUnknown_846581C,
+ gUnknown_8465824,
+ gUnknown_846582C,
+ gUnknown_8465834,
+ gUnknown_846583C,
+ gUnknown_8465844,
+ gUnknown_846584C
+};
+
+const struct SpriteTemplate gUnknown_846587C = {
+ 2, 6, &gUnknown_84657FC, gUnknown_8465854, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+const struct OamData gUnknown_8465894 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = ST_OAM_SIZE_2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+const union AnimCmd gUnknown_846589C[] = {
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_84658A4[] = {
+ ANIMCMD_FRAME( 0, 24),
+ ANIMCMD_FRAME(16, 24),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gUnknown_84658B0[] = {
+ ANIMCMD_FRAME(32, 28),
+ ANIMCMD_FRAME(48, 28),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gUnknown_84658BC[] = {
+ ANIMCMD_FRAME(64, 12),
+ ANIMCMD_FRAME(80, 12),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gUnknown_84658C8[] = {
+ gUnknown_846589C,
+ gUnknown_84658A4,
+ gUnknown_84658B0,
+ gUnknown_84658BC
+};
+
+const struct SpriteTemplate gUnknown_84658D8 = {
+ 1, 5, &gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineSetupTaskData *) = {
+ sub_8141198,
+ sub_8141460,
+ sub_81414AC,
+ sub_81414EC,
+ sub_81414FC,
+ sub_8141518,
+ sub_8141558,
+ sub_8141568,
+ sub_8141578,
+ sub_8141584,
+ sub_81415C8,
+ sub_8141610,
+ sub_8141650,
+ sub_8141690,
+ sub_81416C8,
+ sub_8141764
+};
+
+const u16 gUnknown_8465930[] = INCBIN_U16("graphics/slot_machine/unk_8465930.gbapal");
+const u16 gUnknown_8465950[] = INCBIN_U16("graphics/slot_machine/unk_8465950.gbapal");
+const u16 gUnknown_8465970[] = INCBIN_U16("graphics/slot_machine/unk_8465970.gbapal");
+const u16 gUnknown_8465990[] = INCBIN_U16("graphics/slot_machine/unk_8465990.gbapal");
+const u16 gUnknown_84659B0[] = INCBIN_U16("graphics/slot_machine/unk_84659b0.gbapal");
+const u32 gUnknown_84659D0[] = INCBIN_U32("graphics/slot_machine/unk_84659d0.4bpp.lz");
+const u32 gUnknown_84661D4[] = INCBIN_U32("graphics/slot_machine/unk_84661d4.bin.lz");
+const u16 gUnknown_84664BC[] = INCBIN_U16("graphics/slot_machine/unk_84664bc.gbapal");
+const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal");
+const u16 gUnknown_84664FC[] = INCBIN_U16("graphics/slot_machine/unk_84664fc.gbapal");
+const u16 gUnknown_846651C[] = INCBIN_U16("graphics/slot_machine/unk_846651c.gbapal");
+const u32 gUnknown_846653C[] = INCBIN_U32("graphics/slot_machine/unk_846653c.4bpp.lz");
+const u16 gUnknown_84665C0[] = INCBIN_U16("graphics/slot_machine/unk_84665c0.gbapal");
+const u16 gUnknown_84665E0[] = INCBIN_U16("graphics/slot_machine/unk_84665e0.gbapal");
+const u16 gUnknown_8466600[] = INCBIN_U16("graphics/slot_machine/unk_8466600.gbapal");
+const u32 gUnknown_8466620[] = INCBIN_U32("graphics/slot_machine/unk_8466620.4bpp.lz");
+const u32 gUnknown_8466998[] = INCBIN_U32("graphics/slot_machine/unk_8466998.bin.lz");
+
+const struct BgTemplate gUnknown_8466B10[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }
+};
+
+const struct WindowTemplate gUnknown_8466B20[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 15,
+ .width = 20,
+ .height = 4,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x04f
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 30,
+ .height = 2,
+ .paletteNum = 0x0e,
+ .baseBlock = 0x013
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+const u16 gUnknown_8466B38[] = {
+ 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218, 0x0219, 0x0237, 0x0238, 0x0239
+};
+
+const u16 gUnknown_8466B60[] = {
+ 0x00e4, 0x00e5, 0x00e6, 0x00f7, 0x00f8, 0x00f9, 0x0104, 0x0105, 0x0106, 0x0107, 0x010c, 0x0111, 0x0116, 0x0117, 0x0118, 0x0119, 0x0124, 0x0125, 0x0126, 0x0137, 0x0138, 0x0139
+};
+
+const u16 gUnknown_8466B8C[] = {
+ 0x0144, 0x0145, 0x0146, 0x0157, 0x0158, 0x0159, 0x0164, 0x0165, 0x0166, 0x0167, 0x016c, 0x0171, 0x0176, 0x0177, 0x0178, 0x0179, 0x0184, 0x0185, 0x0186, 0x0197, 0x0198, 0x0199
+};
+
+const u16 gUnknown_8466BB8[] = {
+ 0x01a4, 0x01a5, 0x01a6, 0x01b7, 0x01b8, 0x01b9, 0x01c4, 0x01c5, 0x01c6, 0x01c7, 0x01cc, 0x01d1, 0x01d6, 0x01d7, 0x01d8, 0x01d9, 0x01e4, 0x01e5, 0x01e6, 0x01f7, 0x01f8, 0x01f9
+};
+
+const u16 gUnknown_8466BE4[] = {
+ 0x0204, 0x0205, 0x0206, 0x0224, 0x0225, 0x0226, 0x01e7, 0x0207, 0x018c, 0x01ac, 0x0131, 0x0151, 0x00d6, 0x00f6, 0x00b7, 0x00b8, 0x00b9, 0x00d7, 0x00d8, 0x00d9
+};
+
+const struct UnkStruct_8466C0C gUnknown_8466C0C[] = {
+ { gUnknown_8466B38, NELEMS(gUnknown_8466B38) },
+ { gUnknown_8466B60, NELEMS(gUnknown_8466B60) },
+ { gUnknown_8466B8C, NELEMS(gUnknown_8466B8C) },
+ { gUnknown_8466BB8, NELEMS(gUnknown_8466BB8) },
+ { gUnknown_8466BE4, NELEMS(gUnknown_8466BE4) }
+};
+
+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;
+}
+
+#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++)
+ LoadCompressedSpriteSheet(&gUnknown_84655B0[i]);
+ LoadSpritePalettes(gUnknown_84655C8);
+ sSlotMachineGfxManager = Alloc(sizeof(*sSlotMachineGfxManager));
+ if (sSlotMachineGfxManager == NULL)
+ return FALSE;
+ sub_8140C6C(sSlotMachineGfxManager);
+ return TRUE;
+}
+
+void sub_8140C50(void)
+{
+ if (sSlotMachineGfxManager != NULL)
+ {
+ Free(sSlotMachineGfxManager);
+ sSlotMachineGfxManager = 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;
+ sSlotMachineGfxManager->field_0C[i][j] = sprite;
+ sSlotMachineGfxManager->field_70 = (vu16 *)(OAM + 0 * sizeof(struct OamData) + offsetof(struct OamData, affineParam));
+ }
+ }
+}
+
+void sub_8140D7C(const s16 * a0, const s16 * a1)
+{
+ s32 i, j;
+ s32 r6, r10;
+
+ for (i = 0; i < 3; i++)
+ {
+ r6 = *a0;
+ r10 = *a1 * 8;
+ for (j = 0; j < 5; j++)
+ {
+ sSlotMachineGfxManager->field_0C[i][j]->pos2.y = r10;
+ {
+ s32 r4 = gUnknown_8464926[i][r6];
+ struct Sprite * sprite = sSlotMachineGfxManager->field_0C[i][j];
+ StartSpriteAnim(sprite, r4);
+ }
+ {
+ s32 r4 = gUnknown_8464926[i][r6];
+ struct Sprite * sprite = sSlotMachineGfxManager->field_0C[i][j];
+ StartSpriteAnim(sprite, r4);
+ }
+ sSlotMachineGfxManager->field_0C[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_8465608[gUnknown_8464926[i][r6]]);
+ r6++;
+ if (r6 >= 21)
+ r6 = 0;
+ }
+ a0++;
+ a1++;
+ }
+}
+
+void sub_8140E40(void)
+{
+ s32 vcount = REG_VCOUNT - 0x2B;
+ if (vcount >= 0 && vcount < 0x54)
+ {
+ *sSlotMachineGfxManager->field_70 = gUnknown_8465616[vcount];
+ REG_BLDY = gUnknown_84656D6[vcount];
+ }
+ else
+ {
+ *sSlotMachineGfxManager->field_70 = 0x100;
+ REG_BLDY = 0;
+ }
+}
+
+void sub_8140E9C(void)
+{
+ s32 i;
+ s32 spriteId;
+
+ for (i = 0; i < 4; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_846587C, 0x55 + 7 * i, 30, 0);
+ sSlotMachineGfxManager->field_48[i] = &gSprites[spriteId];
+ spriteId = CreateSprite(&gUnknown_846587C, 0x85 + 7 * i, 30, 0);
+ sSlotMachineGfxManager->field_58[i] = &gSprites[spriteId];
+ }
+}
+
+void sub_8140F2C(void)
+{
+ s32 coins = GetCoins();
+ s32 payout = sub_8140BDC();
+ s32 i;
+ s32 divisor = 1000;
+ s32 quotient;
+
+ for (i = 0; i < 4; i++)
+ {
+ quotient = coins / divisor;
+ StartSpriteAnim(sSlotMachineGfxManager->field_48[i], quotient);
+ coins -= quotient * divisor;
+ quotient = payout / divisor;
+ StartSpriteAnim(sSlotMachineGfxManager->field_58[i], quotient);
+ payout -= quotient * divisor;
+ divisor /= 10;
+ }
+}
+
+void sub_8140FC4(void)
+{
+ s32 spriteId;
+
+ spriteId = CreateSprite(&gUnknown_84658D8, 0x10, 0x88, 1);
+ sSlotMachineGfxManager->field_68[0] = &gSprites[spriteId];
+ spriteId = CreateSprite(&gUnknown_84658D8, 0xE0, 0x88, 1);
+ sSlotMachineGfxManager->field_68[1] = &gSprites[spriteId];
+ sSlotMachineGfxManager->field_68[1]->hFlip = TRUE;
+}
+
+void sub_8141020(u8 a0)
+{
+ s32 i;
+ for (i = 0; i < 2; i++)
+ {
+ StartSpriteAnim(sSlotMachineGfxManager->field_68[i], a0);
+ }
+}
+
+bool32 sub_814104C(void)
+{
+ s32 i;
+
+ struct SlotMachineSetupTaskData * ptr = Alloc(sizeof(struct SlotMachineSetupTaskData));
+ if (ptr == NULL)
+ return FALSE;
+ for (i = 0; i < 8; i++)
+ ptr->field_0000[i].unk3 = 0;
+ ptr->field_0028 = 0;
+ SetWordTaskArg(CreateTask(sub_81410CC, 2), 0, (uintptr_t)ptr);
+ return FALSE;
+}
+
+void sub_8141094(void)
+{
+ if (FuncIsActiveTask(sub_81410CC))
+ {
+ Free(sub_814112C());
+ DestroyTask(FindTaskIdByFunc(sub_81410CC));
+ }
+ sub_8140C50();
+ FreeAllWindowBuffers();
+}
+
+void sub_81410CC(u8 taskId)
+{
+ struct SlotMachineSetupTaskData * ptr = (void *)GetWordTaskArg(taskId, 0);
+ s32 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (ptr->field_0000[i].unk3)
+ ptr->field_0000[i].unk3 = gUnknown_84658F0[ptr->field_0000[i].unk0](&ptr->field_0000[i].unk2, ptr);
+ }
+}
+
+void sub_8141118(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+struct SlotMachineSetupTaskData * sub_814112C(void)
+{
+ return (void *)GetWordTaskArg(FindTaskIdByFunc(sub_81410CC), 0);
+}
+
+void sub_8141148(u16 a0, u8 a1)
+{
+ struct SlotMachineSetupTaskData * ptr = sub_814112C();
+ ptr->field_0000[a1].unk0 = a0;
+ ptr->field_0000[a1].unk2 = 0;
+ ptr->field_0000[a1].unk3 = gUnknown_84658F0[a0](&ptr->field_0000[a1].unk2, ptr);
+}
+
+bool32 sub_8141180(u8 a0)
+{
+ return sub_814112C()->field_0000[a0].unk3;
+}
+
+#ifdef NONMATCHING
+bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ u16 pal;
+ struct TextColor textColor;
+ u32 x;
+
+ switch (*state)
+ {
+ case 0:
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ (*state)++;
+ break;
+ case 1:
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ RequestDma3Fill(0, (void *)OAM, OAM_SIZE, 1);
+ RequestDma3Fill(0, (void *)VRAM, 0x20, 1);
+ RequestDma3Fill(0, (void *)(VRAM + 0xC000), 0x20, 1);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgPositions();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_8466B10, NELEMS(gUnknown_8466B10));
+ InitWindows(gUnknown_8466B20);
+
+ SetBgTilemapBuffer(3, ptr->field_205C);
+ FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32);
+ CopyBgTilemapBufferToVram(3);
+
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(2, gUnknown_84659D0, 0, 0x00, 0);
+ DecompressAndCopyTileDataToVram(2, gUnknown_846653C, 0, 0xC0, 0);
+ SetBgTilemapBuffer(2, ptr->field_185C);
+ CopyToBgTilemapBuffer(2, gUnknown_84661D4, 0, 0x00);
+ CopyBgTilemapBufferToVram(2);
+ LoadPalette(gUnknown_8465930, 0x00, 0xA0);
+ LoadPalette(gUnknown_84664BC, 0x50, 0x20);
+ LoadPalette(gUnknown_84665C0, 0x70, 0x60);
+ pal = RGB(30, 30, 31);
+ LoadPalette(&pal, 0x00, 0x02);
+ LoadUserWindowBorderGfx(0, 0x00A, 0xD0);
+ sub_814FDA0(0, 0x001, 0xF0);
+
+ SetBgTilemapBuffer(0, ptr->field_085C);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 32, 30);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8466620, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8466998, 0, 0, 1);
+ CopyBgTilemapBufferToVram(1);
+
+ LoadPalette(stdpal_get(2), 0xE0, 0x20);
+ FillWindowPixelBuffer(1, 0xFF);
+ PutWindowTilemap(1);
+
+ x = 0xEC - GetStringWidth(0, gUnknown_841B779, 0);
+ textColor.fgColor = 15;
+ textColor.bgColor = 1;
+ textColor.shadowColor = 2;
+ AddTextPrinterParameterized3(1, 0, x, 0, &textColor, 0, gUnknown_841B779);
+ CopyBgTilemapBufferToVram(0);
+
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | 0x20 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN);
+ sub_8140C0C();
+ sub_8140CA0();
+ sub_8140E9C();
+ sub_8140FC4();
+ sub_8140F2C();
+ BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
+ SetVBlankCallback(sub_8141118);
+ SetHBlankCallback(sub_8140E40);
+ (*state)++;
+ break;
+ case 2:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ ShowBg(0);
+ ShowBg(3);
+ ShowBg(2);
+ HideBg(1);
+ sub_8141B34();
+ BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
+ (*state)++;
+ }
+ break;
+ case 3:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+#else
+NAKED
+bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tsub sp, 0x14\n"
+ "\tadds r7, r0, 0\n"
+ "\tmov r8, r1\n"
+ "\tldrb r6, [r7]\n"
+ "\tcmp r6, 0x1\n"
+ "\tbeq _081411D0\n"
+ "\tcmp r6, 0x1\n"
+ "\tbgt _081411B4\n"
+ "\tcmp r6, 0\n"
+ "\tbeq _081411C2\n"
+ "\tb _08141450\n"
+ "_081411B4:\n"
+ "\tcmp r6, 0x2\n"
+ "\tbne _081411BA\n"
+ "\tb _081413E4\n"
+ "_081411BA:\n"
+ "\tcmp r6, 0x3\n"
+ "\tbne _081411C0\n"
+ "\tb _08141436\n"
+ "_081411C0:\n"
+ "\tb _08141450\n"
+ "_081411C2:\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tmovs r1, 0x10\n"
+ "\tmovs r2, 0\n"
+ "\tbl BlendPalettes\n"
+ "\tb _0814142E\n"
+ "_081411D0:\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetVBlankCallback\n"
+ "\tbl ResetSpriteData\n"
+ "\tbl FreeAllSpritePalettes\n"
+ "\tmovs r1, 0xE0\n"
+ "\tlsls r1, 19\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 3\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl RequestDma3Fill\n"
+ "\tmovs r1, 0xC0\n"
+ "\tlsls r1, 19\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r2, 0x20\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl RequestDma3Fill\n"
+ "\tldr r1, _0814139C @ =0x0600c000\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r2, 0x20\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl RequestDma3Fill\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tbl ResetBgPositions\n"
+ "\tmovs r0, 0\n"
+ "\tbl ResetBgsAndClearDma3BusyFlags\n"
+ "\tldr r1, _081413A0 @ =gUnknown_8466B10\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r2, 0x4\n"
+ "\tbl InitBgsFromTemplates\n"
+ "\tldr r0, _081413A4 @ =gUnknown_8466B20\n"
+ "\tbl InitWindows\n"
+ "\tldr r1, _081413A8 @ =0x0000205c\n"
+ "\tadd r1, r8\n"
+ "\tmovs r0, 0x3\n"
+ "\tbl SetBgTilemapBuffer\n"
+ "\tmovs r4, 0x20\n"
+ "\tstr r4, [sp]\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmovs r0, 0x3\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl FillBgTilemapBufferRect_Palette0\n"
+ "\tmovs r0, 0x3\n"
+ "\tbl CopyBgTilemapBufferToVram\n"
+ "\tbl ResetTempTileDataBuffers\n"
+ "\tldr r1, _081413AC @ =gUnknown_84659D0\n"
+ "\tmovs r5, 0\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r0, 0x2\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
+ "\tldr r1, _081413B0 @ =gUnknown_846653C\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r0, 0x2\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0xC0\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
+ "\tldr r1, _081413B4 @ =0x0000185c\n"
+ "\tadd r1, r8\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl SetBgTilemapBuffer\n"
+ "\tldr r1, _081413B8 @ =gUnknown_84661D4\n"
+ "\tmovs r0, 0x2\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl CopyToBgTilemapBuffer\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl CopyBgTilemapBufferToVram\n"
+ "\tldr r0, _081413BC @ =gUnknown_8465930\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0xA0\n"
+ "\tbl LoadPalette\n"
+ "\tldr r0, _081413C0 @ =gUnknown_84664BC\n"
+ "\tmovs r1, 0x50\n"
+ "\tmovs r2, 0x20\n"
+ "\tbl LoadPalette\n"
+ "\tldr r0, _081413C4 @ =gUnknown_84665C0\n"
+ "\tmovs r1, 0x70\n"
+ "\tmovs r2, 0x60\n"
+ "\tbl LoadPalette\n"
+ "\tldr r1, _081413C8 @ =0x00007fde\n"
+ "\tadd r0, sp, 0xC\n"
+ "\tstrh r1, [r0]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0x2\n"
+ "\tbl LoadPalette\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0xA\n"
+ "\tmovs r2, 0xD0\n"
+ "\tbl LoadUserWindowBorderGfx\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0x1\n"
+ "\tmovs r2, 0xF0\n"
+ "\tbl sub_814FDA0\n"
+ "\tldr r1, _081413CC @ =0x0000085c\n"
+ "\tadd r1, r8\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetBgTilemapBuffer\n"
+ "\tstr r4, [sp]\n"
+ "\tmovs r0, 0x1E\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0x2\n"
+ "\tbl FillBgTilemapBufferRect_Palette0\n"
+ "\tldr r1, _081413D0 @ =gUnknown_8466620\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
+ "\tldr r1, _081413D4 @ =gUnknown_8466998\n"
+ "\tstr r6, [sp]\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl CopyBgTilemapBufferToVram\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl stdpal_get\n"
+ "\tmovs r1, 0xE0\n"
+ "\tmovs r2, 0x20\n"
+ "\tbl LoadPalette\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r1, 0xFF\n"
+ "\tbl FillWindowPixelBuffer\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl PutWindowTilemap\n"
+ "\tldr r4, _081413D8 @ =gUnknown_841B779\n"
+ "\tmovs r0, 0\n"
+ "\tadds r1, r4, 0\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetStringWidth\n"
+ "\tmovs r2, 0xEC\n"
+ "\tsubs r2, r0\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tmovs r0, 0xF\n"
+ "\tstrb r0, [r1]\n"
+ "\tstrb r6, [r1, 0x1]\n"
+ "\tmovs r0, 0x2\n"
+ "\tstrb r0, [r1, 0x2]\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r5, [sp, 0x4]\n"
+ "\tstr r4, [sp, 0x8]\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl AddTextPrinterParameterized3\n"
+ "\tmovs r0, 0\n"
+ "\tbl CopyBgTilemapBufferToVram\n"
+ "\tmovs r1, 0x83\n"
+ "\tlsls r1, 5\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetGpuRegBits\n"
+ "\tmovs r0, 0x50\n"
+ "\tmovs r1, 0xF8\n"
+ "\tbl SetGpuReg\n"
+ "\tbl sub_8140C0C\n"
+ "\tbl sub_8140CA0\n"
+ "\tbl sub_8140E9C\n"
+ "\tbl sub_8140FC4\n"
+ "\tbl sub_8140F2C\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tmovs r1, 0x10\n"
+ "\tmovs r2, 0\n"
+ "\tbl BlendPalettes\n"
+ "\tldr r0, _081413DC @ =sub_8141118\n"
+ "\tbl SetVBlankCallback\n"
+ "\tldr r0, _081413E0 @ =sub_8140E40\n"
+ "\tbl SetHBlankCallback\n"
+ "\tb _0814142E\n"
+ "\t.align 2, 0\n"
+ "_0814139C: .4byte 0x0600c000\n"
+ "_081413A0: .4byte gUnknown_8466B10\n"
+ "_081413A4: .4byte gUnknown_8466B20\n"
+ "_081413A8: .4byte 0x0000205c\n"
+ "_081413AC: .4byte gUnknown_84659D0\n"
+ "_081413B0: .4byte gUnknown_846653C\n"
+ "_081413B4: .4byte 0x0000185c\n"
+ "_081413B8: .4byte gUnknown_84661D4\n"
+ "_081413BC: .4byte gUnknown_8465930\n"
+ "_081413C0: .4byte gUnknown_84664BC\n"
+ "_081413C4: .4byte gUnknown_84665C0\n"
+ "_081413C8: .4byte 0x00007fde\n"
+ "_081413CC: .4byte 0x0000085c\n"
+ "_081413D0: .4byte gUnknown_8466620\n"
+ "_081413D4: .4byte gUnknown_8466998\n"
+ "_081413D8: .4byte gUnknown_841B779\n"
+ "_081413DC: .4byte sub_8141118\n"
+ "_081413E0: .4byte sub_8140E40\n"
+ "_081413E4:\n"
+ "\tbl FreeTempTileDataBuffersIfPossible\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tcmp r5, 0\n"
+ "\tbne _08141450\n"
+ "\tmovs r0, 0\n"
+ "\tbl ShowBg\n"
+ "\tmovs r0, 0x3\n"
+ "\tbl ShowBg\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl ShowBg\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl HideBg\n"
+ "\tbl sub_8141B34\n"
+ "\tmovs r4, 0x1\n"
+ "\tnegs r4, r4\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x10\n"
+ "\tmovs r2, 0\n"
+ "\tbl BlendPalettes\n"
+ "\tstr r5, [sp]\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r1, r4, 0\n"
+ "\tmovs r2, 0x10\n"
+ "\tmovs r3, 0\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tmovs r0, 0x3\n"
+ "\tbl EnableInterrupts\n"
+ "_0814142E:\n"
+ "\tldrb r0, [r7]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r7]\n"
+ "\tb _08141450\n"
+ "_08141436:\n"
+ "\tbl UpdatePaletteFade\n"
+ "\tldr r0, _0814144C @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08141450\n"
+ "\tmovs r0, 0\n"
+ "\tb _08141452\n"
+ "\t.align 2, 0\n"
+ "_0814144C: .4byte gPaletteFade\n"
+ "_08141450:\n"
+ "\tmovs r0, 0x1\n"
+ "_08141452:\n"
+ "\tadd sp, 0x14\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif //NONMATCHING
+
+bool8 sub_8141460(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0);
+ (*state)++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_81414AC(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8141834(GetBgTilemapBuffer(2));
+ CopyBgTilemapBufferToVram(2);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_81414EC(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ sub_8141020(1);
+ return FALSE;
+}
+
+bool8 sub_81414FC(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ sub_8141020(2);
+ CreateTask(sub_814191C, 3);
+ return FALSE;
+}
+
+bool8 sub_8141518(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8141AB0();
+ (*state)++;
+ break;
+ case 1:
+ if (!FuncIsActiveTask(sub_814191C))
+ {
+ sub_8141020(0);
+ return FALSE;
+ }
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_8141558(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ sub_8141020(3);
+ return FALSE;
+}
+
+bool8 sub_8141568(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ sub_8141020(FALSE);
+ return FALSE;
+}
+
+bool8 sub_8141578(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ sub_8140F2C();
+ return FALSE;
+}
+
+bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_81417E4(gUnknown_841B747);
+ CopyWindowToVram(0, 3);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_81417E4(gUnknown_841B76B);
+ sub_8141AD8(0);
+ CopyWindowToVram(0, 3);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_8141610(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8141828();
+ sub_8141B18();
+ CopyWindowToVram(0, 3);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_8141650(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8141BA0(ptr->field_0020);
+ CopyBgTilemapBufferToVram(2);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_8141690(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8141BE4();
+ CopyBgTilemapBufferToVram(2);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_81416C8(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x3D);
+ SetGpuReg(REG_OFFSET_WIN0H, 0x00);
+ SetGpuReg(REG_OFFSET_WIN1H, 0xA0);
+ ShowBg(1);
+ PlaySE(SE_WIN_OPEN);
+ ptr->field_0024 = 0;
+ (*state)++;
+ break;
+ case 1:
+ ptr->field_0024 += 16;
+ if (ptr->field_0024 >= 256)
+ {
+ ptr->field_0024 = 256;
+ (*state)++;
+ }
+ ChangeBgX(1, 256 * (256 - ptr->field_0024), 0);
+ SetGpuReg(REG_OFFSET_WIN0H, ptr->field_0024);
+ break;
+ case 2:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_8141764(u8 * state, struct SlotMachineSetupTaskData * ptr)
+{
+ switch (*state)
+ {
+ case 0:
+ PlaySE(SE_WIN_OPEN);
+ (*state)++;
+ // fallthrough
+ case 1:
+ ptr->field_0024 -= 16;
+ if (ptr->field_0024 <= 0)
+ {
+ ptr->field_0024 = 0;
+ (*state)++;
+ }
+ ChangeBgX(1, 256 * (256 - ptr->field_0024), 0);
+ SetGpuReg(REG_OFFSET_WIN0H, ptr->field_0024);
+ break;
+ case 2:
+ HideBg(1);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ (*state)++;
+ break;
+ case 3:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_81417E4(const u8 * str)
+{
+ FillWindowPixelBuffer(0, 0x11);
+ PutWindowTilemap(0);
+ DrawTextBorderOuter(0, 0x001, 15);
+ AddTextPrinterParameterized5(0, 2, str, 1, 2, -1, NULL, 1, 2);
+}
+
+void sub_8141828(void)
+{
+ rbox_fill_rectangle(0);
+}
+
+void sub_8141834(u16 * bgTilemapBuffer)
+{
+ switch (sub_8140BEC())
+ {
+ case 0:
+ sub_81418C4(bgTilemapBuffer, 0, 4);
+ sub_81418C4(bgTilemapBuffer, 1, 4);
+ sub_81418C4(bgTilemapBuffer, 2, 4);
+ sub_81418C4(bgTilemapBuffer, 3, 4);
+ sub_81418C4(bgTilemapBuffer, 4, 4);
+ break;
+ case 3:
+ sub_81418C4(bgTilemapBuffer, 0, 5);
+ sub_81418C4(bgTilemapBuffer, 4, 5);
+ case 2:
+ sub_81418C4(bgTilemapBuffer, 1, 5);
+ sub_81418C4(bgTilemapBuffer, 3, 5);
+ case 1:
+ sub_81418C4(bgTilemapBuffer, 2, 5);
+ break;
+ }
+}
+
+void sub_81418C4(u16 * bgTilemapBuffer, u16 whichLine, u16 paletteNum)
+{
+ s32 i;
+ const u16 * tileIdxs = gUnknown_8466C0C[whichLine].tiles;
+ u16 palMask = (paletteNum & 0xF) << 12;
+
+ for (i = 0; i < gUnknown_8466C0C[whichLine].count; i++)
+ {
+ bgTilemapBuffer[*tileIdxs] &= 0x0FFF;
+ bgTilemapBuffer[*tileIdxs] |= palMask;
+ tileIdxs++;
+ }
+}
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index e3df77242..f7b29292a 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/songs.h"
#include "sound.h"
#include "task.h"
#include "malloc.h"
@@ -22,7 +23,6 @@
#include "map_obj_8097404.h"
#include "unk_810c3a4.h"
#include "constants/movement_commands.h"
-#include "constants/songs.h"
#include "vs_seeker.h"
typedef enum
diff --git a/sym_ewram.txt b/sym_ewram.txt
index a1739776e..149ac1b34 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1390,11 +1390,8 @@ gUnknown_203F38C: @ 203F38C
gUnknown_203F39C: @ 203F39C
.space 0x4
-gUnknown_203F3A0: @ 203F3A0
- .space 0x4
-
-gUnknown_203F3A4: @ 203F3A4
- .space 0x4
+ .align 2
+ .include "src/slot_machine.o"
sLocationHistory: @ 203F3A8
.space 0x6