diff options
Diffstat (limited to 'asm/berry_crush.s')
-rw-r--r-- | asm/berry_crush.s | 580 |
1 files changed, 580 insertions, 0 deletions
diff --git a/asm/berry_crush.s b/asm/berry_crush.s new file mode 100644 index 000000000..42de36a1f --- /dev/null +++ b/asm/berry_crush.s @@ -0,0 +1,580 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_814B6F0 +sub_814B6F0: @ 814B6F0 + ldr r0, _0814B6F8 @ =gUnknown_203F3DC + ldr r0, [r0] + bx lr + .align 2, 0 +_0814B6F8: .4byte gUnknown_203F3DC + thumb_func_end sub_814B6F0 + + thumb_func_start sub_814B6FC +sub_814B6FC: @ 814B6FC + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _0814B70C @ =gUnknown_203F3DC + ldr r0, [r5] + cmp r0, 0 + bne _0814B710 + movs r0, 0x2 + b _0814B740 + .align 2, 0 +_0814B70C: .4byte gUnknown_203F3DC +_0814B710: + cmp r4, 0 + bne _0814B716 + ldr r4, [r0] +_0814B716: + ldrb r0, [r0, 0xA] + bl DestroyTask + ldr r0, [r5] + bl Free + movs r0, 0 + str r0, [r5] + adds r0, r4, 0 + bl SetMainCallback2 + ldr r0, _0814B748 @ =CB2_ReturnToField + cmp r4, r0 + bne _0814B73E + ldr r0, _0814B74C @ =0x0000012f + bl PlayNewMapMusic + ldr r0, _0814B750 @ =sub_8056534 + bl sub_80565E0 +_0814B73E: + movs r0, 0 +_0814B740: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0814B748: .4byte CB2_ReturnToField +_0814B74C: .4byte 0x0000012f +_0814B750: .4byte sub_8056534 + thumb_func_end sub_814B6FC + + thumb_func_start sub_814B754 +sub_814B754: @ 814B754 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + adds r4, r0, 0 + movs r0, 0 + mov r8, r0 + ldr r0, _0814B784 @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _0814B772 + ldr r0, _0814B788 @ =gWirelessCommType + ldrb r0, [r0] + cmp r0, 0 + bne _0814B790 +_0814B772: + adds r0, r4, 0 + bl SetMainCallback2 + ldr r0, _0814B78C @ =gUnknown_3005450 + mov r1, r8 + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + b _0814B7DC + .align 2, 0 +_0814B784: .4byte gReceivedRemoteLinkPlayers +_0814B788: .4byte gWirelessCommType +_0814B78C: .4byte gUnknown_3005450 +_0814B790: + bl GetLinkPlayerCount + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + bl GetMultiplayerId + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, r8 + cmp r0, 0x1 + bls _0814B7AC + cmp r7, r8 + bcc _0814B7C0 +_0814B7AC: + adds r0, r4, 0 + bl SetMainCallback2 + ldr r0, _0814B7BC @ =gUnknown_3005450 + movs r1, 0 + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + b _0814B7DC + .align 2, 0 +_0814B7BC: .4byte gUnknown_3005450 +_0814B7C0: + ldr r6, _0814B7E8 @ =gUnknown_203F3DC + ldr r0, _0814B7EC @ =0x000041c0 + bl AllocZeroed + adds r5, r0, 0 + str r5, [r6] + cmp r5, 0 + bne _0814B7F4 + adds r0, r4, 0 + bl SetMainCallback2 + ldr r0, _0814B7F0 @ =gUnknown_3005450 + strh r5, [r0, 0x10] + strh r5, [r0, 0x12] +_0814B7DC: + adds r0, 0xEE + ldrb r1, [r0] + movs r1, 0x1 + strb r1, [r0] + b _0814B84C + .align 2, 0 +_0814B7E8: .4byte gUnknown_203F3DC +_0814B7EC: .4byte 0x000041c0 +_0814B7F0: .4byte gUnknown_3005450 +_0814B7F4: + str r4, [r5] + movs r4, 0 + strb r7, [r5, 0x8] + ldr r0, [r6] + mov r1, r8 + strb r1, [r0, 0x9] + ldr r0, [r6] + bl sub_814BABC + ldr r1, [r6] + movs r2, 0x1 + movs r0, 0x1 + strh r0, [r1, 0x12] + strb r2, [r1, 0xE] + ldr r1, [r6] + movs r0, 0x6 + strb r0, [r1, 0xF] + ldr r0, [r6] + adds r0, 0x36 + movs r2, 0x1 + negs r2, r2 + movs r1, 0x10 + str r1, [sp] + str r4, [sp, 0x4] + str r4, [sp, 0x8] + movs r1, 0x1 + movs r3, 0 + bl sub_814D564 + ldr r2, [r6] + adds r2, 0x36 + movs r0, 0x4 + movs r1, 0x1 + bl sub_814BB4C + ldr r0, _0814B858 @ =sub_814BA80 + bl SetMainCallback2 + ldr r0, _0814B85C @ =sub_814BA98 + movs r1, 0x8 + bl CreateTask + ldr r1, [r6] + strb r0, [r1, 0xA] +_0814B84C: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B858: .4byte sub_814BA80 +_0814B85C: .4byte sub_814BA98 + thumb_func_end sub_814B754 + + thumb_func_start sub_814B860 +sub_814B860: @ 814B860 + push {r4,lr} + sub sp, 0xC + ldr r1, _0814B878 @ =gSpecialVar_ItemId + ldrh r0, [r1] + subs r0, 0x85 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2B + bls _0814B87C + movs r0, 0x85 + strh r0, [r1] + b _0814B884 + .align 2, 0 +_0814B878: .4byte gSpecialVar_ItemId +_0814B87C: + ldrh r0, [r1] + movs r1, 0x1 + bl RemoveBagItem +_0814B884: + ldr r4, _0814B8E0 @ =gUnknown_203F3DC + ldr r2, [r4] + ldrb r0, [r2, 0x8] + lsls r0, 5 + adds r0, r2, r0 + ldr r1, _0814B8E4 @ =gSpecialVar_ItemId + ldrh r1, [r1] + subs r1, 0x85 + adds r0, 0xA4 + movs r3, 0 + strh r1, [r0] + movs r0, 0x1 + strb r0, [r2, 0xE] + ldr r1, [r4] + movs r0, 0x9 + strb r0, [r1, 0xF] + ldr r0, [r4] + adds r0, 0x36 + movs r2, 0x1 + negs r2, r2 + movs r1, 0x10 + str r1, [sp] + str r3, [sp, 0x4] + str r3, [sp, 0x8] + movs r1, 0 + bl sub_814D564 + ldr r2, [r4] + adds r2, 0x36 + movs r0, 0x4 + movs r1, 0x1 + bl sub_814BB4C + ldr r0, _0814B8E8 @ =sub_814BA98 + movs r1, 0x8 + bl CreateTask + ldr r1, [r4] + strb r0, [r1, 0xA] + ldr r0, _0814B8EC @ =sub_814BA80 + bl SetMainCallback2 + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B8E0: .4byte gUnknown_203F3DC +_0814B8E4: .4byte gSpecialVar_ItemId +_0814B8E8: .4byte sub_814BA98 +_0814B8EC: .4byte sub_814BA80 + thumb_func_end sub_814B860 + + thumb_func_start sub_814B8F0 +sub_814B8F0: @ 814B8F0 + push {lr} + ldr r0, _0814B90C @ =gUnknown_203F3DC + ldr r0, [r0] + ldrb r0, [r0, 0xA] + bl DestroyTask + ldr r1, _0814B910 @ =sub_814B860 + movs r0, 0x5 + movs r2, 0 + bl InitBerryPouch + pop {r0} + bx r0 + .align 2, 0 +_0814B90C: .4byte gUnknown_203F3DC +_0814B910: .4byte sub_814B860 + thumb_func_end sub_814B8F0 + + thumb_func_start sub_814B914 +sub_814B914: @ 814B914 + push {lr} + ldr r0, _0814B920 @ =sub_814BA6C + bl SetVBlankCallback + pop {r0} + bx r0 + .align 2, 0 +_0814B920: .4byte sub_814BA6C + thumb_func_end sub_814B914 + + thumb_func_start sub_814B924 +sub_814B924: @ 814B924 + push {lr} + movs r0, 0 + bl SetVBlankCallback + pop {r0} + bx r0 + thumb_func_end sub_814B924 + + thumb_func_start sub_814B930 +sub_814B930: @ 814B930 + push {r4,r5,lr} + ldr r4, _0814B974 @ =gUnknown_203F3DC + ldr r0, [r4] + adds r0, 0x6C + ldrh r2, [r0] + lsls r2, 8 + movs r1, 0xF0 + lsls r1, 6 + adds r0, r2, 0 + bl sub_80D8B68 + adds r2, r0, 0 + ldr r0, [r4] + adds r0, 0x72 + ldrh r3, [r0] + lsls r3, 8 + adds r0, r3, 0 + adds r1, r2, 0 + bl sub_80D8B68 + adds r3, r0, 0 + ldr r0, _0814B978 @ =0x0000ffff + ands r3, r0 + ldr r2, [r4] + strh r3, [r2, 0x16] + ldrb r0, [r2, 0x9] + cmp r0, 0x3 + beq _0814B9B4 + cmp r0, 0x3 + bgt _0814B97C + cmp r0, 0x2 + beq _0814B986 + b _0814BA3C + .align 2, 0 +_0814B974: .4byte gUnknown_203F3DC +_0814B978: .4byte 0x0000ffff +_0814B97C: + cmp r0, 0x4 + beq _0814B9E4 + cmp r0, 0x5 + beq _0814BA14 + b _0814BA3C +_0814B986: + ldr r5, _0814B9B0 @ =gSaveBlock2Ptr + ldr r1, [r5] + movs r0, 0xAF + lsls r0, 4 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + movs r2, 0xAF + lsls r2, 4 + b _0814BA38 + .align 2, 0 +_0814B9B0: .4byte gSaveBlock2Ptr +_0814B9B4: + ldr r5, _0814B9DC @ =gSaveBlock2Ptr + ldr r1, [r5] + ldr r0, _0814B9E0 @ =0x00000af2 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + ldr r2, _0814B9E0 @ =0x00000af2 + b _0814BA38 + .align 2, 0 +_0814B9DC: .4byte gSaveBlock2Ptr +_0814B9E0: .4byte 0x00000af2 +_0814B9E4: + ldr r5, _0814BA0C @ =gSaveBlock2Ptr + ldr r1, [r5] + ldr r0, _0814BA10 @ =0x00000af4 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + ldr r2, _0814BA10 @ =0x00000af4 + b _0814BA38 + .align 2, 0 +_0814BA0C: .4byte gSaveBlock2Ptr +_0814BA10: .4byte 0x00000af4 +_0814BA14: + ldr r5, _0814BA60 @ =gSaveBlock2Ptr + ldr r1, [r5] + ldr r0, _0814BA64 @ =0x00000af6 + adds r1, r0 + lsls r0, r3, 16 + lsrs r0, 16 + ldrh r1, [r1] + cmp r0, r1 + bls _0814BA3C + adds r2, 0x25 + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, 0x16] + ldr r2, _0814BA64 @ =0x00000af6 +_0814BA38: + adds r0, r2 + strh r1, [r0] +_0814BA3C: + ldr r4, _0814BA68 @ =gUnknown_203F3DC + ldr r1, [r4] + ldr r0, [r1, 0x68] + str r0, [r1, 0x1C] + bl sub_815EEE0 + lsls r0, 24 + cmp r0, 0 + bne _0814BA5A + ldr r0, [r4] + adds r0, 0x25 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] +_0814BA5A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0814BA60: .4byte gSaveBlock2Ptr +_0814BA64: .4byte 0x00000af6 +_0814BA68: .4byte gUnknown_203F3DC + thumb_func_end sub_814B930 + + thumb_func_start sub_814BA6C +sub_814BA6C: @ 814BA6C + push {lr} + bl TransferPlttBuffer + bl LoadOam + bl ProcessSpriteCopyRequests + pop {r0} + bx r0 + thumb_func_end sub_814BA6C + + thumb_func_start sub_814BA80 +sub_814BA80: @ 814BA80 + push {lr} + bl RunTasks + bl RunTextPrinters + bl AnimateSprites + bl BuildOamBuffer + pop {r0} + bx r0 + thumb_func_end sub_814BA80 + + thumb_func_start sub_814BA98 +sub_814BA98: @ 814BA98 + push {r4,lr} + ldr r4, _0814BAB8 @ =gUnknown_203F3DC + ldr r0, [r4] + ldr r2, [r0, 0x4] + cmp r2, 0 + beq _0814BAAC + adds r1, r0, 0 + adds r1, 0x36 + bl _call_via_r2 +_0814BAAC: + ldr r0, [r4] + bl sub_814D9CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814BAB8: .4byte gUnknown_203F3DC + thumb_func_end sub_814BA98 + + thumb_func_start sub_814BABC +sub_814BABC: @ 814BABC + push {r4-r6,lr} + adds r6, r0, 0 + movs r5, 0 + b _0814BAE8 +_0814BAC4: + lsls r4, r5, 5 + adds r0, r4, 0 + adds r0, 0x98 + adds r0, r6, r0 + lsls r1, r5, 3 + subs r1, r5 + lsls r1, 2 + ldr r2, _0814BB2C @ =gLinkPlayers + 8 + adds r1, r2 + bl StringCopy + adds r4, r6, r4 + adds r4, 0x9F + movs r0, 0xFF + strb r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0814BAE8: + ldrb r0, [r6, 0x9] + cmp r5, r0 + bcc _0814BAC4 + cmp r5, 0x4 + bhi _0814BB14 +_0814BAF2: + lsls r4, r5, 5 + adds r0, r4, 0 + adds r0, 0x98 + adds r0, r6, r0 + movs r1, 0x1 + movs r2, 0x7 + bl memset + adds r4, r6, r4 + adds r4, 0x9F + movs r0, 0xFF + strb r0, [r4] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _0814BAF2 +_0814BB14: + ldr r0, _0814BB30 @ =gSaveBlock2Ptr + ldr r0, [r0] + ldrb r0, [r0, 0x14] + lsls r0, 29 + lsrs r0, 29 + cmp r0, 0x1 + beq _0814BB3E + cmp r0, 0x1 + bgt _0814BB34 + cmp r0, 0 + beq _0814BB3A + b _0814BB46 + .align 2, 0 +_0814BB2C: .4byte gLinkPlayers + 8 +_0814BB30: .4byte gSaveBlock2Ptr +_0814BB34: + cmp r0, 0x2 + beq _0814BB42 + b _0814BB46 +_0814BB3A: + movs r0, 0x8 + b _0814BB44 +_0814BB3E: + movs r0, 0x4 + b _0814BB44 +_0814BB42: + movs r0, 0x1 +_0814BB44: + strb r0, [r6, 0xB] +_0814BB46: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_814BABC + + .align 2, 0 @ Don't pad with nop. |