mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-11-19 13:07:38 +01:00
3816 lines
58 KiB
ArmAsm
3816 lines
58 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start AllocateBattleSpritesData
|
|
AllocateBattleSpritesData: @ 805D118
|
|
push {r4,lr}
|
|
ldr r4, =gBattleSpritesDataPtr
|
|
movs r0, 0x10
|
|
bl AllocZeroed
|
|
str r0, [r4]
|
|
movs r0, 0x10
|
|
bl AllocZeroed
|
|
ldr r1, [r4]
|
|
str r0, [r1]
|
|
movs r0, 0x30
|
|
bl AllocZeroed
|
|
ldr r1, [r4]
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x10
|
|
bl AllocZeroed
|
|
ldr r1, [r4]
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x50
|
|
bl AllocZeroed
|
|
ldr r1, [r4]
|
|
str r0, [r1, 0xC]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end AllocateBattleSpritesData
|
|
|
|
thumb_func_start FreeBattleSpritesData
|
|
FreeBattleSpritesData: @ 805D158
|
|
push {r4,r5,lr}
|
|
ldr r5, =gBattleSpritesDataPtr
|
|
ldr r0, [r5]
|
|
cmp r0, 0
|
|
beq _0805D192
|
|
ldr r0, [r0, 0xC]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
movs r4, 0
|
|
str r4, [r0, 0xC]
|
|
ldr r0, [r0, 0x8]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
str r4, [r0, 0x8]
|
|
ldr r0, [r0, 0x4]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
str r4, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
str r4, [r0]
|
|
bl Free
|
|
str r4, [r5]
|
|
_0805D192:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end FreeBattleSpritesData
|
|
|
|
thumb_func_start ChooseMoveAndTargetInBattlePalace
|
|
ChooseMoveAndTargetInBattlePalace: @ 805D19C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r9, r0
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 9
|
|
ldr r1, =gBattleBufferA + 4
|
|
adds r2, r1
|
|
mov r10, r2
|
|
movs r1, 0
|
|
movs r2, 0xFF
|
|
bl CheckMoveLimitations
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x64
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, 0x92
|
|
ldrb r1, [r0]
|
|
ldr r2, =gBitTable
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
negs r0, r1
|
|
orrs r0, r1
|
|
asrs r4, r0, 31
|
|
movs r0, 0x2
|
|
ands r4, r0
|
|
adds r6, r4, 0
|
|
adds r5, r4, 0x2
|
|
b _0805D20E
|
|
.pool
|
|
_0805D20C:
|
|
adds r4, 0x1
|
|
_0805D20E:
|
|
cmp r4, r5
|
|
bge _0805D234
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
ldr r1, =gBattleMons + 0x48
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl GetNatureFromPersonality
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r4, r0
|
|
ldr r2, =gUnknown_0831C494
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, r7
|
|
ble _0805D20C
|
|
_0805D234:
|
|
subs r7, r4, r6
|
|
cmp r4, r5
|
|
bne _0805D23C
|
|
movs r7, 0x2
|
|
_0805D23C:
|
|
movs r6, 0
|
|
movs r4, 0
|
|
mov r1, r10
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
beq _0805D27C
|
|
mov r5, r10
|
|
_0805D24A:
|
|
ldrh r0, [r5]
|
|
bl sub_805D4A8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r7, r0
|
|
bne _0805D26E
|
|
mov r0, r10
|
|
adds r0, 0x8
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0805D26E
|
|
ldr r0, =gBitTable
|
|
lsls r1, r4, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
orrs r6, r0
|
|
_0805D26E:
|
|
adds r5, 0x2
|
|
adds r4, 0x1
|
|
cmp r4, 0x3
|
|
bgt _0805D27C
|
|
ldrh r0, [r5]
|
|
cmp r0, 0
|
|
bne _0805D24A
|
|
_0805D27C:
|
|
cmp r6, 0
|
|
beq _0805D2AC
|
|
ldr r3, =gBattleStruct
|
|
ldr r1, [r3]
|
|
adds r1, 0x92
|
|
ldrb r2, [r1]
|
|
movs r0, 0xF
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r1, [r3]
|
|
adds r1, 0x92
|
|
lsls r0, r6, 4
|
|
ldrb r2, [r1]
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
lsls r0, r6, 24
|
|
lsrs r0, 24
|
|
bl BattleAI_SetupAIData
|
|
bl BattleAI_ChooseMoveOrAction
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0805D2AC:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r9, r0
|
|
beq _0805D2B6
|
|
b _0805D40C
|
|
_0805D2B6:
|
|
mov r2, r8
|
|
cmp r2, 0xF
|
|
bne _0805D2BE
|
|
b _0805D3EA
|
|
_0805D2BE:
|
|
movs r5, 0
|
|
movs r6, 0
|
|
ldr r7, =gBitTable
|
|
mov r4, r10
|
|
_0805D2C6:
|
|
ldrh r0, [r4]
|
|
bl sub_805D4A8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805D2DE
|
|
ldr r0, [r7]
|
|
mov r1, r8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805D2DE
|
|
adds r5, 0x1
|
|
_0805D2DE:
|
|
ldrh r0, [r4]
|
|
bl sub_805D4A8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0805D2F8
|
|
ldr r0, [r7]
|
|
mov r2, r8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0805D2F8
|
|
adds r5, 0x10
|
|
_0805D2F8:
|
|
ldrh r0, [r4]
|
|
bl sub_805D4A8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _0805D316
|
|
ldr r0, [r7]
|
|
mov r1, r8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805D316
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r5, r2
|
|
_0805D316:
|
|
adds r7, 0x4
|
|
adds r4, 0x2
|
|
ldr r0, =gBitTable
|
|
adds r0, 0xC
|
|
cmp r7, r0
|
|
ble _0805D2C6
|
|
movs r1, 0xF
|
|
ands r1, r5
|
|
cmp r1, 0x1
|
|
ble _0805D32C
|
|
adds r6, 0x1
|
|
_0805D32C:
|
|
movs r0, 0xF0
|
|
ands r0, r5
|
|
cmp r0, 0x1F
|
|
ble _0805D336
|
|
adds r6, 0x1
|
|
_0805D336:
|
|
ldr r2, =0x000001ff
|
|
cmp r0, r2
|
|
ble _0805D33E
|
|
adds r6, 0x1
|
|
_0805D33E:
|
|
cmp r6, 0x1
|
|
bgt _0805D346
|
|
cmp r6, 0
|
|
bne _0805D388
|
|
_0805D346:
|
|
ldr r5, =gBitTable
|
|
_0805D348:
|
|
bl Random
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r0
|
|
lsrs r4, r1, 16
|
|
lsls r0, r4, 2
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
mov r1, r8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805D366
|
|
mov r9, r4
|
|
_0805D366:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r9, r0
|
|
beq _0805D348
|
|
b _0805D3D4
|
|
.pool
|
|
_0805D388:
|
|
cmp r1, 0x1
|
|
ble _0805D38E
|
|
movs r6, 0
|
|
_0805D38E:
|
|
cmp r0, 0x1F
|
|
ble _0805D394
|
|
movs r6, 0x1
|
|
_0805D394:
|
|
cmp r0, r2
|
|
ble _0805D39A
|
|
movs r6, 0x2
|
|
_0805D39A:
|
|
bl Random
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r0
|
|
lsrs r4, r1, 16
|
|
ldr r1, =gBitTable
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov r2, r8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0805D3CC
|
|
lsls r0, r4, 1
|
|
add r0, r10
|
|
ldrh r0, [r0]
|
|
bl sub_805D4A8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r6, r0
|
|
bne _0805D3CC
|
|
mov r9, r4
|
|
_0805D3CC:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r9, r0
|
|
beq _0805D39A
|
|
_0805D3D4:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x64
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x31
|
|
bls _0805D40C
|
|
_0805D3EA:
|
|
ldr r2, =gProtectStructs
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
lsls r1, 4
|
|
adds r1, r2
|
|
ldrb r0, [r1, 0x2]
|
|
movs r2, 0x10
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0
|
|
b _0805D496
|
|
.pool
|
|
_0805D40C:
|
|
mov r1, r9
|
|
lsls r0, r1, 1
|
|
mov r2, r10
|
|
adds r1, r2, r0
|
|
ldrh r0, [r1]
|
|
cmp r0, 0xAE
|
|
bne _0805D434
|
|
ldrb r0, [r2, 0x12]
|
|
movs r5, 0
|
|
cmp r0, 0x7
|
|
beq _0805D442
|
|
ldrb r1, [r2, 0x13]
|
|
movs r0, 0x7
|
|
eors r1, r0
|
|
negs r0, r1
|
|
orrs r0, r1
|
|
asrs r5, r0, 31
|
|
movs r0, 0x10
|
|
ands r5, r0
|
|
b _0805D442
|
|
_0805D434:
|
|
ldr r2, =gBattleMoves
|
|
ldrh r1, [r1]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r5, [r0, 0x6]
|
|
_0805D442:
|
|
movs r0, 0x10
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _0805D45C
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r0, 8
|
|
b _0805D48A
|
|
.pool
|
|
_0805D45C:
|
|
cmp r5, 0
|
|
bne _0805D470
|
|
bl sub_805D5F4
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r2, r9
|
|
orrs r2, r0
|
|
mov r9, r2
|
|
b _0805D490
|
|
_0805D470:
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
bl GetBankIdentity
|
|
adds r1, r0, 0
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
eors r0, r2
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 16
|
|
_0805D48A:
|
|
mov r1, r9
|
|
orrs r1, r0
|
|
mov r9, r1
|
|
_0805D490:
|
|
mov r2, r9
|
|
lsls r0, r2, 16
|
|
lsrs r0, 16
|
|
_0805D496:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end ChooseMoveAndTargetInBattlePalace
|
|
|
|
thumb_func_start sub_805D4A8
|
|
sub_805D4A8: @ 805D4A8
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
ldr r1, =gBattleMoves
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x6]
|
|
adds r3, r1, 0
|
|
cmp r0, 0x40
|
|
bls _0805D4C2
|
|
b _0805D5EE
|
|
_0805D4C2:
|
|
lsls r0, 2
|
|
ldr r1, =_0805D4D4
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0805D4D4:
|
|
.4byte _0805D5D8
|
|
.4byte _0805D5E6
|
|
.4byte _0805D5D8
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5D8
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5D8
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EA
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5D8
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5EE
|
|
.4byte _0805D5E6
|
|
_0805D5D8:
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r0, [r0, 0x1]
|
|
cmp r0, 0
|
|
bne _0805D5EE
|
|
_0805D5E6:
|
|
movs r0, 0x2
|
|
b _0805D5F0
|
|
_0805D5EA:
|
|
movs r0, 0x1
|
|
b _0805D5F0
|
|
_0805D5EE:
|
|
movs r0, 0
|
|
_0805D5F0:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_805D4A8
|
|
|
|
thumb_func_start sub_805D5F4
|
|
sub_805D5F4: @ 805D5F4
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805D6FA
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805D630
|
|
movs r0, 0x1
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
movs r0, 0x3
|
|
b _0805D63E
|
|
.pool
|
|
_0805D630:
|
|
movs r0, 0
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
movs r0, 0x2
|
|
_0805D63E:
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r1, =gBattleMons
|
|
movs r2, 0x58
|
|
mov r0, r8
|
|
muls r0, r2
|
|
adds r5, r0, r1
|
|
adds r0, r7, 0
|
|
muls r0, r2
|
|
adds r6, r0, r1
|
|
ldrh r0, [r5, 0x28]
|
|
ldrh r3, [r6, 0x28]
|
|
cmp r0, r3
|
|
bne _0805D680
|
|
bl Random
|
|
adds r3, r0, 0
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
eors r0, r2
|
|
movs r1, 0x2
|
|
ands r1, r3
|
|
adds r0, r1
|
|
b _0805D702
|
|
.pool
|
|
_0805D680:
|
|
ldr r4, =gUnknown_0831C604
|
|
ldr r0, =gActiveBank
|
|
mov r9, r0
|
|
ldrb r0, [r0]
|
|
muls r0, r2
|
|
adds r1, 0x48
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl GetNatureFromPersonality
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
ldrb r4, [r0]
|
|
cmp r4, 0x1
|
|
beq _0805D6CC
|
|
cmp r4, 0x1
|
|
bgt _0805D6B4
|
|
cmp r4, 0
|
|
beq _0805D6BA
|
|
b _0805D6FA
|
|
.pool
|
|
_0805D6B4:
|
|
cmp r4, 0x2
|
|
beq _0805D6DE
|
|
b _0805D6FA
|
|
_0805D6BA:
|
|
ldrh r0, [r5, 0x28]
|
|
ldrh r6, [r6, 0x28]
|
|
cmp r0, r6
|
|
bls _0805D6C8
|
|
mov r1, r8
|
|
lsls r0, r1, 8
|
|
b _0805D704
|
|
_0805D6C8:
|
|
lsls r0, r7, 8
|
|
b _0805D704
|
|
_0805D6CC:
|
|
ldrh r0, [r5, 0x28]
|
|
ldrh r6, [r6, 0x28]
|
|
cmp r0, r6
|
|
bcs _0805D6DA
|
|
mov r3, r8
|
|
lsls r0, r3, 8
|
|
b _0805D704
|
|
_0805D6DA:
|
|
lsls r0, r7, 8
|
|
b _0805D704
|
|
_0805D6DE:
|
|
bl Random
|
|
adds r3, r0, 0
|
|
mov r0, r9
|
|
ldrb r1, [r0]
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
eors r0, r2
|
|
ands r4, r3
|
|
adds r0, r4
|
|
lsls r0, 24
|
|
lsrs r0, 16
|
|
b _0805D704
|
|
_0805D6FA:
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
eors r0, r1
|
|
_0805D702:
|
|
lsls r0, 8
|
|
_0805D704:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_805D5F4
|
|
|
|
thumb_func_start sub_805D714
|
|
sub_805D714: @ 805D714
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, =gSprites
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r0, r2
|
|
adds r0, r1, 0
|
|
adds r0, 0x3F
|
|
ldrb r3, [r0]
|
|
lsls r0, r3, 26
|
|
cmp r0, 0
|
|
bge _0805D766
|
|
adds r0, r1, 0
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
blt _0805D766
|
|
adds r2, r1, 0
|
|
adds r2, 0x2C
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 25
|
|
cmp r0, 0
|
|
bge _0805D75C
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
b _0805D766
|
|
.pool
|
|
_0805D75C:
|
|
lsls r0, r3, 27
|
|
cmp r0, 0
|
|
bge _0805D766
|
|
ldr r0, =SpriteCallbackDummy
|
|
str r0, [r4, 0x1C]
|
|
_0805D766:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805D714
|
|
|
|
thumb_func_start sub_805D770
|
|
sub_805D770: @ 805D770
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
adds r3, r4, 0
|
|
adds r3, 0x2C
|
|
ldrb r0, [r3]
|
|
movs r2, 0x40
|
|
orrs r0, r2
|
|
strb r0, [r3]
|
|
ldr r0, =SpriteCallbackDummy
|
|
str r0, [r4, 0x1C]
|
|
cmp r1, 0
|
|
bne _0805D798
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
b _0805D7A0
|
|
.pool
|
|
_0805D798:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
_0805D7A0:
|
|
adds r0, r4, 0
|
|
bl AnimateSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_805D770
|
|
|
|
thumb_func_start sub_805D7AC
|
|
sub_805D7AC: @ 805D7AC
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r0, =gUnknown_020243FC
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805D7E4
|
|
ldrh r0, [r2, 0x2E]
|
|
ldrh r1, [r2, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x24]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _0805D7E4
|
|
movs r1, 0x26
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
beq _0805D7E0
|
|
ldr r0, =sub_805D7EC
|
|
b _0805D7E2
|
|
.pool
|
|
_0805D7E0:
|
|
ldr r0, =SpriteCallbackDummy
|
|
_0805D7E2:
|
|
str r0, [r2, 0x1C]
|
|
_0805D7E4:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805D7AC
|
|
|
|
thumb_func_start sub_805D7EC
|
|
sub_805D7EC: @ 805D7EC
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x26]
|
|
subs r0, 0x2
|
|
strh r0, [r1, 0x26]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _0805D800
|
|
ldr r0, =SpriteCallbackDummy
|
|
str r0, [r1, 0x1C]
|
|
_0805D800:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805D7EC
|
|
|
|
thumb_func_start DoStatusAnimation
|
|
DoStatusAnimation: @ 805D808
|
|
push {r4-r6,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 24
|
|
ldr r6, =gBattleSpritesDataPtr
|
|
ldr r1, [r6]
|
|
ldr r5, =gActiveBank
|
|
ldrb r2, [r5]
|
|
ldr r3, [r1, 0x4]
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrb r2, [r1]
|
|
movs r3, 0x10
|
|
orrs r2, r3
|
|
strb r2, [r1]
|
|
cmp r0, 0
|
|
bne _0805D888
|
|
cmp r4, 0x20
|
|
bne _0805D844
|
|
ldrb r0, [r5]
|
|
movs r1, 0x6
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
.pool
|
|
_0805D844:
|
|
cmp r4, 0x8
|
|
beq _0805D850
|
|
movs r0, 0x80
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0805D85A
|
|
_0805D850:
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D85A:
|
|
cmp r4, 0x10
|
|
bne _0805D868
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D868:
|
|
movs r0, 0x7
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0805D87A
|
|
ldrb r0, [r5]
|
|
movs r1, 0x4
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D87A:
|
|
cmp r4, 0x40
|
|
bne _0805D8EA
|
|
ldrb r0, [r5]
|
|
movs r1, 0x5
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D888:
|
|
movs r0, 0xF0
|
|
lsls r0, 12
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0805D89C
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D89C:
|
|
movs r0, 0x7
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0805D8AE
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D8AE:
|
|
movs r0, 0x80
|
|
lsls r0, 21
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0805D8C2
|
|
ldrb r0, [r5]
|
|
movs r1, 0x7
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D8C2:
|
|
movs r0, 0x80
|
|
lsls r0, 20
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0805D8D6
|
|
ldrb r0, [r5]
|
|
movs r1, 0x8
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D8D6:
|
|
movs r0, 0xE0
|
|
lsls r0, 8
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0805D8EA
|
|
ldrb r0, [r5]
|
|
movs r1, 0x9
|
|
bl move_anim_start_t2
|
|
b _0805D902
|
|
_0805D8EA:
|
|
ldr r0, [r6]
|
|
ldrb r2, [r5]
|
|
ldr r0, [r0, 0x4]
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r2, [r1]
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
_0805D902:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DoStatusAnimation
|
|
|
|
thumb_func_start DoBattleAnimationFromTable
|
|
DoBattleAnimationFromTable: @ 805D908
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
ldr r4, [sp, 0x24]
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r10, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp]
|
|
lsls r3, 24
|
|
lsrs r5, r3, 24
|
|
lsls r4, 16
|
|
lsrs r7, r4, 16
|
|
cmp r5, 0
|
|
bne _0805D950
|
|
movs r0, 0x80
|
|
ands r0, r7
|
|
cmp r0, 0
|
|
beq _0805D950
|
|
ldr r0, =gBattleMonForms
|
|
adds r0, r6, r0
|
|
movs r2, 0x7F
|
|
adds r1, r7, 0
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
movs r0, 0x1
|
|
b _0805DA1E
|
|
.pool
|
|
_0805D950:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
mov r9, r0
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
lsls r4, r6, 2
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
mov r8, r2
|
|
mov r0, r8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805D9CC
|
|
adds r0, r5, 0
|
|
bl sub_805DAA0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805D980
|
|
movs r0, 0x1
|
|
b _0805DA1E
|
|
.pool
|
|
_0805D980:
|
|
mov r1, r9
|
|
ldr r0, [r1]
|
|
ldr r0, [r0]
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805D9CC
|
|
cmp r5, 0x2
|
|
bne _0805D9CC
|
|
ldr r1, =gSprites
|
|
ldr r0, =gBankSpriteIds
|
|
adds r0, r6, r0
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
bge _0805D9CC
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl refresh_graphics_maybe
|
|
adds r0, r6, 0
|
|
bl sub_805E974
|
|
movs r0, 0x1
|
|
b _0805DA1E
|
|
.pool
|
|
_0805D9CC:
|
|
ldr r0, =gAnimBankAttacker
|
|
mov r2, r10
|
|
strb r2, [r0]
|
|
ldr r0, =gAnimBankTarget
|
|
mov r1, sp
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
ldr r4, =gBattleSpritesDataPtr
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, 0x8]
|
|
strh r7, [r0]
|
|
ldr r0, =gUnknown_082C9320
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl LaunchBattleAnimation
|
|
ldr r0, =task0A_0803415C
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
strh r6, [r1, 0x8]
|
|
ldr r0, [r4]
|
|
movs r2, 0x8
|
|
ldrsh r1, [r1, r2]
|
|
ldr r2, [r0, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r2, 0x20
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
movs r0, 0
|
|
_0805DA1E:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end DoBattleAnimationFromTable
|
|
|
|
thumb_func_start task0A_0803415C
|
|
task0A_0803415C: @ 805DA48
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, =gAnimScriptCallback
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldr r0, =gAnimScriptActive
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0805DA8A
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r2, [r0]
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r0, r1]
|
|
ldr r2, [r2, 0x4]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_0805DA8A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end task0A_0803415C
|
|
|
|
thumb_func_start sub_805DAA0
|
|
sub_805DAA0: @ 805DAA0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xD
|
|
bgt _0805DAB4
|
|
cmp r0, 0xA
|
|
bge _0805DAB8
|
|
cmp r0, 0x2
|
|
beq _0805DAB8
|
|
b _0805DABC
|
|
_0805DAB4:
|
|
cmp r0, 0x11
|
|
bne _0805DABC
|
|
_0805DAB8:
|
|
movs r0, 0x1
|
|
b _0805DABE
|
|
_0805DABC:
|
|
movs r0, 0
|
|
_0805DABE:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_805DAA0
|
|
|
|
thumb_func_start DoSpecialBattleAnimation
|
|
DoSpecialBattleAnimation: @ 805DAC4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldr r0, =gAnimBankAttacker
|
|
strb r1, [r0]
|
|
ldr r0, =gAnimBankTarget
|
|
strb r2, [r0]
|
|
ldr r0, =gUnknown_082C937C
|
|
adds r1, r3, 0
|
|
movs r2, 0
|
|
bl LaunchBattleAnimation
|
|
ldr r0, =task0A_08034248
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
strh r4, [r1, 0x8]
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
movs r2, 0x8
|
|
ldrsh r1, [r1, r2]
|
|
ldr r2, [r0, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r2, 0x40
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end DoSpecialBattleAnimation
|
|
|
|
thumb_func_start task0A_08034248
|
|
task0A_08034248: @ 805DB34
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, =gAnimScriptCallback
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldr r0, =gAnimScriptActive
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0805DB76
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r2, [r0]
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r0, r1]
|
|
ldr r2, [r2, 0x4]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_0805DB76:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end task0A_08034248
|
|
|
|
thumb_func_start IsMoveWithoutAnimation
|
|
IsMoveWithoutAnimation: @ 805DB8C
|
|
movs r0, 0
|
|
bx lr
|
|
thumb_func_end IsMoveWithoutAnimation
|
|
|
|
thumb_func_start mplay_80342A4
|
|
mplay_80342A4: @ 805DB90
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r5, 0
|
|
bl IsSEPlaying
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805DBD8
|
|
ldr r2, =gBattleSpritesDataPtr
|
|
ldr r0, [r2]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x8]
|
|
adds r1, 0x1
|
|
strb r1, [r0, 0x8]
|
|
ldr r2, [r2]
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
ldr r2, [r2, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x8]
|
|
cmp r0, 0x1D
|
|
bls _0805DBDC
|
|
ldr r0, =gMPlay_SE1
|
|
bl m4aMPlayStop
|
|
ldr r0, =gMPlay_SE2
|
|
bl m4aMPlayStop
|
|
_0805DBD8:
|
|
cmp r5, 0
|
|
beq _0805DBF0
|
|
_0805DBDC:
|
|
movs r0, 0x1
|
|
b _0805DC02
|
|
.pool
|
|
_0805DBF0:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
strb r5, [r0, 0x8]
|
|
movs r0, 0
|
|
_0805DC02:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end mplay_80342A4
|
|
|
|
thumb_func_start BattleLoadOpponentMonSpriteGfx
|
|
BattleLoadOpponentMonSpriteGfx: @ 805DC0C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
movs r1, 0
|
|
bl GetMonData
|
|
str r0, [sp]
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
mov r2, r8
|
|
lsls r1, r2, 2
|
|
adds r2, r1, r0
|
|
ldrh r0, [r2, 0x2]
|
|
cmp r0, 0
|
|
bne _0805DC50
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldr r6, [sp]
|
|
b _0805DC58
|
|
.pool
|
|
_0805DC50:
|
|
ldrh r5, [r2, 0x2]
|
|
ldr r0, =gTransformedPersonalities
|
|
adds r0, r1, r0
|
|
ldr r6, [r0]
|
|
_0805DC58:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl GetMonData
|
|
mov r10, r0
|
|
mov r0, r8
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsls r2, r5, 3
|
|
ldr r1, =gMonFrontPicTable
|
|
adds r2, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
lsrs r0, 22
|
|
adds r1, 0x4
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
adds r0, r2, 0
|
|
adds r2, r5, 0
|
|
adds r3, r6, 0
|
|
bl HandleLoadSpecialPokePic_DontHandleDeoxys
|
|
mov r3, r8
|
|
lsls r2, r3, 4
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r7, r2, r0
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
lsls r1, r3, 2
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0, 0x2]
|
|
str r1, [sp, 0x4]
|
|
mov r9, r2
|
|
cmp r0, 0
|
|
bne _0805DCBC
|
|
adds r0, r4, 0
|
|
bl pokemon_get_pal
|
|
b _0805DCC6
|
|
.pool
|
|
_0805DCBC:
|
|
adds r0, r5, 0
|
|
mov r1, r10
|
|
ldr r2, [sp]
|
|
bl species_and_otid_get_pal
|
|
_0805DCC6:
|
|
adds r6, r0, 0
|
|
ldr r4, =0x0201c000
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl LZDecompressWram
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
mov r1, r9
|
|
adds r1, 0x80
|
|
adds r0, r4, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
ldr r0, =0x00000181
|
|
cmp r5, r0
|
|
bne _0805DD1A
|
|
movs r7, 0x80
|
|
lsls r7, 1
|
|
add r7, r9
|
|
ldr r5, =gBattleStruct
|
|
ldr r1, [r5]
|
|
movs r4, 0x80
|
|
lsls r4, 1
|
|
adds r1, r4
|
|
adds r0, r6, 0
|
|
bl LZDecompressWram
|
|
ldr r0, =gBattleMonForms
|
|
add r0, r8
|
|
ldrb r1, [r0]
|
|
lsls r1, 5
|
|
adds r1, r4
|
|
ldr r0, [r5]
|
|
adds r0, r1
|
|
adds r1, r7, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
_0805DD1A:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
ldr r1, [sp, 0x4]
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
beq _0805DD46
|
|
ldr r3, =0x00007fff
|
|
adds r0, r7, 0
|
|
movs r1, 0x10
|
|
movs r2, 0x6
|
|
bl BlendPalette
|
|
lsls r1, r7, 1
|
|
ldr r0, =gPlttBufferFaded
|
|
adds r0, r1, r0
|
|
ldr r2, =gPlttBufferUnfaded
|
|
adds r1, r2
|
|
ldr r2, =0x04000008
|
|
bl CpuSet
|
|
_0805DD46:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end BattleLoadOpponentMonSpriteGfx
|
|
|
|
thumb_func_start BattleLoadPlayerMonSpriteGfx
|
|
BattleLoadPlayerMonSpriteGfx: @ 805DD7C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
adds r6, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
movs r1, 0
|
|
bl GetMonData
|
|
str r0, [sp]
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
mov r2, r8
|
|
lsls r1, r2, 2
|
|
adds r2, r1, r0
|
|
ldrh r0, [r2, 0x2]
|
|
cmp r0, 0
|
|
bne _0805DDC0
|
|
adds r0, r6, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldr r4, [sp]
|
|
b _0805DDC8
|
|
.pool
|
|
_0805DDC0:
|
|
ldrh r5, [r2, 0x2]
|
|
ldr r0, =gTransformedPersonalities
|
|
adds r0, r1, r0
|
|
ldr r4, [r0]
|
|
_0805DDC8:
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl GetMonData
|
|
str r0, [sp, 0x4]
|
|
mov r0, r8
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r0, 0x1
|
|
mov r1, r8
|
|
bl sub_80688F8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r1, r8
|
|
lsls r1, 2
|
|
mov r10, r1
|
|
cmp r0, 0x1
|
|
beq _0805DE00
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
add r0, r10
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
beq _0805DE2C
|
|
_0805DE00:
|
|
lsls r0, r5, 3
|
|
ldr r1, =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
lsls r2, r7, 2
|
|
adds r1, 0x4
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl HandleLoadSpecialPokePic_DontHandleDeoxys
|
|
b _0805DE46
|
|
.pool
|
|
_0805DE2C:
|
|
lsls r0, r5, 3
|
|
ldr r1, =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
lsls r2, r7, 2
|
|
adds r1, 0x4
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl HandleLoadSpecialPokePic
|
|
_0805DE46:
|
|
mov r2, r8
|
|
lsls r1, r2, 4
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r7, r1, r0
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
add r0, r10
|
|
ldrh r0, [r0, 0x2]
|
|
mov r9, r1
|
|
cmp r0, 0
|
|
bne _0805DE74
|
|
adds r0, r6, 0
|
|
bl pokemon_get_pal
|
|
b _0805DE7E
|
|
.pool
|
|
_0805DE74:
|
|
adds r0, r5, 0
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, [sp]
|
|
bl species_and_otid_get_pal
|
|
_0805DE7E:
|
|
adds r6, r0, 0
|
|
ldr r4, =0x0201c000
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl LZDecompressWram
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
mov r1, r9
|
|
adds r1, 0x80
|
|
adds r0, r4, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
ldr r0, =0x00000181
|
|
cmp r5, r0
|
|
bne _0805DED2
|
|
movs r7, 0x80
|
|
lsls r7, 1
|
|
add r7, r9
|
|
ldr r5, =gBattleStruct
|
|
ldr r1, [r5]
|
|
movs r4, 0x80
|
|
lsls r4, 1
|
|
adds r1, r4
|
|
adds r0, r6, 0
|
|
bl LZDecompressWram
|
|
ldr r0, =gBattleMonForms
|
|
add r0, r8
|
|
ldrb r1, [r0]
|
|
lsls r1, 5
|
|
adds r1, r4
|
|
ldr r0, [r5]
|
|
adds r0, r1
|
|
adds r1, r7, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
_0805DED2:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
add r0, r10
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
beq _0805DEFC
|
|
ldr r3, =0x00007fff
|
|
adds r0, r7, 0
|
|
movs r1, 0x10
|
|
movs r2, 0x6
|
|
bl BlendPalette
|
|
lsls r1, r7, 1
|
|
ldr r0, =gPlttBufferFaded
|
|
adds r0, r1, r0
|
|
ldr r2, =gPlttBufferUnfaded
|
|
adds r1, r2
|
|
ldr r2, =0x04000008
|
|
bl CpuSet
|
|
_0805DEFC:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end BattleLoadPlayerMonSpriteGfx
|
|
|
|
thumb_func_start nullsub_23
|
|
nullsub_23: @ 805DF30
|
|
bx lr
|
|
thumb_func_end nullsub_23
|
|
|
|
thumb_func_start nullsub_24
|
|
nullsub_24: @ 805DF34
|
|
bx lr
|
|
thumb_func_end nullsub_24
|
|
|
|
thumb_func_start DecompressTrainerFrontPic
|
|
DecompressTrainerFrontPic: @ 805DF38
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, r1, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsls r4, 3
|
|
ldr r2, =gTrainerFrontPicTable
|
|
adds r2, r4, r2
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
lsrs r0, 22
|
|
adds r1, 0x4
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
adds r0, r2, 0
|
|
movs r2, 0
|
|
bl DecompressPicFromTable_2
|
|
ldr r0, =gTrainerFrontPicPaletteTable
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
bl LoadCompressedObjectPalette
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end DecompressTrainerFrontPic
|
|
|
|
thumb_func_start DecompressTrainerBackPic
|
|
DecompressTrainerBackPic: @ 805DF84
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsls r5, 3
|
|
ldr r2, =gTrainerBackPicTable
|
|
adds r2, r5, r2
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
lsrs r0, 22
|
|
adds r1, 0x4
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
adds r0, r2, 0
|
|
movs r2, 0
|
|
bl DecompressPicFromTable_2
|
|
ldr r0, =gTrainerBackPicPaletteTable
|
|
adds r5, r0
|
|
ldr r0, [r5]
|
|
lsls r4, 20
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
adds r4, r1
|
|
lsrs r4, 16
|
|
adds r1, r4, 0
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end DecompressTrainerBackPic
|
|
|
|
thumb_func_start nullsub_25
|
|
nullsub_25: @ 805DFE0
|
|
bx lr
|
|
thumb_func_end nullsub_25
|
|
|
|
thumb_func_start FreeTrainerFrontPicPalette
|
|
FreeTrainerFrontPicPalette: @ 805DFE4
|
|
push {lr}
|
|
lsls r0, 16
|
|
ldr r1, =gTrainerFrontPicPaletteTable
|
|
lsrs r0, 13
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x4]
|
|
bl FreeSpritePaletteByTag
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end FreeTrainerFrontPicPalette
|
|
|
|
thumb_func_start sub_805DFFC
|
|
sub_805DFFC: @ 805DFFC
|
|
push {r4-r7,lr}
|
|
ldr r4, =gUnknown_0832C128
|
|
adds r0, r4, 0
|
|
bl LoadSpritePalette
|
|
adds r4, 0x8
|
|
adds r0, r4, 0
|
|
bl LoadSpritePalette
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805E034
|
|
ldr r0, =gUnknown_0832C0D0
|
|
bl LoadCompressedObjectPic
|
|
ldr r0, =gUnknown_0832C0D8
|
|
bl LoadCompressedObjectPic
|
|
movs r5, 0x2
|
|
b _0805E056
|
|
.pool
|
|
_0805E034:
|
|
ldr r4, =gUnknown_0832C0E0
|
|
adds r0, r4, 0
|
|
bl LoadCompressedObjectPic
|
|
adds r4, 0x8
|
|
adds r0, r4, 0
|
|
bl LoadCompressedObjectPic
|
|
ldr r4, =gUnknown_0832C0F0
|
|
adds r0, r4, 0
|
|
bl LoadCompressedObjectPic
|
|
adds r4, 0x8
|
|
adds r0, r4, 0
|
|
bl LoadCompressedObjectPic
|
|
movs r5, 0x4
|
|
_0805E056:
|
|
movs r4, 0
|
|
cmp r4, r5
|
|
bcs _0805E076
|
|
ldr r7, =gBanksByIdentity
|
|
ldr r6, =gUnknown_0832C108
|
|
_0805E060:
|
|
adds r0, r4, r7
|
|
ldrb r0, [r0]
|
|
lsls r0, 3
|
|
adds r0, r6
|
|
bl LoadCompressedObjectPic
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, r5
|
|
bcc _0805E060
|
|
_0805E076:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805DFFC
|
|
|
|
thumb_func_start BattleLoadAllHealthBoxesGfx
|
|
BattleLoadAllHealthBoxesGfx: @ 805E08C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
movs r6, 0
|
|
cmp r4, 0
|
|
bne _0805E09C
|
|
b _0805E1AE
|
|
_0805E09C:
|
|
cmp r4, 0x1
|
|
bne _0805E0B8
|
|
ldr r4, =gUnknown_0832C128
|
|
adds r0, r4, 0
|
|
bl LoadSpritePalette
|
|
adds r4, 0x8
|
|
adds r0, r4, 0
|
|
bl LoadSpritePalette
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E0B8:
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805E120
|
|
cmp r4, 0x2
|
|
bne _0805E0F0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805E0E4
|
|
ldr r0, =gUnknown_0832C100
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E0E4:
|
|
ldr r0, =gUnknown_0832C0D0
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E0F0:
|
|
cmp r4, 0x3
|
|
bne _0805E100
|
|
ldr r0, =gUnknown_0832C0D8
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E100:
|
|
cmp r4, 0x4
|
|
bne _0805E110
|
|
ldr r0, =gBanksByIdentity
|
|
ldrb r0, [r0]
|
|
b _0805E198
|
|
.pool
|
|
_0805E110:
|
|
cmp r4, 0x5
|
|
bne _0805E1AC
|
|
ldr r0, =gBanksByIdentity
|
|
ldrb r0, [r0, 0x1]
|
|
b _0805E198
|
|
.pool
|
|
_0805E120:
|
|
cmp r4, 0x2
|
|
bne _0805E130
|
|
ldr r0, =gUnknown_0832C0E0
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E130:
|
|
cmp r4, 0x3
|
|
bne _0805E140
|
|
ldr r0, =gUnknown_0832C0E8
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E140:
|
|
cmp r4, 0x4
|
|
bne _0805E150
|
|
ldr r0, =gUnknown_0832C0F0
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E150:
|
|
cmp r4, 0x5
|
|
bne _0805E160
|
|
ldr r0, =gUnknown_0832C0F8
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E160:
|
|
cmp r4, 0x6
|
|
bne _0805E170
|
|
ldr r0, =gBanksByIdentity
|
|
ldrb r0, [r0]
|
|
b _0805E198
|
|
.pool
|
|
_0805E170:
|
|
cmp r4, 0x7
|
|
bne _0805E180
|
|
ldr r0, =gBanksByIdentity
|
|
ldrb r0, [r0, 0x1]
|
|
b _0805E198
|
|
.pool
|
|
_0805E180:
|
|
cmp r4, 0x8
|
|
bne _0805E190
|
|
ldr r0, =gBanksByIdentity
|
|
ldrb r0, [r0, 0x2]
|
|
b _0805E198
|
|
.pool
|
|
_0805E190:
|
|
cmp r5, 0x9
|
|
bne _0805E1AC
|
|
ldr r0, =gBanksByIdentity
|
|
ldrb r0, [r0, 0x3]
|
|
_0805E198:
|
|
lsls r0, 3
|
|
ldr r1, =gUnknown_0832C108
|
|
adds r0, r1
|
|
bl LoadCompressedObjectPic
|
|
b _0805E1AE
|
|
.pool
|
|
_0805E1AC:
|
|
movs r6, 0x1
|
|
_0805E1AE:
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end BattleLoadAllHealthBoxesGfx
|
|
|
|
thumb_func_start LoadBattleBarGfx
|
|
LoadBattleBarGfx: @ 805E1B8
|
|
push {lr}
|
|
ldr r0, =gUnknown_08C093F0
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r2, 0xBA
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
bl LZDecompressWram
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end LoadBattleBarGfx
|
|
|
|
thumb_func_start BattleInitAllSprites
|
|
BattleInitAllSprites: @ 805E1D8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
movs r6, 0
|
|
ldrb r0, [r5]
|
|
cmp r0, 0x6
|
|
bls _0805E1E8
|
|
b _0805E346
|
|
_0805E1E8:
|
|
lsls r0, 2
|
|
ldr r1, =_0805E1F8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0805E1F8:
|
|
.4byte _0805E214
|
|
.4byte _0805E21A
|
|
.4byte _0805E324
|
|
.4byte _0805E230
|
|
.4byte _0805E260
|
|
.4byte _0805E29C
|
|
.4byte _0805E33C
|
|
_0805E214:
|
|
bl sub_805E378
|
|
b _0805E324
|
|
_0805E21A:
|
|
ldrb r0, [r4]
|
|
bl BattleLoadAllHealthBoxesGfx
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805E228
|
|
b _0805E320
|
|
_0805E228:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
b _0805E346
|
|
_0805E230:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805E24C
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _0805E24C
|
|
bl CreateSafariPlayerHealthboxSprites
|
|
b _0805E252
|
|
.pool
|
|
_0805E24C:
|
|
ldrb r0, [r4]
|
|
bl CreateBankHealthboxSprites
|
|
_0805E252:
|
|
ldr r2, =gHealthBoxesIds
|
|
ldrb r1, [r4]
|
|
adds r1, r2
|
|
strb r0, [r1]
|
|
b _0805E30E
|
|
.pool
|
|
_0805E260:
|
|
ldrb r0, [r4]
|
|
bl SetBankHealthboxSpritePos
|
|
ldr r0, =gBanksByIdentity
|
|
ldrb r1, [r4]
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bhi _0805E288
|
|
ldr r0, =gHealthBoxesIds
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl DummyBattleInterfaceFunc
|
|
b _0805E30E
|
|
.pool
|
|
_0805E288:
|
|
ldr r0, =gHealthBoxesIds
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0x1
|
|
bl DummyBattleInterfaceFunc
|
|
b _0805E30E
|
|
.pool
|
|
_0805E29C:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805E2E4
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805E302
|
|
ldr r0, =gHealthBoxesIds
|
|
ldrb r1, [r4]
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
ldr r2, =gBattlePartyID
|
|
lsls r1, 1
|
|
adds r1, r2
|
|
ldrh r2, [r1]
|
|
movs r1, 0x64
|
|
muls r1, r2
|
|
ldr r2, =gPlayerParty
|
|
adds r1, r2
|
|
movs r2, 0
|
|
bl UpdateHealthboxAttribute
|
|
b _0805E302
|
|
.pool
|
|
_0805E2E4:
|
|
ldr r0, =gHealthBoxesIds
|
|
ldrb r1, [r4]
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
ldr r2, =gBattlePartyID
|
|
lsls r1, 1
|
|
adds r1, r2
|
|
ldrh r2, [r1]
|
|
movs r1, 0x64
|
|
muls r1, r2
|
|
ldr r2, =gEnemyParty
|
|
adds r1, r2
|
|
movs r2, 0
|
|
bl UpdateHealthboxAttribute
|
|
_0805E302:
|
|
ldr r1, =gHealthBoxesIds
|
|
ldrb r0, [r4]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl SetHealthboxSpriteInvisible
|
|
_0805E30E:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _0805E346
|
|
_0805E320:
|
|
movs r0, 0
|
|
strb r0, [r4]
|
|
_0805E324:
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
b _0805E346
|
|
.pool
|
|
_0805E33C:
|
|
bl LoadAndCreateEnemyShadowSprites
|
|
bl sub_81B8C68
|
|
movs r6, 0x1
|
|
_0805E346:
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end BattleInitAllSprites
|
|
|
|
thumb_func_start sub_805E350
|
|
sub_805E350: @ 805E350
|
|
push {r4,lr}
|
|
ldr r4, =gBattleSpritesDataPtr
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, 0x4]
|
|
movs r1, 0
|
|
movs r2, 0x30
|
|
bl memset
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, 0x8]
|
|
movs r1, 0
|
|
movs r2, 0x10
|
|
bl memset
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805E350
|
|
|
|
thumb_func_start sub_805E378
|
|
sub_805E378: @ 805E378
|
|
push {lr}
|
|
bl sub_805E350
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
movs r1, 0
|
|
movs r2, 0x10
|
|
bl memset
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805E378
|
|
|
|
thumb_func_start sub_805E394
|
|
sub_805E394: @ 805E394
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
movs r4, 0
|
|
ldr r5, =gNoOfAllBanks
|
|
ldrb r0, [r5]
|
|
cmp r4, r0
|
|
bge _0805E3EA
|
|
ldr r0, =gSprites
|
|
mov r9, r0
|
|
movs r0, 0x1
|
|
mov r12, r0
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
mov r8, r0
|
|
ldr r7, =gBattleSpritesDataPtr
|
|
ldr r6, =gBankSpriteIds
|
|
_0805E3B8:
|
|
ldr r0, [r7]
|
|
ldr r0, [r0]
|
|
lsls r3, r4, 2
|
|
adds r3, r0
|
|
adds r0, r4, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
lsls r1, 29
|
|
lsrs r1, 31
|
|
mov r0, r12
|
|
ands r1, r0
|
|
ldrb r2, [r3]
|
|
mov r0, r8
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
adds r4, 0x1
|
|
ldrb r0, [r5]
|
|
cmp r4, r0
|
|
blt _0805E3B8
|
|
_0805E3EA:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805E394
|
|
|
|
thumb_func_start CopyBattleSpriteInvisibility
|
|
CopyBattleSpriteInvisibility: @ 805E408
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gBattleSpritesDataPtr
|
|
ldr r1, [r1]
|
|
ldr r1, [r1]
|
|
lsls r3, r0, 2
|
|
adds r3, r1
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBankSpriteIds
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
lsls r1, 29
|
|
lsrs r1, 31
|
|
ldrb r2, [r3]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end CopyBattleSpriteInvisibility
|
|
|
|
thumb_func_start sub_805E448
|
|
sub_805E448: @ 805E448
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp]
|
|
lsls r2, 24
|
|
cmp r2, 0
|
|
beq _0805E51C
|
|
ldr r0, =gBankSpriteIds
|
|
adds r5, r7, r0
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
mov r8, r1
|
|
add r0, r8
|
|
ldr r4, =gBattleSpritesDataPtr
|
|
ldr r1, [r4]
|
|
ldr r1, [r1, 0x8]
|
|
ldrb r1, [r1]
|
|
bl StartSpriteAnim
|
|
lsls r0, r7, 20
|
|
movs r2, 0x80
|
|
lsls r2, 17
|
|
adds r0, r2
|
|
lsrs r6, r0, 16
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, 0x8]
|
|
ldrh r1, [r0]
|
|
lsls r1, 5
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
adds r1, r3
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
adds r1, r6, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
ldr r1, =gBattleMonForms
|
|
adds r1, r7, r1
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, 0x8]
|
|
ldrh r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, [r4]
|
|
ldr r1, [r0]
|
|
lsls r0, r7, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
beq _0805E4DE
|
|
ldr r3, =0x00007fff
|
|
adds r0, r6, 0
|
|
movs r1, 0x10
|
|
movs r2, 0x6
|
|
bl BlendPalette
|
|
lsls r1, r6, 1
|
|
ldr r0, =gPlttBufferFaded
|
|
adds r0, r1, r0
|
|
ldr r2, =gPlttBufferUnfaded
|
|
adds r1, r2
|
|
ldr r2, =0x04000008
|
|
bl CpuSet
|
|
_0805E4DE:
|
|
adds r0, r7, 0
|
|
bl sub_80A6138
|
|
ldrb r2, [r5]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
add r1, r8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r1, 0x22]
|
|
b _0805E77A
|
|
.pool
|
|
_0805E51C:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805E558
|
|
movs r0, 0
|
|
mov r10, r0
|
|
ldr r0, =gContestResources
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0x18]
|
|
ldrh r1, [r2, 0x2]
|
|
mov r8, r1
|
|
ldr r3, [r2, 0x8]
|
|
mov r9, r3
|
|
ldr r4, [r2, 0xC]
|
|
lsls r0, r1, 3
|
|
ldr r1, =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, 0x4]
|
|
ldr r3, [r2, 0x10]
|
|
b _0805E5FA
|
|
.pool
|
|
_0805E558:
|
|
adds r0, r7, 0
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldr r0, [sp]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0805E58C
|
|
ldr r1, =gBattlePartyID
|
|
ldr r2, [sp]
|
|
lsls r0, r2, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
b _0805E59C
|
|
.pool
|
|
_0805E58C:
|
|
ldr r1, =gBattlePartyID
|
|
ldr r3, [sp]
|
|
lsls r0, r3, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty
|
|
_0805E59C:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
adds r0, r7, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805E618
|
|
ldr r0, =gBattlePartyID
|
|
lsls r4, r7, 1
|
|
adds r4, r0
|
|
ldrh r0, [r4]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, =gPlayerParty
|
|
adds r0, r5
|
|
movs r1, 0
|
|
bl GetMonData
|
|
mov r9, r0
|
|
ldrh r0, [r4]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0x1
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
mov r1, r8
|
|
lsls r0, r1, 3
|
|
ldr r1, =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
mov r3, r10
|
|
lsls r2, r3, 2
|
|
adds r1, 0x4
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
ldr r3, =gTransformedPersonalities
|
|
lsls r2, r7, 2
|
|
adds r2, r3
|
|
ldr r3, [r2]
|
|
_0805E5FA:
|
|
mov r2, r8
|
|
bl HandleLoadSpecialPokePic_DontHandleDeoxys
|
|
b _0805E662
|
|
.pool
|
|
_0805E618:
|
|
ldr r0, =gBattlePartyID
|
|
lsls r4, r7, 1
|
|
adds r4, r0
|
|
ldrh r0, [r4]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, =gEnemyParty
|
|
adds r0, r5
|
|
movs r1, 0
|
|
bl GetMonData
|
|
mov r9, r0
|
|
ldrh r0, [r4]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0x1
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
mov r1, r8
|
|
lsls r0, r1, 3
|
|
ldr r1, =gMonFrontPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
mov r3, r10
|
|
lsls r2, r3, 2
|
|
adds r1, 0x4
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
ldr r3, =gTransformedPersonalities
|
|
lsls r2, r7, 2
|
|
adds r2, r3
|
|
ldr r3, [r2]
|
|
mov r2, r8
|
|
bl HandleLoadSpecialPokePic_DontHandleDeoxys
|
|
_0805E662:
|
|
ldr r0, =gMonSpritesGfxPtr
|
|
ldr r0, [r0]
|
|
mov r2, r10
|
|
lsls r1, r2, 2
|
|
adds r0, 0x4
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
ldr r0, =gBankSpriteIds
|
|
adds r0, r7
|
|
mov r10, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r3, =gSprites
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 17
|
|
ldr r1, =0x06010000
|
|
adds r0, r1
|
|
ldr r1, =0x040000d4
|
|
str r2, [r1]
|
|
str r0, [r1, 0x4]
|
|
ldr r0, =0x84000200
|
|
str r0, [r1, 0x8]
|
|
ldr r0, [r1, 0x8]
|
|
lsls r0, r7, 20
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
adds r0, r1
|
|
lsrs r6, r0, 16
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
mov r2, r9
|
|
bl species_and_otid_get_pal
|
|
mov r9, r0
|
|
ldr r4, =0x0201c000
|
|
adds r1, r4, 0
|
|
bl LZDecompressWram
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
ldr r0, =0x00000181
|
|
cmp r8, r0
|
|
bne _0805E70A
|
|
mov r2, r10
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r1, 0x8
|
|
adds r0, r1
|
|
ldr r1, =gMonAnimationsSpriteAnimsPtrTable
|
|
mov r3, r8
|
|
lsls r2, r3, 2
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
ldr r5, =gBattleStruct
|
|
ldr r1, [r5]
|
|
movs r4, 0x80
|
|
lsls r4, 1
|
|
adds r1, r4
|
|
mov r0, r9
|
|
bl LZDecompressWram
|
|
ldr r0, =gBattleMonForms
|
|
ldr r1, [sp]
|
|
adds r0, r1, r0
|
|
ldrb r1, [r0]
|
|
lsls r1, 5
|
|
adds r1, r4
|
|
ldr r0, [r5]
|
|
adds r0, r1
|
|
adds r1, r6, 0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
_0805E70A:
|
|
ldr r3, =0x00007fff
|
|
adds r0, r6, 0
|
|
movs r1, 0x10
|
|
movs r2, 0x6
|
|
bl BlendPalette
|
|
lsls r1, r6, 1
|
|
ldr r0, =gPlttBufferFaded
|
|
adds r0, r1, r0
|
|
ldr r2, =gPlttBufferUnfaded
|
|
adds r1, r2
|
|
ldr r2, =0x04000008
|
|
bl CpuSet
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805E74A
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r7, 2
|
|
adds r0, r1
|
|
mov r2, r8
|
|
strh r2, [r0, 0x2]
|
|
ldr r0, =gBattleMonForms
|
|
adds r1, r7, r0
|
|
ldr r3, [sp]
|
|
adds r0, r3, r0
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
_0805E74A:
|
|
adds r0, r7, 0
|
|
bl sub_80A6138
|
|
mov r1, r10
|
|
ldrb r2, [r1]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
ldr r2, =gSprites
|
|
adds r1, r2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r1, 0x22]
|
|
mov r3, r10
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r1, =gBattleMonForms
|
|
adds r1, r7, r1
|
|
ldrb r1, [r1]
|
|
bl StartSpriteAnim
|
|
_0805E77A:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805E448
|
|
|
|
thumb_func_start BattleLoadSubstituteSpriteGfx
|
|
BattleLoadSubstituteSpriteGfx: @ 805E7DC
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
bne _0805E898
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805E7F8
|
|
movs r4, 0
|
|
b _0805E802
|
|
_0805E7F8:
|
|
adds r0, r4, 0
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
_0805E802:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805E814
|
|
ldr r0, =gUnknown_08C2D120
|
|
b _0805E822
|
|
.pool
|
|
_0805E814:
|
|
adds r0, r5, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805E83C
|
|
ldr r0, =gUnknown_08C2CEE0
|
|
_0805E822:
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
lsls r4, 2
|
|
adds r1, 0x4
|
|
adds r1, r4
|
|
ldr r1, [r1]
|
|
bl LZDecompressVram
|
|
b _0805E84E
|
|
.pool
|
|
_0805E83C:
|
|
ldr r0, =gUnknown_08C2D120
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
lsls r4, 2
|
|
adds r1, 0x4
|
|
adds r1, r4
|
|
ldr r1, [r1]
|
|
bl LZDecompressVram
|
|
_0805E84E:
|
|
movs r3, 0x1
|
|
lsls r6, r5, 4
|
|
ldr r7, =gUnknown_08C2CEBC
|
|
ldr r0, =gMonSpritesGfxPtr
|
|
ldr r0, [r0]
|
|
adds r0, 0x4
|
|
adds r4, r0, r4
|
|
ldr r2, =0x040000d4
|
|
ldr r5, =0x84000200
|
|
_0805E860:
|
|
ldr r0, [r4]
|
|
lsls r1, r3, 11
|
|
adds r1, r0, r1
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
str r5, [r2, 0x8]
|
|
ldr r0, [r2, 0x8]
|
|
adds r3, 0x1
|
|
cmp r3, 0x3
|
|
ble _0805E860
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r1, r6, r0
|
|
adds r0, r7, 0
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
b _0805E8E6
|
|
.pool
|
|
_0805E898:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805E8E6
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805E8D0
|
|
ldr r1, =gBattlePartyID
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
bl BattleLoadOpponentMonSpriteGfx
|
|
b _0805E8E6
|
|
.pool
|
|
_0805E8D0:
|
|
ldr r1, =gBattlePartyID
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r5, 0
|
|
bl BattleLoadPlayerMonSpriteGfx
|
|
_0805E8E6:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end BattleLoadSubstituteSpriteGfx
|
|
|
|
thumb_func_start refresh_graphics_maybe
|
|
refresh_graphics_maybe: @ 805E8F4
|
|
push {r4-r6,lr}
|
|
adds r5, r1, 0
|
|
adds r4, r2, 0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl BattleLoadSubstituteSpriteGfx
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r4, r0, r1
|
|
ldr r0, =gBattleMonForms
|
|
adds r0, r6, r0
|
|
ldrb r1, [r0]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
cmp r5, 0
|
|
bne _0805E938
|
|
adds r0, r6, 0
|
|
bl sub_80A614C
|
|
b _0805E93E
|
|
.pool
|
|
_0805E938:
|
|
adds r0, r6, 0
|
|
bl sub_80A6138
|
|
_0805E93E:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x22]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end refresh_graphics_maybe
|
|
|
|
thumb_func_start TrySetBehindSubstituteSpriteBit
|
|
TrySetBehindSubstituteSpriteBit: @ 805E94C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
cmp r1, 0xA4
|
|
bne _0805E96C
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
_0805E96C:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end TrySetBehindSubstituteSpriteBit
|
|
|
|
thumb_func_start sub_805E974
|
|
sub_805E974: @ 805E974
|
|
lsls r0, 24
|
|
ldr r1, =gBattleSpritesDataPtr
|
|
ldr r1, [r1]
|
|
ldr r1, [r1]
|
|
lsrs r0, 22
|
|
adds r0, r1
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_805E974
|
|
|
|
thumb_func_start sub_805E990
|
|
sub_805E990: @ 805E990
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
adds r7, r6, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl GetHPBarLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0805EA08
|
|
ldr r7, =gBattleSpritesDataPtr
|
|
ldr r0, [r7]
|
|
ldr r2, [r0]
|
|
lsls r4, r6, 2
|
|
adds r0, r4, r2
|
|
ldrb r1, [r0]
|
|
movs r5, 0x2
|
|
movs r3, 0x2
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805EA5A
|
|
adds r0, r6, 0
|
|
eors r0, r5
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805E9F6
|
|
movs r0, 0x5A
|
|
bl PlaySE
|
|
_0805E9F6:
|
|
ldr r0, [r7]
|
|
ldr r1, [r0]
|
|
adds r1, r4, r1
|
|
ldrb r0, [r1]
|
|
orrs r0, r5
|
|
strb r0, [r1]
|
|
b _0805EA5A
|
|
.pool
|
|
_0805EA08:
|
|
ldr r4, =gBattleSpritesDataPtr
|
|
ldr r0, [r4]
|
|
ldr r0, [r0]
|
|
lsls r1, r6, 2
|
|
adds r1, r0
|
|
ldrb r2, [r1]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805EA34
|
|
movs r0, 0x5A
|
|
bl m4aSongNumStop
|
|
b _0805EA5A
|
|
.pool
|
|
_0805EA34:
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805EA5A
|
|
ldr r1, [r4]
|
|
movs r0, 0x2
|
|
eors r7, r0
|
|
ldr r1, [r1]
|
|
lsls r0, r7, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805EA5A
|
|
movs r0, 0x5A
|
|
bl m4aSongNumStop
|
|
_0805EA5A:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_805E990
|
|
|
|
thumb_func_start BattleMusicStop
|
|
BattleMusicStop: @ 805EA60
|
|
push {r4-r6,lr}
|
|
movs r0, 0
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r5, =gBattleSpritesDataPtr
|
|
ldr r0, [r5]
|
|
ldr r0, [r0]
|
|
lsls r1, r4, 2
|
|
adds r1, r0
|
|
ldrb r2, [r1]
|
|
movs r6, 0x3
|
|
negs r6, r6
|
|
adds r0, r6, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805EAA2
|
|
ldr r2, [r5]
|
|
movs r0, 0x2
|
|
adds r1, r4, 0
|
|
eors r1, r0
|
|
ldr r0, [r2]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r2, [r1]
|
|
adds r0, r6, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
_0805EAA2:
|
|
movs r0, 0x5A
|
|
bl m4aSongNumStop
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end BattleMusicStop
|
|
|
|
thumb_func_start sub_805EAB4
|
|
sub_805EAB4: @ 805EAB4
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl GetHPBarLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_805EAB4
|
|
|
|
thumb_func_start sub_805EAE8
|
|
sub_805EAE8: @ 805EAE8
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r0, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805EB7E
|
|
movs r0, 0
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
movs r0, 0x2
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldr r5, =gBattlePartyID
|
|
mov r1, r8
|
|
lsls r0, r1, 1
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r1, r9
|
|
lsls r0, r1, 1
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r7, 0x64
|
|
adds r0, r4, 0
|
|
muls r0, r7
|
|
ldr r6, =gPlayerParty
|
|
adds r4, r0, r6
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0805EB5A
|
|
adds r0, r4, 0
|
|
mov r1, r8
|
|
bl sub_805E990
|
|
_0805EB5A:
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805EB7E
|
|
adds r0, r5, 0
|
|
muls r0, r7
|
|
adds r4, r0, r6
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0805EB7E
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
bl sub_805E990
|
|
_0805EB7E:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805EAE8
|
|
|
|
thumb_func_start sub_805EB9C
|
|
sub_805EB9C: @ 805EB9C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
movs r5, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bge _0805EC6C
|
|
movs r0, 0x3
|
|
mov r10, r8
|
|
mov r1, r10
|
|
ands r1, r0
|
|
mov r10, r1
|
|
movs r6, 0
|
|
movs r2, 0x3F
|
|
negs r2, r2
|
|
mov r9, r2
|
|
_0805EBC8:
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
bl IsBankSpritePresent
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805EC60
|
|
ldr r4, =gSprites
|
|
ldr r0, =gBankSpriteIds
|
|
adds r3, r5, r0
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r1, [r0, 0x1]
|
|
movs r7, 0x4
|
|
negs r7, r7
|
|
adds r2, r7, 0
|
|
ands r1, r2
|
|
mov r2, r10
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
mov r7, r8
|
|
cmp r7, 0
|
|
bne _0805EC3C
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0x4]
|
|
adds r2, r6, r2
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
strb r0, [r2, 0x6]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r1, [r0, 0x3]
|
|
mov r2, r9
|
|
ands r1, r2
|
|
strb r1, [r0, 0x3]
|
|
b _0805EC60
|
|
.pool
|
|
_0805EC3C:
|
|
ldrb r0, [r3]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x4]
|
|
adds r0, r6, r0
|
|
ldrb r1, [r0, 0x6]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r0, [r2, 0x3]
|
|
mov r3, r9
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x3]
|
|
_0805EC60:
|
|
adds r6, 0xC
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0805EBC8
|
|
_0805EC6C:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805EB9C
|
|
|
|
thumb_func_start LoadAndCreateEnemyShadowSprites
|
|
LoadAndCreateEnemyShadowSprites: @ 805EC84
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r0, =gUnknown_0831C6A0
|
|
bl LoadCompressedObjectPic
|
|
movs r0, 0x1
|
|
bl GetBankByIdentity
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, =gUnknown_0831C6B0
|
|
mov r8, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_80A5C6C
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_80A5C6C
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 8
|
|
movs r0, 0xE8
|
|
lsls r0, 13
|
|
adds r2, r0
|
|
asrs r2, 16
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
movs r3, 0xC8
|
|
bl CreateSprite
|
|
ldr r6, =gBattleSpritesDataPtr
|
|
ldr r1, [r6]
|
|
ldr r2, [r1, 0x4]
|
|
lsls r1, r5, 1
|
|
adds r1, r5
|
|
lsls r1, 2
|
|
adds r2, r1, r2
|
|
strb r0, [r2, 0x7]
|
|
ldr r7, =gSprites
|
|
ldr r0, [r6]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r0
|
|
ldrb r1, [r1, 0x7]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
strh r5, [r0, 0x2E]
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805ED56
|
|
movs r0, 0x3
|
|
bl GetBankByIdentity
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_80A5C6C
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_80A5C6C
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 8
|
|
movs r0, 0xE8
|
|
lsls r0, 13
|
|
adds r2, r0
|
|
asrs r2, 16
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
movs r3, 0xC8
|
|
bl CreateSprite
|
|
ldr r1, [r6]
|
|
ldr r2, [r1, 0x4]
|
|
lsls r1, r5, 1
|
|
adds r1, r5
|
|
lsls r1, 2
|
|
adds r2, r1, r2
|
|
strb r0, [r2, 0x7]
|
|
ldr r0, [r6]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r0
|
|
ldrb r1, [r1, 0x7]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
strh r5, [r0, 0x2E]
|
|
_0805ED56:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end LoadAndCreateEnemyShadowSprites
|
|
|
|
thumb_func_start sub_805ED70
|
|
@ int sub_805ED70(obj *a1)
|
|
sub_805ED70: @ 805ED70
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
movs r0, 0
|
|
mov r8, r0
|
|
ldrh r0, [r5, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, =gBankSpriteIds
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r7, r0, r1
|
|
adds r6, r7, 0
|
|
adds r6, 0x3E
|
|
ldrb r1, [r6]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805EDAC
|
|
adds r0, r4, 0
|
|
bl IsBankSpritePresent
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0805EDC0
|
|
_0805EDAC:
|
|
ldr r0, =sub_805EE48
|
|
str r0, [r5, 0x1C]
|
|
b _0805EE36
|
|
.pool
|
|
_0805EDC0:
|
|
ldr r0, =gAnimScriptActive
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0805EDD2
|
|
ldrb r1, [r6]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805EDE4
|
|
_0805EDD2:
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
ldr r2, =gBattleSpritesDataPtr
|
|
lsls r4, 2
|
|
b _0805EE06
|
|
.pool
|
|
_0805EDE4:
|
|
ldr r2, =gBattleSpritesDataPtr
|
|
ldr r0, [r2]
|
|
ldr r0, [r0]
|
|
lsls r1, r4, 2
|
|
adds r3, r1, r0
|
|
ldrh r0, [r3, 0x2]
|
|
adds r4, r1, 0
|
|
cmp r0, 0
|
|
beq _0805EE06
|
|
ldr r0, =gEnemyMonElevation
|
|
ldrh r1, [r3, 0x2]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
bne _0805EE06
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
_0805EE06:
|
|
ldr r0, [r2]
|
|
ldr r0, [r0]
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805EE1A
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
_0805EE1A:
|
|
ldrh r0, [r7, 0x20]
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r7, 0x24]
|
|
strh r0, [r5, 0x24]
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
mov r0, r8
|
|
lsls r3, r0, 2
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r3
|
|
strb r0, [r2]
|
|
_0805EE36:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805ED70
|
|
|
|
thumb_func_start sub_805EE48
|
|
sub_805EE48: @ 805EE48
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
bx lr
|
|
thumb_func_end sub_805EE48
|
|
|
|
thumb_func_start SetBankEnemyShadowSpriteCallback
|
|
SetBankEnemyShadowSpriteCallback: @ 805EE54
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r6, r4, 0
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805EED0
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r3, [r0]
|
|
ldr r1, [r3]
|
|
lsls r0, r4, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
beq _0805EE7E
|
|
adds r5, r0, 0
|
|
_0805EE7E:
|
|
ldr r0, =gEnemyMonElevation
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0805EEB4
|
|
ldr r2, =gSprites
|
|
ldr r1, [r3, 0x4]
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x7]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r1, =sub_805ED70
|
|
b _0805EECE
|
|
.pool
|
|
_0805EEB4:
|
|
ldr r2, =gSprites
|
|
ldr r1, [r3, 0x4]
|
|
lsls r0, r6, 1
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x7]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r1, =sub_805EE48
|
|
_0805EECE:
|
|
str r1, [r0]
|
|
_0805EED0:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end SetBankEnemyShadowSpriteCallback
|
|
|
|
thumb_func_start sub_805EEE0
|
|
sub_805EEE0: @ 805EEE0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBattleSpritesDataPtr
|
|
ldr r1, [r1]
|
|
ldr r3, [r1, 0x4]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrb r1, [r1, 0x7]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r1, =sub_805EE48
|
|
str r1, [r0]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_805EEE0
|
|
|
|
thumb_func_start sub_805EF14
|
|
sub_805EF14: @ 805EF14
|
|
push {r4-r6,lr}
|
|
ldr r3, =0x06000240
|
|
movs r0, 0
|
|
movs r6, 0xF0
|
|
lsls r6, 8
|
|
_0805EF1E:
|
|
adds r5, r0, 0x1
|
|
movs r4, 0xF
|
|
_0805EF22:
|
|
ldrh r1, [r3]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805EF32
|
|
adds r0, r6, 0
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
_0805EF32:
|
|
ldrh r1, [r3]
|
|
movs r2, 0xF0
|
|
lsls r2, 4
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805EF46
|
|
adds r0, r2, 0
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
_0805EF46:
|
|
ldrh r1, [r3]
|
|
movs r2, 0xF0
|
|
movs r0, 0xF0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805EF58
|
|
adds r0, r1, 0
|
|
orrs r0, r2
|
|
strh r0, [r3]
|
|
_0805EF58:
|
|
ldrh r1, [r3]
|
|
movs r2, 0xF
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805EF6A
|
|
adds r0, r1, 0
|
|
orrs r0, r2
|
|
strh r0, [r3]
|
|
_0805EF6A:
|
|
adds r3, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _0805EF22
|
|
adds r0, r5, 0
|
|
cmp r0, 0x8
|
|
ble _0805EF1E
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_805EF14
|
|
|
|
thumb_func_start ClearTemporarySpeciesSpriteData
|
|
ClearTemporarySpeciesSpriteData: @ 805EF84
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r2, [r0]
|
|
lsls r0, r4, 2
|
|
adds r0, r2
|
|
movs r3, 0
|
|
movs r2, 0
|
|
strh r2, [r0, 0x2]
|
|
ldr r0, =gBattleMonForms
|
|
adds r0, r4, r0
|
|
strb r3, [r0]
|
|
cmp r1, 0
|
|
bne _0805EFAC
|
|
adds r0, r4, 0
|
|
bl sub_805E974
|
|
_0805EFAC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end ClearTemporarySpeciesSpriteData
|
|
|
|
thumb_func_start AllocateMonSpritesGfx
|
|
AllocateMonSpritesGfx: @ 805EFBC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r6, 0
|
|
ldr r4, =gMonSpritesGfxPtr
|
|
str r6, [r4]
|
|
movs r0, 0xC0
|
|
lsls r0, 1
|
|
bl AllocZeroed
|
|
str r0, [r4]
|
|
movs r0, 0x80
|
|
lsls r0, 8
|
|
bl AllocZeroed
|
|
ldr r1, [r4]
|
|
str r0, [r1]
|
|
_0805EFE2:
|
|
ldr r0, =gMonSpritesGfxPtr
|
|
ldr r1, [r0]
|
|
lsls r4, r6, 2
|
|
adds r2, r1, 0x4
|
|
adds r2, r4
|
|
lsls r3, r6, 13
|
|
ldr r0, [r1]
|
|
adds r0, r3
|
|
str r0, [r2]
|
|
lsls r3, r6, 1
|
|
adds r0, r3, r6
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
ldr r2, =gUnknown_08329D98
|
|
adds r1, 0x14
|
|
adds r0, r2
|
|
ldm r0!, {r2,r5,r7}
|
|
stm r1!, {r2,r5,r7}
|
|
ldm r0!, {r2,r5,r7}
|
|
stm r1!, {r2,r5,r7}
|
|
movs r5, 0
|
|
mov r9, r3
|
|
lsls r0, r6, 5
|
|
mov r8, r0
|
|
adds r1, r6, 0x1
|
|
mov r10, r1
|
|
mov r12, r8
|
|
adds r7, r4, 0
|
|
_0805F01A:
|
|
ldr r2, =gMonSpritesGfxPtr
|
|
ldr r1, [r2]
|
|
lsls r4, r5, 3
|
|
add r4, r12
|
|
adds r3, r1, 0
|
|
adds r3, 0x74
|
|
adds r3, r4
|
|
adds r0, r1, 0x4
|
|
adds r0, r7
|
|
lsls r2, r5, 11
|
|
ldr r0, [r0]
|
|
adds r0, r2
|
|
str r0, [r3]
|
|
adds r1, r4
|
|
adds r1, 0x78
|
|
movs r0, 0x80
|
|
lsls r0, 4
|
|
strh r0, [r1]
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x3
|
|
bls _0805F01A
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r2, [r1]
|
|
mov r5, r9
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
adds r1, r2, 0
|
|
adds r1, 0x20
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x74
|
|
adds r2, r0
|
|
str r2, [r1]
|
|
mov r7, r10
|
|
lsls r0, r7, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0x3
|
|
bls _0805EFE2
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
bl AllocZeroed
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r2, 0xBA
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
str r0, [r1]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end AllocateMonSpritesGfx
|
|
|
|
thumb_func_start FreeMonSpritesGfx
|
|
FreeMonSpritesGfx: @ 805F094
|
|
push {r4-r6,lr}
|
|
ldr r6, =gMonSpritesGfxPtr
|
|
ldr r0, [r6]
|
|
cmp r0, 0
|
|
beq _0805F106
|
|
movs r1, 0xBE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0805F0BA
|
|
bl Free
|
|
ldr r0, [r6]
|
|
movs r1, 0xBE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
_0805F0BA:
|
|
ldr r0, [r6]
|
|
movs r1, 0xBC
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0805F0D8
|
|
bl Free
|
|
ldr r0, [r6]
|
|
movs r1, 0xBC
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
_0805F0D8:
|
|
ldr r0, [r6]
|
|
movs r5, 0xBA
|
|
lsls r5, 1
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r6]
|
|
adds r5, r0, r5
|
|
movs r4, 0
|
|
str r4, [r5]
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r6]
|
|
str r4, [r0]
|
|
str r4, [r0, 0x4]
|
|
str r4, [r0, 0x8]
|
|
str r4, [r0, 0xC]
|
|
str r4, [r0, 0x10]
|
|
bl Free
|
|
str r4, [r6]
|
|
_0805F106:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end FreeMonSpritesGfx
|
|
|
|
thumb_func_start sub_805F110
|
|
sub_805F110: @ 805F110
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
ldr r1, =0x00000fff
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0805F158
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl GetHPBarLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
ble _0805F158
|
|
movs r0, 0x1
|
|
b _0805F15A
|
|
.pool
|
|
_0805F158:
|
|
movs r0, 0
|
|
_0805F15A:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_805F110
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|