diff options
author | U-User-PC\User <golemgalvanize@github.com> | 2017-08-28 12:37:37 -0400 |
---|---|---|
committer | U-User-PC\User <golemgalvanize@github.com> | 2017-08-28 12:37:37 -0400 |
commit | 863afd9ed825d0f401b2c6441c5f1ac54c41540a (patch) | |
tree | eff0df2e8e28832c1804bc95b4fe630811a5a534 | |
parent | 0c03f535e144d9b43f03826fb337afa3b83e7ebb (diff) |
decompiled up to sub_80D0E30
-rw-r--r-- | asm/battle_anim_80CA710.s | 895 | ||||
-rwxr-xr-x | src/battle_anim_80CA710.c | 447 |
2 files changed, 446 insertions, 896 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index 6052bda71..db5a3f104 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,901 +6,6 @@ .text - thumb_func_start sub_80D07AC -sub_80D07AC: @ 80D07AC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080D07D0 @ =gTasks - adds r4, r0, r1 - movs r0, 0xA - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080D0814 - cmp r5, 0x1 - bgt _080D07D4 - cmp r5, 0 - beq _080D07DE - b _080D08BC - .align 2, 0 -_080D07D0: .4byte gTasks -_080D07D4: - cmp r5, 0x2 - beq _080D0848 - cmp r5, 0x3 - beq _080D0878 - b _080D08BC -_080D07DE: - adds r0, r4, 0 - bl sub_807992C - ldrh r2, [r4, 0x10] - adds r2, 0x3 - strh r2, [r4, 0x10] - ldr r3, _080D0810 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080D08BC - strh r5, [r4, 0xE] - b _080D0870 - .align 2, 0 -_080D0810: .4byte gSprites -_080D0814: - adds r0, r4, 0 - bl sub_807992C - ldr r2, _080D0844 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080D08BC - movs r0, 0 - strh r0, [r4, 0xE] - b _080D0870 - .align 2, 0 -_080D0844: .4byte gSprites -_080D0848: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080D0870 - ldr r2, _080D086C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0x10] - subs r0, 0x2 - strh r0, [r4, 0x10] - b _080D08BC - .align 2, 0 -_080D086C: .4byte gSprites -_080D0870: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080D08BC -_080D0878: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080D08BC - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080D08B0 - ldr r2, _080D08AC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080D08BC - .align 2, 0 -_080D08AC: .4byte gSprites -_080D08B0: - ldrb r1, [r4, 0x8] - ldr r2, _080D08C4 @ =gUnknown_083D76F4 - adds r0, r4, 0 - bl sub_80798F4 - strh r5, [r4, 0xA] -_080D08BC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D08C4: .4byte gUnknown_083D76F4 - thumb_func_end sub_80D07AC - - thumb_func_start sub_80D08C8 -sub_80D08C8: @ 80D08C8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D08F8 @ =gTasks - adds r4, r0 - movs r0, 0 - bl obj_id_for_side_relative_to_move - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080D08FC @ =gUnknown_083D7714 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D0900 @ =sub_80D0904 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D08F8: .4byte gTasks -_080D08FC: .4byte gUnknown_083D7714 -_080D0900: .4byte sub_80D0904 - thumb_func_end sub_80D08C8 - - thumb_func_start sub_80D0904 -sub_80D0904: @ 80D0904 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D092C @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080D0924 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0924: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D092C: .4byte gTasks - thumb_func_end sub_80D0904 - - thumb_func_start sub_80D0930 -sub_80D0930: @ 80D0930 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D0960 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D0964 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - b _080D097E - .align 2, 0 -_080D0960: .4byte gBattleAnimPlayerMonIndex -_080D0964: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x20 - strh r0, [r4, 0x20] - ldr r0, _080D09B0 @ =0x0000ffc0 -_080D097E: - strh r0, [r4, 0x30] - ldr r0, _080D09B4 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - strh r0, [r4, 0x22] - movs r0, 0x34 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - strh r1, [r4, 0x36] - ldr r1, _080D09B8 @ =move_anim_8072740 - adds r0, r4, 0 - bl oamt_set_x3A_32 - ldr r0, _080D09BC @ =sub_8078394 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D09B0: .4byte 0x0000ffc0 -_080D09B4: .4byte gBattleAnimPlayerMonIndex -_080D09B8: .4byte move_anim_8072740 -_080D09BC: .4byte sub_8078394 - thumb_func_end sub_80D0930 - - thumb_func_start sub_80D09C0 -sub_80D09C0: @ 80D09C0 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080D09D4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D09DC - ldr r0, _080D09D8 @ =gBattleAnimPlayerMonIndex - b _080D09DE - .align 2, 0 -_080D09D4: .4byte gBattleAnimArgs -_080D09D8: .4byte gBattleAnimPlayerMonIndex -_080D09DC: - ldr r0, _080D0A3C @ =gBattleAnimEnemyMonIndex -_080D09DE: - ldrb r5, [r0] - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D09F8 - ldr r1, _080D0A40 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080D09F8: - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080D0A40 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x4] - adds r0, r4 - strh r0, [r6, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bgt _080D0A2A - movs r0, 0x8 - strh r0, [r6, 0x22] -_080D0A2A: - ldr r1, _080D0A44 @ =move_anim_8074EE0 - adds r0, r6, 0 - bl oamt_set_x3A_32 - ldr r0, _080D0A48 @ =sub_80785E4 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0A3C: .4byte gBattleAnimEnemyMonIndex -_080D0A40: .4byte gBattleAnimArgs -_080D0A44: .4byte move_anim_8074EE0 -_080D0A48: .4byte sub_80785E4 - thumb_func_end sub_80D09C0 - - thumb_func_start sub_80D0A4C -sub_80D0A4C: @ 80D0A4C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D0A80 @ =gTasks - adds r4, r0 - movs r0, 0 - bl obj_id_for_side_relative_to_move - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - strh r1, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r2, _080D0A84 @ =gUnknown_083D77B0 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D0A88 @ =sub_80D0A8C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0A80: .4byte gTasks -_080D0A84: .4byte gUnknown_083D77B0 -_080D0A88: .4byte sub_80D0A8C - thumb_func_end sub_80D0A4C - - thumb_func_start sub_80D0A8C -sub_80D0A8C: @ 80D0A8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D0AB4 @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080D0AAC - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0AAC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0AB4: .4byte gTasks - thumb_func_end sub_80D0A8C - - thumb_func_start sub_80D0AB8 -sub_80D0AB8: @ 80D0AB8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D0B2C @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl obj_id_for_side_relative_to_move - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - movs r0, 0x4 - strh r0, [r4, 0xC] - movs r0, 0x7 - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x10] - ldr r3, _080D0B30 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - strh r2, [r4, 0x16] - strh r2, [r4, 0x18] - movs r0, 0x2 - strh r0, [r4, 0x1A] - ldr r0, _080D0B34 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D0B22 - movs r1, 0xC - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0xC] -_080D0B22: - ldr r0, _080D0B38 @ =sub_80D0B3C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0B2C: .4byte gTasks -_080D0B30: .4byte gSprites -_080D0B34: .4byte gBattleAnimPlayerMonIndex -_080D0B38: .4byte sub_80D0B3C - thumb_func_end sub_80D0AB8 - - thumb_func_start sub_80D0B3C -sub_80D0B3C: @ 80D0B3C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D0B84 @ =gTasks - adds r3, r0, r1 - ldrh r0, [r3, 0x16] - adds r0, 0x1 - strh r0, [r3, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080D0BA2 - movs r0, 0 - strh r0, [r3, 0x16] - ldrh r0, [r3, 0x18] - adds r0, 0x1 - strh r0, [r3, 0x18] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D0B8C - ldr r2, _080D0B88 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x1A] - ldrh r2, [r0, 0x22] - adds r1, r2 - b _080D0BA0 - .align 2, 0 -_080D0B84: .4byte gTasks -_080D0B88: .4byte gSprites -_080D0B8C: - ldr r2, _080D0BB4 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 -_080D0BA0: - strh r1, [r0, 0x22] -_080D0BA2: - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _080D0BF0 - cmp r0, 0x1 - bgt _080D0BB8 - cmp r0, 0 - beq _080D0BBE - b _080D0C80 - .align 2, 0 -_080D0BB4: .4byte gSprites -_080D0BB8: - cmp r0, 0x2 - beq _080D0C20 - b _080D0C80 -_080D0BBE: - ldr r2, _080D0BEC @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r2, [r0, 0x20] - adds r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080D0C80 - movs r0, 0xE - strh r0, [r3, 0xE] - movs r0, 0x1 - strh r0, [r3, 0xA] - b _080D0C80 - .align 2, 0 -_080D0BEC: .4byte gSprites -_080D0BF0: - ldr r2, _080D0C1C @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x20] - ldrh r2, [r3, 0xC] - subs r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080D0C80 - movs r0, 0x7 - strh r0, [r3, 0xE] - movs r0, 0x2 - strh r0, [r3, 0xA] - b _080D0C80 - .align 2, 0 -_080D0C1C: .4byte gSprites -_080D0C20: - ldr r2, _080D0C58 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r5, [r0, 0x20] - adds r1, r5 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080D0C80 - ldrh r0, [r3, 0x10] - subs r0, 0x1 - strh r0, [r3, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _080D0C5C - movs r0, 0x7 - strh r0, [r3, 0xE] - strh r1, [r3, 0xA] - b _080D0C80 - .align 2, 0 -_080D0C58: .4byte gSprites -_080D0C5C: - ldrh r1, [r3, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D0C7A - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 - strh r1, [r0, 0x22] -_080D0C7A: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0C80: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D0B3C - - thumb_func_start sub_80D0C88 -sub_80D0C88: @ 80D0C88 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D0CD8 @ =gTasks - adds r5, r1, r0 - ldr r4, _080D0CDC @ =gBattleAnimEnemyMonIndex - ldrb r0, [r4] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - movs r1, 0 - strh r0, [r5, 0x8] - movs r0, 0x4 - strh r0, [r5, 0xA] - strh r1, [r5, 0xC] - strh r1, [r5, 0xE] - strh r1, [r5, 0x10] - strh r1, [r5, 0x12] - ldrb r0, [r4] - bl sub_807A100 - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D0CE8 - ldr r0, _080D0CE0 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080D0CE4 @ =REG_BG1HOFS - b _080D0CF0 - .align 2, 0 -_080D0CD8: .4byte gTasks -_080D0CDC: .4byte gBattleAnimEnemyMonIndex -_080D0CE0: .4byte gUnknown_030042C0 -_080D0CE4: .4byte REG_BG1HOFS -_080D0CE8: - ldr r0, _080D0D54 @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080D0D58 @ =REG_BG2HOFS -_080D0CF0: - str r0, [sp] - ldrh r0, [r5, 0x8] - adds r1, r0, 0 - subs r1, 0x40 - lsls r2, r1, 16 - lsls r0, 16 - cmp r2, r0 - bgt _080D0D2E - ldr r4, _080D0D5C @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_080D0D08: - asrs r3, r2, 16 - cmp r3, 0 - blt _080D0D20 - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r1] -_080D0D20: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x8 - ldrsh r0, [r5, r3] - cmp r1, r0 - ble _080D0D08 -_080D0D2E: - ldr r0, _080D0D60 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldr r0, _080D0D64 @ =sub_80D0D68 - str r0, [r5] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0D54: .4byte gUnknown_03004288 -_080D0D58: .4byte REG_BG2HOFS -_080D0D5C: .4byte gUnknown_03004DE0 -_080D0D60: .4byte 0xa2600001 -_080D0D64: .4byte sub_80D0D68 - thumb_func_end sub_80D0C88 - - thumb_func_start sub_80D0D68 -sub_80D0D68: @ 80D0D68 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D0D88 @ =gTasks - adds r3, r0, r1 - movs r1, 0x10 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080D0D8C - cmp r0, 0x1 - beq _080D0DA2 - b _080D0E22 - .align 2, 0 -_080D0D88: .4byte gTasks -_080D0D8C: - ldrh r0, [r3, 0x12] - adds r0, 0x1 - strh r0, [r3, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D0E22 - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] - b _080D0E22 -_080D0DA2: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080D0E22 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xE] - movs r0, 0x3 - ands r0, r1 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - subs r0, r1 - strh r0, [r3, 0x12] - movs r2, 0xC - ldrsh r1, [r3, r2] - cmp r1, 0x1 - beq _080D0DD8 - cmp r1, 0x1 - ble _080D0DE0 - cmp r1, 0x2 - beq _080D0DDC - cmp r1, 0x3 - beq _080D0DDC - b _080D0DE0 -_080D0DD8: - subs r0, 0x2 - b _080D0DDE -_080D0DDC: - adds r0, 0x1 -_080D0DDE: - strh r0, [r3, 0x12] -_080D0DE0: - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _080D0E04 - ldr r2, _080D0E28 @ =gUnknown_03004DE0 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] - movs r1, 0x12 - ldrsh r0, [r3, r1] - lsls r0, 1 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] -_080D0E04: - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x26 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _080D0E22 - ldr r1, _080D0E2C @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D0E22: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0E28: .4byte gUnknown_03004DE0 -_080D0E2C: .4byte gUnknown_03004DC0 - thumb_func_end sub_80D0D68 - - thumb_func_start sub_80D0E30 -sub_80D0E30: @ 80D0E30 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080D0E84 @ =gBattleAnimEnemyMonIndex - ldrb r0, [r6] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - movs r0, 0x10 - strh r0, [r4, 0x34] - strh r5, [r4, 0x36] - ldrb r0, [r6] - movs r1, 0 - bl sub_807A100 - adds r0, 0x2 - strh r0, [r4, 0x38] - movs r0, 0x3F - bl sub_8076F98 - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x3A] - ldr r0, _080D0E88 @ =sub_80D0E8C - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0E84: .4byte gBattleAnimEnemyMonIndex -_080D0E88: .4byte sub_80D0E8C - thumb_func_end sub_80D0E30 - thumb_func_start sub_80D0E8C sub_80D0E8C: @ 80D0E8C push {r4,lr} diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c index 76c74c89a..2c2c40ff1 100755 --- a/src/battle_anim_80CA710.c +++ b/src/battle_anim_80CA710.c @@ -16,6 +16,35 @@ struct __attribute__((packed)) Some3ByteStruct { u8 unkArr[3]; }; +struct UnknownStruct_1 +{ + void *src[2]; + void *dest; + u32 unkC; + void (*unk10)(void); + u8 srcBank; + u8 unk15; + u8 unk16; + u8 unk17; + u8 taskId; + u8 filler19[0x7]; +}; + +struct UnknownStruct_2 +{ + const void *dest; + u32 control; + u8 unk8; + u8 unk9; +}; + +struct UnknownStruct6 +{ + u16 unk0[0xA0]; + u8 fillerA0[0x640]; + u16 unk780[0xA0]; +}; + extern u8 gBanksBySide[]; extern s16 gBattleAnimArgs[8]; extern u8 gBattleAnimPlayerMonIndex; @@ -27,6 +56,8 @@ extern struct SpriteTemplate gSpriteTemplate_83D75AC; extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FC8; extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8; extern struct AffineAnimFrameCmd gUnknown_083D76F4; +extern struct AffineAnimFrameCmd gUnknown_083D7714; +extern struct AffineAnimFrameCmd gUnknown_083D77B0; extern s16 gUnknown_03000728[]; extern s8 gUnknown_083D680C[11][3]; extern u16 gUnknown_083D6984[]; @@ -36,6 +67,10 @@ extern u8 gNoOfAllBanks; extern u8 gHealthboxIDs[]; extern u16 gUnknown_083D712C[4][6]; extern u16 gBattleTypeFlags; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_03004288; +extern struct UnknownStruct6 gUnknown_03004DE0; +extern struct UnknownStruct_1 gUnknown_03004DC0; void sub_80CA768(struct Sprite* sprite); void sub_80CA8B4(struct Sprite* sprite); @@ -112,6 +147,7 @@ void sub_80D02D0(struct Sprite* sprite); void sub_80D0344(struct Sprite* sprite); void sub_80D03A8(struct Sprite* sprite); void sub_80D0704(struct Sprite* sprite); +void sub_80D0E8C(struct Sprite* sprite); s16 sub_80CC338(struct Sprite* sprite); @@ -152,6 +188,9 @@ s16 sub_81174E0(s16 a); s16 sub_81174C4(s16 a, s16 b); void sub_8079108(u16 a1, bool8 a2); void sub_80798F4(struct Task *task, u8 a2, void *a3); +bool8 sub_807992C(struct Task *task); +u8 sub_8077FC0(u8 slot); +void sub_80895F8(struct UnknownStruct_2 unk); void move_anim_8074EE0(struct Sprite *sprite); bool8 sub_8078718(struct Sprite *sprite); @@ -168,6 +207,10 @@ void sub_80CF514(u8 taskId); void sub_80D0428(u8 taskId); void sub_80D04E0(u8 taskId); void sub_80D07AC(u8 taskId); +void sub_80D0904(u8 taskId); +void sub_80D0A8C(u8 taskId); +void sub_80D0B3C(u8 taskId); +void sub_80D0D68(u8 taskId); void sub_80CC358(struct Task* task, u8 taskId); void sub_80D0614(struct Task* task, u8 taskId); @@ -4494,5 +4537,407 @@ void sub_80D074C(u8 taskId) } } +void sub_80D07AC(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[1]) + { + case 0: + sub_807992C(task); + task->data[4] += 3; + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 1: + sub_807992C(task); + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 2: + if (task->data[4] != 0) + { + gSprites[task->data[0]].pos2.y -= 2; + task->data[4] -= 2; + } + else + task->data[1]++; + break; + case 3: + if (!sub_807992C(task)) + { + if (--task->data[2] == 0) + { + gSprites[task->data[0]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + else + { + sub_80798F4(task, task->data[0], &gUnknown_083D76F4); + task->data[1] = 0; + } + } + break; + } +} -
\ No newline at end of file +void sub_80D08C8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = obj_id_for_side_relative_to_move(0); + sub_80798F4(task, spriteId, &gUnknown_083D7714); + task->func = sub_80D0904; +} + +void sub_80D0904(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!sub_807992C(task)) + DestroyAnimVisualTask(taskId); +} + +void sub_80D0930(struct Sprite* sprite) +{ + if (GetBankSide(gBattleAnimPlayerMonIndex) == 0) + { + StartSpriteAnim(sprite, 0); + sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2) + 32; + sprite->data1 = 0x40; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2) - 32; + sprite->data1 = -0x40; + } + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->data0 = 0x34; + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + oamt_set_x3A_32(sprite, move_anim_8072740); + sprite->callback = sub_8078394; +} + +void sub_80D09C0(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimPlayerMonIndex; + else + bank = gBattleAnimEnemyMonIndex; + if (GetBankSide(bank) == 1) + { + gBattleAnimArgs[1] *= -1; + } + sprite->pos1.x = sub_8077ABC(bank, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[2]; + if (sprite->pos1.y <= 7) + sprite->pos1.y = 8; + oamt_set_x3A_32(sprite, move_anim_8074EE0); + sprite->callback = sub_80785E4; +} + +void sub_80D0A4C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = obj_id_for_side_relative_to_move(0); + task->data[0] = spriteId; + task->data[1] = 0; + sub_80798F4(task, spriteId, &gUnknown_083D77B0); + task->func = sub_80D0A8C; +} + +void sub_80D0A8C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!sub_807992C(task)) + DestroyAnimVisualTask(taskId); +} + +void sub_80D0AB8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = obj_id_for_side_relative_to_move(0); + task->data[1] = 0; + task->data[2] = 4; + task->data[3] = 7; + task->data[4] = 3; + task->data[5] = gSprites[task->data[0]].pos1.x; + task->data[6] = gSprites[task->data[0]].pos1.y; + task->data[7] = 0; + task->data[8] = 0; + task->data[9] = 2; + if (GetBankSide(gBattleAnimPlayerMonIndex) == 1) + task->data[2] *= -1; + task->func = sub_80D0B3C; +} + +void sub_80D0B3C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (++task->data[7] > 2) + { + task->data[7] = 0; + task->data[8]++; + if ((task->data[8] & 1) != 0) + { + gSprites[task->data[0]].pos1.y += task->data[9]; + } + else + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + switch (task->data[1]) + { + case 0: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 14; + task->data[1] = 1; + } + break; + case 1: + gSprites[task->data[0]].pos1.x -= task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 7; + task->data[1] = 2; + } + break; + case 2: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + if (--task->data[4] != 0) + { + task->data[3] = 7; + task->data[1] = 0; + } + else + { + if ((task->data[8] & 1) != 0) + { + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_80D0C88(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct UnknownStruct_2 sp; + s16 i; + task->data[0] = sub_8077FC0(gBattleAnimEnemyMonIndex) + 32; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[15] = sub_807A100(gBattleAnimEnemyMonIndex, 0); + if (GetBankIdentity_permutated(gBattleAnimEnemyMonIndex) == 1) + { + task->data[6] = gUnknown_030042C0; + sp.dest = (u16 *)REG_ADDR_BG1HOFS; + } + else + { + task->data[6] = gUnknown_03004288; + sp.dest = (u16 *)REG_ADDR_BG2HOFS; + } + for (i = task->data[0] - 0x40; i <= task->data[0];i++) + { + if (i >= 0) + { + gUnknown_03004DE0.unk0[i] = task->data[6] + 0xF0; + gUnknown_03004DE0.unk780[i] = task->data[6] + 0xF0; + } + } + sp.control = 0xa2600001; + sp.unk8 = 1; + sp.unk9 = 0; + sub_80895F8(sp); + task->func = sub_80D0D68; +} + +#ifdef NONMATCHING +void sub_80D0D68(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[4]) + { + case 0: + if (++task->data[5] > 20) + task->data[4]++; + break; + case 1: + if (++task->data[1] > 3) + { + task->data[1] = 0; + task->data[2] = 3 & task->data[3]; + task->data[5] = task->data[0] - task->data[3]; + switch (task->data[2]) + { + case 1: + task->data[5] -= 2; + default: + case 0: + break; + case 2: + case 3: + task->data[5]++; + break; + } + if (task->data[5] >= 0) + { + gUnknown_03004DE0.unk0[task->data[5]] = task->data[6]; + gUnknown_03004DE0.unk780[task->data[5]] = task->data[6]; + } + if (++task->data[3] >= task->data[15]) + { + gUnknown_03004DC0.unk15 = 3; + DestroyAnimVisualTask(taskId); + } + + } + break; + } +} +#else +__attribute__((naked)) +void sub_80D0D68(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + ldr r1, _080D0D88 @ =gTasks\n\ + adds r3, r0, r1\n\ + movs r1, 0x10\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + beq _080D0D8C\n\ + cmp r0, 0x1\n\ + beq _080D0DA2\n\ + b _080D0E22\n\ + .align 2, 0\n\ +_080D0D88: .4byte gTasks\n\ +_080D0D8C:\n\ + ldrh r0, [r3, 0x12]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x12]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x14\n\ + ble _080D0E22\n\ + ldrh r0, [r3, 0x10]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x10]\n\ + b _080D0E22\n\ +_080D0DA2:\n\ + ldrh r0, [r3, 0xA]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xA]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x3\n\ + ble _080D0E22\n\ + movs r0, 0\n\ + strh r0, [r3, 0xA]\n\ + ldrh r1, [r3, 0xE]\n\ + movs r0, 0x3\n\ + ands r0, r1\n\ + strh r0, [r3, 0xC]\n\ + ldrh r0, [r3, 0x8]\n\ + subs r0, r1\n\ + strh r0, [r3, 0x12]\n\ + movs r2, 0xC\n\ + ldrsh r1, [r3, r2]\n\ + cmp r1, 0x1\n\ + beq _080D0DD8\n\ + cmp r1, 0x1\n\ + ble _080D0DE0\n\ + cmp r1, 0x2\n\ + beq _080D0DDC\n\ + cmp r1, 0x3\n\ + beq _080D0DDC\n\ + b _080D0DE0\n\ +_080D0DD8:\n\ + subs r0, 0x2\n\ + b _080D0DDE\n\ +_080D0DDC:\n\ + adds r0, 0x1\n\ +_080D0DDE:\n\ + strh r0, [r3, 0x12]\n\ +_080D0DE0:\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + cmp r0, 0\n\ + blt _080D0E04\n\ + ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x14]\n\ + strh r1, [r0]\n\ + movs r1, 0x12\n\ + ldrsh r0, [r3, r1]\n\ + lsls r0, 1\n\ + movs r1, 0xF0\n\ + lsls r1, 3\n\ + adds r2, r1\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x14]\n\ + strh r1, [r0]\n\ +_080D0E04:\n\ + ldrh r0, [r3, 0xE]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xE]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + movs r2, 0x26\n\ + ldrsh r1, [r3, r2]\n\ + cmp r0, r1\n\ + blt _080D0E22\n\ + ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\ + movs r0, 0x3\n\ + strb r0, [r1, 0x15]\n\ + adds r0, r4, 0\n\ + bl DestroyAnimVisualTask\n\ +_080D0E22:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D0E28: .4byte gUnknown_03004DE0\n\ +_080D0E2C: .4byte gUnknown_03004DC0\n\ +.syntax divided\n"); +} +#endif + +void sub_80D0E30(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimEnemyMonIndex, 0) - 16; + sprite->pos1.y = sub_8077FC0(gBattleAnimEnemyMonIndex) + 16; + sprite->data0 = 0; + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data3 = 16; + sprite->data4 = 0; + sprite->data5 = sub_807A100(gBattleAnimEnemyMonIndex, 0) + 2; + sprite->data6 = sub_8076F98(0x3F); + sprite->callback = sub_80D0E8C; +} |