diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-12-20 15:54:25 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-20 15:54:25 -0600 |
commit | 871ae4c283ec8bc7730df52790b5ca53baa82230 (patch) | |
tree | 6899e26a068d4854a026e3d13b7c51c36b68208a | |
parent | 3c5f725de49371aced1788a21f5e53df5b498b5f (diff) | |
parent | 5e6bfe67a87e041ebdc9e0b573d1ae1f22b79d59 (diff) |
Merge pull request #494 from huderlem/battle_anim
Decompile small battle_anim effects
37 files changed, 1451 insertions, 2639 deletions
diff --git a/asm/beta_beat_up.s b/asm/beta_beat_up.s deleted file mode 100755 index d6e1ba675..000000000 --- a/asm/beta_beat_up.s +++ /dev/null @@ -1,63 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ beta_beat_up - - thumb_func_start sub_80D6234 -sub_80D6234: @ 80D6234 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D6254 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D625C - ldr r0, _080D6258 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r0, [r0] - subs r1, r0 - strh r1, [r4, 0x20] - b _080D6266 - .align 2, 0 -_080D6254: .4byte gBattleAnimBankAttacker -_080D6258: .4byte gBattleAnimArgs -_080D625C: - ldr r0, _080D6270 @ =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] -_080D6266: - ldr r0, _080D6274 @ =sub_80D6278 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6270: .4byte gBattleAnimArgs -_080D6274: .4byte sub_80D6278 - thumb_func_end sub_80D6234 - - thumb_func_start sub_80D6278 -sub_80D6278: @ 80D6278 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080D628E - adds r0, r2, 0 - bl move_anim_8074EE0 -_080D628E: - pop {r0} - bx r0 - thumb_func_end sub_80D6278 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/bubble.s b/asm/bubble.s deleted file mode 100755 index 466e31b0d..000000000 --- a/asm/bubble.s +++ /dev/null @@ -1,248 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ bubble - - thumb_func_start sub_80D31C8 -sub_80D31C8: @ 80D31C8 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r5, _080D31F0 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D31F8 - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080D31F4 @ =gBattleAnimArgs - ldrh r1, [r4] - subs r0, r1 - b _080D320A - .align 2, 0 -_080D31F0: .4byte gBattleAnimBankAttacker -_080D31F4: .4byte gBattleAnimArgs -_080D31F8: - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r4, _080D32D0 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 -_080D320A: - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r6, 0x22] - adds r2, r6, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080D32D4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D3240 - ldr r1, _080D32D0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080D3240: - ldr r5, _080D32D0 @ =gBattleAnimArgs - ldrh r0, [r5, 0xC] - strh r0, [r6, 0x2E] - ldrh r0, [r6, 0x20] - strh r0, [r6, 0x30] - ldr r4, _080D32D8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x32] - ldrh r0, [r6, 0x22] - strh r0, [r6, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x36] - adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080D32DC @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - strh r4, [r6, 0x38] - ldrb r0, [r5, 0x8] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Sin - ldrh r1, [r6, 0x20] - subs r1, r0 - strh r1, [r6, 0x20] - ldrb r0, [r5, 0x8] - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl Cos - ldrh r1, [r6, 0x22] - subs r1, r0 - strh r1, [r6, 0x22] - ldr r0, _080D32E0 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r5, 0x4] - strh r0, [r1, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r1, 0x30] - ldrh r0, [r5, 0xA] - strh r0, [r1, 0x32] - ldrb r0, [r5, 0x8] - lsls r0, 8 - strh r0, [r1, 0x34] - ldrh r0, [r5, 0xC] - strh r0, [r1, 0x36] - ldr r1, _080D32E4 @ =sub_80D32E8 - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D32D0: .4byte gBattleAnimArgs -_080D32D4: .4byte gBattleAnimBankAttacker -_080D32D8: .4byte gBattleAnimBankTarget -_080D32DC: .4byte SpriteCallbackDummy -_080D32E0: .4byte gSprites -_080D32E4: .4byte sub_80D32E8 - thumb_func_end sub_80D31C8 - - thumb_func_start sub_80D32E8 -sub_80D32E8: @ 80D32E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r1, [r5, 0x38] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080D3350 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r7, r0, r2 - ldrh r4, [r7, 0x36] - lsls r4, 24 - lsrs r4, 24 - ldrh r0, [r7, 0x34] - mov r8, r0 - movs r0, 0x1 - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl sub_8078B5C - mov r1, r8 - lsrs r6, r1, 8 - movs r0, 0x2E - ldrsh r1, [r7, r0] - adds r0, r6, 0 - bl Sin - ldrh r1, [r5, 0x24] - adds r0, r1 - strh r0, [r5, 0x24] - movs r0, 0x30 - ldrsh r1, [r7, r0] - adds r0, r6, 0 - bl Cos - ldrh r1, [r5, 0x26] - adds r0, r1 - strh r0, [r5, 0x26] - ldrh r0, [r7, 0x32] - mov r1, r8 - adds r1, r0 - strh r1, [r7, 0x34] - subs r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - cmp r4, 0 - beq _080D3354 - strh r4, [r7, 0x36] - b _080D335E - .align 2, 0 -_080D3350: .4byte gSprites -_080D3354: - ldr r0, _080D336C @ =sub_80D3370 - str r0, [r5, 0x1C] - adds r0, r7, 0 - bl DestroySprite -_080D335E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D336C: .4byte sub_80D3370 - thumb_func_end sub_80D32E8 - - thumb_func_start sub_80D3370 -sub_80D3370: @ 80D3370 - push {lr} - adds r3, r0, 0 - adds r3, 0x2C - ldrb r2, [r3] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - strb r1, [r3] - ldr r1, _080D3390 @ =sub_8078600 - str r1, [r0, 0x1C] - ldr r1, _080D3394 @ =sub_80D3398 - bl StoreSpriteCallbackInData - pop {r0} - bx r0 - .align 2, 0 -_080D3390: .4byte sub_8078600 -_080D3394: .4byte sub_80D3398 - thumb_func_end sub_80D3370 - - thumb_func_start sub_80D3398 -sub_80D3398: @ 80D3398 - push {lr} - movs r1, 0xA - strh r1, [r0, 0x2E] - ldr r1, _080D33AC @ =sub_80782D8 - str r1, [r0, 0x1C] - ldr r1, _080D33B0 @ =move_anim_8074EE0 - bl StoreSpriteCallbackInData - pop {r0} - bx r0 - .align 2, 0 -_080D33AC: .4byte sub_80782D8 -_080D33B0: .4byte move_anim_8074EE0 - thumb_func_end sub_80D3398 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/fury_cutter_count.s b/asm/fury_cutter_count.s deleted file mode 100755 index 10444b254..000000000 --- a/asm/fury_cutter_count.s +++ /dev/null @@ -1,48 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ fury_cutter_count - - thumb_func_start sub_80D30AC -sub_80D30AC: @ 80D30AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080D30C8 @ =gBattleAnimArgs - ldr r1, _080D30CC @ =gDisableStructMoveAnim - ldr r1, [r1] - ldrb r2, [r1, 0x10] - movs r1, 0x1 - ands r1, r2 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080D30C8: .4byte gBattleAnimArgs -_080D30CC: .4byte gDisableStructMoveAnim - thumb_func_end sub_80D30AC - - thumb_func_start update_fury_cutter_counter_copy -update_fury_cutter_counter_copy: @ 80D30D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D30E8 @ =gBattleAnimArgs - ldr r1, _080D30EC @ =gDisableStructMoveAnim - ldr r1, [r1] - ldrb r1, [r1, 0x10] - strh r1, [r2, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080D30E8: .4byte gBattleAnimArgs -_080D30EC: .4byte gDisableStructMoveAnim - thumb_func_end update_fury_cutter_counter_copy - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/guard.s b/asm/guard.s deleted file mode 100755 index 13ead6879..000000000 --- a/asm/guard.s +++ /dev/null @@ -1,80 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D3014 -sub_80D3014: @ 80D3014 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080D3058 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D3060 - ldr r4, _080D305C @ =gBattleAnimBankAttacker - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D3060 - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC - ldrh r0, [r5, 0x22] - adds r0, 0x28 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080D3080 - .align 2, 0 -_080D3058: .4byte gBattleTypeFlags -_080D305C: .4byte gBattleAnimBankAttacker -_080D3060: - ldr r4, _080D30A0 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x28 - strh r0, [r5, 0x22] -_080D3080: - movs r0, 0xD - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - subs r0, 0x48 - strh r0, [r5, 0x36] - ldr r0, _080D30A4 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080D30A8 @ =move_anim_8072740 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D30A0: .4byte gBattleAnimBankAttacker -_080D30A4: .4byte sub_8078B34 -_080D30A8: .4byte move_anim_8072740 - thumb_func_end sub_80D3014 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/heated_rock.s b/asm/heated_rock.s index eb957a6f1..3adb3a99d 100755 --- a/asm/heated_rock.s +++ b/asm/heated_rock.s @@ -6,297 +6,5 @@ .text @ heated_rock - - thumb_func_start sub_80D58FC -sub_80D58FC: @ 80D58FC - push {r4,lr} - adds r4, r0, 0 - bl sub_80D59B0 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080D5936 - ldr r3, _080D593C @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080D5936: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D593C: .4byte gTasks - thumb_func_end sub_80D58FC - - thumb_func_start sub_80D5940 -sub_80D5940: @ 80D5940 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D5978 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r1, 0x26] - ldrh r0, [r1, 0x22] - adds r2, r0 - adds r1, 0x29 - movs r0, 0 - ldrsb r0, [r1, r0] - adds r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _080D597C @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D5980 - lsls r0, r4, 16 - movs r1, 0x94 - lsls r1, 15 - b _080D5986 - .align 2, 0 -_080D5978: .4byte gSprites -_080D597C: .4byte gBattleAnimBankAttacker -_080D5980: - lsls r0, r4, 16 - movs r1, 0xB0 - lsls r1, 14 -_080D5986: - adds r0, r1 - lsrs r4, r0, 16 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80D5940 - - thumb_func_start sub_80D5994 -sub_80D5994: @ 80D5994 - movs r3, 0 - strh r3, [r0, 0x2E] - strh r3, [r0, 0x30] - ldrh r3, [r0, 0x20] - lsls r3, 3 - strh r3, [r0, 0x32] - ldrh r3, [r0, 0x22] - lsls r3, 3 - strh r3, [r0, 0x34] - lsls r1, 3 - strh r1, [r0, 0x36] - lsls r2, 3 - strh r2, [r0, 0x38] - bx lr - thumb_func_end sub_80D5994 - - thumb_func_start sub_80D59B0 -sub_80D59B0: @ 80D59B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080D59DA - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x30] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - ldrh r3, [r2, 0x34] - adds r0, r3 - strh r0, [r2, 0x34] -_080D59DA: - ldrh r0, [r2, 0x36] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - ldrh r1, [r2, 0x38] - ldrh r3, [r2, 0x34] - adds r1, r3 - strh r1, [r2, 0x34] - lsls r1, 16 - asrs r3, r1, 19 - strh r3, [r2, 0x22] - adds r0, 0x8 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 17 - cmp r0, r1 - bhi _080D5A10 - adds r1, r3, 0 - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _080D5A10 - cmp r1, 0x78 - ble _080D5A1C -_080D5A10: - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080D5A1C: - pop {r0} - bx r0 - thumb_func_end sub_80D59B0 - - thumb_func_start sub_80D5A20 -sub_80D5A20: @ 80D5A20 - push {r4,r5,lr} - ldr r3, _080D5A64 @ =gBattleAnimArgs - ldrh r1, [r3] - movs r2, 0 - strh r1, [r0, 0x20] - ldrh r1, [r3, 0x2] - strh r1, [r0, 0x22] - strh r2, [r0, 0x2E] - strh r2, [r0, 0x30] - strh r2, [r0, 0x32] - ldrh r1, [r3, 0x4] - strh r1, [r0, 0x3A] - ldrh r1, [r3, 0x6] - strh r1, [r0, 0x3C] - ldrh r4, [r0, 0x4] - lsls r2, r4, 22 - lsrs r2, 22 - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r1, 4 - adds r2, r1 - ldr r3, _080D5A68 @ =0x000003ff - adds r1, r3, 0 - ands r2, r1 - ldr r1, _080D5A6C @ =0xfffffc00 - ands r1, r4 - orrs r1, r2 - strh r1, [r0, 0x4] - ldr r1, _080D5A70 @ =sub_80D5A74 - str r1, [r0, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D5A64: .4byte gBattleAnimArgs -_080D5A68: .4byte 0x000003ff -_080D5A6C: .4byte 0xfffffc00 -_080D5A70: .4byte sub_80D5A74 - thumb_func_end sub_80D5A20 - - thumb_func_start sub_80D5A74 -sub_80D5A74: @ 80D5A74 - push {r4,lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x1 - beq _080D5AA6 - cmp r0, 0x1 - bgt _080D5A8A - cmp r0, 0 - beq _080D5A90 - b _080D5B04 -_080D5A8A: - cmp r0, 0x2 - beq _080D5AC4 - b _080D5B04 -_080D5A90: - ldrh r1, [r2, 0x3A] - movs r3, 0x3A - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _080D5AA0 - subs r0, r1, 0x1 - strh r0, [r2, 0x3A] - b _080D5B04 -_080D5AA0: - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_080D5AA6: - ldrh r0, [r2, 0x22] - adds r0, 0x8 - strh r0, [r2, 0x22] - lsls r0, 16 - asrs r0, 16 - ldrh r3, [r2, 0x3C] - movs r4, 0x3C - ldrsh r1, [r2, r4] - cmp r0, r1 - blt _080D5B04 - strh r3, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - b _080D5B04 -_080D5AC4: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D5AF0 - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x32] - adds r0, 0x1 - strh r0, [r2, 0x32] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D5AEC - ldr r0, _080D5AE8 @ =0x0000fffd - b _080D5AEE - .align 2, 0 -_080D5AE8: .4byte 0x0000fffd -_080D5AEC: - movs r0, 0x3 -_080D5AEE: - strh r0, [r2, 0x26] -_080D5AF0: - ldrh r0, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D5B04 - adds r0, r2, 0 - bl move_anim_8072740 -_080D5B04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D5A74 .align 2, 0 @ Don't pad with nop. diff --git a/asm/liquid_ball.s b/asm/liquid_ball.s deleted file mode 100755 index 6af030ecf..000000000 --- a/asm/liquid_ball.s +++ /dev/null @@ -1,353 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ liquid_ball - - thumb_func_start sub_80D3554 -sub_80D3554: @ 80D3554 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - movs r0, 0x1E - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080D35BC @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x2E - ldrsh r1, [r5, r0] - movs r0, 0xD2 - lsls r0, 8 - bl __divsi3 - strh r0, [r5, 0x38] - ldr r0, _080D35C0 @ =gBattleAnimArgs - ldrh r2, [r0, 0x6] - strh r2, [r5, 0x3C] - ldrh r1, [r0, 0xE] - movs r3, 0xE - ldrsh r0, [r0, r3] - cmp r0, 0x7F - ble _080D35C4 - adds r0, r1, 0 - subs r0, 0x7F - lsls r0, 8 - strh r0, [r5, 0x3A] - negs r0, r2 - strh r0, [r5, 0x3C] - b _080D35C8 - .align 2, 0 -_080D35BC: .4byte gBattleAnimBankTarget -_080D35C0: .4byte gBattleAnimArgs -_080D35C4: - lsls r0, r1, 8 - strh r0, [r5, 0x3A] -_080D35C8: - ldr r1, _080D35D8 @ =sub_80D35DC - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D35D8: .4byte sub_80D35DC - thumb_func_end sub_80D3554 - - thumb_func_start sub_80D35DC -sub_80D35DC: @ 80D35DC - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D35F0 - adds r0, r4, 0 - bl move_anim_8072740 -_080D35F0: - ldrh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 24 - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r2, 0x3A - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - adds r0, r1 - asrs r0, 8 - cmp r0, 0x7F - ble _080D3620 - movs r0, 0 - strh r0, [r4, 0x3A] - ldrh r0, [r4, 0x3C] - negs r0, r0 - strh r0, [r4, 0x3C] - b _080D3628 -_080D3620: - ldrh r0, [r4, 0x38] - ldrh r1, [r4, 0x3A] - adds r0, r1 - strh r0, [r4, 0x3A] -_080D3628: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D35DC - - thumb_func_start sub_80D3630 -sub_80D3630: @ 80D3630 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D3650 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r3, _080D3654 @ =gBattleAnimArgs - ldrh r0, [r3] - movs r2, 0 - strh r0, [r1, 0x8] - strh r2, [r3, 0xE] - ldr r0, _080D3658 @ =sub_80D365C - str r0, [r1] - bx lr - .align 2, 0 -_080D3650: .4byte gTasks -_080D3654: .4byte gBattleAnimArgs -_080D3658: .4byte sub_80D365C - thumb_func_end sub_80D3630 - - thumb_func_start sub_80D365C -sub_80D365C: @ 80D365C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080D3690 @ =gBattleAnimArgs - ldrh r0, [r2, 0xE] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r2, 0xE] - ldr r1, _080D3694 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - cmp r1, 0 - bne _080D368A - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080D368A: - pop {r0} - bx r0 - .align 2, 0 -_080D3690: .4byte gBattleAnimArgs -_080D3694: .4byte gTasks - thumb_func_end sub_80D365C - - thumb_func_start sub_80D3698 -sub_80D3698: @ 80D3698 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r7, _080D36E4 @ =gBattleAnimBankAttacker - ldrb r0, [r7] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r7] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r6, _080D36E8 @ =0x0000fff6 - strh r6, [r4, 0x26] - ldrb r0, [r7] - bl sub_8079E90 - lsls r0, 24 - lsrs r5, r0, 24 - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D36F2 - ldrb r0, [r7] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D36EC - movs r0, 0xA - strh r0, [r4, 0x24] - b _080D36F4 - .align 2, 0 -_080D36E4: .4byte gBattleAnimBankAttacker -_080D36E8: .4byte 0x0000fff6 -_080D36EC: - strh r6, [r4, 0x24] - subs r0, r5, 0x2 - b _080D36F6 -_080D36F2: - strh r6, [r4, 0x24] -_080D36F4: - adds r0, r5, 0x2 -_080D36F6: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r0, _080D3708 @ =sub_80D370C - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3708: .4byte sub_80D370C - thumb_func_end sub_80D3698 - - thumb_func_start sub_80D370C -sub_80D370C: @ 80D370C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080D3722 - adds r0, r2, 0 - bl move_anim_8072740 -_080D3722: - pop {r0} - bx r0 - thumb_func_end sub_80D370C - - thumb_func_start sub_80D3728 -sub_80D3728: @ 80D3728 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r5, _080D37E8 @ =gBattleAnimBankAttacker - ldrb r0, [r5] - bl GetBankSide - adds r4, r0, 0 - ldr r0, _080D37EC @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080D3772 - ldr r4, _080D37F0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4] - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - beq _080D376A - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D3772 -_080D376A: - movs r1, 0 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4] -_080D3772: - ldr r5, _080D37F0 @ =gBattleAnimArgs - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0 - cmp r0, 0 - bne _080D3786 - movs r1, 0x1 -_080D3786: - ldrb r0, [r5, 0xA] - movs r7, 0x1 - cmp r0, 0 - bne _080D3790 - movs r7, 0x3 -_080D3790: - adds r0, r6, 0 - bl sub_80787B0 - ldr r0, _080D37E8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D37AA - ldrh r0, [r5, 0x4] - negs r0, r0 - strh r0, [r5, 0x4] -_080D37AA: - ldrh r0, [r5, 0x8] - strh r0, [r6, 0x2E] - ldr r4, _080D37EC @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r4] - adds r1, r7, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - strh r0, [r6, 0x36] - ldr r0, _080D37F4 @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080D37F8 @ =move_anim_8072740 - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D37E8: .4byte gBattleAnimBankAttacker -_080D37EC: .4byte gBattleAnimBankTarget -_080D37F0: .4byte gBattleAnimArgs -_080D37F4: .4byte sub_8078B34 -_080D37F8: .4byte move_anim_8072740 - thumb_func_end sub_80D3728 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/noise.s b/asm/noise.s deleted file mode 100755 index 930b77309..000000000 --- a/asm/noise.s +++ /dev/null @@ -1,139 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2D68 -sub_80D2D68: @ 80D2D68 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080D2D7C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D2D84 - ldr r0, _080D2D80 @ =gBattleAnimBankAttacker - b _080D2D86 - .align 2, 0 -_080D2D7C: .4byte gBattleAnimArgs -_080D2D80: .4byte gBattleAnimBankAttacker -_080D2D84: - ldr r0, _080D2E1C @ =gBattleAnimBankTarget -_080D2D86: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D2DA0 - ldr r1, _080D2E20 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080D2DA0: - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - ldr r7, _080D2E20 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r7, 0x2] - adds r0, r3 - movs r4, 0 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r7, 0x4] - adds r0, r1 - strh r0, [r5, 0x22] - strh r4, [r5, 0x2E] - ldrh r1, [r5, 0x20] - lsls r1, 3 - strh r1, [r5, 0x30] - lsls r0, 3 - strh r0, [r5, 0x32] - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 3 - cmp r0, 0 - bge _080D2DE0 - adds r0, 0x7 -_080D2DE0: - asrs r0, 3 - strh r0, [r5, 0x34] - movs r3, 0x4 - ldrsh r0, [r7, r3] - lsls r0, 3 - cmp r0, 0 - bge _080D2DF0 - adds r0, 0x7 -_080D2DF0: - asrs r0, 3 - strh r0, [r5, 0x36] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x6 - ldrsh r0, [r7, r3] - lsls r0, 4 - adds r1, r0 - ldr r3, _080D2E24 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080D2E28 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, _080D2E2C @ =sub_80D2E30 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D2E1C: .4byte gBattleAnimBankTarget -_080D2E20: .4byte gBattleAnimArgs -_080D2E24: .4byte 0x000003ff -_080D2E28: .4byte 0xfffffc00 -_080D2E2C: .4byte sub_80D2E30 - thumb_func_end sub_80D2D68 - - thumb_func_start sub_80D2E30 -sub_80D2E30: @ 80D2E30 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r3, [r2, 0x32] - adds r1, r3 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 19 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D2E64 - adds r0, r2, 0 - bl move_anim_8072740 -_080D2E64: - pop {r0} - bx r0 - thumb_func_end sub_80D2E30 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/note_spin.s b/asm/note_spin.s deleted file mode 100755 index d0df90fd1..000000000 --- a/asm/note_spin.s +++ /dev/null @@ -1,234 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2E68 -sub_80D2E68: @ 80D2E68 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2E8A - ldr r0, _080D2EC4 @ =gBattleAnimArgs - ldrh r1, [r0] - movs r0, 0x78 - subs r0, r1 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080D2E8A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080D2EA8 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl sub_8079108 -_080D2EA8: - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, 0x50 - cmp r1, r0 - bne _080D2EBC - adds r0, r4, 0 - bl move_anim_8072740 -_080D2EBC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2EC4: .4byte gBattleAnimArgs - thumb_func_end sub_80D2E68 - - thumb_func_start sub_80D2EC8 -sub_80D2EC8: @ 80D2EC8 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080D2EF6 - movs r5, 0x78 - strh r5, [r6, 0x20] - ldr r4, _080D2F78 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r4, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0xF - strh r0, [r6, 0x22] - ldrb r1, [r4, 0x2] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x38] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x34] -_080D2EF6: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r6, 0x2E] - movs r1, 0x2E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r6, 0x30] - movs r2, 0x2E - ldrsh r0, [r6, r2] - lsls r4, r0, 1 - adds r4, r0 - ldrh r0, [r6, 0x34] - adds r4, r0 - movs r2, 0xFF - ldrh r0, [r6, 0x3A] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0x3A] - ands r4, r2 - adds r0, r4, 0 - movs r1, 0x64 - bl Cos - strh r0, [r6, 0x24] - adds r0, r4, 0 - movs r1, 0xA - bl Sin - adds r4, r0, 0 - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r1, 0x4 - bl Cos - ldrh r2, [r6, 0x30] - adds r4, r2 - adds r0, r4 - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x38 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080D2F72 - ldr r0, _080D2F7C @ =sub_80D2F80 - str r0, [r6, 0x1C] - strh r5, [r6, 0x2E] - adds r0, r6, 0 - bl oamt_add_pos2_onto_pos1 - movs r0, 0x5 - strh r0, [r6, 0x32] - strh r5, [r6, 0x36] - strh r5, [r6, 0x34] - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080D2F72: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D2F78: .4byte gBattleAnimArgs -_080D2F7C: .4byte sub_80D2F80 - thumb_func_end sub_80D2EC8 - - thumb_func_start sub_80D2F80 -sub_80D2F80: @ 80D2F80 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080D2F9A - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080D2FA0 @ =sub_80D2FA4 - str r0, [r1, 0x1C] -_080D2F9A: - pop {r0} - bx r0 - .align 2, 0 -_080D2FA0: .4byte sub_80D2FA4 - thumb_func_end sub_80D2F80 - - thumb_func_start sub_80D2FA4 -sub_80D2FA4: @ 80D2FA4 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - strh r0, [r4, 0x26] - adds r1, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - ble _080D2FCE - lsls r0, r1, 16 - cmp r0, 0 - ble _080D2FCE - ldrh r0, [r4, 0x36] - subs r1, r0, 0x5 - strh r1, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x36] -_080D2FCE: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _080D3000 - movs r2, 0x32 - ldrsh r1, [r4, r2] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl move_anim_8072740 -_080D3000: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _080D300E - adds r0, r4, 0 - bl move_anim_8072740 -_080D300E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D2FA4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rain.s b/asm/rain.s deleted file mode 100755 index f8f68dd28..000000000 --- a/asm/rain.s +++ /dev/null @@ -1,123 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ rain - - thumb_func_start sub_80D30F0 -sub_80D30F0: @ 80D30F0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080D3178 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D3118 - ldr r1, _080D317C @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r5, 0xA] - ldrh r0, [r1, 0x2] - strh r0, [r5, 0xC] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0xE] -_080D3118: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r2, 0x8 - ldrsh r0, [r5, r2] - movs r2, 0xC - ldrsh r1, [r5, r2] - bl __modsi3 - cmp r0, 0x1 - bne _080D3160 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF0 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x50 - bl __umodsi3 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _080D3180 @ =gSpriteTemplate_83D9130 - adds r1, r4, 0 - movs r3, 0x4 - bl CreateSprite -_080D3160: - movs r0, 0x8 - ldrsh r1, [r5, r0] - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _080D3172 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D3172: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D3178: .4byte gTasks -_080D317C: .4byte gBattleAnimArgs -_080D3180: .4byte gSpriteTemplate_83D9130 - thumb_func_end sub_80D30F0 - - thumb_func_start sub_80D3184 -sub_80D3184: @ 80D3184 - ldr r1, _080D318C @ =sub_80D3190 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080D318C: .4byte sub_80D3190 - thumb_func_end sub_80D3184 - - thumb_func_start sub_80D3190 -sub_80D3190: @ 80D3190 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bgt _080D31AE - ldrh r0, [r2, 0x24] - adds r0, 0x1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x26] - adds r0, 0x4 - strh r0, [r2, 0x26] -_080D31AE: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D31C2 - adds r0, r2, 0 - bl DestroySprite -_080D31C2: - pop {r0} - bx r0 - thumb_func_end sub_80D3190 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/shock.s b/asm/shock.s deleted file mode 100755 index 743aefe8a..000000000 --- a/asm/shock.s +++ /dev/null @@ -1,259 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ shock - - thumb_func_start sub_80D6294 -sub_80D6294: @ 80D6294 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D62D8 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, _080D62DC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D62E4 - ldr r2, _080D62E0 @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - ldrh r1, [r2, 0x2] - subs r0, r1 - strh r0, [r5, 0x22] - b _080D62F8 - .align 2, 0 -_080D62D8: .4byte gBattleAnimBankTarget -_080D62DC: .4byte gBattleAnimBankAttacker -_080D62E0: .4byte gBattleAnimArgs -_080D62E4: - ldr r0, _080D631C @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - ldrh r1, [r0, 0x2] - ldrh r2, [r5, 0x22] - adds r1, r2 - strh r1, [r5, 0x22] - adds r2, r0, 0 -_080D62F8: - movs r0, 0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x30] - ldrh r0, [r2, 0x6] - strh r0, [r5, 0x32] - ldrh r0, [r2, 0x8] - strh r0, [r5, 0x34] - ldr r1, _080D6320 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080D6324 @ =sub_8078114 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D631C: .4byte gBattleAnimArgs -_080D6320: .4byte move_anim_8074EE0 -_080D6324: .4byte sub_8078114 - thumb_func_end sub_80D6294 - - thumb_func_start sub_80D6328 -sub_80D6328: @ 80D6328 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080D6340 @ =gBattleAnimArgs - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080D63A0 - cmp r0, 0x1 - bgt _080D6344 - cmp r0, 0 - beq _080D634E - b _080D63A0 - .align 2, 0 -_080D6340: .4byte gBattleAnimArgs -_080D6344: - cmp r0, 0x2 - beq _080D6358 - cmp r0, 0x3 - beq _080D637C - b _080D63A0 -_080D634E: - ldr r0, _080D6354 @ =gBattleAnimBankAttacker - b _080D63A2 - .align 2, 0 -_080D6354: .4byte gBattleAnimBankAttacker -_080D6358: - ldr r4, _080D6370 @ =gBattleAnimBankAttacker - ldrb r0, [r4] - movs r6, 0x2 - eors r0, r6 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080D6374 - ldrb r4, [r4] - b _080D63A4 - .align 2, 0 -_080D6370: .4byte gBattleAnimBankAttacker -_080D6374: - ldrb r0, [r4] - adds r4, r6, 0 - eors r4, r0 - b _080D63A4 -_080D637C: - ldr r0, _080D6398 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - movs r4, 0x2 - eors r0, r4 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080D63A0 - ldr r0, _080D639C @ =gBattleAnimBankTarget - ldrb r0, [r0] - eors r4, r0 - b _080D63A4 - .align 2, 0 -_080D6398: .4byte gBattleAnimBankAttacker -_080D639C: .4byte gBattleAnimBankTarget -_080D63A0: - ldr r0, _080D63C4 @ =gBattleAnimBankTarget -_080D63A2: - ldrb r4, [r0] -_080D63A4: - ldr r0, _080D63C8 @ =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080D63CC - adds r0, r4, 0 - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r4, 0 - movs r1, 0x1 - b _080D63DE - .align 2, 0 -_080D63C4: .4byte gBattleAnimBankTarget -_080D63C8: .4byte gBattleAnimArgs -_080D63CC: - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r4, 0 - movs r1, 0x3 -_080D63DE: - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r7, _080D647C @ =gSineTable - ldr r6, _080D6480 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - lsls r0, 1 - adds r0, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x2 - ldrsh r0, [r6, r2] - muls r0, r1 - asrs r0, 8 - strh r0, [r5, 0x24] - movs r1, 0 - ldrsh r0, [r6, r1] - adds r0, 0x40 - lsls r0, 1 - adds r0, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x2 - ldrsh r0, [r6, r2] - muls r0, r1 - asrs r0, 8 - strh r0, [r5, 0x26] - ldrh r1, [r6, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D6442 - adds r0, r4, 0 - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] -_080D6442: - ldrb r2, [r5, 0x3] - lsls r2, 26 - lsrs r2, 27 - movs r0, 0x4 - ldrsh r1, [r6, r0] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - ldr r3, _080D6484 @ =gOamMatrices - lsls r2, 3 - adds r2, r3 - adds r1, 0x40 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - strh r1, [r2, 0x6] - strh r1, [r2] - strh r0, [r2, 0x2] - lsls r0, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r2, 0x4] - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x2E] - ldr r0, _080D6488 @ =sub_80DA48C - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D647C: .4byte gSineTable -_080D6480: .4byte gBattleAnimArgs -_080D6484: .4byte gOamMatrices -_080D6488: .4byte sub_80DA48C - thumb_func_end sub_80D6328 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/sunlight.s b/asm/sunlight.s deleted file mode 100755 index 07895e1b9..000000000 --- a/asm/sunlight.s +++ /dev/null @@ -1,33 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ sunlight - - thumb_func_start sub_80D517C -sub_80D517C: @ 80D517C - push {lr} - movs r1, 0 - strh r1, [r0, 0x20] - strh r1, [r0, 0x22] - movs r1, 0x3C - strh r1, [r0, 0x2E] - movs r1, 0x8C - strh r1, [r0, 0x32] - movs r1, 0x50 - strh r1, [r0, 0x36] - ldr r1, _080D51A0 @ =sub_8078B34 - str r1, [r0, 0x1C] - ldr r1, _080D51A4 @ =move_anim_8072740 - bl StoreSpriteCallbackInData - pop {r0} - bx r0 - .align 2, 0 -_080D51A0: .4byte sub_8078B34 -_080D51A4: .4byte move_anim_8072740 - thumb_func_end sub_80D517C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/thunder.s b/asm/thunder.s deleted file mode 100755 index df97608f9..000000000 --- a/asm/thunder.s +++ /dev/null @@ -1,68 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ thunder - - thumb_func_start sub_80D61C8 -sub_80D61C8: @ 80D61C8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D61E8 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D61F0 - ldr r0, _080D61EC @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _080D61FC - .align 2, 0 -_080D61E8: .4byte gBattleAnimBankAttacker -_080D61EC: .4byte gBattleAnimArgs -_080D61F0: - ldr r1, _080D6210 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_080D61FC: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080D6214 @ =sub_80D6218 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6210: .4byte gBattleAnimArgs -_080D6214: .4byte sub_80D6218 - thumb_func_end sub_80D61C8 - - thumb_func_start sub_80D6218 -sub_80D6218: @ 80D6218 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D622E - adds r0, r2, 0 - bl move_anim_8072740 -_080D622E: - pop {r0} - bx r0 - thumb_func_end sub_80D6218 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/water.s b/asm/water.s index e982d4265..4bf95ab59 100755 --- a/asm/water.s +++ b/asm/water.s @@ -7,420 +7,6 @@ @ water - thumb_func_start sub_80D37FC -sub_80D37FC: @ 80D37FC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_8078764 - ldr r0, _080D382C @ =gBattleAnimArgs - ldrh r1, [r0, 0x8] - strh r1, [r4, 0x2E] - ldrh r0, [r0, 0x4] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - adds r1, r0 - strh r1, [r4, 0x36] - ldr r0, _080D3830 @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080D3834 @ =move_anim_8072740 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D382C: .4byte gBattleAnimArgs -_080D3830: .4byte sub_8078B34 -_080D3834: .4byte move_anim_8072740 - thumb_func_end sub_80D37FC - - thumb_func_start sub_80D3838 -sub_80D3838: @ 80D3838 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D3850 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080D3854 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - b _080D385C - .align 2, 0 -_080D3850: .4byte gBattleAnimArgs -_080D3854: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80787B0 -_080D385C: - ldr r0, _080D386C @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, _080D3870 @ =sub_80D3874 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D386C: .4byte gBattleAnimArgs -_080D3870: .4byte sub_80D3874 - thumb_func_end sub_80D3838 - - thumb_func_start sub_80D3874 -sub_80D3874: @ 80D3874 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x30 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080D38B4 - adds r0, r4, 0 - bl move_anim_8072740 -_080D38B4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D3874 - - thumb_func_start sub_80D38BC -sub_80D38BC: @ 80D38BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r1, _080D398C @ =REG_BLDCNT - ldr r2, _080D3990 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r2, _080D3994 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2, 0x1] - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - add r6, sp, 0x10 - add r0, sp, 0xC - mov r12, r0 - movs r5, 0 - ldr r1, _080D3998 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r6 - ldr r7, _080D399C @ =0x85000400 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D3920: - str r5, [sp, 0x10] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080D3920 - str r5, [sp, 0x10] - str r6, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0 - mov r3, r12 - strb r0, [r3] - strb r0, [r3] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x10] - ldr r0, _080D3998 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _080D399C @ =0x85000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl NotInBattle - lsls r0, 24 - cmp r0, 0 - bne _080D39B8 - ldr r2, _080D3994 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080D39A0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D39A8 - ldr r0, _080D39A4 @ =gUnknown_08E70968 - b _080D39AA - .align 2, 0 -_080D398C: .4byte REG_BLDCNT -_080D3990: .4byte 0x00003f42 -_080D3994: .4byte REG_BG1CNT -_080D3998: .4byte 0x040000d4 -_080D399C: .4byte 0x85000400 -_080D39A0: .4byte gBattleAnimBankAttacker -_080D39A4: .4byte gUnknown_08E70968 -_080D39A8: - ldr r0, _080D39B4 @ =gUnknown_08E70C38 -_080D39AA: - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080D39CE - .align 2, 0 -_080D39B4: .4byte gUnknown_08E70C38 -_080D39B8: - ldr r0, _080D39F0 @ =gUnknown_08E70F0C - ldr r1, [sp, 0x4] - bl LZDecompressVram - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0x1 - bl sub_80763FC -_080D39CE: - ldr r0, _080D39F4 @ =gBattleAnimBackgroundImage_Surf - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080D39F8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D3A00 - ldr r0, _080D39FC @ =gBattleAnimBackgroundPalette_Surf - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - b _080D3A0E - .align 2, 0 -_080D39F0: .4byte gUnknown_08E70F0C -_080D39F4: .4byte gBattleAnimBackgroundImage_Surf -_080D39F8: .4byte gBattleAnimArgs -_080D39FC: .4byte gBattleAnimBackgroundPalette_Surf -_080D3A00: - ldr r0, _080D3A78 @ =gBattleAnimBackgroundImageMuddyWater_Pal - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette -_080D3A0E: - ldr r0, _080D3A7C @ =sub_80D3D68 - ldr r4, _080D3A80 @ =gTasks - mov r2, r10 - lsls r5, r2, 2 - adds r1, r5, r2 - lsls r1, 3 - adds r6, r1, r4 - ldrb r1, [r6, 0x7] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r3, 0 - mov r9, r3 - mov r0, r8 - strh r0, [r6, 0x26] - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - adds r7, r0, r4 - mov r2, r9 - strh r2, [r7, 0x8] - movs r0, 0x80 - lsls r0, 5 - strh r0, [r7, 0xA] - strh r0, [r7, 0xC] - bl NotInBattle - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080D3A94 - ldr r3, _080D3A84 @ =0x0000ffb0 - adds r0, r3, 0 - ldr r1, _080D3A88 @ =gUnknown_030042C0 - strh r0, [r1] - ldr r2, _080D3A8C @ =0x0000ffd0 - adds r0, r2, 0 - ldr r3, _080D3A90 @ =gUnknown_030041B4 - strh r0, [r3] - movs r0, 0x2 - strh r0, [r6, 0x8] - movs r0, 0x1 - strh r0, [r6, 0xA] - mov r0, r9 - strh r0, [r7, 0xE] - b _080D3AEE - .align 2, 0 -_080D3A78: .4byte gBattleAnimBackgroundImageMuddyWater_Pal -_080D3A7C: .4byte sub_80D3D68 -_080D3A80: .4byte gTasks -_080D3A84: .4byte 0x0000ffb0 -_080D3A88: .4byte gUnknown_030042C0 -_080D3A8C: .4byte 0x0000ffd0 -_080D3A90: .4byte gUnknown_030041B4 -_080D3A94: - ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - bne _080D3AD8 - ldr r2, _080D3AC8 @ =0x0000ff20 - adds r0, r2, 0 - ldr r3, _080D3ACC @ =gUnknown_030042C0 - strh r0, [r3] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ldr r3, _080D3AD0 @ =gUnknown_030041B4 - strh r0, [r3] - movs r0, 0x2 - strh r0, [r6, 0x8] - ldr r0, _080D3AD4 @ =0x0000ffff - strh r0, [r6, 0xA] - strh r1, [r7, 0xE] - b _080D3AEE - .align 2, 0 -_080D3AC4: .4byte gBattleAnimBankAttacker -_080D3AC8: .4byte 0x0000ff20 -_080D3ACC: .4byte gUnknown_030042C0 -_080D3AD0: .4byte gUnknown_030041B4 -_080D3AD4: .4byte 0x0000ffff -_080D3AD8: - ldr r0, _080D3B1C @ =gUnknown_030042C0 - strh r4, [r0] - ldr r1, _080D3B20 @ =0x0000ffd0 - adds r0, r1, 0 - ldr r2, _080D3B24 @ =gUnknown_030041B4 - strh r0, [r2] - ldr r0, _080D3B28 @ =0x0000fffe - strh r0, [r6, 0x8] - movs r0, 0x1 - strh r0, [r6, 0xA] - strh r4, [r7, 0xE] -_080D3AEE: - ldr r1, _080D3B2C @ =REG_BG1HOFS - ldr r3, _080D3B1C @ =gUnknown_030042C0 - ldrh r0, [r3] - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080D3B24 @ =gUnknown_030041B4 - ldrh r0, [r2] - strh r0, [r1] - ldr r1, _080D3B30 @ =gTasks - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0xE - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080D3B34 - movs r0, 0x30 - strh r0, [r2, 0x10] - movs r0, 0x70 - b _080D3B38 - .align 2, 0 -_080D3B1C: .4byte gUnknown_030042C0 -_080D3B20: .4byte 0x0000ffd0 -_080D3B24: .4byte gUnknown_030041B4 -_080D3B28: .4byte 0x0000fffe -_080D3B2C: .4byte REG_BG1HOFS -_080D3B30: .4byte gTasks -_080D3B34: - movs r0, 0 - strh r0, [r2, 0x10] -_080D3B38: - strh r0, [r2, 0x12] - mov r2, r10 - adds r0, r5, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x14] - ldr r1, _080D3B5C @ =sub_80D3B60 - str r1, [r0] - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3B5C: .4byte sub_80D3B60 - thumb_func_end sub_80D38BC - thumb_func_start sub_80D3B60 sub_80D3B60: @ 80D3B60 push {r4-r7,lr} diff --git a/asm/wisp_orb.s b/asm/wisp_orb.s deleted file mode 100755 index cb5920ba4..000000000 --- a/asm/wisp_orb.s +++ /dev/null @@ -1,230 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ wisp_orb - - thumb_func_start sub_80D5B0C -sub_80D5B0C: @ 80D5B0C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080D5B80 - cmp r0, 0x1 - bgt _080D5B22 - cmp r0, 0 - beq _080D5B28 - b _080D5C4E -_080D5B22: - cmp r0, 0x2 - beq _080D5BDE - b _080D5C4E -_080D5B28: - adds r0, r5, 0 - movs r1, 0 - bl sub_80787B0 - ldr r4, _080D5B50 @ =gBattleAnimArgs - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x3C] - ldr r0, _080D5B54 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D5B58 - movs r0, 0x4 - b _080D5B5A - .align 2, 0 -_080D5B50: .4byte gBattleAnimArgs -_080D5B54: .4byte gBattleAnimBankAttacker -_080D5B58: - ldr r0, _080D5B78 @ =0x0000fffc -_080D5B5A: - strh r0, [r5, 0x36] - ldr r0, _080D5B7C @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - b _080D5BD6 - .align 2, 0 -_080D5B78: .4byte 0x0000fffc -_080D5B7C: .4byte gBattleAnimBankTarget -_080D5B80: - ldrh r0, [r5, 0x30] - adds r0, 0xC0 - strh r0, [r5, 0x30] - ldr r0, _080D5BA0 @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D5BA4 - ldrh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - b _080D5BAA - .align 2, 0 -_080D5BA0: .4byte gBattleAnimBankAttacker -_080D5BA4: - ldrh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 24 -_080D5BAA: - strh r0, [r5, 0x26] - movs r2, 0x32 - ldrsh r0, [r5, r2] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] - ldrh r0, [r5, 0x32] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D5C4E - movs r0, 0 - strh r0, [r5, 0x34] -_080D5BD6: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080D5C4E -_080D5BDE: - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - adds r2, r0, 0 - movs r3, 0 - strh r2, [r5, 0x24] - ldrh r0, [r5, 0x32] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080D5C4E - ldrh r0, [r5, 0x20] - adds r1, r2, r0 - strh r1, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r3, [r5, 0x26] - strh r3, [r5, 0x24] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - ldr r4, _080D5C54 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl sub_8078BD4 - ldr r0, _080D5C58 @ =sub_80D5C5C - str r0, [r5, 0x1C] -_080D5C4E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D5C54: .4byte gBattleAnimBankTarget -_080D5C58: .4byte sub_80D5C5C - thumb_func_end sub_80D5B0C - - thumb_func_start sub_80D5C5C -sub_80D5C5C: @ 80D5C5C - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080D5CB4 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x38] - adds r0, r2, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x38] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _080D5C92 - cmp r2, 0xC4 - ble _080D5CBA -_080D5C92: - lsls r0, 16 - cmp r0, 0 - ble _080D5CBA - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D5CBA - ldr r0, _080D5CB0 @ =gUnknown_0202F7D2 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x90 - bl PlaySE12WithPanning - b _080D5CBA - .align 2, 0 -_080D5CB0: .4byte gUnknown_0202F7D2 -_080D5CB4: - adds r0, r4, 0 - bl move_anim_8072740 -_080D5CBA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D5C5C - - .align 2, 0 @ Don't pad with nop. diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s index 24881ab7c..ba5d9f533 100644 --- a/data/battle_anim_80CA710.s +++ b/data/battle_anim_80CA710.s @@ -2091,7 +2091,7 @@ gSpriteAnimTable_83D912C:: @ 83D912C .align 2 gSpriteTemplate_83D9130:: @ 83D9130 - spr_template 10115, 10115, gOamData_837DF74, gSpriteAnimTable_83D912C, NULL, gDummySpriteAffineAnimTable, sub_80D3184 + spr_template 10115, 10115, gOamData_837DF74, gSpriteAnimTable_83D912C, NULL, gDummySpriteAffineAnimTable, SetAnimRaindropCallback .align 2 gSpriteAffineAnim_83D9148:: @ 83D9148 diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index de3d354ce..e0d11637d 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1416,11 +1416,11 @@ Move_FURY_CUTTER: @ 81C914A monbg 1 setalpha 12, 8 panse_19 SE_W013, 63 - createtask sub_80D30AC, 2 + createtask UpdateFuryCutterAnimDirection, 2 jumpvareq 7, 0, _81C91A7 jump _81C91B9 _81C916A: - createtask update_fury_cutter_counter_copy, 2 + createtask UpdateFuryCutterAnimCount, 2 jumpvareq 7, 1, _81C918E jumpvareq 7, 2, _81C91CB jumpvareq 7, 3, _81C91E5 @@ -5271,8 +5271,8 @@ Move_RAIN_DANCE: @ 81CE997 panse_19 SE_W240, 192 createtask sub_80E2A38, 10, 1921, 2, 0, 4, 0 wait - createtask sub_80D30F0, 2, 0, 3, 120 - createtask sub_80D30F0, 2, 0, 3, 120 + createtask CreateAnimRaindrops, 2, 0, 3, 120 + createtask CreateAnimRaindrops, 2, 0, 3, 120 pause 120 pause 30 wait @@ -10497,8 +10497,8 @@ General_Rain: @ 81D67BB panse_19 SE_W240, 192 createtask sub_80E2A38, 10, 1921, 2, 0, 4, 0 wait - createtask sub_80D30F0, 2, 0, 3, 60 - createtask sub_80D30F0, 2, 0, 3, 60 + createtask CreateAnimRaindrops, 2, 0, 3, 60 + createtask CreateAnimRaindrops, 2, 0, 3, 60 pause 50 wait createtask sub_80E2A38, 10, 1921, 2, 4, 0, 0 diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index 2a2947968..70bd6fe5a 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -12,6 +12,12 @@ enum ANIM_BANK_DEF_PARTNER }; +struct Struct_sub_8078914 { + u8 *field_0; + u8 *field_4; + u8 field_8; +}; + u8 sub_8077ABC(u8, u8); u8 sub_8077E44(u8 slot, u16 species, u8 a3); u8 GetAnimBankSpriteId(u8 side); @@ -99,5 +105,7 @@ u8 sub_8077FC0(u8 slot); void move_anim_8074EE0(struct Sprite *sprite); bool8 sub_8078718(struct Sprite *sprite); bool8 sub_8078CE8(struct Sprite *sprite); +void oamt_add_pos2_onto_pos1(struct Sprite *sprite); +void sub_8078BD4(struct Sprite *sprite); #endif // GUARD_ROM_8077ABC_H diff --git a/include/sprite.h b/include/sprite.h index a87260ec0..29a0be562 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -222,6 +222,14 @@ struct Sprite /*0x43*/ u8 subpriority; }; +struct OamMatrix +{ + s16 a; + s16 b; + s16 c; + s16 d; +}; + extern const struct OamData gDummyOamData; extern const union AnimCmd *const gDummySpriteAnimTable[]; extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; diff --git a/ld_script.txt b/ld_script.txt index 6353fceec..bc5df01bf 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -268,24 +268,25 @@ SECTIONS { src/battle/anim/swipe.o(.text); src/battle/anim/struggle.o(.text); src/battle/anim/uproar.o(.text); - asm/noise.o(.text); - asm/note_spin.o(.text); - asm/guard.o(.text); - asm/fury_cutter_count.o(.text); - asm/rain.o(.text); - asm/bubble.o(.text); + src/battle/anim/noise.o(.text); + src/battle/anim/note_spin.o(.text); + src/battle/anim/guard.o(.text); + src/battle/anim/fury_cutter_count.o(.text); + src/battle/anim/rain.o(.text); + src/battle/anim/bubble.o(.text); src/battle/anim/aurora.o(.text); - asm/liquid_ball.o(.text); + src/battle/anim/energy_wave.o(.text); + src/battle/anim/water.o(.text); asm/water.o(.text); asm/fire.o(.text); - asm/sunlight.o(.text); + src/battle/anim/sunlight.o(.text); asm/fire_2.o(.text); - asm/heated_rock.o(.text); - asm/wisp_orb.o(.text); + src/battle/anim/heated_rock.o(.text); + src/battle/anim/wisp_orb.o(.text); asm/wisp_fire.o(.text); - asm/thunder.o(.text); - asm/beta_beat_up.o(.text); - asm/shock.o(.text); + src/battle/anim/thunder.o(.text); + src/battle/anim/beta_beat_up.o(.text); + src/battle/anim/shock.o(.text); asm/current.o(.text); asm/ice.o(.text); asm/fight.o(.text); diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c new file mode 100644 index 000000000..499e52a80 --- /dev/null +++ b/src/battle/anim/beta_beat_up.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D6278(struct Sprite *); + +// beta_beat_up + +void sub_80D6234(struct Sprite *sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + + sprite->callback = sub_80D6278; +} + +static void sub_80D6278(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + move_anim_8074EE0(sprite); + } +} diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c new file mode 100644 index 000000000..5da0d9929 --- /dev/null +++ b/src/battle/anim/bubble.c @@ -0,0 +1,102 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "util.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D32E8(struct Sprite *sprite); +static void sub_80D3370(struct Sprite *sprite); +static void sub_80D3398(struct Sprite *sprite); + +// bubble (indidivual bubble that floats around) +// Used in Bubble and Bubblebeam + +void sub_80D31C8(struct Sprite* sprite) +{ + u8 newSpriteId; + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) - gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[1]; + } + + sprite->animPaused = 1; + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + + sprite->data[0] = gBattleAnimArgs[6]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + + obj_translate_based_on_private_1_2_3_4(sprite); + + newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + sprite->data[5] = newSpriteId; + + sprite->pos1.x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]); + sprite->pos1.y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]); + + gSprites[newSpriteId].data[0] = gBattleAnimArgs[2]; + gSprites[newSpriteId].data[1] = gBattleAnimArgs[3]; + gSprites[newSpriteId].data[2] = gBattleAnimArgs[5]; + gSprites[newSpriteId].data[3] = (u8)gBattleAnimArgs[4] * 256; + gSprites[newSpriteId].data[4] = gBattleAnimArgs[6]; + + sprite->callback = sub_80D32E8; + sprite->callback(sprite); +} + +static void sub_80D32E8(struct Sprite *sprite) +{ + u8 spriteId = sprite->data[5]; + + u8 counter = gSprites[spriteId].data[4]; + u16 index = gSprites[spriteId].data[3]; + + sprite->data[0] = 1; + sub_8078B5C(sprite); + + sprite->pos2.x += Sin(index / 256, gSprites[spriteId].data[0]); + sprite->pos2.y += Cos(index / 256, gSprites[spriteId].data[1]); + + gSprites[spriteId].data[3] = gSprites[spriteId].data[2] + index; + + if (--counter != 0) + { + gSprites[spriteId].data[4] = counter; + } + else + { + sprite->callback = sub_80D3370; + DestroySprite(&gSprites[spriteId]); + } +} + +static void sub_80D3370(struct Sprite *sprite) +{ + sprite->animPaused = 0; + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, sub_80D3398); +} + +static void sub_80D3398(struct Sprite *sprite) +{ + sprite->data[0] = 10; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c new file mode 100644 index 000000000..ffba5c300 --- /dev/null +++ b/src/battle/anim/energy_wave.c @@ -0,0 +1,162 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern const struct SpriteTemplate gSpriteTemplate_83D9130[]; + +static void sub_80D35DC(struct Sprite *); +static void sub_80D365C(u8); +static void sub_80D370C(struct Sprite *); + +// energy_wave (animates steady "waves" of energy) +// Used in Hydro Pump, Mud Shot, Signal Beam, Flamethrower, Psywave, and +// Hydro Cannon. + +void sub_80D3554(struct Sprite *sprite) +{ + sub_80787B0(sprite, 1); + + sprite->data[0] = 30; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + + obj_translate_based_on_private_1_2_3_4(sprite); + + sprite->data[5] = 0xD200 / sprite->data[0]; + sprite->data[7] = gBattleAnimArgs[3]; + + if (gBattleAnimArgs[7] > 127) + { + sprite->data[6] = (gBattleAnimArgs[7] - 127) << 8; + sprite->data[7] = -sprite->data[7]; + } + else + { + sprite->data[6] = gBattleAnimArgs[7] << 8; + } + + sprite->callback = sub_80D35DC; + sprite->callback(sprite); +} + +static void sub_80D35DC(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) + { + move_anim_8072740(sprite); + } + + sprite->pos2.y += Sin(sprite->data[6] >> 8, sprite->data[7]); + if (((sprite->data[6] + sprite->data[5]) >> 8) > 127) + { + sprite->data[6] = 0; + sprite->data[7] = -sprite->data[7]; + } + else + { + sprite->data[6] += sprite->data[5]; + } +} + +void sub_80D3630(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gBattleAnimArgs[7] = 0; + gTasks[taskId].func = sub_80D365C; +} + +static void sub_80D365C(u8 taskId) +{ + gBattleAnimArgs[7] = (gBattleAnimArgs[7] + 3) & 0xFF; + if (--gTasks[taskId].data[0] == 0) + { + DestroyAnimVisualTask(taskId); + } +} + +void sub_80D3698(struct Sprite *sprite) +{ + u8 subpriority; + + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1); + sprite->pos2.y = -10; + + subpriority = sub_8079E90(gBattleAnimBankAttacker); + + if (!NotInBattle()) + { + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos2.x = 10; + sprite->subpriority = subpriority + 2; + } + else + { + sprite->pos2.x = -10; + sprite->subpriority = subpriority - 2; + } + } + else + { + sprite->pos2.x = -10; + sprite->subpriority = subpriority + 2; + } + + sprite->callback = sub_80D370C; +} + +static void sub_80D370C(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + move_anim_8072740(sprite); + } +} + +void sub_80D3728(struct Sprite *sprite) +{ + int var1, var2; + + if (GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) + { + gBattleAnimArgs[0] *= -1; + + if (GetBankIdentity(gBattleAnimBankAttacker) == 0 || GetBankIdentity(gBattleAnimBankAttacker) == 1) + { + gBattleAnimArgs[0] *= -1; + } + + } + + if ((gBattleAnimArgs[5] & 0xFF00) == 0) + var1 = 1; + else + var1 = 0; + + if ((u8)gBattleAnimArgs[5] == 0) + var2 = 3; + else + var2 = 1; + + sub_80787B0(sprite, var1); + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, var2) + gBattleAnimArgs[3]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} diff --git a/src/battle/anim/fury_cutter_count.c b/src/battle/anim/fury_cutter_count.c new file mode 100644 index 000000000..17b084585 --- /dev/null +++ b/src/battle/anim/fury_cutter_count.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 *gDisableStructMoveAnim; // TODO: this is declared with a different type in different files + +// fury_cutter (updates the direction and count of the fury cutter animation) +// Used in Fury Cutter. + +void UpdateFuryCutterAnimDirection(u8 taskId) +{ + gBattleAnimArgs[7] = gDisableStructMoveAnim[16] & 1; + DestroyAnimVisualTask(taskId); +} + +void UpdateFuryCutterAnimCount(u8 taskId) +{ + gBattleAnimArgs[7] = gDisableStructMoveAnim[16]; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c new file mode 100644 index 000000000..4769db2e4 --- /dev/null +++ b/src/battle/anim/guard.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; + +// guard (moves guard rings upwards) +// Used in Safeguard. + +void sub_80D3014(struct Sprite *sprite) +{ + if ((gBattleTypeFlags & 1) && IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) + { + sub_807A3FC(gBattleAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); + sprite->pos1.y += 40; + + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + 40; + } + + sprite->data[0] = 13; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 72; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c new file mode 100644 index 000000000..1d59669cf --- /dev/null +++ b/src/battle/anim/heated_rock.c @@ -0,0 +1,205 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; + +void sub_80D59B0(struct Sprite *); +static void sub_80D5A74(struct Sprite *); + +// heated_rock (moves heated rock sprites) +// Used in Eruption. + +void sub_80D58FC(struct Sprite *sprite) +{ + sub_80D59B0(sprite); + + if (sprite->invisible) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } +} + +u16 sub_80D5940(u8 spriteId) +{ + u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY; + + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + var1 = ((var1 << 16) + 0x4A0000) >> 16; + } + else + { + var1 = ((var1 << 16) + 0x2C0000) >> 16; + } + + return var1; +} + +void sub_80D5994(struct Sprite *sprite, s16 x, s16 y) +{ + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = (u16)sprite->pos1.x * 8; + sprite->data[3] = (u16)sprite->pos1.y * 8; + sprite->data[4] = x * 8; + sprite->data[5] = y * 8; +} + +#ifdef NONMATCHING +void sub_80D59B0(struct Sprite *sprite) +{ + int var1; + int var2; + + if (++sprite->data[0] > 2) + { + sprite->data[0] = 0; + ++sprite->data[1]; + sprite->data[3] += ((u16)sprite->data[1] * (u16)sprite->data[1]); + } + + var1 = (u16)sprite->data[4] + (u16)sprite->data[2]; + sprite->data[2] = var1; + var1 = (s16)var1 >> 3; + sprite->pos1.x = var1; + + var2 = (u16)sprite->data[5] + (u16)sprite->data[3]; + sprite->data[3] = var2; + var2 = (s16)var2 >> 3; + sprite->pos1.y = var2; + + if ((u32)((var1 + 8) << 16) > 0x1000000 || var2 < -8 || var2 > 120) + { + sprite->invisible = 1; + } +} +#else +__attribute__((naked)) +void sub_80D59B0(struct Sprite *sprite) +{ + asm(".syntax unified\n\ + push {lr}\n\ + adds r2, r0, 0\n\ + ldrh r0, [r2, 0x2E]\n\ + adds r0, 0x1\n\ + strh r0, [r2, 0x2E]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x2\n\ + ble _080D59DA\n\ + movs r0, 0\n\ + strh r0, [r2, 0x2E]\n\ + ldrh r0, [r2, 0x30]\n\ + adds r0, 0x1\n\ + strh r0, [r2, 0x30]\n\ + ldrh r0, [r2, 0x30]\n\ + adds r1, r0, 0\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + ldrh r3, [r2, 0x34]\n\ + adds r0, r3\n\ + strh r0, [r2, 0x34]\n\ +_080D59DA:\n\ + ldrh r0, [r2, 0x36]\n\ + ldrh r1, [r2, 0x32]\n\ + adds r0, r1\n\ + strh r0, [r2, 0x32]\n\ + lsls r0, 16\n\ + asrs r0, 19\n\ + strh r0, [r2, 0x20]\n\ + ldrh r1, [r2, 0x38]\n\ + ldrh r3, [r2, 0x34]\n\ + adds r1, r3\n\ + strh r1, [r2, 0x34]\n\ + lsls r1, 16\n\ + asrs r3, r1, 19\n\ + strh r3, [r2, 0x22]\n\ + adds r0, 0x8\n\ + lsls r0, 16\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + cmp r0, r1\n\ + bhi _080D5A10\n\ + adds r1, r3, 0\n\ + movs r0, 0x8\n\ + negs r0, r0\n\ + cmp r1, r0\n\ + blt _080D5A10\n\ + cmp r1, 0x78\n\ + ble _080D5A1C\n\ +_080D5A10:\n\ + adds r0, r2, 0\n\ + adds r0, 0x3E\n\ + ldrb r1, [r0]\n\ + movs r2, 0x4\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_080D5A1C:\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_80D5A20(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; + + sprite->oam.tileNum += gBattleAnimArgs[4] * 16; + sprite->callback = sub_80D5A74; +} + +static void sub_80D5A74(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (sprite->data[6] != 0) + { + sprite->data[6]--; + return; + } + + sprite->data[0]++; + // fall through + case 1: + sprite->pos1.y += 8; + if (sprite->pos1.y >= sprite->data[7]) + { + sprite->pos1.y = sprite->data[7]; + sprite->data[0]++; + } + break; + case 2: + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + if ((++sprite->data[2] & 1) != 0) + { + sprite->pos2.y = -3; + } + else + { + sprite->pos2.y = 3; + } + } + + if (++sprite->data[3] > 16) + { + move_anim_8072740(sprite); + } + break; + } +} diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c index c5659463e..1e49b536c 100755 --- a/src/battle/anim/love_bg.c +++ b/src/battle/anim/love_bg.c @@ -6,13 +6,6 @@ #include "decompress.h" #include "palette.h" -struct Struct_sub_8078914 -{ - u8 *field_0; - u8 *field_4; - u8 field_8; -}; - extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimBankAttacker; extern u8 gBattleAnimBankTarget; diff --git a/src/battle/anim/noise.c b/src/battle/anim/noise.c new file mode 100644 index 000000000..78953d96a --- /dev/null +++ b/src/battle/anim/noise.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2E30(struct Sprite *); + +// noise (moving music note) +// Used in Uproar. + +void sub_80D2D68(struct Sprite* sprite) +{ + int var1; + u8 slot = gBattleAnimArgs[0] == 0 ? gBattleAnimBankAttacker : gBattleAnimBankTarget; + + if (GetBankSide(slot) == 1) + { + gBattleAnimArgs[1] *= -1; + } + + sprite->pos1.x = sub_8077ABC(slot, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(slot, 3) + gBattleAnimArgs[2]; + sprite->data[0] = 0; + sprite->data[1] = (u16)sprite->pos1.x << 3; + sprite->data[2] = (u16)sprite->pos1.y << 3; + + var1 = gBattleAnimArgs[1] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[3] = var1 >> 3; + + var1 = gBattleAnimArgs[2] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[4] = var1 >> 3; + + sprite->oam.tileNum += gBattleAnimArgs[3] * 16; + sprite->callback = sub_80D2E30; +} + +static void sub_80D2E30(struct Sprite *sprite) +{ + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + + sprite->pos1.x = sprite->data[1] >> 3; + sprite->pos1.y = sprite->data[2] >> 3; + + if (++sprite->data[0] > 16) + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/note_spin.c b/src/battle/anim/note_spin.c new file mode 100644 index 000000000..bdc0f4615 --- /dev/null +++ b/src/battle/anim/note_spin.c @@ -0,0 +1,110 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2F80(struct Sprite *); +static void sub_80D2FA4(struct Sprite *); + +// note_spin (spins music notes around, and rotates them) +// Used in Perish Song. + +void sub_80D2E68(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = 120 - gBattleAnimArgs[0]; + sprite->invisible = 1; + } + + if (++sprite->data[0] == sprite->data[1]) + { + sub_8079108(sprite->oam.paletteNum + 16, 0); + } + + if (sprite->data[0] == sprite->data[1] + 80) + { + move_anim_8072740(sprite); + } +} + +void sub_80D2EC8(struct Sprite *sprite) +{ + int index; + int var2; + + if (sprite->data[0] == 0) + { + sprite->pos1.x = 120; + sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15; + + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + + sprite->data[5] = 120; + sprite->data[3] = gBattleAnimArgs[2]; + } + + sprite->data[0]++; + + sprite->data[1] = (sprite->data[0] + ((u16)sprite->data[0] >> 31)) / 2; + index = ((sprite->data[0] * 3) + (u16)sprite->data[3]); + var2 = 0xFF; + sprite->data[6] = (sprite->data[6] + 10) & 0xFF; + + index &= var2; + sprite->pos2.x = Cos(index, 100); + + sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4); + + if (sprite->data[0] > sprite->data[5]) + { + sprite->callback = sub_80D2F80; + + sprite->data[0] = 0; + oamt_add_pos2_onto_pos1(sprite); + sprite->data[2] = 5; + sprite->data[4] = 0; + sprite->data[3] = 0; + + StartSpriteAffineAnim(sprite, 1); + } +} + +static void sub_80D2F80(struct Sprite *sprite) +{ + if (++sprite->data[0] > 10) + { + sprite->data[0] = 0; + sprite->callback = sub_80D2FA4; + } +} + +static void sub_80D2FA4(struct Sprite *sprite) +{ + sprite->data[3] += sprite->data[2]; + sprite->pos2.y = sprite->data[3]; + + sprite->data[2]++; + + if (sprite->data[3] > 48 && sprite->data[2] > 0) + { + sprite->data[2] = sprite->data[4] - 5; + sprite->data[4]++; + } + + if (sprite->data[4] > 3) + { + int var1 = sprite->data[2]; + sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1); + move_anim_8072740(sprite); + } + + if (sprite->data[4] == 4) + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/rain.c b/src/battle/anim/rain.c new file mode 100644 index 000000000..b38233e3c --- /dev/null +++ b/src/battle/anim/rain.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "battle_anim.h" +#include "random.h" +#include "sprite.h" +#include "task.h" + +extern s16 gBattleAnimArgs[8]; +extern const struct SpriteTemplate gSpriteTemplate_83D9130[]; + +static void MoveAnimRaindrop(struct Sprite *); + +// rain (spawns and animates raindrops) +// Used in Rain Dance and general rain animation. + +void CreateAnimRaindrops(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + } + + gTasks[taskId].data[0]++; + + if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) + { + u8 x = Random() % 240; + u8 y = Random() % 80; + CreateSprite(gSpriteTemplate_83D9130, x, y, 4); + } + + if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) + { + DestroyAnimVisualTask(taskId); + } +} + +void SetAnimRaindropCallback(struct Sprite *sprite) +{ + sprite->callback = MoveAnimRaindrop; +} + +static void MoveAnimRaindrop(struct Sprite *sprite) +{ + if (++sprite->data[0] <= 13) + { + sprite->pos2.x++; + sprite->pos2.y += 4; + } + + if (sprite->animEnded) + { + DestroySprite(sprite); + } +} diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c index 9f1dfd7d0..0c5056704 100755 --- a/src/battle/anim/scary_face.c +++ b/src/battle/anim/scary_face.c @@ -6,13 +6,6 @@ #include "decompress.h" #include "palette.h" -struct Struct_sub_8078914 -{ - u8 *field_0; - u8 *field_4; - u8 field_8; -}; - extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimBankAttacker; extern u8 gBattleAnimBankTarget; diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c new file mode 100644 index 000000000..35c380f23 --- /dev/null +++ b/src/battle/anim/shock.c @@ -0,0 +1,106 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern struct OamMatrix gOamMatrices[]; + +extern void sub_80DA48C(struct Sprite *); + +// shock (moves the little electricity lines) +// Used in Shock. + +void sub_80D6294(struct Sprite *sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y -= gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_8078114; +} + +void sub_80D6328(struct Sprite *sprite) +{ + u8 slot; + u32 matrixNum; + s16 sineVal; + + switch (gBattleAnimArgs[4]) + { + case 0: + slot = gBattleAnimBankAttacker; + break; + case 1: + default: + slot = gBattleAnimBankTarget; + break; + case 2: + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) + { + slot = gBattleAnimBankAttacker; + } + else + { + slot = gBattleAnimBankAttacker ^ 2; + } + break; + case 3: + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) + { + slot = gBattleAnimBankTarget ^ 2; + } + else + { + slot = gBattleAnimBankTarget; + } + break; + } + + if (gBattleAnimArgs[5] == 0) + { + sprite->pos1.x = sub_8077ABC(slot, 0); + sprite->pos1.y = sub_8077ABC(slot, 1); + } + else + { + sprite->pos1.x = sub_8077ABC(slot, 2); + sprite->pos1.y = sub_8077ABC(slot, 3); + } + + sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8; + sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8; + + if (gBattleAnimArgs[6] & 1) + { + sprite->oam.priority = sub_8079ED4(slot) + 1; + } + + matrixNum = sprite->oam.matrixNum; + sineVal = gSineTable[gBattleAnimArgs[2]]; + + gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[gBattleAnimArgs[2] + 64]; + gOamMatrices[matrixNum].b = sineVal; + gOamMatrices[matrixNum].c = -sineVal; + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->callback = sub_80DA48C; +} diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c new file mode 100644 index 000000000..f6cb8a077 --- /dev/null +++ b/src/battle/anim/sunlight.c @@ -0,0 +1,17 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +// sunlight (creates sunlight orbs) +// Used in Sunny Day + +void sub_80D517C(struct Sprite *sprite) +{ + sprite->pos1.x = 0; + sprite->pos1.y = 0; + sprite->data[0] = 60; + sprite->data[2] = 140; + sprite->data[4] = 80; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} diff --git a/src/battle/anim/thunder.c b/src/battle/anim/thunder.c new file mode 100644 index 000000000..5064148ef --- /dev/null +++ b/src/battle/anim/thunder.c @@ -0,0 +1,36 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; + +static void sub_80D6218(struct Sprite *); + +// thunder (positions the lightning bolts) +// Used in Thunder, Thunder Punch, and Tri Attack. + +void sub_80D61C8(struct Sprite *sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->callback = sub_80D6218; +} + +static void sub_80D6218(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c new file mode 100644 index 000000000..396a4637d --- /dev/null +++ b/src/battle/anim/water.c @@ -0,0 +1,371 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "util.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D3874(struct Sprite *); + +void sub_80D37FC(struct Sprite *sprite) +{ + sub_8078764(sprite, 1); + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4]; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} + +void sub_80D3838(struct Sprite *sprite) +{ + if (gBattleAnimArgs[3] != 0) + { + sub_8078764(sprite, 1); + } + else + { + sub_80787B0(sprite, 1); + } + + sprite->data[7] = gBattleAnimArgs[2]; + sprite->callback = sub_80D3874; +} + +static void sub_80D3874(struct Sprite *sprite) +{ + sprite->data[0] = (sprite->data[0] + 11) & 0xFF; + sprite->pos2.x = Sin(sprite->data[0], 4); + + sprite->data[1] += 48; + sprite->pos2.y = -(sprite->data[1] >> 8); + + if (--sprite->data[7] == -1) + { + move_anim_8072740(sprite); + } +} + +__attribute__((naked)) +void sub_80D38BC(u8 taskId) +{ + asm(".syntax unified\n\ + .equ REG_BLDCNT, 0x4000050\n\ + .equ REG_BG1CNT, 0x400000A\n\ + .equ REG_BG1HOFS, 0x4000014\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + ldr r1, _080D398C @ =REG_BLDCNT\n\ + ldr r2, _080D3990 @ =0x00003f42\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + adds r1, 0x2\n\ + movs r3, 0x80\n\ + lsls r3, 5\n\ + adds r0, r3, 0\n\ + strh r0, [r1]\n\ + ldr r2, _080D3994 @ =REG_BG1CNT\n\ + ldrb r1, [r2]\n\ + movs r0, 0x4\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r1, [r2, 0x1]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + movs r1, 0x40\n\ + orrs r0, r1\n\ + strb r0, [r2, 0x1]\n\ + mov r0, sp\n\ + bl sub_8078914\n\ + ldr r2, [sp]\n\ + movs r3, 0x80\n\ + lsls r3, 6\n\ + add r6, sp, 0x10\n\ + add r0, sp, 0xC\n\ + mov r12, r0\n\ + movs r5, 0\n\ + ldr r1, _080D3998 @ =0x040000d4\n\ + movs r4, 0x80\n\ + lsls r4, 5\n\ + mov r8, r6\n\ + ldr r7, _080D399C @ =0x85000400\n\ + movs r0, 0x85\n\ + lsls r0, 24\n\ + mov r9, r0\n\ +_080D3920:\n\ + str r5, [sp, 0x10]\n\ + mov r0, r8\n\ + str r0, [r1]\n\ + str r2, [r1, 0x4]\n\ + str r7, [r1, 0x8]\n\ + ldr r0, [r1, 0x8]\n\ + adds r2, r4\n\ + subs r3, r4\n\ + cmp r3, r4\n\ + bhi _080D3920\n\ + str r5, [sp, 0x10]\n\ + str r6, [r1]\n\ + str r2, [r1, 0x4]\n\ + lsrs r0, r3, 2\n\ + mov r2, r9\n\ + orrs r0, r2\n\ + str r0, [r1, 0x8]\n\ + ldr r0, [r1, 0x8]\n\ + movs r0, 0\n\ + mov r3, r12\n\ + strb r0, [r3]\n\ + strb r0, [r3]\n\ + ldr r1, [sp, 0x4]\n\ + movs r0, 0\n\ + str r0, [sp, 0x10]\n\ + ldr r0, _080D3998 @ =0x040000d4\n\ + str r6, [r0]\n\ + str r1, [r0, 0x4]\n\ + ldr r1, _080D399C @ =0x85000400\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + bl NotInBattle\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080D39B8\n\ + ldr r2, _080D3994 @ =REG_BG1CNT\n\ + ldrb r1, [r2]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r0, _080D39A0 @ =gBattleAnimBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080D39A8\n\ + ldr r0, _080D39A4 @ =gUnknown_08E70968\n\ + b _080D39AA\n\ + .align 2, 0\n\ +_080D398C: .4byte REG_BLDCNT\n\ +_080D3990: .4byte 0x00003f42\n\ +_080D3994: .4byte REG_BG1CNT\n\ +_080D3998: .4byte 0x040000d4\n\ +_080D399C: .4byte 0x85000400\n\ +_080D39A0: .4byte gBattleAnimBankAttacker\n\ +_080D39A4: .4byte gUnknown_08E70968\n\ +_080D39A8:\n\ + ldr r0, _080D39B4 @ =gUnknown_08E70C38\n\ +_080D39AA:\n\ + ldr r1, [sp, 0x4]\n\ + bl LZDecompressVram\n\ + b _080D39CE\n\ + .align 2, 0\n\ +_080D39B4: .4byte gUnknown_08E70C38\n\ +_080D39B8:\n\ + ldr r0, _080D39F0 @ =gUnknown_08E70F0C\n\ + ldr r1, [sp, 0x4]\n\ + bl LZDecompressVram\n\ + mov r0, sp\n\ + ldrb r0, [r0, 0x8]\n\ + ldr r1, [sp, 0x4]\n\ + movs r2, 0\n\ + movs r3, 0x1\n\ + bl sub_80763FC\n\ +_080D39CE:\n\ + ldr r0, _080D39F4 @ =gBattleAnimBackgroundImage_Surf\n\ + ldr r1, [sp]\n\ + bl LZDecompressVram\n\ + ldr r0, _080D39F8 @ =gBattleAnimArgs\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0\n\ + bne _080D3A00\n\ + ldr r0, _080D39FC @ =gBattleAnimBackgroundPalette_Surf\n\ + mov r1, sp\n\ + ldrb r1, [r1, 0x8]\n\ + lsls r1, 4\n\ + movs r2, 0x20\n\ + bl LoadCompressedPalette\n\ + b _080D3A0E\n\ + .align 2, 0\n\ +_080D39F0: .4byte gUnknown_08E70F0C\n\ +_080D39F4: .4byte gBattleAnimBackgroundImage_Surf\n\ +_080D39F8: .4byte gBattleAnimArgs\n\ +_080D39FC: .4byte gBattleAnimBackgroundPalette_Surf\n\ +_080D3A00:\n\ + ldr r0, _080D3A78 @ =gBattleAnimBackgroundImageMuddyWater_Pal\n\ + mov r1, sp\n\ + ldrb r1, [r1, 0x8]\n\ + lsls r1, 4\n\ + movs r2, 0x20\n\ + bl LoadCompressedPalette\n\ +_080D3A0E:\n\ + ldr r0, _080D3A7C @ =sub_80D3D68\n\ + ldr r4, _080D3A80 @ =gTasks\n\ + mov r2, r10\n\ + lsls r5, r2, 2\n\ + adds r1, r5, r2\n\ + lsls r1, 3\n\ + adds r6, r1, r4\n\ + ldrb r1, [r6, 0x7]\n\ + adds r1, 0x1\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + bl CreateTask\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + movs r3, 0\n\ + mov r9, r3\n\ + mov r0, r8\n\ + strh r0, [r6, 0x26]\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r7, r0, r4\n\ + mov r2, r9\n\ + strh r2, [r7, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + strh r0, [r7, 0xA]\n\ + strh r0, [r7, 0xC]\n\ + bl NotInBattle\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + beq _080D3A94\n\ + ldr r3, _080D3A84 @ =0x0000ffb0\n\ + adds r0, r3, 0\n\ + ldr r1, _080D3A88 @ =gUnknown_030042C0\n\ + strh r0, [r1]\n\ + ldr r2, _080D3A8C @ =0x0000ffd0\n\ + adds r0, r2, 0\n\ + ldr r3, _080D3A90 @ =gUnknown_030041B4\n\ + strh r0, [r3]\n\ + movs r0, 0x2\n\ + strh r0, [r6, 0x8]\n\ + movs r0, 0x1\n\ + strh r0, [r6, 0xA]\n\ + mov r0, r9\n\ + strh r0, [r7, 0xE]\n\ + b _080D3AEE\n\ + .align 2, 0\n\ +_080D3A78: .4byte gBattleAnimBackgroundImageMuddyWater_Pal\n\ +_080D3A7C: .4byte sub_80D3D68\n\ +_080D3A80: .4byte gTasks\n\ +_080D3A84: .4byte 0x0000ffb0\n\ +_080D3A88: .4byte gUnknown_030042C0\n\ +_080D3A8C: .4byte 0x0000ffd0\n\ +_080D3A90: .4byte gUnknown_030041B4\n\ +_080D3A94:\n\ + ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x1\n\ + bne _080D3AD8\n\ + ldr r2, _080D3AC8 @ =0x0000ff20\n\ + adds r0, r2, 0\n\ + ldr r3, _080D3ACC @ =gUnknown_030042C0\n\ + strh r0, [r3]\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + adds r0, r2, 0\n\ + ldr r3, _080D3AD0 @ =gUnknown_030041B4\n\ + strh r0, [r3]\n\ + movs r0, 0x2\n\ + strh r0, [r6, 0x8]\n\ + ldr r0, _080D3AD4 @ =0x0000ffff\n\ + strh r0, [r6, 0xA]\n\ + strh r1, [r7, 0xE]\n\ + b _080D3AEE\n\ + .align 2, 0\n\ +_080D3AC4: .4byte gBattleAnimBankAttacker\n\ +_080D3AC8: .4byte 0x0000ff20\n\ +_080D3ACC: .4byte gUnknown_030042C0\n\ +_080D3AD0: .4byte gUnknown_030041B4\n\ +_080D3AD4: .4byte 0x0000ffff\n\ +_080D3AD8:\n\ + ldr r0, _080D3B1C @ =gUnknown_030042C0\n\ + strh r4, [r0]\n\ + ldr r1, _080D3B20 @ =0x0000ffd0\n\ + adds r0, r1, 0\n\ + ldr r2, _080D3B24 @ =gUnknown_030041B4\n\ + strh r0, [r2]\n\ + ldr r0, _080D3B28 @ =0x0000fffe\n\ + strh r0, [r6, 0x8]\n\ + movs r0, 0x1\n\ + strh r0, [r6, 0xA]\n\ + strh r4, [r7, 0xE]\n\ +_080D3AEE:\n\ + ldr r1, _080D3B2C @ =REG_BG1HOFS\n\ + ldr r3, _080D3B1C @ =gUnknown_030042C0\n\ + ldrh r0, [r3]\n\ + strh r0, [r1]\n\ + adds r1, 0x2\n\ + ldr r2, _080D3B24 @ =gUnknown_030041B4\n\ + ldrh r0, [r2]\n\ + strh r0, [r1]\n\ + ldr r1, _080D3B30 @ =gTasks\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r2, r0, r1\n\ + movs r3, 0xE\n\ + ldrsh r0, [r2, r3]\n\ + cmp r0, 0\n\ + bne _080D3B34\n\ + movs r0, 0x30\n\ + strh r0, [r2, 0x10]\n\ + movs r0, 0x70\n\ + b _080D3B38\n\ + .align 2, 0\n\ +_080D3B1C: .4byte gUnknown_030042C0\n\ +_080D3B20: .4byte 0x0000ffd0\n\ +_080D3B24: .4byte gUnknown_030041B4\n\ +_080D3B28: .4byte 0x0000fffe\n\ +_080D3B2C: .4byte REG_BG1HOFS\n\ +_080D3B30: .4byte gTasks\n\ +_080D3B34:\n\ + movs r0, 0\n\ + strh r0, [r2, 0x10]\n\ +_080D3B38:\n\ + strh r0, [r2, 0x12]\n\ + mov r2, r10\n\ + adds r0, r5, r2\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x14]\n\ + ldr r1, _080D3B5C @ =sub_80D3B60\n\ + str r1, [r0]\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D3B5C: .4byte sub_80D3B60\n\ + .syntax divided\n"); +} diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c new file mode 100644 index 000000000..0e13fa119 --- /dev/null +++ b/src/battle/anim/wisp_orb.c @@ -0,0 +1,105 @@ +#include "global.h" +#include "battle_anim.h" +#include "constants/songs.h" +#include "rom_8077ABC.h" +#include "sound.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; +extern u8 gUnknown_0202F7D2; + +static void sub_80D5C5C(struct Sprite *); + +// wisp_orb (animates the wisp orbs) +// Used in Will-O-Wisp + +void sub_80D5B0C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sub_80787B0(sprite, 0); + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[7] = gBattleAnimArgs[2]; + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->data[4] = 4; + } + else + { + sprite->data[4] = -4; + } + + sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget); + sprite->data[0]++; + break; + case 1: + sprite->data[1] += 192; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos2.y = -(sprite->data[1] >> 8); + } + else + { + sprite->pos2.y = sprite->data[1] >> 8; + } + + sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]); + sprite->data[2] = (sprite->data[2] + 4) & 0xFF; + + if (++sprite->data[3] == 1) + { + sprite->data[3] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]); + sprite->data[2] = (sprite->data[2] + 4) & 0xFF; + + if (++sprite->data[3] == 31) + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + + sprite->data[0] = 256; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + + sub_8078BD4(sprite); + sprite->callback = sub_80D5C5C; + } + break; + } +} + +static void sub_80D5C5C(struct Sprite *sprite) +{ + s16 initialData5; + s16 newData5; + + if (!sub_8078B5C(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 16); + initialData5 = sprite->data[5]; + sprite->data[5] = (sprite->data[5] + 4) & 0xFF; + newData5 = sprite->data[5]; + + if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0) + { + PlaySE12WithPanning(SE_W172, gUnknown_0202F7D2); + } + } + else + { + move_anim_8072740(sprite); + } +} diff --git a/src/engine/sprite.c b/src/engine/sprite.c index 69fa860c1..c1bb36917 100644 --- a/src/engine/sprite.c +++ b/src/engine/sprite.c @@ -26,14 +26,6 @@ #define SPRITE_TILE_IS_ALLOCATED(n) ((gSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1) -struct OamMatrix -{ - s16 a; - s16 b; - s16 c; - s16 d; -}; - struct SpriteCopyRequest { const u8 *src; diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 8fea7f710..0ecaa9dcb 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -51,13 +51,6 @@ struct Struct_gUnknown_0837F578 { u8 field_1; }; -struct OamMatrix { - s16 a; - s16 b; - s16 c; - s16 d; -}; - struct Struct_2017810 { u8 filler_0[6]; u8 field_6; @@ -70,12 +63,6 @@ struct Color { u16 b:5; }; -struct Struct_sub_8078914 { - u8 *field_0; - u8 *field_4; - u8 field_8; -}; - struct BGCnt { u16 priority:2; u16 charBase:2; |