summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/dodrio_berry_picking.s471
-rwxr-xr-xasmdiff.sh2
-rw-r--r--ld_script.txt2
-rw-r--r--src/dodrio_berry_picking.c290
-rw-r--r--src/union_room.c1
-rw-r--r--sym_bss.txt1
-rw-r--r--sym_ewram.txt23
7 files changed, 295 insertions, 495 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
index e52e7a347..7155edf1b 100755
--- a/asm/dodrio_berry_picking.s
+++ b/asm/dodrio_berry_picking.s
@@ -5,477 +5,6 @@
.text
- thumb_func_start sub_802493C
-sub_802493C: @ 802493C
- push {r4-r6,lr}
- adds r5, r1, 0
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r1, =gUnknown_03000DB0
- movs r0, 0
- str r0, [r1]
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08024A10
- ldr r4, =gUnknown_02022C98
- ldr r0, =0x00003330
- bl AllocZeroed
- str r0, [r4]
- cmp r0, 0
- beq _08024A10
- bl sub_8024A1C
- ldr r0, [r4]
- bl sub_8024A30
- ldr r0, [r4]
- str r5, [r0]
- bl GetMultiplayerId
- ldr r1, [r4]
- adds r1, 0x28
- strb r0, [r1]
- ldr r1, [r4]
- ldr r2, =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, =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, =0x0000318c
- adds r1, r2
- adds r0, r1
- movs r1, 0x64
- muls r1, r6
- ldr r2, =gPlayerParty
- adds r1, r2
- bl sub_80261F8
- ldr r0, =sub_8024BC8
- movs r1, 0x1
- bl CreateTask
- ldr r0, =sub_80261CC
- bl SetMainCallback2
- bl sub_80273F0
- 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_8026B5C
- bl StopMapMusic
- ldr r0, =0x0000021e
- bl PlayNewMapMusic
- b _08024A16
- .pool
-_08024A10:
- adds r0, r5, 0
- bl SetMainCallback2
-_08024A16:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_802493C
-
- thumb_func_start sub_8024A1C
-sub_8024A1C: @ 8024A1C
- push {lr}
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- pop {r0}
- bx r0
- thumb_func_end sub_8024A1C
-
- thumb_func_start sub_8024A30
-sub_8024A30: @ 8024A30
- 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
-_08024A76:
- adds r0, r1, r5
- strb r3, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _08024A76
- 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
-_08024AE2:
- 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 _08024AE2
- movs r5, 0
- movs r3, 0
- movs r4, 0xFF
- ldr r6, [sp, 0x1C]
-_08024B2C:
- 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 _08024B2C
- bl GetMultiplayerId
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _08024B6A
- movs r1, 0x1
-_08024B6A:
- 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 _08024BB6
- ldr r7, [sp, 0x18]
- mov r6, r8
-_08024B8C:
- 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 _08024BAA
- adds r0, r2, 0
- bl __umodsi3
- strb r0, [r4]
-_08024BAA:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r6]
- cmp r5, r0
- bcc _08024B8C
-_08024BB6:
- 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_8024A30
-
- thumb_func_start sub_8024BC8
-sub_8024BC8: @ 8024BC8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- ldrb r0, [r0, 0xC]
- cmp r0, 0x7
- bls _08024BDC
- b _08024D34
-_08024BDC:
- lsls r0, 2
- ldr r1, =_08024BF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08024BF0:
- .4byte _08024C10
- .4byte _08024C24
- .4byte _08024C4C
- .4byte _08024C5A
- .4byte _08024C80
- .4byte _08024CD4
- .4byte _08024CE6
- .4byte _08024D10
-_08024C10:
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, =sub_8025910
- movs r1, 0x4
- bl sub_802620C
- b _08024D20
- .pool
-_08024C24:
- ldr r0, =sub_8025910
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08024C32
- b _08024D40
-_08024C32:
- ldr r4, =gUnknown_02022C98
- ldr r0, [r4]
- movs r1, 0xB0
- lsls r1, 1
- adds r0, r1
- bl sub_8029274
- ldr r1, [r4]
- b _08024D24
- .pool
-_08024C4C:
- bl sub_802A770
- cmp r0, 0
- bne _08024D40
- bl sub_8010434
- b _08024D20
-_08024C5A:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08024D40
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08024D20
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- b _08024D20
- .pool
-_08024C80:
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r5, [r0]
- bl sub_80283A8
- movs r4, 0
- cmp r4, r5
- bcs _08024CBA
-_08024C92:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x34
- adds r0, r4
- ldrb r2, [r0]
- lsls r0, r2, 2
- ldr r3, =0x0000318c
- adds r0, r3
- adds r0, r1, r0
- adds r1, 0x24
- ldrb r3, [r1]
- adds r1, r4, 0
- bl sub_8028408
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08024C92
-_08024CBA:
- ldr r4, =gUnknown_02022C98
- ldr r0, [r4]
- adds r0, 0x24
- ldrb r1, [r0]
- movs r0, 0
- bl sub_802868C
- ldr r1, [r4]
- b _08024D24
- .pool
-_08024CD4:
- bl sub_8028A34
- bl sub_8028A88
- bl sub_8028D44
- bl sub_8028734
- b _08024D20
-_08024CE6:
- 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, =sub_80261E4
- bl SetVBlankCallback
- b _08024D20
- .pool
-_08024D10:
- bl UpdatePaletteFade
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08024D40
-_08024D20:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
-_08024D24:
- ldrb r0, [r1, 0xC]
- adds r0, 0x1
- strb r0, [r1, 0xC]
- b _08024D40
- .pool
-_08024D34:
- adds r0, r1, 0
- bl DestroyTask
- ldr r0, =sub_802589C
- bl sub_802621C
-_08024D40:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8024BC8
-
thumb_func_start sub_8024D4C
sub_8024D4C: @ 8024D4C
push {lr}
diff --git a/asmdiff.sh b/asmdiff.sh
index 1d2141c32..9e8749acf 100755
--- a/asmdiff.sh
+++ b/asmdiff.sh
@@ -4,4 +4,4 @@ OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb
OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
$OBJDUMP $OPTIONS baserom.gba > baserom.dump
$OBJDUMP $OPTIONS pokeemerald.gba > pokeemerald.dump
-diff baserom.dump pokeemerald.dump
+diff -u baserom.dump pokeemerald.dump
diff --git a/ld_script.txt b/ld_script.txt
index b4f99d606..a82e3f913 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -65,6 +65,7 @@ SECTIONS {
asm/union_room_chat.o(.text);
asm/berry_crush.o(.text);
src/berry_powder.o(.text);
+ src/dodrio_berry_picking.o(.text);
asm/dodrio_berry_picking.o(.text);
asm/pokemon_jump.o(.text);
src/rtc.o(.text);
@@ -415,6 +416,7 @@ SECTIONS {
data/union_room_chat.o(.rodata);
data/berry_crush.o(.rodata);
data/berry_powder.o(.rodata);
+ src/dodrio_berry_picking.o(.rodata);
data/dodrio_berry_picking.o(.rodata);
data/pokemon_jump.o(.rodata);
src/rtc.o(.rodata);
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
new file mode 100644
index 000000000..eef4ec262
--- /dev/null
+++ b/src/dodrio_berry_picking.c
@@ -0,0 +1,290 @@
+#include "global.h"
+#include "alloc.h"
+#include "palette.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "task.h"
+#include "main.h"
+#include "constants/songs.h"
+#include "sound.h"
+
+struct DodrioBerryPickingSubstruct_0160
+{
+ /*0x0000 : 0x0160*/ u8 filler_000[12];
+ /*0x000C : 0x016C*/ u8 unk_00C;
+ /*0x000D : 0x016D*/ u8 filler_00D[0x3000 - 0xd];
+ /*0x3000 : 0x3160*/ u32 unk_3000;
+ /*0x3004 : 0x3164*/ u8 filler_3004[16];
+ /*0x3014 : 0x3174*/ u8 unk_3014;
+ /*0x3015 : 0x3175*/ u8 filler_3015[0x318C - 0x3175];
+}; // size = 0x302C
+
+struct DodrioBerryPickingStruct_2022CF4
+{
+ u8 filler_00[0x40];
+}; // size = 0x40
+
+struct DodrioBerryPickingSubstruct_31A0
+{
+ u8 unk_00[0x3C - 0x00];
+}; // size = 0x3C
+
+struct DodrioBerryPickingSubstruct_318C
+{
+ bool8 isShiny;
+};
+
+struct DodrioBerryPickingStruct
+{
+ /*0x0000*/ void (*savedCallback)(void);
+ /*0x0004*/ u8 filler_0004[8];
+ /*0x000C*/ u8 unk_000C;
+ /*0x000D*/ u8 filler_000D[3];
+ /*0x0010*/ u8 unk_0010;
+ /*0x0011*/ u8 filler_0011[3];
+ /*0x0014*/ u8 unk_0014;
+ /*0x0015*/ u8 filler_0015[3];
+ /*0x0018*/ u8 unk_0018;
+ /*0x0019*/ u8 filler_0019[3];
+ /*0x001C*/ u8 unk_001C;
+ /*0x001D*/ u8 filler_001D[3];
+ /*0x0020*/ u8 unk_0020;
+ /*0x0021*/ u8 filler_0021[3];
+ /*0x0024*/ u8 unk_0024;
+ /*0x0025*/ u8 filler_0025[3];
+ /*0x0028*/ u8 multiplayerId;
+ /*0x0029*/ u8 filler_0029[7];
+ /*0x0030*/ u8 unk_0030;
+ /*0x0031*/ u8 filler_0031[3];
+ /*0x0034*/ u8 unk_0034[5];
+ /*0x0039*/ u8 filler_0039[3];
+ /*0x003C*/ u8 unk_003C;
+ /*0x003D*/ u8 filler_003D[3];
+ /*0x0040*/ u8 unk_0040;
+ /*0x0041*/ u8 filler_0041[3];
+ /*0x0044*/ u8 unk_0044;
+ /*0x0045*/ u8 filler_0045[3];
+ /*0x0048*/ u8 unk_0048;
+ // align 1
+ /*0x004A*/ u16 unk_004A[5][6];
+ /*0x0086*/ u8 filler_0086[18];
+ /*0x0098*/ u8 unk_0098[4];
+ /*0x009C*/ u8 filler_009C[12];
+ /*0x00A8*/ u8 unk_00A8[5];
+ /*0x00AD*/ u8 filler_00AD[3];
+ /*0x00B0*/ u8 unk_00B0[5];
+ /*0x00B5*/ u8 filler_00B5[0xC4 - 0xB5];
+ /*0x00C4*/ u8 unk_00C4[11];
+ /*0x00CF*/ u8 filler_00CF[1];
+ /*0x00D0*/ u8 unk_00D0[11];
+ /*0x00DB*/ u8 filler_00DB[1];
+ /*0x00DC*/ u8 unk_00DC[11];
+ /*0x00E7*/ u8 filler_0xE7[0xF4 - 0xE7];
+ /*0x00F4*/ u8 unk_00F4[11][2];
+ /*0x010A*/ u8 filler_010A[2];
+ /*0x010C*/ u8 unk_010C[5];
+ /*0x0111*/ u8 filler_0111[11];
+ /*0x011C*/ u32 unk_011C;
+ /*0x0120*/ u32 unk_0120;
+ /*0x0124*/ u8 filler_0124[8];
+ /*0x012C*/ u32 unk_012C;
+ /*0x0130*/ u32 unk_0130[5];
+ /*0x0144*/ u8 filler_0144[0x1C];
+ /*0x0160*/ struct DodrioBerryPickingSubstruct_0160 unk_0160;
+ /*0x318C*/ struct DodrioBerryPickingSubstruct_318C unk_318C[5];
+ /*0x31A0*/ struct DodrioBerryPickingSubstruct_31A0 unk_31A0[5];
+ /*0x32CC*/ struct DodrioBerryPickingSubstruct_31A0 unk_32CC;
+ /*0x3308*/ u8 unk_3308[0x3330 - 0x3308];
+}; // size = 0x3330
+
+EWRAM_DATA struct DodrioBerryPickingStruct * gUnknown_02022C98 = NULL;
+EWRAM_DATA u16 * gUnknown_02022C9C[5] = {NULL};
+EWRAM_DATA u16 * gUnknown_02022CB0[2] = {NULL};
+EWRAM_DATA u16 * gUnknown_02022CB8[11] = {NULL};
+EWRAM_DATA u16 * gUnknown_02022CE4[4] = {NULL};
+EWRAM_DATA struct DodrioBerryPickingStruct_2022CF4 * gUnknown_02022CF4 = NULL;
+EWRAM_DATA struct DodrioBerryPickingSubstruct_0160 * gUnknown_02022CF8 = NULL;
+
+IWRAM_DATA bool32 gUnknown_03000DB0;
+
+void sub_8024A1C(void);
+void sub_8024A30(struct DodrioBerryPickingStruct *);
+void sub_8024BC8(u8 taskId);
+void sub_80261F8(struct DodrioBerryPickingSubstruct_318C *, struct Pokemon *);
+void sub_80261CC(void);
+void sub_8026B5C(u8, u8*, u8*);
+void sub_80273F0(void);
+void sub_8029274(struct DodrioBerryPickingSubstruct_0160 *);
+void sub_8025910(u8 taskId);
+void sub_802620C(TaskFunc, u8);
+bool32 sub_802A770(void);
+void sub_80283A8(void);
+void sub_8028408(struct DodrioBerryPickingSubstruct_318C *, u8, u8, u8);
+void sub_802868C(u8, u8);
+void sub_8028A34(void);
+void sub_8028A88(void);
+void sub_8028D44(void);
+void sub_8028734(void);
+void sub_80261E4(void);
+void sub_802621C(TaskFunc);
+void sub_802589C(u8 taskId);
+
+void sub_802493C(u16 a0, void (*a1)(void))
+{
+ gUnknown_03000DB0 = FALSE;
+
+ if (gReceivedRemoteLinkPlayers != 0 && (gUnknown_02022C98 = AllocZeroed(sizeof(*gUnknown_02022C98))) != NULL)
+ {
+ sub_8024A1C();
+ sub_8024A30(gUnknown_02022C98);
+ gUnknown_02022C98->savedCallback = a1;
+ gUnknown_02022C98->multiplayerId = GetMultiplayerId();
+ gUnknown_02022C98->unk_32CC = gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId];
+ sub_80261F8(&gUnknown_02022C98->unk_318C[gUnknown_02022C98->multiplayerId], &gPlayerParty[a0]);
+ CreateTask(sub_8024BC8, 1);
+ SetMainCallback2(sub_80261CC);
+ sub_80273F0();
+ sub_8026B5C(gUnknown_02022C98->unk_0024, &gUnknown_02022C98->unk_0044, &gUnknown_02022C98->unk_0048);
+ StopMapMusic();
+ PlayNewMapMusic(MUS_RG_KINOMIKUI);
+ }
+ else
+ {
+ SetMainCallback2(a1);
+ return;
+ }
+}
+
+void sub_8024A1C(void)
+{
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+}
+
+void sub_8024A30(struct DodrioBerryPickingStruct * data)
+{
+ u8 i;
+
+ data->unk_000C = 0;
+ data->unk_0010 = 0;
+ data->unk_0014 = 0;
+ data->unk_0018 = 0;
+ data->unk_001C = 0;
+ data->unk_011C = 0;
+ data->unk_0120 = 0;
+ data->unk_0030 = 0;
+ data->unk_0040 = 0;
+ data->unk_003C = 0;
+ data->unk_012C = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ data->unk_0098[i] = 0;
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ data->unk_00A8[i] = 0;
+ data->unk_00B0[i] = 0;
+ data->unk_004A[i][0] = 0;
+ data->unk_004A[i][1] = 0;
+ data->unk_004A[i][2] = 0;
+ data->unk_004A[i][3] = 0;
+ data->unk_004A[i][5] = 0;
+ data->unk_010C[i] = 0;
+ data->unk_0130[i] = 0;
+ }
+
+ for (i = 0; i < 11; i++)
+ {
+ data->unk_00D0[i] = 0;
+ data->unk_00DC[i] = 0;
+ data->unk_00C4[i] = 0;
+ data->unk_00F4[i][0] = 0xFF;
+ data->unk_00F4[i][1] = 0xFF;
+ }
+
+ data->unk_0020 = GetMultiplayerId() == 0 ? 1 : 0;
+ data->unk_0024 = GetLinkPlayerCount();
+ data->unk_0034[0] = GetMultiplayerId();
+ for (i = 1; i < data->unk_0024; i++)
+ {
+ data->unk_0034[i] = data->unk_0034[i - 1] + 1;
+ if (data->unk_0034[i] > data->unk_0024 - 1)
+ data->unk_0034[i] %= data->unk_0024;
+ }
+}
+
+void sub_8024BC8(u8 taskId)
+{
+ u8 r4, r5;
+
+ switch (gUnknown_02022C98->unk_000C)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ sub_802620C(sub_8025910, 4);
+ gUnknown_02022C98->unk_000C++;
+ break;
+ case 1:
+ if (!FuncIsActiveTask(sub_8025910))
+ {
+ sub_8029274(&gUnknown_02022C98->unk_0160);
+ gUnknown_02022C98->unk_000C++;
+ }
+ break;
+ case 2:
+ if (!sub_802A770())
+ {
+ sub_8010434();
+ gUnknown_02022C98->unk_000C++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished())
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_800E0E8();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ gUnknown_02022C98->unk_000C++;
+ }
+ break;
+ case 4:
+ r5 = gUnknown_02022C98->unk_0024;
+ sub_80283A8();
+ for (r4 = 0; r4 < r5; r4++)
+ {
+ sub_8028408(&gUnknown_02022C98->unk_318C[gUnknown_02022C98->unk_0034[r4]], r4, gUnknown_02022C98->unk_0034[r4], gUnknown_02022C98->unk_0024);
+ }
+ sub_802868C(0, gUnknown_02022C98->unk_0024);
+ gUnknown_02022C98->unk_000C++;
+ break;
+ case 5:
+ sub_8028A34();
+ sub_8028A88();
+ sub_8028D44();
+ sub_8028734();
+ gUnknown_02022C98->unk_000C++;
+ break;
+ case 6:
+ BlendPalettes(0xFFFFFFFF, 0x10, 0x00);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ SetVBlankCallback(sub_80261E4);
+ gUnknown_02022C98->unk_000C++;
+ break;
+ case 7:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02022C98->unk_000C++;
+ }
+ break;
+ default:
+ DestroyTask(taskId);
+ sub_802621C(sub_802589C);
+ break;
+ }
+}
diff --git a/src/union_room.c b/src/union_room.c
index 99ae4b679..708f44a26 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -195,7 +195,6 @@ IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
IWRAM_DATA struct UnkStruct_Group *gUnknown_03000DA4;
IWRAM_DATA struct UnkStruct_URoom *gUnknown_03000DA8;
IWRAM_DATA void *gUnknown_03000DAC;
-IWRAM_DATA bool32 gUnknown_03000DB0;
// this file's functions
void sub_80173E0(u8 windowId, u8 arg1, const u8 *str, u8 arg3, u8 arg4, u8 arg5);
diff --git a/sym_bss.txt b/sym_bss.txt
index 1eef0130b..5117ab19d 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -8,6 +8,7 @@
.include "src/link.o"
.include "src/link_rfu.o"
.include "src/union_room.o"
+ .include "src/dodrio_berry_picking.o"
.include "src/rtc.o"
.include "src/main_menu.o"
.include "src/rom_8034C54.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 0cc9b7744..7caa6f2ff 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -73,28 +73,7 @@ gUnknown_02022C90: @ 2022C90
.space 0x4
.include "src/berry_powder.o"
-
- .align 2
-gUnknown_02022C98: @ 2022C98
- .space 0x4
-
-gUnknown_02022C9C: @ 2022C9C
- .space 0x14
-
-gUnknown_02022CB0: @ 2022CB0
- .space 0x8
-
-gUnknown_02022CB8: @ 2022CB8
- .space 0x2C
-
-gUnknown_02022CE4: @ 2022CE4
- .space 0x10
-
-gUnknown_02022CF4: @ 2022CF4
- .space 0x4
-
-gUnknown_02022CF8: @ 2022CF8
- .space 0x4
+ .include "src/dodrio_berry_picking.o"
gUnknown_02022CFC: @ 2022CFC
.space 0x4