diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2020-03-05 16:21:48 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-05 16:21:48 -0500 |
commit | 44f47ab524f0b3b7648e5f66dfaf014488fc21e3 (patch) | |
tree | f05b0cdb3e31020ea0d1c9025b922972f8a4eb51 | |
parent | 3d5d298c63a88c1a581b58d44dcc3706a7799c04 (diff) | |
parent | 2e8d5d6279088ac5a2aad108f9ce895b2619e3bb (diff) |
Merge pull request #288 from PikalaxALT/dodrio_berry_picking
Dodrio Berry Picking
-rw-r--r-- | asm/dodrio_berry_picking.s | 11411 | ||||
-rw-r--r-- | asm/dodrio_berry_picking_2.s | 734 | ||||
-rw-r--r-- | include/dodrio_berry_picking.h | 100 | ||||
-rw-r--r-- | include/gba/macro.h | 29 | ||||
-rw-r--r-- | include/strings.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 7 | ||||
-rw-r--r-- | src/berry_pouch.c | 2 | ||||
-rw-r--r-- | src/data/dodrio_berry_picking.h | 247 | ||||
-rw-r--r-- | src/dodrio_berry_picking.c | 3012 | ||||
-rw-r--r-- | src/dodrio_berry_picking_2.c | 1620 | ||||
-rw-r--r-- | src/dodrio_berry_picking_3.c | 659 | ||||
-rw-r--r-- | src/fame_checker.c | 4 | ||||
-rw-r--r-- | src/help_system.c | 2 | ||||
-rw-r--r-- | src/item_menu.c | 2 | ||||
-rw-r--r-- | src/item_pc.c | 2 | ||||
-rw-r--r-- | src/list_menu.c | 2 | ||||
-rw-r--r-- | src/menu.c | 4 | ||||
-rw-r--r-- | src/shop.c | 2 | ||||
-rw-r--r-- | src/sound.c | 29 | ||||
-rw-r--r-- | src/strings.c | 2 | ||||
-rw-r--r-- | src/tm_case.c | 2 | ||||
-rw-r--r-- | sym_bss.txt | 7 | ||||
-rw-r--r-- | sym_ewram.txt | 25 |
23 files changed, 4953 insertions, 12953 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s deleted file mode 100644 index eca27fd8d..000000000 --- a/asm/dodrio_berry_picking.s +++ /dev/null @@ -1,11411 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start StartDodrioBerryPicking -StartDodrioBerryPicking: @ 81507FC - push {r4-r6,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r1, _081508A4 @ =gUnknown_3002044 - movs r0, 0 - str r0, [r1] - ldr r0, _081508A8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _081508CC - ldr r4, _081508AC @ =gUnknown_203F3E0 - ldr r0, _081508B0 @ =0x00003330 - bl AllocZeroed - str r0, [r4] - cmp r0, 0 - beq _081508CC - bl sub_81508D8 - ldr r0, [r4] - bl sub_81508EC - ldr r0, [r4] - str r5, [r0] - bl GetMultiplayerId - ldr r1, [r4] - adds r1, 0x28 - strb r0, [r1] - ldr r1, [r4] - ldr r2, _081508B4 @ =0x000032cc - adds r0, r1, r2 - adds r2, r1, 0 - adds r2, 0x28 - ldrb r3, [r2] - lsls r2, r3, 4 - subs r2, r3 - lsls r2, 2 - adds r1, r2 - ldr r2, _081508B8 @ =0x000031a0 - adds r1, r2 - movs r2, 0x3C - bl memcpy - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x28 - ldrb r1, [r1] - lsls r1, 2 - ldr r2, _081508BC @ =0x0000318c - adds r1, r2 - adds r0, r1 - movs r1, 0x64 - muls r1, r6 - ldr r2, _081508C0 @ =gPlayerParty - adds r1, r2 - bl sub_8152048 - ldr r0, _081508C4 @ =sub_8150A84 - movs r1, 0x1 - bl CreateTask - ldr r0, _081508C8 @ =sub_815201C - bl SetMainCallback2 - bl sub_8153150 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x24 - ldrb r0, [r0] - adds r1, r2, 0 - adds r1, 0x44 - adds r2, 0x48 - bl sub_81529A4 - bl StopMapMusic - movs r0, 0xA5 - lsls r0, 1 - bl PlayNewMapMusic - b _081508D2 - .align 2, 0 -_081508A4: .4byte gUnknown_3002044 -_081508A8: .4byte gReceivedRemoteLinkPlayers -_081508AC: .4byte gUnknown_203F3E0 -_081508B0: .4byte 0x00003330 -_081508B4: .4byte 0x000032cc -_081508B8: .4byte 0x000031a0 -_081508BC: .4byte 0x0000318c -_081508C0: .4byte gPlayerParty -_081508C4: .4byte sub_8150A84 -_081508C8: .4byte sub_815201C -_081508CC: - adds r0, r5, 0 - bl SetMainCallback2 -_081508D2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end StartDodrioBerryPicking - - thumb_func_start sub_81508D8 -sub_81508D8: @ 81508D8 - push {lr} - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - pop {r0} - bx r0 - thumb_func_end sub_81508D8 - - thumb_func_start sub_81508EC -sub_81508EC: @ 81508EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - adds r2, r0, 0 - movs r0, 0 - strb r0, [r2, 0xC] - strb r0, [r2, 0x10] - strb r0, [r2, 0x14] - strb r0, [r2, 0x18] - strb r0, [r2, 0x1C] - movs r3, 0x8E - lsls r3, 1 - adds r1, r2, r3 - str r0, [r1] - movs r7, 0x90 - lsls r7, 1 - adds r1, r2, r7 - str r0, [r1] - adds r1, r2, 0 - adds r1, 0x30 - strb r0, [r1] - adds r1, 0x10 - strb r0, [r1] - subs r1, 0x4 - strb r0, [r1] - adds r3, 0x10 - adds r1, r2, r3 - str r0, [r1] - movs r5, 0 - adds r1, r2, 0 - adds r1, 0x98 - movs r3, 0 -_08150932: - adds r0, r1, r5 - strb r3, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08150932 - movs r5, 0 - adds r7, r2, 0 - adds r7, 0xA8 - str r7, [sp] - adds r0, r2, 0 - adds r0, 0xB0 - str r0, [sp, 0xC] - movs r1, 0x4A - adds r1, r2 - mov r10, r1 - movs r3, 0x4C - adds r3, r2 - mov r9, r3 - movs r7, 0x4E - adds r7, r2 - mov r12, r7 - subs r0, 0x60 - str r0, [sp, 0x24] - adds r6, r2, 0 - adds r6, 0x54 - adds r1, r2, 0 - adds r1, 0xD0 - str r1, [sp, 0x1C] - adds r3, r2, 0 - adds r3, 0xDC - str r3, [sp, 0x20] - adds r7, r2, 0 - adds r7, 0xC4 - str r7, [sp, 0x14] - adds r0, 0xA4 - str r0, [sp, 0x4] - adds r1, 0x25 - str r1, [sp, 0x8] - subs r3, 0xBC - str r3, [sp, 0x10] - movs r7, 0x24 - adds r7, r2 - mov r8, r7 - subs r0, 0xC0 - str r0, [sp, 0x18] - movs r3, 0 - movs r1, 0x86 - lsls r1, 1 - adds r4, r2, r1 - movs r7, 0x98 - lsls r7, 1 - adds r2, r7 -_0815099E: - ldr r1, [sp] - adds r0, r1, r5 - strb r3, [r0] - ldr r7, [sp, 0xC] - adds r0, r7, r5 - strb r3, [r0] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - mov r7, r10 - adds r1, r7, r0 - strh r3, [r1] - mov r7, r9 - adds r1, r7, r0 - strh r3, [r1] - mov r7, r12 - adds r1, r7, r0 - strh r3, [r1] - ldr r7, [sp, 0x24] - adds r1, r7, r0 - strh r3, [r1] - adds r0, r6, r0 - strh r3, [r0] - adds r0, r4, r5 - strb r3, [r0] - lsls r0, r5, 2 - adds r0, r2, r0 - str r3, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _0815099E - movs r5, 0 - movs r3, 0 - movs r4, 0xFF - ldr r6, [sp, 0x1C] -_081509E8: - adds r0, r6, r5 - strb r3, [r0] - ldr r1, [sp, 0x20] - adds r0, r1, r5 - strb r3, [r0] - ldr r7, [sp, 0x14] - adds r0, r7, r5 - strb r3, [r0] - lsls r1, r5, 1 - ldr r0, [sp, 0x4] - adds r2, r0, r1 - ldrb r0, [r2] - orrs r0, r4 - strb r0, [r2] - ldr r7, [sp, 0x8] - adds r1, r7, r1 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xA - bls _081509E8 - bl GetMultiplayerId - movs r1, 0 - lsls r0, 24 - cmp r0, 0 - bne _08150A26 - movs r1, 0x1 -_08150A26: - ldr r0, [sp, 0x10] - strb r1, [r0] - bl GetLinkPlayerCount - mov r1, r8 - strb r0, [r1] - bl GetMultiplayerId - ldr r3, [sp, 0x18] - strb r0, [r3] - movs r5, 0x1 - mov r7, r8 - ldrb r7, [r7] - cmp r5, r7 - bcs _08150A72 - ldr r7, [sp, 0x18] - mov r6, r8 -_08150A48: - adds r4, r7, r5 - subs r0, r5, 0x1 - adds r0, r7, r0 - ldrb r0, [r0] - adds r0, 0x1 - strb r0, [r4] - ldrb r2, [r4] - ldrb r1, [r6] - subs r0, r1, 0x1 - cmp r2, r0 - ble _08150A66 - adds r0, r2, 0 - bl __umodsi3 - strb r0, [r4] -_08150A66: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - cmp r5, r0 - bcc _08150A48 -_08150A72: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81508EC - - thumb_func_start sub_8150A84 -sub_8150A84: @ 8150A84 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _08150AA4 @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0xC] - cmp r0, 0x7 - bls _08150A98 - b _08150BF0 -_08150A98: - lsls r0, 2 - ldr r1, _08150AA8 @ =_08150AAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08150AA4: .4byte gUnknown_203F3E0 -_08150AA8: .4byte _08150AAC - .align 2, 0 -_08150AAC: - .4byte _08150ACC - .4byte _08150AE0 - .4byte _08150B08 - .4byte _08150B16 - .4byte _08150B3C - .4byte _08150B90 - .4byte _08150BA2 - .4byte _08150BCC -_08150ACC: - movs r0, 0 - bl SetVBlankCallback - ldr r0, _08150ADC @ =sub_8151750 - movs r1, 0x4 - bl sub_815205C - b _08150BDC - .align 2, 0 -_08150ADC: .4byte sub_8151750 -_08150AE0: - ldr r0, _08150B00 @ =sub_8151750 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08150AEE - b _08150BFC -_08150AEE: - ldr r4, _08150B04 @ =gUnknown_203F3E0 - ldr r0, [r4] - movs r1, 0xB0 - lsls r1, 1 - adds r0, r1 - bl sub_8154968 - ldr r1, [r4] - b _08150BE0 - .align 2, 0 -_08150B00: .4byte sub_8151750 -_08150B04: .4byte gUnknown_203F3E0 -_08150B08: - bl sub_8155E68 - cmp r0, 0 - bne _08150BFC - bl LinkRfu_SetRfuFuncToSend6600 - b _08150BDC -_08150B16: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08150BFC - ldr r0, _08150B38 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08150BDC - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - b _08150BDC - .align 2, 0 -_08150B38: .4byte gReceivedRemoteLinkPlayers -_08150B3C: - ldr r0, _08150B88 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r5, [r0] - bl sub_8153A9C - movs r4, 0 - cmp r4, r5 - bcs _08150B76 -_08150B4E: - ldr r0, _08150B88 @ =gUnknown_203F3E0 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x34 - adds r0, r4 - ldrb r2, [r0] - lsls r0, r2, 2 - ldr r3, _08150B8C @ =0x0000318c - adds r0, r3 - adds r0, r1, r0 - adds r1, 0x24 - ldrb r3, [r1] - adds r1, r4, 0 - bl sub_8153AFC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08150B4E -_08150B76: - ldr r4, _08150B88 @ =gUnknown_203F3E0 - ldr r0, [r4] - adds r0, 0x24 - ldrb r1, [r0] - movs r0, 0 - bl sub_8153D80 - ldr r1, [r4] - b _08150BE0 - .align 2, 0 -_08150B88: .4byte gUnknown_203F3E0 -_08150B8C: .4byte 0x0000318c -_08150B90: - bl sub_8154128 - bl sub_815417C - bl sub_8154438 - bl sub_8153E28 - b _08150BDC -_08150BA2: - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _08150BC8 @ =sub_8152034 - bl SetVBlankCallback - b _08150BDC - .align 2, 0 -_08150BC8: .4byte sub_8152034 -_08150BCC: - bl UpdatePaletteFade - ldr r0, _08150BE8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08150BFC -_08150BDC: - ldr r0, _08150BEC @ =gUnknown_203F3E0 - ldr r1, [r0] -_08150BE0: - ldrb r0, [r1, 0xC] - adds r0, 0x1 - strb r0, [r1, 0xC] - b _08150BFC - .align 2, 0 -_08150BE8: .4byte gPaletteFade -_08150BEC: .4byte gUnknown_203F3E0 -_08150BF0: - adds r0, r1, 0 - bl DestroyTask - ldr r0, _08150C04 @ =sub_81516DC - bl sub_815206C -_08150BFC: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08150C04: .4byte sub_81516DC - thumb_func_end sub_8150A84 - - thumb_func_start sub_8150C08 -sub_8150C08: @ 8150C08 - push {lr} - bl sub_8151B54 - ldr r1, _08150C34 @ =sUnknown_8475578 - ldr r0, _08150C38 @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0x18] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08150C3C @ =gUnknown_3002044 - ldr r0, [r0] - cmp r0, 0 - bne _08150C2C - bl sub_815293C -_08150C2C: - bl sub_8151BA0 - pop {r0} - bx r0 - .align 2, 0 -_08150C34: .4byte sUnknown_8475578 -_08150C38: .4byte gUnknown_203F3E0 -_08150C3C: .4byte gUnknown_3002044 - thumb_func_end sub_8150C08 - - thumb_func_start sub_8150C40 -sub_8150C40: @ 8150C40 - push {lr} - bl sub_8151C5C - ldr r1, _08150C6C @ =sUnknown_84755A8 - ldr r0, _08150C70 @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0x18] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08150C74 @ =gUnknown_3002044 - ldr r0, [r0] - cmp r0, 0 - bne _08150C64 - bl sub_8152970 -_08150C64: - bl sub_8151D28 - pop {r0} - bx r0 - .align 2, 0 -_08150C6C: .4byte sUnknown_84755A8 -_08150C70: .4byte gUnknown_203F3E0 -_08150C74: .4byte gUnknown_3002044 - thumb_func_end sub_8150C40 - - thumb_func_start sub_8150C78 -sub_8150C78: @ 8150C78 - push {r4,lr} - ldr r4, _08150C8C @ =gUnknown_203F3E0 - ldr r0, [r4] - ldrb r0, [r0, 0x10] - cmp r0, 0 - beq _08150C90 - cmp r0, 0x1 - beq _08150CA6 - b _08150CB4 - .align 2, 0 -_08150C8C: .4byte gUnknown_203F3E0 -_08150C90: - movs r0, 0x1 - bl sub_8153BF8 - movs r0, 0x1 - bl sub_81549D4 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08150CB4 -_08150CA6: - bl sub_8155E68 - cmp r0, 0 - bne _08150CB4 - movs r0, 0x1 - bl sub_8152090 -_08150CB4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8150C78 - - thumb_func_start sub_8150CBC -sub_8150CBC: @ 8150CBC - push {r4,lr} - ldr r4, _08150CD8 @ =gUnknown_203F3E0 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - cmp r0, 0 - bne _08150CDC - bl sub_8152110 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08150CEC - .align 2, 0 -_08150CD8: .4byte gUnknown_203F3E0 -_08150CDC: - movs r0, 0x8C - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - str r0, [r1] - movs r0, 0x2 - bl sub_8152090 -_08150CEC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8150CBC - - thumb_func_start sub_8150CF4 -sub_8150CF4: @ 8150CF4 - push {lr} - sub sp, 0x4 - ldr r0, _08150D0C @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - cmp r0, 0x4 - bhi _08150D74 - lsls r0, 2 - ldr r1, _08150D10 @ =_08150D14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08150D0C: .4byte gUnknown_203F3E0 -_08150D10: .4byte _08150D14 - .align 2, 0 -_08150D14: - .4byte _08150D28 - .4byte _08150D4E - .4byte _08150D3A - .4byte _08150D46 - .4byte _08150D64 -_08150D28: - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0x78 - movs r3, 0x50 - bl StartMinigameCountdown - b _08150D52 -_08150D3A: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08150D74 - b _08150D52 -_08150D46: - bl IsMinigameCountdownRunning - cmp r0, 0 - bne _08150D74 -_08150D4E: - bl LinkRfu_SetRfuFuncToSend6600 -_08150D52: - ldr r0, _08150D60 @ =gUnknown_203F3E0 - ldr r1, [r0] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08150D74 - .align 2, 0 -_08150D60: .4byte gUnknown_203F3E0 -_08150D64: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08150D74 - movs r0, 0x3 - bl sub_8152090 -_08150D74: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8150CF4 - - thumb_func_start sub_8150D7C -sub_8150D7C: @ 8150D7C - push {lr} - ldr r0, _08150DA0 @ =gUnknown_203F3E0 - ldr r1, [r0] - ldrb r0, [r1, 0x10] - cmp r0, 0 - bne _08150D9A - movs r2, 0x8E - lsls r2, 1 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - beq _08150D9A - movs r0, 0x4 - bl sub_8152090 -_08150D9A: - pop {r0} - bx r0 - .align 2, 0 -_08150DA0: .4byte gUnknown_203F3E0 - thumb_func_end sub_8150D7C - - thumb_func_start sub_8150DA4 -sub_8150DA4: @ 8150DA4 - push {r4,lr} - ldr r4, _08150DE4 @ =gUnknown_203F3E0 - ldr r2, [r4] - ldrb r0, [r2, 0x10] - cmp r0, 0 - bne _08150E62 - adds r0, r2, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bhi _08150E54 - adds r0, r2, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0 - bne _08150E5A - ldr r0, _08150DE8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08150DF4 - ldr r1, _08150DEC @ =0x000031cc - adds r0, r2, r1 - ldrb r1, [r0] - cmp r1, 0 - bne _08150E5A - ldr r3, _08150DF0 @ =0x000031d0 - adds r0, r2, r3 - strb r1, [r0] - movs r0, 0x2 - b _08150E2E - .align 2, 0 -_08150DE4: .4byte gUnknown_203F3E0 -_08150DE8: .4byte gMain -_08150DEC: .4byte 0x000031cc -_08150DF0: .4byte 0x000031d0 -_08150DF4: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08150E14 - ldr r3, _08150E10 @ =0x000031cc - adds r0, r2, r3 - ldrb r1, [r0] - cmp r1, 0 - bne _08150E5A - adds r3, 0x4 - adds r0, r2, r3 - strb r1, [r0] - movs r0, 0x1 - b _08150E2E - .align 2, 0 -_08150E10: .4byte 0x000031cc -_08150E14: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08150E40 - ldr r3, _08150E3C @ =0x000031cc - adds r0, r2, r3 - ldrb r1, [r0] - cmp r1, 0 - bne _08150E5A - adds r3, 0x4 - adds r0, r2, r3 - strb r1, [r0] - movs r0, 0x3 -_08150E2E: - bl sub_815327C - ldr r1, [r4] - ldr r2, _08150E3C @ =0x000031cc - adds r1, r2 - strb r0, [r1] - b _08150E5A - .align 2, 0 -_08150E3C: .4byte 0x000031cc -_08150E40: - movs r0, 0 - bl sub_815327C - ldr r1, [r4] - ldr r3, _08150E50 @ =0x000031cc - adds r1, r3 - strb r0, [r1] - b _08150E5A - .align 2, 0 -_08150E50: .4byte 0x000031cc -_08150E54: - movs r0, 0xB - bl sub_8152090 -_08150E5A: - bl sub_815256C - bl sub_8151D98 -_08150E62: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8150DA4 - - thumb_func_start sub_8150E68 -sub_8150E68: @ 8150E68 - push {lr} - ldr r0, _08150EA8 @ =gUnknown_203F3E0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bhi _08150F30 - ldr r0, _08150EAC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08150EB8 - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r2, r0 - ldr r1, _08150EB0 @ =0x000031cc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08150F36 - ldr r3, _08150EB4 @ =0x000032f8 - adds r1, r2, r3 - movs r0, 0x2 - strb r0, [r1] - b _08150F36 - .align 2, 0 -_08150EA8: .4byte gUnknown_203F3E0 -_08150EAC: .4byte gMain -_08150EB0: .4byte 0x000031cc -_08150EB4: .4byte 0x000032f8 -_08150EB8: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08150EEC - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r2, r0 - ldr r1, _08150EE4 @ =0x000031cc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08150F36 - ldr r3, _08150EE8 @ =0x000032f8 - adds r1, r2, r3 - movs r0, 0x1 - strb r0, [r1] - b _08150F36 - .align 2, 0 -_08150EE4: .4byte 0x000031cc -_08150EE8: .4byte 0x000032f8 -_08150EEC: - movs r0, 0x20 - ands r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _08150F24 - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r2, r0 - ldr r1, _08150F1C @ =0x000031cc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08150F36 - ldr r3, _08150F20 @ =0x000032f8 - adds r1, r2, r3 - movs r0, 0x3 - strb r0, [r1] - b _08150F36 - .align 2, 0 -_08150F1C: .4byte 0x000031cc -_08150F20: .4byte 0x000032f8 -_08150F24: - ldr r3, _08150F2C @ =0x000032f8 - adds r0, r2, r3 - strb r1, [r0] - b _08150F36 - .align 2, 0 -_08150F2C: .4byte 0x000032f8 -_08150F30: - movs r0, 0xB - bl sub_8152090 -_08150F36: - bl sub_8151E94 - pop {r0} - bx r0 - thumb_func_end sub_8150E68 - - thumb_func_start sub_8150F40 -sub_8150F40: @ 8150F40 - push {r4,r5,lr} - bl sub_815256C - bl sub_8151D98 - bl sub_8152A98 - cmp r0, 0x1 - bne _08150F5E - bl sub_8153004 - movs r0, 0x5 - bl sub_8152090 - b _08150FBC -_08150F5E: - ldr r0, _08150F8C @ =gUnknown_203F3E0 - ldr r2, [r0] - movs r1, 0x96 - lsls r1, 1 - adds r4, r2, r1 - movs r1, 0x1 - str r1, [r4] - movs r3, 0x1 - adds r1, r2, 0 - adds r1, 0x24 - adds r5, r0, 0 - ldrb r1, [r1] - cmp r3, r1 - bcs _08150FBC - movs r1, 0x9A - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - cmp r0, 0x1 - beq _08150F90 - movs r0, 0 - str r0, [r4] - b _08150FBC - .align 2, 0 -_08150F8C: .4byte gUnknown_203F3E0 -_08150F90: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x24 - ldrb r0, [r0] - cmp r3, r0 - bcs _08150FBC - lsls r0, r3, 2 - movs r4, 0x98 - lsls r4, 1 - adds r1, r2, r4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0x1 - beq _08150F90 - movs r0, 0x96 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] -_08150FBC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8150F40 - - thumb_func_start sub_8150FC4 -sub_8150FC4: @ 8150FC4 - push {lr} - bl sub_8151E94 - bl sub_8152AD8 - cmp r0, 0x1 - bne _08150FD8 - movs r0, 0x5 - bl sub_8152090 -_08150FD8: - pop {r0} - bx r0 - thumb_func_end sub_8150FC4 - - thumb_func_start sub_8150FDC -sub_8150FDC: @ 8150FDC - push {r4-r6,lr} - ldr r6, _08150FF4 @ =gUnknown_203F3E0 - ldr r1, [r6] - ldrb r4, [r1, 0x10] - cmp r4, 0x1 - beq _08151010 - cmp r4, 0x1 - bgt _08150FF8 - cmp r4, 0 - beq _08150FFE - b _08151078 - .align 2, 0 -_08150FF4: .4byte gUnknown_203F3E0 -_08150FF8: - cmp r4, 0x2 - beq _0815101E - b _08151078 -_08150FFE: - adds r1, 0x4A - movs r0, 0 - movs r2, 0x3C - bl SendBlock - ldr r0, [r6] - strb r4, [r0, 0x8] - ldr r1, [r6] - b _0815106A -_08151010: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08151092 - ldr r1, [r6] - b _0815106A -_0815101E: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _08151048 -_0815102A: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151040 - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_08151040: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08151048: - ldr r0, [r6] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _0815102A - ldr r3, _08151074 @ =gUnknown_203F3E0 - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _08151092 - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - ldr r1, [r3] -_0815106A: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151092 - .align 2, 0 -_08151074: .4byte gUnknown_203F3E0 -_08151078: - movs r0, 0x1 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _08151092 - movs r0, 0x6 - bl sub_8152090 - ldr r0, _08151098 @ =0x00000137 - movs r1, 0x4 - bl FadeOutAndPlayNewMapMusic -_08151092: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08151098: .4byte 0x00000137 - thumb_func_end sub_8150FDC - - thumb_func_start sub_815109C -sub_815109C: @ 815109C - push {r4-r6,lr} - ldr r6, _081510B4 @ =gUnknown_203F3E0 - ldr r2, [r6] - ldrb r4, [r2, 0x10] - cmp r4, 0x1 - beq _081510DA - cmp r4, 0x1 - bgt _081510B8 - cmp r4, 0 - beq _081510BE - b _08151150 - .align 2, 0 -_081510B4: .4byte gUnknown_203F3E0 -_081510B8: - cmp r4, 0x2 - beq _081510E8 - b _08151150 -_081510BE: - ldrb r0, [r2, 0x14] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, 0x4A - adds r1, r2, r1 - movs r0, 0 - movs r2, 0x3C - bl SendBlock - ldr r0, [r6] - strb r4, [r0, 0x8] - ldr r1, [r6] - b _08151140 -_081510DA: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0815118A - ldr r1, [r6] - b _08151140 -_081510E8: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _0815111E -_081510F4: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151116 - ldr r0, [r6] - adds r0, 0x4A - ldr r1, _08151148 @ =gBlockRecvBuffer - movs r2, 0x3C - bl memcpy - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_08151116: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0815111E: - ldr r0, [r6] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _081510F4 - ldr r3, _0815114C @ =gUnknown_203F3E0 - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _0815118A - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - ldr r1, [r3] -_08151140: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _0815118A - .align 2, 0 -_08151148: .4byte gBlockRecvBuffer -_0815114C: .4byte gUnknown_203F3E0 -_08151150: - movs r0, 0x1 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _0815118A - ldr r0, _08151190 @ =gUnknown_203F3E0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r0, r2, 0 - adds r0, 0x54 - adds r0, r1 - ldrh r1, [r0] - movs r3, 0x8A - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x6 - bl sub_8152090 - ldr r0, _08151194 @ =0x00000137 - movs r1, 0x4 - bl FadeOutAndPlayNewMapMusic -_0815118A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08151190: .4byte gUnknown_203F3E0 -_08151194: .4byte 0x00000137 - thumb_func_end sub_815109C - - thumb_func_start sub_8151198 -sub_8151198: @ 8151198 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _081511B0 @ =gUnknown_203F3E0 - ldr r0, [r6] - ldrb r4, [r0, 0x10] - cmp r4, 0x1 - beq _081511DC - cmp r4, 0x1 - bgt _081511B4 - cmp r4, 0 - beq _081511BE - b _0815129C - .align 2, 0 -_081511B0: .4byte gUnknown_203F3E0 -_081511B4: - cmp r4, 0x2 - beq _08151202 - cmp r4, 0x3 - beq _0815121C - b _0815129C -_081511BE: - bl sub_81531FC - movs r0, 0x1 - bl sub_81540DC - bl sub_81544F0 - movs r0, 0x1 - bl sub_81545BC - movs r0, 0x2 - bl sub_81549D4 - ldr r1, [r6] - b _0815128A -_081511DC: - bl sub_8155E68 - cmp r0, 0 - bne _081512AA - mov r0, sp - strb r4, [r0] - movs r0, 0x5 - bl sub_81549D4 - bl sub_8155E8C - mov r1, sp - strb r0, [r1] - movs r0, 0 - movs r2, 0x1 - bl SendBlock - ldr r1, [r6] - b _0815128A -_08151202: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _081512AA - ldr r1, [r6] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1, 0x10] - ldr r0, [r6] - strb r2, [r0, 0x8] - b _081512AA -_0815121C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _0815125A -_08151228: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151252 - ldr r2, [r6] - adds r2, r4, r2 - movs r0, 0x86 - lsls r0, 1 - adds r2, r0 - lsls r0, r4, 8 - ldr r1, _08151294 @ =gBlockRecvBuffer - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_08151252: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0815125A: - ldr r0, [r6] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _08151228 - ldr r4, _08151298 @ =gUnknown_203F3E0 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _081512AA - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bls _081512AA - movs r0, 0x6 - bl sub_81549D4 - ldr r1, [r4] -_0815128A: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _081512AA - .align 2, 0 -_08151294: .4byte gBlockRecvBuffer -_08151298: .4byte gUnknown_203F3E0 -_0815129C: - bl sub_8155E68 - cmp r0, 0 - bne _081512AA - movs r0, 0x7 - bl sub_8152090 -_081512AA: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8151198 - - thumb_func_start sub_81512B4 -sub_81512B4: @ 81512B4 - push {r4-r7,lr} - sub sp, 0x4 - ldr r5, _081512D0 @ =gUnknown_203F3E0 - ldr r0, [r5] - ldrb r0, [r0, 0x10] - cmp r0, 0x6 - bls _081512C4 - b _0815144A -_081512C4: - lsls r0, 2 - ldr r1, _081512D4 @ =_081512D8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081512D0: .4byte gUnknown_203F3E0 -_081512D4: .4byte _081512D8 - .align 2, 0 -_081512D8: - .4byte _081512F4 - .4byte _08151314 - .4byte _08151330 - .4byte _08151344 - .4byte _08151360 - .4byte _0815138C - .4byte _081513AC -_081512F4: - bl sub_81534AC - ldr r1, _0815130C @ =0x00000bb7 - cmp r0, r1 - bls _08151304 - movs r0, 0x4 - bl sub_81549D4 -_08151304: - ldr r0, _08151310 @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_0815130C: .4byte 0x00000bb7 -_08151310: .4byte gUnknown_203F3E0 -_08151314: - bl sub_8155E68 - cmp r0, 0 - beq _0815131E - b _08151480 -_0815131E: - movs r0, 0x3 - bl sub_81549D4 - ldr r0, _0815132C @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_0815132C: .4byte gUnknown_203F3E0 -_08151330: - bl sub_81546C0 - bl sub_8153048 - ldr r0, _08151340 @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_08151340: .4byte gUnknown_203F3E0 -_08151344: - bl sub_8155E8C - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - cmp r0, 0 - bne _08151356 - b _08151480 -_08151356: - ldr r0, _0815135C @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_0815135C: .4byte gUnknown_203F3E0 -_08151360: - bl sub_8155E68 - cmp r0, 0 - beq _0815136A - b _08151480 -_0815136A: - movs r0, 0x5 - bl sub_81549D4 - bl sub_8155E8C - mov r1, sp - strb r0, [r1] - movs r0, 0 - movs r2, 0x1 - bl SendBlock - ldr r0, _08151388 @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_08151388: .4byte gUnknown_203F3E0 -_0815138C: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08151480 - ldr r3, _081513A8 @ =gUnknown_203F3E0 - ldr r1, [r3] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1, 0x10] - ldr r0, [r3] - strb r2, [r0, 0x8] - b _08151480 - .align 2, 0 -_081513A8: .4byte gUnknown_203F3E0 -_081513AC: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r7, _08151434 @ =gUnknown_203F3E0 - ldr r0, [r7] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcs _08151400 - adds r6, r7, 0 -_081513C4: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _081513EE - ldr r2, [r6] - adds r2, r4, r2 - movs r0, 0x86 - lsls r0, 1 - adds r2, r0 - lsls r0, r4, 8 - ldr r1, _08151438 @ =gBlockRecvBuffer - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_081513EE: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r7] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _081513C4 -_08151400: - ldr r4, _08151434 @ =gUnknown_203F3E0 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _0815143C - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bls _08151480 - bl sub_815336C - movs r0, 0x6 - bl sub_81549D4 - ldr r1, [r4] -_0815142A: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151480 - .align 2, 0 -_08151434: .4byte gUnknown_203F3E0 -_08151438: .4byte gBlockRecvBuffer -_0815143C: - bl sub_81532B8 - b _08151480 -_08151442: - movs r0, 0x8 - bl sub_8152090 - b _08151480 -_0815144A: - bl sub_8155E68 - cmp r0, 0 - bne _08151480 - movs r4, 0 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcs _0815147A - movs r3, 0x86 - lsls r3, 1 - adds r2, r1, r3 - adds r1, r0, 0 -_08151468: - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08151442 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r1 - bcc _08151468 -_0815147A: - movs r0, 0xA - bl sub_8152090 -_08151480: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81512B4 - - thumb_func_start sub_8151488 -sub_8151488: @ 8151488 - push {r4,lr} - ldr r4, _081514A0 @ =gUnknown_203F3E0 - ldr r0, [r4] - ldrb r0, [r0, 0x10] - cmp r0, 0x1 - beq _081514B6 - cmp r0, 0x1 - bgt _081514A4 - cmp r0, 0 - beq _081514AA - b _081514D6 - .align 2, 0 -_081514A0: .4byte gUnknown_203F3E0 -_081514A4: - cmp r0, 0x2 - beq _081514C0 - b _081514D6 -_081514AA: - bl Link_TryStartSend5FFF - movs r0, 0x7 - bl sub_81549D4 - b _081514CC -_081514B6: - bl sub_8155E68 - cmp r0, 0 - bne _081514E4 - b _081514CC -_081514C0: - bl sub_8155E8C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _081514E4 -_081514CC: - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _081514E4 -_081514D6: - ldr r0, _081514EC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _081514E4 - movs r0, 0x9 - bl sub_8152090 -_081514E4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081514EC: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_8151488 - - thumb_func_start sub_81514F0 -sub_81514F0: @ 81514F0 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08151508 @ =gUnknown_203F3E0 - ldr r0, [r4] - ldrb r1, [r0, 0x10] - cmp r1, 0x1 - beq _08151524 - cmp r1, 0x1 - bgt _0815150C - cmp r1, 0 - beq _08151512 - b _0815156C - .align 2, 0 -_08151508: .4byte gUnknown_203F3E0 -_0815150C: - cmp r1, 0x2 - beq _0815153C - b _0815156C -_08151512: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0815155E -_08151524: - bl UpdatePaletteFade - ldr r0, _08151538 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08151590 - b _0815155E - .align 2, 0 -_08151538: .4byte gPaletteFade -_0815153C: - bl sub_8154274 - bl sub_8153ED8 - ldr r0, [r4] - adds r0, 0x24 - ldrb r0, [r0] - bl sub_8153D08 - bl sub_8154578 - ldr r1, _08151568 @ =gUnknown_3002044 - movs r0, 0x1 - str r0, [r1] - movs r0, 0x8 - bl sub_81549D4 -_0815155E: - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151590 - .align 2, 0 -_08151568: .4byte gUnknown_3002044 -_0815156C: - bl sub_8155E68 - cmp r0, 0 - bne _08151590 - ldr r4, _08151598 @ =gUnknown_203F3E0 - ldr r0, [r4] - ldr r0, [r0] - bl SetMainCallback2 - ldr r0, [r4] - ldrb r0, [r0, 0x4] - bl DestroyTask - ldr r0, [r4] - bl Free - bl FreeAllWindowBuffers -_08151590: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08151598: .4byte gUnknown_203F3E0 - thumb_func_end sub_81514F0 - - thumb_func_start sub_815159C -sub_815159C: @ 815159C - push {r4,lr} - sub sp, 0x4 - ldr r4, _081515B4 @ =gUnknown_203F3E0 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - cmp r0, 0x6 - bhi _0815169C - lsls r0, 2 - ldr r1, _081515B8 @ =_081515BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081515B4: .4byte gUnknown_203F3E0 -_081515B8: .4byte _081515BC - .align 2, 0 -_081515BC: - .4byte _081515D8 - .4byte _08151676 - .4byte _081515F0 - .4byte _08151642 - .4byte _08151648 - .4byte _08151656 - .4byte _08151676 -_081515D8: - movs r0, 0x9 - bl sub_81549D4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08151686 -_081515F0: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - b _08151686 -_08151642: - bl StopMapMusic - b _08151686 -_08151648: - movs r0, 0xA5 - lsls r0, 1 - bl PlayNewMapMusic - bl sub_8154540 - b _08151686 -_08151656: - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08151686 -_08151676: - bl UpdatePaletteFade - ldr r0, _08151694 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081516CC -_08151686: - ldr r0, _08151698 @ =gUnknown_203F3E0 - ldr r1, [r0] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _081516CC - .align 2, 0 -_08151694: .4byte gPaletteFade -_08151698: .4byte gUnknown_203F3E0 -_0815169C: - ldrb r0, [r1, 0x4] - bl DestroyTask - ldr r0, _081516D4 @ =sub_81516DC - bl sub_815206C - bl sub_8154730 - ldr r0, [r4] - bl sub_81508EC - ldr r0, _081516D8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _081516C2 - ldr r0, [r4] - adds r0, 0x24 - movs r1, 0x1 - strb r1, [r0] -_081516C2: - bl sub_8153150 - movs r0, 0 - bl sub_81545BC -_081516CC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081516D4: .4byte sub_81516DC -_081516D8: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_815159C - - thumb_func_start sub_81516DC -sub_81516DC: @ 81516DC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _081516F8 @ =gUnknown_203F3E0 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - adds r4, r1, 0 - cmp r0, 0x1 - beq _08151708 - cmp r0, 0x1 - bgt _081516FC - cmp r0, 0 - beq _08151702 - b _08151720 - .align 2, 0 -_081516F8: .4byte gUnknown_203F3E0 -_081516FC: - cmp r0, 0x2 - beq _0815170E - b _08151720 -_08151702: - bl sub_81520B4 - b _08151712 -_08151708: - bl sub_8153DD8 - b _08151716 -_0815170E: - bl sub_8153F1C -_08151712: - cmp r0, 0x1 - bne _08151744 -_08151716: - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151744 -_08151720: - ldr r0, [r4] - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _08151738 - ldr r0, _08151734 @ =sub_8150C08 - bl sub_815206C - b _0815173E - .align 2, 0 -_08151734: .4byte sub_8150C08 -_08151738: - ldr r0, _0815174C @ =sub_8150C40 - bl sub_815206C -_0815173E: - adds r0, r5, 0 - bl DestroyTask -_08151744: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0815174C: .4byte sub_8150C40 - thumb_func_end sub_81516DC - - thumb_func_start sub_8151750 -sub_8151750: @ 8151750 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _08151774 @ =gTasks+0x8 - adds r6, r0, r1 - movs r0, 0 - ldrsh r5, [r6, r0] - cmp r5, 0x1 - beq _081517A8 - cmp r5, 0x1 - bgt _08151778 - cmp r5, 0 - beq _0815177E - b _08151836 - .align 2, 0 -_08151774: .4byte gTasks+0x8 -_08151778: - cmp r5, 0x2 - beq _081517BA - b _08151836 -_0815177E: - ldr r4, _081517A0 @ =gUnknown_203F3E0 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 2 - ldr r2, _081517A4 @ =0x0000318c - adds r0, r2 - adds r1, r0 - movs r0, 0 - movs r2, 0x1 - bl SendBlock - ldr r0, [r4] - strb r5, [r0, 0x8] - b _081517B2 - .align 2, 0 -_081517A0: .4byte gUnknown_203F3E0 -_081517A4: .4byte 0x0000318c -_081517A8: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08151836 -_081517B2: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _08151836 -_081517BA: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r3, _08151840 @ =gUnknown_203F3E0 - ldr r0, [r3] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcs _08151812 - adds r6, r3, 0 -_081517D2: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151800 - ldr r0, [r6] - lsls r2, r4, 2 - adds r2, r0 - ldr r0, _08151844 @ =0x0000318c - adds r2, r0 - lsls r0, r4, 8 - ldr r1, _08151848 @ =gBlockRecvBuffer - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0 - str r3, [sp] - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] - ldr r3, [sp] -_08151800: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r3] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _081517D2 -_08151812: - ldr r4, _08151840 @ =gUnknown_203F3E0 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x24 - ldrb r0, [r0, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _08151836 - adds r0, r7, 0 - bl DestroyTask - movs r0, 0x6 - bl sub_81549D4 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] -_08151836: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08151840: .4byte gUnknown_203F3E0 -_08151844: .4byte 0x0000318c -_08151848: .4byte gBlockRecvBuffer - thumb_func_end sub_8151750 - - thumb_func_start sub_815184C -sub_815184C: @ 815184C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - ldr r6, _08151928 @ =gUnknown_203F3E0 - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x24 - ldrb r7, [r1] - ldr r2, _0815192C @ =0x000031a0 - adds r1, r0, r2 - ldr r3, _08151930 @ =0x000031cc - adds r2, r0, r3 - ldr r4, _08151934 @ =0x00003208 - adds r3, r0, r4 - ldr r5, _08151938 @ =0x00003244 - adds r4, r0, r5 - str r4, [sp] - adds r5, 0x3C - adds r4, r0, r5 - str r4, [sp, 0x4] - adds r5, 0x3C - adds r4, r0, r5 - str r4, [sp, 0x8] - adds r4, r0, 0 - adds r4, 0x40 - str r4, [sp, 0xC] - movs r5, 0x90 - lsls r5, 1 - adds r4, r0, r5 - str r4, [sp, 0x10] - movs r4, 0x96 - lsls r4, 1 - adds r0, r4 - str r0, [sp, 0x14] - movs r0, 0 - bl sub_815A950 - ldr r1, [r6] - ldr r5, _0815193C @ =0x000031b0 - adds r2, r1, r5 - str r0, [r2] - movs r0, 0x94 - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - movs r5, 0x1 - cmp r5, r7 - bcs _081518F4 -_081518B0: - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xA8 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _081518EA - lsls r0, r5, 4 - subs r0, r5 - lsls r4, r0, 2 - adds r1, r4, r1 - ldr r2, _08151930 @ =0x000031cc - adds r1, r2 - adds r0, r5, 0 - bl sub_815AB04 - adds r1, r0, 0 - cmp r1, 0 - bne _081518EA - ldr r0, [r6] - adds r0, r4 - ldr r3, _08151930 @ =0x000031cc - adds r0, r3 - strb r1, [r0] - ldr r0, [r6] - movs r4, 0x94 - lsls r4, 1 - adds r0, r4 - strb r1, [r0] -_081518EA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _081518B0 -_081518F4: - ldr r5, _08151928 @ =gUnknown_203F3E0 - ldr r1, [r5] - movs r6, 0x92 - lsls r6, 1 - adds r1, r6 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bls _08151952 - ldr r1, [r5] - movs r2, 0x94 - lsls r2, 1 - adds r0, r1, r2 - ldrb r4, [r0] - cmp r4, 0 - beq _08151940 - bl sub_80FBA44 - ldr r0, [r5] - adds r0, r6 - movs r1, 0 - strb r1, [r0] - b _08151952 - .align 2, 0 -_08151928: .4byte gUnknown_203F3E0 -_0815192C: .4byte 0x000031a0 -_08151930: .4byte 0x000031cc -_08151934: .4byte 0x00003208 -_08151938: .4byte 0x00003244 -_0815193C: .4byte 0x000031b0 -_08151940: - adds r0, r1, r6 - ldrb r0, [r0] - cmp r0, 0x46 - bls _08151952 - bl sub_80FBA44 - ldr r0, [r5] - adds r0, r6 - strb r4, [r0] -_08151952: - movs r5, 0 - cmp r5, r7 - bcs _08151A46 - ldr r3, _0815199C @ =0x000031cc - mov r12, r3 - ldr r4, _081519A0 @ =gUnknown_203F3E0 - mov r8, r4 -_08151960: - mov r6, r8 - ldr r2, [r6] - lsls r0, r5, 4 - subs r1, r0, r5 - lsls r1, 2 - adds r1, r2, r1 - add r1, r12 - ldrb r1, [r1] - adds r6, r0, 0 - cmp r1, 0 - beq _08151986 - adds r0, r2, 0 - adds r0, 0xA8 - adds r1, r0, r5 - ldrb r0, [r1] - cmp r0, 0 - bne _08151986 - movs r0, 0x1 - strb r0, [r1] -_08151986: - adds r3, r4, 0 - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0xA8 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x3 - bgt _081519A4 - cmp r0, 0x1 - bge _081519AA - b _08151A3C - .align 2, 0 -_0815199C: .4byte 0x000031cc -_081519A0: .4byte gUnknown_203F3E0 -_081519A4: - cmp r0, 0x4 - beq _081519F8 - b _08151A3C -_081519AA: - adds r1, 0xB0 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _08151A3C - ldr r0, [r3] - adds r0, 0xB0 - adds r0, r5 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0xA8 - adds r0, r5 - strb r2, [r0] - ldr r0, [r3] - subs r1, r6, r5 - lsls r1, 2 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldr r0, [r3] - adds r0, r1 - ldr r6, _081519F0 @ =0x000031d0 - adds r0, r6 - strb r2, [r0] - ldr r0, [r3] - adds r0, r1 - ldr r1, _081519F4 @ =0x000031d4 - adds r0, r1 - b _08151A3A - .align 2, 0 -_081519F0: .4byte 0x000031d0 -_081519F4: .4byte 0x000031d4 -_081519F8: - adds r1, 0xB0 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x27 - bls _08151A3C - ldr r0, [r4] - adds r0, 0xB0 - adds r0, r5 - strb r2, [r0] - ldr r0, [r4] - adds r0, 0xA8 - adds r0, r5 - strb r2, [r0] - ldr r0, [r4] - subs r1, r6, r5 - lsls r1, 2 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldr r0, [r4] - adds r0, r1 - ldr r3, _08151A54 @ =0x000031d0 - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - adds r0, r1 - ldr r6, _08151A58 @ =0x000031d4 - adds r0, r6 -_08151A3A: - strb r2, [r0] -_08151A3C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _08151960 -_08151A46: - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08151A54: .4byte 0x000031d0 -_08151A58: .4byte 0x000031d4 - thumb_func_end sub_815184C - - thumb_func_start sub_8151A5C -sub_8151A5C: @ 8151A5C - push {r4-r7,lr} - sub sp, 0x18 - ldr r5, _08151B20 @ =gUnknown_203F3E0 - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x24 - ldrb r6, [r1] - ldr r2, _08151B24 @ =0x000031a0 - adds r1, r0, r2 - ldr r3, _08151B28 @ =0x000031cc - adds r2, r0, r3 - ldr r4, _08151B2C @ =0x00003208 - adds r3, r0, r4 - ldr r7, _08151B30 @ =0x00003244 - adds r4, r0, r7 - str r4, [sp] - adds r7, 0x3C - adds r4, r0, r7 - str r4, [sp, 0x4] - adds r7, 0x3C - adds r4, r0, r7 - str r4, [sp, 0x8] - adds r4, r0, 0 - adds r4, 0x40 - str r4, [sp, 0xC] - movs r7, 0x90 - lsls r7, 1 - adds r4, r0, r7 - str r4, [sp, 0x10] - movs r4, 0x96 - lsls r4, 1 - adds r0, r4 - str r0, [sp, 0x14] - movs r0, 0 - bl sub_815A950 - ldr r1, [r5] - ldr r7, _08151B34 @ =0x000031b0 - adds r2, r1, r7 - str r0, [r2] - movs r0, 0x94 - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - movs r4, 0x1 - cmp r4, r6 - bcs _08151AEC -_08151ABC: - adds r0, r4, 0 - bl sub_815AB60 - cmp r0, 0 - beq _08151AE2 - ldr r0, _08151B20 @ =gUnknown_203F3E0 - ldr r2, [r0] - lsls r1, r4, 2 - movs r3, 0x98 - lsls r3, 1 - adds r0, r2, r3 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] - movs r7, 0x94 - lsls r7, 1 - adds r1, r2, r7 - movs r0, 0 - strb r0, [r1] -_08151AE2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _08151ABC -_08151AEC: - ldr r5, _08151B20 @ =gUnknown_203F3E0 - ldr r1, [r5] - movs r6, 0x92 - lsls r6, 1 - adds r1, r6 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bls _08151B4A - ldr r1, [r5] - movs r2, 0x94 - lsls r2, 1 - adds r0, r1, r2 - ldrb r4, [r0] - cmp r4, 0 - beq _08151B38 - bl sub_80FBA44 - ldr r0, [r5] - adds r0, r6 - movs r1, 0 - strb r1, [r0] - b _08151B4A - .align 2, 0 -_08151B20: .4byte gUnknown_203F3E0 -_08151B24: .4byte 0x000031a0 -_08151B28: .4byte 0x000031cc -_08151B2C: .4byte 0x00003208 -_08151B30: .4byte 0x00003244 -_08151B34: .4byte 0x000031b0 -_08151B38: - adds r0, r1, r6 - ldrb r0, [r0] - cmp r0, 0x46 - bls _08151B4A - bl sub_80FBA44 - ldr r0, [r5] - adds r0, r6 - strb r4, [r0] -_08151B4A: - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8151A5C - - thumb_func_start sub_8151B54 -sub_8151B54: @ 8151B54 - push {r4,r5,lr} - ldr r5, _08151B6C @ =gUnknown_203F3E0 - ldr r0, [r5] - ldrb r0, [r0, 0x18] - cmp r0, 0x4 - beq _08151B90 - cmp r0, 0x4 - bgt _08151B70 - cmp r0, 0x3 - beq _08151B76 - b _08151B9A - .align 2, 0 -_08151B6C: .4byte gUnknown_203F3E0 -_08151B70: - cmp r0, 0xB - beq _08151B96 - b _08151B9A -_08151B76: - bl sub_8152A00 - adds r4, r0, 0 - cmp r4, 0x1 - bne _08151B9A - bl sub_8152A70 - ldr r0, [r5] - movs r1, 0x8E - lsls r1, 1 - adds r0, r1 - str r4, [r0] - b _08151B9A -_08151B90: - bl sub_815184C - b _08151B9A -_08151B96: - bl sub_8151A5C -_08151B9A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8151B54 - - thumb_func_start sub_8151BA0 -sub_8151BA0: @ 8151BA0 - push {r4-r6,lr} - sub sp, 0x14 - ldr r0, _08151BB4 @ =gUnknown_203F3E0 - ldr r5, [r0] - ldrb r0, [r5, 0x18] - cmp r0, 0x4 - beq _08151BB8 - cmp r0, 0xB - beq _08151C08 - b _08151C44 - .align 2, 0 -_08151BB4: .4byte gUnknown_203F3E0 -_08151BB8: - ldr r1, _08151BF8 @ =0x000032cc - adds r0, r5, r1 - ldr r2, _08151BFC @ =0x000031cc - adds r1, r5, r2 - ldr r3, _08151C00 @ =0x00003208 - adds r2, r5, r3 - ldr r4, _08151C04 @ =0x00003244 - adds r3, r5, r4 - movs r6, 0xCA - lsls r6, 6 - adds r4, r5, r6 - str r4, [sp] - adds r6, 0x3C - adds r4, r5, r6 - str r4, [sp, 0x4] - adds r4, r5, 0 - adds r4, 0x40 - ldrb r4, [r4] - str r4, [sp, 0x8] - movs r6, 0x90 - lsls r6, 1 - adds r4, r5, r6 - ldr r4, [r4] - str r4, [sp, 0xC] - adds r6, 0xC - adds r4, r5, r6 - ldr r4, [r4] - str r4, [sp, 0x10] - bl sub_815A61C - b _08151C44 - .align 2, 0 -_08151BF8: .4byte 0x000032cc -_08151BFC: .4byte 0x000031cc -_08151C00: .4byte 0x00003208 -_08151C04: .4byte 0x00003244 -_08151C08: - ldr r1, _08151C4C @ =0x000032cc - adds r0, r5, r1 - ldr r2, _08151C50 @ =0x000031cc - adds r1, r5, r2 - ldr r3, _08151C54 @ =0x00003208 - adds r2, r5, r3 - ldr r4, _08151C58 @ =0x00003244 - adds r3, r5, r4 - movs r6, 0xCA - lsls r6, 6 - adds r4, r5, r6 - str r4, [sp] - adds r6, 0x3C - adds r4, r5, r6 - str r4, [sp, 0x4] - adds r4, r5, 0 - adds r4, 0x40 - ldrb r4, [r4] - str r4, [sp, 0x8] - movs r6, 0x90 - lsls r6, 1 - adds r4, r5, r6 - ldr r4, [r4] - str r4, [sp, 0xC] - adds r6, 0xC - adds r4, r5, r6 - ldr r4, [r4] - str r4, [sp, 0x10] - bl sub_815A61C -_08151C44: - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08151C4C: .4byte 0x000032cc -_08151C50: .4byte 0x000031cc -_08151C54: .4byte 0x00003208 -_08151C58: .4byte 0x00003244 - thumb_func_end sub_8151BA0 - - thumb_func_start sub_8151C5C -sub_8151C5C: @ 8151C5C - push {r4-r6,lr} - sub sp, 0x18 - ldr r0, _08151C70 @ =gUnknown_203F3E0 - ldr r5, [r0] - ldrb r0, [r5, 0x18] - cmp r0, 0x4 - beq _08151C74 - cmp r0, 0xB - beq _08151CCC - b _08151D10 - .align 2, 0 -_08151C70: .4byte gUnknown_203F3E0 -_08151C74: - adds r0, r5, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 2 - ldr r2, _08151CBC @ =0x000031a0 - adds r1, r2 - adds r1, r5, r1 - ldr r3, _08151CC0 @ =0x000031cc - adds r2, r5, r3 - ldr r4, _08151CC4 @ =0x00003208 - adds r3, r5, r4 - ldr r6, _08151CC8 @ =0x00003244 - adds r4, r5, r6 - str r4, [sp] - adds r6, 0x3C - adds r4, r5, r6 - str r4, [sp, 0x4] - adds r6, 0x3C - adds r4, r5, r6 - str r4, [sp, 0x8] - adds r4, r5, 0 - adds r4, 0x40 - str r4, [sp, 0xC] - movs r6, 0x90 - lsls r6, 1 - adds r4, r5, r6 - str r4, [sp, 0x10] - adds r6, 0xC - adds r4, r5, r6 - str r4, [sp, 0x14] - bl sub_815A950 - b _08151D10 - .align 2, 0 -_08151CBC: .4byte 0x000031a0 -_08151CC0: .4byte 0x000031cc -_08151CC4: .4byte 0x00003208 -_08151CC8: .4byte 0x00003244 -_08151CCC: - adds r0, r5, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 2 - ldr r2, _08151D18 @ =0x000031a0 - adds r1, r2 - adds r1, r5, r1 - ldr r3, _08151D1C @ =0x000031cc - adds r2, r5, r3 - ldr r4, _08151D20 @ =0x00003208 - adds r3, r5, r4 - ldr r6, _08151D24 @ =0x00003244 - adds r4, r5, r6 - str r4, [sp] - adds r6, 0x3C - adds r4, r5, r6 - str r4, [sp, 0x4] - adds r6, 0x3C - adds r4, r5, r6 - str r4, [sp, 0x8] - adds r4, r5, 0 - adds r4, 0x40 - str r4, [sp, 0xC] - movs r6, 0x90 - lsls r6, 1 - adds r4, r5, r6 - str r4, [sp, 0x10] - adds r6, 0xC - adds r4, r5, r6 - str r4, [sp, 0x14] - bl sub_815A950 -_08151D10: - add sp, 0x18 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08151D18: .4byte 0x000031a0 -_08151D1C: .4byte 0x000031cc -_08151D20: .4byte 0x00003208 -_08151D24: .4byte 0x00003244 - thumb_func_end sub_8151C5C - - thumb_func_start sub_8151D28 -sub_8151D28: @ 8151D28 - push {r4,lr} - ldr r4, _08151D40 @ =gUnknown_203F3E0 - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0x4 - beq _08151D5E - cmp r0, 0x4 - bgt _08151D44 - cmp r0, 0x3 - beq _08151D4A - b _08151D90 - .align 2, 0 -_08151D40: .4byte gUnknown_203F3E0 -_08151D44: - cmp r0, 0xB - beq _08151D74 - b _08151D90 -_08151D4A: - movs r0, 0x1 - bl sub_815A5BC - ldr r0, [r4] - movs r1, 0x8E - lsls r1, 1 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] - b _08151D90 -_08151D5E: - ldr r2, _08151D70 @ =0x000032f8 - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _08151D90 - bl sub_815AAD8 - b _08151D90 - .align 2, 0 -_08151D70: .4byte 0x000032f8 -_08151D74: - movs r2, 0x90 - lsls r2, 1 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - bne _08151D90 - adds r2, 0xC - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - bne _08151D90 - movs r0, 0x1 - bl sub_815AB3C -_08151D90: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8151D28 - - thumb_func_start sub_8151D98 -sub_8151D98: @ 8151D98 - push {r4-r6,lr} - ldr r6, _08151DD0 @ =gUnknown_203F3E0 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r1, r2, r0 - ldr r3, _08151DD4 @ =0x000031cc - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08151DD8 - bl IsSEPlaying - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08151E3A - ldr r0, [r6] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - b _08151E3A - .align 2, 0 -_08151DD0: .4byte gUnknown_203F3E0 -_08151DD4: .4byte 0x000031cc -_08151DD8: - ldr r3, _08151E04 @ =0x000031d0 - adds r0, r1, r3 - ldrb r4, [r0] - cmp r4, 0x1 - bne _08151E08 - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08151E3A - movs r0, 0x19 - bl m4aSongNumStop - movs r0, 0x19 - bl PlaySE - ldr r0, [r6] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - b _08151E38 - .align 2, 0 -_08151E04: .4byte 0x000031d0 -_08151E08: - ldr r3, _08151E64 @ =0x000031d4 - adds r0, r1, r3 - ldrb r4, [r0] - cmp r4, 0x1 - bne _08151E3A - movs r5, 0xA2 - lsls r5, 1 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _08151E3A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08151E3A - movs r0, 0x16 - bl PlaySE - movs r0, 0x1 - bl sub_8153BC0 - ldr r0, [r6] - adds r0, r5 -_08151E38: - strb r4, [r0] -_08151E3A: - ldr r0, _08151E68 @ =gUnknown_203F3E0 - ldr r2, [r0] - movs r5, 0xAA - lsls r5, 1 - adds r1, r2, r5 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0 - bne _08151E6C - adds r0, r2, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bls _08151E6C - bl StopMapMusic - ldr r0, [r4] - adds r0, r5 - movs r1, 0x1 - b _08151E8A - .align 2, 0 -_08151E64: .4byte 0x000031d4 -_08151E68: .4byte gUnknown_203F3E0 -_08151E6C: - ldr r0, [r4] - movs r1, 0xAA - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08151E8C - movs r0, 0xA - bl PlayFanfareByFanfareNum - ldr r0, [r4] - movs r2, 0xAA - lsls r2, 1 - adds r0, r2 - movs r1, 0x2 -_08151E8A: - strb r1, [r0] -_08151E8C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8151D98 - - thumb_func_start sub_8151E94 -sub_8151E94: @ 8151E94 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r6, _08151EE0 @ =gUnknown_203F3E0 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x44 - ldrb r0, [r0] - mov r8, r0 - adds r0, r2, 0 - adds r0, 0x48 - ldrb r7, [r0] - subs r0, 0x20 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r1, r2, r0 - ldr r3, _08151EE4 @ =0x000031cc - adds r0, r1, r3 - ldrb r3, [r0] - cmp r3, 0 - bne _08151EEC - ldr r4, _08151EE8 @ =0x000031d0 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08151F4E - adds r4, 0x4 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08151F4E - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - strb r3, [r0] - b _08151F4E - .align 2, 0 -_08151EE0: .4byte gUnknown_203F3E0 -_08151EE4: .4byte 0x000031cc -_08151EE8: .4byte 0x000031d0 -_08151EEC: - ldr r3, _08151F18 @ =0x000031d0 - adds r0, r1, r3 - ldrb r4, [r0] - cmp r4, 0x1 - bne _08151F1C - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08151F4E - movs r0, 0x19 - bl m4aSongNumStop - movs r0, 0x19 - bl PlaySE - ldr r0, [r6] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r3 - b _08151F4C - .align 2, 0 -_08151F18: .4byte 0x000031d0 -_08151F1C: - ldr r4, _08151FA0 @ =0x000031d4 - adds r0, r1, r4 - ldrb r4, [r0] - cmp r4, 0x1 - bne _08151F4E - movs r5, 0xA2 - lsls r5, 1 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _08151F4E - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _08151F4E - movs r0, 0x16 - bl PlaySE - movs r0, 0x1 - bl sub_8153BC0 - ldr r0, [r6] - adds r0, r5 -_08151F4C: - strb r4, [r0] -_08151F4E: - mov r4, r8 - cmp r4, r7 - bcs _08151FC2 - ldr r5, _08151FA4 @ =gUnknown_203F3E0 -_08151F56: - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - ldr r1, _08151FA8 @ =0x000031a0 - adds r0, r1 - adds r0, r2, r0 - adds r1, r0, 0 - adds r1, 0x14 - adds r0, 0x1F - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x9 - bls _08151FAC - movs r3, 0xA4 - lsls r3, 1 - adds r0, r2, r3 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08151FB8 - adds r0, r1, r4 - ldrb r0, [r0] - adds r0, 0x43 - bl PlaySE - ldr r0, [r5] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - movs r1, 0x1 - b _08151FB6 - .align 2, 0 -_08151FA0: .4byte 0x000031d4 -_08151FA4: .4byte gUnknown_203F3E0 -_08151FA8: .4byte 0x000031a0 -_08151FAC: - movs r3, 0xA4 - lsls r3, 1 - adds r0, r2, r3 - adds r0, r4 - movs r1, 0 -_08151FB6: - strb r1, [r0] -_08151FB8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r7 - bcc _08151F56 -_08151FC2: - ldr r0, _08151FEC @ =gUnknown_203F3E0 - ldr r2, [r0] - movs r5, 0xAA - lsls r5, 1 - adds r1, r2, r5 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0 - bne _08151FF0 - adds r0, r2, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bls _08151FF0 - bl StopMapMusic - ldr r0, [r4] - adds r0, r5 - movs r1, 0x1 - b _0815200E - .align 2, 0 -_08151FEC: .4byte gUnknown_203F3E0 -_08151FF0: - ldr r0, [r4] - movs r1, 0xAA - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08152010 - movs r0, 0xA - bl PlayFanfareByFanfareNum - ldr r0, [r4] - movs r3, 0xAA - lsls r3, 1 - adds r0, r3 - movs r1, 0x2 -_0815200E: - strb r1, [r0] -_08152010: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8151E94 - - thumb_func_start sub_815201C -sub_815201C: @ 815201C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_815201C - - thumb_func_start sub_8152034 -sub_8152034: @ 8152034 - push {lr} - bl TransferPlttBuffer - bl LoadOam - bl ProcessSpriteCopyRequests - pop {r0} - bx r0 - thumb_func_end sub_8152034 - - thumb_func_start sub_8152048 -sub_8152048: @ 8152048 - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - bl IsMonShiny - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8152048 - - thumb_func_start sub_815205C -sub_815205C: @ 815205C - push {lr} - lsls r1, 24 - lsrs r1, 24 - bl CreateTask - pop {r0} - bx r0 - thumb_func_end sub_815205C - - thumb_func_start sub_815206C -sub_815206C: @ 815206C - push {lr} - movs r1, 0x1 - bl CreateTask - ldr r1, _0815208C @ =gUnknown_203F3E0 - ldr r3, [r1] - movs r2, 0 - strb r0, [r3, 0x4] - ldr r0, [r1] - strb r2, [r0, 0x10] - ldr r0, [r1] - strb r2, [r0, 0xC] - ldr r0, [r1] - strb r2, [r0, 0x14] - pop {r0} - bx r0 - .align 2, 0 -_0815208C: .4byte gUnknown_203F3E0 - thumb_func_end sub_815206C - - thumb_func_start sub_8152090 -sub_8152090: @ 8152090 - push {r4,lr} - ldr r2, _081520B0 @ =gUnknown_203F3E0 - ldr r1, [r2] - ldrb r3, [r1, 0x18] - movs r4, 0 - strb r3, [r1, 0x1C] - ldr r1, [r2] - strb r0, [r1, 0x18] - ldr r0, [r2] - strb r4, [r0, 0x10] - ldr r0, [r2] - strb r4, [r0, 0x14] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081520B0: .4byte gUnknown_203F3E0 - thumb_func_end sub_8152090 - - thumb_func_start sub_81520B4 -sub_81520B4: @ 81520B4 - push {r4,lr} - ldr r3, _081520E8 @ =gUnknown_203F3E0 - ldr r1, [r3] - ldrb r0, [r1, 0x14] - lsrs r2, r0, 2 - adds r0, 0x1 - strb r0, [r1, 0x14] - cmp r2, 0 - beq _08152108 - ldr r3, [r3] - ldrb r0, [r3, 0x14] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08152108 - ldr r1, _081520EC @ =sUnknown_8475548 - adds r0, r3, 0 - adds r0, 0x24 - ldrb r0, [r0] - subs r0, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r2, r0 - bcc _081520F0 - movs r0, 0x1 - b _0815210A - .align 2, 0 -_081520E8: .4byte gUnknown_203F3E0 -_081520EC: .4byte sUnknown_8475548 -_081520F0: - lsls r4, r2, 3 - adds r1, r4, 0 - movs r0, 0x14 - bl SetGpuReg - negs r4, r4 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x18 - adds r1, r4, 0 - bl SetGpuReg -_08152108: - movs r0, 0 -_0815210A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81520B4 - - thumb_func_start sub_8152110 -sub_8152110: @ 8152110 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r2, _08152168 @ =gUnknown_203F3E0 - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x44 - adds r0, 0x48 - ldrb r5, [r0] - ldrb r1, [r1] - cmp r1, r5 - bcs _0815215C - mov r8, r2 - ldr r0, _0815216C @ =0x000032e0 - mov r12, r0 - movs r7, 0 - movs r6, 0x1 -_08152132: - mov r2, r8 - ldr r0, [r2] - mov r2, r12 - adds r4, r0, r2 - ldr r2, _08152170 @ =0x000032eb - adds r0, r2 - adds r2, r0, r1 - movs r3, 0 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - bne _0815214C - movs r3, 0x1 -_0815214C: - strb r3, [r2] - adds r0, r4, r1 - strb r7, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r5 - bcc _08152132 -_0815215C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08152168: .4byte gUnknown_203F3E0 -_0815216C: .4byte 0x000032e0 -_08152170: .4byte 0x000032eb - thumb_func_end sub_8152110 - - thumb_func_start sub_8152174 -sub_8152174: @ 8152174 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r0, _08152248 @ =gUnknown_203F3E0 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x44 - ldrb r0, [r0] - str r0, [sp] - adds r0, r1, 0 - adds r0, 0x48 - ldrb r0, [r0] - str r0, [sp, 0x4] - adds r0, r1, 0 - adds r0, 0x24 - ldrb r0, [r0] - str r0, [sp, 0x8] - adds r0, r1, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bls _081521A8 - b _08152464 -_081521A8: - movs r6, 0 - ldr r0, [sp, 0x8] - cmp r6, r0 - bcs _08152290 -_081521B0: - ldr r3, _08152248 @ =gUnknown_203F3E0 - lsls r0, r6, 4 - subs r1, r0, r6 - lsls r1, 2 - ldr r2, [r3] - adds r1, r2 - ldr r4, _0815224C @ =0x000031cc - adds r4, r1 - mov r8, r4 - ldrb r1, [r4] - mov r9, r0 - adds r0, r6, 0x1 - str r0, [sp, 0xC] - cmp r1, 0 - beq _08152284 - adds r0, r2, 0 - adds r0, 0xA8 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08152284 - ldr r1, [sp] - mov r10, r1 - ldr r2, [sp, 0x4] - cmp r10, r2 - bcs _08152284 - adds r7, r3, 0 -_081521E6: - ldr r0, _08152250 @ =sUnknown_8471F50 - add r0, r10 - ldrb r5, [r0] - ldr r1, [r7] - lsls r4, r5, 1 - adds r0, r1, 0 - adds r0, 0xF4 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r6 - beq _08152284 - adds r0, r1, 0 - adds r0, 0xF5 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r6 - beq _08152284 - mov r0, r8 - ldrb r1, [r0] - adds r0, r6, 0 - adds r2, r5, 0 - bl sub_8152484 - cmp r0, 0x1 - bne _08152260 - movs r2, 0 - ldr r3, _08152248 @ =gUnknown_203F3E0 - mov r8, r4 -_0815221E: - ldr r0, [r3] - mov r4, r8 - adds r1, r2, r4 - adds r0, 0xF4 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0xFF - bne _08152254 - strb r6, [r1] - ldr r0, [r3] - adds r0, 0xA8 - adds r0, r6 - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r3] - adds r0, 0xC4 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - b _08152284 - .align 2, 0 -_08152248: .4byte gUnknown_203F3E0 -_0815224C: .4byte 0x000031cc -_08152250: .4byte sUnknown_8471F50 -_08152254: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bls _0815221E - b _08152284 -_08152260: - ldr r0, [r7] - mov r2, r9 - subs r1, r2, r6 - lsls r1, 2 - adds r0, r1 - ldr r4, _08152354 @ =0x000031d4 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08152284 - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, [sp, 0x4] - cmp r10, r0 - bcc _081521E6 -_08152284: - ldr r1, [sp, 0xC] - lsls r0, r1, 24 - lsrs r6, r0, 24 - ldr r2, [sp, 0x8] - cmp r6, r2 - bcc _081521B0 -_08152290: - ldr r4, [sp] - mov r10, r4 - ldr r0, [sp, 0x4] - cmp r10, r0 - bcc _0815229C - b _08152464 -_0815229C: - ldr r1, _08152358 @ =gUnknown_203F3E0 - mov r9, r1 -_081522A0: - movs r6, 0xFF - ldr r0, _0815235C @ =sUnknown_8471F50 - add r0, r10 - ldrb r5, [r0] - mov r2, r9 - ldr r0, [r2] - adds r0, 0xC4 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _081522B8 - b _08152452 -_081522B8: - adds r0, r5, 0 - bl sub_8152BD4 - mov r1, r9 - ldr r4, [r1] - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - adds r1, 0x90 - adds r1, r0 - ldrb r0, [r1] - movs r1, 0x7 - bl __udivsi3 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bls _081522DE - movs r3, 0x2 -_081522DE: - ldr r2, _08152360 @ =sUnknown_847553C - ldr r0, _08152364 @ =0x000031b4 - adds r1, r4, r0 - adds r1, r5 - lsls r0, r3, 1 - adds r0, r3 - ldrb r1, [r1] - adds r0, r1 - adds r0, r2 - ldrb r1, [r0] - adds r0, r4, 0 - adds r0, 0xD0 - adds r0, r5 - ldrb r0, [r0] - subs r2, r1, r0 - cmp r2, 0x5 - bgt _0815230C - adds r1, r4, 0 - adds r1, 0x9C - adds r1, r5 - ldrb r0, [r1] - adds r0, r2 - strb r0, [r1] -_0815230C: - mov r2, r9 - ldr r1, [r2] - adds r1, 0x9C - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - movs r4, 0xFF - ands r0, r4 - cmp r0, 0x5 - bhi _08152326 - b _08152452 -_08152326: - mov r1, r9 - ldr r0, [r1] - adds r0, 0x9C - adds r0, r5 - strb r2, [r0] - ldr r3, [r1] - lsls r1, r5, 1 - adds r0, r3, 0 - adds r0, 0xF4 - adds r2, r0, r1 - ldrb r0, [r2] - mov r8, r1 - cmp r0, 0xFF - bne _08152368 - adds r0, r3, 0 - adds r0, 0xF5 - add r0, r8 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08152350 - b _08152452 -_08152350: - b _08152378 - .align 2, 0 -_08152354: .4byte 0x000031d4 -_08152358: .4byte gUnknown_203F3E0 -_0815235C: .4byte sUnknown_8471F50 -_08152360: .4byte sUnknown_847553C -_08152364: .4byte 0x000031b4 -_08152368: - adds r0, r3, 0 - adds r0, 0xF5 - add r0, r8 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08152378 - ldrb r4, [r2] - b _0815239E -_08152378: - mov r2, r9 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xF4 - add r0, r8 - ldrb r7, [r0] - adds r1, 0xF5 - add r1, r8 - ldrb r6, [r1] - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - bne _0815239A - adds r4, r7, 0 - b _0815239E -_0815239A: - adds r4, r6, 0 - adds r6, r7, 0 -_0815239E: - mov r1, r9 - ldr r0, [r1] - ldr r2, _08152474 @ =0x000032eb - adds r0, r2 - adds r0, r5 - movs r1, 0x7 - strb r1, [r0] - mov r1, r9 - ldr r0, [r1] - adds r0, 0xC4 - adds r0, r5 - movs r1, 0x2 - strb r1, [r0] - mov r2, r9 - ldr r0, [r2] - adds r0, 0xA8 - adds r0, r4 - movs r1, 0x3 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xB8 - adds r0, r5 - strb r4, [r0] - ldr r1, [r2] - lsls r0, r4, 4 - subs r0, r4 - lsls r0, 2 - adds r1, r0 - ldr r2, _08152478 @ =0x000031d0 - adds r1, r2 - movs r0, 0x1 - strb r0, [r1] - mov r2, r9 - ldr r1, [r2] - lsls r0, r6, 4 - subs r0, r6 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815247C @ =0x000031d4 - adds r1, r0 - movs r2, 0x1 - strb r2, [r1] - mov r0, r9 - ldr r1, [r0] - lsls r0, r4, 1 - adds r1, 0x86 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8152D34 - movs r0, 0x1 - bl sub_8152F94 - adds r0, r4, 0 - bl sub_8152B64 - mov r1, r9 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0xE8 - adds r1, r5 - ldr r2, _08152480 @ =0x000032e0 - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - mov r4, r9 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - movs r1, 0x3 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0xF4 - add r1, r8 - ldrb r0, [r1] - movs r2, 0xFF - orrs r0, r2 - strb r0, [r1] - ldr r1, [r4] - adds r1, 0xF5 - add r1, r8 - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] -_08152452: - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r4, [sp, 0x4] - cmp r10, r4 - bcs _08152464 - b _081522A0 -_08152464: - 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 -_08152474: .4byte 0x000032eb -_08152478: .4byte 0x000031d0 -_0815247C: .4byte 0x000031d4 -_08152480: .4byte 0x000032e0 - thumb_func_end sub_8152174 - - thumb_func_start sub_8152484 -sub_8152484: @ 8152484 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r7, 0 - ldr r2, _081524B8 @ =gUnknown_203F3E0 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x24 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _081524BC @ =0x000032e0 - adds r1, r0 - mov r12, r2 - cmp r3, 0x2 - beq _081524C0 - cmp r3, 0x2 - bgt _081524C6 - cmp r3, 0x1 - beq _081524C4 - b _081524C6 - .align 2, 0 -_081524B8: .4byte gUnknown_203F3E0 -_081524BC: .4byte 0x000032e0 -_081524C0: - movs r7, 0x1 - b _081524C6 -_081524C4: - movs r7, 0x2 -_081524C6: - adds r0, r1, 0 - adds r0, 0xB - adds r0, r6 - ldrb r0, [r0] - subs r0, 0x6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08152524 - ldr r0, _08152518 @ =sUnknown_8472063 - lsls r1, r4, 1 - adds r1, r4 - adds r1, r7, r1 - lsls r2, r5, 4 - subs r2, r5 - adds r1, r2 - adds r1, r0 - ldrb r1, [r1] - cmp r6, r1 - bne _0815255A - mov r0, r12 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xC4 - adds r0, r6 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08152520 - lsls r0, r4, 4 - subs r0, r4 - lsls r0, 2 - adds r0, r1, r0 - ldr r1, _0815251C @ =0x000031d4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _0815255A - .align 2, 0 -_08152518: .4byte sUnknown_8472063 -_0815251C: .4byte 0x000031d4 -_08152520: - movs r0, 0x1 - b _0815255C -_08152524: - ldr r0, _08152564 @ =sUnknown_8472063 - lsls r1, r4, 1 - adds r1, r4 - adds r1, r7, r1 - lsls r2, r5, 4 - subs r2, r5 - adds r1, r2 - adds r1, r0 - ldrb r1, [r1] - cmp r6, r1 - bne _0815255A - mov r1, r12 - ldr r0, [r1] - adds r0, 0xA8 - adds r0, r4 - movs r1, 0x4 - strb r1, [r0] - mov r0, r12 - ldr r1, [r0] - lsls r0, r4, 4 - subs r0, r4 - lsls r0, 2 - adds r1, r0 - ldr r0, _08152568 @ =0x000031d4 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] -_0815255A: - movs r0, 0 -_0815255C: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08152564: .4byte sUnknown_8472063 -_08152568: .4byte 0x000031d4 - thumb_func_end sub_8152484 - - thumb_func_start sub_815256C -sub_815256C: @ 815256C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _08152640 @ =gUnknown_203F3E0 - ldr r4, [r2] - adds r0, r4, 0 - adds r0, 0x44 - ldrb r1, [r0] - adds r0, 0x4 - ldrb r0, [r0] - mov r9, r0 - movs r3, 0 - mov r10, r3 - movs r5, 0x90 - lsls r5, 1 - adds r0, r4, r5 - str r3, [r0] - adds r5, r1, 0 - mov r0, r9 - subs r0, 0x1 - cmp r5, r0 - blt _0815259E - b _081527BC -_0815259E: - mov r8, r2 -_081525A0: - mov r0, r8 - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0xC4 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x1 - bls _081525B2 - b _081526BC -_081525B2: - movs r1, 0x90 - lsls r1, 1 - adds r0, r4, r1 - movs r2, 0x1 - str r2, [r0] - ldr r1, _08152644 @ =0x000032eb - adds r0, r4, r1 - adds r6, r0, r5 - ldrb r0, [r6] - cmp r0, 0x9 - bls _0815264C - movs r7, 0 - movs r0, 0xA - strb r0, [r6] - mov r1, r8 - ldr r0, [r1] - adds r0, 0xC4 - adds r0, r5 - movs r1, 0x3 - strb r1, [r0] - mov r1, r8 - ldr r0, [r1] - movs r6, 0xA4 - lsls r6, 1 - adds r0, r6 - adds r1, r0, r5 - ldrb r0, [r1] - cmp r0, 0 - bne _081525FC - strb r2, [r1] - ldr r2, _08152648 @ =0x000032e0 - adds r0, r4, r2 - adds r0, r5 - ldrb r0, [r0] - adds r0, 0x43 - bl PlaySE -_081525FC: - mov r0, r8 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bls _08152612 - mov r2, r10 - cmp r2, 0x1 - beq _08152612 - b _081527AC -_08152612: - movs r0, 0x1 - mov r10, r0 - adds r0, r1, r6 - adds r0, r5 - strb r7, [r0] - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x40 - ldrb r0, [r1] - cmp r0, 0x9 - bhi _0815262E - adds r0, 0x1 - strb r0, [r1] -_0815262E: - movs r0, 0x3 - adds r1, r5, 0 - movs r2, 0 - bl sub_8152D34 - movs r0, 0 - bl sub_8152F94 - b _081527AC - .align 2, 0 -_08152640: .4byte gUnknown_203F3E0 -_08152644: .4byte 0x000032eb -_08152648: .4byte 0x000032e0 -_0815264C: - adds r0, r5, 0 - bl sub_8152BD4 - mov r2, r8 - ldr r7, [r2] - lsls r0, 24 - lsrs r0, 24 - adds r1, r7, 0 - adds r1, 0x90 - adds r1, r0 - ldrb r0, [r1] - movs r1, 0x7 - bl __udivsi3 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bls _08152672 - movs r3, 0x2 -_08152672: - ldr r2, _081526B4 @ =sUnknown_847553C - ldr r0, _081526B8 @ =0x000032e0 - adds r1, r4, r0 - adds r1, r5 - lsls r0, r3, 1 - adds r0, r3 - ldrb r1, [r1] - adds r0, r1 - adds r0, r2 - ldrb r2, [r0] - adds r1, r7, 0 - adds r1, 0xD0 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r3, 0 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r2 - bcc _081526AC - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - mov r1, r8 - ldr r0, [r1] - adds r0, 0xD0 - adds r0, r5 - strb r3, [r0] -_081526AC: - bl sub_8152174 - b _081527AC - .align 2, 0 -_081526B4: .4byte sUnknown_847553C -_081526B8: .4byte 0x000032e0 -_081526BC: - cmp r0, 0x2 - bne _0815273C - adds r1, r4, 0 - adds r1, 0xDC - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r3, 0 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bls _081527AC - mov r0, r8 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xB8 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r1, _08152730 @ =0x000031d0 - adds r2, r1 - strb r3, [r2] - mov r2, r8 - ldr r0, [r2] - adds r0, 0xDC - adds r0, r5 - strb r3, [r0] - ldr r0, [r2] - adds r0, 0xD0 - adds r0, r5 - strb r3, [r0] - ldr r0, [r2] - adds r0, 0xC4 - adds r0, r5 - strb r3, [r0] - ldr r1, _08152734 @ =0x000032eb - adds r0, r4, r1 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - adds r0, r5, 0 - bl sub_8152BD4 - lsls r0, 24 - lsrs r0, 24 - adds r1, r5, 0 - bl sub_8152BF8 - ldr r2, _08152738 @ =0x000032e0 - adds r1, r4, r2 - adds r1, r5 - strb r0, [r1] - b _081527AC - .align 2, 0 -_08152730: .4byte 0x000031d0 -_08152734: .4byte 0x000032eb -_08152738: .4byte 0x000032e0 -_0815273C: - cmp r0, 0x3 - bne _081527AC - adds r1, r4, 0 - adds r1, 0xDC - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bls _081527AC - mov r0, r8 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bhi _081527AC - adds r0, r1, 0 - adds r0, 0xDC - adds r0, r5 - strb r2, [r0] - mov r1, r8 - ldr r0, [r1] - adds r0, 0xD0 - adds r0, r5 - strb r2, [r0] - ldr r0, [r1] - adds r0, 0xC4 - adds r0, r5 - strb r2, [r0] - ldr r2, _081527CC @ =0x000032eb - adds r0, r4, r2 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - mov r0, r8 - ldr r1, [r0] - adds r1, 0xE8 - adds r1, r5 - subs r2, 0xB - adds r4, r2 - adds r4, r5 - ldrb r0, [r4] - strb r0, [r1] - adds r0, r5, 0 - bl sub_8152BD4 - lsls r0, 24 - lsrs r0, 24 - adds r1, r5, 0 - bl sub_8152BF8 - strb r0, [r4] -_081527AC: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r9 - subs r0, 0x1 - cmp r5, r0 - bge _081527BC - b _081525A0 -_081527BC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081527CC: .4byte 0x000032eb - thumb_func_end sub_815256C - - thumb_func_start sub_81527D0 -sub_81527D0: @ 81527D0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08152838 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x44 - adds r0, 0x48 - ldrb r0, [r0] - mov r8, r0 - ldrb r6, [r1] - cmp r6, r8 - bcs _081528C2 - ldr r0, _0815283C @ =sUnknown_8471F50 - mov r9, r0 -_081527F0: - ldr r0, _08152838 @ =gUnknown_203F3E0 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - ldr r2, _08152840 @ =0x000031a0 - adds r0, r2 - adds r7, r3, r0 - movs r0, 0xB - adds r2, r1, 0 - muls r2, r0 - adds r2, r6, r2 - adds r3, 0x24 - ldrb r1, [r3] - subs r1, 0x1 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 3 - subs r0, r1 - adds r2, r0 - add r2, r9 - ldrb r4, [r2] - adds r0, r7, 0 - adds r0, 0x1F - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _08152844 - adds r0, r6, 0 - movs r1, 0 - bl sub_81542EC - b _0815284C - .align 2, 0 -_08152838: .4byte gUnknown_203F3E0 -_0815283C: .4byte sUnknown_8471F50 -_08152840: .4byte 0x000031a0 -_08152844: - adds r0, r6, 0 - movs r1, 0x1 - bl sub_81542EC -_0815284C: - adds r0, r7, 0 - adds r0, 0x1F - adds r5, r0, r4 - ldrb r0, [r5] - cmp r0, 0x9 - bls _08152878 - adds r0, r7, 0 - adds r0, 0x14 - adds r0, r4 - ldrb r1, [r0] - adds r1, 0x3 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8154398 - ldrb r1, [r5] - lsls r1, 25 - movs r0, 0xFF - lsls r0, 24 - adds r1, r0 - b _0815289A -_08152878: - adds r0, r7, 0 - adds r0, 0x14 - adds r3, r0, r4 - ldrb r0, [r3] - cmp r0, 0x3 - bne _081528A4 - movs r0, 0x7 - strb r0, [r5] - adds r0, r6, 0 - movs r1, 0x6 - bl sub_8154398 - ldrb r1, [r5] - lsls r1, 25 - movs r2, 0xFF - lsls r2, 24 - adds r1, r2 -_0815289A: - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8154370 - b _081528B8 -_081528A4: - ldrb r1, [r3] - adds r0, r6, 0 - bl sub_8154398 - ldrb r1, [r5] - lsls r1, 25 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8154370 -_081528B8: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r8 - bcc _081527F0 -_081528C2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81527D0 - - thumb_func_start sub_81528D0 -sub_81528D0: @ 81528D0 - push {r4-r6,lr} - ldr r1, _08152908 @ =gUnknown_203F3E0 - ldr r0, [r1] - adds r0, 0x24 - ldrb r5, [r0] - movs r4, 0 - cmp r4, r5 - bcs _08152902 - adds r6, r1, 0 -_081528E2: - lsls r0, r4, 4 - subs r0, r4 - lsls r0, 2 - ldr r1, [r6] - adds r0, r1 - ldr r1, _0815290C @ =0x000031cc - adds r0, r1 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_8153DA8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _081528E2 -_08152902: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08152908: .4byte gUnknown_203F3E0 -_0815290C: .4byte 0x000031cc - thumb_func_end sub_81528D0 - - thumb_func_start sub_8152910 -sub_8152910: @ 8152910 - push {r4,r5,lr} - ldr r0, _08152938 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r5, [r0] - movs r4, 0 - cmp r4, r5 - bcs _08152932 -_08152920: - adds r0, r4, 0 - movs r1, 0x4 - bl sub_8153DA8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08152920 -_08152932: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08152938: .4byte gUnknown_203F3E0 - thumb_func_end sub_8152910 - - thumb_func_start sub_815293C -sub_815293C: @ 815293C - push {lr} - bl sub_81527D0 - ldr r0, _08152954 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bls _08152958 - bl sub_8152910 - b _0815295C - .align 2, 0 -_08152954: .4byte gUnknown_203F3E0 -_08152958: - bl sub_81528D0 -_0815295C: - ldr r0, _0815296C @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x40 - ldrb r0, [r0] - bl sub_8153FC8 - pop {r0} - bx r0 - .align 2, 0 -_0815296C: .4byte gUnknown_203F3E0 - thumb_func_end sub_815293C - - thumb_func_start sub_8152970 -sub_8152970: @ 8152970 - push {lr} - bl sub_81527D0 - ldr r0, _08152988 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bls _0815298C - bl sub_8152910 - b _08152990 - .align 2, 0 -_08152988: .4byte gUnknown_203F3E0 -_0815298C: - bl sub_81528D0 -_08152990: - ldr r0, _081529A0 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x40 - ldrb r0, [r0] - bl sub_8153FC8 - pop {r0} - bx r0 - .align 2, 0 -_081529A0: .4byte gUnknown_203F3E0 - thumb_func_end sub_8152970 - - thumb_func_start sub_81529A4 -sub_81529A4: @ 81529A4 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x4 - bhi _081529FC - lsls r0, 2 - ldr r1, _081529BC @ =_081529C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081529BC: .4byte _081529C0 - .align 2, 0 -_081529C0: - .4byte _081529D4 - .4byte _081529DC - .4byte _081529E4 - .4byte _081529EC - .4byte _081529F4 -_081529D4: - movs r0, 0x4 - strb r0, [r3] - movs r0, 0x7 - b _081529FA -_081529DC: - movs r0, 0x3 - strb r0, [r3] - movs r0, 0x8 - b _081529FA -_081529E4: - movs r0, 0x2 - strb r0, [r3] - movs r0, 0x9 - b _081529FA -_081529EC: - movs r0, 0x1 - strb r0, [r3] - movs r0, 0xA - b _081529FA -_081529F4: - movs r0, 0 - strb r0, [r3] - movs r0, 0xB -_081529FA: - strb r0, [r2] -_081529FC: - pop {r0} - bx r0 - thumb_func_end sub_81529A4 - - thumb_func_start sub_8152A00 -sub_8152A00: @ 8152A00 - push {r4-r6,lr} - ldr r1, _08152A58 @ =gUnknown_203F3E0 - ldr r0, [r1] - adds r0, 0x24 - ldrb r5, [r0] - movs r4, 0x1 - cmp r4, r5 - bcs _08152A66 - adds r6, r1, 0 -_08152A12: - ldr r0, [r6] - movs r1, 0xAC - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08152A34 - adds r0, r4, 0 - bl sub_815A5E8 - ldr r1, [r6] - movs r2, 0xAC - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] -_08152A34: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08152A12 - cmp r4, r5 - bcs _08152A66 - ldr r0, _08152A58 @ =gUnknown_203F3E0 - ldr r0, [r0] - movs r2, 0xAC - lsls r2, 1 - adds r1, r0, r2 -_08152A4C: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08152A5C - movs r0, 0 - b _08152A68 - .align 2, 0 -_08152A58: .4byte gUnknown_203F3E0 -_08152A5C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08152A4C -_08152A66: - movs r0, 0x1 -_08152A68: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8152A00 - - thumb_func_start sub_8152A70 -sub_8152A70: @ 8152A70 - push {r4,lr} - movs r1, 0 - ldr r4, _08152A94 @ =gUnknown_203F3E0 - movs r3, 0xAC - lsls r3, 1 - movs r2, 0 -_08152A7C: - ldr r0, [r4] - adds r0, r3 - adds r0, r1 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _08152A7C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08152A94: .4byte gUnknown_203F3E0 - thumb_func_end sub_8152A70 - - thumb_func_start sub_8152A98 -sub_8152A98: @ 8152A98 - push {r4,lr} - ldr r3, _08152ACC @ =gUnknown_203F3E0 - ldr r1, [r3] - adds r2, r1, 0 - adds r2, 0x40 - ldrb r0, [r2] - cmp r0, 0x9 - bls _08152AD0 - movs r4, 0x90 - lsls r4, 1 - adds r0, r1, r4 - ldr r0, [r0] - cmp r0, 0 - bne _08152AD0 - movs r0, 0xA - strb r0, [r2] - ldr r0, [r3] - movs r1, 0x96 - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _08152AD0 - movs r0, 0x1 - b _08152AD2 - .align 2, 0 -_08152ACC: .4byte gUnknown_203F3E0 -_08152AD0: - movs r0, 0 -_08152AD2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8152A98 - - thumb_func_start sub_8152AD8 -sub_8152AD8: @ 8152AD8 - push {r4-r6,lr} - ldr r4, _08152B50 @ =gUnknown_203F3E0 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0x40 - ldrb r0, [r2] - cmp r0, 0x9 - bls _08152B5C - adds r0, r1, 0 - adds r0, 0x44 - ldrb r3, [r0] - adds r0, 0x4 - ldrb r5, [r0] - movs r0, 0xA - strb r0, [r2] - ldr r4, [r4] - mov r12, r4 - movs r0, 0x96 - lsls r0, 1 - add r0, r12 - ldr r0, [r0] - cmp r0, 0 - beq _08152B5C - adds r4, r3, 0 - cmp r4, r5 - bcs _08152B4C - mov r0, r12 - adds r0, 0x28 - ldrb r3, [r0] - lsls r1, r3, 4 - subs r1, r3 - lsls r1, 2 - ldr r6, _08152B54 @ =sUnknown_8471F50 - subs r0, 0x4 - ldrb r2, [r0] - subs r2, 0x1 - add r1, r12 - movs r0, 0xB - muls r3, r0 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 3 - subs r2, r0, r2 - ldr r0, _08152B58 @ =0x000031bf - adds r1, r0 -_08152B32: - adds r0, r4, r3 - adds r0, r2 - adds r0, r6 - ldrb r0, [r0] - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0xA - bne _08152B5C - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08152B32 -_08152B4C: - movs r0, 0x1 - b _08152B5E - .align 2, 0 -_08152B50: .4byte gUnknown_203F3E0 -_08152B54: .4byte sUnknown_8471F50 -_08152B58: .4byte 0x000031bf -_08152B5C: - movs r0, 0 -_08152B5E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8152AD8 - - thumb_func_start sub_8152B64 -sub_8152B64: @ 8152B64 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08152BCC @ =sUnknown_8475550 - mov r8, r0 - ldr r0, _08152BD0 @ =gUnknown_203F3E0 - ldr r6, [r0] - adds r0, r6, 0 - adds r0, 0x90 - adds r0, r5 - mov r9, r0 - ldrb r7, [r0] - adds r0, r7, 0 - movs r1, 0x7 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - add r4, r8 - adds r0, r7, 0 - movs r1, 0x7 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldrb r4, [r4] - adds r0, r4 - lsls r0, 24 - lsls r5, 1 - adds r6, 0x86 - adds r6, r5 - ldrh r1, [r6] - lsrs r0, 24 - cmp r1, r0 - bcc _08152BBE - adds r0, r7, 0x1 - mov r1, r9 - strb r0, [r1] -_08152BBE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08152BCC: .4byte sUnknown_8475550 -_08152BD0: .4byte gUnknown_203F3E0 - thumb_func_end sub_8152B64 - - thumb_func_start sub_8152BD4 -sub_8152BD4: @ 8152BD4 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08152BF0 @ =sUnknown_84720FC - ldr r1, _08152BF4 @ =gUnknown_203F3E0 - ldr r1, [r1] - adds r1, 0x24 - ldrb r1, [r1] - subs r1, 0x1 - movs r2, 0xB - muls r1, r2 - adds r0, r1 - adds r0, r3 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08152BF0: .4byte sUnknown_84720FC -_08152BF4: .4byte gUnknown_203F3E0 - thumb_func_end sub_8152BD4 - - thumb_func_start sub_8152BF8 -sub_8152BF8: @ 8152BF8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r4, _08152C78 @ =gUnknown_203F3E0 - ldr r1, [r4] - adds r1, 0x24 - ldrb r2, [r1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08152C7C @ =sUnknown_84720AE - lsls r1, r0, 1 - adds r1, r0 - lsls r0, r2, 4 - subs r0, r2 - adds r1, r0 - adds r0, r1, r3 - ldrb r0, [r0] - mov r12, r0 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r7, [r0] - adds r3, 0x2 - adds r1, r3 - ldrb r1, [r1] - mov r8, r1 - movs r3, 0 - ldr r1, _08152C80 @ =sUnknown_8472133 - lsls r0, r2, 2 - adds r2, r0, r2 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08152C60 - adds r6, r1, 0 -_08152C46: - adds r0, r3, r2 - adds r0, r6 - ldrb r0, [r0] - cmp r5, r0 - beq _08152C84 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r3, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08152C46 -_08152C60: - ldr r0, [r4] - adds r0, 0x90 - mov r1, r12 - adds r2, r0, r1 - adds r1, r0, r7 - ldrb r0, [r2] - ldrb r3, [r1] - cmp r0, r3 - bls _08152C8E - adds r1, r0, 0 - b _08152C90 - .align 2, 0 -_08152C78: .4byte gUnknown_203F3E0 -_08152C7C: .4byte sUnknown_84720AE -_08152C80: .4byte sUnknown_8472133 -_08152C84: - ldr r0, [r4] - adds r0, 0x90 - adds r0, r7 - ldrb r0, [r0] - b _08152CA2 -_08152C8E: - ldrb r1, [r1] -_08152C90: - ldr r0, [r4] - adds r0, 0x90 - mov r2, r8 - adds r4, r0, r2 - ldrb r0, [r4] - cmp r0, r1 - bls _08152CA0 - adds r1, r0, 0 -_08152CA0: - adds r0, r1, 0 -_08152CA2: - adds r1, r5, 0 - bl sub_8152CB8 - lsls r0, 24 - lsrs r0, 24 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8152BF8 - - thumb_func_start sub_8152CB8 -sub_8152CB8: @ 8152CB8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08152CE4 @ =gUnknown_203F3E0 - ldr r2, [r2] - adds r2, 0xE8 - adds r2, r1 - ldrb r4, [r2] - movs r1, 0x7 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bhi _08152D26 - lsls r0, 2 - ldr r1, _08152CE8 @ =_08152CEC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08152CE4: .4byte gUnknown_203F3E0 -_08152CE8: .4byte _08152CEC - .align 2, 0 -_08152CEC: - .4byte _08152D26 - .4byte _08152D1E - .4byte _08152D2A - .4byte _08152D08 - .4byte _08152D0E - .4byte _08152D14 - .4byte _08152D1A -_08152D08: - cmp r4, 0 - beq _08152D1E - b _08152D26 -_08152D0E: - cmp r4, 0 - beq _08152D2A - b _08152D26 -_08152D14: - cmp r4, 0x2 - beq _08152D1E - b _08152D2A -_08152D1A: - cmp r4, 0 - bne _08152D22 -_08152D1E: - movs r0, 0x1 - b _08152D2C -_08152D22: - cmp r4, 0x1 - beq _08152D2A -_08152D26: - movs r0, 0 - b _08152D2C -_08152D2A: - movs r0, 0x2 -_08152D2C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8152CB8 - - thumb_func_start sub_8152D34 -sub_8152D34: @ 8152D34 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _08152D60 @ =gUnknown_203F3E0 - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0x24 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r4, 0 - bge _08152D54 - b _08152F8E -_08152D54: - cmp r4, 0x2 - ble _08152D64 - cmp r4, 0x3 - beq _08152D94 - b _08152F8E - .align 2, 0 -_08152D60: .4byte gUnknown_203F3E0 -_08152D64: - ldr r1, _08152D8C @ =0x000031b4 - adds r0, r2, r1 - adds r0, r3 - ldrb r4, [r0] - lsls r4, 1 - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r4, r0 - adds r0, r2, 0 - adds r0, 0x4A - adds r0, r4 - ldrh r0, [r0] - ldr r1, _08152D90 @ =0x00004e20 - bl sub_815378C - ldr r1, [r5] - adds r1, 0x4A - adds r1, r4 - b _08152F8C - .align 2, 0 -_08152D8C: .4byte 0x000031b4 -_08152D90: .4byte 0x00004e20 -_08152D94: - cmp r0, 0x3 - bne _08152D9A - b _08152EE0 -_08152D9A: - cmp r0, 0x3 - bgt _08152DA6 - cmp r0, 0x2 - bne _08152DA4 - b _08152F4A -_08152DA4: - b _08152F8E -_08152DA6: - cmp r0, 0x4 - beq _08152E56 - cmp r0, 0x5 - beq _08152DB0 - b _08152F8E -_08152DB0: - cmp r3, 0x9 - bls _08152DB6 - b _08152F8E -_08152DB6: - lsls r0, r3, 2 - ldr r1, _08152DC0 @ =_08152DC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08152DC0: .4byte _08152DC4 - .align 2, 0 -_08152DC4: - .4byte _08152DEC - .4byte _08152DFC - .4byte _08152E02 - .4byte _08152E12 - .4byte _08152E18 - .4byte _08152E28 - .4byte _08152E2E - .4byte _08152E3C - .4byte _08152E40 - .4byte _08152E50 -_08152DEC: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x68 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x74 - b _08152F88 -_08152DFC: - ldr r1, [r5] - adds r1, 0x74 - b _08152F88 -_08152E02: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x74 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x80 - b _08152F88 -_08152E12: - ldr r1, [r5] - adds r1, 0x80 - b _08152F88 -_08152E18: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x80 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x50 - b _08152F88 -_08152E28: - ldr r1, [r5] - adds r1, 0x50 - b _08152F88 -_08152E2E: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x50 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - b _08152F86 -_08152E3C: - ldr r1, [r5] - b _08152F86 -_08152E40: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x5C - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x68 - b _08152F88 -_08152E50: - ldr r1, [r5] - adds r1, 0x68 - b _08152F88 -_08152E56: - subs r0, r3, 0x1 - cmp r0, 0x7 - bls _08152E5E - b _08152F8E -_08152E5E: - lsls r0, 2 - ldr r1, _08152E68 @ =_08152E6C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08152E68: .4byte _08152E6C - .align 2, 0 -_08152E6C: - .4byte _08152E8C - .4byte _08152E9C - .4byte _08152EA2 - .4byte _08152EB2 - .4byte _08152EB8 - .4byte _08152EC6 - .4byte _08152ECA - .4byte _08152EDA -_08152E8C: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x68 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x74 - b _08152F88 -_08152E9C: - ldr r1, [r5] - adds r1, 0x74 - b _08152F88 -_08152EA2: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x74 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x50 - b _08152F88 -_08152EB2: - ldr r1, [r5] - adds r1, 0x50 - b _08152F88 -_08152EB8: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x50 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - b _08152F86 -_08152EC6: - ldr r1, [r5] - b _08152F86 -_08152ECA: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x5C - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x68 - b _08152F88 -_08152EDA: - ldr r1, [r5] - adds r1, 0x68 - b _08152F88 -_08152EE0: - subs r0, r3, 0x2 - cmp r0, 0x5 - bhi _08152F8E - lsls r0, 2 - ldr r1, _08152EF0 @ =_08152EF4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08152EF0: .4byte _08152EF4 - .align 2, 0 -_08152EF4: - .4byte _08152F0C - .4byte _08152F1C - .4byte _08152F22 - .4byte _08152F32 - .4byte _08152F38 - .4byte _08152F46 -_08152F0C: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x5C - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x68 - b _08152F88 -_08152F1C: - ldr r1, [r5] - adds r1, 0x68 - b _08152F88 -_08152F22: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x68 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x50 - b _08152F88 -_08152F32: - ldr r1, [r5] - adds r1, 0x50 - b _08152F88 -_08152F38: - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x50 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - b _08152F86 -_08152F46: - ldr r1, [r5] - b _08152F86 -_08152F4A: - cmp r3, 0x4 - beq _08152F70 - cmp r3, 0x4 - bgt _08152F58 - cmp r3, 0x3 - beq _08152F62 - b _08152F8E -_08152F58: - cmp r3, 0x5 - beq _08152F76 - cmp r3, 0x6 - beq _08152F84 - b _08152F8E -_08152F62: - adds r1, r2, 0 - adds r1, 0x50 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - adds r1, 0xC - b _08152F88 -_08152F70: - adds r1, r2, 0 - adds r1, 0x50 - b _08152F88 -_08152F76: - adds r1, r2, 0 - adds r1, 0x50 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - adds r1, 0xC - b _08152F88 -_08152F84: - adds r1, r2, 0 -_08152F86: - adds r1, 0x5C -_08152F88: - ldrh r0, [r1] - adds r0, 0x1 -_08152F8C: - strh r0, [r1] -_08152F8E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8152D34 - - thumb_func_start sub_8152F94 -sub_8152F94: @ 8152F94 - push {r4,r5,lr} - adds r1, r0, 0 - ldr r4, _08152FD8 @ =gUnknown_203F3E0 - ldr r3, [r4] - adds r0, r3, 0 - adds r0, 0x24 - ldrb r0, [r0] - cmp r0, 0x5 - bne _08152FFE - cmp r1, 0x1 - bne _08152FE0 - movs r5, 0x89 - lsls r5, 1 - adds r1, r3, r5 - ldrh r0, [r1] - adds r2, r0, 0x1 - strh r2, [r1] - movs r0, 0x8A - lsls r0, 1 - adds r1, r3, r0 - lsls r0, r2, 16 - lsrs r0, 16 - ldrh r3, [r1] - cmp r0, r3 - bls _08152FC8 - strh r2, [r1] -_08152FC8: - ldr r0, [r4] - adds r2, r0, r5 - ldrh r0, [r2] - ldr r1, _08152FDC @ =0x0000270f - cmp r0, r1 - bls _08152FFE - strh r1, [r2] - b _08152FFE - .align 2, 0 -_08152FD8: .4byte gUnknown_203F3E0 -_08152FDC: .4byte 0x0000270f -_08152FE0: - movs r2, 0x89 - lsls r2, 1 - adds r0, r3, r2 - movs r5, 0x8A - lsls r5, 1 - adds r1, r3, r5 - ldrh r0, [r0] - ldrh r3, [r1] - cmp r0, r3 - bls _08152FF6 - strh r0, [r1] -_08152FF6: - ldr r0, [r4] - adds r0, r2 - movs r1, 0 - strh r1, [r0] -_08152FFE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8152F94 - - thumb_func_start sub_8153004 -sub_8153004: @ 8153004 - push {r4,r5,lr} - movs r3, 0 - ldr r2, _08153044 @ =gUnknown_203F3E0 - ldr r0, [r2] - adds r0, 0x24 - ldrb r0, [r0] - cmp r3, r0 - bcs _0815303C - adds r5, r2, 0 - movs r4, 0x8A - lsls r4, 1 -_0815301A: - ldr r2, [r5] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r1, r2, 0 - adds r1, 0x54 - adds r1, r0 - adds r0, r2, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r2, 0x24 - ldrb r2, [r2] - cmp r3, r2 - bcc _0815301A -_0815303C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08153044: .4byte gUnknown_203F3E0 - thumb_func_end sub_8153004 - - thumb_func_start sub_8153048 -sub_8153048: @ 8153048 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r7, _08153138 @ =gUnknown_203F3E0 - movs r4, 0 - ldr r0, _0815313C @ =0x000031bf - mov r10, r0 -_0815305C: - movs r2, 0 - lsls r6, r5, 4 - lsls r1, r5, 1 - mov r8, r1 - lsls r0, r5, 3 - mov r12, r0 - adds r1, r5, 0x1 - mov r9, r1 - subs r0, r6, r5 - lsls r3, r0, 2 -_08153070: - ldr r0, [r7] - adds r1, r2, r3 - add r0, r10 - adds r0, r1 - strb r4, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bls _08153070 - ldr r0, [r7] - subs r1, r6, r5 - lsls r1, 2 - adds r0, r1 - ldr r2, _08153140 @ =0x000031cc - adds r0, r2 - strb r4, [r0] - ldr r0, [r7] - adds r0, r1 - ldr r1, _08153144 @ =0x000031d0 - adds r0, r1 - strb r4, [r0] - ldr r0, [r7] - adds r0, 0x90 - adds r0, r5 - strb r4, [r0] - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0x86 - add r0, r8 - strh r4, [r0] - add r1, r12 - ldr r2, _08153148 @ =0x00003308 - adds r1, r2 - strb r4, [r1] - ldr r2, [r7] - ldr r1, _0815314C @ =0x0000330c - adds r0, r2, r1 - add r0, r12 - str r4, [r0] - mov r0, r8 - adds r1, r0, r5 - lsls r1, 2 - adds r0, r2, 0 - adds r0, 0x4A - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - adds r0, 0x4E - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - adds r0, 0x52 - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - adds r0, 0x54 - adds r0, r1 - strh r4, [r0] - mov r1, r9 - lsls r0, r1, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _0815305C - ldr r2, _08153138 @ =gUnknown_203F3E0 - ldr r0, [r2] - movs r1, 0xAA - lsls r1, 1 - adds r0, r1 - movs r2, 0 - strb r2, [r0] - ldr r1, _08153138 @ =gUnknown_203F3E0 - ldr r0, [r1] - movs r1, 0x89 - lsls r1, 1 - adds r3, r0, r1 - movs r1, 0 - strh r2, [r3] - adds r0, 0x40 - strb r1, [r0] - bl sub_81528D0 - bl sub_81527D0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08153138: .4byte gUnknown_203F3E0 -_0815313C: .4byte 0x000031bf -_08153140: .4byte 0x000031cc -_08153144: .4byte 0x000031d0 -_08153148: .4byte 0x00003308 -_0815314C: .4byte 0x0000330c - thumb_func_end sub_8153048 - - thumb_func_start sub_8153150 -sub_8153150: @ 8153150 - push {r4,r5,lr} - movs r4, 0 - ldr r0, _08153168 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r0, [r0] - cmp r0, 0x4 - beq _0815316C - cmp r0, 0x5 - beq _08153170 - b _08153172 - .align 2, 0 -_08153168: .4byte gUnknown_203F3E0 -_0815316C: - movs r4, 0x1 - b _08153172 -_08153170: - movs r4, 0x2 -_08153172: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r3, 0 - lsls r1, r4, 2 - ldr r5, _081531B4 @ =gUnknown_203F3E0 - ldr r2, _081531B8 @ =sUnknown_8475558 - adds r1, r4 - lsls r1, 1 - adds r0, r1 - adds r0, r2 - ldrb r2, [r0] -_08153196: - ldr r1, [r5] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r1, 0x52 - adds r1, r0 - strh r2, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x4 - bls _08153196 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081531B4: .4byte gUnknown_203F3E0 -_081531B8: .4byte sUnknown_8475558 - thumb_func_end sub_8153150 - - thumb_func_start sub_81531BC -sub_81531BC: @ 81531BC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081531F4 @ =gUnknown_203F3E0 - ldr r2, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r0, r2, 0 - adds r0, 0x4A - adds r0, r1 - ldrh r3, [r0] - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r1 - ldrh r0, [r0] - adds r2, 0x4E - adds r2, r1 - adds r3, r0 - ldrh r2, [r2] - adds r0, r3, r2 - ldr r1, _081531F8 @ =0x0000270f - cmp r0, r1 - bls _081531EE - adds r0, r1, 0 -_081531EE: - pop {r1} - bx r1 - .align 2, 0 -_081531F4: .4byte gUnknown_203F3E0 -_081531F8: .4byte 0x0000270f - thumb_func_end sub_81531BC - - thumb_func_start sub_81531FC -sub_81531FC: @ 81531FC - push {r4-r6,lr} - ldr r5, _08153264 @ =gUnknown_203F3E0 - ldr r0, [r5] - adds r0, 0x28 - ldrb r0, [r0] - bl sub_81531BC - ldr r1, _08153268 @ =0x0000270f - bl sub_815379C - adds r4, r0, 0 - ldr r0, [r5] - adds r0, 0x28 - ldrb r0, [r0] - bl sub_8153424 - ldr r1, _0815326C @ =0x000f4236 - bl sub_815379C - adds r2, r0, 0 - ldr r3, _08153270 @ =gSaveBlock2Ptr - ldr r0, [r3] - movs r6, 0xB1 - lsls r6, 4 - adds r1, r0, r6 - ldr r0, [r1] - cmp r0, r2 - bcs _08153236 - str r2, [r1] -_08153236: - ldr r0, [r3] - ldr r2, _08153274 @ =0x00000b14 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, r4 - bcs _08153244 - strh r4, [r1] -_08153244: - ldr r0, [r3] - ldr r6, _08153278 @ =0x00000b16 - adds r2, r0, r6 - ldr r0, [r5] - movs r1, 0x8A - lsls r1, 1 - adds r0, r1 - ldrh r1, [r0] - ldrh r0, [r2] - cmp r0, r1 - bcs _0815325C - strh r1, [r2] -_0815325C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08153264: .4byte gUnknown_203F3E0 -_08153268: .4byte 0x0000270f -_0815326C: .4byte 0x000f4236 -_08153270: .4byte gSaveBlock2Ptr -_08153274: .4byte 0x00000b14 -_08153278: .4byte 0x00000b16 - thumb_func_end sub_81531FC - - thumb_func_start sub_815327C -sub_815327C: @ 815327C - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _081532B4 @ =gUnknown_203F3E0 - ldr r0, [r1] - adds r0, 0x9B - ldrb r6, [r0] - movs r3, 0x3 - adds r5, r1, 0 - adds r4, r5, 0 -_08153290: - ldr r0, [r4] - adds r0, 0x98 - adds r2, r0, r3 - subs r1, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - lsls r1, 24 - lsrs r3, r1, 24 - cmp r3, 0 - bne _08153290 - ldr r0, [r5] - adds r0, 0x98 - strb r7, [r0] - adds r0, r6, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081532B4: .4byte gUnknown_203F3E0 - thumb_func_end sub_815327C - - thumb_func_start sub_81532B8 -sub_81532B8: @ 81532B8 - push {r4,lr} - ldr r4, _081532EC @ =gUnknown_203F3E0 - ldr r3, [r4] - adds r0, r3, 0 - adds r0, 0x28 - ldrb r1, [r0] - adds r0, 0x88 - adds r2, r0, r1 - ldrb r0, [r2] - cmp r0, 0 - bne _08153360 - ldr r0, _081532F0 @ =gMain - ldrh r2, [r0, 0x2E] - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - beq _081532F8 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r3, r0 - ldr r1, _081532F4 @ =0x000031cc - adds r0, r1 - movs r1, 0x2 - b _0815332E - .align 2, 0 -_081532EC: .4byte gUnknown_203F3E0 -_081532F0: .4byte gMain -_081532F4: .4byte 0x000031cc -_081532F8: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _08153314 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r3, r0 - ldr r1, _08153310 @ =0x000031cc - adds r0, r1 - movs r1, 0x3 - b _0815332E - .align 2, 0 -_08153310: .4byte 0x000031cc -_08153314: - movs r0, 0x10 - ands r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _0815334C - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r3, r0 - ldr r1, _08153348 @ =0x000031cc - adds r0, r1 - movs r1, 0x1 -_0815332E: - strb r1, [r0] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x28 - adds r0, 0xB0 - ldrb r1, [r1] - adds r0, r1 - movs r1, 0x6 - strb r1, [r0] - movs r0, 0xCD - bl PlaySE - b _08153364 - .align 2, 0 -_08153348: .4byte 0x000031cc -_0815334C: - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r3, r0 - ldr r1, _0815335C @ =0x000031cc - adds r0, r1 - strb r2, [r0] - b _08153364 - .align 2, 0 -_0815335C: .4byte 0x000031cc -_08153360: - subs r0, 0x1 - strb r0, [r2] -_08153364: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81532B8 - - thumb_func_start sub_815336C -sub_815336C: @ 815336C - ldr r0, _08153388 @ =gUnknown_203F3E0 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x28 - ldrb r2, [r0] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815338C @ =0x000031cc - adds r1, r0 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08153388: .4byte gUnknown_203F3E0 -_0815338C: .4byte 0x000031cc - thumb_func_end sub_815336C - - thumb_func_start sub_8153390 -sub_8153390: @ 8153390 - ldr r0, _081533B0 @ =gUnknown_203F3E0 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x28 - ldrb r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, 0x52 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - bx lr - .align 2, 0 -_081533B0: .4byte gUnknown_203F3E0 - thumb_func_end sub_8153390 - - thumb_func_start sub_81533B4 -sub_81533B4: @ 81533B4 - ldr r0, _081533C0 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r0, [r0] - bx lr - .align 2, 0 -_081533C0: .4byte gUnknown_203F3E0 - thumb_func_end sub_81533B4 - - thumb_func_start sub_81533C4 -sub_81533C4: @ 81533C4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _081533E4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _081533F0 - ldr r0, _081533E8 @ =gUnknown_203F3E0 - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 2 - ldr r2, _081533EC @ =0x000031a0 - adds r1, r2 - ldr r0, [r0] - b _081533F8 - .align 2, 0 -_081533E4: .4byte gReceivedRemoteLinkPlayers -_081533E8: .4byte gUnknown_203F3E0 -_081533EC: .4byte 0x000031a0 -_081533F0: - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - ldr r1, _08153400 @ =gLinkPlayers + 8 -_081533F8: - adds r0, r1 - pop {r1} - bx r1 - .align 2, 0 -_08153400: .4byte gLinkPlayers + 8 - thumb_func_end sub_81533C4 - - thumb_func_start sub_8153404 -sub_8153404: @ 8153404 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r2, _08153420 @ =gUnknown_203F3E0 - ldr r3, [r2] - lsrs r1, 23 - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - adds r1, r2 - adds r3, 0x4A - adds r3, r1 - ldrh r0, [r3] - bx lr - .align 2, 0 -_08153420: .4byte gUnknown_203F3E0 - thumb_func_end sub_8153404 - - thumb_func_start sub_8153424 -sub_8153424: @ 8153424 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - movs r3, 0 - ldr r0, _08153490 @ =gUnknown_203F3E0 - mov r9, r0 - ldr r2, _08153494 @ =sUnknown_84755D8 - mov r10, r2 - ldr r2, [r0] - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - str r0, [sp] - adds r6, r2, 0 - adds r6, 0x4A - mov r12, r1 - mov r8, r10 -_08153452: - lsls r1, r3, 1 - ldr r7, [sp] - adds r0, r1, r7 - adds r0, r6, r0 - ldrh r2, [r0] - add r1, r8 - movs r7, 0 - ldrsh r0, [r1, r7] - muls r0, r2 - adds r5, r0 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x2 - bls _08153452 - mov r0, r9 - ldr r1, [r0] - mov r2, r12 - adds r0, r2, r4 - lsls r0, 2 - adds r1, 0x50 - adds r1, r0 - ldrh r1, [r1] - mov r3, r10 - movs r7, 0x6 - ldrsh r0, [r3, r7] - muls r0, r1 - cmp r5, r0 - bls _08153498 - subs r0, r5, r0 - b _0815349A - .align 2, 0 -_08153490: .4byte gUnknown_203F3E0 -_08153494: .4byte sUnknown_84755D8 -_08153498: - movs r0, 0 -_0815349A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8153424 - - thumb_func_start sub_81534AC -sub_81534AC: @ 81534AC - push {r4-r6,lr} - ldr r0, _081534E8 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r6, [r0] - movs r0, 0 - bl sub_8153424 - adds r5, r0, 0 - movs r4, 0x1 - cmp r4, r6 - bcs _081534DA -_081534C4: - adds r0, r4, 0 - bl sub_8153424 - cmp r0, r5 - bls _081534D0 - adds r5, r0, 0 -_081534D0: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _081534C4 -_081534DA: - ldr r1, _081534EC @ =0x000f4236 - adds r0, r5, 0 - bl sub_815379C - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081534E8: .4byte gUnknown_203F3E0 -_081534EC: .4byte 0x000f4236 - thumb_func_end sub_81534AC - - thumb_func_start sub_81534F0 -sub_81534F0: @ 81534F0 - push {r4,r5,lr} - lsls r0, 24 - ldr r1, _08153530 @ =gUnknown_203F3E0 - ldr r2, [r1] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r5, [r1] - lsrs r4, r0, 23 - adds r2, 0x4A - adds r0, r2, r4 - ldrh r3, [r0] - movs r1, 0 - cmp r1, r5 - bcs _08153528 -_0815350C: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r2, r0 - ldrh r0, [r0] - cmp r0, r3 - bls _0815351E - adds r3, r0, 0 -_0815351E: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r5 - bcc _0815350C -_08153528: - adds r0, r3, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08153530: .4byte gUnknown_203F3E0 - thumb_func_end sub_81534F0 - - thumb_func_start sub_8153534 -sub_8153534: @ 8153534 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0x1 - ldr r0, _081535AC @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r5, [r0] - movs r4, 0 - cmp r4, r5 - bcs _08153562 -_0815354C: - adds r0, r4, 0 - bl sub_8153424 - lsls r1, r4, 2 - add r1, sp - str r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _0815354C -_08153562: - lsls r7, 2 - mov r12, r7 - cmp r6, 0 - beq _0815359C - subs r7, r5, 0x1 -_0815356C: - movs r6, 0 - movs r4, 0 - cmp r6, r7 - bge _08153598 - adds r5, r7, 0 -_08153576: - lsls r0, r4, 2 - mov r2, sp - adds r1, r2, r0 - adds r4, 0x1 - lsls r0, r4, 2 - adds r3, r2, r0 - ldr r0, [r1] - ldr r2, [r3] - cmp r0, r2 - bcs _08153590 - str r2, [r1] - str r0, [r3] - movs r6, 0x1 -_08153590: - lsls r0, r4, 24 - lsrs r4, r0, 24 - cmp r4, r5 - blt _08153576 -_08153598: - cmp r6, 0 - bne _0815356C -_0815359C: - mov r0, sp - add r0, r12 - ldr r0, [r0] - add sp, 0x14 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081535AC: .4byte gUnknown_203F3E0 - thumb_func_end sub_8153534 - - thumb_func_start sub_81535B0 -sub_81535B0: @ 81535B0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r10, r0 - mov r8, r0 - mov r9, r0 - ldr r6, _08153690 @ =gUnknown_203F3E0 - ldr r0, [r6] - adds r0, 0x24 - ldrb r5, [r0] - bl sub_81534AC - bl sub_81534AC - cmp r0, 0 - bne _08153604 - movs r4, 0 - cmp r9, r5 - bcs _08153604 - adds r2, r6, 0 - ldr r1, _08153694 @ =0x00003308 - mov r12, r1 - movs r7, 0 - movs r6, 0x4 - ldr r3, _08153698 @ =0x0000330c -_081535E8: - ldr r0, [r2] - lsls r1, r4, 3 - adds r0, r1 - add r0, r12 - strb r6, [r0] - ldr r0, [r2] - adds r0, r3 - adds r0, r1 - str r7, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _081535E8 -_08153604: - movs r4, 0 - cmp r4, r5 - bcs _0815362E -_0815360A: - adds r0, r4, 0 - bl sub_8153424 - ldr r1, _0815369C @ =0x000f4236 - bl sub_815379C - ldr r1, _08153690 @ =gUnknown_203F3E0 - ldr r1, [r1] - lsls r2, r4, 3 - ldr r3, _08153698 @ =0x0000330c - adds r1, r3 - adds r1, r2 - str r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _0815360A -_0815362E: - mov r0, r10 - bl sub_8153534 - adds r6, r0, 0 - mov r3, r8 - movs r4, 0 - cmp r4, r5 - bcs _0815367A - ldr r7, _08153690 @ =gUnknown_203F3E0 - mov r10, r7 -_08153642: - mov r0, r10 - ldr r2, [r0] - lsls r1, r4, 3 - ldr r7, _08153698 @ =0x0000330c - adds r0, r2, r7 - adds r0, r1 - ldr r0, [r0] - cmp r6, r0 - bne _08153670 - adds r0, r2, r1 - ldr r1, _08153694 @ =0x00003308 - adds r0, r1 - strb r3, [r0] - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08153670: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08153642 -_0815367A: - mov r10, r8 - cmp r9, r5 - bcc _0815362E - movs r0, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08153690: .4byte gUnknown_203F3E0 -_08153694: .4byte 0x00003308 -_08153698: .4byte 0x0000330c -_0815369C: .4byte 0x000f4236 - thumb_func_end sub_81535B0 - - thumb_func_start sub_81536A0 -sub_81536A0: @ 81536A0 - lsls r1, 24 - ldr r2, _081536B8 @ =gUnknown_203F3E0 - ldr r2, [r2] - lsrs r1, 21 - ldr r3, _081536BC @ =0x00003308 - adds r2, r3 - adds r2, r1 - ldr r1, [r2] - ldr r2, [r2, 0x4] - str r1, [r0] - str r2, [r0, 0x4] - bx lr - .align 2, 0 -_081536B8: .4byte gUnknown_203F3E0 -_081536BC: .4byte 0x00003308 - thumb_func_end sub_81536A0 - - thumb_func_start sub_81536C0 -sub_81536C0: @ 81536C0 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r0, _08153728 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r5, [r0] - mov r0, sp - movs r1, 0 - movs r2, 0x14 - bl memset - movs r4, 0 - cmp r7, r5 - bcs _081536F8 -_081536E2: - adds r0, r4, 0 - bl sub_8153424 - lsls r1, r4, 2 - add r1, sp - str r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _081536E2 -_081536F8: - lsls r0, r6, 2 - add r0, sp - ldr r1, [r0] - movs r4, 0 -_08153700: - cmp r4, r6 - beq _08153714 - lsls r0, r4, 2 - add r0, sp - ldr r0, [r0] - cmp r1, r0 - bcs _08153714 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_08153714: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _08153700 - adds r0, r7, 0 - add sp, 0x14 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08153728: .4byte gUnknown_203F3E0 - thumb_func_end sub_81536C0 - - thumb_func_start sub_815372C -sub_815372C: @ 815372C - push {r4-r6,lr} - ldr r0, _08153754 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x28 - ldrb r4, [r0] - bl sub_8153390 - lsls r0, 16 - lsrs r5, r0, 16 - adds r6, r5, 0 - adds r0, r4, 0 - bl sub_8153424 - adds r4, r0, 0 - bl sub_81534AC - cmp r4, r0 - beq _08153758 - movs r0, 0x3 - b _08153786 - .align 2, 0 -_08153754: .4byte gUnknown_203F3E0 -_08153758: - adds r0, r5, 0 - movs r1, 0x1 - bl CheckBagHasSpace - lsls r0, 24 - cmp r0, 0 - bne _0815376A - movs r0, 0x2 - b _08153786 -_0815376A: - adds r0, r6, 0 - movs r1, 0x1 - bl AddBagItem - adds r0, r6, 0 - movs r1, 0x1 - bl CheckBagHasSpace - lsls r0, 24 - cmp r0, 0 - beq _08153784 - movs r0, 0 - b _08153786 -_08153784: - movs r0, 0x1 -_08153786: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_815372C - - thumb_func_start sub_815378C -sub_815378C: @ 815378C - push {lr} - adds r2, r0, 0 - adds r0, r1, 0 - cmp r2, r0 - bcs _08153798 - adds r0, r2, 0x1 -_08153798: - pop {r1} - bx r1 - thumb_func_end sub_815378C - - thumb_func_start sub_815379C -sub_815379C: @ 815379C - push {lr} - adds r2, r0, 0 - adds r0, r1, 0 - cmp r2, r0 - bcs _081537A8 - adds r0, r2, 0 -_081537A8: - pop {r1} - bx r1 - thumb_func_end sub_815379C - - thumb_func_start sub_81537AC -sub_81537AC: @ 81537AC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081537BC @ =gUnknown_203F3E0 - ldr r1, [r1] - adds r1, 0x34 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_081537BC: .4byte gUnknown_203F3E0 - thumb_func_end sub_81537AC - - thumb_func_start IsDodrioInParty -IsDodrioInParty: @ 81537C0 - push {r4-r6,lr} - movs r5, 0 - ldr r6, _081537F0 @ =gSpecialVar_Result -_081537C6: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _081537F4 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x5 - bl GetMonData - cmp r0, 0 - beq _081537F8 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0x55 - bne _081537F8 - movs r0, 0x1 - strh r0, [r6] - b _08153804 - .align 2, 0 -_081537F0: .4byte gSpecialVar_Result -_081537F4: .4byte gPlayerParty -_081537F8: - adds r5, 0x1 - cmp r5, 0x5 - ble _081537C6 - ldr r1, _0815380C @ =gSpecialVar_Result - movs r0, 0 - strh r0, [r1] -_08153804: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815380C: .4byte gSpecialVar_Result - thumb_func_end IsDodrioInParty - - thumb_func_start ShowDodrioBerryPickingRecords -ShowDodrioBerryPickingRecords: @ 8153810 - push {r4,lr} - ldr r4, _0815382C @ =sub_8153830 - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815382C: .4byte sub_8153830 - thumb_func_end ShowDodrioBerryPickingRecords - - thumb_func_start sub_8153830 -sub_8153830: @ 8153830 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08153854 @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0815387C - cmp r0, 0x1 - bgt _08153858 - cmp r0, 0 - beq _08153862 - b _081538CA - .align 2, 0 -_08153854: .4byte gTasks+0x8 -_08153858: - cmp r0, 0x2 - beq _08153888 - cmp r0, 0x3 - beq _081538B0 - b _081538CA -_08153862: - ldr r0, _08153878 @ =sUnknown_84755E0 - bl AddWindow - strh r0, [r4, 0x2] - lsls r0, 24 - lsrs r0, 24 - bl sub_81538D0 - ldrb r0, [r4, 0x2] - movs r1, 0x3 - b _0815389E - .align 2, 0 -_08153878: .4byte sUnknown_84755E0 -_0815387C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _081538CA - b _081538A2 -_08153888: - ldr r0, _081538AC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _081538CA - ldrb r0, [r4, 0x2] - bl rbox_fill_rectangle - ldrb r0, [r4, 0x2] - movs r1, 0x1 -_0815389E: - bl CopyWindowToVram -_081538A2: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _081538CA - .align 2, 0 -_081538AC: .4byte gMain -_081538B0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _081538CA - ldrb r0, [r4, 0x2] - bl RemoveWindow - adds r0, r5, 0 - bl DestroyTask - bl EnableBothScriptContexts -_081538CA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8153830 - - thumb_func_start sub_81538D0 -sub_81538D0: @ 81538D0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _081539CC @ =gSaveBlock2Ptr - ldr r1, [r0] - ldr r2, _081539D0 @ =0x00000b14 - adds r0, r1, r2 - ldrh r0, [r0] - str r0, [sp, 0xC] - subs r2, 0x4 - adds r0, r1, r2 - ldr r0, [r0] - str r0, [sp, 0x10] - ldr r0, _081539D4 @ =0x00000b16 - adds r1, r0 - ldrh r0, [r1] - str r0, [sp, 0x14] - ldr r4, _081539D8 @ =0x0000021d - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0xD0 - bl TextWindow_SetStdFrame0_WithPal - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0xD - bl DrawTextBorderOuter - adds r0, r7, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, _081539DC @ =sUnknown_84755E8 - ldr r2, [r0] - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0x2 - movs r3, 0x1 - bl AddTextPrinterParameterized - movs r4, 0 - add r2, sp, 0x18 - mov r8, r2 - movs r0, 0xFF - mov r10, r0 - mov r9, r4 - mov r2, sp - adds r2, 0xC - str r2, [sp, 0x2C] -_08153946: - ldr r0, [sp, 0x2C] - ldm r0!, {r1} - str r0, [sp, 0x2C] - ldr r0, _081539E0 @ =sUnknown_84755F8 - adds r0, r4, r0 - ldrb r3, [r0] - mov r0, r8 - movs r2, 0 - bl ConvertIntToDecimalStringN - movs r0, 0x2 - mov r1, r8 - movs r2, 0x1 - negs r2, r2 - bl GetStringWidth - adds r5, r0, 0 - ldr r1, _081539DC @ =sUnknown_84755E8 - adds r6, r4, 0x1 - lsls r0, r6, 2 - adds r0, r1 - ldr r2, [r0] - ldr r0, _081539E4 @ =sUnknown_84755FC - lsls r4, 1 - adds r0, r4, r0 - ldrb r0, [r0] - str r0, [sp] - mov r0, r10 - str r0, [sp, 0x4] - mov r0, r9 - str r0, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0x2 - movs r3, 0x1 - bl AddTextPrinterParameterized - movs r3, 0xE0 - subs r3, r5 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _081539E8 @ =sUnknown_8475602 - adds r4, r0 - ldrb r0, [r4] - str r0, [sp] - mov r2, r10 - str r2, [sp, 0x4] - mov r0, r9 - str r0, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0x2 - mov r2, r8 - bl AddTextPrinterParameterized - adds r4, r6, 0 - cmp r4, 0x2 - ble _08153946 - adds r0, r7, 0 - bl PutWindowTilemap - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081539CC: .4byte gSaveBlock2Ptr -_081539D0: .4byte 0x00000b14 -_081539D4: .4byte 0x00000b16 -_081539D8: .4byte 0x0000021d -_081539DC: .4byte sUnknown_84755E8 -_081539E0: .4byte sUnknown_84755F8 -_081539E4: .4byte sUnknown_84755FC -_081539E8: .4byte sUnknown_8475602 - thumb_func_end sub_81538D0 - - thumb_func_start sub_81539EC -sub_81539EC: @ 81539EC - push {lr} - bl GetLinkPlayerCount - ldr r1, _08153A00 @ =gUnknown_203F3E0 - ldr r1, [r1] - adds r1, 0x24 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08153A00: .4byte gUnknown_203F3E0 - thumb_func_end sub_81539EC - - thumb_func_start sub_8153A04 -sub_8153A04: @ 8153A04 - push {r4-r7,lr} - ldr r0, _08153A8C @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r4, [r0] - cmp r4, 0x4 - bhi _08153A32 - ldr r5, _08153A90 @ =sUnknown_8475648 -_08153A14: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r1, _08153A94 @ =gLinkPlayers + 8 - adds r0, r1 - lsls r1, r4, 2 - adds r1, r5 - ldr r1, [r1] - bl StringCopy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _08153A14 -_08153A32: - ldr r0, _08153A8C @ =gUnknown_203F3E0 - ldr r1, [r0] - adds r1, 0x24 - movs r2, 0x5 - strb r2, [r1] - movs r1, 0 - mov r12, r0 -_08153A40: - movs r4, 0 - mov r2, r12 - ldr r0, [r2] - adds r0, 0x24 - adds r5, r1, 0x1 - ldrb r0, [r0] - cmp r4, r0 - bcs _08153A7E - ldr r7, _08153A8C @ =gUnknown_203F3E0 - lsls r3, r1, 1 - ldr r6, _08153A98 @ =sUnknown_8475608 -_08153A56: - ldr r2, [r7] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r3, r0 - adds r1, r2, 0 - adds r1, 0x4A - adds r1, r0 - lsls r0, r4, 3 - adds r0, r3, r0 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r2, 0x24 - ldrb r2, [r2] - cmp r4, r2 - bcc _08153A56 -_08153A7E: - lsls r0, r5, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bls _08153A40 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08153A8C: .4byte gUnknown_203F3E0 -_08153A90: .4byte sUnknown_8475648 -_08153A94: .4byte gLinkPlayers + 8 -_08153A98: .4byte sUnknown_8475608 - thumb_func_end sub_8153A04 - - thumb_func_start sub_8153A9C -sub_8153A9C: @ 8153A9C - push {r4,r5,lr} - sub sp, 0x18 - movs r5, 0xC0 - lsls r5, 6 - adds r0, r5, 0 - bl AllocZeroed - adds r4, r0, 0 - ldr r0, _08153AF0 @ =gUnknown_8478D90 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x8] - str r1, [sp, 0xC] - ldr r0, _08153AF4 @ =gUnknown_8478D98 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x10] - str r1, [sp, 0x14] - ldr r0, _08153AF8 @ =sDodrioBerryPkmnGfx - adds r1, r4, 0 - bl LZ77UnCompWram - cmp r4, 0 - beq _08153ADC - str r4, [sp] - str r5, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - adds r0, r4, 0 - bl Free -_08153ADC: - add r0, sp, 0x8 - bl LoadSpritePalette - add r0, sp, 0x10 - bl LoadSpritePalette - add sp, 0x18 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08153AF0: .4byte gUnknown_8478D90 -_08153AF4: .4byte gUnknown_8478D98 -_08153AF8: .4byte sDodrioBerryPkmnGfx - thumb_func_end sub_8153A9C - - thumb_func_start sub_8153AFC -sub_8153AFC: @ 8153AFC - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x30 - adds r6, r1, 0 - mov r8, r2 - adds r5, r3, 0 - lsls r6, 24 - lsrs r6, 24 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r5, 24 - lsrs r5, 24 - add r1, sp, 0x18 - movs r3, 0 - strh r3, [r1] - ldrb r2, [r0] - mov r0, sp - adds r0, 0x1A - strh r2, [r0] - ldr r0, _08153B88 @ =sOamData_8478C98 - str r0, [sp, 0x1C] - ldr r0, _08153B8C @ =sSpriteAnimTable_8478CE0 - str r0, [sp, 0x20] - str r3, [sp, 0x24] - ldr r0, _08153B90 @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x28] - ldr r0, _08153B94 @ =sub_8153B9C - str r0, [sp, 0x2C] - mov r0, sp - movs r2, 0x18 - bl memcpy - movs r0, 0x4 - bl AllocZeroed - ldr r1, _08153B98 @ =gUnknown_203F3E4 - mov r2, r8 - lsls r4, r2, 2 - adds r4, r1 - str r0, [r4] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_8154608 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - mov r0, sp - movs r2, 0x88 - movs r3, 0x3 - bl CreateSprite - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - movs r0, 0x1 - mov r1, r8 - bl sub_8153D48 - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08153B88: .4byte sOamData_8478C98 -_08153B8C: .4byte sSpriteAnimTable_8478CE0 -_08153B90: .4byte gDummySpriteAffineAnimTable -_08153B94: .4byte sub_8153B9C -_08153B98: .4byte gUnknown_203F3E4 - thumb_func_end sub_8153AFC - - thumb_func_start sub_8153B9C -sub_8153B9C: @ 8153B9C - push {lr} - movs r2, 0x2E - ldrsh r1, [r0, r2] - cmp r1, 0x1 - beq _08153BB0 - cmp r1, 0x1 - ble _08153BBA - cmp r1, 0x2 - beq _08153BB6 - b _08153BBA -_08153BB0: - bl sub_8153C30 - b _08153BBA -_08153BB6: - bl sub_8153CA0 -_08153BBA: - pop {r0} - bx r0 - thumb_func_end sub_8153B9C - - thumb_func_start sub_8153BC0 -sub_8153BC0: @ 8153BC0 - push {lr} - bl GetMultiplayerId - ldr r1, _08153BF0 @ =gUnknown_203F3E4 - lsls r0, 24 - lsrs r0, 22 - adds r0, r1 - ldr r0, [r0] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08153BF4 @ =gSprites - adds r0, r1 - movs r2, 0 - movs r1, 0x1 - strh r1, [r0, 0x2E] - strh r2, [r0, 0x30] - strh r2, [r0, 0x32] - strh r2, [r0, 0x34] - strh r2, [r0, 0x36] - pop {r0} - bx r0 - .align 2, 0 -_08153BF0: .4byte gUnknown_203F3E4 -_08153BF4: .4byte gSprites - thumb_func_end sub_8153BC0 - - thumb_func_start sub_8153BF8 -sub_8153BF8: @ 8153BF8 - push {lr} - bl GetMultiplayerId - ldr r1, _08153C28 @ =gUnknown_203F3E4 - lsls r0, 24 - lsrs r0, 22 - adds r0, r1 - ldr r0, [r0] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08153C2C @ =gSprites - adds r0, r1 - movs r2, 0 - movs r1, 0x2 - strh r1, [r0, 0x2E] - strh r2, [r0, 0x30] - strh r2, [r0, 0x32] - strh r2, [r0, 0x34] - strh r2, [r0, 0x36] - pop {r0} - bx r0 - .align 2, 0 -_08153C28: .4byte gUnknown_203F3E4 -_08153C2C: .4byte gSprites - thumb_func_end sub_8153BF8 - - thumb_func_start sub_8153C30 -sub_8153C30: @ 8153C30 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r2, r0, 16 - lsrs r0, 31 - adds r0, r2, r0 - asrs r1, r0, 1 - adds r0, r1, 0 - cmp r1, 0 - bge _08153C4C - adds r0, r1, 0x3 -_08153C4C: - asrs r0, 2 - lsls r0, 2 - subs r0, r1, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r2, 0x2 - ble _08153C96 - cmp r0, 0x2 - bgt _08153C62 - cmp r0, 0x1 - bge _08153C66 -_08153C62: - movs r0, 0x1 - b _08153C68 -_08153C66: - movs r0, 0xFF -_08153C68: - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x27 - ble _08153C96 - movs r0, 0 - strh r0, [r4, 0x2E] - bl sub_81533B4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_8154608 - strh r0, [r4, 0x20] -_08153C96: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8153C30 - - thumb_func_start sub_8153CA0 -sub_8153CA0: @ 8153CA0 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xD - bl __divsi3 - lsls r0, 16 - asrs r1, r0, 16 - adds r0, r1, 0 - cmp r1, 0 - bge _08153CC0 - adds r0, r1, 0x3 -_08153CC0: - asrs r0, 2 - lsls r0, 2 - subs r0, r1, r0 - lsls r0, 24 - lsrs r4, r0, 24 - movs r1, 0x30 - ldrsh r0, [r5, r1] - movs r1, 0xD - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _08153CE4 - cmp r4, 0 - beq _08153CE4 - movs r0, 0xCD - bl PlaySE -_08153CE4: - movs r1, 0x30 - ldrsh r0, [r5, r1] - cmp r0, 0x67 - ble _08153CF2 - movs r0, 0 - strh r0, [r5, 0x2E] - movs r4, 0 -_08153CF2: - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_8153DA8 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8153CA0 - - thumb_func_start sub_8153D08 -sub_8153D08: @ 8153D08 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - cmp r4, r5 - bcs _08153D3A - ldr r6, _08153D40 @ =gUnknown_203F3E4 -_08153D16: - lsls r0, r4, 2 - adds r0, r6 - ldr r0, [r0] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08153D44 @ =gSprites - adds r0, r1 - cmp r0, 0 - beq _08153D30 - bl DestroySpriteAndFreeResources -_08153D30: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08153D16 -_08153D3A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08153D40: .4byte gUnknown_203F3E4 -_08153D44: .4byte gSprites - thumb_func_end sub_8153D08 - - thumb_func_start sub_8153D48 -sub_8153D48: @ 8153D48 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r3, _08153D78 @ =gSprites - ldr r2, _08153D7C @ =gUnknown_203F3E4 - lsrs r1, 22 - adds r1, r2 - ldr r1, [r1] - ldrh r1, [r1] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r3 - adds r2, 0x3E - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - ldrb r3, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r0 - strb r1, [r2] - bx lr - .align 2, 0 -_08153D78: .4byte gSprites -_08153D7C: .4byte gUnknown_203F3E4 - thumb_func_end sub_8153D48 - - thumb_func_start sub_8153D80 -sub_8153D80: @ 8153D80 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r4, 0 - cmp r4, r5 - bcs _08153DA2 -_08153D90: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8153D48 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08153D90 -_08153DA2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8153D80 - - thumb_func_start sub_8153DA8 -sub_8153DA8: @ 8153DA8 - push {lr} - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08153DCC @ =gUnknown_203F3E4 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ldrh r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r2, _08153DD0 @ =gSprites - adds r0, r2 - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_08153DCC: .4byte gUnknown_203F3E4 -_08153DD0: .4byte gSprites - thumb_func_end sub_8153DA8 - - thumb_func_start nullsub_97 -nullsub_97: @ 8153DD4 - bx lr - thumb_func_end nullsub_97 - - thumb_func_start sub_8153DD8 -sub_8153DD8: @ 8153DD8 - push {r4-r7,lr} - movs r4, 0 - ldr r0, _08153E20 @ =gSprites - mov r12, r0 - movs r6, 0 - ldr r5, _08153E24 @ =gUnknown_203F43C -_08153DE4: - ldr r3, [r5] - lsls r1, r4, 1 - adds r0, r3, 0 - adds r0, 0x2A - adds r0, r1 - ldrh r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - lsls r0, r4, 4 - adds r0, 0x30 - strh r0, [r1, 0x20] - lsls r2, r4, 3 - movs r7, 0x8 - negs r7, r7 - adds r0, r7, 0 - subs r0, r2 - strh r0, [r1, 0x22] - adds r3, 0xC - adds r3, r4 - strb r6, [r3] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _08153DE4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08153E20: .4byte gSprites -_08153E24: .4byte gUnknown_203F43C - thumb_func_end sub_8153DD8 - - thumb_func_start sub_8153E28 -sub_8153E28: @ 8153E28 - push {r4-r6,lr} - sub sp, 0x28 - movs r4, 0xC0 - lsls r4, 1 - adds r0, r4, 0 - bl AllocZeroed - adds r6, r0, 0 - ldr r0, _08153EC8 @ =gUnknown_8478DA0 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x20] - str r1, [sp, 0x24] - ldr r0, _08153ECC @ =sDodrioBerryStatusGfx - adds r1, r6, 0 - bl LZ77UnCompWram - cmp r6, 0 - beq _08153EB8 - str r6, [sp, 0x18] - add r5, sp, 0x18 - movs r0, 0x80 - lsls r0, 9 - orrs r0, r4 - str r0, [r5, 0x4] - mov r1, sp - ldr r0, _08153ED0 @ =gUnknown_8478DA8 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r4, _08153ED4 @ =gUnknown_203F43C - movs r0, 0x40 - bl AllocZeroed - str r0, [r4] - adds r0, r5, 0 - bl LoadSpriteSheet - add r0, sp, 0x20 - bl LoadSpritePalette - movs r4, 0 -_08153E7E: - lsls r1, r4, 20 - movs r0, 0xC0 - lsls r0, 14 - adds r1, r0 - asrs r1, 16 - lsls r0, r4, 3 - movs r3, 0x8 - negs r3, r3 - adds r2, r3, 0 - subs r2, r0 - lsls r2, 16 - asrs r2, 16 - mov r0, sp - movs r3, 0 - bl CreateSprite - ldr r1, _08153ED4 @ =gUnknown_203F43C - ldr r1, [r1] - lsls r2, r4, 1 - adds r1, 0x2A - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _08153E7E -_08153EB8: - adds r0, r6, 0 - bl Free - add sp, 0x28 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08153EC8: .4byte gUnknown_8478DA0 -_08153ECC: .4byte sDodrioBerryStatusGfx -_08153ED0: .4byte gUnknown_8478DA8 -_08153ED4: .4byte gUnknown_203F43C - thumb_func_end sub_8153E28 - - thumb_func_start sub_8153ED8 -sub_8153ED8: @ 8153ED8 - push {r4,r5,lr} - movs r4, 0 -_08153EDC: - ldr r5, _08153F14 @ =gUnknown_203F43C - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x2A - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08153F18 @ =gSprites - adds r0, r1 - cmp r0, 0 - beq _08153EFA - bl DestroySpriteAndFreeResources -_08153EFA: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _08153EDC - ldr r0, [r5] - bl Free - movs r0, 0 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08153F14: .4byte gUnknown_203F43C -_08153F18: .4byte gSprites - thumb_func_end sub_8153ED8 - - thumb_func_start sub_8153F1C -sub_8153F1C: @ 8153F1C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r3, 0 - movs r6, 0 - ldr r0, _08153FAC @ =gUnknown_203F43C - mov r9, r0 -_08153F2E: - mov r7, r9 - ldr r2, [r7] - lsls r5, r6, 1 - adds r0, r2, 0 - adds r0, 0x2A - adds r0, r5 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08153FB0 @ =gSprites - adds r4, r0, r1 - adds r0, r2, 0 - adds r0, 0x16 - adds r0, r5 - movs r1, 0x2 - strh r1, [r0] - adds r0, r2, 0 - adds r0, 0xC - adds r2, r0, r6 - ldrb r1, [r2] - cmp r1, 0 - beq _08153F64 - movs r7, 0x22 - ldrsh r0, [r4, r7] - cmp r0, 0x8 - beq _08153F9A -_08153F64: - movs r3, 0x1 - movs r7, 0x22 - ldrsh r0, [r4, r7] - cmp r0, 0x8 - bne _08153F8A - cmp r1, 0 - bne _08153F9A - strb r3, [r2] - mov r1, r9 - ldr r0, [r1] - adds r0, 0x16 - adds r0, r5 - ldr r1, _08153FB4 @ =0x0000fff0 - strh r1, [r0] - movs r0, 0x1E - str r3, [sp] - bl PlaySE - ldr r3, [sp] -_08153F8A: - mov r7, r9 - ldr r0, [r7] - adds r0, 0x16 - adds r0, r5 - ldrh r0, [r0] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_08153F9A: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x9 - bls _08153F2E - cmp r3, 0 - bne _08153FB8 - movs r0, 0x1 - b _08153FBA - .align 2, 0 -_08153FAC: .4byte gUnknown_203F43C -_08153FB0: .4byte gSprites -_08153FB4: .4byte 0x0000fff0 -_08153FB8: - movs r0, 0 -_08153FBA: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8153F1C - - thumb_func_start sub_8153FC8 -sub_8153FC8: @ 8153FC8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xA - bls _08154004 - movs r4, 0 -_08153FD4: - ldr r0, _08153FFC @ =gUnknown_203F43C - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x2A - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08154000 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _08153FD4 - b _081540CE - .align 2, 0 -_08153FFC: .4byte gUnknown_203F43C -_08154000: .4byte gSprites -_08154004: - movs r4, 0 - movs r0, 0xA - subs r0, r5 - cmp r4, r0 - bge _081540CA - ldr r6, _08154034 @ =gSprites -_08154010: - cmp r5, 0x6 - bls _08154078 - ldr r0, _08154038 @ =gUnknown_203F43C - ldr r2, [r0] - ldr r1, _0815403C @ =0x0000fffa - adds r0, r1, 0 - ldrh r1, [r2, 0x3E] - adds r0, r1 - adds r0, r5 - movs r1, 0 - strh r0, [r2, 0x3E] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bls _08154040 - strh r1, [r2, 0x3E] - b _08154092 - .align 2, 0 -_08154034: .4byte gSprites -_08154038: .4byte gUnknown_203F43C -_0815403C: .4byte 0x0000fffa -_08154040: - cmp r0, 0xA - bls _0815405E - lsls r1, r4, 1 - adds r0, r2, 0 - adds r0, 0x2A - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x2 - bl StartSpriteAnim - b _08154092 -_0815405E: - lsls r1, r4, 1 - adds r0, r2, 0 - adds r0, 0x2A - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - bl StartSpriteAnim - b _08154092 -_08154078: - ldr r0, _081540A4 @ =gUnknown_203F43C - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x2A - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - bl StartSpriteAnim -_08154092: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0xA - subs r0, r5 - cmp r4, r0 - blt _08154010 - b _081540CA - .align 2, 0 -_081540A4: .4byte gUnknown_203F43C -_081540A8: - ldr r0, _081540D4 @ =gUnknown_203F43C - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x2A - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081540D8 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_081540CA: - cmp r4, 0x9 - bls _081540A8 -_081540CE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081540D4: .4byte gUnknown_203F43C -_081540D8: .4byte gSprites - thumb_func_end sub_8153FC8 - - thumb_func_start sub_81540DC -sub_81540DC: @ 81540DC - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - movs r3, 0 - ldr r7, _08154120 @ =gSprites - movs r1, 0x1 - ands r0, r1 - lsls r4, r0, 2 - movs r6, 0x5 - negs r6, r6 - ldr r5, _08154124 @ =gUnknown_203F43C -_081540F2: - ldr r0, [r5] - lsls r1, r3, 1 - adds r0, 0x2A - adds r0, r1 - ldrh r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - orrs r0, r4 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x9 - bls _081540F2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154120: .4byte gSprites -_08154124: .4byte gUnknown_203F43C - thumb_func_end sub_81540DC - - thumb_func_start sub_8154128 -sub_8154128: @ 8154128 - push {r4,r5,lr} - sub sp, 0x10 - movs r5, 0x90 - lsls r5, 3 - adds r0, r5, 0 - bl AllocZeroed - adds r4, r0, 0 - ldr r0, _08154174 @ =gUnknown_8478DCC - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x8] - str r1, [sp, 0xC] - ldr r0, _08154178 @ =sDodrioBerrySpritesGfx - adds r1, r4, 0 - bl LZ77UnCompWram - cmp r4, 0 - beq _0815415E - str r4, [sp] - movs r0, 0x80 - lsls r0, 10 - orrs r0, r5 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet -_0815415E: - add r0, sp, 0x8 - bl LoadSpritePalette - adds r0, r4, 0 - bl Free - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08154174: .4byte gUnknown_8478DCC -_08154178: .4byte sDodrioBerrySpritesGfx - thumb_func_end sub_8154128 - - thumb_func_start sub_815417C -sub_815417C: @ 815417C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x30 - mov r1, sp - ldr r0, _0815420C @ =gUnknown_8478DDC - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - add r2, sp, 0x18 - adds r1, r2, 0 - ldr r0, _08154210 @ =gUnknown_8478DF4 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - movs r5, 0 - mov r9, r2 -_081541A4: - movs r0, 0x4 - bl AllocZeroed - ldr r1, _08154214 @ =gUnknown_203F400 - lsls r4, r5, 2 - adds r4, r1 - str r0, [r4] - lsls r0, r5, 3 - lsls r1, r5, 4 - adds r1, r0 - mov r0, sp - movs r2, 0x8 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r5, 0 - movs r1, 0x1 - bl sub_81542EC - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xA - bls _081541A4 - movs r5, 0 - ldr r7, _08154218 @ =gUnknown_203F42C - ldr r4, _0815421C @ =sUnknown_8478DD4 - mov r8, r4 -_081541E4: - movs r0, 0x4 - bl AllocZeroed - lsls r1, r5, 2 - adds r4, r1, r7 - str r0, [r4] - adds r6, r1, 0 - cmp r5, 0x3 - bne _08154220 - mov r0, r8 - movs r2, 0x6 - ldrsh r1, [r0, r2] - mov r0, r9 - movs r2, 0x39 - movs r3, 0 - bl CreateSprite - ldr r1, [r7, 0xC] - b _08154234 - .align 2, 0 -_0815420C: .4byte gUnknown_8478DDC -_08154210: .4byte gUnknown_8478DF4 -_08154214: .4byte gUnknown_203F400 -_08154218: .4byte gUnknown_203F42C -_0815421C: .4byte sUnknown_8478DD4 -_08154220: - lsls r0, r5, 1 - add r0, r8 - movs r3, 0 - ldrsh r1, [r0, r3] - mov r0, r9 - movs r2, 0x3C - movs r3, 0 - bl CreateSprite - ldr r1, [r4] -_08154234: - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r6, r7 - ldr r0, [r0] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08154270 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - bl StartSpriteAnim - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _081541E4 - movs r0, 0x1 - bl sub_8154324 - add sp, 0x30 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154270: .4byte gSprites - thumb_func_end sub_815417C - - thumb_func_start sub_8154274 -sub_8154274: @ 8154274 - push {r4-r6,lr} - movs r5, 0 - ldr r6, _081542E0 @ =gUnknown_203F400 -_0815427A: - lsls r0, r5, 2 - adds r4, r0, r6 - ldr r0, [r4] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081542E4 @ =gSprites - adds r0, r1 - cmp r0, 0 - beq _08154294 - bl DestroySprite -_08154294: - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xA - bls _0815427A - movs r5, 0 - ldr r6, _081542E8 @ =gUnknown_203F42C -_081542AC: - lsls r0, r5, 2 - adds r4, r0, r6 - ldr r0, [r4] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081542E4 @ =gSprites - adds r0, r1 - cmp r0, 0 - beq _081542C6 - bl DestroySprite -_081542C6: - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _081542AC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081542E0: .4byte gUnknown_203F400 -_081542E4: .4byte gSprites -_081542E8: .4byte gUnknown_203F42C - thumb_func_end sub_8154274 - - thumb_func_start sub_81542EC -sub_81542EC: @ 81542EC - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0815431C @ =gSprites - ldr r2, _08154320 @ =gUnknown_203F400 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - adds r2, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - bx lr - .align 2, 0 -_0815431C: .4byte gSprites -_08154320: .4byte gUnknown_203F400 - thumb_func_end sub_81542EC - - thumb_func_start sub_8154324 -sub_8154324: @ 8154324 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - movs r3, 0 - ldr r7, _08154368 @ =gSprites - ldr r6, _0815436C @ =gUnknown_203F42C - movs r1, 0x1 - ands r0, r1 - lsls r4, r0, 2 - movs r5, 0x5 - negs r5, r5 -_0815433A: - lsls r0, r3, 2 - adds r0, r6 - ldr r0, [r0] - ldrh r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - orrs r0, r4 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _0815433A - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154368: .4byte gSprites -_0815436C: .4byte gUnknown_203F42C - thumb_func_end sub_8154324 - - thumb_func_start sub_8154370 -sub_8154370: @ 8154370 - lsls r0, 24 - lsls r1, 24 - ldr r3, _08154390 @ =gSprites - ldr r2, _08154394 @ =gUnknown_203F400 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ldrh r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - lsrs r1, 21 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_08154390: .4byte gSprites -_08154394: .4byte gUnknown_203F400 - thumb_func_end sub_8154370 - - thumb_func_start sub_8154398 -sub_8154398: @ 8154398 - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _081543BC @ =gUnknown_203F400 - lsrs r0, 14 - adds r0, r2 - ldr r0, [r0] - ldrh r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r2, _081543C0 @ =gSprites - adds r0, r2 - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_081543BC: .4byte gUnknown_203F400 -_081543C0: .4byte gSprites - thumb_func_end sub_8154398 - - thumb_func_start sub_81543C4 -sub_81543C4: @ 81543C4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081543E4 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, 0x32 - strh r1, [r2, 0x20] - movs r0, 0x32 - strh r0, [r2, 0x22] - bx lr - .align 2, 0 -_081543E4: .4byte gSprites - thumb_func_end sub_81543C4 - - thumb_func_start sub_81543E8 -sub_81543E8: @ 81543E8 - push {r4-r7,lr} - adds r4, r0, 0 - adds r0, 0x42 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _0815442A - movs r3, 0 - ldr r7, _08154430 @ =gUnknown_8478E0C - ldr r6, _08154434 @ =gUnknown_203F3F8 - movs r5, 0 -_081543FE: - lsls r0, r3, 2 - adds r2, r0, r6 - ldr r1, [r2] - ldrh r0, [r1, 0x2] - adds r0, 0x1 - strh r0, [r1, 0x2] - adds r1, r3, r7 - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1] - cmp r0, r1 - bls _08154420 - ldrh r0, [r4, 0x20] - subs r0, 0x1 - strh r0, [r4, 0x20] - ldr r0, [r2] - strh r5, [r0, 0x2] -_08154420: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bls _081543FE -_0815442A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154430: .4byte gUnknown_8478E0C -_08154434: .4byte gUnknown_203F3F8 - thumb_func_end sub_81543E8 - - thumb_func_start sub_8154438 -sub_8154438: @ 8154438 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x28 - movs r4, 0x80 - lsls r4, 3 - adds r0, r4, 0 - bl AllocZeroed - adds r6, r0, 0 - ldr r0, _081544DC @ =gUnknown_8478E18 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x20] - str r1, [sp, 0x24] - ldr r0, _081544E0 @ =sDodrioBerryPlatformGfx - adds r1, r6, 0 - bl LZ77UnCompWram - cmp r6, 0 - beq _081544C6 - str r6, [sp, 0x18] - add r0, sp, 0x18 - movs r1, 0xA0 - lsls r1, 11 - orrs r1, r4 - str r1, [r0, 0x4] - mov r2, sp - ldr r1, _081544E4 @ =gUnknown_8478E20 - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - bl LoadSpriteSheet - add r0, sp, 0x20 - bl LoadSpritePalette - movs r5, 0 - ldr r7, _081544E8 @ =gUnknown_8478E0E - adds r0, r7, 0x2 - mov r9, r0 - ldr r1, _081544EC @ =gUnknown_203F3F8 - mov r8, r1 -_08154492: - movs r0, 0x4 - bl AllocZeroed - lsls r2, r5, 2 - mov r3, r8 - adds r4, r2, r3 - str r0, [r4] - adds r0, r2, r7 - movs r3, 0 - ldrsh r1, [r0, r3] - add r2, r9 - movs r0, 0 - ldrsh r2, [r2, r0] - mov r0, sp - movs r3, 0x4 - bl CreateSprite - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _08154492 -_081544C6: - adds r0, r6, 0 - bl Free - add sp, 0x28 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081544DC: .4byte gUnknown_8478E18 -_081544E0: .4byte sDodrioBerryPlatformGfx -_081544E4: .4byte gUnknown_8478E20 -_081544E8: .4byte gUnknown_8478E0E -_081544EC: .4byte gUnknown_203F3F8 - thumb_func_end sub_8154438 - - thumb_func_start sub_81544F0 -sub_81544F0: @ 81544F0 - push {r4-r7,lr} - movs r3, 0 - ldr r0, _08154534 @ =gUnknown_203F3F8 - mov r12, r0 - ldr r4, _08154538 @ =gUnknown_8478E0E - adds r7, r4, 0x2 - ldr r6, _0815453C @ =gSprites - movs r5, 0x1 -_08154500: - lsls r2, r3, 2 - mov r1, r12 - adds r0, r2, r1 - ldr r0, [r0] - ldrh r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r0, r1, 0 - adds r0, 0x42 - strh r5, [r0] - adds r0, r2, r4 - ldrh r0, [r0] - strh r0, [r1, 0x20] - adds r2, r7 - ldrh r0, [r2] - strh r0, [r1, 0x22] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bls _08154500 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154534: .4byte gUnknown_203F3F8 -_08154538: .4byte gUnknown_8478E0E -_0815453C: .4byte gSprites - thumb_func_end sub_81544F0 - - thumb_func_start sub_8154540 -sub_8154540: @ 8154540 - push {r4,r5,lr} - movs r2, 0 - ldr r5, _08154570 @ =gUnknown_203F3F8 - ldr r4, _08154574 @ =gSprites - movs r3, 0 -_0815454A: - lsls r0, r2, 2 - adds r0, r5 - ldr r0, [r0] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x42 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bls _0815454A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08154570: .4byte gUnknown_203F3F8 -_08154574: .4byte gSprites - thumb_func_end sub_8154540 - - thumb_func_start sub_8154578 -sub_8154578: @ 8154578 - push {r4-r6,lr} - movs r5, 0 - ldr r6, _081545B4 @ =gUnknown_203F3F8 -_0815457E: - lsls r0, r5, 2 - adds r4, r0, r6 - ldr r0, [r4] - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081545B8 @ =gSprites - adds r0, r1 - cmp r0, 0 - beq _08154598 - bl DestroySprite -_08154598: - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _0815457E - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081545B4: .4byte gUnknown_203F3F8 -_081545B8: .4byte gSprites - thumb_func_end sub_8154578 - - thumb_func_start sub_81545BC -sub_81545BC: @ 81545BC - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - movs r3, 0 - ldr r7, _08154600 @ =gSprites - ldr r6, _08154604 @ =gUnknown_203F3F8 - movs r1, 0x1 - ands r0, r1 - lsls r4, r0, 2 - movs r5, 0x5 - negs r5, r5 -_081545D2: - lsls r0, r3, 2 - adds r0, r6 - ldr r0, [r0] - ldrh r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - orrs r0, r4 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bls _081545D2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154600: .4byte gSprites -_08154604: .4byte gUnknown_203F3F8 - thumb_func_end sub_81545BC - - thumb_func_start sub_8154608 -sub_8154608: @ 8154608 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r3, 0 - subs r0, r1, 0x1 - cmp r0, 0x4 - bhi _081546BA - lsls r0, 2 - ldr r1, _08154624 @ =_08154628 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08154624: .4byte _08154628 - .align 2, 0 -_08154628: - .4byte _081546A8 - .4byte _0815463C - .4byte _08154646 - .4byte _0815465A - .4byte _08154682 -_0815463C: - cmp r2, 0 - beq _08154672 - cmp r2, 0x1 - bne _081546BA - b _08154676 -_08154646: - cmp r2, 0x1 - beq _081546AC - cmp r2, 0x1 - bgt _08154654 - cmp r2, 0 - beq _081546A8 - b _081546BA -_08154654: - cmp r2, 0x2 - bne _081546BA - b _081546B8 -_0815465A: - cmp r2, 0x1 - beq _08154676 - cmp r2, 0x1 - bgt _08154668 - cmp r2, 0 - beq _08154672 - b _081546BA -_08154668: - cmp r2, 0x2 - beq _0815467A - cmp r2, 0x3 - beq _0815467E - b _081546BA -_08154672: - movs r3, 0xC - b _081546BA -_08154676: - movs r3, 0x12 - b _081546BA -_0815467A: - movs r3, 0x18 - b _081546BA -_0815467E: - movs r3, 0x6 - b _081546BA -_08154682: - cmp r2, 0x4 - bhi _081546BA - lsls r0, r2, 2 - ldr r1, _08154690 @ =_08154694 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08154690: .4byte _08154694 - .align 2, 0 -_08154694: - .4byte _081546A8 - .4byte _081546AC - .4byte _081546B0 - .4byte _081546B4 - .4byte _081546B8 -_081546A8: - movs r3, 0xF - b _081546BA -_081546AC: - movs r3, 0x15 - b _081546BA -_081546B0: - movs r3, 0x1B - b _081546BA -_081546B4: - movs r3, 0x3 - b _081546BA -_081546B8: - movs r3, 0x9 -_081546BA: - lsls r0, r3, 3 - pop {r1} - bx r1 - thumb_func_end sub_8154608 - - thumb_func_start sub_81546C0 -sub_81546C0: @ 81546C0 - push {r4,lr} - movs r4, 0 -_081546C4: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_81542EC - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8154370 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xA - bls _081546C4 - movs r0, 0 - bl sub_81540DC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81546C0 - - thumb_func_start sub_81546EC -sub_81546EC: @ 81546EC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r0, 0 - movs r3, 0x1 - bl LoadBgTiles - adds r0, r4, 0 - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0xA0 - movs r2, 0x20 - bl LoadPalette - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81546EC - - thumb_func_start sub_8154720 -sub_8154720: @ 8154720 - push {lr} - movs r0, 0 - movs r1, 0xA - movs r2, 0xB0 - bl TextWindow_SetStdFrame0_WithPal - pop {r0} - bx r0 - thumb_func_end sub_8154720 - - thumb_func_start sub_8154730 -sub_8154730: @ 8154730 - ldr r3, _08154760 @ =gUnknown_203F440 - ldr r0, [r3] - movs r2, 0xC0 - lsls r2, 6 - adds r1, r0, r2 - movs r2, 0 - str r2, [r1] - ldr r1, _08154764 @ =0x00003014 - adds r0, r1 - strb r2, [r0] - ldr r0, [r3] - adds r1, 0x4 - adds r0, r1 - strb r2, [r0] - ldr r0, [r3] - adds r1, 0x8 - adds r0, r1 - strb r2, [r0] - ldr r0, [r3] - adds r1, 0x4 - adds r0, r1 - strb r2, [r0] - bx lr - .align 2, 0 -_08154760: .4byte gUnknown_203F440 -_08154764: .4byte 0x00003014 - thumb_func_end sub_8154730 - - thumb_func_start sub_8154768 -sub_8154768: @ 8154768 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r6, 0xA - ldrb r2, [r4, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r5, 0x1 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x1 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - ldrb r3, [r4, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4, 0x3] - str r0, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x2 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x1] - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x3 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - str r5, [sp] - ldrb r0, [r4, 0x4] - str r0, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x4 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x1] - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - str r5, [sp] - ldrb r0, [r4, 0x4] - str r0, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x6 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x4] - ldrb r0, [r4, 0x2] - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x7 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - ldrb r3, [r4, 0x4] - ldrb r0, [r4, 0x2] - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4, 0x3] - str r0, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x8 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x1] - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x4] - ldrb r4, [r4, 0x2] - adds r3, r4 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x9 - bl FillBgTilemapBufferRect - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8154768 - - thumb_func_start sub_8154868 -sub_8154868: @ 8154868 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r6, 0xB - ldrb r2, [r4, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r5, 0x1 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0xA - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - ldrb r3, [r4, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4, 0x3] - str r0, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0xB - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x1] - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0xC - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - str r5, [sp] - ldrb r0, [r4, 0x4] - str r0, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0xD - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x1] - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x2] - str r5, [sp] - ldrb r0, [r4, 0x4] - str r0, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0xF - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x4] - ldrb r0, [r4, 0x2] - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x10 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x1] - ldrb r3, [r4, 0x4] - ldrb r0, [r4, 0x2] - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4, 0x3] - str r0, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x11 - bl FillBgTilemapBufferRect - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x1] - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r4, 0x4] - ldrb r4, [r4, 0x2] - adds r3, r4 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x12 - bl FillBgTilemapBufferRect - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8154868 - - thumb_func_start sub_8154968 -sub_8154968: @ 8154968 - push {r4,lr} - ldr r4, _081549B0 @ =gUnknown_203F440 - str r0, [r4] - movs r2, 0xC0 - lsls r2, 6 - adds r1, r0, r2 - movs r2, 0 - str r2, [r1] - ldr r3, _081549B4 @ =0x00003014 - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _081549B8 @ =0x00003018 - adds r0, r1 - strb r2, [r0] - ldr r0, [r4] - adds r3, 0xC - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - adds r1, 0xC - adds r0, r1 - strb r2, [r0] - ldr r0, _081549BC @ =sub_8154A08 - movs r1, 0x3 - bl CreateTask - ldr r1, [r4] - ldr r2, _081549C0 @ =0x00003004 - adds r1, r2 - strb r0, [r1] - ldr r0, _081549C4 @ =sub_8154A2C - bl sub_8155E24 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081549B0: .4byte gUnknown_203F440 -_081549B4: .4byte 0x00003014 -_081549B8: .4byte 0x00003018 -_081549BC: .4byte sub_8154A08 -_081549C0: .4byte 0x00003004 -_081549C4: .4byte sub_8154A2C - thumb_func_end sub_8154968 - - thumb_func_start sub_81549C8 -sub_81549C8: @ 81549C8 - push {lr} - bl FreeAllWindowBuffers - pop {r0} - bx r0 - thumb_func_end sub_81549C8 - - thumb_func_start sub_81549D4 -sub_81549D4: @ 81549D4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r5, _08154A04 @ =gUnknown_8478EC4 - adds r7, r5, 0x4 -_081549E0: - lsls r1, r4, 3 - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, r6 - bne _081549F2 - adds r0, r1, r7 - ldr r0, [r0] - bl sub_8155E24 -_081549F2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _081549E0 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154A04: .4byte gUnknown_8478EC4 - thumb_func_end sub_81549D4 - - thumb_func_start sub_8154A08 -sub_8154A08: @ 8154A08 - push {lr} - ldr r0, _08154A28 @ =gUnknown_203F440 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _08154A22 - bl sub_8155E54 - bl _call_via_r0 -_08154A22: - pop {r0} - bx r0 - .align 2, 0 -_08154A28: .4byte gUnknown_203F440 - thumb_func_end sub_8154A08 - - thumb_func_start sub_8154A2C -sub_8154A2C: @ 8154A2C - push {lr} - ldr r0, _08154A48 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r2, _08154A4C @ =0x00003014 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _08154B24 - lsls r0, 2 - ldr r1, _08154A50 @ =_08154A54 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08154A48: .4byte gUnknown_203F440 -_08154A4C: .4byte 0x00003014 -_08154A50: .4byte _08154A54 - .align 2, 0 -_08154A54: - .4byte _08154A68 - .4byte _08154A6E - .4byte _08154A88 - .4byte _08154ACC - .4byte _08154AF8 -_08154A68: - bl sub_8155EA0 - b _08154B08 -_08154A6E: - bl sub_8155FE0 - cmp r0, 0x1 - bne _08154B2E - ldr r0, _08154A80 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r2, _08154A84 @ =0x00003014 - adds r1, r2 - b _08154B10 - .align 2, 0 -_08154A80: .4byte gUnknown_203F440 -_08154A84: .4byte 0x00003014 -_08154A88: - ldr r1, _08154AC0 @ =sDodrioBerryBgTilemap1 - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r1, _08154AC4 @ =sDodrioBerryBgTilemap2Left - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r1, _08154AC8 @ =sDodrioBerryBgTilemap2Right - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _08154B08 - .align 2, 0 -_08154AC0: .4byte sDodrioBerryBgTilemap1 -_08154AC4: .4byte sDodrioBerryBgTilemap2Left -_08154AC8: .4byte sDodrioBerryBgTilemap2Right -_08154ACC: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - ldr r0, _08154AF0 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r2, _08154AF4 @ =0x00003014 - adds r1, r2 - b _08154B10 - .align 2, 0 -_08154AF0: .4byte gUnknown_203F440 -_08154AF4: .4byte 0x00003014 -_08154AF8: - ldr r0, _08154B18 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x14] - lsrs r0, 3 - bl sub_81546EC - bl sub_8154720 -_08154B08: - ldr r0, _08154B1C @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _08154B20 @ =0x00003014 - adds r1, r0 -_08154B10: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08154B2E - .align 2, 0 -_08154B18: .4byte gSaveBlock2Ptr -_08154B1C: .4byte gUnknown_203F440 -_08154B20: .4byte 0x00003014 -_08154B24: - movs r2, 0xC0 - lsls r2, 6 - adds r1, r2 - movs r0, 0x1 - str r0, [r1] -_08154B2E: - pop {r0} - bx r0 - thumb_func_end sub_8154A2C - - thumb_func_start sub_8154B34 -sub_8154B34: @ 8154B34 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r4, _08154B74 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r2, _08154B78 @ =0x00003014 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _08154B7C - cmp r0, 0x1 - bne _08154B54 - b _08154CE0 -_08154B54: - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB4 - bhi _08154B62 - b _08154D82 -_08154B62: - bl sub_81533B4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - cmp r6, r7 - bcc _08154B72 - b _08154D5A -_08154B72: - b _08154D34 - .align 2, 0 -_08154B74: .4byte gUnknown_203F440 -_08154B78: .4byte 0x00003014 -_08154B7C: - bl sub_81533B4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _08154CB8 @ =sUnknown_8478E80 - subs r0, r7, 0x1 - lsls r0, 2 - adds r0, r1 - ldr r5, [r0] - ldr r2, _08154CBC @ =0xffffff00 - ldr r0, [sp, 0xC] - ands r0, r2 - ldr r1, _08154CC0 @ =0x00ffffff - ands r0, r1 - movs r1, 0xE0 - lsls r1, 19 - orrs r0, r1 - str r0, [sp, 0xC] - ldr r0, [sp, 0x10] - ands r0, r2 - movs r1, 0x2 - orrs r0, r1 - ldr r1, _08154CC4 @ =0xffff00ff - ands r0, r1 - movs r1, 0xD0 - lsls r1, 4 - orrs r0, r1 - ldr r1, _08154CC8 @ =0x0000ffff - ands r0, r1 - movs r1, 0x98 - lsls r1, 13 - orrs r0, r1 - str r0, [sp, 0x10] - movs r6, 0 - cmp r6, r7 - bcs _08154CAC - mov r3, sp - adds r3, 0xC - str r3, [sp, 0x18] - mov r10, r4 - ldr r0, _08154CCC @ =0x00003008 - mov r9, r0 -_08154BD0: - movs r1, 0 - mov r8, r1 - adds r0, r6, 0 - bl sub_81537AC - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - bl sub_81533C4 - adds r1, r0, 0 - movs r0, 0 - movs r2, 0x1 - negs r2, r2 - bl GetStringWidth - movs r1, 0x38 - subs r1, r0 - lsrs r1, 1 - str r1, [sp, 0x14] - ldrb r0, [r5] - lsls r0, 8 - ldr r2, _08154CC4 @ =0xffff00ff - ldr r1, [sp, 0xC] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0xC] - ldrb r2, [r5, 0x1] - lsls r2, 16 - ldr r0, _08154CD0 @ =0xff00ffff - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0xC] - add r0, sp, 0xC - bl AddWindow - mov r2, r10 - ldr r1, [r2] - add r1, r9 - adds r1, r6 - strb r0, [r1] - ldr r0, [r2] - add r0, r9 - adds r0, r6 - ldrb r0, [r0] - bl ClearWindowTilemap - mov r3, r10 - ldr r0, [r3] - add r0, r9 - adds r0, r6 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08154C4E - movs r0, 0x2 - mov r8, r0 -_08154C4E: - adds r0, r4, 0 - bl sub_81533C4 - adds r4, r0, 0 - mov r1, r10 - ldr r0, [r1] - add r0, r9 - adds r0, r6 - ldrb r0, [r0] - ldr r3, [sp, 0x14] - lsls r2, r3, 24 - lsrs r2, 24 - mov r3, r8 - lsls r1, r3, 1 - add r1, r8 - ldr r3, _08154CD4 @ =sUnknown_8478E38 - adds r1, r3 - str r1, [sp] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized3 - mov r2, r10 - ldr r0, [r2] - add r0, r9 - adds r0, r6 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r3, [sp, 0x18] - ldrh r0, [r3, 0x6] - adds r0, 0xE - strh r0, [r3, 0x6] - add r0, sp, 0xC - bl sub_8154868 - adds r5, 0x4 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r7 - bcc _08154BD0 -_08154CAC: - ldr r0, _08154CD8 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _08154CDC @ =0x00003014 - adds r1, r0 - b _08154D1E - .align 2, 0 -_08154CB8: .4byte sUnknown_8478E80 -_08154CBC: .4byte 0xffffff00 -_08154CC0: .4byte 0x00ffffff -_08154CC4: .4byte 0xffff00ff -_08154CC8: .4byte 0x0000ffff -_08154CCC: .4byte 0x00003008 -_08154CD0: .4byte 0xff00ffff -_08154CD4: .4byte sUnknown_8478E38 -_08154CD8: .4byte gUnknown_203F440 -_08154CDC: .4byte 0x00003014 -_08154CE0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08154D82 - bl sub_81533B4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - cmp r6, r7 - bcs _08154D10 -_08154CF8: - ldr r0, [r4] - ldr r1, _08154D28 @ =0x00003008 - adds r0, r1 - adds r0, r6 - ldrb r0, [r0] - bl PutWindowTilemap - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r7 - bcc _08154CF8 -_08154D10: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _08154D2C @ =gUnknown_203F440 - ldr r1, [r0] - ldr r2, _08154D30 @ =0x00003014 - adds r1, r2 -_08154D1E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08154D82 - .align 2, 0 -_08154D28: .4byte 0x00003008 -_08154D2C: .4byte gUnknown_203F440 -_08154D30: .4byte 0x00003014 -_08154D34: - ldr r5, _08154D94 @ =gUnknown_203F440 - ldr r0, [r5] - ldr r4, _08154D98 @ =0x00003008 - adds r0, r4 - adds r0, r6 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r5] - adds r0, r4 - adds r0, r6 - ldrb r0, [r0] - bl RemoveWindow - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r7 - bcc _08154D34 -_08154D5A: - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _08154D94 @ =gUnknown_203F440 - ldr r0, [r0] - movs r3, 0xC0 - lsls r3, 6 - adds r0, r3 - movs r1, 0x1 - str r1, [r0] -_08154D82: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154D94: .4byte gUnknown_203F440 -_08154D98: .4byte 0x00003008 - thumb_func_end sub_8154B34 - - thumb_func_start sub_8154D9C -sub_8154D9C: @ 8154D9C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x70 - lsls r0, 24 - movs r1, 0 - mov r8, r1 - movs r6, 0 - lsrs r7, r0, 24 - add r4, sp, 0x2C - ldr r1, _08154F64 @ =gUnknown_8478F14 - adds r0, r4, 0 - movs r2, 0x5 - bl memcpy - movs r5, 0 - cmp r5, r7 - bcs _08154DEC - add r4, sp, 0x34 -_08154DC6: - mov r0, sp - adds r0, r5 - adds r0, 0x2C - strb r5, [r0] - add r0, sp, 0x5C - adds r1, r5, 0 - bl sub_81536A0 - lsls r2, r5, 3 - adds r2, r4, r2 - ldr r0, [sp, 0x5C] - ldr r1, [sp, 0x60] - str r0, [r2] - str r1, [r2, 0x4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _08154DC6 -_08154DEC: - bl sub_81534AC - cmp r0, 0 - beq _08154E22 -_08154DF4: - movs r5, 0 - cmp r5, r7 - bcs _08154E1C - add r2, sp, 0x34 - add r1, sp, 0x2C -_08154DFE: - lsls r0, r5, 3 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, r8 - bne _08154E12 - adds r0, r1, r6 - strb r5, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08154E12: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _08154DFE -_08154E1C: - mov r8, r6 - cmp r6, r7 - bcc _08154DF4 -_08154E22: - movs r5, 0 - ldr r4, _08154F68 @ =gText_SpacePoints - cmp r5, r7 - bcs _08154E48 - add r1, sp, 0x34 - add r6, sp, 0x38 - subs r3, r7, 0x1 -_08154E30: - lsls r2, r5, 3 - adds r0, r6, r2 - ldr r0, [r0] - cmp r0, 0 - bne _08154E3E - adds r0, r1, r2 - strb r3, [r0] -_08154E3E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _08154E30 -_08154E48: - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r1, 0xD8 - subs r1, r0 - str r1, [sp, 0x64] - movs r5, 0 - cmp r5, r7 - bcs _08154F52 - mov r2, sp - adds r2, 0x34 - str r2, [sp, 0x68] - ldr r3, _08154F6C @ =0x00003009 - mov r10, r3 - adds r0, r1, 0 - subs r0, 0x23 - lsls r0, 24 - str r0, [sp, 0x6C] -_08154E70: - movs r4, 0 - mov r8, r4 - mov r0, sp - adds r0, r5 - adds r0, 0x2C - ldrb r0, [r0] - adds r4, r0, 0 - lsls r1, r4, 3 - add r0, sp, 0x38 - adds r0, r1 - ldr r0, [r0] - mov r9, r0 - ldr r2, _08154F70 @ =gUnknown_203F440 - ldr r0, [r2] - add r0, r10 - ldrb r0, [r0] - ldr r2, _08154F74 @ =sUnknown_8478E94 - ldr r3, [sp, 0x68] - adds r1, r3, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r2, [r1] - ldr r3, _08154F78 @ =sUnknown_8478EBA - lsls r1, r5, 1 - adds r1, r3 - ldrb r6, [r1] - str r6, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - mov r3, r8 - str r3, [sp, 0x8] - movs r1, 0 - movs r3, 0x8 - bl AddTextPrinterParameterized - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08154EC8 - movs r0, 0x2 - mov r8, r0 -_08154EC8: - adds r0, r4, 0 - bl sub_81533C4 - adds r3, r0, 0 - ldr r1, _08154F70 @ =gUnknown_203F440 - ldr r0, [r1] - add r0, r10 - ldrb r0, [r0] - mov r2, r8 - lsls r1, r2, 1 - add r1, r8 - ldr r2, _08154F7C @ =sUnknown_8478E38 - adds r1, r2 - str r1, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - str r3, [sp, 0x8] - movs r1, 0 - movs r2, 0x1C - adds r3, r6, 0 - bl AddTextPrinterParameterized3 - add r0, sp, 0xC - mov r1, r9 - movs r2, 0x1 - movs r3, 0x7 - bl ConvertIntToDecimalStringN - movs r0, 0 - add r1, sp, 0xC - adds r2, r4, 0 - bl GetStringWidth - ldr r1, _08154F70 @ =gUnknown_203F440 - ldr r0, [r1] - add r0, r10 - ldrb r0, [r0] - str r6, [sp] - movs r2, 0xFF - str r2, [sp, 0x4] - movs r3, 0 - str r3, [sp, 0x8] - movs r1, 0 - add r2, sp, 0xC - ldr r4, [sp, 0x6C] - lsrs r3, r4, 24 - bl AddTextPrinterParameterized - ldr r1, _08154F70 @ =gUnknown_203F440 - ldr r0, [r1] - add r0, r10 - ldrb r0, [r0] - ldr r2, [sp, 0x64] - lsls r3, r2, 24 - str r6, [sp] - movs r4, 0xFF - str r4, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - ldr r2, _08154F68 @ =gText_SpacePoints - lsrs r3, 24 - bl AddTextPrinterParameterized - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _08154E70 -_08154F52: - add sp, 0x70 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08154F64: .4byte gUnknown_8478F14 -_08154F68: .4byte gText_SpacePoints -_08154F6C: .4byte 0x00003009 -_08154F70: .4byte gUnknown_203F440 -_08154F74: .4byte sUnknown_8478E94 -_08154F78: .4byte sUnknown_8478EBA -_08154F7C: .4byte sUnknown_8478E38 - thumb_func_end sub_8154D9C - - thumb_func_start sub_8154F80 -sub_8154F80: @ 8154F80 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8C - bl sub_81533B4 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x84] - ldr r6, _08154FB0 @ =gUnknown_203F440 - ldr r1, [r6] - ldr r2, _08154FB4 @ =0x00003014 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0xB - bls _08154FA6 - b _08155678 -_08154FA6: - lsls r0, 2 - ldr r1, _08154FB8 @ =_08154FBC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08154FB0: .4byte gUnknown_203F440 -_08154FB4: .4byte 0x00003014 -_08154FB8: .4byte _08154FBC - .align 2, 0 -_08154FBC: - .4byte _08154FEC - .4byte _08155008 - .4byte _08155060 - .4byte _0815524C - .4byte _08155298 - .4byte _081552DC - .4byte _08155340 - .4byte _0815537C - .4byte _081553C0 - .4byte _08155480 - .4byte _081555D8 - .4byte _0815562C -_08154FEC: - bl sub_81535B0 - ldr r0, _08155000 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _08155004 @ =0x0000301c - adds r2, r1, r0 - movs r0, 0 - strh r0, [r2] - b _0815565A - .align 2, 0 -_08155000: .4byte gUnknown_203F440 -_08155004: .4byte 0x0000301c -_08155008: - ldr r6, _08155050 @ =sUnknown_8475674 - adds r0, r6, 0 - bl AddWindow - ldr r4, _08155054 @ =gUnknown_203F440 - ldr r1, [r4] - ldr r2, _08155058 @ =0x00003008 - mov r8, r2 - add r1, r8 - strb r0, [r1] - movs r0, 0x8 - adds r0, r6 - mov r9, r0 - bl AddWindow - ldr r1, [r4] - ldr r5, _0815505C @ =0x00003009 - adds r1, r5 - strb r0, [r1] - ldr r0, [r4] - add r0, r8 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ClearWindowTilemap - adds r0, r6, 0 - bl sub_8154868 - mov r0, r9 - bl sub_8154868 - b _08155658 - .align 2, 0 -_08155050: .4byte sUnknown_8475674 -_08155054: .4byte gUnknown_203F440 -_08155058: .4byte 0x00003008 -_0815505C: .4byte 0x00003009 -_08155060: - ldr r4, _081551A8 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r5, _081551AC @ =0x00003008 - adds r0, r5 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r4] - ldr r1, _081551B0 @ =0x00003009 - mov r9, r1 - add r0, r9 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _081551B4 @ =gText_BerryPickingResults - mov r8, r2 - movs r2, 0x1 - negs r2, r2 - movs r0, 0 - mov r1, r8 - bl GetStringWidth - adds r1, r0, 0 - movs r0, 0xE0 - subs r0, r1 - lsrs r3, r0, 1 - ldr r0, [r4] - adds r0, r5 - ldrb r0, [r0] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x2 - str r1, [sp] - movs r6, 0xFF - str r6, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - movs r1, 0 - mov r2, r8 - bl AddTextPrinterParameterized - ldr r0, [r4] - add r0, r9 - ldrb r0, [r0] - ldr r2, _081551B8 @ =gText_10P30P50P50P - movs r1, 0x10 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0 - movs r3, 0x44 - bl AddTextPrinterParameterized - movs r0, 0 - mov r9, r0 - ldr r1, [sp, 0x84] - cmp r9, r1 - bcc _081550DA - b _08155214 -_081550DA: - movs r5, 0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - cmp r9, r0 - bne _081550EA - movs r5, 0x2 -_081550EA: - mov r0, r9 - bl sub_81533C4 - adds r6, r0, 0 - ldr r0, _081551A8 @ =gUnknown_203F440 - ldr r0, [r0] - ldr r2, _081551B0 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - ldr r1, _081551BC @ =sUnknown_8478EB0 - mov r2, r9 - lsls r4, r2, 1 - adds r4, r1 - ldrb r3, [r4] - lsls r1, r5, 1 - adds r1, r5 - ldr r2, _081551C0 @ =sUnknown_8478E38 - adds r1, r2 - str r1, [sp] - movs r5, 0x1 - negs r5, r5 - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r1, 0 - movs r2, 0x2 - bl AddTextPrinterParameterized3 - movs r7, 0 - mov r0, r9 - adds r0, 0x1 - str r0, [sp, 0x88] - mov r8, r4 - ldr r1, _081551C4 @ =sUnknown_8478EA8 - mov r10, r1 -_0815512E: - mov r0, r9 - adds r1, r7, 0 - bl sub_8153404 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _081551C8 @ =0x0000270f - bl sub_815379C - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl sub_81534F0 - ldr r1, _081551C8 @ =0x0000270f - bl sub_815379C - lsls r0, 16 - lsrs r6, r0, 16 - add r0, sp, 0xC - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - movs r0, 0 - add r1, sp, 0xC - movs r2, 0x1 - negs r2, r2 - bl GetStringWidth - adds r5, r0, 0 - cmp r6, r4 - bne _081551D0 - cmp r6, 0 - beq _081551D0 - ldr r0, _081551A8 @ =gUnknown_203F440 - ldr r0, [r0] - ldr r2, _081551B0 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - lsls r1, r7, 1 - add r1, r10 - ldrb r2, [r1] - subs r2, r5 - lsls r2, 24 - lsrs r2, 24 - mov r1, r8 - ldrb r3, [r1] - ldr r1, _081551CC @ =sUnknown_8478E38+0x3 - str r1, [sp] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0x4] - add r1, sp, 0xC - str r1, [sp, 0x8] - movs r1, 0 - bl AddTextPrinterParameterized3 - b _081551FA - .align 2, 0 -_081551A8: .4byte gUnknown_203F440 -_081551AC: .4byte 0x00003008 -_081551B0: .4byte 0x00003009 -_081551B4: .4byte gText_BerryPickingResults -_081551B8: .4byte gText_10P30P50P50P -_081551BC: .4byte sUnknown_8478EB0 -_081551C0: .4byte sUnknown_8478E38 -_081551C4: .4byte sUnknown_8478EA8 -_081551C8: .4byte 0x0000270f -_081551CC: .4byte sUnknown_8478E38+0x3 -_081551D0: - ldr r0, _0815523C @ =gUnknown_203F440 - ldr r0, [r0] - ldr r2, _08155240 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - lsls r1, r7, 1 - add r1, r10 - ldrb r3, [r1] - subs r3, r5 - lsls r3, 24 - lsrs r3, 24 - mov r2, r8 - ldrb r1, [r2] - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - add r2, sp, 0xC - bl AddTextPrinterParameterized -_081551FA: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bls _0815512E - ldr r1, [sp, 0x88] - lsls r0, r1, 24 - lsrs r0, 24 - mov r9, r0 - ldr r2, [sp, 0x84] - cmp r9, r2 - bcs _08155214 - b _081550DA -_08155214: - ldr r4, _0815523C @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _08155244 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - ldr r2, _08155240 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r4] - ldr r0, _08155248 @ =0x00003014 - adds r1, r0 - b _0815565E - .align 2, 0 -_0815523C: .4byte gUnknown_203F440 -_08155240: .4byte 0x00003009 -_08155244: .4byte 0x00003008 -_08155248: .4byte 0x00003014 -_0815524C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08155270 - ldr r4, _08155288 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _0815528C @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r4] - ldr r2, _08155290 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - bl PutWindowTilemap -_08155270: - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl sub_8154324 - ldr r0, _08155288 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _08155294 @ =0x00003014 - adds r1, r0 - b _0815565E - .align 2, 0 -_08155288: .4byte gUnknown_203F440 -_0815528C: .4byte 0x00003008 -_08155290: .4byte 0x00003009 -_08155294: .4byte 0x00003014 -_08155298: - ldr r4, _081552D0 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _081552D4 @ =0x0000301c - adds r2, r0, r1 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1D - bhi _081552B0 - b _081556C8 -_081552B0: - ldr r0, _081552D8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081552BE - b _081556C8 -_081552BE: - movs r0, 0 - strh r0, [r2] - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_8154324 - b _08155658 - .align 2, 0 -_081552D0: .4byte gUnknown_203F440 -_081552D4: .4byte 0x0000301c -_081552D8: .4byte gMain -_081552DC: - ldr r4, _08155330 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r5, _08155334 @ =0x00003008 - adds r0, r5 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r4] - ldr r1, _08155338 @ =0x00003009 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r6, _0815533C @ =gText_AnnouncingRankings - movs r2, 0x1 - negs r2, r2 - movs r0, 0 - adds r1, r6, 0 - bl GetStringWidth - adds r1, r0, 0 - movs r0, 0xE0 - subs r0, r1 - lsrs r3, r0, 1 - ldr r0, [r4] - adds r0, r5 - ldrb r0, [r0] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x2 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - adds r2, r6, 0 - bl AddTextPrinterParameterized - b _08155658 - .align 2, 0 -_08155330: .4byte gUnknown_203F440 -_08155334: .4byte 0x00003008 -_08155338: .4byte 0x00003009 -_0815533C: .4byte gText_AnnouncingRankings -_08155340: - ldr r0, [sp, 0x84] - bl sub_8154D9C - ldr r4, _0815536C @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _08155370 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - ldr r2, _08155374 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r4] - ldr r0, _08155378 @ =0x00003014 - adds r1, r0 - b _0815565E - .align 2, 0 -_0815536C: .4byte gUnknown_203F440 -_08155370: .4byte 0x00003008 -_08155374: .4byte 0x00003009 -_08155378: .4byte 0x00003014 -_0815537C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _081553A0 - ldr r4, _081553B0 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _081553B4 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r4] - ldr r2, _081553B8 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - bl PutWindowTilemap -_081553A0: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _081553B0 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _081553BC @ =0x00003014 - adds r1, r0 - b _0815565E - .align 2, 0 -_081553B0: .4byte gUnknown_203F440 -_081553B4: .4byte 0x00003008 -_081553B8: .4byte 0x00003009 -_081553BC: .4byte 0x00003014 -_081553C0: - ldr r4, _08155408 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _0815540C @ =0x0000301c - adds r2, r0, r1 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1D - bhi _081553D8 - b _081556C8 -_081553D8: - ldr r0, _08155410 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081553E6 - b _081556C8 -_081553E6: - movs r0, 0 - strh r0, [r2] - movs r0, 0x5 - bl PlaySE - bl sub_81534AC - ldr r1, _08155414 @ =0x00000bb7 - cmp r0, r1 - bhi _0815541C - ldr r0, [r4] - ldr r2, _08155418 @ =0x00003014 - adds r0, r2 - movs r1, 0x7F - strb r1, [r0] - b _0815542C - .align 2, 0 -_08155408: .4byte gUnknown_203F440 -_0815540C: .4byte 0x0000301c -_08155410: .4byte gMain -_08155414: .4byte 0x00000bb7 -_08155418: .4byte 0x00003014 -_0815541C: - bl StopMapMusic - ldr r1, [r4] - ldr r0, _08155470 @ =0x00003014 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0815542C: - movs r0, 0x1E - str r0, [sp] - movs r0, 0xF - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x5 - bl FillBgTilemapBufferRect_Palette0 - ldr r5, _08155474 @ =gUnknown_203F440 - ldr r0, [r5] - ldr r4, _08155478 @ =0x00003009 - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - ldr r6, _0815547C @ =sUnknown_8475684 - adds r0, r6, 0 - bl AddWindow - ldr r1, [r5] - adds r1, r4 - strb r0, [r1] - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - adds r0, r6, 0 - bl sub_8154868 - b _081556C8 - .align 2, 0 -_08155470: .4byte 0x00003014 -_08155474: .4byte gUnknown_203F440 -_08155478: .4byte 0x00003009 -_0815547C: .4byte sUnknown_8475684 -_08155480: - ldr r0, _08155558 @ =0x00000101 - bl PlayNewMapMusic - ldr r4, _0815555C @ =gUnknown_203F440 - ldr r0, [r4] - ldr r6, _08155560 @ =0x00003008 - adds r0, r6 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r4] - ldr r1, _08155564 @ =0x00003009 - mov r10, r1 - add r0, r10 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r5, _08155568 @ =gText_AnnouncingPrizes - movs r2, 0x1 - negs r2, r2 - movs r0, 0 - adds r1, r5, 0 - bl GetStringWidth - adds r1, r0, 0 - movs r0, 0xE0 - subs r0, r1 - lsrs r3, r0, 1 - ldr r0, [r4] - adds r0, r6 - ldrb r0, [r0] - lsls r3, 24 - lsrs r3, 24 - movs r2, 0x2 - mov r9, r2 - str r2, [sp] - movs r1, 0xFF - mov r8, r1 - str r1, [sp, 0x4] - movs r6, 0 - str r6, [sp, 0x8] - movs r1, 0 - adds r2, r5, 0 - bl AddTextPrinterParameterized - bl DynamicPlaceholderTextUtil_Reset - bl sub_8153390 - lsls r0, 16 - lsrs r0, 16 - add r5, sp, 0x70 - adds r1, r5, 0 - bl CopyItemName - movs r0, 0 - adds r1, r5, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - ldr r1, _0815556C @ =gText_FirstPlacePrize - add r0, sp, 0xC - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - ldr r0, [r4] - add r0, r10 - ldrb r0, [r0] - mov r2, r9 - str r2, [sp] - mov r1, r8 - str r1, [sp, 0x4] - str r6, [sp, 0x8] - movs r1, 0 - add r2, sp, 0xC - movs r3, 0x8 - bl AddTextPrinterParameterized - bl sub_815372C - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - cmp r4, 0 - beq _0815559E - cmp r4, 0x3 - beq _0815559E - bl DynamicPlaceholderTextUtil_Reset - bl sub_8153390 - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl CopyItemName - movs r0, 0 - adds r1, r5, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - cmp r4, 0x2 - bne _08155574 - ldr r1, _08155570 @ =gText_CantHoldAnyMore - add r0, sp, 0xC - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - b _08155580 - .align 2, 0 -_08155558: .4byte 0x00000101 -_0815555C: .4byte gUnknown_203F440 -_08155560: .4byte 0x00003008 -_08155564: .4byte 0x00003009 -_08155568: .4byte gText_AnnouncingPrizes -_0815556C: .4byte gText_FirstPlacePrize -_08155570: .4byte gText_CantHoldAnyMore -_08155574: - cmp r6, 0x1 - bne _08155580 - ldr r1, _081555C4 @ =gText_FilledStorageSpace - add r0, sp, 0xC - bl DynamicPlaceholderTextUtil_ExpandPlaceholders -_08155580: - ldr r0, _081555C8 @ =gUnknown_203F440 - ldr r0, [r0] - ldr r2, _081555CC @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - movs r1, 0x28 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - add r2, sp, 0xC - movs r3, 0x8 - bl AddTextPrinterParameterized -_0815559E: - ldr r4, _081555C8 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _081555D0 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - ldr r2, _081555CC @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r4] - ldr r0, _081555D4 @ =0x00003014 - adds r1, r0 - b _0815565E - .align 2, 0 -_081555C4: .4byte gText_FilledStorageSpace -_081555C8: .4byte gUnknown_203F440 -_081555CC: .4byte 0x00003009 -_081555D0: .4byte 0x00003008 -_081555D4: .4byte 0x00003014 -_081555D8: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _081555FC - ldr r4, _08155618 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _0815561C @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r4] - ldr r2, _08155620 @ =0x00003009 - adds r0, r2 - ldrb r0, [r0] - bl PutWindowTilemap -_081555FC: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _08155624 @ =0x00000137 - movs r1, 0x14 - movs r2, 0xA - bl FadeOutAndFadeInNewMapMusic - ldr r0, _08155618 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _08155628 @ =0x00003014 - adds r1, r0 - b _0815565E - .align 2, 0 -_08155618: .4byte gUnknown_203F440 -_0815561C: .4byte 0x00003008 -_08155620: .4byte 0x00003009 -_08155624: .4byte 0x00000137 -_08155628: .4byte 0x00003014 -_0815562C: - ldr r4, _08155668 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _0815566C @ =0x0000301c - adds r2, r0, r1 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1D - bls _081556C8 - ldr r0, _08155670 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081556C8 - movs r0, 0 - strh r0, [r2] - movs r0, 0x5 - bl PlaySE -_08155658: - ldr r1, [r4] -_0815565A: - ldr r2, _08155674 @ =0x00003014 - adds r1, r2 -_0815565E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _081556C8 - .align 2, 0 -_08155668: .4byte gUnknown_203F440 -_0815566C: .4byte 0x0000301c -_08155670: .4byte gMain -_08155674: .4byte 0x00003014 -_08155678: - ldr r5, _081556D8 @ =0x00003008 - adds r0, r1, r5 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r6] - ldr r4, _081556DC @ =0x00003009 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r6] - adds r0, r5 - ldrb r0, [r0] - bl RemoveWindow - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, [r6] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] -_081556C8: - add sp, 0x8C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081556D8: .4byte 0x00003008 -_081556DC: .4byte 0x00003009 - thumb_func_end sub_8154F80 - - thumb_func_start sub_81556E0 -sub_81556E0: @ 81556E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - ldr r1, _08155708 @ =gUnknown_203F440 - ldr r2, [r1] - ldr r0, _0815570C @ =0x00003014 - mov r9, r0 - adds r0, r2, r0 - ldrb r7, [r0] - mov r10, r1 - cmp r7, 0x1 - beq _0815579C - cmp r7, 0x1 - bgt _08155710 - cmp r7, 0 - beq _0815571E - b _081559EC - .align 2, 0 -_08155708: .4byte gUnknown_203F440 -_0815570C: .4byte 0x00003014 -_08155710: - cmp r7, 0x2 - bne _08155716 - b _08155868 -_08155716: - cmp r7, 0x3 - bne _0815571C - b _081558A4 -_0815571C: - b _081559EC -_0815571E: - ldr r5, _08155788 @ =sUnknown_847568C - adds r0, r5, 0 - bl AddWindow - mov r2, r10 - ldr r1, [r2] - ldr r3, _0815578C @ =0x00003008 - adds r1, r3 - strb r0, [r1] - movs r0, 0x8 - adds r0, r5 - mov r8, r0 - bl AddWindow - mov r2, r10 - ldr r1, [r2] - ldr r4, _08155790 @ =0x00003009 - adds r1, r4 - strb r0, [r1] - ldr r0, [r2] - ldr r3, _0815578C @ =0x00003008 - adds r0, r3 - ldrb r0, [r0] - bl ClearWindowTilemap - mov r1, r10 - ldr r0, [r1] - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - adds r0, r5, 0 - bl sub_8154868 - mov r0, r8 - bl sub_8154768 - mov r2, r10 - ldr r1, [r2] - add r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - ldr r3, _08155794 @ =0x00003020 - adds r0, r3 - strb r7, [r0] - ldr r0, [r2] - ldr r1, _08155798 @ =0x00003024 - adds r0, r1 - strb r7, [r0] - b _08155A58 - .align 2, 0 -_08155788: .4byte sUnknown_847568C -_0815578C: .4byte 0x00003008 -_08155790: .4byte 0x00003009 -_08155794: .4byte 0x00003020 -_08155798: .4byte 0x00003024 -_0815579C: - ldr r3, _0815584C @ =0x00003008 - mov r8, r3 - adds r0, r2, r3 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - mov r1, r10 - ldr r0, [r1] - ldr r7, _08155850 @ =0x00003009 - adds r0, r7 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - mov r2, r10 - ldr r0, [r2] - add r0, r8 - ldrb r0, [r0] - ldr r2, _08155854 @ =gText_WantToPlayAgain - movs r1, 0x6 - str r1, [sp] - movs r5, 0xFF - str r5, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - mov r3, r10 - ldr r0, [r3] - adds r0, r7 - ldrb r0, [r0] - ldr r2, _08155858 @ =gText_Yes - movs r1, 0x2 - mov r9, r1 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r3, 0x8 - bl AddTextPrinterParameterized - mov r2, r10 - ldr r0, [r2] - adds r0, r7 - ldrb r0, [r0] - ldr r2, _0815585C @ =gText_No - movs r1, 0x10 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - mov r3, r10 - ldr r0, [r3] - adds r0, r7 - ldrb r0, [r0] - ldr r2, _08155860 @ =gFameCheckerText_ListMenuCursor - mov r1, r9 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - mov r2, r10 - ldr r0, [r2] - add r0, r8 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - mov r3, r10 - ldr r0, [r3] - adds r0, r7 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - mov r0, r10 - ldr r1, [r0] - ldr r2, _08155864 @ =0x00003014 - adds r1, r2 - b _081559DA - .align 2, 0 -_0815584C: .4byte 0x00003008 -_08155850: .4byte 0x00003009 -_08155854: .4byte gText_WantToPlayAgain -_08155858: .4byte gText_Yes -_0815585C: .4byte gText_No -_08155860: .4byte gFameCheckerText_ListMenuCursor -_08155864: .4byte 0x00003014 -_08155868: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0815588E - mov r3, r10 - ldr r0, [r3] - ldr r1, _0815589C @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap - mov r2, r10 - ldr r0, [r2] - ldr r3, _081558A0 @ =0x00003009 - adds r0, r3 - ldrb r0, [r0] - bl PutWindowTilemap -_0815588E: - movs r0, 0 - bl CopyBgTilemapBufferToVram - mov r0, r10 - ldr r1, [r0] - add r1, r9 - b _081559DA - .align 2, 0 -_0815589C: .4byte 0x00003008 -_081558A0: .4byte 0x00003009 -_081558A4: - ldr r1, _0815590C @ =0x00003020 - adds r0, r2, r1 - ldrb r7, [r0] - cmp r7, 0 - bne _081558B0 - movs r7, 0x1 -_081558B0: - ldr r4, _08155910 @ =0x00003009 - adds r0, r2, r4 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - mov r2, r10 - ldr r0, [r2] - adds r0, r4 - ldrb r0, [r0] - ldr r2, _08155914 @ =gText_Yes - movs r3, 0x2 - mov r8, r3 - str r3, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - mov r2, r10 - ldr r0, [r2] - adds r0, r4 - ldrb r0, [r0] - ldr r2, _08155918 @ =gText_No - movs r6, 0x10 - str r6, [sp] - movs r3, 0xFF - str r3, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - mov r1, r10 - ldr r0, [r1] - adds r0, r4 - ldrb r1, [r0] - ldr r2, _0815591C @ =gFameCheckerText_ListMenuCursor - cmp r7, 0x1 - bne _08155920 - mov r3, r8 - str r3, [sp] - b _08155922 - .align 2, 0 -_0815590C: .4byte 0x00003020 -_08155910: .4byte 0x00003009 -_08155914: .4byte gText_Yes -_08155918: .4byte gText_No -_0815591C: .4byte gFameCheckerText_ListMenuCursor -_08155920: - str r6, [sp] -_08155922: - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r1, 0 - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - ldr r4, _08155970 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _08155974 @ =0x00003009 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _08155978 @ =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08155984 - movs r0, 0x5 - bl PlaySE - ldr r0, [r4] - ldr r2, _0815597C @ =0x00003020 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _08155966 - strb r5, [r1] -_08155966: - ldr r1, [r4] - ldr r3, _08155980 @ =0x00003014 - adds r1, r3 - b _081559DA - .align 2, 0 -_08155970: .4byte gUnknown_203F440 -_08155974: .4byte 0x00003009 -_08155978: .4byte gMain -_0815597C: .4byte 0x00003020 -_08155980: .4byte 0x00003014 -_08155984: - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0 - beq _081559BC - movs r0, 0x5 - bl PlaySE - ldr r0, [r4] - ldr r2, _081559A8 @ =0x00003020 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x1 - beq _081559B2 - cmp r0, 0x1 - bgt _081559AC - cmp r0, 0 - beq _081559B2 - b _08155A58 - .align 2, 0 -_081559A8: .4byte 0x00003020 -_081559AC: - cmp r0, 0x2 - beq _081559B8 - b _08155A58 -_081559B2: - movs r0, 0x2 - strb r0, [r1] - b _08155A58 -_081559B8: - strb r5, [r1] - b _08155A58 -_081559BC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08155A58 - movs r0, 0x5 - bl PlaySE - ldr r0, [r4] - ldr r3, _081559E4 @ =0x00003020 - adds r0, r3 - movs r1, 0x2 - strb r1, [r0] - ldr r1, [r4] - ldr r0, _081559E8 @ =0x00003014 - adds r1, r0 -_081559DA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08155A58 - .align 2, 0 -_081559E4: .4byte 0x00003020 -_081559E8: .4byte 0x00003014 -_081559EC: - mov r1, r10 - ldr r0, [r1] - ldr r2, _08155A68 @ =0x00003020 - adds r1, r0, r2 - ldrb r1, [r1] - ldr r3, _08155A6C @ =0x00003024 - adds r0, r3 - strb r1, [r0] - mov r1, r10 - ldr r0, [r1] - ldr r5, _08155A70 @ =0x00003008 - adds r0, r5 - ldrb r0, [r0] - bl ClearWindowTilemap - mov r2, r10 - ldr r0, [r2] - ldr r4, _08155A74 @ =0x00003009 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - mov r3, r10 - ldr r0, [r3] - adds r0, r5 - ldrb r0, [r0] - bl RemoveWindow - mov r1, r10 - ldr r0, [r1] - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - mov r2, r10 - ldr r0, [r2] - movs r3, 0xC0 - lsls r3, 6 - adds r0, r3 - movs r1, 0x1 - str r1, [r0] -_08155A58: - 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 -_08155A68: .4byte 0x00003020 -_08155A6C: .4byte 0x00003024 -_08155A70: .4byte 0x00003008 -_08155A74: .4byte 0x00003009 - thumb_func_end sub_81556E0 - - thumb_func_start sub_8155A78 -sub_8155A78: @ 8155A78 - push {r4-r6,lr} - sub sp, 0x10 - ldr r5, _08155A94 @ =gUnknown_203F440 - ldr r0, [r5] - ldr r6, _08155A98 @ =0x00003014 - adds r0, r6 - ldrb r4, [r0] - cmp r4, 0x1 - beq _08155AD0 - cmp r4, 0x1 - bgt _08155A9C - cmp r4, 0 - beq _08155AA6 - b _08155B18 - .align 2, 0 -_08155A94: .4byte gUnknown_203F440 -_08155A98: .4byte 0x00003014 -_08155A9C: - cmp r4, 0x2 - beq _08155AE4 - cmp r4, 0x3 - beq _08155AFC - b _08155B18 -_08155AA6: - movs r0, 0 - movs r1, 0 - bl DrawDialogueFrame - ldr r2, _08155ACC @ =gText_SavingDontTurnOffThePower2 - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized2 - b _08155B08 - .align 2, 0 -_08155ACC: .4byte gText_SavingDontTurnOffThePower2 -_08155AD0: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r1, [r5] - ldr r0, _08155AE0 @ =0x00003014 - adds r1, r0 - b _08155B0C - .align 2, 0 -_08155AE0: .4byte 0x00003014 -_08155AE4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08155B40 - ldr r0, _08155AF8 @ =sub_80DA634 - movs r1, 0 - bl CreateTask - b _08155B08 - .align 2, 0 -_08155AF8: .4byte sub_80DA634 -_08155AFC: - ldr r0, _08155B14 @ =sub_80DA634 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08155B40 -_08155B08: - ldr r1, [r5] - adds r1, r6 -_08155B0C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08155B40 - .align 2, 0 -_08155B14: .4byte sub_80DA634 -_08155B18: - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _08155B48 @ =gUnknown_203F440 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] -_08155B40: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08155B48: .4byte gUnknown_203F440 - thumb_func_end sub_8155A78 - - thumb_func_start sub_8155B4C -sub_8155B4C: @ 8155B4C - push {r4-r6,lr} - sub sp, 0xC - ldr r1, _08155B6C @ =gUnknown_203F440 - ldr r2, [r1] - ldr r6, _08155B70 @ =0x00003014 - adds r0, r2, r6 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x1 - beq _08155BA4 - cmp r0, 0x1 - bgt _08155B74 - cmp r0, 0 - beq _08155B7A - b _08155C18 - .align 2, 0 -_08155B6C: .4byte gUnknown_203F440 -_08155B70: .4byte 0x00003014 -_08155B74: - cmp r0, 0x2 - beq _08155BEC - b _08155C18 -_08155B7A: - ldr r4, _08155B9C @ =sUnknown_84756A4 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - ldr r2, _08155BA0 @ =0x00003008 - adds r1, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, r2 - ldrb r0, [r0] - bl ClearWindowTilemap - adds r0, r4, 0 - bl sub_8154868 - b _08155C08 - .align 2, 0 -_08155B9C: .4byte sUnknown_84756A4 -_08155BA0: .4byte 0x00003008 -_08155BA4: - ldr r4, _08155BE0 @ =0x00003008 - adds r0, r2, r4 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - ldr r2, _08155BE4 @ =gText_CommunicationStandby3 - movs r1, 0x6 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r5] - ldr r0, _08155BE8 @ =0x00003014 - adds r1, r0 - b _08155C0C - .align 2, 0 -_08155BE0: .4byte 0x00003008 -_08155BE4: .4byte gText_CommunicationStandby3 -_08155BE8: .4byte 0x00003014 -_08155BEC: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08155C02 - ldr r0, [r5] - ldr r1, _08155C14 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap -_08155C02: - movs r0, 0 - bl CopyBgTilemapBufferToVram -_08155C08: - ldr r1, [r5] - adds r1, r6 -_08155C0C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08155C24 - .align 2, 0 -_08155C14: .4byte 0x00003008 -_08155C18: - ldr r0, [r5] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] -_08155C24: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8155B4C - - thumb_func_start sub_8155C2C -sub_8155C2C: @ 8155C2C - push {r4,r5,lr} - sub sp, 0x8 - ldr r5, _08155C78 @ =gUnknown_203F440 - ldr r0, [r5] - ldr r4, _08155C7C @ =0x00003008 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, [r5] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08155C78: .4byte gUnknown_203F440 -_08155C7C: .4byte 0x00003008 - thumb_func_end sub_8155C2C - - thumb_func_start sub_8155C80 -sub_8155C80: @ 8155C80 - push {r4-r7,lr} - sub sp, 0xC - ldr r0, _08155CA0 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r7, _08155CA4 @ =0x00003014 - adds r2, r1, r7 - ldrb r5, [r2] - adds r6, r0, 0 - cmp r5, 0x1 - beq _08155D08 - cmp r5, 0x1 - bgt _08155CA8 - cmp r5, 0 - beq _08155CB2 - b _08155D9C - .align 2, 0 -_08155CA0: .4byte gUnknown_203F440 -_08155CA4: .4byte 0x00003014 -_08155CA8: - cmp r5, 0x2 - beq _08155D50 - cmp r5, 0x3 - beq _08155D7C - b _08155D9C -_08155CB2: - ldr r4, _08155CF8 @ =sUnknown_847569C - adds r0, r4, 0 - bl AddWindow - ldr r1, [r6] - ldr r2, _08155CFC @ =0x00003008 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r0, r2 - ldrb r0, [r0] - bl ClearWindowTilemap - adds r0, r4, 0 - bl sub_8154868 - ldr r1, [r6] - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r6] - ldr r2, _08155D00 @ =0x0000301c - adds r1, r0, r2 - movs r2, 0 - strh r5, [r1] - ldr r1, _08155D04 @ =0x00003020 - adds r0, r1 - strb r2, [r0] - ldr r0, [r6] - adds r1, 0x4 - adds r0, r1 - strb r2, [r0] - b _08155DE2 - .align 2, 0 -_08155CF8: .4byte sUnknown_847569C -_08155CFC: .4byte 0x00003008 -_08155D00: .4byte 0x0000301c -_08155D04: .4byte 0x00003020 -_08155D08: - ldr r4, _08155D44 @ =0x00003008 - adds r0, r1, r4 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - ldr r2, _08155D48 @ =gText_SomeoneDroppedOut - movs r1, 0x6 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r6] - ldr r2, _08155D4C @ =0x00003014 - adds r1, r2 - b _08155D70 - .align 2, 0 -_08155D44: .4byte 0x00003008 -_08155D48: .4byte gText_SomeoneDroppedOut -_08155D4C: .4byte 0x00003014 -_08155D50: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08155D66 - ldr r0, [r6] - ldr r1, _08155D78 @ =0x00003008 - adds r0, r1 - ldrb r0, [r0] - bl PutWindowTilemap -_08155D66: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r1, [r6] - adds r1, r7 -_08155D70: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08155DE2 - .align 2, 0 -_08155D78: .4byte 0x00003008 -_08155D7C: - ldr r0, _08155D98 @ =0x0000301c - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x77 - bls _08155DE2 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _08155DE2 - .align 2, 0 -_08155D98: .4byte 0x0000301c -_08155D9C: - ldr r0, [r6] - ldr r1, _08155DEC @ =0x00003024 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - ldr r0, [r6] - ldr r4, _08155DF0 @ =0x00003008 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, [r6] - movs r2, 0xC0 - lsls r2, 6 - adds r0, r2 - movs r1, 0x1 - str r1, [r0] -_08155DE2: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08155DEC: .4byte 0x00003024 -_08155DF0: .4byte 0x00003008 - thumb_func_end sub_8155C80 - - thumb_func_start unused_0 -unused_0: @ 8155DF4 - push {r4,lr} - ldr r4, _08155E18 @ =gUnknown_203F440 - ldr r0, [r4] - ldr r1, _08155E1C @ =0x00003004 - adds r0, r1 - ldrb r0, [r0] - bl DestroyTask - ldr r0, [r4] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08155E18: .4byte gUnknown_203F440 -_08155E1C: .4byte 0x00003004 - thumb_func_end unused_0 - - thumb_func_start nullsub_98 -nullsub_98: @ 8155E20 - bx lr - thumb_func_end nullsub_98 - - thumb_func_start sub_8155E24 -sub_8155E24: @ 8155E24 - push {r4,lr} - ldr r2, _08155E48 @ =gUnknown_203F440 - ldr r1, [r2] - ldr r3, _08155E4C @ =0x00003014 - adds r1, r3 - movs r3, 0 - strb r3, [r1] - ldr r1, [r2] - movs r4, 0xC0 - lsls r4, 6 - adds r2, r1, r4 - str r3, [r2] - ldr r2, _08155E50 @ =0x00003028 - adds r1, r2 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08155E48: .4byte gUnknown_203F440 -_08155E4C: .4byte 0x00003014 -_08155E50: .4byte 0x00003028 - thumb_func_end sub_8155E24 - - thumb_func_start sub_8155E54 -sub_8155E54: @ 8155E54 - ldr r0, _08155E60 @ =gUnknown_203F440 - ldr r0, [r0] - ldr r1, _08155E64 @ =0x00003028 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_08155E60: .4byte gUnknown_203F440 -_08155E64: .4byte 0x00003028 - thumb_func_end sub_8155E54 - - thumb_func_start sub_8155E68 -sub_8155E68: @ 8155E68 - push {lr} - ldr r0, _08155E80 @ =gUnknown_203F440 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 6 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - beq _08155E84 - movs r0, 0x1 - b _08155E86 - .align 2, 0 -_08155E80: .4byte gUnknown_203F440 -_08155E84: - movs r0, 0 -_08155E86: - pop {r1} - bx r1 - thumb_func_end sub_8155E68 - - thumb_func_start sub_8155E8C -sub_8155E8C: @ 8155E8C - ldr r0, _08155E98 @ =gUnknown_203F440 - ldr r0, [r0] - ldr r1, _08155E9C @ =0x00003024 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08155E98: .4byte gUnknown_203F440 -_08155E9C: .4byte 0x00003024 - thumb_func_end sub_8155E8C - - thumb_func_start sub_8155EA0 -sub_8155EA0: @ 8155EA0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _08155FD0 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08155FD4 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_08155EC6: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _08155EC6 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _08155FD0 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08155FD8 @ =sUnknown_847565C - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - bl InitStandardTextBoxWindows - bl ResetBg0 - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r4, _08155FDC @ =gUnknown_203F440 - ldr r1, [r4] - movs r0, 0x3 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 5 - adds r1, r2 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 6 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08155FD0: .4byte 0x040000d4 -_08155FD4: .4byte 0x81000800 -_08155FD8: .4byte sUnknown_847565C -_08155FDC: .4byte gUnknown_203F440 - thumb_func_end sub_8155EA0 - - thumb_func_start sub_8155FE0 -sub_8155FE0: @ 8155FE0 - push {lr} - sub sp, 0x4 - ldr r0, _08155FFC @ =gUnknown_203F440 - ldr r0, [r0] - ldr r2, _08156000 @ =0x00003018 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x5 - bhi _0815607A - lsls r0, 2 - ldr r1, _08156004 @ =_08156008 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08155FFC: .4byte gUnknown_203F440 -_08156000: .4byte 0x00003018 -_08156004: .4byte _08156008 - .align 2, 0 -_08156008: - .4byte _08156020 - .4byte _08156030 - .4byte _08156036 - .4byte _08156044 - .4byte _0815605C - .4byte _0815606A -_08156020: - ldr r0, _0815602C @ =sDodrioBerryBgPal1 - movs r1, 0 - movs r2, 0x40 - bl LoadPalette - b _08156082 - .align 2, 0 -_0815602C: .4byte sDodrioBerryBgPal1 -_08156030: - bl ResetTempTileDataBuffers - b _08156082 -_08156036: - ldr r1, _08156040 @ =sDodrioBerryBgGfx1 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - b _0815604C - .align 2, 0 -_08156040: .4byte sDodrioBerryBgGfx1 -_08156044: - ldr r1, _08156058 @ =sDodrioBerryBgGfx2 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 -_0815604C: - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - b _08156082 - .align 2, 0 -_08156058: .4byte sDodrioBerryBgGfx2 -_0815605C: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08156082 - b _08156090 -_0815606A: - movs r0, 0x3 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - b _08156082 -_0815607A: - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08156092 -_08156082: - ldr r0, _08156098 @ =gUnknown_203F440 - ldr r1, [r0] - ldr r0, _0815609C @ =0x00003018 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08156090: - movs r0, 0 -_08156092: - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 -_08156098: .4byte gUnknown_203F440 -_0815609C: .4byte 0x00003018 - thumb_func_end sub_8155FE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/dodrio_berry_picking_2.s b/asm/dodrio_berry_picking_2.s deleted file mode 100644 index 91594c7a8..000000000 --- a/asm/dodrio_berry_picking_2.s +++ /dev/null @@ -1,734 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_815A61C -sub_815A61C: @ 815A61C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r4, [sp, 0x48] - lsls r4, 24 - str r4, [sp, 0x1C] - movs r4, 0x14 - adds r4, r0 - mov r9, r4 - mov r5, sp - movs r4, 0x2 - strb r4, [r5] - mov r10, sp - mov r5, r9 - ldrb r4, [r5, 0xB] - movs r7, 0xF - adds r5, r7, 0 - ands r5, r4 - mov r6, r10 - ldrb r6, [r6, 0x1] - mov r8, r6 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x1] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0xC] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x1] - ldrb r5, [r6, 0xD] - movs r6, 0xF - ands r5, r6 - mov r4, r10 - ldrb r4, [r4, 0x2] - mov r8, r4 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x2] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0xE] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x2] - ldrb r5, [r6, 0xF] - movs r6, 0xF - ands r5, r6 - mov r4, r10 - ldrb r4, [r4, 0x3] - mov r8, r4 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x3] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0x10] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x3] - ldrb r5, [r6, 0x11] - movs r6, 0xF - ands r5, r6 - mov r4, r10 - ldrb r4, [r4, 0x4] - mov r8, r4 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x4] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0x12] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x4] - ldrb r4, [r6, 0x13] - movs r6, 0xF - ands r4, r6 - mov r6, r8 - ldrb r5, [r6, 0x5] - movs r6, 0x10 - negs r6, r6 - ands r6, r5 - orrs r6, r4 - str r6, [sp, 0xC] - mov r4, r8 - strb r6, [r4, 0x5] - mov r5, sp - mov r6, r9 - ldrb r4, [r6, 0x14] - lsls r4, 4 - ldr r6, [sp, 0xC] - ands r6, r7 - orrs r6, r4 - strb r6, [r5, 0x5] - mov r7, sp - movs r4, 0x3 - mov r8, r4 - ldrb r0, [r0, 0x14] - mov r5, r8 - ands r0, r5 - ldrb r5, [r7, 0x6] - movs r6, 0x4 - negs r6, r6 - mov r10, r6 - mov r4, r10 - ands r4, r5 - orrs r4, r0 - strb r4, [r7, 0x6] - mov r5, r9 - ldrb r0, [r5, 0x1] - mov r6, r8 - ands r0, r6 - lsls r0, 2 - movs r5, 0xD - negs r5, r5 - ands r5, r4 - orrs r5, r0 - strb r5, [r7, 0x6] - mov r0, r9 - ldrb r4, [r0, 0x2] - ands r4, r6 - lsls r4, 4 - movs r0, 0x31 - negs r0, r0 - ands r0, r5 - orrs r0, r4 - strb r0, [r7, 0x6] - mov r5, sp - mov r6, r9 - ldrb r4, [r6, 0x3] - lsls r4, 6 - movs r6, 0x3F - ands r0, r6 - orrs r0, r4 - strb r0, [r5, 0x6] - mov r4, r9 - ldrb r0, [r4, 0x4] - mov r5, r8 - ands r0, r5 - ldrb r5, [r7, 0x7] - mov r4, r10 - ands r4, r5 - orrs r4, r0 - strb r4, [r7, 0x7] - mov r6, r9 - ldrb r0, [r6, 0x5] - mov r5, r8 - ands r0, r5 - lsls r0, 2 - movs r5, 0xD - negs r5, r5 - ands r5, r4 - orrs r5, r0 - strb r5, [r7, 0x7] - ldrb r4, [r6, 0x6] - mov r6, r8 - ands r4, r6 - lsls r4, 4 - movs r0, 0x31 - negs r0, r0 - ands r0, r5 - orrs r0, r4 - strb r0, [r7, 0x7] - mov r5, sp - mov r6, r9 - ldrb r4, [r6, 0x7] - lsls r4, 6 - movs r6, 0x3F - ands r0, r6 - orrs r0, r4 - strb r0, [r5, 0x7] - mov r8, sp - mov r0, r9 - ldrb r4, [r0, 0x8] - movs r7, 0x3 - adds r0, r7, 0 - ands r0, r4 - mov r4, r8 - ldrb r5, [r4, 0x8] - mov r4, r10 - ands r4, r5 - orrs r4, r0 - mov r5, r8 - strb r4, [r5, 0x8] - mov r6, r9 - ldrb r5, [r6, 0x9] - adds r0, r7, 0 - ands r0, r5 - lsls r0, 2 - movs r5, 0xD - negs r5, r5 - ands r5, r4 - orrs r5, r0 - mov r0, r8 - strb r5, [r0, 0x8] - ldrb r0, [r1] - adds r4, r7, 0 - ands r4, r0 - lsls r4, 4 - movs r0, 0x31 - negs r0, r0 - ands r0, r5 - orrs r0, r4 - mov r4, r8 - strb r0, [r4, 0x8] - mov r5, sp - ldrb r4, [r2] - lsls r4, 6 - movs r6, 0x3F - ands r0, r6 - orrs r0, r4 - strb r0, [r5, 0x8] - ldrb r4, [r3] - adds r0, r7, 0 - ands r0, r4 - ldrb r4, [r5, 0x9] - mov r6, r10 - ands r6, r4 - orrs r6, r0 - mov r10, r6 - strb r6, [r5, 0x9] - ldr r0, [sp, 0x40] - ldrb r4, [r0] - adds r0, r7, 0 - ands r0, r4 - lsls r0, 2 - movs r4, 0xD - negs r4, r4 - ands r6, r4 - orrs r6, r0 - str r6, [sp, 0x10] - strb r6, [r5, 0x9] - mov r4, sp - ldr r5, [sp, 0x44] - ldrb r0, [r5] - adds r6, r7, 0 - ands r6, r0 - lsls r0, r6, 4 - subs r7, 0x34 - ldr r5, [sp, 0x10] - ands r7, r5 - orrs r7, r0 - strb r7, [r4, 0x9] - mov r5, sp - ldrb r0, [r1, 0x4] - movs r6, 0x1 - mov r12, r6 - mov r4, r12 - ands r4, r0 - lsls r4, 6 - movs r0, 0x41 - negs r0, r0 - mov r10, r0 - ands r0, r7 - orrs r0, r4 - strb r0, [r5, 0x9] - ldrb r4, [r2, 0x4] - lsls r4, 7 - movs r5, 0x7F - ands r0, r5 - orrs r0, r4 - mov r4, r8 - strb r0, [r4, 0x9] - ldrb r4, [r3, 0x4] - mov r0, r12 - ands r0, r4 - mov r5, r8 - ldrb r4, [r5, 0xA] - movs r7, 0x2 - negs r7, r7 - adds r5, r7, 0 - ands r5, r4 - orrs r5, r0 - mov r6, r8 - strb r5, [r6, 0xA] - mov r9, sp - ldr r4, [sp, 0x40] - ldrb r0, [r4, 0x4] - mov r4, r12 - ands r4, r0 - lsls r4, 1 - movs r6, 0x3 - negs r6, r6 - mov r8, r6 - mov r0, r8 - ands r0, r5 - orrs r0, r4 - mov r4, r9 - strb r0, [r4, 0xA] - ldr r6, [sp, 0x44] - ldrb r5, [r6, 0x4] - mov r4, r12 - ands r4, r5 - lsls r4, 2 - movs r5, 0x5 - negs r5, r5 - ands r0, r5 - orrs r0, r4 - mov r4, r9 - strb r0, [r4, 0xA] - mov r4, sp - ldrb r1, [r1, 0x8] - mov r0, r12 - ands r0, r1 - lsls r0, 2 - ldrb r1, [r4, 0xB] - ands r5, r1 - orrs r5, r0 - strb r5, [r4, 0xB] - ldrb r1, [r2, 0x8] - mov r0, r12 - ands r0, r1 - lsls r0, 3 - movs r1, 0x9 - negs r1, r1 - ands r1, r5 - orrs r1, r0 - strb r1, [r4, 0xB] - ldrb r2, [r3, 0x8] - mov r0, r12 - ands r0, r2 - lsls r0, 4 - movs r2, 0x11 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0xB] - mov r3, sp - ldr r5, [sp, 0x40] - ldrb r0, [r5, 0x8] - mov r1, r12 - ands r1, r0 - lsls r1, 5 - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0xB] - mov r2, sp - ldrb r1, [r6, 0x8] - mov r6, r12 - ands r6, r1 - lsls r1, r6, 6 - mov r3, r10 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0xB] - ldr r4, [sp, 0x1C] - lsrs r3, r4, 21 - ldrb r1, [r2, 0xA] - movs r0, 0x7 - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0xA] - mov r1, sp - ldr r5, [sp, 0x4C] - movs r6, 0x1 - ands r5, r6 - lsls r2, r5, 1 - ldrb r0, [r1, 0xB] - mov r3, r8 - ands r3, r0 - orrs r3, r2 - mov r8, r3 - strb r3, [r1, 0xB] - mov r0, sp - ldr r4, [sp, 0x50] - ands r4, r6 - mov r5, r8 - ands r5, r7 - orrs r5, r4 - strb r5, [r0, 0xB] - bl RfuPrepareSend0x2f00 - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_815A61C - - thumb_func_start sub_815A950 -sub_815A950: @ 815A950 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r0, [sp, 0x1C] - mov r12, r0 - ldr r1, [sp, 0x20] - mov r8, r1 - ldr r0, [sp, 0x24] - mov r9, r0 - adds r2, r7, 0 - adds r2, 0x14 - ldr r4, _0815A98C @ =gRecvCmds - ldrh r0, [r4] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815A988 - adds r3, r4, 0x2 - ldrb r0, [r4, 0x2] - cmp r0, 0x2 - beq _0815A990 -_0815A988: - movs r0, 0 - b _0815AACA - .align 2, 0 -_0815A98C: .4byte gRecvCmds -_0815A990: - ldrb r0, [r3, 0x1] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0xB] - ldrb r0, [r3, 0x1] - lsrs r0, 4 - strb r0, [r2, 0xC] - ldrb r0, [r3, 0x2] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0xD] - ldrb r0, [r3, 0x2] - lsrs r0, 4 - strb r0, [r2, 0xE] - ldrb r0, [r3, 0x3] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0xF] - ldrb r0, [r3, 0x3] - lsrs r0, 4 - strb r0, [r2, 0x10] - ldrb r0, [r3, 0x4] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0x11] - ldrb r0, [r3, 0x4] - lsrs r0, 4 - strb r0, [r2, 0x12] - ldrb r0, [r3, 0x5] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0x13] - ldrb r0, [r3, 0x5] - lsrs r0, 4 - strb r0, [r2, 0x14] - ldrb r0, [r3, 0x1] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0x15] - ldrb r0, [r3, 0x6] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r7, 0x14] - ldrb r0, [r3, 0x6] - lsls r0, 28 - lsrs r0, 30 - strb r0, [r2, 0x1] - ldrb r0, [r3, 0x6] - lsls r0, 26 - lsrs r0, 30 - strb r0, [r2, 0x2] - ldrb r0, [r3, 0x6] - lsrs r0, 6 - strb r0, [r2, 0x3] - ldrb r0, [r3, 0x7] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r2, 0x4] - ldrb r0, [r3, 0x7] - lsls r0, 28 - lsrs r0, 30 - strb r0, [r2, 0x5] - ldrb r0, [r3, 0x7] - lsls r0, 26 - lsrs r0, 30 - strb r0, [r2, 0x6] - ldrb r0, [r3, 0x7] - lsrs r0, 6 - strb r0, [r2, 0x7] - ldrb r0, [r3, 0x8] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r2, 0x8] - ldrb r0, [r3, 0x8] - lsls r0, 28 - lsrs r0, 30 - strb r0, [r2, 0x9] - ldrb r0, [r3, 0x6] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r2, 0xA] - ldrb r0, [r3, 0x8] - lsls r0, 26 - lsrs r0, 30 - strb r0, [r5] - ldrb r0, [r3, 0x9] - lsls r0, 25 - lsrs r0, 31 - strb r0, [r5, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 29 - lsrs r0, 31 - strb r0, [r5, 0x8] - ldrb r0, [r3, 0x8] - lsrs r0, 6 - strb r0, [r6] - ldrb r0, [r3, 0x9] - lsrs r0, 7 - strb r0, [r6, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 28 - lsrs r0, 31 - strb r0, [r6, 0x8] - ldrb r0, [r3, 0x9] - lsls r0, 30 - lsrs r0, 30 - mov r1, r12 - strb r0, [r1] - ldrb r0, [r3, 0xA] - lsls r0, 31 - lsrs r0, 31 - strb r0, [r1, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 27 - lsrs r0, 31 - strb r0, [r1, 0x8] - ldrb r0, [r3, 0x9] - lsls r0, 28 - lsrs r0, 30 - mov r1, r8 - strb r0, [r1] - ldrb r0, [r3, 0xA] - lsls r0, 30 - lsrs r0, 31 - strb r0, [r1, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 26 - lsrs r0, 31 - strb r0, [r1, 0x8] - ldrb r0, [r3, 0x9] - lsls r0, 26 - lsrs r0, 30 - mov r1, r9 - strb r0, [r1] - ldrb r0, [r3, 0xA] - lsls r0, 29 - lsrs r0, 31 - strb r0, [r1, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 25 - lsrs r0, 31 - strb r0, [r1, 0x8] - ldrb r0, [r3, 0xA] - lsrs r0, 3 - ldr r1, [sp, 0x28] - strb r0, [r1] - ldrb r0, [r3, 0xB] - lsls r0, 30 - lsrs r0, 31 - ldr r1, [sp, 0x2C] - str r0, [r1] - ldrb r0, [r3, 0xB] - lsls r0, 31 - lsrs r0, 31 - ldr r1, [sp, 0x30] - str r0, [r1] - movs r0, 0x1 -_0815AACA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_815A950 - - thumb_func_start sub_815AAD8 -sub_815AAD8: @ 815AAD8 - push {lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0815AB00 @ =0xffffff00 - ldr r1, [sp] - ands r1, r3 - movs r2, 0x3 - orrs r1, r2 - str r1, [sp] - ldr r1, [sp, 0x4] - ands r1, r3 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl RfuPrepareSend0x2f00 - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0815AB00: .4byte 0xffffff00 - thumb_func_end sub_815AAD8 - - thumb_func_start sub_815AB04 -sub_815AB04: @ 815AB04 - push {r4,lr} - adds r2, r0, 0 - adds r4, r1, 0 - ldr r3, _0815AB2C @ =gRecvCmds - ldrh r0, [r3] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815AB28 - lsls r0, r2, 4 - adds r1, r3, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x3 - beq _0815AB30 -_0815AB28: - movs r0, 0 - b _0815AB36 - .align 2, 0 -_0815AB2C: .4byte gRecvCmds -_0815AB30: - ldrb r0, [r1, 0x4] - strb r0, [r4] - movs r0, 0x1 -_0815AB36: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_815AB04 - - thumb_func_start sub_815AB3C -sub_815AB3C: @ 815AB3C - push {lr} - sub sp, 0x8 - ldr r2, _0815AB5C @ =0xffffff00 - ldr r1, [sp] - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - str r1, [sp] - str r0, [sp, 0x4] - mov r0, sp - bl RfuPrepareSend0x2f00 - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0815AB5C: .4byte 0xffffff00 - thumb_func_end sub_815AB3C - - thumb_func_start sub_815AB60 -sub_815AB60: @ 815AB60 - push {lr} - adds r2, r0, 0 - ldr r3, _0815AB88 @ =gRecvCmds - ldrh r0, [r3] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815AB82 - lsls r0, r2, 4 - adds r1, r3, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x4 - beq _0815AB8C -_0815AB82: - movs r0, 0 - b _0815AB8E - .align 2, 0 -_0815AB88: .4byte gRecvCmds -_0815AB8C: - ldr r0, [r1, 0x4] -_0815AB8E: - pop {r1} - bx r1 - thumb_func_end sub_815AB60 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h index 47cece996..26aa51023 100644 --- a/include/dodrio_berry_picking.h +++ b/include/dodrio_berry_picking.h @@ -1,6 +1,106 @@ #ifndef GUARD_DODRIO_BERRY_PICKING_H #define GUARD_DODRIO_BERRY_PICKING_H +struct DodrioSubstruct_0160 +{ + /*0x0000 : 0x3000*/ u16 ALIGNED(4) tilemapBuffers[3][BG_SCREEN_SIZE]; + /*0x3000 : 0x3160*/ bool32 finished; + /*0x3004 : 0x3164*/ u8 ALIGNED(4) unk3004; + /*0x3008 : 0x3168*/ u8 ALIGNED(4) unk3008[10]; + /*0x3014 : 0x3174*/ u8 ALIGNED(4) state; + /*0x3018 : 0x3178*/ u8 ALIGNED(4) unk3018; + /*0x301C : 0x317C*/ u16 ALIGNED(4) unk301C; + /*0x3020 : 0x3180*/ u8 ALIGNED(4) unk3020; + /*0x3024 : 0x3184*/ u8 ALIGNED(4) unk3024; + /*0x3024 : 0x3184*/ void (*unk3028)(void); +}; // size = 0x302C + +struct DodrioSubstruct_318C +{ + bool8 isShiny; +}; + +struct DodrioSubstruct_31A0_14 +{ + u8 unk0[11]; + u8 unkB[11]; +}; + +struct DodrioSubstruct_31A0_2C +{ + u8 unk0; + u8 ALIGNED(4) unk4; + u8 ALIGNED(4) unk8; +}; + +struct DodrioSubstruct_31A0 +{ + u8 name[0x10]; + u32 unk10; + struct DodrioSubstruct_31A0_14 unk14; + struct DodrioSubstruct_31A0_2C unk2C; + u8 filler_35[4]; +}; // size = 0x3C + +struct DodrioSubstruct_3308 +{ + u8 unk0; + u32 unk4; +}; + void StartDodrioBerryPicking(u16 species, MainCallback callback); +u32 sub_815A950(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 *arg6, u32 *arg7, u32 *arg8); +u32 sub_815AB04(u32 arg0, u8 *arg1); +bool32 sub_815AB60(u32 a0); +void sub_815A61C(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 arg6, u32 arg7, u32 arg8); +void sub_815A5BC(s32 a0); +void sub_815AAD8(u8 a0); +void sub_815AB3C(u32 a0); +u8 sub_815A5E8(s32 a0); +u32 IncrementWithLimit(u32, u32); +void sub_8153A9C(void); +void sub_8153AFC(struct DodrioSubstruct_318C * unk318C, u8 a1, u8 a2, u8 a3); +void sub_8153BC0(u8 a0); +void sub_8153BF8(u8 a0); +void sub_8153D08(u8 playerCount); +u8 sub_8155E8C(void); +u8 sub_81533B4(void); +void sub_8153DA8(u8 a0, u8 a1); +void sub_8153D80(bool8 a0, u8 a1); +void sub_8153FC8(u8 a0); +void sub_8153DD8(void); +void sub_8153E28(void); +void sub_8153ED8(void); +bool32 sub_8153F1C(void); +void sub_81540DC(bool8 a0); +void sub_8154128(void); +void sub_815417C(void); +void sub_8154274(void); +void sub_81542EC(u8 a0, u8 a1); +void sub_8154370(u8 a0, u8 a1); +void sub_8154398(u16 a0, u8 a1); +void sub_8154438(void); +void sub_81544F0(void); +void sub_8154540(void); +void sub_8154578(void); +void sub_81545BC(bool8 a0); +void sub_81546C0(void); +void sub_8154730(void); +void sub_8154968(struct DodrioSubstruct_0160 * unk0160); +void sub_81549D4(u8 a0); +u8 *sub_81533C4(u8 id); +u8 sub_81537AC(u8 id); +void sub_81536A0(struct DodrioSubstruct_3308 *dst, u8 id); +u32 sub_81534AC(void); +u32 Min(u32 x, u32 y); +u16 sub_8153404(u8 arg0, u8 arg1); +u32 sub_81534F0(u8 arg0); +u32 sub_81535B0(void); +u16 sub_8153390(void); +u8 sub_815372C(void); +bool32 sub_8155E68(void); +void ShowDodrioBerryPickingRecords(void); +void IsDodrioInParty(void); + #endif //GUARD_DODRIO_BERRY_PICKING_H diff --git a/include/gba/macro.h b/include/gba/macro.h index a3e870210..6cf2e1651 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -105,20 +105,21 @@ } \ } -#define DmaClearLarge(dmaNum, dest, size, block, bit) \ -{ \ - u32 _size = size; \ - while (1) \ - { \ - DmaFill##bit(dmaNum, 0, dest, (block)); \ - dest += (block); \ - _size -= (block); \ - if (_size <= (block)) \ - { \ - DmaFill##bit(dmaNum, 0, dest, _size); \ - break; \ - } \ - } \ +#define DmaClearLarge(dmaNum, dest, size, block, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, _size); \ + break; \ + } \ + } \ } #define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ diff --git a/include/strings.h b/include/strings.h index 36c171363..f2207e7a7 100644 --- a/include/strings.h +++ b/include/strings.h @@ -114,7 +114,7 @@ extern const u8 gText_TurnedOverItemsWorthYen[]; extern const u8 gPokedudeText_TMTypes[]; extern const u8 gPokedudeText_ReadTMDescription[]; extern const u8 gFameCheckerText_Cancel[]; -extern const u8 gFameCheckerText_ListMenuCursor[]; +extern const u8 gText_SelectorArrow2[]; extern const u8 gFameCheckerText_FameCheckerWillBeClosed[]; extern const u8 gFameCheckerText_ClearTextbox[]; extern const u8 gFameCheckerText_MainScreenUI[]; // "{DPAD_ANY}PICK {DPAD_UPDOWN}SELECT {A_BUTTON}OK$" diff --git a/ld_script.txt b/ld_script.txt index d8d8db1f9..858627a34 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -286,11 +286,11 @@ SECTIONS { src/braille_text.o(.text); src/text_window.o(.text); src/quest_log_player.o(.text); - asm/dodrio_berry_picking.o(.text); + src/dodrio_berry_picking.o(.text); + src/dodrio_berry_picking_2.o(.text); src/battle_controller_pokedude.o(.text); src/quest_log_objects.o(.text); - src/dodrio_berry_picking_2.o(.text); - asm/dodrio_berry_picking_2.o(.text); + src/dodrio_berry_picking_3.o(.text); src/teachy_tv.o(.text); src/ereader_helpers.o(.text); src/digit_obj_util.o(.text); @@ -579,6 +579,7 @@ SECTIONS { src/text_window_graphics.o(.rodata); src/quest_log_player.o(.rodata); src/dodrio_berry_picking.o(.rodata); + src/dodrio_berry_picking_2.o(.rodata); src/battle_controller_pokedude.o(.rodata); src/teachy_tv.o(.rodata); src/digit_obj_util.o(.rodata); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 6e1d65010..a0b2c03a3 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -748,7 +748,7 @@ static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx) } else { - BerryPouchPrint(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx); + BerryPouchPrint(0, 2, gText_SelectorArrow2, 1, y, 0, 0, 0, colorIdx); } } diff --git a/src/data/dodrio_berry_picking.h b/src/data/dodrio_berry_picking.h new file mode 100644 index 000000000..e71ce13cf --- /dev/null +++ b/src/data/dodrio_berry_picking.h @@ -0,0 +1,247 @@ +#ifndef GUARD_DATA_DODRIO_BERRY_PICKING_H +#define GUARD_DATA_DODRIO_BERRY_PICKING_H + +static const struct BgTemplate sUnknown_847565C[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 12, + .screenSize = 1, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 14, + .screenSize = 1, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, +}; + +// Unknown unreferenced data, feel free to remove. +static const u32 sUnused[] = {255, 0}; + +static const struct WindowTemplate sUnknown_8475674[] = +{ + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 28, + .height = 3, + .paletteNum = 13, + .baseBlock = 0x13, + }, + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 6, + .width = 28, + .height = 13, + .paletteNum = 13, + .baseBlock = 0x67, + } +}; + +static const struct WindowTemplate sUnknown_8475684 = +{ + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 6, + .width = 28, + .height = 7, + .paletteNum = 13, + .baseBlock = 0x67, +}; + +static const struct WindowTemplate sUnknown_847568C[] = +{ + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 8, + .width = 19, + .height = 3, + .paletteNum = 13, + .baseBlock = 0x13, + }, + { + .bg = 0, + .tilemapLeft = 22, + .tilemapTop = 7, + .width = 6, + .height = 4, + .paletteNum = 13, + .baseBlock = 0x4C, + } +}; + +static const struct WindowTemplate sUnknown_847569C = +{ + .bg = 0, + .tilemapLeft = 4, + .tilemapTop = 6, + .width = 22, + .height = 5, + .paletteNum = 13, + .baseBlock = 0x13, +}; + +static const struct WindowTemplate sUnknown_84756A4 = +{ + .bg = 0, + .tilemapLeft = 5, + .tilemapTop = 8, + .width = 19, + .height = 3, + .paletteNum = 13, + .baseBlock = 0x13, +}; + +static const u8 sUnknown_8471F50[5][5][11] = +{ + { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0}, + {0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 0}, + {0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0}, + {0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0}, + {0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0}, + {0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0}, + {0, 7, 8, 1, 2, 3, 4, 5, 6, 7, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, + {2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2}, + {4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4}, + {6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6}, + {8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + }, +}; + +static const u8 sUnknown_8472063[5][5][3] = +{ + { + {4, 5, 6}, + }, + { + {3, 4, 5}, + {5, 6, 3}, + }, + { + {4, 5, 6}, + {6, 7, 2}, + {2, 3, 4}, + }, + { + {3, 4, 5}, + {5, 6, 7}, + {7, 8, 1}, + {1, 2, 3}, + }, + { + {4, 5, 6}, + {6, 7, 8}, + {8, 9, 0}, + {0, 1, 2}, + {2, 3, 4}, + }, +}; + +static const u8 sUnknown_84720AE[5][5][3] = +{ + { + {1, 0, 1}, + }, + { + {1, 0, 1}, + {0, 1, 0}, + }, + { + {2, 0, 1}, + {0, 1, 2}, + {1, 2, 0}, + }, + { + {3, 0, 1}, + {0, 1, 2}, + {1, 2, 3}, + {2, 3, 0}, + }, + { + {4, 0, 1}, + {0, 1, 2}, + {1, 2, 3}, + {2, 3, 4}, + {3, 4, 0}, + }, +}; + +ALIGNED(4) +static const u8 sUnknown_84720FC[5][11] = +{ + {9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9}, + {9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9}, + {9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9}, + {9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9}, + {3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3}, +}; + +static const u8 sUnknown_8472133[5][5] = +{ + {5}, + {4, 6}, + {3, 5, 7}, + {2, 4, 6, 8}, + {1, 3, 5, 6, 9}, +}; + +static const u16 sDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal", + "graphics/link_games/dodrioberry_bg2.gbapal"); +static const u16 sDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal"); +static const u16 sDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal"); +static const u16 sDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal"); +static const u16 sDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal"); +static const u32 sDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz"); +static const u16 sDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal"); +static const u32 sDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz"); +static const u32 sDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz"); +static const u32 sDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz"); +static const u32 sDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz"); +static const u32 sDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz"); +static const u32 sDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz"); +static const u32 sDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz"); +static const u32 sDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz"); + +#endif //GUARD_DATA_DODRIO_BERRY_PICKING_H diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 36dc3fdd2..ea6d46df2 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -1,870 +1,2436 @@ #include "global.h" -#include "bg.h" +#include "gflib.h" +#include "dodrio_berry_picking.h" +#include "event_data.h" +#include "item.h" +#include "link.h" +#include "link_rfu.h" +#include "m4a.h" +#include "minigame_countdown.h" +#include "random.h" +#include "script.h" #include "strings.h" -#include "window.h" - -/*static*/ void sub_8150C78(void); -/*static*/ void sub_8150CBC(void); -/*static*/ void sub_8150CF4(void); -/*static*/ void sub_8150D7C(void); -/*static*/ void sub_8150DA4(void); -/*static*/ void sub_8150FDC(void); -/*static*/ void sub_8151198(void); -/*static*/ void sub_81512B4(void); -/*static*/ void sub_8151488(void); -/*static*/ void sub_81514F0(void); -/*static*/ void sub_815159C(void); -/*static*/ void sub_8150F40(void); -/*static*/ void sub_8150E68(void); -/*static*/ void sub_815109C(void); -/*static*/ void sub_8150FC4(void); -/*static*/ void nullsub_97(struct Sprite *sprite); -/*static*/ void sub_81543E8(struct Sprite *sprite); -/*static*/ void sub_8154A2C(void); -/*static*/ void sub_8154B34(void); -/*static*/ void sub_8154F80(void); -/*static*/ void sub_81556E0(void); -/*static*/ void sub_8155A78(void); -/*static*/ void sub_8155B4C(void); -/*static*/ void sub_8155C2C(void); -/*static*/ void sub_8155C80(void); -/*static*/ void unused_0(void); -/*static*/ void nullsub_98(void); +#include "task.h" +#include "text_window.h" +#include "constants/songs.h" +#include "constants/fanfares.h" +#include "constants/items.h" +#include "constants/species.h" + +struct DodrioStruct +{ + /*0x0000*/ void (*savedCallback)(void); + /*0x0004*/ u8 ALIGNED(4) unk04; + /*0x0008*/ u8 ALIGNED(4) unk08; + /*0x000C*/ u8 ALIGNED(4) unk0C; + /*0x0010*/ u8 ALIGNED(4) unk10; + /*0x0014*/ u8 ALIGNED(4) unk14; + /*0x0018*/ u8 ALIGNED(4) unk18; + /*0x001C*/ u8 ALIGNED(4) unk1C; + /*0x0020*/ u8 ALIGNED(4) unk20; + /*0x0024*/ u8 ALIGNED(4) unk24; + /*0x0028*/ u8 ALIGNED(4) multiplayerId; + /*0x0030*/ u8 ALIGNED(8) unk30; + /*0x0034*/ u8 ALIGNED(4) unk34[5]; + /*0x003C*/ u8 ALIGNED(4) unk3C; + /*0x0040*/ u8 ALIGNED(4) unk40; + /*0x0044*/ u8 ALIGNED(4) unk44; + /*0x0048*/ u8 ALIGNED(4) unk48; + /*0x004A*/ u16 unk4A[5][6]; + /*0x0086*/ u16 unk86[5]; + /*0x0090*/ u8 ALIGNED(4) unk90[5]; + /*0x0098*/ u8 ALIGNED(4) unk98[4]; + /*0x009C*/ u8 ALIGNED(4) unk9C[11]; + /*0x00A8*/ u8 ALIGNED(4) unkA8[5]; + /*0x00B0*/ u8 ALIGNED(4) unkB0[5]; + /*0x00B8*/ u8 ALIGNED(4) unkB8[11]; + /*0x00C4*/ u8 ALIGNED(4) unkC4[11]; + /*0x00D0*/ u8 ALIGNED(4) unkD0[11]; + /*0x00DC*/ u8 ALIGNED(4) unkDC[11]; + /*0x00E8*/ u8 ALIGNED(4) unkE8[11]; + /*0x00F4*/ u8 ALIGNED(4) unkF4[11][2]; + /*0x010C*/ u8 ALIGNED(4) unk10C[5]; + /*0x0112*/ u16 unk112; + /*0x0114*/ u16 unk114; + /*0x0118*/ u32 unk118; + /*0x011C*/ u32 unk11C; + /*0x0120*/ u32 unk120; + /*0x0124*/ u8 ALIGNED(4) unk124; + /*0x0128*/ u8 ALIGNED(4) unk128; + /*0x012C*/ u32 unk12C; + /*0x0130*/ u32 unk130[5]; + /*0x0144*/ u8 ALIGNED(4) unk144; + /*0x0148*/ u8 ALIGNED(4) unk148[11]; + /*0x0154*/ u8 ALIGNED(4) unk154; + /*0x0158*/ u8 ALIGNED(4) unk158[5]; + /*0x0160*/ struct DodrioSubstruct_0160 unk160; + /*0x318C*/ struct DodrioSubstruct_318C unk318C[5]; + /*0x31A0*/ struct DodrioSubstruct_31A0 unk31A0[5]; + /*0x32CC*/ struct DodrioSubstruct_31A0 unk32CC; + /*0x3308*/ struct DodrioSubstruct_3308 unk3308[5]; +}; // size = 0x3330 + +static EWRAM_DATA struct DodrioStruct * gUnknown_203F3E0 = NULL; + +static bool32 gUnknown_3002044; + +static void sub_81508D8(void); +static void sub_81508EC(struct DodrioStruct * dodrio); +static void sub_8150A84(u8 taskId); +static void sub_8150C78(void); +static void sub_8150CBC(void); +static void sub_8150CF4(void); +static void sub_8150D7C(void); +static void sub_8150DA4(void); +static void sub_8150E68(void); +static void sub_8150F40(void); +static void sub_8150FC4(void); +static void sub_8150FDC(void); +static void sub_815109C(void); +static void sub_8151198(void); +static void sub_81512B4(void); +static void sub_8151488(void); +static void sub_81514F0(void); +static void sub_815159C(void); +static void sub_81516DC(u8 taskId); +static void sub_8151750(u8 taskId); +static void sub_8151B54(void); +static void sub_8151BA0(void); +static void sub_8151C5C(void); +static void sub_8151D28(void); +static void sub_8151D98(void); +static void sub_8151E94(void); +static void sub_815201C(void); +static void sub_8152034(void); +static void sub_8152048(struct DodrioSubstruct_318C * dodrioMon, struct Pokemon * partyMon); +static void sub_815205C(TaskFunc func, u8 priority); +static void sub_815206C(TaskFunc func); +static void sub_8152090(u8 a0); +static bool32 sub_81520B4(void); +static void sub_8152110(void); +static bool32 sub_8152484(u8 a0, u8 a1, u8 a2); +static void sub_815256C(void); +static void sub_815293C(void); +static void sub_8152970(void); +static bool32 sub_8152A00(void); +static void sub_8152A70(void); +static void sub_81529A4(u8 a0, u8 *a1, u8 *a2); +static bool32 sub_8152A98(void); +static bool32 sub_8152AD8(void); +static void sub_8152B64(u8 a0); +static u8 sub_8152BD4(u8 a0); +static u8 sub_8152BF8(u8 a0, u8 a1); +static u8 sub_8152CB8(u8 arg0, u8 arg1); +static void sub_8152D34(u8 a0, u8 a1, u8 a2); +static void sub_8152F94(bool32 a0); +static void sub_8153004(void); +static void sub_8153048(void); +static void sub_8153150(void); +static void sub_81531FC(void); +static u8 sub_815327C(u8); +static void sub_81532B8(void); +static void sub_815336C(void); +static u32 sub_8153424(u8 mpId); +static void Task_ShowDodrioBerryPickingRecords(u8 taskId); +static void sub_81538D0(u8 windowId); // const rom data -// Large chunk of data -/*static*/ const struct BgTemplate sUnknown_847565C_Unref_Dupe[] = -{ - { - .bg = 0, - .charBaseIndex = 0, - .mapBaseIndex = 30, - .screenSize = 0, - .paletteMode = 0, - .priority = 0, - .baseTile = 0 - }, - { - .bg = 1, - .charBaseIndex = 2, - .mapBaseIndex = 12, - .screenSize = 1, - .paletteMode = 0, - .priority = 1, - .baseTile = 0 - }, - { - .bg = 2, - .charBaseIndex = 2, - .mapBaseIndex = 14, - .screenSize = 1, - .paletteMode = 0, - .priority = 1, - .baseTile = 0 - }, - { - .bg = 3, - .charBaseIndex = 3, - .mapBaseIndex = 31, - .screenSize = 0, - .paletteMode = 0, - .priority = 2, - .baseTile = 0 - }, +// Assets in this header are duplicated +#include "data/dodrio_berry_picking.h" + +static const u8 sUnknown_847553C[][3] = +{ + {40, 24, 13}, + {32, 19, 10}, + {22, 13, 7}, +}; + +ALIGNED(4) +static const u8 sUnknown_8475548[] = {8, 5, 8, 11, 15}; + +ALIGNED(4) +static const u8 sUnknown_8475550[] = {5, 10, 20, 30, 50, 70, 100}; + +ALIGNED(4) +static const u8 sUnknown_8475558[][10] = +{ + {15, 16, 17, 18, 19, 19, 18, 17, 16, 15}, + {20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, + {30, 31, 32, 33, 34, 34, 33, 32, 31, 30}, +}; + +static void (*const sUnknown_8475578[])(void) = +{ + sub_8150C78, + sub_8150CBC, + sub_8150CF4, + sub_8150D7C, + sub_8150DA4, + sub_8150FDC, + sub_8151198, + sub_81512B4, + sub_8151488, + sub_81514F0, + sub_815159C, + sub_8150F40 }; -// Unknown unreferenced data, feel free to remove. -/*static*/ const u32 sUnused_Unref_Dupe[] = {255, 0}; +static void (*const sUnknown_84755A8[])(void) = +{ + sub_8150C78, + sub_8150CBC, + sub_8150CF4, + sub_8150D7C, + sub_8150E68, + sub_815109C, + sub_8151198, + sub_81512B4, + sub_8151488, + sub_81514F0, + sub_815159C, + sub_8150FC4 +}; -/*static*/ const struct WindowTemplate sUnknown_8475674_Unref_Dupe[] = +void StartDodrioBerryPicking(u16 a0, MainCallback callback) { + gUnknown_3002044 = FALSE; + + if (gReceivedRemoteLinkPlayers && (gUnknown_203F3E0 = AllocZeroed(sizeof(*gUnknown_203F3E0))) != NULL) { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 1, - .width = 28, - .height = 3, - .paletteNum = 13, - .baseBlock = 0x13, - }, + sub_81508D8(); + sub_81508EC(gUnknown_203F3E0); + gUnknown_203F3E0->savedCallback = callback; + gUnknown_203F3E0->multiplayerId = GetMultiplayerId(); + gUnknown_203F3E0->unk32CC = gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId]; + sub_8152048(&gUnknown_203F3E0->unk318C[gUnknown_203F3E0->multiplayerId], &gPlayerParty[a0]); + CreateTask(sub_8150A84, 1); + SetMainCallback2(sub_815201C); + sub_8153150(); + sub_81529A4(gUnknown_203F3E0->unk24, &gUnknown_203F3E0->unk44, &gUnknown_203F3E0->unk48); + StopMapMusic(); + PlayNewMapMusic(MUS_KINOMIKUI); + } + else { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 6, - .width = 28, - .height = 13, - .paletteNum = 13, - .baseBlock = 0x67, + SetMainCallback2(callback); + return; } -}; +} -/*static*/ const struct WindowTemplate sUnknown_8475684_Unref_Dupe = +static void sub_81508D8(void) { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 6, - .width = 28, - .height = 7, - .paletteNum = 13, - .baseBlock = 0x67, -}; + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); +} -/*static*/ const struct WindowTemplate sUnknown_847568C_Unref_Dupe[] = +static void sub_81508EC(struct DodrioStruct * data) { + u8 i; + + data->unk0C = 0; + data->unk10 = 0; + data->unk14 = 0; + data->unk18 = 0; + data->unk1C = 0; + data->unk11C = 0; + data->unk120 = 0; + data->unk30 = 0; + data->unk40 = 0; + data->unk3C = 0; + data->unk12C = 0; + + for (i = 0; i < 4; i++) { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 8, - .width = 19, - .height = 3, - .paletteNum = 13, - .baseBlock = 0x13, - }, + data->unk98[i] = 0; + } + + for (i = 0; i < 5; i++) { - .bg = 0, - .tilemapLeft = 22, - .tilemapTop = 7, - .width = 6, - .height = 4, - .paletteNum = 13, - .baseBlock = 0x4C, + data->unkA8[i] = 0; + data->unkB0[i] = 0; + data->unk4A[i][0] = 0; + data->unk4A[i][1] = 0; + data->unk4A[i][2] = 0; + data->unk4A[i][3] = 0; + data->unk4A[i][5] = 0; + data->unk10C[i] = 0; + data->unk130[i] = 0; } -}; -/*static*/ const struct WindowTemplate sUnknown_847569C_Unref_Dupe = + for (i = 0; i < 11; i++) + { + data->unkD0[i] = 0; + data->unkDC[i] = 0; + data->unkC4[i] = 0; + data->unkF4[i][0] = 0xFF; + data->unkF4[i][1] = 0xFF; + } + + data->unk20 = GetMultiplayerId() == 0 ? 1 : 0; + data->unk24 = GetLinkPlayerCount(); + data->unk34[0] = GetMultiplayerId(); + for (i = 1; i < data->unk24; i++) + { + data->unk34[i] = data->unk34[i - 1] + 1; + if (data->unk34[i] > data->unk24 - 1) + data->unk34[i] %= data->unk24; + } +} + +static void sub_8150A84(u8 taskId) { - .bg = 0, - .tilemapLeft = 4, - .tilemapTop = 6, - .width = 22, - .height = 5, - .paletteNum = 13, - .baseBlock = 0x13, -}; + u8 r4, r5; + + switch (gUnknown_203F3E0->unk0C) + { + case 0: + SetVBlankCallback(NULL); + sub_815205C(sub_8151750, 4); + gUnknown_203F3E0->unk0C++; + break; + case 1: + if (!FuncIsActiveTask(sub_8151750)) + { + sub_8154968(&gUnknown_203F3E0->unk160); + gUnknown_203F3E0->unk0C++; + } + break; + case 2: + if (!sub_8155E68()) + { + LinkRfu_SetRfuFuncToSend6600(); + gUnknown_203F3E0->unk0C++; + } + break; + case 3: + if (IsLinkTaskFinished()) + { + if (gReceivedRemoteLinkPlayers) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + gUnknown_203F3E0->unk0C++; + } + break; + case 4: + r5 = gUnknown_203F3E0->unk24; + sub_8153A9C(); + for (r4 = 0; r4 < r5; r4++) + { + sub_8153AFC(&gUnknown_203F3E0->unk318C[gUnknown_203F3E0->unk34[r4]], r4, gUnknown_203F3E0->unk34[r4], gUnknown_203F3E0->unk24); + } + sub_8153D80(FALSE, gUnknown_203F3E0->unk24); + gUnknown_203F3E0->unk0C++; + break; + case 5: + sub_8154128(); + sub_815417C(); + sub_8154438(); + sub_8153E28(); + gUnknown_203F3E0->unk0C++; + break; + case 6: + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + SetVBlankCallback(sub_8152034); + gUnknown_203F3E0->unk0C++; + break; + case 7: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk0C++; + } + break; + default: + DestroyTask(taskId); + sub_815206C(sub_81516DC); + break; + } +} -/*static*/ const struct WindowTemplate sUnknown_84756A4_Unref_Dupe = +static void sub_8150C08(u8 taskId) { - .bg = 0, - .tilemapLeft = 5, - .tilemapTop = 8, - .width = 19, - .height = 3, - .paletteNum = 13, - .baseBlock = 0x13, -}; + sub_8151B54(); + sUnknown_8475578[gUnknown_203F3E0->unk18](); + if (!gUnknown_3002044) + { + sub_815293C(); + } + sub_8151BA0(); +} -/*static*/ const u8 sUnknown_8471F50[5][5][11] = +static void sub_8150C40(u8 taskId) { + sub_8151C5C(); + sUnknown_84755A8[gUnknown_203F3E0->unk18](); + if (!gUnknown_3002044) { - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, - }, + sub_8152970(); + } + sub_8151D28(); +} + +static void sub_8150C78(void) +{ + switch (gUnknown_203F3E0->unk10) + { + case 0: + sub_8153BF8(1); + sub_81549D4(1); + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + sub_8152090(1); + break; + } +} + +static void sub_8150CBC(void) +{ + if (gUnknown_203F3E0->unk10 == 0) { - {0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0}, - {0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0}, - }, + sub_8152110(); + gUnknown_203F3E0->unk10++; + } + else { - {0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 0}, - {0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0}, - {0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0}, - }, + gUnknown_203F3E0->unk118 = 1; + sub_8152090(2); + } +} + +static void sub_8150CF4(void) +{ + switch (gUnknown_203F3E0->unk10) { - {0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0}, - {0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0}, - {0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0}, - {0, 7, 8, 1, 2, 3, 4, 5, 6, 7, 0}, - }, + case 0: + StartMinigameCountdown(7, 8, 120, 80, 0); + gUnknown_203F3E0->unk10++; + break; + case 1: + LinkRfu_SetRfuFuncToSend6600(); + gUnknown_203F3E0->unk10++; + break; + case 2: + if (IsLinkTaskFinished()) + { + gUnknown_203F3E0->unk10++; + } + break; + case 3: + if (!IsMinigameCountdownRunning()) + { + LinkRfu_SetRfuFuncToSend6600(); + gUnknown_203F3E0->unk10++; + } + break; + case 4: + if (IsLinkTaskFinished()) + { + sub_8152090(3); + } + break; + } +} + +static void sub_8150D7C(void) +{ + if (gUnknown_203F3E0->unk10 == 0) { - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, - {2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2}, - {4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4}, - {6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6}, - {8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - }, -}; + if (gUnknown_203F3E0->unk11C != 0) + { + sub_8152090(4); + } + } +} -/*static*/ const u8 sUnknown_8472063[5][5][3] = +static void sub_8150DA4(void) { + if (gUnknown_203F3E0->unk10 == 0) { - {4, 5, 6}, - }, + if (gUnknown_203F3E0->unk40 < 10) + { + if (gUnknown_203F3E0->unkA8[0] == 0) + { + if (JOY_NEW(DPAD_UP)) + { + if (gUnknown_203F3E0->unk31A0[0].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(2); + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (gUnknown_203F3E0->unk31A0[0].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(1); + } + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gUnknown_203F3E0->unk31A0[0].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(3); + } + } + else + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(0); + } + } + } + else + { + sub_8152090(11); + } + sub_815256C(); + sub_8151D98(); + } +} +static void sub_8150E68(void) +{ + if (gUnknown_203F3E0->unk40 < 10) { - {3, 4, 5}, - {5, 6, 3}, - }, + if (JOY_NEW(DPAD_UP)) + { + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 2; + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 1; + } + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 3; + } + } + else + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 0; + } + } + else { - {4, 5, 6}, - {6, 7, 2}, - {2, 3, 4}, - }, + sub_8152090(11); + } + sub_8151E94(); +} + +static void sub_8150F40(void) +{ + u8 i; + + sub_815256C(); + sub_8151D98(); + if (sub_8152A98() == 1) { - {3, 4, 5}, - {5, 6, 7}, - {7, 8, 1}, - {1, 2, 3}, - }, + sub_8153004(); + sub_8152090(5); + } + else { - {4, 5, 6}, - {6, 7, 8}, - {8, 9, 0}, - {0, 1, 2}, - {2, 3, 4}, - }, -}; + gUnknown_203F3E0->unk12C = 1; + for (i = 1; i < gUnknown_203F3E0->unk24; i++) + { + if (gUnknown_203F3E0->unk130[i] != 1) + { + gUnknown_203F3E0->unk12C = 0; + break; + } + } + } +} + +static void sub_8150FC4(void) +{ + sub_8151E94(); + if (sub_8152AD8() == 1) + sub_8152090(5); +} -/*static*/ const u8 sUnknown_84720AE[5][5][3] = +static void sub_8150FDC(void) { + u8 blockReceivedStatus; + u8 i; + switch (gUnknown_203F3E0->unk10) { - {1, 0, 1}, - }, + case 0: + SendBlock(0, gUnknown_203F3E0->unk4A, sizeof(gUnknown_203F3E0->unk4A)); + gUnknown_203F3E0->unk08 = 0; + gUnknown_203F3E0->unk10++; + break; + case 1: + if (IsLinkTaskFinished()) + { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) + { + gUnknown_203F3E0->unk14++; + gUnknown_203F3E0->unk10++; + } + break; + default: + if (WaitFanfare(TRUE)) + { + sub_8152090(6); + FadeOutAndPlayNewMapMusic(MUS_WIN_YASEI, 4); + } + break; + } +} + +static void sub_815109C(void) +{ + u8 i; + u8 blockReceivedStatus; + + switch (gUnknown_203F3E0->unk10) { + case 0: + SendBlock(0, gUnknown_203F3E0->unk4A[gUnknown_203F3E0->unk14], sizeof(gUnknown_203F3E0->unk4A)); + gUnknown_203F3E0->unk08 = 0; + gUnknown_203F3E0->unk10++; + break; + case 1: + if (IsLinkTaskFinished()) { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + memcpy(gUnknown_203F3E0->unk4A, gBlockRecvBuffer, sizeof(gUnknown_203F3E0->unk4A)); + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) { + gUnknown_203F3E0->unk14++; + gUnknown_203F3E0->unk10++; + } + break; + default: + if (WaitFanfare(TRUE)) { + gUnknown_203F3E0->unk114 = gUnknown_203F3E0->unk4A[gUnknown_203F3E0->multiplayerId][5]; + sub_8152090(6); + FadeOutAndPlayNewMapMusic(MUS_WIN_YASEI, 4); + } + break; + } +} + +static void sub_8151198(void) +{ + u8 sp00; + u8 i; + u8 blockReceivedStatus; + + switch (gUnknown_203F3E0->unk10) { - {1, 0, 1}, - {0, 1, 0}, - }, + case 0: + sub_81531FC(); + sub_81540DC(TRUE); + sub_81544F0(); + sub_81545BC(TRUE); + sub_81549D4(2); + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + { + sp00 = 1; + sub_81549D4(5); + sp00 = sub_8155E8C(); + SendBlock(0, &sp00, sizeof(sp00)); + gUnknown_203F3E0->unk10++; + } + break; + case 2: + if (IsLinkTaskFinished()) + { + gUnknown_203F3E0->unk10++; + gUnknown_203F3E0->unk08 = 0; + } + break; + case 3: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + *(gUnknown_203F3E0->unk10C + i) = *(u8 *)gBlockRecvBuffer[i]; + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) { + if (++gUnknown_203F3E0->unk14 >= 120) + { + sub_81549D4(6); + gUnknown_203F3E0->unk10++; + } + } + break; + default: + if (!sub_8155E68()) + { + sub_8152090(7); + } + break; + } +} + +static void sub_81512B4(void) +{ + u8 sp0; + u8 i; + u8 blockReceivedStatus; + + switch (gUnknown_203F3E0->unk10) { - {2, 0, 1}, - {0, 1, 2}, - {1, 2, 0}, - }, + case 0: + if (sub_81534AC() >= 3000) + { + sub_81549D4(4); + } + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + { + sub_81549D4(3); + gUnknown_203F3E0->unk10++; + } + break; + case 2: + sub_81546C0(); + sub_8153048(); + gUnknown_203F3E0->unk10++; + break; + case 3: + if ((sp0 = sub_8155E8C()) != 0) + { + gUnknown_203F3E0->unk10++; + } + break; + case 4: + if (!sub_8155E68()) + { + sub_81549D4(5); + sp0 = sub_8155E8C(); + SendBlock(0, &sp0, sizeof(sp0)); + gUnknown_203F3E0->unk10++; + } + break; + case 5: + if (IsLinkTaskFinished()) + { + gUnknown_203F3E0->unk10++; + gUnknown_203F3E0->unk08 = 0; + } + break; + case 6: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + *(gUnknown_203F3E0->unk10C + i) = *(u8 *)gBlockRecvBuffer[i]; + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) { + if (++gUnknown_203F3E0->unk14 >= 120) + { + sub_815336C(); + sub_81549D4(6); + gUnknown_203F3E0->unk10++; + } + } + else + { + sub_81532B8(); + } + break; + default: + if (!sub_8155E68()) + { + for (i = 0; i < gUnknown_203F3E0->unk24; i++) + { + if (gUnknown_203F3E0->unk10C[i] == 2) + { + sub_8152090(8); + return; + } + } + sub_8152090(10); + } + break; + } +} + +static void sub_8151488(void) +{ + switch (gUnknown_203F3E0->unk10) { - {3, 0, 1}, - {0, 1, 2}, - {1, 2, 3}, - {2, 3, 0}, - }, + case 0: + Link_TryStartSend5FFF(); + sub_81549D4(7); + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + if (sub_8155E8C() == 5) + { + gUnknown_203F3E0->unk10++; + } + break; + default: + if (!gReceivedRemoteLinkPlayers) + { + sub_8152090(9); + } + break; + } +} + +static void sub_81514F0(void) +{ + switch (gUnknown_203F3E0->unk10) { - {4, 0, 1}, - {0, 1, 2}, - {1, 2, 3}, - {2, 3, 4}, - {3, 4, 0}, - }, -}; + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gUnknown_203F3E0->unk10++; + break; + case 1: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + sub_8154274(); + sub_8153ED8(); + sub_8153D08(gUnknown_203F3E0->unk24); + sub_8154578(); + gUnknown_3002044 = TRUE; + sub_81549D4(8); + gUnknown_203F3E0->unk10++; + break; + default: + if (!sub_8155E68()) + { + SetMainCallback2(gUnknown_203F3E0->savedCallback); + DestroyTask(gUnknown_203F3E0->unk04); + Free(gUnknown_203F3E0); + FreeAllWindowBuffers(); + } + break; + } +} -ALIGNED(4) -/*static*/ const u8 sUnknown_84720FC[5][11] = +static void sub_815159C(void) { - {9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9}, - {9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9}, - {9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9}, - {9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9}, - {3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3}, -}; + switch (gUnknown_203F3E0->unk10) + { + case 0: + sub_81549D4(9); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gUnknown_203F3E0->unk10++; + break; + case 1: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + gUnknown_203F3E0->unk10++; + break; + case 3: + StopMapMusic(); + gUnknown_203F3E0->unk10++; + break; + case 4: + PlayNewMapMusic(MUS_KINOMIKUI); + sub_8154540(); + gUnknown_203F3E0->unk10++; + break; + case 5: + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gUnknown_203F3E0->unk10++; + break; + case 6: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk10++; + } + break; + default: + DestroyTask(gUnknown_203F3E0->unk04); + sub_815206C(sub_81516DC); + sub_8154730(); + sub_81508EC(gUnknown_203F3E0); + if (!gReceivedRemoteLinkPlayers) + { + gUnknown_203F3E0->unk24 = 1; + } + sub_8153150(); + sub_81545BC(FALSE); + break; + } +} -/*static*/ const u8 sUnknown_8472133[5][5] = +static void sub_81516DC(u8 taskId) { - {5}, - {4, 6}, - {3, 5, 7}, - {2, 4, 6, 8}, - {1, 3, 5, 6, 9}, -}; + switch (gUnknown_203F3E0->unk10) + { + case 0: + if (sub_81520B4() == 1) + { + gUnknown_203F3E0->unk10++; + } + break; + case 1: + sub_8153DD8(); + gUnknown_203F3E0->unk10++; + break; + case 2: + if (sub_8153F1C() == TRUE) + { + gUnknown_203F3E0->unk10++; + } + break; + default: + if (gUnknown_203F3E0->unk20 != 0) + { + sub_815206C(sub_8150C08); + } + else + { + sub_815206C(sub_8150C40); + } + DestroyTask(taskId); + break; + } +} -// Duplicate and unused gfx. Feel free to remove. -/*static*/ const u32 sDuplicateGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.gbapal", - "graphics/link_games/dodrioberry_bg2.gbapal", - "graphics/link_games/dodrioberry_pkmn.gbapal", - "graphics/link_games/dodrioberry_shiny.gbapal", - "graphics/link_games/dodrioberry_status.gbapal", - "graphics/link_games/dodrioberry_berrysprites.gbapal", - "graphics/link_games/dodrioberry_berrysprites.4bpp.lz", - "graphics/link_games/dodrioberry_platform.gbapal", - "graphics/link_games/dodrioberry_bg1.4bpp.lz", - "graphics/link_games/dodrioberry_bg2.4bpp.lz", - "graphics/link_games/dodrioberry_status.4bpp.lz", - "graphics/link_games/dodrioberry_platform.4bpp.lz", - "graphics/link_games/dodrioberry_pkmn.4bpp.lz", - "graphics/link_games/dodrioberry_bg1.bin.lz", - "graphics/link_games/dodrioberry_bg2right.bin.lz", - "graphics/link_games/dodrioberry_bg2left.bin.lz"); - -/*static*/ const u8 sUnknown_847553C[][3] = +static void sub_8151750(u8 taskId) { - {40, 24, 13}, - {32, 19, 10}, - {22, 13, 7}, -}; + s16 * data = gTasks[taskId].data; + u8 i; + u8 blockReceivedStatus; -ALIGNED(4) -/*static*/ const u8 sUnknown_8475548[] = {8, 5, 8, 11, 15}; + switch (data[0]) + { + case 0: + SendBlock(0, &gUnknown_203F3E0->unk318C[gUnknown_203F3E0->multiplayerId].isShiny, sizeof(gUnknown_203F3E0->unk318C[gUnknown_203F3E0->multiplayerId].isShiny)); + gUnknown_203F3E0->unk08 = 0; + data[0]++; + break; + case 1: + if (IsLinkTaskFinished()) + { + data[0]++; + } + break; + case 2: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + *(u8 *)&gUnknown_203F3E0->unk318C[i] = *(u8 *)gBlockRecvBuffer[i]; + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) + { + DestroyTask(taskId); + sub_81549D4(6); + gUnknown_203F3E0->unk10++; + } + break; + } +} -ALIGNED(4) -/*static*/ const u8 sUnknown_8475550[] = {5, 10, 20, 30, 50, 70, 100}; +static void sub_815184C(void) +{ + u8 i; + u8 r7 = gUnknown_203F3E0->unk24; -ALIGNED(4) -/*static*/ const u8 sUnknown_8475558[][10] = + gUnknown_203F3E0->unk31A0[0].unk10 = sub_815A950(0, &gUnknown_203F3E0->unk31A0[0], &gUnknown_203F3E0->unk31A0[0].unk2C, &gUnknown_203F3E0->unk31A0[1].unk2C, &gUnknown_203F3E0->unk31A0[2].unk2C, &gUnknown_203F3E0->unk31A0[3].unk2C, &gUnknown_203F3E0->unk31A0[4].unk2C, &gUnknown_203F3E0->unk40, &gUnknown_203F3E0->unk120, &gUnknown_203F3E0->unk12C); + gUnknown_203F3E0->unk128 = 1; + + for (i = 1; i < r7; i++) + { + if ( gUnknown_203F3E0->unkA8[i] == 0 + && sub_815AB04(i, &gUnknown_203F3E0->unk31A0[i].unk2C.unk0) == 0) + { + gUnknown_203F3E0->unk31A0[i].unk2C.unk0 = 0; + gUnknown_203F3E0->unk128 = 0; + } + } + if (++gUnknown_203F3E0->unk124 >= 60) + { + if (gUnknown_203F3E0->unk128 != 0) + { + sub_80FBA44(); + gUnknown_203F3E0->unk124 = 0; + } + else if (gUnknown_203F3E0->unk124 > 70) + { + sub_80FBA44(); + gUnknown_203F3E0->unk124 = 0; + } + } + + for (i = 0; i < r7; i++) + { + if ( gUnknown_203F3E0->unk31A0[i].unk2C.unk0 != 0 + && gUnknown_203F3E0->unkA8[i] == 0) + { + gUnknown_203F3E0->unkA8[i] = 1; + } + switch (gUnknown_203F3E0->unkA8[i]) + { + case 0: + default: + break; + case 1 ... 3: + if (++gUnknown_203F3E0->unkB0[i] >= 6) + { + gUnknown_203F3E0->unkB0[i] = 0; + gUnknown_203F3E0->unkA8[i] = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk0 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk8 = 0; + } + break; + case 4: + if (++gUnknown_203F3E0->unkB0[i] >= 40) + { + gUnknown_203F3E0->unkB0[i] = 0; + gUnknown_203F3E0->unkA8[i] = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk0 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk8 = 0; + } + break; + } + } +} + +static void sub_8151A5C(void) { - {15, 16, 17, 18, 19, 19, 18, 17, 16, 15}, - {20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, - {30, 31, 32, 33, 34, 34, 33, 32, 31, 30}, -}; + u8 i; + u8 r6 = gUnknown_203F3E0->unk24; + + gUnknown_203F3E0->unk31A0[0].unk10 = sub_815A950(0, &gUnknown_203F3E0->unk31A0[0], &gUnknown_203F3E0->unk31A0[0].unk2C, &gUnknown_203F3E0->unk31A0[1].unk2C, &gUnknown_203F3E0->unk31A0[2].unk2C, &gUnknown_203F3E0->unk31A0[3].unk2C, &gUnknown_203F3E0->unk31A0[4].unk2C, &gUnknown_203F3E0->unk40, &gUnknown_203F3E0->unk120, &gUnknown_203F3E0->unk12C); + gUnknown_203F3E0->unk128 = 1; -/*static*/ void (*const sUnknown_8475578[])(void) = + for (i = 1; i < r6; i++) + { + if (sub_815AB60(i) != 0) + { + gUnknown_203F3E0->unk130[i] = 1; + gUnknown_203F3E0->unk128 = 0; + } + } + if (++gUnknown_203F3E0->unk124 >= 60) + { + if (gUnknown_203F3E0->unk128 != 0) + { + sub_80FBA44(); + gUnknown_203F3E0->unk124 = 0; + } + else if (gUnknown_203F3E0->unk124 > 70) + { + sub_80FBA44(); + gUnknown_203F3E0->unk124 = 0; + } + } +} + +static void sub_8151B54(void) { - sub_8150C78, - sub_8150CBC, - sub_8150CF4, - sub_8150D7C, - sub_8150DA4, - sub_8150FDC, - sub_8151198, - sub_81512B4, - sub_8151488, - sub_81514F0, - sub_815159C, - sub_8150F40 -}; + switch (gUnknown_203F3E0->unk18) + { + case 3: + if (sub_8152A00() == TRUE) + { + sub_8152A70(); + gUnknown_203F3E0->unk11C = 1; + } + break; + case 4: + sub_815184C(); + break; + case 11: + sub_8151A5C(); + break; + } +} -/*static*/ void (*const sUnknown_84755A8[])(void) = +static void sub_8151BA0(void) { - sub_8150C78, - sub_8150CBC, - sub_8150CF4, - sub_8150D7C, - sub_8150E68, - sub_815109C, - sub_8151198, - sub_81512B4, - sub_8151488, - sub_81514F0, - sub_815159C, - sub_8150FC4 -}; + switch (gUnknown_203F3E0->unk18) + { + case 4: + sub_815A61C(&gUnknown_203F3E0->unk32CC, &gUnknown_203F3E0->unk31A0[0].unk2C, &gUnknown_203F3E0->unk31A0[1].unk2C, &gUnknown_203F3E0->unk31A0[2].unk2C, &gUnknown_203F3E0->unk31A0[3].unk2C, &gUnknown_203F3E0->unk31A0[4].unk2C, gUnknown_203F3E0->unk40, gUnknown_203F3E0->unk120, gUnknown_203F3E0->unk12C); + break; + case 11: + sub_815A61C(&gUnknown_203F3E0->unk32CC, &gUnknown_203F3E0->unk31A0[0].unk2C, &gUnknown_203F3E0->unk31A0[1].unk2C, &gUnknown_203F3E0->unk31A0[2].unk2C, &gUnknown_203F3E0->unk31A0[3].unk2C, &gUnknown_203F3E0->unk31A0[4].unk2C, gUnknown_203F3E0->unk40, gUnknown_203F3E0->unk120, gUnknown_203F3E0->unk12C); + break; + } +} -/*static*/ const s16 sUnknown_84755D8[] = {10, 30, 50, 50}; +static void sub_8151C5C(void) +{ + switch (gUnknown_203F3E0->unk18) + { + case 4: + sub_815A950(gUnknown_203F3E0->multiplayerId, &gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId], &gUnknown_203F3E0->unk31A0[0].unk2C, &gUnknown_203F3E0->unk31A0[1].unk2C, &gUnknown_203F3E0->unk31A0[2].unk2C, &gUnknown_203F3E0->unk31A0[3].unk2C, &gUnknown_203F3E0->unk31A0[4].unk2C, &gUnknown_203F3E0->unk40, &gUnknown_203F3E0->unk120, &gUnknown_203F3E0->unk12C); + break; + case 11: + sub_815A950(gUnknown_203F3E0->multiplayerId, &gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId], &gUnknown_203F3E0->unk31A0[0].unk2C, &gUnknown_203F3E0->unk31A0[1].unk2C, &gUnknown_203F3E0->unk31A0[2].unk2C, &gUnknown_203F3E0->unk31A0[3].unk2C, &gUnknown_203F3E0->unk31A0[4].unk2C, &gUnknown_203F3E0->unk40, &gUnknown_203F3E0->unk120, &gUnknown_203F3E0->unk12C); + break; + } +} -// Data related to printing saved results. -/*static*/ const struct WindowTemplate sUnknown_84755E0 = +static void sub_8151D28(void) { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 1, - .width = 28, - .height = 11, - .paletteNum = 15, - .baseBlock = 1, -}; + switch (gUnknown_203F3E0->unk18) + { + case 3: + sub_815A5BC(1); + gUnknown_203F3E0->unk11C = 1; + break; + case 4: + if (gUnknown_203F3E0->unk32CC.unk2C.unk0 != 0) + { + sub_815AAD8(gUnknown_203F3E0->unk32CC.unk2C.unk0); + } + break; + case 11: + if (gUnknown_203F3E0->unk120 == 0 && gUnknown_203F3E0->unk12C == 0) + { + sub_815AB3C(1); + } + break; + } +} -/*static*/ const u8 *const sUnknown_84755E8[] = {gText_BerryPickingRecords, gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers}; -/*static*/ const u8 sUnknown_84755F8[] = {4, 7, 4}; +static void sub_8151D98(void) +{ + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + if (!IsSEPlaying()) + { + gUnknown_203F3E0->unk144 = 0; + } + } + else if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk4 == 1) + { + if (gUnknown_203F3E0->unk144 == 0) + { + m4aSongNumStop(SE_SEIKAI); + PlaySE(SE_SEIKAI); + gUnknown_203F3E0->unk144 = 1; + } + } + else if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk8 == 1) + { + if (gUnknown_203F3E0->unk144 == 0 && !IsSEPlaying()) + { + PlaySE(SE_BOO); + sub_8153BC0(1); + gUnknown_203F3E0->unk144 = 1; + } + } -ALIGNED(4) -/*static*/ const u8 sUnknown_84755FC[][2] = {{24}, {40}, {56}}; -/*static*/ const u8 sUnknown_8475602[][2] = {{24}, {40}, {70}}; + if (gUnknown_203F3E0->unk154 == 0 && gUnknown_203F3E0->unk40 >= 10) + { + StopMapMusic(); + gUnknown_203F3E0->unk154 = 1; + } + else if (gUnknown_203F3E0->unk154 == 1) + { + PlayFanfareByFanfareNum(FANFARE_10); // MUS_ME_ZANNEN + gUnknown_203F3E0->unk154 = 2; + } +} -// Debug functions? -/*static*/ const u16 sUnknown_8475608[][4] = +static void sub_8151E94(void) { - {9999, 0, 90, 9999}, - {9999, 9999, 70, 9999}, - {9999, 0, 9999, 0}, - {9999, 9999, 60, 0}, - {9999, 9999, 9999, 0}, -}; + u8 r8 = gUnknown_203F3E0->unk44; + u8 r7 = gUnknown_203F3E0->unk48; + u8 r4; + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk4 != 1 && gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk8 != 1) + { + gUnknown_203F3E0->unk144 = 0; + } + } + else if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk4 == 1) + { + if (gUnknown_203F3E0->unk144 == 0) + { + m4aSongNumStop(SE_SEIKAI); + PlaySE(SE_SEIKAI); + gUnknown_203F3E0->unk144 = 1; + } + } + else if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk8 == 1) + { + if (gUnknown_203F3E0->unk144 == 0 && !IsSEPlaying()) + { + PlaySE(SE_BOO); + sub_8153BC0(1); + gUnknown_203F3E0->unk144 = 1; + } + } + for (r4 = r8; r4 < r7; r4++) + { + struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk14; + if (ptr->unkB[r4] >= 10) + { + if (gUnknown_203F3E0->unk148[r4] == 0) + { + PlaySE(SE_FUUSEN1 + ptr->unk0[r4]); + gUnknown_203F3E0->unk148[r4] = 1; + } + } + else + { + gUnknown_203F3E0->unk148[r4] = 0; + } + } + if (gUnknown_203F3E0->unk154 == 0 && gUnknown_203F3E0->unk40 >= 10) + { + StopMapMusic(); + gUnknown_203F3E0->unk154 = 1; + } + else if (gUnknown_203F3E0->unk154 == 1) + { + PlayFanfareByFanfareNum(FANFARE_10); // MUS_ME_ZANNEN + gUnknown_203F3E0->unk154 = 2; + } +} -/*static*/ const u8 sUnknown_8475630[] = _("あいうえおかき"); -/*static*/ const u8 sUnknown_8475638[] = _("ABCDEFG"); -/*static*/ const u8 sUnknown_8475640[] = _("0123456"); +static void sub_815201C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} -/*static*/ const u8 *const sUnknown_8475648[] = +static void sub_8152034(void) { - sUnknown_8475630, - sUnknown_8475630, - sUnknown_8475630, - sUnknown_8475638, - sUnknown_8475640 -}; + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} -// Large chunk of data -/*static*/ const struct BgTemplate sUnknown_847565C[] = -{ - { - .bg = 0, - .charBaseIndex = 0, - .mapBaseIndex = 30, - .screenSize = 0, - .paletteMode = 0, - .priority = 0, - .baseTile = 0 - }, - { - .bg = 1, - .charBaseIndex = 2, - .mapBaseIndex = 12, - .screenSize = 1, - .paletteMode = 0, - .priority = 1, - .baseTile = 0 - }, - { - .bg = 2, - .charBaseIndex = 2, - .mapBaseIndex = 14, - .screenSize = 1, - .paletteMode = 0, - .priority = 1, - .baseTile = 0 - }, - { - .bg = 3, - .charBaseIndex = 3, - .mapBaseIndex = 31, - .screenSize = 0, - .paletteMode = 0, - .priority = 2, - .baseTile = 0 - }, -}; +static void sub_8152048(struct DodrioSubstruct_318C * a0, struct Pokemon * a1) +{ + a0->isShiny = IsMonShiny(a1); +} -// Unknown unreferenced data, feel free to remove. -/*static*/ const u32 sUnused[] = {255, 0}; +static void sub_815205C(TaskFunc func, u8 priority) +{ + CreateTask(func, priority); +} + +static void sub_815206C(TaskFunc func) +{ + gUnknown_203F3E0->unk04 = CreateTask(func, 1); + gUnknown_203F3E0->unk10 = 0; + gUnknown_203F3E0->unk0C = 0; + gUnknown_203F3E0->unk14 = 0; +} + +static void sub_8152090(u8 a0) +{ + gUnknown_203F3E0->unk1C = gUnknown_203F3E0->unk18; + gUnknown_203F3E0->unk18 = a0; + gUnknown_203F3E0->unk10 = 0; + gUnknown_203F3E0->unk14 = 0; +} -/*static*/ const struct WindowTemplate sUnknown_8475674[] = +static bool32 sub_81520B4(void) { + u8 r2 = gUnknown_203F3E0->unk14 / 4; + gUnknown_203F3E0->unk14++; + if (r2 != 0 && gUnknown_203F3E0->unk14 % 4 == 0) { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 1, - .width = 28, - .height = 3, - .paletteNum = 13, - .baseBlock = 0x13, - }, + if (r2 < sUnknown_8475548[gUnknown_203F3E0->unk24 - 1]) + { + SetGpuReg(REG_OFFSET_BG1HOFS, (r2 * 8)); + SetGpuReg(REG_OFFSET_BG2HOFS, -(r2 * 8)); + return FALSE; + } + else + { + return TRUE; + } + } + else { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 6, - .width = 28, - .height = 13, - .paletteNum = 13, - .baseBlock = 0x67, + return FALSE; } -}; +} -/*static*/ const struct WindowTemplate sUnknown_8475684 = +static void sub_8152110(void) { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 6, - .width = 28, - .height = 7, - .paletteNum = 13, - .baseBlock = 0x67, -}; + u8 i; + u8 start = gUnknown_203F3E0->unk44; + u8 finish = gUnknown_203F3E0->unk48; -/*static*/ const struct WindowTemplate sUnknown_847568C[] = + for (i = start; i < finish; i++) + { + struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_203F3E0->unk32CC.unk14; + ptr->unkB[i] = (i % 2 == 0) ? 1 : 0; + ptr->unk0[i] = 0; + } +} + +static void sub_8152174(void) { + u8 sp0 = gUnknown_203F3E0->unk44; + u8 sp4 = gUnknown_203F3E0->unk48; + u8 sp8 = gUnknown_203F3E0->unk24; + u8 i, j, k, r5; + + if (gUnknown_203F3E0->unk40 >= 10) + return; + + for (i = 0; i < sp8; i++) { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 8, - .width = 19, - .height = 3, - .paletteNum = 13, - .baseBlock = 0x13, - }, + u8 *ptr = &gUnknown_203F3E0->unk31A0[i].unk2C.unk0; + if (*ptr != 0 && gUnknown_203F3E0->unkA8[i] == 1) + { + for (j = sp0; j < sp4; j++) + { + r5 = sUnknown_8471F50[0][0][j]; + if (gUnknown_203F3E0->unkF4[r5][0] == i || gUnknown_203F3E0->unkF4[r5][1] == i) + break; + if (sub_8152484(i, *ptr, r5) == TRUE) + { + for (k = 0; k < 2; k++) + { + if (gUnknown_203F3E0->unkF4[r5][k] == 0xFF) + { + gUnknown_203F3E0->unkF4[r5][k] = i; + gUnknown_203F3E0->unkA8[i] = 2; + gUnknown_203F3E0->unkC4[r5] = 1; + break; + } + } + break; + } + if (gUnknown_203F3E0->unk31A0[i].unk2C.unk8 == 1) + break; + } + } + } + + for (j = sp0; j < sp4; j++) { - .bg = 0, - .tilemapLeft = 22, - .tilemapTop = 7, - .width = 6, - .height = 4, - .paletteNum = 13, - .baseBlock = 0x4C, + u8 id = 0xFF; + r5 = sUnknown_8471F50[0][0][j]; + if (gUnknown_203F3E0->unkC4[r5] == 1) + { + s32 r2; + u8 r4, r3 = gUnknown_203F3E0->unk90[sub_8152BD4(r5)] / 7; + if (r3 >= NELEMS(sUnknown_847553C) - 1) + r3 = NELEMS(sUnknown_847553C) - 1; + + r2 = sUnknown_847553C[r3][gUnknown_203F3E0->unk31A0[0].unk14.unk0[r5]] - gUnknown_203F3E0->unkD0[r5]; + if (r2 < 6) + gUnknown_203F3E0->unk9C[r5] += r2; + + if (++gUnknown_203F3E0->unk9C[r5] >= 6) + { + gUnknown_203F3E0->unk9C[r5] = 0; + if (gUnknown_203F3E0->unkF4[r5][0] == 0xFF && gUnknown_203F3E0->unkF4[r5][1] == 0xFF) + { + continue; + } + else if (gUnknown_203F3E0->unkF4[r5][0] != 0xFF && gUnknown_203F3E0->unkF4[r5][1] == 0xFF) + { + r4 = gUnknown_203F3E0->unkF4[r5][0]; + } + else + { + u8 unk0 = gUnknown_203F3E0->unkF4[r5][0]; + i = gUnknown_203F3E0->unkF4[r5][1]; // Have to re-use the variable to match. + if (!(Random() & 1)) + { + r4 = unk0; + id = i; + } + else + { + r4 = i; + id = unk0; + } + } + gUnknown_203F3E0->unk32CC.unk14.unkB[r5] = 7; + gUnknown_203F3E0->unkC4[r5] = 2; + gUnknown_203F3E0->unkA8[r4] = 3; + gUnknown_203F3E0->unkB8[r5] = r4; + gUnknown_203F3E0->unk31A0[r4].unk2C.unk4 = 1; + gUnknown_203F3E0->unk31A0[id].unk2C.unk8 = 1; + gUnknown_203F3E0->unk86[r4]++; + sub_8152D34(0, r5, r4); + sub_8152F94(TRUE); + sub_8152B64(r4); + gUnknown_203F3E0->unkE8[r5] = gUnknown_203F3E0->unk32CC.unk14.unk0[r5]; + gUnknown_203F3E0->unk32CC.unk14.unk0[r5] = 3; + gUnknown_203F3E0->unkF4[r5][0] = 0xFF; + gUnknown_203F3E0->unkF4[r5][1] = 0xFF; + } + } } -}; +} -/*static*/ const struct WindowTemplate sUnknown_847569C = +static bool32 sub_8152484(u8 a0, u8 a1, u8 a2) { - .bg = 0, - .tilemapLeft = 4, - .tilemapTop = 6, - .width = 22, - .height = 5, - .paletteNum = 13, - .baseBlock = 0x13, -}; + s32 r7 = 0; + u8 r5 = gUnknown_203F3E0->unk24 - 1; + struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_203F3E0->unk32CC.unk14; + + switch (a1) + { + case 3: + default: + r7 = 0; + break; + case 2: + r7 = 1; + break; + case 1: + r7 = 2; + break; + } + if (ptr->unkB[a2] == 6 || ptr->unkB[a2] == 7) + { + if (a2 == sUnknown_8472063[r5][a0][r7]) + { + if (gUnknown_203F3E0->unkC4[a2] == 1 || gUnknown_203F3E0->unkC4[a2] == 2) + { + gUnknown_203F3E0->unk31A0[a0].unk2C.unk8 = 1; + return FALSE; + } + else + { + return TRUE; + } + } + } + else + { + if (a2 == sUnknown_8472063[r5][a0][r7]) + { + gUnknown_203F3E0->unkA8[a0] = 4; + gUnknown_203F3E0->unk31A0[a0].unk2C.unk8 = 1; + } + } + return FALSE; +} -/*static*/ const struct WindowTemplate sUnknown_84756A4 = +static void sub_815256C(void) { - .bg = 0, - .tilemapLeft = 5, - .tilemapTop = 8, - .width = 19, - .height = 3, - .paletteNum = 13, - .baseBlock = 0x13, -}; + u8 r1 = gUnknown_203F3E0->unk44; + u8 r9 = gUnknown_203F3E0->unk48; + u8 r3 = 0; + u8 r10 = 0; + u8 i; + u8 r2; + struct DodrioStruct * ptr; -// This is an unused copy of the tables from the top of the file. Feel free to remove. -/*static*/ const u8 sDuplicateArray[] = -{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0, 0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 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, 1, 2, 3, 4, 5, 6, 7, 2, 9, - 0, 0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0, 0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0, 0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0, 0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0, 0, 7, - 8, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, - 1, 2, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 4, 5, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 5, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 6, 7, 2, 2, 3, 4, 0, 0, 0, 0, 0, 0, - 3, 4, 5, 5, 6, 7, 7, 8, 1, 1, 2, 3, 0, 0, 0, 4, 5, 6, 6, 7, 8, 8, 9, 0, 0, 1, 2, 2, 3, 4, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 1, - 2, 1, 2, 3, 2, 3, 0, 0, 0, 0, 4, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 0, 0, 0, 0, 9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9, 9, - 9, 9, 0, 0, 1, 1, 0, 9, 9, 9, 9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9, 9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9, 3, 3, 4, 4, 0, 0, 1, 1, - 2, 2, 3, 5, 0, 0, 0, 0, 4, 6, 0, 0, 0, 3, 5, 7, 0, 0, 2, 4, 6, 8, 0, 1, 3, 5, 6, 9 -}; + gUnknown_203F3E0->unk120 = 0; -/*static*/ const u16 sDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal", - "graphics/link_games/dodrioberry_bg2.gbapal"); -/*static*/ const u16 sDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal"); -/*static*/ const u16 sDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal"); -/*static*/ const u16 sDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal"); -/*static*/ const u16 sDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal"); -/*static*/ const u32 sDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz"); -/*static*/ const u16 sDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal"); -/*static*/ const u32 sDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz"); -/*static*/ const u32 sDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz"); -/*static*/ const u32 sDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz"); -/*static*/ const u32 sDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz"); -/*static*/ const u32 sDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz"); -/*static*/ const u32 sDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz"); -/*static*/ const u32 sDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz"); -/*static*/ const u32 sDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz"); - -/*static*/ const struct OamData sOamData_8478C98 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .mosaic = FALSE, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, - .affineParam = 0 -}; + for (i = r1; i < r9 - 1; i++) + { + ptr = gUnknown_203F3E0; -/*static*/ const struct OamData sOamData_8478CA0 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .mosaic = FALSE, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 0, - .paletteNum = 0, - .affineParam = 0 -}; + if (gUnknown_203F3E0->unkC4[i] == 0 || gUnknown_203F3E0->unkC4[i] == 1) + { + gUnknown_203F3E0->unk120 = 1; + if (ptr->unk32CC.unk14.unkB[i] >= 10) + { + ptr->unk32CC.unk14.unkB[i] = 10; + gUnknown_203F3E0->unkC4[i] = 3; + if (gUnknown_203F3E0->unk148[i] == 0) + { + gUnknown_203F3E0->unk148[i] = 1; + PlaySE(SE_FUUSEN1 + ptr->unk32CC.unk14.unk0[i]); + } + if (gUnknown_203F3E0->unk40 < 10 || r10 == 1) + { + r10 = 1; + gUnknown_203F3E0->unk148[i] = 0; + if (gUnknown_203F3E0->unk40 < 10) + { + gUnknown_203F3E0->unk40++; + } + sub_8152D34(3, i, 0); + sub_8152F94(FALSE); + } + } + else + { + r3 = gUnknown_203F3E0->unk90[sub_8152BD4(i)] / 7; + if (r3 >= NELEMS(sUnknown_847553C) - 1) + { + r3 = NELEMS(sUnknown_847553C) - 1; + } + r2 = sUnknown_847553C[r3][ptr->unk32CC.unk14.unk0[i]]; + if (++gUnknown_203F3E0->unkD0[i] >= r2) + { + ptr->unk32CC.unk14.unkB[i]++; + gUnknown_203F3E0->unkD0[i] = 0; + } + sub_8152174(); + } + } + else if (gUnknown_203F3E0->unkC4[i] == 2) + { + // gUnknown_203F3E0->unk120 = 1; + if (++gUnknown_203F3E0->unkDC[i] >= 20) + { + gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->unkB8[i]].unk2C.unk4 = 0; + gUnknown_203F3E0->unkDC[i] = 0; + gUnknown_203F3E0->unkD0[i] = 0; + gUnknown_203F3E0->unkC4[i] = 0; + ptr->unk32CC.unk14.unkB[i] = 1; + ptr->unk32CC.unk14.unk0[i] = sub_8152BF8(sub_8152BD4(i), i); + } + } + else if (gUnknown_203F3E0->unkC4[i] == 3) + { + if (++gUnknown_203F3E0->unkDC[i] >= 20) + { + if (gUnknown_203F3E0->unk40 < 10) + { + gUnknown_203F3E0->unkDC[i] = 0; + gUnknown_203F3E0->unkD0[i] = 0; + gUnknown_203F3E0->unkC4[i] = 0; + ptr->unk32CC.unk14.unkB[i] = 1; + gUnknown_203F3E0->unkE8[i] = ptr->unk32CC.unk14.unk0[i]; + ptr->unk32CC.unk14.unk0[i] = sub_8152BF8(sub_8152BD4(i), i); + } + } + } + } +} -/*static*/ const struct OamData sOamData_8478CA8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .mosaic = FALSE, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, - .affineParam = 0 -}; +static void sub_81527D0(void) +{ + u8 i, first, count; -/*static*/ const struct OamData sOamData_8478CB0 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .mosaic = FALSE, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 3, - .paletteNum = 0, - .affineParam = 0 -}; + first = gUnknown_203F3E0->unk44; + count = gUnknown_203F3E0->unk48; + for (i = first; i < count; i++) + { + struct DodrioSubstruct_31A0 * ptr = &gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId]; + u8 var = sUnknown_8471F50[gUnknown_203F3E0->unk24 - 1][gUnknown_203F3E0->multiplayerId][i]; + + if (ptr->unk14.unkB[var] != 0) + sub_81542EC(i, FALSE); + else + sub_81542EC(i, TRUE); + + if (ptr->unk14.unkB[var] > 9) + { + sub_8154398(i, ptr->unk14.unk0[var] + 3); + sub_8154370(i, ptr->unk14.unkB[var] * 2 - 1); + } + else if (ptr->unk14.unk0[var] == 3) + { + ptr->unk14.unkB[var] = 7; + sub_8154398(i, 6); + sub_8154370(i, ptr->unk14.unkB[var] * 2 - 1); + } + else + { + sub_8154398(i, ptr->unk14.unk0[var]); + sub_8154370(i, ptr->unk14.unkB[var] * 2); + } + } +} -/*static*/ const union AnimCmd sSpriteAnim_8478CB8[] = +static void sub_81528D0(void) { - ANIMCMD_FRAME(0, 20), - ANIMCMD_JUMP(0) -}; + u8 i, count; -/*static*/ const union AnimCmd sSpriteAnim_8478CC0[] = + count = gUnknown_203F3E0->unk24; + for (i = 0; i < count; i++) + { + struct DodrioSubstruct_31A0 * ptr = &gUnknown_203F3E0->unk31A0[i]; + sub_8153DA8(i, ptr->unk2C.unk0); + } +} + +static void sub_8152910(void) { - ANIMCMD_FRAME(64, 20), - ANIMCMD_JUMP(0) -}; + u8 i, count; + + count = gUnknown_203F3E0->unk24; + for (i = 0; i < count; i++) + sub_8153DA8(i, 4); +} -/*static*/ const union AnimCmd sSpriteAnim_8478CC8[] = +static void sub_815293C(void) { - ANIMCMD_FRAME(128, 20), - ANIMCMD_JUMP(0) -}; + sub_81527D0(); + if (gUnknown_203F3E0->unk40 > 9) + sub_8152910(); + else + sub_81528D0(); + + sub_8153FC8(gUnknown_203F3E0->unk40); +} -/*static*/ const union AnimCmd sSpriteAnim_8478CD0[] = +// This function is literally the same as the one above...Why? +static void sub_8152970(void) { - ANIMCMD_FRAME(192, 20), - ANIMCMD_JUMP(0) -}; + sub_81527D0(); + if (gUnknown_203F3E0->unk40 > 9) + sub_8152910(); + else + sub_81528D0(); + + sub_8153FC8(gUnknown_203F3E0->unk40); +} -/*static*/ const union AnimCmd sSpriteAnim_8478CD8[] = +static void sub_81529A4(u8 arg0, u8 *arg1, u8 *arg2) { - ANIMCMD_FRAME(256, 20), - ANIMCMD_JUMP(0) -}; + switch (arg0) + { + case 1: + *arg1 = 4, *arg2 = 7; + break; + case 2: + *arg1 = 3, *arg2 = 8; + break; + case 3: + *arg1 = 2, *arg2 = 9; + break; + case 4: + *arg1 = 1, *arg2 = 10; + break; + case 5: + *arg1 = 0, *arg2 = 11; + break; + } +} -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478CE0[] = +static bool32 sub_8152A00(void) { - sSpriteAnim_8478CB8, - sSpriteAnim_8478CC0, - sSpriteAnim_8478CC8, - sSpriteAnim_8478CD0, - sSpriteAnim_8478CD8 -}; + u8 i, count; -/*static*/ const union AnimCmd sSpriteAnim_8478CF4[] = + count = gUnknown_203F3E0->unk24; + for (i = 1; i < count; i++) + { + if (gUnknown_203F3E0->unk158[i] == 0) + gUnknown_203F3E0->unk158[i] = sub_815A5E8(i); + } + + // This loop won't ever run, the seemingly pointless assingment below is to make the compiler + // generate code for it. + count = count; + for (; i < count; i++) + { + if (gUnknown_203F3E0->unk158[i] == 0) + return FALSE; + } + + return TRUE; +} + +static void sub_8152A70(void) { - ANIMCMD_FRAME(0, 20), - ANIMCMD_JUMP(0) -}; + u8 i; + + for (i = 0; i < 5; i++) + gUnknown_203F3E0->unk158[i] = 0; +} -/*static*/ const union AnimCmd sSpriteAnim_8478CFC[] = +static bool32 sub_8152A98(void) { - ANIMCMD_FRAME(4, 20), - ANIMCMD_JUMP(0) -}; + if (gUnknown_203F3E0->unk40 > 9 && gUnknown_203F3E0->unk120 == 0) + { + gUnknown_203F3E0->unk40 = 10; + if (gUnknown_203F3E0->unk12C != 0) + return TRUE; + } + + return FALSE; +} -/*static*/ const union AnimCmd sSpriteAnim_8478D04[] = +static bool32 sub_8152AD8(void) { - ANIMCMD_FRAME(8, 20), - ANIMCMD_JUMP(0) -}; + u8 i, first, count; + + if (gUnknown_203F3E0->unk40 > 9) + { + first = gUnknown_203F3E0->unk44; + count = gUnknown_203F3E0->unk48; + gUnknown_203F3E0->unk40 = 10; + if (gUnknown_203F3E0->unk12C != 0) + { + for (i = first; i < count; i++) + { + struct DodrioSubstruct_31A0 * ptr = &gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId]; + u8 var = sUnknown_8471F50[gUnknown_203F3E0->unk24 - 1][gUnknown_203F3E0->multiplayerId][i]; + + if (ptr->unk14.unkB[var] != 10) + return FALSE; + } + return TRUE; + } + } + + return FALSE; +} -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D0C[] = +static void sub_8152B64(u8 arg0) { - sSpriteAnim_8478CF4, - sSpriteAnim_8478CFC, - sSpriteAnim_8478D04 -}; + u8 var = sUnknown_8475550[gUnknown_203F3E0->unk90[arg0] % 7] + (gUnknown_203F3E0->unk90[arg0] / 7) * 100; + if (gUnknown_203F3E0->unk86[arg0] >= var) + gUnknown_203F3E0->unk90[arg0]++; +} -/*static*/ const union AnimCmd sSpriteAnim_8478D18[] = +static u8 sub_8152BD4(u8 arg0) { - ANIMCMD_FRAME(0, 20), - ANIMCMD_JUMP(0) -}; + return sUnknown_84720FC[gUnknown_203F3E0->unk24 - 1][arg0]; +} -/*static*/ const union AnimCmd sSpriteAnim_8478D20[] = +static u8 sub_8152BF8(u8 arg0, u8 arg1) { - ANIMCMD_FRAME(4, 20), - ANIMCMD_JUMP(0) -}; + u8 i, var3; + u8 count = gUnknown_203F3E0->unk24 - 1; + u8 var0 = sUnknown_84720AE[count][arg0][0]; + u8 var1 = sUnknown_84720AE[count][arg0][1]; + u8 var2 = sUnknown_84720AE[count][arg0][2]; + + for (i = 0; sUnknown_8472133[count][i] != 0; i++) + { + if (arg1 == sUnknown_8472133[count][i]) + return sub_8152CB8(gUnknown_203F3E0->unk90[var1], arg1); + } + + // Gets the highest of the three. + if (gUnknown_203F3E0->unk90[var0] > gUnknown_203F3E0->unk90[var1]) + var3 = gUnknown_203F3E0->unk90[var0]; + else + var3 = gUnknown_203F3E0->unk90[var1]; -/*static*/ const union AnimCmd sSpriteAnim_8478D28[] = + if (gUnknown_203F3E0->unk90[var2] > var3) + var3 = gUnknown_203F3E0->unk90[var2]; + + return sub_8152CB8(var3, arg1); +} + +static u8 sub_8152CB8(u8 arg0, u8 arg1) { - ANIMCMD_FRAME(8, 20), - ANIMCMD_JUMP(0) -}; + u8 var = gUnknown_203F3E0->unkE8[arg1]; + switch (arg0 % 7) + { + default: return 0; + case 0: return 0; + case 1: return 1; + case 2: return 2; + case 3: + if (var == 0) + return 1; + else + return 0; + case 4: + if (var == 0) + return 2; + else + return 0; + case 5: + if (var == 2) + return 1; + else + return 2; + case 6: + if (var == 0) + return 1; + else if (var == 1) + return 2; + else + return 0; + } +} -/*static*/ const union AnimCmd sSpriteAnim_8478D30[] = +static void sub_8152D34(u8 arg0, u8 arg1, u8 arg2) { - ANIMCMD_FRAME(12, 20), - ANIMCMD_JUMP(0) -}; + u8 var; + u8 count = gUnknown_203F3E0->unk24; + switch (arg0) + { + case 0: + case 1: + case 2: + var = gUnknown_203F3E0->unk31A0[0].unk14.unk0[arg1]; + gUnknown_203F3E0->unk4A[arg2][var] = IncrementWithLimit(gUnknown_203F3E0->unk4A[arg2][var], 20000); + break; + case 3: + switch (count) + { + case 5: + switch (arg1) + { + case 0: + gUnknown_203F3E0->unk4A[2][3]++; + gUnknown_203F3E0->unk4A[3][3]++; + break; + case 1: + gUnknown_203F3E0->unk4A[3][3]++; + break; + case 2: + gUnknown_203F3E0->unk4A[3][3]++; + gUnknown_203F3E0->unk4A[4][3]++; + break; + case 3: + gUnknown_203F3E0->unk4A[4][3]++; + break; + case 4: + gUnknown_203F3E0->unk4A[4][3]++; + gUnknown_203F3E0->unk4A[0][3]++; + break; + case 5: + gUnknown_203F3E0->unk4A[0][3]++; + break; + case 6: + gUnknown_203F3E0->unk4A[0][3]++; + gUnknown_203F3E0->unk4A[1][3]++; + break; + case 7: + gUnknown_203F3E0->unk4A[1][3]++; + break; + case 8: + gUnknown_203F3E0->unk4A[1][3]++; + gUnknown_203F3E0->unk4A[2][3]++; + break; + case 9: + gUnknown_203F3E0->unk4A[2][3]++; + break; + } + break; + case 4: + switch (arg1) + { + case 1: + gUnknown_203F3E0->unk4A[2][3]++; + gUnknown_203F3E0->unk4A[3][3]++; + break; + case 2: + gUnknown_203F3E0->unk4A[3][3]++; + break; + case 3: + gUnknown_203F3E0->unk4A[3][3]++; + gUnknown_203F3E0->unk4A[0][3]++; + break; + case 4: + gUnknown_203F3E0->unk4A[0][3]++; + break; + case 5: + gUnknown_203F3E0->unk4A[0][3]++; + gUnknown_203F3E0->unk4A[1][3]++; + break; + case 6: + gUnknown_203F3E0->unk4A[1][3]++; + break; + case 7: + gUnknown_203F3E0->unk4A[1][3]++; + gUnknown_203F3E0->unk4A[2][3]++; + break; + case 8: + gUnknown_203F3E0->unk4A[2][3]++; + break; + } + break; + case 3: + switch (arg1) + { + case 2: + gUnknown_203F3E0->unk4A[1][3]++; + gUnknown_203F3E0->unk4A[2][3]++; + break; + case 3: + gUnknown_203F3E0->unk4A[2][3]++; + break; + case 4: + gUnknown_203F3E0->unk4A[2][3]++; + gUnknown_203F3E0->unk4A[0][3]++; + break; + case 5: + gUnknown_203F3E0->unk4A[0][3]++; + break; + case 6: + gUnknown_203F3E0->unk4A[0][3]++; + gUnknown_203F3E0->unk4A[1][3]++; + break; + case 7: + gUnknown_203F3E0->unk4A[1][3]++; + break; + } + break; + case 2: + switch (arg1) + { + case 3: + gUnknown_203F3E0->unk4A[0][3]++; + gUnknown_203F3E0->unk4A[1][3]++; + break; + case 4: + gUnknown_203F3E0->unk4A[0][3]++; + break; + case 5: + gUnknown_203F3E0->unk4A[0][3]++; + gUnknown_203F3E0->unk4A[1][3]++; + break; + case 6: + gUnknown_203F3E0->unk4A[1][3]++; + break; + } + break; + } + break; + } +} -/*static*/ const union AnimCmd sSpriteAnim_8478D38[] = +static void sub_8152F94(bool32 arg0) { - ANIMCMD_FRAME(16, 20), - ANIMCMD_JUMP(0) -}; + if (gUnknown_203F3E0->unk24 != 5) + return; -/*static*/ const union AnimCmd sSpriteAnim_8478D40[] = + if (arg0 == TRUE) + { + if (++gUnknown_203F3E0->unk112 > gUnknown_203F3E0->unk114) + gUnknown_203F3E0->unk114 = gUnknown_203F3E0->unk112; + if (gUnknown_203F3E0->unk112 > 9999) + gUnknown_203F3E0->unk112 = 9999; + } + else + { + if (gUnknown_203F3E0->unk112 > gUnknown_203F3E0->unk114) + gUnknown_203F3E0->unk114 = gUnknown_203F3E0->unk112; + gUnknown_203F3E0->unk112 = 0; + } +} + +static void sub_8153004(void) { - ANIMCMD_FRAME(20, 20), - ANIMCMD_JUMP(0) -}; + u8 i; + for (i = 0; i < gUnknown_203F3E0->unk24; i++) + gUnknown_203F3E0->unk4A[i][5] = gUnknown_203F3E0->unk114; +} -/*static*/ const union AnimCmd sSpriteAnim_8478D48[] = +static void sub_8153048(void) { - ANIMCMD_FRAME(24, 20), - ANIMCMD_JUMP(0) -}; + u8 i, j; -/*static*/ const union AnimCmd sSpriteAnim_8478D50[] = + for (i = 0; i < 5; i++) + { + for (j = 0; j < 11; j++) + gUnknown_203F3E0->unk31A0[i].unk14.unkB[j] = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk0 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk4 = 0; + gUnknown_203F3E0->unk90[i] = 0; + gUnknown_203F3E0->unk86[i] = 0; + gUnknown_203F3E0->unk3308[i].unk0 = 0; + gUnknown_203F3E0->unk3308[i].unk4 = 0; + gUnknown_203F3E0->unk4A[i][0] = 0; + gUnknown_203F3E0->unk4A[i][1] = 0; + gUnknown_203F3E0->unk4A[i][2] = 0; + gUnknown_203F3E0->unk4A[i][3] = 0; + gUnknown_203F3E0->unk4A[i][4] = 0; + gUnknown_203F3E0->unk4A[i][5] = 0; + } + gUnknown_203F3E0->unk154 = 0; + gUnknown_203F3E0->unk112 = 0; + gUnknown_203F3E0->unk40 = 0; + sub_81528D0(); + sub_81527D0(); +} + +static const s16 sUnknown_84755D8[] = {10, 30, 50, 50}; + +static void sub_8153150(void) { - ANIMCMD_FRAME(28, 20), - ANIMCMD_JUMP(0) -}; + u8 i, var = 0, var2 = 0; + + switch (gUnknown_203F3E0->unk24) + { + case 4: var = 1; break; + case 5: var = 2; break; + } -/*static*/ const union AnimCmd sSpriteAnim_8478D58[] = + var2 = Random() % 10; + for (i = 0; i < 5; i++) + gUnknown_203F3E0->unk4A[i][4] = sUnknown_8475558[var][var2]; +} + +static u32 sub_81531BC(u8 arg0) { - ANIMCMD_FRAME(32, 20), - ANIMCMD_JUMP(0) -}; + u32 sum = gUnknown_203F3E0->unk4A[arg0][0] + + gUnknown_203F3E0->unk4A[arg0][1] + + gUnknown_203F3E0->unk4A[arg0][2]; + return min(sum, 9999); +} -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D60[] = -{ - sSpriteAnim_8478D18, - sSpriteAnim_8478D20, - sSpriteAnim_8478D28, - sSpriteAnim_8478D30, - sSpriteAnim_8478D38, - sSpriteAnim_8478D40, - sSpriteAnim_8478D48, - sSpriteAnim_8478D50, - sSpriteAnim_8478D58 -}; +static void sub_81531FC(void) +{ + u32 berriesPicked = Min(sub_81531BC(gUnknown_203F3E0->multiplayerId), 9999); + u32 score = Min(sub_8153424(gUnknown_203F3E0->multiplayerId), 999990); + + if (gSaveBlock2Ptr->berryPick.bestScore < score) + gSaveBlock2Ptr->berryPick.bestScore = score; + if (gSaveBlock2Ptr->berryPick.berriesPicked < berriesPicked) + gSaveBlock2Ptr->berryPick.berriesPicked = berriesPicked; + if (gSaveBlock2Ptr->berryPick.berriesPickedInRow < gUnknown_203F3E0->unk114) + gSaveBlock2Ptr->berryPick.berriesPickedInRow = gUnknown_203F3E0->unk114; +} + +static u8 sub_815327C(u8 arg0) +{ + u8 i, saved; -/*static*/ const union AnimCmd sSpriteAnim_8478D84[] = + saved = gUnknown_203F3E0->unk98[3]; + for (i = 3; i != 0; i--) + gUnknown_203F3E0->unk98[i] = gUnknown_203F3E0->unk98[i - 1]; + gUnknown_203F3E0->unk98[0] = arg0; + return saved; +} + +static void sub_81532B8(void) { - ANIMCMD_FRAME(0, 20), - ANIMCMD_JUMP(0) -}; + if (gUnknown_203F3E0->unkB0[gUnknown_203F3E0->multiplayerId] == 0) + { + if (JOY_NEW(DPAD_UP)) + { + gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 = 2; + gUnknown_203F3E0->unkB0[gUnknown_203F3E0->multiplayerId] = 6; + PlaySE(SE_W204); + } + else if (JOY_NEW(DPAD_LEFT)) + { + gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 = 3; + gUnknown_203F3E0->unkB0[gUnknown_203F3E0->multiplayerId] = 6; + PlaySE(SE_W204); + } + else if (JOY_NEW(DPAD_RIGHT)) + { + gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 = 1; + gUnknown_203F3E0->unkB0[gUnknown_203F3E0->multiplayerId] = 6; + PlaySE(SE_W204); + } + else + { + gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 = 0; + } + } + else + { + gUnknown_203F3E0->unkB0[gUnknown_203F3E0->multiplayerId]--; + } +} -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D8C[] = +static void sub_815336C(void) { - sSpriteAnim_8478D84 -}; + gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 = 0; +} -// These are declared inside pokeemerald's sub_80283A8 -const struct SpritePalette gUnknown_8478D90 = {sDodrioBerryPkmnPal, 0}; -const struct SpritePalette gUnknown_8478D98 = {sDodrioBerryShinyPal, 1}; - -// These are declared inside pokeemerald's sub_8028734 -const struct SpritePalette gUnknown_8478DA0 = {sDodrioBerryStatusPal, 2}; -const struct SpriteTemplate gUnknown_8478DA8 = - { - .tileTag = 1, - .paletteTag = 2, - .oam = &sOamData_8478CA0, - .anims = sSpriteAnimTable_8478D0C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = nullsub_97, - }; - -// Unknown unused data, feel free to remove. -/*static*/ const u8 sUnused2[] = {0xCD, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0xF4, 0x0, 0x0}; - -// This is declared inside pokeemerald's sub_8028A34 -const struct SpritePalette gUnknown_8478DCC = {sDodrioBerrySpritesPal, 3}; - -/*static*/ const s16 sUnknown_8478DD4[] = {88, 128, 168, 208}; - -// These are declared inside pokeemerald's sub_8028A88 -const struct SpriteTemplate gUnknown_8478DDC = - { - .tileTag = 2, - .paletteTag = 3, - .oam = &sOamData_8478CA8, - .anims = sSpriteAnimTable_8478D60, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy, - }; -const struct SpriteTemplate gUnknown_8478DF4 = - { - .tileTag = 2, - .paletteTag = 3, - .oam = &sOamData_8478CA0, - .anims = sSpriteAnimTable_8478D60, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy, - }; - -// This is declared inside pokeemerald's sub_8028CF4 -/*static*/ const u8 gUnknown_8478E0C[] = {30, 20}; - -/*static*/ const s16 gUnknown_8478E0E[][2] = {{230, 55}, {30, 74}}; - -// These are declared inside pokeemerald's sub_8028D44 -const struct SpritePalette gUnknown_8478E18 = {sDodrioBerryPlatformPal, 6}; -const struct SpriteTemplate gUnknown_8478E20 = - { - .tileTag = 5, - .paletteTag = 6, - .oam = &sOamData_8478CB0, - .anims = sSpriteAnimTable_8478D8C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81543E8, - }; - -struct WinCoords -{ - u8 left; - u8 top; -}; +u16 sub_8153390(void) +{ + return gUnknown_203F3E0->unk4A[gUnknown_203F3E0->multiplayerId][4] + FIRST_BERRY_INDEX; +} -/*static*/ const u8 sUnknown_8478E38[][3] = +u8 sub_81533B4(void) { - {1, 2, 3}, - {1, 4, 5}, - {1, 8, 9}, - {1, 6, 7}, -}; + return gUnknown_203F3E0->unk24; +} + +u8 *sub_81533C4(u8 id) +{ + if (gReceivedRemoteLinkPlayers) + return gLinkPlayers[id].name; + else + return gUnknown_203F3E0->unk31A0[id].name; +} + +u16 sub_8153404(u8 arg0, u8 arg1) +{ + return gUnknown_203F3E0->unk4A[arg0][arg1]; +} + +static u32 sub_8153424(u8 arg0) +{ + u8 i; + u32 var, sum = 0; + + for (i = 0; i < 3; i++) + sum += gUnknown_203F3E0->unk4A[arg0][i] * sUnknown_84755D8[i]; + + var = gUnknown_203F3E0->unk4A[arg0][3] * sUnknown_84755D8[3]; + if (sum <= var) + return 0; + else + return sum - var; +} + +u32 sub_81534AC(void) +{ + u8 i, count = gUnknown_203F3E0->unk24; + u32 maxVar = sub_8153424(0); + + for (i = 1; i < count; i++) + { + u32 var = sub_8153424(i); + if (var > maxVar) + maxVar = var; + } + return Min(maxVar, 999990); +} + +u32 sub_81534F0(u8 arg0) +{ + u8 i, count = gUnknown_203F3E0->unk24; + u16 maxVar = gUnknown_203F3E0->unk4A[0][arg0]; -/*static*/ const struct WinCoords sUnknown_8478E44[] = {{12, 6}}; -/*static*/ const struct WinCoords sUnknown_8478E48[] = {{9, 10}, {15, 6}}; -/*static*/ const struct WinCoords sUnknown_8478E50[] = {{12, 6}, {18, 10}, {6, 10}}; -/*static*/ const struct WinCoords sUnknown_8478E5C[] = {{9, 10}, {15, 6}, {21, 10}, {3, 6}}; -/*static*/ const struct WinCoords sUnknown_8478E6C[] = {{12, 6}, {18, 10}, {23, 6}, {1, 6}, {6, 10}}; + for (i = 0; i < count; i++) + { + u16 var = gUnknown_203F3E0->unk4A[i][arg0]; + if (var > maxVar) + maxVar = var; + } + return maxVar; +} -/*static*/ const struct WinCoords *const sUnknown_8478E80[] = +static u32 sub_8153534(u8 arg0) { - sUnknown_8478E44, - sUnknown_8478E48, - sUnknown_8478E50, - sUnknown_8478E5C, - sUnknown_8478E6C, + u32 vals[5], temp; + s16 r6 = TRUE; + u8 i, count = gUnknown_203F3E0->unk24; + + for (i = 0; i < count; i++) + vals[i] = temp = sub_8153424(i); + + while (r6) + { + r6 = FALSE; + for (i = 0; i < count - 1; i++) + { + if (vals[i] < vals[i + 1]) + { + SWAP(vals[i], vals[i + 1], temp); + r6 = TRUE; + } + } + } + + return vals[arg0]; +} + +u32 sub_81535B0(void) +{ + u8 i, r10 = 0, r8 = 0, r9 = 0, count = gUnknown_203F3E0->unk24; + + // Function called two times for some reason. + sub_81534AC(); + if (sub_81534AC() == 0) + { + for (i = 0; i < count; i++) + { + gUnknown_203F3E0->unk3308[i].unk0 = 4; + gUnknown_203F3E0->unk3308[i].unk4 = 0; + } + } + + for (i = 0; i < count; i++) + gUnknown_203F3E0->unk3308[i].unk4 = Min(sub_8153424(i), 999990); + + do + { + u32 r6 = sub_8153534(r10); + u8 r3 = r8; + for (i = 0; i < count; i++) + { + if (r6 == gUnknown_203F3E0->unk3308[i].unk4) + { + gUnknown_203F3E0->unk3308[i].unk0 = r3; + r8++; + r9++; + } + } + r10 = r8; + } while (r9 < count); + + return 0; +} + +void sub_81536A0(struct DodrioSubstruct_3308 * dst, u8 id) +{ + *dst = gUnknown_203F3E0->unk3308[id]; +} + +static u8 sub_81536C0(u8 arg0) +{ + u8 i, ret = 0, count = gUnknown_203F3E0->unk24; + u32 var, vars[5] = {0}; + + for (i = 0; i < count; i++) + vars[i] = sub_8153424(i); + + var = vars[arg0]; + for (i = 0; i < 5; i++) + { + if (i != arg0 && var < vars[i]) + ret++; + } + + return ret; +} + +u8 sub_815372C(void) +{ + u8 multiplayerId = gUnknown_203F3E0->multiplayerId; + u16 itemId = sub_8153390(); + + if (sub_8153424(multiplayerId) != sub_81534AC()) + return 3; + if (!CheckBagHasSpace(itemId, 1)) + return 2; + + AddBagItem(itemId, 1); + if (!CheckBagHasSpace(itemId, 1)) + return 1; + return 0; +} + +// Really? What next, u32 Add(u32 a)return a+1;? +u32 IncrementWithLimit(u32 a, u32 max) +{ + if (a < max) + return a + 1; + else + return max; +} + +// Gamefreak pls, min(a, b) ((a) < (b) ? (a) : (b)) is a well-known macro +u32 Min(u32 a, u32 b) +{ + if (a < b) + return a; + else + return b; +} + +u8 sub_81537AC(u8 id) +{ + return gUnknown_203F3E0->unk34[id]; +} + +void IsDodrioInParty(void) +{ + int i; + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_DODRIO) + { + gSpecialVar_Result = TRUE; + return; + } + } + + gSpecialVar_Result = FALSE; +} + +void ShowDodrioBerryPickingRecords(void) +{ + u8 taskId = CreateTask(Task_ShowDodrioBerryPickingRecords, 0); + Task_ShowDodrioBerryPickingRecords(taskId); +} + +// Data related to printing saved results. +static const struct WindowTemplate sUnknown_84755E0 = +{ + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 28, + .height = 11, + .paletteNum = 15, + .baseBlock = 1, }; -/*static*/ const u8 *const sUnknown_8478E94[] = +static const u8 *const sUnknown_84755E8[] = {gText_BerryPickingRecords, gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers}; +static const u8 sUnknown_84755F8[] = {4, 7, 4}; + +ALIGNED(4) +static const u8 sUnknown_84755FC[][2] = {{24}, {40}, {56}}; +static const u8 sUnknown_8475602[][2] = {{24}, {40}, {70}}; + +static void Task_ShowDodrioBerryPickingRecords(u8 taskId) +{ + struct WindowTemplate window; + s32 i, width, widthCurr; + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = AddWindow(&sUnknown_84755E0); + sub_81538D0(data[1]); + CopyWindowToVram(data[1], 3); + data[0]++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + data[0]++; + break; + case 2: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + rbox_fill_rectangle(data[1]); + CopyWindowToVram(data[1], 1); + data[0]++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + RemoveWindow(data[1]); + DestroyTask(taskId); + EnableBothScriptContexts(); + } + break; + } +} + +static void sub_81538D0(u8 windowId) { - gText_1Colon, - gText_2Colon, - gText_3Colon, - gText_4Colon, - gText_5Colon, + s32 i, x, numWidth; + s32 results[3]; + u8 strbuf[20]; + results[0] = gSaveBlock2Ptr->berryPick.berriesPicked; + results[1] = gSaveBlock2Ptr->berryPick.bestScore; + results[2] = gSaveBlock2Ptr->berryPick.berriesPickedInRow; + + TextWindow_SetStdFrame0_WithPal(windowId, 0x21D, 0xD0); + DrawTextBorderOuter(windowId, 0x21D, 0xD); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); + AddTextPrinterParameterized(windowId, 2, sUnknown_84755E8[0], 1, 1, TEXT_SPEED_FF, NULL); + for (i = 0; i < 3; i++) + { + ConvertIntToDecimalStringN(strbuf, results[i], STR_CONV_MODE_LEFT_ALIGN, sUnknown_84755F8[i]); + numWidth = GetStringWidth(2, strbuf, -1); + AddTextPrinterParameterized(windowId, 2, sUnknown_84755E8[i + 1], 1, sUnknown_84755FC[i][0], TEXT_SPEED_FF, NULL); + x = 224 - numWidth; + AddTextPrinterParameterized(windowId, 2, strbuf, x, sUnknown_8475602[i][0], TEXT_SPEED_FF, NULL); + } + PutWindowTilemap(windowId); +} + +// Debug functions? +static const u16 sUnknown_8475608[][4] = +{ + {9999, 0, 90, 9999}, + {9999, 9999, 70, 9999}, + {9999, 0, 9999, 0}, + {9999, 9999, 60, 0}, + {9999, 9999, 9999, 0}, }; -/*static*/ const u16 sUnknown_8478EA8[] = {92, 132, 172, 212}; -/*static*/ const u16 sUnknown_8478EB0[] = {30, 45, 60, 75, 90}; -/*static*/ const u16 sUnknown_8478EBA[] = {12, 28, 44, 60, 76}; - -struct -{ - u8 id; - void (*func)(void); -} const gUnknown_8478EC4[] = -{ - {0, sub_8154A2C}, - {1, sub_8154B34}, - {2, sub_8154F80}, - {3, sub_81556E0}, - {4, sub_8155A78}, - {5, sub_8155B4C}, - {6, sub_8155C2C}, - {7, sub_8155C80}, - {8, unused_0}, - {9, nullsub_98}, +static const u8 sUnknown_8475630[] = _("あいうえおかき"); +static const u8 sUnknown_8475638[] = _("ABCDEFG"); +static const u8 sUnknown_8475640[] = _("0123456"); + +static const u8 *const sPlaceholderPlayerNames[] = +{ + sUnknown_8475630, + sUnknown_8475630, + sUnknown_8475630, + sUnknown_8475638, + sUnknown_8475640 }; -// This is declared inside pokeemerald's sub_80296A8 -const u8 gUnknown_8478F14[5] = {0, 1, 2, 3, 4}; +static void sub_81539EC(void) +{ + gUnknown_203F3E0->unk24 = GetLinkPlayerCount(); +} + +static void sub_8153A04(void) +{ + u8 i, playerId; + + for (playerId = gUnknown_203F3E0->unk24; playerId < NELEMS(sPlaceholderPlayerNames); playerId++) + StringCopy(gLinkPlayers[playerId].name, sPlaceholderPlayerNames[playerId]); + + gUnknown_203F3E0->unk24 = 5; + for (i = 0; i < 4; i++) + { + for (playerId = 0; playerId < gUnknown_203F3E0->unk24; playerId++) + gUnknown_203F3E0->unk4A[playerId][i] = sUnknown_8475608[playerId][i]; + } +} diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c index 4260c6f2f..e170ac903 100644 --- a/src/dodrio_berry_picking_2.c +++ b/src/dodrio_berry_picking_2.c @@ -1,23 +1,1617 @@ #include "global.h" +#include "gflib.h" +#include "dodrio_berry_picking.h" +#include "dynamic_placeholder_text_util.h" +#include "item.h" #include "link.h" -#include "link_rfu.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "save.h" +#include "strings.h" +#include "task.h" +#include "text_window.h" +#include "text_window_graphics.h" +#include "constants/songs.h" -void sub_815A5BC(s32 a0) +struct DodrioStruct_2022CF4 { - struct Padded_U8 data[2]; - data[0].value = 1; - data[1].value = a0; - RfuPrepareSend0x2f00(data); + u8 filler_00[0xc]; + u8 unkC[10]; + s16 unk16[10]; + u16 unk2A[10]; + u16 unk3E; +}; // size = 0x40 + +static EWRAM_DATA u16 *gUnknown_203F3E4[5] = {NULL}; +static EWRAM_DATA u16 *gUnknown_203F3F8[2] = {NULL}; +static EWRAM_DATA u16 *gUnknown_203F400[11] = {NULL}; +static EWRAM_DATA u16 *gUnknown_203F42C[4] = {NULL}; +static EWRAM_DATA struct DodrioStruct_2022CF4 * gUnknown_203F43C = NULL; +static EWRAM_DATA struct DodrioSubstruct_0160 * gUnknown_203F440 = NULL; + +static void sub_8153B9C(struct Sprite * sprite); +static u32 sub_8153C30(struct Sprite * sprite); +static u32 sub_8153CA0(struct Sprite * sprite); +static void sub_8153D48(bool8 a0, u8 a1); +static void nullsub_97(struct Sprite * sprite); +static void sub_8154324(bool8 a0); +static void sub_81543E8(struct Sprite * sprite); +static s16 sub_8154608(u8 a0, u8 a1); +static void sub_8154A08(u8 taskId); +static void sub_8154A2C(void); +static void sub_8154B34(void); +static void sub_8154F80(void); +static void sub_81556E0(void); +static void sub_8155A78(void); +static void sub_8155B4C(void); +static void sub_8155C2C(void); +static void sub_8155C80(void); +static void unused_0(void); +static void nullsub_98(void); +static void sub_8155E24(MainCallback cb); +MainCallback sub_8155E54(void); +static void sub_8155EA0(void); +static bool32 sub_8155FE0(void); + +// Assets in this header are duplicated +#include "data/dodrio_berry_picking.h" + +static const struct OamData sOamData_8478C98 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_8478CA0 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_8478CA8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_8478CB0 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0 +}; + +static const union AnimCmd sSpriteAnim_8478CB8[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478CC0[] = +{ + ANIMCMD_FRAME(64, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478CC8[] = +{ + ANIMCMD_FRAME(128, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478CD0[] = +{ + ANIMCMD_FRAME(192, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478CD8[] = +{ + ANIMCMD_FRAME(256, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_8478CE0[] = +{ + sSpriteAnim_8478CB8, + sSpriteAnim_8478CC0, + sSpriteAnim_8478CC8, + sSpriteAnim_8478CD0, + sSpriteAnim_8478CD8 +}; + +static const union AnimCmd sSpriteAnim_8478CF4[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478CFC[] = +{ + ANIMCMD_FRAME(4, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D04[] = +{ + ANIMCMD_FRAME(8, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_8478D0C[] = +{ + sSpriteAnim_8478CF4, + sSpriteAnim_8478CFC, + sSpriteAnim_8478D04 +}; + +static const union AnimCmd sSpriteAnim_8478D18[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D20[] = +{ + ANIMCMD_FRAME(4, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D28[] = +{ + ANIMCMD_FRAME(8, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D30[] = +{ + ANIMCMD_FRAME(12, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D38[] = +{ + ANIMCMD_FRAME(16, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D40[] = +{ + ANIMCMD_FRAME(20, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D48[] = +{ + ANIMCMD_FRAME(24, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D50[] = +{ + ANIMCMD_FRAME(28, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8478D58[] = +{ + ANIMCMD_FRAME(32, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_8478D60[] = +{ + sSpriteAnim_8478D18, + sSpriteAnim_8478D20, + sSpriteAnim_8478D28, + sSpriteAnim_8478D30, + sSpriteAnim_8478D38, + sSpriteAnim_8478D40, + sSpriteAnim_8478D48, + sSpriteAnim_8478D50, + sSpriteAnim_8478D58 +}; + +static const union AnimCmd sSpriteAnim_8478D84[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_8478D8C[] = +{ + sSpriteAnim_8478D84 +}; + +// Code + +void sub_8153A9C(void) +{ + void *ptr = AllocZeroed(0x3000); + struct SpritePalette pal1 = {sDodrioBerryPkmnPal, 0}; + struct SpritePalette pal2 = {sDodrioBerryShinyPal, 1}; + + LZ77UnCompWram(sDodrioBerryPkmnGfx, ptr); + // This check should be one line up. + if (ptr != NULL) + { + struct SpriteSheet sheet = {ptr, 0x3000, 0}; + LoadSpriteSheet(&sheet); + Free(ptr); + } + LoadSpritePalette(&pal1); + LoadSpritePalette(&pal2); +} + +void sub_8153AFC(struct DodrioSubstruct_318C * arg0, u8 arg1, u8 id, u8 arg3) +{ + struct SpriteTemplate sprTemplate = + { + .tileTag = 0, + .paletteTag = arg0->isShiny, + .oam = &sOamData_8478C98, + .anims = sSpriteAnimTable_8478CE0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8153B9C, + }; + + gUnknown_203F3E4[id] = AllocZeroed(4); + *gUnknown_203F3E4[id] = CreateSprite(&sprTemplate, sub_8154608(arg1, arg3), 136, 3); + sub_8153D48(TRUE, id); +} + +static void sub_8153B9C(struct Sprite * sprite) +{ + switch (sprite->data[0]) + { + case 0: + break; + case 1: + sub_8153C30(sprite); + break; + case 2: + sub_8153CA0(sprite); + break; + } +} + +void sub_8153BC0(u8 unused) +{ + struct Sprite * sprite = &gSprites[*gUnknown_203F3E4[GetMultiplayerId()]]; + sprite->data[0] = 1; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; +} + +void sub_8153BF8(u8 unused) +{ + struct Sprite * sprite = &gSprites[*gUnknown_203F3E4[GetMultiplayerId()]]; + sprite->data[0] = 2; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; } -u8 sub_815A5E8(s32 a0) +static u32 sub_8153C30(struct Sprite * sprite) { - u8 * r1; - if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) - return 0; - r1 = (u8 *)&gRecvCmds[a0][1]; - if (r1[0] == 1) - return r1[4]; + s8 var; + u8 mod = (++sprite->data[1] / 2) % 4; + + if (sprite->data[1] >= 3) + { + switch (mod) + { + default: + var = 1; + break; + case 1: + case 2: + var = -1; + break; + } + + sprite->pos1.x += var; + if (++sprite->data[1] >= 40) + { + sprite->data[0] = 0; + sprite->pos1.x = sub_8154608(0, sub_81533B4()); + } + } + return 0; } +static u32 sub_8153CA0(struct Sprite * sprite) +{ + u8 mod = (++sprite->data[1] / 13) % 4; + + if (sprite->data[1] % 13 == 0 && mod != 0) + PlaySE(SE_W204); + if (sprite->data[1] >= 104) + { + sprite->data[0] = 0; + mod = 0; + } + sub_8153DA8(GetMultiplayerId(), mod); + return 0; +} + +void sub_8153D08(u8 count) +{ + u8 i; + for (i = 0; i < count; i++) + { + struct Sprite * sprite = &gSprites[*gUnknown_203F3E4[i]]; + if (sprite != NULL) + DestroySpriteAndFreeResources(sprite); + // Memory should be freed here but is not. + } +} + +static void sub_8153D48(bool8 invisible, u8 id) +{ + gSprites[*gUnknown_203F3E4[id]].invisible = invisible; +} + +void sub_8153D80(bool8 invisible, u8 count) +{ + u8 i; + for (i = 0; i < count; i++) + sub_8153D48(invisible, i); +} + +void sub_8153DA8(u8 id, u8 frameNum) +{ + StartSpriteAnim(&gSprites[*gUnknown_203F3E4[id]], frameNum); +} + +static void nullsub_97(struct Sprite * sprite) +{ + +} + +void sub_8153DD8(void) +{ + u8 i; + for (i = 0; i < 10; i++) + { + struct Sprite * sprite = &gSprites[gUnknown_203F43C->unk2A[i]]; + sprite->pos1.x = (i * 16) + 48; + sprite->pos1.y = -8 - (i * 8); + gUnknown_203F43C->unkC[i] = 0; + } +} + +void sub_8153E28(void) +{ + u8 i; + void *ptr = AllocZeroed(0x180); + struct SpritePalette spPal = {sDodrioBerryStatusPal, 2}; + + LZ77UnCompWram(sDodrioBerryStatusGfx, ptr); + // This check should be one line up. + if (ptr != NULL) + { + struct SpriteSheet spSheet = {ptr, 0x180, 1}; + struct SpriteTemplate spTemplate = + { + .tileTag = 1, + .paletteTag = 2, + .oam = &sOamData_8478CA0, + .anims = sSpriteAnimTable_8478D0C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = nullsub_97, + }; + + gUnknown_203F43C = AllocZeroed(sizeof(*gUnknown_203F43C)); + LoadSpriteSheet(&spSheet); + LoadSpritePalette(&spPal); + for (i = 0; i < 10; i++) + gUnknown_203F43C->unk2A[i] = CreateSprite(&spTemplate, (i * 16) + 48, -8 - (i * 8), 0); + } + + Free(ptr); +} + +void sub_8153ED8(void) +{ + u8 i; + for (i = 0; i < 10; i++) + { + struct Sprite * sprite = &gSprites[gUnknown_203F43C->unk2A[i]]; + if (sprite != NULL) + DestroySpriteAndFreeResources(sprite); + } + FREE_AND_SET_NULL(gUnknown_203F43C); +} + +bool32 sub_8153F1C(void) +{ + u8 i; + bool32 r3 = FALSE; + for (i = 0; i < 10; i++) + { + struct Sprite * sprite = &gSprites[gUnknown_203F43C->unk2A[i]]; + gUnknown_203F43C->unk16[i] = 2; + if (gUnknown_203F43C->unkC[i] != 0 && sprite->pos1.y == 8) + continue; + r3 = TRUE; + if (sprite->pos1.y == 8) + { + if (gUnknown_203F43C->unkC[i] != 0) + continue; + gUnknown_203F43C->unkC[i] = 1; + gUnknown_203F43C->unk16[i] = -16; + PlaySE(SE_TK_KASYA); + } + sprite->pos1.y += gUnknown_203F43C->unk16[i]; + } + + if (r3) + return FALSE; + else + return TRUE; +} + +void sub_8153FC8(u8 arg0) +{ + u8 i; + + if (arg0 > 10) + { + for (i = 0; i < 10; i++) + StartSpriteAnim(&gSprites[gUnknown_203F43C->unk2A[i]], 1); + } + else + { + for (i = 0; i < 10 - arg0; i++) + { + if (arg0 > 6) + { + gUnknown_203F43C->unk3E += arg0 - 6; + if (gUnknown_203F43C->unk3E > 30) + gUnknown_203F43C->unk3E = 0; + else if (gUnknown_203F43C->unk3E > 10) + StartSpriteAnim(&gSprites[gUnknown_203F43C->unk2A[i]], 2); + else + StartSpriteAnim(&gSprites[gUnknown_203F43C->unk2A[i]], 0); + } + else + { + StartSpriteAnim(&gSprites[gUnknown_203F43C->unk2A[i]], 0); + } + } + for (; i < 10; i++) + StartSpriteAnim(&gSprites[gUnknown_203F43C->unk2A[i]], 1); + } +} + +void sub_81540DC(bool8 invisible) +{ + u8 i; + for (i = 0; i < 10; i++) + gSprites[gUnknown_203F43C->unk2A[i]].invisible = invisible; +} + +// Unknown unused data, feel free to remove. +static const u8 sUnused2[] = { + SE_W204, + SE_TOY_C, + SE_TOY_D, + SE_TOY_E, + SE_TOY_F, + SE_TOY_G, + SE_TOY_A, + SE_TOY_B, + SE_TOY_C1, + SE_CARD3 +}; + +void sub_8154128(void) +{ + void *ptr = AllocZeroed(0x480); + struct SpritePalette sprPal = {sDodrioBerrySpritesPal, 3}; + + LZ77UnCompWram(sDodrioBerrySpritesGfx, ptr); + if (ptr != NULL) // This should be one line up + { + struct SpriteSheet sprSheet = {ptr, 0x480, 2}; + LoadSpriteSheet(&sprSheet); + } + + LoadSpritePalette(&sprPal); + Free(ptr); +} + +static const s16 sUnknown_8478DD4[] = {88, 128, 168, 208}; + +void sub_815417C(void) +{ + u8 i; + s16 x; + + struct SpriteTemplate sprTemplate1 = + { + .tileTag = 2, + .paletteTag = 3, + .oam = &sOamData_8478CA8, + .anims = sSpriteAnimTable_8478D60, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }; + struct SpriteTemplate sprTemplate2 = + { + .tileTag = 2, + .paletteTag = 3, + .oam = &sOamData_8478CA0, + .anims = sSpriteAnimTable_8478D60, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }; + + for (i = 0; i < 11; i++) + { + gUnknown_203F400[i] = AllocZeroed(4); + x = i * 16; + *gUnknown_203F400[i] = CreateSprite(&sprTemplate1, x + (i * 8), 8, 1); + sub_81542EC(i, TRUE); + } + for (i = 0; i < 4; i++) + { + gUnknown_203F42C[i] = AllocZeroed(4); + if (i == 3) + *gUnknown_203F42C[i] = CreateSprite(&sprTemplate2, sUnknown_8478DD4[i], 57, 0); + else + *gUnknown_203F42C[i] = CreateSprite(&sprTemplate2, sUnknown_8478DD4[i], 60, 0); + StartSpriteAnim(&gSprites[*gUnknown_203F42C[i]], i); + } + + sub_8154324(TRUE); +} + +void sub_8154274(void) +{ + struct Sprite * sprite; + u8 i; + + for (i = 0; i < 11; i++) + { + sprite = &gSprites[*gUnknown_203F400[i]]; + if (sprite != NULL) + DestroySprite(sprite); + FREE_AND_SET_NULL(gUnknown_203F400[i]); + } + for (i = 0; i < 4; i++) + { + sprite = &gSprites[*gUnknown_203F42C[i]]; + if (sprite != NULL) + DestroySprite(sprite); + FREE_AND_SET_NULL(gUnknown_203F42C[i]); + } +} + +void sub_81542EC(u8 id, bool8 invisible) +{ + gSprites[*gUnknown_203F400[id]].invisible = invisible; +} + +static void sub_8154324(bool8 invisible) +{ + u8 i; + for (i = 0; i < 4; i++) + gSprites[*gUnknown_203F42C[i]].invisible = invisible; +} + +void sub_8154370(u8 id, u8 y) +{ + gSprites[*gUnknown_203F400[id]].pos1.y = y * 8; +} + +void sub_8154398(u16 id, u8 frameNum) +{ + StartSpriteAnim(&gSprites[*gUnknown_203F400[id]], frameNum); +} + +// Unused +static void sub_81543C4(u8 spriteId) +{ + gSprites[spriteId].pos1.x = 20 * spriteId + 50; + gSprites[spriteId].pos1.y = 50; +} + +// Gamefreak made a mistake there and goes out of bounds for the data array as it holds 8 elements +// in turn overwriting sprite's subpriority and subsprites fields. +#if defined(BUGFIX) +#define sKeepPosX data[1] +#else +#define sKeepPosX data[10] +#endif // NONMATCHING + +static void sub_81543E8(struct Sprite * sprite) +{ + u8 i; + static const u8 array[] = {30, 20}; + + if (sprite->sKeepPosX != TRUE) + { + for (i = 0; i < 2; i++) + { + if (++gUnknown_203F3F8[i][1] > array[i]) + { + sprite->pos1.x--; + gUnknown_203F3F8[i][1] = 0; + } + } + } +} + +static const s16 gUnknown_8478E0E[][2] = {{230, 55}, {30, 74}}; + +void sub_8154438(void) +{ + u8 i; + void *ptr = AllocZeroed(0x400); + struct SpritePalette sprPal = {sDodrioBerryPlatformPal, 6}; + + LZ77UnCompWram(sDodrioBerryPlatformGfx, ptr); + if (ptr != NULL) // This should be one line up + { + struct SpriteSheet sprSheet = {ptr, 0x400, 5}; + struct SpriteTemplate sprTemplate = + { + .tileTag = 5, + .paletteTag = 6, + .oam = &sOamData_8478CB0, + .anims = sSpriteAnimTable_8478D8C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81543E8, + }; + + LoadSpriteSheet(&sprSheet); + LoadSpritePalette(&sprPal); + for (i = 0; i < 2; i++) + { + gUnknown_203F3F8[i] = AllocZeroed(4); + *gUnknown_203F3F8[i] = CreateSprite(&sprTemplate, gUnknown_8478E0E[i][0], gUnknown_8478E0E[i][1], 4); + } + } + + Free(ptr); +} + +void sub_81544F0(void) +{ + u8 i; + for (i = 0; i < 2; i++) + { + struct Sprite * sprite = &gSprites[*gUnknown_203F3F8[i]]; + sprite->sKeepPosX = TRUE; + sprite->pos1.x = gUnknown_8478E0E[i][0]; + sprite->pos1.y = gUnknown_8478E0E[i][1]; + } +} + +void sub_8154540(void) +{ + u8 i; + for (i = 0; i < 2; i++) + { + struct Sprite * sprite = &gSprites[*gUnknown_203F3F8[i]]; + sprite->sKeepPosX = FALSE; + } +} + +void sub_8154578(void) +{ + u8 i; + for (i = 0; i < 2; i++) + { + struct Sprite * sprite = &gSprites[*gUnknown_203F3F8[i]]; + if (sprite) + DestroySprite(sprite); + FREE_AND_SET_NULL(gUnknown_203F3F8[i]); + } +} + +void sub_81545BC(bool8 invisible) +{ + u8 i; + for (i = 0; i < 2; i++) + gSprites[*gUnknown_203F3F8[i]].invisible = invisible; +} + +#undef sKeepPosX + +static s16 sub_8154608(u8 arg0, u8 arg1) +{ + s16 x = 0; + switch (arg1) + { + case 1: + x = 15; + break; + case 2: + switch (arg0) + { + case 0: x = 12; break; + case 1: x = 18; break; + } + break; + case 3: + switch (arg0) + { + case 0: x = 15; break; + case 1: x = 21; break; + case 2: x = 9; break; + } + break; + case 4: + switch (arg0) + { + case 0: x = 12; break; + case 1: x = 18; break; + case 2: x = 24; break; + case 3: x = 6; break; + } + break; + case 5: + switch (arg0) + { + case 0: x = 15; break; + case 1: x = 21; break; + case 2: x = 27; break; + case 3: x = 3; break; + case 4: x = 9; break; + } + break; + } + + return x * 8; +} + +void sub_81546C0(void) +{ + u8 i; + for (i = 0; i < 11; i++) + { + sub_81542EC(i, TRUE); + sub_8154370(i, 1); + } + sub_81540DC(FALSE); +} + +static void sub_81546EC(u8 frameId) +{ + LoadBgTiles(0, GetUserFrameGraphicsInfo(frameId)->tiles, 0x120, 1); + LoadPalette(GetUserFrameGraphicsInfo(frameId)->palette, 0xA0, 0x20); +} + +static void sub_8154720(void) +{ + TextWindow_SetStdFrame0_WithPal(0, 0xA, 0xB0); +} + +void sub_8154730(void) +{ + gUnknown_203F440->finished = FALSE; + gUnknown_203F440->state = 0; + gUnknown_203F440->unk3018 = 0; + gUnknown_203F440->unk3020 = 0; + gUnknown_203F440->unk3024 = 0; +} + +static void sub_8154768(const struct WindowTemplate * winTempl) +{ + u8 pal = 0xA; + + FillBgTilemapBufferRect(0, 1, winTempl->tilemapLeft - 1, winTempl->tilemapTop - 1, 1, 1, pal); + FillBgTilemapBufferRect(0, 2, winTempl->tilemapLeft, winTempl->tilemapTop - 1, winTempl->width, 1, pal); + FillBgTilemapBufferRect(0, 3, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop - 1, 1, 1, pal); + FillBgTilemapBufferRect(0, 4, winTempl->tilemapLeft - 1, winTempl->tilemapTop, 1, winTempl->height, pal); + FillBgTilemapBufferRect(0, 6, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop, 1, winTempl->height, pal); + FillBgTilemapBufferRect(0, 7, winTempl->tilemapLeft - 1, winTempl->tilemapTop + winTempl->height, 1, 1, pal); + FillBgTilemapBufferRect(0, 8, winTempl->tilemapLeft, winTempl->tilemapTop + winTempl->height, winTempl->width, 1, pal); + FillBgTilemapBufferRect(0, 9, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop + winTempl->height, 1, 1, pal); +} + +static void sub_8154868(const struct WindowTemplate * winTempl) +{ + u8 pal = 0xB; + + FillBgTilemapBufferRect(0, 10, winTempl->tilemapLeft - 1, winTempl->tilemapTop - 1, 1, 1, pal); + FillBgTilemapBufferRect(0, 11, winTempl->tilemapLeft, winTempl->tilemapTop - 1, winTempl->width, 1, pal); + FillBgTilemapBufferRect(0, 12, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop - 1, 1, 1, pal); + FillBgTilemapBufferRect(0, 13, winTempl->tilemapLeft - 1, winTempl->tilemapTop, 1, winTempl->height, pal); + FillBgTilemapBufferRect(0, 15, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop, 1, winTempl->height, pal); + FillBgTilemapBufferRect(0, 16, winTempl->tilemapLeft - 1, winTempl->tilemapTop + winTempl->height, 1, 1, pal); + FillBgTilemapBufferRect(0, 17, winTempl->tilemapLeft, winTempl->tilemapTop + winTempl->height, winTempl->width, 1, pal); + FillBgTilemapBufferRect(0, 18, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop + winTempl->height, 1, 1, pal); +} + +void sub_8154968(struct DodrioSubstruct_0160 * ptr) +{ + gUnknown_203F440 = ptr; + gUnknown_203F440->finished = FALSE; + gUnknown_203F440->state = 0; + gUnknown_203F440->unk3018 = 0; + gUnknown_203F440->unk3020 = 0; + gUnknown_203F440->unk3024 = 0; + gUnknown_203F440->unk3004 = CreateTask(sub_8154A08, 3); + sub_8155E24(sub_8154A2C); +} + +static void sub_81549C8(void) +{ + FreeAllWindowBuffers(); +} + +struct WinCoords +{ + u8 left; + u8 top; +}; + +static const u8 sTextColorTable[][3] = +{ + { + TEXT_COLOR_WHITE, + TEXT_COLOR_DARK_GREY, + TEXT_COLOR_LIGHT_GREY + }, { + TEXT_COLOR_WHITE, + TEXT_COLOR_RED, + TEXT_COLOR_LIGHT_RED + }, { + TEXT_COLOR_WHITE, + TEXT_COLOR_BLUE, + TEXT_COLOR_LIGHT_BLUE + }, { + TEXT_COLOR_WHITE, + TEXT_COLOR_GREEN, + TEXT_COLOR_LIGHT_GREEN + } +}; + +static const struct WinCoords sUnknown_8478E44[] = {{12, 6}}; +static const struct WinCoords sUnknown_8478E48[] = {{9, 10}, {15, 6}}; +static const struct WinCoords sUnknown_8478E50[] = {{12, 6}, {18, 10}, {6, 10}}; +static const struct WinCoords sUnknown_8478E5C[] = {{9, 10}, {15, 6}, {21, 10}, {3, 6}}; +static const struct WinCoords sUnknown_8478E6C[] = {{12, 6}, {18, 10}, {23, 6}, {1, 6}, {6, 10}}; + +static const struct WinCoords * const sUnknown_8478E80[] = +{ + sUnknown_8478E44, + sUnknown_8478E48, + sUnknown_8478E50, + sUnknown_8478E5C, + sUnknown_8478E6C, +}; + +static const u8 *const sUnknown_8478E94[] = +{ + gText_1Colon, + gText_2Colon, + gText_3Colon, + gText_4Colon, + gText_5Colon, +}; + +static const u16 sUnknown_8478EA8[] = {92, 132, 172, 212}; +static const u16 sUnknown_8478EB0[] = {30, 45, 60, 75, 90}; +static const u16 sUnknown_8478EBA[] = {12, 28, 44, 60, 76}; + +struct +{ + u8 id; + void (*func)(void); +} const gUnknown_8478EC4[] = +{ + {0, sub_8154A2C}, + {1, sub_8154B34}, + {2, sub_8154F80}, + {3, sub_81556E0}, + {4, sub_8155A78}, + {5, sub_8155B4C}, + {6, sub_8155C2C}, + {7, sub_8155C80}, + {8, unused_0}, + {9, nullsub_98}, +}; + +void sub_81549D4(u8 arg0) +{ + u8 i; + for (i = 0; i < 10; i++) + { + if (gUnknown_8478EC4[i].id == arg0) + sub_8155E24(gUnknown_8478EC4[i].func); + } +} + +static void sub_8154A08(u8 taskId) +{ + if (!gUnknown_203F440->finished) + sub_8155E54()(); +} + +static void sub_8154A2C(void) +{ + switch (gUnknown_203F440->state) + { + case 0: + sub_8155EA0(); + gUnknown_203F440->state++; + break; + case 1: + if (sub_8155FE0() == TRUE) + gUnknown_203F440->state++; + break; + case 2: + CopyToBgTilemapBuffer(3, sDodrioBerryBgTilemap1, 0, 0); + CopyToBgTilemapBuffer(1, sDodrioBerryBgTilemap2Left, 0, 0); + CopyToBgTilemapBuffer(2, sDodrioBerryBgTilemap2Right, 0, 0); + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + gUnknown_203F440->state++; + break; + case 3: + ShowBg(0); + ShowBg(3); + ShowBg(1); + ShowBg(2); + gUnknown_203F440->state++; + break; + case 4: + sub_81546EC(gSaveBlock2Ptr->optionsWindowFrameType); + sub_8154720(); + gUnknown_203F440->state++; + break; + default: + gUnknown_203F440->finished = TRUE; + break; + } +} + +static void sub_8154B34(void) +{ + u8 i, playersCount, id, colorsId, *name; + u32 left; + struct WindowTemplate window; + const struct WinCoords * ptr; + + switch (gUnknown_203F440->state) + { + case 0: + playersCount = sub_81533B4(); + ptr = sUnknown_8478E80[playersCount - 1]; + window.bg = 0; + window.width = 7; + window.height = 2; + window.paletteNum = 0xD; + window.baseBlock = 0x13; + for (i = 0; i < playersCount; ptr++, i++) + { + colorsId = 0; + id = sub_81537AC(i); + left = (56 - GetStringWidth(0, sub_81533C4(id), -1)) / 2u; + window.tilemapLeft = ptr->left; + window.tilemapTop = ptr->top; + gUnknown_203F440->unk3008[i] = AddWindow(&window); + ClearWindowTilemap(gUnknown_203F440->unk3008[i]); + FillWindowPixelBuffer(gUnknown_203F440->unk3008[i], PIXEL_FILL(1)); + if (id == GetMultiplayerId()) + colorsId = 2; + name = sub_81533C4(id); + AddTextPrinterParameterized3(gUnknown_203F440->unk3008[i], 0, left, 1, sTextColorTable[colorsId], -1, name); + CopyWindowToVram(gUnknown_203F440->unk3008[i], 2); + window.baseBlock += 0xE; + sub_8154868(&window); + } + gUnknown_203F440->state++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + playersCount = sub_81533B4(); + for (i = 0; i < playersCount; i++) + PutWindowTilemap(gUnknown_203F440->unk3008[i]); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->state++; + } + break; + default: + if (++gUnknown_203F440->state > 180) + { + playersCount = sub_81533B4(); + for (i = 0; i < playersCount; i++) + { + ClearWindowTilemap(gUnknown_203F440->unk3008[i]); + RemoveWindow(gUnknown_203F440->unk3008[i]); + } + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; + } + break; + } +} + +static void sub_8154D9C(u8 playersCount_) +{ + u8 i, r8 = 0, r6 = 0; + u8 playersCount = playersCount_; // Pointless variable, I know, but it's needed to match. + u8 *name; + u32 x, numWidth; + u8 numString[32]; + u8 array[5] = {0, 1, 2, 3, 4}; + struct DodrioSubstruct_3308 temp, structArray[5]; + + for (i = 0; i < playersCount; i++) + { + array[i] = i; + sub_81536A0(&temp, i); + structArray[i] = temp; + } + + if (sub_81534AC() != 0) + { + do + { + for (i = 0; i < playersCount; i++) + { + if (structArray[i].unk0 == r8) + { + array[r6] = i; + r6++; + } + } + r8 = r6; + } while (r6 < playersCount); + } + + for (i = 0; i < playersCount; i++) + { + if (structArray[i].unk4 == 0) + structArray[i].unk0 = playersCount - 1; + } + + x = 216 - GetStringWidth(0, gText_SpacePoints, 0); + for (i = 0; i < playersCount; i++) + { + u8 colorsId = 0; + u8 id = array[i]; + u32 points = structArray[id].unk4; + + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, sUnknown_8478E94[structArray[id].unk0], 8, sUnknown_8478EBA[i], -1, NULL); + if (id == GetMultiplayerId()) + colorsId = 2; + name = sub_81533C4(id); + AddTextPrinterParameterized3(gUnknown_203F440->unk3008[1], 0, 28, sUnknown_8478EBA[i], sTextColorTable[colorsId], -1, name); + ConvertIntToDecimalStringN(numString, points, STR_CONV_MODE_RIGHT_ALIGN, 7); + numWidth = GetStringWidth(0, numString, -1); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, numString, x - 35, sUnknown_8478EBA[i], -1, NULL); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, gText_SpacePoints, x, sUnknown_8478EBA[i], -1, NULL); + } +} + +static void sub_8154F80(void) +{ + u8 i, j, itemGiveRet, playersCount = sub_81533B4(); + u8 *name; + u32 strWidth, x; + u8 sp0C[100]; + u8 sp70[20]; + + switch (gUnknown_203F440->state) + { + case 0: + sub_81535B0(); + gUnknown_203F440->unk301C = 0; + gUnknown_203F440->state++; + break; + case 1: + gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_8475674[0]); + gUnknown_203F440->unk3008[1] = AddWindow(&sUnknown_8475674[1]); + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + ClearWindowTilemap(gUnknown_203F440->unk3008[1]); + sub_8154868(&sUnknown_8475674[0]); + sub_8154868(&sUnknown_8475674[1]); + gUnknown_203F440->state++; + break; + case 2: + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + FillWindowPixelBuffer(gUnknown_203F440->unk3008[1], PIXEL_FILL(1)); + strWidth = GetStringWidth(0, gText_BerryPickingResults, -1); + x = (224 - strWidth) / 2; + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 0, gText_BerryPickingResults, x, 2, -1, NULL); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, gText_10P30P50P50P, 68, 16, -1, NULL); + for (i = 0; i < playersCount; i++) + { + u8 colorsId = 0; + if (i == GetMultiplayerId()) + colorsId = 2; + + name = sub_81533C4(i); + AddTextPrinterParameterized3(gUnknown_203F440->unk3008[1], 0, 2, sUnknown_8478EB0[i], sTextColorTable[colorsId], -1, name); + for (j = 0; j < 4; j++) + { + u32 width; + u16 result1 = Min(sub_8153404(i, j), 9999); + u16 result2 = Min(sub_81534F0(j), 9999); + + ConvertIntToDecimalStringN(sp0C, result1, STR_CONV_MODE_LEFT_ALIGN, 4); + width = GetStringWidth(0, sp0C, -1); + if (result2 == result1 && result2 != 0) + AddTextPrinterParameterized3(gUnknown_203F440->unk3008[1], 0, sUnknown_8478EA8[j] - width, sUnknown_8478EB0[i], sTextColorTable[1], -1, sp0C); + else + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, sp0C, sUnknown_8478EA8[j] - width, sUnknown_8478EB0[i], -1, NULL); + } + } + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + gUnknown_203F440->state++; + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + PutWindowTilemap(gUnknown_203F440->unk3008[1]); + } + CopyBgTilemapBufferToVram(0); + sub_8154324(FALSE); + gUnknown_203F440->state++; + break; + case 4: + if (++gUnknown_203F440->unk301C >= 30 && JOY_NEW(A_BUTTON)) + { + gUnknown_203F440->unk301C = 0; + PlaySE(SE_SELECT); + sub_8154324(TRUE); + gUnknown_203F440->state++; + } + break; + case 5: + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + FillWindowPixelBuffer(gUnknown_203F440->unk3008[1], PIXEL_FILL(1)); + strWidth = GetStringWidth(0, gText_AnnouncingRankings, -1); + x = (224 - strWidth) / 2; + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 0, gText_AnnouncingRankings, x, 2, -1, NULL); + gUnknown_203F440->state++; + break; + case 6: + sub_8154D9C(playersCount); + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + gUnknown_203F440->state++; + break; + case 7: + if (!IsDma3ManagerBusyWithBgCopy()) + { + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + PutWindowTilemap(gUnknown_203F440->unk3008[1]); + } + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->state++; + break; + case 8: + if (++gUnknown_203F440->unk301C >= 30 && JOY_NEW(A_BUTTON)) + { + gUnknown_203F440->unk301C = 0; + PlaySE(SE_SELECT); + if (sub_81534AC() < 3000) + { + gUnknown_203F440->state = 127; + } + else + { + StopMapMusic(); + gUnknown_203F440->state++; + } + + FillBgTilemapBufferRect_Palette0(0, 0, 0, 5, 30, 15); + RemoveWindow(gUnknown_203F440->unk3008[1]); + gUnknown_203F440->unk3008[1] = AddWindow(&sUnknown_8475684); + ClearWindowTilemap(gUnknown_203F440->unk3008[1]); + sub_8154868(&sUnknown_8475684); + } + break; + case 9: + PlayNewMapMusic(MUS_FANFA1); + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + FillWindowPixelBuffer(gUnknown_203F440->unk3008[1], PIXEL_FILL(1)); + strWidth = GetStringWidth(0, gText_AnnouncingPrizes, -1); + x = (224 - strWidth) / 2; + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 0, gText_AnnouncingPrizes, x, 2, -1, NULL); + DynamicPlaceholderTextUtil_Reset(); + CopyItemName(sub_8153390(), sp70); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sp70); + DynamicPlaceholderTextUtil_ExpandPlaceholders(sp0C, gText_FirstPlacePrize); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, sp0C, 8, 2, -1, NULL); + itemGiveRet = sub_815372C(); + if (itemGiveRet != 0 && itemGiveRet != 3) + { + DynamicPlaceholderTextUtil_Reset(); + CopyItemName(sub_8153390(), sp70); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sp70); + if (itemGiveRet == 2) + DynamicPlaceholderTextUtil_ExpandPlaceholders(sp0C, gText_CantHoldAnyMore); + else if (itemGiveRet == 1) + DynamicPlaceholderTextUtil_ExpandPlaceholders(sp0C, gText_FilledStorageSpace); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, sp0C, 8, 40, -1, NULL); + } + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + gUnknown_203F440->state++; + break; + case 10: + if (!IsDma3ManagerBusyWithBgCopy()) + { + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + PutWindowTilemap(gUnknown_203F440->unk3008[1]); + } + CopyBgTilemapBufferToVram(0); + FadeOutAndFadeInNewMapMusic(MUS_WIN_YASEI, 20, 10); + gUnknown_203F440->state++; + break; + case 11: + if (++gUnknown_203F440->unk301C >= 30 && JOY_NEW(A_BUTTON)) + { + gUnknown_203F440->unk301C = 0; + PlaySE(SE_SELECT); + gUnknown_203F440->state++; + } + break; + default: + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + ClearWindowTilemap(gUnknown_203F440->unk3008[1]); + RemoveWindow(gUnknown_203F440->unk3008[0]); + RemoveWindow(gUnknown_203F440->unk3008[1]); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; + break; + } +} + +static void sub_81556E0(void) +{ + u8 y; + + switch (gUnknown_203F440->state) + { + case 0: + gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_847568C[0]); + gUnknown_203F440->unk3008[1] = AddWindow(&sUnknown_847568C[1]); + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + ClearWindowTilemap(gUnknown_203F440->unk3008[1]); + sub_8154868(&sUnknown_847568C[0]); + sub_8154768(&sUnknown_847568C[1]); + gUnknown_203F440->state++; + gUnknown_203F440->unk3020 = 0; + gUnknown_203F440->unk3024 = 0; + break; + case 1: + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + FillWindowPixelBuffer(gUnknown_203F440->unk3008[1], PIXEL_FILL(1)); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_WantToPlayAgain, 0, 6, -1, NULL); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_Yes, 8, 2, -1, NULL); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_No, 8, 16, -1, NULL); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_SelectorArrow2, 0, 2, -1, NULL); + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + gUnknown_203F440->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + PutWindowTilemap(gUnknown_203F440->unk3008[1]); + } + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->state++; + break; + case 3: + y = gUnknown_203F440->unk3020; + if (y == 0) + y = 1; + FillWindowPixelBuffer(gUnknown_203F440->unk3008[1], PIXEL_FILL(1)); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_Yes, 8, 2, -1, NULL); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_No, 8, 16, -1, NULL); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_SelectorArrow2, 0, y == 1 ? 2 : 16, -1, NULL); + CopyWindowToVram(gUnknown_203F440->unk3008[1], 3); + // Increment state only if A or B button have been pressed. + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + if (gUnknown_203F440->unk3020 == 0) + gUnknown_203F440->unk3020 = 1; + gUnknown_203F440->state++; + } + else if (JOY_NEW(DPAD_UP | DPAD_DOWN)) + { + PlaySE(SE_SELECT); + switch (gUnknown_203F440->unk3020) + { + case 0: + gUnknown_203F440->unk3020 = 2; + break; + case 1: + gUnknown_203F440->unk3020 = 2; + break; + case 2: + gUnknown_203F440->unk3020 = 1; + break; + } + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + gUnknown_203F440->unk3020 = 2; + gUnknown_203F440->state++; + } + break; + default: + gUnknown_203F440->unk3024 = gUnknown_203F440->unk3020; + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + ClearWindowTilemap(gUnknown_203F440->unk3008[1]); + RemoveWindow(gUnknown_203F440->unk3008[0]); + RemoveWindow(gUnknown_203F440->unk3008[1]); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; + break; + } +} + +static void sub_8155A78(void) +{ + switch (gUnknown_203F440->state) + { + case 0: + DrawDialogueFrame(0, FALSE); + AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + gUnknown_203F440->state++; + break; + case 1: + CopyWindowToVram(0, 3); + gUnknown_203F440->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + CreateTask(sub_80DA634, 0); + gUnknown_203F440->state++; + } + break; + case 3: + if (!FuncIsActiveTask(sub_80DA634)) + gUnknown_203F440->state++; + break; + default: + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; + break; + } +} + +static void sub_8155B4C(void) +{ + switch (gUnknown_203F440->state) + { + case 0: + gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_84756A4); + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + sub_8154868(&sUnknown_84756A4); + gUnknown_203F440->state++; + break; + case 1: + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_CommunicationStandby3, 0, 6, -1, NULL); + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + gUnknown_203F440->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->state++; + break; + default: + gUnknown_203F440->finished = TRUE; + break; + } +} + +static void sub_8155C2C(void) +{ + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + RemoveWindow(gUnknown_203F440->unk3008[0]); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; +} + +static void sub_8155C80(void) +{ + switch (gUnknown_203F440->state) + { + case 0: + gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_847569C); + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + sub_8154868(&sUnknown_847569C); + gUnknown_203F440->state++; + gUnknown_203F440->unk301C = 0; + gUnknown_203F440->unk3020 = 0; + gUnknown_203F440->unk3024 = 0; + break; + case 1: + FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); + AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_SomeoneDroppedOut, 0, 6, TEXT_SPEED_FF, NULL); + CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + gUnknown_203F440->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + PutWindowTilemap(gUnknown_203F440->unk3008[0]); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->state++; + break; + case 3: + if (++gUnknown_203F440->unk301C >= 120) + gUnknown_203F440->state++; + break; + default: + gUnknown_203F440->unk3024 = 5; + ClearWindowTilemap(gUnknown_203F440->unk3008[0]); + RemoveWindow(gUnknown_203F440->unk3008[0]); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gUnknown_203F440->finished = TRUE; + break; + } +} + +static void unused_0(void) +{ + DestroyTask(gUnknown_203F440->unk3004); + gUnknown_203F440->finished = TRUE; +} + +static void nullsub_98(void) +{ + +} + +static void sub_8155E24(void (*func)(void)) +{ + gUnknown_203F440->state = 0; + gUnknown_203F440->finished = FALSE; + gUnknown_203F440->unk3028 = func; +} + +void (*sub_8155E54(void))(void) +{ + return gUnknown_203F440->unk3028; +} + +bool32 sub_8155E68(void) +{ + if (gUnknown_203F440->finished == TRUE) + return FALSE; + else + return TRUE; +} + +u8 sub_8155E8C(void) +{ + return gUnknown_203F440->unk3024; +} + +static void sub_8155EA0(void) +{ + DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000); + DmaClear32(3,(void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sUnknown_847565C, ARRAY_COUNT(sUnknown_847565C)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitStandardTextBoxWindows(); + ResetBg0(); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + SetBgTilemapBuffer(3, gUnknown_203F440->tilemapBuffers[0]); + SetBgTilemapBuffer(1, gUnknown_203F440->tilemapBuffers[1]); + SetBgTilemapBuffer(2, gUnknown_203F440->tilemapBuffers[2]); +} + +static bool32 sub_8155FE0(void) +{ + switch (gUnknown_203F440->unk3018) + { + case 0: + LoadPalette(sDodrioBerryBgPal1, 0, sizeof(sDodrioBerryBgPal1)); + break; + case 1: + ResetTempTileDataBuffers(); + break; + case 2: + DecompressAndCopyTileDataToVram(3, sDodrioBerryBgGfx1, 0, 0, 0); + break; + case 3: + DecompressAndCopyTileDataToVram(1, sDodrioBerryBgGfx2, 0, 0, 0); + break; + case 4: + if (FreeTempTileDataBuffersIfPossible() == TRUE) + return FALSE; + break; + case 5: + LoadPalette(stdpal_get(3), 0xD0, 0x20); + break; + default: + gUnknown_203F440->unk3018 = 0; + return TRUE; + } + + gUnknown_203F440->unk3018++; + return FALSE; +} diff --git a/src/dodrio_berry_picking_3.c b/src/dodrio_berry_picking_3.c new file mode 100644 index 000000000..609d3ba7e --- /dev/null +++ b/src/dodrio_berry_picking_3.c @@ -0,0 +1,659 @@ +#include "global.h" +#include "dodrio_berry_picking.h" +#include "link.h" +#include "link_rfu.h" + +void sub_815A5BC(s32 a0) +{ + struct Padded_U8 data[2]; + data[0].value = 1; + data[1].value = a0; + RfuPrepareSend0x2f00(data); +} + +u8 sub_815A5E8(s32 a0) +{ + u8 * r1; + if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + return 0; + r1 = (u8 *)&gRecvCmds[a0][1]; + if (r1[0] == 1) + return r1[4]; + return 0; +} + +struct UnkPacket2 +{ + u8 id; + u8 unk1_0:4; + u8 unk1_1:4; + u8 unk2_0:4; + u8 unk2_1:4; + u8 unk3_0:4; + u8 unk3_1:4; + u8 unk4_0:4; + u8 unk4_1:4; + u8 unk5_0:4; + u8 unk5_1:4; + u8 unk6_0:2; + u8 unk6_1:2; + u8 unk6_2:2; + u8 unk6_3:2; + u8 unk7_0:2; + u8 unk7_1:2; + u8 unk7_2:2; + u8 unk7_3:2; + u8 unk8_0:2; + u8 unk8_1:2; + u8 unk8_2:2; + u8 unk8_3:2; + u8 unk9_0:2; + u8 unk9_1:2; + u8 unk9_2:2; + u8 unk9_3:1; + u8 unk9_4:1; + u8 unkA_0:1; + u8 unkA_1:1; + u8 unkA_2:1; + u8 unkA_3:5; + u8 unkB_0:1; + u8 unkB_1:1; + u8 unkB_2:1; + u8 unkB_3:1; + u8 unkB_4:1; + u8 unkB_5:1; + u8 unkB_6:1; +}; + +// Yeah not even attempting this lol +#ifdef NONMATCHING +static void sub_815A61C(struct DodrioSubstruct_31A0 * arg0, struct DodrioSubstruct_31A0_2C * arg1, struct DodrioSubstruct_31A0_2C * arg2, struct DodrioSubstruct_31A0_2C * arg3, struct DodrioSubstruct_31A0_2C * arg4, struct DodrioSubstruct_31A0_2C * arg5, u8 arg6, u32 arg7, u32 arg8) +{ + struct UnkPacket2 packet; + struct DodrioSubstruct_31A0_14 * ptr = &arg0->unk14; + + packet.id = 2; + packet.unk1_0 = ptr->unkB[0]; + packet.unk1_1 = ptr->unkB[1]; + packet.unk2_0 = ptr->unkB[2]; + packet.unk2_1 = ptr->unkB[3]; + packet.unk3_0 = ptr->unkB[4]; + packet.unk3_1 = ptr->unkB[5]; + packet.unk4_0 = ptr->unkB[6]; + packet.unk4_1 = ptr->unkB[7]; + packet.unk5_0 = ptr->unkB[8]; + packet.unk5_1 = ptr->unkB[9]; + + packet.unk6_0 = ptr->unk0[0]; + packet.unk6_1 = ptr->unk0[1]; + packet.unk6_2 = ptr->unk0[2]; + packet.unk6_3 = ptr->unk0[3]; + packet.unk7_0 = ptr->unk0[4]; + packet.unk7_1 = ptr->unk0[5]; + packet.unk7_2 = ptr->unk0[6]; + packet.unk7_3 = ptr->unk0[7]; + packet.unk8_0 = ptr->unk0[8]; + packet.unk8_1 = ptr->unk0[9]; + + packet.unk8_2 = arg1->unk0; + packet.unk8_3 = arg2->unk0; + packet.unk9_0 = arg3->unk0; + packet.unk9_1 = arg4->unk0; + packet.unk9_2 = arg5->unk0; + + packet.unk9_3 = arg1->unk4; + packet.unk9_4 = arg2->unk4; + packet.unkA_0 = arg3->unk4; + packet.unkA_1 = arg4->unk4; + packet.unkA_2 = arg5->unk4; + + packet.unkB_2 = arg1->unk8; + packet.unkB_3 = arg2->unk8; + packet.unkB_4 = arg3->unk8; + packet.unkB_5 = arg4->unk8; + packet.unkB_6 = arg5->unk8; + + packet.unkA_3 = arg6; + packet.unkB_1 = arg7; + packet.unkB_0 = arg8; + RfuPrepareSend0x2f00(&packet); +} +#else +NAKED +void sub_815A61C(struct DodrioSubstruct_31A0 * arg0, struct DodrioSubstruct_31A0_2C * arg1, struct DodrioSubstruct_31A0_2C * arg2, struct DodrioSubstruct_31A0_2C * arg3, struct DodrioSubstruct_31A0_2C * arg4, struct DodrioSubstruct_31A0_2C * arg5, u8 arg6, u32 arg7, u32 arg8) +{ + asm_unified(" push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x20\n\ + ldr r4, [sp, 0x48]\n\ + lsls r4, 24\n\ + str r4, [sp, 0x1C]\n\ + movs r4, 0x14\n\ + adds r4, r0\n\ + mov r9, r4\n\ + mov r5, sp\n\ + movs r4, 0x2\n\ + strb r4, [r5]\n\ + mov r10, sp\n\ + mov r5, r9\n\ + ldrb r4, [r5, 0xB]\n\ + movs r7, 0xF\n\ + adds r5, r7, 0\n\ + ands r5, r4\n\ + mov r6, r10\n\ + ldrb r6, [r6, 0x1]\n\ + mov r8, r6\n\ + movs r4, 0x10\n\ + negs r4, r4\n\ + mov r6, r8\n\ + ands r4, r6\n\ + orrs r4, r5\n\ + mov r5, r10\n\ + strb r4, [r5, 0x1]\n\ + mov r8, sp\n\ + mov r6, r9\n\ + ldrb r5, [r6, 0xC]\n\ + lsls r5, 4\n\ + ands r4, r7\n\ + orrs r4, r5\n\ + mov r5, r8\n\ + strb r4, [r5, 0x1]\n\ + ldrb r5, [r6, 0xD]\n\ + movs r6, 0xF\n\ + ands r5, r6\n\ + mov r4, r10\n\ + ldrb r4, [r4, 0x2]\n\ + mov r8, r4\n\ + movs r4, 0x10\n\ + negs r4, r4\n\ + mov r6, r8\n\ + ands r4, r6\n\ + orrs r4, r5\n\ + mov r5, r10\n\ + strb r4, [r5, 0x2]\n\ + mov r8, sp\n\ + mov r6, r9\n\ + ldrb r5, [r6, 0xE]\n\ + lsls r5, 4\n\ + ands r4, r7\n\ + orrs r4, r5\n\ + mov r5, r8\n\ + strb r4, [r5, 0x2]\n\ + ldrb r5, [r6, 0xF]\n\ + movs r6, 0xF\n\ + ands r5, r6\n\ + mov r4, r10\n\ + ldrb r4, [r4, 0x3]\n\ + mov r8, r4\n\ + movs r4, 0x10\n\ + negs r4, r4\n\ + mov r6, r8\n\ + ands r4, r6\n\ + orrs r4, r5\n\ + mov r5, r10\n\ + strb r4, [r5, 0x3]\n\ + mov r8, sp\n\ + mov r6, r9\n\ + ldrb r5, [r6, 0x10]\n\ + lsls r5, 4\n\ + ands r4, r7\n\ + orrs r4, r5\n\ + mov r5, r8\n\ + strb r4, [r5, 0x3]\n\ + ldrb r5, [r6, 0x11]\n\ + movs r6, 0xF\n\ + ands r5, r6\n\ + mov r4, r10\n\ + ldrb r4, [r4, 0x4]\n\ + mov r8, r4\n\ + movs r4, 0x10\n\ + negs r4, r4\n\ + mov r6, r8\n\ + ands r4, r6\n\ + orrs r4, r5\n\ + mov r5, r10\n\ + strb r4, [r5, 0x4]\n\ + mov r8, sp\n\ + mov r6, r9\n\ + ldrb r5, [r6, 0x12]\n\ + lsls r5, 4\n\ + ands r4, r7\n\ + orrs r4, r5\n\ + mov r5, r8\n\ + strb r4, [r5, 0x4]\n\ + ldrb r4, [r6, 0x13]\n\ + movs r6, 0xF\n\ + ands r4, r6\n\ + mov r6, r8\n\ + ldrb r5, [r6, 0x5]\n\ + movs r6, 0x10\n\ + negs r6, r6\n\ + ands r6, r5\n\ + orrs r6, r4\n\ + str r6, [sp, 0xC]\n\ + mov r4, r8\n\ + strb r6, [r4, 0x5]\n\ + mov r5, sp\n\ + mov r6, r9\n\ + ldrb r4, [r6, 0x14]\n\ + lsls r4, 4\n\ + ldr r6, [sp, 0xC]\n\ + ands r6, r7\n\ + orrs r6, r4\n\ + strb r6, [r5, 0x5]\n\ + mov r7, sp\n\ + movs r4, 0x3\n\ + mov r8, r4\n\ + ldrb r0, [r0, 0x14]\n\ + mov r5, r8\n\ + ands r0, r5\n\ + ldrb r5, [r7, 0x6]\n\ + movs r6, 0x4\n\ + negs r6, r6\n\ + mov r10, r6\n\ + mov r4, r10\n\ + ands r4, r5\n\ + orrs r4, r0\n\ + strb r4, [r7, 0x6]\n\ + mov r5, r9\n\ + ldrb r0, [r5, 0x1]\n\ + mov r6, r8\n\ + ands r0, r6\n\ + lsls r0, 2\n\ + movs r5, 0xD\n\ + negs r5, r5\n\ + ands r5, r4\n\ + orrs r5, r0\n\ + strb r5, [r7, 0x6]\n\ + mov r0, r9\n\ + ldrb r4, [r0, 0x2]\n\ + ands r4, r6\n\ + lsls r4, 4\n\ + movs r0, 0x31\n\ + negs r0, r0\n\ + ands r0, r5\n\ + orrs r0, r4\n\ + strb r0, [r7, 0x6]\n\ + mov r5, sp\n\ + mov r6, r9\n\ + ldrb r4, [r6, 0x3]\n\ + lsls r4, 6\n\ + movs r6, 0x3F\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strb r0, [r5, 0x6]\n\ + mov r4, r9\n\ + ldrb r0, [r4, 0x4]\n\ + mov r5, r8\n\ + ands r0, r5\n\ + ldrb r5, [r7, 0x7]\n\ + mov r4, r10\n\ + ands r4, r5\n\ + orrs r4, r0\n\ + strb r4, [r7, 0x7]\n\ + mov r6, r9\n\ + ldrb r0, [r6, 0x5]\n\ + mov r5, r8\n\ + ands r0, r5\n\ + lsls r0, 2\n\ + movs r5, 0xD\n\ + negs r5, r5\n\ + ands r5, r4\n\ + orrs r5, r0\n\ + strb r5, [r7, 0x7]\n\ + ldrb r4, [r6, 0x6]\n\ + mov r6, r8\n\ + ands r4, r6\n\ + lsls r4, 4\n\ + movs r0, 0x31\n\ + negs r0, r0\n\ + ands r0, r5\n\ + orrs r0, r4\n\ + strb r0, [r7, 0x7]\n\ + mov r5, sp\n\ + mov r6, r9\n\ + ldrb r4, [r6, 0x7]\n\ + lsls r4, 6\n\ + movs r6, 0x3F\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strb r0, [r5, 0x7]\n\ + mov r8, sp\n\ + mov r0, r9\n\ + ldrb r4, [r0, 0x8]\n\ + movs r7, 0x3\n\ + adds r0, r7, 0\n\ + ands r0, r4\n\ + mov r4, r8\n\ + ldrb r5, [r4, 0x8]\n\ + mov r4, r10\n\ + ands r4, r5\n\ + orrs r4, r0\n\ + mov r5, r8\n\ + strb r4, [r5, 0x8]\n\ + mov r6, r9\n\ + ldrb r5, [r6, 0x9]\n\ + adds r0, r7, 0\n\ + ands r0, r5\n\ + lsls r0, 2\n\ + movs r5, 0xD\n\ + negs r5, r5\n\ + ands r5, r4\n\ + orrs r5, r0\n\ + mov r0, r8\n\ + strb r5, [r0, 0x8]\n\ + ldrb r0, [r1]\n\ + adds r4, r7, 0\n\ + ands r4, r0\n\ + lsls r4, 4\n\ + movs r0, 0x31\n\ + negs r0, r0\n\ + ands r0, r5\n\ + orrs r0, r4\n\ + mov r4, r8\n\ + strb r0, [r4, 0x8]\n\ + mov r5, sp\n\ + ldrb r4, [r2]\n\ + lsls r4, 6\n\ + movs r6, 0x3F\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strb r0, [r5, 0x8]\n\ + ldrb r4, [r3]\n\ + adds r0, r7, 0\n\ + ands r0, r4\n\ + ldrb r4, [r5, 0x9]\n\ + mov r6, r10\n\ + ands r6, r4\n\ + orrs r6, r0\n\ + mov r10, r6\n\ + strb r6, [r5, 0x9]\n\ + ldr r0, [sp, 0x40]\n\ + ldrb r4, [r0]\n\ + adds r0, r7, 0\n\ + ands r0, r4\n\ + lsls r0, 2\n\ + movs r4, 0xD\n\ + negs r4, r4\n\ + ands r6, r4\n\ + orrs r6, r0\n\ + str r6, [sp, 0x10]\n\ + strb r6, [r5, 0x9]\n\ + mov r4, sp\n\ + ldr r5, [sp, 0x44]\n\ + ldrb r0, [r5]\n\ + adds r6, r7, 0\n\ + ands r6, r0\n\ + lsls r0, r6, 4\n\ + subs r7, 0x34\n\ + ldr r5, [sp, 0x10]\n\ + ands r7, r5\n\ + orrs r7, r0\n\ + strb r7, [r4, 0x9]\n\ + mov r5, sp\n\ + ldrb r0, [r1, 0x4]\n\ + movs r6, 0x1\n\ + mov r12, r6\n\ + mov r4, r12\n\ + ands r4, r0\n\ + lsls r4, 6\n\ + movs r0, 0x41\n\ + negs r0, r0\n\ + mov r10, r0\n\ + ands r0, r7\n\ + orrs r0, r4\n\ + strb r0, [r5, 0x9]\n\ + ldrb r4, [r2, 0x4]\n\ + lsls r4, 7\n\ + movs r5, 0x7F\n\ + ands r0, r5\n\ + orrs r0, r4\n\ + mov r4, r8\n\ + strb r0, [r4, 0x9]\n\ + ldrb r4, [r3, 0x4]\n\ + mov r0, r12\n\ + ands r0, r4\n\ + mov r5, r8\n\ + ldrb r4, [r5, 0xA]\n\ + movs r7, 0x2\n\ + negs r7, r7\n\ + adds r5, r7, 0\n\ + ands r5, r4\n\ + orrs r5, r0\n\ + mov r6, r8\n\ + strb r5, [r6, 0xA]\n\ + mov r9, sp\n\ + ldr r4, [sp, 0x40]\n\ + ldrb r0, [r4, 0x4]\n\ + mov r4, r12\n\ + ands r4, r0\n\ + lsls r4, 1\n\ + movs r6, 0x3\n\ + negs r6, r6\n\ + mov r8, r6\n\ + mov r0, r8\n\ + ands r0, r5\n\ + orrs r0, r4\n\ + mov r4, r9\n\ + strb r0, [r4, 0xA]\n\ + ldr r6, [sp, 0x44]\n\ + ldrb r5, [r6, 0x4]\n\ + mov r4, r12\n\ + ands r4, r5\n\ + lsls r4, 2\n\ + movs r5, 0x5\n\ + negs r5, r5\n\ + ands r0, r5\n\ + orrs r0, r4\n\ + mov r4, r9\n\ + strb r0, [r4, 0xA]\n\ + mov r4, sp\n\ + ldrb r1, [r1, 0x8]\n\ + mov r0, r12\n\ + ands r0, r1\n\ + lsls r0, 2\n\ + ldrb r1, [r4, 0xB]\n\ + ands r5, r1\n\ + orrs r5, r0\n\ + strb r5, [r4, 0xB]\n\ + ldrb r1, [r2, 0x8]\n\ + mov r0, r12\n\ + ands r0, r1\n\ + lsls r0, 3\n\ + movs r1, 0x9\n\ + negs r1, r1\n\ + ands r1, r5\n\ + orrs r1, r0\n\ + strb r1, [r4, 0xB]\n\ + ldrb r2, [r3, 0x8]\n\ + mov r0, r12\n\ + ands r0, r2\n\ + lsls r0, 4\n\ + movs r2, 0x11\n\ + negs r2, r2\n\ + ands r2, r1\n\ + orrs r2, r0\n\ + strb r2, [r4, 0xB]\n\ + mov r3, sp\n\ + ldr r5, [sp, 0x40]\n\ + ldrb r0, [r5, 0x8]\n\ + mov r1, r12\n\ + ands r1, r0\n\ + lsls r1, 5\n\ + movs r0, 0x21\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r3, 0xB]\n\ + mov r2, sp\n\ + ldrb r1, [r6, 0x8]\n\ + mov r6, r12\n\ + ands r6, r1\n\ + lsls r1, r6, 6\n\ + mov r3, r10\n\ + ands r0, r3\n\ + orrs r0, r1\n\ + strb r0, [r2, 0xB]\n\ + ldr r4, [sp, 0x1C]\n\ + lsrs r3, r4, 21\n\ + ldrb r1, [r2, 0xA]\n\ + movs r0, 0x7\n\ + ands r0, r1\n\ + orrs r0, r3\n\ + strb r0, [r2, 0xA]\n\ + mov r1, sp\n\ + ldr r5, [sp, 0x4C]\n\ + movs r6, 0x1\n\ + ands r5, r6\n\ + lsls r2, r5, 1\n\ + ldrb r0, [r1, 0xB]\n\ + mov r3, r8\n\ + ands r3, r0\n\ + orrs r3, r2\n\ + mov r8, r3\n\ + strb r3, [r1, 0xB]\n\ + mov r0, sp\n\ + ldr r4, [sp, 0x50]\n\ + ands r4, r6\n\ + mov r5, r8\n\ + ands r5, r7\n\ + orrs r5, r4\n\ + strb r5, [r0, 0xB]\n\ + bl RfuPrepareSend0x2f00\n\ + add sp, 0x20\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ +"); +} +#endif + +u32 sub_815A950(u32 unused, struct DodrioSubstruct_31A0 * arg0, struct DodrioSubstruct_31A0_2C * arg1, struct DodrioSubstruct_31A0_2C * arg2, struct DodrioSubstruct_31A0_2C * arg3, struct DodrioSubstruct_31A0_2C * arg4, struct DodrioSubstruct_31A0_2C * arg5, u8 *arg6, u32 *arg7, u32 *arg8) +{ + struct UnkPacket2 * packet; + struct DodrioSubstruct_31A0_14 * ptr = &arg0->unk14; + + if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + return 0; + + packet = (void *)&gRecvCmds[0][1]; + if (packet->id == 2) + { + ptr->unkB[0] = packet->unk1_0; + ptr->unkB[1] = packet->unk1_1; + ptr->unkB[2] = packet->unk2_0; + ptr->unkB[3] = packet->unk2_1; + ptr->unkB[4] = packet->unk3_0; + ptr->unkB[5] = packet->unk3_1; + ptr->unkB[6] = packet->unk4_0; + ptr->unkB[7] = packet->unk4_1; + ptr->unkB[8] = packet->unk5_0; + ptr->unkB[9] = packet->unk5_1; + ptr->unkB[10] = packet->unk1_0; + + ptr->unk0[0] = packet->unk6_0; + ptr->unk0[1] = packet->unk6_1; + ptr->unk0[2] = packet->unk6_2; + ptr->unk0[3] = packet->unk6_3; + ptr->unk0[4] = packet->unk7_0; + ptr->unk0[5] = packet->unk7_1; + ptr->unk0[6] = packet->unk7_2; + ptr->unk0[7] = packet->unk7_3; + ptr->unk0[8] = packet->unk8_0; + ptr->unk0[9] = packet->unk8_1; + ptr->unk0[10] = packet->unk6_0; + + arg1->unk0 = packet->unk8_2; + arg1->unk4 = packet->unk9_3; + arg1->unk8 = packet->unkB_2; + + arg2->unk0 = packet->unk8_3; + arg2->unk4 = packet->unk9_4; + arg2->unk8 = packet->unkB_3; + + arg3->unk0 = packet->unk9_0; + arg3->unk4 = packet->unkA_0; + arg3->unk8 = packet->unkB_4; + + arg4->unk0 = packet->unk9_1; + arg4->unk4 = packet->unkA_1; + arg4->unk8 = packet->unkB_5; + + arg5->unk0 = packet->unk9_2; + arg5->unk4 = packet->unkA_2; + arg5->unk8 = packet->unkB_6; + + *arg6 = packet->unkA_3; + *arg7 = packet->unkB_1; + *arg8 = packet->unkB_0; + return 1; + } + + return 0; +} + +struct UnkPacket3 +{ + u8 id; + u8 ALIGNED(4) unk4; +}; + +void sub_815AAD8(u8 arg0) +{ + struct UnkPacket3 packet; + packet.id = 3; + packet.unk4 = arg0; + RfuPrepareSend0x2f00(&packet); +} + +u32 sub_815AB04(u32 arg0, u8 *arg1) +{ + struct UnkPacket3 * packet; + + if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + return 0; + + packet = (void *)&gRecvCmds[arg0][1]; + if (packet->id == 3) + { + *arg1 = packet->unk4; + return 1; + } + + return 0; +} + +struct UnkPacket4 +{ + u8 id; + u32 unk4; +}; + +void sub_815AB3C(u32 arg0) +{ + struct UnkPacket4 packet; + packet.id = 4; + packet.unk4 = arg0; + RfuPrepareSend0x2f00(&packet); +} + +u32 sub_815AB60(u32 arg0) +{ + struct UnkPacket4 * packet; + + if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + return 0; + + packet = (void *)&gRecvCmds[arg0][1]; + if (packet->id == 4) + return packet->unk4; + + return 0; +} diff --git a/src/fame_checker.c b/src/fame_checker.c index 6f60b4a44..a77c89c0d 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1536,7 +1536,7 @@ static void PlaceListMenuCursor(bool8 isActive) { u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->listMenuTaskId); if (isActive == TRUE) - AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor); + AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_DkGrey, 0, gText_SelectorArrow2); else - AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_White, 0, gFameCheckerText_ListMenuCursor); + AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_White, 0, gText_SelectorArrow2); } diff --git a/src/help_system.c b/src/help_system.c index 48483c387..8eabd4e1d 100644 --- a/src/help_system.c +++ b/src/help_system.c @@ -1085,7 +1085,7 @@ void PlaceListMenuCursor(void) u8 glyphHeight = GetFontAttribute(2, 1) + 1; u8 x = gHelpSystemListMenu.sub.left; u8 y = gHelpSystemListMenu.sub.top + glyphHeight * gHelpSystemListMenu.cursorPos; - HelpSystem_PrintTextAt(gFameCheckerText_ListMenuCursor, x, y); + HelpSystem_PrintTextAt(gText_SelectorArrow2, x, y); } void sub_813C860(u8 i) diff --git a/src/item_menu.c b/src/item_menu.c index 40cebc138..4131e7fd5 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -740,7 +740,7 @@ static void bag_menu_print_cursor(u8 y, u8 colorIdx) } else { - BagPrintTextOnWindow(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx); + BagPrintTextOnWindow(0, 2, gText_SelectorArrow2, 1, y, 0, 0, 0, colorIdx); } } diff --git a/src/item_pc.c b/src/item_pc.c index b8dc0f34d..46419f2f3 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -577,7 +577,7 @@ static void ItemPc_PrintOrRemoveCursorAt(u8 y, u8 colorIdx) } else { - ItemPc_AddTextPrinterParameterized(0, 2, gFameCheckerText_ListMenuCursor, 0, y, 0, 0, 0, colorIdx); + ItemPc_AddTextPrinterParameterized(0, 2, gText_SelectorArrow2, 0, y, 0, 0, 0, colorIdx); } } diff --git a/src/list_menu.c b/src/list_menu.c index 21ef40fbe..9439d712c 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -413,7 +413,7 @@ static void ListMenuDrawCursor(struct ListMenu *list) switch (list->template.cursorKind) { case 0: - ListMenuPrint(list, gFameCheckerText_ListMenuCursor, x, y); + ListMenuPrint(list, gText_SelectorArrow2, x, y); break; case 1: break; diff --git a/src/menu.c b/src/menu.c index 2f5b1a5db..b7c3f54eb 100644 --- a/src/menu.c +++ b/src/menu.c @@ -303,7 +303,7 @@ static void Menu_RedrawCursor(u8 oldPos, u8 newPos) width = GetMenuCursorDimensionByFont(sMenu.fontId, 0); height = GetMenuCursorDimensionByFont(sMenu.fontId, 1); FillWindowPixelRect(sMenu.windowId, 1, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height); - AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0); + AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gText_SelectorArrow2, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0); } u8 Menu_MoveCursor(s8 cursorDelta) @@ -645,7 +645,7 @@ static void MultichoiceGrid_RedrawCursor(u8 oldCursorPos, u8 newCursorPos) FillWindowPixelRect(sMenu.windowId, PIXEL_FILL(1), xPos, yPos, cursorWidth, cursorHeight); xPos = (newCursorPos % sMenu.columns) * sMenu.optionWidth + sMenu.left; yPos = (newCursorPos / sMenu.columns) * sMenu.optionHeight + sMenu.top; - AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, xPos, yPos, 0, 0); + AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gText_SelectorArrow2, xPos, yPos, 0, 0); } static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY) diff --git a/src/shop.c b/src/shop.c index 5a9ee6b95..5cc9ab3f0 100644 --- a/src/shop.c +++ b/src/shop.c @@ -668,7 +668,7 @@ static void BuyMenuPrintCursorAtYPosition(u8 y, u8 a1) } else { - BuyMenuPrint(4, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, a1); + BuyMenuPrint(4, 2, gText_SelectorArrow2, 1, y, 0, 0, 0, a1); } } diff --git a/src/sound.c b/src/sound.c index b88d3b642..99e9a162e 100644 --- a/src/sound.c +++ b/src/sound.c @@ -6,6 +6,7 @@ #include "m4a.h" #include "main.h" #include "constants/songs.h" +#include "constants/fanfares.h" #include "task.h" struct Fanfare @@ -41,20 +42,20 @@ extern struct ToneData gCryTable[]; extern struct ToneData gCryTable2[]; static const struct Fanfare sFanfares[] = { - { MUS_FANFA1, 80 }, - { MUS_FANFA4, 160 }, - { MUS_FANFA5, 220 }, - { MUS_ME_WAZA, 220 }, - { MUS_ME_ASA, 160 }, - { MUS_ME_BACHI, 340 }, - { MUS_ME_WASURE, 180 }, - { MUS_ME_KINOMI, 120 }, - { MUS_ME_B_BIG, 250 }, - { MUS_ME_B_SMALL, 150 }, - { MUS_ME_ZANNEN, 160 }, - { MUS_POKEFUE, 450 }, - { MUS_FAN5, 170 }, - { MUS_FAN2, 196 } + [FANFARE_00] = { MUS_FANFA1, 80 }, + [FANFARE_01] = { MUS_FANFA4, 160 }, + [FANFARE_02] = { MUS_FANFA5, 220 }, + [FANFARE_03] = { MUS_ME_WAZA, 220 }, + [FANFARE_04] = { MUS_ME_ASA, 160 }, + [FANFARE_05] = { MUS_ME_BACHI, 340 }, + [FANFARE_06] = { MUS_ME_WASURE, 180 }, + [FANFARE_07] = { MUS_ME_KINOMI, 120 }, + [FANFARE_08] = { MUS_ME_B_BIG, 250 }, + [FANFARE_09] = { MUS_ME_B_SMALL, 150 }, + [FANFARE_10] = { MUS_ME_ZANNEN, 160 }, + [FANFARE_POKEFLUTE] = { MUS_POKEFUE, 450 }, + [FANFARE_KEY_ITEM] = { MUS_FAN5, 170 }, + [FANFARE_DEX_EVAL] = { MUS_FAN2, 196 } }; extern u16 SpeciesToCryId(u16); diff --git a/src/strings.c b/src/strings.c index 81f517c61..8ef338eb3 100644 --- a/src/strings.c +++ b/src/strings.c @@ -152,7 +152,7 @@ const u8 gUnknown_841622C[] = _("{PLUS}"); const u8 gUnknown_841622F[] = _("{ESCAPE 0x03}"); const u8 gUnknown_8416233[] = _("{ID}{NO}"); const u8 gUnknown_8416238[] = _("{PP}"); -const u8 gFameCheckerText_ListMenuCursor[] = _("▶"); +const u8 gText_SelectorArrow2[] = _("▶"); const u8 gUnknown_841623D[] = _("YES\nNO"); const u8 gText_GoBackToThePreviousMenu[] = _("Go back to the\nprevious menu."); const u8 gText_WhatWouldYouLikeToDo[] = _("What would you like to do?"); diff --git a/src/tm_case.c b/src/tm_case.c index e093eaa25..2f27cc0db 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -612,7 +612,7 @@ static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1) } else { - AddTextPrinterParameterized_ColorByIndex(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1); + AddTextPrinterParameterized_ColorByIndex(0, 2, gText_SelectorArrow2, 0, a0, 0, 0, 0, a1); } } diff --git a/sym_bss.txt b/sym_bss.txt index b877b6532..3b3148efc 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -86,17 +86,12 @@ gUnknown_3002038: @ 3002038 .align 2 .include "src/wireless_communication_status_screen.o" - .align 2 -gUnknown_3002044: @ 3002044 - .space 0x4 - + .include "src/dodrio_berry_picking.o" .align 3 .include "src/ereader_helpers.o" - .align 3 .include "src/digit_obj_util.o" - .align 3 .include "asm/m4a_1.o" .align 3 diff --git a/sym_ewram.txt b/sym_ewram.txt index d4a46e69d..8481032c3 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -449,29 +449,10 @@ gUnknown_203B170: @ 203B170 .include "src/pokemon_jump_4.o" .align 2 .include "src/berry_crush.o" - .align 2 -gUnknown_203F3E0: @ 203F3E0 - .space 0x4 - -gUnknown_203F3E4: @ 203F3E4 - .space 0x14 - -gUnknown_203F3F8: @ 203F3F8 - .space 0x8 - -gUnknown_203F400: @ 203F400 - .space 0x2C - -gUnknown_203F42C: @ 203F42C - .space 0x10 - -gUnknown_203F43C: @ 203F43C - .space 0x4 - -gUnknown_203F440: @ 203F440 - .space 0x4 - + .include "src/dodrio_berry_picking.o" + .align 2 + .include "src/dodrio_berry_picking_2.o" .align 2 .include "src/teachy_tv.o" .align 2 |