mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-06 09:05:01 -04:00
Finish decompiling current.s
This commit is contained in:
-913
@@ -1,913 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "include/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
@ current
|
||||
|
||||
thumb_func_start sub_80D700C
|
||||
sub_80D700C: @ 80D700C
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
ldr r1, _080D7030 @ =gTasks
|
||||
adds r5, r0, r1
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0x1
|
||||
bne _080D7026
|
||||
b _080D714C
|
||||
_080D7026:
|
||||
cmp r0, 0x1
|
||||
bgt _080D7034
|
||||
cmp r0, 0
|
||||
beq _080D703C
|
||||
b _080D718E
|
||||
.align 2, 0
|
||||
_080D7030: .4byte gTasks
|
||||
_080D7034:
|
||||
cmp r0, 0x2
|
||||
bne _080D703A
|
||||
b _080D7180
|
||||
_080D703A:
|
||||
b _080D718E
|
||||
_080D703C:
|
||||
ldr r4, _080D707C @ =gAnimBankAttacker
|
||||
ldrb r0, [r4]
|
||||
bl GetBattlerSide
|
||||
lsls r0, 24
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
adds r1, r2, 0
|
||||
cmp r0, 0
|
||||
bne _080D7052
|
||||
movs r1, 0x1
|
||||
_080D7052:
|
||||
movs r6, 0
|
||||
strh r1, [r5, 0xA]
|
||||
ldr r0, _080D7080 @ =gBattleAnimArgs
|
||||
movs r1, 0
|
||||
ldrsh r2, [r0, r1]
|
||||
adds r3, r0, 0
|
||||
cmp r2, 0
|
||||
beq _080D7088
|
||||
cmp r2, 0x4
|
||||
beq _080D70B0
|
||||
ldrh r1, [r3]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080D70E8
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
strh r0, [r5, 0xE]
|
||||
ldr r0, _080D7084 @ =0x0000fff0
|
||||
b _080D70F0
|
||||
.align 2, 0
|
||||
_080D707C: .4byte gAnimBankAttacker
|
||||
_080D7080: .4byte gBattleAnimArgs
|
||||
_080D7084: .4byte 0x0000fff0
|
||||
_080D7088:
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x2
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0xE]
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x3
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x12]
|
||||
movs r2, 0xA
|
||||
ldrsh r0, [r5, r2]
|
||||
lsls r0, 7
|
||||
adds r0, 0x78
|
||||
strh r0, [r5, 0x10]
|
||||
b _080D7126
|
||||
_080D70B0:
|
||||
movs r0, 0xA
|
||||
ldrsh r1, [r5, r0]
|
||||
lsls r1, 7
|
||||
movs r0, 0x78
|
||||
subs r0, r1
|
||||
strh r0, [r5, 0xE]
|
||||
ldr r4, _080D70E4 @ =gAnimBankTarget
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x3
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x12]
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x2
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r2, 0xA
|
||||
ldrsh r1, [r5, r2]
|
||||
lsls r1, 5
|
||||
subs r0, r1
|
||||
strh r0, [r5, 0x10]
|
||||
b _080D7126
|
||||
.align 2, 0
|
||||
_080D70E4: .4byte gAnimBankTarget
|
||||
_080D70E8:
|
||||
ldr r0, _080D710C @ =0x0000fff0
|
||||
strh r0, [r5, 0xE]
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
_080D70F0:
|
||||
strh r0, [r5, 0x10]
|
||||
movs r1, 0xA
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0x1
|
||||
bne _080D7110
|
||||
movs r2, 0
|
||||
ldrsh r0, [r3, r2]
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 1
|
||||
movs r0, 0x50
|
||||
subs r0, r1
|
||||
strh r0, [r5, 0x12]
|
||||
b _080D7126
|
||||
.align 2, 0
|
||||
_080D710C: .4byte 0x0000fff0
|
||||
_080D7110:
|
||||
movs r0, 0
|
||||
ldrsh r1, [r3, r0]
|
||||
lsls r0, r1, 2
|
||||
adds r0, r1
|
||||
lsls r0, 1
|
||||
adds r0, 0x28
|
||||
strh r0, [r5, 0x12]
|
||||
ldrh r1, [r5, 0xE]
|
||||
ldrh r0, [r5, 0x10]
|
||||
strh r0, [r5, 0xE]
|
||||
strh r1, [r5, 0x10]
|
||||
_080D7126:
|
||||
movs r2, 0xE
|
||||
ldrsh r1, [r5, r2]
|
||||
movs r2, 0x10
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r1, r0
|
||||
bge _080D713C
|
||||
movs r1, 0
|
||||
movs r0, 0x1
|
||||
strh r0, [r5, 0xA]
|
||||
strh r1, [r5, 0x14]
|
||||
b _080D7178
|
||||
_080D713C:
|
||||
ldr r0, _080D7148 @ =0x0000ffff
|
||||
strh r0, [r5, 0xA]
|
||||
movs r0, 0x3
|
||||
strh r0, [r5, 0x14]
|
||||
b _080D7178
|
||||
.align 2, 0
|
||||
_080D7148: .4byte 0x0000ffff
|
||||
_080D714C:
|
||||
ldrh r0, [r5, 0xC]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0xC]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
ble _080D718E
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0xC]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80D7194
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080D7178
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80D7194
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080D718E
|
||||
_080D7178:
|
||||
ldrh r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x8]
|
||||
b _080D718E
|
||||
_080D7180:
|
||||
movs r1, 0x16
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
bne _080D718E
|
||||
adds r0, r4, 0
|
||||
bl DestroyAnimVisualTask
|
||||
_080D718E:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80D700C
|
||||
|
||||
thumb_func_start sub_80D7194
|
||||
sub_80D7194: @ 80D7194
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r5, r1, 24
|
||||
ldr r0, _080D7220 @ =gSpriteTemplate_83D9B10
|
||||
movs r2, 0xE
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r3, 0x12
|
||||
ldrsh r2, [r4, r3]
|
||||
movs r3, 0x23
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x40
|
||||
beq _080D71CA
|
||||
ldr r1, _080D7224 @ =gSprites
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
strh r5, [r0, 0x3A]
|
||||
movs r1, 0x7
|
||||
strh r1, [r0, 0x3C]
|
||||
ldrh r0, [r4, 0x16]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x16]
|
||||
_080D71CA:
|
||||
ldrh r1, [r4, 0xA]
|
||||
ldrh r5, [r4, 0x14]
|
||||
adds r0, r1, r5
|
||||
strh r0, [r4, 0x14]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bge _080D71DC
|
||||
movs r0, 0x3
|
||||
strh r0, [r4, 0x14]
|
||||
_080D71DC:
|
||||
movs r2, 0x14
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0x3
|
||||
ble _080D71E8
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x14]
|
||||
_080D71E8:
|
||||
movs r3, 0xA
|
||||
ldrsh r0, [r4, r3]
|
||||
lsls r0, 4
|
||||
ldrh r5, [r4, 0xE]
|
||||
adds r2, r0, r5
|
||||
strh r2, [r4, 0xE]
|
||||
lsls r0, r1, 16
|
||||
asrs r3, r0, 16
|
||||
cmp r3, 0x1
|
||||
bne _080D7208
|
||||
lsls r0, r2, 16
|
||||
asrs r0, 16
|
||||
movs r5, 0x10
|
||||
ldrsh r1, [r4, r5]
|
||||
cmp r0, r1
|
||||
bge _080D721C
|
||||
_080D7208:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r3, r0
|
||||
bne _080D7228
|
||||
lsls r0, r2, 16
|
||||
asrs r0, 16
|
||||
movs r2, 0x10
|
||||
ldrsh r1, [r4, r2]
|
||||
cmp r0, r1
|
||||
bgt _080D7228
|
||||
_080D721C:
|
||||
movs r0, 0x1
|
||||
b _080D722A
|
||||
.align 2, 0
|
||||
_080D7220: .4byte gSpriteTemplate_83D9B10
|
||||
_080D7224: .4byte gSprites
|
||||
_080D7228:
|
||||
movs r0, 0
|
||||
_080D722A:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80D7194
|
||||
|
||||
thumb_func_start sub_80D7230
|
||||
sub_80D7230: @ 80D7230
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldrh r0, [r4, 0x2E]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x2E]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xC
|
||||
ble _080D7270
|
||||
ldr r3, _080D7278 @ =gTasks
|
||||
movs r0, 0x3C
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r1, 1
|
||||
movs r0, 0x3A
|
||||
ldrsh r2, [r4, r0]
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r3, 0x8
|
||||
adds r1, r3
|
||||
ldrh r0, [r1]
|
||||
subs r0, 0x1
|
||||
strh r0, [r1]
|
||||
ldrb r0, [r4, 0x3]
|
||||
lsls r0, 26
|
||||
lsrs r0, 27
|
||||
bl FreeOamMatrix
|
||||
adds r0, r4, 0
|
||||
bl DestroySprite
|
||||
_080D7270:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080D7278: .4byte gTasks
|
||||
thumb_func_end sub_80D7230
|
||||
|
||||
thumb_func_start sub_80D727C
|
||||
sub_80D727C: @ 80D727C
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
movs r1, 0x2E
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
beq _080D728E
|
||||
cmp r0, 0x1
|
||||
beq _080D72C0
|
||||
b _080D72D4
|
||||
_080D728E:
|
||||
ldr r4, _080D72BC @ =gAnimBankAttacker
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x2
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x20]
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x3
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x22]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x2
|
||||
bl StartSpriteAffineAnim
|
||||
ldrh r0, [r5, 0x2E]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x2E]
|
||||
b _080D72D4
|
||||
.align 2, 0
|
||||
_080D72BC: .4byte gAnimBankAttacker
|
||||
_080D72C0:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x3F
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x20
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080D72D4
|
||||
adds r0, r5, 0
|
||||
bl move_anim_8074EE0
|
||||
_080D72D4:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80D727C
|
||||
|
||||
thumb_func_start sub_80D72DC
|
||||
sub_80D72DC: @ 80D72DC
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
ldr r1, _080D7300 @ =gTasks
|
||||
adds r5, r0, r1
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0x4
|
||||
bls _080D72F6
|
||||
b _080D7468
|
||||
_080D72F6:
|
||||
lsls r0, 2
|
||||
ldr r1, _080D7304 @ =_080D7308
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080D7300: .4byte gTasks
|
||||
_080D7304: .4byte _080D7308
|
||||
.align 2, 0
|
||||
_080D7308:
|
||||
.4byte _080D731C
|
||||
.4byte _080D73AC
|
||||
.4byte _080D73E8
|
||||
.4byte _080D7444
|
||||
.4byte _080D7454
|
||||
_080D731C:
|
||||
ldr r4, _080D73A0 @ =gAnimBankAttacker
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x2
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x14]
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x3
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x16]
|
||||
movs r0, 0x4
|
||||
strh r0, [r5, 0x18]
|
||||
ldr r0, _080D73A4 @ =gAnimBankTarget
|
||||
ldrb r0, [r0]
|
||||
movs r1, 0x2
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x1C]
|
||||
movs r2, 0x1C
|
||||
ldrsh r0, [r5, r2]
|
||||
movs r2, 0x14
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r0, r1
|
||||
movs r1, 0x5
|
||||
bl __divsi3
|
||||
strh r0, [r5, 0x1A]
|
||||
movs r0, 0x7
|
||||
strh r0, [r5, 0x10]
|
||||
ldr r0, _080D73A8 @ =0x0000ffff
|
||||
strh r0, [r5, 0x12]
|
||||
movs r0, 0xC
|
||||
strh r0, [r5, 0x1E]
|
||||
subs r0, 0x4C
|
||||
bl BattleAnimAdjustPanning
|
||||
lsls r0, 24
|
||||
asrs r0, 24
|
||||
strh r0, [r5, 0x20]
|
||||
movs r0, 0x3F
|
||||
bl BattleAnimAdjustPanning
|
||||
lsls r0, 24
|
||||
asrs r0, 24
|
||||
strh r0, [r5, 0x22]
|
||||
ldrh r0, [r5, 0x20]
|
||||
strh r0, [r5, 0x24]
|
||||
movs r1, 0x22
|
||||
ldrsh r0, [r5, r1]
|
||||
movs r2, 0x20
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r0, r1
|
||||
movs r1, 0x3
|
||||
bl __divsi3
|
||||
strh r0, [r5, 0x26]
|
||||
ldrh r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
b _080D7466
|
||||
.align 2, 0
|
||||
_080D73A0: .4byte gAnimBankAttacker
|
||||
_080D73A4: .4byte gAnimBankTarget
|
||||
_080D73A8: .4byte 0x0000ffff
|
||||
_080D73AC:
|
||||
ldrh r0, [r5, 0xA]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0xA]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
ble _080D73DC
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0xA]
|
||||
adds r0, r5, 0
|
||||
adds r1, r2, 0
|
||||
bl sub_80D7470
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080D73DC
|
||||
movs r1, 0xC
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0x5
|
||||
bne _080D73D6
|
||||
movs r0, 0x3
|
||||
b _080D73DA
|
||||
_080D73D6:
|
||||
ldrh r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
_080D73DA:
|
||||
strh r0, [r5, 0x8]
|
||||
_080D73DC:
|
||||
ldrh r1, [r5, 0x1E]
|
||||
movs r2, 0x1E
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r0, 0
|
||||
beq _080D7468
|
||||
b _080D745E
|
||||
_080D73E8:
|
||||
ldrh r1, [r5, 0x1E]
|
||||
movs r2, 0x1E
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r0, 0
|
||||
beq _080D73F6
|
||||
subs r0, r1, 0x1
|
||||
strh r0, [r5, 0x1E]
|
||||
_080D73F6:
|
||||
ldrh r0, [r5, 0xA]
|
||||
adds r0, 0x1
|
||||
movs r3, 0
|
||||
strh r0, [r5, 0xA]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x4
|
||||
ble _080D7468
|
||||
strh r3, [r5, 0xA]
|
||||
ldrh r1, [r5, 0xC]
|
||||
movs r2, 0x1
|
||||
adds r0, r2, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080D7422
|
||||
movs r0, 0x4
|
||||
strh r0, [r5, 0x16]
|
||||
movs r0, 0x44
|
||||
strh r0, [r5, 0x18]
|
||||
strh r3, [r5, 0x10]
|
||||
strh r2, [r5, 0x12]
|
||||
b _080D7432
|
||||
_080D7422:
|
||||
movs r0, 0x44
|
||||
strh r0, [r5, 0x16]
|
||||
movs r0, 0x4
|
||||
strh r0, [r5, 0x18]
|
||||
movs r0, 0x7
|
||||
strh r0, [r5, 0x10]
|
||||
ldr r0, _080D7440 @ =0x0000ffff
|
||||
strh r0, [r5, 0x12]
|
||||
_080D7432:
|
||||
movs r1, 0x1E
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
beq _080D7464
|
||||
movs r0, 0x4
|
||||
b _080D7466
|
||||
.align 2, 0
|
||||
_080D7440: .4byte 0x0000ffff
|
||||
_080D7444:
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
bne _080D7468
|
||||
adds r0, r2, 0
|
||||
bl DestroyAnimVisualTask
|
||||
b _080D7468
|
||||
_080D7454:
|
||||
ldrh r1, [r5, 0x1E]
|
||||
movs r2, 0x1E
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r0, 0
|
||||
beq _080D7464
|
||||
_080D745E:
|
||||
subs r0, r1, 0x1
|
||||
strh r0, [r5, 0x1E]
|
||||
b _080D7468
|
||||
_080D7464:
|
||||
movs r0, 0x1
|
||||
_080D7466:
|
||||
strh r0, [r5, 0x8]
|
||||
_080D7468:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80D72DC
|
||||
|
||||
thumb_func_start sub_80D7470
|
||||
sub_80D7470: @ 80D7470
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r5, r1, 24
|
||||
ldr r0, _080D7538 @ =gSpriteTemplate_83D9B40
|
||||
movs r2, 0x14
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r3, 0x16
|
||||
ldrsh r2, [r4, r3]
|
||||
movs r3, 0x23
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x40
|
||||
beq _080D74DC
|
||||
ldr r1, _080D753C @ =gSprites
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r3, r0, r1
|
||||
ldrh r2, [r3, 0x4]
|
||||
lsls r1, r2, 22
|
||||
lsrs r1, 22
|
||||
ldrh r6, [r4, 0x10]
|
||||
adds r1, r6
|
||||
ldr r6, _080D7540 @ =0x000003ff
|
||||
adds r0, r6, 0
|
||||
ands r1, r0
|
||||
ldr r0, _080D7544 @ =0xfffffc00
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strh r0, [r3, 0x4]
|
||||
ldrh r0, [r4, 0x12]
|
||||
ldrh r1, [r4, 0x10]
|
||||
adds r0, r1
|
||||
strh r0, [r4, 0x10]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bge _080D74C4
|
||||
movs r0, 0x7
|
||||
strh r0, [r4, 0x10]
|
||||
_080D74C4:
|
||||
movs r2, 0x10
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0x7
|
||||
ble _080D74D0
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x10]
|
||||
_080D74D0:
|
||||
strh r5, [r3, 0x3A]
|
||||
movs r0, 0x3
|
||||
strh r0, [r3, 0x3C]
|
||||
ldrh r0, [r4, 0xE]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0xE]
|
||||
_080D74DC:
|
||||
movs r3, 0x10
|
||||
ldrsh r0, [r4, r3]
|
||||
cmp r0, 0
|
||||
bne _080D74FE
|
||||
movs r5, 0x12
|
||||
ldrsh r0, [r4, r5]
|
||||
cmp r0, 0
|
||||
ble _080D74FE
|
||||
ldrh r1, [r4, 0x26]
|
||||
ldrh r6, [r4, 0x24]
|
||||
adds r1, r6
|
||||
strh r1, [r4, 0x24]
|
||||
lsls r1, 24
|
||||
asrs r1, 24
|
||||
movs r0, 0x76
|
||||
bl PlaySE12WithPanning
|
||||
_080D74FE:
|
||||
movs r0, 0x12
|
||||
ldrsh r3, [r4, r0]
|
||||
ldrh r2, [r4, 0x16]
|
||||
cmp r3, 0
|
||||
bge _080D7514
|
||||
lsls r0, r2, 16
|
||||
asrs r0, 16
|
||||
movs r5, 0x18
|
||||
ldrsh r1, [r4, r5]
|
||||
cmp r0, r1
|
||||
ble _080D7524
|
||||
_080D7514:
|
||||
cmp r3, 0
|
||||
ble _080D7548
|
||||
lsls r0, r2, 16
|
||||
asrs r0, 16
|
||||
movs r6, 0x18
|
||||
ldrsh r1, [r4, r6]
|
||||
cmp r0, r1
|
||||
blt _080D7548
|
||||
_080D7524:
|
||||
ldrh r0, [r4, 0xC]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0xC]
|
||||
ldrh r0, [r4, 0x1A]
|
||||
ldrh r1, [r4, 0x14]
|
||||
adds r0, r1
|
||||
strh r0, [r4, 0x14]
|
||||
movs r0, 0x1
|
||||
b _080D7554
|
||||
.align 2, 0
|
||||
_080D7538: .4byte gSpriteTemplate_83D9B40
|
||||
_080D753C: .4byte gSprites
|
||||
_080D7540: .4byte 0x000003ff
|
||||
_080D7544: .4byte 0xfffffc00
|
||||
_080D7548:
|
||||
movs r3, 0x12
|
||||
ldrsh r0, [r4, r3]
|
||||
lsls r0, 3
|
||||
adds r0, r2, r0
|
||||
strh r0, [r4, 0x16]
|
||||
movs r0, 0
|
||||
_080D7554:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80D7470
|
||||
|
||||
thumb_func_start sub_80D755C
|
||||
sub_80D755C: @ 80D755C
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldrh r0, [r4, 0x2E]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x2E]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xC
|
||||
ble _080D7592
|
||||
ldr r3, _080D7598 @ =gTasks
|
||||
movs r0, 0x3C
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r1, 1
|
||||
movs r0, 0x3A
|
||||
ldrsh r2, [r4, r0]
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r3, 0x8
|
||||
adds r1, r3
|
||||
ldrh r0, [r1]
|
||||
subs r0, 0x1
|
||||
strh r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl DestroySprite
|
||||
_080D7592:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080D7598: .4byte gTasks
|
||||
thumb_func_end sub_80D755C
|
||||
|
||||
thumb_func_start sub_80D759C
|
||||
sub_80D759C: @ 80D759C
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
ldr r1, _080D75C0 @ =gTasks
|
||||
adds r5, r0, r1
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0x1
|
||||
beq _080D7618
|
||||
cmp r0, 0x1
|
||||
bgt _080D75C4
|
||||
cmp r0, 0
|
||||
beq _080D75CA
|
||||
b _080D764E
|
||||
.align 2, 0
|
||||
_080D75C0: .4byte gTasks
|
||||
_080D75C4:
|
||||
cmp r0, 0x2
|
||||
beq _080D7640
|
||||
b _080D764E
|
||||
_080D75CA:
|
||||
ldr r0, _080D7614 @ =gAnimBankTarget
|
||||
ldrb r0, [r0]
|
||||
movs r1, 0x1
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
adds r0, 0x20
|
||||
strh r0, [r5, 0x26]
|
||||
strh r0, [r5, 0x24]
|
||||
cmp r0, 0x10
|
||||
ble _080D75F4
|
||||
adds r2, r0, 0
|
||||
_080D75E4:
|
||||
adds r1, r2, 0
|
||||
subs r1, 0x20
|
||||
adds r2, r1, 0
|
||||
lsls r0, r1, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x10
|
||||
bgt _080D75E4
|
||||
strh r1, [r5, 0x24]
|
||||
_080D75F4:
|
||||
ldr r4, _080D7614 @ =gAnimBankTarget
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x2
|
||||
bl GetBattlerSpriteCoord
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5, 0x22]
|
||||
ldrb r0, [r4]
|
||||
bl sub_8079E90
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
subs r0, 0x2
|
||||
strh r0, [r5, 0x20]
|
||||
b _080D7638
|
||||
.align 2, 0
|
||||
_080D7614: .4byte gAnimBankTarget
|
||||
_080D7618:
|
||||
ldrh r0, [r5, 0xA]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0xA]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x1
|
||||
ble _080D764E
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0xA]
|
||||
adds r0, r5, 0
|
||||
adds r1, r2, 0
|
||||
bl sub_80D7654
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080D764E
|
||||
_080D7638:
|
||||
ldrh r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x8]
|
||||
b _080D764E
|
||||
_080D7640:
|
||||
movs r1, 0x1C
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
bne _080D764E
|
||||
adds r0, r2, 0
|
||||
bl DestroyAnimVisualTask
|
||||
_080D764E:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80D759C
|
||||
|
||||
thumb_func_start sub_80D7654
|
||||
sub_80D7654: @ 80D7654
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r5, r1, 24
|
||||
ldr r0, _080D76B0 @ =gBattleAnimSpriteTemplate_83D97D0
|
||||
movs r2, 0x22
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r3, 0x24
|
||||
ldrsh r2, [r4, r3]
|
||||
ldrh r3, [r4, 0x20]
|
||||
lsls r3, 24
|
||||
lsrs r3, 24
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0x40
|
||||
beq _080D7698
|
||||
ldr r3, _080D76B4 @ =gSprites
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r1, r3, 0
|
||||
adds r1, 0x1C
|
||||
adds r1, r0, r1
|
||||
ldr r2, _080D76B8 @ =sub_80D76C4
|
||||
str r2, [r1]
|
||||
adds r0, r3
|
||||
strh r5, [r0, 0x3A]
|
||||
movs r1, 0xA
|
||||
strh r1, [r0, 0x3C]
|
||||
ldrh r0, [r4, 0x1C]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x1C]
|
||||
_080D7698:
|
||||
ldrh r2, [r4, 0x24]
|
||||
movs r0, 0x24
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r3, 0x26
|
||||
ldrsh r0, [r4, r3]
|
||||
cmp r1, r0
|
||||
bge _080D76BC
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x20
|
||||
strh r0, [r4, 0x24]
|
||||
movs r0, 0
|
||||
b _080D76BE
|
||||
.align 2, 0
|
||||
_080D76B0: .4byte gBattleAnimSpriteTemplate_83D97D0
|
||||
_080D76B4: .4byte gSprites
|
||||
_080D76B8: .4byte sub_80D76C4
|
||||
_080D76BC:
|
||||
movs r0, 0x1
|
||||
_080D76BE:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80D7654
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -7,41 +7,6 @@
|
||||
|
||||
@ ice
|
||||
|
||||
thumb_func_start sub_80D76C4
|
||||
sub_80D76C4: @ 80D76C4
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
adds r0, 0x3F
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080D76F8
|
||||
ldr r3, _080D7700 @ =gTasks
|
||||
movs r0, 0x3C
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r1, 1
|
||||
movs r0, 0x3A
|
||||
ldrsh r2, [r4, r0]
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r3, 0x8
|
||||
adds r1, r3
|
||||
ldrh r0, [r1]
|
||||
subs r0, 0x1
|
||||
strh r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl DestroySprite
|
||||
_080D76F8:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080D7700: .4byte gTasks
|
||||
thumb_func_end sub_80D76C4
|
||||
|
||||
thumb_func_start sub_80D7704
|
||||
sub_80D7704: @ 80D7704
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -294,7 +294,6 @@ SECTIONS {
|
||||
src/battle/anim/beta_beat_up.o(.text);
|
||||
src/battle/anim/shock.o(.text);
|
||||
src/battle/anim/current.o(.text);
|
||||
asm/current.o(.text);
|
||||
asm/ice.o(.text);
|
||||
src/battle/anim/fight.o(.text);
|
||||
src/battle/anim/poison.o(.text);
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
#include "battle_anim.h"
|
||||
#include "main.h"
|
||||
#include "rom_8077ABC.h"
|
||||
#include "sound.h"
|
||||
#include "trig.h"
|
||||
#include "constants/battle_constants.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern s16 gBattleAnimArgs[];
|
||||
extern u8 gAnimBankAttacker;
|
||||
@@ -13,6 +15,9 @@ extern u8 gAnimVisualTaskCount;
|
||||
extern const struct SpriteTemplate gSpriteTemplate_83D9938;
|
||||
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9950;
|
||||
extern const struct SpriteTemplate gSpriteTemplate_83D99B8;
|
||||
extern const struct SpriteTemplate gSpriteTemplate_83D9B10;
|
||||
extern const struct SpriteTemplate gSpriteTemplate_83D9B40;
|
||||
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D97D0;
|
||||
extern s8 gUnknown_083D9968[][2];
|
||||
|
||||
static void sub_80D6514(struct Sprite *sprite);
|
||||
@@ -22,6 +27,10 @@ static void sub_80D6AF0(struct Sprite *sprite);
|
||||
static void sub_80D6BB8(u8 taskId);
|
||||
static void sub_80D6D00(struct Sprite *sprite);
|
||||
static void sub_80D6E38(struct Sprite *sprite);
|
||||
static bool8 sub_80D7194(struct Task *task, u8 taskId);
|
||||
static bool8 sub_80D7470(struct Task *task, u8 taskId);
|
||||
static bool8 sub_80D7654(struct Task *task, u8 taskId);
|
||||
static void sub_80D76C4(struct Sprite *sprite);
|
||||
|
||||
|
||||
void sub_80D648C(struct Sprite *sprite)
|
||||
@@ -152,6 +161,72 @@ void sub_80D681C(u8 taskId)
|
||||
gTasks[taskId].func = sub_80D6874;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING // couldn't get the proper tail merging in the "CreateSprite" switch cases.
|
||||
static void sub_80D6874(u8 taskId)
|
||||
{
|
||||
u16 r8;
|
||||
s16 r12;
|
||||
s16 r2;
|
||||
u8 spriteId = 0;
|
||||
u8 r7 = 0;
|
||||
u8 sp = gTasks[taskId].data[2];
|
||||
s16 r4 = gTasks[taskId].data[0];
|
||||
s16 r6 = gTasks[taskId].data[1];
|
||||
|
||||
if (gTasks[taskId].data[2] == 0)
|
||||
{
|
||||
r8 = 0;
|
||||
r2 = 1;
|
||||
r12 = 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
r12 = 16;
|
||||
r8 = 8;
|
||||
r2 = 4;
|
||||
}
|
||||
|
||||
switch (gTasks[taskId].data[10])
|
||||
{
|
||||
case 0:
|
||||
r8 += r2 * 0;
|
||||
spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 1), 2);
|
||||
r7++;
|
||||
break;
|
||||
case 2:
|
||||
r8 += r2;
|
||||
spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 2), 2);
|
||||
r7++;
|
||||
break;
|
||||
case 4:
|
||||
r8 += r2 * 2;
|
||||
spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 3), 2);
|
||||
r7++;
|
||||
break;
|
||||
case 6:
|
||||
r8 += r2 * 3;
|
||||
spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 4), 2);
|
||||
r7++;
|
||||
break;
|
||||
case 8:
|
||||
spriteId = CreateSprite(&gSpriteTemplate_83D9938, r4, r6 + (r12 * 5), 2);
|
||||
r7++;
|
||||
break;
|
||||
case 10:
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (r7)
|
||||
{
|
||||
gSprites[spriteId].oam.tileNum += r8;
|
||||
gSprites[spriteId].data[0] = sp;
|
||||
gSprites[spriteId].callback(&gSprites[spriteId]);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[10]++;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
static void sub_80D6874(u8 taskId)
|
||||
{
|
||||
@@ -365,6 +440,7 @@ _080D6A14: .4byte 0xfffffc00\n\
|
||||
_080D6A18: .4byte gTasks\n\
|
||||
.syntax divided\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_80D6A1C(struct Sprite *sprite)
|
||||
{
|
||||
@@ -626,3 +702,324 @@ void sub_80D6E9C(u8 taskId)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D700C(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch(task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[1] = GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER ? 1 : -1;
|
||||
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[3] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
|
||||
task->data[5] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
|
||||
task->data[4] = (task->data[1] * 128) + 120;
|
||||
break;
|
||||
case 4:
|
||||
task->data[3] = 120 - (task->data[1] * 128);
|
||||
task->data[5] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
|
||||
task->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 2) - (task->data[1] * 32);
|
||||
break;
|
||||
default:
|
||||
if ((gBattleAnimArgs[0] & 1) != 0)
|
||||
{
|
||||
task->data[3] = 256;
|
||||
task->data[4] = -16;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[3] = -16;
|
||||
task->data[4] = 256;
|
||||
}
|
||||
|
||||
if (task->data[1] == 1)
|
||||
{
|
||||
task->data[5] = 80 - gBattleAnimArgs[0] * 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 temp;
|
||||
task->data[5] = gBattleAnimArgs[0] * 10 + 40;
|
||||
temp = task->data[3];
|
||||
task->data[3] = task->data[4];
|
||||
task->data[4] = temp;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (task->data[3] < task->data[4])
|
||||
{
|
||||
task->data[1] = 1;
|
||||
task->data[6] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[1] = -1;
|
||||
task->data[6] = 3;
|
||||
}
|
||||
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[2] > 0)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
if (sub_80D7194(task, taskId) || sub_80D7194(task, taskId))
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (task->data[7] == 0)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_80D7194(struct Task *task, u8 taskId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gSpriteTemplate_83D9B10, task->data[3], task->data[5], 35);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[6] = taskId;
|
||||
gSprites[spriteId].data[7] = 7;
|
||||
task->data[7]++;
|
||||
}
|
||||
|
||||
task->data[6] += task->data[1];
|
||||
if (task->data[6] < 0)
|
||||
task->data[6] = 3;
|
||||
|
||||
if (task->data[6] > 3)
|
||||
task->data[6] = 0;
|
||||
|
||||
task->data[3] += task->data[1] * 16;
|
||||
|
||||
if ((task->data[1] == 1 && task->data[3] >= task->data[4])
|
||||
|| (task->data[1] == -1 && task->data[3] <= task->data[4]))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D7230(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] > 12)
|
||||
{
|
||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D727C(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
|
||||
StartSpriteAffineAnim(sprite, 2);
|
||||
sprite->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (sprite->affineAnimEnded)
|
||||
move_anim_8074EE0(sprite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D72DC(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[6] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
|
||||
task->data[7] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
|
||||
task->data[8] = 4;
|
||||
task->data[10] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
|
||||
task->data[9] = (task->data[10] - task->data[6]) / 5;
|
||||
task->data[4] = 7;
|
||||
task->data[5] = -1;
|
||||
task->data[11] = 12;
|
||||
task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76);
|
||||
task->data[13] = BattleAnimAdjustPanning(63);
|
||||
task->data[14] = task->data[12];
|
||||
task->data[15] = (task->data[13] - task->data[12]) / 3;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 0)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if (sub_80D7470(task, taskId))
|
||||
{
|
||||
if (task->data[2] == 5)
|
||||
task->data[0] = 3;
|
||||
else
|
||||
task->data[0]++;
|
||||
}
|
||||
}
|
||||
|
||||
if (task->data[11])
|
||||
task->data[11]--;
|
||||
break;
|
||||
case 2:
|
||||
if (task->data[11])
|
||||
task->data[11]--;
|
||||
|
||||
if (++task->data[1] > 4)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if (task->data[2] & 1)
|
||||
{
|
||||
task->data[7] = 4;
|
||||
task->data[8] = 68;
|
||||
task->data[4] = 0;
|
||||
task->data[5] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[7] = 68;
|
||||
task->data[8] = 4;
|
||||
task->data[4] = 7;
|
||||
task->data[5] = -1;
|
||||
}
|
||||
|
||||
if (task->data[11])
|
||||
task->data[0] = 4;
|
||||
else
|
||||
task->data[0] = 1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (task->data[3] == 0)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
case 4:
|
||||
if (task->data[11])
|
||||
task->data[11]--;
|
||||
else
|
||||
task->data[0] = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_80D7470(struct Task *task, u8 taskId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gSpriteTemplate_83D9B40, task->data[6], task->data[7], 35);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].oam.tileNum += task->data[4];
|
||||
task->data[4] += task->data[5];
|
||||
if (task->data[4] < 0)
|
||||
task->data[4] = 7;
|
||||
if (task->data[4] > 7)
|
||||
task->data[4] = 0;
|
||||
|
||||
gSprites[spriteId].data[6] = taskId;
|
||||
gSprites[spriteId].data[7] = 3;
|
||||
task->data[3]++;
|
||||
}
|
||||
|
||||
if (task->data[4] == 0 && task->data[5] > 0)
|
||||
{
|
||||
task->data[14] += task->data[15];
|
||||
PlaySE12WithPanning(SE_W085, task->data[14]);
|
||||
}
|
||||
|
||||
if ((task->data[5] < 0 && task->data[7] <= task->data[8])
|
||||
|| (task->data[5] > 0 && task->data[7] >= task->data[8]))
|
||||
{
|
||||
task->data[2]++;
|
||||
task->data[6] += task->data[9];
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[7] += task->data[5] * 8;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D755C(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] > 12)
|
||||
{
|
||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D759C(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[15] = GetBattlerSpriteCoord(gAnimBankTarget, 1) + 32;
|
||||
task->data[14] = task->data[15];
|
||||
while (task->data[14] > 16)
|
||||
{
|
||||
task->data[14] -= 32;
|
||||
}
|
||||
|
||||
task->data[13] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
|
||||
task->data[12] = sub_8079E90(gAnimBankTarget) - 2;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if (sub_80D7654(task, taskId))
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (task->data[10] == 0)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_80D7654(struct Task *task, u8 taskId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D97D0, task->data[13], task->data[14], task->data[12]);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].callback = sub_80D76C4;
|
||||
gSprites[spriteId].data[6] = taskId;
|
||||
gSprites[spriteId].data[7] = 10;
|
||||
task->data[10]++;
|
||||
}
|
||||
|
||||
if (task->data[14] >= task->data[15])
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[14] += 32;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80D76C4(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user