diff options
-rw-r--r-- | asm/dodrio_berry_picking.s | 1092 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/dodrio_berry_picking.c | 957 | ||||
-rw-r--r-- | sym_bss.txt | 7 | ||||
-rw-r--r-- | sym_ewram.txt | 23 |
5 files changed, 814 insertions, 1266 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s index eca27fd8d..9ae56f4fd 100644 --- a/asm/dodrio_berry_picking.s +++ b/asm/dodrio_berry_picking.s @@ -5,1098 +5,6 @@ .text - thumb_func_start StartDodrioBerryPicking -StartDodrioBerryPicking: @ 81507FC - push {r4-r6,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r1, _081508A4 @ =gUnknown_3002044 - movs r0, 0 - str r0, [r1] - ldr r0, _081508A8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _081508CC - ldr r4, _081508AC @ =gUnknown_203F3E0 - ldr r0, _081508B0 @ =0x00003330 - bl AllocZeroed - str r0, [r4] - cmp r0, 0 - beq _081508CC - bl sub_81508D8 - ldr r0, [r4] - bl sub_81508EC - ldr r0, [r4] - str r5, [r0] - bl GetMultiplayerId - ldr r1, [r4] - adds r1, 0x28 - strb r0, [r1] - ldr r1, [r4] - ldr r2, _081508B4 @ =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, _081508B8 @ =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, _081508BC @ =0x0000318c - adds r1, r2 - adds r0, r1 - movs r1, 0x64 - muls r1, r6 - ldr r2, _081508C0 @ =gPlayerParty - adds r1, r2 - bl sub_8152048 - ldr r0, _081508C4 @ =sub_8150A84 - movs r1, 0x1 - bl CreateTask - ldr r0, _081508C8 @ =sub_815201C - bl SetMainCallback2 - bl sub_8153150 - 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_81529A4 - bl StopMapMusic - movs r0, 0xA5 - lsls r0, 1 - bl PlayNewMapMusic - b _081508D2 - .align 2, 0 -_081508A4: .4byte gUnknown_3002044 -_081508A8: .4byte gReceivedRemoteLinkPlayers -_081508AC: .4byte gUnknown_203F3E0 -_081508B0: .4byte 0x00003330 -_081508B4: .4byte 0x000032cc -_081508B8: .4byte 0x000031a0 -_081508BC: .4byte 0x0000318c -_081508C0: .4byte gPlayerParty -_081508C4: .4byte sub_8150A84 -_081508C8: .4byte sub_815201C -_081508CC: - adds r0, r5, 0 - bl SetMainCallback2 -_081508D2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end StartDodrioBerryPicking - - thumb_func_start sub_81508D8 -sub_81508D8: @ 81508D8 - push {lr} - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - pop {r0} - bx r0 - thumb_func_end sub_81508D8 - - thumb_func_start sub_81508EC -sub_81508EC: @ 81508EC - 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 -_08150932: - adds r0, r1, r5 - strb r3, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08150932 - 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 -_0815099E: - 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 _0815099E - movs r5, 0 - movs r3, 0 - movs r4, 0xFF - ldr r6, [sp, 0x1C] -_081509E8: - 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 _081509E8 - bl GetMultiplayerId - movs r1, 0 - lsls r0, 24 - cmp r0, 0 - bne _08150A26 - movs r1, 0x1 -_08150A26: - 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 _08150A72 - ldr r7, [sp, 0x18] - mov r6, r8 -_08150A48: - 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 _08150A66 - adds r0, r2, 0 - bl __umodsi3 - strb r0, [r4] -_08150A66: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - cmp r5, r0 - bcc _08150A48 -_08150A72: - 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_81508EC - - thumb_func_start sub_8150A84 -sub_8150A84: @ 8150A84 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _08150AA4 @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0xC] - cmp r0, 0x7 - bls _08150A98 - b _08150BF0 -_08150A98: - lsls r0, 2 - ldr r1, _08150AA8 @ =_08150AAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08150AA4: .4byte gUnknown_203F3E0 -_08150AA8: .4byte _08150AAC - .align 2, 0 -_08150AAC: - .4byte _08150ACC - .4byte _08150AE0 - .4byte _08150B08 - .4byte _08150B16 - .4byte _08150B3C - .4byte _08150B90 - .4byte _08150BA2 - .4byte _08150BCC -_08150ACC: - movs r0, 0 - bl SetVBlankCallback - ldr r0, _08150ADC @ =sub_8151750 - movs r1, 0x4 - bl sub_815205C - b _08150BDC - .align 2, 0 -_08150ADC: .4byte sub_8151750 -_08150AE0: - ldr r0, _08150B00 @ =sub_8151750 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08150AEE - b _08150BFC -_08150AEE: - ldr r4, _08150B04 @ =gUnknown_203F3E0 - ldr r0, [r4] - movs r1, 0xB0 - lsls r1, 1 - adds r0, r1 - bl sub_8154968 - ldr r1, [r4] - b _08150BE0 - .align 2, 0 -_08150B00: .4byte sub_8151750 -_08150B04: .4byte gUnknown_203F3E0 -_08150B08: - bl sub_8155E68 - cmp r0, 0 - bne _08150BFC - bl LinkRfu_SetRfuFuncToSend6600 - b _08150BDC -_08150B16: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08150BFC - ldr r0, _08150B38 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08150BDC - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - b _08150BDC - .align 2, 0 -_08150B38: .4byte gReceivedRemoteLinkPlayers -_08150B3C: - ldr r0, _08150B88 @ =gUnknown_203F3E0 - ldr r0, [r0] - adds r0, 0x24 - ldrb r5, [r0] - bl sub_8153A9C - movs r4, 0 - cmp r4, r5 - bcs _08150B76 -_08150B4E: - ldr r0, _08150B88 @ =gUnknown_203F3E0 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x34 - adds r0, r4 - ldrb r2, [r0] - lsls r0, r2, 2 - ldr r3, _08150B8C @ =0x0000318c - adds r0, r3 - adds r0, r1, r0 - adds r1, 0x24 - ldrb r3, [r1] - adds r1, r4, 0 - bl sub_8153AFC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08150B4E -_08150B76: - ldr r4, _08150B88 @ =gUnknown_203F3E0 - ldr r0, [r4] - adds r0, 0x24 - ldrb r1, [r0] - movs r0, 0 - bl sub_8153D80 - ldr r1, [r4] - b _08150BE0 - .align 2, 0 -_08150B88: .4byte gUnknown_203F3E0 -_08150B8C: .4byte 0x0000318c -_08150B90: - bl sub_8154128 - bl sub_815417C - bl sub_8154438 - bl sub_8153E28 - b _08150BDC -_08150BA2: - 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, _08150BC8 @ =sub_8152034 - bl SetVBlankCallback - b _08150BDC - .align 2, 0 -_08150BC8: .4byte sub_8152034 -_08150BCC: - bl UpdatePaletteFade - ldr r0, _08150BE8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08150BFC -_08150BDC: - ldr r0, _08150BEC @ =gUnknown_203F3E0 - ldr r1, [r0] -_08150BE0: - ldrb r0, [r1, 0xC] - adds r0, 0x1 - strb r0, [r1, 0xC] - b _08150BFC - .align 2, 0 -_08150BE8: .4byte gPaletteFade -_08150BEC: .4byte gUnknown_203F3E0 -_08150BF0: - adds r0, r1, 0 - bl DestroyTask - ldr r0, _08150C04 @ =sub_81516DC - bl sub_815206C -_08150BFC: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08150C04: .4byte sub_81516DC - thumb_func_end sub_8150A84 - - thumb_func_start sub_8150C08 -sub_8150C08: @ 8150C08 - push {lr} - bl sub_8151B54 - ldr r1, _08150C34 @ =sUnknown_8475578 - ldr r0, _08150C38 @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0x18] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08150C3C @ =gUnknown_3002044 - ldr r0, [r0] - cmp r0, 0 - bne _08150C2C - bl sub_815293C -_08150C2C: - bl sub_8151BA0 - pop {r0} - bx r0 - .align 2, 0 -_08150C34: .4byte sUnknown_8475578 -_08150C38: .4byte gUnknown_203F3E0 -_08150C3C: .4byte gUnknown_3002044 - thumb_func_end sub_8150C08 - - thumb_func_start sub_8150C40 -sub_8150C40: @ 8150C40 - push {lr} - bl sub_8151C5C - ldr r1, _08150C6C @ =sUnknown_84755A8 - ldr r0, _08150C70 @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0x18] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08150C74 @ =gUnknown_3002044 - ldr r0, [r0] - cmp r0, 0 - bne _08150C64 - bl sub_8152970 -_08150C64: - bl sub_8151D28 - pop {r0} - bx r0 - .align 2, 0 -_08150C6C: .4byte sUnknown_84755A8 -_08150C70: .4byte gUnknown_203F3E0 -_08150C74: .4byte gUnknown_3002044 - thumb_func_end sub_8150C40 - - thumb_func_start sub_8150C78 -sub_8150C78: @ 8150C78 - push {r4,lr} - ldr r4, _08150C8C @ =gUnknown_203F3E0 - ldr r0, [r4] - ldrb r0, [r0, 0x10] - cmp r0, 0 - beq _08150C90 - cmp r0, 0x1 - beq _08150CA6 - b _08150CB4 - .align 2, 0 -_08150C8C: .4byte gUnknown_203F3E0 -_08150C90: - movs r0, 0x1 - bl sub_8153BF8 - movs r0, 0x1 - bl sub_81549D4 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08150CB4 -_08150CA6: - bl sub_8155E68 - cmp r0, 0 - bne _08150CB4 - movs r0, 0x1 - bl sub_8152090 -_08150CB4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8150C78 - - thumb_func_start sub_8150CBC -sub_8150CBC: @ 8150CBC - push {r4,lr} - ldr r4, _08150CD8 @ =gUnknown_203F3E0 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - cmp r0, 0 - bne _08150CDC - bl sub_8152110 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08150CEC - .align 2, 0 -_08150CD8: .4byte gUnknown_203F3E0 -_08150CDC: - movs r0, 0x8C - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - str r0, [r1] - movs r0, 0x2 - bl sub_8152090 -_08150CEC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8150CBC - - thumb_func_start sub_8150CF4 -sub_8150CF4: @ 8150CF4 - push {lr} - sub sp, 0x4 - ldr r0, _08150D0C @ =gUnknown_203F3E0 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - cmp r0, 0x4 - bhi _08150D74 - lsls r0, 2 - ldr r1, _08150D10 @ =_08150D14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08150D0C: .4byte gUnknown_203F3E0 -_08150D10: .4byte _08150D14 - .align 2, 0 -_08150D14: - .4byte _08150D28 - .4byte _08150D4E - .4byte _08150D3A - .4byte _08150D46 - .4byte _08150D64 -_08150D28: - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0x78 - movs r3, 0x50 - bl StartMinigameCountdown - b _08150D52 -_08150D3A: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08150D74 - b _08150D52 -_08150D46: - bl IsMinigameCountdownRunning - cmp r0, 0 - bne _08150D74 -_08150D4E: - bl LinkRfu_SetRfuFuncToSend6600 -_08150D52: - ldr r0, _08150D60 @ =gUnknown_203F3E0 - ldr r1, [r0] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08150D74 - .align 2, 0 -_08150D60: .4byte gUnknown_203F3E0 -_08150D64: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08150D74 - movs r0, 0x3 - bl sub_8152090 -_08150D74: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8150CF4 - - thumb_func_start sub_8150D7C -sub_8150D7C: @ 8150D7C - push {lr} - ldr r0, _08150DA0 @ =gUnknown_203F3E0 - ldr r1, [r0] - ldrb r0, [r1, 0x10] - cmp r0, 0 - bne _08150D9A - movs r2, 0x8E - lsls r2, 1 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - beq _08150D9A - movs r0, 0x4 - bl sub_8152090 -_08150D9A: - pop {r0} - bx r0 - .align 2, 0 -_08150DA0: .4byte gUnknown_203F3E0 - thumb_func_end sub_8150D7C - - thumb_func_start sub_8150DA4 -sub_8150DA4: @ 8150DA4 - push {r4,lr} - ldr r4, _08150DE4 @ =gUnknown_203F3E0 - ldr r2, [r4] - ldrb r0, [r2, 0x10] - cmp r0, 0 - bne _08150E62 - adds r0, r2, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bhi _08150E54 - adds r0, r2, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0 - bne _08150E5A - ldr r0, _08150DE8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08150DF4 - ldr r1, _08150DEC @ =0x000031cc - adds r0, r2, r1 - ldrb r1, [r0] - cmp r1, 0 - bne _08150E5A - ldr r3, _08150DF0 @ =0x000031d0 - adds r0, r2, r3 - strb r1, [r0] - movs r0, 0x2 - b _08150E2E - .align 2, 0 -_08150DE4: .4byte gUnknown_203F3E0 -_08150DE8: .4byte gMain -_08150DEC: .4byte 0x000031cc -_08150DF0: .4byte 0x000031d0 -_08150DF4: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08150E14 - ldr r3, _08150E10 @ =0x000031cc - adds r0, r2, r3 - ldrb r1, [r0] - cmp r1, 0 - bne _08150E5A - adds r3, 0x4 - adds r0, r2, r3 - strb r1, [r0] - movs r0, 0x1 - b _08150E2E - .align 2, 0 -_08150E10: .4byte 0x000031cc -_08150E14: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08150E40 - ldr r3, _08150E3C @ =0x000031cc - adds r0, r2, r3 - ldrb r1, [r0] - cmp r1, 0 - bne _08150E5A - adds r3, 0x4 - adds r0, r2, r3 - strb r1, [r0] - movs r0, 0x3 -_08150E2E: - bl sub_815327C - ldr r1, [r4] - ldr r2, _08150E3C @ =0x000031cc - adds r1, r2 - strb r0, [r1] - b _08150E5A - .align 2, 0 -_08150E3C: .4byte 0x000031cc -_08150E40: - movs r0, 0 - bl sub_815327C - ldr r1, [r4] - ldr r3, _08150E50 @ =0x000031cc - adds r1, r3 - strb r0, [r1] - b _08150E5A - .align 2, 0 -_08150E50: .4byte 0x000031cc -_08150E54: - movs r0, 0xB - bl sub_8152090 -_08150E5A: - bl sub_815256C - bl sub_8151D98 -_08150E62: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8150DA4 - - thumb_func_start sub_8150E68 -sub_8150E68: @ 8150E68 - push {lr} - ldr r0, _08150EA8 @ =gUnknown_203F3E0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x9 - bhi _08150F30 - ldr r0, _08150EAC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08150EB8 - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r2, r0 - ldr r1, _08150EB0 @ =0x000031cc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08150F36 - ldr r3, _08150EB4 @ =0x000032f8 - adds r1, r2, r3 - movs r0, 0x2 - strb r0, [r1] - b _08150F36 - .align 2, 0 -_08150EA8: .4byte gUnknown_203F3E0 -_08150EAC: .4byte gMain -_08150EB0: .4byte 0x000031cc -_08150EB4: .4byte 0x000032f8 -_08150EB8: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08150EEC - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r2, r0 - ldr r1, _08150EE4 @ =0x000031cc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08150F36 - ldr r3, _08150EE8 @ =0x000032f8 - adds r1, r2, r3 - movs r0, 0x1 - strb r0, [r1] - b _08150F36 - .align 2, 0 -_08150EE4: .4byte 0x000031cc -_08150EE8: .4byte 0x000032f8 -_08150EEC: - movs r0, 0x20 - ands r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _08150F24 - adds r0, r2, 0 - adds r0, 0x28 - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 2 - adds r0, r2, r0 - ldr r1, _08150F1C @ =0x000031cc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08150F36 - ldr r3, _08150F20 @ =0x000032f8 - adds r1, r2, r3 - movs r0, 0x3 - strb r0, [r1] - b _08150F36 - .align 2, 0 -_08150F1C: .4byte 0x000031cc -_08150F20: .4byte 0x000032f8 -_08150F24: - ldr r3, _08150F2C @ =0x000032f8 - adds r0, r2, r3 - strb r1, [r0] - b _08150F36 - .align 2, 0 -_08150F2C: .4byte 0x000032f8 -_08150F30: - movs r0, 0xB - bl sub_8152090 -_08150F36: - bl sub_8151E94 - pop {r0} - bx r0 - thumb_func_end sub_8150E68 - - thumb_func_start sub_8150F40 -sub_8150F40: @ 8150F40 - push {r4,r5,lr} - bl sub_815256C - bl sub_8151D98 - bl sub_8152A98 - cmp r0, 0x1 - bne _08150F5E - bl sub_8153004 - movs r0, 0x5 - bl sub_8152090 - b _08150FBC -_08150F5E: - ldr r0, _08150F8C @ =gUnknown_203F3E0 - ldr r2, [r0] - movs r1, 0x96 - lsls r1, 1 - adds r4, r2, r1 - movs r1, 0x1 - str r1, [r4] - movs r3, 0x1 - adds r1, r2, 0 - adds r1, 0x24 - adds r5, r0, 0 - ldrb r1, [r1] - cmp r3, r1 - bcs _08150FBC - movs r1, 0x9A - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - cmp r0, 0x1 - beq _08150F90 - movs r0, 0 - str r0, [r4] - b _08150FBC - .align 2, 0 -_08150F8C: .4byte gUnknown_203F3E0 -_08150F90: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x24 - ldrb r0, [r0] - cmp r3, r0 - bcs _08150FBC - lsls r0, r3, 2 - movs r4, 0x98 - lsls r4, 1 - adds r1, r2, r4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0x1 - beq _08150F90 - movs r0, 0x96 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] -_08150FBC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8150F40 - - thumb_func_start sub_8150FC4 -sub_8150FC4: @ 8150FC4 - push {lr} - bl sub_8151E94 - bl sub_8152AD8 - cmp r0, 0x1 - bne _08150FD8 - movs r0, 0x5 - bl sub_8152090 -_08150FD8: - pop {r0} - bx r0 - thumb_func_end sub_8150FC4 - - thumb_func_start sub_8150FDC -sub_8150FDC: @ 8150FDC - push {r4-r6,lr} - ldr r6, _08150FF4 @ =gUnknown_203F3E0 - ldr r1, [r6] - ldrb r4, [r1, 0x10] - cmp r4, 0x1 - beq _08151010 - cmp r4, 0x1 - bgt _08150FF8 - cmp r4, 0 - beq _08150FFE - b _08151078 - .align 2, 0 -_08150FF4: .4byte gUnknown_203F3E0 -_08150FF8: - cmp r4, 0x2 - beq _0815101E - b _08151078 -_08150FFE: - adds r1, 0x4A - movs r0, 0 - movs r2, 0x3C - bl SendBlock - ldr r0, [r6] - strb r4, [r0, 0x8] - ldr r1, [r6] - b _0815106A -_08151010: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08151092 - ldr r1, [r6] - b _0815106A -_0815101E: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _08151048 -_0815102A: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08151040 - adds r0, r4, 0 - bl ResetBlockReceivedFlag - ldr r1, [r6] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_08151040: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08151048: - ldr r0, [r6] - adds r0, 0x24 - ldrb r0, [r0] - cmp r4, r0 - bcc _0815102A - ldr r3, _08151074 @ =gUnknown_203F3E0 - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x24 - ldrb r0, [r2, 0x8] - ldrb r1, [r1] - cmp r0, r1 - bcc _08151092 - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - ldr r1, [r3] -_0815106A: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _08151092 - .align 2, 0 -_08151074: .4byte gUnknown_203F3E0 -_08151078: - movs r0, 0x1 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _08151092 - movs r0, 0x6 - bl sub_8152090 - ldr r0, _08151098 @ =0x00000137 - movs r1, 0x4 - bl FadeOutAndPlayNewMapMusic -_08151092: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08151098: .4byte 0x00000137 - thumb_func_end sub_8150FDC - thumb_func_start sub_815109C sub_815109C: @ 815109C push {r4-r6,lr} diff --git a/ld_script.txt b/ld_script.txt index 2fa7fe805..2a942b605 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -286,6 +286,7 @@ SECTIONS { src/braille_text.o(.text); src/text_window.o(.text); src/quest_log_player.o(.text); + src/dodrio_berry_picking.o(.text); asm/dodrio_berry_picking.o(.text); src/battle_controller_pokedude.o(.text); src/quest_log_objects.o(.text); diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 36dc3fdd2..2341e4341 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -1,40 +1,201 @@ #include "global.h" -#include "bg.h" +#include "gflib.h" +#include "link.h" +#include "minigame_countdown.h" #include "strings.h" -#include "window.h" - -/*static*/ void sub_8150C78(void); -/*static*/ void sub_8150CBC(void); -/*static*/ void sub_8150CF4(void); -/*static*/ void sub_8150D7C(void); -/*static*/ void sub_8150DA4(void); -/*static*/ void sub_8150FDC(void); -/*static*/ void sub_8151198(void); -/*static*/ void sub_81512B4(void); -/*static*/ void sub_8151488(void); -/*static*/ void sub_81514F0(void); -/*static*/ void sub_815159C(void); -/*static*/ void sub_8150F40(void); -/*static*/ void sub_8150E68(void); -/*static*/ void sub_815109C(void); -/*static*/ void sub_8150FC4(void); -/*static*/ void nullsub_97(struct Sprite *sprite); -/*static*/ void sub_81543E8(struct Sprite *sprite); -/*static*/ void sub_8154A2C(void); -/*static*/ void sub_8154B34(void); -/*static*/ void sub_8154F80(void); -/*static*/ void sub_81556E0(void); -/*static*/ void sub_8155A78(void); -/*static*/ void sub_8155B4C(void); -/*static*/ void sub_8155C2C(void); -/*static*/ void sub_8155C80(void); -/*static*/ void unused_0(void); -/*static*/ void nullsub_98(void); +#include "task.h" +#include "constants/songs.h" + +struct DodrioSubstruct_0160 +{ + /*0x0000 : 0x3000*/ u16 ALIGNED(4) tilemapBuffers[3][BG_SCREEN_SIZE]; + /*0x3000 : 0x3160*/ bool32 finished; + /*0x3004 : 0x3164*/ u8 ALIGNED(4) unk3004; + /*0x3008 : 0x3168*/ u8 ALIGNED(4) unk3008[10]; + /*0x3014 : 0x3174*/ u8 ALIGNED(4) state; + /*0x3018 : 0x3178*/ u8 ALIGNED(4) unk3018; + /*0x301C : 0x317C*/ u16 ALIGNED(4) unk301C; + /*0x3020 : 0x3180*/ u8 ALIGNED(4) unk3020; + /*0x3024 : 0x3184*/ u8 ALIGNED(4) unk3024; + /*0x3024 : 0x3184*/ void (*unk3028)(void); +}; // size = 0x302C + +struct DodrioStruct_2022CF4 +{ + u8 filler_00[0xc]; + u8 unkC[10]; + s16 unk16[10]; + u16 unk2A[10]; + 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; +}; + +struct DodrioSubstruct_3308 +{ + u8 unk0; + u32 unk4; +}; + +struct DodrioStruct +{ + /*0x0000*/ void (*savedCallback)(void); + /*0x0004*/ u8 ALIGNED(4) unk04; + /*0x0008*/ u8 ALIGNED(4) unk08; + /*0x000C*/ u8 ALIGNED(4) unk0C; + /*0x0010*/ u8 ALIGNED(4) unk10; + /*0x0014*/ u8 ALIGNED(4) unk14; + /*0x0018*/ u8 ALIGNED(4) unk18; + /*0x001C*/ u8 ALIGNED(4) unk1C; + /*0x0020*/ u8 ALIGNED(4) unk20; + /*0x0024*/ u8 ALIGNED(4) unk24; + /*0x0028*/ u8 ALIGNED(4) multiplayerId; + /*0x0029*/ u8 filler_0029[7]; + /*0x0030*/ u8 ALIGNED(4) unk30; + /*0x0034*/ u8 ALIGNED(4) unk34[5]; + /*0x003C*/ u8 ALIGNED(4) unk3C; + /*0x0040*/ u8 ALIGNED(4) unk40; + /*0x0044*/ u8 ALIGNED(4) unk44; + /*0x0048*/ u8 ALIGNED(4) unk48; + /*0x004A*/ u16 unk4A[5][6]; + /*0x0086*/ u16 unk86[5]; + /*0x0090*/ u8 ALIGNED(4) unk90[5]; + /*0x0098*/ u8 ALIGNED(4) unk98[4]; + /*0x009C*/ u8 ALIGNED(4) unk9C[11]; + /*0x00A8*/ u8 ALIGNED(4) unkA8[5]; + /*0x00B0*/ u8 ALIGNED(4) unkB0[5]; + /*0x00B8*/ u8 ALIGNED(4) unkB8[11]; + /*0x00C4*/ u8 ALIGNED(4) unkC4[11]; + /*0x00D0*/ u8 ALIGNED(4) unkD0[11]; + /*0x00DC*/ u8 ALIGNED(4) unkDC[11]; + /*0x00E8*/ u8 ALIGNED(4) unkE8[11]; + /*0x00F4*/ u8 ALIGNED(4) unkF4[11][2]; + /*0x010C*/ u8 ALIGNED(4) unk10C[5]; + /*0x0112*/ u16 unk112; + /*0x0114*/ u16 unk114; + /*0x0118*/ u32 unk118; + /*0x011C*/ u32 unk11C; + /*0x0120*/ u32 unk120; + /*0x0124*/ u8 ALIGNED(4) unk124; + /*0x0128*/ u8 ALIGNED(4) unk128; + /*0x012C*/ u32 unk12C; + /*0x0130*/ u32 unk130[5]; + /*0x0144*/ u8 ALIGNED(4) unk144; + /*0x0148*/ u8 ALIGNED(4) unk148[11]; + /*0x0154*/ u8 ALIGNED(4) unk154; + /*0x0158*/ u8 ALIGNED(4) unk158[5]; + /*0x0160*/ struct DodrioSubstruct_0160 unk160; + /*0x318C*/ struct DodrioSubstruct_318C unk318C[5]; + /*0x31A0*/ struct DodrioSubstruct_31A0 unk31A0[5]; + /*0x32CC*/ struct DodrioSubstruct_31A0 unk32CC; + /*0x3308*/ struct DodrioSubstruct_3308 unk3308[5]; +}; // size = 0x3330 + +EWRAM_DATA struct DodrioStruct * gUnknown_203F3E0 = NULL; +EWRAM_DATA u16 *gUnknown_203F3E4[5] = {NULL}; +EWRAM_DATA u16 *gUnknown_203F3F8[2] = {NULL}; +EWRAM_DATA u16 *gUnknown_203F400[11] = {NULL}; +EWRAM_DATA u16 *gUnknown_203F42C[4] = {NULL}; +EWRAM_DATA struct DodrioStruct_2022CF4 *gUnknown_203F43C = NULL; +EWRAM_DATA struct DodrioSubstruct_0160 *gUnknown_203F440 = NULL; + +IWRAM_DATA bool32 gUnknown_3002044; + +bool32 sub_8155E68(void); +void sub_81508D8(void); +void sub_81508EC(struct DodrioStruct * dodrio); +void sub_8150A84(u8 taskId); +void sub_8150C78(void); +void sub_8150CBC(void); +void sub_8150CF4(void); +void sub_8150D7C(void); +void sub_8150DA4(void); +void sub_8150E68(void); +void sub_8150F40(void); +void sub_8150FC4(void); +void sub_8150FDC(void); +void sub_815109C(void); +void sub_8151198(void); +void sub_81512B4(void); +void sub_8151488(void); +void sub_81514F0(void); +void sub_815159C(void); +void sub_81516DC(u8 taskId); +void sub_8151750(u8 taskId); +void sub_8151B54(void); +void sub_8151BA0(void); +void sub_8151C5C(void); +void sub_8151D28(void); +void sub_8151D98(void); +void sub_8151E94(void); +void sub_815201C(void); +void sub_8152034(void); +void sub_8152048(struct DodrioSubstruct_318C * dodrioMon, struct Pokemon * partyMon); +void sub_815205C(TaskFunc func, u8 priority); +void sub_815206C(TaskFunc func); +void sub_8152090(u8 a0); +void sub_8152110(void); +void sub_815256C(void); +void sub_815293C(void); +void sub_8152970(void); +void sub_81529A4(u8 a0, u8 *a1, u8 *a2); +bool32 sub_8152A98(void); +bool32 sub_8152AD8(void); +void sub_8153004(void); +void sub_8153150(void); +u8 sub_815327C(u8); +void sub_8153A9C(void); +void sub_8153AFC(struct DodrioSubstruct_318C * unk318C, u8 a1, u8 a2, u8 a3); +void sub_8153BF8(u8 a0); +void sub_8153D80(bool8 a0, u8 a1); +void nullsub_97(struct Sprite *sprite); +void sub_8153E28(void); +void sub_8154128(void); +void sub_815417C(void); +void sub_81543E8(struct Sprite *sprite); +void sub_8154438(void); +void sub_8154968(struct DodrioSubstruct_0160 * unk0160); +void sub_81549D4(u8 a0); +void sub_8154A2C(void); +void sub_8154B34(void); +void sub_8154F80(void); +void sub_81556E0(void); +void sub_8155A78(void); +void sub_8155B4C(void); +void sub_8155C2C(void); +void sub_8155C80(void); +void unused_0(void); +void nullsub_98(void); // const rom data // Large chunk of data -/*static*/ const struct BgTemplate sUnknown_847565C_Unref_Dupe[] = +const struct BgTemplate sUnknown_847565C_Unref_Dupe[] = { { .bg = 0, @@ -75,9 +236,9 @@ }; // Unknown unreferenced data, feel free to remove. -/*static*/ const u32 sUnused_Unref_Dupe[] = {255, 0}; +const u32 sUnused_Unref_Dupe[] = {255, 0}; -/*static*/ const struct WindowTemplate sUnknown_8475674_Unref_Dupe[] = +const struct WindowTemplate sUnknown_8475674_Unref_Dupe[] = { { .bg = 0, @@ -99,7 +260,7 @@ } }; -/*static*/ const struct WindowTemplate sUnknown_8475684_Unref_Dupe = +const struct WindowTemplate sUnknown_8475684_Unref_Dupe = { .bg = 0, .tilemapLeft = 1, @@ -110,7 +271,7 @@ .baseBlock = 0x67, }; -/*static*/ const struct WindowTemplate sUnknown_847568C_Unref_Dupe[] = +const struct WindowTemplate sUnknown_847568C_Unref_Dupe[] = { { .bg = 0, @@ -132,7 +293,7 @@ } }; -/*static*/ const struct WindowTemplate sUnknown_847569C_Unref_Dupe = +const struct WindowTemplate sUnknown_847569C_Unref_Dupe = { .bg = 0, .tilemapLeft = 4, @@ -143,7 +304,7 @@ .baseBlock = 0x13, }; -/*static*/ const struct WindowTemplate sUnknown_84756A4_Unref_Dupe = +const struct WindowTemplate sUnknown_84756A4_Unref_Dupe = { .bg = 0, .tilemapLeft = 5, @@ -154,7 +315,7 @@ .baseBlock = 0x13, }; -/*static*/ const u8 sUnknown_8471F50[5][5][11] = +const u8 sUnknown_8471F50[5][5][11] = { { {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, @@ -183,7 +344,7 @@ }, }; -/*static*/ const u8 sUnknown_8472063[5][5][3] = +const u8 sUnknown_8472063[5][5][3] = { { {4, 5, 6}, @@ -212,7 +373,7 @@ }, }; -/*static*/ const u8 sUnknown_84720AE[5][5][3] = +const u8 sUnknown_84720AE[5][5][3] = { { {1, 0, 1}, @@ -242,7 +403,7 @@ }; ALIGNED(4) -/*static*/ const u8 sUnknown_84720FC[5][11] = +const u8 sUnknown_84720FC[5][11] = { {9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9}, {9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9}, @@ -251,7 +412,7 @@ ALIGNED(4) {3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3}, }; -/*static*/ const u8 sUnknown_8472133[5][5] = +const u8 sUnknown_8472133[5][5] = { {5}, {4, 6}, @@ -261,7 +422,7 @@ ALIGNED(4) }; // Duplicate and unused gfx. Feel free to remove. -/*static*/ const u32 sDuplicateGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.gbapal", +const u32 sDuplicateGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.gbapal", "graphics/link_games/dodrioberry_bg2.gbapal", "graphics/link_games/dodrioberry_pkmn.gbapal", "graphics/link_games/dodrioberry_shiny.gbapal", @@ -278,7 +439,7 @@ ALIGNED(4) "graphics/link_games/dodrioberry_bg2right.bin.lz", "graphics/link_games/dodrioberry_bg2left.bin.lz"); -/*static*/ const u8 sUnknown_847553C[][3] = +const u8 sUnknown_847553C[][3] = { {40, 24, 13}, {32, 19, 10}, @@ -286,20 +447,20 @@ ALIGNED(4) }; ALIGNED(4) -/*static*/ const u8 sUnknown_8475548[] = {8, 5, 8, 11, 15}; +const u8 sUnknown_8475548[] = {8, 5, 8, 11, 15}; ALIGNED(4) -/*static*/ const u8 sUnknown_8475550[] = {5, 10, 20, 30, 50, 70, 100}; +const u8 sUnknown_8475550[] = {5, 10, 20, 30, 50, 70, 100}; ALIGNED(4) -/*static*/ const u8 sUnknown_8475558[][10] = +const u8 sUnknown_8475558[][10] = { {15, 16, 17, 18, 19, 19, 18, 17, 16, 15}, {20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, {30, 31, 32, 33, 34, 34, 33, 32, 31, 30}, }; -/*static*/ void (*const sUnknown_8475578[])(void) = +void (*const sUnknown_8475578[])(void) = { sub_8150C78, sub_8150CBC, @@ -315,7 +476,7 @@ ALIGNED(4) sub_8150F40 }; -/*static*/ void (*const sUnknown_84755A8[])(void) = +void (*const sUnknown_84755A8[])(void) = { sub_8150C78, sub_8150CBC, @@ -331,10 +492,425 @@ ALIGNED(4) sub_8150FC4 }; -/*static*/ const s16 sUnknown_84755D8[] = {10, 30, 50, 50}; +void StartDodrioBerryPicking(u16 a0, MainCallback callback) +{ + gUnknown_3002044 = FALSE; + + if (gReceivedRemoteLinkPlayers != 0 && (gUnknown_203F3E0 = AllocZeroed(sizeof(*gUnknown_203F3E0))) != NULL) + { + sub_81508D8(); + sub_81508EC(gUnknown_203F3E0); + gUnknown_203F3E0->savedCallback = callback; + gUnknown_203F3E0->multiplayerId = GetMultiplayerId(); + gUnknown_203F3E0->unk32CC = gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId]; + sub_8152048(&gUnknown_203F3E0->unk318C[gUnknown_203F3E0->multiplayerId], &gPlayerParty[a0]); + CreateTask(sub_8150A84, 1); + SetMainCallback2(sub_815201C); + sub_8153150(); + sub_81529A4(gUnknown_203F3E0->unk24, &gUnknown_203F3E0->unk44, &gUnknown_203F3E0->unk48); + StopMapMusic(); + PlayNewMapMusic(MUS_KINOMIKUI); + } + else + { + SetMainCallback2(callback); + return; + } +} + +void sub_81508D8(void) +{ + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); +} + +void sub_81508EC(struct DodrioStruct * data) +{ + u8 i; + + data->unk0C = 0; + data->unk10 = 0; + data->unk14 = 0; + data->unk18 = 0; + data->unk1C = 0; + data->unk11C = 0; + data->unk120 = 0; + data->unk30 = 0; + data->unk40 = 0; + data->unk3C = 0; + data->unk12C = 0; + + for (i = 0; i < 4; i++) + { + data->unk98[i] = 0; + } + + for (i = 0; i < 5; i++) + { + data->unkA8[i] = 0; + data->unkB0[i] = 0; + data->unk4A[i][0] = 0; + data->unk4A[i][1] = 0; + data->unk4A[i][2] = 0; + data->unk4A[i][3] = 0; + data->unk4A[i][5] = 0; + data->unk10C[i] = 0; + data->unk130[i] = 0; + } + + for (i = 0; i < 11; i++) + { + data->unkD0[i] = 0; + data->unkDC[i] = 0; + data->unkC4[i] = 0; + data->unkF4[i][0] = 0xFF; + data->unkF4[i][1] = 0xFF; + } + + data->unk20 = GetMultiplayerId() == 0 ? 1 : 0; + data->unk24 = GetLinkPlayerCount(); + data->unk34[0] = GetMultiplayerId(); + for (i = 1; i < data->unk24; i++) + { + data->unk34[i] = data->unk34[i - 1] + 1; + if (data->unk34[i] > data->unk24 - 1) + data->unk34[i] %= data->unk24; + } +} + +void sub_8150A84(u8 taskId) +{ + u8 r4, r5; + + switch (gUnknown_203F3E0->unk0C) + { + case 0: + SetVBlankCallback(NULL); + sub_815205C(sub_8151750, 4); + gUnknown_203F3E0->unk0C++; + break; + case 1: + if (!FuncIsActiveTask(sub_8151750)) + { + sub_8154968(&gUnknown_203F3E0->unk160); + gUnknown_203F3E0->unk0C++; + } + break; + case 2: + if (!sub_8155E68()) + { + LinkRfu_SetRfuFuncToSend6600(); + gUnknown_203F3E0->unk0C++; + } + break; + case 3: + if (IsLinkTaskFinished()) + { + if (gReceivedRemoteLinkPlayers != 0) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + gUnknown_203F3E0->unk0C++; + } + break; + case 4: + r5 = gUnknown_203F3E0->unk24; + sub_8153A9C(); + for (r4 = 0; r4 < r5; r4++) + { + sub_8153AFC(&gUnknown_203F3E0->unk318C[gUnknown_203F3E0->unk34[r4]], r4, gUnknown_203F3E0->unk34[r4], gUnknown_203F3E0->unk24); + } + sub_8153D80(FALSE, gUnknown_203F3E0->unk24); + gUnknown_203F3E0->unk0C++; + break; + case 5: + sub_8154128(); + sub_815417C(); + sub_8154438(); + sub_8153E28(); + gUnknown_203F3E0->unk0C++; + break; + case 6: + BlendPalettes(0xFFFFFFFF, 0x10, 0x00); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + SetVBlankCallback(sub_8152034); + gUnknown_203F3E0->unk0C++; + break; + case 7: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_203F3E0->unk0C++; + } + break; + default: + DestroyTask(taskId); + sub_815206C(sub_81516DC); + break; + } +} + +void sub_8150C08(u8 taskId) +{ + sub_8151B54(); + sUnknown_8475578[gUnknown_203F3E0->unk18](); + if (!gUnknown_3002044) + { + sub_815293C(); + } + sub_8151BA0(); +} + +void sub_8150C40(u8 taskId) +{ + sub_8151C5C(); + sUnknown_84755A8[gUnknown_203F3E0->unk18](); + if (!gUnknown_3002044) + { + sub_8152970(); + } + sub_8151D28(); +} + +void sub_8150C78(void) +{ + switch (gUnknown_203F3E0->unk10) + { + case 0: + sub_8153BF8(1); + sub_81549D4(1); + gUnknown_203F3E0->unk10++; + break; + case 1: + if (!sub_8155E68()) + sub_8152090(1); + break; + } +} + +void sub_8150CBC(void) +{ + if (gUnknown_203F3E0->unk10 == 0) + { + sub_8152110(); + gUnknown_203F3E0->unk10++; + } + else + { + gUnknown_203F3E0->unk118 = 1; + sub_8152090(2); + } +} + +void sub_8150CF4(void) +{ + switch (gUnknown_203F3E0->unk10) + { + case 0: + StartMinigameCountdown(7, 8, 120, 80, 0); + gUnknown_203F3E0->unk10++; + break; + case 1: + LinkRfu_SetRfuFuncToSend6600(); + gUnknown_203F3E0->unk10++; + break; + case 2: + if (IsLinkTaskFinished()) + { + gUnknown_203F3E0->unk10++; + } + break; + case 3: + if (!IsMinigameCountdownRunning()) + { + LinkRfu_SetRfuFuncToSend6600(); + gUnknown_203F3E0->unk10++; + } + break; + case 4: + if (IsLinkTaskFinished()) + { + sub_8152090(3); + } + break; + } +} + +void sub_8150D7C(void) +{ + if (gUnknown_203F3E0->unk10 == 0) + { + if (gUnknown_203F3E0->unk11C != 0) + { + sub_8152090(4); + } + } +} + +void sub_8150DA4(void) +{ + if (gUnknown_203F3E0->unk10 == 0) + { + if (gUnknown_203F3E0->unk40 < 10) + { + if (gUnknown_203F3E0->unkA8[0] == 0) + { + if (JOY_NEW(DPAD_UP)) + { + if (gUnknown_203F3E0->unk31A0[0].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(2); + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (gUnknown_203F3E0->unk31A0[0].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(1); + } + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gUnknown_203F3E0->unk31A0[0].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk4 = 0; + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(3); + } + } + else + { + gUnknown_203F3E0->unk31A0[0].unk2C.unk0 = sub_815327C(0); + } + } + } + else + { + sub_8152090(11); + } + sub_815256C(); + sub_8151D98(); + } +} +void sub_8150E68(void) +{ + if (gUnknown_203F3E0->unk40 < 10) + { + if (JOY_NEW(DPAD_UP)) + { + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 2; + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 1; + } + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gUnknown_203F3E0->unk31A0[gUnknown_203F3E0->multiplayerId].unk2C.unk0 == 0) + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 3; + } + } + else + { + gUnknown_203F3E0->unk32CC.unk2C.unk0 = 0; + } + } + else + { + sub_8152090(11); + } + sub_8151E94(); +} + +void sub_8150F40(void) +{ + u8 i; + + sub_815256C(); + sub_8151D98(); + if (sub_8152A98() == 1) + { + sub_8153004(); + sub_8152090(5); + } + else + { + gUnknown_203F3E0->unk12C = 1; + for (i = 1; i < gUnknown_203F3E0->unk24; i++) + { + if (gUnknown_203F3E0->unk130[i] != 1) + { + gUnknown_203F3E0->unk12C = 0; + break; + } + } + } +} + +void sub_8150FC4(void) +{ + sub_8151E94(); + if (sub_8152AD8() == 1) + sub_8152090(5); +} + +void sub_8150FDC(void) +{ + u8 blockReceivedStatus; + u8 i; + switch (gUnknown_203F3E0->unk10) + { + case 0: + SendBlock(0, gUnknown_203F3E0->unk4A, 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) + { + ResetBlockReceivedFlag(i); + gUnknown_203F3E0->unk08++; + } + } + if (gUnknown_203F3E0->unk08 >= gUnknown_203F3E0->unk24) + { + gUnknown_203F3E0->unk14++; + gUnknown_203F3E0->unk10++; + } + break; + default: + if (WaitFanfare(TRUE)) + { + sub_8152090(6); + FadeOutAndPlayNewMapMusic(MUS_WIN_YASEI, 4); + } + break; + } +} + +const s16 sUnknown_84755D8[] = {10, 30, 50, 50}; // Data related to printing saved results. -/*static*/ const struct WindowTemplate sUnknown_84755E0 = +const struct WindowTemplate sUnknown_84755E0 = { .bg = 0, .tilemapLeft = 1, @@ -345,15 +921,15 @@ ALIGNED(4) .baseBlock = 1, }; -/*static*/ const u8 *const sUnknown_84755E8[] = {gText_BerryPickingRecords, gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers}; -/*static*/ const u8 sUnknown_84755F8[] = {4, 7, 4}; +const u8 *const sUnknown_84755E8[] = {gText_BerryPickingRecords, gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers}; +const u8 sUnknown_84755F8[] = {4, 7, 4}; ALIGNED(4) -/*static*/ const u8 sUnknown_84755FC[][2] = {{24}, {40}, {56}}; -/*static*/ const u8 sUnknown_8475602[][2] = {{24}, {40}, {70}}; +const u8 sUnknown_84755FC[][2] = {{24}, {40}, {56}}; +const u8 sUnknown_8475602[][2] = {{24}, {40}, {70}}; // Debug functions? -/*static*/ const u16 sUnknown_8475608[][4] = +const u16 sUnknown_8475608[][4] = { {9999, 0, 90, 9999}, {9999, 9999, 70, 9999}, @@ -362,11 +938,11 @@ ALIGNED(4) {9999, 9999, 9999, 0}, }; -/*static*/ const u8 sUnknown_8475630[] = _("あいうえおかき"); -/*static*/ const u8 sUnknown_8475638[] = _("ABCDEFG"); -/*static*/ const u8 sUnknown_8475640[] = _("0123456"); +const u8 sUnknown_8475630[] = _("あいうえおかき"); +const u8 sUnknown_8475638[] = _("ABCDEFG"); +const u8 sUnknown_8475640[] = _("0123456"); -/*static*/ const u8 *const sUnknown_8475648[] = +const u8 *const sUnknown_8475648[] = { sUnknown_8475630, sUnknown_8475630, @@ -376,7 +952,7 @@ ALIGNED(4) }; // Large chunk of data -/*static*/ const struct BgTemplate sUnknown_847565C[] = +const struct BgTemplate sUnknown_847565C[] = { { .bg = 0, @@ -417,9 +993,9 @@ ALIGNED(4) }; // Unknown unreferenced data, feel free to remove. -/*static*/ const u32 sUnused[] = {255, 0}; +const u32 sUnused[] = {255, 0}; -/*static*/ const struct WindowTemplate sUnknown_8475674[] = +const struct WindowTemplate sUnknown_8475674[] = { { .bg = 0, @@ -441,7 +1017,7 @@ ALIGNED(4) } }; -/*static*/ const struct WindowTemplate sUnknown_8475684 = +const struct WindowTemplate sUnknown_8475684 = { .bg = 0, .tilemapLeft = 1, @@ -452,7 +1028,7 @@ ALIGNED(4) .baseBlock = 0x67, }; -/*static*/ const struct WindowTemplate sUnknown_847568C[] = +const struct WindowTemplate sUnknown_847568C[] = { { .bg = 0, @@ -474,7 +1050,7 @@ ALIGNED(4) } }; -/*static*/ const struct WindowTemplate sUnknown_847569C = +const struct WindowTemplate sUnknown_847569C = { .bg = 0, .tilemapLeft = 4, @@ -485,7 +1061,7 @@ ALIGNED(4) .baseBlock = 0x13, }; -/*static*/ const struct WindowTemplate sUnknown_84756A4 = +const struct WindowTemplate sUnknown_84756A4 = { .bg = 0, .tilemapLeft = 5, @@ -497,41 +1073,130 @@ ALIGNED(4) }; // This is an unused copy of the tables from the top of the file. Feel free to remove. -/*static*/ const u8 sDuplicateArray[] = -{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0, 0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 2, 9, - 0, 0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0, 0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0, 0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0, 0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0, 0, 7, - 8, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, - 1, 2, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 4, 5, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 5, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 6, 7, 2, 2, 3, 4, 0, 0, 0, 0, 0, 0, - 3, 4, 5, 5, 6, 7, 7, 8, 1, 1, 2, 3, 0, 0, 0, 4, 5, 6, 6, 7, 8, 8, 9, 0, 0, 1, 2, 2, 3, 4, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 1, - 2, 1, 2, 3, 2, 3, 0, 0, 0, 0, 4, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 0, 0, 0, 0, 9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9, 9, - 9, 9, 0, 0, 1, 1, 0, 9, 9, 9, 9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9, 9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9, 3, 3, 4, 4, 0, 0, 1, 1, - 2, 2, 3, 5, 0, 0, 0, 0, 4, 6, 0, 0, 0, 3, 5, 7, 0, 0, 2, 4, 6, 8, 0, 1, 3, 5, 6, 9 -}; - -/*static*/ const u16 sDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal", +const u8 sUnknown_8471F50_UnrefDup[5][5][11] = +{ + { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0}, + {0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 0}, + {0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0}, + {0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0}, + {0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0}, + {0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0}, + {0, 7, 8, 1, 2, 3, 4, 5, 6, 7, 0}, + }, + { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, + {2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2}, + {4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4}, + {6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6}, + {8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + }, +}; + +const u8 sUnknown_8472063_UnrefDup[5][5][3] = +{ + { + {4, 5, 6}, + }, + { + {3, 4, 5}, + {5, 6, 3}, + }, + { + {4, 5, 6}, + {6, 7, 2}, + {2, 3, 4}, + }, + { + {3, 4, 5}, + {5, 6, 7}, + {7, 8, 1}, + {1, 2, 3}, + }, + { + {4, 5, 6}, + {6, 7, 8}, + {8, 9, 0}, + {0, 1, 2}, + {2, 3, 4}, + }, +}; + +const u8 sUnknown_84720AE_UnrefDup[5][5][3] = +{ + { + {1, 0, 1}, + }, + { + {1, 0, 1}, + {0, 1, 0}, + }, + { + {2, 0, 1}, + {0, 1, 2}, + {1, 2, 0}, + }, + { + {3, 0, 1}, + {0, 1, 2}, + {1, 2, 3}, + {2, 3, 0}, + }, + { + {4, 0, 1}, + {0, 1, 2}, + {1, 2, 3}, + {2, 3, 4}, + {3, 4, 0}, + }, +}; + +ALIGNED(4) +const u8 sUnknown_84720FC_UnrefDup[5][11] = +{ + {9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9}, + {9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9}, + {9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9}, + {9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9}, + {3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3}, +}; + +const u8 sUnknown_8472133_UnrefDup[5][5] = +{ + {5}, + {4, 6}, + {3, 5, 7}, + {2, 4, 6, 8}, + {1, 3, 5, 6, 9}, +}; + +const u16 sDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal", "graphics/link_games/dodrioberry_bg2.gbapal"); -/*static*/ const u16 sDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal"); -/*static*/ const u16 sDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal"); -/*static*/ const u16 sDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal"); -/*static*/ const u16 sDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal"); -/*static*/ const u32 sDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz"); -/*static*/ const u16 sDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal"); -/*static*/ const u32 sDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz"); -/*static*/ const u32 sDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz"); -/*static*/ const u32 sDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz"); -/*static*/ const u32 sDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz"); -/*static*/ const u32 sDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz"); -/*static*/ const u32 sDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz"); -/*static*/ const u32 sDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz"); -/*static*/ const u32 sDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz"); - -/*static*/ const struct OamData sOamData_8478C98 = +const u16 sDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal"); +const u16 sDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal"); +const u16 sDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal"); +const u16 sDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal"); +const u32 sDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz"); +const u16 sDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal"); +const u32 sDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz"); +const u32 sDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz"); +const u32 sDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz"); +const u32 sDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz"); +const u32 sDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz"); +const u32 sDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz"); +const u32 sDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz"); +const u32 sDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz"); + +const struct OamData sOamData_8478C98 = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -548,7 +1213,7 @@ ALIGNED(4) .affineParam = 0 }; -/*static*/ const struct OamData sOamData_8478CA0 = +const struct OamData sOamData_8478CA0 = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -565,7 +1230,7 @@ ALIGNED(4) .affineParam = 0 }; -/*static*/ const struct OamData sOamData_8478CA8 = +const struct OamData sOamData_8478CA8 = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -582,7 +1247,7 @@ ALIGNED(4) .affineParam = 0 }; -/*static*/ const struct OamData sOamData_8478CB0 = +const struct OamData sOamData_8478CB0 = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -599,37 +1264,37 @@ ALIGNED(4) .affineParam = 0 }; -/*static*/ const union AnimCmd sSpriteAnim_8478CB8[] = +const union AnimCmd sSpriteAnim_8478CB8[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478CC0[] = +const union AnimCmd sSpriteAnim_8478CC0[] = { ANIMCMD_FRAME(64, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478CC8[] = +const union AnimCmd sSpriteAnim_8478CC8[] = { ANIMCMD_FRAME(128, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478CD0[] = +const union AnimCmd sSpriteAnim_8478CD0[] = { ANIMCMD_FRAME(192, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478CD8[] = +const union AnimCmd sSpriteAnim_8478CD8[] = { ANIMCMD_FRAME(256, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478CE0[] = +const union AnimCmd *const sSpriteAnimTable_8478CE0[] = { sSpriteAnim_8478CB8, sSpriteAnim_8478CC0, @@ -638,86 +1303,86 @@ ALIGNED(4) sSpriteAnim_8478CD8 }; -/*static*/ const union AnimCmd sSpriteAnim_8478CF4[] = +const union AnimCmd sSpriteAnim_8478CF4[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478CFC[] = +const union AnimCmd sSpriteAnim_8478CFC[] = { ANIMCMD_FRAME(4, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D04[] = +const union AnimCmd sSpriteAnim_8478D04[] = { ANIMCMD_FRAME(8, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D0C[] = +const union AnimCmd *const sSpriteAnimTable_8478D0C[] = { sSpriteAnim_8478CF4, sSpriteAnim_8478CFC, sSpriteAnim_8478D04 }; -/*static*/ const union AnimCmd sSpriteAnim_8478D18[] = +const union AnimCmd sSpriteAnim_8478D18[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D20[] = +const union AnimCmd sSpriteAnim_8478D20[] = { ANIMCMD_FRAME(4, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D28[] = +const union AnimCmd sSpriteAnim_8478D28[] = { ANIMCMD_FRAME(8, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D30[] = +const union AnimCmd sSpriteAnim_8478D30[] = { ANIMCMD_FRAME(12, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D38[] = +const union AnimCmd sSpriteAnim_8478D38[] = { ANIMCMD_FRAME(16, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D40[] = +const union AnimCmd sSpriteAnim_8478D40[] = { ANIMCMD_FRAME(20, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D48[] = +const union AnimCmd sSpriteAnim_8478D48[] = { ANIMCMD_FRAME(24, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D50[] = +const union AnimCmd sSpriteAnim_8478D50[] = { ANIMCMD_FRAME(28, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd sSpriteAnim_8478D58[] = +const union AnimCmd sSpriteAnim_8478D58[] = { ANIMCMD_FRAME(32, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D60[] = +const union AnimCmd *const sSpriteAnimTable_8478D60[] = { sSpriteAnim_8478D18, sSpriteAnim_8478D20, @@ -730,22 +1395,22 @@ ALIGNED(4) sSpriteAnim_8478D58 }; -/*static*/ const union AnimCmd sSpriteAnim_8478D84[] = +const union AnimCmd sSpriteAnim_8478D84[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0) }; -/*static*/ const union AnimCmd *const sSpriteAnimTable_8478D8C[] = +const union AnimCmd *const sSpriteAnimTable_8478D8C[] = { sSpriteAnim_8478D84 }; -// These are declared inside pokeemerald's sub_80283A8 +// These are declared inside pokeemerald's sub_8153A9C const struct SpritePalette gUnknown_8478D90 = {sDodrioBerryPkmnPal, 0}; const struct SpritePalette gUnknown_8478D98 = {sDodrioBerryShinyPal, 1}; -// These are declared inside pokeemerald's sub_8028734 +// These are declared inside pokeemerald's sub_8153E28 const struct SpritePalette gUnknown_8478DA0 = {sDodrioBerryStatusPal, 2}; const struct SpriteTemplate gUnknown_8478DA8 = { @@ -759,14 +1424,14 @@ const struct SpriteTemplate gUnknown_8478DA8 = }; // Unknown unused data, feel free to remove. -/*static*/ const u8 sUnused2[] = {0xCD, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0xF4, 0x0, 0x0}; +const u8 sUnused2[] = {0xCD, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0xF4, 0x0, 0x0}; -// This is declared inside pokeemerald's sub_8028A34 +// This is declared inside pokeemerald's sub_8154128 const struct SpritePalette gUnknown_8478DCC = {sDodrioBerrySpritesPal, 3}; -/*static*/ const s16 sUnknown_8478DD4[] = {88, 128, 168, 208}; +const s16 sUnknown_8478DD4[] = {88, 128, 168, 208}; -// These are declared inside pokeemerald's sub_8028A88 +// These are declared inside pokeemerald's sub_815417C const struct SpriteTemplate gUnknown_8478DDC = { .tileTag = 2, @@ -789,11 +1454,11 @@ const struct SpriteTemplate gUnknown_8478DF4 = }; // This is declared inside pokeemerald's sub_8028CF4 -/*static*/ const u8 gUnknown_8478E0C[] = {30, 20}; +const u8 gUnknown_8478E0C[] = {30, 20}; -/*static*/ const s16 gUnknown_8478E0E[][2] = {{230, 55}, {30, 74}}; +const s16 gUnknown_8478E0E[][2] = {{230, 55}, {30, 74}}; -// These are declared inside pokeemerald's sub_8028D44 +// These are declared inside pokeemerald's sub_8154438 const struct SpritePalette gUnknown_8478E18 = {sDodrioBerryPlatformPal, 6}; const struct SpriteTemplate gUnknown_8478E20 = { @@ -812,7 +1477,7 @@ struct WinCoords u8 top; }; -/*static*/ const u8 sUnknown_8478E38[][3] = +const u8 sUnknown_8478E38[][3] = { {1, 2, 3}, {1, 4, 5}, @@ -820,13 +1485,13 @@ struct WinCoords {1, 6, 7}, }; -/*static*/ const struct WinCoords sUnknown_8478E44[] = {{12, 6}}; -/*static*/ const struct WinCoords sUnknown_8478E48[] = {{9, 10}, {15, 6}}; -/*static*/ const struct WinCoords sUnknown_8478E50[] = {{12, 6}, {18, 10}, {6, 10}}; -/*static*/ const struct WinCoords sUnknown_8478E5C[] = {{9, 10}, {15, 6}, {21, 10}, {3, 6}}; -/*static*/ const struct WinCoords sUnknown_8478E6C[] = {{12, 6}, {18, 10}, {23, 6}, {1, 6}, {6, 10}}; +const struct WinCoords sUnknown_8478E44[] = {{12, 6}}; +const struct WinCoords sUnknown_8478E48[] = {{9, 10}, {15, 6}}; +const struct WinCoords sUnknown_8478E50[] = {{12, 6}, {18, 10}, {6, 10}}; +const struct WinCoords sUnknown_8478E5C[] = {{9, 10}, {15, 6}, {21, 10}, {3, 6}}; +const struct WinCoords sUnknown_8478E6C[] = {{12, 6}, {18, 10}, {23, 6}, {1, 6}, {6, 10}}; -/*static*/ const struct WinCoords *const sUnknown_8478E80[] = +const struct WinCoords *const sUnknown_8478E80[] = { sUnknown_8478E44, sUnknown_8478E48, @@ -835,7 +1500,7 @@ struct WinCoords sUnknown_8478E6C, }; -/*static*/ const u8 *const sUnknown_8478E94[] = +const u8 *const sUnknown_8478E94[] = { gText_1Colon, gText_2Colon, @@ -844,9 +1509,9 @@ struct WinCoords gText_5Colon, }; -/*static*/ const u16 sUnknown_8478EA8[] = {92, 132, 172, 212}; -/*static*/ const u16 sUnknown_8478EB0[] = {30, 45, 60, 75, 90}; -/*static*/ const u16 sUnknown_8478EBA[] = {12, 28, 44, 60, 76}; +const u16 sUnknown_8478EA8[] = {92, 132, 172, 212}; +const u16 sUnknown_8478EB0[] = {30, 45, 60, 75, 90}; +const u16 sUnknown_8478EBA[] = {12, 28, 44, 60, 76}; struct { diff --git a/sym_bss.txt b/sym_bss.txt index b877b6532..3b3148efc 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -86,17 +86,12 @@ gUnknown_3002038: @ 3002038 .align 2 .include "src/wireless_communication_status_screen.o" - .align 2 -gUnknown_3002044: @ 3002044 - .space 0x4 - + .include "src/dodrio_berry_picking.o" .align 3 .include "src/ereader_helpers.o" - .align 3 .include "src/digit_obj_util.o" - .align 3 .include "asm/m4a_1.o" .align 3 diff --git a/sym_ewram.txt b/sym_ewram.txt index d4a46e69d..ee73a6f2b 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -449,29 +449,8 @@ gUnknown_203B170: @ 203B170 .include "src/pokemon_jump_4.o" .align 2 .include "src/berry_crush.o" - .align 2 -gUnknown_203F3E0: @ 203F3E0 - .space 0x4 - -gUnknown_203F3E4: @ 203F3E4 - .space 0x14 - -gUnknown_203F3F8: @ 203F3F8 - .space 0x8 - -gUnknown_203F400: @ 203F400 - .space 0x2C - -gUnknown_203F42C: @ 203F42C - .space 0x10 - -gUnknown_203F43C: @ 203F43C - .space 0x4 - -gUnknown_203F440: @ 203F440 - .space 0x4 - + .include "src/dodrio_berry_picking.o" .align 2 .include "src/teachy_tv.o" .align 2 |