diff options
author | U-User-PC\User <golemgalvanize@github.com> | 2017-09-08 23:23:22 -0400 |
---|---|---|
committer | U-User-PC\User <golemgalvanize@github.com> | 2017-09-08 23:23:22 -0400 |
commit | 20d00c58ef49fa88533fa07ab1801c381f02b7bf (patch) | |
tree | ef40770b8115cdb04d5793c0bd76f7bedc8140ff | |
parent | f4045ad07a96bebaf5108873857752f3560a4af5 (diff) |
decompiled up to sub_80D2A38
-rw-r--r-- | asm/battle_anim_80CA710.s | 1134 | ||||
-rwxr-xr-x | src/battle_anim_80CA710.c | 1170 |
2 files changed, 430 insertions, 1874 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index 7696d8075..e8550cfeb 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,1140 +6,6 @@ .text - thumb_func_start sub_80D21F0 -sub_80D21F0: @ 80D21F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D2220 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080D2216 - b _080D238C -_080D2216: - lsls r0, 2 - ldr r1, _080D2224 @ =_080D2228 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D2220: .4byte gTasks -_080D2224: .4byte _080D2228 - .align 2, 0 -_080D2228: - .4byte _080D223C - .4byte _080D2284 - .4byte _080D22A6 - .4byte _080D22E8 - .4byte _080D236C -_080D223C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _080D2256 - b _080D238C -_080D2256: - strh r4, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - adds r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D2280 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x1E - ldrsh r0, [r3, r1] - cmp r0, 0x10 - beq _080D2274 - b _080D238C -_080D2274: - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r4, [r3, 0x1E] - b _080D238C - .align 2, 0 -_080D2280: .4byte REG_BLDALPHA -_080D2284: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8D - bne _080D238C - movs r0, 0x10 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080D238C -_080D22A6: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080D238C - movs r0, 0 - strh r0, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - subs r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D22E4 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r2, 0x1E - ldrsh r1, [r3, r2] - cmp r1, 0 - bne _080D238C - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r1, [r3, 0x1E] - b _080D238C - .align 2, 0 -_080D22E4: .4byte REG_BLDALPHA -_080D22E8: - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - lsls r0, r5, 2 - mov r10, r0 - add r6, sp, 0xC - movs r7, 0 - ldr r1, _080D239C @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r6 - ldr r0, _080D23A0 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D230E: - str r7, [sp, 0xC] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080D230E - str r7, [sp, 0xC] - str r6, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D239C @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _080D23A4 @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080D235C - ldr r2, _080D23A8 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D235C: - ldr r0, _080D23AC @ =gTasks - mov r2, r10 - adds r1, r2, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080D236C: - ldr r0, _080D23B0 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _080D23A8 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D238C: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D239C: .4byte 0x040000d4 -_080D23A0: .4byte 0x85000400 -_080D23A4: .4byte 0x85000200 -_080D23A8: .4byte REG_BG1CNT -_080D23AC: .4byte gTasks -_080D23B0: .4byte REG_BLDCNT - thumb_func_end sub_80D21F0 - - thumb_func_start sub_80D23B4 -sub_80D23B4: @ 80D23B4 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D2438 @ =REG_BLDCNT - ldr r2, _080D243C @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _080D2440 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080D23FE - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080D23FE: - ldr r0, _080D2444 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D2448 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _080D244C @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - mov r0, sp - bl sub_8078914 - ldr r2, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r1, _080D2450 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080D2454 @ =0x85000400 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080D245C - ldr r0, _080D2458 @ =gBattleAnimBackgroundTilemap_ScaryFaceContest - b _080D246E - .align 2, 0 -_080D2438: .4byte REG_BLDCNT -_080D243C: .4byte 0x00003f42 -_080D2440: .4byte REG_BG1CNT -_080D2444: .4byte gUnknown_030042C0 -_080D2448: .4byte gUnknown_030041B4 -_080D244C: .4byte REG_BG1HOFS -_080D2450: .4byte 0x040000d4 -_080D2454: .4byte 0x85000400 -_080D2458: .4byte gBattleAnimBackgroundTilemap_ScaryFaceContest -_080D245C: - ldr r0, _080D2478 @ =gBattleAnimEnemyMonIndex - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D2480 - ldr r0, _080D247C @ =gBattleAnimBackgroundTilemap_ScaryFacePlayer -_080D246E: - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080D2488 - .align 2, 0 -_080D2478: .4byte gBattleAnimEnemyMonIndex -_080D247C: .4byte gBattleAnimBackgroundTilemap_ScaryFacePlayer -_080D2480: - ldr r0, _080D24CC @ =gBattleAnimBackgroundTilemap_ScaryFaceOpponent - ldr r1, [sp, 0x4] - bl LZDecompressVram -_080D2488: - ldr r0, _080D24D0 @ =gBattleAnimBackgroundImage_ScaryFace - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080D24D4 @ =gBattleAnimBackgroundPalette_ScaryFace - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080D24B6 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080D24B6: - ldr r0, _080D24D8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080D24DC @ =sub_80D24E0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D24CC: .4byte gBattleAnimBackgroundTilemap_ScaryFaceOpponent -_080D24D0: .4byte gBattleAnimBackgroundImage_ScaryFace -_080D24D4: .4byte gBattleAnimBackgroundPalette_ScaryFace -_080D24D8: .4byte gTasks -_080D24DC: .4byte sub_80D24E0 - thumb_func_end sub_80D23B4 - - thumb_func_start sub_80D24E0 -sub_80D24E0: @ 80D24E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D2510 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080D2506 - b _080D267C -_080D2506: - lsls r0, 2 - ldr r1, _080D2514 @ =_080D2518 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D2510: .4byte gTasks -_080D2514: .4byte _080D2518 - .align 2, 0 -_080D2518: - .4byte _080D252C - .4byte _080D2574 - .4byte _080D2596 - .4byte _080D25D8 - .4byte _080D265C -_080D252C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - beq _080D2546 - b _080D267C -_080D2546: - strh r4, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - adds r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D2570 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x1E - ldrsh r0, [r3, r1] - cmp r0, 0xE - beq _080D2564 - b _080D267C -_080D2564: - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r4, [r3, 0x1E] - b _080D267C - .align 2, 0 -_080D2570: .4byte REG_BLDALPHA -_080D2574: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080D267C - movs r0, 0xE - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080D267C -_080D2596: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080D267C - movs r0, 0 - strh r0, [r3, 0x1C] - ldrh r1, [r3, 0x1E] - subs r1, 0x1 - strh r1, [r3, 0x1E] - ldr r2, _080D25D4 @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r2, 0x1E - ldrsh r1, [r3, r2] - cmp r1, 0 - bne _080D267C - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] - strh r1, [r3, 0x1E] - b _080D267C - .align 2, 0 -_080D25D4: .4byte REG_BLDALPHA -_080D25D8: - mov r0, sp - bl sub_8078914 - ldr r2, [sp] - movs r3, 0x80 - lsls r3, 6 - lsls r0, r5, 2 - mov r10, r0 - add r6, sp, 0xC - movs r7, 0 - ldr r1, _080D268C @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r6 - ldr r0, _080D2690 @ =0x85000400 - mov r12, r0 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080D25FE: - str r7, [sp, 0xC] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080D25FE - str r7, [sp, 0xC] - str r6, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _080D268C @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _080D2694 @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080D264C - ldr r2, _080D2698 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D264C: - ldr r0, _080D269C @ =gTasks - mov r2, r10 - adds r1, r2, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080D265C: - ldr r0, _080D26A0 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r2, _080D2698 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D267C: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D268C: .4byte 0x040000d4 -_080D2690: .4byte 0x85000400 -_080D2694: .4byte 0x85000200 -_080D2698: .4byte REG_BG1CNT -_080D269C: .4byte gTasks -_080D26A0: .4byte REG_BLDCNT - thumb_func_end sub_80D24E0 - - thumb_func_start sub_80D26A4 -sub_80D26A4: @ 80D26A4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D26F8 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080D26FC @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrb r0, [r5] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x3C] - ldr r1, _080D2700 @ =sub_80D2704 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D26F8: .4byte gBattleAnimPlayerMonIndex -_080D26FC: .4byte gBattleAnimArgs -_080D2700: .4byte sub_80D2704 - thumb_func_end sub_80D26A4 - - thumb_func_start sub_80D2704 -sub_80D2704: @ 80D2704 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080D271A - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - b _080D271E -_080D271A: - ldrh r0, [r4, 0x3C] - subs r0, 0x1 -_080D271E: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - beq _080D2790 - cmp r2, 0x1 - bne _080D27C0 - ldr r1, _080D2788 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, _080D278C @ =0xffffff00 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080D27C0 - movs r0, 0x2 - strh r0, [r4, 0x38] - b _080D27D0 - .align 2, 0 -_080D2788: .4byte 0xfffffc00 -_080D278C: .4byte 0xffffff00 -_080D2790: - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080D27C0 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] -_080D27C0: - ldr r0, _080D27D8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080D27DC @ =0x0000ffff - cmp r1, r0 - bne _080D27D0 - adds r0, r4, 0 - bl move_anim_8072740 -_080D27D0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D27D8: .4byte gBattleAnimArgs -_080D27DC: .4byte 0x0000ffff - thumb_func_end sub_80D2704 - - thumb_func_start sub_80D27E0 -sub_80D27E0: @ 80D27E0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D2828 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080D282C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldr r0, _080D2830 @ =sub_80D2834 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2828: .4byte gBattleAnimPlayerMonIndex -_080D282C: .4byte gBattleAnimArgs -_080D2830: .4byte sub_80D2834 - thumb_func_end sub_80D27E0 - - thumb_func_start sub_80D2834 -sub_80D2834: @ 80D2834 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080D2872 - movs r0, 0x22 - ldrsh r1, [r2, r0] - movs r3, 0x26 - ldrsh r0, [r2, r3] - adds r1, r0 - cmp r1, 0xA0 - bgt _080D2872 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080D2878 -_080D2872: - adds r0, r2, 0 - bl move_anim_8072740 -_080D2878: - pop {r0} - bx r0 - thumb_func_end sub_80D2834 - - thumb_func_start sub_80D287C -sub_80D287C: @ 80D287C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r1, r0, 0x1 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080D28A8 - adds r0, r2, 0 - bl move_anim_8072740 -_080D28A8: - pop {r0} - bx r0 - thumb_func_end sub_80D287C - - thumb_func_start sub_80D28AC -sub_80D28AC: @ 80D28AC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D28F8 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080D28FC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x32] - ldr r0, _080D2900 @ =sub_80D287C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D28F8: .4byte gBattleAnimPlayerMonIndex -_080D28FC: .4byte gBattleAnimArgs -_080D2900: .4byte sub_80D287C - thumb_func_end sub_80D28AC - - thumb_func_start sub_80D2904 -sub_80D2904: @ 80D2904 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D291A - adds r0, r2, 0 - bl move_anim_8072740 -_080D291A: - pop {r0} - bx r0 - thumb_func_end sub_80D2904 - - thumb_func_start sub_80D2920 -sub_80D2920: @ 80D2920 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D2934 @ =sub_80D2904 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2934: .4byte sub_80D2904 - thumb_func_end sub_80D2920 - - thumb_func_start sub_80D2938 -sub_80D2938: @ 80D2938 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2956 - ldr r0, _080D29C8 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080D2956: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r5, r0, 1 - movs r0, 0xFF - ands r5, r0 - adds r0, r5, 0 - movs r1, 0x50 - bl Sin - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4F - bgt _080D299A - adds r0, r5, 0 - movs r1, 0x50 - bl Cos - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - lsls r0, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x26] -_080D299A: - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0x5A - ble _080D29B8 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] -_080D29B8: - cmp r2, 0x64 - ble _080D29C2 - adds r0, r4, 0 - bl move_anim_8072740 -_080D29C2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D29C8: .4byte gBattleAnimArgs - thumb_func_end sub_80D2938 - - thumb_func_start sub_80D29CC -sub_80D29CC: @ 80D29CC - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080D2A22 - adds r1, r0, 0 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D2A22: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x1E - ble _080D2A30 - adds r0, r4, 0 - bl move_anim_8072740 -_080D2A30: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D29CC - - thumb_func_start sub_80D2A38 -sub_80D2A38: @ 80D2A38 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2A5C - ldr r1, _080D2A58 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080D2AB0 - .align 2, 0 -_080D2A58: .4byte gBattleAnimArgs -_080D2A5C: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - movs r5, 0 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - adds r2, r0, 0 - strh r2, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x46 - ble _080D2AB0 - ldr r0, _080D2AB8 @ =sub_80D29CC - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r0, r2, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x24] - strh r5, [r4, 0x26] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB4 - bl __umodsi3 - strh r0, [r4, 0x34] -_080D2AB0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2AB8: .4byte sub_80D29CC - thumb_func_end sub_80D2A38 - thumb_func_start sub_80D2ABC sub_80D2ABC: @ 80D2ABC push {r4,lr} diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c index f8982613b..50f0ae134 100755 --- a/src/battle_anim_80CA710.c +++ b/src/battle_anim_80CA710.c @@ -73,6 +73,11 @@ extern struct INCBIN_U8 gBattleAnimSpritePalette_206; extern struct INCBIN_U8 gAttractTilemap; extern struct INCBIN_U8 gAttractGfx; extern struct INCBIN_U8 gAttractPal; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceContest; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFacePlayer; +extern struct INCBIN_U8 gBattleAnimBackgroundTilemap_ScaryFaceOpponent; +extern struct INCBIN_U8 gBattleAnimBackgroundImage_ScaryFace; +extern struct INCBIN_U8 gBattleAnimBackgroundPalette_ScaryFace; extern s16 gUnknown_03000728[]; extern s8 gUnknown_083D680C[11][3]; extern u16 gUnknown_083D6984[]; @@ -178,6 +183,8 @@ void sub_80D154C(struct Sprite* sprite); void sub_80D158C(struct Sprite* sprite); void sub_80D1FA4(struct Sprite* sprite); void sub_80D2094(struct Sprite* sprite); +void sub_80D2704(struct Sprite* sprite); +void sub_80D2834(struct Sprite* sprite); s16 sub_80CC338(struct Sprite* sprite); @@ -250,6 +257,7 @@ void sub_80D1930(u8 taskId); void sub_80D1D48(u8 taskId); void sub_80D1D9C(u8 taskId); void sub_80D21F0(u8 taskId); +void sub_80D24E0(u8 taskId); void sub_80CC358(struct Task* task, u8 taskId); @@ -4815,43 +4823,45 @@ void sub_80D0C88(u8 taskId) void sub_80D0D68(u8 taskId) { struct Task* task = &gTasks[taskId]; + switch (task->data[4]) { - case 0: - if (++task->data[5] > 20) - task->data[4]++; - break; - case 1: - if (++task->data[1] > 3) + case 0: + if (++task->data[5] > 20) + task->data[4]++; + break; + case 1: + if (++task->data[1] > 3) + { + task->data[1] = 0; + task->data[2] = task->data[3] & 3; + task->data[5] = task->data[0] - task->data[3]; + switch (task->data[2]) { - task->data[1] = 0; - task->data[2] = 3 & task->data[3]; - task->data[5] = task->data[0] - task->data[3]; - switch (task->data[2]) - { - case 1: - task->data[5] -= 2; - default: - case 0: - break; - case 2: - case 3: - task->data[5]++; - break; - } - if (task->data[5] >= 0) - { - gUnknown_03004DE0.unk0[task->data[5]] = task->data[6]; - gUnknown_03004DE0.unk780[task->data[5]] = task->data[6]; - } - if (++task->data[3] >= task->data[15]) - { - gUnknown_03004DC0.unk15 = 3; - DestroyAnimVisualTask(taskId); - } - + case 0: + break; + case 1: + task->data[5] -= 2; + break; + case 2: + task->data[5] += 1; + break; + case 3: + task->data[5] += 1; + break; } - break; + if (task->data[5] >= 0) + { + gUnknown_03004DE0.unk0[task->data[5]] = task->data[6]; + gUnknown_03004DE0.unk780[task->data[5]] = task->data[6]; + } + if (++task->data[3] >= task->data[15]) + { + gUnknown_03004DC0.unk15 = 3; + DestroyAnimVisualTask(taskId); + } + } + break; } } #else @@ -5041,16 +5051,13 @@ void sub_80D0E8C(struct Sprite* sprite) } } -#ifdef NONMATCHING void sub_80D0FD8(struct Sprite* sprite) { - u16 sp[2]; - u8 bank; + u8 bank = 0; + u16 sp0 = 0; + u16 sp1 = 0; u8 r4; - u16* r7; - sp[0] = 0; - sp[1] = 0; - r7 = &sp[1]; + if (gBattleAnimArgs[2] == 0) bank = gBattleAnimPlayerMonIndex; else @@ -5058,122 +5065,19 @@ void sub_80D0FD8(struct Sprite* sprite) r4 = gBattleAnimArgs[3] ^ 1; if (IsDoubleBattle() && b_side_obj__get_some_boolean(bank ^ 2)) { - sub_807A3FC(bank, r4, &sp[0], r7); + sub_807A3FC(bank, r4, &sp0, &sp1); if (r4 == 0) r4 = sub_8077ABC(bank, 0); else r4 = sub_8077ABC(bank, 2); - if (GetBankSide(bank)) - { - gBattleAnimArgs[0] -= (sp[0] - r4) - gBattleAnimArgs[0]; - } + if (GetBankSide(bank) != 0) + gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird. else - gBattleAnimArgs[0] = sp[0] - r4; + gBattleAnimArgs[0] = sp0 - r4; } sprite->callback = sub_80793C4; sub_80793C4(sprite); } -#else -__attribute__((naked)) -void sub_80D0FD8(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x4\n\ - adds r6, r0, 0\n\ - movs r5, 0\n\ - mov r0, sp\n\ - strh r5, [r0]\n\ - mov r1, sp\n\ - adds r1, 0x2\n\ - strh r5, [r1]\n\ - ldr r0, _080D0FFC @ =gBattleAnimArgs\n\ - movs r3, 0x4\n\ - ldrsh r2, [r0, r3]\n\ - adds r7, r1, 0\n\ - adds r1, r0, 0\n\ - cmp r2, 0\n\ - bne _080D1004\n\ - ldr r0, _080D1000 @ =gBattleAnimPlayerMonIndex\n\ - b _080D1006\n\ - .align 2, 0\n\ -_080D0FFC: .4byte gBattleAnimArgs\n\ -_080D1000: .4byte gBattleAnimPlayerMonIndex\n\ -_080D1004:\n\ - ldr r0, _080D1040 @ =gBattleAnimEnemyMonIndex\n\ -_080D1006:\n\ - ldrb r5, [r0]\n\ - ldrb r1, [r1, 0x6]\n\ - movs r0, 0x1\n\ - adds r4, r0, 0\n\ - eors r4, r1\n\ - bl IsDoubleBattle\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D107E\n\ - movs r1, 0x2\n\ - adds r0, r5, 0\n\ - eors r0, r1\n\ - bl b_side_obj__get_some_boolean\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D107E\n\ - adds r0, r5, 0\n\ - adds r1, r4, 0\n\ - mov r2, sp\n\ - adds r3, r7, 0\n\ - bl sub_807A3FC\n\ - cmp r4, 0\n\ - bne _080D1044\n\ - adds r0, r5, 0\n\ - movs r1, 0\n\ - b _080D1048\n\ - .align 2, 0\n\ -_080D1040: .4byte gBattleAnimEnemyMonIndex\n\ -_080D1044:\n\ - adds r0, r5, 0\n\ - movs r1, 0x2\n\ -_080D1048:\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - adds r0, r5, 0\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D1074\n\ - ldr r2, _080D1070 @ =gBattleAnimArgs\n\ - mov r0, sp\n\ - ldrh r1, [r0]\n\ - subs r1, r4\n\ - ldrh r0, [r2]\n\ - subs r1, r0\n\ - subs r0, r1\n\ - strh r0, [r2]\n\ - b _080D107E\n\ - .align 2, 0\n\ -_080D1070: .4byte gBattleAnimArgs\n\ -_080D1074:\n\ - ldr r1, _080D1090 @ =gBattleAnimArgs\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - subs r0, r4\n\ - strh r0, [r1]\n\ -_080D107E:\n\ - ldr r1, _080D1094 @ =sub_80793C4\n\ - str r1, [r6, 0x1C]\n\ - adds r0, r6, 0\n\ - bl _call_via_r1\n\ - add sp, 0x4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D1090: .4byte gBattleAnimArgs\n\ -_080D1094: .4byte sub_80793C4\n\ - .syntax divided\n"); -} -#endif void sub_80D1098(struct Sprite* sprite) { @@ -5184,17 +5088,17 @@ void sub_80D1098(struct Sprite* sprite) } } -#ifdef NONMATCHING void sub_80D10B8(struct Sprite* sprite) { + u16 r9 = 0; + u16 r6 = 0; s16 sp0 = 0; s16 sp1 = 0; u8 sp4; u8 bankr7; u8 bankr8; u8 r10; - u16 r9; - u16 r6; + if (gBattleAnimArgs[5] == 0) { bankr7 = gBattleAnimPlayerMonIndex; @@ -5205,6 +5109,7 @@ void sub_80D10B8(struct Sprite* sprite) bankr7 = gBattleAnimEnemyMonIndex; bankr8 = gBattleAnimPlayerMonIndex; } + if (gBattleAnimArgs[6] == 0) { r10 = 0; @@ -5215,6 +5120,7 @@ void sub_80D10B8(struct Sprite* sprite) r10 = 2; sp4 = 3; } + if (GetBankSide(bankr7) != 0) { r9 = sub_8077ABC(bankr7, r10) + gBattleAnimArgs[0]; @@ -5229,20 +5135,17 @@ void sub_80D10B8(struct Sprite* sprite) if (gMain.inBattle && b_side_obj__get_some_boolean(bankr7 ^ 2)) { if (gSprites[gObjectBankIDs[bankr7]].pos1.x < gSprites[gObjectBankIDs[bankr7 ^ 2]].pos1.x) - { sprite->subpriority = gSprites[gObjectBankIDs[bankr7 ^ 2]].subpriority + 1; - } else - { sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; - } } else { sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; } - + } + r6 = sub_8077ABC(bankr7, sp4) + gBattleAnimArgs[1]; if (gMain.inBattle && b_side_obj__get_some_boolean(bankr8 ^ 2)) { @@ -5253,19 +5156,15 @@ void sub_80D10B8(struct Sprite* sprite) sp0 = sub_8077ABC(bankr8, r10); sp1 = sub_8077ABC(bankr8, sp4); } + if (GetBankSide(bankr8)) - { sp0 += gBattleAnimArgs[3]; - } else - { sp0 -= gBattleAnimArgs[3]; - } + sp1 += gBattleAnimArgs[4]; - sprite->data1 = r9; - sprite->pos1.x = r9; - sprite->data3 = r6; - sprite->pos1.y = r6; + sprite->pos1.x = sprite->data1 = r9; + sprite->pos1.y = sprite->data3 = r6; sprite->data2 = sp0; sprite->data4 = sp1; sprite->data0 = gBattleAnimArgs[0]; @@ -5273,300 +5172,6 @@ void sub_80D10B8(struct Sprite* sprite) sprite->callback = sub_80D1098; sub_80D1098(sprite); } -#else -__attribute__((naked)) -void sub_80D10B8(struct Sprite* sprite) -{ - asm (".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x8\n\ - adds r5, r0, 0\n\ - movs r6, 0\n\ - mov r0, sp\n\ - strh r6, [r0]\n\ - mov r1, sp\n\ - adds r1, 0x2\n\ - strh r6, [r1]\n\ - ldr r0, _080D10E4 @ =gBattleAnimArgs\n\ - movs r2, 0xA\n\ - ldrsh r0, [r0, r2]\n\ - cmp r0, 0\n\ - bne _080D10F0\n\ - ldr r0, _080D10E8 @ =gBattleAnimPlayerMonIndex\n\ - ldrb r7, [r0]\n\ - ldr r0, _080D10EC @ =gBattleAnimEnemyMonIndex\n\ - b _080D10F6\n\ - .align 2, 0\n\ -_080D10E4: .4byte gBattleAnimArgs\n\ -_080D10E8: .4byte gBattleAnimPlayerMonIndex\n\ -_080D10EC: .4byte gBattleAnimEnemyMonIndex\n\ -_080D10F0:\n\ - ldr r0, _080D1110 @ =gBattleAnimEnemyMonIndex\n\ - ldrb r7, [r0]\n\ - ldr r0, _080D1114 @ =gBattleAnimPlayerMonIndex\n\ -_080D10F6:\n\ - ldrb r0, [r0]\n\ - mov r8, r0\n\ - ldr r0, _080D1118 @ =gBattleAnimArgs\n\ - movs r3, 0xC\n\ - ldrsh r0, [r0, r3]\n\ - cmp r0, 0\n\ - bne _080D111C\n\ - movs r0, 0\n\ - mov r10, r0\n\ - movs r1, 0x1\n\ - str r1, [sp, 0x4]\n\ - b _080D1124\n\ - .align 2, 0\n\ -_080D1110: .4byte gBattleAnimEnemyMonIndex\n\ -_080D1114: .4byte gBattleAnimPlayerMonIndex\n\ -_080D1118: .4byte gBattleAnimArgs\n\ -_080D111C:\n\ - movs r2, 0x2\n\ - mov r10, r2\n\ - movs r3, 0x3\n\ - str r3, [sp, 0x4]\n\ -_080D1124:\n\ - adds r0, r7, 0\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D1180\n\ - adds r0, r7, 0\n\ - mov r1, r10\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - ldr r1, _080D1164 @ =gBattleAnimArgs\n\ - lsrs r0, 24\n\ - ldrh r1, [r1]\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - movs r0, 0x2\n\ - mov r4, r8\n\ - eors r4, r0\n\ - adds r0, r4, 0\n\ - bl b_side_obj__get_some_boolean\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D1170\n\ - ldr r2, _080D1168 @ =gSprites\n\ - ldr r0, _080D116C @ =gObjectBankIDs\n\ - adds r0, r4, r0\n\ - b _080D120A\n\ - .align 2, 0\n\ -_080D1164: .4byte gBattleAnimArgs\n\ -_080D1168: .4byte gSprites\n\ -_080D116C: .4byte gObjectBankIDs\n\ -_080D1170:\n\ - ldr r2, _080D1178 @ =gSprites\n\ - ldr r0, _080D117C @ =gObjectBankIDs\n\ - add r0, r8\n\ - b _080D120A\n\ - .align 2, 0\n\ -_080D1178: .4byte gSprites\n\ -_080D117C: .4byte gObjectBankIDs\n\ -_080D1180:\n\ - adds r0, r7, 0\n\ - mov r1, r10\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r1, _080D11EC @ =gBattleAnimArgs\n\ - ldrh r1, [r1]\n\ - subs r0, r1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - ldr r0, _080D11F0 @ =gMain\n\ - ldr r1, _080D11F4 @ =0x0000043d\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080D1204\n\ - adds r4, r7, 0\n\ - movs r0, 0x2\n\ - eors r4, r0\n\ - adds r0, r4, 0\n\ - bl b_side_obj__get_some_boolean\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D1204\n\ - ldr r3, _080D11F8 @ =gSprites\n\ - ldr r2, _080D11FC @ =gObjectBankIDs\n\ - adds r0, r7, r2\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r6, r0, r3\n\ - adds r2, r4, r2\n\ - ldrb r1, [r2]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r2, r0, r3\n\ - movs r3, 0x20\n\ - ldrsh r1, [r6, r3]\n\ - movs r3, 0x20\n\ - ldrsh r0, [r2, r3]\n\ - cmp r1, r0\n\ - bge _080D1200\n\ - adds r0, r2, 0\n\ - adds r0, 0x43\n\ - ldrb r0, [r0]\n\ - adds r0, 0x1\n\ - b _080D121A\n\ - .align 2, 0\n\ -_080D11EC: .4byte gBattleAnimArgs\n\ -_080D11F0: .4byte gMain\n\ -_080D11F4: .4byte 0x0000043d\n\ -_080D11F8: .4byte gSprites\n\ -_080D11FC: .4byte gObjectBankIDs\n\ -_080D1200:\n\ - adds r0, r6, 0\n\ - b _080D1214\n\ -_080D1204:\n\ - ldr r2, _080D1268 @ =gSprites\n\ - ldr r0, _080D126C @ =gObjectBankIDs\n\ - adds r0, r7, r0\n\ -_080D120A:\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ -_080D1214:\n\ - adds r0, 0x43\n\ - ldrb r0, [r0]\n\ - subs r0, 0x1\n\ -_080D121A:\n\ - adds r1, r5, 0\n\ - adds r1, 0x43\n\ - strb r0, [r1]\n\ - adds r0, r7, 0\n\ - ldr r1, [sp, 0x4]\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - ldr r4, _080D1270 @ =gBattleAnimArgs\n\ - lsrs r0, 24\n\ - ldrh r1, [r4, 0x2]\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - ldr r0, _080D1274 @ =gMain\n\ - ldr r2, _080D1278 @ =0x0000043d\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080D127C\n\ - mov r0, r8\n\ - movs r1, 0x2\n\ - eors r0, r1\n\ - bl b_side_obj__get_some_boolean\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D127C\n\ - ldrb r1, [r4, 0xC]\n\ - mov r0, r8\n\ - mov r2, sp\n\ - mov r3, sp\n\ - adds r3, 0x2\n\ - bl sub_807A3FC\n\ - b _080D129C\n\ - .align 2, 0\n\ -_080D1268: .4byte gSprites\n\ -_080D126C: .4byte gObjectBankIDs\n\ -_080D1270: .4byte gBattleAnimArgs\n\ -_080D1274: .4byte gMain\n\ -_080D1278: .4byte 0x0000043d\n\ -_080D127C:\n\ - mov r4, sp\n\ - mov r0, r8\n\ - mov r1, r10\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r4]\n\ - mov r0, r8\n\ - ldr r1, [sp, 0x4]\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r3, sp\n\ - strh r0, [r3, 0x2]\n\ -_080D129C:\n\ - mov r0, r8\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080D12C0\n\ - mov r3, sp\n\ - mov r2, sp\n\ - ldr r1, _080D12BC @ =gBattleAnimArgs\n\ - ldrh r0, [r1, 0x6]\n\ - ldrh r2, [r2]\n\ - adds r0, r2\n\ - strh r0, [r3]\n\ - adds r2, r1, 0\n\ - b _080D12CE\n\ - .align 2, 0\n\ -_080D12BC: .4byte gBattleAnimArgs\n\ -_080D12C0:\n\ - mov r3, sp\n\ - mov r0, sp\n\ - ldr r2, _080D1310 @ =gBattleAnimArgs\n\ - ldrh r0, [r0]\n\ - ldrh r1, [r2, 0x6]\n\ - subs r0, r1\n\ - strh r0, [r3]\n\ -_080D12CE:\n\ - ldrh r1, [r2, 0x8]\n\ - mov r0, sp\n\ - ldrh r0, [r0, 0x2]\n\ - adds r1, r0\n\ - mov r3, sp\n\ - strh r1, [r3, 0x2]\n\ - mov r0, r9\n\ - strh r0, [r5, 0x30]\n\ - strh r0, [r5, 0x20]\n\ - strh r6, [r5, 0x34]\n\ - strh r6, [r5, 0x22]\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - strh r0, [r5, 0x32]\n\ - strh r1, [r5, 0x36]\n\ - ldrh r0, [r2]\n\ - strh r0, [r5, 0x2E]\n\ - adds r0, r5, 0\n\ - bl obj_translate_based_on_private_1_2_3_4\n\ - ldr r1, _080D1314 @ =sub_80D1098\n\ - str r1, [r5, 0x1C]\n\ - adds r0, r5, 0\n\ - bl _call_via_r1\n\ - add sp, 0x8\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D1310: .4byte gBattleAnimArgs\n\ -_080D1314: .4byte sub_80D1098\n\ - .syntax divided\n"); -} -#endif void sub_80D1318(struct Sprite* sprite) { @@ -5724,209 +5329,49 @@ void sub_80D1638(u8 taskId) task->func = sub_80D16A0; } -#ifdef NONMATCHING void sub_80D16A0(u8 taskId) { struct Task* task = &gTasks[taskId]; + switch (task->data[0]) { - case 0: - gSprites[task->data[15]].pos2.x += task->data[14]; + case 0: + gSprites[task->data[15]].pos2.x += task->data[14]; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[0]++; - break; - case 1: - if (++task->data[1] > 1) + task->data[2]++; + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x += 6; + else + gSprites[task->data[15]].pos2.x -= 6; + if (++task->data[3] > 4) { - task->data[1] = 0; - if (1 & ++task->data[2]) - gSprites[task->data[15]].pos2.x += 6; - else + if (task->data[2] & 1) gSprites[task->data[15]].pos2.x -= 6; - if (++task->data[3] > 4) - { - if (task->data[2] & 1) - gSprites[task->data[15]].pos2.x -= 6; - task->data[0]++; - } - } - break; - case 2: - if (--task->data[12] != 0) - task->data[0] = 0; - else task->data[0]++; - break; - case 3: - gSprites[task->data[15]].pos2.x += task->data[13]; - if (gSprites[task->data[15]].pos2.x == 0) - DestroyAnimVisualTask(taskId); - break; + } + } + break; + case 2: + if (--task->data[12] != 0) + task->data[0] = 0; + else + task->data[0]++; + break; + case 3: + gSprites[task->data[15]].pos2.x += task->data[13]; + if (gSprites[task->data[15]].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; } } -#else -__attribute__((naked)) -void sub_80D16A0(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - ldr r1, _080D16C4 @ =gTasks\n\ - adds r3, r0, r1\n\ - movs r0, 0x8\n\ - ldrsh r4, [r3, r0]\n\ - cmp r4, 0x1\n\ - beq _080D16F4\n\ - cmp r4, 0x1\n\ - bgt _080D16C8\n\ - cmp r4, 0\n\ - beq _080D16D2\n\ - b _080D17BA\n\ - .align 2, 0\n\ -_080D16C4: .4byte gTasks\n\ -_080D16C8:\n\ - cmp r4, 0x2\n\ - beq _080D1770\n\ - cmp r4, 0x3\n\ - beq _080D178A\n\ - b _080D17BA\n\ -_080D16D2:\n\ - ldr r2, _080D16F0 @ =gSprites\n\ - movs r0, 0x26\n\ - ldrsh r1, [r3, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x24]\n\ - ldrh r2, [r0, 0x24]\n\ - adds r1, r2\n\ - strh r1, [r0, 0x24]\n\ - strh r4, [r3, 0xA]\n\ - strh r4, [r3, 0xC]\n\ - strh r4, [r3, 0xE]\n\ - b _080D1782\n\ - .align 2, 0\n\ -_080D16F0: .4byte gSprites\n\ -_080D16F4:\n\ - ldrh r0, [r3, 0xA]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xA]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x1\n\ - ble _080D17BA\n\ - movs r0, 0\n\ - strh r0, [r3, 0xA]\n\ - ldrh r0, [r3, 0xC]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xC]\n\ - ands r0, r4\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _080D172C\n\ - ldr r2, _080D1728 @ =gSprites\n\ - movs r4, 0x26\n\ - ldrsh r1, [r3, r4]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrh r1, [r0, 0x24]\n\ - adds r1, 0x6\n\ - b _080D173E\n\ - .align 2, 0\n\ -_080D1728: .4byte gSprites\n\ -_080D172C:\n\ - ldr r2, _080D176C @ =gSprites\n\ - movs r0, 0x26\n\ - ldrsh r1, [r3, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrh r1, [r0, 0x24]\n\ - subs r1, 0x6\n\ -_080D173E:\n\ - strh r1, [r0, 0x24]\n\ - ldrh r0, [r3, 0xE]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xE]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x4\n\ - ble _080D17BA\n\ - ldrh r1, [r3, 0xC]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080D1782\n\ - movs r1, 0x26\n\ - ldrsh r0, [r3, r1]\n\ - lsls r1, r0, 4\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - ldrh r0, [r1, 0x24]\n\ - subs r0, 0x6\n\ - strh r0, [r1, 0x24]\n\ - b _080D1782\n\ - .align 2, 0\n\ -_080D176C: .4byte gSprites\n\ -_080D1770:\n\ - ldrh r0, [r3, 0x20]\n\ - subs r0, 0x1\n\ - strh r0, [r3, 0x20]\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _080D1782\n\ - movs r0, 0\n\ - strh r0, [r3, 0x8]\n\ - b _080D17BA\n\ -_080D1782:\n\ - ldrh r0, [r3, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x8]\n\ - b _080D17BA\n\ -_080D178A:\n\ - ldr r2, _080D17C0 @ =gSprites\n\ - movs r4, 0x26\n\ - ldrsh r1, [r3, r4]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x22]\n\ - ldrh r4, [r0, 0x24]\n\ - adds r1, r4\n\ - strh r1, [r0, 0x24]\n\ - movs r0, 0x26\n\ - ldrsh r1, [r3, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - movs r1, 0x24\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - bne _080D17BA\n\ - adds r0, r5, 0\n\ - bl DestroyAnimVisualTask\n\ -_080D17BA:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D17C0: .4byte gSprites\n\ - .syntax divided\n"); -} -#endif void sub_80D17C4(u8 taskId) { @@ -6052,78 +5497,15 @@ void sub_80D1930(u8 taskId) } } -#ifdef NONMATCHING void sub_80D1A70(struct Sprite* sprite) { - sprite->invisible = (bool8)(gTasks[sprite->data0].data[5] & 1); + sprite->invisible = gTasks[sprite->data0].data[5]; if (sprite->animEnded) { gTasks[sprite->data0].data[sprite->data1]--; DestroySprite(sprite); } } -#else -__attribute__((naked)) -void sub_80D1A70(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - adds r3, r0, 0\n\ - ldr r4, _080D1AD8 @ =gTasks\n\ - movs r0, 0x2E\n\ - ldrsh r1, [r3, r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r4\n\ - movs r1, 0x3E\n\ - adds r1, r3\n\ - mov r12, r1\n\ - movs r2, 0x1\n\ - ldrb r1, [r0, 0x12]\n\ - ands r1, r2\n\ - lsls r1, 2\n\ - mov r0, r12\n\ - ldrb r2, [r0]\n\ - movs r0, 0x5\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - mov r1, r12\n\ - strb r0, [r1]\n\ - adds r0, r3, 0\n\ - adds r0, 0x3F\n\ - ldrb r1, [r0]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080D1AD2\n\ - movs r0, 0x30\n\ - ldrsh r1, [r3, r0]\n\ - lsls r1, 1\n\ - movs r0, 0x2E\n\ - ldrsh r2, [r3, r0]\n\ - lsls r0, r2, 2\n\ - adds r0, r2\n\ - lsls r0, 3\n\ - adds r1, r0\n\ - adds r0, r4, 0\n\ - adds r0, 0x8\n\ - adds r1, r0\n\ - ldrh r0, [r1]\n\ - subs r0, 0x1\n\ - strh r0, [r1]\n\ - adds r0, r3, 0\n\ - bl DestroySprite\n\ -_080D1AD2:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D1AD8: .4byte gTasks\n\ - .syntax divided\n"); -} -#endif void sub_80D1ADC(u8 taskId) { @@ -6383,48 +5765,356 @@ void sub_80D2100(u8 taskId) gTasks[taskId].func = sub_80D21F0; } -/* void sub_80D21F0(u8 taskId) +void sub_80D21F0(u8 taskId) { struct Struct_sub_8078914 subStruct; - int i; + switch (gTasks[taskId].data[12]) { - case 0: - if (++gTasks[taskId].data[10] == 4) + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 16) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 0x8D) + { + gTasks[taskId].data[11] = 16; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + { + u8 *addr = subStruct.field_0; + u32 size = 0x2000; + while (1) { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11]++; - REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 16) + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - gTasks[taskId].data[12]++; - gTasks[taskId].data[11] = 0; + DmaFill32(3, 0, addr, size); + break; } } - break; - case 1: - if (++gTasks[taskId].data[11] == 0x8D) + } + DmaClear32(3, subStruct.field_4, 0x800); + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + gTasks[taskId].data[12]++; + // fall through + case 4: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BG1CNT_BITFIELD.priority = 1; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D23B4(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + u8* tempvar; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 1; + REG_BG1CNT_BITFIELD.screenSize = 0; + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + sub_8078914(&subStruct); + tempvar = subStruct.field_4; + DmaFill32(3, 0x0, tempvar, 0x1000); + if (IsContest()) + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceContest, subStruct.field_4); + else if (GetBankSide(gBattleAnimEnemyMonIndex) == 1) + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFacePlayer, subStruct.field_4); + else + LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceOpponent, subStruct.field_4); + LZDecompressVram(&gBattleAnimBackgroundImage_ScaryFace, subStruct.field_0); + LoadCompressedPalette(&gBattleAnimBackgroundPalette_ScaryFace, subStruct.field_8 << 4, 32); + if (IsContest()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + gTasks[taskId].func = sub_80D24E0; +} + +void sub_80D24E0(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 14) { - gTasks[taskId].data[11] = 16; gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; } - break; - case 2: - if (++gTasks[taskId].data[10] == 4) + } + break; + case 1: + if (++gTasks[taskId].data[11] == 0x15) + { + gTasks[taskId].data[11] = 14; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11]--; - REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); - if (gTasks[taskId].data[11] == 0) + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + { + u8 *addr = subStruct.field_0; + u32 size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - gTasks[taskId].data[12]++; - gTasks[taskId].data[11] = 0; + DmaFill32(3, 0, addr, size); + break; } } + } + DmaClear32(3, subStruct.field_4, 0x800); + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + gTasks[taskId].data[12]++; + // fall through + case 4: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BG1CNT_BITFIELD.priority = 1; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D26A4(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->affineAnimPaused = 1; + sprite->data0 = gBattleAnimArgs[0]; + sprite->data1 = gBattleAnimArgs[1]; + sprite->data7 = sub_8079E90(gBattleAnimPlayerMonIndex); + sprite->callback = sub_80D2704; + sub_80D2704(sprite); +} + +void sub_80D2704(struct Sprite* sprite) +{ + if ((u16)(sprite->data1 - 0x40) <= 0x7F) + sprite->subpriority = sprite->data7 + 1; + else + sprite->subpriority = sprite->data7 - 1; + sprite->pos2.x = Sin(sprite->data1, sprite->data2 >> 8); + sprite->pos2.y = Cos(sprite->data1, sprite->data3 >> 8); + sprite->data1 = (sprite->data1 + 9) & 0xFF; + switch (sprite->data5) + { + case 1: + sprite->data2 -= 0x400; + sprite->data3 -= 0x100; + if (++sprite->data4 == sprite->data0) + { + sprite->data5 = 2; + return; + } break; - case 3: - sub_8078914(&subStruct); - for (i = 0x2000; i <= 0x3000; i += 0x1000) - DmaFill32(3, 0x0, subStruct.field_0, 0x1000); + case 0: + sprite->data2 += 0x400; + sprite->data3 += 0x100; + if (++sprite->data4 == sprite->data0) + { + sprite->data4 = 0; + sprite->data5 = 1; + } + break; + } + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + move_anim_8072740(sprite); +} + +void sub_80D27E0(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->data0 = Sin(gBattleAnimArgs[0], 10); + sprite->data1 = Cos(gBattleAnimArgs[0], 7); + sprite->callback = sub_80D2834; +} + +void sub_80D2834(struct Sprite* sprite) +{ + sprite->pos2.x += sprite->data0; + sprite->pos2.y += sprite->data1; + if (sprite->pos1.x + sprite->pos2.x + 16 > 0x110u || sprite->pos1.y + sprite->pos2.y > 0xA0 || sprite->pos1.y + sprite->pos2.y < -16) + move_anim_8072740(sprite); +} + +void sub_80D287C(struct Sprite* sprite) +{ + sprite->pos2.x += sprite->data0; + sprite->pos2.y += sprite->data1; + if (sprite->data3++ >= sprite->data2) + move_anim_8072740(sprite); +} + +void sub_80D28AC(struct Sprite* sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->data0 = Sin(gBattleAnimArgs[0], 10); + sprite->data1 = Cos(gBattleAnimArgs[0], 7); + sprite->data2 = gBattleAnimArgs[1]; + sprite->callback = sub_80D287C; +} + +void sub_80D2904(struct Sprite* sprite) +{ + if (sprite->animEnded) + move_anim_8072740(sprite); +} + +void sub_80D2920(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->callback = sub_80D2904; +} + +void sub_80D2938(struct Sprite* sprite) +{ + s16 r5; + if (sprite->data0 == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + sprite->data0++; + r5 = (sprite->data0 * 10) & 0xFF; + sprite->pos2.x = Sin(r5, 0x50) >> 8; + if (sprite->data0 <= 0x4F) + sprite->pos2.y = (sprite->data0 / 2) + (Cos(r5, 0x50) >> 8); + if (sprite->data0 > 0x5A) + { + sprite->data2++; + sprite->pos2.x -= sprite->data2 / 2; + } + if (sprite->data0 > 0x64) + move_anim_8072740(sprite); +} + +void sub_80D29CC(struct Sprite* sprite) +{ + sprite->data5++; + sprite->pos2.x = Sin(sprite->data3, 5); + sprite->pos2.y = sprite->data5 / 2; + sprite->data3 = (sprite->data3 + 3) & 0xFF; + if (sprite->data5 > 20) + sprite->invisible = sprite->data5 % 2; + if (sprite->data5 > 30) + move_anim_8072740(sprite); +} + +void sub_80D2A38(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->data1 = gBattleAnimArgs[0]; + sprite->data2 = gBattleAnimArgs[1]; + sprite->data0++; + } + else + { + sprite->data4 += sprite->data1; + sprite->pos2.x = sprite->data4 >> 8; + sprite->pos2.y = Sin(sprite->data3, sprite->data2); + sprite->data3 = (sprite->data3 + 3) & 0xFF; + if (sprite->data3 > 0x46) + { + sprite->callback = sub_80D29CC; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data3 = Random() % 0xB4; + } } +} + +/* void sub_80D2ABC(struct Sprite* sprite) +{ + int var; + s16 var2; + int var3; + if (sprite->data3 == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 0); + sprite->subpriority = sub_8079E90(gBattleAnimEnemyMonIndex) - 1; + sprite->data2 = 1; + } + sprite->data0 += sprite->data2; + var = sprite->data0 * 4; + if (var < 0) + var += 0xFF; + sprite->data1 = (sprite->data0 * 4) -(((var) >> 8) << 8); + if (sprite->data1 < 0) + sprite->data1 = 0; + var3 = sprite->data1; + var2 = sprite->data0; + var2 /= 4; + sprite->pos2.x = Cos(var3, 30 - var2); + var3 = sprite->data1; + var2 = sprite->data0 / 8; + sprite->pos2.x = Sin(var3, 10 - var2); + if (sprite->data1 > 0x80 && sprite->data2 > 0) + sprite->data2 = 0xFFFF; } */
\ No newline at end of file |