summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_anim_80CA710.s1134
-rwxr-xr-xsrc/battle_anim_80CA710.c1170
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