diff options
author | scnorton <scnorton@biociphers.org> | 2019-03-26 11:59:39 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2019-03-26 11:59:39 -0400 |
commit | 2eba82b0fb0c716f03c2244abcd2a005d6af19e7 (patch) | |
tree | 02419dae2fe16ea7d60af13961d76269ab8acaef | |
parent | df538ff7ab6f0a91e22408fac91254d15d5a24fe (diff) |
sub_8026634
-rwxr-xr-x | asm/dodrio_berry_picking.s | 116 | ||||
-rwxr-xr-x | data/dodrio_berry_picking.s | 59 | ||||
-rw-r--r-- | src/dodrio_berry_picking.c | 76 |
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; +} |