summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2020-03-05 16:21:48 -0500
committerGitHub <noreply@github.com>2020-03-05 16:21:48 -0500
commit44f47ab524f0b3b7648e5f66dfaf014488fc21e3 (patch)
treef05b0cdb3e31020ea0d1c9025b922972f8a4eb51
parent3d5d298c63a88c1a581b58d44dcc3706a7799c04 (diff)
parent2e8d5d6279088ac5a2aad108f9ce895b2619e3bb (diff)
Merge pull request #288 from PikalaxALT/dodrio_berry_picking
Dodrio Berry Picking
-rw-r--r--asm/dodrio_berry_picking.s11411
-rw-r--r--asm/dodrio_berry_picking_2.s734
-rw-r--r--include/dodrio_berry_picking.h100
-rw-r--r--include/gba/macro.h29
-rw-r--r--include/strings.h2
-rw-r--r--ld_script.txt7
-rw-r--r--src/berry_pouch.c2
-rw-r--r--src/data/dodrio_berry_picking.h247
-rw-r--r--src/dodrio_berry_picking.c3012
-rw-r--r--src/dodrio_berry_picking_2.c1620
-rw-r--r--src/dodrio_berry_picking_3.c659
-rw-r--r--src/fame_checker.c4
-rw-r--r--src/help_system.c2
-rw-r--r--src/item_menu.c2
-rw-r--r--src/item_pc.c2
-rw-r--r--src/list_menu.c2
-rw-r--r--src/menu.c4
-rw-r--r--src/shop.c2
-rw-r--r--src/sound.c29
-rw-r--r--src/strings.c2
-rw-r--r--src/tm_case.c2
-rw-r--r--sym_bss.txt7
-rw-r--r--sym_ewram.txt25
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