summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/dodrio_berry_picking.s1236
-rw-r--r--include/dodrio_berry_picking.h25
-rw-r--r--src/dodrio_berry_picking.c510
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.