diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-07-02 18:09:34 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-07-02 18:27:49 -0500 |
commit | 5dbf9a67b9d3768dbeb9f09468d63347644a5f32 (patch) | |
tree | 7c906a629717740b8f8b8cab15face2019a63695 | |
parent | c090b6d921b5c4b77862904052a58de9a34f5af8 (diff) |
Decompile normal.s
-rw-r--r-- | asm/normal.s | 2751 | ||||
-rw-r--r-- | data/battle_anim_scripts.s | 216 | ||||
-rw-r--r-- | include/battle_anim.h | 10 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle/anim/normal.c | 946 | ||||
-rw-r--r-- | src/battle/battle_anim_812C144.c | 9 |
6 files changed, 1020 insertions, 2913 deletions
diff --git a/asm/normal.s b/asm/normal.s deleted file mode 100644 index fb2fdfdf7..000000000 --- a/asm/normal.s +++ /dev/null @@ -1,2751 +0,0 @@ - .include "constants/gba_constants.inc" - .include "include/macros.inc" - - .syntax unified - - .text - - @ normal - - thumb_func_start sub_80E2E10 -sub_80E2E10: @ 80E2E10 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r2, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080E2E3C @ =gTasks - adds r4, r0, r1 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E2ED4 - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080E2E40 - subs r0, r1, 0x1 - strh r0, [r4, 0xA] - b _080E2EE2 - .align 2, 0 -_080E2E3C: .4byte gTasks -_080E2E40: - ldrb r0, [r4, 0x8] - bl duplicate_obj_of_side_rel2move_in_transparent_mode - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - blt _080E2EBE - ldr r6, _080E2ECC @ =gSprites - movs r1, 0x14 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r3, r1, r6 - movs r2, 0x8 - ldrsh r0, [r4, r2] - movs r2, 0x2 - cmp r0, 0 - beq _080E2E68 - movs r2, 0x1 -_080E2E68: - lsls r2, 2 - ldrb r1, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x5] - movs r0, 0x14 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r4, 0xE] - strh r1, [r0, 0x2E] - movs r2, 0x14 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r5, [r0, 0x30] - movs r0, 0x14 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5 - strh r1, [r0, 0x32] - movs r2, 0x14 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080E2ED0 @ =sub_80E2EE8 - str r1, [r0] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] -_080E2EBE: - ldrh r0, [r4, 0x10] - subs r0, 0x1 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0xA] - b _080E2EE2 - .align 2, 0 -_080E2ECC: .4byte gSprites -_080E2ED0: .4byte sub_80E2EE8 -_080E2ED4: - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E2EE2 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E2EE2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E2E10 - - thumb_func_start sub_80E2EE8 -sub_80E2EE8: @ 80E2EE8 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080E2EFC - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080E2F20 -_080E2EFC: - ldr r3, _080E2F28 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - 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 obj_delete_but_dont_free_vram -_080E2F20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2F28: .4byte gTasks - thumb_func_end sub_80E2EE8 - - thumb_func_start sub_80E2F2C -sub_80E2F2C: @ 80E2F2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r7, 0 - ldr r0, _080E3038 @ =gBattle_WIN0H - strh r7, [r0] - ldr r0, _080E303C @ =gBattle_WIN0V - strh r7, [r0] - ldr r1, _080E3040 @ =REG_WININ - ldr r2, _080E3044 @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E3048 @ =0x00003f3d - adds r0, r3, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E304C @ =REG_BLDCNT - ldr r2, _080E3050 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E3054 @ =0x00000c08 - adds r0, r3, 0 - strh r0, [r1] - ldr r4, _080E3058 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - mov r8, r0 - ands r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E2FAC - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080E2FAC: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080E3028 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E3028 - ldr r5, _080E305C @ =gAnimBankAttacker - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080E2FDC - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _080E3028 -_080E2FDC: - ldrb r0, [r5] - movs r6, 0x2 - eors r0, r6 - bl IsAnimBankSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E3028 - ldr r3, _080E3060 @ =gSprites - ldr r1, _080E3064 @ =gBankSpriteIds - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r4] - mov r0, r8 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - movs r7, 0x1 -_080E3028: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E306C - ldr r0, _080E3068 @ =gSharedMem + 0x19348 - ldrh r4, [r0] - b _080E30B4 - .align 2, 0 -_080E3038: .4byte gBattle_WIN0H -_080E303C: .4byte gBattle_WIN0V -_080E3040: .4byte REG_WININ -_080E3044: .4byte 0x00003f3f -_080E3048: .4byte 0x00003f3d -_080E304C: .4byte REG_BLDCNT -_080E3050: .4byte 0x00003f42 -_080E3054: .4byte 0x00000c08 -_080E3058: .4byte REG_BG1CNT -_080E305C: .4byte gAnimBankAttacker -_080E3060: .4byte gSprites -_080E3064: .4byte gBankSpriteIds -_080E3068: .4byte gSharedMem + 0x19348 -_080E306C: - ldr r4, _080E308C @ =gAnimBankAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E3098 - ldr r1, _080E3090 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3094 @ =gEnemyParty - b _080E30A8 - .align 2, 0 -_080E308C: .4byte gAnimBankAttacker -_080E3090: .4byte gBattlerPartyIndexes -_080E3094: .4byte gEnemyParty -_080E3098: - ldr r1, _080E3160 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3164 @ =gPlayerParty -_080E30A8: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 -_080E30B4: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E3168 @ =gAnimBankAttacker - ldrb r0, [r0] - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r2, _080E316C @ =0x040000d4 - add r0, sp, 0xC - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080E3170 @ =0x85000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _080E3174 @ =gUnknown_08D20A30 - bl LZDecompressVram - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E3106 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080E3106: - ldr r0, _080E3178 @ =gUnknown_08D20A14 - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080E317C @ =gUnknown_083DB568 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - adds r1, 0x1 - movs r2, 0x2 - bl LoadPalette - ldr r2, _080E3180 @ =gBattle_BG1_X - ldr r0, _080E3184 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x20] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldr r2, _080E3188 @ =gBattle_BG1_Y - ldrh r0, [r1, 0x22] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldr r1, _080E318C @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - strh r7, [r0, 0x14] - ldr r1, _080E3190 @ =sub_80E3194 - str r1, [r0] - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3160: .4byte gBattlerPartyIndexes -_080E3164: .4byte gPlayerParty -_080E3168: .4byte gAnimBankAttacker -_080E316C: .4byte 0x040000d4 -_080E3170: .4byte 0x85000400 -_080E3174: .4byte gUnknown_08D20A30 -_080E3178: .4byte gUnknown_08D20A14 -_080E317C: .4byte gUnknown_083DB568 -_080E3180: .4byte gBattle_BG1_X -_080E3184: .4byte gSprites -_080E3188: .4byte gBattle_BG1_Y -_080E318C: .4byte gTasks -_080E3190: .4byte sub_80E3194 - thumb_func_end sub_80E2F2C - - thumb_func_start sub_80E3194 -sub_80E3194: @ 80E3194 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E32AC @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x1C] - adds r0, 0x4 - movs r5, 0 - strh r0, [r4, 0x1C] - ldr r7, _080E32B0 @ =gBattle_BG1_Y - ldrh r2, [r7] - subs r1, r2, 0x4 - strh r1, [r7] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _080E329E - strh r5, [r4, 0x1C] - adds r0, r2, 0 - adds r0, 0x3C - strh r0, [r7] - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080E329E - movs r0, 0 - bl sub_8076464 - ldr r0, _080E32B4 @ =gBattle_WIN0H - strh r5, [r0] - ldr r0, _080E32B8 @ =gBattle_WIN0V - strh r5, [r0] - ldr r0, _080E32BC @ =REG_WININ - ldr r2, _080E32C0 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E3208 - ldr r2, _080E32C4 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080E3208: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - eors r0, r1 - strh r0, [r2] - ldr r0, _080E32C8 @ =REG_BLDCNT - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - movs r0, 0 - bl GetAnimBattlerSpriteId - ldr r0, _080E32CC @ =gSprites - mov r8, r0 - movs r2, 0x8 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - bl DestroySprite - mov r0, sp - bl sub_8078914 - ldr r2, [sp, 0x4] - str r5, [sp, 0xC] - ldr r1, _080E32D0 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080E32D4 @ =0x85000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080E3288 - ldr r2, _080E32D8 @ =gBankSpriteIds - ldr r0, _080E32DC @ =gAnimBankAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - adds r0, r2 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] -_080E3288: - ldr r2, _080E32C4 @ =REG_BG1CNT - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - movs r0, 0 - strh r0, [r7] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E329E: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E32AC: .4byte gTasks -_080E32B0: .4byte gBattle_BG1_Y -_080E32B4: .4byte gBattle_WIN0H -_080E32B8: .4byte gBattle_WIN0V -_080E32BC: .4byte REG_WININ -_080E32C0: .4byte 0x00003f3f -_080E32C4: .4byte REG_BG1CNT -_080E32C8: .4byte REG_BLDCNT -_080E32CC: .4byte gSprites -_080E32D0: .4byte 0x040000d4 -_080E32D4: .4byte 0x85000200 -_080E32D8: .4byte gBankSpriteIds -_080E32DC: .4byte gAnimBankAttacker - thumb_func_end sub_80E3194 - - thumb_func_start sub_80E32E0 -sub_80E32E0: @ 80E32E0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, _080E332C @ =gTasks - mov r12, r0 - ldr r1, _080E3330 @ =sub_80E3338 - mov r8, r1 - lsls r1, r3, 2 - adds r0, r1, r3 - lsls r4, r0, 3 - mov r7, r12 - adds r7, 0x8 - adds r5, r1, 0 - ldr r6, _080E3334 @ =gBattleAnimArgs -_080E3302: - lsls r0, r2, 1 - adds r1, r0, r4 - adds r1, r7 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _080E3302 - adds r0, r5, r3 - lsls r0, 3 - add r0, r12 - mov r1, r8 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E332C: .4byte gTasks -_080E3330: .4byte sub_80E3338 -_080E3334: .4byte gBattleAnimArgs - thumb_func_end sub_80E32E0 - - thumb_func_start sub_80E3338 -sub_80E3338: @ 80E3338 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r0, 0 - str r0, [sp, 0x1C] - movs r1, 0 - str r1, [sp, 0x20] - add r7, sp, 0xC - ldr r2, _080E3388 @ =gTasks - mov r3, r9 - lsls r1, r3, 2 - adds r0, r1, r3 - lsls r0, 3 - mov r10, r1 - adds r1, r2, 0 - adds r1, 0x8 - adds r1, r0, r1 - adds r3, r7, 0 - movs r4, 0 - movs r2, 0x7 -_080E336C: - ldrh r0, [r1] - strh r0, [r3] - strh r4, [r1] - adds r1, 0x2 - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080E336C - movs r1, 0x4 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E3390 - ldr r0, _080E338C @ =gAnimBankAttacker - b _080E3392 - .align 2, 0 -_080E3388: .4byte gTasks -_080E338C: .4byte gAnimBankAttacker -_080E3390: - ldr r0, _080E34B4 @ =gAnimBankTarget -_080E3392: - ldrb r5, [r0] - movs r0, 0x2 - mov r8, r5 - mov r2, r8 - eors r2, r0 - mov r8, r2 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E33BC - movs r3, 0x6 - ldrsh r0, [r7, r3] - cmp r0, 0 - beq _080E33C0 - mov r0, r8 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080E33C0 -_080E33BC: - movs r0, 0 - strh r0, [r7, 0x6] -_080E33C0: - ldr r0, _080E34B8 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _080E34BC @ =gBattle_WIN0V - strh r1, [r0] - ldr r1, _080E34C0 @ =REG_WININ - ldr r2, _080E34C4 @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080E34C8 @ =0x00003f3d - adds r0, r3, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E34CC @ =REG_BLDCNT - ldr r2, _080E34D0 @ =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 r4, _080E34D4 @ =REG_BG1CNT - ldrb r1, [r4] - movs r6, 0x4 - negs r6, r6 - adds r0, r6, 0 - ands r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E3432 - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080E3432: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080E34A4 - movs r1, 0x6 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E34A4 - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080E345E - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _080E34A4 -_080E345E: - mov r0, r8 - bl IsAnimBankSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E34A4 - ldr r1, _080E34D8 @ =gSprites - ldr r0, _080E34DC @ =gBankSpriteIds - add r0, r8 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r4] - adds r0, r6, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - movs r2, 0x1 - str r2, [sp, 0x20] -_080E34A4: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E34E4 - ldr r0, _080E34E0 @ =gSharedMem + 0x19348 - ldrh r4, [r0] - b _080E3522 - .align 2, 0 -_080E34B4: .4byte gAnimBankTarget -_080E34B8: .4byte gBattle_WIN0H -_080E34BC: .4byte gBattle_WIN0V -_080E34C0: .4byte REG_WININ -_080E34C4: .4byte 0x00003f3f -_080E34C8: .4byte 0x00003f3d -_080E34CC: .4byte REG_BLDCNT -_080E34D0: .4byte 0x00003f42 -_080E34D4: .4byte REG_BG1CNT -_080E34D8: .4byte gSprites -_080E34DC: .4byte gBankSpriteIds -_080E34E0: .4byte gSharedMem + 0x19348 -_080E34E4: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E3508 - ldr r1, _080E3500 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3504 @ =gEnemyParty - b _080E3516 - .align 2, 0 -_080E3500: .4byte gBattlerPartyIndexes -_080E3504: .4byte gEnemyParty -_080E3508: - ldr r1, _080E3568 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E356C @ =gPlayerParty -_080E3516: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 -_080E3522: - ldr r6, _080E3570 @ =gBankSpriteIds - adds r0, r5, r6 - ldrb r1, [r0] - adds r0, r5, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0x6 - ldrsh r0, [r7, r3] - cmp r0, 0 - beq _080E3550 - mov r1, r8 - adds r0, r1, r6 - ldrb r1, [r0] - mov r0, r8 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x1C] -_080E3550: - mov r0, sp - bl sub_8078914 - movs r2, 0 - ldrsh r0, [r7, r2] - cmp r0, 0 - bne _080E3578 - ldr r0, _080E3574 @ =gBattleStatMask1_Tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080E3580 - .align 2, 0 -_080E3568: .4byte gBattlerPartyIndexes -_080E356C: .4byte gPlayerParty -_080E3570: .4byte gBankSpriteIds -_080E3574: .4byte gBattleStatMask1_Tilemap -_080E3578: - ldr r0, _080E35B0 @ =gBattleStatMask2_Tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram -_080E3580: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E3598 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080E3598: - ldr r0, _080E35B4 @ =gBattleStatMask_Gfx - ldr r1, [sp] - bl LZDecompressVram - ldrh r0, [r7, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080E35BC - ldr r0, _080E35B8 @ =gBattleStatMask2_Pal - b _080E35FE - .align 2, 0 -_080E35B0: .4byte gBattleStatMask2_Tilemap -_080E35B4: .4byte gBattleStatMask_Gfx -_080E35B8: .4byte gBattleStatMask2_Pal -_080E35BC: - cmp r0, 0x1 - bne _080E35C8 - ldr r0, _080E35C4 @ =gBattleStatMask1_Pal - b _080E35FE - .align 2, 0 -_080E35C4: .4byte gBattleStatMask1_Pal -_080E35C8: - cmp r0, 0x2 - bne _080E35D4 - ldr r0, _080E35D0 @ =gBattleStatMask3_Pal - b _080E35FE - .align 2, 0 -_080E35D0: .4byte gBattleStatMask3_Pal -_080E35D4: - cmp r0, 0x3 - bne _080E35E0 - ldr r0, _080E35DC @ =gBattleStatMask4_Pal - b _080E35FE - .align 2, 0 -_080E35DC: .4byte gBattleStatMask4_Pal -_080E35E0: - cmp r0, 0x4 - bne _080E35EC - ldr r0, _080E35E8 @ =gBattleStatMask6_Pal - b _080E35FE - .align 2, 0 -_080E35E8: .4byte gBattleStatMask6_Pal -_080E35EC: - cmp r0, 0x5 - bne _080E35F8 - ldr r0, _080E35F4 @ =gBattleStatMask7_Pal - b _080E35FE - .align 2, 0 -_080E35F4: .4byte gBattleStatMask7_Pal -_080E35F8: - cmp r0, 0x6 - bne _080E3610 - ldr r0, _080E360C @ =gBattleStatMask8_Pal -_080E35FE: - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - b _080E361E - .align 2, 0 -_080E360C: .4byte gBattleStatMask8_Pal -_080E3610: - ldr r0, _080E3644 @ =gBattleStatMask5_Pal - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette -_080E361E: - ldr r2, _080E3648 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r2] - ldr r0, _080E364C @ =gBattle_BG1_Y - strh r1, [r0] - movs r3, 0 - ldrsh r0, [r7, r3] - cmp r0, 0x1 - bne _080E3658 - movs r0, 0x40 - strh r0, [r2] - ldr r2, _080E3650 @ =gTasks - mov r0, r10 - add r0, r9 - lsls r0, 3 - adds r0, r2 - ldr r1, _080E3654 @ =0x0000fffd - strh r1, [r0, 0xA] - b _080E3668 - .align 2, 0 -_080E3644: .4byte gBattleStatMask5_Pal -_080E3648: .4byte gBattle_BG1_X -_080E364C: .4byte gBattle_BG1_Y -_080E3650: .4byte gTasks -_080E3654: .4byte 0x0000fffd -_080E3658: - ldr r0, _080E3680 @ =gTasks - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r0 - movs r2, 0x3 - strh r2, [r1, 0xA] - adds r2, r0, 0 -_080E3668: - movs r1, 0x8 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E3684 - mov r0, r10 - add r0, r9 - lsls r0, 3 - adds r0, r2 - movs r1, 0xA - strh r1, [r0, 0x10] - movs r1, 0x14 - b _080E3692 - .align 2, 0 -_080E3680: .4byte gTasks -_080E3684: - mov r0, r10 - add r0, r9 - lsls r0, 3 - adds r0, r2 - movs r1, 0xD - strh r1, [r0, 0x10] - movs r1, 0x1E -_080E3692: - strh r1, [r0, 0x12] - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - ldrh r0, [r7, 0x6] - strh r0, [r1, 0xC] - mov r2, sp - ldrh r2, [r2, 0x1C] - strh r2, [r1, 0xE] - mov r3, sp - ldrh r3, [r3, 0x20] - strh r3, [r1, 0x14] - ldr r0, _080E36D8 @ =gBankSpriteIds - add r0, r8 - ldrb r0, [r0] - strh r0, [r1, 0x16] - ldr r0, _080E36DC @ =sub_80E3704 - str r0, [r1] - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _080E36E0 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning2 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xEF - bl PlaySE12WithPanning - b _080E36F4 - .align 2, 0 -_080E36D8: .4byte gBankSpriteIds -_080E36DC: .4byte sub_80E3704 -_080E36E0: - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning2 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xF5 - bl PlaySE12WithPanning -_080E36F4: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E3338 - - thumb_func_start sub_80E3704 -sub_80E3704: @ 80E3704 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _080E3730 @ =gBattle_BG1_Y - ldr r1, _080E3734 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - movs r3, 0x26 - ldrsh r2, [r4, r3] - cmp r2, 0x1 - beq _080E3774 - cmp r2, 0x1 - bgt _080E3738 - cmp r2, 0 - beq _080E373E - b _080E3866 - .align 2, 0 -_080E3730: .4byte gBattle_BG1_Y -_080E3734: .4byte gTasks -_080E3738: - cmp r2, 0x2 - beq _080E378E - b _080E3866 -_080E373E: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - cmp r0, 0 - bgt _080E374C - b _080E3866 -_080E374C: - strh r2, [r4, 0x1E] - ldrh r1, [r4, 0x20] - adds r1, 0x1 - strh r1, [r4, 0x20] - ldr r2, _080E3770 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E3866 - b _080E3786 - .align 2, 0 -_080E3770: .4byte REG_BLDALPHA -_080E3774: - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x12 - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080E3866 -_080E3786: - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - b _080E3866 -_080E378E: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - cmp r0, 0 - ble _080E3866 - movs r0, 0 - strh r0, [r4, 0x1E] - ldrh r1, [r4, 0x20] - subs r1, 0x1 - strh r1, [r4, 0x20] - ldr r7, _080E386C @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r7] - movs r0, 0x20 - ldrsh r5, [r4, r0] - cmp r5, 0 - bne _080E3866 - movs r0, 0 - bl sub_8076464 - ldr r0, _080E3870 @ =gBattle_WIN0H - strh r5, [r0] - ldr r0, _080E3874 @ =gBattle_WIN0V - strh r5, [r0] - ldr r0, _080E3878 @ =REG_WININ - ldr r2, _080E387C @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E37E8 - ldr r2, _080E3880 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080E37E8: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - eors r0, r1 - strh r0, [r2] - ldr r0, _080E3884 @ =REG_BLDCNT - strh r5, [r0] - strh r5, [r7] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080E3888 @ =gSprites - adds r0, r5 - bl DestroySprite - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3828 - movs r2, 0xE - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_080E3828: - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080E3854 - movs r1, 0x16 - ldrsh r0, [r4, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] -_080E3854: - ldr r2, _080E3880 @ =REG_BG1CNT - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E3866: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E386C: .4byte REG_BLDALPHA -_080E3870: .4byte gBattle_WIN0H -_080E3874: .4byte gBattle_WIN0V -_080E3878: .4byte REG_WININ -_080E387C: .4byte 0x00003f3f -_080E3880: .4byte REG_BG1CNT -_080E3884: .4byte REG_BLDCNT -_080E3888: .4byte gSprites - thumb_func_end sub_80E3704 - - thumb_func_start sub_80E388C -sub_80E388C: @ 80E388C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80792C0 - adds r6, r0, 0 - movs r1, 0 - bl sub_80E39BC - ldr r0, _080E38EC @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - lsrs r0, r6, 16 - movs r5, 0 - strh r0, [r4, 0x24] - str r5, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r6, r0, 0 - ldr r1, _080E38F0 @ =0x0000ffff - ands r6, r1 - adds r0, r6, 0 - bl sub_80E39BC - strh r6, [r4, 0x26] - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - ldr r0, _080E38F4 @ =sub_80E38F8 - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E38EC: .4byte gTasks -_080E38F0: .4byte 0x0000ffff -_080E38F4: .4byte sub_80E38F8 - thumb_func_end sub_80E388C - - thumb_func_start sub_80E38F8 -sub_80E38F8: @ 80E38F8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E391C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080E393C - cmp r1, 0x1 - bgt _080E3920 - cmp r1, 0 - beq _080E3926 - b _080E39B6 - .align 2, 0 -_080E391C: .4byte gTasks -_080E3920: - cmp r1, 0x2 - beq _080E39B0 - b _080E39B6 -_080E3926: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080E39B6 - strh r1, [r4, 0xA] - movs r0, 0x10 - strh r0, [r4, 0xC] - b _080E39A4 -_080E393C: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E39B6 - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - movs r5, 0 - movs r6, 0x1 -_080E3958: - movs r1, 0x26 - ldrsh r0, [r4, r1] - asrs r0, r5 - ands r0, r6 - cmp r0, 0 - beq _080E3972 - lsls r0, r5, 20 - lsrs r0, 16 - ldrb r2, [r4, 0xC] - movs r1, 0x10 - ldr r3, _080E39AC @ =0x0000ffff - bl BlendPalette -_080E3972: - movs r1, 0x24 - ldrsh r0, [r4, r1] - asrs r0, r5 - ands r0, r6 - cmp r0, 0 - beq _080E3992 - lsls r0, r5, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - ldrb r2, [r4, 0xC] - movs r1, 0x10 - movs r3, 0 - bl BlendPalette -_080E3992: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _080E3958 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E39B6 -_080E39A4: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E39B6 - .align 2, 0 -_080E39AC: .4byte 0x0000ffff -_080E39B0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E39B6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E38F8 - - thumb_func_start sub_80E39BC -sub_80E39BC: @ 80E39BC - push {r4-r6,lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - movs r2, 0 -_080E39C6: - movs r0, 0x1 - ands r0, r3 - lsrs r4, r3, 1 - adds r5, r2, 0x1 - cmp r0, 0 - beq _080E39F2 - lsls r0, r2, 20 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x10 - cmp r2, r0 - bge _080E39F2 - ldr r1, _080E3A04 @ =gPlttBufferFaded - adds r3, r0, 0 -_080E39E2: - lsls r0, r2, 1 - adds r0, r1 - strh r6, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r3 - blt _080E39E2 -_080E39F2: - adds r3, r4, 0 - lsls r0, r5, 16 - lsrs r2, r0, 16 - cmp r2, 0x1F - bls _080E39C6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E3A04: .4byte gPlttBufferFaded - thumb_func_end sub_80E39BC - - thumb_func_start sub_80E3A08 -sub_80E3A08: @ 80E3A08 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - movs r2, 0 - ldr r0, _080E3A50 @ =gAnimBankAttacker - ldrb r3, [r0] - movs r5, 0x1 -_080E3A18: - cmp r3, r2 - beq _080E3A26 - adds r1, r2, 0 - adds r1, 0x10 - adds r0, r5, 0 - lsls r0, r1 - orrs r4, r0 -_080E3A26: - adds r2, 0x1 - cmp r2, 0x3 - bls _080E3A18 - movs r2, 0x5 - ldr r0, _080E3A54 @ =gBattleAnimArgs - adds r1, r0, 0 - adds r1, 0x8 -_080E3A34: - ldrh r0, [r1] - strh r0, [r1, 0x2] - subs r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080E3A34 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80E2C8C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E3A50: .4byte gAnimBankAttacker -_080E3A54: .4byte gBattleAnimArgs - thumb_func_end sub_80E3A08 - - thumb_func_start sub_80E3A58 -sub_80E3A58: @ 80E3A58 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl sub_80789D4 - ldr r0, _080E3AC0 @ =sub_80E3AD0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080E3AC4 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3A94 - ldr r0, _080E3AC8 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E3A94 - ldrh r0, [r4] - negs r0, r0 - strh r0, [r4] - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] -_080E3A94: - ldr r0, _080E3ACC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r2, _080E3AC4 @ =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r1, 0xA] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0xC] - ldrh r0, [r2, 0x6] - strh r0, [r1, 0xE] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E3AC0: .4byte sub_80E3AD0 -_080E3AC4: .4byte gBattleAnimArgs -_080E3AC8: .4byte gAnimBankAttacker -_080E3ACC: .4byte gTasks - thumb_func_end sub_80E3A58 - - thumb_func_start sub_80E3AD0 -sub_80E3AD0: @ 80E3AD0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E3B3C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r3, [r1, 0xA] - ldrh r0, [r1, 0x1C] - adds r3, r0 - movs r4, 0 - mov r12, r4 - strh r3, [r1, 0x1C] - ldrh r2, [r1, 0xC] - ldrh r7, [r1, 0x1E] - adds r2, r7 - strh r2, [r1, 0x1E] - ldr r6, _080E3B40 @ =gBattle_BG3_X - lsls r0, r3, 16 - asrs r0, 24 - ldrh r4, [r6] - adds r0, r4 - strh r0, [r6] - ldr r4, _080E3B44 @ =gBattle_BG3_Y - lsls r0, r2, 16 - asrs r0, 24 - ldrh r7, [r4] - adds r0, r7 - strh r0, [r4] - movs r0, 0xFF - ands r3, r0 - strh r3, [r1, 0x1C] - ands r2, r0 - strh r2, [r1, 0x1E] - ldr r0, _080E3B48 @ =gBattleAnimArgs - movs r3, 0xE - ldrsh r2, [r0, r3] - movs r7, 0xE - ldrsh r0, [r1, r7] - cmp r2, r0 - bne _080E3B36 - mov r0, r12 - strh r0, [r6] - strh r0, [r4] - movs r0, 0x1 - bl sub_80789D4 - adds r0, r5, 0 - bl DestroyTask -_080E3B36: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3B3C: .4byte gTasks -_080E3B40: .4byte gBattle_BG3_X -_080E3B44: .4byte gBattle_BG3_Y -_080E3B48: .4byte gBattleAnimArgs - thumb_func_end sub_80E3AD0 - - thumb_func_start sub_80E3B4C -sub_80E3B4C: @ 80E3B4C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080E3B70 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - ldr r1, _080E3B74 @ =gBattleAnimArgs - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E3B70: .4byte gAnimBankAttacker -_080E3B74: .4byte gBattleAnimArgs - thumb_func_end sub_80E3B4C - - thumb_func_start sub_80E3B78 -sub_80E3B78: @ 80E3B78 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080E3B9C @ =gAnimBankTarget - ldrb r0, [r0] - bl GetBattlerSide - ldr r1, _080E3BA0 @ =gBattleAnimArgs - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E3B9C: .4byte gAnimBankTarget -_080E3BA0: .4byte gBattleAnimArgs - thumb_func_end sub_80E3B78 - - thumb_func_start sub_80E3BA4 -sub_80E3BA4: @ 80E3BA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r5, _080E3BD0 @ =gBattleAnimArgs - movs r4, 0 - ldr r0, _080E3BD4 @ =gAnimBankAttacker - ldrb r2, [r0] - movs r0, 0x2 - ldr r1, _080E3BD8 @ =gAnimBankTarget - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bne _080E3BC0 - movs r4, 0x1 -_080E3BC0: - strh r4, [r5, 0xE] - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E3BD0: .4byte gBattleAnimArgs -_080E3BD4: .4byte gAnimBankAttacker -_080E3BD8: .4byte gAnimBankTarget - thumb_func_end sub_80E3BA4 - - thumb_func_start sub_80E3BDC -sub_80E3BDC: @ 80E3BDC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r6, _080E3C3C @ =gSprites -_080E3BE6: - ldr r0, _080E3C40 @ =gAnimBankAttacker - ldrb r0, [r0] - cmp r4, r0 - beq _080E3C24 - lsls r0, r4, 24 - lsrs r0, 24 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080E3C24 - ldr r0, _080E3C44 @ =gBankSpriteIds - adds r0, r4, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldr r1, _080E3C48 @ =gBattleAnimArgs - adds r2, 0x3E - movs r0, 0x1 - ldrb r3, [r1] - ands r3, r0 - lsls r3, 2 - ldrb r0, [r2] - movs r7, 0x5 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] -_080E3C24: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080E3BE6 - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3C3C: .4byte gSprites -_080E3C40: .4byte gAnimBankAttacker -_080E3C44: .4byte gBankSpriteIds -_080E3C48: .4byte gBattleAnimArgs - thumb_func_end sub_80E3BDC - - thumb_func_start sub_80E3C4C -sub_80E3C4C: @ 80E3C4C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r1, [sp, 0x3C] - ldr r4, [sp, 0x40] - ldr r5, [sp, 0x44] - ldr r6, [sp, 0x48] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0xC] - lsls r3, 24 - lsrs r7, r3, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x10] - lsls r5, 24 - lsrs r5, 24 - str r5, [sp, 0x14] - lsls r6, 24 - lsrs r6, 24 - mov r10, r6 - movs r0, 0 - str r0, [sp, 0x18] - movs r0, 0x2 - adds r6, r7, 0 - eors r6, r0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E3CAE - mov r1, r8 - cmp r1, 0 - beq _080E3CB2 - adds r0, r6, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080E3CB2 -_080E3CAE: - movs r2, 0 - mov r8, r2 -_080E3CB2: - ldr r0, _080E3D34 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _080E3D38 @ =gBattle_WIN0V - strh r1, [r0] - ldr r1, _080E3D3C @ =REG_WININ - ldr r3, _080E3D40 @ =0x00003f3f - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080E3D44 @ =0x00003f3d - adds r0, r2, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080E3D48 @ =REG_BLDCNT - ldr r2, _080E3D4C @ =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 r4, _080E3D50 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E3D22 - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080E3D22: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E3D58 - ldr r0, _080E3D54 @ =gSharedMem + 0x19348 - ldrh r4, [r0] - b _080E3D96 - .align 2, 0 -_080E3D34: .4byte gBattle_WIN0H -_080E3D38: .4byte gBattle_WIN0V -_080E3D3C: .4byte REG_WININ -_080E3D40: .4byte 0x00003f3f -_080E3D44: .4byte 0x00003f3d -_080E3D48: .4byte REG_BLDCNT -_080E3D4C: .4byte 0x00003f42 -_080E3D50: .4byte REG_BG1CNT -_080E3D54: .4byte gSharedMem + 0x19348 -_080E3D58: - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E3D7C - ldr r1, _080E3D74 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3D78 @ =gEnemyParty - b _080E3D8A - .align 2, 0 -_080E3D74: .4byte gBattlerPartyIndexes -_080E3D78: .4byte gEnemyParty -_080E3D7C: - ldr r1, _080E3E48 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E3E4C @ =gPlayerParty -_080E3D8A: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 -_080E3D96: - ldr r5, _080E3E50 @ =gBankSpriteIds - adds r0, r7, r5 - ldrb r1, [r0] - adds r0, r7, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r8 - cmp r0, 0 - beq _080E3DC0 - adds r0, r6, r5 - ldrb r1, [r0] - adds r0, r6, 0 - adds r2, r4, 0 - bl sub_807A4A0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x18] -_080E3DC0: - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - ldr r0, [sp, 0x50] - bl LZDecompressVram - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E3DE6 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080E3DE6: - ldr r1, [sp] - ldr r0, [sp, 0x4C] - bl LZDecompressVram - mov r0, sp - ldrb r1, [r0, 0x8] - lsls r1, 4 - ldr r0, [sp, 0x54] - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, _080E3E54 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080E3E58 @ =gBattle_BG1_Y - strh r1, [r0] - ldr r1, _080E3E5C @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r3, sp - ldrh r3, [r3, 0xC] - strh r3, [r0, 0xA] - mov r1, sp - ldrh r1, [r1, 0x10] - strh r1, [r0, 0x10] - mov r2, r10 - strh r2, [r0, 0x12] - mov r3, sp - ldrh r3, [r3, 0x14] - strh r3, [r0, 0x14] - strh r7, [r0, 0x8] - mov r1, r8 - strh r1, [r0, 0xC] - mov r2, sp - ldrh r2, [r2, 0x18] - strh r2, [r0, 0xE] - ldr r1, _080E3E60 @ =sub_80E3E64 - str r1, [r0] - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3E48: .4byte gBattlerPartyIndexes -_080E3E4C: .4byte gPlayerParty -_080E3E50: .4byte gBankSpriteIds -_080E3E54: .4byte gBattle_BG1_X -_080E3E58: .4byte gBattle_BG1_Y -_080E3E5C: .4byte gTasks -_080E3E60: .4byte sub_80E3E64 - thumb_func_end sub_80E3C4C - - thumb_func_start sub_80E3E64 -sub_80E3E64: @ 80E3E64 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E3E9C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r1 - movs r0, 0xA - ldrsh r2, [r3, r0] - adds r5, r1, 0 - cmp r2, 0 - bge _080E3E80 - negs r2, r2 -_080E3E80: - ldrh r0, [r3, 0x22] - adds r4, r0, r2 - strh r4, [r3, 0x22] - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0 - bge _080E3EA4 - ldr r2, _080E3EA0 @ =gBattle_BG1_Y - lsls r1, r4, 16 - asrs r1, 24 - ldrh r0, [r2] - subs r0, r1 - strh r0, [r2] - b _080E3EB0 - .align 2, 0 -_080E3E9C: .4byte gTasks -_080E3EA0: .4byte gBattle_BG1_Y -_080E3EA4: - ldr r1, _080E3ED4 @ =gBattle_BG1_Y - lsls r0, r4, 16 - asrs r0, 24 - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] -_080E3EB0: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r5 - ldrh r1, [r4, 0x22] - movs r0, 0xFF - ands r0, r1 - movs r2, 0 - strh r0, [r4, 0x22] - movs r3, 0x26 - ldrsh r0, [r4, r3] - cmp r0, 0x1 - beq _080E3F18 - cmp r0, 0x1 - bgt _080E3ED8 - cmp r0, 0 - beq _080E3EDE - b _080E3FE2 - .align 2, 0 -_080E3ED4: .4byte gBattle_BG1_Y -_080E3ED8: - cmp r0, 0x2 - beq _080E3F32 - b _080E3FE2 -_080E3EDE: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x14 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080E3FE2 - strh r2, [r4, 0x1E] - ldrh r1, [r4, 0x20] - adds r1, 0x1 - strh r1, [r4, 0x20] - ldr r2, _080E3F14 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E3FE2 - b _080E3F2A - .align 2, 0 -_080E3F14: .4byte REG_BLDALPHA -_080E3F18: - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x12 - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080E3FE2 -_080E3F2A: - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - b _080E3FE2 -_080E3F32: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x14 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080E3FE2 - strh r2, [r4, 0x1E] - ldrh r1, [r4, 0x20] - subs r1, 0x1 - strh r1, [r4, 0x20] - ldr r7, _080E3FE8 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r7] - movs r0, 0x20 - ldrsh r5, [r4, r0] - cmp r5, 0 - bne _080E3FE2 - movs r0, 0 - bl sub_8076464 - ldr r0, _080E3FEC @ =gBattle_WIN0H - strh r5, [r0] - ldr r0, _080E3FF0 @ =gBattle_WIN0V - strh r5, [r0] - ldr r0, _080E3FF4 @ =REG_WININ - ldr r2, _080E3FF8 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E3F90 - ldr r2, _080E3FFC @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080E3F90: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - eors r0, r1 - strh r0, [r2] - ldr r0, _080E4000 @ =REG_BLDCNT - strh r5, [r0] - strh r5, [r7] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080E4004 @ =gSprites - adds r0, r5 - bl DestroySprite - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3FD0 - movs r2, 0xE - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_080E3FD0: - ldr r2, _080E3FFC @ =REG_BG1CNT - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E3FE2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3FE8: .4byte REG_BLDALPHA -_080E3FEC: .4byte gBattle_WIN0H -_080E3FF0: .4byte gBattle_WIN0V -_080E3FF4: .4byte REG_WININ -_080E3FF8: .4byte 0x00003f3f -_080E3FFC: .4byte REG_BG1CNT -_080E4000: .4byte REG_BLDCNT -_080E4004: .4byte gSprites - thumb_func_end sub_80E3E64 - - thumb_func_start sub_80E4008 -sub_80E4008: @ 80E4008 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E4020 @ =gBattleAnimArgs - ldr r1, _080E4024 @ =gBattleTerrain - ldrb r1, [r1] - strh r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E4020: .4byte gBattleAnimArgs -_080E4024: .4byte gBattleTerrain - thumb_func_end sub_80E4008 - - thumb_func_start sub_80E4028 -sub_80E4028: @ 80E4028 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r0, _080E4068 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E406C - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E4084 - movs r2, 0x1 -_080E405A: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080E405A - b _080E4084 - .align 2, 0 -_080E4068: .4byte gBattleAnimArgs -_080E406C: - cmp r0, 0x1 - bne _080E4078 - ldr r0, _080E4074 @ =gAnimBankAttacker - b _080E407E - .align 2, 0 -_080E4074: .4byte gAnimBankAttacker -_080E4078: - cmp r0, 0x2 - bne _080E4084 - ldr r0, _080E409C @ =gAnimBankTarget -_080E407E: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080E4084: - ldr r0, _080E40A0 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r0, r1] - lsls r5, r0, 5 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E40A8 - ldr r0, _080E40A4 @ =gSharedMem + 0x14800 - b _080E40AA - .align 2, 0 -_080E409C: .4byte gAnimBankTarget -_080E40A0: .4byte gBattleAnimArgs -_080E40A4: .4byte gSharedMem + 0x14800 -_080E40A8: - ldr r0, _080E40C8 @ =gSharedMem + 0x18000 -_080E40AA: - adds r2, r5, r0 - lsls r1, r4, 5 - ldr r0, _080E40CC @ =gPlttBufferUnfaded - adds r1, r0 - adds r0, r2, 0 - movs r2, 0x20 - bl memcpy - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E40C8: .4byte gSharedMem + 0x18000 -_080E40CC: .4byte gPlttBufferUnfaded - thumb_func_end sub_80E4028 - - thumb_func_start sub_80E40D0 -sub_80E40D0: @ 80E40D0 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r0, _080E4110 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E4114 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E412C - movs r2, 0x1 -_080E4102: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080E4102 - b _080E412C - .align 2, 0 -_080E4110: .4byte gBattleAnimArgs -_080E4114: - cmp r0, 0x1 - bne _080E4120 - ldr r0, _080E411C @ =gAnimBankAttacker - b _080E4126 - .align 2, 0 -_080E411C: .4byte gAnimBankAttacker -_080E4120: - cmp r0, 0x2 - bne _080E412C - ldr r0, _080E4148 @ =gAnimBankTarget -_080E4126: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080E412C: - lsls r1, r4, 5 - ldr r0, _080E414C @ =gPlttBufferUnfaded - adds r5, r1, r0 - ldr r0, _080E4150 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r0, r1] - lsls r4, r0, 5 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E4158 - ldr r0, _080E4154 @ =gSharedMem + 0x14800 - b _080E415A - .align 2, 0 -_080E4148: .4byte gAnimBankTarget -_080E414C: .4byte gPlttBufferUnfaded -_080E4150: .4byte gBattleAnimArgs -_080E4154: .4byte gSharedMem + 0x14800 -_080E4158: - ldr r0, _080E4174 @ =gSharedMem + 0x18000 -_080E415A: - adds r1, r4, r0 - adds r0, r5, 0 - movs r2, 0x20 - bl memcpy - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E4174: .4byte gSharedMem + 0x18000 - thumb_func_end sub_80E40D0 - - thumb_func_start sub_80E4178 -sub_80E4178: @ 80E4178 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080E41B8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E41BC - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E41D4 - movs r2, 0x1 -_080E41AA: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080E41AA - b _080E41D4 - .align 2, 0 -_080E41B8: .4byte gBattleAnimArgs -_080E41BC: - cmp r0, 0x1 - bne _080E41C8 - ldr r0, _080E41C4 @ =gAnimBankAttacker - b _080E41CE - .align 2, 0 -_080E41C4: .4byte gAnimBankAttacker -_080E41C8: - cmp r0, 0x2 - bne _080E41D4 - ldr r0, _080E41F4 @ =gAnimBankTarget -_080E41CE: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080E41D4: - lsls r1, r4, 5 - ldr r0, _080E41F8 @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _080E41FC @ =gPlttBufferFaded - adds r1, r2 - movs r2, 0x20 - bl memcpy - adds r0, r5, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E41F4: .4byte gAnimBankTarget -_080E41F8: .4byte gPlttBufferUnfaded -_080E41FC: .4byte gPlttBufferFaded - thumb_func_end sub_80E4178 - - thumb_func_start sub_80E4200 -sub_80E4200: @ 80E4200 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080E4220 - ldr r1, _080E421C @ =gBattleAnimArgs - movs r0, 0x1 - strh r0, [r1, 0xE] - b _080E4224 - .align 2, 0 -_080E421C: .4byte gBattleAnimArgs -_080E4220: - ldr r0, _080E4230 @ =gBattleAnimArgs - strh r1, [r0, 0xE] -_080E4224: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4230: .4byte gBattleAnimArgs - thumb_func_end sub_80E4200 - - thumb_func_start sub_80E4234 -sub_80E4234: @ 80E4234 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E4254 @ =gAnimBankAttacker - ldr r1, _080E4258 @ =gBankTarget - ldrb r1, [r1] - strb r1, [r2] - ldr r2, _080E425C @ =gAnimBankTarget - ldr r1, _080E4260 @ =gEffectBank - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E4254: .4byte gAnimBankAttacker -_080E4258: .4byte gBankTarget -_080E425C: .4byte gAnimBankTarget -_080E4260: .4byte gEffectBank - thumb_func_end sub_80E4234 - - thumb_func_start sub_80E4264 -sub_80E4264: @ 80E4264 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E428C @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldr r0, _080E4290 @ =gAnimBankTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080E4298 - ldr r1, _080E4294 @ =gBattleAnimArgs - movs r0, 0x1 - b _080E429C - .align 2, 0 -_080E428C: .4byte gAnimBankAttacker -_080E4290: .4byte gAnimBankTarget -_080E4294: .4byte gBattleAnimArgs -_080E4298: - ldr r1, _080E42AC @ =gBattleAnimArgs - movs r0, 0 -_080E429C: - strh r0, [r1, 0xE] - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E42AC: .4byte gBattleAnimArgs - thumb_func_end sub_80E4264 - - thumb_func_start sub_80E42B0 -sub_80E42B0: @ 80E42B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E42C8 @ =gAnimBankTarget - ldr r1, _080E42CC @ =gBankTarget - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E42C8: .4byte gAnimBankTarget -_080E42CC: .4byte gBankTarget - thumb_func_end sub_80E42B0 - - thumb_func_start sub_80E42D0 -sub_80E42D0: @ 80E42D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E42F0 @ =gAnimBankAttacker - ldr r1, _080E42F4 @ =gBankAttacker - ldrb r1, [r1] - strb r1, [r2] - ldr r2, _080E42F8 @ =gAnimBankTarget - ldr r1, _080E42FC @ =gEffectBank - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080E42F0: .4byte gAnimBankAttacker -_080E42F4: .4byte gBankAttacker -_080E42F8: .4byte gAnimBankTarget -_080E42FC: .4byte gEffectBank - thumb_func_end sub_80E42D0 - - thumb_func_start sub_80E4300 -sub_80E4300: @ 80E4300 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E4318 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080E434E -_080E4318: - ldr r0, _080E4354 @ =gTasks - lsls r3, r4, 2 - adds r3, r4 - lsls r3, 3 - adds r3, r0 - ldr r1, _080E4358 @ =gAnimBankAttacker - ldrb r0, [r1] - lsls r0, 2 - ldr r2, _080E435C @ =gSharedMem + 0x17800 - adds r0, r2 - ldr r0, [r0] - lsls r0, 31 - lsrs r0, 31 - strh r0, [r3, 0x8] - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r0, _080E4360 @ =sub_80E4368 - str r0, [r3] - ldr r1, _080E4364 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080E434E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4354: .4byte gTasks -_080E4358: .4byte gAnimBankAttacker -_080E435C: .4byte gSharedMem + 0x17800 -_080E4360: .4byte sub_80E4368 -_080E4364: .4byte gAnimVisualTaskCount - thumb_func_end sub_80E4300 - - thumb_func_start sub_80E4368 -sub_80E4368: @ 80E4368 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080E43B0 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _080E43A8 - ldr r0, _080E43B4 @ =gAnimBankAttacker - ldrb r3, [r0] - lsls r3, 2 - ldr r0, _080E43B8 @ =gSharedMem + 0x17800 - adds r3, r0 - ldr r1, _080E43BC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r1, 0x1 - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl DestroyTask -_080E43A8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E43B0: .4byte gBattleAnimArgs -_080E43B4: .4byte gAnimBankAttacker -_080E43B8: .4byte gSharedMem + 0x17800 -_080E43BC: .4byte gTasks - thumb_func_end sub_80E4368 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 185f85f33..6d43bbb1a 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -788,7 +788,7 @@ Move_DOUBLE_EDGE: @ 81C817A waitplaysewithpan SE_W207, 192, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 16, 16, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 16, 16, 32767 createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish @@ -800,7 +800,7 @@ Move_DOUBLE_EDGE: @ 81C817A createvisualtask sub_80A8E04, 2, 8, -256, 1, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 4, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, 32767 waitforvisualfinish createvisualtask sub_80A8E04, 2, 8, -256, 0, 1 createvisualtask sub_80A8E04, 2, 8, -256, 1, 1 @@ -938,7 +938,7 @@ Move_MEGA_PUNCH: @ 81C854D loadspritegfx 10143 monbg ANIM_BANK_TARGET delay 2 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 16, 0 setalpha 12, 8 playsewithpan SE_W025, 63 createsprite gMegaPunchKickSpriteTemplate, 3, 0, 0, 0, 50 @@ -981,7 +981,7 @@ Move_MEGA_KICK: @ 81C8627 loadspritegfx 10143 monbg ANIM_BANK_TARGET delay 2 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 16, 0 setalpha 12, 8 playsewithpan SE_W025, 63 createsprite gMegaPunchKickSpriteTemplate, 3, 0, 0, 1, 50 @@ -1673,7 +1673,7 @@ Move_PROTECT: @ 81C97B5 Move_DETECT: @ 81C97D2 loadspritegfx 10071 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 9, 0 waitforvisualfinish createvisualtask sub_80E2A38, 10, 2, 1, 0, 9, 32767 delay 18 @@ -1681,7 +1681,7 @@ Move_DETECT: @ 81C97D2 createsprite gBattleAnimSpriteTemplate_83930F4, 13, 20, -20 waitforvisualfinish delay 10 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 9, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 9, 0, 0 createvisualtask sub_80E2A38, 10, 2, 2, 9, 0, 32767 waitforvisualfinish end @@ -2079,12 +2079,12 @@ Move_MEAN_LOOK: @ 81CA31A loadspritegfx 10187 monbg ANIM_BANK_DEF_PARTNER playsewithpan SE_W060, 192 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 16, 0 loopsewithpan SE_W109, 63, 15, 4 waitplaysewithpan SE_W043, 63, 85 createsprite gBattleAnimSpriteTemplate_8402264, 2 delay 120 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, 0 delay 30 clearmonbg ANIM_BANK_DEF_PARTNER waitforvisualfinish @@ -3350,7 +3350,7 @@ Move_MOONLIGHT: @ 81CBDAE loadspritegfx 10195 loadspritegfx 10031 setalpha 0, 16 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 16, 0 waitforvisualfinish createsprite gBattleAnimSpriteTemplate_83D6FC8, 2, 120, 56 createvisualtask sub_8079670, 3, 0, 16, 16, 0, 1 @@ -3555,7 +3555,7 @@ Move_CHARGE: @ 81CC1D0 loadspritegfx 10213 monbg ANIM_BANK_ATTACKER setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, 0 waitforvisualfinish createvisualtask sub_80D6B3C, 2, 0, 60, 2, 12 playsewithpan SE_W268, 192 @@ -3579,7 +3579,7 @@ Move_CHARGE: @ 81CC1D0 createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, -16, -16 playsewithpan SE_W085B, 192 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 4, 0, 0 clearmonbg ANIM_BANK_ATTACKER blendoff end @@ -3711,13 +3711,13 @@ _81CC4A7: playsewithpan SE_W233, 63 delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 6, 0 delay 37 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1 createsprite gFistFootSpriteTemplate, 2, 0, 0, 10, 1, 0 playsewithpan SE_W233B, 63 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 6, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_TARGET end @@ -3739,7 +3739,7 @@ _81CC576: playsewithpan SE_W233, 63 delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 6, 0 delay 37 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1 createsprite gFistFootSpriteTemplate, 2, 0, 0, 10, 1, 0 @@ -3751,7 +3751,7 @@ _81CC576: createsprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 3, 8, 12 playsewithpan SE_W280, 63 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 6, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_TARGET end @@ -3790,7 +3790,7 @@ Move_ENDEAVOR: @ 81CC6DA Move_ERUPTION: @ 81CC74F loadspritegfx 10201 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 2, 0, 4, 31 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 2, 0, 4, 31 waitforvisualfinish createvisualtask sub_80D5470, 2 waitplaysewithpan SE_W153, 192, 60 @@ -3810,7 +3810,7 @@ Move_ERUPTION: @ 81CC74F createvisualtask sub_80E1864, 5, 4, 8, 60 loopsewithpan SE_W088, 63, 16, 12 delay 80 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 40, 31, 4, 4, 0, 31 + createsprite gSimplePaletteBlendSpriteTemplate, 40, 31, 4, 4, 0, 31 end Move_SKILL_SWAP: @ 81CC81C @@ -3883,13 +3883,13 @@ Move_TAIL_GLOW: @ 81CC918 loadspritegfx 10212 monbg ANIM_BANK_ATTACKER setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, 0 waitforvisualfinish createsprite gBattleAnimSpriteTemplate_83DAC10, 66, 0 delay 18 loopsewithpan SE_W234, 192, 16, 6 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 4, 0, 0 clearmonbg ANIM_BANK_ATTACKER blendoff delay 1 @@ -4126,7 +4126,7 @@ Move_AROMATHERAPY: @ 81CCFAB loadspritegfx 10159 loadspritegfx 10203 loadspritegfx 10049 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 0, 7, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 0, 0, 7, 13293 delay 1 monbg ANIM_BANK_ATTACKER delay 1 @@ -4144,7 +4144,7 @@ Move_AROMATHERAPY: @ 81CCFAB waitforvisualfinish clearmonbg ANIM_BANK_ATTACKER delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 7, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 0, 7, 0, 13293 delay 1 playsewithpan SE_W287, 192 createvisualtask sub_81300A4, 2, 1 @@ -4155,7 +4155,7 @@ Move_AROMATHERAPY: @ 81CCFAB createsprite gBattleAnimSpriteTemplate_83D6CA0, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish playsewithpan SE_REAPOKE, 192 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 43, 3, 10, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 43, 3, 10, 0, 13293 createsprite gBattleAnimSpriteTemplate_83D7974, 16, 0, 0, 0, 1 waitforvisualfinish end @@ -4222,7 +4222,7 @@ Move_ODOR_SLEUTH: @ 81CD1FF Move_GRASS_WHISTLE: @ 81CD249 loadspritegfx 10072 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 13298 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, 13298 waitforvisualfinish createvisualtask sub_80CEA20, 2 waitforvisualfinish @@ -4253,19 +4253,19 @@ Move_GRASS_WHISTLE: @ 81CD249 delay 4 waitforvisualfinish createvisualtask sub_80CEAD8, 2 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 13298 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 4, 0, 13298 waitforvisualfinish end Move_TICKLE: @ 81CD33C loadspritegfx 10218 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 0, 16, 0 waitforvisualfinish createsprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8 createsprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8 playsewithpan SE_W197, 192 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 16, 0, 0 waitforvisualfinish delay 20 createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0 @@ -4540,7 +4540,7 @@ Move_SHOCK_WAVE: @ 81CD867 loadspritegfx 10037 monbg ANIM_BANK_ATTACKER setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, 0 waitforvisualfinish createvisualtask sub_80D6B3C, 2, 0, 20, 0, 2 playsewithpan SE_W268, 192 @@ -4655,7 +4655,7 @@ Move_ICE_PUNCH: @ 81CDB3E loadspritegfx 10141 loadspritegfx 10135 loadspritegfx 10143 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 7, 0 createvisualtask sub_80E2A38, 10, 4, 2, 0, 9, 32588 delay 20 playsewithpan SE_W081, 63 @@ -4680,7 +4680,7 @@ Move_ICE_PUNCH: @ 81CDB3E delay 5 createvisualtask sub_80E2A38, 10, 4, 2, 9, 0, 32588 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 7, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -4773,7 +4773,7 @@ Move_THUNDER: @ 81CDDCE waitbgfadeout createvisualtask sub_80E3A58, 5, -256, 0, 1, -1 waitbgfadein - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 16, 0 delay 16 createvisualtask sub_80E2324, 2, 257, 257, 257 playsewithpan SE_W086, 63 @@ -4817,7 +4817,7 @@ Move_THUNDER: @ 81CDDCE delay 2 createvisualtask sub_80E2324, 2, 257, 257, 257 delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 130, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 130, 1, 2, 16, 0, 0 waitforvisualfinish restorebg waitbgfadeout @@ -4831,7 +4831,7 @@ Move_THUNDER_PUNCH: @ 81CDF28 loadspritegfx 10037 monbg ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 16, 0 waitforvisualfinish playsewithpan SE_W004, 63 createsprite gFistFootSpriteTemplate, 132, 0, 0, 8, 1, 0 @@ -4851,7 +4851,7 @@ Move_THUNDER_PUNCH: @ 81CDF28 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 15, 1 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2 delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, 0 delay 20 waitforvisualfinish clearmonbg ANIM_BANK_TARGET @@ -5349,7 +5349,7 @@ Move_ICE_BEAM: @ 81CEB4D monbgprio_28 1 setalpha 12, 8 loadspritegfx 10141 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 7, 0 waitforvisualfinish createsoundtask sub_812B058, 183, -64, 63, 4, 4, 0, 10 createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20 @@ -5358,7 +5358,7 @@ Move_ICE_BEAM: @ 81CEB4D call _81CEC4E call _81CEC4E call _81CEC4E - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, -31, 0, 7, 32384 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 4, -31, 0, 7, 32384 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 25, 1 call _81CEC4E call _81CEC4E @@ -5374,9 +5374,9 @@ Move_ICE_BEAM: @ 81CEB4D waitforvisualfinish delay 20 call Unknown_81D5C36 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, 5, 7, 0, 32384 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 4, 5, 7, 0, 32384 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 7, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_TARGET blendoff @@ -5574,7 +5574,7 @@ _81CF13F: Move_POWDER_SNOW: @ 81CF146 loadspritegfx 10141 monbg ANIM_BANK_DEF_PARTNER - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 0, 3, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 1, 0, 3, 0 waitforvisualfinish panse_1B SE_W016, 192, 63, 2, 0 call _81CF190 @@ -5586,7 +5586,7 @@ Move_POWDER_SNOW: @ 81CF146 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER delay 20 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 3, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 1, 3, 0, 0 end _81CF190: createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 0, 0, 0, 56, 4, 4, 1 @@ -5700,7 +5700,7 @@ Move_ABSORB: @ 81CF427 monbg ANIM_BANK_DEF_PARTNER monbgprio_2A ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 4, 13293 waitforvisualfinish playsewithpan SE_W071, 63 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2 @@ -5713,7 +5713,7 @@ Move_ABSORB: @ 81CF427 delay 15 call Unknown_81D5EF5 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 4, 0, 13293 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -5752,7 +5752,7 @@ Move_MEGA_DRAIN: @ 81CF53F monbg ANIM_BANK_DEF_PARTNER monbgprio_2A ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 8, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 8, 13293 waitforvisualfinish playsewithpan SE_W071, 63 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1 @@ -5765,7 +5765,7 @@ Move_MEGA_DRAIN: @ 81CF53F delay 15 call Unknown_81D5EF5 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 8, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 8, 0, 13293 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -5812,7 +5812,7 @@ Move_GIGA_DRAIN: @ 81CF6CF monbg ANIM_BANK_DEF_PARTNER monbgprio_2A ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 12, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 12, 13293 waitforvisualfinish playsewithpan SE_W071, 63 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0 @@ -5825,7 +5825,7 @@ Move_GIGA_DRAIN: @ 81CF6CF delay 15 call Unknown_81D5EF5 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 12, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 12, 0, 13293 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -5890,14 +5890,14 @@ Move_LEECH_LIFE: @ 81CF8D7 delay 2 createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 7, 0 waitforvisualfinish call _81CF496 waitforvisualfinish delay 15 call Unknown_81D5EF5 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 7, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6358,14 +6358,14 @@ Move_WHIRLPOOL: @ 81D038C monbgprio_28 1 setalpha 12, 8 delay 0 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, 23968 playsewithpan SE_W250, 63 createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 50, 1 call _81D03E4 call _81D03E4 call _81D03E4 delay 12 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, 23968 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER end @@ -7406,7 +7406,7 @@ Move_STRING_SHOT: @ 81D1C98 loadspritegfx 10180 monbg ANIM_BANK_DEF_PARTNER delay 0 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 0, 9, 0 waitforvisualfinish loopsewithpan SE_W081, 192, 9, 6 call _81D1D56 @@ -7438,7 +7438,7 @@ Move_STRING_SHOT: @ 81D1C98 clearmonbg ANIM_BANK_DEF_PARTNER delay 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 9, 0, 0 end _81D1D56: createsprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 1 @@ -7450,7 +7450,7 @@ Move_SPIDER_WEB: @ 81D1D6A loadspritegfx 10180 monbg ANIM_BANK_DEF_PARTNER delay 0 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 0, 9, 0 waitforvisualfinish monbgprio_28 1 loopsewithpan SE_W081, 192, 9, 6 @@ -7474,7 +7474,7 @@ Move_SPIDER_WEB: @ 81D1D6A waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 9, 0, 0 end _81D1DF7: createsprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 0 @@ -7626,7 +7626,7 @@ _81D2084: createsprite gBattleAnimSpriteTemplate_83DAF38, 130 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 14, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 16, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER end @@ -7659,7 +7659,7 @@ Move_SOFT_BOILED: @ 81D213B delay 120 delay 7 playsewithpan SE_W030, 192 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 3, 10, 0, 31500 createsprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1 delay 8 createsprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1 @@ -7725,12 +7725,12 @@ Move_FAKE_OUT: @ 81D23A8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 5, 1 createvisualtask sub_80D1E38, 3 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, 32767 end Move_SCARY_FACE: @ 81D23E3 loadspritegfx 10218 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 27, 3, 0, 16, 0 playsewithpan SE_W060, 192 waitforvisualfinish delay 10 @@ -7742,7 +7742,7 @@ Move_SCARY_FACE: @ 81D23E3 waitforvisualfinish createvisualtask sub_80D60B4, 3, 20, 1, 0 playsewithpan SE_W081B, 63 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 27, 3, 16, 0, 0 waitforvisualfinish end @@ -7910,13 +7910,13 @@ Move_PERISH_SONG: @ 81D2784 delay 20 panse_1B SE_W195, 192, 63, 2, 0 delay 80 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 16, 0 createvisualtask sub_80E0E24, 5, 4, 0 createvisualtask sub_80E0E24, 5, 5, 0 createvisualtask sub_80E0E24, 5, 6, 0 createvisualtask sub_80E0E24, 5, 7, 0 delay 100 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, 0 createvisualtask sub_80E0E24, 5, 4, 1 createvisualtask sub_80E0E24, 5, 5, 1 createvisualtask sub_80E0E24, 5, 6, 1 @@ -7991,7 +7991,7 @@ Move_TRI_ATTACK: @ 81D2A0F delay 20 createsoundtask sub_812B058, 220, -64, 63, 5, 6, 0, 7 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 16, 0 delay 16 loadspritegfx 10033 createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 0 @@ -8027,7 +8027,7 @@ Move_TRI_ATTACK: @ 81D2A0F waitforvisualfinish loadspritegfx 10141 call Unknown_81D5C36 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, 0 waitforvisualfinish end @@ -8113,7 +8113,7 @@ Move_TRICK: @ 81D2CE8 Move_WISH: @ 81D2D66 loadspritegfx 10233 loadspritegfx 10049 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 10, 0 waitforvisualfinish panse_27 SE_W115, 63, 192, 253, 0 createsprite gBattleAnimSpriteTemplate_84024E8, 40 @@ -8122,7 +8122,7 @@ Move_WISH: @ 81D2D66 loopsewithpan SE_W215, 192, 16, 3 call Unknown_81D5ECA waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 10, 0, 0 waitforvisualfinish end @@ -8134,7 +8134,7 @@ Move_STOCKPILE: @ 81D2DAE call _81D2DEC call _81D2DEC waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 12, 0, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 12, 0, 32767 end _81D2DEC: createsprite gBattleAnimSpriteTemplate_83D6350, 2, 55, 55, 13 @@ -8319,7 +8319,7 @@ _81D3144: Move_HYPER_BEAM: @ 81D31EA loadspritegfx 10147 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 0, 16, 0 waitforvisualfinish delay 10 playsewithpan SE_W063, 192 @@ -8359,7 +8359,7 @@ Move_HYPER_BEAM: @ 81D31EA call _81D331B createvisualtask sub_80E2A38, 10, 4, 2, 11, 0, 26425 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 16, 0, 0 end _81D331B: createsprite gBattleAnimSpriteTemplate_83D6394, 130 @@ -8415,7 +8415,7 @@ _81D3415: Move_ROLE_PLAY: @ 81D3428 monbg ANIM_BANK_ATK_PARTNER createvisualtask sub_80E2A38, 10, 4, 2, 0, 16, 32767 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 10, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 10, 0 waitforvisualfinish playsewithpan SE_W161, 192 waitplaysewithpan SE_W197, 192, 30 @@ -8424,7 +8424,7 @@ Move_ROLE_PLAY: @ 81D3428 clearmonbg ANIM_BANK_ATK_PARTNER createvisualtask sub_80E2A38, 10, 4, 2, 16, 0, 32767 delay 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 10, 0, 0 end Move_REFRESH: @ 81D3485 @@ -8437,7 +8437,7 @@ Move_REFRESH: @ 81D3485 call Unknown_81D5ECA waitforvisualfinish playsewithpan SE_REAPOKE, 192 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 3, 10, 0, 31500 createsprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0 end @@ -8472,7 +8472,7 @@ Move_HYPER_VOICE: @ 81D3550 end _81D3562: createvisualtask sub_812B2B8, 5 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 8, 0, 1023 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 3, 8, 0, 1023 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_BANK_ATTACKER, 0 createsprite gBattleAnimSpriteTemplate_83D798C, 0, 45, 0, 0, 0, 0, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 6, 1 @@ -8482,14 +8482,14 @@ _81D3562: Move_SAND_TOMB: @ 81D35D2 loadspritegfx 10074 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, 563 createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 43, 1 playsewithpan SE_W328, 63 call _81D361F call _81D361F call _81D361F delay 22 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, 563 waitforvisualfinish end _81D361F: @@ -8755,7 +8755,7 @@ Move_FRENZY_PLANT: @ 81D3C7B monbg ANIM_BANK_TARGET monbgprio_28 1 setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 0, 5, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 2, 0, 5, 0 waitforvisualfinish createsprite gBattleAnimSpriteTemplate_83D6670, 2, 10, 8, 2, 0, 0, 100 playsewithpan SE_W010, 192 @@ -8803,7 +8803,7 @@ Move_FRENZY_PLANT: @ 81D3C7B createsprite gBasicHitSplatSpriteTemplate, 2, 0, 10, 1, 1 playsewithpan SE_W003, 63 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 5, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 2, 5, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_TARGET blendoff @@ -8945,7 +8945,7 @@ _81D401E: createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 goto _81D3F67 _81D4139: - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 6, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 6, 0 waitforvisualfinish createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 @@ -9002,7 +9002,7 @@ _81D4139: createsprite gBasicHitSplatSpriteTemplate, 2, -5, 3, 1, 0 createvisualtask sub_812B30C, 5, 141, 63 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 6, 0, 0 goto _81D3F67 _81D4371: createsprite gVerticalDipSpriteTemplate, 2, 4, 3, ANIM_BANK_ATTACKER @@ -9246,7 +9246,7 @@ Move_OVERHEAT: @ 81D4AFC loadspritegfx 10135 monbg ANIM_BANK_DEF_PARTNER setalpha 12, 18 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 5, 28 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 5, 28 waitforvisualfinish createvisualtask sub_80E4028, 5, 0, 1 delay 1 @@ -9255,7 +9255,7 @@ Move_OVERHEAT: @ 81D4AFC playsewithpan SE_W082, 192 createvisualtask sub_80E4028, 5, 1, 0 delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 1, 0, 13, 28 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 1, 0, 13, 28 createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1 waitforvisualfinish playsewithpan SE_W172B, 192 @@ -9301,12 +9301,12 @@ Move_OVERHEAT: @ 81D4AFC playsewithpan SE_W007, 63 createvisualtask sub_80E4178, 5, 1 delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, -1, 0, 13, 19026 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, -1, 0, 13, 19026 createvisualtask AnimTask_ShakeMon, 5, 0, 3, 0, 15, 1 waitforvisualfinish createvisualtask sub_80E40D0, 5, 0, 1 delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 5, 0, 28 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 5, 0, 28 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -9314,7 +9314,7 @@ Move_OVERHEAT: @ 81D4AFC delay 15 createvisualtask sub_80E40D0, 5, 1, 0 delay 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 13, 0, 19026 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 13, 0, 19026 waitforvisualfinish end @@ -9456,7 +9456,7 @@ Move_WATER_PULSE: @ 81D50D2 monbg ANIM_BANK_TARGET monbgprio_28 1 playsewithpan SE_W145C, 192 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 7, 29472 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 7, 29472 delay 10 createsprite gBattleAnimSpriteTemplate_83D9408, 66, 100, 100, 8, 1, 20, 40, 0 createsprite gBattleAnimSpriteTemplate_83D9408, 66, 20, 100, 16, 2, 10, 35, 1 @@ -9476,7 +9476,7 @@ Move_WATER_PULSE: @ 81D50D2 delay 13 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 8, 18, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 29472 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 7, 0, 29472 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER end @@ -9534,7 +9534,7 @@ Move_DOOM_DESIRE: @ 81D52CB delay 1 monbg ANIM_BANK_ATK_PARTNER createvisualtask sub_80E0E24, 5, 1, 0 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 4, 0 waitforvisualfinish setalpha 8, 8 playsewithpan SE_W060, 192 @@ -9542,7 +9542,7 @@ Move_DOOM_DESIRE: @ 81D52CB waitforvisualfinish delay 20 createvisualtask sub_80E0E24, 5, 1, 1 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 4, 0, 0 waitforvisualfinish clearmonbg ANIM_BANK_ATK_PARTNER blendoff @@ -9550,7 +9550,7 @@ Move_DOOM_DESIRE: @ 81D52CB Unknown_81D532F: @ 81D532F loadspritegfx 10198 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 16, 32767 waitforvisualfinish delay 10 createvisualtask sub_812E14C, 5 @@ -9577,7 +9577,7 @@ Unknown_81D532F: @ 81D532F playsewithpan SE_W120, 63 createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, 32767 waitforvisualfinish end @@ -10138,13 +10138,13 @@ ElectricityEffect: @ 81D6100 createsprite gElectricitySpriteTemplate, 130, -20, 15, 5, 1 return -Unknown_81D618B: @ 81D618B +ConfusionEffect: @ 81D618B loopsewithpan SE_W146, 63, 13, 6 - createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 0, 3, 90 - createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 51, 3, 90 - createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 102, 3, 90 - createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 153, 3, 90 - createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 204, 3, 90 + createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 0, 3, 90 + createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 51, 3, 90 + createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 102, 3, 90 + createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 153, 3, 90 + createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 204, 3, 90 return Unknown_81D61E7: @ 81D61E7 @@ -10218,7 +10218,7 @@ StatusCondition_Poison: @ 81D6270 StatusCondition_Confusion: @ 81D629B loadspritegfx 10073 - call Unknown_81D618B + call ConfusionEffect end StatusCondition_Burn: @ 81D62A4 @@ -10382,13 +10382,13 @@ _81D6522: monbgprio_28 1 setalpha 12, 8 delay 0 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, 23968 playsewithpan SE_W250, 63 createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 call _81D03E4 call _81D03E4 delay 12 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, 23968 waitforvisualfinish stopsound clearmonbg ANIM_BANK_DEF_PARTNER @@ -10411,13 +10411,13 @@ _81D6576: end _81D65D3: loadspritegfx 10074 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, 563 createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 playsewithpan SE_W328, 63 call _81D361F call _81D361F delay 22 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, 563 waitforvisualfinish stopsound end @@ -10439,7 +10439,7 @@ General_ItemEffect: @ 81D661C call Unknown_81D5ECA waitforvisualfinish playsewithpan SE_REAPOKE, 192 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 3, 7, 0, 26609 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 3, 7, 0, 26609 createsprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0 waitforvisualfinish end @@ -10484,11 +10484,11 @@ General_SmokeballEscape: @ 81D6690 end General_HangedOn: @ 81D676E - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 7, 0, 9, 31 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 2, 7, 0, 9, 31 playsewithpan SE_W082, 192 createvisualtask sub_812FC68, 5, 30, 128, 0, 1, 2, 0, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 4, 9, 0, 31 + createsprite gSimplePaletteBlendSpriteTemplate, 0, 2, 4, 9, 0, 31 waitforvisualfinish delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, 0, 0, 0, 15 @@ -10587,7 +10587,7 @@ General_FutureSightHit: @ 81D68D5 General_DoomDesireHit: @ 81D6934 createvisualtask sub_80E42B0, 2 loadspritegfx 10198 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 16, 32767 waitforvisualfinish delay 10 createvisualtask sub_812E14C, 5 @@ -10614,7 +10614,7 @@ General_DoomDesireHit: @ 81D6934 playsewithpan SE_W120, 63 createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, 32767 waitforvisualfinish end @@ -10636,7 +10636,7 @@ General_IngrainHeal: @ 81D6A39 loadspritegfx 10031 monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 4, 13293 waitforvisualfinish delay 3 call _81CF496 @@ -10644,7 +10644,7 @@ General_IngrainHeal: @ 81D6A39 delay 15 call Unknown_81D5EF5 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 4, 0, 13293 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -10653,14 +10653,14 @@ General_IngrainHeal: @ 81D6A39 General_WishHeal: @ 81D6A7C loadspritegfx 10031 loadspritegfx 10049 - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 10, 0 waitforvisualfinish playsewithpan SE_W025, 192 call Unknown_81D5ECA waitforvisualfinish call Unknown_81D5EF5 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 10, 0, 0 end Unknown_81D6AB6: @ 81D6AB6 diff --git a/include/battle_anim.h b/include/battle_anim.h index b5b85625e..e3a3bd7b1 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -34,6 +34,15 @@ struct UnknownStruct3 u8 filler1[0xB]; }; +struct EWRAM_19348_Struct +{ + /*0x00*/ u16 species2; + /*0x02*/ u16 species; + /*0x04*/ u8 filler4[0x8]; + /*0x0C*/ u32 otId; + /*0x10*/ u32 personality; +}; + extern void (*gAnimScriptCallback)(void); extern u8 gAnimScriptActive; extern u8 gAnimFriendship; @@ -129,5 +138,6 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); s16 sub_8077104(s16 newPan, int oldPan); void DestroyAnimSoundTask(u8 taskId); void sub_8076464(u8 a); +s8 BattleAnimAdjustPanning2(s8); #endif diff --git a/ld_script.txt b/ld_script.txt index 9ccf09013..27c6de433 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -295,7 +295,6 @@ SECTIONS { src/battle/anim/dark.o(.text); src/battle/anim/ground.o(.text); src/battle/anim/normal.o(.text); - asm/normal.o(.text); src/battle/anim/battle_intro.o(.text); src/bike.o(.text); src/easy_chat_1.o(.text); diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c index 4d481836c..7564c529c 100644 --- a/src/battle/anim/normal.c +++ b/src/battle/anim/normal.c @@ -2,12 +2,16 @@ #include "battle.h" #include "battle_anim.h" #include "blend_palette.h" +#include "decompress.h" +#include "ewram.h" #include "palette.h" #include "random.h" #include "rom_8077ABC.h" +#include "sound.h" #include "task.h" #include "trig.h" #include "constants/battle_constants.h" +#include "constants/songs.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; @@ -16,24 +20,43 @@ extern u8 gHealthboxIDs[]; extern u8 gBattlersCount; extern u8 gBankSpriteIds[]; extern u8 gBattleTerrain; +extern u16 gBattlerPartyIndexes[]; +extern u8 gBankTarget; +extern u8 gEffectBank; +extern u8 gBankAttacker; +extern u8 gAnimVisualTaskCount; + +extern const u8 gUnknown_08D20A14[]; +extern const u8 gUnknown_08D20A30[]; +extern const u8 gBattleStatMask1_Tilemap[]; +extern const u8 gBattleStatMask2_Tilemap[]; +extern const u8 gBattleStatMask_Gfx[]; +extern const u16 gBattleStatMask1_Pal[]; +extern const u16 gBattleStatMask2_Pal[]; +extern const u16 gBattleStatMask3_Pal[]; +extern const u16 gBattleStatMask4_Pal[]; +extern const u16 gBattleStatMask5_Pal[]; +extern const u16 gBattleStatMask6_Pal[]; +extern const u16 gBattleStatMask7_Pal[]; +extern const u16 gBattleStatMask8_Pal[]; extern void sub_80DA48C(struct Sprite *); -static void sub_80E1CB4(struct Sprite *sprite); -static void sub_80E1D84(struct Sprite *sprite); +static void AnimConfusionDuck(struct Sprite *sprite); +static void AnimSimplePaletteBlend(struct Sprite *sprite); static void sub_80E1E2C(struct Sprite *sprite); static void sub_80E1F3C(struct Sprite *sprite); static void sub_80E24B8(struct Sprite *sprite); -/*static*/ void sub_80E27A0(struct Sprite *sprite); +static void sub_80E27A0(struct Sprite *sprite); static void sub_80E2838(struct Sprite *sprite); static void sub_80E2870(struct Sprite *sprite); static void sub_80E2908(struct Sprite *sprite); static void sub_80E2978(struct Sprite *sprite); static void sub_80E29C0(struct Sprite *sprite); static void sub_80E27E8(struct Sprite *sprite); -static void sub_80E1D20(struct Sprite *sprite); -u32 sub_80E1DC4(s16); -static void sub_80E1E0C(struct Sprite *sprite); +static void AnimConfusionDuckStep(struct Sprite *sprite); +static u32 UnpackSelectedBattleAnimPalettes(s16); +static void AnimSimplePaletteBlendStep(struct Sprite *sprite); static void sub_80E1E80(struct Sprite *sprite); static void sub_80E1F0C(struct Sprite *sprite); static void sub_80E1FDC(u8, u8, u8); @@ -46,12 +69,21 @@ static void sub_80E260C(void); static void sub_80E255C(struct Sprite *sprite); static void sub_80E2710(u8 taskId); static void sub_80E29FC(struct Sprite *sprite); -/*static*/ void sub_80E2C8C(u8 taskId, u32 selectedPalettes); +static void sub_80E2C8C(u8 taskId, u32 selectedPalettes); static void sub_80E2CD0(u8 taskId); static void sub_80E2DB8(u8 taskId); -void sub_80E2E10(u8 taskId); - -const union AnimCmd gSpriteAnim_83DB37C[] = +static void sub_80E2E10(u8 taskId); +static void sub_80E2EE8(struct Sprite *sprite); +static void sub_80E3194(u8 taskId); +static void sub_80E3338(u8 taskId); +static void sub_80E3704(u8 taskId); +static void sub_80E38F8(u8 taskId); +static void sub_80E39BC(u32, u16); +static void sub_80E3AD0(u8 taskId); +static void sub_80E3E64(u8 taskId); +static void sub_80E4368(u8 taskId); + +const union AnimCmd gConfusionDuckSpriteAnim1[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(4, 8), @@ -60,7 +92,7 @@ const union AnimCmd gSpriteAnim_83DB37C[] = ANIMCMD_JUMP(0), }; -const union AnimCmd gSpriteAnim_83DB390[] = +const union AnimCmd gConfusionDuckSpriteAnim2[] = { ANIMCMD_FRAME(0, 8, .hFlip = TRUE), ANIMCMD_FRAME(4, 8), @@ -69,24 +101,24 @@ const union AnimCmd gSpriteAnim_83DB390[] = ANIMCMD_JUMP(0), }; -const union AnimCmd *const gSpriteAnimTable_83DB3A4[] = +const union AnimCmd *const gConfusionDuckSpriteAnimTable[] = { - gSpriteAnim_83DB37C, - gSpriteAnim_83DB390, + gConfusionDuckSpriteAnim1, + gConfusionDuckSpriteAnim2, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3AC = +const struct SpriteTemplate gConfusionDuckSpriteTemplate = { .tileTag = 10073, .paletteTag = 10073, .oam = &gOamData_837DF2C, - .anims = gSpriteAnimTable_83DB3A4, + .anims = gConfusionDuckSpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80E1CB4, + .callback = AnimConfusionDuck, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3C4 = +const struct SpriteTemplate gSimplePaletteBlendSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -94,7 +126,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3C4 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80E1D84, + .callback = AnimSimplePaletteBlend, }; const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3DC = @@ -270,7 +302,13 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB550 = const u16 gUnknown_083DB568 = RGB(31, 31, 31); -static void sub_80E1CB4(struct Sprite *sprite) +// Moves a spinning duck around the mon's head. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: initial wave offset +// arg 3: wave period (higher means faster wave) +// arg 4: duration +static void AnimConfusionDuck(struct Sprite *sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; @@ -288,11 +326,11 @@ static void sub_80E1CB4(struct Sprite *sprite) } sprite->data[3] = gBattleAnimArgs[4]; - sprite->callback = sub_80E1D20; + sprite->callback = AnimConfusionDuckStep; sprite->callback(sprite); } -static void sub_80E1D20(struct Sprite *sprite) +static void AnimConfusionDuckStep(struct Sprite *sprite) { sprite->pos2.x = Cos(sprite->data[0], 30); sprite->pos2.y = Sin(sprite->data[0], 10); @@ -307,27 +345,42 @@ static void sub_80E1D20(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void sub_80E1D84(struct Sprite *sprite) +// Performs a simple color blend on a specified sprite. +// arg 0: palette selector +// arg 1: delay +// arg 2: start blend amount +// arg 3: end blend amount +// arg 4: blend color +static void AnimSimplePaletteBlend(struct Sprite *sprite) { - u32 selectedPalettes = sub_80E1DC4(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); sprite->invisible = 1; - sprite->callback = sub_80E1E0C; + sprite->callback = AnimSimplePaletteBlendStep; } -u32 sub_80E1DC4(s16 a) -{ - u8 arg0 = a & 1; - u8 arg1 = (a >> 1) & 1; - u8 arg2 = (a >> 2) & 1; - u8 arg3 = (a >> 3) & 1; - u8 arg4 = (a >> 4) & 1; - u8 arg5 = (a >> 5) & 1; - u8 arg6 = (a >> 6) & 1; +// Unpacks a bitfield and returns a bitmask of its selected palettes. +// Bits 0-6 of the selector parameter result in the following palettes being selected: +// 0: battle background palettes (BG palettes 1, 2, and 3) +// 1: gAnimBankAttacker OBJ palette +// 2: gAnimBankTarget OBJ palette +// 3: gAnimBankAttacker partner OBJ palette +// 4: gAnimBankTarget partner OBJ palette +// 5: BG palette 4 +// 6: BG palette 5 +static u32 UnpackSelectedBattleAnimPalettes(s16 selector) +{ + u8 arg0 = selector & 1; + u8 arg1 = (selector >> 1) & 1; + u8 arg2 = (selector >> 2) & 1; + u8 arg3 = (selector >> 3) & 1; + u8 arg4 = (selector >> 4) & 1; + u8 arg5 = (selector >> 5) & 1; + u8 arg6 = (selector >> 6) & 1; return sub_80791A8(arg0, arg1, arg2, arg3, arg4, arg5, arg6); } -static void sub_80E1E0C(struct Sprite *sprite) +static void AnimSimplePaletteBlendStep(struct Sprite *sprite) { if (!gPaletteFade.active) DestroyAnimSprite(sprite); @@ -346,7 +399,7 @@ static void sub_80E1E2C(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[6]; sprite->data[7] = gBattleAnimArgs[0]; - selectedPalettes = sub_80E1DC4(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); sprite->invisible = 1; sprite->callback = sub_80E1E80; @@ -371,7 +424,7 @@ static void sub_80E1E80(struct Sprite *sprite) return; } - selectedPalettes = sub_80E1DC4(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); if (sprite->data[1] & 0x100) BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); else @@ -388,7 +441,7 @@ static void sub_80E1F0C(struct Sprite *sprite) if (!gPaletteFade.active) { - selectedPalettes = sub_80E1DC4(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); BlendPalettes(selectedPalettes, 0, 0); DestroyAnimSprite(sprite); } @@ -424,7 +477,7 @@ void sub_80E1F8C(u8 taskId) static void sub_80E1FDC(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = sub_80E1DC4(gTasks[taskId].data[0]); + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]); BeginNormalPaletteFade( selectedPalettes, gTasks[taskId].data[1], @@ -795,7 +848,7 @@ static void sub_80E2710(u8 taskId) } } -/*static*/ void sub_80E27A0(struct Sprite *sprite) +static void sub_80E27A0(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == 0) @@ -890,7 +943,7 @@ static void sub_80E29FC(struct Sprite *sprite) void sub_80E2A38(u8 taskId) { - u32 selectedPalettes = sub_80E1DC4(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); selectedPalettes |= sub_80792C0( (gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 8) & 1, @@ -907,7 +960,7 @@ void sub_80E2A7C(u8 taskId) u8 sp[2]; sp[1] = 0xFF; - selectedPalettes = sub_80E1DC4(1); + selectedPalettes = UnpackSelectedBattleAnimPalettes(1); switch (gBattleAnimArgs[0]) { case 2: @@ -953,7 +1006,7 @@ void sub_80E2A7C(u8 taskId) void sub_80E2B74(u8 taskId) { - u32 selectedPalettes = sub_80E1DC4(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); switch (gBattleTerrain) { @@ -998,7 +1051,7 @@ void sub_80E2C60(u8 taskId) sub_80E2C8C(taskId, 1 << (paletteIndex + 16)); } -/*static*/ void sub_80E2C8C(u8 taskId, u32 selectedPalettes) +static void sub_80E2C8C(u8 taskId, u32 selectedPalettes) { gTasks[taskId].data[0] = selectedPalettes; gTasks[taskId].data[1] = selectedPalettes >> 16; @@ -1071,3 +1124,808 @@ void sub_80E2DD8(u8 taskId) task->data[5] = 0; task->func = sub_80E2E10; } + +static void sub_80E2E10(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (task->data[4]) + { + if (task->data[1]) + { + task->data[1]--; + } + else + { + task->data[6] = duplicate_obj_of_side_rel2move_in_transparent_mode(task->data[0]); + if (task->data[6] >= 0) + { + gSprites[task->data[6]].oam.priority = task->data[0] ? 1 : 2; + gSprites[task->data[6]].data[0] = task->data[3]; + gSprites[task->data[6]].data[1] = taskId; + gSprites[task->data[6]].data[2] = 5; + gSprites[task->data[6]].callback = sub_80E2EE8; + task->data[5]++; + } + + task->data[4]--; + task->data[1] = task->data[2]; + } + } + else if (task->data[5] == 0) + { + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80E2EE8(struct Sprite *sprite) +{ + if (sprite->data[0]) + { + sprite->data[0]--; + } + else + { + gTasks[sprite->data[1]].data[sprite->data[2]]--; + obj_delete_but_dont_free_vram(sprite); + } +} + +void sub_80E2F2C(u8 taskId) +{ + u16 species; + int spriteId, newSpriteId; + u16 var0; + struct Struct_sub_8078914 subStruct; + + var0 = 0; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3D; + REG_DISPCNT |= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x0C08; + REG_BG1CNT_BITFIELD.priority = 0; + REG_BG1CNT_BITFIELD.screenSize = 0; + REG_BG1CNT_BITFIELD.areaOverflowMode = 1; + + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + + if (IsDoubleBattle() && !IsContest()) + { + if (GetBattlerPosition(gAnimBankAttacker) == B_POSITION_OPPONENT_RIGHT + || GetBattlerPosition(gAnimBankAttacker) == B_POSITION_PLAYER_LEFT) + { + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2) == TRUE) + { + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority -= 1; + REG_BG1CNT_BITFIELD.priority = 1; + var0 = 1; + } + } + } + + if (IsContest()) + { + species = eWRAM_19348Struct->species2; + } + else + { + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gAnimBankAttacker]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gAnimBankAttacker]], MON_DATA_SPECIES); + } + + spriteId = GetAnimBattlerSpriteId(0); + newSpriteId = sub_807A4A0(gAnimBankAttacker, spriteId, species); + sub_8078914(&subStruct); + DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); + LZDecompressVram(&gUnknown_08D20A30, subStruct.field_4); + if (IsContest()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + + LZDecompressVram(&gUnknown_08D20A14, subStruct.field_0); + LoadPalette(&gUnknown_083DB568, subStruct.field_8 * 16 + 1, 2); + + gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32; + gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32; + gTasks[taskId].data[0] = newSpriteId; + gTasks[taskId].data[6] = var0; + gTasks[taskId].func = sub_80E3194; +} + +static void sub_80E3194(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + struct Sprite *sprite; + + gTasks[taskId].data[10] += 4; + gBattle_BG1_Y -= 4; + if (gTasks[taskId].data[10] == 64) + { + gTasks[taskId].data[10] = 0; + gBattle_BG1_Y += 64; + if (++gTasks[taskId].data[11] == 4) + { + sub_8076464(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + + REG_DISPCNT ^= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + sprite = &gSprites[GetAnimBattlerSpriteId(0)]; // unused + sprite = &gSprites[gTasks[taskId].data[0]]; + DestroySprite(sprite); + + sub_8078914(&subStruct); + DmaFill32Defvars(3, 0, subStruct.field_4, 0x800); + if (gTasks[taskId].data[6] == 1) + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority++; + + REG_BG1CNT_BITFIELD.areaOverflowMode = 0; + do {} while(0); // needed to match. perhaps part of a debug macro + gBattle_BG1_Y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80E32E0(u8 taskId) +{ + u8 i; + + for (i = 0; i < 8; i++) + gTasks[taskId].data[i] = gBattleAnimArgs[i]; + + gTasks[taskId].func = sub_80E3338; +} + +static void sub_80E3338(u8 taskId) +{ + int i; + u8 battler1, battler2; + u16 species; + u8 spriteId, spriteId2; + u16 var0; + struct Struct_sub_8078914 subStruct; + s16 taskData[8]; + + spriteId2 = 0; + var0 = 0; + + for (i = 0; i < 8; i++) + { + taskData[i] = gTasks[taskId].data[i]; + gTasks[taskId].data[i] = 0; + } + + if (taskData[2] == 0) + battler1 = gAnimBankAttacker; + else + battler1 = gAnimBankTarget; + + battler2 = battler1 ^ 2; + if (IsContest() || (taskData[3] && !IsAnimBankSpriteVisible(battler2))) + taskData[3] = 0; + + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3D; + REG_DISPCNT |= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 0; + REG_BG1CNT_BITFIELD.screenSize = 0; + REG_BG1CNT_BITFIELD.areaOverflowMode = 1; + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + + if (IsDoubleBattle() && taskData[3] == 0) + { + if (GetBattlerPosition(battler1) == B_POSITION_OPPONENT_RIGHT + || GetBattlerPosition(battler1) == B_POSITION_PLAYER_LEFT) + { + if (IsAnimBankSpriteVisible(battler2) == TRUE) + { + gSprites[gBankSpriteIds[battler2]].oam.priority -= 1; + REG_BG1CNT_BITFIELD.priority = 1; + var0 = 1; + } + } + } + + if (IsContest()) + { + species = eWRAM_19348Struct->species2; + } + else + { + if (GetBattlerSide(battler1) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + } + + spriteId = sub_807A4A0(battler1, gBankSpriteIds[battler1], species); + if (taskData[3]) + spriteId2 = sub_807A4A0(battler2, gBankSpriteIds[battler2], species); + + sub_8078914(&subStruct); + if (taskData[0] == 0) + LZDecompressVram(&gBattleStatMask1_Tilemap, subStruct.field_4); + else + LZDecompressVram(&gBattleStatMask2_Tilemap, subStruct.field_4); + + if (IsContest()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + + LZDecompressVram(&gBattleStatMask_Gfx, subStruct.field_0); + + if (taskData[1] == 0) + LoadCompressedPalette(gBattleStatMask2_Pal, subStruct.field_8 << 4, 32); + else if (taskData[1] == 1) + LoadCompressedPalette(gBattleStatMask1_Pal, subStruct.field_8 << 4, 32); + else if (taskData[1] == 2) + LoadCompressedPalette(gBattleStatMask3_Pal, subStruct.field_8 << 4, 32); + else if (taskData[1] == 3) + LoadCompressedPalette(gBattleStatMask4_Pal, subStruct.field_8 << 4, 32); + else if (taskData[1] == 4) + LoadCompressedPalette(gBattleStatMask6_Pal, subStruct.field_8 << 4, 32); + else if (taskData[1] == 5) + LoadCompressedPalette(gBattleStatMask7_Pal, subStruct.field_8 << 4, 32); + else if (taskData[1] == 6) + LoadCompressedPalette(gBattleStatMask8_Pal, subStruct.field_8 << 4, 32); + else + LoadCompressedPalette(gBattleStatMask5_Pal, subStruct.field_8 << 4, 32); + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + + if (taskData[0] == 1) + { + gBattle_BG1_X = 64; + gTasks[taskId].data[1] = -3; + } + else + { + gTasks[taskId].data[1] = 3; + } + + if (taskData[4] == 0) + { + gTasks[taskId].data[4] = 10; + gTasks[taskId].data[5] = 20; + } + else + { + gTasks[taskId].data[4] = 13; + gTasks[taskId].data[5] = 30; + } + + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[2] = taskData[3]; + gTasks[taskId].data[3] = spriteId2; + gTasks[taskId].data[6] = var0; + gTasks[taskId].data[7] = gBankSpriteIds[battler2]; + gTasks[taskId].func = sub_80E3704; + + if (taskData[0] == 0) + PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(-64)); + else + PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(-64)); +} + +static void sub_80E3704(u8 taskId) +{ + gBattle_BG1_Y += gTasks[taskId].data[1]; + + switch (gTasks[taskId].data[15]) + { + case 0: + if (gTasks[taskId].data[11]++ > 0) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]++; + REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12]; + if (gTasks[taskId].data[12] == gTasks[taskId].data[4]) + gTasks[taskId].data[15]++; + } + break; + case 1: + if (++gTasks[taskId].data[10] == gTasks[taskId].data[5]) + gTasks[taskId].data[15]++; + break; + case 2: + if (gTasks[taskId].data[11]++ > 0) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]--; + REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12]; + if (gTasks[taskId].data[12] == 0) + { + sub_8076464(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + + REG_DISPCNT ^= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + if (gTasks[taskId].data[2]) + DestroySprite(&gSprites[gTasks[taskId].data[3]]); + + if (gTasks[taskId].data[6] == 1) + gSprites[gTasks[taskId].data[7]].oam.priority++; + + REG_BG1CNT_BITFIELD.areaOverflowMode = 0; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_80E388C(u8 taskId) +{ + u32 selectedPalettes = sub_80792C0(1, 1, 1, 1); + sub_80E39BC(selectedPalettes, 0); + gTasks[taskId].data[14] = selectedPalettes >> 16; + + selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + sub_80E39BC(selectedPalettes, 0xFFFF); + gTasks[taskId].data[15] = selectedPalettes; + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80E38F8; +} + +static void sub_80E38F8(u8 taskId) +{ + u16 i; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 6) + { + task->data[1] = 0; + task->data[2] = 16; + task->data[0]++; + } + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]--; + + for (i = 0; i < 16; i++) + { + if ((task->data[15] >> i) & 1) + { + u16 paletteOffset = i * 16; + BlendPalette(paletteOffset, 16, task->data[2], 0xFFFF); + } + + if ((task->data[14] >> i) & 1) + { + u16 paletteOffset = i * 16 + 0x100; + BlendPalette(paletteOffset, 16, task->data[2], 0); + } + } + + if (task->data[2] == 0) + task->data[0]++; + } + break; + case 2: + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80E39BC(u32 selectedPalettes, u16 color) +{ + u16 i; + + for (i = 0; i < 32; i++) + { + if (selectedPalettes & 1) + { + u16 curOffset = i * 16; + u16 paletteOffset = curOffset; + while (curOffset < paletteOffset + 16) + { + gPlttBufferFaded[curOffset] = color; + curOffset++; + } + } + + selectedPalettes >>= 1; + } +} + +void sub_80E3A08(u8 taskId) +{ + u32 i; + int j; + u32 selectedPalettes = 0; + + for (i = 0; i < 4; i++) + { + if (gAnimBankAttacker != i) + selectedPalettes |= 1 << (i + 16); + } + + for (j = 5; j != 0; j--) + gBattleAnimArgs[j] = gBattleAnimArgs[j - 1]; + + sub_80E2C8C(taskId, selectedPalettes); +} + +void sub_80E3A58(u8 taskId) +{ + u8 newTaskId; + + sub_80789D4(0); + newTaskId = CreateTask(sub_80E3AD0, 5); + if (gBattleAnimArgs[2] && GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + } + + gTasks[newTaskId].data[1] = gBattleAnimArgs[0]; + gTasks[newTaskId].data[2] = gBattleAnimArgs[1]; + gTasks[newTaskId].data[3] = gBattleAnimArgs[3]; + gTasks[newTaskId].data[0]++; + DestroyAnimVisualTask(taskId); +} + +static void sub_80E3AD0(u8 taskId) +{ + gTasks[taskId].data[10] += gTasks[taskId].data[1]; + gTasks[taskId].data[11] += gTasks[taskId].data[2]; + gBattle_BG3_X += gTasks[taskId].data[10] >> 8; + gBattle_BG3_Y += gTasks[taskId].data[11] >> 8; + gTasks[taskId].data[10] &= 0xFF; + gTasks[taskId].data[11] &= 0xFF; + + if (gBattleAnimArgs[7] == gTasks[taskId].data[3]) + { + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + sub_80789D4(1); + DestroyTask(taskId); + } +} + +void sub_80E3B4C(u8 taskId) +{ + gBattleAnimArgs[7] = GetBattlerSide(gAnimBankAttacker); + DestroyAnimVisualTask(taskId); +} + +void sub_80E3B78(u8 taskId) +{ + gBattleAnimArgs[7] = GetBattlerSide(gAnimBankTarget); + DestroyAnimVisualTask(taskId); +} + +void sub_80E3BA4(u8 taskId) +{ + gBattleAnimArgs[7] = (gAnimBankAttacker ^ 2) == gAnimBankTarget; + DestroyAnimVisualTask(taskId); +} + +void sub_80E3BDC(u8 taskId) +{ + u16 i; + + for (i = 0; i < 4; i++) + { + if (i != gAnimBankAttacker && IsAnimBankSpriteVisible(i)) + gSprites[gBankSpriteIds[i]].invisible = gBattleAnimArgs[0]; + } + + DestroyAnimVisualTask(taskId); +} + +void sub_80E3C4C(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette) +{ + u16 species; + u8 spriteId, spriteId2; + struct Struct_sub_8078914 subStruct; + u8 battler2; + + spriteId2 = 0; + battler2 = battler1 ^ 2; + + if (IsContest() || (arg4 && !IsAnimBankSpriteVisible(battler2))) + arg4 = 0; + + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3D; + REG_DISPCNT |= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 0; + REG_BG1CNT_BITFIELD.screenSize = 0; + REG_BG1CNT_BITFIELD.areaOverflowMode = 1; + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + + if (IsContest()) + { + species = eWRAM_19348Struct->species2; + } + else + { + if (GetBattlerSide(battler1) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + } + + spriteId = sub_807A4A0(battler1, gBankSpriteIds[battler1], species); + if (arg4) + spriteId2 = sub_807A4A0(battler2, gBankSpriteIds[battler2], species); + + sub_8078914(&subStruct); + LZDecompressVram(arg9, subStruct.field_4); + if (IsContest()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + + LZDecompressVram(arg8, subStruct.field_0); + LoadCompressedPalette(palette, subStruct.field_8 << 4, 32); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gTasks[taskId].data[1] = arg2; + gTasks[taskId].data[4] = arg5; + gTasks[taskId].data[5] = arg7; + gTasks[taskId].data[6] = arg6; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[2] = arg4; + gTasks[taskId].data[3] = spriteId2; + gTasks[taskId].func = sub_80E3E64; +} + +static void sub_80E3E64(u8 taskId) +{ + gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1]; + if (gTasks[taskId].data[1] < 0) + gBattle_BG1_Y -= gTasks[taskId].data[13] >> 8; + else + gBattle_BG1_Y += gTasks[taskId].data[13] >> 8; + + gTasks[taskId].data[13] &= 0xFF; + switch (gTasks[taskId].data[15]) + { + case 0: + if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6]) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]++; + REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12]; + if (gTasks[taskId].data[12] == gTasks[taskId].data[4]) + gTasks[taskId].data[15]++; + } + break; + case 1: + if (++gTasks[taskId].data[10] == gTasks[taskId].data[5]) + gTasks[taskId].data[15]++; + break; + case 2: + if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6]) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]--; + REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12]; + if (gTasks[taskId].data[12] == 0) + { + sub_8076464(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + + REG_DISPCNT ^= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + if (gTasks[taskId].data[2]) + DestroySprite(&gSprites[gTasks[taskId].data[3]]); + + REG_BG1CNT_BITFIELD.areaOverflowMode = 0; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_80E4008(u8 taskId) +{ + gBattleAnimArgs[0] = gBattleTerrain; + DestroyAnimVisualTask(taskId); +} + +void sub_80E4028(u8 taskId) +{ + u32 selectedPalettes; + u8 *dest; + int offset; + int i = 0; + + if (gBattleAnimArgs[0] == 0) + { + selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0); + while ((selectedPalettes & 1) == 0) + { + selectedPalettes >>= 1; + i++; + } + } + else if (gBattleAnimArgs[0] == 1) + { + i = gAnimBankAttacker + 16; + } + else if (gBattleAnimArgs[0] == 2) + { + i = gAnimBankTarget + 16; + } + + offset = gBattleAnimArgs[1] * 32; + dest = IsContest() ? &ewram14800[offset] : &ewram18000_2[offset]; + // This doesn't match when u16* is used. + memcpy(dest, &((u8 *)gPlttBufferUnfaded)[i * 32], 32); + DestroyAnimVisualTask(taskId); +} + + +void sub_80E40D0(u8 taskId) +{ + u32 selectedPalettes; + u8 *src; + u8 *dest; + int offset; + int i = 0; + + if (gBattleAnimArgs[0] == 0) + { + selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0); + while ((selectedPalettes & 1) == 0) + { + selectedPalettes >>= 1; + i++; + } + } + else if (gBattleAnimArgs[0] == 1) + { + i = gAnimBankAttacker + 16; + } + else if (gBattleAnimArgs[0] == 2) + { + i = gAnimBankTarget + 16; + } + + dest = &((u8 *)gPlttBufferUnfaded)[i * 32]; + offset = gBattleAnimArgs[1] * 32; + src = IsContest() ? &ewram14800[offset] : &ewram18000_2[offset]; + // This doesn't match when u16* is used. + memcpy(dest, src, 32); + DestroyAnimVisualTask(taskId); +} + +void sub_80E4178(u8 taskId) +{ + u32 selectedPalettes; + int i = 0; + + if (gBattleAnimArgs[0] == 0) + { + selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0); + while ((selectedPalettes & 1) == 0) + { + selectedPalettes >>= 1; + i++; + } + } + else if (gBattleAnimArgs[0] == 1) + { + i = gAnimBankAttacker + 16; + } + else if (gBattleAnimArgs[0] == 2) + { + i = gAnimBankTarget + 16; + } + + memcpy(&gPlttBufferUnfaded[i * 16], &gPlttBufferFaded[i * 16], 32); + DestroyAnimVisualTask(taskId); +} + +void sub_80E4200(u8 taskId) +{ + if (IsContest()) + gBattleAnimArgs[7] = 1; + else + gBattleAnimArgs[7] = 0; + + DestroyAnimVisualTask(taskId); +} + +void sub_80E4234(u8 taskId) +{ + gAnimBankAttacker = gBankTarget; + gAnimBankTarget = gEffectBank; + DestroyAnimVisualTask(taskId); +} + +void sub_80E4264(u8 taskId) +{ + if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget)) + gBattleAnimArgs[7] = 1; + else + gBattleAnimArgs[7] = 0; + + DestroyAnimVisualTask(taskId); +} + +void sub_80E42B0(u8 taskId) +{ + gAnimBankTarget = gBankTarget; + DestroyAnimVisualTask(taskId); +} + +void sub_80E42D0(u8 taskId) +{ + gAnimBankAttacker = gBankAttacker; + gAnimBankTarget = gEffectBank; + DestroyAnimVisualTask(taskId); +} + +void sub_80E4300(u8 taskId) +{ + if (IsContest()) + { + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[0] = ewram17800[gAnimBankAttacker].invisible; + ewram17800[gAnimBankAttacker].invisible = 1; + gTasks[taskId].func = sub_80E4368; + gAnimVisualTaskCount--; + } +} + +static void sub_80E4368(u8 taskId) +{ + if (gBattleAnimArgs[7] == 0x1000) + { + ewram17800[gAnimBankAttacker].invisible = gTasks[taskId].data[0] & 1; + DestroyTask(taskId); + } +} diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c index 2175f7d2a..bcdd2b693 100644 --- a/src/battle/battle_anim_812C144.c +++ b/src/battle/battle_anim_812C144.c @@ -14,15 +14,6 @@ #include "constants/songs.h" #include "constants/species.h" -struct EWRAM_19348_Struct -{ - /*0x00*/ u8 filler0[0x2]; - /*0x02*/ u16 species; - /*0x04*/ u8 filler4[0x8]; - /*0x0C*/ u32 otId; - /*0x10*/ u32 personality; -}; - extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; |