mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-21 20:55:05 -05:00
6344 lines
107 KiB
ArmAsm
6344 lines
107 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start GetBattlerSpriteCoord
|
|
GetBattlerSpriteCoord: @ 8074480
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
cmp r4, 0x4
|
|
bhi _08074500
|
|
lsls r0, r4, 2
|
|
ldr r1, _08074498 @ =_0807449C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08074498: .4byte _0807449C
|
|
.align 2, 0
|
|
_0807449C:
|
|
.4byte _080744B0
|
|
.4byte _080744D8
|
|
.4byte _080744B0
|
|
.4byte _08074500
|
|
.4byte _08074500
|
|
_080744B0:
|
|
ldr r4, _080744D0 @ =gUnknown_83AE01C
|
|
adds r0, r5, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
ldr r1, _080744D4 @ =gBattleTypeFlags
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
ands r1, r2
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
b _08074588
|
|
.align 2, 0
|
|
_080744D0: .4byte gUnknown_83AE01C
|
|
_080744D4: .4byte gBattleTypeFlags
|
|
_080744D8:
|
|
ldr r4, _080744F8 @ =gUnknown_83AE01C
|
|
adds r0, r5, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
ldr r1, _080744FC @ =gBattleTypeFlags
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
ands r1, r2
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x1]
|
|
b _08074588
|
|
.align 2, 0
|
|
_080744F8: .4byte gUnknown_83AE01C
|
|
_080744FC: .4byte gBattleTypeFlags
|
|
_08074500:
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08074538
|
|
ldr r0, _0807452C @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _08074570
|
|
ldr r1, _08074530 @ =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08074534 @ =gEnemyParty
|
|
b _08074556
|
|
.align 2, 0
|
|
_0807452C: .4byte gBattleSpritesDataPtr
|
|
_08074530: .4byte gBattlerPartyIndexes
|
|
_08074534: .4byte gEnemyParty
|
|
_08074538:
|
|
ldr r0, _08074564 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _08074570
|
|
ldr r1, _08074568 @ =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _0807456C @ =gPlayerParty
|
|
_08074556:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
b _08074572
|
|
.align 2, 0
|
|
_08074564: .4byte gBattleSpritesDataPtr
|
|
_08074568: .4byte gBattlerPartyIndexes
|
|
_0807456C: .4byte gPlayerParty
|
|
_08074570:
|
|
ldrh r1, [r1, 0x2]
|
|
_08074572:
|
|
cmp r4, 0x3
|
|
bne _0807457C
|
|
adds r0, r5, 0
|
|
movs r2, 0x1
|
|
b _08074580
|
|
_0807457C:
|
|
adds r0, r5, 0
|
|
movs r2, 0
|
|
_08074580:
|
|
bl sub_80747AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_08074588:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetBattlerSpriteCoord
|
|
|
|
thumb_func_start sub_8074590
|
|
sub_8074590: @ 8074590
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r6, r5, 0
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r7, r4, 0
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08074674
|
|
cmp r4, 0xC9
|
|
bne _08074638
|
|
ldr r0, _080745D8 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 2
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
bne _080745E4
|
|
ldr r1, _080745DC @ =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080745E0 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _080745EA
|
|
.align 2, 0
|
|
_080745D8: .4byte gBattleSpritesDataPtr
|
|
_080745DC: .4byte gBattlerPartyIndexes
|
|
_080745E0: .4byte gPlayerParty
|
|
_080745E4:
|
|
ldr r0, _08074620 @ =gTransformedPersonalities
|
|
adds r0, r1, r0
|
|
ldr r2, [r0]
|
|
_080745EA:
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _08074624
|
|
adds r0, r7, 0
|
|
b _0807462E
|
|
.align 2, 0
|
|
_08074620: .4byte gTransformedPersonalities
|
|
_08074624:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_0807462E:
|
|
ldr r1, _08074634 @ =gUnknown_8235E6C
|
|
lsls r0, 2
|
|
b _0807473C
|
|
.align 2, 0
|
|
_08074634: .4byte gUnknown_8235E6C
|
|
_08074638:
|
|
ldr r0, _0807464C @ =0x00000181
|
|
cmp r4, r0
|
|
bne _08074658
|
|
ldr r0, _08074650 @ =gUnknown_83AE050
|
|
ldr r1, _08074654 @ =gBattleMonForms
|
|
adds r1, r5, r1
|
|
ldrb r1, [r1]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
b _08074740
|
|
.align 2, 0
|
|
_0807464C: .4byte 0x00000181
|
|
_08074650: .4byte gUnknown_83AE050
|
|
_08074654: .4byte gBattleMonForms
|
|
_08074658:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bls _08074668
|
|
ldr r0, _08074664 @ =gUnknown_8235E6C
|
|
b _0807473E
|
|
.align 2, 0
|
|
_08074664: .4byte gUnknown_8235E6C
|
|
_08074668:
|
|
ldr r1, _08074670 @ =gUnknown_8235E6C
|
|
lsls r0, r4, 2
|
|
b _0807473C
|
|
.align 2, 0
|
|
_08074670: .4byte gUnknown_8235E6C
|
|
_08074674:
|
|
cmp r4, 0xC9
|
|
bne _08074704
|
|
ldr r0, _080746A4 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 2
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
bne _080746B0
|
|
ldr r1, _080746A8 @ =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080746AC @ =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _080746B6
|
|
.align 2, 0
|
|
_080746A4: .4byte gBattleSpritesDataPtr
|
|
_080746A8: .4byte gBattlerPartyIndexes
|
|
_080746AC: .4byte gEnemyParty
|
|
_080746B0:
|
|
ldr r0, _080746EC @ =gTransformedPersonalities
|
|
adds r0, r1, r0
|
|
ldr r2, [r0]
|
|
_080746B6:
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _080746F0
|
|
adds r0, r7, 0
|
|
b _080746FA
|
|
.align 2, 0
|
|
_080746EC: .4byte gTransformedPersonalities
|
|
_080746F0:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_080746FA:
|
|
ldr r1, _08074700 @ =gUnknown_82349CC
|
|
lsls r0, 2
|
|
b _0807473C
|
|
.align 2, 0
|
|
_08074700: .4byte gUnknown_82349CC
|
|
_08074704:
|
|
ldr r0, _0807471C @ =0x00000181
|
|
cmp r4, r0
|
|
bne _08074728
|
|
ldr r0, _08074720 @ =gUnknown_83AE03C
|
|
ldr r1, _08074724 @ =gBattleMonForms
|
|
adds r1, r6, r1
|
|
ldrb r1, [r1]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
b _08074740
|
|
.align 2, 0
|
|
_0807471C: .4byte 0x00000181
|
|
_08074720: .4byte gUnknown_83AE03C
|
|
_08074724: .4byte gBattleMonForms
|
|
_08074728:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bls _08074738
|
|
ldr r0, _08074734 @ =gUnknown_82349CC
|
|
b _0807473E
|
|
.align 2, 0
|
|
_08074734: .4byte gUnknown_82349CC
|
|
_08074738:
|
|
ldr r1, _08074748 @ =gUnknown_82349CC
|
|
lsls r0, r7, 2
|
|
_0807473C:
|
|
adds r0, r1
|
|
_0807473E:
|
|
ldrb r0, [r0, 0x1]
|
|
_08074740:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08074748: .4byte gUnknown_82349CC
|
|
thumb_func_end sub_8074590
|
|
|
|
thumb_func_start sub_807474C
|
|
sub_807474C: @ 807474C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r7, r4, 0
|
|
movs r5, 0
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0807479E
|
|
ldr r0, _0807477C @ =0x00000181
|
|
cmp r4, r0
|
|
bne _08074788
|
|
ldr r0, _08074780 @ =gUnknown_83AE04C
|
|
ldr r1, _08074784 @ =gBattleMonForms
|
|
adds r1, r6, r1
|
|
ldrb r1, [r1]
|
|
adds r1, r0
|
|
ldrb r5, [r1]
|
|
b _0807479E
|
|
.align 2, 0
|
|
_0807477C: .4byte 0x00000181
|
|
_08074780: .4byte gUnknown_83AE04C
|
|
_08074784: .4byte gBattleMonForms
|
|
_08074788:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bls _08074798
|
|
ldr r0, _08074794 @ =gEnemyMonElevation
|
|
b _0807479C
|
|
.align 2, 0
|
|
_08074794: .4byte gEnemyMonElevation
|
|
_08074798:
|
|
ldr r0, _080747A8 @ =gEnemyMonElevation
|
|
adds r0, r7, r0
|
|
_0807479C:
|
|
ldrb r5, [r0]
|
|
_0807479E:
|
|
adds r0, r5, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080747A8: .4byte gEnemyMonElevation
|
|
thumb_func_end sub_807474C
|
|
|
|
thumb_func_start sub_80747AC
|
|
sub_80747AC: @ 80747AC
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080747D4
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl sub_8074590
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
b _080747F2
|
|
_080747D4:
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl sub_8074590
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl sub_807474C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, r5, r0
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
_080747F2:
|
|
adds r0, r6, 0
|
|
bl GetBattlerPosition
|
|
ldr r3, _0807483C @ =gUnknown_83AE01C
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
ldr r1, _08074840 @ =gBattleTypeFlags
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
ands r1, r2
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r3
|
|
ldrb r0, [r0, 0x1]
|
|
adds r0, r5
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r7, 0
|
|
beq _08074832
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0807482C
|
|
adds r0, r4, 0
|
|
adds r0, 0x8
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
_0807482C:
|
|
cmp r4, 0x68
|
|
bls _08074832
|
|
movs r4, 0x68
|
|
_08074832:
|
|
adds r0, r4, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0807483C: .4byte gUnknown_83AE01C
|
|
_08074840: .4byte gBattleTypeFlags
|
|
thumb_func_end sub_80747AC
|
|
|
|
thumb_func_start sub_8074844
|
|
sub_8074844: @ 8074844
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 24
|
|
lsrs r3, r1, 24
|
|
movs r0, 0xFD
|
|
lsls r0, 24
|
|
adds r1, r0
|
|
lsrs r1, 24
|
|
cmp r1, 0x1
|
|
bhi _08074896
|
|
ldr r0, _08074874 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r2, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _0807487C
|
|
ldr r1, _08074878 @ =gUnknown_2037F1C
|
|
lsls r0, r2, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
b _0807487E
|
|
.align 2, 0
|
|
_08074874: .4byte gBattleSpritesDataPtr
|
|
_08074878: .4byte gUnknown_2037F1C
|
|
_0807487C:
|
|
ldrh r1, [r1, 0x2]
|
|
_0807487E:
|
|
cmp r3, 0x3
|
|
bne _0807488C
|
|
adds r0, r2, 0
|
|
movs r2, 0x1
|
|
bl sub_80747AC
|
|
b _0807489E
|
|
_0807488C:
|
|
adds r0, r2, 0
|
|
movs r2, 0
|
|
bl sub_80747AC
|
|
b _0807489E
|
|
_08074896:
|
|
adds r0, r2, 0
|
|
adds r1, r3, 0
|
|
bl GetBattlerSpriteCoord
|
|
_0807489E:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8074844
|
|
|
|
thumb_func_start GetBattlerSpriteDefault_Y
|
|
GetBattlerSpriteDefault_Y: @ 80748A8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x4
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetBattlerSpriteDefault_Y
|
|
|
|
thumb_func_start GetSubstituteSpriteDefault_Y
|
|
GetSubstituteSpriteDefault_Y: @ 80748BC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080748E0
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r1, 0x80
|
|
lsls r1, 13
|
|
b _080748F0
|
|
_080748E0:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r1, 0x88
|
|
lsls r1, 13
|
|
_080748F0:
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetSubstituteSpriteDefault_Y
|
|
|
|
thumb_func_start GetGhostSpriteDefault_Y
|
|
GetGhostSpriteDefault_Y: @ 8074900
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0807491A
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
b _0807491E
|
|
_0807491A:
|
|
adds r0, r4, 0
|
|
movs r1, 0x4
|
|
_0807491E:
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetGhostSpriteDefault_Y
|
|
|
|
thumb_func_start sub_807492C
|
|
sub_807492C: @ 807492C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08074978
|
|
ldr r0, _0807496C @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080749B0
|
|
ldr r1, _08074970 @ =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08074974 @ =gEnemyParty
|
|
b _08074996
|
|
.align 2, 0
|
|
_0807496C: .4byte gBattleSpritesDataPtr
|
|
_08074970: .4byte gBattlerPartyIndexes
|
|
_08074974: .4byte gEnemyParty
|
|
_08074978:
|
|
ldr r0, _080749A4 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080749B0
|
|
ldr r1, _080749A8 @ =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080749AC @ =gPlayerParty
|
|
_08074996:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
b _080749B2
|
|
.align 2, 0
|
|
_080749A4: .4byte gBattleSpritesDataPtr
|
|
_080749A8: .4byte gBattlerPartyIndexes
|
|
_080749AC: .4byte gPlayerParty
|
|
_080749B0:
|
|
ldrh r4, [r1, 0x2]
|
|
_080749B2:
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080749CC
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_807474C
|
|
subs r0, r6, r0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_080749CC:
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_807492C
|
|
|
|
thumb_func_start GetAnimBankSpriteId
|
|
GetAnimBankSpriteId: @ 80749D4
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
cmp r0, 0
|
|
bne _080749FC
|
|
ldr r4, _080749F4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
bl IsBattlerSpritePresent
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08074A4A
|
|
ldr r1, _080749F8 @ =gBattlerSpriteIds
|
|
ldrb r0, [r4]
|
|
b _08074A5A
|
|
.align 2, 0
|
|
_080749F4: .4byte gBattleAnimAttacker
|
|
_080749F8: .4byte gBattlerSpriteIds
|
|
_080749FC:
|
|
cmp r0, 0x1
|
|
bne _08074A1C
|
|
ldr r4, _08074A14 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
bl IsBattlerSpritePresent
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08074A4A
|
|
ldr r1, _08074A18 @ =gBattlerSpriteIds
|
|
ldrb r0, [r4]
|
|
b _08074A5A
|
|
.align 2, 0
|
|
_08074A14: .4byte gBattleAnimTarget
|
|
_08074A18: .4byte gBattlerSpriteIds
|
|
_08074A1C:
|
|
cmp r1, 0x2
|
|
bne _08074A38
|
|
ldr r5, _08074A34 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r4, 0x2
|
|
eors r0, r4
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08074A4A
|
|
b _08074A54
|
|
.align 2, 0
|
|
_08074A34: .4byte gBattleAnimAttacker
|
|
_08074A38:
|
|
ldr r5, _08074A50 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r4, 0x2
|
|
eors r0, r4
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08074A54
|
|
_08074A4A:
|
|
movs r0, 0xFF
|
|
b _08074A5E
|
|
.align 2, 0
|
|
_08074A50: .4byte gBattleAnimTarget
|
|
_08074A54:
|
|
ldr r1, _08074A64 @ =gBattlerSpriteIds
|
|
ldrb r0, [r5]
|
|
eors r0, r4
|
|
_08074A5A:
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
_08074A5E:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08074A64: .4byte gBattlerSpriteIds
|
|
thumb_func_end GetAnimBankSpriteId
|
|
|
|
thumb_func_start StoreSpriteCallbackInData6
|
|
StoreSpriteCallbackInData6: @ 8074A68
|
|
strh r1, [r0, 0x3A]
|
|
lsrs r1, 16
|
|
strh r1, [r0, 0x3C]
|
|
bx lr
|
|
thumb_func_end StoreSpriteCallbackInData6
|
|
|
|
thumb_func_start SetCallbackToStoredInData
|
|
SetCallbackToStoredInData: @ 8074A70
|
|
ldrh r2, [r0, 0x3A]
|
|
movs r3, 0x3C
|
|
ldrsh r1, [r0, r3]
|
|
lsls r1, 16
|
|
orrs r2, r1
|
|
str r2, [r0, 0x1C]
|
|
bx lr
|
|
thumb_func_end SetCallbackToStoredInData
|
|
|
|
thumb_func_start sub_8074A80
|
|
sub_8074A80: @ 8074A80
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08074AD4
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _08074AC0
|
|
ldr r2, _08074ABC @ =0xffffff00
|
|
b _08074AC8
|
|
.align 2, 0
|
|
_08074ABC: .4byte 0xffffff00
|
|
_08074AC0:
|
|
cmp r0, 0
|
|
bge _08074ACC
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_08074AC8:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_08074ACC:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _08074ADA
|
|
_08074AD4:
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074ADA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074A80
|
|
|
|
thumb_func_start sub_8074AE0
|
|
sub_8074AE0: @ 8074AE0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08074B50
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
ldrh r1, [r4, 0x38]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
ldrh r2, [r4, 0x30]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
ldrh r1, [r4, 0x38]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
ldrh r2, [r4, 0x30]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x36]
|
|
ldrh r2, [r4, 0x38]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _08074B3C
|
|
ldr r2, _08074B38 @ =0xffffff00
|
|
b _08074B44
|
|
.align 2, 0
|
|
_08074B38: .4byte 0xffffff00
|
|
_08074B3C:
|
|
cmp r0, 0
|
|
bge _08074B48
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_08074B44:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_08074B48:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _08074B56
|
|
_08074B50:
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074B56:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074AE0
|
|
|
|
thumb_func_start sub_8074B5C
|
|
sub_8074B5C: @ 8074B5C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08074BD8
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x38]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _08074BA4
|
|
ldr r2, _08074BA0 @ =0xffffff00
|
|
b _08074BAC
|
|
.align 2, 0
|
|
_08074BA0: .4byte 0xffffff00
|
|
_08074BA4:
|
|
cmp r0, 0
|
|
bge _08074BB0
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_08074BAC:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_08074BB0:
|
|
ldrh r1, [r4, 0x36]
|
|
movs r2, 0x36
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xFF
|
|
ble _08074BC4
|
|
ldr r2, _08074BC0 @ =0xffffff00
|
|
b _08074BCC
|
|
.align 2, 0
|
|
_08074BC0: .4byte 0xffffff00
|
|
_08074BC4:
|
|
cmp r0, 0
|
|
bge _08074BD0
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_08074BCC:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x36]
|
|
_08074BD0:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _08074BDE
|
|
_08074BD8:
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074BDE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074B5C
|
|
|
|
thumb_func_start sub_8074BE4
|
|
sub_8074BE4: @ 8074BE4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08074C38
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x36
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _08074C24
|
|
ldr r2, _08074C20 @ =0xffffff00
|
|
b _08074C2C
|
|
.align 2, 0
|
|
_08074C20: .4byte 0xffffff00
|
|
_08074C24:
|
|
cmp r0, 0
|
|
bge _08074C30
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_08074C2C:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_08074C30:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _08074C3E
|
|
_08074C38:
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074C3E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074BE4
|
|
|
|
thumb_func_start sub_8074C44
|
|
sub_8074C44: @ 8074C44
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
ble _08074C58
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
b _08074C5E
|
|
_08074C58:
|
|
adds r0, r1, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074C5E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074C44
|
|
|
|
thumb_func_start sub_8074C64
|
|
sub_8074C64: @ 8074C64
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8074C80
|
|
ldr r1, _08074C7C @ =sub_8074CD0
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08074C7C: .4byte sub_8074CD0
|
|
thumb_func_end sub_8074C64
|
|
|
|
thumb_func_start sub_8074C80
|
|
sub_8074C80: @ 8074C80
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x30
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
ble _08074C96
|
|
ldrh r0, [r4, 0x2E]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x2E]
|
|
_08074C96:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
subs r0, r1
|
|
ldrh r5, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
cmp r0, 0
|
|
bge _08074CB0
|
|
negs r0, r0
|
|
_08074CB0:
|
|
strh r0, [r4, 0x2E]
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
subs r0, r1
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x32]
|
|
strh r5, [r4, 0x30]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074C80
|
|
|
|
thumb_func_start sub_8074CD0
|
|
sub_8074CD0: @ 8074CD0
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
ble _08074CF4
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
ldrh r0, [r1, 0x30]
|
|
ldrh r2, [r1, 0x24]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x24]
|
|
ldrh r0, [r1, 0x32]
|
|
ldrh r3, [r1, 0x26]
|
|
adds r0, r3
|
|
strh r0, [r1, 0x26]
|
|
b _08074CFA
|
|
_08074CF4:
|
|
adds r0, r1, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074CFA:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074CD0
|
|
|
|
thumb_func_start sub_8074D00
|
|
sub_8074D00: @ 8074D00
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
ble _08074D30
|
|
subs r0, r1, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r1, [r2, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x34]
|
|
ldrh r1, [r2, 0x32]
|
|
ldrh r3, [r2, 0x36]
|
|
adds r1, r3
|
|
strh r1, [r2, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r2, 0x24]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r2, 0x26]
|
|
b _08074D36
|
|
_08074D30:
|
|
adds r0, r2, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074D36:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074D00
|
|
|
|
thumb_func_start sub_8074D3C
|
|
sub_8074D3C: @ 8074D3C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _08074D6C
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldrh r1, [r4, 0x32]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r1, r2
|
|
strh r1, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r4, 0x26]
|
|
b _08074D72
|
|
_08074D6C:
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074D72:
|
|
adds r0, r4, 0
|
|
bl UpdateMonIconFrame
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074D3C
|
|
|
|
thumb_func_start sub_8074D80
|
|
sub_8074D80: @ 8074D80
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldr r5, _08074DBC @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _08074DC0 @ =sub_8074C64
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08074DBC: .4byte gBattleAnimTarget
|
|
_08074DC0: .4byte sub_8074C64
|
|
thumb_func_end sub_8074D80
|
|
|
|
thumb_func_start TranslateMonSpriteLinear
|
|
TranslateMonSpriteLinear: @ 8074DC4
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0
|
|
ble _08074E08
|
|
subs r0, r1, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
ldr r2, _08074E04 @ =gSprites
|
|
movs r4, 0x34
|
|
ldrsh r1, [r3, r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x30]
|
|
ldrh r4, [r0, 0x24]
|
|
adds r1, r4
|
|
strh r1, [r0, 0x24]
|
|
movs r0, 0x34
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x32]
|
|
ldrh r2, [r0, 0x26]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x26]
|
|
b _08074E0E
|
|
.align 2, 0
|
|
_08074E04: .4byte gSprites
|
|
_08074E08:
|
|
adds r0, r3, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074E0E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end TranslateMonSpriteLinear
|
|
|
|
thumb_func_start TranslateMonSpriteLinearFixedPoint
|
|
TranslateMonSpriteLinearFixedPoint: @ 8074E14
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _08074E64
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r1, [r4, 0x30]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x34]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
ldr r3, _08074E60 @ =gSprites
|
|
movs r0, 0x38
|
|
ldrsh r2, [r4, r0]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r0, 0x24]
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r1, 0x26]
|
|
b _08074E6A
|
|
.align 2, 0
|
|
_08074E60: .4byte gSprites
|
|
_08074E64:
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074E6A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end TranslateMonSpriteLinearFixedPoint
|
|
|
|
thumb_func_start sub_8074E70
|
|
sub_8074E70: @ 8074E70
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _08074ED2
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r1, [r4, 0x32]
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x32]
|
|
ldrh r1, [r4, 0x36]
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x36]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl __modsi3
|
|
cmp r0, 0
|
|
bne _08074ED8
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08074ED8
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
ldrb r2, [r3]
|
|
lsls r0, r2, 29
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
b _08074ED8
|
|
_08074ED2:
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074ED8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074E70
|
|
|
|
thumb_func_start move_anim_8074EE0
|
|
move_anim_8074EE0: @ 8074EE0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end move_anim_8074EE0
|
|
|
|
thumb_func_start sub_8074EF4
|
|
sub_8074EF4: @ 8074EF4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldr r5, _08074F30 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _08074F34 @ =sub_8074C64
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08074F30: .4byte gBattleAnimAttacker
|
|
_08074F34: .4byte sub_8074C64
|
|
thumb_func_end sub_8074EF4
|
|
|
|
thumb_func_start sub_8074F38
|
|
sub_8074F38: @ 8074F38
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x38]
|
|
bl ResetPaletteStructByUid
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074F38
|
|
|
|
thumb_func_start sub_8074F50
|
|
sub_8074F50: @ 8074F50
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08074F66
|
|
adds r0, r2, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074F66:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074F50
|
|
|
|
thumb_func_start sub_8074F6C
|
|
sub_8074F6C: @ 8074F6C
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08074F82
|
|
adds r0, r2, 0
|
|
bl SetCallbackToStoredInData
|
|
_08074F82:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074F6C
|
|
|
|
thumb_func_start sub_8074F88
|
|
sub_8074F88: @ 8074F88
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074F88
|
|
|
|
thumb_func_start sub_8074FA8
|
|
sub_8074FA8: @ 8074FA8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074FA8
|
|
|
|
thumb_func_start sub_8074FCC
|
|
sub_8074FCC: @ 8074FCC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _08074FF4 @ =gBattleAnimAttacker
|
|
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]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08074FF4: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_8074FCC
|
|
|
|
thumb_func_start sub_8074FF8
|
|
sub_8074FF8: @ 8074FF8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r4, r0, 0
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
mov r8, r5
|
|
ldr r7, _08075030 @ =gBattleAnimAttacker
|
|
ldrb r0, [r7]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _08075034 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r6, r0
|
|
bhi _08075044
|
|
cmp r6, r0
|
|
bcs _08075038
|
|
lsls r0, r5, 16
|
|
b _08075054
|
|
.align 2, 0
|
|
_08075030: .4byte gBattleAnimAttacker
|
|
_08075034: .4byte gBattleAnimTarget
|
|
_08075038:
|
|
ldrb r0, [r7]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075050
|
|
_08075044:
|
|
ldrh r1, [r4, 0x20]
|
|
lsls r0, r5, 16
|
|
asrs r0, 16
|
|
subs r1, r0
|
|
strh r1, [r4, 0x20]
|
|
b _0807505C
|
|
_08075050:
|
|
mov r1, r8
|
|
lsls r0, r1, 16
|
|
_08075054:
|
|
asrs r0, 16
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
_0807505C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8074FF8
|
|
|
|
thumb_func_start sub_8075068
|
|
sub_8075068: @ 8075068
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
movs r5, 0
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x80
|
|
lsls r0, 8
|
|
bl __divsi3
|
|
strh r0, [r4, 0x3A]
|
|
strh r5, [r4, 0x3C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075068
|
|
|
|
thumb_func_start AnimateBallThrow
|
|
AnimateBallThrow: @ 8075094
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080750C0
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r1, [r4, 0x3C]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x3C]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
movs r0, 0
|
|
b _080750C2
|
|
_080750C0:
|
|
movs r0, 0x1
|
|
_080750C2:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end AnimateBallThrow
|
|
|
|
thumb_func_start sub_80750C8
|
|
sub_80750C8: @ 80750C8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080750F4
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r1, [r4, 0x3C]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x3C]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0
|
|
b _080750F6
|
|
_080750F4:
|
|
movs r0, 0x1
|
|
_080750F6:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80750C8
|
|
|
|
thumb_func_start SetSpritePrimaryCoordsFromSecondaryCoords
|
|
SetSpritePrimaryCoordsFromSecondaryCoords: @ 80750FC
|
|
ldrh r1, [r0, 0x24]
|
|
ldrh r2, [r0, 0x20]
|
|
adds r1, r2
|
|
movs r2, 0
|
|
strh r1, [r0, 0x20]
|
|
ldrh r1, [r0, 0x26]
|
|
ldrh r3, [r0, 0x22]
|
|
adds r1, r3
|
|
strh r1, [r0, 0x22]
|
|
strh r2, [r0, 0x24]
|
|
strh r2, [r0, 0x26]
|
|
bx lr
|
|
thumb_func_end SetSpritePrimaryCoordsFromSecondaryCoords
|
|
|
|
thumb_func_start sub_8075114
|
|
sub_8075114: @ 8075114
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
bne _0807513C
|
|
ldr r4, _08075158 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
_0807513C:
|
|
ldr r4, _0807515C @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
ldrsh r1, [r4, r0]
|
|
adds r0, r5, 0
|
|
bl sub_8074FF8
|
|
ldrh r0, [r4, 0x2]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075158: .4byte gBattleAnimTarget
|
|
_0807515C: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_8075114
|
|
|
|
thumb_func_start sub_8075160
|
|
sub_8075160: @ 8075160
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
bne _08075184
|
|
ldr r4, _08075180 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
b _08075198
|
|
.align 2, 0
|
|
_08075180: .4byte gBattleAnimAttacker
|
|
_08075184:
|
|
ldr r4, _080751BC @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
_08075198:
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r4, _080751C0 @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
ldrsh r1, [r4, r0]
|
|
adds r0, r5, 0
|
|
bl sub_8074FF8
|
|
ldrh r0, [r4, 0x2]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080751BC: .4byte gBattleAnimAttacker
|
|
_080751C0: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_8075160
|
|
|
|
thumb_func_start GetBattlerSide
|
|
GetBattlerSide: @ 80751C4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080751D4 @ =gBattlerPositions
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
bx lr
|
|
.align 2, 0
|
|
_080751D4: .4byte gBattlerPositions
|
|
thumb_func_end GetBattlerSide
|
|
|
|
thumb_func_start GetBattlerPosition
|
|
GetBattlerPosition: @ 80751D8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080751E4 @ =gBattlerPositions
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_080751E4: .4byte gBattlerPositions
|
|
thumb_func_end GetBattlerPosition
|
|
|
|
thumb_func_start GetBattlerAtPosition
|
|
GetBattlerAtPosition: @ 80751E8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
movs r1, 0
|
|
ldr r0, _0807521C @ =gBattlersCount
|
|
ldrb r2, [r0]
|
|
cmp r1, r2
|
|
bcs _08075212
|
|
ldr r4, _08075220 @ =gBattlerPositions
|
|
ldrb r0, [r4]
|
|
cmp r0, r3
|
|
beq _08075212
|
|
_08075200:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, r2
|
|
bcs _08075212
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, r3
|
|
bne _08075200
|
|
_08075212:
|
|
adds r0, r1, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0807521C: .4byte gBattlersCount
|
|
_08075220: .4byte gBattlerPositions
|
|
thumb_func_end GetBattlerAtPosition
|
|
|
|
thumb_func_start IsBattlerSpritePresent
|
|
IsBattlerSpritePresent: @ 8075224
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
ldr r0, _08075254 @ =gBattlerPositions
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xFF
|
|
beq _08075288
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075260
|
|
ldr r1, _08075258 @ =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _0807525C @ =gEnemyParty
|
|
b _0807526E
|
|
.align 2, 0
|
|
_08075254: .4byte gBattlerPositions
|
|
_08075258: .4byte gBattlerPartyIndexes
|
|
_0807525C: .4byte gEnemyParty
|
|
_08075260:
|
|
ldr r1, _08075280 @ =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08075284 @ =gPlayerParty
|
|
_0807526E:
|
|
adds r0, r1
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08075288
|
|
movs r0, 0x1
|
|
b _0807528A
|
|
.align 2, 0
|
|
_08075280: .4byte gBattlerPartyIndexes
|
|
_08075284: .4byte gPlayerParty
|
|
_08075288:
|
|
movs r0, 0
|
|
_0807528A:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsBattlerSpritePresent
|
|
|
|
thumb_func_start IsDoubleBattle
|
|
IsDoubleBattle: @ 8075290
|
|
ldr r0, _0807529C @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
bx lr
|
|
.align 2, 0
|
|
_0807529C: .4byte gBattleTypeFlags
|
|
thumb_func_end IsDoubleBattle
|
|
|
|
thumb_func_start sub_80752A0
|
|
sub_80752A0: @ 80752A0
|
|
ldr r1, _080752C0 @ =gUnknown_2022BB8
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
ldr r1, _080752C4 @ =gUnknown_2022BBC
|
|
ldr r1, [r1]
|
|
str r1, [r0, 0x4]
|
|
movs r2, 0
|
|
movs r1, 0x8
|
|
strb r1, [r0, 0x8]
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x9]
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
strh r1, [r0, 0xA]
|
|
strh r2, [r0, 0xC]
|
|
bx lr
|
|
.align 2, 0
|
|
_080752C0: .4byte gUnknown_2022BB8
|
|
_080752C4: .4byte gUnknown_2022BBC
|
|
thumb_func_end sub_80752A0
|
|
|
|
thumb_func_start sub_80752C8
|
|
sub_80752C8: @ 80752C8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
cmp r1, 0x1
|
|
bne _080752D6
|
|
bl sub_80752A0
|
|
b _080752F4
|
|
_080752D6:
|
|
ldr r0, _080752F8 @ =gUnknown_2022BB8
|
|
ldr r0, [r0]
|
|
str r0, [r2]
|
|
ldr r0, _080752FC @ =gUnknown_2022BBC
|
|
ldr r0, [r0]
|
|
str r0, [r2, 0x4]
|
|
movs r1, 0
|
|
movs r0, 0x9
|
|
strb r0, [r2, 0x8]
|
|
movs r0, 0x2
|
|
strb r0, [r2, 0x9]
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r2, 0xA]
|
|
strh r1, [r2, 0xC]
|
|
_080752F4:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080752F8: .4byte gUnknown_2022BB8
|
|
_080752FC: .4byte gUnknown_2022BBC
|
|
thumb_func_end sub_80752C8
|
|
|
|
thumb_func_start sub_8075300
|
|
sub_8075300: @ 8075300
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08075334 @ =gUnknown_2022BB8
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, _08075338 @ =gUnknown_2022BBC
|
|
ldr r0, [r0]
|
|
str r0, [r4, 0x4]
|
|
ldr r0, _0807533C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x1
|
|
bne _08075340
|
|
movs r0, 0
|
|
movs r1, 0x8
|
|
strb r1, [r4, 0x8]
|
|
strb r2, [r4, 0x9]
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
strh r1, [r4, 0xA]
|
|
strh r0, [r4, 0xC]
|
|
b _08075352
|
|
.align 2, 0
|
|
_08075334: .4byte gUnknown_2022BB8
|
|
_08075338: .4byte gUnknown_2022BBC
|
|
_0807533C: .4byte gBattleAnimAttacker
|
|
_08075340:
|
|
movs r1, 0
|
|
movs r0, 0x9
|
|
strb r0, [r4, 0x8]
|
|
movs r0, 0x2
|
|
strb r0, [r4, 0x9]
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r4, 0xA]
|
|
strh r1, [r4, 0xC]
|
|
_08075352:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075300
|
|
|
|
thumb_func_start sub_8075358
|
|
sub_8075358: @ 8075358
|
|
push {r4,lr}
|
|
sub sp, 0x20
|
|
adds r4, r0, 0
|
|
add r0, sp, 0xC
|
|
adds r1, r4, 0
|
|
bl sub_80752C8
|
|
movs r0, 0
|
|
str r0, [sp, 0x1C]
|
|
add r0, sp, 0x1C
|
|
ldr r1, [sp, 0xC]
|
|
ldr r2, _080753B0 @ =0x05000800
|
|
bl CpuSet
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r1, [sp, 0xC]
|
|
movs r2, 0x80
|
|
lsls r2, 6
|
|
add r0, sp, 0xC
|
|
ldrh r3, [r0, 0xA]
|
|
adds r0, r4, 0
|
|
bl LoadBgTiles
|
|
movs r0, 0x20
|
|
str r0, [sp]
|
|
movs r0, 0x40
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x11
|
|
str r0, [sp, 0x8]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl FillBgTilemapBufferRect
|
|
adds r0, r4, 0
|
|
bl CopyBgTilemapBufferToVram
|
|
add sp, 0x20
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080753B0: .4byte 0x05000800
|
|
thumb_func_end sub_8075358
|
|
|
|
thumb_func_start sub_80753B4
|
|
sub_80753B4: @ 80753B4
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
mov r8, r1
|
|
adds r6, r2, 0
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r4, _080753FC @ =gUnknown_2022BB8
|
|
ldr r1, [r4]
|
|
ldr r2, _08075400 @ =0x05000800
|
|
mov r0, sp
|
|
bl CpuSet
|
|
ldr r1, [r4]
|
|
mov r0, r8
|
|
bl LZDecompressWram
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r1, [r4]
|
|
movs r2, 0x80
|
|
lsls r2, 6
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
adds r0, r5, 0
|
|
adds r3, r6, 0
|
|
bl LoadBgTiles
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080753FC: .4byte gUnknown_2022BB8
|
|
_08075400: .4byte 0x05000800
|
|
thumb_func_end sub_80753B4
|
|
|
|
thumb_func_start sub_8075404
|
|
sub_8075404: @ 8075404
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x20
|
|
str r0, [sp]
|
|
movs r0, 0x40
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x11
|
|
str r0, [sp, 0x8]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl FillBgTilemapBufferRect
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl CopyToBgTilemapBuffer
|
|
add sp, 0xC
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075404
|
|
|
|
thumb_func_start sub_807543C
|
|
sub_807543C: @ 807543C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8075404
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl CopyBgTilemapBufferToVram
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807543C
|
|
|
|
thumb_func_start sub_8075454
|
|
sub_8075454: @ 8075454
|
|
movs r0, 0x2
|
|
bx lr
|
|
thumb_func_end sub_8075454
|
|
|
|
thumb_func_start sub_8075458
|
|
sub_8075458: @ 8075458
|
|
push {lr}
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08075476
|
|
movs r0, 0x3
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x3
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
b _0807548A
|
|
_08075476:
|
|
movs r0, 0x3
|
|
movs r1, 0
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x3
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_0807548A:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075458
|
|
|
|
thumb_func_start sub_8075490
|
|
sub_8075490: @ 8075490
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl InitSpriteDataForLinearTranslation
|
|
ldr r1, _080754B4 @ =sub_8074D3C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080754B4: .4byte sub_8074D3C
|
|
thumb_func_end sub_8075490
|
|
|
|
thumb_func_start InitSpriteDataForLinearTranslation
|
|
InitSpriteDataForLinearTranslation: @ 80754B8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x32]
|
|
ldrh r1, [r5, 0x30]
|
|
subs r0, r1
|
|
ldrh r4, [r5, 0x36]
|
|
ldrh r1, [r5, 0x34]
|
|
subs r4, r1
|
|
lsls r4, 24
|
|
lsrs r4, 16
|
|
lsls r0, 24
|
|
asrs r0, 16
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r5, r2]
|
|
bl __divsi3
|
|
movs r6, 0
|
|
strh r0, [r5, 0x30]
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r5, r0]
|
|
adds r0, r4, 0
|
|
bl __divsi3
|
|
strh r0, [r5, 0x32]
|
|
strh r6, [r5, 0x36]
|
|
strh r6, [r5, 0x34]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end InitSpriteDataForLinearTranslation
|
|
|
|
thumb_func_start obj_translate_based_on_private_1_2_3_4
|
|
obj_translate_based_on_private_1_2_3_4: @ 80754F8
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r7, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r7, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r7, r2]
|
|
subs r1, r0
|
|
movs r3, 0x36
|
|
ldrsh r2, [r7, r3]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r7, r3]
|
|
subs r2, r0
|
|
lsrs r0, r1, 31
|
|
mov r8, r0
|
|
lsrs r3, r2, 31
|
|
mov r9, r3
|
|
cmp r1, 0
|
|
bge _08075524
|
|
negs r1, r1
|
|
_08075524:
|
|
lsls r0, r1, 24
|
|
lsrs r6, r0, 16
|
|
adds r0, r2, 0
|
|
cmp r0, 0
|
|
bge _08075530
|
|
negs r0, r0
|
|
_08075530:
|
|
lsls r0, 24
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x2E
|
|
ldrsh r4, [r7, r0]
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
mov r2, r8
|
|
cmp r2, 0
|
|
beq _0807555C
|
|
movs r0, 0x1
|
|
orrs r6, r0
|
|
b _08075560
|
|
_0807555C:
|
|
ldr r0, _0807556C @ =0x0000fffe
|
|
ands r6, r0
|
|
_08075560:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _08075570
|
|
movs r0, 0x1
|
|
orrs r5, r0
|
|
b _08075574
|
|
.align 2, 0
|
|
_0807556C: .4byte 0x0000fffe
|
|
_08075570:
|
|
ldr r0, _0807558C @ =0x0000fffe
|
|
ands r5, r0
|
|
_08075574:
|
|
movs r0, 0
|
|
strh r6, [r7, 0x30]
|
|
strh r5, [r7, 0x32]
|
|
strh r0, [r7, 0x36]
|
|
strh r0, [r7, 0x34]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807558C: .4byte 0x0000fffe
|
|
thumb_func_end obj_translate_based_on_private_1_2_3_4
|
|
|
|
thumb_func_start StartAnimLinearTranslation
|
|
StartAnimLinearTranslation: @ 8075590
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r1, _080755B4 @ =sub_807563C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080755B4: .4byte sub_807563C
|
|
thumb_func_end StartAnimLinearTranslation
|
|
|
|
thumb_func_start sub_80755B8
|
|
sub_80755B8: @ 80755B8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r1, _080755DC @ =sub_8075658
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080755DC: .4byte sub_8075658
|
|
thumb_func_end sub_80755B8
|
|
|
|
thumb_func_start sub_80755E0
|
|
sub_80755E0: @ 80755E0
|
|
push {r4-r6,lr}
|
|
adds r2, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
bne _080755F0
|
|
movs r0, 0x1
|
|
b _08075634
|
|
_080755F0:
|
|
ldrh r1, [r2, 0x30]
|
|
ldrh r4, [r2, 0x32]
|
|
ldrh r6, [r2, 0x34]
|
|
ldrh r5, [r2, 0x36]
|
|
adds r0, r6, r1
|
|
lsls r3, r0, 16
|
|
lsrs r6, r3, 16
|
|
adds r0, r5, r4
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _08075612
|
|
lsrs r0, r3, 24
|
|
negs r0, r0
|
|
b _08075614
|
|
_08075612:
|
|
lsrs r0, r3, 24
|
|
_08075614:
|
|
strh r0, [r2, 0x24]
|
|
movs r0, 0x1
|
|
ands r4, r0
|
|
cmp r4, 0
|
|
beq _08075624
|
|
lsrs r0, r5, 8
|
|
negs r0, r0
|
|
b _08075626
|
|
_08075624:
|
|
lsrs r0, r5, 8
|
|
_08075626:
|
|
strh r0, [r2, 0x26]
|
|
strh r6, [r2, 0x34]
|
|
strh r5, [r2, 0x36]
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
movs r0, 0
|
|
_08075634:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80755E0
|
|
|
|
thumb_func_start sub_807563C
|
|
sub_807563C: @ 807563C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075650
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08075650:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807563C
|
|
|
|
thumb_func_start sub_8075658
|
|
sub_8075658: @ 8075658
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_801236C
|
|
adds r0, r4, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075672
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_08075672:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075658
|
|
|
|
thumb_func_start sub_8075678
|
|
sub_8075678: @ 8075678
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, r1, r0
|
|
cmp r0, 0
|
|
bge _0807568C
|
|
negs r0, r0
|
|
_0807568C:
|
|
lsls r0, 8
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075678
|
|
|
|
thumb_func_start sub_80756A4
|
|
sub_80756A4: @ 80756A4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl sub_8075678
|
|
ldr r1, _080756C8 @ =sub_807563C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080756C8: .4byte sub_807563C
|
|
thumb_func_end sub_80756A4
|
|
|
|
thumb_func_start sub_80756CC
|
|
sub_80756CC: @ 80756CC
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r7, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r7, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r7, r2]
|
|
subs r1, r0
|
|
movs r3, 0x36
|
|
ldrsh r2, [r7, r3]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r7, r3]
|
|
subs r2, r0
|
|
lsrs r0, r1, 31
|
|
mov r8, r0
|
|
lsrs r3, r2, 31
|
|
mov r9, r3
|
|
cmp r1, 0
|
|
bge _080756F8
|
|
negs r1, r1
|
|
_080756F8:
|
|
lsls r0, r1, 20
|
|
lsrs r6, r0, 16
|
|
adds r0, r2, 0
|
|
cmp r0, 0
|
|
bge _08075704
|
|
negs r0, r0
|
|
_08075704:
|
|
lsls r0, 20
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x2E
|
|
ldrsh r4, [r7, r0]
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
mov r2, r8
|
|
cmp r2, 0
|
|
beq _08075730
|
|
movs r0, 0x1
|
|
orrs r6, r0
|
|
b _08075734
|
|
_08075730:
|
|
ldr r0, _08075740 @ =0x0000fffe
|
|
ands r6, r0
|
|
_08075734:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _08075744
|
|
movs r0, 0x1
|
|
orrs r5, r0
|
|
b _08075748
|
|
.align 2, 0
|
|
_08075740: .4byte 0x0000fffe
|
|
_08075744:
|
|
ldr r0, _08075760 @ =0x0000fffe
|
|
ands r5, r0
|
|
_08075748:
|
|
movs r0, 0
|
|
strh r6, [r7, 0x30]
|
|
strh r5, [r7, 0x32]
|
|
strh r0, [r7, 0x36]
|
|
strh r0, [r7, 0x34]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075760: .4byte 0x0000fffe
|
|
thumb_func_end sub_80756CC
|
|
|
|
thumb_func_start sub_8075764
|
|
sub_8075764: @ 8075764
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl sub_80756CC
|
|
ldr r1, _08075788 @ =sub_80757E8
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075788: .4byte sub_80757E8
|
|
thumb_func_end sub_8075764
|
|
|
|
thumb_func_start sub_807578C
|
|
sub_807578C: @ 807578C
|
|
push {r4-r6,lr}
|
|
adds r2, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
bne _0807579C
|
|
movs r0, 0x1
|
|
b _080757E0
|
|
_0807579C:
|
|
ldrh r1, [r2, 0x30]
|
|
ldrh r4, [r2, 0x32]
|
|
ldrh r6, [r2, 0x34]
|
|
ldrh r5, [r2, 0x36]
|
|
adds r0, r6, r1
|
|
lsls r3, r0, 16
|
|
lsrs r6, r3, 16
|
|
adds r0, r5, r4
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080757BE
|
|
lsrs r0, r3, 20
|
|
negs r0, r0
|
|
b _080757C0
|
|
_080757BE:
|
|
lsrs r0, r3, 20
|
|
_080757C0:
|
|
strh r0, [r2, 0x24]
|
|
movs r0, 0x1
|
|
ands r4, r0
|
|
cmp r4, 0
|
|
beq _080757D0
|
|
lsrs r0, r5, 4
|
|
negs r0, r0
|
|
b _080757D2
|
|
_080757D0:
|
|
lsrs r0, r5, 4
|
|
_080757D2:
|
|
strh r0, [r2, 0x26]
|
|
strh r6, [r2, 0x34]
|
|
strh r5, [r2, 0x36]
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
movs r0, 0
|
|
_080757E0:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_807578C
|
|
|
|
thumb_func_start sub_80757E8
|
|
sub_80757E8: @ 80757E8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_807578C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080757FC
|
|
adds r0, r4, 0
|
|
bl SetCallbackToStoredInData
|
|
_080757FC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80757E8
|
|
|
|
thumb_func_start sub_8075804
|
|
sub_8075804: @ 8075804
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, r1, r0
|
|
cmp r0, 0
|
|
bge _08075818
|
|
negs r0, r0
|
|
_08075818:
|
|
lsls r0, 4
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl sub_80756CC
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075804
|
|
|
|
thumb_func_start sub_8075830
|
|
sub_8075830: @ 8075830
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl sub_8075804
|
|
ldr r1, _08075854 @ =sub_80757E8
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075854: .4byte sub_80757E8
|
|
thumb_func_end sub_8075830
|
|
|
|
thumb_func_start SetSpriteRotScale
|
|
SetSpriteRotScale: @ 8075858
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 16
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
ldr r5, _080758D0 @ =0xffff0000
|
|
lsls r2, 16
|
|
lsrs r1, 16
|
|
orrs r1, r2
|
|
str r1, [sp]
|
|
ldr r0, [sp, 0x4]
|
|
ands r0, r5
|
|
orrs r0, r3
|
|
str r0, [sp, 0x4]
|
|
bl sub_80758DC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075894
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, [sp]
|
|
ands r1, r5
|
|
orrs r1, r0
|
|
str r1, [sp]
|
|
_08075894:
|
|
ldr r1, _080758D4 @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r4, [r0, 0x3]
|
|
lsls r4, 26
|
|
lsrs r4, 27
|
|
add r5, sp, 0x8
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
movs r2, 0x1
|
|
movs r3, 0x2
|
|
bl ObjAffineSet
|
|
ldr r0, _080758D8 @ =gOamMatrices
|
|
lsls r4, 3
|
|
adds r4, r0
|
|
ldrh r0, [r5]
|
|
strh r0, [r4]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0x2]
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x4]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x6]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080758D0: .4byte 0xffff0000
|
|
_080758D4: .4byte gSprites
|
|
_080758D8: .4byte gOamMatrices
|
|
thumb_func_end SetSpriteRotScale
|
|
|
|
thumb_func_start sub_80758DC
|
|
sub_80758DC: @ 80758DC
|
|
movs r0, 0
|
|
bx lr
|
|
thumb_func_end sub_80758DC
|
|
|
|
thumb_func_start PrepareBattlerSpriteForRotScale
|
|
PrepareBattlerSpriteForRotScale: @ 80758E0
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
ldr r2, _08075978 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r4, r1, r2
|
|
ldrh r0, [r4, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075914
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
_08075914:
|
|
movs r7, 0x3
|
|
ands r5, r7
|
|
lsls r2, r5, 2
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, 0x1]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 30
|
|
cmp r0, 0
|
|
bne _0807595C
|
|
ldr r0, _0807597C @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r6, 1
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x6]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r4, 0x3]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x3]
|
|
_0807595C:
|
|
ldrb r3, [r4, 0x1]
|
|
orrs r3, r7
|
|
strb r3, [r4, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
adds r0, r4, 0
|
|
bl CalcCenterToCornerVec
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075978: .4byte gSprites
|
|
_0807597C: .4byte gBattleSpritesDataPtr
|
|
thumb_func_end PrepareBattlerSpriteForRotScale
|
|
|
|
thumb_func_start ResetSpriteRotScale
|
|
ResetSpriteRotScale: @ 8075980
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl SetSpriteRotScale
|
|
ldr r1, _080759D8 @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r2, [r0, 0x1]
|
|
movs r1, 0x4
|
|
negs r1, r1
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
movs r2, 0xD
|
|
negs r2, r2
|
|
ands r1, r2
|
|
strb r1, [r0, 0x1]
|
|
adds r3, r0, 0
|
|
adds r3, 0x2C
|
|
ldrb r2, [r3]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
strb r1, [r3]
|
|
ldrb r3, [r0, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r0, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
bl CalcCenterToCornerVec
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080759D8: .4byte gSprites
|
|
thumb_func_end ResetSpriteRotScale
|
|
|
|
thumb_func_start sub_80759DC
|
|
sub_80759DC: @ 80759DC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08075A14 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r2, r1, r2
|
|
ldrb r0, [r2, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
ldr r1, _08075A18 @ =gOamMatrices
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x4]
|
|
movs r3, 0x4
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
bge _08075A08
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
_08075A08:
|
|
lsls r0, r1, 16
|
|
asrs r0, 19
|
|
strh r0, [r2, 0x26]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075A14: .4byte gSprites
|
|
_08075A18: .4byte gOamMatrices
|
|
thumb_func_end sub_80759DC
|
|
|
|
thumb_func_start sub_8075A1C
|
|
sub_8075A1C: @ 8075A1C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
ldr r0, [sp, 0x28]
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
lsls r2, 16
|
|
lsrs r5, r2, 16
|
|
lsls r3, 16
|
|
lsrs r7, r3, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08075AC2
|
|
adds r0, r4, 0
|
|
adds r0, 0x2C
|
|
ldrb r1, [r0]
|
|
movs r2, 0x80
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
cmp r6, 0
|
|
beq _08075A6A
|
|
ldrb r3, [r4, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
adds r0, r4, 0
|
|
bl CalcCenterToCornerVec
|
|
_08075A6A:
|
|
ldr r6, _08075AD0 @ =0xffff0000
|
|
lsls r0, r7, 16
|
|
orrs r5, r0
|
|
str r5, [sp]
|
|
ldr r0, [sp, 0x4]
|
|
ands r0, r6
|
|
mov r1, r8
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
bl sub_80758DC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075A98
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, [sp]
|
|
ands r1, r6
|
|
orrs r1, r0
|
|
str r1, [sp]
|
|
_08075A98:
|
|
ldrb r4, [r4, 0x3]
|
|
lsls r4, 26
|
|
lsrs r4, 27
|
|
add r5, sp, 0x8
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
movs r2, 0x1
|
|
movs r3, 0x2
|
|
bl ObjAffineSet
|
|
ldr r0, _08075AD4 @ =gOamMatrices
|
|
lsls r4, 3
|
|
adds r4, r0
|
|
ldrh r0, [r5]
|
|
strh r0, [r4]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0x2]
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x4]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x6]
|
|
_08075AC2:
|
|
add sp, 0x10
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075AD0: .4byte 0xffff0000
|
|
_08075AD4: .4byte gOamMatrices
|
|
thumb_func_end sub_8075A1C
|
|
|
|
thumb_func_start sub_8075AD8
|
|
sub_8075AD8: @ 8075AD8
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
adds r2, r3, 0
|
|
bl sub_8075A1C
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrb r3, [r4, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
adds r0, r4, 0
|
|
bl CalcCenterToCornerVec
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075AD8
|
|
|
|
thumb_func_start ArcTan2_
|
|
ArcTan2_: @ 8075B18
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl ArcTan2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ArcTan2_
|
|
|
|
thumb_func_start sub_8075B30
|
|
sub_8075B30: @ 8075B30
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl ArcTan2_
|
|
lsls r0, 16
|
|
negs r0, r0
|
|
lsrs r0, 16
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8075B30
|
|
|
|
thumb_func_start sub_8075B48
|
|
sub_8075B48: @ 8075B48
|
|
push {r4-r7,lr}
|
|
lsls r1, 24
|
|
lsls r0, 20
|
|
lsrs r0, 16
|
|
cmp r1, 0
|
|
bne _08075BC4
|
|
ldr r2, _08075BB8 @ =gPlttBufferUnfaded
|
|
ldr r1, _08075BBC @ =gPlttBufferFaded
|
|
lsls r0, 1
|
|
adds r4, r0, r1
|
|
adds r5, r0, r2
|
|
movs r6, 0xF
|
|
_08075B60:
|
|
ldr r0, [r5]
|
|
lsls r2, r0, 27
|
|
lsrs r2, 27
|
|
lsls r1, r0, 22
|
|
lsrs r1, 27
|
|
adds r2, r1
|
|
lsls r0, 17
|
|
lsrs r0, 27
|
|
adds r0, r2
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x1F
|
|
ands r0, r1
|
|
ldrb r1, [r4]
|
|
movs r3, 0x20
|
|
negs r3, r3
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
lsls r3, r0, 5
|
|
ldrh r1, [r4]
|
|
ldr r7, _08075BC0 @ =0xfffffc1f
|
|
adds r2, r7, 0
|
|
ands r1, r2
|
|
orrs r1, r3
|
|
strh r1, [r4]
|
|
lsls r0, 2
|
|
ldrb r1, [r4, 0x1]
|
|
movs r3, 0x7D
|
|
negs r3, r3
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0x1]
|
|
adds r4, 0x2
|
|
adds r5, 0x2
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _08075B60
|
|
b _08075BD4
|
|
.align 2, 0
|
|
_08075BB8: .4byte gPlttBufferUnfaded
|
|
_08075BBC: .4byte gPlttBufferFaded
|
|
_08075BC0: .4byte 0xfffffc1f
|
|
_08075BC4:
|
|
lsls r1, r0, 1
|
|
ldr r0, _08075BDC @ =gPlttBufferUnfaded
|
|
adds r0, r1, r0
|
|
ldr r2, _08075BE0 @ =gPlttBufferFaded
|
|
adds r1, r2
|
|
ldr r2, _08075BE4 @ =0x04000008
|
|
bl CpuSet
|
|
_08075BD4:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075BDC: .4byte gPlttBufferUnfaded
|
|
_08075BE0: .4byte gPlttBufferFaded
|
|
_08075BE4: .4byte 0x04000008
|
|
thumb_func_end sub_8075B48
|
|
|
|
thumb_func_start sub_8075BE8
|
|
sub_8075BE8: @ 8075BE8
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r4, [sp, 0x1C]
|
|
ldr r5, [sp, 0x20]
|
|
ldr r6, [sp, 0x24]
|
|
lsls r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
lsls r4, 24
|
|
lsrs r7, r4, 24
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
mov r8, r5
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
mov r9, r6
|
|
movs r4, 0
|
|
cmp r0, 0
|
|
beq _08075C1C
|
|
movs r4, 0xE
|
|
_08075C1C:
|
|
cmp r1, 0
|
|
beq _08075C2E
|
|
ldr r0, _08075CB0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_08075C2E:
|
|
cmp r2, 0
|
|
beq _08075C40
|
|
ldr r0, _08075CB4 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_08075C40:
|
|
cmp r3, 0
|
|
beq _08075C64
|
|
ldr r6, _08075CB0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075C64
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_08075C64:
|
|
cmp r7, 0
|
|
beq _08075C88
|
|
ldr r6, _08075CB4 @ =gBattleAnimTarget
|
|
ldrb r0, [r6]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075C88
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_08075C88:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _08075C94
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
orrs r4, r0
|
|
_08075C94:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _08075CA0
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
orrs r4, r0
|
|
_08075CA0:
|
|
adds r0, r4, 0
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08075CB0: .4byte gBattleAnimAttacker
|
|
_08075CB4: .4byte gBattleAnimTarget
|
|
thumb_func_end sub_8075BE8
|
|
|
|
thumb_func_start sub_8075CB8
|
|
sub_8075CB8: @ 8075CB8
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
lsls r3, 24
|
|
lsrs r7, r3, 24
|
|
movs r4, 0
|
|
cmp r0, 0
|
|
beq _08075CF2
|
|
movs r0, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075CF2
|
|
movs r0, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x10
|
|
movs r4, 0x1
|
|
lsls r4, r0
|
|
_08075CF2:
|
|
cmp r5, 0
|
|
beq _08075D1E
|
|
movs r0, 0x2
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075D1E
|
|
movs r0, 0x2
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_08075D1E:
|
|
cmp r6, 0
|
|
beq _08075D4A
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075D4A
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_08075D4A:
|
|
cmp r7, 0
|
|
beq _08075D76
|
|
movs r0, 0x3
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075D76
|
|
movs r0, 0x3
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_08075D76:
|
|
adds r0, r4, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8075CB8
|
|
|
|
thumb_func_start sub_8075D80
|
|
sub_8075D80: @ 8075D80
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bx lr
|
|
thumb_func_end sub_8075D80
|
|
|
|
thumb_func_start sub_8075D88
|
|
sub_8075D88: @ 8075D88
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8075D88
|
|
|
|
thumb_func_start sub_8075D9C
|
|
sub_8075D9C: @ 8075D9C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08075DDA
|
|
ldr r2, _08075DC8 @ =gBattleAnimArgs
|
|
movs r3, 0x6
|
|
ldrsh r0, [r2, r3]
|
|
movs r1, 0
|
|
cmp r0, 0
|
|
bne _08075DB6
|
|
movs r1, 0x1
|
|
_08075DB6:
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
bne _08075DCC
|
|
adds r0, r4, 0
|
|
bl sub_8075160
|
|
b _08075DD2
|
|
.align 2, 0
|
|
_08075DC8: .4byte gBattleAnimArgs
|
|
_08075DCC:
|
|
adds r0, r4, 0
|
|
bl sub_8075114
|
|
_08075DD2:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _08075DEE
|
|
_08075DDA:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x30
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08075DEE
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
_08075DEE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075D9C
|
|
|
|
thumb_func_start sub_8075DF4
|
|
sub_8075DF4: @ 8075DF4
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _08075E6C @ =gBattleAnimArgs
|
|
movs r1, 0xA
|
|
ldrsh r0, [r6, r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0
|
|
cmp r0, 0
|
|
bne _08075E0C
|
|
movs r1, 0x1
|
|
_08075E0C:
|
|
ldrb r0, [r6, 0xA]
|
|
movs r7, 0x1
|
|
cmp r0, 0
|
|
bne _08075E16
|
|
movs r7, 0x3
|
|
_08075E16:
|
|
adds r0, r5, 0
|
|
bl sub_8075160
|
|
ldr r0, _08075E70 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075E30
|
|
ldrh r0, [r6, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r6, 0x4]
|
|
_08075E30:
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r4, _08075E74 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
adds r1, r7, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r6, [r6, 0x6]
|
|
adds r0, r6
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _08075E78 @ =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _08075E7C @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075E6C: .4byte gBattleAnimArgs
|
|
_08075E70: .4byte gBattleAnimAttacker
|
|
_08075E74: .4byte gBattleAnimTarget
|
|
_08075E78: .4byte StartAnimLinearTranslation
|
|
_08075E7C: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_8075DF4
|
|
|
|
thumb_func_start sub_8075E80
|
|
sub_8075E80: @ 8075E80
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _08075EE0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075EA0
|
|
ldr r1, _08075EE4 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_08075EA0:
|
|
ldr r4, _08075EE4 @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r6, 0x2E]
|
|
ldr r5, _08075EE8 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x36]
|
|
ldrh r0, [r4, 0xA]
|
|
strh r0, [r6, 0x38]
|
|
adds r0, r6, 0
|
|
bl sub_8075068
|
|
ldr r0, _08075EEC @ =sub_8075EF0
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075EE0: .4byte gBattleAnimAttacker
|
|
_08075EE4: .4byte gBattleAnimArgs
|
|
_08075EE8: .4byte gBattleAnimTarget
|
|
_08075EEC: .4byte sub_8075EF0
|
|
thumb_func_end sub_8075E80
|
|
|
|
thumb_func_start sub_8075EF0
|
|
sub_8075EF0: @ 8075EF0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075F04
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08075F04:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8075EF0
|
|
|
|
thumb_func_start sub_8075F0C
|
|
sub_8075F0C: @ 8075F0C
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _08075F20 @ =gBattleAnimArgs
|
|
movs r2, 0xC
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bne _08075F24
|
|
movs r4, 0x1
|
|
movs r7, 0x3
|
|
b _08075F28
|
|
.align 2, 0
|
|
_08075F20: .4byte gBattleAnimArgs
|
|
_08075F24:
|
|
movs r4, 0
|
|
movs r7, 0x1
|
|
_08075F28:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _08075F40
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_8075160
|
|
ldr r0, _08075F3C @ =gBattleAnimAttacker
|
|
b _08075F4A
|
|
.align 2, 0
|
|
_08075F3C: .4byte gBattleAnimAttacker
|
|
_08075F40:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_8075114
|
|
ldr r0, _08075FA8 @ =gBattleAnimTarget
|
|
_08075F4A:
|
|
ldrb r6, [r0]
|
|
ldr r0, _08075FAC @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08075F62
|
|
ldr r1, _08075FB0 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_08075F62:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_8075114
|
|
ldr r4, _08075FB0 @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r2, [r4, 0x4]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x32]
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x6]
|
|
adds r0, r4
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _08075FB4 @ =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _08075FB8 @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08075FA8: .4byte gBattleAnimTarget
|
|
_08075FAC: .4byte gBattleAnimAttacker
|
|
_08075FB0: .4byte gBattleAnimArgs
|
|
_08075FB4: .4byte StartAnimLinearTranslation
|
|
_08075FB8: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_8075F0C
|
|
|
|
thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0xFF
|
|
beq _08076026
|
|
movs r6, 0
|
|
ldr r2, _08076018 @ =gSprites
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
_08075FD8:
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r4, r0, r2
|
|
adds r5, r4, 0
|
|
adds r5, 0x3E
|
|
ldrb r0, [r5]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
bne _0807601C
|
|
adds r0, r4, 0
|
|
adds r1, r2
|
|
movs r2, 0x44
|
|
bl memcpy
|
|
ldrb r1, [r4, 0x1]
|
|
movs r2, 0xD
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
ands r1, r0
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
strb r1, [r4, 0x1]
|
|
ldrb r0, [r5]
|
|
adds r2, 0x8
|
|
adds r1, r2, 0
|
|
ands r0, r1
|
|
strb r0, [r5]
|
|
lsls r0, r6, 16
|
|
asrs r0, 16
|
|
b _0807602A
|
|
.align 2, 0
|
|
_08076018: .4byte gSprites
|
|
_0807601C:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
cmp r6, 0x3F
|
|
bls _08075FD8
|
|
_08076026:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_0807602A:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
|
|
thumb_func_start obj_delete_but_dont_free_vram
|
|
obj_delete_but_dont_free_vram: @ 8076030
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
adds r3, 0x3F
|
|
ldrb r1, [r3]
|
|
movs r2, 0x40
|
|
orrs r1, r2
|
|
strb r1, [r3]
|
|
bl DestroySprite
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end obj_delete_but_dont_free_vram
|
|
|
|
thumb_func_start sub_8076048
|
|
sub_8076048: @ 8076048
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r6, 0
|
|
movs r3, 0
|
|
ldr r2, _080760C0 @ =gBattleAnimArgs
|
|
movs r0, 0x4
|
|
ldrsh r1, [r2, r0]
|
|
movs r4, 0
|
|
ldrsh r0, [r2, r4]
|
|
cmp r1, r0
|
|
ble _08076062
|
|
movs r3, 0x1
|
|
_08076062:
|
|
cmp r1, r0
|
|
bge _08076068
|
|
ldr r3, _080760C4 @ =0x0000ffff
|
|
_08076068:
|
|
movs r0, 0x6
|
|
ldrsh r1, [r2, r0]
|
|
movs r4, 0x2
|
|
ldrsh r0, [r2, r4]
|
|
cmp r1, r0
|
|
ble _08076076
|
|
movs r6, 0x1
|
|
_08076076:
|
|
cmp r1, r0
|
|
bge _0807607C
|
|
ldr r6, _080760C4 @ =0x0000ffff
|
|
_0807607C:
|
|
ldr r0, _080760C8 @ =gTasks
|
|
lsls r4, r5, 2
|
|
adds r4, r5
|
|
lsls r4, 3
|
|
adds r4, r0
|
|
movs r1, 0
|
|
strh r1, [r4, 0x8]
|
|
ldrh r0, [r2, 0x8]
|
|
strh r0, [r4, 0xA]
|
|
strh r1, [r4, 0xC]
|
|
ldrh r0, [r2]
|
|
strh r0, [r4, 0xE]
|
|
ldrh r0, [r2, 0x2]
|
|
strh r0, [r4, 0x10]
|
|
strh r3, [r4, 0x12]
|
|
strh r6, [r4, 0x14]
|
|
ldrh r0, [r2, 0x4]
|
|
strh r0, [r4, 0x16]
|
|
ldrh r0, [r2, 0x6]
|
|
strh r0, [r4, 0x18]
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 8
|
|
ldrh r0, [r2]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r0, _080760CC @ =sub_80760D0
|
|
str r0, [r4]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080760C0: .4byte gBattleAnimArgs
|
|
_080760C4: .4byte 0x0000ffff
|
|
_080760C8: .4byte gTasks
|
|
_080760CC: .4byte sub_80760D0
|
|
thumb_func_end sub_8076048
|
|
|
|
thumb_func_start sub_80760D0
|
|
sub_80760D0: @ 80760D0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807611C @ =gTasks
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0xA
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
ble _08076164
|
|
movs r0, 0
|
|
strh r0, [r4, 0x8]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08076120
|
|
ldrh r2, [r4, 0xE]
|
|
movs r3, 0xE
|
|
ldrsh r1, [r4, r3]
|
|
movs r3, 0x16
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
beq _08076134
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, r2, r0
|
|
strh r0, [r4, 0xE]
|
|
b _08076134
|
|
.align 2, 0
|
|
_0807611C: .4byte gTasks
|
|
_08076120:
|
|
ldrh r2, [r4, 0x10]
|
|
movs r0, 0x10
|
|
ldrsh r1, [r4, r0]
|
|
movs r3, 0x18
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
beq _08076134
|
|
ldrh r0, [r4, 0x14]
|
|
adds r0, r2, r0
|
|
strh r0, [r4, 0x10]
|
|
_08076134:
|
|
ldrh r1, [r4, 0x10]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0xE]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0xE
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x16
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _08076164
|
|
movs r3, 0x10
|
|
ldrsh r1, [r4, r3]
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _08076164
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_08076164:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80760D0
|
|
|
|
thumb_func_start sub_807616C
|
|
sub_807616C: @ 807616C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _0807618C @ =gBattleAnimArgs
|
|
ldrb r0, [r0]
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0xFF
|
|
bne _08076190
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080761B6
|
|
.align 2, 0
|
|
_0807618C: .4byte gBattleAnimArgs
|
|
_08076190:
|
|
ldr r1, _080761BC @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r2, _080761C0 @ =gSprites
|
|
lsls r1, r3, 4
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r1, [r1, 0x5]
|
|
lsrs r1, 4
|
|
lsls r1, 4
|
|
ldr r3, _080761C4 @ =0x00000101
|
|
adds r2, r3, 0
|
|
adds r1, r2
|
|
strh r1, [r0, 0x8]
|
|
bl sub_80761C8
|
|
_080761B6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080761BC: .4byte gTasks
|
|
_080761C0: .4byte gSprites
|
|
_080761C4: .4byte 0x00000101
|
|
thumb_func_end sub_807616C
|
|
|
|
thumb_func_start sub_80761C8
|
|
sub_80761C8: @ 80761C8
|
|
ldr r3, _080761E8 @ =gBattleAnimArgs
|
|
ldrh r1, [r3, 0x2]
|
|
movs r2, 0
|
|
strh r1, [r0, 0xA]
|
|
strh r2, [r0, 0xC]
|
|
ldrh r1, [r3, 0x4]
|
|
strh r1, [r0, 0xE]
|
|
strh r2, [r0, 0x10]
|
|
ldrh r1, [r3, 0x6]
|
|
strh r1, [r0, 0x12]
|
|
strh r2, [r0, 0x14]
|
|
ldrh r1, [r3, 0x8]
|
|
strh r1, [r0, 0x16]
|
|
ldr r1, _080761EC @ =sub_80761F0
|
|
str r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_080761E8: .4byte gBattleAnimArgs
|
|
_080761EC: .4byte sub_80761F0
|
|
thumb_func_end sub_80761C8
|
|
|
|
thumb_func_start sub_80761F0
|
|
sub_80761F0: @ 80761F0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _08076248 @ =gTasks
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x12
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
blt _08076280
|
|
movs r0, 0
|
|
strh r0, [r4, 0x10]
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _0807624C
|
|
ldrh r2, [r4, 0xC]
|
|
adds r2, 0x1
|
|
strh r2, [r4, 0xC]
|
|
ldrh r0, [r4, 0x8]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldrh r3, [r4, 0xA]
|
|
movs r1, 0xF
|
|
bl BlendPalette
|
|
movs r2, 0xC
|
|
ldrsh r1, [r4, r2]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _08076280
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x14]
|
|
b _08076280
|
|
.align 2, 0
|
|
_08076248: .4byte gTasks
|
|
_0807624C:
|
|
ldrh r2, [r4, 0xC]
|
|
subs r2, 0x1
|
|
strh r2, [r4, 0xC]
|
|
ldrh r0, [r4, 0x8]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldrh r3, [r4, 0xA]
|
|
movs r1, 0xF
|
|
bl BlendPalette
|
|
movs r0, 0xC
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0
|
|
bne _08076280
|
|
ldrh r0, [r4, 0x16]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x16]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _0807627A
|
|
strh r1, [r4, 0x10]
|
|
strh r1, [r4, 0x14]
|
|
b _08076280
|
|
_0807627A:
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_08076280:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80761F0
|
|
|
|
thumb_func_start sub_8076288
|
|
sub_8076288: @ 8076288
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080762A8 @ =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0xFF
|
|
bne _080762AC
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080762C2
|
|
.align 2, 0
|
|
_080762A8: .4byte gBattleAnimArgs
|
|
_080762AC:
|
|
ldr r1, _080762C8 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
lsls r1, r2, 4
|
|
ldr r2, _080762CC @ =0x00000101
|
|
adds r1, r2
|
|
strh r1, [r0, 0x8]
|
|
bl sub_80761C8
|
|
_080762C2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080762C8: .4byte gTasks
|
|
_080762CC: .4byte 0x00000101
|
|
thumb_func_end sub_8076288
|
|
|
|
thumb_func_start sub_80762D0
|
|
sub_80762D0: @ 80762D0
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
adds r4, r1, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r1, 0
|
|
strh r1, [r3, 0x16]
|
|
strh r1, [r3, 0x18]
|
|
strh r1, [r3, 0x1A]
|
|
strh r4, [r3, 0x26]
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
strh r0, [r3, 0x1C]
|
|
strh r0, [r3, 0x1E]
|
|
strh r1, [r3, 0x20]
|
|
adds r0, r3, 0
|
|
adds r0, 0x22
|
|
adds r3, 0x24
|
|
adds r1, r3, 0
|
|
bl sub_80765C0
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl PrepareBattlerSpriteForRotScale
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80762D0
|
|
|
|
thumb_func_start sub_8076308
|
|
sub_8076308: @ 8076308
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080763A8 @ =gUnknown_2037F28
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r4, r2]
|
|
bl sub_80765C8
|
|
movs r3, 0x16
|
|
ldrsh r1, [r4, r3]
|
|
lsls r1, 3
|
|
adds r1, r0, r1
|
|
str r1, [r5]
|
|
movs r6, 0
|
|
ldrsh r2, [r1, r6]
|
|
ldr r0, _080763AC @ =0x00007ffe
|
|
cmp r2, r0
|
|
beq _080763B0
|
|
cmp r2, r0
|
|
bgt _08076410
|
|
subs r0, 0x1
|
|
cmp r2, r0
|
|
beq _080763B6
|
|
ldrb r0, [r1, 0x5]
|
|
cmp r0, 0
|
|
bne _08076356
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x1E]
|
|
ldrb r0, [r1, 0x4]
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x16]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x16]
|
|
adds r0, r1, 0
|
|
adds r0, 0x8
|
|
str r0, [r5]
|
|
_08076356:
|
|
ldr r1, [r5]
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x1C]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r3, [r4, 0x1E]
|
|
adds r0, r3
|
|
strh r0, [r4, 0x1E]
|
|
ldrh r0, [r4, 0x20]
|
|
ldrb r1, [r1, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r6, 0x1C
|
|
ldrsh r1, [r4, r6]
|
|
movs r3, 0x1E
|
|
ldrsh r2, [r4, r3]
|
|
ldrh r3, [r4, 0x20]
|
|
bl SetSpriteRotScale
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8076440
|
|
ldrh r0, [r4, 0x18]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r1, [r5]
|
|
ldrb r1, [r1, 0x5]
|
|
cmp r0, r1
|
|
blt _08076436
|
|
movs r0, 0
|
|
strh r0, [r4, 0x18]
|
|
b _08076408
|
|
.align 2, 0
|
|
_080763A8: .4byte gUnknown_2037F28
|
|
_080763AC: .4byte 0x00007ffe
|
|
_080763B0:
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x16]
|
|
b _08076436
|
|
_080763B6:
|
|
ldrh r2, [r1, 0x2]
|
|
movs r6, 0x2
|
|
ldrsh r0, [r1, r6]
|
|
cmp r0, 0
|
|
beq _08076408
|
|
ldrh r1, [r4, 0x1A]
|
|
movs r3, 0x1A
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
beq _080763D6
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080763D8
|
|
b _08076408
|
|
_080763D6:
|
|
strh r2, [r4, 0x1A]
|
|
_080763D8:
|
|
movs r6, 0x16
|
|
ldrsh r0, [r4, r6]
|
|
cmp r0, 0
|
|
beq _08076436
|
|
ldr r3, _08076400 @ =gUnknown_2037F28
|
|
ldr r5, _08076404 @ =0x00007ffd
|
|
_080763E4:
|
|
ldrh r2, [r4, 0x16]
|
|
subs r1, r2, 0x1
|
|
strh r1, [r4, 0x16]
|
|
ldr r0, [r3]
|
|
subs r0, 0x8
|
|
str r0, [r3]
|
|
movs r6, 0
|
|
ldrsh r0, [r0, r6]
|
|
cmp r0, r5
|
|
beq _08076434
|
|
lsls r0, r1, 16
|
|
cmp r0, 0
|
|
bne _080763E4
|
|
b _08076436
|
|
.align 2, 0
|
|
_08076400: .4byte gUnknown_2037F28
|
|
_08076404: .4byte 0x00007ffd
|
|
_08076408:
|
|
ldrh r0, [r4, 0x16]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x16]
|
|
b _08076436
|
|
_08076410:
|
|
ldr r2, _08076430 @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0
|
|
strh r1, [r0, 0x26]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl ResetSpriteRotScale
|
|
movs r0, 0
|
|
b _08076438
|
|
.align 2, 0
|
|
_08076430: .4byte gSprites
|
|
_08076434:
|
|
strh r2, [r4, 0x16]
|
|
_08076436:
|
|
movs r0, 0x1
|
|
_08076438:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8076308
|
|
|
|
thumb_func_start sub_8076440
|
|
sub_8076440: @ 8076440
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl sub_80764EC
|
|
lsls r0, 16
|
|
lsrs r0, 15
|
|
movs r1, 0x40
|
|
subs r5, r1, r0
|
|
ldr r1, _0807648C @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrb r1, [r4, 0x3]
|
|
lsls r1, 26
|
|
lsrs r1, 27
|
|
lsls r0, r5, 8
|
|
ldr r2, _08076490 @ =gOamMatrices
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0x6
|
|
ldrsh r1, [r1, r2]
|
|
bl __divsi3
|
|
cmp r0, 0x80
|
|
ble _0807647C
|
|
movs r0, 0x80
|
|
_0807647C:
|
|
subs r0, r5, r0
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r4, 0x26]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807648C: .4byte gSprites
|
|
_08076490: .4byte gOamMatrices
|
|
thumb_func_end sub_8076440
|
|
|
|
thumb_func_start sub_8076494
|
|
sub_8076494: @ 8076494
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r0, r1, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_80764EC
|
|
lsls r0, 16
|
|
lsrs r0, 15
|
|
movs r1, 0x40
|
|
subs r5, r1, r0
|
|
ldr r1, _080764E4 @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrb r1, [r4, 0x3]
|
|
lsls r1, 26
|
|
lsrs r1, 27
|
|
lsls r0, r5, 8
|
|
ldr r2, _080764E8 @ =gOamMatrices
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0x6
|
|
ldrsh r1, [r1, r2]
|
|
bl __divsi3
|
|
cmp r0, 0x80
|
|
ble _080764D4
|
|
movs r0, 0x80
|
|
_080764D4:
|
|
subs r0, r5, r0
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r4, 0x26]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080764E4: .4byte gSprites
|
|
_080764E8: .4byte gOamMatrices
|
|
thumb_func_end sub_8076494
|
|
|
|
thumb_func_start sub_80764EC
|
|
sub_80764EC: @ 80764EC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r1, _08076548 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r1, _0807654C @ =gBattlerSpriteIds
|
|
ldr r6, _08076550 @ =gBattlerPartyIndexes
|
|
_08076508:
|
|
adds r0, r4, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _080765AC
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08076568
|
|
ldr r0, _08076554 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _0807655C
|
|
lsls r0, r4, 1
|
|
adds r0, r6
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08076558 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
b _0807655E
|
|
.align 2, 0
|
|
_08076548: .4byte gSprites
|
|
_0807654C: .4byte gBattlerSpriteIds
|
|
_08076550: .4byte gBattlerPartyIndexes
|
|
_08076554: .4byte gBattleSpritesDataPtr
|
|
_08076558: .4byte gPlayerParty
|
|
_0807655C:
|
|
ldrh r1, [r1, 0x2]
|
|
_0807655E:
|
|
ldr r0, _08076564 @ =gUnknown_8235E6C
|
|
b _080765A0
|
|
.align 2, 0
|
|
_08076564: .4byte gUnknown_8235E6C
|
|
_08076568:
|
|
ldr r0, _08076594 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _0807659C
|
|
lsls r0, r4, 1
|
|
adds r0, r6
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08076598 @ =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
b _0807659E
|
|
.align 2, 0
|
|
_08076594: .4byte gBattleSpritesDataPtr
|
|
_08076598: .4byte gEnemyParty
|
|
_0807659C:
|
|
ldrh r1, [r1, 0x2]
|
|
_0807659E:
|
|
ldr r0, _080765A8 @ =gUnknown_82349CC
|
|
_080765A0:
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
b _080765B8
|
|
.align 2, 0
|
|
_080765A8: .4byte gUnknown_82349CC
|
|
_080765AC:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0x3
|
|
bls _08076508
|
|
movs r0, 0x40
|
|
_080765B8:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80764EC
|
|
|
|
thumb_func_start sub_80765C0
|
|
sub_80765C0: @ 80765C0
|
|
strh r2, [r0]
|
|
asrs r2, 16
|
|
strh r2, [r1]
|
|
bx lr
|
|
thumb_func_end sub_80765C0
|
|
|
|
thumb_func_start sub_80765C8
|
|
sub_80765C8: @ 80765C8
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r1, 16
|
|
orrs r0, r1
|
|
bx lr
|
|
thumb_func_end sub_80765C8
|
|
|
|
thumb_func_start sub_80765D4
|
|
sub_80765D4: @ 80765D4
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
mov r8, r0
|
|
adds r5, r3, 0
|
|
ldr r0, [sp, 0x14]
|
|
ldr r4, [sp, 0x18]
|
|
ldr r6, [sp, 0x1C]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
mov r3, r8
|
|
strh r6, [r3, 0x18]
|
|
strh r1, [r3, 0x26]
|
|
strh r2, [r3, 0x1A]
|
|
strh r5, [r3, 0x1C]
|
|
strh r0, [r3, 0x22]
|
|
strh r4, [r3, 0x24]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
subs r0, r2
|
|
adds r1, r6, 0
|
|
bl __divsi3
|
|
mov r1, r8
|
|
strh r0, [r1, 0x1E]
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
subs r4, r5
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl __divsi3
|
|
mov r3, r8
|
|
strh r0, [r3, 0x20]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80765D4
|
|
|
|
thumb_func_start sub_8076640
|
|
sub_8076640: @ 8076640
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x18]
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _08076652
|
|
movs r0, 0
|
|
b _080766AE
|
|
_08076652:
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x18]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _0807666C
|
|
ldrh r0, [r4, 0x1E]
|
|
ldrh r3, [r4, 0x1A]
|
|
adds r0, r3
|
|
strh r0, [r4, 0x1A]
|
|
ldrh r0, [r4, 0x20]
|
|
ldrh r1, [r4, 0x1C]
|
|
adds r0, r1
|
|
b _08076672
|
|
_0807666C:
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x1A]
|
|
ldrh r0, [r4, 0x24]
|
|
_08076672:
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x1A
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x1C
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0
|
|
bl SetSpriteRotScale
|
|
movs r0, 0x18
|
|
ldrsh r3, [r4, r0]
|
|
cmp r3, 0
|
|
beq _0807669C
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8076440
|
|
b _080766AC
|
|
_0807669C:
|
|
ldr r2, _080766B4 @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
strh r3, [r0, 0x26]
|
|
_080766AC:
|
|
ldrb r0, [r4, 0x18]
|
|
_080766AE:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080766B4: .4byte gSprites
|
|
thumb_func_end sub_8076640
|
|
|
|
thumb_func_start sub_80766B8
|
|
sub_80766B8: @ 80766B8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _080766E4 @ =gAnimFriendship
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
cmp r0, 0x1E
|
|
bls _080766D6
|
|
movs r1, 0x1
|
|
cmp r0, 0x64
|
|
bls _080766D6
|
|
movs r1, 0x3
|
|
cmp r0, 0xC8
|
|
bhi _080766D6
|
|
movs r1, 0x2
|
|
_080766D6:
|
|
ldr r0, _080766E8 @ =gBattleAnimArgs
|
|
strh r1, [r0, 0xE]
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080766E4: .4byte gAnimFriendship
|
|
_080766E8: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80766B8
|
|
|
|
thumb_func_start sub_80766EC
|
|
sub_80766EC: @ 80766EC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r7, r4, 0
|
|
ldr r6, _080767E0 @ =gBattleAnimTarget
|
|
ldrb r0, [r6]
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807672C
|
|
ldr r2, _080767E4 @ =gSprites
|
|
ldr r1, _080767E8 @ =gBattlerSpriteIds
|
|
ldrb r0, [r6]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
adds r2, r4, 0
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_0807672C:
|
|
ldr r0, _080767EC @ =gBattleAnimAttacker
|
|
mov r8, r0
|
|
ldrb r0, [r0]
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08076764
|
|
ldr r2, _080767E4 @ =gSprites
|
|
ldr r1, _080767E8 @ =gBattlerSpriteIds
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
adds r2, r4, 0
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_08076764:
|
|
ldrb r0, [r6]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807679C
|
|
ldr r2, _080767E4 @ =gSprites
|
|
ldr r1, _080767E8 @ =gBattlerSpriteIds
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
adds r2, r4, 0
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_0807679C:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080767D4
|
|
ldr r2, _080767E4 @ =gSprites
|
|
ldr r1, _080767E8 @ =gBattlerSpriteIds
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
eors r0, r5
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
ands r7, r0
|
|
lsls r3, r7, 2
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r3
|
|
strb r0, [r1, 0x5]
|
|
_080767D4:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080767E0: .4byte gBattleAnimTarget
|
|
_080767E4: .4byte gSprites
|
|
_080767E8: .4byte gBattlerSpriteIds
|
|
_080767EC: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_80766EC
|
|
|
|
thumb_func_start sub_80767F0
|
|
sub_80767F0: @ 80767F0
|
|
push {r4-r6,lr}
|
|
movs r5, 0
|
|
ldr r0, _08076850 @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bge _0807684A
|
|
ldr r6, _08076854 @ =gSprites
|
|
_080767FE:
|
|
lsls r0, r5, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08076840
|
|
adds r0, r4, 0
|
|
bl GetBattlerSpriteSubpriority
|
|
ldr r3, _08076858 @ =gBattlerSpriteIds
|
|
adds r3, r5, r3
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrb r2, [r0, 0x5]
|
|
movs r3, 0xD
|
|
negs r3, r3
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x8
|
|
orrs r2, r1
|
|
strb r2, [r0, 0x5]
|
|
_08076840:
|
|
adds r5, 0x1
|
|
ldr r0, _08076850 @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _080767FE
|
|
_0807684A:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08076850: .4byte gBattlersCount
|
|
_08076854: .4byte gSprites
|
|
_08076858: .4byte gBattlerSpriteIds
|
|
thumb_func_end sub_80767F0
|
|
|
|
thumb_func_start GetBattlerSpriteSubpriority
|
|
GetBattlerSpriteSubpriority: @ 807685C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1E
|
|
cmp r0, 0
|
|
beq _0807687E
|
|
movs r1, 0x14
|
|
cmp r0, 0x2
|
|
beq _0807687E
|
|
movs r1, 0x32
|
|
cmp r0, 0x1
|
|
bne _0807687E
|
|
movs r1, 0x28
|
|
_0807687E:
|
|
adds r0, r1, 0
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetBattlerSpriteSubpriority
|
|
|
|
thumb_func_start sub_8076884
|
|
sub_8076884: @ 8076884
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0807689A
|
|
cmp r0, 0x3
|
|
bne _0807689E
|
|
_0807689A:
|
|
movs r0, 0x2
|
|
b _080768A0
|
|
_0807689E:
|
|
movs r0, 0x1
|
|
_080768A0:
|
|
movs r1, 0x4
|
|
bl sub_80BC30C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8076884
|
|
|
|
thumb_func_start sub_80768B0
|
|
sub_80768B0: @ 80768B0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _080768C6
|
|
cmp r0, 0x3
|
|
bne _080768CA
|
|
_080768C6:
|
|
movs r0, 0x2
|
|
b _080768CC
|
|
_080768CA:
|
|
movs r0, 0x1
|
|
_080768CC:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80768B0
|
|
|
|
thumb_func_start sub_80768D0
|
|
sub_80768D0: @ 80768D0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
ldr r4, [sp, 0x30]
|
|
ldr r5, [sp, 0x34]
|
|
ldr r6, [sp, 0x38]
|
|
mov r8, r6
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
mov r10, r3
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
str r4, [sp, 0x4]
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
str r5, [sp, 0x8]
|
|
lsls r0, r7, 3
|
|
ldr r1, _080769B0 @ =gUnknown_83AE084
|
|
adds r0, r1
|
|
bl LoadSpriteSheet
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0xC]
|
|
ldr r1, _080769B4 @ =gUnknown_83AE054
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2]
|
|
bl AllocSpritePalette
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r4, _080769B8 @ =gMonSpritesGfxPtr
|
|
ldr r0, [r4]
|
|
cmp r0, 0
|
|
beq _0807694E
|
|
movs r1, 0xBE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0807694E
|
|
movs r0, 0x80
|
|
lsls r0, 6
|
|
bl AllocZeroed
|
|
ldr r1, [r4]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
str r0, [r1]
|
|
_0807694E:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
bne _080769EC
|
|
adds r0, r6, 0
|
|
ldr r1, [sp, 0x3C]
|
|
mov r2, r8
|
|
bl GetMonSpritePalFromSpeciesAndPersonality
|
|
lsls r1, r5, 20
|
|
movs r2, 0x80
|
|
lsls r2, 17
|
|
adds r1, r2
|
|
lsrs r1, 16
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r3, [sp, 0x44]
|
|
cmp r3, 0x1
|
|
beq _0807699A
|
|
ldr r0, [sp, 0x40]
|
|
lsls r1, r0, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x5
|
|
bl sub_804455C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0807699A
|
|
ldr r0, _080769BC @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
ldr r2, [sp, 0x40]
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
beq _080769C4
|
|
_0807699A:
|
|
lsls r0, r6, 3
|
|
ldr r1, _080769C0 @ =gMonFrontPicTable
|
|
adds r0, r1
|
|
ldr r1, _080769B8 @ =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r3, 0xBE
|
|
lsls r3, 1
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
b _08076A46
|
|
.align 2, 0
|
|
_080769B0: .4byte gUnknown_83AE084
|
|
_080769B4: .4byte gUnknown_83AE054
|
|
_080769B8: .4byte gMonSpritesGfxPtr
|
|
_080769BC: .4byte gBattleSpritesDataPtr
|
|
_080769C0: .4byte gMonFrontPicTable
|
|
_080769C4:
|
|
lsls r0, r6, 3
|
|
ldr r1, _080769E4 @ =gMonFrontPicTable
|
|
adds r0, r1
|
|
ldr r1, _080769E8 @ =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
str r2, [sp]
|
|
adds r2, r6, 0
|
|
mov r3, r8
|
|
bl LoadSpecialPokePic
|
|
b _08076A7C
|
|
.align 2, 0
|
|
_080769E4: .4byte gMonFrontPicTable
|
|
_080769E8: .4byte gMonSpritesGfxPtr
|
|
_080769EC:
|
|
adds r0, r6, 0
|
|
ldr r1, [sp, 0x3C]
|
|
mov r2, r8
|
|
bl GetMonSpritePalFromSpeciesAndPersonality
|
|
lsls r1, r5, 20
|
|
movs r3, 0x80
|
|
lsls r3, 17
|
|
adds r1, r3
|
|
lsrs r1, 16
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r0, [sp, 0x44]
|
|
cmp r0, 0x1
|
|
beq _08076A32
|
|
ldr r2, [sp, 0x40]
|
|
lsls r1, r2, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x5
|
|
bl sub_804455C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08076A32
|
|
ldr r0, _08076A54 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
ldr r3, [sp, 0x40]
|
|
lsls r0, r3, 2
|
|
adds r0, r1
|
|
ldrh r2, [r0, 0x2]
|
|
cmp r2, 0
|
|
beq _08076A60
|
|
_08076A32:
|
|
lsls r0, r6, 3
|
|
ldr r1, _08076A58 @ =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, _08076A5C @ =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
movs r2, 0
|
|
_08076A46:
|
|
str r2, [sp]
|
|
adds r2, r6, 0
|
|
mov r3, r8
|
|
bl LoadSpecialPokePic_DontHandleDeoxys
|
|
b _08076A7C
|
|
.align 2, 0
|
|
_08076A54: .4byte gBattleSpritesDataPtr
|
|
_08076A58: .4byte gMonBackPicTable
|
|
_08076A5C: .4byte gMonSpritesGfxPtr
|
|
_08076A60:
|
|
lsls r0, r6, 3
|
|
ldr r1, _08076AC8 @ =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, _08076ACC @ =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r3, 0xBE
|
|
lsls r3, 1
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
str r2, [sp]
|
|
adds r2, r6, 0
|
|
mov r3, r8
|
|
bl LoadSpecialPokePic
|
|
_08076A7C:
|
|
ldr r5, _08076ACC @ =gMonSpritesGfxPtr
|
|
ldr r0, [r5]
|
|
movs r4, 0xBE
|
|
lsls r4, 1
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
ldr r2, [sp, 0xC]
|
|
lsls r1, r2, 5
|
|
ldr r3, _08076AD0 @ =0x06010000
|
|
adds r1, r3
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
movs r3, 0x1
|
|
bl RequestDma3Copy
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
bne _08076ADC
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, _08076AD4 @ =gUnknown_83AE054
|
|
adds r0, r1
|
|
mov r2, r10
|
|
lsls r1, r2, 16
|
|
asrs r1, 16
|
|
ldr r3, _08076AD8 @ =gUnknown_82349CC
|
|
b _08076AEE
|
|
.align 2, 0
|
|
_08076AC8: .4byte gMonBackPicTable
|
|
_08076ACC: .4byte gMonSpritesGfxPtr
|
|
_08076AD0: .4byte 0x06010000
|
|
_08076AD4: .4byte gUnknown_83AE054
|
|
_08076AD8: .4byte gUnknown_82349CC
|
|
_08076ADC:
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, _08076B18 @ =gUnknown_83AE054
|
|
adds r0, r1
|
|
mov r2, r10
|
|
lsls r1, r2, 16
|
|
asrs r1, 16
|
|
ldr r3, _08076B1C @ =gUnknown_8235E6C
|
|
_08076AEE:
|
|
lsls r2, r6, 2
|
|
adds r2, r3
|
|
ldrb r2, [r2, 0x1]
|
|
ldr r3, [sp, 0x4]
|
|
adds r2, r3
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
ldr r3, [sp, 0x8]
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08076B18: .4byte gUnknown_83AE054
|
|
_08076B1C: .4byte gUnknown_8235E6C
|
|
thumb_func_end sub_80768D0
|
|
|
|
thumb_func_start sub_8076B20
|
|
sub_8076B20: @ 8076B20
|
|
push {lr}
|
|
bl DestroySpriteAndFreeResources
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8076B20
|
|
|
|
thumb_func_start sub_8076B2C
|
|
sub_8076B2C: @ 8076B2C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08076C08
|
|
ldr r0, _08076B88 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
mov r1, r8
|
|
lsls r2, r1, 2
|
|
adds r1, r2, r0
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _08076B94
|
|
ldr r0, _08076B8C @ =gBattlerPartyIndexes
|
|
mov r1, r8
|
|
lsls r4, r1, 1
|
|
adds r4, r0
|
|
ldrh r0, [r4]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, _08076B90 @ =gPlayerParty
|
|
adds r0, r5
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldrh r0, [r4]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _08076B9C
|
|
.align 2, 0
|
|
_08076B88: .4byte gBattleSpritesDataPtr
|
|
_08076B8C: .4byte gBattlerPartyIndexes
|
|
_08076B90: .4byte gPlayerParty
|
|
_08076B94:
|
|
ldrh r7, [r1, 0x2]
|
|
ldr r0, _08076BD4 @ =gTransformedPersonalities
|
|
adds r0, r2, r0
|
|
ldr r2, [r0]
|
|
_08076B9C:
|
|
cmp r7, 0xC9
|
|
bne _08076BEC
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _08076BD8
|
|
movs r0, 0xC9
|
|
b _08076BE2
|
|
.align 2, 0
|
|
_08076BD4: .4byte gTransformedPersonalities
|
|
_08076BD8:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_08076BE2:
|
|
lsls r1, r0, 2
|
|
ldr r0, _08076BE8 @ =gUnknown_8235E6C
|
|
b _08076CDC
|
|
.align 2, 0
|
|
_08076BE8: .4byte gUnknown_8235E6C
|
|
_08076BEC:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
bls _08076BFC
|
|
ldr r4, _08076BF8 @ =gUnknown_8235E6C
|
|
b _08076CDE
|
|
.align 2, 0
|
|
_08076BF8: .4byte gUnknown_8235E6C
|
|
_08076BFC:
|
|
lsls r1, r7, 2
|
|
ldr r0, _08076C04 @ =gUnknown_8235E6C
|
|
b _08076CDC
|
|
.align 2, 0
|
|
_08076C04: .4byte gUnknown_8235E6C
|
|
_08076C08:
|
|
ldr r0, _08076C48 @ =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
mov r1, r8
|
|
lsls r2, r1, 2
|
|
adds r1, r2, r0
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _08076C54
|
|
ldr r0, _08076C4C @ =gBattlerPartyIndexes
|
|
mov r1, r8
|
|
lsls r4, r1, 1
|
|
adds r4, r0
|
|
ldrh r0, [r4]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, _08076C50 @ =gEnemyParty
|
|
adds r0, r5
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldrh r0, [r4]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _08076C5C
|
|
.align 2, 0
|
|
_08076C48: .4byte gBattleSpritesDataPtr
|
|
_08076C4C: .4byte gBattlerPartyIndexes
|
|
_08076C50: .4byte gEnemyParty
|
|
_08076C54:
|
|
ldrh r7, [r1, 0x2]
|
|
ldr r0, _08076C94 @ =gTransformedPersonalities
|
|
adds r0, r2, r0
|
|
ldr r2, [r0]
|
|
_08076C5C:
|
|
cmp r7, 0xC9
|
|
bne _08076CA6
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _08076C98
|
|
movs r0, 0xC9
|
|
b _08076CA2
|
|
.align 2, 0
|
|
_08076C94: .4byte gTransformedPersonalities
|
|
_08076C98:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_08076CA2:
|
|
lsls r1, r0, 2
|
|
b _08076CDA
|
|
_08076CA6:
|
|
ldr r0, _08076CBC @ =0x00000181
|
|
cmp r7, r0
|
|
bne _08076CC8
|
|
ldr r0, _08076CC0 @ =gBattleMonForms
|
|
add r0, r8
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
ldr r1, _08076CC4 @ =gUnknown_83AE03C
|
|
adds r4, r0, r1
|
|
b _08076CDE
|
|
.align 2, 0
|
|
_08076CBC: .4byte 0x00000181
|
|
_08076CC0: .4byte gBattleMonForms
|
|
_08076CC4: .4byte gUnknown_83AE03C
|
|
_08076CC8:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
bls _08076CD8
|
|
ldr r4, _08076CD4 @ =gUnknown_82349CC
|
|
b _08076CDE
|
|
.align 2, 0
|
|
_08076CD4: .4byte gUnknown_82349CC
|
|
_08076CD8:
|
|
lsls r1, r7, 2
|
|
_08076CDA:
|
|
ldr r0, _08076CF0 @ =gUnknown_82349CC
|
|
_08076CDC:
|
|
adds r4, r1, r0
|
|
_08076CDE:
|
|
mov r0, r9
|
|
cmp r0, 0x6
|
|
bhi _08076D8E
|
|
lsls r0, 2
|
|
ldr r1, _08076CF4 @ =_08076CF8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08076CF0: .4byte gUnknown_82349CC
|
|
_08076CF4: .4byte _08076CF8
|
|
.align 2, 0
|
|
_08076CF8:
|
|
.4byte _08076D14
|
|
.4byte _08076D1E
|
|
.4byte _08076D4A
|
|
.4byte _08076D62
|
|
.4byte _08076D26
|
|
.4byte _08076D38
|
|
.4byte _08076D7A
|
|
_08076D14:
|
|
ldrb r1, [r4]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
lsls r0, 3
|
|
b _08076D90
|
|
_08076D1E:
|
|
ldrb r0, [r4]
|
|
lsrs r0, 4
|
|
lsls r0, 3
|
|
b _08076D90
|
|
_08076D26:
|
|
mov r0, r8
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r4]
|
|
lsrs r1, 4
|
|
b _08076D5C
|
|
_08076D38:
|
|
mov r0, r8
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r4]
|
|
lsrs r1, 4
|
|
b _08076D74
|
|
_08076D4A:
|
|
mov r0, r8
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r2, [r4]
|
|
movs r1, 0xF
|
|
ands r1, r2
|
|
_08076D5C:
|
|
lsls r1, 2
|
|
subs r0, r1
|
|
b _08076D90
|
|
_08076D62:
|
|
mov r0, r8
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r2, [r4]
|
|
movs r1, 0xF
|
|
ands r1, r2
|
|
_08076D74:
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
b _08076D90
|
|
_08076D7A:
|
|
mov r0, r8
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1F
|
|
ldrb r1, [r4, 0x1]
|
|
subs r0, r1
|
|
b _08076D90
|
|
_08076D8E:
|
|
movs r0, 0
|
|
_08076D90:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8076B2C
|
|
|
|
thumb_func_start sub_8076D9C
|
|
sub_8076D9C: @ 8076D9C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
mov r9, r2
|
|
mov r10, r3
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
bne _08076DBA
|
|
movs r5, 0
|
|
movs r6, 0x1
|
|
b _08076DBE
|
|
_08076DBA:
|
|
movs r5, 0x2
|
|
movs r6, 0x3
|
|
_08076DBE:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08076E06
|
|
movs r0, 0x2
|
|
eors r4, r0
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
mov r0, r8
|
|
lsls r1, r0, 16
|
|
lsls r2, r7, 16
|
|
b _08076E12
|
|
_08076E06:
|
|
mov r0, r8
|
|
lsls r1, r0, 16
|
|
lsrs r5, r1, 16
|
|
lsls r0, r7, 16
|
|
lsrs r3, r0, 16
|
|
adds r2, r0, 0
|
|
_08076E12:
|
|
asrs r0, r1, 16
|
|
adds r0, r5
|
|
asrs r0, 1
|
|
mov r1, r9
|
|
strh r0, [r1]
|
|
asrs r0, r2, 16
|
|
adds r0, r3
|
|
asrs r0, 1
|
|
mov r1, r10
|
|
strh r0, [r1]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8076D9C
|
|
|
|
thumb_func_start sub_8076E34
|
|
sub_8076E34: @ 8076E34
|
|
push {r4-r6,lr}
|
|
mov r6, r10
|
|
mov r5, r9
|
|
mov r4, r8
|
|
push {r4-r6}
|
|
sub sp, 0x4
|
|
lsls r6, r1, 24
|
|
lsrs r6, 24
|
|
ldr r0, _08076ECC @ =SpriteCallbackDummy
|
|
mov r10, r0
|
|
bl CreateInvisibleSpriteWithCallback
|
|
mov r8, r0
|
|
mov r0, r8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r0, _08076ED0 @ =gSprites
|
|
mov r9, r0
|
|
mov r0, r8
|
|
lsls r3, r0, 4
|
|
add r3, r8
|
|
lsls r3, 2
|
|
mov r0, r9
|
|
adds r5, r3, r0
|
|
lsls r4, r6, 4
|
|
adds r4, r6
|
|
lsls r4, 2
|
|
add r4, r9
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x44
|
|
str r3, [sp]
|
|
bl memcpy
|
|
adds r2, r5, 0
|
|
adds r2, 0x3F
|
|
ldrb r0, [r2]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrb r2, [r5, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
strb r0, [r5, 0x5]
|
|
ldrb r0, [r5, 0x1]
|
|
ands r1, r0
|
|
movs r0, 0x8
|
|
orrs r1, r0
|
|
strb r1, [r5, 0x1]
|
|
ldrh r1, [r4, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
ldrh r2, [r5, 0x4]
|
|
ldr r0, _08076ED4 @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
movs r0, 0x1C
|
|
add r9, r0
|
|
ldr r3, [sp]
|
|
add r3, r9
|
|
mov r0, r10
|
|
str r0, [r3]
|
|
mov r0, r8
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08076ECC: .4byte SpriteCallbackDummy
|
|
_08076ED0: .4byte gSprites
|
|
_08076ED4: .4byte 0xfffffc00
|
|
thumb_func_end sub_8076E34
|
|
|
|
thumb_func_start sub_8076ED8
|
|
sub_8076ED8: @ 8076ED8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8074FCC
|
|
ldr r0, _08076F10 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08076F18
|
|
ldr r2, _08076F14 @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x20]
|
|
ldrh r1, [r2]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r2, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r2, 0x6]
|
|
adds r3, r4, 0
|
|
adds r3, 0x3F
|
|
ldrb r0, [r3]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
adds r1, r2, 0
|
|
b _08076F22
|
|
.align 2, 0
|
|
_08076F10: .4byte gBattleAnimAttacker
|
|
_08076F14: .4byte gBattleAnimArgs
|
|
_08076F18:
|
|
ldr r1, _08076F4C @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
_08076F22:
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r4, 0x38]
|
|
ldr r1, _08076F50 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _08076F54 @ =sub_8074E70
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08076F4C: .4byte gBattleAnimArgs
|
|
_08076F50: .4byte move_anim_8074EE0
|
|
_08076F54: .4byte sub_8074E70
|
|
thumb_func_end sub_8076ED8
|
|
|
|
thumb_func_start sub_8076F58
|
|
sub_8076F58: @ 8076F58
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08076F80 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08076F88
|
|
ldr r2, _08076F84 @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x20]
|
|
ldrh r1, [r2]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x20]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r2, r1]
|
|
negs r0, r0
|
|
strh r0, [r2, 0x6]
|
|
adds r1, r2, 0
|
|
b _08076F92
|
|
.align 2, 0
|
|
_08076F80: .4byte gBattleAnimAttacker
|
|
_08076F84: .4byte gBattleAnimArgs
|
|
_08076F88:
|
|
ldr r1, _08076FC4 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
_08076F92:
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r4, 0x38]
|
|
ldrb r1, [r1, 0xC]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldr r1, _08076FC8 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _08076FCC @ =sub_8074E70
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08076FC4: .4byte gBattleAnimArgs
|
|
_08076FC8: .4byte move_anim_8074EE0
|
|
_08076FCC: .4byte sub_8074E70
|
|
thumb_func_end sub_8076F58
|
|
|
|
thumb_func_start sub_8076FD0
|
|
sub_8076FD0: @ 8076FD0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8074FCC
|
|
ldr r0, _08076FF4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08076FFC
|
|
ldr r0, _08076FF8 @ =gBattleAnimArgs
|
|
ldrh r1, [r4, 0x20]
|
|
ldrh r2, [r0]
|
|
subs r1, r2
|
|
strh r1, [r4, 0x20]
|
|
b _08077008
|
|
.align 2, 0
|
|
_08076FF4: .4byte gBattleAnimAttacker
|
|
_08076FF8: .4byte gBattleAnimArgs
|
|
_08076FFC:
|
|
ldr r1, _08077024 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r1, 0
|
|
_08077008:
|
|
ldrh r0, [r0, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _08077028 @ =sub_8074F6C
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _0807702C @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08077024: .4byte gBattleAnimArgs
|
|
_08077028: .4byte sub_8074F6C
|
|
_0807702C: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_8076FD0
|
|
|
|
thumb_func_start sub_8077030
|
|
sub_8077030: @ 8077030
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080770C4 @ =gTasks
|
|
adds r5, r1, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r6, 0
|
|
strh r0, [r5, 0x8]
|
|
ldr r7, _080770C8 @ =gBattleAnimAttacker
|
|
ldrb r0, [r7]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0x8
|
|
cmp r0, 0
|
|
beq _08077064
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
adds r1, r0, 0
|
|
_08077064:
|
|
strh r1, [r5, 0xA]
|
|
strh r6, [r5, 0xC]
|
|
strh r6, [r5, 0xE]
|
|
ldr r4, _080770CC @ =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrh r1, [r0, 0x24]
|
|
ldrh r2, [r5, 0x8]
|
|
subs r1, r2
|
|
strh r1, [r0, 0x24]
|
|
ldr r0, _080770D0 @ =0x00002771
|
|
bl AllocSpritePalette
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x10]
|
|
strh r6, [r5, 0x12]
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
adds r0, 0x10
|
|
lsls r0, 20
|
|
lsrs r6, r0, 16
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
lsls r4, r0, 4
|
|
ldrb r0, [r7]
|
|
bl GetBattlerSpriteSubpriority
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x14]
|
|
cmp r0, 0x14
|
|
beq _080770C0
|
|
cmp r0, 0x28
|
|
bne _080770D4
|
|
_080770C0:
|
|
movs r0, 0x2
|
|
b _080770D6
|
|
.align 2, 0
|
|
_080770C4: .4byte gTasks
|
|
_080770C8: .4byte gBattleAnimAttacker
|
|
_080770CC: .4byte gSprites
|
|
_080770D0: .4byte 0x00002771
|
|
_080770D4:
|
|
movs r0, 0x3
|
|
_080770D6:
|
|
strh r0, [r5, 0x14]
|
|
lsls r0, r4, 1
|
|
ldr r1, _08077104 @ =gPlttBufferUnfaded
|
|
adds r0, r1
|
|
lsls r1, r6, 1
|
|
ldr r2, _08077108 @ =gPlttBufferFaded
|
|
adds r1, r2
|
|
ldr r2, _0807710C @ =0x04000008
|
|
bl CpuSet
|
|
ldr r0, _08077110 @ =gBattleAnimArgs
|
|
ldrb r2, [r0, 0x2]
|
|
ldrh r3, [r0]
|
|
adds r0, r6, 0
|
|
movs r1, 0x10
|
|
bl BlendPalette
|
|
ldr r0, _08077114 @ =sub_8077118
|
|
str r0, [r5]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08077104: .4byte gPlttBufferUnfaded
|
|
_08077108: .4byte gPlttBufferFaded
|
|
_0807710C: .4byte 0x04000008
|
|
_08077110: .4byte gBattleAnimArgs
|
|
_08077114: .4byte sub_8077118
|
|
thumb_func_end sub_8077030
|
|
|
|
thumb_func_start sub_8077118
|
|
sub_8077118: @ 8077118
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807713C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0807717C
|
|
cmp r0, 0x1
|
|
bgt _08077140
|
|
cmp r0, 0
|
|
beq _08077146
|
|
b _080771D8
|
|
.align 2, 0
|
|
_0807713C: .4byte gTasks
|
|
_08077140:
|
|
cmp r0, 0x2
|
|
beq _080771C4
|
|
b _080771D8
|
|
_08077146:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_80771E4
|
|
ldr r2, _08077178 @ =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r4, 0xA]
|
|
ldrh r2, [r0, 0x24]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x24]
|
|
ldrh r1, [r4, 0xE]
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
bne _080771D8
|
|
strh r1, [r4, 0xE]
|
|
b _080771B6
|
|
.align 2, 0
|
|
_08077178: .4byte gSprites
|
|
_0807717C:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_80771E4
|
|
ldr r3, _080771C0 @ =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, 0xA]
|
|
subs r1, r2
|
|
strh r1, [r0, 0x24]
|
|
ldrh r0, [r4, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
cmp r2, 0
|
|
bne _080771D8
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
strh r2, [r1, 0x24]
|
|
_080771B6:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
b _080771D8
|
|
.align 2, 0
|
|
_080771C0: .4byte gSprites
|
|
_080771C4:
|
|
movs r2, 0x12
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080771D8
|
|
ldr r0, _080771E0 @ =0x00002771
|
|
bl FreeSpritePaletteByTag
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080771D8:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080771E0: .4byte 0x00002771
|
|
thumb_func_end sub_8077118
|
|
|
|
thumb_func_start sub_80771E4
|
|
sub_80771E4: @ 80771E4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
movs r0, 0
|
|
bl duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
blt _08077254
|
|
ldr r5, _08077260 @ =gSprites
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r3, r4, r5
|
|
movs r0, 0x3
|
|
ldrb r1, [r6, 0x14]
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x5]
|
|
ldrb r1, [r6, 0x10]
|
|
lsls r1, 4
|
|
movs r2, 0xF
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x5]
|
|
movs r0, 0x8
|
|
strh r0, [r3, 0x2E]
|
|
mov r0, r8
|
|
strh r0, [r3, 0x30]
|
|
strh r7, [r3, 0x32]
|
|
movs r0, 0x8
|
|
ldrsh r1, [r6, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x24]
|
|
strh r0, [r3, 0x24]
|
|
adds r5, 0x1C
|
|
adds r4, r5
|
|
ldr r0, _08077264 @ =sub_8077268
|
|
str r0, [r4]
|
|
ldrh r0, [r6, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x12]
|
|
_08077254:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08077260: .4byte gSprites
|
|
_08077264: .4byte sub_8077268
|
|
thumb_func_end sub_80771E4
|
|
|
|
thumb_func_start sub_8077268
|
|
sub_8077268: @ 8077268
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08077292
|
|
ldr r2, _08077298 @ =gTasks
|
|
movs r0, 0x30
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x12]
|
|
subs r1, 0x1
|
|
strh r1, [r0, 0x12]
|
|
adds r0, r3, 0
|
|
bl obj_delete_but_dont_free_vram
|
|
_08077292:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08077298: .4byte gTasks
|
|
thumb_func_end sub_8077268
|
|
|
|
thumb_func_start sub_807729C
|
|
sub_807729C: @ 807729C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080772D0 @ =gBattleAnimAttacker
|
|
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]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080772D4
|
|
movs r0, 0x5
|
|
b _080772D6
|
|
.align 2, 0
|
|
_080772D0: .4byte gBattleAnimAttacker
|
|
_080772D4:
|
|
ldr r0, _080772E8 @ =0x0000fff6
|
|
_080772D6:
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080772EC @ =0x0000ffd8
|
|
strh r0, [r5, 0x30]
|
|
ldr r0, _080772F0 @ =sub_80772F4
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080772E8: .4byte 0x0000fff6
|
|
_080772EC: .4byte 0x0000ffd8
|
|
_080772F0: .4byte sub_80772F4
|
|
thumb_func_end sub_807729C
|
|
|
|
thumb_func_start sub_80772F4
|
|
sub_80772F4: @ 80772F4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
ldrh r1, [r4, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r5, [r4, 0x30]
|
|
ldrh r2, [r4, 0x34]
|
|
adds r0, r5, r2
|
|
strh r0, [r4, 0x34]
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x34
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
strh r0, [r4, 0x26]
|
|
lsls r0, r5, 16
|
|
asrs r0, 16
|
|
movs r1, 0x14
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _08077330
|
|
adds r0, r5, 0x1
|
|
strh r0, [r4, 0x30]
|
|
_08077330:
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x26
|
|
ldrsh r1, [r4, r2]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _08077348
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08077348:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80772F4
|
|
|
|
thumb_func_start sub_8077350
|
|
sub_8077350: @ 8077350
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _08077388 @ =gBattleAnimArgs
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x8]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0xA]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _0807738C @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08077390
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1E
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r5, 0xA]
|
|
subs r0, 0x14
|
|
b _0807739E
|
|
.align 2, 0
|
|
_08077388: .4byte gBattleAnimArgs
|
|
_0807738C: .4byte gBattleAnimTarget
|
|
_08077390:
|
|
ldrh r0, [r5, 0x8]
|
|
subs r0, 0x1E
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r5, 0xA]
|
|
subs r0, 0x50
|
|
_0807739E:
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080773B4 @ =StartAnimLinearTranslation
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080773B8 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080773B4: .4byte StartAnimLinearTranslation
|
|
_080773B8: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_8077350
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|