summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-03-04 11:19:39 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-03-04 11:19:39 -0500
commit8dcae92a5fba55497bf69d7d263cbabb2f9537ea (patch)
tree7b7dd570659f448f75bfee2502f07b42a954ed50
parent437fe6631adfe04ce89f966c189b7b015d81cf26 (diff)
port/decomp through sub_8150FDC
-rw-r--r--asm/dodrio_berry_picking.s1092
-rw-r--r--ld_script.txt1
-rw-r--r--src/dodrio_berry_picking.c957
-rw-r--r--sym_bss.txt7
-rw-r--r--sym_ewram.txt23
5 files changed, 814 insertions, 1266 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
index eca27fd8d..9ae56f4fd 100644
--- a/asm/dodrio_berry_picking.s
+++ b/asm/dodrio_berry_picking.s
@@ -5,1098 +5,6 @@
.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}
diff --git a/ld_script.txt b/ld_script.txt
index 2fa7fe805..2a942b605 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -286,6 +286,7 @@ SECTIONS {
src/braille_text.o(.text);
src/text_window.o(.text);
src/quest_log_player.o(.text);
+ src/dodrio_berry_picking.o(.text);
asm/dodrio_berry_picking.o(.text);
src/battle_controller_pokedude.o(.text);
src/quest_log_objects.o(.text);
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index 36dc3fdd2..2341e4341 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -1,40 +1,201 @@
#include "global.h"
-#include "bg.h"
+#include "gflib.h"
+#include "link.h"
+#include "minigame_countdown.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 "constants/songs.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 DodrioStruct_2022CF4
+{
+ u8 filler_00[0xc];
+ u8 unkC[10];
+ s16 unk16[10];
+ u16 unk2A[10];
+ u16 unk3E;
+}; // size = 0x40
+
+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_318C
+{
+ bool8 isShiny;
+};
+
+struct DodrioSubstruct_3308
+{
+ u8 unk0;
+ u32 unk4;
+};
+
+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;
+ /*0x0029*/ u8 filler_0029[7];
+ /*0x0030*/ u8 ALIGNED(4) 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
+
+EWRAM_DATA struct DodrioStruct * gUnknown_203F3E0 = NULL;
+EWRAM_DATA u16 *gUnknown_203F3E4[5] = {NULL};
+EWRAM_DATA u16 *gUnknown_203F3F8[2] = {NULL};
+EWRAM_DATA u16 *gUnknown_203F400[11] = {NULL};
+EWRAM_DATA u16 *gUnknown_203F42C[4] = {NULL};
+EWRAM_DATA struct DodrioStruct_2022CF4 *gUnknown_203F43C = NULL;
+EWRAM_DATA struct DodrioSubstruct_0160 *gUnknown_203F440 = NULL;
+
+IWRAM_DATA bool32 gUnknown_3002044;
+
+bool32 sub_8155E68(void);
+void sub_81508D8(void);
+void sub_81508EC(struct DodrioStruct * dodrio);
+void sub_8150A84(u8 taskId);
+void sub_8150C78(void);
+void sub_8150CBC(void);
+void sub_8150CF4(void);
+void sub_8150D7C(void);
+void sub_8150DA4(void);
+void sub_8150E68(void);
+void sub_8150F40(void);
+void sub_8150FC4(void);
+void sub_8150FDC(void);
+void sub_815109C(void);
+void sub_8151198(void);
+void sub_81512B4(void);
+void sub_8151488(void);
+void sub_81514F0(void);
+void sub_815159C(void);
+void sub_81516DC(u8 taskId);
+void sub_8151750(u8 taskId);
+void sub_8151B54(void);
+void sub_8151BA0(void);
+void sub_8151C5C(void);
+void sub_8151D28(void);
+void sub_8151D98(void);
+void sub_8151E94(void);
+void sub_815201C(void);
+void sub_8152034(void);
+void sub_8152048(struct DodrioSubstruct_318C * dodrioMon, struct Pokemon * partyMon);
+void sub_815205C(TaskFunc func, u8 priority);
+void sub_815206C(TaskFunc func);
+void sub_8152090(u8 a0);
+void sub_8152110(void);
+void sub_815256C(void);
+void sub_815293C(void);
+void sub_8152970(void);
+void sub_81529A4(u8 a0, u8 *a1, u8 *a2);
+bool32 sub_8152A98(void);
+bool32 sub_8152AD8(void);
+void sub_8153004(void);
+void sub_8153150(void);
+u8 sub_815327C(u8);
+void sub_8153A9C(void);
+void sub_8153AFC(struct DodrioSubstruct_318C * unk318C, u8 a1, u8 a2, u8 a3);
+void sub_8153BF8(u8 a0);
+void sub_8153D80(bool8 a0, u8 a1);
+void nullsub_97(struct Sprite *sprite);
+void sub_8153E28(void);
+void sub_8154128(void);
+void sub_815417C(void);
+void sub_81543E8(struct Sprite *sprite);
+void sub_8154438(void);
+void sub_8154968(struct DodrioSubstruct_0160 * unk0160);
+void sub_81549D4(u8 a0);
+void sub_8154A2C(void);
+void sub_8154B34(void);
+void sub_8154F80(void);
+void sub_81556E0(void);
+void sub_8155A78(void);
+void sub_8155B4C(void);
+void sub_8155C2C(void);
+void sub_8155C80(void);
+void unused_0(void);
+void nullsub_98(void);
// const rom data
// Large chunk of data
-/*static*/ const struct BgTemplate sUnknown_847565C_Unref_Dupe[] =
+const struct BgTemplate sUnknown_847565C_Unref_Dupe[] =
{
{
.bg = 0,
@@ -75,9 +236,9 @@
};
// Unknown unreferenced data, feel free to remove.
-/*static*/ const u32 sUnused_Unref_Dupe[] = {255, 0};
+const u32 sUnused_Unref_Dupe[] = {255, 0};
-/*static*/ const struct WindowTemplate sUnknown_8475674_Unref_Dupe[] =
+const struct WindowTemplate sUnknown_8475674_Unref_Dupe[] =
{
{
.bg = 0,
@@ -99,7 +260,7 @@
}
};
-/*static*/ const struct WindowTemplate sUnknown_8475684_Unref_Dupe =
+const struct WindowTemplate sUnknown_8475684_Unref_Dupe =
{
.bg = 0,
.tilemapLeft = 1,
@@ -110,7 +271,7 @@
.baseBlock = 0x67,
};
-/*static*/ const struct WindowTemplate sUnknown_847568C_Unref_Dupe[] =
+const struct WindowTemplate sUnknown_847568C_Unref_Dupe[] =
{
{
.bg = 0,
@@ -132,7 +293,7 @@
}
};
-/*static*/ const struct WindowTemplate sUnknown_847569C_Unref_Dupe =
+const struct WindowTemplate sUnknown_847569C_Unref_Dupe =
{
.bg = 0,
.tilemapLeft = 4,
@@ -143,7 +304,7 @@
.baseBlock = 0x13,
};
-/*static*/ const struct WindowTemplate sUnknown_84756A4_Unref_Dupe =
+const struct WindowTemplate sUnknown_84756A4_Unref_Dupe =
{
.bg = 0,
.tilemapLeft = 5,
@@ -154,7 +315,7 @@
.baseBlock = 0x13,
};
-/*static*/ const u8 sUnknown_8471F50[5][5][11] =
+const u8 sUnknown_8471F50[5][5][11] =
{
{
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
@@ -183,7 +344,7 @@
},
};
-/*static*/ const u8 sUnknown_8472063[5][5][3] =
+const u8 sUnknown_8472063[5][5][3] =
{
{
{4, 5, 6},
@@ -212,7 +373,7 @@
},
};
-/*static*/ const u8 sUnknown_84720AE[5][5][3] =
+const u8 sUnknown_84720AE[5][5][3] =
{
{
{1, 0, 1},
@@ -242,7 +403,7 @@
};
ALIGNED(4)
-/*static*/ const u8 sUnknown_84720FC[5][11] =
+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},
@@ -251,7 +412,7 @@ ALIGNED(4)
{3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3},
};
-/*static*/ const u8 sUnknown_8472133[5][5] =
+const u8 sUnknown_8472133[5][5] =
{
{5},
{4, 6},
@@ -261,7 +422,7 @@ ALIGNED(4)
};
// Duplicate and unused gfx. Feel free to remove.
-/*static*/ const u32 sDuplicateGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.gbapal",
+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",
@@ -278,7 +439,7 @@ ALIGNED(4)
"graphics/link_games/dodrioberry_bg2right.bin.lz",
"graphics/link_games/dodrioberry_bg2left.bin.lz");
-/*static*/ const u8 sUnknown_847553C[][3] =
+const u8 sUnknown_847553C[][3] =
{
{40, 24, 13},
{32, 19, 10},
@@ -286,20 +447,20 @@ ALIGNED(4)
};
ALIGNED(4)
-/*static*/ const u8 sUnknown_8475548[] = {8, 5, 8, 11, 15};
+const u8 sUnknown_8475548[] = {8, 5, 8, 11, 15};
ALIGNED(4)
-/*static*/ const u8 sUnknown_8475550[] = {5, 10, 20, 30, 50, 70, 100};
+const u8 sUnknown_8475550[] = {5, 10, 20, 30, 50, 70, 100};
ALIGNED(4)
-/*static*/ const u8 sUnknown_8475558[][10] =
+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) =
+void (*const sUnknown_8475578[])(void) =
{
sub_8150C78,
sub_8150CBC,
@@ -315,7 +476,7 @@ ALIGNED(4)
sub_8150F40
};
-/*static*/ void (*const sUnknown_84755A8[])(void) =
+void (*const sUnknown_84755A8[])(void) =
{
sub_8150C78,
sub_8150CBC,
@@ -331,10 +492,425 @@ ALIGNED(4)
sub_8150FC4
};
-/*static*/ const s16 sUnknown_84755D8[] = {10, 30, 50, 50};
+void StartDodrioBerryPicking(u16 a0, MainCallback callback)
+{
+ gUnknown_3002044 = FALSE;
+
+ if (gReceivedRemoteLinkPlayers != 0 && (gUnknown_203F3E0 = AllocZeroed(sizeof(*gUnknown_203F3E0))) != NULL)
+ {
+ 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
+ {
+ SetMainCallback2(callback);
+ return;
+ }
+}
+
+void sub_81508D8(void)
+{
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+}
+
+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++)
+ {
+ data->unk98[i] = 0;
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ 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;
+ }
+
+ 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;
+ }
+}
+
+void sub_8150A84(u8 taskId)
+{
+ 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 != 0)
+ {
+ 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, 0x00);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ 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;
+ }
+}
+
+void sub_8150C08(u8 taskId)
+{
+ sub_8151B54();
+ sUnknown_8475578[gUnknown_203F3E0->unk18]();
+ if (!gUnknown_3002044)
+ {
+ sub_815293C();
+ }
+ sub_8151BA0();
+}
+
+void sub_8150C40(u8 taskId)
+{
+ sub_8151C5C();
+ sUnknown_84755A8[gUnknown_203F3E0->unk18]();
+ if (!gUnknown_3002044)
+ {
+ sub_8152970();
+ }
+ sub_8151D28();
+}
+
+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;
+ }
+}
+
+void sub_8150CBC(void)
+{
+ if (gUnknown_203F3E0->unk10 == 0)
+ {
+ sub_8152110();
+ gUnknown_203F3E0->unk10++;
+ }
+ else
+ {
+ gUnknown_203F3E0->unk118 = 1;
+ sub_8152090(2);
+ }
+}
+
+void sub_8150CF4(void)
+{
+ switch (gUnknown_203F3E0->unk10)
+ {
+ 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;
+ }
+}
+
+void sub_8150D7C(void)
+{
+ if (gUnknown_203F3E0->unk10 == 0)
+ {
+ if (gUnknown_203F3E0->unk11C != 0)
+ {
+ sub_8152090(4);
+ }
+ }
+}
+
+void sub_8150DA4(void)
+{
+ if (gUnknown_203F3E0->unk10 == 0)
+ {
+ 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();
+ }
+}
+void sub_8150E68(void)
+{
+ if (gUnknown_203F3E0->unk40 < 10)
+ {
+ 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
+ {
+ sub_8152090(11);
+ }
+ sub_8151E94();
+}
+
+void sub_8150F40(void)
+{
+ u8 i;
+
+ sub_815256C();
+ sub_8151D98();
+ if (sub_8152A98() == 1)
+ {
+ sub_8153004();
+ sub_8152090(5);
+ }
+ else
+ {
+ gUnknown_203F3E0->unk12C = 1;
+ for (i = 1; i < gUnknown_203F3E0->unk24; i++)
+ {
+ if (gUnknown_203F3E0->unk130[i] != 1)
+ {
+ gUnknown_203F3E0->unk12C = 0;
+ break;
+ }
+ }
+ }
+}
+
+void sub_8150FC4(void)
+{
+ sub_8151E94();
+ if (sub_8152AD8() == 1)
+ sub_8152090(5);
+}
+
+void sub_8150FDC(void)
+{
+ u8 blockReceivedStatus;
+ u8 i;
+ switch (gUnknown_203F3E0->unk10)
+ {
+ 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;
+ }
+}
+
+const s16 sUnknown_84755D8[] = {10, 30, 50, 50};
// Data related to printing saved results.
-/*static*/ const struct WindowTemplate sUnknown_84755E0 =
+const struct WindowTemplate sUnknown_84755E0 =
{
.bg = 0,
.tilemapLeft = 1,
@@ -345,15 +921,15 @@ ALIGNED(4)
.baseBlock = 1,
};
-/*static*/ const u8 *const sUnknown_84755E8[] = {gText_BerryPickingRecords, gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers};
-/*static*/ const u8 sUnknown_84755F8[] = {4, 7, 4};
+const u8 *const sUnknown_84755E8[] = {gText_BerryPickingRecords, gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers};
+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}};
+const u8 sUnknown_84755FC[][2] = {{24}, {40}, {56}};
+const u8 sUnknown_8475602[][2] = {{24}, {40}, {70}};
// Debug functions?
-/*static*/ const u16 sUnknown_8475608[][4] =
+const u16 sUnknown_8475608[][4] =
{
{9999, 0, 90, 9999},
{9999, 9999, 70, 9999},
@@ -362,11 +938,11 @@ ALIGNED(4)
{9999, 9999, 9999, 0},
};
-/*static*/ const u8 sUnknown_8475630[] = _("あいうえおかき");
-/*static*/ const u8 sUnknown_8475638[] = _("ABCDEFG");
-/*static*/ const u8 sUnknown_8475640[] = _("0123456");
+const u8 sUnknown_8475630[] = _("あいうえおかき");
+const u8 sUnknown_8475638[] = _("ABCDEFG");
+const u8 sUnknown_8475640[] = _("0123456");
-/*static*/ const u8 *const sUnknown_8475648[] =
+const u8 *const sUnknown_8475648[] =
{
sUnknown_8475630,
sUnknown_8475630,
@@ -376,7 +952,7 @@ ALIGNED(4)
};
// Large chunk of data
-/*static*/ const struct BgTemplate sUnknown_847565C[] =
+const struct BgTemplate sUnknown_847565C[] =
{
{
.bg = 0,
@@ -417,9 +993,9 @@ ALIGNED(4)
};
// Unknown unreferenced data, feel free to remove.
-/*static*/ const u32 sUnused[] = {255, 0};
+const u32 sUnused[] = {255, 0};
-/*static*/ const struct WindowTemplate sUnknown_8475674[] =
+const struct WindowTemplate sUnknown_8475674[] =
{
{
.bg = 0,
@@ -441,7 +1017,7 @@ ALIGNED(4)
}
};
-/*static*/ const struct WindowTemplate sUnknown_8475684 =
+const struct WindowTemplate sUnknown_8475684 =
{
.bg = 0,
.tilemapLeft = 1,
@@ -452,7 +1028,7 @@ ALIGNED(4)
.baseBlock = 0x67,
};
-/*static*/ const struct WindowTemplate sUnknown_847568C[] =
+const struct WindowTemplate sUnknown_847568C[] =
{
{
.bg = 0,
@@ -474,7 +1050,7 @@ ALIGNED(4)
}
};
-/*static*/ const struct WindowTemplate sUnknown_847569C =
+const struct WindowTemplate sUnknown_847569C =
{
.bg = 0,
.tilemapLeft = 4,
@@ -485,7 +1061,7 @@ ALIGNED(4)
.baseBlock = 0x13,
};
-/*static*/ const struct WindowTemplate sUnknown_84756A4 =
+const struct WindowTemplate sUnknown_84756A4 =
{
.bg = 0,
.tilemapLeft = 5,
@@ -497,41 +1073,130 @@ ALIGNED(4)
};
// 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
-};
-
-/*static*/ const u16 sDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal",
+const u8 sUnknown_8471F50_UnrefDup[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},
+ },
+};
+
+const u8 sUnknown_8472063_UnrefDup[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},
+ },
+};
+
+const u8 sUnknown_84720AE_UnrefDup[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)
+const u8 sUnknown_84720FC_UnrefDup[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},
+};
+
+const u8 sUnknown_8472133_UnrefDup[5][5] =
+{
+ {5},
+ {4, 6},
+ {3, 5, 7},
+ {2, 4, 6, 8},
+ {1, 3, 5, 6, 9},
+};
+
+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 =
+const u16 sDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal");
+const u16 sDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal");
+const u16 sDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal");
+const u16 sDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal");
+const u32 sDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz");
+const u16 sDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal");
+const u32 sDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz");
+const u32 sDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz");
+const u32 sDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz");
+const u32 sDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz");
+const u32 sDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz");
+const u32 sDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz");
+const u32 sDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz");
+const u32 sDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz");
+
+const struct OamData sOamData_8478C98 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -548,7 +1213,7 @@ ALIGNED(4)
.affineParam = 0
};
-/*static*/ const struct OamData sOamData_8478CA0 =
+const struct OamData sOamData_8478CA0 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -565,7 +1230,7 @@ ALIGNED(4)
.affineParam = 0
};
-/*static*/ const struct OamData sOamData_8478CA8 =
+const struct OamData sOamData_8478CA8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -582,7 +1247,7 @@ ALIGNED(4)
.affineParam = 0
};
-/*static*/ const struct OamData sOamData_8478CB0 =
+const struct OamData sOamData_8478CB0 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -599,37 +1264,37 @@ ALIGNED(4)
.affineParam = 0
};
-/*static*/ const union AnimCmd sSpriteAnim_8478CB8[] =
+const union AnimCmd sSpriteAnim_8478CB8[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478CC0[] =
+const union AnimCmd sSpriteAnim_8478CC0[] =
{
ANIMCMD_FRAME(64, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478CC8[] =
+const union AnimCmd sSpriteAnim_8478CC8[] =
{
ANIMCMD_FRAME(128, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478CD0[] =
+const union AnimCmd sSpriteAnim_8478CD0[] =
{
ANIMCMD_FRAME(192, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478CD8[] =
+const union AnimCmd sSpriteAnim_8478CD8[] =
{
ANIMCMD_FRAME(256, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd *const sSpriteAnimTable_8478CE0[] =
+const union AnimCmd *const sSpriteAnimTable_8478CE0[] =
{
sSpriteAnim_8478CB8,
sSpriteAnim_8478CC0,
@@ -638,86 +1303,86 @@ ALIGNED(4)
sSpriteAnim_8478CD8
};
-/*static*/ const union AnimCmd sSpriteAnim_8478CF4[] =
+const union AnimCmd sSpriteAnim_8478CF4[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478CFC[] =
+const union AnimCmd sSpriteAnim_8478CFC[] =
{
ANIMCMD_FRAME(4, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D04[] =
+const union AnimCmd sSpriteAnim_8478D04[] =
{
ANIMCMD_FRAME(8, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D0C[] =
+const union AnimCmd *const sSpriteAnimTable_8478D0C[] =
{
sSpriteAnim_8478CF4,
sSpriteAnim_8478CFC,
sSpriteAnim_8478D04
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D18[] =
+const union AnimCmd sSpriteAnim_8478D18[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D20[] =
+const union AnimCmd sSpriteAnim_8478D20[] =
{
ANIMCMD_FRAME(4, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D28[] =
+const union AnimCmd sSpriteAnim_8478D28[] =
{
ANIMCMD_FRAME(8, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D30[] =
+const union AnimCmd sSpriteAnim_8478D30[] =
{
ANIMCMD_FRAME(12, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D38[] =
+const union AnimCmd sSpriteAnim_8478D38[] =
{
ANIMCMD_FRAME(16, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D40[] =
+const union AnimCmd sSpriteAnim_8478D40[] =
{
ANIMCMD_FRAME(20, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D48[] =
+const union AnimCmd sSpriteAnim_8478D48[] =
{
ANIMCMD_FRAME(24, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D50[] =
+const union AnimCmd sSpriteAnim_8478D50[] =
{
ANIMCMD_FRAME(28, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D58[] =
+const union AnimCmd sSpriteAnim_8478D58[] =
{
ANIMCMD_FRAME(32, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D60[] =
+const union AnimCmd *const sSpriteAnimTable_8478D60[] =
{
sSpriteAnim_8478D18,
sSpriteAnim_8478D20,
@@ -730,22 +1395,22 @@ ALIGNED(4)
sSpriteAnim_8478D58
};
-/*static*/ const union AnimCmd sSpriteAnim_8478D84[] =
+const union AnimCmd sSpriteAnim_8478D84[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_JUMP(0)
};
-/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D8C[] =
+const union AnimCmd *const sSpriteAnimTable_8478D8C[] =
{
sSpriteAnim_8478D84
};
-// These are declared inside pokeemerald's sub_80283A8
+// These are declared inside pokeemerald's sub_8153A9C
const struct SpritePalette gUnknown_8478D90 = {sDodrioBerryPkmnPal, 0};
const struct SpritePalette gUnknown_8478D98 = {sDodrioBerryShinyPal, 1};
-// These are declared inside pokeemerald's sub_8028734
+// These are declared inside pokeemerald's sub_8153E28
const struct SpritePalette gUnknown_8478DA0 = {sDodrioBerryStatusPal, 2};
const struct SpriteTemplate gUnknown_8478DA8 =
{
@@ -759,14 +1424,14 @@ const struct SpriteTemplate gUnknown_8478DA8 =
};
// Unknown unused data, feel free to remove.
-/*static*/ const u8 sUnused2[] = {0xCD, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0xF4, 0x0, 0x0};
+const u8 sUnused2[] = {0xCD, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0xF4, 0x0, 0x0};
-// This is declared inside pokeemerald's sub_8028A34
+// This is declared inside pokeemerald's sub_8154128
const struct SpritePalette gUnknown_8478DCC = {sDodrioBerrySpritesPal, 3};
-/*static*/ const s16 sUnknown_8478DD4[] = {88, 128, 168, 208};
+const s16 sUnknown_8478DD4[] = {88, 128, 168, 208};
-// These are declared inside pokeemerald's sub_8028A88
+// These are declared inside pokeemerald's sub_815417C
const struct SpriteTemplate gUnknown_8478DDC =
{
.tileTag = 2,
@@ -789,11 +1454,11 @@ const struct SpriteTemplate gUnknown_8478DF4 =
};
// This is declared inside pokeemerald's sub_8028CF4
-/*static*/ const u8 gUnknown_8478E0C[] = {30, 20};
+const u8 gUnknown_8478E0C[] = {30, 20};
-/*static*/ const s16 gUnknown_8478E0E[][2] = {{230, 55}, {30, 74}};
+const s16 gUnknown_8478E0E[][2] = {{230, 55}, {30, 74}};
-// These are declared inside pokeemerald's sub_8028D44
+// These are declared inside pokeemerald's sub_8154438
const struct SpritePalette gUnknown_8478E18 = {sDodrioBerryPlatformPal, 6};
const struct SpriteTemplate gUnknown_8478E20 =
{
@@ -812,7 +1477,7 @@ struct WinCoords
u8 top;
};
-/*static*/ const u8 sUnknown_8478E38[][3] =
+const u8 sUnknown_8478E38[][3] =
{
{1, 2, 3},
{1, 4, 5},
@@ -820,13 +1485,13 @@ struct WinCoords
{1, 6, 7},
};
-/*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}};
+const struct WinCoords sUnknown_8478E44[] = {{12, 6}};
+const struct WinCoords sUnknown_8478E48[] = {{9, 10}, {15, 6}};
+const struct WinCoords sUnknown_8478E50[] = {{12, 6}, {18, 10}, {6, 10}};
+const struct WinCoords sUnknown_8478E5C[] = {{9, 10}, {15, 6}, {21, 10}, {3, 6}};
+const struct WinCoords sUnknown_8478E6C[] = {{12, 6}, {18, 10}, {23, 6}, {1, 6}, {6, 10}};
-/*static*/ const struct WinCoords *const sUnknown_8478E80[] =
+const struct WinCoords *const sUnknown_8478E80[] =
{
sUnknown_8478E44,
sUnknown_8478E48,
@@ -835,7 +1500,7 @@ struct WinCoords
sUnknown_8478E6C,
};
-/*static*/ const u8 *const sUnknown_8478E94[] =
+const u8 *const sUnknown_8478E94[] =
{
gText_1Colon,
gText_2Colon,
@@ -844,9 +1509,9 @@ struct WinCoords
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};
+const u16 sUnknown_8478EA8[] = {92, 132, 172, 212};
+const u16 sUnknown_8478EB0[] = {30, 45, 60, 75, 90};
+const u16 sUnknown_8478EBA[] = {12, 28, 44, 60, 76};
struct
{
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..ee73a6f2b 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -449,29 +449,8 @@ 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/teachy_tv.o"
.align 2