diff options
| -rw-r--r-- | asm/pokemon_animation.s | 2860 | ||||
| -rw-r--r-- | src/pokemon_animation.c | 1082 | 
2 files changed, 1073 insertions, 2869 deletions
| diff --git a/asm/pokemon_animation.s b/asm/pokemon_animation.s index 562300f3f..96ec4f77a 100644 --- a/asm/pokemon_animation.s +++ b/asm/pokemon_animation.s @@ -5,2865 +5,7 @@  	.text - - -	thumb_func_start pokemonanimfunc_37 -pokemonanimfunc_37: @ 818201C -	push {r4,r5,lr} -	adds r4, r0, 0 -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _08182036 -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -_08182036: -	adds r0, r4, 0 -	bl sub_817F70C -	ldrh r1, [r4, 0x3C] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	cmp r0, 0xFF -	ble _08182060 -	movs r0, 0 -	strh r0, [r4, 0x24] -	strh r0, [r4, 0x26] -	strh r0, [r4, 0x3C] -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	b _081820A6 -	.pool -_08182060: -	adds r0, r1, 0 -	adds r0, 0x10 -	strh r0, [r4, 0x3C] -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182072 -	adds r0, 0x7F -_08182072: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x8 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x24] -	movs r2, 0x3C -	ldrsh r1, [r4, r2] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182092 -	adds r0, 0x7F -_08182092: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x8 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x26] -_081820A6: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _081820B2 -	adds r0, 0x7F -_081820B2: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x10 -	bl Sin -	adds r3, r0, 0 -	movs r2, 0x80 -	lsls r2, 1 -	lsls r3, 24 -	lsrs r3, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_37 - -	thumb_func_start pokemonanimfunc_38 -pokemonanimfunc_38: @ 81820E0 -	push {r4,lr} -	adds r4, r0, 0 -	bl HandleStartAffineAnim -	movs r0, 0 -	strh r0, [r4, 0x3C] -	strh r0, [r4, 0x36] -	ldr r0, =sub_81820FC -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_38 - -	thumb_func_start sub_81820FC -sub_81820FC: @ 81820FC -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	ldrh r1, [r4, 0x3C] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	cmp r0, 0x18 -	ble _0818212C -	ldrh r0, [r4, 0x36] -	adds r0, 0x1 -	strh r0, [r4, 0x36] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x4 -	ble _0818214A -	movs r0, 0 -	strh r0, [r4, 0x36] -	ldr r0, =sub_818216C -	str r0, [r4, 0x1C] -	b _0818214A -	.pool -_0818212C: -	adds r0, r1, 0x2 -	strh r0, [r4, 0x3C] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Sin -	strh r0, [r4, 0x24] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	movs r1, 0x8 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x26] -_0818214A: -	movs r2, 0x80 -	lsls r2, 1 -	ldrh r3, [r4, 0x3C] -	negs r3, r3 -	lsls r3, 24 -	lsrs r3, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end sub_81820FC - -	thumb_func_start sub_818216C -sub_818216C: @ 818216C -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	ldrh r1, [r4, 0x3C] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	cmp r0, 0x20 -	ble _0818218C -	movs r0, 0x1 -	strh r0, [r4, 0x3A] -	ldr r0, =sub_81821CC -	str r0, [r4, 0x1C] -	b _081821AA -	.pool -_0818218C: -	adds r0, r1, 0x2 -	strh r0, [r4, 0x3C] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Sin -	strh r0, [r4, 0x24] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	movs r1, 0x8 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x26] -_081821AA: -	movs r2, 0x80 -	lsls r2, 1 -	ldrh r3, [r4, 0x3C] -	negs r3, r3 -	lsls r3, 24 -	lsrs r3, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end sub_818216C - -	thumb_func_start sub_81821CC -sub_81821CC: @ 81821CC -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	movs r1, 0x3A -	ldrsh r0, [r4, r1] -	lsls r0, 2 -	ldrh r1, [r4, 0x3C] -	adds r0, r1 -	strh r0, [r4, 0x3C] -	movs r1, 0x38 -	ldrsh r0, [r4, r1] -	cmp r0, 0x9 -	ble _081821F0 -	movs r0, 0x20 -	strh r0, [r4, 0x3C] -	ldr r0, =sub_8182248 -	str r0, [r4, 0x1C] -_081821F0: -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Sin -	strh r0, [r4, 0x24] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x26] -	ldrh r0, [r4, 0x3C] -	subs r0, 0x1D -	lsls r0, 16 -	lsrs r0, 16 -	cmp r0, 0x6 -	bls _08182224 -	movs r1, 0x3A -	ldrsh r0, [r4, r1] -	negs r0, r0 -	strh r0, [r4, 0x3A] -	ldrh r0, [r4, 0x38] -	adds r0, 0x1 -	strh r0, [r4, 0x38] -_08182224: -	movs r2, 0x80 -	lsls r2, 1 -	ldrh r3, [r4, 0x3C] -	negs r3, r3 -	lsls r3, 24 -	lsrs r3, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end sub_81821CC - -	thumb_func_start sub_8182248 -sub_8182248: @ 8182248 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	ldrh r1, [r4, 0x3C] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	cmp r0, 0 -	bgt _08182270 -	movs r0, 0 -	strh r0, [r4, 0x3C] -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	b _0818228E -	.pool -_08182270: -	subs r0, r1, 0x2 -	strh r0, [r4, 0x3C] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Sin -	strh r0, [r4, 0x24] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	movs r1, 0x8 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x26] -_0818228E: -	movs r2, 0x80 -	lsls r2, 1 -	ldrh r3, [r4, 0x3C] -	negs r3, r3 -	lsls r3, 24 -	lsrs r3, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end sub_8182248 - -	thumb_func_start pokemonanimfunc_39 -pokemonanimfunc_39: @ 81822B0 -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	ldrh r1, [r4, 0x32] -	movs r2, 0x32 -	ldrsh r0, [r4, r2] -	cmp r0, 0x28 -	ble _081822D0 -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r0, 0 -	strh r0, [r4, 0x24] -	b _0818235C -	.pool -_081822D0: -	movs r0, 0x1 -	ands r0, r1 -	movs r5, 0xFF -	cmp r0, 0 -	bne _081822DC -	movs r5, 0x1 -_081822DC: -	movs r0, 0x32 -	ldrsh r2, [r4, r0] -	adds r0, r2, 0 -	cmp r2, 0 -	bge _081822E8 -	adds r0, r2, 0x3 -_081822E8: -	asrs r0, 2 -	lsls r0, 2 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r1, r0, 16 -	lsrs r0, 31 -	adds r1, r0 -	asrs r1, 1 -	cmp r1, 0 -	bne _0818232C -	lsls r0, r2, 7 -	movs r1, 0x28 -	bl __divsi3 -	adds r1, r0, 0 -	cmp r1, 0 -	bge _0818230C -	adds r0, 0xFF -_0818230C: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x10 -	bl Sin -	lsls r1, r5, 24 -	asrs r1, 24 -	adds r2, r0, 0 -	muls r2, r1 -	adds r0, r2, 0 -	strh r0, [r4, 0x24] -	negs r0, r0 -	b _0818235A -_0818232C: -	lsls r0, r2, 7 -	movs r1, 0x28 -	bl __divsi3 -	adds r1, r0, 0 -	cmp r1, 0 -	bge _0818233C -	adds r0, 0xFF -_0818233C: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x10 -	bl Sin -	lsls r0, 16 -	asrs r0, 16 -	negs r0, r0 -	lsls r1, r5, 24 -	asrs r1, 24 -	muls r0, r1 -	strh r0, [r4, 0x24] -_0818235A: -	strh r0, [r4, 0x26] -_0818235C: -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_39 - -	thumb_func_start pokemonanimfunc_3A -pokemonanimfunc_3A: @ 8182370 -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _08182392 -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	strh r5, [r4, 0x38] -	strh r5, [r4, 0x3A] -	strh r5, [r4, 0x3C] -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -_08182392: -	ldrh r1, [r4, 0x3A] -	movs r2, 0x3A -	ldrsh r0, [r4, r2] -	cmp r0, 0 -	ble _081823E4 -	subs r0, r1, 0x1 -	strh r0, [r4, 0x3A] -	movs r1, 0x38 -	ldrsh r0, [r4, r1] -	cmp r0, 0x3 -	beq _08182494 -	movs r2, 0x3A -	ldrsh r0, [r4, r2] -	lsls r0, 3 -	movs r1, 0x14 -	bl __divsi3 -	adds r1, r0, 0 -	ldrh r0, [r4, 0x3C] -	lsls r1, 16 -	asrs r1, 16 -	subs r0, r1 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x40 -	bl Sin -	movs r1, 0x80 -	lsls r1, 1 -	adds r2, r1, 0 -	lsls r0, 16 -	asrs r0, 16 -	subs r2, r0 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	b _08182494 -_081823E4: -	movs r2, 0x38 -	ldrsh r0, [r4, r2] -	cmp r0, 0x3 -	bne _08182424 -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	cmp r0, 0x3F -	ble _08182410 -	movs r0, 0x40 -	strh r0, [r4, 0x3C] -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -_08182410: -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	movs r1, 0x40 -	bl Cos -	lsls r0, 16 -	lsrs r3, r0, 16 -	b _08182474 -	.pool -_08182424: -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x40 -	bl Sin -	lsls r0, 16 -	lsrs r3, r0, 16 -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	cmp r0, 0x3F -	ble _08182448 -	movs r0, 0 -	movs r1, 0x3 -	strh r1, [r4, 0x38] -	movs r1, 0xA -	strh r1, [r4, 0x3A] -	strh r0, [r4, 0x3C] -	b _08182474 -_08182448: -	lsls r0, r3, 16 -	asrs r0, 16 -	cmp r0, 0x30 -	ble _0818245C -	movs r1, 0x38 -	ldrsh r0, [r4, r1] -	cmp r0, 0x1 -	bne _0818245C -	movs r0, 0x2 -	b _0818246E -_0818245C: -	lsls r0, r3, 16 -	asrs r0, 16 -	cmp r0, 0x10 -	ble _08182474 -	movs r2, 0x38 -	ldrsh r0, [r4, r2] -	cmp r0, 0 -	bne _08182474 -	movs r0, 0x1 -_0818246E: -	strh r0, [r4, 0x38] -	movs r0, 0x14 -	strh r0, [r4, 0x3A] -_08182474: -	ldrh r0, [r4, 0x3C] -	adds r0, 0x2 -	strh r0, [r4, 0x3C] -	movs r0, 0x80 -	lsls r0, 1 -	adds r2, r0, 0 -	lsls r0, r3, 16 -	asrs r0, 16 -	subs r2, r0 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -_08182494: -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_3A - -	thumb_func_start pokemonanimfunc_3B -pokemonanimfunc_3B: @ 81824A0 -	push {r4,r5,lr} -	adds r4, r0, 0 -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _081824BA -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -_081824BA: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	movs r0, 0x80 -	lsls r0, 2 -	cmp r1, r0 -	ble _081824E8 -	movs r0, 0 -	strh r0, [r4, 0x26] -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	b _08182540 -	.pool -_081824E8: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _081824F4 -	adds r0, 0xFF -_081824F4: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x8 -	bl Sin -	strh r0, [r4, 0x26] -	ldrh r0, [r4, 0x3C] -	adds r0, 0x8 -	strh r0, [r4, 0x3C] -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182518 -	adds r0, 0x7F -_08182518: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x60 -	bl Sin -	adds r2, r0, 0 -	movs r1, 0x80 -	lsls r1, 1 -	lsls r2, 16 -	asrs r2, 16 -	adds r2, r1 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r4, 0 -	movs r3, 0 -	bl HandleSetAffineData -_08182540: -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_3B - -	thumb_func_start pokemonanimfunc_3C -pokemonanimfunc_3C: @ 8182548 -	push {r4,r5,lr} -	adds r4, r0, 0 -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _08182562 -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -_08182562: -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r5, 0x80 -	lsls r5, 1 -	cmp r0, r5 -	ble _08182590 -	movs r0, 0 -	strh r0, [r4, 0x26] -	adds r0, r4, 0 -	adds r1, r5, 0 -	adds r2, r5, 0 -	movs r3, 0 -	bl HandleSetAffineData -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	b _081825D4 -	.pool -_08182590: -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x10 -	bl Sin -	strh r0, [r4, 0x26] -	ldrh r0, [r4, 0x3C] -	adds r0, 0x4 -	strh r0, [r4, 0x3C] -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _081825AE -	adds r0, 0x3F -_081825AE: -	asrs r0, 6 -	lsls r0, 6 -	subs r0, r1, r0 -	lsls r0, 17 -	asrs r0, 16 -	movs r1, 0x80 -	bl Sin -	adds r2, r0, 0 -	lsls r2, 16 -	asrs r2, 16 -	adds r2, r5 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r4, 0 -	adds r1, r5, 0 -	movs r3, 0 -	bl HandleSetAffineData -_081825D4: -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_3C - -	thumb_func_start pokemonanimfunc_3D -pokemonanimfunc_3D: @ 81825DC -	push {r4,lr} -	adds r4, r0, 0 -	bl HandleStartAffineAnim -	ldr r0, =sub_81825F8 -	str r0, [r4, 0x1C] -	movs r0, 0 -	strh r0, [r4, 0x3C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_3D - -	thumb_func_start sub_81825F8 -sub_81825F8: @ 81825F8 -	push {r4,lr} -	adds r4, r0, 0 -	ldrh r0, [r4, 0x3C] -	adds r0, 0x8 -	movs r1, 0 -	strh r0, [r4, 0x3C] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x3F -	ble _0818261C -	strh r1, [r4, 0x3C] -	strh r1, [r4, 0x3A] -	ldr r0, =sub_8182648 -	str r0, [r4, 0x1C] -	movs r0, 0x40 -	b _08182620 -	.pool -_0818261C: -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -_08182620: -	movs r1, 0x80 -	bl Sin -	lsls r0, 16 -	lsrs r0, 16 -	movs r1, 0x80 -	lsls r1, 1 -	lsls r2, r0, 16 -	asrs r2, 16 -	adds r2, r1 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r4, 0 -	movs r3, 0 -	bl HandleSetAffineData -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end sub_81825F8 - -	thumb_func_start sub_8182648 -sub_8182648: @ 8182648 -	push {r4,r5,lr} -	adds r4, r0, 0 -	ldrh r0, [r4, 0x3C] -	adds r0, 0x4 -	strh r0, [r4, 0x3C] -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x5F -	ble _08182672 -	movs r0, 0 -	movs r1, 0x80 -	bl Cos -	lsls r0, 16 -	lsrs r2, r0, 16 -	movs r0, 0 -	strh r0, [r4, 0x3C] -	ldrh r0, [r4, 0x3A] -	adds r0, 0x1 -	strh r0, [r4, 0x3A] -	b _081826C8 -_08182672: -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Sin -	movs r2, 0x3A -	ldrsh r1, [r4, r2] -	lsls r1, 2 -	negs r1, r1 -	subs r1, r0 -	strh r1, [r4, 0x26] -	ldrh r1, [r4, 0x3C] -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	cmp r0, 0x3F -	ble _081826A4 -	ldr r5, =0x0000ffff -	adds r0, r1, 0 -	subs r0, 0x40 -	lsls r0, 16 -	lsrs r0, 16 -	b _081826A8 -	.pool -_081826A4: -	movs r5, 0x1 -	movs r0, 0 -_081826A8: -	lsls r0, 16 -	asrs r0, 15 -	ldrh r1, [r4, 0x3C] -	adds r0, r1 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x80 -	bl Cos -	lsls r1, r5, 16 -	asrs r1, 16 -	adds r2, r1, 0 -	muls r2, r0 -	adds r0, r2, 0 -	lsls r0, 16 -	lsrs r2, r0, 16 -_081826C8: -	movs r1, 0x80 -	lsls r1, 1 -	lsls r2, 16 -	asrs r2, 16 -	adds r2, r1 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r4, 0 -	movs r3, 0 -	bl HandleSetAffineData -	movs r1, 0x3A -	ldrsh r0, [r4, r1] -	cmp r0, 0x3 -	bne _081826EE -	movs r0, 0 -	strh r0, [r4, 0x3C] -	ldr r0, =sub_81826F8 -	str r0, [r4, 0x1C] -_081826EE: -	pop {r4,r5} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end sub_8182648 - -	thumb_func_start sub_81826F8 -sub_81826F8: @ 81826F8 -	push {r4,r5,lr} -	adds r4, r0, 0 -	ldrh r0, [r4, 0x3C] -	adds r0, 0x8 -	strh r0, [r4, 0x3C] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x80 -	bl Cos -	lsls r0, 16 -	lsrs r5, r0, 16 -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0xC -	bl Cos -	negs r0, r0 -	strh r0, [r4, 0x26] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	cmp r0, 0x3F -	ble _08182742 -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r0, 0 -	strh r0, [r4, 0x26] -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -_08182742: -	movs r1, 0x80 -	lsls r1, 1 -	lsls r2, r5, 16 -	asrs r2, 16 -	adds r2, r1 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r4, 0 -	movs r3, 0 -	bl HandleSetAffineData -	pop {r4,r5} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end sub_81826F8 - -	thumb_func_start sub_8182764 -sub_8182764: @ 8182764 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	movs r2, 0x38 -	ldrsh r0, [r4, r2] -	cmp r1, r0 -	ble _08182798 -	movs r0, 0 -	strh r0, [r4, 0x24] -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	b _081827F4 -	.pool -_08182798: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _081827A4 -	adds r0, 0xFF -_081827A4: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r2, 0x36 -	ldrsh r1, [r4, r2] -	bl Sin -	strh r0, [r4, 0x24] -	ldrh r0, [r4, 0x3A] -	ldrh r1, [r4, 0x3C] -	adds r0, r1 -	strh r0, [r4, 0x3C] -	movs r2, 0x3C -	ldrsh r1, [r4, r2] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _081827CC -	adds r0, 0x7F -_081827CC: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x60 -	bl Sin -	adds r1, r0, 0 -	lsls r1, 16 -	movs r0, 0x80 -	lsls r0, 17 -	adds r1, r0 -	asrs r1, 16 -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	movs r3, 0 -	bl HandleSetAffineData -_081827F4: -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end sub_8182764 - -	thumb_func_start pokemonanimfunc_3E -pokemonanimfunc_3E: @ 81827FC -	push {r4,r5,lr} -	adds r4, r0, 0 -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _08182822 -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -	movs r1, 0x8 -	strh r1, [r4, 0x3A] -	movs r0, 0x80 -	lsls r0, 2 -	strh r0, [r4, 0x38] -	strh r1, [r4, 0x36] -_08182822: -	adds r0, r4, 0 -	bl sub_8182764 -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_3E - -	thumb_func_start sub_8182830 -sub_8182830: @ 8182830 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	movs r2, 0x38 -	ldrsh r0, [r4, r2] -	cmp r1, r0 -	ble _08182864 -	movs r0, 0 -	strh r0, [r4, 0x24] -	adds r0, r4, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	b _081828C0 -	.pool -_08182864: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182870 -	adds r0, 0xFF -_08182870: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r2, 0x36 -	ldrsh r1, [r4, r2] -	bl Sin -	strh r0, [r4, 0x24] -	ldrh r0, [r4, 0x3A] -	ldrh r1, [r4, 0x3C] -	adds r0, r1 -	strh r0, [r4, 0x3C] -	movs r2, 0x3C -	ldrsh r1, [r4, r2] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182898 -	adds r0, 0x3F -_08182898: -	asrs r0, 6 -	lsls r0, 6 -	subs r0, r1, r0 -	lsls r0, 17 -	asrs r0, 16 -	movs r1, 0x80 -	bl Sin -	adds r1, r0, 0 -	lsls r1, 16 -	movs r0, 0x80 -	lsls r0, 17 -	adds r1, r0 -	asrs r1, 16 -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	movs r3, 0 -	bl HandleSetAffineData -_081828C0: -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end sub_8182830 - -	thumb_func_start pokemonanimfunc_3F -pokemonanimfunc_3F: @ 81828C8 -	push {r4,r5,lr} -	adds r4, r0, 0 -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _081828EE -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -	movs r0, 0x4 -	strh r0, [r4, 0x3A] -	adds r0, 0xFC -	strh r0, [r4, 0x38] -	movs r0, 0x10 -	strh r0, [r4, 0x36] -_081828EE: -	adds r0, r4, 0 -	bl sub_8182830 -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_3F - -	thumb_func_start pokemonanimfunc_40 -pokemonanimfunc_40: @ 81828FC -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _0818291A -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -_0818291A: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	movs r0, 0x80 -	lsls r0, 2 -	cmp r1, r0 -	ble _08182948 -	movs r0, 0 -	strh r0, [r4, 0x24] -	adds r0, r4, 0 -	bl sub_817F77C -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	b _0818299E -	.pool -_08182948: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182954 -	adds r0, 0xFF -_08182954: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x8 -	bl Sin -	strh r0, [r4, 0x24] -	ldrh r0, [r4, 0x3C] -	adds r0, 0x8 -	strh r0, [r4, 0x3C] -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182978 -	adds r0, 0x7F -_08182978: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x60 -	bl Sin -	adds r2, r0, 0 -	lsls r2, 16 -	movs r0, 0x80 -	lsls r0, 17 -	adds r2, r0 -	asrs r2, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -_0818299E: -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_40 - -	thumb_func_start pokemonanimfunc_41 -pokemonanimfunc_41: @ 81829AC -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _081829CA -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -_081829CA: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	movs r0, 0x80 -	lsls r0, 2 -	cmp r1, r0 -	ble _081829F8 -	movs r0, 0 -	strh r0, [r4, 0x24] -	adds r0, r4, 0 -	bl sub_817F77C -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	b _08182A5E -	.pool -_081829F8: -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	adds r1, r0, 0 -	cmp r0, 0 -	bge _08182A04 -	adds r1, 0xFF -_08182A04: -	asrs r1, 8 -	lsls r1, 8 -	subs r1, r0, r1 -	lsls r1, 16 -	asrs r0, r1, 16 -	lsrs r1, 31 -	adds r0, r1 -	asrs r0, 1 -	movs r1, 0x10 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x24] -	ldrh r0, [r4, 0x3C] -	adds r0, 0x8 -	strh r0, [r4, 0x3C] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	adds r1, r0, 0 -	cmp r0, 0 -	bge _08182A30 -	adds r1, 0xFF -_08182A30: -	asrs r1, 8 -	lsls r1, 8 -	subs r1, r0, r1 -	lsls r1, 16 -	asrs r0, r1, 16 -	lsrs r1, 31 -	adds r0, r1 -	asrs r0, 1 -	movs r1, 0x40 -	bl Sin -	adds r2, r0, 0 -	negs r2, r2 -	lsls r2, 16 -	movs r0, 0x80 -	lsls r0, 17 -	adds r2, r0 -	asrs r2, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -_08182A5E: -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_41 - -	thumb_func_start pokemonanimfunc_42 -pokemonanimfunc_42: @ 8182A6C -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	movs r0, 0x32 -	ldrsh r5, [r4, r0] -	cmp r5, 0 -	bne _08182A8A -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	ldrh r0, [r4, 0x32] -	adds r0, 0x1 -	strh r0, [r4, 0x32] -	strh r5, [r4, 0x3C] -_08182A8A: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	movs r0, 0x80 -	lsls r0, 2 -	cmp r1, r0 -	ble _08182AB8 -	movs r0, 0 -	strh r0, [r4, 0x24] -	adds r0, r4, 0 -	bl sub_817F77C -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	b _08182B16 -	.pool -_08182AB8: -	movs r0, 0x3C -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182AC4 -	adds r0, 0xFF -_08182AC4: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x8 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x24] -	ldrh r0, [r4, 0x3C] -	adds r0, 0x8 -	strh r0, [r4, 0x3C] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	adds r1, r0, 0 -	cmp r0, 0 -	bge _08182AEA -	adds r1, 0xFF -_08182AEA: -	asrs r1, 8 -	lsls r1, 8 -	subs r1, r0, r1 -	lsls r1, 16 -	asrs r0, r1, 16 -	lsrs r1, 31 -	adds r0, r1 -	asrs r0, 1 -	movs r1, 0x60 -	bl Sin -	adds r2, r0, 0 -	lsls r2, 16 -	movs r0, 0x80 -	lsls r0, 17 -	adds r2, r0 -	asrs r2, 16 -	adds r0, r4, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -_08182B16: -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_42 - -	thumb_func_start pokemonanimfunc_43 -pokemonanimfunc_43: @ 8182B24 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	movs r0, 0x32 -	ldrsh r1, [r4, r0] -	movs r0, 0x80 -	lsls r0, 4 -	cmp r1, r0 -	ble _08182B48 -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r0, 0 -	strh r0, [r4, 0x3A] -	b _08182C08 -	.pool -_08182B48: -	movs r1, 0x32 -	ldrsh r2, [r4, r1] -	adds r0, r2, 0 -	cmp r2, 0 -	bge _08182B56 -	ldr r1, =0x000001ff -	adds r0, r2, r1 -_08182B56: -	asrs r3, r0, 9 -	adds r1, r3, 0 -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182B62 -	adds r0, r1, 0x3 -_08182B62: -	asrs r0, 2 -	lsls r0, 2 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x1 -	beq _08182BA4 -	cmp r0, 0x1 -	bgt _08182B80 -	cmp r0, 0 -	beq _08182B8A -	b _08182BE2 -	.pool -_08182B80: -	cmp r0, 0x2 -	beq _08182BB8 -	cmp r0, 0x3 -	beq _08182BCA -	b _08182BE2 -_08182B8A: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 12 -	negs r0, r0 -	cmp r0, 0 -	bge _08182B9C -	ldr r1, =0x000001ff -	adds r0, r1 -_08182B9C: -	asrs r0, 9 -	b _08182BE0 -	.pool -_08182BA4: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0 -	bge _08182BB2 -	adds r0, 0x1F -_08182BB2: -	asrs r0, 5 -	subs r0, 0x10 -	b _08182BE0 -_08182BB8: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0 -	bge _08182BC6 -	adds r0, 0x1F -_08182BC6: -	asrs r0, 5 -	b _08182BE0 -_08182BCA: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 12 -	negs r0, r0 -	cmp r0, 0 -	bge _08182BDC -	ldr r1, =0x000001ff -	adds r0, r1 -_08182BDC: -	asrs r0, 9 -	adds r0, 0x10 -_08182BE0: -	strh r0, [r4, 0x24] -_08182BE2: -	movs r0, 0x32 -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08182BEE -	adds r0, 0x7F -_08182BEE: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x4 -	bl Sin -	negs r0, r0 -	strh r0, [r4, 0x26] -	ldrh r0, [r4, 0x32] -	adds r0, 0x18 -	strh r0, [r4, 0x32] -_08182C08: -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_43 - -	thumb_func_start pokemonanimfunc_44 -pokemonanimfunc_44: @ 8182C18 -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	ldrh r1, [r4, 0x32] -	movs r2, 0x32 -	ldrsh r0, [r4, r2] -	cmp r0, 0 -	bne _08182C34 -	strh r0, [r4, 0x3A] -	movs r0, 0x40 -	strh r0, [r4, 0x3C] -	adds r0, r1, 0x1 -	strh r0, [r4, 0x32] -_08182C34: -	ldrh r0, [r4, 0x3C] -	adds r1, r0, 0 -	adds r1, 0x8 -	movs r3, 0 -	strh r1, [r4, 0x3C] -	ldrh r2, [r4, 0x3A] -	movs r5, 0x3A -	ldrsh r0, [r4, r5] -	cmp r0, 0x4 -	bne _08182C52 -	lsls r0, r1, 16 -	asrs r0, 16 -	cmp r0, 0x3F -	ble _08182C60 -	b _08182C5A -_08182C52: -	lsls r0, r1, 16 -	asrs r0, 16 -	cmp r0, 0x7F -	ble _08182C60 -_08182C5A: -	strh r3, [r4, 0x3C] -	adds r0, r2, 0x1 -	strh r0, [r4, 0x3A] -_08182C60: -	movs r1, 0x3A -	ldrsh r0, [r4, r1] -	cmp r0, 0x4 -	bhi _08182D08 -	lsls r0, 2 -	ldr r1, =_08182C78 -	adds r0, r1 -	ldr r0, [r0] -	mov pc, r0 -	.pool -	.align 2, 0 -_08182C78: -	.4byte _08182CEC -	.4byte _08182C8C -	.4byte _08182CAA -	.4byte _08182CCC -	.4byte _08182CEC -_08182C8C: -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	movs r1, 0x8 -	bl Cos -	negs r0, r0 -	strh r0, [r4, 0x24] -	movs r5, 0x3C -	ldrsh r0, [r4, r5] -	movs r1, 0x8 -	bl Sin -	subs r0, 0x8 -	strh r0, [r4, 0x26] -	b _08182D12 -_08182CAA: -	ldrh r0, [r4, 0x3C] -	adds r0, 0x80 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x8 -	bl Sin -	adds r0, 0x8 -	strh r0, [r4, 0x24] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Cos -	negs r0, r0 -	strh r0, [r4, 0x26] -	b _08182D12 -_08182CCC: -	movs r2, 0x3C -	ldrsh r0, [r4, r2] -	movs r1, 0x8 -	bl Cos -	strh r0, [r4, 0x24] -	ldrh r0, [r4, 0x3C] -	adds r0, 0x80 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x8 -	bl Sin -	adds r0, 0x8 -	strh r0, [r4, 0x26] -	b _08182D12 -_08182CEC: -	movs r5, 0x3C -	ldrsh r0, [r4, r5] -	movs r1, 0x8 -	bl Sin -	subs r0, 0x8 -	strh r0, [r4, 0x24] -	movs r1, 0x3C -	ldrsh r0, [r4, r1] -	movs r1, 0x8 -	bl Cos -	strh r0, [r4, 0x26] -	b _08182D12 -_08182D08: -	movs r0, 0 -	strh r0, [r4, 0x24] -	strh r0, [r4, 0x26] -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -_08182D12: -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4,r5} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_44 - -	thumb_func_start pokemonanimfunc_45 -pokemonanimfunc_45: @ 8182D24 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x20 -	strh r0, [r4, 0x2E] -	adds r0, r4, 0 -	bl sub_8180714 -	ldr r0, =sub_8180714 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_45 - -	thumb_func_start pokemonanimfunc_46 -pokemonanimfunc_46: @ 8182D40 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x50 -	strh r0, [r4, 0x2E] -	adds r0, r4, 0 -	bl sub_817F8FC -	ldr r0, =sub_817F8FC -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_46 - -	thumb_func_start pokemonanimfunc_47 -pokemonanimfunc_47: @ 8182D5C -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x50 -	strh r0, [r4, 0x2E] -	adds r0, r4, 0 -	bl sub_817F978 -	ldr r0, =sub_817F978 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_47 - -	thumb_func_start pokemonanimfunc_48 -pokemonanimfunc_48: @ 8182D78 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x80 -	lsls r0, 4 -	strh r0, [r1, 0x6] -	ldrh r0, [r4, 0x3A] -	strh r0, [r1, 0x8] -	adds r0, r4, 0 -	bl sub_8180900 -	ldr r0, =sub_8180900 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_48 - -	thumb_func_start pokemonanimfunc_49 -pokemonanimfunc_49: @ 8182DB4 -	push {lr} -	movs r1, 0x1 -	strh r1, [r0, 0x3A] -	bl pokemonanimfunc_05 -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_49 - -	thumb_func_start pokemonanimfunc_4A -pokemonanimfunc_4A: @ 8182DC4 -	push {lr} -	movs r1, 0x1 -	strh r1, [r0, 0x3A] -	bl pokemonanimfunc_48 -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_4A - -	thumb_func_start pokemonanimfunc_4B -pokemonanimfunc_4B: @ 8182DD4 -	push {r4,lr} -	adds r4, r0, 0 -	movs r1, 0x32 -	ldrsh r0, [r4, r1] -	cmp r0, 0 -	bne _08182DE2 -	strh r0, [r4, 0x2E] -_08182DE2: -	ldrh r1, [r4, 0x2E] -	movs r2, 0x2E -	ldrsh r0, [r4, r2] -	cmp r0, 0 -	bgt _08182DF6 -	adds r0, r4, 0 -	bl sub_817FC20 -	movs r0, 0x1 -	b _08182DF8 -_08182DF6: -	subs r0, r1, 0x1 -_08182DF8: -	strh r0, [r4, 0x2E] -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_4B - -	thumb_func_start pokemonanimfunc_4C -pokemonanimfunc_4C: @ 8182E00 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x1E -	strh r0, [r4, 0x2E] -	movs r0, 0x3 -	strh r0, [r4, 0x3C] -	adds r0, r4, 0 -	bl sub_817FCDC -	ldr r0, =sub_817FCDC -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_4C - -	thumb_func_start pokemonanimfunc_4D -pokemonanimfunc_4D: @ 8182E20 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x1E -	strh r0, [r4, 0x2E] -	adds r0, r4, 0 -	bl sub_817FD44 -	ldr r0, =sub_817FD44 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_4D - -	thumb_func_start pokemonanimfunc_4E -pokemonanimfunc_4E: @ 8182E3C -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	movs r3, 0 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x80 -	lsls r0, 3 -	strh r0, [r1, 0x6] -	strh r3, [r1] -	movs r0, 0x2 -	strh r0, [r1, 0x4] -	adds r0, r4, 0 -	bl sub_817FE30 -	ldr r0, =sub_817FE30 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_4E - -	thumb_func_start pokemonanimfunc_4F -pokemonanimfunc_4F: @ 8182E7C -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x80 -	lsls r0, 2 -	strh r0, [r1, 0x6] -	movs r0, 0x3 -	strh r0, [r1, 0x8] -	movs r0, 0xC -	strh r0, [r1, 0x2] -	adds r0, r4, 0 -	bl sub_817FFF0 -	ldr r0, =sub_817FFF0 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_4F - -	thumb_func_start pokemonanimfunc_50 -pokemonanimfunc_50: @ 8182EBC -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x18 -	strh r0, [r4, 0x2E] -	adds r0, r4, 0 -	bl sub_818031C -	ldr r0, =sub_818031C -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_50 - -	thumb_func_start pokemonanimfunc_51 -pokemonanimfunc_51: @ 8182ED8 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x5 -	strh r0, [r4, 0x2E] -	adds r0, r4, 0 -	bl sub_81804F8 -	ldr r0, =sub_81804F8 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_51 - -	thumb_func_start pokemonanimfunc_52 -pokemonanimfunc_52: @ 8182EF4 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x3 -	strh r0, [r4, 0x2E] -	adds r0, r4, 0 -	bl sub_817F9F4 -	ldr r0, =sub_817F9F4 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_52 - -	thumb_func_start pokemonanimfunc_53 -pokemonanimfunc_53: @ 8182F10 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x3C -	strh r0, [r1] -	movs r0, 0x1E -	strh r0, [r1, 0x8] -	adds r0, r4, 0 -	bl sub_817FF3C -	ldr r0, =sub_817FF3C -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_53 - -	thumb_func_start pokemonanimfunc_54 -pokemonanimfunc_54: @ 8182F48 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x1 -	strh r0, [r1, 0x2] -	movs r0, 0x2 -	strh r0, [r1, 0x4] -	adds r0, r4, 0 -	bl sub_8181214 -	ldr r0, =sub_8181214 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_54 - -	thumb_func_start pokemonanimfunc_55 -pokemonanimfunc_55: @ 8182F80 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x4 -	strh r0, [r1, 0x6] -	movs r0, 0x2 -	strh r0, [r1, 0x4] -	adds r0, r4, 0 -	bl sub_8181810 -	ldr r0, =sub_8181810 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_55 - -	thumb_func_start pokemonanimfunc_56 -pokemonanimfunc_56: @ 8182FB8 -	push {r4,r5,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	movs r5, 0 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x1 -	strh r0, [r1, 0x8] -	movs r0, 0x2 -	strh r0, [r1, 0x4] -	adds r0, r4, 0 -	bl HandleStartAffineAnim -	strh r5, [r4, 0x34] -	adds r0, r4, 0 -	bl sub_8181ABC -	ldr r0, =sub_8181ABC -	str r0, [r4, 0x1C] -	pop {r4,r5} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_56 - -	thumb_func_start pokemonanimfunc_07 -pokemonanimfunc_07: @ 8182FFC -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x2 -	strh r0, [r1, 0x6] -	adds r0, r4, 0 -	bl sub_8181CE8 -	ldr r0, =sub_8181CE8 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_07 - -	thumb_func_start pokemonanimfunc_08 -pokemonanimfunc_08: @ 8183030 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x4 -	strh r0, [r1, 0x6] -	movs r0, 0x2 -	strh r0, [r1, 0x4] -	adds r0, r4, 0 -	bl sub_8181CE8 -	ldr r0, =sub_8181CE8 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_08 - -	thumb_func_start pokemonanimfunc_0B -pokemonanimfunc_0B: @ 8183068 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x64 -	strh r0, [r1, 0x8] -	adds r0, r4, 0 -	bl sub_81814D4 -	ldr r0, =sub_81814D4 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_0B - -	thumb_func_start pokemonanimfunc_0C -pokemonanimfunc_0C: @ 818309C -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x32 -	strh r0, [r1, 0x8] -	movs r0, 0x2 -	strh r0, [r1, 0x4] -	adds r0, r4, 0 -	bl sub_81814D4 -	ldr r0, =sub_81814D4 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_0C - -	thumb_func_start pokemonanimfunc_0D -pokemonanimfunc_0D: @ 81830D4 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x64 -	strh r0, [r1, 0x8] -	adds r0, r4, 0 -	bl sub_81815D4 -	ldr r0, =sub_81815D4 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_0D - -	thumb_func_start pokemonanimfunc_0E -pokemonanimfunc_0E: @ 8183108 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F758 -	lsls r0, 24 -	lsrs r0, 24 -	strh r0, [r4, 0x2E] -	ldr r2, =gUnknown_03001240 -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	adds r1, r2 -	movs r0, 0x32 -	strh r0, [r1, 0x8] -	movs r0, 0x2 -	strh r0, [r1, 0x4] -	adds r0, r4, 0 -	bl sub_81815D4 -	ldr r0, =sub_81815D4 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_0E - -	thumb_func_start sub_8183140 -sub_8183140: @ 8183140 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x32 -	ldrsh r2, [r4, r0] -	movs r0, 0x90 -	lsls r0, 4 -	cmp r2, r0 -	ble _0818315C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r0, 0 -	b _08183180 -	.pool -_0818315C: -	adds r1, r2, 0 -	adds r1, 0xC0 -	adds r0, r1, 0 -	cmp r1, 0 -	bge _0818316A -	ldr r3, =0x000001bf -	adds r0, r2, r3 -_0818316A: -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r2, 0x3C -	ldrsh r1, [r4, r2] -	bl Sin -	ldrh r1, [r4, 0x3C] -	adds r0, r1 -_08183180: -	strh r0, [r4, 0x26] -	ldrh r0, [r4, 0x2E] -	ldrh r3, [r4, 0x32] -	adds r0, r3 -	strh r0, [r4, 0x32] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end sub_8183140 - -	thumb_func_start pokemonanimfunc_57 -pokemonanimfunc_57: @ 8183194 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x3C -	strh r0, [r4, 0x2E] -	movs r0, 0x3 -	strh r0, [r4, 0x3C] -	adds r0, r4, 0 -	bl sub_8183140 -	ldr r0, =sub_8183140 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_57 - -	thumb_func_start pokemonanimfunc_58 -pokemonanimfunc_58: @ 81831B4 -	push {r4,lr} -	adds r4, r0, 0 -	movs r0, 0x1E -	strh r0, [r4, 0x2E] -	movs r0, 0x3 -	strh r0, [r4, 0x3C] -	adds r0, r4, 0 -	bl sub_8183140 -	ldr r0, =sub_8183140 -	str r0, [r4, 0x1C] -	pop {r4} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end pokemonanimfunc_58 - -	thumb_func_start pokemonanimfunc_59 -pokemonanimfunc_59: @ 81831D4 -	push {r4,lr} -	adds r4, r0, 0 -	bl sub_817F70C -	movs r0, 0x32 -	ldrsh r1, [r4, r0] -	movs r0, 0x80 -	lsls r0, 4 -	cmp r1, r0 -	ble _081831F8 -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r0, 0 -	strh r0, [r4, 0x3A] -	b _081832BC -	.pool -_081831F8: -	movs r1, 0x32 -	ldrsh r2, [r4, r1] -	adds r0, r2, 0 -	cmp r2, 0 -	bge _08183206 -	ldr r1, =0x000001ff -	adds r0, r2, r1 -_08183206: -	asrs r3, r0, 9 -	adds r1, r3, 0 -	adds r0, r1, 0 -	cmp r1, 0 -	bge _08183212 -	adds r0, r1, 0x3 -_08183212: -	asrs r0, 2 -	lsls r0, 2 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0x1 -	beq _08183268 -	cmp r0, 0x1 -	bgt _08183230 -	cmp r0, 0 -	beq _0818323A -	b _08183298 -	.pool -_08183230: -	cmp r0, 0x2 -	beq _0818324C -	cmp r0, 0x3 -	beq _08183284 -	b _08183298 -_0818323A: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0 -	bge _08183248 -	adds r0, 0x1F -_08183248: -	asrs r0, 5 -	b _08183296 -_0818324C: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 12 -	negs r0, r0 -	cmp r0, 0 -	bge _0818325E -	ldr r1, =0x000001ff -	adds r0, r1 -_0818325E: -	asrs r0, 9 -	b _08183296 -	.pool -_08183268: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 12 -	negs r0, r0 -	cmp r0, 0 -	bge _0818327A -	ldr r1, =0x000001ff -	adds r0, r1 -_0818327A: -	asrs r0, 9 -	adds r0, 0x10 -	b _08183296 -	.pool -_08183284: -	lsls r0, r3, 9 -	subs r0, r2, r0 -	lsls r0, 16 -	asrs r0, 16 -	cmp r0, 0 -	bge _08183292 -	adds r0, 0x1F -_08183292: -	asrs r0, 5 -	subs r0, 0x10 -_08183296: -	strh r0, [r4, 0x24] -_08183298: -	movs r0, 0x32 -	ldrsh r1, [r4, r0] -	adds r0, r1, 0 -	cmp r1, 0 -	bge _081832A4 -	adds r0, 0x7F -_081832A4: -	asrs r0, 7 -	lsls r0, 7 -	subs r0, r1, r0 -	lsls r0, 16 -	asrs r0, 16 -	movs r1, 0x4 -	bl Sin -	strh r0, [r4, 0x26] -	ldrh r0, [r4, 0x32] -	adds r0, 0x18 -	strh r0, [r4, 0x32] -_081832BC: -	adds r0, r4, 0 -	bl sub_817F70C -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_59 - -	thumb_func_start sub_81832C8 -sub_81832C8: @ 81832C8 -	push {r4-r7,lr} -	mov r7, r9 -	mov r6, r8 -	push {r6,r7} -	adds r6, r0, 0 -	movs r0, 0 -	mov r8, r0 -	movs r2, 0x38 -	ldrsh r1, [r6, r2] -	movs r2, 0x3A -	ldrsh r0, [r6, r2] -	cmp r1, r0 -	ble _0818331A -	mov r0, r8 -	strh r0, [r6, 0x26] -	strh r0, [r6, 0x38] -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r6, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	ldrh r1, [r6, 0x36] -	movs r2, 0x36 -	ldrsh r0, [r6, r2] -	cmp r0, 0x1 -	bgt _08183310 -	adds r0, r6, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r6, 0x1C] -	b _081833DC -	.pool -_08183310: -	subs r0, r1, 0x1 -	strh r0, [r6, 0x36] -	mov r0, r8 -	strh r0, [r6, 0x3C] -	b _081833DC -_0818331A: -	movs r1, 0x38 -	ldrsh r5, [r6, r1] -	lsls r0, r5, 7 -	movs r2, 0x3A -	ldrsh r4, [r6, r2] -	adds r1, r4, 0 -	bl __divsi3 -	lsls r0, 16 -	lsrs r2, r0, 16 -	cmp r4, 0 -	bge _08183334 -	adds r4, 0x3 -_08183334: -	asrs r1, r4, 2 -	lsls r1, 24 -	lsrs r1, 24 -	lsls r0, r1, 1 -	adds r0, r1 -	lsls r0, 24 -	lsrs r0, 24 -	cmp r5, r1 -	blt _08183358 -	cmp r5, r0 -	bge _08183358 -	ldrh r0, [r6, 0x3C] -	adds r0, 0x33 -	strh r0, [r6, 0x3C] -	movs r1, 0xFF -	mov r8, r1 -	ands r1, r0 -	mov r8, r1 -_08183358: -	movs r1, 0x30 -	ldrsh r0, [r6, r1] -	cmp r0, 0 -	bne _0818337C -	lsls r4, r2, 16 -	asrs r0, r4, 16 -	movs r1, 0x10 -	bl Sin -	ldr r2, =0xffffff00 -	adds r1, r2, 0 -	subs r1, r0 -	lsls r1, 16 -	lsrs r1, 16 -	mov r9, r1 -	b _08183392 -	.pool -_0818337C: -	lsls r4, r2, 16 -	asrs r0, r4, 16 -	movs r1, 0x10 -	bl Sin -	movs r1, 0x80 -	lsls r1, 1 -	adds r0, r1 -	lsls r0, 16 -	lsrs r0, 16 -	mov r9, r0 -_08183392: -	adds r7, r4, 0 -	ldrh r4, [r6, 0x34] -	lsls r4, 24 -	lsrs r4, 24 -	mov r5, r8 -	adds r0, r4, 0 -	movs r1, 0x5 -	bl __udivsi3 -	adds r1, r0, 0 -	lsls r1, 24 -	lsrs r1, 24 -	adds r0, r5, 0 -	bl Sin -	adds r5, r0, 0 -	asrs r0, r7, 16 -	adds r1, r4, 0 -	bl Sin -	movs r1, 0x80 -	lsls r1, 1 -	adds r2, r1, 0 -	subs r2, r5 -	subs r2, r0 -	mov r0, r9 -	lsls r1, r0, 16 -	asrs r1, 16 -	lsls r2, 16 -	asrs r2, 16 -	adds r0, r6, 0 -	movs r3, 0 -	bl SetAffineData -	ldrh r0, [r6, 0x38] -	adds r0, 0x1 -	strh r0, [r6, 0x38] -_081833DC: -	pop {r3,r4} -	mov r8, r3 -	mov r9, r4 -	pop {r4-r7} -	pop {r0} -	bx r0 -	thumb_func_end sub_81832C8 - -	thumb_func_start pokemonanimfunc_5A -pokemonanimfunc_5A: @ 81833E8 -	push {r4-r6,lr} -	adds r5, r0, 0 -	movs r0, 0x32 -	ldrsh r6, [r5, r0] -	cmp r6, 0 -	bne _0818340A -	movs r4, 0x1 -	strh r4, [r5, 0x32] -	adds r0, r5, 0 -	bl HandleStartAffineAnim -	strh r4, [r5, 0x36] -	movs r0, 0x28 -	strh r0, [r5, 0x3A] -	strh r0, [r5, 0x34] -	strh r6, [r5, 0x38] -	strh r6, [r5, 0x3C] -_0818340A: -	adds r0, r5, 0 -	bl sub_81832C8 -	pop {r4-r6} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_5A - -	thumb_func_start sub_8183418 -sub_8183418: @ 8183418 -	push {r4-r7,lr} -	mov r7, r9 -	mov r6, r8 -	push {r6,r7} -	adds r6, r0, 0 -	movs r0, 0 -	mov r8, r0 -	movs r2, 0x38 -	ldrsh r1, [r6, r2] -	movs r2, 0x3A -	ldrsh r0, [r6, r2] -	cmp r1, r0 -	ble _0818346A -	mov r0, r8 -	strh r0, [r6, 0x38] -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r6, 0 -	adds r1, r2, 0 -	movs r3, 0 -	bl HandleSetAffineData -	ldrh r1, [r6, 0x36] -	movs r2, 0x36 -	ldrsh r0, [r6, r2] -	cmp r0, 0x1 -	bgt _08183460 -	adds r0, r6, 0 -	bl sub_817F77C -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r6, 0x1C] -	b _08183538 -	.pool -_08183460: -	subs r0, r1, 0x1 -	strh r0, [r6, 0x36] -	mov r0, r8 -	strh r0, [r6, 0x3C] -	b _08183538 -_0818346A: -	movs r1, 0x38 -	ldrsh r5, [r6, r1] -	lsls r0, r5, 7 -	movs r2, 0x3A -	ldrsh r4, [r6, r2] -	adds r1, r4, 0 -	bl __divsi3 -	lsls r0, 16 -	lsrs r0, 16 -	mov r9, r0 -	cmp r4, 0 -	bge _08183486 -	adds r4, 0x3 -_08183486: -	asrs r1, r4, 2 -	lsls r1, 24 -	lsrs r1, 24 -	lsls r0, r1, 1 -	adds r0, r1 -	lsls r0, 24 -	lsrs r0, 24 -	cmp r5, r1 -	blt _081834AC -	cmp r5, r0 -	bge _081834AC -	ldrh r0, [r6, 0x3C] -	adds r0, 0x33 -	strh r0, [r6, 0x3C] -	movs r1, 0xFF -	mov r8, r1 -	mov r2, r8 -	ands r2, r0 -	mov r8, r2 -_081834AC: -	ldrh r0, [r6, 0x34] -	lsls r0, 24 -	lsrs r7, r0, 24 -	movs r1, 0x30 -	ldrsh r0, [r6, r1] -	cmp r0, 0 -	bne _081834F0 -	mov r2, r9 -	lsls r0, r2, 16 -	asrs r0, 16 -	adds r1, r7, 0 -	bl Sin -	adds r4, r0, 0 -	mov r5, r8 -	adds r0, r7, 0 -	movs r1, 0x5 -	bl __udivsi3 -	adds r1, r0, 0 -	lsls r1, 24 -	lsrs r1, 23 -	adds r0, r5, 0 -	bl Sin -	ldr r1, =0xffffff00 -	adds r0, r1 -	adds r4, r0 -	lsls r4, 16 -	lsrs r1, r4, 16 -	b _08183522 -	.pool -_081834F0: -	mov r4, r8 -	adds r0, r7, 0 -	movs r1, 0x5 -	bl __udivsi3 -	adds r1, r0, 0 -	lsls r1, 24 -	lsrs r1, 23 -	adds r0, r4, 0 -	bl Sin -	adds r4, r0, 0 -	mov r2, r9 -	lsls r0, r2, 16 -	asrs r0, 16 -	adds r1, r7, 0 -	bl Sin -	movs r2, 0x80 -	lsls r2, 1 -	adds r1, r2, 0 -	subs r1, r4 -	subs r1, r0 -	lsls r1, 16 -	lsrs r1, 16 -_08183522: -	lsls r1, 16 -	asrs r1, 16 -	movs r2, 0x80 -	lsls r2, 1 -	adds r0, r6, 0 -	movs r3, 0 -	bl SetAffineData -	ldrh r0, [r6, 0x38] -	adds r0, 0x1 -	strh r0, [r6, 0x38] -_08183538: -	pop {r3,r4} -	mov r8, r3 -	mov r9, r4 -	pop {r4-r7} -	pop {r0} -	bx r0 -	thumb_func_end sub_8183418 - -	thumb_func_start pokemonanimfunc_5B -pokemonanimfunc_5B: @ 8183544 -	push {r4-r6,lr} -	adds r5, r0, 0 -	movs r0, 0x32 -	ldrsh r6, [r5, r0] -	cmp r6, 0 -	bne _08183566 -	movs r4, 0x1 -	strh r4, [r5, 0x32] -	adds r0, r5, 0 -	bl HandleStartAffineAnim -	strh r4, [r5, 0x36] -	movs r0, 0x28 -	strh r0, [r5, 0x3A] -	strh r0, [r5, 0x34] -	strh r6, [r5, 0x38] -	strh r6, [r5, 0x3C] -_08183566: -	adds r0, r5, 0 -	bl sub_8183418 -	pop {r4-r6} -	pop {r0} -	bx r0 -	thumb_func_end pokemonanimfunc_5B - -	thumb_func_start sub_8183574 -sub_8183574: @ 8183574 -	push {r4-r7,lr} -	mov r7, r9 -	mov r6, r8 -	push {r6,r7} -	adds r4, r0, 0 -	ldrh r0, [r4, 0x32] -	lsls r0, 24 -	lsrs r0, 24 -	mov r8, r0 -	ldrh r0, [r4, 0x3A] -	lsls r0, 24 -	lsrs r0, 24 -	mov r9, r0 -	ldr r3, =gUnknown_0860AA80 -	movs r1, 0x38 -	ldrsh r0, [r4, r1] -	lsls r1, r0, 1 -	adds r0, r1, r3 -	ldrb r5, [r0] -	adds r2, r5, 0 -	cmp r5, 0xFF -	beq _081835A6 -	ldrh r0, [r4, 0x3C] -	lsls r0, 24 -	lsrs r5, r0, 24 -_081835A6: -	adds r0, r3, 0x1 -	adds r0, r1, r0 -	ldrb r6, [r0] -	movs r7, 0 -	cmp r2, 0xFE -	beq _081835C2 -	mov r1, r9 -	subs r0, r6, r1 -	muls r0, r5 -	adds r1, r6, 0 -	bl __divsi3 -	lsls r0, 24 -	lsrs r7, r0, 24 -_081835C2: -	cmp r5, 0xFF -	bne _081835D8 -	ldr r0, =SpriteCB_SetDummyOnAnimEnd -	str r0, [r4, 0x1C] -	movs r0, 0 -	strh r0, [r4, 0x26] -	b _0818360A -	.pool -_081835D8: -	mov r1, r8 -	adds r1, 0xC0 -	adds r0, r1, 0 -	asrs r0, 8 -	lsls r0, 8 -	subs r0, r1, r0 -	adds r1, r7, 0 -	bl Sin -	adds r0, r7 -	strh r0, [r4, 0x26] -	cmp r9, r6 -	bne _081835FC -	ldrh r0, [r4, 0x38] -	adds r0, 0x1 -	strh r0, [r4, 0x38] -	movs r0, 0 -	b _08183608 -_081835FC: -	ldrh r0, [r4, 0x2E] -	ldrh r1, [r4, 0x32] -	adds r0, r1 -	strh r0, [r4, 0x32] -	ldrh r0, [r4, 0x3A] -	adds r0, 0x1 -_08183608: -	strh r0, [r4, 0x3A] -_0818360A: -	pop {r3,r4} -	mov r8, r3 -	mov r9, r4 -	pop {r4-r7} -	pop {r0} -	bx r0 -	thumb_func_end sub_8183574 +	  	thumb_func_start pokemonanimfunc_5C  pokemonanimfunc_5C: @ 8183618 diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 87949e88b..1496069df 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -1071,14 +1071,13 @@ void pokemonanimfunc_02(struct Sprite *sprite)      }      else      { -        s8 var; - +        s8 sign;          if (!(sprite->data[2] & 1)) -            var = 1; +            sign = 1;          else -            var = -1; +            sign = -1; -        sprite->pos2.x = Sin((sprite->data[2] * 128 / 40) % 256, 6) * var; +        sprite->pos2.x = Sin((sprite->data[2] * 128 / 40) % 256, 6) * sign;      }      sprite->data[2]++; @@ -1427,19 +1426,19 @@ void pokemonanimfunc_11(struct Sprite *sprite)      }      else      { -        s8 var; +        s8 sign;          s32 index, amplitude;          if (!(sprite->data[2] & 1)) -            var = 1; +            sign = 1;          else -            var = -1; +            sign = -1;          amplitude = Sin(sprite->data[2] / 4, 8);          index = sprite->data[2] % 256; -        sprite->pos2.y = Sin(index, amplitude) * var; -        sprite->pos2.x = Cos(index, amplitude) * var; +        sprite->pos2.y = Sin(index, amplitude) * sign; +        sprite->pos2.x = Cos(index, amplitude) * sign;      }      sprite->data[2] += 9; @@ -3132,3 +3131,1066 @@ void sub_8181FC0(struct Sprite *sprite)      HandleSetAffineData(sprite, 0x100, 0x100, sprite->data[7] << 8);      sub_817F70C(sprite);  } + +void pokemonanimfunc_37(struct Sprite *sprite) +{ +    u16 rotation; + +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +    } + +    sub_817F70C(sprite); +    if (sprite->data[7] > 255) +    { +        sprite->pos2.x = 0; +        sprite->pos2.y = 0; +        sprite->data[7] = 0; +        sub_817F77C(sprite); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +    } +    else +    { +        sprite->data[7] += 16; +        sprite->pos2.x = -(Sin(sprite->data[7] % 128, 8)); +        sprite->pos2.y = -(Sin(sprite->data[7] % 128, 8)); +    } + +    rotation = Sin(sprite->data[7] % 128, 16); +    HandleSetAffineData(sprite, 0x100, 0x100, rotation << 8); +    sub_817F70C(sprite); +} + +void sub_81820FC(struct Sprite *sprite); +void sub_818216C(struct Sprite *sprite); +void sub_81821CC(struct Sprite *sprite); +void sub_8182248(struct Sprite *sprite); + +void pokemonanimfunc_38(struct Sprite *sprite) +{ +    HandleStartAffineAnim(sprite); +    sprite->data[7] = 0; +    sprite->data[4] = 0; +    sprite->callback = sub_81820FC; +} + +void sub_81820FC(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[7] > 24) +    { +        if (++sprite->data[4] > 4) +        { +            sprite->data[4] = 0; +            sprite->callback = sub_818216C; +        } +    } +    else +    { +        sprite->data[7] += 2; +        sprite->pos2.x = Sin(sprite->data[7], 8); +        sprite->pos2.y = -(Sin(sprite->data[7], 8)); +    } + +    HandleSetAffineData(sprite, 0x100, 0x100, -(sprite->data[7]) << 8); +    sub_817F70C(sprite); +} + +void sub_818216C(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[7] > 32) +    { +        sprite->data[6] = 1; +        sprite->callback = sub_81821CC; +    } +    else +    { +        sprite->data[7] += 2; +        sprite->pos2.x = Sin(sprite->data[7], 8); +        sprite->pos2.y = -(Sin(sprite->data[7], 8)); +    } + +    HandleSetAffineData(sprite, 0x100, 0x100, -(sprite->data[7]) << 8); +    sub_817F70C(sprite); +} + +void sub_81821CC(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    sprite->data[7] += (sprite->data[6] * 4); +    if (sprite->data[5] > 9) +    { +        sprite->data[7] = 32; +        sprite->callback = sub_8182248; +    } + +    sprite->pos2.x = Sin(sprite->data[7], 8); +    sprite->pos2.y = -(Sin(sprite->data[7], 8)); +    if (sprite->data[7] <= 28 || sprite->data[7] >= 36) +    { +        sprite->data[6] *= -1; +        sprite->data[5]++; +    } + +    HandleSetAffineData(sprite, 0x100, 0x100, -(sprite->data[7]) << 8); +    sub_817F70C(sprite); +} + +void sub_8182248(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[7] <= 0) +    { +        sprite->data[7] = 0; +        sub_817F77C(sprite); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +    } +    else +    { +        sprite->data[7] -= 2; +        sprite->pos2.x = Sin(sprite->data[7], 8); +        sprite->pos2.y = -(Sin(sprite->data[7], 8)); +    } + +    HandleSetAffineData(sprite, 0x100, 0x100, -(sprite->data[7]) << 8); +    sub_817F70C(sprite); +} + +void pokemonanimfunc_39(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] > 40) +    { +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        sprite->pos2.x = 0; +    } +    else +    { +        s8 sign; +        if (!(sprite->data[2] & 1)) +            sign = 1; +        else +            sign = -1; + +        if ((sprite->data[2] % 4) / 2 == 0) +        { +            sprite->pos2.x = Sin((sprite->data[2] * 128 / 40) % 256, 16) * sign; +            sprite->pos2.y = -(sprite->pos2.x); +        } +        else +        { +            sprite->pos2.x = -(Sin((sprite->data[2] * 128 / 40) % 256, 16)) * sign; +            sprite->pos2.y = sprite->pos2.x; +        } +    } + +    sprite->data[2]++; +    sub_817F70C(sprite); +} + +void pokemonanimfunc_3A(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[5] = 0; +        sprite->data[6] = 0; +        sprite->data[7] = 0; +        sprite->data[2]++; +    } + +    if (sprite->data[6] > 0) +    { +        sprite->data[6]--; +        if (sprite->data[5] != 3) +        { +            s16 scale = (8 * sprite->data[6]) / 20; +            scale = Sin(sprite->data[7] - scale, 64); +            HandleSetAffineData(sprite, 0x100 - scale, 0x100 - scale, 0); +        } +    } +    else +    { +        s16 var; + +        if (sprite->data[5] == 3) +        { +            if (sprite->data[7] > 63) +            { +                sprite->data[7] = 64; +                HandleSetAffineData(sprite, 0x100, 0x100, 0); +                sub_817F77C(sprite); +                sprite->callback = SpriteCB_SetDummyOnAnimEnd; +            } +            var = Cos(sprite->data[7], 64); +        } +        else +        { +            var = Sin(sprite->data[7], 64); +            if (sprite->data[7] > 63) +            { +                sprite->data[5] = 3; +                sprite->data[6] = 10; +                sprite->data[7] = 0; +            } +            else +            { +                if (var > 48 && sprite->data[5] == 1) +                { +                    sprite->data[5] = 2; +                    sprite->data[6] = 20; +                } +                else if (var > 16 && sprite->data[5] == 0) +                { +                    sprite->data[5] = 1; +                    sprite->data[6] = 20; +                } +            } +        } + +        sprite->data[7] += 2; +        HandleSetAffineData(sprite, 0x100 - var, 0x100 - var, 0); +    } + +    sub_817F70C(sprite); +} + +void pokemonanimfunc_3B(struct Sprite *sprite) +{ +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +    } + +    if (sprite->data[7] > 512) +    { +        sprite->pos2.y = 0; +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +        sub_817F77C(sprite); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +    } +    else +    { +        s16 yScale; + +        sprite->pos2.y = Sin(sprite->data[7] % 256, 8); +        sprite->data[7] += 8; +        yScale = Sin(sprite->data[7] % 128, 96); +        HandleSetAffineData(sprite, 0x100, yScale + 0x100, 0); +    } +} + +void pokemonanimfunc_3C(struct Sprite *sprite) +{ +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +    } + +    if (sprite->data[7] > 256) +    { +        sprite->pos2.y = 0; +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +        sub_817F77C(sprite); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +    } +    else +    { +        s16 yScale; + +        sprite->pos2.y = Sin(sprite->data[7], 16); +        sprite->data[7] += 4; +        yScale = Sin((sprite->data[7] % 64) * 2, 128); +        HandleSetAffineData(sprite, 0x100, yScale + 0x100, 0); +    } +} + +void sub_81825F8(struct Sprite *sprite); +void sub_8182648(struct Sprite *sprite); +void sub_81826F8(struct Sprite *sprite); + +void pokemonanimfunc_3D(struct Sprite *sprite) +{ +    HandleStartAffineAnim(sprite); +    sprite->callback = sub_81825F8; +    sprite->data[7] = 0; +} + +void sub_81825F8(struct Sprite *sprite) +{ +    s16 yScale; + +    sprite->data[7] += 8; +    if (sprite->data[7] > 63) +    { +        sprite->data[7] = 0; +        sprite->data[6] = 0; +        sprite->callback = sub_8182648; +        yScale = Sin(64, 128); // 128 * 1 = 128 +    } +    else +    { +        yScale = Sin(sprite->data[7], 128); +    } + +    HandleSetAffineData(sprite, 0x100, 0x100 + yScale, 0); +} + +void sub_8182648(struct Sprite *sprite) +{ +    s16 yScale; + +    sprite->data[7] += 4; +    if (sprite->data[7] > 95) +    { +        yScale = Cos(0, 128); // 128 * (-1) = -128 +        sprite->data[7] = 0; +        sprite->data[6]++; +    } +    else +    { +        s16 sign, index; + +        sprite->pos2.y = -(sprite->data[6] * 4) - Sin(sprite->data[7], 8); +        if (sprite->data[7] > 63) +        { +            sign = -1; +            index = sprite->data[7] - 64; +        } +        else +        { +            sign = 1; +            index = 0; +        } + +        yScale = Cos((index * 2) + sprite->data[7], 128) * sign; +    } + +    HandleSetAffineData(sprite, 0x100, 0x100 + yScale, 0); +    if (sprite->data[6] == 3) +    { +        sprite->data[7] = 0; +        sprite->callback = sub_81826F8; +    } +} + +void sub_81826F8(struct Sprite *sprite) +{ +    s16 yScale; + +    sprite->data[7] += 8; +    yScale = Cos(sprite->data[7], 128); +    sprite->pos2.y = -(Cos(sprite->data[7], 12)); +    if (sprite->data[7] > 63) +    { +        sub_817F77C(sprite); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        sprite->pos2.y = 0; +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +    } + +    HandleSetAffineData(sprite, 0x100, 0x100 + yScale, 0); +} + +void sub_8182764(struct Sprite *sprite) +{ +    if (sprite->data[7] > sprite->data[5]) +    { +        sprite->pos2.x = 0; +        sub_817F77C(sprite); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +    } +    else +    { +        s16 xScale; + +        sprite->pos2.x = Sin(sprite->data[7] % 256, sprite->data[4]); +        sprite->data[7] += sprite->data[6]; +        xScale = Sin(sprite->data[7] % 128, 96); +        HandleSetAffineData(sprite, 0x100 + xScale, 0x100, 0); +    } +} + +void pokemonanimfunc_3E(struct Sprite *sprite) +{ +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +        sprite->data[6] = 8; +        sprite->data[5] = 512; +        sprite->data[4] = 8; +    } + +    sub_8182764(sprite); +} + +void sub_8182830(struct Sprite *sprite) +{ +    if (sprite->data[7] > sprite->data[5]) +    { +        sprite->pos2.x = 0; +        sub_817F77C(sprite); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +    } +    else +    { +        s16 xScale; + +        sprite->pos2.x = Sin(sprite->data[7] % 256, sprite->data[4]); +        sprite->data[7] += sprite->data[6]; +        xScale = Sin((sprite->data[7] % 64) * 2, 128); +        HandleSetAffineData(sprite, 0x100 + xScale, 0x100, 0); +    } +} + +void pokemonanimfunc_3F(struct Sprite *sprite) +{ +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +        sprite->data[6] = 4; +        sprite->data[5] = 256; +        sprite->data[4] = 16; +    } + +    sub_8182830(sprite); +} + +void pokemonanimfunc_40(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +    } + +    if (sprite->data[7] > 512) +    { +        sprite->pos2.x = 0; +        sub_817F77C(sprite); +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +    } +    else +    { +        s16 scale; + +        sprite->pos2.x = Sin(sprite->data[7] % 256, 8); +        sprite->data[7] += 8; +        scale = Sin(sprite->data[7] % 128, 96); +        HandleSetAffineData(sprite, 0x100 + scale, 0x100 + scale, 0); +    } + +    sub_817F70C(sprite); +} + +void pokemonanimfunc_41(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +    } + +    if (sprite->data[7] > 512) +    { +        sprite->pos2.x = 0; +        sub_817F77C(sprite); +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +    } +    else +    { +        s16 scale; + +        sprite->pos2.x = -(Sin((sprite->data[7] % 256) / 2, 16)); +        sprite->data[7] += 8; +        scale = -(Sin((sprite->data[7] % 256) / 2, 64)); +        HandleSetAffineData(sprite, 0x100 + scale, 0x100 + scale, 0); +    } + +    sub_817F70C(sprite); +} + +void pokemonanimfunc_42(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] == 0) +    { +        HandleStartAffineAnim(sprite); +        sprite->data[2]++; +        sprite->data[7] = 0; +    } + +    if (sprite->data[7] > 512) +    { +        sprite->pos2.x = 0; +        sub_817F77C(sprite); +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +    } +    else +    { +        s16 scale; + +        sprite->pos2.x = -(Sin(sprite->data[7] % 256 , 8)); +        sprite->data[7] += 8; +        scale = Sin((sprite->data[7] % 256) / 2, 96); +        HandleSetAffineData(sprite, 0x100 + scale, 0x100 + scale, 0); +    } + +    sub_817F70C(sprite); +} + +void pokemonanimfunc_43(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] > 2048) +    { +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        sprite->data[6] = 0; +    } +    else +    { +        s16 caseVar = (sprite->data[2] / 512) % 4; +        switch (caseVar) +        { +        case 0: +            sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512; +            break; +        case 1: +            sprite->pos2.x = (sprite->data[2] % 512 / 32) - 16; +            break; +        case 2: +            sprite->pos2.x = (sprite->data[2] % 512) / 32; +            break; +        case 3: +            sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512 + 16; +            break; +        } + +        sprite->pos2.y = -(Sin(sprite->data[2] % 128, 4)); +        sprite->data[2] += 24; +    } + +    sub_817F70C(sprite); +} + +void pokemonanimfunc_44(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] == 0) +    { +        sprite->data[6] = 0; +        sprite->data[7] = 64; +        sprite->data[2]++; +    } + +    sprite->data[7] += 8; +    if (sprite->data[6] == 4) +    { +        if (sprite->data[7] > 63) +        { +            sprite->data[7] = 0; +            sprite->data[6]++; +        } +    } +    else +    { +        if (sprite->data[7] > 127) +        { +            sprite->data[7] = 0; +            sprite->data[6]++; +        } +    } + +    switch (sprite->data[6]) +    { +    case 1: +        sprite->pos2.x = -(Cos(sprite->data[7], 8)); +        sprite->pos2.y = Sin(sprite->data[7], 8) - 8; +        break; +    case 2: +        sprite->pos2.x = Sin(sprite->data[7] + 128, 8) + 8; +        sprite->pos2.y = -(Cos(sprite->data[7], 8)); +        break; +    case 3: +        sprite->pos2.x = Cos(sprite->data[7], 8); +        sprite->pos2.y = Sin(sprite->data[7] + 128, 8) + 8; +        break; +    case 0: +    case 4: +        sprite->pos2.x = Sin(sprite->data[7], 8) - 8; +        sprite->pos2.y = Cos(sprite->data[7], 8); +        break; +    default: +        sprite->pos2.x = 0; +        sprite->pos2.y = 0; +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        break; +    } + +    sub_817F70C(sprite); +} + +void pokemonanimfunc_45(struct Sprite *sprite) +{ +    sprite->data[0] = 32; +    sub_8180714(sprite); +    sprite->callback = sub_8180714; +} + +void pokemonanimfunc_46(struct Sprite *sprite) +{ +    sprite->data[0] = 80; +    sub_817F8FC(sprite); +    sprite->callback = sub_817F8FC; +} + +void pokemonanimfunc_47(struct Sprite *sprite) +{ +    sprite->data[0] = 80; +    sub_817F978(sprite); +    sprite->callback = sub_817F978; +} + +void pokemonanimfunc_48(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_6 = 2048; +    gUnknown_03001240[id].field_8 = sprite->data[6]; +    sub_8180900(sprite); +    sprite->callback = sub_8180900; +} + +void pokemonanimfunc_49(struct Sprite *sprite) +{ +    sprite->data[6] = 1; +    pokemonanimfunc_05(sprite); +} + +void pokemonanimfunc_4A(struct Sprite *sprite) +{ +    sprite->data[6] = 1; +    pokemonanimfunc_48(sprite); +} + +void pokemonanimfunc_4B(struct Sprite *sprite) +{ +    if (sprite->data[2] == 0) +        sprite->data[0] = 0; + +    if (sprite->data[0] <= 0) +    { +        sub_817FC20(sprite); +        sprite->data[0] = 1; +    } +    else +    { +        sprite->data[0]--; +    } +} + +void pokemonanimfunc_4C(struct Sprite *sprite) +{ +    sprite->data[0] = 30; +    sprite->data[7] = 3; +    sub_817FCDC(sprite); +    sprite->callback = sub_817FCDC; +} + +void pokemonanimfunc_4D(struct Sprite *sprite) +{ +    sprite->data[0] = 30; +    sub_817FD44(sprite); +    sprite->callback = sub_817FD44; +} + +void pokemonanimfunc_4E(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_6 = 1024; +    gUnknown_03001240[id].field_0 = 0; +    gUnknown_03001240[id].field_4 = 2; +    sub_817FE30(sprite); +    sprite->callback = sub_817FE30; +} + +void pokemonanimfunc_4F(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_6 = 512; +    gUnknown_03001240[id].field_8 = 3; +    gUnknown_03001240[id].field_2 = 12; +    sub_817FFF0(sprite); +    sprite->callback = sub_817FFF0; +} + +void pokemonanimfunc_50(struct Sprite *sprite) +{ +    sprite->data[0] = 24; +    sub_818031C(sprite); +    sprite->callback = sub_818031C; +} + +void pokemonanimfunc_51(struct Sprite *sprite) +{ +    sprite->data[0] = 5; +    sub_81804F8(sprite); +    sprite->callback = sub_81804F8; +} + +void pokemonanimfunc_52(struct Sprite *sprite) +{ +    sprite->data[0] = 3; +    sub_817F9F4(sprite); +    sprite->callback = sub_817F9F4; +} + +void pokemonanimfunc_53(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_0 = 60; +    gUnknown_03001240[id].field_8 = 30; +    sub_817FF3C(sprite); +    sprite->callback = sub_817FF3C; +} + +void pokemonanimfunc_54(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_2 = 1; +    gUnknown_03001240[id].field_4 = 2; +    sub_8181214(sprite); +    sprite->callback = sub_8181214; +} + +void pokemonanimfunc_55(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_6 = 4; +    gUnknown_03001240[id].field_4 = 2; +    sub_8181810(sprite); +    sprite->callback = sub_8181810; +} + +void pokemonanimfunc_56(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_8 = 1; +    gUnknown_03001240[id].field_4 = 2; +    HandleStartAffineAnim(sprite); +    sprite->data[3] = 0; +    sub_8181ABC(sprite); +    sprite->callback = sub_8181ABC; +} + +void pokemonanimfunc_07(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_6 = 2; +    sub_8181CE8(sprite); +    sprite->callback = sub_8181CE8; +} + +void pokemonanimfunc_08(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_6 = 4; +    gUnknown_03001240[id].field_4 = 2; +    sub_8181CE8(sprite); +    sprite->callback = sub_8181CE8; +} + +void pokemonanimfunc_0B(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_8 = 100; +    sub_81814D4(sprite); +    sprite->callback = sub_81814D4; +} + +void pokemonanimfunc_0C(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_8 = 50; +    gUnknown_03001240[id].field_4 = 2; +    sub_81814D4(sprite); +    sprite->callback = sub_81814D4; +} + +void pokemonanimfunc_0D(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_8 = 100; +    sub_81815D4(sprite); +    sprite->callback = sub_81815D4; +} + +void pokemonanimfunc_0E(struct Sprite *sprite) +{ +    u8 id = sprite->data[0] = sub_817F758(); + +    gUnknown_03001240[id].field_8 = 50; +    gUnknown_03001240[id].field_4 = 2; +    sub_81815D4(sprite); +    sprite->callback = sub_81815D4; +} + +void sub_8183140(struct Sprite *sprite) +{ +    s32 counter = sprite->data[2]; +    if (counter > 2304) +    { +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        sprite->pos2.y = 0; +    } +    else +    { +        sprite->pos2.y = Sin((counter + 192) % 256, sprite->data[7]) + sprite->data[7]; +    } + +    sprite->data[2] += sprite->data[0]; +} + +void pokemonanimfunc_57(struct Sprite *sprite) +{ +    sprite->data[0] = 60; +    sprite->data[7] = 3; +    sub_8183140(sprite); +    sprite->callback = sub_8183140; +} + +void pokemonanimfunc_58(struct Sprite *sprite) +{ +    sprite->data[0] = 30; +    sprite->data[7] = 3; +    sub_8183140(sprite); +    sprite->callback = sub_8183140; +} + +void pokemonanimfunc_59(struct Sprite *sprite) +{ +    sub_817F70C(sprite); +    if (sprite->data[2] > 2048) +    { +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        sprite->data[6] = 0; +    } +    else +    { +        s16 divCase = (sprite->data[2] / 512) % 4; +        switch (divCase) +        { +        case 0: +            sprite->pos2.x = (sprite->data[2] % 512) / 32; +            break; +        case 2: +            sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512; +            break; +        case 1: +            sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512 + 16; +            break; +        case 3: +            sprite->pos2.x = (sprite->data[2] % 512) / 32 - 16; +            break; +        } + +        sprite->pos2.y = Sin(sprite->data[2] % 128, 4); +        sprite->data[2] += 24; +    } + +    sub_817F70C(sprite); +} + +void sub_81832C8(struct Sprite *sprite) +{ +    s16 index1 = 0, index2 = 0; + +    if (sprite->data[5] > sprite->data[6]) +    { +        sprite->pos2.y = 0; +        sprite->data[5] = 0; +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +        if (sprite->data[4] <= 1) +        { +            sub_817F77C(sprite); +            sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        } +        else +        { +            sprite->data[4]--; +            sprite->data[7] = 0; +        } +    } +    else +    { +        u8 amplitude, cmpVal1, cmpVal2; +        s16 xScale, yScale; + +        index2 = (sprite->data[5] * 128) / sprite->data[6]; +        cmpVal1 = sprite->data[6] / 4; +        cmpVal2 = cmpVal1 * 3; +        if (sprite->data[5] >= cmpVal1 && sprite->data[5] < cmpVal2) +        { +            sprite->data[7] += 51; +            index1 = sprite->data[7] & 0xFF; +        } + +        if (sprite->data[1] == 0) +            xScale = -0x100 - Sin(index2, 16); +        else +            xScale = 0x100 + Sin(index2, 16); + +        amplitude = sprite->data[3]; +        yScale = 0x100 - Sin(index2, amplitude) - Sin(index1, amplitude / 5); +        SetAffineData(sprite, xScale, yScale, 0); +        sprite->data[5]++; +    } +} + +void pokemonanimfunc_5A(struct Sprite *sprite) +{ +    if (sprite->data[2] == 0) +    { +        sprite->data[2] = 1; +        HandleStartAffineAnim(sprite); +        sprite->data[4] = 1; +        sprite->data[6] = 40; +        sprite->data[3] = 40; +        sprite->data[5] = 0; +        sprite->data[7] = 0; +    } + +    sub_81832C8(sprite); +} + +void sub_8183418(struct Sprite *sprite) +{ +    s16 index1 = 0, index2; + +    if (sprite->data[5] > sprite->data[6]) +    { +        sprite->data[5] = 0; +        HandleSetAffineData(sprite, 0x100, 0x100, 0); +        if (sprite->data[4] <= 1) +        { +            sub_817F77C(sprite); +            sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        } +        else +        { +            sprite->data[4]--; +            sprite->data[7] = 0; +        } +    } +    else +    { +        u8 amplitude, cmpVal1, cmpVal2; +        s16 xScale; + +        index2 = (sprite->data[5] * 128) / sprite->data[6]; +        cmpVal1 = sprite->data[6] / 4; +        cmpVal2 = cmpVal1 * 3; +        if (sprite->data[5] >= cmpVal1 && sprite->data[5] < cmpVal2) +        { +            sprite->data[7] += 51; +            index1 = sprite->data[7] & 0xFF; +        } + +        amplitude = sprite->data[3]; + +        if (sprite->data[1] == 0) +            xScale = -0x100 + Sin(index2, amplitude) + Sin(index1, amplitude / 5 * 2); +        else +            xScale = 0x100 - Sin(index2, amplitude) - Sin(index1, amplitude / 5 * 2); + +        SetAffineData(sprite, xScale, 0x100, 0); +        sprite->data[5]++; +    } +} + +void pokemonanimfunc_5B(struct Sprite *sprite) +{ +    if (sprite->data[2] == 0) +    { +        sprite->data[2] = 1; +        HandleStartAffineAnim(sprite); +        sprite->data[4] = 1; +        sprite->data[6] = 40; +        sprite->data[3] = 40; +        sprite->data[5] = 0; +        sprite->data[7] = 0; +    } + +    sub_8183418(sprite); +} + +void sub_8183574(struct Sprite *sprite) +{ +    u8 var6, var7; +    u8 var8 = sprite->data[2]; +    u8 var9 = sprite->data[6]; +    u8 var5 = gUnknown_0860AA80[sprite->data[5]][0]; +    u8 var2 = var5; +    if (var5 != 0xFF) +        var5 = sprite->data[7]; +    else +        var5 = 0xFF; // needed to match + +    var6 = gUnknown_0860AA80[sprite->data[5]][1]; +    var7 = 0; +    if (var2 != 0xFE) +        var7 = (var6 - var9) * var5 / var6; + +    if (var5 == 0xFF) +    { +        sprite->callback = SpriteCB_SetDummyOnAnimEnd; +        sprite->pos2.y = 0; +    } +    else +    { +        sprite->pos2.y = Sin((var8 + 192) % 256, var7) + var7; +        if (var9 == var6) +        { +            sprite->data[5]++; +            sprite->data[6] = 0; +        } +        else +        { +            sprite->data[2] += sprite->data[0]; +            sprite->data[6]++; +        } +    } +} | 
