summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2019-03-26 11:59:39 -0400
committerscnorton <scnorton@biociphers.org>2019-03-26 11:59:39 -0400
commit2eba82b0fb0c716f03c2244abcd2a005d6af19e7 (patch)
tree02419dae2fe16ea7d60af13961d76269ab8acaef
parentdf538ff7ab6f0a91e22408fac91254d15d5a24fe (diff)
sub_8026634
-rwxr-xr-xasm/dodrio_berry_picking.s116
-rwxr-xr-xdata/dodrio_berry_picking.s59
-rw-r--r--src/dodrio_berry_picking.c76
3 files changed, 93 insertions, 158 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
index e833b1640..b802c2653 100755
--- a/asm/dodrio_berry_picking.s
+++ b/asm/dodrio_berry_picking.s
@@ -5,122 +5,6 @@
.text
- thumb_func_start sub_8026634
-sub_8026634: @ 8026634
- 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, =gUnknown_02022C98
- 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, =0x000032e0
- adds r1, r0
- mov r12, r2
- cmp r3, 0x2
- beq _08026670
- cmp r3, 0x2
- bgt _08026676
- cmp r3, 0x1
- beq _08026674
- b _08026676
- .pool
-_08026670:
- movs r7, 0x1
- b _08026676
-_08026674:
- movs r7, 0x2
-_08026676:
- 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 _080266D4
- ldr r0, =gUnknown_082F449C+0x113
- 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 _0802670A
- 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 _080266D0
- lsls r0, r4, 4
- subs r0, r4
- lsls r0, 2
- adds r0, r1, r0
- ldr r1, =0x000031d4
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _0802670A
- .pool
-_080266D0:
- movs r0, 0x1
- b _0802670C
-_080266D4:
- ldr r0, =gUnknown_082F449C+0x113
- 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 _0802670A
- 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, =0x000031d4
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
-_0802670A:
- movs r0, 0
-_0802670C:
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8026634
-
thumb_func_start sub_802671C
sub_802671C: @ 802671C
push {r4-r7,lr}
diff --git a/data/dodrio_berry_picking.s b/data/dodrio_berry_picking.s
index 38701c199..7537d9f04 100755
--- a/data/dodrio_berry_picking.s
+++ b/data/dodrio_berry_picking.s
@@ -39,36 +39,39 @@ gUnknown_082F449C:: @ 82F449C
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08
.byte 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
.byte 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
- .byte 0x06, 0x07, 0x08, 0x04, 0x05, 0x06, 0x00, 0x00
+ .byte 0x06, 0x07, 0x08
+
+gUknnown_082F45AF::
+ .byte 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03
+ .byte 0x04, 0x05, 0x05, 0x06, 0x03, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05
+ .byte 0x06, 0x06, 0x07, 0x02, 0x02, 0x03, 0x04, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x05
+ .byte 0x05, 0x06, 0x07, 0x07, 0x08, 0x01, 0x01, 0x02
+ .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x05, 0x06, 0x06
+ .byte 0x07, 0x08, 0x08, 0x09, 0x00, 0x00, 0x01, 0x02
+ .byte 0x02, 0x03, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x03, 0x04, 0x05, 0x05, 0x06, 0x03
+ .byte 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x04, 0x05, 0x06, 0x06, 0x07, 0x02, 0x02
- .byte 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x04, 0x05, 0x05, 0x06, 0x07, 0x07, 0x08
- .byte 0x01, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x04
- .byte 0x05, 0x06, 0x06, 0x07, 0x08, 0x08, 0x09, 0x00
- .byte 0x00, 0x01, 0x02, 0x02, 0x03, 0x04, 0x01, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01
- .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00
- .byte 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01
- .byte 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00
- .byte 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x02
- .byte 0x01, 0x02, 0x03, 0x02, 0x03, 0x04, 0x03, 0x04
- .byte 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09
- .byte 0x01, 0x01, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09
- .byte 0x09, 0x09, 0x00, 0x00, 0x01, 0x01, 0x00, 0x09
- .byte 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x00, 0x00
- .byte 0x01, 0x01, 0x01, 0x09, 0x09, 0x09, 0x03, 0x03
- .byte 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x09
- .byte 0x03, 0x03, 0x04, 0x04, 0x00, 0x00, 0x01, 0x01
- .byte 0x02, 0x02, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00
- .byte 0x04, 0x06, 0x00, 0x00, 0x00, 0x03, 0x05, 0x07
- .byte 0x00, 0x00, 0x02, 0x04, 0x06, 0x08, 0x00, 0x01
- .byte 0x03, 0x05, 0x06, 0x09
+ .byte 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01
+ .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02
+ .byte 0x03, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04
+ .byte 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x03
+ .byte 0x02, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x09, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01
+ .byte 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00
+ .byte 0x00, 0x01, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09
+ .byte 0x09, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01
+ .byte 0x09, 0x09, 0x09, 0x03, 0x03, 0x00, 0x00, 0x01
+ .byte 0x01, 0x02, 0x02, 0x03, 0x09, 0x03, 0x03, 0x04
+ .byte 0x04, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03
+ .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00
+ .byte 0x00, 0x00, 0x03, 0x05, 0x07, 0x00, 0x00, 0x02
+ .byte 0x04, 0x06, 0x08, 0x00, 0x01, 0x03, 0x05, 0x06
+ .byte 0x09
.align 2
gUnknown_082F7DF0_UnrefDupe:: @ 82F4698
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index 1531eb4d8..4d9846c16 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -30,13 +30,17 @@ struct DodrioBerryPickingStruct_2022CF4
u8 filler_00[0x40];
}; // size = 0x40
+struct DodrioBerryPickingSubstruct_31A0_14
+{
+ u8 unk_0[11];
+ u8 unk_B[11];
+};
+
struct DodrioBerryPickingSubstruct_31A0
{
u8 unk_00[0x10];
u32 unk_10;
- u8 unk_14[11];
- u8 unk_1F[11];
- u8 filler_2A[2];
+ struct DodrioBerryPickingSubstruct_31A0_14 unk_14;
u8 unk_2C;
u8 filler_2D[3];
u8 unk_30;
@@ -233,6 +237,7 @@ u8 sub_802A794(void);
extern const u8 gUnknown_082F7A88[][3];
extern const u8 gUnknown_082F449C[];
+extern const u8 gUknnown_082F45AF[];
extern const u8 gUnknown_082F7A94[];
extern void (*const gUnknown_082F7AC4[])(void);
extern void (*const gUnknown_082F7AF4[])(void);
@@ -1304,13 +1309,12 @@ void sub_8026044(void)
}
for (r4 = r8; r4 < r7; r4++)
{
- struct DodrioBerryPickingSubstruct_31A0 * ptr = &gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId];
- u8 * r1 = ptr->unk_14;
- if (ptr->unk_1F[r4] >= 10)
+ struct DodrioBerryPickingSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_14;
+ if (ptr->unk_B[r4] >= 10)
{
if (gUnknown_02022C98->unk_0148[r4] == 0)
{
- PlaySE(SE_FUUSEN1 + r1[r4]);
+ PlaySE(SE_FUUSEN1 + ptr->unk_0[r4]);
gUnknown_02022C98->unk_0148[r4] = 1;
}
}
@@ -1403,10 +1407,9 @@ void sub_80262C0(void)
for (i = start; i < finish; i++)
{
- struct DodrioBerryPickingSubstruct_31A0 * ptr = &gUnknown_02022C98->unk_32CC;
- u8 * r4 = gUnknown_02022C98->unk_32CC.unk_14;
- ptr->unk_1F[i] = (i % 2 == 0) ? 1 : 0;
- r4[i] = 0;
+ struct DodrioBerryPickingSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk_32CC.unk_14;
+ ptr->unk_B[i] = (i % 2 == 0) ? 1 : 0;
+ ptr->unk_0[i] = 0;
}
}
@@ -1475,7 +1478,7 @@ void sub_8026324(void)
{
r3 = 2;
}
- r2 = gUnknown_082F7A88[r3][gUnknown_02022C98->unk_31A0[0].unk_14[r5]] - gUnknown_02022C98->unk_00D0[r5];
+ r2 = gUnknown_082F7A88[r3][gUnknown_02022C98->unk_31A0[0].unk_14.unk_0[r5]] - gUnknown_02022C98->unk_00D0[r5];
if (r2 < 6)
{
gUnknown_02022C98->unk_009C[r5] += r2;
@@ -1516,8 +1519,8 @@ void sub_8026324(void)
sub_8026F1C(0, r5, r4);
sub_8027234(1);
sub_8026D1C(r4);
- gUnknown_02022C98->unk_00E8[r5] = gUnknown_02022C98->unk_32CC.unk_14[r5];
- gUnknown_02022C98->unk_32CC.unk_14[r5] = 3;
+ gUnknown_02022C98->unk_00E8[r5] = gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5];
+ gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5] = 3;
gUnknown_02022C98->unk_00F4[r5][0] = 0xFF;
gUnknown_02022C98->unk_00F4[r5][1] = 0xFF;
}
@@ -1914,3 +1917,48 @@ void sub_8026324(void)
"\t.pool");
}
#endif // NONMATCHING
+
+u32 sub_8026634(u8 a0, u8 a1, u8 a2)
+{
+ s32 r7 = 0;
+ u8 r5 = gUnknown_02022C98->unk_0024 - 1;
+ struct DodrioBerryPickingSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk_32CC.unk_14;
+
+ switch (a1)
+ {
+ case 3:
+ default:
+ r7 = 0;
+ break;
+ case 2:
+ r7 = 1;
+ break;
+ case 1:
+ r7 = 2;
+ break;
+ }
+ if (ptr->unk_B[a2] == 6 || ptr->unk_B[a2] == 7)
+ {
+ if (a2 == gUknnown_082F45AF[r7 + a0 * 3 + 15 * r5])
+ {
+ if (gUnknown_02022C98->unk_00C4[a2] == 1 || gUnknown_02022C98->unk_00C4[a2] == 2)
+ {
+ gUnknown_02022C98->unk_31A0[a0].unk_34 = 1;
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ }
+ else
+ {
+ if (a2 == gUknnown_082F45AF[r7 + a0 * 3 + 15 * r5])
+ {
+ gUnknown_02022C98->unk_00A8[a0] = 4;
+ gUnknown_02022C98->unk_31A0[a0].unk_34 = 1;
+ }
+ }
+ return FALSE;
+}