diff options
| -rw-r--r-- | asm/battle_anim_812C144.s | 867 | ||||
| -rw-r--r-- | src/battle/anim/rock.c | 8 | ||||
| -rw-r--r-- | src/battle/battle_anim.c | 2 | ||||
| -rwxr-xr-x | src/battle/battle_anim_812C144.c | 304 | ||||
| -rw-r--r-- | src/battle/battle_controller_linkopponent.c | 2 | ||||
| -rw-r--r-- | src/battle/battle_controller_linkpartner.c | 2 | ||||
| -rw-r--r-- | src/battle/battle_controller_opponent.c | 2 | ||||
| -rw-r--r-- | src/battle/battle_controller_player.c | 2 | ||||
| -rw-r--r-- | src/battle/battle_controller_wally.c | 2 | 
9 files changed, 313 insertions, 878 deletions
| diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index 46eeab67c..6264b1ead 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -5,873 +5,6 @@  	.text -	thumb_func_start sub_812C380 -sub_812C380: @ 812C380 -	push {r4,lr} -	adds r4, r0, 0 -	ldr r2, _0812C3A0 @ =REG_BLDALPHA -	ldrh r1, [r4, 0x2E] -	movs r0, 0x10 -	subs r0, r1 -	lsls r0, 8 -	orrs r0, r1 -	strh r0, [r2] -	movs r1, 0x30 -	ldrsh r0, [r4, r1] -	cmp r0, 0 -	beq _0812C3A4 -	ldrh r0, [r4, 0x2E] -	subs r0, 0x1 -	b _0812C3A8 -	.align 2, 0 -_0812C3A0: .4byte REG_BLDALPHA -_0812C3A4: -	ldrh r0, [r4, 0x2E] -	adds r0, 0x1 -_0812C3A8: -	strh r0, [r4, 0x2E] -	movs r1, 0x2E -	ldrsh r0, [r4, r1] -	cmp r0, 0xF -	beq _0812C3B6 -	cmp r0, 0x4 -	bne _0812C3BE -_0812C3B6: -	ldrh r0, [r4, 0x30] -	movs r1, 0x1 -	eors r0, r1 -	strh r0, [r4, 0x30] -_0812C3BE: -	ldrh r0, [r4, 0x32] -	adds r1, r0, 0x1 -	strh r1, [r4, 0x32] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x46 -	ble _0812C3FC -	ldr r0, _0812C404 @ =REG_BLDCNT -	movs r1, 0 -	strh r1, [r0] -	adds r0, 0x2 -	strh r1, [r0] -	adds r0, r4, 0 -	movs r1, 0x1 -	bl StartSpriteAffineAnim -	movs r0, 0 -	strh r0, [r4, 0x32] -	adds r2, r4, 0 -	adds r2, 0x3E -	ldrb r0, [r2] -	movs r1, 0x4 -	orrs r0, r1 -	strb r0, [r2] -	subs r2, 0x12 -	ldrb r0, [r2] -	movs r1, 0x80 -	orrs r0, r1 -	strb r0, [r2] -	ldr r0, _0812C408 @ =sub_812C40C -	str r0, [r4, 0x1C] -_0812C3FC: -	pop {r4} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C404: .4byte REG_BLDCNT -_0812C408: .4byte sub_812C40C -	thumb_func_end sub_812C380 - -	thumb_func_start sub_812C40C -sub_812C40C: @ 812C40C -	push {lr} -	adds r3, r0, 0 -	ldrh r0, [r3, 0x32] -	adds r1, r0, 0x1 -	strh r1, [r3, 0x32] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x9 -	ble _0812C448 -	adds r2, r3, 0 -	adds r2, 0x3E -	ldrb r1, [r2] -	movs r0, 0x5 -	negs r0, r0 -	ands r0, r1 -	strb r0, [r2] -	subs r2, 0x12 -	ldrb r1, [r2] -	movs r0, 0x7F -	ands r0, r1 -	strb r0, [r2] -	adds r0, r3, 0 -	adds r0, 0x3F -	ldrb r1, [r0] -	movs r0, 0x20 -	ands r0, r1 -	cmp r0, 0 -	beq _0812C448 -	ldr r0, _0812C44C @ =sub_812C450 -	str r0, [r3, 0x1C] -_0812C448: -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C44C: .4byte sub_812C450 -	thumb_func_end sub_812C40C - -	thumb_func_start sub_812C450 -sub_812C450: @ 812C450 -	push {lr} -	adds r2, r0, 0 -	movs r1, 0x34 -	ldrsh r0, [r2, r1] -	cmp r0, 0x6 -	bhi _0812C4A8 -	lsls r0, 2 -	ldr r1, _0812C468 @ =_0812C46C -	adds r0, r1 -	ldr r0, [r0] -	mov pc, r0 -	.align 2, 0 -_0812C468: .4byte _0812C46C -	.align 2, 0 -_0812C46C: -	.4byte _0812C488 -	.4byte _0812C488 -	.4byte _0812C492 -	.4byte _0812C492 -	.4byte _0812C4A0 -	.4byte _0812C4A0 -	.4byte _0812C4A8 -_0812C488: -	movs r1, 0 -	movs r0, 0x1 -	strh r0, [r2, 0x24] -	strh r1, [r2, 0x26] -	b _0812C4B0 -_0812C492: -	ldr r0, _0812C49C @ =0x0000ffff -	strh r0, [r2, 0x24] -	movs r0, 0 -	b _0812C4AE -	.align 2, 0 -_0812C49C: .4byte 0x0000ffff -_0812C4A0: -	movs r0, 0 -	strh r0, [r2, 0x24] -	movs r0, 0x1 -	b _0812C4AE -_0812C4A8: -	movs r0, 0 -	strh r0, [r2, 0x24] -	ldr r0, _0812C4F0 @ =0x0000ffff -_0812C4AE: -	strh r0, [r2, 0x26] -_0812C4B0: -	ldrh r0, [r2, 0x34] -	adds r0, 0x1 -	movs r3, 0 -	strh r0, [r2, 0x34] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x7 -	ble _0812C4C2 -	strh r3, [r2, 0x34] -_0812C4C2: -	ldrh r0, [r2, 0x36] -	adds r1, r0, 0x1 -	strh r1, [r2, 0x36] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0xF -	ble _0812C4EA -	movs r0, 0x10 -	strh r0, [r2, 0x2E] -	strh r3, [r2, 0x30] -	ldr r1, _0812C4F4 @ =REG_BLDCNT -	movs r3, 0xFD -	lsls r3, 6 -	adds r0, r3, 0 -	strh r0, [r1] -	adds r1, 0x2 -	ldrh r0, [r2, 0x2E] -	strh r0, [r1] -	ldr r0, _0812C4F8 @ =sub_812C4FC -	str r0, [r2, 0x1C] -_0812C4EA: -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C4F0: .4byte 0x0000ffff -_0812C4F4: .4byte REG_BLDCNT -_0812C4F8: .4byte sub_812C4FC -	thumb_func_end sub_812C450 - -	thumb_func_start sub_812C4FC -sub_812C4FC: @ 812C4FC -	push {r4,lr} -	adds r2, r0, 0 -	ldr r4, _0812C558 @ =REG_BLDALPHA -	ldrh r1, [r2, 0x2E] -	movs r0, 0x10 -	subs r0, r1 -	lsls r0, 8 -	orrs r0, r1 -	strh r0, [r4] -	ldrh r0, [r2, 0x30] -	adds r1, r0, 0x1 -	strh r1, [r2, 0x30] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x1 -	ble _0812C526 -	ldrh r0, [r2, 0x2E] -	subs r0, 0x1 -	movs r1, 0 -	strh r0, [r2, 0x2E] -	strh r1, [r2, 0x30] -_0812C526: -	movs r1, 0x2E -	ldrsh r0, [r2, r1] -	cmp r0, 0 -	bne _0812C53A -	adds r3, r2, 0 -	adds r3, 0x3E -	ldrb r0, [r3] -	movs r1, 0x4 -	orrs r0, r1 -	strb r0, [r3] -_0812C53A: -	movs r1, 0x2E -	ldrsh r0, [r2, r1] -	cmp r0, 0 -	bge _0812C550 -	ldr r1, _0812C55C @ =REG_BLDCNT -	movs r0, 0 -	strh r0, [r1] -	strh r0, [r4] -	adds r0, r2, 0 -	bl DestroyAnimSprite -_0812C550: -	pop {r4} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C558: .4byte REG_BLDALPHA -_0812C55C: .4byte REG_BLDCNT -	thumb_func_end sub_812C4FC - -	thumb_func_start sub_812C560 -sub_812C560: @ 812C560 -	lsls r0, 24 -	lsrs r0, 24 -	ldr r2, _0812C57C @ =gTasks -	lsls r1, r0, 2 -	adds r1, r0 -	lsls r1, 3 -	adds r1, r2 -	ldr r0, _0812C580 @ =sub_812C588 -	str r0, [r1] -	ldr r1, _0812C584 @ =gAnimVisualTaskCount -	ldrb r0, [r1] -	subs r0, 0x1 -	strb r0, [r1] -	bx lr -	.align 2, 0 -_0812C57C: .4byte gTasks -_0812C580: .4byte sub_812C588 -_0812C584: .4byte gAnimVisualTaskCount -	thumb_func_end sub_812C560 - -	thumb_func_start sub_812C588 -sub_812C588: @ 812C588 -	push {r4-r7,lr} -	mov r7, r9 -	mov r6, r8 -	push {r6,r7} -	lsls r0, 24 -	lsrs r4, r0, 24 -	bl sub_80789BC -	lsls r0, 24 -	lsrs r6, r0, 24 -	ldr r7, _0812C614 @ =gTasks -	lsls r5, r4, 2 -	adds r1, r5, r4 -	lsls r1, 3 -	adds r1, r7 -	ldrh r0, [r1, 0x12] -	adds r0, 0x1 -	strh r0, [r1, 0x12] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x4 -	bne _0812C5F8 -	ldr r0, _0812C618 @ =gPlttBufferFaded -	lsls r2, r6, 4 -	adds r1, r2, 0 -	adds r1, 0xB -	lsls r1, 1 -	adds r1, r0 -	ldrh r3, [r1] -	mov r8, r3 -	movs r3, 0xA -	mov r9, r7 -	adds r7, r5, 0 -	mov r12, r0 -	adds r5, r2, 0 -	lsls r0, r6, 5 -	add r0, r12 -	adds r2, r0, 0 -	adds r2, 0x14 -_0812C5D6: -	ldrh r0, [r2] -	strh r0, [r1] -	subs r2, 0x2 -	subs r1, 0x2 -	subs r3, 0x1 -	cmp r3, 0 -	bgt _0812C5D6 -	adds r0, r5, 0x1 -	lsls r0, 1 -	add r0, r12 -	movs r1, 0 -	mov r2, r8 -	strh r2, [r0] -	adds r0, r7, r4 -	lsls r0, 3 -	add r0, r9 -	strh r1, [r0, 0x12] -_0812C5F8: -	ldr r0, _0812C61C @ =gBattleAnimArgs -	ldrh r1, [r0, 0xE] -	ldr r0, _0812C620 @ =0x0000ffff -	cmp r1, r0 -	bne _0812C608 -	adds r0, r4, 0 -	bl DestroyTask -_0812C608: -	pop {r3,r4} -	mov r8, r3 -	mov r9, r4 -	pop {r4-r7} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C614: .4byte gTasks -_0812C618: .4byte gPlttBufferFaded -_0812C61C: .4byte gBattleAnimArgs -_0812C620: .4byte 0x0000ffff -	thumb_func_end sub_812C588 - -	thumb_func_start sub_812C624 -sub_812C624: @ 812C624 -	lsls r0, 24 -	lsrs r0, 24 -	ldr r2, _0812C640 @ =gTasks -	lsls r1, r0, 2 -	adds r1, r0 -	lsls r1, 3 -	adds r1, r2 -	ldr r0, _0812C644 @ =sub_812C64C -	str r0, [r1] -	ldr r1, _0812C648 @ =gAnimVisualTaskCount -	ldrb r0, [r1] -	subs r0, 0x1 -	strb r0, [r1] -	bx lr -	.align 2, 0 -_0812C640: .4byte gTasks -_0812C644: .4byte sub_812C64C -_0812C648: .4byte gAnimVisualTaskCount -	thumb_func_end sub_812C624 - -	thumb_func_start sub_812C64C -sub_812C64C: @ 812C64C -	push {r4-r7,lr} -	mov r7, r10 -	mov r6, r9 -	mov r5, r8 -	push {r5-r7} -	lsls r0, 24 -	lsrs r0, 24 -	mov r8, r0 -	bl sub_80789BC -	lsls r0, 24 -	lsrs r7, r0, 24 -	ldr r5, _0812C70C @ =gTasks -	mov r0, r8 -	lsls r3, r0, 2 -	adds r1, r3, r0 -	lsls r1, 3 -	adds r1, r5 -	ldrh r0, [r1, 0x12] -	adds r0, 0x1 -	strh r0, [r1, 0x12] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x4 -	bne _0812C6EE -	ldr r0, _0812C710 @ =gPlttBufferFaded -	lsls r2, r7, 4 -	adds r1, r2, 0 -	adds r1, 0xB -	lsls r1, 1 -	adds r1, r0 -	ldrh r6, [r1] -	movs r4, 0xA -	mov r10, r3 -	mov r9, r0 -	adds r5, r2, 0 -	ldr r2, _0812C714 @ =gPlttBufferUnfaded -	mov r12, r2 -	lsls r0, r7, 5 -	add r0, r9 -	adds r3, r0, 0 -	adds r3, 0x14 -_0812C6A0: -	ldrh r0, [r3] -	strh r0, [r1] -	subs r3, 0x2 -	subs r1, 0x2 -	subs r4, 0x1 -	cmp r4, 0 -	bgt _0812C6A0 -	adds r0, r5, 0x1 -	lsls r0, 1 -	add r0, r9 -	strh r6, [r0] -	adds r1, r5, 0 -	adds r1, 0xB -	lsls r1, 1 -	add r1, r12 -	ldrh r6, [r1] -	movs r4, 0xA -	lsls r0, r7, 5 -	add r0, r12 -	adds r2, r0, 0 -	adds r2, 0x14 -_0812C6CA: -	ldrh r0, [r2] -	strh r0, [r1] -	subs r2, 0x2 -	subs r1, 0x2 -	subs r4, 0x1 -	cmp r4, 0 -	bgt _0812C6CA -	adds r0, r5, 0x1 -	lsls r0, 1 -	add r0, r12 -	movs r1, 0 -	strh r6, [r0] -	mov r0, r10 -	add r0, r8 -	lsls r0, 3 -	ldr r2, _0812C70C @ =gTasks -	adds r0, r2 -	strh r1, [r0, 0x12] -_0812C6EE: -	ldr r0, _0812C718 @ =gBattleAnimArgs -	ldrh r1, [r0, 0xE] -	ldr r0, _0812C71C @ =0x0000ffff -	cmp r1, r0 -	bne _0812C6FE -	mov r0, r8 -	bl DestroyTask -_0812C6FE: -	pop {r3-r5} -	mov r8, r3 -	mov r9, r4 -	mov r10, r5 -	pop {r4-r7} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C70C: .4byte gTasks -_0812C710: .4byte gPlttBufferFaded -_0812C714: .4byte gPlttBufferUnfaded -_0812C718: .4byte gBattleAnimArgs -_0812C71C: .4byte 0x0000ffff -	thumb_func_end sub_812C64C - -	thumb_func_start sub_812C720 -sub_812C720: @ 812C720 -	push {r4,r5,lr} -	sub sp, 0x4 -	adds r4, r0, 0 -	movs r1, 0x1 -	bl InitAnimSpritePos -	ldr r0, _0812C784 @ =gAnimBankTarget -	ldrb r0, [r0] -	mov r5, sp -	adds r5, 0x2 -	movs r1, 0 -	mov r2, sp -	adds r3, r5, 0 -	bl SetAverageBattlerPositions -	ldr r0, _0812C788 @ =gAnimBankAttacker -	ldrb r0, [r0] -	bl GetBattlerSide -	lsls r0, 24 -	cmp r0, 0 -	beq _0812C754 -	ldr r1, _0812C78C @ =gBattleAnimArgs -	ldrh r0, [r1, 0x4] -	negs r0, r0 -	strh r0, [r1, 0x4] -_0812C754: -	ldr r1, _0812C78C @ =gBattleAnimArgs -	ldrh r0, [r1, 0x8] -	strh r0, [r4, 0x2E] -	mov r2, sp -	ldrh r0, [r1, 0x4] -	ldrh r2, [r2] -	adds r0, r2 -	strh r0, [r4, 0x32] -	ldrh r0, [r1, 0x6] -	ldrh r5, [r5] -	adds r0, r5 -	strh r0, [r4, 0x36] -	ldr r0, _0812C790 @ =0x0000ffce -	strh r0, [r4, 0x38] -	adds r0, r4, 0 -	bl InitAnimSpriteTranslationOverDuration -	ldr r0, _0812C794 @ =sub_812C798 -	str r0, [r4, 0x1C] -	add sp, 0x4 -	pop {r4,r5} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C784: .4byte gAnimBankTarget -_0812C788: .4byte gAnimBankAttacker -_0812C78C: .4byte gBattleAnimArgs -_0812C790: .4byte 0x0000ffce -_0812C794: .4byte sub_812C798 -	thumb_func_end sub_812C720 - -	thumb_func_start sub_812C798 -sub_812C798: @ 812C798 -	push {r4,lr} -	adds r4, r0, 0 -	bl TranslateAnimSpriteLinearAndSine -	lsls r0, 24 -	cmp r0, 0 -	beq _0812C7BA -	movs r1, 0 -	movs r0, 0x1E -	strh r0, [r4, 0x2E] -	strh r1, [r4, 0x30] -	ldr r0, _0812C7C0 @ =WaitAnimForDuration -	str r0, [r4, 0x1C] -	ldr r1, _0812C7C4 @ =sub_812C7C8 -	adds r0, r4, 0 -	bl StoreSpriteCallbackInData -_0812C7BA: -	pop {r4} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C7C0: .4byte WaitAnimForDuration -_0812C7C4: .4byte sub_812C7C8 -	thumb_func_end sub_812C798 - -	thumb_func_start sub_812C7C8 -sub_812C7C8: @ 812C7C8 -	push {lr} -	adds r3, r0, 0 -	ldrh r1, [r3, 0x30] -	movs r0, 0x1 -	ands r0, r1 -	cmp r0, 0 -	beq _0812C7F4 -	movs r0, 0x3E -	adds r0, r3 -	mov r12, r0 -	ldrb r2, [r0] -	lsls r0, r2, 29 -	lsrs r0, 31 -	movs r1, 0x1 -	eors r1, r0 -	lsls r1, 2 -	movs r0, 0x5 -	negs r0, r0 -	ands r0, r2 -	orrs r0, r1 -	mov r1, r12 -	strb r0, [r1] -_0812C7F4: -	ldrh r0, [r3, 0x30] -	adds r0, 0x1 -	strh r0, [r3, 0x30] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x10 -	bne _0812C808 -	adds r0, r3, 0 -	bl DestroyAnimSprite -_0812C808: -	pop {r0} -	bx r0 -	thumb_func_end sub_812C7C8 - -	thumb_func_start sub_812C80C -sub_812C80C: @ 812C80C -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_8078650 -	ldr r5, _0812C83C @ =gBattleAnimArgs -	movs r0, 0 -	ldrsh r1, [r5, r0] -	adds r0, r4, 0 -	bl sub_807867C -	ldrh r0, [r5, 0x2] -	ldrh r1, [r4, 0x22] -	adds r0, r1 -	strh r0, [r4, 0x22] -	ldr r0, _0812C840 @ =sub_8078600 -	str r0, [r4, 0x1C] -	ldr r1, _0812C844 @ =DestroyAnimSprite -	adds r0, r4, 0 -	bl StoreSpriteCallbackInData -	pop {r4,r5} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C83C: .4byte gBattleAnimArgs -_0812C840: .4byte sub_8078600 -_0812C844: .4byte DestroyAnimSprite -	thumb_func_end sub_812C80C - -	thumb_func_start sub_812C848 -sub_812C848: @ 812C848 -	push {r4,r5,lr} -	adds r4, r0, 0 -	movs r1, 0x2E -	ldrsh r0, [r4, r1] -	cmp r0, 0 -	bne _0812C8A8 -	adds r0, r4, 0 -	bl sub_8078650 -	ldr r5, _0812C884 @ =gBattleAnimArgs -	movs r2, 0 -	ldrsh r1, [r5, r2] -	adds r0, r4, 0 -	bl sub_807867C -	bl IsContest -	lsls r0, 24 -	cmp r0, 0 -	bne _0812C89C -	ldr r0, _0812C888 @ =gAnimBankAttacker -	ldrb r0, [r0] -	bl GetBattlerSide -	lsls r0, 24 -	cmp r0, 0 -	bne _0812C88C -	ldrh r0, [r5, 0x4] -	b _0812C8A2 -	.align 2, 0 -_0812C884: .4byte gBattleAnimArgs -_0812C888: .4byte gAnimBankAttacker -_0812C88C: -	movs r1, 0x4 -	ldrsh r0, [r5, r1] -	negs r0, r0 -	strh r0, [r4, 0x30] -	movs r2, 0x6 -	ldrsh r0, [r5, r2] -	negs r0, r0 -	b _0812C8A6 -_0812C89C: -	movs r1, 0x4 -	ldrsh r0, [r5, r1] -	negs r0, r0 -_0812C8A2: -	strh r0, [r4, 0x30] -	ldrh r0, [r5, 0x6] -_0812C8A6: -	strh r0, [r4, 0x32] -_0812C8A8: -	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 r0, 2 -	movs r3, 0xFF -	ldrh r1, [r4, 0x30] -	ldrh r2, [r4, 0x34] -	adds r1, r2 -	strh r1, [r4, 0x34] -	ldrh r1, [r4, 0x32] -	ldrh r2, [r4, 0x36] -	adds r1, r2 -	strh r1, [r4, 0x36] -	movs r2, 0x34 -	ldrsh r1, [r4, r2] -	lsrs r2, r1, 31 -	adds r1, r2 -	asrs r1, 1 -	strh r1, [r4, 0x24] -	ands r0, r3 -	movs r1, 0x5 -	bl Sin -	movs r2, 0x36 -	ldrsh r1, [r4, r2] -	lsrs r2, r1, 31 -	adds r1, r2 -	asrs r1, 1 -	adds r0, r1 -	strh r0, [r4, 0x26] -	ldrh r0, [r4, 0x24] -	ldrh r1, [r4, 0x20] -	adds r0, r1 -	lsls r0, 16 -	lsrs r0, 16 -	cmp r0, 0xF0 -	bls _0812C900 -	adds r0, r4, 0 -	bl DestroyAnimSprite -_0812C900: -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end sub_812C848 - -	thumb_func_start sub_812C908 -sub_812C908: @ 812C908 -	push {lr} -	adds r2, r0, 0 -	adds r0, 0x3F -	ldrb r1, [r0] -	movs r0, 0x10 -	ands r0, r1 -	cmp r0, 0 -	beq _0812C91E -	adds r0, r2, 0 -	bl DestroyAnimSprite -_0812C91E: -	pop {r0} -	bx r0 -	thumb_func_end sub_812C908 - -	thumb_func_start sub_812C924 -sub_812C924: @ 812C924 -	push {r4,lr} -	lsls r0, 24 -	lsrs r4, r0, 24 -	ldr r0, _0812C940 @ =gAnimBankTarget -	ldrb r0, [r0] -	bl GetBattlerSide -	lsls r0, 24 -	lsrs r0, 24 -	cmp r0, 0x1 -	bne _0812C948 -	ldr r1, _0812C944 @ =gBattleAnimArgs -	movs r0, 0 -	b _0812C94C -	.align 2, 0 -_0812C940: .4byte gAnimBankTarget -_0812C944: .4byte gBattleAnimArgs -_0812C948: -	ldr r1, _0812C95C @ =gBattleAnimArgs -	movs r0, 0x1 -_0812C94C: -	strh r0, [r1, 0xE] -	adds r0, r4, 0 -	bl DestroyAnimVisualTask -	pop {r4} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C95C: .4byte gBattleAnimArgs -	thumb_func_end sub_812C924 - -	thumb_func_start sub_812C960 -sub_812C960: @ 812C960 -	push {lr} -	lsls r0, 24 -	lsrs r2, r0, 24 -	ldr r0, _0812C974 @ =gAnimMoveDmg -	ldr r0, [r0] -	cmp r0, 0 -	ble _0812C97C -	ldr r1, _0812C978 @ =gBattleAnimArgs -	movs r0, 0 -	b _0812C980 -	.align 2, 0 -_0812C974: .4byte gAnimMoveDmg -_0812C978: .4byte gBattleAnimArgs -_0812C97C: -	ldr r1, _0812C98C @ =gBattleAnimArgs -	movs r0, 0x1 -_0812C980: -	strh r0, [r1, 0xE] -	adds r0, r2, 0 -	bl DestroyAnimVisualTask -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C98C: .4byte gBattleAnimArgs -	thumb_func_end sub_812C960 - -	thumb_func_start sub_812C990 -sub_812C990: @ 812C990 -	push {r4,lr} -	adds r4, r0, 0 -	ldr r1, _0812C9EC @ =REG_WINOUT -	ldr r2, _0812C9F0 @ =0x00001f3f -	adds r0, r2, 0 -	strh r0, [r1] -	movs r2, 0x80 -	lsls r2, 19 -	ldrh r0, [r2] -	movs r3, 0x80 -	lsls r3, 8 -	adds r1, r3, 0 -	orrs r0, r1 -	strh r0, [r2] -	ldr r0, _0812C9F4 @ =gBattle_WIN0H -	movs r1, 0 -	strh r1, [r0] -	ldr r0, _0812C9F8 @ =gBattle_WIN0V -	strh r1, [r0] -	ldr r0, _0812C9FC @ =REG_WIN0H -	strh r1, [r0] -	adds r0, 0x4 -	strh r1, [r0] -	adds r0, r4, 0 -	movs r1, 0 -	bl sub_8078764 -	ldrb r1, [r4, 0x1] -	movs r0, 0xD -	negs r0, r0 -	ands r0, r1 -	movs r1, 0x8 -	orrs r0, r1 -	strb r0, [r4, 0x1] -	adds r2, r4, 0 -	adds r2, 0x3E -	ldrb r0, [r2] -	movs r1, 0x4 -	orrs r0, r1 -	strb r0, [r2] -	ldr r0, _0812CA00 @ =sub_812CA04 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.align 2, 0 -_0812C9EC: .4byte REG_WINOUT -_0812C9F0: .4byte 0x00001f3f -_0812C9F4: .4byte gBattle_WIN0H -_0812C9F8: .4byte gBattle_WIN0V -_0812C9FC: .4byte REG_WIN0H -_0812CA00: .4byte sub_812CA04 -	thumb_func_end sub_812C990 -  	thumb_func_start sub_812CA04  sub_812CA04: @ 812CA04  	push {r4,lr} diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index 595df3168..4e839d3e8 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -12,7 +12,7 @@  extern s16 gBattleAnimArgs[];  extern u8 gAnimBankAttacker;  extern u8 gAnimBankTarget; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg;  extern u16 gBattle_BG1_X;  extern u16 gBattle_BG1_Y;  extern u16 gBattle_BG3_Y; @@ -833,11 +833,11 @@ static void sub_80DD9FC(struct Sprite *sprite)  void sub_80DDA4C(u8 taskId)  { -    if ((s32)gAnimMoveDmg < 33) +    if (gAnimMoveDmg < 33)          gBattleAnimArgs[7] = 0; -    if (gAnimMoveDmg - 33 < 33) +    if ((u32)gAnimMoveDmg - 33 < 33)          gBattleAnimArgs[7] = 1; -    if ((s32)gAnimMoveDmg > 65) +    if (gAnimMoveDmg > 65)          gBattleAnimArgs[7] = 2;      DestroyAnimVisualTask(taskId); diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 2f57bcd97..f3b0056ac 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -1299,7 +1299,7 @@ EWRAM_DATA u8 gAnimScriptActive = FALSE;  EWRAM_DATA u8 gAnimVisualTaskCount = 0;  EWRAM_DATA u8 gAnimSoundTaskCount = 0;  EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL; -EWRAM_DATA u32 gAnimMoveDmg = 0; +EWRAM_DATA s32 gAnimMoveDmg = 0;  EWRAM_DATA u16 gAnimMovePower = 0;  EWRAM_DATA u8 gAnimFriendship = 0;  EWRAM_DATA u16 gWeatherMoveAnim = 0; diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c index 4714f5b09..9fccb8918 100755 --- a/src/battle/battle_anim_812C144.c +++ b/src/battle/battle_anim_812C144.c @@ -1,17 +1,32 @@  #include "global.h" +#include "battle.h"  #include "battle_anim.h" +#include "palette.h"  #include "rom_8077ABC.h" +#include "trig.h"  extern s16 gBattleAnimArgs[];  extern u8 gAnimBankAttacker;  extern u8 gAnimBankTarget; +extern u8 gAnimVisualTaskCount; +extern s32 gAnimMoveDmg; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V;  extern u8 sub_8046234(s16 x, s16 y, u8 a3);  static void sub_812C184(struct Sprite *sprite);  static void sub_812C268(struct Sprite *sprite);  static void sub_812C2A4(struct Sprite *sprite); -extern void sub_812C380(struct Sprite *sprite); +static void sub_812C380(struct Sprite *sprite); +static void sub_812C40C(struct Sprite *sprite); +static void sub_812C450(struct Sprite *sprite); +static void sub_812C4FC(struct Sprite *sprite); +static void sub_812C588(u8 taskId); +static void sub_812C64C(u8 taskId); +static void sub_812C798(struct Sprite *sprite); +static void sub_812C7C8(struct Sprite *sprite); +extern void sub_812CA04(struct Sprite *sprite);  void sub_812C144(struct Sprite *sprite)  { @@ -108,3 +123,290 @@ void sub_812C358(struct Sprite *sprite)      sprite->data[0] = 4;      sprite->callback = sub_812C380;  } + +static void sub_812C380(struct Sprite *sprite) +{ +    REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0]; + +    if (sprite->data[1]) +        sprite->data[0]--; +    else +        sprite->data[0]++; + +    if (sprite->data[0] == 15 || sprite->data[0] == 4) +        sprite->data[1] ^= 1; + +    if (sprite->data[2]++ > 70) +    { +        REG_BLDCNT = 0; +        REG_BLDALPHA = 0; +        StartSpriteAffineAnim(sprite, 1); +        sprite->data[2] = 0; +        sprite->invisible = 1; +        sprite->affineAnimPaused = 1; +        sprite->callback = sub_812C40C; +    } +} + +static void sub_812C40C(struct Sprite *sprite) +{ +    if (sprite->data[2]++ > 9) +    { +        sprite->invisible = 0; +        sprite->affineAnimPaused = 0; +        if (sprite->affineAnimEnded) +            sprite->callback = sub_812C450; +    } +} + +static void sub_812C450(struct Sprite *sprite) +{ +    switch (sprite->data[3]) +    { +    case 0: +    case 1: +        sprite->pos2.x = 1; +        sprite->pos2.y = 0; +        break; +    case 2: +    case 3: +        sprite->pos2.x = -1; +        sprite->pos2.y = 0; +        break; +    case 4: +    case 5: +        sprite->pos2.x = 0; +        sprite->pos2.y = 1; +        break; +    case 6: +    default: +        sprite->pos2.x = 0; +        sprite->pos2.y = -1; +        break; +    } + +    if (++sprite->data[3] > 7) +        sprite->data[3] = 0; + +    if (sprite->data[4]++ > 15) +    { +        sprite->data[0] = 16; +        sprite->data[1] = 0; +        REG_BLDCNT = 0x3F40; +        REG_BLDALPHA = sprite->data[0]; +        sprite->callback = sub_812C4FC; +    } +} + +static void sub_812C4FC(struct Sprite *sprite) +{ +    REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0]; + +    if (sprite->data[1]++ > 1) +    { +        sprite->data[0]--; +        sprite->data[1] = 0; +    } + +    if (sprite->data[0] == 0) +        sprite->invisible = 1; + +    if (sprite->data[0] < 0) +    { +        REG_BLDCNT = 0; +        REG_BLDALPHA = 0; +        DestroyAnimSprite(sprite); +    } +} + +void sub_812C560(u8 taskId) +{ +    gTasks[taskId].func = sub_812C588; +    gAnimVisualTaskCount--; +} + +static void sub_812C588(u8 taskId) +{ +    int i; +    u16 lastColor; +    u8 paletteIndex = sub_80789BC(); + +    if (++gTasks[taskId].data[5] == 4) +    { +        lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; +        for (i = 10; i > 0; i--) +            gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; + +        gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; +        gTasks[taskId].data[5] = 0; +    } + +    if ((u16)gBattleAnimArgs[7] == 0xFFFF) +        DestroyTask(taskId); +} + +void sub_812C624(u8 taskId) +{ +    gTasks[taskId].func = sub_812C64C; +    gAnimVisualTaskCount--; +} + +static void sub_812C64C(u8 taskId) +{ +    int i; +    u16 lastColor; +    u8 paletteIndex = sub_80789BC(); + +    if (++gTasks[taskId].data[5] == 4) +    { +        lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; +        for (i = 10; i > 0; i--) +            gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; +        gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; + +        lastColor = gPlttBufferUnfaded[paletteIndex * 16 + 11]; +        for (i = 10; i > 0; i--) +            gPlttBufferUnfaded[paletteIndex * 16 + i + 1] = gPlttBufferUnfaded[paletteIndex * 16 + i]; +        gPlttBufferUnfaded[paletteIndex * 16 + 1] = lastColor; + +        gTasks[taskId].data[5] = 0; +    } + +    if ((u16)gBattleAnimArgs[7] == 0xFFFF) +        DestroyTask(taskId); +} + +void sub_812C720(struct Sprite *sprite) +{ +    u16 x; +    u16 y; + +    InitAnimSpritePos(sprite, 1); +    SetAverageBattlerPositions(gAnimBankTarget, 0, &x, &y); + +    if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) +        gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + +    sprite->data[0] = gBattleAnimArgs[4]; +    sprite->data[2] = x + gBattleAnimArgs[2]; +    sprite->data[4] = y + gBattleAnimArgs[3]; +    sprite->data[5] = -50; + +    InitAnimSpriteTranslationOverDuration(sprite); +    sprite->callback = sub_812C798; +} + +static void sub_812C798(struct Sprite *sprite) +{ +    if (TranslateAnimSpriteLinearAndSine(sprite)) +    { +        sprite->data[0] = 30; +        sprite->data[1] = 0; +        sprite->callback = WaitAnimForDuration; +        StoreSpriteCallbackInData(sprite, sub_812C7C8); +    } +} + +static void sub_812C7C8(struct Sprite *sprite) +{ +    if (sprite->data[1] & 1) +        sprite->invisible ^= 1; + +    if (++sprite->data[1] == 16) +        DestroyAnimSprite(sprite); +} + +void sub_812C80C(struct Sprite *sprite) +{ +    sub_8078650(sprite); +    sub_807867C(sprite, gBattleAnimArgs[0]); +    sprite->pos1.y += gBattleAnimArgs[1]; +    sprite->callback = sub_8078600; +    StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// This is likely fakematching due to some strange type casting behavior. +void sub_812C848(struct Sprite *sprite) +{ +    int var0; +    int var1; +    if (sprite->data[0] == 0) +    { +        sub_8078650(sprite); +        sub_807867C(sprite, gBattleAnimArgs[0]); + +        if (!IsContest()) +        { +            if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER) +            { +                sprite->data[1] = gBattleAnimArgs[2]; +                sprite->data[2] = gBattleAnimArgs[3]; +            } +            else +            { +                var1 = -gBattleAnimArgs[2]; +                sprite->data[1] = var1; +                var1 = -gBattleAnimArgs[3]; +                sprite->data[2] = var1; +            } +        } +        else +        { +            var1 = -gBattleAnimArgs[2]; +            sprite->data[1] = var1; +            sprite->data[2] = gBattleAnimArgs[3]; +        } +    } + +    sprite->data[0]++; +    var0 = (sprite->data[0] * 20) & 0xFF; +    sprite->data[3] += sprite->data[1]; +    sprite->data[4] += sprite->data[2]; +    sprite->pos2.x = (sprite->data[3] + (s32)((u32)sprite->data[3] >> 31)) >> 1; +    sprite->pos2.y = Sin(var0 & 0xFF, 5) + ((s32)(sprite->data[4] + ((u32)sprite->data[4] >> 31)) >> 1); + +    if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240) +        DestroyAnimSprite(sprite); +} + +void sub_812C908(struct Sprite *sprite) +{ +    if (sprite->animEnded) +        DestroyAnimSprite(sprite); +} + +void sub_812C924(u8 taskId) +{ +    if (GetBattlerSide(gAnimBankTarget) == B_SIDE_OPPONENT) +        gBattleAnimArgs[7] = 0; +    else +        gBattleAnimArgs[7] = 1; + +    DestroyAnimVisualTask(taskId); +} + +void sub_812C960(u8 taskId) +{ +    if (gAnimMoveDmg > 0) +        gBattleAnimArgs[7] = 0; +    else +        gBattleAnimArgs[7] = 1; + +    DestroyAnimVisualTask(taskId); +} + +void sub_812C990(struct Sprite *sprite) +{ +    REG_WINOUT = 0x1F3F; +    REG_DISPCNT |= DISPCNT_OBJWIN_ON; +    gBattle_WIN0H = 0; +    gBattle_WIN0V = 0; +    REG_WIN0H = 0; +    REG_WIN0V = 0; + +    sub_8078764(sprite, 0); + +    sprite->oam.objMode = ST_OAM_OBJ_WINDOW; +    sprite->invisible = 1; +    sprite->callback = sub_812CA04; +} diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index f720d6a78..62df190a5 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -33,7 +33,7 @@ extern u8 gHealthboxIDs[];  extern u16 gBattleTypeFlags;  extern u8 gBattleMonForms[];  extern void (*gBattleBankFunc[])(void); -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg;  extern u16 gAnimMovePower;  extern u8 gAnimFriendship;  extern u16 gWeatherMoveAnim; diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 0baeca43e..e3810d856 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -42,7 +42,7 @@ extern u8 gUnknown_02024E68[];  extern u8 gDoingBattleAnim;  extern u32 gTransformedPersonalities[];  extern struct SpriteTemplate gUnknown_02024E8C; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg;  extern u16 gAnimMovePower;  extern u8 gAnimFriendship;  extern u16 gWeatherMoveAnim; diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index d6e7ed4a7..f6e7f92a7 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -43,7 +43,7 @@ extern u8 gUnknown_0300434C[];  extern u8 gHealthboxIDs[];  extern u16 gBattleTypeFlags;  extern u16 gTrainerBattleOpponent; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg;  extern u16 gAnimMovePower;  extern u8 gAnimFriendship;  extern u16 gWeatherMoveAnim; diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 881ec72fc..004963b70 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -61,7 +61,7 @@ extern u8 gBattleOutcome;  extern void (*gAnimScriptCallback)(void);  extern bool8 gAnimScriptActive;  extern u16 gAnimMovePower; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg;  extern u8 gAnimFriendship;  extern u16 gWeatherMoveAnim;  extern u32 gTransformedPersonalities[]; diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 26348b434..451e02b40 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -38,7 +38,7 @@ extern u16 gBattlerPartyIndexes[];  extern u8 gHealthboxIDs[];  extern u16 gBattleTypeFlags;  extern u16 gAnimMovePower; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg;  extern u8 gAnimFriendship;  extern u16 gWeatherMoveAnim;  extern u32 gTransformedPersonalities[]; | 
