diff options
Diffstat (limited to 'asm/pokemon_jump.s')
-rw-r--r-- | asm/pokemon_jump.s | 642 |
1 files changed, 642 insertions, 0 deletions
diff --git a/asm/pokemon_jump.s b/asm/pokemon_jump.s new file mode 100644 index 000000000..c00c08f20 --- /dev/null +++ b/asm/pokemon_jump.s @@ -0,0 +1,642 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_81475C0 +sub_81475C0: @ 81475C0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08147600 @ =sub_8147654 + bl CreateTask + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08147604 @ =gTasks + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x8] + strh r5, [r0, 0xA] + ldr r0, _08147608 @ =gUnknown_846B4AC + lsls r5, 4 + adds r5, r0 + ldr r1, [r5] + adds r0, r4, 0 + bl _call_via_r1 + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08147600: .4byte sub_8147654 +_08147604: .4byte gTasks +_08147608: .4byte gUnknown_846B4AC + thumb_func_end sub_81475C0 + + thumb_func_start sub_814760C +sub_814760C: @ 814760C + push {lr} + ldr r0, _08147630 @ =sub_8147654 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _08147638 + ldr r0, _08147634 @ =gTasks + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 3 + adds r1, r0 + movs r0, 0x2 + strh r0, [r1, 0x8] + movs r0, 0x1 + b _0814763A + .align 2, 0 +_08147630: .4byte sub_8147654 +_08147634: .4byte gTasks +_08147638: + movs r0, 0 +_0814763A: + pop {r1} + bx r1 + thumb_func_end sub_814760C + + thumb_func_start sub_8147640 +sub_8147640: @ 8147640 + push {lr} + ldr r0, _08147650 @ =sub_8147654 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08147650: .4byte sub_8147654 + thumb_func_end sub_8147640 + + thumb_func_start sub_8147654 +sub_8147654: @ 8147654 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08147678 @ =gTasks+0x8 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + beq _081476A0 + cmp r0, 0x3 + bgt _0814767C + cmp r0, 0x2 + beq _08147682 + b _081476D6 + .align 2, 0 +_08147678: .4byte gTasks+0x8 +_0814767C: + cmp r0, 0x4 + beq _081476BC + b _081476D6 +_08147682: + ldr r1, _0814769C @ =gUnknown_846B4AC + movs r2, 0x2 + ldrsh r0, [r4, r2] + lsls r0, 4 + adds r1, 0x8 + adds r0, r1 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + movs r0, 0x3 + strh r0, [r4] + b _081476D6 + .align 2, 0 +_0814769C: .4byte gUnknown_846B4AC +_081476A0: + ldr r0, _081476B8 @ =gUnknown_846B4AC + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r1, 4 + adds r0, 0xC + adds r1, r0 + ldr r1, [r1] + adds r0, r5, 0 + bl _call_via_r1 + b _081476D6 + .align 2, 0 +_081476B8: .4byte gUnknown_846B4AC +_081476BC: + ldr r0, _081476DC @ =gUnknown_846B4AC + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r1, 4 + adds r0, 0x4 + adds r1, r0 + ldr r1, [r1] + adds r0, r5, 0 + bl _call_via_r1 + adds r0, r5, 0 + bl DestroyTask +_081476D6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081476DC: .4byte gUnknown_846B4AC + thumb_func_end sub_8147654 + + thumb_func_start sub_81476E0 +sub_81476E0: @ 81476E0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r1, 0x6 + ldrsh r0, [r4, r1] + lsls r0, 3 + ldr r1, _081477B0 @ =gUnknown_846B42C + adds r0, r1 + bl LoadCompressedObjectPic + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 3 + ldr r1, _081477B4 @ =gUnknown_846B43C + adds r0, r1 + bl LoadSpritePalette + movs r5, 0 + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r5, r0 + bge _08147748 +_08147714: + movs r0, 0x4 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + ldr r1, _081477B8 @ =gUnknown_846B494 + adds r0, r1 + movs r2, 0x12 + ldrsh r1, [r4, r2] + movs r3, 0x14 + ldrsh r2, [r4, r3] + ldrb r3, [r4, 0xE] + bl CreateSprite + lsls r1, r5, 1 + adds r1, r4 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x1A] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _08147714 +_08147748: + movs r5, 0 + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r5, r0 + bge _081477A4 + movs r7, 0x3 + movs r3, 0xD + negs r3, r3 + mov r12, r3 + ldr r6, _081477BC @ =gSprites +_0814775C: + lsls r0, r5, 1 + adds r0, r4 + movs r1, 0x1A + ldrsh r0, [r0, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r6 + ldrb r1, [r4, 0xC] + ands r1, r7 + lsls r1, 2 + ldrb r3, [r2, 0x5] + mov r0, r12 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x5] + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0xA] + strh r0, [r2, 0x30] + mov r3, r8 + strh r3, [r2, 0x34] + strh r5, [r2, 0x36] + ldrh r0, [r4, 0x1A] + strh r0, [r2, 0x38] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _0814775C +_081477A4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081477B0: .4byte gUnknown_846B42C +_081477B4: .4byte gUnknown_846B43C +_081477B8: .4byte gUnknown_846B494 +_081477BC: .4byte gSprites + thumb_func_end sub_81476E0 + + thumb_func_start sub_81477C0 +sub_81477C0: @ 81477C0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r1, _08147840 @ =gTasks+0x8 + adds r4, r1 + movs r5, 0 + strh r5, [r4, 0x4] + strh r5, [r4, 0x6] + strh r5, [r4, 0x8] + movs r1, 0x3C + strh r1, [r4, 0xA] + strh r5, [r4, 0xC] + strh r5, [r4, 0xE] + movs r1, 0x3 + strh r1, [r4, 0x10] + movs r1, 0x78 + strh r1, [r4, 0x12] + movs r1, 0x58 + strh r1, [r4, 0x14] + adds r1, r4, 0 + bl sub_81476E0 + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r5, _08147844 @ =gSprites + adds r0, r5 + movs r1, 0x4 + bl StartSpriteAnim + movs r0, 0x1C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldr r1, _08147848 @ =0x0000ffe0 + strh r1, [r0, 0x24] + movs r0, 0x1E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x5 + bl StartSpriteAnim + movs r0, 0x1E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0x20 + strh r1, [r0, 0x24] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08147840: .4byte gTasks+0x8 +_08147844: .4byte gSprites +_08147848: .4byte 0x0000ffe0 + thumb_func_end sub_81477C0 + + thumb_func_start sub_814784C +sub_814784C: @ 814784C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08147860 @ =gTasks+0x8 + adds r4, r1, r0 + b _08147880 + .align 2, 0 +_08147860: .4byte gTasks+0x8 +_08147864: + lsls r0, r5, 1 + adds r0, r4 + movs r2, 0x1A + ldrsh r1, [r0, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _081478B0 @ =gSprites + adds r0, r1 + bl DestroySprite + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08147880: + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _08147864 + ldr r1, _081478B4 @ =gUnknown_846B42C + movs r2, 0x6 + ldrsh r0, [r4, r2] + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x6] + bl FreeSpriteTilesByTag + ldr r1, _081478B8 @ =gUnknown_846B43C + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x4] + bl FreeSpritePaletteByTag + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_081478B0: .4byte gSprites +_081478B4: .4byte gUnknown_846B42C +_081478B8: .4byte gUnknown_846B43C + thumb_func_end sub_814784C + + thumb_func_start sub_81478BC +sub_81478BC: @ 81478BC + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0x34 + ldrsh r1, [r6, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _08147900 @ =gTasks+0x8 + adds r5, r0, r1 + movs r1, 0x16 + ldrsh r0, [r5, r1] + movs r2, 0xA + ldrsh r1, [r5, r2] + bl __modsi3 + cmp r0, 0 + bne _081479CE + ldrh r2, [r5, 0x16] + movs r3, 0x16 + ldrsh r1, [r5, r3] + movs r3, 0x14 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _081479CE + strh r2, [r5, 0x14] + movs r1, 0x32 + ldrsh r0, [r6, r1] + cmp r0, 0x4 + bhi _081479C8 + lsls r0, 2 + ldr r1, _08147904 @ =_08147908 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08147900: .4byte gTasks+0x8 +_08147904: .4byte _08147908 + .align 2, 0 +_08147908: + .4byte _0814791C + .4byte _0814792A + .4byte _0814792A + .4byte _0814793E + .4byte _08147988 +_0814791C: + adds r2, r6, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_0814792A: + movs r0, 0x31 + bl PlaySE + ldrh r1, [r6, 0x32] + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl StartSpriteAnim + b _081479C8 +_0814793E: + movs r0, 0x15 + bl PlaySE + ldrh r1, [r6, 0x32] + lsls r1, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl StartSpriteAnim + ldr r4, _08147984 @ =gSprites + movs r2, 0x1C + ldrsh r0, [r5, r2] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + adds r1, 0x3E + ldrb r3, [r1] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r3 + strb r0, [r1] + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _081479C8 + .align 2, 0 +_08147984: .4byte gSprites +_08147988: + adds r1, r6, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r3, _081479C4 @ =gSprites + movs r0, 0x1C + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x1E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x4 + strh r0, [r5] + b _081479CE + .align 2, 0 +_081479C4: .4byte gSprites +_081479C8: + ldrh r0, [r6, 0x32] + adds r0, 0x1 + strh r0, [r6, 0x32] +_081479CE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81478BC + + thumb_func_start sub_81479D4 +sub_81479D4: @ 81479D4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + ldr r5, _08147A28 @ =gTasks+0x8 + adds r6, r4, r5 + movs r0, 0x31 + bl PlaySE + ldr r2, _08147A2C @ =gSprites + movs r0, 0x1A + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0 + adds r1, 0x1C + adds r0, r1 + ldr r1, _08147A30 @ =sub_81478BC + str r1, [r0] + movs r0, 0x1A + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r2, [r0] + movs r1, 0x5 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + subs r5, 0x8 + adds r4, r5 + movs r0, 0x3 + strh r0, [r4, 0x8] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08147A28: .4byte gTasks+0x8 +_08147A2C: .4byte gSprites +_08147A30: .4byte sub_81478BC + thumb_func_end sub_81479D4 + + thumb_func_start sub_8147A34 +sub_8147A34: @ 8147A34 + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08147A88 @ =gTasks+0x8 + adds r4, r1, r0 + ldr r0, _08147A8C @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _08147A98 + ldr r1, _08147A90 @ =gRecvCmds + ldrh r0, [r1, 0x2] + ldr r5, _08147A94 @ =0x00007fff + cmp r0, r5 + bne _08147A5C + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x16] +_08147A5C: + bl GetMultiplayerId + lsls r0, 24 + cmp r0, 0 + bne _08147A9E + ldrh r0, [r4, 0x18] + adds r0, 0x1 + strh r0, [r4, 0x18] + mov r0, sp + movs r1, 0 + movs r2, 0xC + bl memset + mov r0, sp + strh r5, [r0] + mov r1, sp + ldrh r0, [r4, 0x18] + strh r0, [r1, 0x2] + mov r0, sp + bl sub_80F9E2C + b _08147A9E + .align 2, 0 +_08147A88: .4byte gTasks+0x8 +_08147A8C: .4byte gReceivedRemoteLinkPlayers +_08147A90: .4byte gRecvCmds +_08147A94: .4byte 0x00007fff +_08147A98: + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_08147A9E: + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8147A34 + + .align 2, 0 @ Don't pad with nop. |