battle_anim_mon_movement: through sub_8099004
This commit is contained in:
@@ -5,872 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_80989F8
|
|
||||||
sub_80989F8: @ 80989F8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
ldr r4, _08098A18 @ =gBattleAnimArgs
|
|
||||||
ldrb r0, [r4]
|
|
||||||
bl GetAnimBankSpriteId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r2, r0, 24
|
|
||||||
cmp r2, 0xFF
|
|
||||||
bne _08098A1C
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
b _08098A58
|
|
||||||
.align 2, 0
|
|
||||||
_08098A18: .4byte gBattleAnimArgs
|
|
||||||
_08098A1C:
|
|
||||||
ldr r1, _08098A60 @ =gSprites
|
|
||||||
lsls r0, r2, 4
|
|
||||||
adds r0, r2
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r1, [r4, 0x2]
|
|
||||||
strh r1, [r0, 0x24]
|
|
||||||
ldrh r1, [r4, 0x4]
|
|
||||||
strh r1, [r0, 0x26]
|
|
||||||
ldr r1, _08098A64 @ =gTasks
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
strh r2, [r0, 0x8]
|
|
||||||
ldrh r1, [r4, 0x6]
|
|
||||||
strh r1, [r0, 0xA]
|
|
||||||
ldrh r1, [r4, 0x8]
|
|
||||||
strh r1, [r0, 0xC]
|
|
||||||
ldrh r1, [r4, 0x8]
|
|
||||||
strh r1, [r0, 0xE]
|
|
||||||
ldrh r1, [r4, 0x2]
|
|
||||||
strh r1, [r0, 0x10]
|
|
||||||
ldrh r1, [r4, 0x4]
|
|
||||||
strh r1, [r0, 0x12]
|
|
||||||
ldr r1, _08098A68 @ =sub_8098A6C
|
|
||||||
str r1, [r0]
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl _call_via_r1
|
|
||||||
_08098A58:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08098A60: .4byte gSprites
|
|
||||||
_08098A64: .4byte gTasks
|
|
||||||
_08098A68: .4byte sub_8098A6C
|
|
||||||
thumb_func_end sub_80989F8
|
|
||||||
|
|
||||||
thumb_func_start sub_8098A6C
|
|
||||||
sub_8098A6C: @ 8098A6C
|
|
||||||
push {r4-r7,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
ldr r1, _08098AA8 @ =gTasks
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r3, r0, r1
|
|
||||||
ldrh r0, [r3, 0xE]
|
|
||||||
movs r2, 0xE
|
|
||||||
ldrsh r5, [r3, r2]
|
|
||||||
adds r7, r1, 0
|
|
||||||
cmp r5, 0
|
|
||||||
bne _08098B12
|
|
||||||
ldr r2, _08098AAC @ =gSprites
|
|
||||||
movs r6, 0x8
|
|
||||||
ldrsh r1, [r3, r6]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r1, r0, r2
|
|
||||||
movs r6, 0x24
|
|
||||||
ldrsh r0, [r1, r6]
|
|
||||||
adds r6, r2, 0
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08098AB0
|
|
||||||
ldrh r0, [r3, 0x10]
|
|
||||||
strh r0, [r1, 0x24]
|
|
||||||
b _08098AB2
|
|
||||||
.align 2, 0
|
|
||||||
_08098AA8: .4byte gTasks
|
|
||||||
_08098AAC: .4byte gSprites
|
|
||||||
_08098AB0:
|
|
||||||
strh r5, [r1, 0x24]
|
|
||||||
_08098AB2:
|
|
||||||
lsls r2, r4, 2
|
|
||||||
adds r0, r2, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r3, r0, r7
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r1, [r3, r0]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r1, r0, r6
|
|
||||||
movs r5, 0x26
|
|
||||||
ldrsh r0, [r1, r5]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08098AD2
|
|
||||||
ldrh r0, [r3, 0x12]
|
|
||||||
b _08098AD4
|
|
||||||
_08098AD2:
|
|
||||||
movs r0, 0
|
|
||||||
_08098AD4:
|
|
||||||
strh r0, [r1, 0x26]
|
|
||||||
adds r0, r2, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r2, r0, r7
|
|
||||||
ldrh r0, [r2, 0xC]
|
|
||||||
strh r0, [r2, 0xE]
|
|
||||||
ldrh r0, [r2, 0xA]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r2, 0xA]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r3, r0, 16
|
|
||||||
cmp r3, 0
|
|
||||||
bne _08098B16
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r1, [r2, r0]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r6
|
|
||||||
strh r3, [r0, 0x24]
|
|
||||||
movs r5, 0x8
|
|
||||||
ldrsh r1, [r2, r5]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r6
|
|
||||||
strh r3, [r0, 0x26]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
b _08098B16
|
|
||||||
_08098B12:
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r3, 0xE]
|
|
||||||
_08098B16:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_8098A6C
|
|
||||||
|
|
||||||
thumb_func_start sub_8098B1C
|
|
||||||
sub_8098B1C: @ 8098B1C
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
movs r6, 0
|
|
||||||
ldr r2, _08098B44 @ =gBattleAnimArgs
|
|
||||||
ldrh r0, [r2]
|
|
||||||
movs r3, 0
|
|
||||||
ldrsh r1, [r2, r3]
|
|
||||||
cmp r1, 0x3
|
|
||||||
bgt _08098B48
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl GetAnimBankSpriteId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r3, r0, 24
|
|
||||||
cmp r3, 0xFF
|
|
||||||
bne _08098B9E
|
|
||||||
b _08098BA2
|
|
||||||
.align 2, 0
|
|
||||||
_08098B44: .4byte gBattleAnimArgs
|
|
||||||
_08098B48:
|
|
||||||
cmp r1, 0x8
|
|
||||||
beq _08098B94
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r2, r1]
|
|
||||||
cmp r0, 0x5
|
|
||||||
beq _08098B68
|
|
||||||
cmp r0, 0x5
|
|
||||||
bgt _08098B5E
|
|
||||||
cmp r0, 0x4
|
|
||||||
beq _08098B64
|
|
||||||
b _08098B70
|
|
||||||
_08098B5E:
|
|
||||||
cmp r0, 0x6
|
|
||||||
beq _08098B6C
|
|
||||||
b _08098B70
|
|
||||||
_08098B64:
|
|
||||||
movs r0, 0
|
|
||||||
b _08098B72
|
|
||||||
_08098B68:
|
|
||||||
movs r0, 0x2
|
|
||||||
b _08098B72
|
|
||||||
_08098B6C:
|
|
||||||
movs r0, 0x1
|
|
||||||
b _08098B72
|
|
||||||
_08098B70:
|
|
||||||
movs r0, 0x3
|
|
||||||
_08098B72:
|
|
||||||
bl GetBattlerAtPosition
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_8072DF0
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08098B88
|
|
||||||
movs r6, 0x1
|
|
||||||
_08098B88:
|
|
||||||
ldr r0, _08098B90 @ =gBattlerSpriteIds
|
|
||||||
adds r0, r4, r0
|
|
||||||
b _08098B9C
|
|
||||||
.align 2, 0
|
|
||||||
_08098B90: .4byte gBattlerSpriteIds
|
|
||||||
_08098B94:
|
|
||||||
ldr r1, _08098BAC @ =gBattlerSpriteIds
|
|
||||||
ldr r0, _08098BB0 @ =gBattleAnimAttacker
|
|
||||||
ldrb r0, [r0]
|
|
||||||
adds r0, r1
|
|
||||||
_08098B9C:
|
|
||||||
ldrb r3, [r0]
|
|
||||||
_08098B9E:
|
|
||||||
cmp r6, 0
|
|
||||||
beq _08098BB4
|
|
||||||
_08098BA2:
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
b _08098BF2
|
|
||||||
.align 2, 0
|
|
||||||
_08098BAC: .4byte gBattlerSpriteIds
|
|
||||||
_08098BB0: .4byte gBattleAnimAttacker
|
|
||||||
_08098BB4:
|
|
||||||
ldr r1, _08098BF8 @ =gSprites
|
|
||||||
lsls r0, r3, 4
|
|
||||||
adds r0, r3
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldr r2, _08098BFC @ =gBattleAnimArgs
|
|
||||||
ldrh r1, [r2, 0x2]
|
|
||||||
strh r1, [r0, 0x24]
|
|
||||||
ldrh r1, [r2, 0x4]
|
|
||||||
strh r1, [r0, 0x26]
|
|
||||||
ldr r1, _08098C00 @ =gTasks
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
strh r3, [r0, 0x8]
|
|
||||||
ldrh r1, [r2, 0x6]
|
|
||||||
strh r1, [r0, 0xA]
|
|
||||||
ldrh r1, [r2, 0x8]
|
|
||||||
strh r1, [r0, 0xC]
|
|
||||||
ldrh r1, [r2, 0x8]
|
|
||||||
strh r1, [r0, 0xE]
|
|
||||||
ldrh r1, [r2, 0x2]
|
|
||||||
strh r1, [r0, 0x10]
|
|
||||||
ldrh r1, [r2, 0x4]
|
|
||||||
strh r1, [r0, 0x12]
|
|
||||||
ldr r1, _08098C04 @ =sub_8098C08
|
|
||||||
str r1, [r0]
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl _call_via_r1
|
|
||||||
_08098BF2:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08098BF8: .4byte gSprites
|
|
||||||
_08098BFC: .4byte gBattleAnimArgs
|
|
||||||
_08098C00: .4byte gTasks
|
|
||||||
_08098C04: .4byte sub_8098C08
|
|
||||||
thumb_func_end sub_8098B1C
|
|
||||||
|
|
||||||
thumb_func_start sub_8098C08
|
|
||||||
sub_8098C08: @ 8098C08
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
ldr r1, _08098C4C @ =gTasks
|
|
||||||
lsls r0, r6, 2
|
|
||||||
adds r0, r6
|
|
||||||
lsls r0, 3
|
|
||||||
adds r3, r0, r1
|
|
||||||
ldrh r2, [r3, 0xE]
|
|
||||||
movs r4, 0xE
|
|
||||||
ldrsh r0, [r3, r4]
|
|
||||||
mov r12, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08098CC0
|
|
||||||
ldr r2, _08098C50 @ =gSprites
|
|
||||||
movs r7, 0x8
|
|
||||||
ldrsh r1, [r3, r7]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r4, r0, r2
|
|
||||||
movs r0, 0x24
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
ldrh r5, [r3, 0x10]
|
|
||||||
movs r7, 0x10
|
|
||||||
ldrsh r0, [r3, r7]
|
|
||||||
adds r7, r2, 0
|
|
||||||
cmp r1, r0
|
|
||||||
bne _08098C54
|
|
||||||
negs r0, r5
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
b _08098C56
|
|
||||||
.align 2, 0
|
|
||||||
_08098C4C: .4byte gTasks
|
|
||||||
_08098C50: .4byte gSprites
|
|
||||||
_08098C54:
|
|
||||||
strh r5, [r4, 0x24]
|
|
||||||
_08098C56:
|
|
||||||
lsls r3, r6, 2
|
|
||||||
adds r1, r3, r6
|
|
||||||
lsls r1, 3
|
|
||||||
add r1, r12
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r2, [r1, r0]
|
|
||||||
lsls r0, r2, 4
|
|
||||||
adds r0, r2
|
|
||||||
lsls r0, 2
|
|
||||||
adds r4, r0, r7
|
|
||||||
movs r0, 0x26
|
|
||||||
ldrsh r2, [r4, r0]
|
|
||||||
mov r8, r2
|
|
||||||
ldrh r5, [r1, 0x12]
|
|
||||||
movs r2, 0x12
|
|
||||||
ldrsh r0, [r1, r2]
|
|
||||||
cmp r8, r0
|
|
||||||
bne _08098C80
|
|
||||||
negs r0, r5
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
b _08098C82
|
|
||||||
_08098C80:
|
|
||||||
strh r5, [r4, 0x26]
|
|
||||||
_08098C82:
|
|
||||||
adds r0, r3, r6
|
|
||||||
lsls r0, 3
|
|
||||||
mov r4, r12
|
|
||||||
adds r3, r0, r4
|
|
||||||
ldrh r0, [r3, 0xC]
|
|
||||||
strh r0, [r3, 0xE]
|
|
||||||
ldrh r0, [r3, 0xA]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r3, 0xA]
|
|
||||||
lsls r0, 16
|
|
||||||
asrs r2, r0, 16
|
|
||||||
cmp r2, 0
|
|
||||||
bne _08098CC4
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r1, [r3, r0]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r7
|
|
||||||
strh r2, [r0, 0x24]
|
|
||||||
movs r4, 0x8
|
|
||||||
ldrsh r1, [r3, r4]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r7
|
|
||||||
strh r2, [r0, 0x26]
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
b _08098CC4
|
|
||||||
_08098CC0:
|
|
||||||
subs r0, r2, 0x1
|
|
||||||
strh r0, [r3, 0xE]
|
|
||||||
_08098CC4:
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_8098C08
|
|
||||||
|
|
||||||
thumb_func_start sub_8098CD0
|
|
||||||
sub_8098CD0: @ 8098CD0
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
ldr r4, _08098CF0 @ =gBattleAnimArgs
|
|
||||||
ldrb r0, [r4]
|
|
||||||
bl GetAnimBankSpriteId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r3, r0, 24
|
|
||||||
cmp r3, 0xFF
|
|
||||||
bne _08098CF4
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
b _08098D42
|
|
||||||
.align 2, 0
|
|
||||||
_08098CF0: .4byte gBattleAnimArgs
|
|
||||||
_08098CF4:
|
|
||||||
ldr r0, _08098D48 @ =gSprites
|
|
||||||
lsls r1, r3, 4
|
|
||||||
adds r1, r3
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r0
|
|
||||||
ldrh r0, [r4, 0x2]
|
|
||||||
ldrh r2, [r1, 0x24]
|
|
||||||
adds r0, r2
|
|
||||||
movs r2, 0
|
|
||||||
strh r0, [r1, 0x24]
|
|
||||||
ldrh r0, [r4, 0x4]
|
|
||||||
ldrh r6, [r1, 0x26]
|
|
||||||
adds r0, r6
|
|
||||||
strh r0, [r1, 0x26]
|
|
||||||
ldr r0, _08098D4C @ =gTasks
|
|
||||||
lsls r1, r5, 2
|
|
||||||
adds r1, r5
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r0
|
|
||||||
strh r3, [r1, 0x8]
|
|
||||||
strh r2, [r1, 0xA]
|
|
||||||
ldrh r0, [r4, 0x6]
|
|
||||||
strh r0, [r1, 0xC]
|
|
||||||
strh r2, [r1, 0xE]
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
strh r0, [r1, 0x10]
|
|
||||||
movs r2, 0x2
|
|
||||||
ldrsh r0, [r4, r2]
|
|
||||||
lsls r0, 1
|
|
||||||
strh r0, [r1, 0x12]
|
|
||||||
movs r6, 0x4
|
|
||||||
ldrsh r0, [r4, r6]
|
|
||||||
lsls r0, 1
|
|
||||||
strh r0, [r1, 0x14]
|
|
||||||
ldr r2, _08098D50 @ =sub_8098D54
|
|
||||||
str r2, [r1]
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl _call_via_r2
|
|
||||||
_08098D42:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08098D48: .4byte gSprites
|
|
||||||
_08098D4C: .4byte gTasks
|
|
||||||
_08098D50: .4byte sub_8098D54
|
|
||||||
thumb_func_end sub_8098CD0
|
|
||||||
|
|
||||||
thumb_func_start sub_8098D54
|
|
||||||
sub_8098D54: @ 8098D54
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
ldr r1, _08098DAC @ =gTasks
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r4, r0, r1
|
|
||||||
ldrh r2, [r4, 0xE]
|
|
||||||
movs r3, 0xE
|
|
||||||
ldrsh r0, [r4, r3]
|
|
||||||
adds r6, r1, 0
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08098D72
|
|
||||||
b _08098E84
|
|
||||||
_08098D72:
|
|
||||||
ldrh r1, [r4, 0xA]
|
|
||||||
movs r0, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08098DB4
|
|
||||||
ldr r2, _08098DB0 @ =gSprites
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r2
|
|
||||||
ldrh r1, [r4, 0x12]
|
|
||||||
ldrh r3, [r0, 0x24]
|
|
||||||
adds r1, r3
|
|
||||||
strh r1, [r0, 0x24]
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r2
|
|
||||||
ldrh r1, [r4, 0x14]
|
|
||||||
ldrh r3, [r0, 0x26]
|
|
||||||
adds r1, r3
|
|
||||||
strh r1, [r0, 0x26]
|
|
||||||
adds r3, r2, 0
|
|
||||||
b _08098DDE
|
|
||||||
.align 2, 0
|
|
||||||
_08098DAC: .4byte gTasks
|
|
||||||
_08098DB0: .4byte gSprites
|
|
||||||
_08098DB4:
|
|
||||||
ldr r3, _08098E40 @ =gSprites
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r3
|
|
||||||
ldrh r1, [r0, 0x24]
|
|
||||||
ldrh r2, [r4, 0x12]
|
|
||||||
subs r1, r2
|
|
||||||
strh r1, [r0, 0x24]
|
|
||||||
movs r2, 0x8
|
|
||||||
ldrsh r1, [r4, r2]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r3
|
|
||||||
ldrh r1, [r0, 0x26]
|
|
||||||
ldrh r2, [r4, 0x14]
|
|
||||||
subs r1, r2
|
|
||||||
strh r1, [r0, 0x26]
|
|
||||||
_08098DDE:
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r4, r0, r6
|
|
||||||
ldrh r0, [r4, 0x10]
|
|
||||||
strh r0, [r4, 0xE]
|
|
||||||
ldrh r0, [r4, 0xA]
|
|
||||||
adds r2, r0, 0x1
|
|
||||||
strh r2, [r4, 0xA]
|
|
||||||
lsls r0, r2, 16
|
|
||||||
asrs r0, 16
|
|
||||||
movs r6, 0xC
|
|
||||||
ldrsh r1, [r4, r6]
|
|
||||||
cmp r0, r1
|
|
||||||
blt _08098E88
|
|
||||||
movs r0, 0x1
|
|
||||||
ands r2, r0
|
|
||||||
cmp r2, 0
|
|
||||||
beq _08098E44
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
lsls r1, r0, 4
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r3
|
|
||||||
movs r2, 0x12
|
|
||||||
ldrsh r0, [r4, r2]
|
|
||||||
lsrs r2, r0, 31
|
|
||||||
adds r0, r2
|
|
||||||
asrs r0, 1
|
|
||||||
ldrh r6, [r1, 0x24]
|
|
||||||
adds r0, r6
|
|
||||||
strh r0, [r1, 0x24]
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
lsls r1, r0, 4
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r3
|
|
||||||
movs r2, 0x14
|
|
||||||
ldrsh r0, [r4, r2]
|
|
||||||
lsrs r2, r0, 31
|
|
||||||
adds r0, r2
|
|
||||||
asrs r0, 1
|
|
||||||
ldrh r3, [r1, 0x26]
|
|
||||||
adds r0, r3
|
|
||||||
strh r0, [r1, 0x26]
|
|
||||||
b _08098E7C
|
|
||||||
.align 2, 0
|
|
||||||
_08098E40: .4byte gSprites
|
|
||||||
_08098E44:
|
|
||||||
movs r6, 0x8
|
|
||||||
ldrsh r0, [r4, r6]
|
|
||||||
lsls r2, r0, 4
|
|
||||||
adds r2, r0
|
|
||||||
lsls r2, 2
|
|
||||||
adds r2, r3
|
|
||||||
movs r0, 0x12
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
lsrs r0, r1, 31
|
|
||||||
adds r1, r0
|
|
||||||
asrs r1, 1
|
|
||||||
ldrh r0, [r2, 0x24]
|
|
||||||
subs r0, r1
|
|
||||||
strh r0, [r2, 0x24]
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
lsls r2, r0, 4
|
|
||||||
adds r2, r0
|
|
||||||
lsls r2, 2
|
|
||||||
adds r2, r3
|
|
||||||
movs r3, 0x14
|
|
||||||
ldrsh r1, [r4, r3]
|
|
||||||
lsrs r0, r1, 31
|
|
||||||
adds r1, r0
|
|
||||||
asrs r1, 1
|
|
||||||
ldrh r0, [r2, 0x26]
|
|
||||||
subs r0, r1
|
|
||||||
strh r0, [r2, 0x26]
|
|
||||||
_08098E7C:
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
b _08098E88
|
|
||||||
_08098E84:
|
|
||||||
subs r0, r2, 0x1
|
|
||||||
strh r0, [r4, 0xE]
|
|
||||||
_08098E88:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_8098D54
|
|
||||||
|
|
||||||
thumb_func_start sub_8098E90
|
|
||||||
sub_8098E90: @ 8098E90
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r5, _08098EE0 @ =gBattleAnimArgs
|
|
||||||
ldrb r0, [r5]
|
|
||||||
bl GetAnimBankSpriteId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _08098EE4 @ =gSprites
|
|
||||||
lsls r1, r0, 4
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r2
|
|
||||||
ldrh r2, [r5, 0x2]
|
|
||||||
strh r2, [r1, 0x24]
|
|
||||||
ldr r2, _08098EE8 @ =gTasks
|
|
||||||
lsls r1, r4, 2
|
|
||||||
adds r1, r4
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
strh r0, [r1, 0x8]
|
|
||||||
ldrh r0, [r5, 0x2]
|
|
||||||
strh r0, [r1, 0xA]
|
|
||||||
ldrh r0, [r5, 0x4]
|
|
||||||
strh r0, [r1, 0xC]
|
|
||||||
ldrh r0, [r5, 0x6]
|
|
||||||
strh r0, [r1, 0xE]
|
|
||||||
ldrh r0, [r5, 0x8]
|
|
||||||
strh r0, [r1, 0x10]
|
|
||||||
ldr r2, _08098EEC @ =sub_8098EF0
|
|
||||||
str r2, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r2
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08098EE0: .4byte gBattleAnimArgs
|
|
||||||
_08098EE4: .4byte gSprites
|
|
||||||
_08098EE8: .4byte gTasks
|
|
||||||
_08098EEC: .4byte sub_8098EF0
|
|
||||||
thumb_func_end sub_8098E90
|
|
||||||
|
|
||||||
thumb_func_start sub_8098EF0
|
|
||||||
sub_8098EF0: @ 8098EF0
|
|
||||||
push {r4-r7,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
ldr r2, _08098F7C @ =gTasks
|
|
||||||
lsls r0, r6, 2
|
|
||||||
adds r0, r6
|
|
||||||
lsls r0, 3
|
|
||||||
adds r3, r0, r2
|
|
||||||
ldrb r5, [r3, 0x8]
|
|
||||||
ldrh r4, [r3, 0xA]
|
|
||||||
ldrh r1, [r3, 0x18]
|
|
||||||
adds r0, r1, 0x1
|
|
||||||
strh r0, [r3, 0x18]
|
|
||||||
movs r7, 0xC
|
|
||||||
ldrsh r0, [r3, r7]
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
mov r12, r2
|
|
||||||
ldr r7, _08098F80 @ =gSprites
|
|
||||||
cmp r0, r1
|
|
||||||
bne _08098F42
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r3, 0x18]
|
|
||||||
lsls r0, r5, 4
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 2
|
|
||||||
adds r1, r0, r7
|
|
||||||
ldrh r3, [r1, 0x24]
|
|
||||||
movs r0, 0x24
|
|
||||||
ldrsh r2, [r1, r0]
|
|
||||||
lsls r0, r4, 16
|
|
||||||
asrs r0, 16
|
|
||||||
cmp r2, r0
|
|
||||||
bne _08098F3A
|
|
||||||
negs r0, r2
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
_08098F3A:
|
|
||||||
lsls r0, r4, 16
|
|
||||||
asrs r0, 16
|
|
||||||
adds r0, r3
|
|
||||||
strh r0, [r1, 0x24]
|
|
||||||
_08098F42:
|
|
||||||
lsls r2, r6, 2
|
|
||||||
adds r2, r6
|
|
||||||
lsls r2, 3
|
|
||||||
add r2, r12
|
|
||||||
strh r4, [r2, 0xA]
|
|
||||||
ldrh r1, [r2, 0xE]
|
|
||||||
ldrh r0, [r2, 0x1A]
|
|
||||||
adds r1, r0
|
|
||||||
strh r1, [r2, 0x1A]
|
|
||||||
lsls r0, r5, 4
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r7
|
|
||||||
lsls r1, 16
|
|
||||||
asrs r1, 24
|
|
||||||
strh r1, [r0, 0x26]
|
|
||||||
ldrh r0, [r2, 0x10]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r2, 0x10]
|
|
||||||
lsls r0, 16
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08098F74
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
_08098F74:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08098F7C: .4byte gTasks
|
|
||||||
_08098F80: .4byte gSprites
|
|
||||||
thumb_func_end sub_8098EF0
|
|
||||||
|
|
||||||
thumb_func_start sub_8098F84
|
|
||||||
sub_8098F84: @ 8098F84
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
movs r6, 0x1
|
|
||||||
ldr r4, _08098FF8 @ =gBattleAnimArgs
|
|
||||||
ldrb r0, [r4]
|
|
||||||
bl GetAnimBankSpriteId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r7, r0, 24
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x5
|
|
||||||
ble _08098FA8
|
|
||||||
movs r0, 0x5
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_08098FA8:
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x8
|
|
||||||
ldrsh r0, [r4, r2]
|
|
||||||
adds r3, r4, 0
|
|
||||||
ldr r2, _08098FFC @ =gTasks
|
|
||||||
mov r12, r2
|
|
||||||
lsls r4, r5, 2
|
|
||||||
ldr r2, _08099000 @ =sub_8099004
|
|
||||||
mov r8, r2
|
|
||||||
cmp r1, r0
|
|
||||||
bge _08098FCE
|
|
||||||
adds r2, r0, 0
|
|
||||||
_08098FC0:
|
|
||||||
lsls r0, r6, 25
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
adds r0, r1, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r1, r0, 24
|
|
||||||
cmp r1, r2
|
|
||||||
blt _08098FC0
|
|
||||||
_08098FCE:
|
|
||||||
adds r0, r4, r5
|
|
||||||
lsls r0, 3
|
|
||||||
add r0, r12
|
|
||||||
strh r7, [r0, 0x8]
|
|
||||||
ldrh r1, [r3, 0x2]
|
|
||||||
strh r1, [r0, 0xA]
|
|
||||||
ldrh r1, [r3, 0x4]
|
|
||||||
strh r1, [r0, 0xC]
|
|
||||||
ldrh r1, [r3, 0x6]
|
|
||||||
strh r1, [r0, 0xE]
|
|
||||||
strh r6, [r0, 0x10]
|
|
||||||
mov r1, r8
|
|
||||||
str r1, [r0]
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl _call_via_r8
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08098FF8: .4byte gBattleAnimArgs
|
|
||||||
_08098FFC: .4byte gTasks
|
|
||||||
_08099000: .4byte sub_8099004
|
|
||||||
thumb_func_end sub_8098F84
|
|
||||||
|
|
||||||
thumb_func_start sub_8099004
|
|
||||||
sub_8099004: @ 8099004
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
adds r6, r0, 0
|
|
||||||
ldr r1, _08099074 @ =gTasks
|
|
||||||
lsls r0, r6, 2
|
|
||||||
adds r0, r6
|
|
||||||
lsls r0, 3
|
|
||||||
adds r5, r0, r1
|
|
||||||
ldrb r4, [r5, 0x8]
|
|
||||||
movs r1, 0x12
|
|
||||||
ldrsh r0, [r5, r1]
|
|
||||||
movs r2, 0xA
|
|
||||||
ldrsh r1, [r5, r2]
|
|
||||||
bl Sin
|
|
||||||
ldr r2, _08099078 @ =gSprites
|
|
||||||
lsls r1, r4, 4
|
|
||||||
adds r1, r4
|
|
||||||
lsls r1, 2
|
|
||||||
adds r4, r1, r2
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
movs r1, 0x12
|
|
||||||
ldrsh r0, [r5, r1]
|
|
||||||
movs r2, 0xC
|
|
||||||
ldrsh r1, [r5, r2]
|
|
||||||
bl Cos
|
|
||||||
negs r0, r0
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r1, [r5, 0xC]
|
|
||||||
adds r0, r1
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r0, [r5, 0x10]
|
|
||||||
ldrh r1, [r5, 0x12]
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0xFF
|
|
||||||
ands r0, r1
|
|
||||||
strh r0, [r5, 0x12]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0809905C
|
|
||||||
ldrh r0, [r5, 0xE]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r5, 0xE]
|
|
||||||
_0809905C:
|
|
||||||
movs r2, 0xE
|
|
||||||
ldrsh r0, [r5, r2]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0809906E
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl DestroyAnimVisualTask
|
|
||||||
_0809906E:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08099074: .4byte gTasks
|
|
||||||
_08099078: .4byte gSprites
|
|
||||||
thumb_func_end sub_8099004
|
|
||||||
|
|
||||||
thumb_func_start sub_809907C
|
thumb_func_start sub_809907C
|
||||||
sub_809907C: @ 809907C
|
sub_809907C: @ 809907C
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ extern u8 gAnimBankAttacker;
|
|||||||
extern u8 gAnimBankTarget;
|
extern u8 gAnimBankTarget;
|
||||||
extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
|
extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
|
||||||
extern u8 gUnknown_02038440;
|
extern u8 gUnknown_02038440;
|
||||||
|
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
|
||||||
|
extern u8 gBattleAnimAttacker;
|
||||||
|
|
||||||
void ClearBattleAnimationVars(void);
|
void ClearBattleAnimationVars(void);
|
||||||
void DoMoveAnim(u16 move);
|
void DoMoveAnim(u16 move);
|
||||||
@@ -77,6 +79,7 @@ s8 BattleAnimAdjustPanning(s8 pan);
|
|||||||
s8 BattleAnimAdjustPanning2(s8 pan);
|
s8 BattleAnimAdjustPanning2(s8 pan);
|
||||||
s16 sub_80A52EC(s16 a);
|
s16 sub_80A52EC(s16 a);
|
||||||
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
|
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
|
||||||
|
bool8 sub_8072DF0(u8 battlerId);
|
||||||
|
|
||||||
// battle_anim_80FE840.s
|
// battle_anim_80FE840.s
|
||||||
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
|
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "battle.h"
|
||||||
|
#include "battle_anim.h"
|
||||||
|
#include "task.h"
|
||||||
|
#include "trig.h"
|
||||||
|
|
||||||
|
void sub_8098A6C(u8 taskId);
|
||||||
|
void sub_8098C08(u8 taskId);
|
||||||
|
void sub_8098D54(u8 taskId);
|
||||||
|
void sub_8098EF0(u8 taskId);
|
||||||
|
void sub_8099004(u8 taskId);
|
||||||
void sub_80990AC(struct Sprite * sprite);
|
void sub_80990AC(struct Sprite * sprite);
|
||||||
void sub_8099144(struct Sprite * sprite);
|
void sub_8099144(struct Sprite * sprite);
|
||||||
void sub_80991B4(struct Sprite * sprite);
|
void sub_80991B4(struct Sprite * sprite);
|
||||||
@@ -19,3 +28,248 @@ const struct SpriteTemplate gUnknown_83D4E4C[] = {
|
|||||||
0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8099394
|
0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8099394
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void sub_80989F8(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
|
||||||
|
|
||||||
|
if (spriteId == 0xFF)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
|
||||||
|
gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[0] = spriteId;
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[5] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].func = sub_8098A6C;
|
||||||
|
gTasks[taskId].func(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098A6C(u8 taskId)
|
||||||
|
{
|
||||||
|
if (gTasks[taskId].data[3] == 0)
|
||||||
|
{
|
||||||
|
if (gSprites[gTasks[taskId].data[0]].pos2.x == 0)
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
|
||||||
|
else
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x = 0;
|
||||||
|
if (gSprites[gTasks[taskId].data[0]].pos2.y == 0)
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
|
||||||
|
else
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y = 0;
|
||||||
|
gTasks[taskId].data[3] = gTasks[taskId].data[2];
|
||||||
|
if (--gTasks[taskId].data[1] == 0)
|
||||||
|
{
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x = 0;
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y = 0;
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[3]--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098B1C(u8 taskId)
|
||||||
|
{
|
||||||
|
bool8 abort = FALSE;
|
||||||
|
u8 spriteId;
|
||||||
|
u8 battlerId;
|
||||||
|
|
||||||
|
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
|
||||||
|
{
|
||||||
|
spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
|
||||||
|
if (spriteId == 0xFF)
|
||||||
|
abort = TRUE;
|
||||||
|
}
|
||||||
|
else if (gBattleAnimArgs[0] != 8)
|
||||||
|
{
|
||||||
|
switch (gBattleAnimArgs[0])
|
||||||
|
{
|
||||||
|
case 4:
|
||||||
|
battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!sub_8072DF0(battlerId))
|
||||||
|
abort = TRUE;
|
||||||
|
spriteId = gBattlerSpriteIds[battlerId];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||||
|
if (abort)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
|
||||||
|
gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[0] = spriteId;
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[5] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].func = sub_8098C08;
|
||||||
|
gTasks[taskId].func(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098C08(u8 taskId)
|
||||||
|
{
|
||||||
|
if (gTasks[taskId].data[3] == 0)
|
||||||
|
{
|
||||||
|
if (gSprites[gTasks[taskId].data[0]].pos2.x == gTasks[taskId].data[4])
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x = -gTasks[taskId].data[4];
|
||||||
|
else
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
|
||||||
|
if (gSprites[gTasks[taskId].data[0]].pos2.y == gTasks[taskId].data[5])
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y = -gTasks[taskId].data[5];
|
||||||
|
else
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
|
||||||
|
gTasks[taskId].data[3] = gTasks[taskId].data[2];
|
||||||
|
if (--gTasks[taskId].data[1] == 0)
|
||||||
|
{
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x = 0;
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y = 0;
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[3]--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098CD0(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
|
||||||
|
|
||||||
|
if (spriteId == 0xFF)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x += gBattleAnimArgs[1];
|
||||||
|
gSprites[spriteId].pos2.y += gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[0] = spriteId;
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[3] = 0;
|
||||||
|
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2;
|
||||||
|
gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2;
|
||||||
|
gTasks[taskId].func = sub_8098D54;
|
||||||
|
gTasks[taskId].func(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098D54(u8 taskId)
|
||||||
|
{
|
||||||
|
if (gTasks[taskId].data[3] == 0)
|
||||||
|
{
|
||||||
|
if (gTasks[taskId].data[1] & 1)
|
||||||
|
{
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5];
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5];
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6];
|
||||||
|
}
|
||||||
|
gTasks[taskId].data[3] = gTasks[taskId].data[4];
|
||||||
|
if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
|
||||||
|
{
|
||||||
|
if (gTasks[taskId].data[1] & 1)
|
||||||
|
{
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5] / 2;
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6] / 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5] / 2;
|
||||||
|
gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6] / 2;
|
||||||
|
}
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[3]--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098E90(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
|
||||||
|
|
||||||
|
gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[0] = spriteId;
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].func = sub_8098EF0;
|
||||||
|
gTasks[taskId].func(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098EF0(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = gTasks[taskId].data[0];
|
||||||
|
s16 data1 = gTasks[taskId].data[1];
|
||||||
|
if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[8] = 0;
|
||||||
|
if (gSprites[spriteId].pos2.x == data1)
|
||||||
|
data1 = -data1;
|
||||||
|
gSprites[spriteId].pos2.x += data1;
|
||||||
|
}
|
||||||
|
gTasks[taskId].data[1] = data1;
|
||||||
|
gTasks[taskId].data[9] += gTasks[taskId].data[3];
|
||||||
|
gSprites[spriteId].pos2.y = gTasks[taskId].data[9] >> 8;
|
||||||
|
if (--gTasks[taskId].data[4] == 0)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8098F84(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 r6 = 1;
|
||||||
|
u8 i;
|
||||||
|
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
|
||||||
|
if (gBattleAnimArgs[4] > 5)
|
||||||
|
gBattleAnimArgs[4] = 5;
|
||||||
|
for (i = 0; i < gBattleAnimArgs[4]; i++)
|
||||||
|
r6 *= 2;
|
||||||
|
gTasks[taskId].data[0] = spriteId;
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[4] = r6;
|
||||||
|
gTasks[taskId].func = sub_8099004;
|
||||||
|
gTasks[taskId].func(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099004(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = gTasks[taskId].data[0];
|
||||||
|
gSprites[spriteId].pos2.x = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]);
|
||||||
|
gSprites[spriteId].pos2.y = -Cos(gTasks[taskId].data[5], gTasks[taskId].data[2]);
|
||||||
|
gSprites[spriteId].pos2.y += gTasks[taskId].data[2];
|
||||||
|
gTasks[taskId].data[5] += gTasks[taskId].data[4];
|
||||||
|
gTasks[taskId].data[5] &= 0xFF;
|
||||||
|
if (gTasks[taskId].data[5] == 0)
|
||||||
|
gTasks[taskId].data[3]--;
|
||||||
|
if (gTasks[taskId].data[3] == 0)
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x = 0;
|
||||||
|
gSprites[spriteId].pos2.y = 0;
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user