diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-08-01 21:04:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-01 21:04:16 -0400 |
commit | 00cf527c16d02fc912666d97a49dc7fedf996225 (patch) | |
tree | 251d6ae09bb0d9ea99303cd507281b35bf9a010a | |
parent | 1a34a06758175b4d39ee0a81c3441ac958d005fd (diff) | |
parent | da78b51cf3e3031b4c3594c37e1b2b17566db8e2 (diff) |
Merge pull request #85 from pret/slot_machine
Slot machine
40 files changed, 3271 insertions, 4901 deletions
diff --git a/asm/slot_machine.s b/asm/slot_machine.s deleted file mode 100644 index c5f6d2b72..000000000 --- a/asm/slot_machine.s +++ /dev/null @@ -1,4794 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .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} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08141940 @ =gTasks+0x8 - adds r5, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08141984 - cmp r0, 0x1 - bgt _08141944 - cmp r0, 0 - beq _08141952 - b _08141AA8 - .align 2, 0 -_08141940: .4byte gTasks+0x8 -_08141944: - cmp r0, 0x2 - bne _0814194A - b _08141A58 -_0814194A: - cmp r0, 0x3 - bne _08141950 - b _08141A98 -_08141950: - b _08141AA8 -_08141952: - ldr r0, _08141980 @ =gUnknown_84664BC - movs r1, 0x60 - movs r2, 0x20 - bl LoadPalette - movs r4, 0 -_0814195E: - adds r0, r4, 0 - bl sub_8140BF8 - cmp r0, 0 - beq _08141978 - movs r0, 0x2 - bl GetBgTilemapBuffer - lsls r1, r4, 16 - lsrs r1, 16 - movs r2, 0x6 - bl sub_81418C4 -_08141978: - adds r4, 0x1 - cmp r4, 0x4 - ble _0814195E - b _08141A84 - .align 2, 0 -_08141980: .4byte gUnknown_84664BC -_08141984: - ldrh r1, [r5, 0x2] - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _081419C4 - ldr r1, _081419BC @ =gSineTable - movs r2, 0x4 - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 23 - lsls r0, 16 - lsrs r0, 11 - ldr r1, _081419C0 @ =gUnknown_84664DC - adds r0, r1 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r5, 0x4] - adds r0, 0x20 - movs r1, 0x7F - ands r0, r1 - strh r0, [r5, 0x4] - movs r0, 0x8 - b _081419C6 - .align 2, 0 -_081419BC: .4byte gSineTable -_081419C0: .4byte gUnknown_84664DC -_081419C4: - subs r0, r1, 0x1 -_081419C6: - strh r0, [r5, 0x2] - movs r1, 0x6 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08141A00 - ldrh r0, [r5, 0x8] - adds r0, 0x8 - movs r1, 0x7F - ands r0, r1 - strh r0, [r5, 0x8] - ldr r1, _081419FC @ =gSineTable - movs r2, 0x8 - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r1, 16 - asrs r1, 21 - strh r1, [r5, 0xA] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x40 - movs r2, 0 - bl BlendPalettes - b _08141A2C - .align 2, 0 -_081419FC: .4byte gSineTable -_08141A00: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08141A2C - movs r0, 0 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xA] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r5, 0xA] - movs r0, 0xA - ldrsh r1, [r5, r0] - lsls r1, 27 - lsrs r1, 24 - movs r0, 0x40 - movs r2, 0 - bl BlendPalettes -_08141A2C: - movs r4, 0 - ldr r5, _08141A4C @ =gPlttBufferFaded - ldr r3, _08141A50 @ =gUnknown_8466C34 - ldr r2, _08141A54 @ =gPlttBufferUnfaded -_08141A34: - adds r0, r4, r3 - ldrb r0, [r0] - adds r0, 0x60 - lsls r0, 1 - adds r1, r0, r5 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x1 - bls _08141A34 - b _08141AA8 - .align 2, 0 -_08141A4C: .4byte gPlttBufferFaded -_08141A50: .4byte gUnknown_8466C34 -_08141A54: .4byte gPlttBufferUnfaded -_08141A58: - movs r4, 0 -_08141A5A: - adds r0, r4, 0 - bl sub_8140BF8 - cmp r0, 0 - beq _08141A74 - movs r0, 0x2 - bl GetBgTilemapBuffer - lsls r1, r4, 16 - lsrs r1, 16 - movs r2, 0x4 - bl sub_81418C4 -_08141A74: - adds r4, 0x1 - cmp r4, 0x4 - ble _08141A5A - ldr r0, _08141A94 @ =gUnknown_8465950 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette -_08141A84: - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - b _08141AA8 - .align 2, 0 -_08141A94: .4byte gUnknown_8465950 -_08141A98: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08141AA8 - adds r0, r4, 0 - bl DestroyTask -_08141AA8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_814191C - - thumb_func_start sub_8141AB0 -sub_8141AB0: @ 8141AB0 - push {lr} - ldr r0, _08141AD0 @ =sub_814191C - bl FindTaskIdByFunc - ldr r2, _08141AD4 @ =gTasks - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x2 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_08141AD0: .4byte sub_814191C -_08141AD4: .4byte gTasks - thumb_func_end sub_8141AB0 - - thumb_func_start sub_8141AD8 -sub_8141AD8: @ 8141AD8 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08141B14 @ =gUnknown_8466C38 - movs r1, 0xA - str r1, [sp] - movs r1, 0xD - str r1, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - lsls r4, 24 - asrs r4, 24 - adds r0, r4, 0 - bl Menu_MoveCursorNoWrapAround - bl sub_814112C - movs r1, 0x1 - str r1, [r0, 0x28] - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08141B14: .4byte gUnknown_8466C38 - thumb_func_end sub_8141AD8 - - thumb_func_start sub_8141B18 -sub_8141B18: @ 8141B18 - push {r4,lr} - bl sub_814112C - adds r4, r0, 0 - ldr r0, [r4, 0x28] - cmp r0, 0 - beq _08141B2E - bl DestroyYesNoMenu - movs r0, 0 - str r0, [r4, 0x28] -_08141B2E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8141B18 - - thumb_func_start sub_8141B34 -sub_8141B34: @ 8141B34 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - bl sub_814112C - adds r4, r0, 0 - movs r0, 0x2 - bl GetBgTilemapBuffer - mov r12, r0 - movs r1, 0 - movs r0, 0x44 - adds r0, r4 - mov r8, r0 - adds r7, r4, 0 - adds r7, 0x2C - ldr r0, _08141B9C @ =gUnknown_8466C40 - mov r9, r0 -_08141B5A: - movs r5, 0 - lsls r0, r1, 3 - adds r6, r1, 0x1 - mov r1, r8 - adds r4, r0, r1 - mov r1, r9 - adds r3, r0, r1 - adds r2, r0, 0 -_08141B6A: - ldrh r0, [r3] - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - strh r0, [r4] - adds r1, r7, r2 - adds r0, r5, 0 - adds r0, 0xC0 - strh r0, [r1] - adds r4, 0x2 - adds r3, 0x2 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _08141B6A - adds r1, r6, 0 - cmp r1, 0x2 - ble _08141B5A - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08141B9C: .4byte gUnknown_8466C40 - thumb_func_end sub_8141B34 - - thumb_func_start sub_8141BA0 -sub_8141BA0: @ 8141BA0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bhi _08141BD8 - bl sub_814112C - adds r4, r0, 0 - movs r0, 0x2 - bl GetBgTilemapBuffer - adds r6, r0, 0 - lsls r0, r5, 3 - ldr r1, _08141BE0 @ =gUnknown_8466C40 - adds r4, 0x2C - adds r3, r0, r4 - adds r2, r0, r1 - movs r4, 0x3 -_08141BC4: - ldrh r0, [r2] - lsls r0, 1 - adds r0, r6 - ldrh r1, [r3] - strh r1, [r0] - adds r3, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08141BC4 -_08141BD8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08141BE0: .4byte gUnknown_8466C40 - thumb_func_end sub_8141BA0 - - thumb_func_start sub_8141BE4 -sub_8141BE4: @ 8141BE4 - push {r4-r7,lr} - bl sub_814112C - adds r4, r0, 0 - movs r0, 0x2 - bl GetBgTilemapBuffer - adds r6, r0, 0 - movs r1, 0 - adds r7, r4, 0 - adds r7, 0x44 - ldr r0, _08141C2C @ =gUnknown_8466C40 - mov r12, r0 -_08141BFE: - lsls r0, r1, 3 - adds r5, r1, 0x1 - adds r3, r0, r7 - mov r1, r12 - adds r2, r0, r1 - movs r4, 0x3 -_08141C0A: - ldrh r0, [r2] - lsls r0, 1 - adds r0, r6 - ldrh r1, [r3] - strh r1, [r0] - adds r3, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08141C0A - adds r1, r5, 0 - cmp r1, 0x2 - ble _08141BFE - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08141C2C: .4byte gUnknown_8466C40 - thumb_func_end sub_8141BE4 - - thumb_func_start sub_8141C30 -sub_8141C30: @ 8141C30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - bl sub_814112C - adds r0, 0x20 - strb r4, [r0] - movs r0, 0xC - adds r1, r5, 0 - bl sub_8141148 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8141C30 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/slot_machine.s b/data/slot_machine.s deleted file mode 100644 index dac396602..000000000 --- a/data/slot_machine.s +++ /dev/null @@ -1,94 +0,0 @@ - .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 - -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 - -gUnknown_8466C34:: @ 8466C34 - .incbin "baserom.gba", 0x466C34, 0x4 - -gUnknown_8466C38:: @ 8466C38 - .incbin "baserom.gba", 0x466C38, 0x8 - -gUnknown_8466C40:: @ 8466C40 - .incbin "baserom.gba", 0x466C40, 0x18 diff --git a/data/strings.s b/data/strings.s index e1804aae0..4f6b40d85 100644 --- a/data/strings.s +++ b/data/strings.s @@ -3067,13 +3067,13 @@ gText_HatchedFromEgg:: @ 841B6FD gText_NickHatchPrompt:: @ 841B716 .string "Would you like to nickname the newly\nhatched {STR_VAR_1}?$" -gUnknown_841B747:: @ 841B747 +gString_OutOfCoins:: @ 841B747 .string "You've run out of COINS.\nGame over!$" -gUnknown_841B76B:: @ 841B76B +gString_QuitPlaying:: @ 841B76B .string "Quit playing?$" -gUnknown_841B779:: @ 841B779 +gString_SlotMachineControls:: @ 841B779 .string "{KEYGFX_DPAD_LEFT_RIGHT}COMBOS {KEYGFX_DPAD_DOWN}WAGER {KEYGFX_A_BUTTON}STOP {KEYGFX_B_BUTTON}EXIT$" gUnknown_841B798:: @ 0x841B798 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 Binary files differnew file mode 100644 index 000000000..be8dfb6e8 --- /dev/null +++ b/graphics/slot_machine/unk_8464a14.png 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 Binary files differnew file mode 100644 index 000000000..1fe951e50 --- /dev/null +++ b/graphics/slot_machine/unk_846506c.png 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 Binary files differnew file mode 100644 index 000000000..0e3154f61 --- /dev/null +++ b/graphics/slot_machine/unk_8465544.png 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 Binary files differnew file mode 100644 index 000000000..5223d0d3f --- /dev/null +++ b/graphics/slot_machine/unk_84659d0.png diff --git a/graphics/slot_machine/unk_84661d4.bin b/graphics/slot_machine/unk_84661d4.bin Binary files differnew file mode 100644 index 000000000..23182cba7 --- /dev/null +++ b/graphics/slot_machine/unk_84661d4.bin 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 Binary files differnew file mode 100644 index 000000000..4fb62b7a3 --- /dev/null +++ b/graphics/slot_machine/unk_846653c.png 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 Binary files differnew file mode 100644 index 000000000..73b5d1046 --- /dev/null +++ b/graphics/slot_machine/unk_8466620.png diff --git a/graphics/slot_machine/unk_8466998.bin b/graphics/slot_machine/unk_8466998.bin Binary files differnew file mode 100644 index 000000000..d7dc278da --- /dev/null +++ b/graphics/slot_machine/unk_8466998.bin 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/global.h b/include/global.h index e1f63213a..9a398354d 100644 --- a/include/global.h +++ b/include/global.h @@ -17,7 +17,7 @@ // Get the IDE to stfu // We define it this way to fool preproc. -#define INCBIN(x) {0} +#define INCBIN(...) {0} #define INCBIN_U8 INCBIN #define INCBIN_U16 INCBIN #define INCBIN_U32 INCBIN 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/include/strings.h b/include/strings.h index 85b67ed57..97c120ff3 100644 --- a/include/strings.h +++ b/include/strings.h @@ -203,4 +203,9 @@ extern const u8 gString_BattleRecords_ColumnHeaders[]; extern const u8 gString_BattleRecords_7Dashes[]; extern const u8 gString_BattleRecords_4Dashes[]; +// slot_machine +extern const u8 gString_OutOfCoins[]; +extern const u8 gString_QuitPlaying[]; +extern const u8 gString_SlotMachineControls[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index d9506d33f..36c882c32 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -254,7 +254,7 @@ SECTIONS { asm/berry_pouch.o(.text); asm/itemfinder.o(.text); src/buy_menu_helpers.o(.text); - asm/slot_machine.o(.text); + src/slot_machine.o(.text); src/roamer.o(.text); src/mystery_gift_menu.o(.text); src/mevent.o(.text); @@ -454,7 +454,7 @@ SECTIONS { data/berry_pouch.o(.rodata); data/itemfinder.o(.rodata); src/buy_menu_helpers.o(.rodata); - data/slot_machine.o(.rodata); + src/slot_machine.o(.rodata); src/roamer.o(.rodata); src/mystery_gift_menu.o(.rodata); src/mevent.o(.rodata); diff --git a/src/slot_machine.c b/src/slot_machine.c new file mode 100644 index 000000000..740234d95 --- /dev/null +++ b/src/slot_machine.c @@ -0,0 +1,2886 @@ +#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 "trig.h" +#include "strings.h" +#include "constants/songs.h" + +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; + u16 field_002C[3][4]; + u16 field_0044[3][4]; + u8 field_005C[0x800]; + 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; +}; + +static EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; +static EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL; + +static void sub_813F84C(struct SlotMachineState * ptr); +static void sub_813F898(void); +static void sub_813F92C(void); +static void sub_813F94C(void); +static void MainTask_SlotsGameLoop(u8 taskId); +static void MainTask_NoCoinsGameOver(u8 taskId); +static void MainTask_ShowHelp(u8 taskId); +static void MainTask_ConfirmExitGame(u8 taskId); +static void MainTask_DarnNoPayout(u8 taskId); +static void MainTask_WinHandlePayout(u8 taskId); +static void MainTask_ExitSlots(u8 taskId); +static void SetMainTask(TaskFunc taskFunc); +static void sub_8140060(u8 taskId); +static void sub_8140148(void); +static void sub_814016C(u16 whichReel, u16 whichReel2); +static bool32 sub_81401A0(u16); +static void sub_81401F0(u16 whichReel); +static void sub_81403BC(u16 whichReel); +static void sub_81404B8(u16 whichReel); +static bool32 sub_814054C(s32, s32, s32, s32, s32); +static bool32 sub_81406E8(s32, s32, s32); +static bool32 sub_81408F4(s32, s32); +static void sub_81409B4(void); +static void sub_8140A70(void); +static u16 sub_8140A80(void); +static void sub_8140C6C(struct SlotMachineGfxManager * manager); +static void sub_8140D7C(const s16 *, const s16 *); +static bool32 sub_814104C(void); +static void sub_8141094(void); +static struct SlotMachineSetupTaskData * sub_814112C(void); +static void sub_81410CC(u8 taskId); +static void sub_8141148(u16 a0, u8 a1); +static bool32 sub_8141180(u8 a0); +static bool8 sub_8141198(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141460(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81414AC(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81414EC(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81414FC(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141518(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141558(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141568(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141578(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141584(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81415C8(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141610(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *); +static void sub_81417E4(const u8 * str); +static void sub_8141828(void); +static void sub_8141834(u16 * bgTilemapBuffer); +static void sub_81418C4(u16 * bgTilemapBuffer, u16 a0, u16 a1); +static void sub_814191C(u8 taskId); +static void sub_8141AB0(void); +static void sub_8141AD8(u8 a0); +static void sub_8141B18(void); +static void sub_8141B34(void); +static void sub_8141BA0(u8 a0); +static void sub_8141BE4(void); +static void sub_8141C30(u8, u8); + +static 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} +}; + +static 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 +}; + +static 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 +}; + +static 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}, +}; + +static 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}, +}; + +static const u16 gUnknown_8464966[] = { + 0, + 2, + 6, + 8, + 15, + 100, + 300 +}; + +static const u16 gUnknown_8464974[] = INCBIN_U16("graphics/slot_machine/unk_8464974.gbapal"); +static const u16 gUnknown_8464994[] = INCBIN_U16("graphics/slot_machine/unk_8464994.gbapal"); +static const u16 gUnknown_84649B4[] = INCBIN_U16("graphics/slot_machine/unk_84649b4.gbapal"); +static const u16 gUnknown_84649D4[] = INCBIN_U16("graphics/slot_machine/unk_84649d4.gbapal"); +static const u16 gUnknown_84649F4[] = INCBIN_U16("graphics/slot_machine/unk_84649f4.gbapal"); +static const u32 gUnknown_8464A14[] = INCBIN_U32("graphics/slot_machine/unk_8464a14.4bpp.lz"); +static const u16 gUnknown_846504C[] = INCBIN_U16("graphics/slot_machine/unk_846504c.gbapal"); +static const u32 gUnknown_846506C[] = INCBIN_U32("graphics/slot_machine/unk_846506c.4bpp.lz"); +static const u16 gUnknown_8465524[] = INCBIN_U16("graphics/slot_machine/unk_8465524.gbapal"); +static const u32 gUnknown_8465544[] = INCBIN_U32("graphics/slot_machine/unk_8465544.4bpp.lz"); + +static const struct CompressedSpriteSheet gUnknown_84655B0[] = { + {(const void *)gUnknown_8464A14, 0xe00, 0}, + {(const void *)gUnknown_846506C, 0xc00, 1}, + {(const void *)gUnknown_8465544, 0x280, 2}, +}; + +static 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} +}; + +static const u16 gUnknown_8465608[] = { + 2, + 2, + 0, + 0, + 2, + 4, + 3 +}; + +static 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 +}; + +static 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 +}; + +static 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 +}; + +static const union AnimCmd gUnknown_8465740[] = { + ANIMCMD_FRAME(0x00, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465748[] = { + ANIMCMD_FRAME(0x10, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465750[] = { + ANIMCMD_FRAME(0x20, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465758[] = { + ANIMCMD_FRAME(0x30, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465760[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465768[] = { + ANIMCMD_FRAME(0x50, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465770[] = { + ANIMCMD_FRAME(0x60, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465778[] = { + ANIMCMD_FRAME(0x20, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465780[] = { + ANIMCMD_FRAME(0x30, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465788[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465790[] = { + ANIMCMD_FRAME(0x50, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465798[] = { + ANIMCMD_FRAME(0x60, 4), + ANIMCMD_END +}; + +static 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 +}; + +static const union AffineAnimCmd gUnknown_84657D0[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const gUnknown_84657E0[] = { + gUnknown_84657D0 +}; + +static const struct SpriteTemplate gUnknown_84657E4 = { + 0, 0, &gUnknown_8465738, gUnknown_84657A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +static 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 +}; + +static const union AnimCmd gUnknown_8465804[] = { + ANIMCMD_FRAME(0x00, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_846580C[] = { + ANIMCMD_FRAME(0x02, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465814[] = { + ANIMCMD_FRAME(0x04, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_846581C[] = { + ANIMCMD_FRAME(0x06, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465824[] = { + ANIMCMD_FRAME(0x08, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_846582C[] = { + ANIMCMD_FRAME(0x0a, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465834[] = { + ANIMCMD_FRAME(0x0c, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_846583C[] = { + ANIMCMD_FRAME(0x0e, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_8465844[] = { + ANIMCMD_FRAME(0x10, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_846584C[] = { + ANIMCMD_FRAME(0x12, 4), + ANIMCMD_END +}; + +static 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 +}; + +static const struct SpriteTemplate gUnknown_846587C = { + 2, 6, &gUnknown_84657FC, gUnknown_8465854, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +static 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 +}; + +static const union AnimCmd gUnknown_846589C[] = { + ANIMCMD_FRAME(0, 4), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_84658A4[] = { + ANIMCMD_FRAME( 0, 24), + ANIMCMD_FRAME(16, 24), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd gUnknown_84658B0[] = { + ANIMCMD_FRAME(32, 28), + ANIMCMD_FRAME(48, 28), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd gUnknown_84658BC[] = { + ANIMCMD_FRAME(64, 12), + ANIMCMD_FRAME(80, 12), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gUnknown_84658C8[] = { + gUnknown_846589C, + gUnknown_84658A4, + gUnknown_84658B0, + gUnknown_84658BC +}; + +static 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 +}; + +static const u16 gUnknown_8465930[] = INCBIN_U16("graphics/slot_machine/unk_8465930.gbapal"); +static const u16 gUnknown_8465950[] = INCBIN_U16("graphics/slot_machine/unk_8465950.gbapal"); +static const u16 gUnknown_8465970[] = INCBIN_U16("graphics/slot_machine/unk_8465970.gbapal"); +static const u16 gUnknown_8465990[] = INCBIN_U16("graphics/slot_machine/unk_8465990.gbapal"); +static const u16 gUnknown_84659B0[] = INCBIN_U16("graphics/slot_machine/unk_84659b0.gbapal"); +static const u32 gUnknown_84659D0[] = INCBIN_U32("graphics/slot_machine/unk_84659d0.4bpp.lz"); +static const u32 gUnknown_84661D4[] = INCBIN_U32("graphics/slot_machine/unk_84661d4.bin.lz"); +static const u16 gUnknown_84664BC[] = INCBIN_U16("graphics/slot_machine/unk_84664bc.gbapal"); +static const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal","graphics/slot_machine/unk_84664fc.gbapal", "graphics/slot_machine/unk_846651c.gbapal"); +static const u32 gUnknown_846653C[] = INCBIN_U32("graphics/slot_machine/unk_846653c.4bpp.lz"); +static const u16 gUnknown_84665C0[] = INCBIN_U16("graphics/slot_machine/unk_84665c0.gbapal"); +static const u16 gUnknown_84665E0[] = INCBIN_U16("graphics/slot_machine/unk_84665e0.gbapal"); +static const u16 gUnknown_8466600[] = INCBIN_U16("graphics/slot_machine/unk_8466600.gbapal"); +static const u32 gUnknown_8466620[] = INCBIN_U32("graphics/slot_machine/unk_8466620.4bpp.lz"); +static const u32 gUnknown_8466998[] = INCBIN_U32("graphics/slot_machine/unk_8466998.bin.lz"); + +static 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 + } +}; + +static 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 +}; + +static const u16 gUnknown_8466B38[] = { + 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218, 0x0219, 0x0237, 0x0238, 0x0239 +}; + +static 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 +}; + +static 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 +}; + +static 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 +}; + +static const u16 gUnknown_8466BE4[] = { + 0x0204, 0x0205, 0x0206, 0x0224, 0x0225, 0x0226, 0x01e7, 0x0207, 0x018c, 0x01ac, 0x0131, 0x0151, 0x00d6, 0x00f6, 0x00b7, 0x00b8, 0x00b9, 0x00d7, 0x00d8, 0x00d9 +}; + +static 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) } +}; + +static const u8 gUnknown_8466C34[2] = {2, 4}; + +static const struct WindowTemplate gUnknown_8466C38 = { + .bg = 0, + .tilemapLeft = 19, + .tilemapTop = 9, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x9F +}; + +static const u16 gUnknown_8466C40[][4] = { + {0x0229, 0x022a, 0x0249, 0x024a}, + {0x022e, 0x022f, 0x024e, 0x024f}, + {0x0233, 0x0234, 0x0253, 0x0254} +}; + +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); + } +} + +static 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; + } +} + +static 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; + } +} + +static void sub_813F92C(void) +{ + sub_8141094(); + if (sSlotMachineState != NULL) + { + Free(sSlotMachineState); + sSlotMachineState = NULL; + } +} + +static void sub_813F94C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static 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; +} + +static 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); +} + +static void sub_8140148(void) +{ + s32 i; + + for (i = 0; i < 3; i++) + { + sSlotMachineState->field_14[i] = TRUE; + } +} + +static 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; + } +} + +static bool32 sub_81401A0(u16 whichReel) +{ + return sSlotMachineState->field_14[whichReel]; +} + +static 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; +} + +static 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; +} + +static 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; +} + +static 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; +} + +static 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 +static 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 +static 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 + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static void sub_8140A70(void) +{ + sSlotMachineState->field_08 = 0; +} + +static 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; +} + +static u16 sub_8140BDC(void) +{ + return sSlotMachineState->payout; +} + +static u8 sub_8140BEC(void) +{ + return sSlotMachineState->bet; +} + +static bool32 sub_8140BF8(s32 a0) +{ + return sSlotMachineState->field_3C[a0]; +} + +static 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; +} + +static void sub_8140C50(void) +{ + if (sSlotMachineGfxManager != NULL) + { + Free(sSlotMachineGfxManager); + sSlotMachineGfxManager = NULL; + } +} + +static 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; + } + } +} + +static 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)); + } + } +} + +static 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++; + } +} + +static 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; + } +} + +static 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]; + } +} + +static 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; + } +} + +static 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; +} + +static void sub_8141020(u8 a0) +{ + s32 i; + for (i = 0; i < 2; i++) + { + StartSpriteAnim(sSlotMachineGfxManager->field_68[i], a0); + } +} + +static 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; +} + +static void sub_8141094(void) +{ + if (FuncIsActiveTask(sub_81410CC)) + { + Free(sub_814112C()); + DestroyTask(FindTaskIdByFunc(sub_81410CC)); + } + sub_8140C50(); + FreeAllWindowBuffers(); +} + +static 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); + } +} + +static void sub_8141118(void) +{ + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} + +static struct SlotMachineSetupTaskData * sub_814112C(void) +{ + return (void *)GetWordTaskArg(FindTaskIdByFunc(sub_81410CC), 0); +} + +static 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); +} + +static bool32 sub_8141180(u8 a0) +{ + return sub_814112C()->field_0000[a0].unk3; +} + +#ifdef NONMATCHING +static 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, gString_SlotMachineControls, 0); + textColor.fgColor = 15; + textColor.bgColor = 1; + textColor.shadowColor = 2; + AddTextPrinterParameterized3(1, 0, x, 0, &textColor, 0, gString_SlotMachineControls); + 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 +static 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 @ =gString_SlotMachineControls\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 gString_SlotMachineControls\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 + +static 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; +} + +static 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; +} + +static bool8 sub_81414EC(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(1); + return FALSE; +} + +static bool8 sub_81414FC(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(2); + CreateTask(sub_814191C, 3); + return FALSE; +} + +static 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; +} + +static bool8 sub_8141558(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(3); + return FALSE; +} + +static bool8 sub_8141568(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(FALSE); + return FALSE; +} + +static bool8 sub_8141578(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8140F2C(); + return FALSE; +} + +static bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_81417E4(gString_OutOfCoins); + CopyWindowToVram(0, 3); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +static bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_81417E4(gString_QuitPlaying); + sub_8141AD8(0); + CopyWindowToVram(0, 3); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +static 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; +} + +static 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; +} + +static 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; +} + +static 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; +} + +static 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; +} + +static 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); +} + +static void sub_8141828(void) +{ + rbox_fill_rectangle(0); +} + +static 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; + } +} + +static 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++; + } +} + +static void sub_814191C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s32 i; + + switch (data[0]) + { + case 0: + LoadPalette(gUnknown_84664BC, 0x60, 0x20); + for (i = 0; i < 5; i++) + { + if (sub_8140BF8(i)) + sub_81418C4(GetBgTilemapBuffer(2), i, 6); + } + CopyBgTilemapBufferToVram(2); + data[0]++; + break; + case 1: + if (data[1] == 0) + { + u16 y = gSineTable[data[2]] >> 7; + LoadPalette(&gUnknown_84664DC[16 * y], 0x10, 0x20); + data[2] += 32; + data[2] &= 0x7F; + data[1] = 8; + } + else + data[1]--; + + if (data[3] == 0) + { + data[4] += 8; + data[4] &= 0x7F; + data[5] = gSineTable[data[4]] >> 5; + BlendPalettes(0x00000040, data[5], RGB_BLACK); + } + else + { + data[4]++; + if (data[4] > 1) + { + data[4] = 0; + data[5]++; + data[5] &= 1; + BlendPalettes(0x00000040, data[5] * 8, RGB_BLACK); + } + } + + for (i = 0; i < NELEMS(gUnknown_8466C34); i++) + { + gPlttBufferFaded[gUnknown_8466C34[i] + 0x60] = gPlttBufferUnfaded[gUnknown_8466C34[i] + 0x60]; + } + break; + case 2: + for (i = 0; i < 5; i++) + { + if (sub_8140BF8(i)) + sub_81418C4(GetBgTilemapBuffer(2), i, 4); + } + LoadPalette(gUnknown_8465950, 0x10, 0x20); + CopyBgTilemapBufferToVram(2); + data[0]++; + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + DestroyTask(taskId); + break; + } +} + +static void sub_8141AB0(void) +{ + gTasks[FindTaskIdByFunc(sub_814191C)].data[0] = 2; +} + +static void sub_8141AD8(u8 cursorPos) +{ + CreateYesNoMenu(&gUnknown_8466C38, 2, 0, 2, 10, 13, cursorPos); + Menu_MoveCursorNoWrapAround(cursorPos); + sub_814112C()->field_0028 = TRUE; +} + +static void sub_8141B18(void) +{ + struct SlotMachineSetupTaskData * data = sub_814112C(); + if (data->field_0028) + { + DestroyYesNoMenu(); + data->field_0028 = FALSE; + } +} + +static void sub_8141B34(void) +{ + s32 i, j; + struct SlotMachineSetupTaskData * data = sub_814112C(); + u16 * buffer = GetBgTilemapBuffer(2); + + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + u16 idx = gUnknown_8466C40[i][j]; + data->field_0044[i][j] = buffer[idx]; + data->field_002C[i][j] = j + 0xC0; + } + } +} + +static void sub_8141BA0(u8 reel) +{ + if (reel < 3) + { + s32 i; + struct SlotMachineSetupTaskData * data = sub_814112C(); + u16 * buffer = GetBgTilemapBuffer(2); + for (i = 0; i < 4; i++) + { + u16 idx = gUnknown_8466C40[reel][i]; + buffer[idx] = data->field_002C[reel][i]; + } + } +} + +static void sub_8141BE4(void) +{ + s32 i, j; + struct SlotMachineSetupTaskData * data = sub_814112C(); + u16 * buffer = GetBgTilemapBuffer(2); + + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + u16 idx = gUnknown_8466C40[i][j]; + buffer[idx] = data->field_0044[i][j]; + } + } +} + +static void sub_8141C30(u8 a0, u8 a1) +{ + sub_814112C()->field_0020 = a0; + sub_8141148(12, a1); +} 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 3797720d5..07d5703b2 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1387,11 +1387,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 |