diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-04 13:56:54 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-04 13:56:54 -0500 |
commit | 171e4bbea427e66c5a30d01d4306dbcdf165e81c (patch) | |
tree | 56e7d65a25a109eee28261485cb44893bb8f3b28 | |
parent | 8dcae92a5fba55497bf69d7d263cbabb2f9537ea (diff) |
through sub_815184C
-rw-r--r-- | asm/dodrio_berry_picking.s | 1236 | ||||
-rw-r--r-- | include/dodrio_berry_picking.h | 25 | ||||
-rw-r--r-- | src/dodrio_berry_picking.c | 510 |
3 files changed, 511 insertions, 1260 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s index 9ae56f4fd..81204d1ba 100644 --- a/asm/dodrio_berry_picking.s +++ b/asm/dodrio_berry_picking.s @@ -5,1242 +5,6 @@ .text - thumb_func_start sub_815109C -sub_815109C: @ 815109C - push {r4-r6,lr} - ldr r6, _081510B4 @ =gUnknown_203F3E0 - ldr r2, [r6] - ldrb r4, [r2, 0x10] - cmp r4, 0x1 - beq _081510DA - cmp r4, 0x1 - bgt _081510B8 - cmp r4, 0 - beq _081510BE - b _08151150 - .align 2, 0 -_081510B4: .4byte gUnknown_203F3E0 -_081510B8: - cmp r4, 0x2 - beq _081510E8 - b _08151150 -_081510BE: - ldrb r0, [r2, 0x14] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, 0x4A - adds r1, r2, r1 - movs r0, 0 - movs r2, 0x3C - bl SendBlock - ldr r0, [r6] - strb r4, [r0, 0x8] - ldr r1, [r6] - b _08151140 -_081510DA: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0815118A - ldr r1, [r6] - b _08151140 -_081510E8: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _0815111E -_081510F4: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151116 - ldr r0, [r6] - adds r0, 0x4A - ldr r1, _08151148 @ =gBlockRecvBuffer - movs r2, 0x3C - bl memcpy - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_08151116: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0815111E: - ldr r0, [r6] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _081510F4 - ldr r3, _0815114C @ =gUnknown_203F3E0 - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _0815118A - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - ldr r1, [r3] -_08151140: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _0815118A - .align 2, 0 -_08151148: .4byte gBlockRecvBuffer -_0815114C: .4byte gUnknown_203F3E0 -_08151150: - movs r0, 0x1 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _0815118A - ldr r0, _08151190 @ =gUnknown_203F3E0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r0, r2, 0 - adds r0, 0x54 - adds r0, r1 - ldrh r1, [r0] - movs r3, 0x8A - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x6 - bl sub_8152090 - ldr r0, _08151194 @ =0x00000137 - movs r1, 0x4 - bl FadeOutAndPlayNewMapMusic -_0815118A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08151190: .4byte gUnknown_203F3E0 -_08151194: .4byte 0x00000137 - thumb_func_end sub_815109C - - thumb_func_start sub_8151198 -sub_8151198: @ 8151198 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _081511B0 @ =gUnknown_203F3E0 - ldr r0, [r6] - ldrb r4, [r0, 0x10] - cmp r4, 0x1 - beq _081511DC - cmp r4, 0x1 - bgt _081511B4 - cmp r4, 0 - beq _081511BE - b _0815129C - .align 2, 0 -_081511B0: .4byte gUnknown_203F3E0 -_081511B4: - cmp r4, 0x2 - beq _08151202 - cmp r4, 0x3 - beq _0815121C - b _0815129C -_081511BE: - bl sub_81531FC - movs r0, 0x1 - bl sub_81540DC - bl sub_81544F0 - movs r0, 0x1 - bl sub_81545BC - movs r0, 0x2 - bl sub_81549D4 - ldr r1, [r6] - b _0815128A -_081511DC: - bl sub_8155E68 - cmp r0, 0 - bne _081512AA - mov r0, sp - strb r4, [r0] - movs r0, 0x5 - bl sub_81549D4 - bl sub_8155E8C - mov r1, sp - strb r0, [r1] - movs r0, 0 - movs r2, 0x1 - bl SendBlock - ldr r1, [r6] - b _0815128A -_08151202: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _081512AA - ldr r1, [r6] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1, 0x10] - ldr r0, [r6] - strb r2, [r0, 0x8] - b _081512AA -_0815121C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _0815125A -_08151228: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151252 - ldr r2, [r6] - adds r2, r4, r2 - movs r0, 0x86 - lsls r0, 1 - adds r2, r0 - lsls r0, r4, 8 - ldr r1, _08151294 @ =gBlockRecvBuffer - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_08151252: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0815125A: - ldr r0, [r6] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _08151228 - ldr r4, _08151298 @ =gUnknown_203F3E0 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _081512AA - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bls _081512AA - movs r0, 0x6 - bl sub_81549D4 - ldr r1, [r4] -_0815128A: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _081512AA - .align 2, 0 -_08151294: .4byte gBlockRecvBuffer -_08151298: .4byte gUnknown_203F3E0 -_0815129C: - bl sub_8155E68 - cmp r0, 0 - bne _081512AA - movs r0, 0x7 - bl sub_8152090 -_081512AA: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8151198 - - thumb_func_start sub_81512B4 -sub_81512B4: @ 81512B4 - push {r4-r7,lr} - sub sp, 0x4 - ldr r5, _081512D0 @ =gUnknown_203F3E0 - ldr r0, [r5] - ldrb r0, [r0, 0x10] - cmp r0, 0x6 - bls _081512C4 - b _0815144A -_081512C4: - lsls r0, 2 - ldr r1, _081512D4 @ =_081512D8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081512D0: .4byte gUnknown_203F3E0 -_081512D4: .4byte _081512D8 - .align 2, 0 -_081512D8: - .4byte _081512F4 - .4byte _08151314 - .4byte _08151330 - .4byte _08151344 - .4byte _08151360 - .4byte _0815138C - .4byte _081513AC -_081512F4: - bl sub_81534AC - ldr r1, _0815130C @ =0x00000bb7 - cmp r0, r1 - bls _08151304 - movs r0, 0x4 - bl sub_81549D4 -_08151304: - ldr r0, _08151310 @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_0815130C: .4byte 0x00000bb7 -_08151310: .4byte gUnknown_203F3E0 -_08151314: - bl sub_8155E68 - cmp r0, 0 - beq _0815131E - b _08151480 -_0815131E: - movs r0, 0x3 - bl sub_81549D4 - ldr r0, _0815132C @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_0815132C: .4byte gUnknown_203F3E0 -_08151330: - bl sub_81546C0 - bl sub_8153048 - ldr r0, _08151340 @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_08151340: .4byte gUnknown_203F3E0 -_08151344: - bl sub_8155E8C - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - cmp r0, 0 - bne _08151356 - b _08151480 -_08151356: - ldr r0, _0815135C @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_0815135C: .4byte gUnknown_203F3E0 -_08151360: - bl sub_8155E68 - cmp r0, 0 - beq _0815136A - b _08151480 -_0815136A: - movs r0, 0x5 - bl sub_81549D4 - bl sub_8155E8C - mov r1, sp - strb r0, [r1] - movs r0, 0 - movs r2, 0x1 - bl SendBlock - ldr r0, _08151388 @ =gUnknown_203F3E0 - ldr r1, [r0] - b _0815142A - .align 2, 0 -_08151388: .4byte gUnknown_203F3E0 -_0815138C: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08151480 - ldr r3, _081513A8 @ =gUnknown_203F3E0 - ldr r1, [r3] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1, 0x10] - ldr r0, [r3] - strb r2, [r0, 0x8] - b _08151480 - .align 2, 0 -_081513A8: .4byte gUnknown_203F3E0 -_081513AC: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r7, _08151434 @ =gUnknown_203F3E0 - ldr r0, [r7] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcs _08151400 - adds r6, r7, 0 -_081513C4: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _081513EE - ldr r2, [r6] - adds r2, r4, r2 - movs r0, 0x86 - lsls r0, 1 - adds r2, r0 - lsls r0, r4, 8 - ldr r1, _08151438 @ =gBlockRecvBuffer - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_081513EE: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r7] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _081513C4 -_08151400: - ldr r4, _08151434 @ =gUnknown_203F3E0 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _0815143C - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bls _08151480 - bl sub_815336C - movs r0, 0x6 - bl sub_81549D4 - ldr r1, [r4] -_0815142A: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151480 - .align 2, 0 -_08151434: .4byte gUnknown_203F3E0 -_08151438: .4byte gBlockRecvBuffer -_0815143C: - bl sub_81532B8 - b _08151480 -_08151442: - movs r0, 0x8 - bl sub_8152090 - b _08151480 -_0815144A: - bl sub_8155E68 - cmp r0, 0 - bne _08151480 - movs r4, 0 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcs _0815147A - movs r3, 0x86 - lsls r3, 1 - adds r2, r1, r3 - adds r1, r0, 0 -_08151468: - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08151442 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r1 - bcc _08151468 -_0815147A: - movs r0, 0xA - bl sub_8152090 -_08151480: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81512B4 - - thumb_func_start sub_8151488 -sub_8151488: @ 8151488 - push {r4,lr} - ldr r4, _081514A0 @ =gUnknown_203F3E0 - ldr r0, [r4] - ldrb r0, [r0, 0x10] - cmp r0, 0x1 - beq _081514B6 - cmp r0, 0x1 - bgt _081514A4 - cmp r0, 0 - beq _081514AA - b _081514D6 - .align 2, 0 -_081514A0: .4byte gUnknown_203F3E0 -_081514A4: - cmp r0, 0x2 - beq _081514C0 - b _081514D6 -_081514AA: - bl Link_TryStartSend5FFF - movs r0, 0x7 - bl sub_81549D4 - b _081514CC -_081514B6: - bl sub_8155E68 - cmp r0, 0 - bne _081514E4 - b _081514CC -_081514C0: - bl sub_8155E8C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _081514E4 -_081514CC: - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _081514E4 -_081514D6: - ldr r0, _081514EC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _081514E4 - movs r0, 0x9 - bl sub_8152090 -_081514E4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081514EC: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_8151488 - - thumb_func_start sub_81514F0 -sub_81514F0: @ 81514F0 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08151508 @ =gUnknown_203F3E0 - ldr r0, [r4] - ldrb r1, [r0, 0x10] - cmp r1, 0x1 - beq _08151524 - cmp r1, 0x1 - bgt _0815150C - cmp r1, 0 - beq _08151512 - b _0815156C - .align 2, 0 -_08151508: .4byte gUnknown_203F3E0 -_0815150C: - cmp r1, 0x2 - beq _0815153C - b _0815156C -_08151512: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0815155E -_08151524: - bl UpdatePaletteFade - ldr r0, _08151538 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08151590 - b _0815155E - .align 2, 0 -_08151538: .4byte gPaletteFade -_0815153C: - bl sub_8154274 - bl sub_8153ED8 - ldr r0, [r4] - adds r0, 0x24 - ldrb r0, [r0] - bl sub_8153D08 - bl sub_8154578 - ldr r1, _08151568 @ =gUnknown_3002044 - movs r0, 0x1 - str r0, [r1] - movs r0, 0x8 - bl sub_81549D4 -_0815155E: - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151590 - .align 2, 0 -_08151568: .4byte gUnknown_3002044 -_0815156C: - bl sub_8155E68 - cmp r0, 0 - bne _08151590 - ldr r4, _08151598 @ =gUnknown_203F3E0 - ldr r0, [r4] - ldr r0, [r0] - bl SetMainCallback2 - ldr r0, [r4] - ldrb r0, [r0, 0x4] - bl DestroyTask - ldr r0, [r4] - bl Free - bl FreeAllWindowBuffers -_08151590: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08151598: .4byte gUnknown_203F3E0 - thumb_func_end sub_81514F0 - - thumb_func_start sub_815159C -sub_815159C: @ 815159C - push {r4,lr} - sub sp, 0x4 - ldr r4, _081515B4 @ =gUnknown_203F3E0 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - cmp r0, 0x6 - bhi _0815169C - lsls r0, 2 - ldr r1, _081515B8 @ =_081515BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081515B4: .4byte gUnknown_203F3E0 -_081515B8: .4byte _081515BC - .align 2, 0 -_081515BC: - .4byte _081515D8 - .4byte _08151676 - .4byte _081515F0 - .4byte _08151642 - .4byte _08151648 - .4byte _08151656 - .4byte _08151676 -_081515D8: - movs r0, 0x9 - bl sub_81549D4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08151686 -_081515F0: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - b _08151686 -_08151642: - bl StopMapMusic - b _08151686 -_08151648: - movs r0, 0xA5 - lsls r0, 1 - bl PlayNewMapMusic - bl sub_8154540 - b _08151686 -_08151656: - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08151686 -_08151676: - bl UpdatePaletteFade - ldr r0, _08151694 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081516CC -_08151686: - ldr r0, _08151698 @ =gUnknown_203F3E0 - ldr r1, [r0] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _081516CC - .align 2, 0 -_08151694: .4byte gPaletteFade -_08151698: .4byte gUnknown_203F3E0 -_0815169C: - ldrb r0, [r1, 0x4] - bl DestroyTask - ldr r0, _081516D4 @ =sub_81516DC - bl sub_815206C - bl sub_8154730 - ldr r0, [r4] - bl sub_81508EC - ldr r0, _081516D8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _081516C2 - ldr r0, [r4] - adds r0, 0x24 - movs r1, 0x1 - strb r1, [r0] -_081516C2: - bl sub_8153150 - movs r0, 0 - bl sub_81545BC -_081516CC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081516D4: .4byte sub_81516DC -_081516D8: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_815159C - - thumb_func_start sub_81516DC -sub_81516DC: @ 81516DC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _081516F8 @ =gUnknown_203F3E0 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - adds r4, r1, 0 - cmp r0, 0x1 - beq _08151708 - cmp r0, 0x1 - bgt _081516FC - cmp r0, 0 - beq _08151702 - b _08151720 - .align 2, 0 -_081516F8: .4byte gUnknown_203F3E0 -_081516FC: - cmp r0, 0x2 - beq _0815170E - b _08151720 -_08151702: - bl sub_81520B4 - b _08151712 -_08151708: - bl sub_8153DD8 - b _08151716 -_0815170E: - bl sub_8153F1C -_08151712: - cmp r0, 0x1 - bne _08151744 -_08151716: - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151744 -_08151720: - ldr r0, [r4] - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _08151738 - ldr r0, _08151734 @ =sub_8150C08 - bl sub_815206C - b _0815173E - .align 2, 0 -_08151734: .4byte sub_8150C08 -_08151738: - ldr r0, _0815174C @ =sub_8150C40 - bl sub_815206C -_0815173E: - adds r0, r5, 0 - bl DestroyTask -_08151744: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0815174C: .4byte sub_8150C40 - thumb_func_end sub_81516DC - - thumb_func_start sub_8151750 -sub_8151750: @ 8151750 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _08151774 @ =gTasks+0x8 - adds r6, r0, r1 - movs r0, 0 - ldrsh r5, [r6, r0] - cmp r5, 0x1 - beq _081517A8 - cmp r5, 0x1 - bgt _08151778 - cmp r5, 0 - beq _0815177E - b _08151836 - .align 2, 0 -_08151774: .4byte gTasks+0x8 -_08151778: - cmp r5, 0x2 - beq _081517BA - b _08151836 -_0815177E: - ldr r4, _081517A0 @ =gUnknown_203F3E0 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 2 - ldr r2, _081517A4 @ =0x0000318c - adds r0, r2 - adds r1, r0 - movs r0, 0 - movs r2, 0x1 - bl SendBlock - ldr r0, [r4] - strb r5, [r0, 0x8] - b _081517B2 - .align 2, 0 -_081517A0: .4byte gUnknown_203F3E0 -_081517A4: .4byte 0x0000318c -_081517A8: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08151836 -_081517B2: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _08151836 -_081517BA: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r3, _08151840 @ =gUnknown_203F3E0 - ldr r0, [r3] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcs _08151812 - adds r6, r3, 0 -_081517D2: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151800 - ldr r0, [r6] - lsls r2, r4, 2 - adds r2, r0 - ldr r0, _08151844 @ =0x0000318c - adds r2, r0 - lsls r0, r4, 8 - ldr r1, _08151848 @ =gBlockRecvBuffer - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0 - str r3, [sp] - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] - ldr r3, [sp] -_08151800: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r3] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _081517D2 -_08151812: - ldr r4, _08151840 @ =gUnknown_203F3E0 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x24 - ldrb r0, [r0, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _08151836 - adds r0, r7, 0 - bl DestroyTask - movs r0, 0x6 - bl sub_81549D4 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] -_08151836: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08151840: .4byte gUnknown_203F3E0 -_08151844: .4byte 0x0000318c -_08151848: .4byte gBlockRecvBuffer - thumb_func_end sub_8151750 - - thumb_func_start sub_815184C -sub_815184C: @ 815184C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - ldr r6, _08151928 @ =gUnknown_203F3E0 - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x24 - ldrb r7, [r1] - ldr r2, _0815192C @ =0x000031a0 - adds r1, r0, r2 - ldr r3, _08151930 @ =0x000031cc - adds r2, r0, r3 - ldr r4, _08151934 @ =0x00003208 - adds r3, r0, r4 - ldr r5, _08151938 @ =0x00003244 - adds r4, r0, r5 - str r4, [sp] - adds r5, 0x3C - adds r4, r0, r5 - str r4, [sp, 0x4] - adds r5, 0x3C - adds r4, r0, r5 - str r4, [sp, 0x8] - adds r4, r0, 0 - adds r4, 0x40 - str r4, [sp, 0xC] - movs r5, 0x90 - lsls r5, 1 - adds r4, r0, r5 - str r4, [sp, 0x10] - movs r4, 0x96 - lsls r4, 1 - adds r0, r4 - str r0, [sp, 0x14] - movs r0, 0 - bl sub_815A950 - ldr r1, [r6] - ldr r5, _0815193C @ =0x000031b0 - adds r2, r1, r5 - str r0, [r2] - movs r0, 0x94 - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - movs r5, 0x1 - cmp r5, r7 - bcs _081518F4 -_081518B0: - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xA8 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _081518EA - lsls r0, r5, 4 - subs r0, r5 - lsls r4, r0, 2 - adds r1, r4, r1 - ldr r2, _08151930 @ =0x000031cc - adds r1, r2 - adds r0, r5, 0 - bl sub_815AB04 - adds r1, r0, 0 - cmp r1, 0 - bne _081518EA - ldr r0, [r6] - adds r0, r4 - ldr r3, _08151930 @ =0x000031cc - adds r0, r3 - strb r1, [r0] - ldr r0, [r6] - movs r4, 0x94 - lsls r4, 1 - adds r0, r4 - strb r1, [r0] -_081518EA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _081518B0 -_081518F4: - ldr r5, _08151928 @ =gUnknown_203F3E0 - ldr r1, [r5] - movs r6, 0x92 - lsls r6, 1 - adds r1, r6 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bls _08151952 - ldr r1, [r5] - movs r2, 0x94 - lsls r2, 1 - adds r0, r1, r2 - ldrb r4, [r0] - cmp r4, 0 - beq _08151940 - bl sub_80FBA44 - ldr r0, [r5] - adds r0, r6 - movs r1, 0 - strb r1, [r0] - b _08151952 - .align 2, 0 -_08151928: .4byte gUnknown_203F3E0 -_0815192C: .4byte 0x000031a0 -_08151930: .4byte 0x000031cc -_08151934: .4byte 0x00003208 -_08151938: .4byte 0x00003244 -_0815193C: .4byte 0x000031b0 -_08151940: - adds r0, r1, r6 - ldrb r0, [r0] - cmp r0, 0x46 - bls _08151952 - bl sub_80FBA44 - ldr r0, [r5] - adds r0, r6 - strb r4, [r0] -_08151952: - movs r5, 0 - cmp r5, r7 - bcs _08151A46 - ldr r3, _0815199C @ =0x000031cc - mov r12, r3 - ldr r4, _081519A0 @ =gUnknown_203F3E0 - mov r8, r4 -_08151960: - mov r6, r8 - ldr r2, [r6] - lsls r0, r5, 4 - subs r1, r0, r5 - lsls r1, 2 - adds r1, r2, r1 - add r1, r12 - ldrb r1, [r1] - adds r6, r0, 0 - cmp r1, 0 - beq _08151986 - adds r0, r2, 0 - adds r0, 0xA8 - adds r1, r0, r5 - ldrb r0, [r1] - cmp r0, 0 - bne _08151986 - movs r0, 0x1 - strb r0, [r1] -_08151986: - adds r3, r4, 0 - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0xA8 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x3 - bgt _081519A4 - cmp r0, 0x1 - bge _081519AA - b _08151A3C - .align 2, 0 -_0815199C: .4byte 0x000031cc -_081519A0: .4byte gUnknown_203F3E0 -_081519A4: - cmp r0, 0x4 - beq _081519F8 - b _08151A3C -_081519AA: - adds r1, 0xB0 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _08151A3C - ldr r0, [r3] - adds r0, 0xB0 - adds r0, r5 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0xA8 - adds r0, r5 - strb r2, [r0] - ldr r0, [r3] - subs r1, r6, r5 - lsls r1, 2 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldr r0, [r3] - adds r0, r1 - ldr r6, _081519F0 @ =0x000031d0 - adds r0, r6 - strb r2, [r0] - ldr r0, [r3] - adds r0, r1 - ldr r1, _081519F4 @ =0x000031d4 - adds r0, r1 - b _08151A3A - .align 2, 0 -_081519F0: .4byte 0x000031d0 -_081519F4: .4byte 0x000031d4 -_081519F8: - adds r1, 0xB0 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x27 - bls _08151A3C - ldr r0, [r4] - adds r0, 0xB0 - adds r0, r5 - strb r2, [r0] - ldr r0, [r4] - adds r0, 0xA8 - adds r0, r5 - strb r2, [r0] - ldr r0, [r4] - subs r1, r6, r5 - lsls r1, 2 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldr r0, [r4] - adds r0, r1 - ldr r3, _08151A54 @ =0x000031d0 - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - adds r0, r1 - ldr r6, _08151A58 @ =0x000031d4 - adds r0, r6 -_08151A3A: - strb r2, [r0] -_08151A3C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _08151960 -_08151A46: - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08151A54: .4byte 0x000031d0 -_08151A58: .4byte 0x000031d4 - thumb_func_end sub_815184C - thumb_func_start sub_8151A5C sub_8151A5C: @ 8151A5C push {r4-r7,lr} diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h index 47cece996..5304ae6ee 100644 --- a/include/dodrio_berry_picking.h +++ b/include/dodrio_berry_picking.h @@ -1,6 +1,31 @@ #ifndef GUARD_DODRIO_BERRY_PICKING_H #define GUARD_DODRIO_BERRY_PICKING_H +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 + void StartDodrioBerryPicking(u16 species, MainCallback callback); +u32 sub_815A950(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 *arg6, u32 *arg7, u32 *arg8); +u32 sub_815AB04(u32 arg0, u8 *arg1); + #endif //GUARD_DODRIO_BERRY_PICKING_H diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 2341e4341..405b22165 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -1,6 +1,8 @@ #include "global.h" #include "gflib.h" +#include "dodrio_berry_picking.h" #include "link.h" +#include "link_rfu.h" #include "minigame_countdown.h" #include "strings.h" #include "task.h" @@ -29,28 +31,6 @@ struct DodrioStruct_2022CF4 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; @@ -159,6 +139,7 @@ void sub_8152048(struct DodrioSubstruct_318C * dodrioMon, struct Pokemon * party void sub_815205C(TaskFunc func, u8 priority); void sub_815206C(TaskFunc func); void sub_8152090(u8 a0); +bool32 sub_81520B4(void); void sub_8152110(void); void sub_815256C(void); void sub_815293C(void); @@ -167,18 +148,35 @@ void sub_81529A4(u8 a0, u8 *a1, u8 *a2); bool32 sub_8152A98(void); bool32 sub_8152AD8(void); void sub_8153004(void); +void sub_8153048(void); void sub_8153150(void); +void sub_81531FC(void); u8 sub_815327C(u8); +void sub_81532B8(void); +void sub_815336C(void); +u32 sub_81534AC(void); void sub_8153A9C(void); void sub_8153AFC(struct DodrioSubstruct_318C * unk318C, u8 a1, u8 a2, u8 a3); void sub_8153BF8(u8 a0); +void sub_8153D08(u8 playerCount); void sub_8153D80(bool8 a0, u8 a1); +void sub_8153DD8(void); void nullsub_97(struct Sprite *sprite); void sub_8153E28(void); +void sub_8153ED8(void); +bool32 sub_8153F1C(void); +void sub_81540DC(bool8 a0); void sub_8154128(void); void sub_815417C(void); +void sub_8154274(void); void sub_81543E8(struct Sprite *sprite); void sub_8154438(void); +void sub_81544F0(void); +void sub_8154540(void); +void sub_8154578(void); +void sub_81545BC(bool8 a0); +void sub_81546C0(void); +void sub_8154730(void); void sub_8154968(struct DodrioSubstruct_0160 * unk0160); void sub_81549D4(u8 a0); void sub_8154A2C(void); @@ -191,6 +189,7 @@ void sub_8155C2C(void); void sub_8155C80(void); void unused_0(void); void nullsub_98(void); +u8 sub_8155E8C(void); // const rom data @@ -496,7 +495,7 @@ void StartDodrioBerryPicking(u16 a0, MainCallback callback) { gUnknown_3002044 = FALSE; - if (gReceivedRemoteLinkPlayers != 0 && (gUnknown_203F3E0 = AllocZeroed(sizeof(*gUnknown_203F3E0))) != NULL) + if (gReceivedRemoteLinkPlayers && (gUnknown_203F3E0 = AllocZeroed(sizeof(*gUnknown_203F3E0))) != NULL) { sub_81508D8(); sub_81508EC(gUnknown_203F3E0); @@ -607,7 +606,7 @@ void sub_8150A84(u8 taskId) case 3: if (IsLinkTaskFinished()) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); @@ -907,6 +906,469 @@ void sub_8150FDC(void) } } +void sub_815109C(void) +{ + u8 i; + u8 blockReceivedStatus; + + switch (gUnknown_203F3E0->unk10) { + case 0: + SendBlock(0, gUnknown_203F3E0->unk4A[gUnknown_203F3E0->unk14], sizeof(gUnknown_203F3E0->unk4A)); + gUnknown_203F3E0->unk08 = 0; + gUnknown_203F3E0->unk10++; + break; + case 1: + if (IsLinkTaskFinished()) { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + memcpy(gUnknown_203F3E0->unk4A, gBlockRecvBuffer, sizeof(gUnknown_203F3E0->unk4A)); + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) { + gUnknown_203F3E0->unk14++; + gUnknown_203F3E0->unk10++; + } + break; + default: + if (WaitFanfare(TRUE)) { + gUnknown_203F3E0->unk114 = gUnknown_203F3E0->unk4A[gUnknown_203F3E0->multiplayerId][5]; + sub_8152090(6); + FadeOutAndPlayNewMapMusic(MUS_WIN_YASEI, 4); + } + break; + } +} + +void sub_8151198(void) +{ + u8 sp00; + u8 i; + u8 blockReceivedStatus; + + switch (gUnknown_203F3E0->unk10) + { + case 0: + sub_81531FC(); + sub_81540DC(TRUE); + sub_81544F0(); + sub_81545BC(TRUE); + sub_81549D4(2); + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + { + sp00 = 1; + sub_81549D4(5); + sp00 = sub_8155E8C(); + SendBlock(0, &sp00, sizeof(sp00)); + gUnknown_203F3E0->unk10++; + } + break; + case 2: + if (IsLinkTaskFinished()) + { + gUnknown_203F3E0->unk10++; + gUnknown_203F3E0->unk08 = 0; + } + break; + case 3: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + *(gUnknown_203F3E0->unk10C + i) = *(u8 *)gBlockRecvBuffer[i]; + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) { + if (++gUnknown_203F3E0->unk14 >= 120) + { + sub_81549D4(6); + gUnknown_203F3E0->unk10++; + } + } + break; + default: + if (!sub_8155E68()) + { + sub_8152090(7); + } + break; + } +} + +void sub_81512B4(void) +{ + u8 sp0; + u8 i; + u8 blockReceivedStatus; + + switch (gUnknown_203F3E0->unk10) + { + case 0: + if (sub_81534AC() >= 3000) + { + sub_81549D4(4); + } + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + { + sub_81549D4(3); + gUnknown_203F3E0->unk10++; + } + break; + case 2: + sub_81546C0(); + sub_8153048(); + gUnknown_203F3E0->unk10++; + break; + case 3: + if ((sp0 = sub_8155E8C()) != 0) + { + gUnknown_203F3E0->unk10++; + } + break; + case 4: + if (!sub_8155E68()) + { + sub_81549D4(5); + sp0 = sub_8155E8C(); + SendBlock(0, &sp0, sizeof(sp0)); + gUnknown_203F3E0->unk10++; + } + break; + case 5: + if (IsLinkTaskFinished()) + { + gUnknown_203F3E0->unk10++; + gUnknown_203F3E0->unk08 = 0; + } + break; + case 6: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + *(gUnknown_203F3E0->unk10C + i) = *(u8 *)gBlockRecvBuffer[i]; + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) { + if (++gUnknown_203F3E0->unk14 >= 120) + { + sub_815336C(); + sub_81549D4(6); + gUnknown_203F3E0->unk10++; + } + } + else + { + sub_81532B8(); + } + break; + default: + if (!sub_8155E68()) + { + for (i = 0; i < gUnknown_203F3E0->unk24; i++) + { + if (gUnknown_203F3E0->unk10C[i] == 2) + { + sub_8152090(8); + return; + } + } + sub_8152090(10); + } + break; + } +} + +void sub_8151488(void) +{ + switch (gUnknown_203F3E0->unk10) + { + case 0: + Link_TryStartSend5FFF(); + sub_81549D4(7); + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + if (sub_8155E8C() == 5) + { + gUnknown_203F3E0->unk10++; + } + break; + default: + if (!gReceivedRemoteLinkPlayers) + { + sub_8152090(9); + } + break; + } +} + +void sub_81514F0(void) +{ + switch (gUnknown_203F3E0->unk10) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gUnknown_203F3E0->unk10++; + break; + case 1: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + sub_8154274(); + sub_8153ED8(); + sub_8153D08(gUnknown_203F3E0->unk24); + sub_8154578(); + gUnknown_3002044 = TRUE; + sub_81549D4(8); + gUnknown_203F3E0->unk10++; + break; + default: + if (!sub_8155E68()) + { + SetMainCallback2(gUnknown_203F3E0->savedCallback); + DestroyTask(gUnknown_203F3E0->unk04); + Free(gUnknown_203F3E0); + FreeAllWindowBuffers(); + } + break; + } +} + +void sub_815159C(void) +{ + switch (gUnknown_203F3E0->unk10) + { + case 0: + sub_81549D4(9); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gUnknown_203F3E0->unk10++; + break; + case 1: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk10++; + } + break; + case 2: + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + gUnknown_203F3E0->unk10++; + break; + case 3: + StopMapMusic(); + gUnknown_203F3E0->unk10++; + break; + case 4: + PlayNewMapMusic(MUS_KINOMIKUI); + sub_8154540(); + gUnknown_203F3E0->unk10++; + break; + case 5: + BlendPalettes(0xFFFFFFFF, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + gUnknown_203F3E0->unk10++; + break; + case 6: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk10++; + } + break; + default: + DestroyTask(gUnknown_203F3E0->unk04); + sub_815206C(sub_81516DC); + sub_8154730(); + sub_81508EC(gUnknown_203F3E0); + if (!gReceivedRemoteLinkPlayers) + { + gUnknown_203F3E0->unk24 = 1; + } + sub_8153150(); + sub_81545BC(FALSE); + break; + } +} + +void sub_81516DC(u8 taskId) +{ + switch (gUnknown_203F3E0->unk10) + { + case 0: + if (sub_81520B4() == 1) + { + gUnknown_203F3E0->unk10++; + } + break; + case 1: + sub_8153DD8(); + gUnknown_203F3E0->unk10++; + break; + case 2: + if (sub_8153F1C() == TRUE) + { + gUnknown_203F3E0->unk10++; + } + break; + default: + if (gUnknown_203F3E0->unk20 != 0) + { + sub_815206C(sub_8150C08); + } + else + { + sub_815206C(sub_8150C40); + } + DestroyTask(taskId); + break; + } +} + +void sub_8151750(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 i; + u8 blockReceivedStatus; + + switch (data[0]) + { + case 0: + SendBlock(0, &gUnknown_203F3E0->unk318C[gUnknown_203F3E0->multiplayerId].isShiny, sizeof(gUnknown_203F3E0->unk318C[gUnknown_203F3E0->multiplayerId].isShiny)); + gUnknown_203F3E0->unk08 = 0; + data[0]++; + break; + case 1: + if (IsLinkTaskFinished()) + { + data[0]++; + } + break; + case 2: + blockReceivedStatus = GetBlockReceivedStatus(); + for (i = 0; i < gUnknown_203F3E0->unk24; blockReceivedStatus >>= 1, i++) + { + if (blockReceivedStatus & 1) + { + *(u8 *)&gUnknown_203F3E0->unk318C[i] = *(u8 *)gBlockRecvBuffer[i]; + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) + { + DestroyTask(taskId); + sub_81549D4(6); + gUnknown_203F3E0->unk10++; + } + break; + } +} + +void sub_815184C(void) +{ + u8 i; + u8 r7 = gUnknown_203F3E0->unk24; + + gUnknown_203F3E0->unk31A0[0].unk10 = sub_815A950(0, &gUnknown_203F3E0->unk31A0[0], &gUnknown_203F3E0->unk31A0[0].unk2C, &gUnknown_203F3E0->unk31A0[1].unk2C, &gUnknown_203F3E0->unk31A0[2].unk2C, &gUnknown_203F3E0->unk31A0[3].unk2C, &gUnknown_203F3E0->unk31A0[4].unk2C, &gUnknown_203F3E0->unk40, &gUnknown_203F3E0->unk120, &gUnknown_203F3E0->unk12C); + gUnknown_203F3E0->unk128 = 1; + + for (i = 1; i < r7; i++) + { + if ( gUnknown_203F3E0->unkA8[i] == 0 + && sub_815AB04(i, &gUnknown_203F3E0->unk31A0[i].unk2C.unk0) == 0) + { + gUnknown_203F3E0->unk31A0[i].unk2C.unk0 = 0; + gUnknown_203F3E0->unk128 = 0; + } + } + if (++gUnknown_203F3E0->unk124 >= 60) + { + if (gUnknown_203F3E0->unk128 != 0) + { + sub_80FBA44(); + gUnknown_203F3E0->unk124 = 0; + } + else if (gUnknown_203F3E0->unk124 > 70) + { + sub_80FBA44(); + gUnknown_203F3E0->unk124 = 0; + } + } + + for (i = 0; i < r7; i++) + { + if ( gUnknown_203F3E0->unk31A0[i].unk2C.unk0 != 0 + && gUnknown_203F3E0->unkA8[i] == 0) + { + gUnknown_203F3E0->unkA8[i] = 1; + } + switch (gUnknown_203F3E0->unkA8[i]) + { + case 0: + default: + break; + case 1 ... 3: + if (++gUnknown_203F3E0->unkB0[i] >= 6) + { + gUnknown_203F3E0->unkB0[i] = 0; + gUnknown_203F3E0->unkA8[i] = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk0 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk8 = 0; + } + break; + case 4: + if (++gUnknown_203F3E0->unkB0[i] >= 40) + { + gUnknown_203F3E0->unkB0[i] = 0; + gUnknown_203F3E0->unkA8[i] = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk0 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[i].unk2C.unk8 = 0; + } + break; + } + } +} + const s16 sUnknown_84755D8[] = {10, 30, 50, 50}; // Data related to printing saved results. |