mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-09 01:58:43 -04:00
1644 lines
29 KiB
ArmAsm
1644 lines
29 KiB
ArmAsm
.include "constants/gba_constants.inc"
|
|
.include "include/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
@ rock
|
|
|
|
thumb_func_start sub_80DCE9C
|
|
sub_80DCE9C: @ 80DCE9C
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080DCF08 @ =gBattleAnimArgs
|
|
movs r1, 0x6
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
beq _080DCEBC
|
|
ldr r0, _080DCF0C @ =gAnimBankTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r5, 0
|
|
adds r2, 0x20
|
|
adds r3, r5, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl sub_807A3FC
|
|
_080DCEBC:
|
|
ldrh r0, [r6]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
movs r4, 0
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0xE
|
|
strh r0, [r5, 0x22]
|
|
ldrb r1, [r6, 0x2]
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
adds r0, r5, 0
|
|
bl AnimateSprite
|
|
strh r4, [r5, 0x2E]
|
|
strh r4, [r5, 0x30]
|
|
movs r0, 0x4
|
|
strh r0, [r5, 0x32]
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0x34]
|
|
ldr r0, _080DCF10 @ =0x0000ffba
|
|
strh r0, [r5, 0x36]
|
|
ldrh r0, [r6, 0x4]
|
|
strh r0, [r5, 0x38]
|
|
ldr r1, _080DCF14 @ =sub_80DCF1C
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData
|
|
ldr r1, _080DCF18 @ =sub_8078278
|
|
str r1, [r5, 0x1C]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DCF08: .4byte gBattleAnimArgs
|
|
_080DCF0C: .4byte gAnimBankTarget
|
|
_080DCF10: .4byte 0x0000ffba
|
|
_080DCF14: .4byte sub_80DCF1C
|
|
_080DCF18: .4byte sub_8078278
|
|
thumb_func_end sub_80DCE9C
|
|
|
|
thumb_func_start sub_80DCF1C
|
|
sub_80DCF1C: @ 80DCF1C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x38]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0xC0
|
|
strh r0, [r4, 0x2E]
|
|
strh r1, [r4, 0x30]
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0x32]
|
|
movs r0, 0x20
|
|
strh r0, [r4, 0x34]
|
|
ldr r0, _080DCF54 @ =0x0000ffe8
|
|
strh r0, [r4, 0x36]
|
|
ldr r1, _080DCF58 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData
|
|
ldr r1, _080DCF5C @ =sub_8078278
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DCF54: .4byte 0x0000ffe8
|
|
_080DCF58: .4byte move_anim_8074EE0
|
|
_080DCF5C: .4byte sub_8078278
|
|
thumb_func_end sub_80DCF1C
|
|
|
|
thumb_func_start sub_80DCF60
|
|
sub_80DCF60: @ 80DCF60
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080DCF88 @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0xA]
|
|
bl StartSpriteAnim
|
|
adds r0, r5, 0
|
|
bl AnimateSprite
|
|
ldr r0, _080DCF8C @ =gAnimBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080DCF90
|
|
ldrh r0, [r5, 0x20]
|
|
ldrh r1, [r4]
|
|
subs r0, r1
|
|
b _080DCF96
|
|
.align 2, 0
|
|
_080DCF88: .4byte gBattleAnimArgs
|
|
_080DCF8C: .4byte gAnimBankAttacker
|
|
_080DCF90:
|
|
ldrh r0, [r4]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
_080DCF96:
|
|
strh r0, [r5, 0x20]
|
|
ldr r3, _080DCFD8 @ =gBattleAnimArgs
|
|
ldrh r2, [r3, 0x2]
|
|
ldrh r0, [r5, 0x22]
|
|
adds r2, r0
|
|
movs r4, 0
|
|
strh r2, [r5, 0x22]
|
|
ldrh r0, [r3, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r1, [r3, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
strh r2, [r5, 0x34]
|
|
ldrh r0, [r3, 0x6]
|
|
adds r2, r0
|
|
strh r2, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl sub_8078A5C
|
|
strh r4, [r5, 0x34]
|
|
strh r4, [r5, 0x36]
|
|
ldr r0, _080DCFDC @ =sub_8078394
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080DCFE0 @ =move_anim_8074EE0
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DCFD8: .4byte gBattleAnimArgs
|
|
_080DCFDC: .4byte sub_8078394
|
|
_080DCFE0: .4byte move_anim_8074EE0
|
|
thumb_func_end sub_80DCF60
|
|
|
|
thumb_func_start sub_80DCFE4
|
|
sub_80DCFE4: @ 80DCFE4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080DCFFC @ =gBattleAnimArgs
|
|
movs r1, 0xC
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080DD000
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_80787B0
|
|
b _080DD008
|
|
.align 2, 0
|
|
_080DCFFC: .4byte gBattleAnimArgs
|
|
_080DD000:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8078764
|
|
_080DD008:
|
|
ldr r1, _080DD024 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r4, 0x34]
|
|
ldr r0, _080DD028 @ =sub_80DD02C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD024: .4byte gBattleAnimArgs
|
|
_080DD028: .4byte sub_80DD02C
|
|
thumb_func_end sub_80DCFE4
|
|
|
|
thumb_func_start sub_80DD02C
|
|
sub_80DD02C: @ 80DD02C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r1, [r4, 0x38]
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x38]
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080DD072
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080DD072:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80DD02C
|
|
|
|
thumb_func_start do_boulder_dust
|
|
do_boulder_dust: @ 80DD078
|
|
push {r4-r6,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0
|
|
ldr r1, _080DD154 @ =REG_BLDCNT
|
|
ldr r2, _080DD158 @ =0x00003f42
|
|
adds r0, r2, 0
|
|
strh r0, [r1]
|
|
adds r1, 0x2
|
|
movs r2, 0x80
|
|
lsls r2, 5
|
|
adds r0, r2, 0
|
|
strh r0, [r1]
|
|
ldr r4, _080DD15C @ =REG_BG1CNT
|
|
ldrb r1, [r4]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080DD0C4
|
|
ldrb r0, [r4]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
_080DD0C4:
|
|
ldr r0, _080DD160 @ =gBattle_BG1_X
|
|
strh r5, [r0]
|
|
ldr r0, _080DD164 @ =gBattle_BG1_Y
|
|
strh r5, [r0]
|
|
ldr r0, _080DD168 @ =REG_BG1HOFS
|
|
strh r5, [r0]
|
|
adds r0, 0x2
|
|
strh r5, [r0]
|
|
mov r0, sp
|
|
bl sub_8078914
|
|
ldr r1, [sp, 0x4]
|
|
str r5, [sp, 0xC]
|
|
ldr r2, _080DD16C @ =0x040000d4
|
|
add r0, sp, 0xC
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
ldr r0, _080DD170 @ =0x85000400
|
|
str r0, [r2, 0x8]
|
|
ldr r0, [r2, 0x8]
|
|
ldr r0, _080DD174 @ =gBattleAnimBackgroundTilemap_SandstormBrew
|
|
bl LZDecompressVram
|
|
ldr r0, _080DD178 @ =gBattleAnimBackgroundImage_SandstormBrew
|
|
ldr r1, [sp]
|
|
bl LZDecompressVram
|
|
ldr r0, _080DD17C @ =gBattleAnimSpritePalette_261
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080DD120
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80763FC
|
|
_080DD120:
|
|
ldr r0, _080DD180 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _080DD13A
|
|
ldr r0, _080DD184 @ =gAnimBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080DD13A
|
|
movs r5, 0x1
|
|
_080DD13A:
|
|
ldr r0, _080DD188 @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
strh r5, [r1, 0x8]
|
|
ldr r0, _080DD18C @ =sub_80DD190
|
|
str r0, [r1]
|
|
add sp, 0x10
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD154: .4byte REG_BLDCNT
|
|
_080DD158: .4byte 0x00003f42
|
|
_080DD15C: .4byte REG_BG1CNT
|
|
_080DD160: .4byte gBattle_BG1_X
|
|
_080DD164: .4byte gBattle_BG1_Y
|
|
_080DD168: .4byte REG_BG1HOFS
|
|
_080DD16C: .4byte 0x040000d4
|
|
_080DD170: .4byte 0x85000400
|
|
_080DD174: .4byte gBattleAnimBackgroundTilemap_SandstormBrew
|
|
_080DD178: .4byte gBattleAnimBackgroundImage_SandstormBrew
|
|
_080DD17C: .4byte gBattleAnimSpritePalette_261
|
|
_080DD180: .4byte gBattleAnimArgs
|
|
_080DD184: .4byte gAnimBankAttacker
|
|
_080DD188: .4byte gTasks
|
|
_080DD18C: .4byte sub_80DD190
|
|
thumb_func_end do_boulder_dust
|
|
|
|
thumb_func_start sub_80DD190
|
|
sub_80DD190: @ 80DD190
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r1, _080DD1C0 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x8
|
|
ldrsh r0, [r0, r2]
|
|
adds r3, r1, 0
|
|
cmp r0, 0
|
|
bne _080DD1CC
|
|
ldr r1, _080DD1C4 @ =gBattle_BG1_X
|
|
ldr r5, _080DD1C8 @ =0x0000fffa
|
|
adds r0, r5, 0
|
|
ldrh r2, [r1]
|
|
adds r0, r2
|
|
b _080DD1D2
|
|
.align 2, 0
|
|
_080DD1C0: .4byte gTasks
|
|
_080DD1C4: .4byte gBattle_BG1_X
|
|
_080DD1C8: .4byte 0x0000fffa
|
|
_080DD1CC:
|
|
ldr r1, _080DD204 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x6
|
|
_080DD1D2:
|
|
strh r0, [r1]
|
|
adds r4, r1, 0
|
|
ldr r1, _080DD208 @ =gBattle_BG1_Y
|
|
ldr r5, _080DD20C @ =0x0000ffff
|
|
adds r0, r5, 0
|
|
ldrh r2, [r1]
|
|
adds r0, r2
|
|
strh r0, [r1]
|
|
lsls r2, r7, 2
|
|
adds r0, r2, r7
|
|
lsls r0, 3
|
|
adds r0, r3
|
|
movs r5, 0x20
|
|
ldrsh r0, [r0, r5]
|
|
mov r8, r2
|
|
adds r2, r1, 0
|
|
cmp r0, 0x4
|
|
bls _080DD1F8
|
|
b _080DD37C
|
|
_080DD1F8:
|
|
lsls r0, 2
|
|
ldr r1, _080DD210 @ =_080DD214
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080DD204: .4byte gBattle_BG1_X
|
|
_080DD208: .4byte gBattle_BG1_Y
|
|
_080DD20C: .4byte 0x0000ffff
|
|
_080DD210: .4byte _080DD214
|
|
.align 2, 0
|
|
_080DD214:
|
|
.4byte _080DD228
|
|
.4byte _080DD270
|
|
.4byte _080DD292
|
|
.4byte _080DD2D4
|
|
.4byte _080DD358
|
|
_080DD228:
|
|
mov r1, r8
|
|
adds r0, r1, r7
|
|
lsls r0, 3
|
|
adds r3, r0, r3
|
|
ldrh r0, [r3, 0x1C]
|
|
adds r0, 0x1
|
|
movs r4, 0
|
|
strh r0, [r3, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
beq _080DD242
|
|
b _080DD37C
|
|
_080DD242:
|
|
strh r4, [r3, 0x1C]
|
|
ldrh r1, [r3, 0x1E]
|
|
adds r1, 0x1
|
|
strh r1, [r3, 0x1E]
|
|
ldr r2, _080DD26C @ =REG_BLDALPHA
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
movs r2, 0x1E
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0x7
|
|
beq _080DD260
|
|
b _080DD37C
|
|
_080DD260:
|
|
ldrh r0, [r3, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x20]
|
|
strh r4, [r3, 0x1E]
|
|
b _080DD37C
|
|
.align 2, 0
|
|
_080DD26C: .4byte REG_BLDALPHA
|
|
_080DD270:
|
|
mov r5, r8
|
|
adds r0, r5, r7
|
|
lsls r0, 3
|
|
adds r1, r0, r3
|
|
ldrh r0, [r1, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x65
|
|
bne _080DD37C
|
|
movs r0, 0x7
|
|
strh r0, [r1, 0x1E]
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _080DD37C
|
|
_080DD292:
|
|
mov r1, r8
|
|
adds r0, r1, r7
|
|
lsls r0, 3
|
|
adds r3, r0, r3
|
|
ldrh r0, [r3, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080DD37C
|
|
movs r0, 0
|
|
strh r0, [r3, 0x1C]
|
|
ldrh r1, [r3, 0x1E]
|
|
subs r1, 0x1
|
|
strh r1, [r3, 0x1E]
|
|
ldr r2, _080DD2D0 @ =REG_BLDALPHA
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r3, r2]
|
|
cmp r1, 0
|
|
bne _080DD37C
|
|
ldrh r0, [r3, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x20]
|
|
strh r1, [r3, 0x1E]
|
|
b _080DD37C
|
|
.align 2, 0
|
|
_080DD2D0: .4byte REG_BLDALPHA
|
|
_080DD2D4:
|
|
mov r0, sp
|
|
bl sub_8078914
|
|
ldr r2, [sp]
|
|
movs r3, 0x80
|
|
lsls r3, 6
|
|
add r5, sp, 0xC
|
|
movs r6, 0
|
|
ldr r1, _080DD38C @ =0x040000d4
|
|
movs r4, 0x80
|
|
lsls r4, 5
|
|
mov r9, r5
|
|
ldr r0, _080DD390 @ =0x85000400
|
|
mov r12, r0
|
|
movs r0, 0x85
|
|
lsls r0, 24
|
|
mov r10, r0
|
|
_080DD2F6:
|
|
str r6, [sp, 0xC]
|
|
mov r0, r9
|
|
str r0, [r1]
|
|
str r2, [r1, 0x4]
|
|
mov r0, r12
|
|
str r0, [r1, 0x8]
|
|
ldr r0, [r1, 0x8]
|
|
adds r2, r4
|
|
subs r3, r4
|
|
cmp r3, r4
|
|
bhi _080DD2F6
|
|
str r6, [sp, 0xC]
|
|
str r5, [r1]
|
|
str r2, [r1, 0x4]
|
|
lsrs r0, r3, 2
|
|
mov r2, r10
|
|
orrs r0, r2
|
|
str r0, [r1, 0x8]
|
|
ldr r0, [r1, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
ldr r0, _080DD38C @ =0x040000d4
|
|
str r5, [r0]
|
|
str r1, [r0, 0x4]
|
|
ldr r1, _080DD394 @ =0x85000200
|
|
str r1, [r0, 0x8]
|
|
ldr r0, [r0, 0x8]
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080DD344
|
|
ldr r2, _080DD398 @ =REG_BG1CNT
|
|
ldrb r1, [r2]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
_080DD344:
|
|
ldr r0, _080DD39C @ =gTasks
|
|
mov r5, r8
|
|
adds r1, r5, r7
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
ldr r4, _080DD3A0 @ =gBattle_BG1_X
|
|
ldr r2, _080DD3A4 @ =gBattle_BG1_Y
|
|
_080DD358:
|
|
movs r1, 0
|
|
strh r1, [r4]
|
|
strh r1, [r2]
|
|
ldr r0, _080DD3A8 @ =REG_BLDCNT
|
|
strh r1, [r0]
|
|
adds r0, 0x2
|
|
strh r1, [r0]
|
|
ldr r2, _080DD398 @ =REG_BG1CNT
|
|
ldrb r1, [r2]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r7, 0
|
|
bl DestroyAnimVisualTask
|
|
_080DD37C:
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD38C: .4byte 0x040000d4
|
|
_080DD390: .4byte 0x85000400
|
|
_080DD394: .4byte 0x85000200
|
|
_080DD398: .4byte REG_BG1CNT
|
|
_080DD39C: .4byte gTasks
|
|
_080DD3A0: .4byte gBattle_BG1_X
|
|
_080DD3A4: .4byte gBattle_BG1_Y
|
|
_080DD3A8: .4byte REG_BLDCNT
|
|
thumb_func_end sub_80DD190
|
|
|
|
thumb_func_start sub_80DD3AC
|
|
sub_80DD3AC: @ 80DD3AC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080DD428
|
|
ldr r4, _080DD3F0 @ =gBattleAnimArgs
|
|
movs r2, 0x6
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080DD3F8
|
|
ldr r0, _080DD3F4 @ =gAnimBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080DD3F8
|
|
movs r0, 0x98
|
|
lsls r0, 1
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r4, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x2]
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x38]
|
|
ldrb r1, [r5, 0x3]
|
|
subs r0, 0x40
|
|
ands r0, r1
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x3]
|
|
b _080DD3FC
|
|
.align 2, 0
|
|
_080DD3F0: .4byte gBattleAnimArgs
|
|
_080DD3F4: .4byte gAnimBankAttacker
|
|
_080DD3F8:
|
|
ldr r0, _080DD41C @ =0x0000ffc0
|
|
strh r0, [r5, 0x20]
|
|
_080DD3FC:
|
|
ldr r4, _080DD420 @ =gBattleAnimArgs
|
|
ldrh r0, [r4]
|
|
strh r0, [r5, 0x22]
|
|
ldr r1, _080DD424 @ =gUnknown_083DAD10
|
|
adds r0, r5, 0
|
|
bl SetSubspriteTables
|
|
ldrh r0, [r4, 0x2]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r4, 0x4]
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
b _080DD484
|
|
.align 2, 0
|
|
_080DD41C: .4byte 0x0000ffc0
|
|
_080DD420: .4byte gBattleAnimArgs
|
|
_080DD424: .4byte gUnknown_083DAD10
|
|
_080DD428:
|
|
ldrh r1, [r5, 0x30]
|
|
ldrh r3, [r5, 0x34]
|
|
adds r1, r3
|
|
ldrh r2, [r5, 0x32]
|
|
ldrh r0, [r5, 0x36]
|
|
adds r2, r0
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
ldrh r3, [r5, 0x24]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x24]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
ldrh r3, [r5, 0x26]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0xFF
|
|
ands r1, r0
|
|
strh r1, [r5, 0x34]
|
|
ands r2, r0
|
|
strh r2, [r5, 0x36]
|
|
movs r1, 0x38
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080DD46E
|
|
movs r2, 0x20
|
|
ldrsh r0, [r5, r2]
|
|
movs r3, 0x24
|
|
ldrsh r1, [r5, r3]
|
|
adds r0, r1
|
|
movs r1, 0x88
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
ble _080DD484
|
|
b _080DD480
|
|
_080DD46E:
|
|
movs r1, 0x20
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r5, r2]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _080DD484
|
|
_080DD480:
|
|
ldr r0, _080DD48C @ =DestroyAnimSprite
|
|
str r0, [r5, 0x1C]
|
|
_080DD484:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD48C: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80DD3AC
|
|
|
|
thumb_func_start sub_80DD490
|
|
sub_80DD490: @ 80DD490
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080DD4C8 @ =gBattleAnimArgs
|
|
ldrb r1, [r5, 0x8]
|
|
bl StartSpriteAnim
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_80787B0
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0x4]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080DD4CC @ =sub_8078B34
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080DD4D0 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD4C8: .4byte gBattleAnimArgs
|
|
_080DD4CC: .4byte sub_8078B34
|
|
_080DD4D0: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80DD490
|
|
|
|
thumb_func_start sub_80DD4D4
|
|
sub_80DD4D4: @ 80DD4D4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080DD554 @ =gTasks
|
|
adds r6, r1, r0
|
|
ldr r5, _080DD558 @ =gAnimBankAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBankPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl GetBankPosition
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r1, 0xC0
|
|
lsls r1, 13
|
|
adds r0, r1
|
|
lsrs r7, r0, 16
|
|
ldr r4, _080DD55C @ =gAnimBankTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBankPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl GetBankPosition
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r2, 0xC0
|
|
lsls r2, 13
|
|
adds r0, r2
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldrb r1, [r5]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
ldrb r4, [r4]
|
|
cmp r0, r4
|
|
bne _080DD544
|
|
mov r8, r7
|
|
_080DD544:
|
|
bl sub_80DD8BC
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x1
|
|
bne _080DD560
|
|
movs r0, 0x20
|
|
b _080DD566
|
|
.align 2, 0
|
|
_080DD554: .4byte gTasks
|
|
_080DD558: .4byte gAnimBankAttacker
|
|
_080DD55C: .4byte gAnimBankTarget
|
|
_080DD560:
|
|
lsls r1, r5, 3
|
|
movs r0, 0x30
|
|
subs r0, r1
|
|
_080DD566:
|
|
strh r0, [r6, 0x18]
|
|
movs r4, 0
|
|
strh r4, [r6, 0x8]
|
|
strh r4, [r6, 0x1E]
|
|
strh r4, [r6, 0x1A]
|
|
movs r0, 0x1
|
|
strh r0, [r6, 0x20]
|
|
movs r1, 0x18
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bge _080DD57E
|
|
adds r0, 0x7
|
|
_080DD57E:
|
|
asrs r0, 3
|
|
subs r0, 0x1
|
|
strh r0, [r6, 0x1C]
|
|
mov r2, r9
|
|
lsls r0, r2, 3
|
|
strh r0, [r6, 0xC]
|
|
lsls r0, r7, 3
|
|
strh r0, [r6, 0xE]
|
|
mov r1, r10
|
|
subs r0, r1, r2
|
|
lsls r0, 3
|
|
movs r2, 0x18
|
|
ldrsh r1, [r6, r2]
|
|
bl __divsi3
|
|
strh r0, [r6, 0x10]
|
|
mov r1, r8
|
|
subs r0, r1, r7
|
|
lsls r0, 3
|
|
movs r2, 0x18
|
|
ldrsh r1, [r6, r2]
|
|
bl __divsi3
|
|
strh r0, [r6, 0x12]
|
|
strh r4, [r6, 0x14]
|
|
strh r4, [r6, 0x16]
|
|
movs r0, 0x40
|
|
negs r0, r0
|
|
bl BattleAnimAdjustPanning
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
asrs r4, 8
|
|
lsrs r4, 16
|
|
movs r0, 0x3F
|
|
bl BattleAnimAdjustPanning
|
|
lsls r0, 24
|
|
strh r4, [r6, 0x22]
|
|
asrs r0, 24
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
subs r0, r4
|
|
movs r2, 0x18
|
|
ldrsh r1, [r6, r2]
|
|
bl __divsi3
|
|
strh r0, [r6, 0x24]
|
|
strh r5, [r6, 0xA]
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x26]
|
|
ldr r0, _080DD600 @ =sub_80DD604
|
|
str r0, [r6]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD600: .4byte sub_80DD604
|
|
thumb_func_end sub_80DD4D4
|
|
|
|
thumb_func_start sub_80DD604
|
|
sub_80DD604: @ 80DD604
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080DD628 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bls _080DD61E
|
|
b _080DD76C
|
|
_080DD61E:
|
|
lsls r0, 2
|
|
ldr r1, _080DD62C @ =_080DD630
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080DD628: .4byte gTasks
|
|
_080DD62C: .4byte _080DD630
|
|
.align 2, 0
|
|
_080DD630:
|
|
.4byte _080DD644
|
|
.4byte _080DD6A8
|
|
.4byte _080DD6B0
|
|
.4byte _080DD70C
|
|
.4byte _080DD75E
|
|
_080DD644:
|
|
ldrh r2, [r4, 0x14]
|
|
ldrh r0, [r4, 0x10]
|
|
subs r2, r0
|
|
strh r2, [r4, 0x14]
|
|
ldrh r0, [r4, 0x16]
|
|
ldrh r1, [r4, 0x12]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x16]
|
|
ldr r3, _080DD6A4 @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
lsls r2, 16
|
|
asrs r2, 19
|
|
strh r2, [r0, 0x24]
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrh r0, [r4, 0x16]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r4, 0x1A]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xA
|
|
bne _080DD694
|
|
movs r0, 0x14
|
|
strh r0, [r4, 0x1E]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080DD694:
|
|
ldrh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xA2
|
|
bl PlaySE12WithPanning
|
|
b _080DD76C
|
|
.align 2, 0
|
|
_080DD6A4: .4byte gSprites
|
|
_080DD6A8:
|
|
ldrh r0, [r4, 0x1E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x1E]
|
|
b _080DD750
|
|
_080DD6B0:
|
|
ldrh r0, [r4, 0x1A]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
beq _080DD6D0
|
|
ldrh r0, [r4, 0x10]
|
|
ldrh r2, [r4, 0x14]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x14]
|
|
ldrh r0, [r4, 0x12]
|
|
ldrh r1, [r4, 0x16]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x16]
|
|
b _080DD6DA
|
|
_080DD6D0:
|
|
strh r0, [r4, 0x14]
|
|
strh r0, [r4, 0x16]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080DD6DA:
|
|
ldr r2, _080DD708 @ =gSprites
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r4, 0x14]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
strh r0, [r1, 0x24]
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r4, 0x16]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
strh r0, [r1, 0x26]
|
|
b _080DD76C
|
|
.align 2, 0
|
|
_080DD708: .4byte gSprites
|
|
_080DD70C:
|
|
ldrh r0, [r4, 0x10]
|
|
ldrh r2, [r4, 0xC]
|
|
adds r0, r2
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x12]
|
|
ldrh r1, [r4, 0xE]
|
|
adds r0, r1
|
|
strh r0, [r4, 0xE]
|
|
ldrh r0, [r4, 0x1A]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x1C
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
blt _080DD74A
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1A]
|
|
adds r0, r4, 0
|
|
bl sub_80DD774
|
|
ldrh r1, [r4, 0x24]
|
|
ldrh r0, [r4, 0x22]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xAF
|
|
bl PlaySE12WithPanning
|
|
_080DD74A:
|
|
ldrh r0, [r4, 0x18]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
_080DD750:
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080DD76C
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080DD76C
|
|
_080DD75E:
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080DD76C
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080DD76C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80DD604
|
|
|
|
thumb_func_start sub_80DD774
|
|
sub_80DD774: @ 80DD774
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bhi _080DD864
|
|
lsls r0, 2
|
|
ldr r1, _080DD790 @ =_080DD794
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080DD790: .4byte _080DD794
|
|
.align 2, 0
|
|
_080DD794:
|
|
.4byte _080DD7A8
|
|
.4byte _080DD7B4
|
|
.4byte _080DD7B4
|
|
.4byte _080DD7C0
|
|
.4byte _080DD7CC
|
|
_080DD7A8:
|
|
ldr r3, _080DD7B0 @ =gSpriteTemplate_83DAD78
|
|
movs r5, 0
|
|
b _080DD7D0
|
|
.align 2, 0
|
|
_080DD7B0: .4byte gSpriteTemplate_83DAD78
|
|
_080DD7B4:
|
|
ldr r3, _080DD7BC @ =gSpriteTemplate_83DAD90
|
|
movs r5, 0x50
|
|
b _080DD7D0
|
|
.align 2, 0
|
|
_080DD7BC: .4byte gSpriteTemplate_83DAD90
|
|
_080DD7C0:
|
|
ldr r3, _080DD7C8 @ =gSpriteTemplate_83DAD90
|
|
movs r5, 0x40
|
|
b _080DD7D0
|
|
.align 2, 0
|
|
_080DD7C8: .4byte gSpriteTemplate_83DAD90
|
|
_080DD7CC:
|
|
ldr r3, _080DD86C @ =gSpriteTemplate_83DAD90
|
|
movs r5, 0x30
|
|
_080DD7D0:
|
|
ldrh r1, [r4, 0xC]
|
|
lsls r1, 16
|
|
asrs r1, 19
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
ldrh r2, [r4, 0xE]
|
|
lsls r2, 16
|
|
asrs r2, 19
|
|
lsls r2, 16
|
|
movs r6, 0x20
|
|
ldrsh r0, [r4, r6]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
lsls r1, 16
|
|
lsrs r6, r1, 16
|
|
asrs r1, 16
|
|
lsrs r7, r2, 16
|
|
asrs r2, 16
|
|
adds r0, r3, 0
|
|
movs r3, 0x23
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x40
|
|
beq _080DD85C
|
|
ldr r1, _080DD870 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
movs r1, 0x12
|
|
strh r1, [r0, 0x2E]
|
|
movs r2, 0x20
|
|
ldrsh r1, [r4, r2]
|
|
lsls r2, r1, 2
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r6, r2
|
|
movs r6, 0xA
|
|
ldrsh r3, [r4, r6]
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
adds r2, r1
|
|
strh r2, [r0, 0x32]
|
|
strh r7, [r0, 0x36]
|
|
movs r1, 0xA
|
|
ldrsh r2, [r4, r1]
|
|
lsls r2, 1
|
|
movs r3, 0x10
|
|
negs r3, r3
|
|
adds r1, r3, 0
|
|
subs r1, r2
|
|
strh r1, [r0, 0x38]
|
|
ldrh r3, [r0, 0x4]
|
|
lsls r2, r3, 22
|
|
lsrs r2, 22
|
|
adds r2, r5
|
|
ldr r5, _080DD874 @ =0x000003ff
|
|
adds r1, r5, 0
|
|
ands r2, r1
|
|
ldr r1, _080DD878 @ =0xfffffc00
|
|
ands r1, r3
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
bl sub_80786EC
|
|
ldrh r0, [r4, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1E]
|
|
_080DD85C:
|
|
movs r6, 0x20
|
|
ldrsh r0, [r4, r6]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x20]
|
|
_080DD864:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD86C: .4byte gSpriteTemplate_83DAD90
|
|
_080DD870: .4byte gSprites
|
|
_080DD874: .4byte 0x000003ff
|
|
_080DD878: .4byte 0xfffffc00
|
|
thumb_func_end sub_80DD774
|
|
|
|
thumb_func_start sub_80DD87C
|
|
sub_80DD87C: @ 80DD87C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8078718
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080DD8AE
|
|
ldr r0, _080DD8B4 @ =sub_80DD604
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0xFF
|
|
beq _080DD8A8
|
|
ldr r0, _080DD8B8 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x1E]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
_080DD8A8:
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080DD8AE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD8B4: .4byte sub_80DD604
|
|
_080DD8B8: .4byte gTasks
|
|
thumb_func_end sub_80DD87C
|
|
|
|
thumb_func_start sub_80DD8BC
|
|
sub_80DD8BC: @ 80DD8BC
|
|
push {lr}
|
|
ldr r0, _080DD8E4 @ =gAnimDisableStructPtr
|
|
ldr r0, [r0]
|
|
ldrb r1, [r0, 0x11]
|
|
lsrs r0, r1, 4
|
|
lsls r1, 28
|
|
lsrs r1, 28
|
|
subs r0, r1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
movs r2, 0xFF
|
|
lsls r2, 24
|
|
adds r0, r2
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
bls _080DD8DE
|
|
movs r1, 0x1
|
|
_080DD8DE:
|
|
adds r0, r1, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080DD8E4: .4byte gAnimDisableStructPtr
|
|
thumb_func_end sub_80DD8BC
|
|
|
|
thumb_func_start sub_80DD8E8
|
|
sub_80DD8E8: @ 80DD8E8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080DD920 @ =gBattleAnimArgs
|
|
ldrb r1, [r5, 0x8]
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r5]
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x34]
|
|
ldrh r1, [r5, 0x4]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x34]
|
|
movs r0, 0x3
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _080DD924 @ =sub_80DD928
|
|
str r0, [r4, 0x1C]
|
|
adds r4, 0x3E
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD920: .4byte gBattleAnimArgs
|
|
_080DD924: .4byte sub_80DD928
|
|
thumb_func_end sub_80DD8E8
|
|
|
|
thumb_func_start sub_80DD928
|
|
sub_80DD928: @ 80DD928
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r3, r2, 0
|
|
adds r3, 0x3E
|
|
ldrb r0, [r3]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r0
|
|
strb r1, [r3]
|
|
ldrh r1, [r2, 0x34]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
beq _080DD960
|
|
ldrh r3, [r2, 0x32]
|
|
adds r0, r1, r3
|
|
strh r0, [r2, 0x26]
|
|
ldrh r0, [r2, 0x2E]
|
|
adds r1, r0
|
|
strh r1, [r2, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
lsls r1, 16
|
|
cmp r1, 0
|
|
ble _080DD972
|
|
movs r0, 0
|
|
strh r0, [r2, 0x34]
|
|
b _080DD972
|
|
_080DD960:
|
|
ldrh r0, [r2, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080DD972
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080DD972:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80DD928
|
|
|
|
thumb_func_start sub_80DD978
|
|
sub_80DD978: @ 80DD978
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080DD9A0 @ =gAnimBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080DD994
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
_080DD994:
|
|
adds r0, r4, 0
|
|
bl sub_807941C
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD9A0: .4byte gAnimBankAttacker
|
|
thumb_func_end sub_80DD978
|
|
|
|
thumb_func_start sub_80DD9A4
|
|
sub_80DD9A4: @ 80DD9A4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080DD9F0 @ =gAnimBankTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl GetBankPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl GetBankPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080DD9F4 @ =gBattleAnimArgs
|
|
ldrh r3, [r2]
|
|
ldrh r5, [r4, 0x20]
|
|
adds r1, r3, r5
|
|
strh r1, [r4, 0x20]
|
|
ldrh r1, [r2, 0x2]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
strh r3, [r4, 0x30]
|
|
strh r1, [r4, 0x32]
|
|
ldrh r0, [r2, 0x4]
|
|
strh r0, [r4, 0x38]
|
|
ldrb r1, [r2, 0x6]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldr r0, _080DD9F8 @ =sub_80DD9FC
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DD9F0: .4byte gAnimBankTarget
|
|
_080DD9F4: .4byte gBattleAnimArgs
|
|
_080DD9F8: .4byte sub_80DD9FC
|
|
thumb_func_end sub_80DD9A4
|
|
|
|
thumb_func_start sub_80DD9FC
|
|
sub_80DD9FC: @ 80DD9FC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x28
|
|
bl __divsi3
|
|
ldrh r1, [r4, 0x24]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x24]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
subs r1, r0
|
|
strh r1, [r4, 0x26]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x8C
|
|
ble _080DDA46
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080DDA46:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80DD9FC
|
|
|
|
thumb_func_start sub_80DDA4C
|
|
sub_80DDA4C: @ 80DDA4C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r2, _080DDA84 @ =gAnimMoveDmg
|
|
ldr r0, [r2]
|
|
cmp r0, 0x20
|
|
bgt _080DDA60
|
|
ldr r1, _080DDA88 @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
strh r0, [r1, 0xE]
|
|
_080DDA60:
|
|
ldr r2, [r2]
|
|
adds r0, r2, 0
|
|
subs r0, 0x21
|
|
cmp r0, 0x20
|
|
bhi _080DDA70
|
|
ldr r1, _080DDA88 @ =gBattleAnimArgs
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0xE]
|
|
_080DDA70:
|
|
cmp r2, 0x41
|
|
ble _080DDA7A
|
|
ldr r1, _080DDA88 @ =gBattleAnimArgs
|
|
movs r0, 0x2
|
|
strh r0, [r1, 0xE]
|
|
_080DDA7A:
|
|
adds r0, r3, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DDA84: .4byte gAnimMoveDmg
|
|
_080DDA88: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80DDA4C
|
|
|
|
thumb_func_start sub_80DDA8C
|
|
sub_80DDA8C: @ 80DDA8C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, _080DDAE8 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080DDAAE
|
|
movs r0, 0
|
|
bl sub_80789D4
|
|
movs r0, 0xC8
|
|
strh r0, [r5, 0xA]
|
|
_080DDAAE:
|
|
ldr r4, _080DDAEC @ =gBattle_BG3_Y
|
|
movs r1, 0xA
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
ldrh r1, [r4]
|
|
adds r1, r0
|
|
strh r1, [r4]
|
|
ldrh r0, [r5, 0xA]
|
|
subs r0, 0x3
|
|
strh r0, [r5, 0xA]
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x78
|
|
bne _080DDADA
|
|
movs r0, 0x1
|
|
bl sub_80789D4
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080DDADA:
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DDAE8: .4byte gTasks
|
|
_080DDAEC: .4byte gBattle_BG3_Y
|
|
thumb_func_end sub_80DDA8C
|
|
|
|
thumb_func_start sub_80DDAF0
|
|
sub_80DDAF0: @ 80DDAF0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r1, _080DDB5C @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080DDB1C
|
|
movs r0, 0
|
|
bl sub_80789D4
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
ldr r0, _080DDB60 @ =gBattle_BG3_Y
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0xC]
|
|
_080DDB1C:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x50
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0xA]
|
|
ldr r6, _080DDB60 @ =gBattle_BG3_Y
|
|
movs r2, 0xA
|
|
ldrsh r1, [r4, r2]
|
|
movs r0, 0x4
|
|
bl Cos
|
|
ldrh r4, [r4, 0xC]
|
|
adds r0, r4
|
|
strh r0, [r6]
|
|
ldr r0, _080DDB64 @ =gBattleAnimArgs
|
|
movs r2, 0xE
|
|
ldrsh r1, [r0, r2]
|
|
ldr r0, _080DDB68 @ =0x00000fff
|
|
cmp r1, r0
|
|
bne _080DDB54
|
|
movs r0, 0
|
|
strh r0, [r6]
|
|
movs r0, 0x1
|
|
bl sub_80789D4
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080DDB54:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080DDB5C: .4byte gTasks
|
|
_080DDB60: .4byte gBattle_BG3_Y
|
|
_080DDB64: .4byte gBattleAnimArgs
|
|
_080DDB68: .4byte 0x00000fff
|
|
thumb_func_end sub_80DDAF0
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|