mirror of
https://github.com/pret/pokeruby.git
synced 2026-09-28 22:50:41 -04:00
5501 lines
87 KiB
ArmAsm
5501 lines
87 KiB
ArmAsm
.include "constants/gba_constants.inc"
|
|
.include "constants/species_constants.inc"
|
|
.include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_804373C
|
|
sub_804373C: @ 804373C
|
|
movs r0, 0x9
|
|
bx lr
|
|
thumb_func_end sub_804373C
|
|
|
|
thumb_func_start sub_8043740
|
|
sub_8043740: @ 8043740
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
adds r7, r1, 0
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r10, r2
|
|
movs r3, 0
|
|
movs r2, 0
|
|
_0804375C:
|
|
lsls r0, r3, 24
|
|
asrs r0, 24
|
|
mov r3, sp
|
|
adds r1, r3, r0
|
|
strb r2, [r1]
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0x3
|
|
ble _0804375C
|
|
movs r3, 0x3
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r9, r0
|
|
mov r8, sp
|
|
_0804377C:
|
|
lsls r0, r5, 16
|
|
asrs r6, r0, 16
|
|
cmp r6, 0
|
|
ble _080437AA
|
|
lsls r4, r3, 24
|
|
asrs r4, 24
|
|
mov r1, sp
|
|
adds r5, r1, r4
|
|
adds r0, r6, 0
|
|
movs r1, 0xA
|
|
bl __modsi3
|
|
strb r0, [r5]
|
|
adds r0, r6, 0
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
subs r4, 0x1
|
|
lsls r4, 24
|
|
lsrs r3, r4, 24
|
|
b _0804377C
|
|
_080437AA:
|
|
lsls r1, r3, 24
|
|
asrs r0, r1, 24
|
|
cmp r0, r9
|
|
ble _080437CE
|
|
movs r4, 0xFF
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
_080437B8:
|
|
asrs r2, r1, 24
|
|
mov r5, sp
|
|
adds r1, r5, r2
|
|
ldrb r0, [r1]
|
|
orrs r0, r4
|
|
strb r0, [r1]
|
|
subs r2, 0x1
|
|
lsls r1, r2, 24
|
|
asrs r0, r1, 24
|
|
cmp r0, r3
|
|
bgt _080437B8
|
|
_080437CE:
|
|
mov r1, r8
|
|
ldrb r0, [r1, 0x3]
|
|
cmp r0, 0xFF
|
|
bne _080437DA
|
|
movs r0, 0
|
|
strb r0, [r1, 0x3]
|
|
_080437DA:
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
bne _0804386A
|
|
movs r3, 0
|
|
movs r1, 0
|
|
movs r6, 0xFC
|
|
lsls r6, 8
|
|
movs r5, 0x1E
|
|
mov r12, r5
|
|
_080437EC:
|
|
lsls r1, 24
|
|
asrs r2, r1, 24
|
|
mov r0, sp
|
|
adds r5, r0, r2
|
|
ldrb r0, [r5]
|
|
mov r8, r1
|
|
cmp r0, 0xFF
|
|
bne _08043822
|
|
lsls r1, r2, 1
|
|
adds r1, r7
|
|
ldrh r2, [r1]
|
|
adds r0, r6, 0
|
|
ands r0, r2
|
|
mov r2, r12
|
|
orrs r0, r2
|
|
strh r0, [r1]
|
|
lsls r3, 24
|
|
asrs r1, r3, 23
|
|
adds r1, r7
|
|
adds r1, 0x40
|
|
ldrh r2, [r1]
|
|
adds r0, r6, 0
|
|
ands r0, r2
|
|
mov r5, r12
|
|
orrs r0, r5
|
|
strh r0, [r1]
|
|
b _08043852
|
|
_08043822:
|
|
lsls r2, 1
|
|
adds r2, r7
|
|
ldrh r0, [r2]
|
|
adds r1, r6, 0
|
|
ands r1, r0
|
|
ldrb r0, [r5]
|
|
adds r0, 0x14
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
lsls r4, r3, 24
|
|
asrs r3, r4, 24
|
|
lsls r2, r3, 1
|
|
adds r2, r7
|
|
adds r2, 0x40
|
|
ldrh r0, [r2]
|
|
adds r1, r6, 0
|
|
ands r1, r0
|
|
mov r5, sp
|
|
adds r0, r5, r3
|
|
ldrb r0, [r0]
|
|
adds r0, 0x34
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
adds r3, r4, 0
|
|
_08043852:
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
add r0, r8
|
|
lsrs r1, r0, 24
|
|
movs r2, 0x80
|
|
lsls r2, 17
|
|
adds r0, r3, r2
|
|
lsrs r3, r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0x3
|
|
ble _080437EC
|
|
b _080438CE
|
|
_0804386A:
|
|
movs r3, 0
|
|
movs r4, 0xFC
|
|
lsls r4, 8
|
|
movs r6, 0x1E
|
|
_08043872:
|
|
lsls r1, r3, 24
|
|
asrs r2, r1, 24
|
|
mov r3, sp
|
|
adds r5, r3, r2
|
|
ldrb r0, [r5]
|
|
adds r3, r1, 0
|
|
cmp r0, 0xFF
|
|
bne _0804389E
|
|
lsls r1, r2, 1
|
|
adds r1, r7
|
|
ldrh r2, [r1]
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
orrs r0, r6
|
|
strh r0, [r1]
|
|
adds r1, 0x40
|
|
ldrh r2, [r1]
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
orrs r0, r6
|
|
strh r0, [r1]
|
|
b _080438C0
|
|
_0804389E:
|
|
lsls r2, 1
|
|
adds r2, r7
|
|
ldrh r0, [r2]
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
ldrb r0, [r5]
|
|
adds r0, 0x14
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
adds r2, 0x40
|
|
ldrh r0, [r2]
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
ldrb r0, [r5]
|
|
adds r0, 0x34
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
_080438C0:
|
|
movs r5, 0x80
|
|
lsls r5, 17
|
|
adds r0, r3, r5
|
|
lsrs r3, r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0x3
|
|
ble _08043872
|
|
_080438CE:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8043740
|
|
|
|
thumb_func_start unref_sub_80438E0
|
|
unref_sub_80438E0: @ 80438E0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r0, r1, 0
|
|
adds r5, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
movs r1, 0x1E
|
|
strh r1, [r5, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl sub_8043740
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
adds r5, 0xA
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x1
|
|
bl sub_8043740
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end unref_sub_80438E0
|
|
|
|
thumb_func_start battle_make_oam_normal_battle
|
|
battle_make_oam_normal_battle: @ 8043914
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08043A28
|
|
mov r0, r10
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080439AC
|
|
ldr r4, _0804399C @ =gSpriteTemplate_820A4EC
|
|
adds r0, r4, 0
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r4, _080439A0 @ =gSprites
|
|
lsls r1, r6, 4
|
|
adds r1, r6
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
ldrb r2, [r1, 0x1]
|
|
movs r3, 0x3F
|
|
adds r0, r3, 0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
lsls r2, r7, 4
|
|
adds r2, r7
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
ldrb r0, [r2, 0x1]
|
|
ands r3, r0
|
|
strb r3, [r2, 0x1]
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x40
|
|
ldr r4, _080439A4 @ =0x000003ff
|
|
adds r0, r4, 0
|
|
ands r1, r0
|
|
ldr r0, _080439A8 @ =0xfffffc00
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
b _080439F2
|
|
.align 2, 0
|
|
_0804399C: .4byte gSpriteTemplate_820A4EC
|
|
_080439A0: .4byte gSprites
|
|
_080439A4: .4byte 0x000003ff
|
|
_080439A8: .4byte 0xfffffc00
|
|
_080439AC:
|
|
ldr r4, _08043A14 @ =gSpriteTemplate_820A51C
|
|
adds r0, r4, 0
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08043A18 @ =gSprites
|
|
lsls r2, r7, 4
|
|
adds r2, r7
|
|
lsls r2, 2
|
|
adds r2, r0
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x20
|
|
ldr r5, _08043A1C @ =0x000003ff
|
|
adds r0, r5, 0
|
|
ands r1, r0
|
|
ldr r0, _08043A20 @ =0xfffffc00
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
_080439F2:
|
|
ldr r2, _08043A18 @ =gSprites
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
strh r7, [r0, 0x6]
|
|
lsls r0, r7, 4
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r1, r0, r2
|
|
strh r6, [r1, 0x38]
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r1, _08043A24 @ =sub_8043D5C
|
|
str r1, [r0]
|
|
b _08043B50
|
|
.align 2, 0
|
|
_08043A14: .4byte gSpriteTemplate_820A51C
|
|
_08043A18: .4byte gSprites
|
|
_08043A1C: .4byte 0x000003ff
|
|
_08043A20: .4byte 0xfffffc00
|
|
_08043A24: .4byte sub_8043D5C
|
|
_08043A28:
|
|
mov r0, r10
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08043ACC
|
|
mov r0, r10
|
|
bl battle_get_per_side_status
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 25
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
ldr r4, _08043AB8 @ =gSpriteTemplate_820A4EC
|
|
adds r0, r4
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
mov r0, r10
|
|
bl battle_get_per_side_status
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 25
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r4
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r4, _08043ABC @ =gSprites
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
strh r7, [r0, 0x6]
|
|
lsls r2, r7, 4
|
|
adds r2, r7
|
|
lsls r2, 2
|
|
adds r3, r2, r4
|
|
strh r6, [r3, 0x38]
|
|
ldrh r1, [r3, 0x4]
|
|
mov r8, r1
|
|
mov r5, r8
|
|
lsls r1, r5, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x20
|
|
ldr r5, _08043AC0 @ =0x000003ff
|
|
adds r0, r5, 0
|
|
ands r1, r0
|
|
ldr r0, _08043AC4 @ =0xfffffc00
|
|
mov r5, r8
|
|
ands r0, r5
|
|
orrs r0, r1
|
|
strh r0, [r3, 0x4]
|
|
adds r4, 0x1C
|
|
adds r2, r4
|
|
ldr r0, _08043AC8 @ =sub_8043D5C
|
|
str r0, [r2]
|
|
movs r0, 0x1
|
|
b _08043B4E
|
|
.align 2, 0
|
|
_08043AB8: .4byte gSpriteTemplate_820A4EC
|
|
_08043ABC: .4byte gSprites
|
|
_08043AC0: .4byte 0x000003ff
|
|
_08043AC4: .4byte 0xfffffc00
|
|
_08043AC8: .4byte sub_8043D5C
|
|
_08043ACC:
|
|
mov r0, r10
|
|
bl battle_get_per_side_status
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 25
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
ldr r4, _08043C14 @ =gSpriteTemplate_820A51C
|
|
adds r0, r4
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
mov r0, r10
|
|
bl battle_get_per_side_status
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 25
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r4
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r4, _08043C18 @ =gSprites
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
strh r7, [r0, 0x6]
|
|
lsls r2, r7, 4
|
|
adds r2, r7
|
|
lsls r2, 2
|
|
adds r3, r2, r4
|
|
strh r6, [r3, 0x38]
|
|
ldrh r1, [r3, 0x4]
|
|
mov r8, r1
|
|
mov r5, r8
|
|
lsls r1, r5, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x20
|
|
ldr r5, _08043C1C @ =0x000003ff
|
|
adds r0, r5, 0
|
|
ands r1, r0
|
|
ldr r0, _08043C20 @ =0xfffffc00
|
|
mov r5, r8
|
|
ands r0, r5
|
|
orrs r0, r1
|
|
strh r0, [r3, 0x4]
|
|
adds r4, 0x1C
|
|
adds r2, r4
|
|
ldr r0, _08043C24 @ =sub_8043D5C
|
|
str r0, [r2]
|
|
movs r0, 0x2
|
|
_08043B4E:
|
|
str r0, [sp]
|
|
_08043B50:
|
|
ldr r0, _08043C28 @ =gUnknown_02024A72
|
|
add r0, r10
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
ldr r1, _08043C2C @ =gSpriteTemplate_820A56C
|
|
adds r0, r1
|
|
movs r1, 0x8C
|
|
movs r2, 0x3C
|
|
movs r3, 0
|
|
bl CreateSpriteAtEnd
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
lsls r4, r5, 4
|
|
adds r4, r5
|
|
lsls r4, 2
|
|
ldr r1, _08043C18 @ =gSprites
|
|
mov r8, r1
|
|
add r4, r8
|
|
mov r0, r10
|
|
bl battle_side_get_owner
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 21
|
|
ldr r0, _08043C30 @ =gSubspriteTables_820A684
|
|
adds r1, r0
|
|
adds r0, r4, 0
|
|
bl SetSubspriteTables
|
|
adds r2, r4, 0
|
|
adds r2, 0x42
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrb r1, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r2, 0x4
|
|
mov r9, r2
|
|
mov r1, r9
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
movs r0, 0x1
|
|
bl sub_8043CDC
|
|
ldrh r1, [r4, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
ldr r2, _08043C34 @ =0x06010000
|
|
adds r1, r2
|
|
ldr r2, _08043C38 @ =REG_BG0HOFS
|
|
bl CpuSet
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
add r0, r8
|
|
strh r5, [r0, 0x38]
|
|
mov r2, r10
|
|
strh r2, [r0, 0x3A]
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
mov r5, r9
|
|
orrs r1, r5
|
|
strb r1, [r0]
|
|
lsls r0, r7, 4
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
add r0, r8
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
orrs r1, r5
|
|
strb r1, [r0]
|
|
strh r6, [r4, 0x38]
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x3A]
|
|
adds r4, 0x3E
|
|
ldrb r0, [r4]
|
|
orrs r0, r5
|
|
strb r0, [r4]
|
|
adds r0, r6, 0
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08043C14: .4byte gSpriteTemplate_820A51C
|
|
_08043C18: .4byte gSprites
|
|
_08043C1C: .4byte 0x000003ff
|
|
_08043C20: .4byte 0xfffffc00
|
|
_08043C24: .4byte sub_8043D5C
|
|
_08043C28: .4byte gUnknown_02024A72
|
|
_08043C2C: .4byte gSpriteTemplate_820A56C
|
|
_08043C30: .4byte gSubspriteTables_820A684
|
|
_08043C34: .4byte 0x06010000
|
|
_08043C38: .4byte REG_BG0HOFS
|
|
thumb_func_end battle_make_oam_normal_battle
|
|
|
|
thumb_func_start battle_make_oam_safari_battle
|
|
battle_make_oam_safari_battle: @ 8043C3C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r4, _08043CC8 @ =gSpriteTemplate_820A54C
|
|
adds r0, r4, 0
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSprite
|
|
adds r6, r0, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0xF0
|
|
movs r2, 0xA0
|
|
movs r3, 0x1
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _08043CCC @ =gSprites
|
|
mov r9, r1
|
|
lsls r4, r6, 4
|
|
adds r4, r6
|
|
lsls r4, 2
|
|
add r4, r9
|
|
ldrb r3, [r4, 0x1]
|
|
movs r2, 0x3F
|
|
adds r1, r2, 0
|
|
ands r1, r3
|
|
strb r1, [r4, 0x1]
|
|
lsls r3, r0, 4
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
mov r7, r9
|
|
adds r5, r3, r7
|
|
ldrb r1, [r5, 0x1]
|
|
ands r2, r1
|
|
strb r2, [r5, 0x1]
|
|
ldrh r1, [r5, 0x4]
|
|
mov r8, r1
|
|
mov r7, r8
|
|
lsls r2, r7, 22
|
|
lsrs r2, 22
|
|
adds r2, 0x40
|
|
ldr r7, _08043CD0 @ =0x000003ff
|
|
adds r1, r7, 0
|
|
ands r2, r1
|
|
ldr r1, _08043CD4 @ =0xfffffc00
|
|
mov r7, r8
|
|
ands r1, r7
|
|
orrs r1, r2
|
|
strh r1, [r5, 0x4]
|
|
strh r0, [r4, 0x6]
|
|
strh r6, [r5, 0x38]
|
|
movs r0, 0x1C
|
|
add r9, r0
|
|
add r3, r9
|
|
ldr r0, _08043CD8 @ =sub_8043D5C
|
|
str r0, [r3]
|
|
adds r0, r6, 0
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08043CC8: .4byte gSpriteTemplate_820A54C
|
|
_08043CCC: .4byte gSprites
|
|
_08043CD0: .4byte 0x000003ff
|
|
_08043CD4: .4byte 0xfffffc00
|
|
_08043CD8: .4byte sub_8043D5C
|
|
thumb_func_end battle_make_oam_safari_battle
|
|
|
|
thumb_func_start sub_8043CDC
|
|
sub_8043CDC: @ 8043CDC
|
|
lsls r0, 24
|
|
lsrs r0, 19
|
|
ldr r1, _08043CE8 @ =gUnknown_08D1216C
|
|
adds r0, r1
|
|
bx lr
|
|
.align 2, 0
|
|
_08043CE8: .4byte gUnknown_08D1216C
|
|
thumb_func_end sub_8043CDC
|
|
|
|
thumb_func_start sub_8043CEC
|
|
sub_8043CEC: @ 8043CEC
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x38]
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _08043D1C
|
|
cmp r0, 0x1
|
|
bgt _08043D30
|
|
cmp r0, 0
|
|
bne _08043D30
|
|
ldr r2, _08043D18 @ =gSprites
|
|
lsls r3, r5, 4
|
|
adds r1, r3, r5
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x10
|
|
b _08043D3E
|
|
.align 2, 0
|
|
_08043D18: .4byte gSprites
|
|
_08043D1C:
|
|
ldr r2, _08043D2C @ =gSprites
|
|
lsls r3, r5, 4
|
|
adds r1, r3, r5
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x10
|
|
b _08043D3E
|
|
.align 2, 0
|
|
_08043D2C: .4byte gSprites
|
|
_08043D30:
|
|
ldr r2, _08043D58 @ =gSprites
|
|
lsls r3, r5, 4
|
|
adds r1, r3, r5
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x8
|
|
_08043D3E:
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r1, 0x22]
|
|
strh r0, [r4, 0x22]
|
|
adds r0, r3, r5
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x24]
|
|
strh r1, [r4, 0x24]
|
|
ldrh r0, [r0, 0x26]
|
|
strh r0, [r4, 0x26]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043D58: .4byte gSprites
|
|
thumb_func_end sub_8043CEC
|
|
|
|
thumb_func_start sub_8043D5C
|
|
sub_8043D5C: @ 8043D5C
|
|
ldrh r1, [r0, 0x38]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r3, _08043D80 @ =gSprites
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x20]
|
|
adds r1, 0x40
|
|
strh r1, [r0, 0x20]
|
|
ldrh r1, [r2, 0x22]
|
|
strh r1, [r0, 0x22]
|
|
ldrh r1, [r2, 0x24]
|
|
strh r1, [r0, 0x24]
|
|
ldrh r1, [r2, 0x26]
|
|
strh r1, [r0, 0x26]
|
|
bx lr
|
|
.align 2, 0
|
|
_08043D80: .4byte gSprites
|
|
thumb_func_end sub_8043D5C
|
|
|
|
thumb_func_start sub_8043D84
|
|
sub_8043D84: @ 8043D84
|
|
push {r4,r5,lr}
|
|
ldr r5, [sp, 0xC]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _08043DA8 @ =0x02017850
|
|
adds r4, r0
|
|
strb r1, [r4]
|
|
str r2, [r4, 0x4]
|
|
str r3, [r4, 0x8]
|
|
str r5, [r4, 0xC]
|
|
ldr r0, _08043DAC @ =0xffff8000
|
|
str r0, [r4, 0x10]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043DA8: .4byte 0x02017850
|
|
_08043DAC: .4byte 0xffff8000
|
|
thumb_func_end sub_8043D84
|
|
|
|
thumb_func_start sub_8043DB0
|
|
sub_8043DB0: @ 8043DB0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r4, _08043DF8 @ =gSprites
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
adds r1, r2, 0
|
|
adds r1, 0x3E
|
|
ldrb r0, [r1]
|
|
movs r3, 0x4
|
|
orrs r0, r3
|
|
strb r0, [r1]
|
|
movs r0, 0x38
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
orrs r1, r3
|
|
strb r1, [r0]
|
|
ldrh r1, [r2, 0x6]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
orrs r1, r3
|
|
strb r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043DF8: .4byte gSprites
|
|
thumb_func_end sub_8043DB0
|
|
|
|
thumb_func_start sub_8043DFC
|
|
sub_8043DFC: @ 8043DFC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r5, _08043E4C @ =gSprites
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
adds r4, r2, 0
|
|
adds r4, 0x3E
|
|
ldrb r1, [r4]
|
|
movs r3, 0x5
|
|
negs r3, r3
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
movs r0, 0x38
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
adds r0, 0x3E
|
|
ldrb r4, [r0]
|
|
adds r1, r3, 0
|
|
ands r1, r4
|
|
strb r1, [r0]
|
|
ldrh r1, [r2, 0x6]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
ands r3, r1
|
|
strb r3, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043E4C: .4byte gSprites
|
|
thumb_func_end sub_8043DFC
|
|
|
|
thumb_func_start sub_8043E50
|
|
sub_8043E50: @ 8043E50
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r4, _08043E6C @ =gSprites
|
|
lsls r3, r0, 4
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
adds r3, r4
|
|
strh r1, [r3, 0x20]
|
|
strh r2, [r3, 0x22]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043E6C: .4byte gSprites
|
|
thumb_func_end sub_8043E50
|
|
|
|
thumb_func_start unref_sub_8043E70
|
|
unref_sub_8043E70: @ 8043E70
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r5, _08043EAC @ =gSprites
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r4, r5
|
|
ldrh r1, [r4, 0x6]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
bl DestroySprite
|
|
movs r0, 0x38
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
bl DestroySprite
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043EAC: .4byte gSprites
|
|
thumb_func_end unref_sub_8043E70
|
|
|
|
thumb_func_start nullsub_11
|
|
nullsub_11: @ 8043EB0
|
|
bx lr
|
|
thumb_func_end nullsub_11
|
|
|
|
thumb_func_start sub_8043EB4
|
|
sub_8043EB4: @ 8043EB4
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r6, 0
|
|
ldr r1, _08043F38 @ =gUnknown_02024A68
|
|
mov r8, r1
|
|
ldrb r2, [r1]
|
|
cmp r6, r2
|
|
bge _08043F2C
|
|
ldr r1, _08043F3C @ =gSprites
|
|
mov r12, r1
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
lsls r5, r0, 2
|
|
movs r7, 0xD
|
|
negs r7, r7
|
|
ldr r2, _08043F40 @ =gUnknown_03004340
|
|
mov r9, r2
|
|
_08043EDE:
|
|
mov r1, r9
|
|
adds r0, r6, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
add r1, r12
|
|
ldrb r4, [r1, 0x6]
|
|
ldrh r3, [r1, 0x38]
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldrb r2, [r1, 0x5]
|
|
adds r0, r7, 0
|
|
ands r0, r2
|
|
orrs r0, r5
|
|
strb r0, [r1, 0x5]
|
|
lsls r1, r4, 4
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
add r1, r12
|
|
ldrb r2, [r1, 0x5]
|
|
adds r0, r7, 0
|
|
ands r0, r2
|
|
orrs r0, r5
|
|
strb r0, [r1, 0x5]
|
|
lsls r1, r3, 4
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
add r1, r12
|
|
ldrb r2, [r1, 0x5]
|
|
adds r0, r7, 0
|
|
ands r0, r2
|
|
orrs r0, r5
|
|
strb r0, [r1, 0x5]
|
|
adds r6, 0x1
|
|
mov r2, r8
|
|
ldrb r2, [r2]
|
|
cmp r6, r2
|
|
blt _08043EDE
|
|
_08043F2C:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043F38: .4byte gUnknown_02024A68
|
|
_08043F3C: .4byte gSprites
|
|
_08043F40: .4byte gUnknown_03004340
|
|
thumb_func_end sub_8043EB4
|
|
|
|
thumb_func_start sub_8043F44
|
|
sub_8043F44: @ 8043F44
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0
|
|
movs r4, 0
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08043F70
|
|
adds r0, r6, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08043F6A
|
|
movs r5, 0x2C
|
|
movs r4, 0x1E
|
|
b _08043FA8
|
|
_08043F6A:
|
|
movs r5, 0x9E
|
|
movs r4, 0x58
|
|
b _08043FA8
|
|
_08043F70:
|
|
adds r0, r6, 0
|
|
bl battle_get_per_side_status
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08043F9E
|
|
cmp r0, 0x1
|
|
bgt _08043F88
|
|
cmp r0, 0
|
|
beq _08043F92
|
|
b _08043FA8
|
|
_08043F88:
|
|
cmp r0, 0x2
|
|
beq _08043F98
|
|
cmp r0, 0x3
|
|
beq _08043FA4
|
|
b _08043FA8
|
|
_08043F92:
|
|
movs r5, 0x9F
|
|
movs r4, 0x4D
|
|
b _08043FA8
|
|
_08043F98:
|
|
movs r5, 0xAB
|
|
movs r4, 0x66
|
|
b _08043FA8
|
|
_08043F9E:
|
|
movs r5, 0x2C
|
|
movs r4, 0x13
|
|
b _08043FA8
|
|
_08043FA4:
|
|
movs r5, 0x20
|
|
movs r4, 0x2C
|
|
_08043FA8:
|
|
ldr r0, _08043FBC @ =gUnknown_03004340
|
|
adds r0, r6, r0
|
|
ldrb r0, [r0]
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl sub_8043E50
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08043FBC: .4byte gUnknown_03004340
|
|
thumb_func_end sub_8043F44
|
|
|
|
thumb_func_start sub_8043FC0
|
|
sub_8043FC0: @ 8043FC0
|
|
push {r4-r7,lr}
|
|
sub sp, 0x20
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
ldr r1, _08044000 @ =gUnknown_0820A81C
|
|
mov r0, sp
|
|
movs r2, 0x1E
|
|
bl memcpy
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08044010
|
|
ldr r1, _08044004 @ =gSprites
|
|
lsls r4, r5, 4
|
|
adds r0, r4, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
ldr r7, _08044008 @ =gUnknown_0820A80C
|
|
cmp r0, 0
|
|
bne _0804402E
|
|
ldr r7, _0804400C @ =gUnknown_0820A804
|
|
b _0804402E
|
|
.align 2, 0
|
|
_08044000: .4byte gUnknown_0820A81C
|
|
_08044004: .4byte gSprites
|
|
_08044008: .4byte gUnknown_0820A80C
|
|
_0804400C: .4byte gUnknown_0820A804
|
|
_08044010:
|
|
ldr r1, _08044040 @ =gSprites
|
|
lsls r4, r5, 4
|
|
adds r0, r4, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
ldr r7, _08044044 @ =gUnknown_0820A80C
|
|
cmp r0, 0
|
|
bne _0804402E
|
|
ldr r7, _08044048 @ =gUnknown_0820A814
|
|
_0804402E:
|
|
mov r3, sp
|
|
adds r3, 0x6
|
|
cmp r6, 0x64
|
|
bne _0804404C
|
|
adds r0, r3, 0
|
|
movs r1, 0x64
|
|
movs r2, 0
|
|
movs r3, 0x3
|
|
b _0804408C
|
|
.align 2, 0
|
|
_08044040: .4byte gSprites
|
|
_08044044: .4byte gUnknown_0820A80C
|
|
_08044048: .4byte gUnknown_0820A814
|
|
_0804404C:
|
|
movs r1, 0xFC
|
|
strb r1, [r3]
|
|
mov r3, sp
|
|
adds r3, 0x7
|
|
movs r0, 0x11
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
movs r0, 0x1
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
strb r1, [r3]
|
|
adds r3, 0x1
|
|
movs r2, 0x14
|
|
strb r2, [r3]
|
|
adds r3, 0x1
|
|
movs r0, 0x4
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
movs r0, 0xF0
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
strb r1, [r3]
|
|
adds r3, 0x1
|
|
strb r2, [r3]
|
|
adds r3, 0x1
|
|
movs r0, 0
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
adds r0, r3, 0
|
|
adds r1, r6, 0
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
_0804408C:
|
|
bl ConvertIntToDecimalStringN
|
|
adds r3, r0, 0
|
|
movs r0, 0xFC
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
movs r0, 0x13
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
movs r0, 0xF
|
|
strb r0, [r3]
|
|
movs r0, 0xFF
|
|
strb r0, [r3, 0x1]
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
mov r1, sp
|
|
bl sub_80034D4
|
|
ldr r1, _080440E0 @ =gSprites
|
|
adds r0, r4, r5
|
|
lsls r0, 2
|
|
adds r6, r0, r1
|
|
ldr r5, _080440E4 @ =0x02000020
|
|
movs r4, 0x2
|
|
_080440BC:
|
|
ldrh r0, [r6, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 17
|
|
ldm r7!, {r1}
|
|
adds r1, r0
|
|
adds r0, r5, 0
|
|
ldr r2, _080440E8 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r5, 0x40
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _080440BC
|
|
add sp, 0x20
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080440E0: .4byte gSprites
|
|
_080440E4: .4byte 0x02000020
|
|
_080440E8: .4byte REG_BG0CNT
|
|
thumb_func_end sub_8043FC0
|
|
|
|
thumb_func_start sub_80440EC
|
|
sub_80440EC: @ 80440EC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x14
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r1, 16
|
|
lsrs r6, r1, 16
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r8, r2
|
|
ldr r1, _08044144 @ =gUnknown_0820A864
|
|
mov r0, sp
|
|
movs r2, 0x14
|
|
bl memcpy
|
|
ldr r1, _08044148 @ =gSprites
|
|
lsls r0, r7, 4
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
movs r0, 0x3A
|
|
ldrsh r5, [r4, r0]
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08044136
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0804414C
|
|
_08044136:
|
|
lsls r1, r6, 16
|
|
asrs r1, 16
|
|
adds r0, r7, 0
|
|
mov r2, r8
|
|
bl sub_8044210
|
|
b _080441F0
|
|
.align 2, 0
|
|
_08044144: .4byte gUnknown_0820A864
|
|
_08044148: .4byte gSprites
|
|
_0804414C:
|
|
mov r5, sp
|
|
adds r5, 0x6
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bne _08044190
|
|
ldrh r0, [r4, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
ldr r4, _08044188 @ =gUnknown_0820A848
|
|
cmp r0, 0
|
|
bne _0804416A
|
|
ldr r4, _0804418C @ =gUnknown_0820A83C
|
|
_0804416A:
|
|
movs r0, 0x3
|
|
mov r8, r0
|
|
lsls r1, r6, 16
|
|
asrs r1, 16
|
|
adds r0, r5, 0
|
|
movs r2, 0x13
|
|
movs r3, 0x1
|
|
bl sub_8003504
|
|
adds r5, r0, 0
|
|
movs r0, 0xBA
|
|
strb r0, [r5]
|
|
movs r0, 0xFF
|
|
strb r0, [r5, 0x1]
|
|
b _080441B6
|
|
.align 2, 0
|
|
_08044188: .4byte gUnknown_0820A848
|
|
_0804418C: .4byte gUnknown_0820A83C
|
|
_08044190:
|
|
ldrh r0, [r4, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
ldr r4, _080441FC @ =gUnknown_0820A85C
|
|
cmp r0, 0
|
|
bne _080441A4
|
|
ldr r4, _08044200 @ =gUnknown_0820A854
|
|
_080441A4:
|
|
movs r0, 0x2
|
|
mov r8, r0
|
|
lsls r1, r6, 16
|
|
asrs r1, 16
|
|
adds r0, r5, 0
|
|
movs r2, 0xF
|
|
movs r3, 0x1
|
|
bl sub_8003504
|
|
_080441B6:
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
mov r1, sp
|
|
bl sub_80034D4
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _080441F0
|
|
ldr r1, _08044204 @ =gSprites
|
|
lsls r0, r7, 4
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r6, r0, r1
|
|
adds r7, r4, 0
|
|
ldr r5, _08044208 @ =0x02000020
|
|
mov r4, r8
|
|
_080441D6:
|
|
ldrh r0, [r6, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 17
|
|
ldm r7!, {r1}
|
|
adds r1, r0
|
|
adds r0, r5, 0
|
|
ldr r2, _0804420C @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r5, 0x40
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _080441D6
|
|
_080441F0:
|
|
add sp, 0x14
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080441FC: .4byte gUnknown_0820A85C
|
|
_08044200: .4byte gUnknown_0820A854
|
|
_08044204: .4byte gSprites
|
|
_08044208: .4byte 0x02000020
|
|
_0804420C: .4byte REG_BG0CNT
|
|
thumb_func_end sub_80440EC
|
|
|
|
thumb_func_start sub_8044210
|
|
sub_8044210: @ 8044210
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x14
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 16
|
|
lsrs r6, r1, 16
|
|
mov r9, r6
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
ldr r1, _0804427C @ =gUnknown_0820A89C
|
|
mov r0, sp
|
|
movs r2, 0x14
|
|
bl memcpy
|
|
ldr r1, _08044280 @ =gSprites
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
mov r8, r0
|
|
movs r1, 0x3A
|
|
ldrsh r4, [r0, r1]
|
|
lsls r0, r4, 2
|
|
ldr r1, _08044284 @ =0x02017800
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08044312
|
|
mov r2, sp
|
|
adds r2, 0x6
|
|
cmp r7, 0
|
|
bne _0804428C
|
|
ldr r7, _08044288 @ =gUnknown_0820A87C
|
|
movs r0, 0x6
|
|
mov r10, r0
|
|
lsls r1, r6, 16
|
|
asrs r1, 16
|
|
adds r0, r2, 0
|
|
movs r2, 0x2B
|
|
movs r3, 0x1
|
|
bl sub_8003504
|
|
adds r2, r0, 0
|
|
movs r0, 0xBA
|
|
strb r0, [r2]
|
|
movs r0, 0xFF
|
|
strb r0, [r2, 0x1]
|
|
b _080442CE
|
|
.align 2, 0
|
|
_0804427C: .4byte gUnknown_0820A89C
|
|
_08044280: .4byte gSprites
|
|
_08044284: .4byte 0x02017800
|
|
_08044288: .4byte gUnknown_0820A87C
|
|
_0804428C:
|
|
ldr r7, _08044324 @ =gUnknown_0820A894
|
|
movs r1, 0x2
|
|
mov r10, r1
|
|
mov r0, r9
|
|
lsls r1, r0, 16
|
|
asrs r1, 16
|
|
adds r0, r2, 0
|
|
movs r2, 0xF
|
|
movs r3, 0x1
|
|
bl sub_8003504
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080442CE
|
|
movs r0, 0x74
|
|
bl sub_8043CDC
|
|
mov r2, r8
|
|
ldrh r1, [r2, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
movs r2, 0xD0
|
|
lsls r2, 3
|
|
adds r1, r2
|
|
ldr r2, _08044328 @ =0x06010000
|
|
adds r1, r2
|
|
ldr r2, _0804432C @ =REG_BG0CNT
|
|
bl CpuSet
|
|
_080442CE:
|
|
ldr r6, _08044330 @ =gSprites
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
movs r1, 0x38
|
|
ldrsh r4, [r0, r1]
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
mov r1, sp
|
|
bl sub_80034D4
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
beq _08044312
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r6, r0, r6
|
|
ldr r5, _08044334 @ =0x02000020
|
|
mov r4, r10
|
|
_080442F8:
|
|
ldrh r0, [r6, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 17
|
|
ldm r7!, {r1}
|
|
adds r1, r0
|
|
adds r0, r5, 0
|
|
ldr r2, _0804432C @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r5, 0x40
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _080442F8
|
|
_08044312:
|
|
add sp, 0x14
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08044324: .4byte gUnknown_0820A894
|
|
_08044328: .4byte 0x06010000
|
|
_0804432C: .4byte REG_BG0CNT
|
|
_08044330: .4byte gSprites
|
|
_08044334: .4byte 0x02000020
|
|
thumb_func_end sub_8044210
|
|
|
|
thumb_func_start sub_8044338
|
|
sub_8044338: @ 8044338
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
adds r4, r1, 0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x14]
|
|
ldr r1, _080443CC @ =gUnknown_0820A864
|
|
mov r0, sp
|
|
movs r2, 0x14
|
|
bl memcpy
|
|
ldr r1, _080443D0 @ =gSprites
|
|
ldr r2, [sp, 0x14]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_get_per_side_status
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 7
|
|
ldr r3, _080443D4 @ =0x02000520
|
|
adds r6, r1, r3
|
|
movs r0, 0x5
|
|
mov r8, r0
|
|
adds r0, r4, 0
|
|
bl GetNature
|
|
lsls r0, 24
|
|
mov r4, sp
|
|
adds r4, 0x6
|
|
ldr r1, _080443D8 @ =gNatureNames
|
|
lsrs r0, 22
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r4, 0
|
|
bl StringCopy
|
|
adds r0, r6, 0
|
|
mov r1, sp
|
|
bl sub_80034D4
|
|
movs r7, 0x6
|
|
movs r5, 0
|
|
mov r1, sp
|
|
adds r1, 0x9
|
|
str r1, [sp, 0x1C]
|
|
_080443AA:
|
|
mov r2, sp
|
|
adds r0, r2, r7
|
|
ldrb r1, [r0]
|
|
adds r0, r1, 0
|
|
subs r0, 0x37
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x13
|
|
bls _080443C8
|
|
adds r0, r1, 0
|
|
adds r0, 0x79
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x13
|
|
bhi _080443DC
|
|
_080443C8:
|
|
movs r0, 0x2C
|
|
b _080443FA
|
|
.align 2, 0
|
|
_080443CC: .4byte gUnknown_0820A864
|
|
_080443D0: .4byte gSprites
|
|
_080443D4: .4byte 0x02000520
|
|
_080443D8: .4byte gNatureNames
|
|
_080443DC:
|
|
adds r0, r1, 0
|
|
subs r0, 0x4B
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
bls _080443F4
|
|
adds r0, r1, 0
|
|
adds r0, 0x65
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
bhi _080443F8
|
|
_080443F4:
|
|
movs r0, 0x2D
|
|
b _080443FA
|
|
_080443F8:
|
|
movs r0, 0x2B
|
|
_080443FA:
|
|
bl sub_8043CDC
|
|
lsls r1, r5, 6
|
|
adds r1, r6, r1
|
|
ldr r2, _080444F8 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r7, 0x1
|
|
cmp r5, r8
|
|
bcc _080443AA
|
|
movs r7, 0x1
|
|
ldr r3, [sp, 0x14]
|
|
lsls r3, 4
|
|
str r3, [sp, 0x18]
|
|
movs r0, 0x1
|
|
add r0, r8
|
|
mov r9, r0
|
|
cmp r7, r9
|
|
bge _08044486
|
|
ldr r1, _080444FC @ =gSprites
|
|
ldr r2, _080444F8 @ =REG_BG0CNT
|
|
mov r10, r2
|
|
ldr r2, [sp, 0x14]
|
|
adds r0, r3, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
mov r8, r0
|
|
_08044436:
|
|
mov r3, r8
|
|
ldrh r0, [r3, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 22
|
|
adds r5, r7, 0
|
|
cmp r7, 0
|
|
bge _08044446
|
|
adds r5, r7, 0x7
|
|
_08044446:
|
|
asrs r5, 3
|
|
lsls r4, r5, 3
|
|
subs r4, r7, r4
|
|
adds r0, r4
|
|
lsls r5, 6
|
|
adds r0, r5
|
|
lsls r0, 5
|
|
ldr r2, _08044500 @ =0x06010000
|
|
adds r1, r0, r2
|
|
adds r0, r6, 0
|
|
mov r2, r10
|
|
bl CpuSet
|
|
adds r6, 0x20
|
|
mov r3, r8
|
|
ldrh r0, [r3, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 22
|
|
adds r4, 0x8
|
|
adds r0, r4
|
|
adds r0, r5
|
|
lsls r0, 5
|
|
ldr r2, _08044500 @ =0x06010000
|
|
adds r1, r0, r2
|
|
adds r0, r6, 0
|
|
mov r2, r10
|
|
bl CpuSet
|
|
adds r6, 0x20
|
|
adds r7, 0x1
|
|
cmp r7, r9
|
|
blt _08044436
|
|
_08044486:
|
|
ldr r6, _080444FC @ =gSprites
|
|
ldr r3, [sp, 0x18]
|
|
ldr r1, [sp, 0x14]
|
|
adds r0, r3, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrh r5, [r0, 0x38]
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r4, _08044504 @ =0x02000000
|
|
ldr r2, _08044508 @ =0x00016089
|
|
adds r0, r4, r2
|
|
ldrb r1, [r0]
|
|
mov r0, sp
|
|
adds r0, 0x6
|
|
movs r2, 0x1
|
|
movs r3, 0x2
|
|
bl ConvertIntToDecimalStringN
|
|
ldr r3, _0804450C @ =0x00016088
|
|
adds r4, r3
|
|
ldrb r1, [r4]
|
|
ldr r0, [sp, 0x1C]
|
|
movs r2, 0x1
|
|
movs r3, 0x2
|
|
bl ConvertIntToDecimalStringN
|
|
mov r1, sp
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
movs r0, 0xBA
|
|
strb r0, [r1, 0x8]
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
bl sub_80034D4
|
|
movs r7, 0
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r5, r0, r6
|
|
ldr r4, _08044510 @ =0x02000020
|
|
_080444DA:
|
|
cmp r7, 0x1
|
|
bgt _08044514
|
|
ldrh r1, [r5, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
adds r0, r7, 0x2
|
|
adds r1, r0
|
|
lsls r1, 5
|
|
ldr r0, _08044500 @ =0x06010000
|
|
adds r1, r0
|
|
adds r0, r4, 0
|
|
ldr r2, _080444F8 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
b _0804452A
|
|
.align 2, 0
|
|
_080444F8: .4byte REG_BG0CNT
|
|
_080444FC: .4byte gSprites
|
|
_08044500: .4byte 0x06010000
|
|
_08044504: .4byte 0x02000000
|
|
_08044508: .4byte 0x00016089
|
|
_0804450C: .4byte 0x00016088
|
|
_08044510: .4byte 0x02000020
|
|
_08044514:
|
|
ldrh r1, [r5, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
adds r1, r7, r1
|
|
lsls r1, 5
|
|
ldr r2, _08044544 @ =0x060100c0
|
|
adds r1, r2
|
|
adds r0, r4, 0
|
|
ldr r2, _08044548 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
_0804452A:
|
|
adds r4, 0x40
|
|
adds r7, 0x1
|
|
cmp r7, 0x4
|
|
ble _080444DA
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08044544: .4byte 0x060100c0
|
|
_08044548: .4byte REG_BG0CNT
|
|
thumb_func_end sub_8044338
|
|
|
|
thumb_func_start sub_804454C
|
|
sub_804454C: @ 804454C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
mov r8, r0
|
|
ldr r0, _0804466C @ =gUnknown_02024A68
|
|
ldrb r0, [r0]
|
|
cmp r8, r0
|
|
blt _08044566
|
|
b _080447E4
|
|
_08044566:
|
|
ldr r1, _08044670 @ =gSprites
|
|
mov r9, r1
|
|
movs r2, 0x64
|
|
mov r10, r2
|
|
ldr r7, _08044674 @ =gUnknown_02024A6A
|
|
_08044570:
|
|
ldr r0, _08044678 @ =gUnknown_03004340
|
|
mov r6, r8
|
|
adds r5, r6, r0
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
mov r1, r9
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
ldr r0, _0804467C @ =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
beq _0804458E
|
|
b _080447D4
|
|
_0804458E:
|
|
lsls r0, r6, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080445A2
|
|
b _080447D4
|
|
_080445A2:
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080445BA
|
|
adds r0, r4, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080445BA
|
|
b _080447D4
|
|
_080445BA:
|
|
mov r0, r8
|
|
lsls r3, r0, 2
|
|
ldr r0, _08044680 @ =0x02017800
|
|
adds r3, r0
|
|
ldr r0, [r3]
|
|
lsls r0, 27
|
|
lsrs r0, 31
|
|
movs r2, 0x1
|
|
eors r2, r0
|
|
lsls r2, 4
|
|
ldrb r0, [r3]
|
|
movs r6, 0x11
|
|
negs r6, r6
|
|
adds r1, r6, 0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r3]
|
|
ldr r0, [r3]
|
|
lsls r0, 27
|
|
lsrs r6, r0, 31
|
|
adds r0, r4, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080446DC
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080445FA
|
|
b _080447D4
|
|
_080445FA:
|
|
ldr r0, _08044684 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
cmp r2, 0
|
|
beq _0804460C
|
|
b _080447D4
|
|
_0804460C:
|
|
cmp r6, 0x1
|
|
bne _08044694
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
ldrh r0, [r0, 0x38]
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
str r2, [sp]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
ldrh r1, [r0, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
ldr r0, _08044688 @ =0x06010000
|
|
adds r1, r0
|
|
mov r0, sp
|
|
ldr r2, _0804468C @ =0x05000040
|
|
bl CpuSet
|
|
ldrb r4, [r5]
|
|
ldrh r0, [r7]
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r2, _08044690 @ =gPlayerParty
|
|
adds r0, r2
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
movs r2, 0
|
|
bl sub_8044210
|
|
ldrb r4, [r5]
|
|
ldrh r0, [r7]
|
|
mov r6, r10
|
|
muls r6, r0
|
|
adds r0, r6, 0
|
|
ldr r1, _08044690 @ =gPlayerParty
|
|
b _08044766
|
|
.align 2, 0
|
|
_0804466C: .4byte gUnknown_02024A68
|
|
_08044670: .4byte gSprites
|
|
_08044674: .4byte gUnknown_02024A6A
|
|
_08044678: .4byte gUnknown_03004340
|
|
_0804467C: .4byte SpriteCallbackDummy
|
|
_08044680: .4byte 0x02017800
|
|
_08044684: .4byte gBattleTypeFlags
|
|
_08044688: .4byte 0x06010000
|
|
_0804468C: .4byte 0x05000040
|
|
_08044690: .4byte gPlayerParty
|
|
_08044694:
|
|
ldrb r0, [r5]
|
|
bl draw_status_ailment_maybe
|
|
ldrb r0, [r5]
|
|
ldrh r1, [r7]
|
|
mov r2, r10
|
|
muls r2, r1
|
|
adds r1, r2, 0
|
|
ldr r6, _080446D0 @ =gPlayerParty
|
|
adds r1, r6
|
|
movs r2, 0x5
|
|
bl sub_8045A5C
|
|
movs r0, 0x75
|
|
bl sub_8043CDC
|
|
ldrb r2, [r5]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
add r1, r9
|
|
ldrh r1, [r1, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
ldr r2, _080446D4 @ =0x06010680
|
|
adds r1, r2
|
|
ldr r2, _080446D8 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
b _080447BE
|
|
.align 2, 0
|
|
_080446D0: .4byte gPlayerParty
|
|
_080446D4: .4byte 0x06010680
|
|
_080446D8: .4byte REG_BG0CNT
|
|
_080446DC:
|
|
cmp r6, 0x1
|
|
bne _0804478C
|
|
ldr r0, _08044704 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
cmp r2, 0
|
|
beq _0804470C
|
|
ldrb r0, [r5]
|
|
ldrh r1, [r7]
|
|
mov r6, r10
|
|
muls r6, r1
|
|
adds r1, r6, 0
|
|
ldr r2, _08044708 @ =gEnemyParty
|
|
adds r1, r2
|
|
bl sub_8044338
|
|
b _080447BE
|
|
.align 2, 0
|
|
_08044704: .4byte gBattleTypeFlags
|
|
_08044708: .4byte gEnemyParty
|
|
_0804470C:
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
ldrh r0, [r0, 0x38]
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
str r2, [sp]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
ldrh r1, [r0, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
ldr r6, _08044780 @ =0x06010000
|
|
adds r1, r6
|
|
mov r0, sp
|
|
ldr r2, _08044784 @ =0x05000040
|
|
bl CpuSet
|
|
ldrb r4, [r5]
|
|
ldrh r0, [r7]
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r2, _08044788 @ =gEnemyParty
|
|
adds r0, r2
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
movs r2, 0
|
|
bl sub_8044210
|
|
ldrb r4, [r5]
|
|
ldrh r0, [r7]
|
|
mov r6, r10
|
|
muls r6, r0
|
|
adds r0, r6, 0
|
|
ldr r1, _08044788 @ =gEnemyParty
|
|
_08044766:
|
|
adds r0, r1
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
movs r2, 0x1
|
|
bl sub_8044210
|
|
b _080447BE
|
|
.align 2, 0
|
|
_08044780: .4byte 0x06010000
|
|
_08044784: .4byte 0x05000040
|
|
_08044788: .4byte gEnemyParty
|
|
_0804478C:
|
|
ldrb r0, [r5]
|
|
bl draw_status_ailment_maybe
|
|
ldrb r0, [r5]
|
|
ldrh r1, [r7]
|
|
movs r6, 0x64
|
|
muls r1, r6
|
|
ldr r4, _080447F4 @ =gEnemyParty
|
|
adds r1, r4
|
|
movs r2, 0x5
|
|
bl sub_8045A5C
|
|
ldr r0, _080447F8 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080447BE
|
|
ldrb r0, [r5]
|
|
ldrh r1, [r7]
|
|
muls r1, r6
|
|
adds r1, r4
|
|
movs r2, 0x4
|
|
bl sub_8045A5C
|
|
_080447BE:
|
|
ldr r0, _080447FC @ =gUnknown_03004340
|
|
add r0, r8
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
ldrh r1, [r0, 0x3C]
|
|
movs r2, 0x1
|
|
eors r1, r2
|
|
strh r1, [r0, 0x3C]
|
|
_080447D4:
|
|
adds r7, 0x2
|
|
movs r2, 0x1
|
|
add r8, r2
|
|
ldr r0, _08044800 @ =gUnknown_02024A68
|
|
ldrb r0, [r0]
|
|
cmp r8, r0
|
|
bge _080447E4
|
|
b _08044570
|
|
_080447E4:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080447F4: .4byte gEnemyParty
|
|
_080447F8: .4byte gBattleTypeFlags
|
|
_080447FC: .4byte gUnknown_03004340
|
|
_08044800: .4byte gUnknown_02024A68
|
|
thumb_func_end sub_804454C
|
|
|
|
thumb_func_start sub_8044804
|
|
sub_8044804: @ 8044804
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x28
|
|
str r1, [sp, 0xC]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x8]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r4, r2, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
str r3, [sp, 0x10]
|
|
cmp r4, 0
|
|
beq _08044834
|
|
bl battle_get_per_side_status
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
beq _08044878
|
|
_08044834:
|
|
ldr r0, [sp, 0x8]
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08044854
|
|
movs r7, 0
|
|
movs r1, 0x88
|
|
movs r2, 0x60
|
|
movs r0, 0x64
|
|
mov r8, r0
|
|
ldr r5, _08044850 @ =0x0000fffb
|
|
b _08044884
|
|
.align 2, 0
|
|
_08044850: .4byte 0x0000fffb
|
|
_08044854:
|
|
movs r7, 0x1
|
|
cmp r4, 0
|
|
beq _08044864
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0804486A
|
|
_08044864:
|
|
movs r1, 0x68
|
|
movs r2, 0x28
|
|
b _0804486E
|
|
_0804486A:
|
|
movs r1, 0x68
|
|
movs r2, 0x10
|
|
_0804486E:
|
|
ldr r3, _08044874 @ =0x0000ff9c
|
|
mov r8, r3
|
|
b _08044882
|
|
.align 2, 0
|
|
_08044874: .4byte 0x0000ff9c
|
|
_08044878:
|
|
movs r7, 0x1
|
|
movs r1, 0x68
|
|
movs r2, 0x28
|
|
ldr r5, _08044930 @ =0x0000ff9c
|
|
mov r8, r5
|
|
_08044882:
|
|
movs r5, 0x5
|
|
_08044884:
|
|
movs r6, 0
|
|
str r6, [sp, 0x14]
|
|
lsls r4, r7, 3
|
|
ldr r0, _08044934 @ =gUnknown_0820A754
|
|
mov r10, r0
|
|
lsls r3, r7, 1
|
|
mov r9, r3
|
|
lsls r1, 16
|
|
str r1, [sp, 0x20]
|
|
lsls r2, 16
|
|
str r2, [sp, 0x24]
|
|
ldr r2, _08044938 @ =0x0000ffff
|
|
ldr r1, [sp, 0xC]
|
|
movs r6, 0x5
|
|
_080448A0:
|
|
ldrh r0, [r1]
|
|
cmp r0, r2
|
|
beq _080448B4
|
|
ldr r3, [sp, 0x14]
|
|
lsls r0, r3, 24
|
|
movs r3, 0x80
|
|
lsls r3, 17
|
|
adds r0, r3
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x14]
|
|
_080448B4:
|
|
adds r1, 0x8
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _080448A0
|
|
mov r6, r10
|
|
adds r0, r4, r6
|
|
bl LoadCompressedObjectPic
|
|
ldr r0, _0804493C @ =gUnknown_0820A784
|
|
adds r0, r4, r0
|
|
bl LoadSpriteSheet
|
|
ldr r0, _08044940 @ =gUnknown_0820A764
|
|
adds r0, r4, r0
|
|
bl LoadSpritePalette
|
|
ldr r0, _08044944 @ =gUnknown_0820A774
|
|
adds r0, r4, r0
|
|
bl LoadSpritePalette
|
|
mov r1, r9
|
|
adds r0, r1, r7
|
|
lsls r0, 3
|
|
ldr r1, _08044948 @ =gSpriteTemplate_820A7A4
|
|
adds r0, r1
|
|
ldr r2, [sp, 0x20]
|
|
asrs r1, r2, 16
|
|
ldr r3, [sp, 0x24]
|
|
asrs r2, r3, 16
|
|
movs r3, 0xA
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x18]
|
|
lsls r0, 4
|
|
ldr r6, [sp, 0x18]
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
ldr r1, _0804494C @ =gSprites
|
|
adds r4, r0, r1
|
|
ldr r1, _08044950 @ =gSubspriteTables_820A6E4
|
|
adds r0, r4, 0
|
|
bl SetSubspriteTables
|
|
mov r0, r8
|
|
strh r0, [r4, 0x24]
|
|
strh r5, [r4, 0x2E]
|
|
cmp r7, 0
|
|
beq _08044954
|
|
ldrh r0, [r4, 0x20]
|
|
subs r0, 0x60
|
|
strh r0, [r4, 0x20]
|
|
ldrb r1, [r4, 0x3]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x3]
|
|
b _0804495A
|
|
.align 2, 0
|
|
_08044930: .4byte 0x0000ff9c
|
|
_08044934: .4byte gUnknown_0820A754
|
|
_08044938: .4byte 0x0000ffff
|
|
_0804493C: .4byte gUnknown_0820A784
|
|
_08044940: .4byte gUnknown_0820A764
|
|
_08044944: .4byte gUnknown_0820A774
|
|
_08044948: .4byte gSpriteTemplate_820A7A4
|
|
_0804494C: .4byte gSprites
|
|
_08044950: .4byte gSubspriteTables_820A6E4
|
|
_08044954:
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x60
|
|
strh r0, [r4, 0x20]
|
|
_0804495A:
|
|
movs r6, 0
|
|
ldr r1, _08044A04 @ =gSprites
|
|
mov r10, r1
|
|
mov r4, sp
|
|
mov r2, r9
|
|
adds r0, r2, r7
|
|
lsls r0, 3
|
|
str r0, [sp, 0x1C]
|
|
movs r3, 0xA
|
|
mov r9, r3
|
|
mov r8, r6
|
|
_08044970:
|
|
ldr r0, _08044A08 @ =gSpriteTemplate_820A7D4
|
|
ldr r5, [sp, 0x24]
|
|
ldr r1, _08044A0C @ =0xfffc0000
|
|
adds r2, r5, r1
|
|
ldr r3, [sp, 0x1C]
|
|
adds r0, r3, r0
|
|
ldr r5, [sp, 0x20]
|
|
asrs r1, r5, 16
|
|
asrs r2, 16
|
|
movs r3, 0x9
|
|
bl CreateSpriteAtEnd
|
|
strb r0, [r4]
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, 0
|
|
bne _080449A0
|
|
ldrb r0, [r4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r2, _08044A10 @ =gSprites + 0x1C
|
|
adds r1, r2
|
|
ldr r0, _08044A14 @ =sub_8045180
|
|
str r0, [r1]
|
|
_080449A0:
|
|
ldr r5, _08044A04 @ =gSprites
|
|
cmp r7, 0
|
|
bne _080449BE
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r10
|
|
strh r7, [r0, 0x24]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r10
|
|
strh r7, [r0, 0x26]
|
|
_080449BE:
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
movs r1, 0
|
|
mov r3, sp
|
|
ldrh r3, [r3, 0x18]
|
|
strh r3, [r0, 0x2E]
|
|
cmp r7, 0
|
|
bne _08044A18
|
|
ldrb r0, [r4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x18
|
|
add r0, r8
|
|
strh r0, [r1, 0x20]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
mov r1, r9
|
|
strh r1, [r0, 0x30]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
movs r1, 0x78
|
|
b _08044A56
|
|
.align 2, 0
|
|
_08044A04: .4byte gSprites
|
|
_08044A08: .4byte gSpriteTemplate_820A7D4
|
|
_08044A0C: .4byte 0xfffc0000
|
|
_08044A10: .4byte gSprites + 0x1C
|
|
_08044A14: .4byte sub_8045180
|
|
_08044A18:
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
ldrh r3, [r2, 0x20]
|
|
subs r3, 0x18
|
|
movs r1, 0x5
|
|
subs r1, r6
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
subs r3, r0
|
|
strh r3, [r2, 0x20]
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
movs r1, 0x6
|
|
subs r1, r6
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
adds r0, 0xA
|
|
strh r0, [r2, 0x30]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r1, _08044AC4 @ =0x0000ff88
|
|
_08044A56:
|
|
strh r1, [r0, 0x24]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
strh r7, [r0, 0x32]
|
|
adds r4, 0x1
|
|
movs r2, 0x7
|
|
add r9, r2
|
|
movs r3, 0xA
|
|
add r8, r3
|
|
adds r6, 0x1
|
|
cmp r6, 0x5
|
|
bgt _08044A76
|
|
b _08044970
|
|
_08044A76:
|
|
ldr r0, [sp, 0x8]
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08044B5E
|
|
movs r6, 0
|
|
ldr r5, _08044AC8 @ =gBattleTypeFlags
|
|
mov r10, r5
|
|
ldr r0, _08044ACC @ =0x0000ffff
|
|
mov r9, r0
|
|
ldr r7, _08044AD0 @ =gSprites
|
|
ldr r1, _08044AD4 @ =0x000003ff
|
|
mov r12, r1
|
|
ldr r2, _08044AD8 @ =0xfffffc00
|
|
mov r8, r2
|
|
mov r4, sp
|
|
ldr r5, [sp, 0xC]
|
|
_08044A9A:
|
|
mov r3, r10
|
|
ldrh r1, [r3]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08044ADC
|
|
ldrh r0, [r5]
|
|
cmp r0, r9
|
|
beq _08044AE6
|
|
cmp r0, 0
|
|
bne _08044B2E
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x3
|
|
b _08044B46
|
|
.align 2, 0
|
|
_08044AC4: .4byte 0x0000ff88
|
|
_08044AC8: .4byte gBattleTypeFlags
|
|
_08044ACC: .4byte 0x0000ffff
|
|
_08044AD0: .4byte gSprites
|
|
_08044AD4: .4byte 0x000003ff
|
|
_08044AD8: .4byte 0xfffffc00
|
|
_08044ADC:
|
|
ldr r1, [sp, 0x14]
|
|
lsls r0, r1, 24
|
|
asrs r0, 24
|
|
cmp r6, r0
|
|
blt _08044B14
|
|
_08044AE6:
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x1
|
|
mov r0, r12
|
|
ands r1, r0
|
|
mov r0, r8
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
movs r1, 0x1
|
|
strh r1, [r0, 0x3C]
|
|
b _08044B52
|
|
_08044B14:
|
|
ldrh r0, [r5]
|
|
cmp r0, 0
|
|
bne _08044B2E
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x3
|
|
b _08044B46
|
|
_08044B2E:
|
|
ldr r0, [r5, 0x4]
|
|
cmp r0, 0
|
|
beq _08044B52
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x2
|
|
_08044B46:
|
|
mov r0, r12
|
|
ands r1, r0
|
|
mov r0, r8
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
_08044B52:
|
|
adds r4, 0x1
|
|
adds r5, 0x8
|
|
adds r6, 0x1
|
|
cmp r6, 0x5
|
|
ble _08044A9A
|
|
b _08044C38
|
|
_08044B5E:
|
|
movs r6, 0
|
|
ldr r1, _08044BA4 @ =gBattleTypeFlags
|
|
mov r10, r1
|
|
ldr r2, _08044BA8 @ =0x0000ffff
|
|
mov r9, r2
|
|
ldr r7, _08044BAC @ =gSprites
|
|
ldr r3, _08044BB0 @ =0x000003ff
|
|
mov r12, r3
|
|
ldr r5, _08044BB4 @ =0xfffffc00
|
|
mov r8, r5
|
|
ldr r5, [sp, 0xC]
|
|
mov r4, sp
|
|
adds r4, 0x5
|
|
_08044B78:
|
|
mov r0, r10
|
|
ldrh r1, [r0]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08044BB8
|
|
ldrh r0, [r5]
|
|
cmp r0, r9
|
|
beq _08044BC2
|
|
cmp r0, 0
|
|
bne _08044C0A
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x3
|
|
b _08044C22
|
|
.align 2, 0
|
|
_08044BA4: .4byte gBattleTypeFlags
|
|
_08044BA8: .4byte 0x0000ffff
|
|
_08044BAC: .4byte gSprites
|
|
_08044BB0: .4byte 0x000003ff
|
|
_08044BB4: .4byte 0xfffffc00
|
|
_08044BB8:
|
|
ldr r1, [sp, 0x14]
|
|
lsls r0, r1, 24
|
|
asrs r0, 24
|
|
cmp r6, r0
|
|
blt _08044BF0
|
|
_08044BC2:
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x1
|
|
mov r0, r12
|
|
ands r1, r0
|
|
mov r0, r8
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
movs r1, 0x1
|
|
strh r1, [r0, 0x3C]
|
|
b _08044C2E
|
|
_08044BF0:
|
|
ldrh r0, [r5]
|
|
cmp r0, 0
|
|
bne _08044C0A
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x3
|
|
b _08044C22
|
|
_08044C0A:
|
|
ldr r0, [r5, 0x4]
|
|
cmp r0, 0
|
|
beq _08044C2E
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrh r3, [r2, 0x4]
|
|
lsls r1, r3, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x2
|
|
_08044C22:
|
|
mov r0, r12
|
|
ands r1, r0
|
|
mov r0, r8
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
_08044C2E:
|
|
subs r4, 0x1
|
|
adds r5, 0x8
|
|
adds r6, 0x1
|
|
cmp r6, 0x5
|
|
ble _08044B78
|
|
_08044C38:
|
|
ldr r0, _08044C98 @ =TaskDummy
|
|
movs r1, 0x5
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r2, _08044C9C @ =gTasks
|
|
lsls r3, r4, 2
|
|
adds r1, r3, r4
|
|
lsls r1, 3
|
|
adds r0, r1, r2
|
|
mov r5, sp
|
|
ldrh r5, [r5, 0x8]
|
|
strh r5, [r0, 0x8]
|
|
mov r6, sp
|
|
ldrh r6, [r6, 0x18]
|
|
strh r6, [r0, 0xA]
|
|
movs r6, 0
|
|
adds r0, r2, 0
|
|
adds r0, 0xE
|
|
adds r1, r0
|
|
_08044C62:
|
|
mov r5, sp
|
|
adds r0, r5, r6
|
|
ldrb r0, [r0]
|
|
strh r0, [r1]
|
|
adds r1, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, 0x5
|
|
ble _08044C62
|
|
adds r0, r3, r4
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrh r6, [r5, 0x10]
|
|
strh r6, [r0, 0x1C]
|
|
movs r0, 0x72
|
|
movs r1, 0
|
|
bl PlaySE12WithPanning
|
|
adds r0, r4, 0
|
|
add sp, 0x28
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08044C98: .4byte TaskDummy
|
|
_08044C9C: .4byte gTasks
|
|
thumb_func_end sub_8044804
|
|
|
|
thumb_func_start sub_8044CA0
|
|
sub_8044CA0: @ 8044CA0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r2, _08044DB4 @ =gTasks
|
|
lsls r3, r0, 2
|
|
adds r1, r3, r0
|
|
lsls r1, 3
|
|
adds r0, r1, r2
|
|
ldrb r4, [r0, 0x1C]
|
|
mov r9, r4
|
|
ldrb r4, [r0, 0xA]
|
|
mov r10, r4
|
|
ldrb r0, [r0, 0x8]
|
|
str r0, [sp, 0x8]
|
|
movs r5, 0
|
|
adds r7, r2, 0
|
|
ldr r0, _08044DB8 @ =gSprites
|
|
mov r12, r0
|
|
str r3, [sp, 0xC]
|
|
adds r0, r7, 0
|
|
adds r0, 0xE
|
|
adds r2, r1, r0
|
|
_08044CD8:
|
|
mov r4, sp
|
|
adds r1, r4, r5
|
|
ldrh r0, [r2]
|
|
strb r0, [r1]
|
|
adds r2, 0x2
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08044CD8
|
|
ldr r1, _08044DBC @ =REG_BLDCNT
|
|
movs r2, 0xFD
|
|
lsls r2, 6
|
|
adds r0, r2, 0
|
|
strh r0, [r1]
|
|
adds r1, 0x2
|
|
movs r0, 0x10
|
|
strh r0, [r1]
|
|
ldr r0, [sp, 0xC]
|
|
add r0, r8
|
|
lsls r0, 3
|
|
adds r0, r7
|
|
movs r1, 0x10
|
|
strh r1, [r0, 0x26]
|
|
movs r5, 0
|
|
mov r4, r10
|
|
lsls r4, 4
|
|
str r4, [sp, 0x10]
|
|
ldr r4, _08044DB8 @ =gSprites
|
|
movs r6, 0xD
|
|
negs r6, r6
|
|
movs r3, 0x4
|
|
_08044D14:
|
|
mov r1, sp
|
|
adds r0, r1, r5
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
ldrb r2, [r1, 0x1]
|
|
adds r0, r6, 0
|
|
ands r0, r2
|
|
orrs r0, r3
|
|
strb r0, [r1, 0x1]
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08044D14
|
|
ldr r2, [sp, 0x10]
|
|
add r2, r10
|
|
lsls r2, 2
|
|
add r2, r12
|
|
ldrb r1, [r2, 0x1]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x1]
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
bne _08044D50
|
|
b _08044E54
|
|
_08044D50:
|
|
movs r5, 0
|
|
mov r6, r12
|
|
mov r9, r5
|
|
adds r3, r6, 0
|
|
adds r3, 0x1C
|
|
mov r4, sp
|
|
movs r7, 0
|
|
_08044D5E:
|
|
ldr r0, [sp, 0x8]
|
|
str r3, [sp, 0x14]
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r3, [sp, 0x14]
|
|
cmp r2, 0
|
|
beq _08044DC4
|
|
movs r0, 0x5
|
|
subs r0, r5
|
|
mov r1, sp
|
|
adds r2, r1, r0
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
strh r7, [r0, 0x30]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
mov r1, r9
|
|
strh r1, [r0, 0x34]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
mov r1, r9
|
|
strh r1, [r0, 0x36]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldr r1, _08044DC0 @ =sub_8045110
|
|
str r1, [r0]
|
|
ldr r2, _08044DB8 @ =gSprites
|
|
mov r12, r2
|
|
b _08044DFA
|
|
.align 2, 0
|
|
_08044DB4: .4byte gTasks
|
|
_08044DB8: .4byte gSprites
|
|
_08044DBC: .4byte REG_BLDCNT
|
|
_08044DC0: .4byte sub_8045110
|
|
_08044DC4:
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
strh r7, [r0, 0x30]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
strh r2, [r0, 0x34]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
strh r2, [r0, 0x36]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldr r1, _08044E3C @ =sub_8045110
|
|
str r1, [r0]
|
|
ldr r0, _08044E40 @ =gSprites
|
|
mov r12, r0
|
|
_08044DFA:
|
|
adds r4, 0x1
|
|
adds r7, 0x7
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08044D5E
|
|
ldr r3, [sp, 0x10]
|
|
add r3, r10
|
|
lsls r3, 2
|
|
mov r1, r12
|
|
adds r0, r3, r1
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r0, r2]
|
|
lsrs r2, r1, 31
|
|
adds r1, r2
|
|
asrs r1, 1
|
|
movs r2, 0
|
|
strh r1, [r0, 0x2E]
|
|
strh r2, [r0, 0x30]
|
|
mov r1, r12
|
|
adds r1, 0x1C
|
|
adds r3, r1
|
|
ldr r1, _08044E44 @ =sub_8045048
|
|
str r1, [r3]
|
|
ldr r1, _08044E48 @ =gSubspriteTables_820A6EC
|
|
bl SetSubspriteTables
|
|
ldr r1, _08044E4C @ =gTasks
|
|
ldr r0, [sp, 0xC]
|
|
add r0, r8
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08044E50 @ =sub_8044E74
|
|
b _08044E5E
|
|
.align 2, 0
|
|
_08044E3C: .4byte sub_8045110
|
|
_08044E40: .4byte gSprites
|
|
_08044E44: .4byte sub_8045048
|
|
_08044E48: .4byte gSubspriteTables_820A6EC
|
|
_08044E4C: .4byte gTasks
|
|
_08044E50: .4byte sub_8044E74
|
|
_08044E54:
|
|
ldr r0, [sp, 0xC]
|
|
add r0, r8
|
|
lsls r0, 3
|
|
adds r0, r7
|
|
ldr r1, _08044E70 @ =sub_8044F70
|
|
_08044E5E:
|
|
str r1, [r0]
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08044E70: .4byte sub_8044F70
|
|
thumb_func_end sub_8044CA0
|
|
|
|
thumb_func_start sub_8044E74
|
|
sub_8044E74: @ 8044E74
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08044EC0 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r3, r1, r2
|
|
ldrh r0, [r3, 0x1E]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r3, 0x1E]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08044EAE
|
|
ldrh r0, [r3, 0x26]
|
|
subs r2, r0, 0x1
|
|
strh r2, [r3, 0x26]
|
|
lsls r0, r2, 16
|
|
cmp r0, 0
|
|
blt _08044EBA
|
|
ldr r1, _08044EC4 @ =REG_BLDALPHA
|
|
movs r0, 0x10
|
|
subs r0, r2
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
strh r2, [r1]
|
|
_08044EAE:
|
|
movs r1, 0x26
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
bne _08044EBA
|
|
ldr r0, _08044EC8 @ =sub_8044ECC
|
|
str r0, [r3]
|
|
_08044EBA:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08044EC0: .4byte gTasks
|
|
_08044EC4: .4byte REG_BLDALPHA
|
|
_08044EC8: .4byte sub_8044ECC
|
|
thumb_func_end sub_8044E74
|
|
|
|
thumb_func_start sub_8044ECC
|
|
sub_8044ECC: @ 8044ECC
|
|
push {r4-r6,lr}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r6, _08044F44 @ =gTasks
|
|
lsls r0, r3, 2
|
|
adds r0, r3
|
|
lsls r4, r0, 3
|
|
adds r1, r4, r6
|
|
ldrh r0, [r1, 0x26]
|
|
subs r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r1, 0x26]
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r2, r0
|
|
bne _08044F4C
|
|
ldrb r3, [r1, 0xA]
|
|
adds r0, r6, 0
|
|
adds r0, 0xE
|
|
adds r2, r4, r0
|
|
_08044EFA:
|
|
mov r0, sp
|
|
adds r1, r0, r5
|
|
ldrh r0, [r2]
|
|
strb r0, [r1]
|
|
adds r2, 0x2
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08044EFA
|
|
lsls r0, r3, 4
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
ldr r4, _08044F48 @ =gSprites
|
|
adds r0, r4
|
|
bl DestroySpriteAndFreeResources
|
|
mov r0, sp
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySpriteAndFreeResources
|
|
movs r5, 0x1
|
|
_08044F2A:
|
|
mov r1, sp
|
|
adds r0, r1, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08044F2A
|
|
b _08044F62
|
|
.align 2, 0
|
|
_08044F44: .4byte gTasks
|
|
_08044F48: .4byte gSprites
|
|
_08044F4C:
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
cmp r2, r0
|
|
bne _08044F62
|
|
ldr r0, _08044F6C @ =REG_BLDCNT
|
|
strh r5, [r0]
|
|
adds r0, 0x2
|
|
strh r5, [r0]
|
|
adds r0, r3, 0
|
|
bl DestroyTask
|
|
_08044F62:
|
|
add sp, 0x8
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08044F6C: .4byte REG_BLDCNT
|
|
thumb_func_end sub_8044ECC
|
|
|
|
thumb_func_start sub_8044F70
|
|
sub_8044F70: @ 8044F70
|
|
push {r4-r7,lr}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r4, r0, 0
|
|
ldr r7, _08044FA4 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r6, r0, 3
|
|
adds r3, r6, r7
|
|
ldrh r0, [r3, 0x26]
|
|
subs r2, r0, 0x1
|
|
movs r5, 0
|
|
strh r2, [r3, 0x26]
|
|
lsls r0, r2, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0
|
|
blt _08044FAC
|
|
ldr r1, _08044FA8 @ =REG_BLDALPHA
|
|
movs r0, 0x10
|
|
subs r0, r2
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
strh r2, [r1]
|
|
b _08045022
|
|
.align 2, 0
|
|
_08044FA4: .4byte gTasks
|
|
_08044FA8: .4byte REG_BLDALPHA
|
|
_08044FAC:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _0804500C
|
|
ldrb r3, [r3, 0xA]
|
|
movs r5, 0
|
|
adds r0, r7, 0
|
|
adds r0, 0xE
|
|
adds r2, r6, r0
|
|
_08044FBE:
|
|
mov r0, sp
|
|
adds r1, r0, r5
|
|
ldrh r0, [r2]
|
|
strb r0, [r1]
|
|
adds r2, 0x2
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08044FBE
|
|
lsls r0, r3, 4
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
ldr r4, _08045008 @ =gSprites
|
|
adds r0, r4
|
|
bl DestroySpriteAndFreeResources
|
|
mov r0, sp
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySpriteAndFreeResources
|
|
movs r5, 0x1
|
|
_08044FEE:
|
|
mov r1, sp
|
|
adds r0, r1, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08044FEE
|
|
b _08045022
|
|
.align 2, 0
|
|
_08045008: .4byte gSprites
|
|
_0804500C:
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _08045022
|
|
ldr r0, _0804502C @ =REG_BLDCNT
|
|
strh r5, [r0]
|
|
adds r0, 0x2
|
|
strh r5, [r0]
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_08045022:
|
|
add sp, 0x8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804502C: .4byte REG_BLDCNT
|
|
thumb_func_end sub_8044F70
|
|
|
|
thumb_func_start sub_8045030
|
|
sub_8045030: @ 8045030
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x24]
|
|
movs r3, 0x24
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _08045044
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, r2, r0
|
|
strh r0, [r1, 0x24]
|
|
_08045044:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8045030
|
|
|
|
thumb_func_start sub_8045048
|
|
sub_8045048: @ 8045048
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x30]
|
|
adds r1, r0, 0
|
|
adds r1, 0x20
|
|
strh r1, [r2, 0x30]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
ble _08045066
|
|
lsls r0, r1, 16
|
|
asrs r0, 20
|
|
ldrh r1, [r2, 0x24]
|
|
adds r0, r1
|
|
b _0804506E
|
|
_08045066:
|
|
lsls r1, 16
|
|
asrs r1, 20
|
|
ldrh r0, [r2, 0x24]
|
|
subs r0, r1
|
|
_0804506E:
|
|
strh r0, [r2, 0x24]
|
|
ldrh r1, [r2, 0x30]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
strh r0, [r2, 0x30]
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8045048
|
|
|
|
thumb_func_start sub_804507C
|
|
sub_804507C: @ 804507C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x30]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _08045090
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x30]
|
|
b _08045106
|
|
_08045090:
|
|
ldrh r0, [r4, 0x32]
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldrh r2, [r4, 0x34]
|
|
adds r0, r2, 0
|
|
adds r0, 0x38
|
|
lsls r1, r0, 16
|
|
lsrs r2, r1, 16
|
|
ldr r0, _080450C0 @ =0x0000fff0
|
|
ands r2, r0
|
|
strh r2, [r4, 0x34]
|
|
cmp r3, 0
|
|
beq _080450C4
|
|
lsrs r0, r1, 20
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x24]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080450D4
|
|
movs r0, 0
|
|
strh r0, [r4, 0x24]
|
|
b _080450D4
|
|
.align 2, 0
|
|
_080450C0: .4byte 0x0000fff0
|
|
_080450C4:
|
|
lsrs r1, 20
|
|
ldrh r0, [r4, 0x24]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x24]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bge _080450D4
|
|
strh r3, [r4, 0x24]
|
|
_080450D4:
|
|
movs r2, 0x24
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _08045106
|
|
movs r1, 0x3F
|
|
cmp r3, 0
|
|
beq _080450E4
|
|
movs r1, 0xC0
|
|
_080450E4:
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080450F8
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x74
|
|
bl PlaySE2WithPanning
|
|
b _08045102
|
|
_080450F8:
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x73
|
|
bl PlaySE1WithPanning
|
|
_08045102:
|
|
ldr r0, _0804510C @ =SpriteCallbackDummy
|
|
str r0, [r4, 0x1C]
|
|
_08045106:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804510C: .4byte SpriteCallbackDummy
|
|
thumb_func_end sub_804507C
|
|
|
|
thumb_func_start sub_8045110
|
|
sub_8045110: @ 8045110
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0x30]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0
|
|
ble _08045124
|
|
subs r0, r1, 0x1
|
|
strh r0, [r3, 0x30]
|
|
b _08045174
|
|
_08045124:
|
|
ldrh r0, [r3, 0x32]
|
|
lsls r0, 24
|
|
ldrh r2, [r3, 0x34]
|
|
adds r1, r2, 0
|
|
adds r1, 0x38
|
|
lsls r4, r1, 16
|
|
lsrs r2, r4, 16
|
|
ldr r1, _08045144 @ =0x0000fff0
|
|
ands r2, r1
|
|
strh r2, [r3, 0x34]
|
|
cmp r0, 0
|
|
beq _08045148
|
|
lsrs r0, r4, 20
|
|
ldrh r1, [r3, 0x24]
|
|
adds r0, r1
|
|
b _0804514E
|
|
.align 2, 0
|
|
_08045144: .4byte 0x0000fff0
|
|
_08045148:
|
|
lsrs r1, r4, 20
|
|
ldrh r0, [r3, 0x24]
|
|
subs r0, r1
|
|
_0804514E:
|
|
strh r0, [r3, 0x24]
|
|
movs r2, 0x24
|
|
ldrsh r0, [r3, r2]
|
|
movs r2, 0x20
|
|
ldrsh r1, [r3, r2]
|
|
adds r0, r1
|
|
adds r0, 0x8
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bls _08045174
|
|
adds r2, r3, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _0804517C @ =SpriteCallbackDummy
|
|
str r0, [r3, 0x1C]
|
|
_08045174:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804517C: .4byte SpriteCallbackDummy
|
|
thumb_func_end sub_8045110
|
|
|
|
thumb_func_start sub_8045180
|
|
sub_8045180: @ 8045180
|
|
ldrh r2, [r0, 0x2E]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldr r3, _0804519C @ =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrh r2, [r1, 0x24]
|
|
strh r2, [r0, 0x24]
|
|
ldrh r1, [r1, 0x26]
|
|
strh r1, [r0, 0x26]
|
|
bx lr
|
|
.align 2, 0
|
|
_0804519C: .4byte gSprites
|
|
thumb_func_end sub_8045180
|
|
|
|
thumb_func_start sub_80451A0
|
|
sub_80451A0: @ 80451A0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
adds r7, r1, 0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldr r4, _08045238 @ =gUnknown_020238CC
|
|
ldr r1, _0804523C @ =gUnknown_0820A8B0
|
|
adds r0, r4, 0
|
|
bl StringCopy
|
|
adds r0, r7, 0
|
|
movs r1, 0x2
|
|
mov r2, sp
|
|
bl GetMonData
|
|
mov r0, sp
|
|
bl StringGetEnd10
|
|
adds r4, 0x3
|
|
adds r0, r4, 0
|
|
mov r1, sp
|
|
bl StringCopy
|
|
adds r5, r0, 0
|
|
movs r1, 0xFC
|
|
strb r1, [r5]
|
|
movs r0, 0x3
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x2
|
|
strb r0, [r5, 0x2]
|
|
strb r1, [r5, 0x3]
|
|
movs r0, 0x1
|
|
strb r0, [r5, 0x4]
|
|
adds r5, 0x5
|
|
adds r0, r7, 0
|
|
bl GetMonGender
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r7, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r7, 0
|
|
movs r1, 0x3
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r0, r4, 0
|
|
mov r1, sp
|
|
bl sub_8040D3C
|
|
cmp r0, 0
|
|
beq _08045222
|
|
movs r6, 0x64
|
|
_08045222:
|
|
cmp r6, 0
|
|
beq _08045240
|
|
cmp r6, 0xFE
|
|
beq _08045248
|
|
movs r0, 0xB
|
|
strb r0, [r5]
|
|
movs r0, 0xFF
|
|
strb r0, [r5, 0x1]
|
|
adds r5, 0x1
|
|
b _08045256
|
|
.align 2, 0
|
|
_08045238: .4byte gUnknown_020238CC
|
|
_0804523C: .4byte gUnknown_0820A8B0
|
|
_08045240:
|
|
movs r0, 0xB
|
|
strb r0, [r5]
|
|
movs r0, 0xB5
|
|
b _0804524E
|
|
_08045248:
|
|
movs r0, 0xA
|
|
strb r0, [r5]
|
|
movs r0, 0xB6
|
|
_0804524E:
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0xFF
|
|
strb r0, [r5, 0x2]
|
|
adds r5, 0x2
|
|
_08045256:
|
|
movs r0, 0xFC
|
|
strb r0, [r5]
|
|
movs r0, 0x13
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x37
|
|
strb r0, [r5, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r5, 0x3]
|
|
ldr r1, _080452D8 @ =gSprites
|
|
mov r0, r9
|
|
lsls r4, r0, 4
|
|
adds r0, r4, r0
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_get_per_side_status
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 7
|
|
ldr r2, _080452DC @ =0x02000520
|
|
adds r5, r1, r2
|
|
ldr r0, _080452E0 @ =gUnknown_020238CC
|
|
mov r8, r0
|
|
adds r0, r5, 0
|
|
mov r1, r8
|
|
bl sub_80034D4
|
|
movs r6, 0
|
|
movs r1, 0x7
|
|
mov r10, r1
|
|
adds r0, r7, 0
|
|
movs r1, 0x3
|
|
bl GetMonData
|
|
str r4, [sp, 0xC]
|
|
cmp r0, 0x1
|
|
bne _08045338
|
|
adds r0, r7, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08045338
|
|
mov r4, r8
|
|
ldrb r1, [r4]
|
|
adds r0, r1, 0
|
|
cmp r0, 0xFF
|
|
beq _08045338
|
|
adds r7, r5, 0
|
|
_080452C2:
|
|
cmp r1, 0xFC
|
|
bne _080452E4
|
|
ldrb r0, [r4, 0x1]
|
|
bl GetExtCtrlCodeLength
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1
|
|
adds r4, r0
|
|
b _08045330
|
|
.align 2, 0
|
|
_080452D8: .4byte gSprites
|
|
_080452DC: .4byte 0x02000520
|
|
_080452E0: .4byte gUnknown_020238CC
|
|
_080452E4:
|
|
adds r0, r1, 0
|
|
subs r0, 0x37
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x13
|
|
bls _080452FC
|
|
adds r0, r1, 0
|
|
adds r0, 0x79
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x13
|
|
bhi _08045300
|
|
_080452FC:
|
|
movs r0, 0x2C
|
|
b _0804531E
|
|
_08045300:
|
|
adds r0, r1, 0
|
|
subs r0, 0x4B
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
bls _08045318
|
|
adds r0, r1, 0
|
|
adds r0, 0x65
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
bhi _0804531C
|
|
_08045318:
|
|
movs r0, 0x2D
|
|
b _0804531E
|
|
_0804531C:
|
|
movs r0, 0x2B
|
|
_0804531E:
|
|
bl sub_8043CDC
|
|
adds r1, r7, 0
|
|
ldr r2, _080453C8 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r7, 0x40
|
|
adds r6, 0x1
|
|
adds r4, 0x1
|
|
_08045330:
|
|
ldrb r1, [r4]
|
|
adds r0, r1, 0
|
|
cmp r0, 0xFF
|
|
bne _080452C2
|
|
_08045338:
|
|
cmp r6, r10
|
|
bge _0804535A
|
|
lsls r0, r6, 6
|
|
adds r4, r0, r5
|
|
mov r2, r10
|
|
subs r6, r2, r6
|
|
_08045344:
|
|
movs r0, 0x2B
|
|
bl sub_8043CDC
|
|
adds r1, r4, 0
|
|
ldr r2, _080453C8 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r4, 0x40
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _08045344
|
|
_0804535A:
|
|
ldr r1, _080453CC @ =gSprites
|
|
ldr r0, [sp, 0xC]
|
|
add r0, r9
|
|
lsls r0, 2
|
|
adds r6, r0, r1
|
|
ldrh r0, [r6, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080453D4
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080453D4
|
|
ldr r1, _080453D0 @ =gUnknown_0820A8B4
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
beq _08045438
|
|
mov r8, r6
|
|
mov r9, r1
|
|
ldr r7, _080453C8 @ =REG_BG0CNT
|
|
mov r6, r10
|
|
_0804538E:
|
|
mov r1, r9
|
|
adds r1, 0x4
|
|
mov r9, r1
|
|
subs r1, 0x4
|
|
ldm r1!, {r4}
|
|
mov r2, r8
|
|
ldrh r0, [r2, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 17
|
|
adds r4, r0
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
adds r2, r7, 0
|
|
bl CpuSet
|
|
adds r5, 0x20
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r4, r0
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
adds r2, r7, 0
|
|
bl CpuSet
|
|
adds r5, 0x20
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _0804538E
|
|
b _08045438
|
|
.align 2, 0
|
|
_080453C8: .4byte REG_BG0CNT
|
|
_080453CC: .4byte gSprites
|
|
_080453D0: .4byte gUnknown_0820A8B4
|
|
_080453D4:
|
|
ldr r1, _08045448 @ =gSprites
|
|
ldr r0, [sp, 0xC]
|
|
add r0, r9
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
ldr r1, _0804544C @ =gUnknown_0820A8DC
|
|
cmp r0, 0
|
|
bne _080453F2
|
|
ldr r1, _08045450 @ =gUnknown_0820A904
|
|
_080453F2:
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
beq _08045438
|
|
mov r8, r4
|
|
mov r9, r1
|
|
ldr r7, _08045454 @ =REG_BG0CNT
|
|
mov r6, r10
|
|
_08045400:
|
|
mov r0, r9
|
|
adds r0, 0x4
|
|
mov r9, r0
|
|
subs r0, 0x4
|
|
ldm r0!, {r4}
|
|
mov r1, r8
|
|
ldrh r0, [r1, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 17
|
|
adds r4, r0
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
adds r2, r7, 0
|
|
bl CpuSet
|
|
adds r5, 0x20
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r4, r2
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
adds r2, r7, 0
|
|
bl CpuSet
|
|
adds r5, 0x20
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _08045400
|
|
_08045438:
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08045448: .4byte gSprites
|
|
_0804544C: .4byte gUnknown_0820A8DC
|
|
_08045450: .4byte gUnknown_0820A904
|
|
_08045454: .4byte REG_BG0CNT
|
|
thumb_func_end sub_80451A0
|
|
|
|
thumb_func_start sub_8045458
|
|
sub_8045458: @ 8045458
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
ldr r0, _080454F4 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804552E
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804552E
|
|
ldr r6, _080454F8 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r5, r0, r6
|
|
ldrh r0, [r5, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804552E
|
|
ldr r1, _080454FC @ =gUnknown_02024A6A
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08045500 @ =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl SpeciesToNationalPokedexNum
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x1
|
|
bl sub_8090D90
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804552E
|
|
ldrh r0, [r5, 0x38]
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r7, 0
|
|
beq _0804550C
|
|
movs r0, 0x46
|
|
bl sub_8043CDC
|
|
lsls r1, r4, 4
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r1, [r1, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
ldr r2, _08045504 @ =0x06010000
|
|
adds r1, r2
|
|
ldr r2, _08045508 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
b _0804552E
|
|
.align 2, 0
|
|
_080454F4: .4byte gBattleTypeFlags
|
|
_080454F8: .4byte gSprites
|
|
_080454FC: .4byte gUnknown_02024A6A
|
|
_08045500: .4byte gEnemyParty
|
|
_08045504: .4byte 0x06010000
|
|
_08045508: .4byte REG_BG0CNT
|
|
_0804550C:
|
|
str r7, [sp]
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrh r1, [r0, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r1, r0
|
|
ldr r0, _08045538 @ =0x06010000
|
|
adds r1, r0
|
|
ldr r2, _0804553C @ =0x05000008
|
|
mov r0, sp
|
|
bl CpuSet
|
|
_0804552E:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08045538: .4byte 0x06010000
|
|
_0804553C: .4byte 0x05000008
|
|
thumb_func_end sub_8045458
|
|
|
|
thumb_func_start draw_status_ailment_maybe
|
|
draw_status_ailment_maybe: @ 8045540
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldr r0, _080455A4 @ =gSprites
|
|
mov r2, r9
|
|
lsls r1, r2, 4
|
|
add r1, r9
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldrh r0, [r1, 0x38]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
adds r0, r7, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080455B0
|
|
ldr r1, _080455A8 @ =gUnknown_02024A6A
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080455AC @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
movs r3, 0x12
|
|
mov r8, r3
|
|
cmp r0, 0
|
|
bne _080455CC
|
|
movs r0, 0x1A
|
|
mov r8, r0
|
|
b _080455CC
|
|
.align 2, 0
|
|
_080455A4: .4byte gSprites
|
|
_080455A8: .4byte gUnknown_02024A6A
|
|
_080455AC: .4byte gPlayerParty
|
|
_080455B0:
|
|
ldr r1, _080455EC @ =gUnknown_02024A6A
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080455F0 @ =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
movs r1, 0x11
|
|
mov r8, r1
|
|
_080455CC:
|
|
movs r0, 0x7
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _080455F4
|
|
movs r0, 0x1B
|
|
adds r1, r7, 0
|
|
bl sub_80457E8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8043CDC
|
|
adds r6, r0, 0
|
|
movs r0, 0x2
|
|
b _080456FC
|
|
.align 2, 0
|
|
_080455EC: .4byte gUnknown_02024A6A
|
|
_080455F0: .4byte gEnemyParty
|
|
_080455F4:
|
|
movs r0, 0x88
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08045612
|
|
movs r0, 0x15
|
|
adds r1, r7, 0
|
|
bl sub_80457E8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8043CDC
|
|
adds r6, r0, 0
|
|
movs r0, 0
|
|
b _080456FC
|
|
_08045612:
|
|
movs r0, 0x10
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08045630
|
|
movs r0, 0x21
|
|
adds r1, r7, 0
|
|
bl sub_80457E8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8043CDC
|
|
adds r6, r0, 0
|
|
movs r0, 0x4
|
|
b _080456FC
|
|
_08045630:
|
|
movs r0, 0x20
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0804564E
|
|
movs r0, 0x1E
|
|
adds r1, r7, 0
|
|
bl sub_80457E8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8043CDC
|
|
adds r6, r0, 0
|
|
movs r0, 0x3
|
|
b _080456FC
|
|
_0804564E:
|
|
movs r0, 0x40
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0804566C
|
|
movs r0, 0x18
|
|
adds r1, r7, 0
|
|
bl sub_80457E8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8043CDC
|
|
adds r6, r0, 0
|
|
movs r0, 0x1
|
|
b _080456FC
|
|
_0804566C:
|
|
movs r0, 0x27
|
|
bl sub_8043CDC
|
|
adds r6, r0, 0
|
|
movs r4, 0
|
|
mov r2, r9
|
|
lsls r0, r2, 4
|
|
mov r3, r8
|
|
lsls r3, 16
|
|
mov r8, r3
|
|
lsls r7, 2
|
|
ldr r1, _080456E8 @ =gSprites
|
|
add r0, r9
|
|
lsls r0, 2
|
|
adds r5, r0, r1
|
|
_0804568A:
|
|
ldrh r1, [r5, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
mov r2, r8
|
|
asrs r0, r2, 16
|
|
adds r1, r0
|
|
adds r1, r4
|
|
lsls r1, 5
|
|
ldr r3, _080456EC @ =0x06010000
|
|
adds r1, r3
|
|
adds r0, r6, 0
|
|
ldr r2, _080456F0 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r4, 0x1
|
|
cmp r4, 0x2
|
|
ble _0804568A
|
|
ldr r0, _080456F4 @ =0x02017800
|
|
adds r0, r7, r0
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080456DC
|
|
movs r0, 0x1
|
|
bl sub_8043CDC
|
|
ldr r2, _080456E8 @ =gSprites
|
|
mov r3, r10
|
|
lsls r1, r3, 4
|
|
add r1, r10
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r1, [r1, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
ldr r2, _080456EC @ =0x06010000
|
|
adds r1, r2
|
|
ldr r2, _080456F8 @ =REG_BG0HOFS
|
|
bl CpuSet
|
|
_080456DC:
|
|
mov r0, r9
|
|
movs r1, 0x1
|
|
bl sub_8045458
|
|
b _080457BA
|
|
.align 2, 0
|
|
_080456E8: .4byte gSprites
|
|
_080456EC: .4byte 0x06010000
|
|
_080456F0: .4byte REG_BG0CNT
|
|
_080456F4: .4byte 0x02017800
|
|
_080456F8: .4byte REG_BG0HOFS
|
|
_080456FC:
|
|
mov r1, r9
|
|
lsls r5, r1, 4
|
|
add r5, r9
|
|
lsls r5, 2
|
|
ldr r2, _080457C8 @ =gSprites
|
|
adds r5, r2
|
|
ldrb r4, [r5, 0x5]
|
|
lsrs r4, 4
|
|
lsls r4, 4
|
|
adds r4, 0xC
|
|
adds r4, r7
|
|
lsls r0, 1
|
|
ldr r1, _080457CC @ =gBattleInterfaceStatusIcons_DynPal
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
adds r1, r4, r3
|
|
movs r2, 0x2
|
|
bl FillPalette
|
|
lsls r4, 1
|
|
ldr r0, _080457D0 @ =gPlttBufferUnfaded + 0x200
|
|
adds r0, r4, r0
|
|
ldr r1, _080457D4 @ =0x05000200
|
|
adds r4, r1
|
|
adds r1, r4, 0
|
|
movs r2, 0x1
|
|
bl CpuSet
|
|
ldrh r1, [r5, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
add r1, r8
|
|
lsls r1, 5
|
|
ldr r2, _080457D8 @ =0x06010000
|
|
mov r8, r2
|
|
add r1, r8
|
|
ldr r2, _080457DC @ =REG_BG2HOFS
|
|
adds r0, r6, 0
|
|
bl CpuSet
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0804576A
|
|
adds r0, r7, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080457B2
|
|
_0804576A:
|
|
lsls r0, r7, 2
|
|
ldr r1, _080457E0 @ =0x02017800
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080457B2
|
|
movs r0, 0
|
|
bl sub_8043CDC
|
|
mov r3, r10
|
|
lsls r4, r3, 4
|
|
add r4, r10
|
|
lsls r4, 2
|
|
ldr r1, _080457C8 @ =gSprites
|
|
adds r4, r1
|
|
ldrh r1, [r4, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
add r1, r8
|
|
ldr r5, _080457E4 @ =REG_BG0CNT
|
|
adds r2, r5, 0
|
|
bl CpuSet
|
|
movs r0, 0x41
|
|
bl sub_8043CDC
|
|
ldrh r1, [r4, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 17
|
|
adds r1, 0x20
|
|
add r1, r8
|
|
adds r2, r5, 0
|
|
bl CpuSet
|
|
_080457B2:
|
|
mov r0, r9
|
|
movs r1, 0
|
|
bl sub_8045458
|
|
_080457BA:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080457C8: .4byte gSprites
|
|
_080457CC: .4byte gBattleInterfaceStatusIcons_DynPal
|
|
_080457D0: .4byte gPlttBufferUnfaded + 0x200
|
|
_080457D4: .4byte 0x05000200
|
|
_080457D8: .4byte 0x06010000
|
|
_080457DC: .4byte REG_BG2HOFS
|
|
_080457E0: .4byte 0x02017800
|
|
_080457E4: .4byte REG_BG0CNT
|
|
thumb_func_end draw_status_ailment_maybe
|
|
|
|
thumb_func_start sub_80457E8
|
|
sub_80457E8: @ 80457E8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsls r1, 24
|
|
lsrs r3, r1, 24
|
|
lsrs r2, r0, 24
|
|
adds r0, r2, 0
|
|
subs r0, 0x15
|
|
cmp r0, 0xC
|
|
bhi _080458A8
|
|
lsls r0, 2
|
|
ldr r1, _08045804 @ =_08045808
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08045804: .4byte _08045808
|
|
.align 2, 0
|
|
_08045808:
|
|
.4byte _0804583C
|
|
.4byte _080458A8
|
|
.4byte _080458A8
|
|
.4byte _08045852
|
|
.4byte _080458A8
|
|
.4byte _080458A8
|
|
.4byte _08045868
|
|
.4byte _080458A8
|
|
.4byte _080458A8
|
|
.4byte _0804587E
|
|
.4byte _080458A8
|
|
.4byte _080458A8
|
|
.4byte _08045894
|
|
_0804583C:
|
|
movs r2, 0x15
|
|
cmp r3, 0
|
|
beq _080458A8
|
|
movs r2, 0x47
|
|
cmp r3, 0x1
|
|
beq _080458A8
|
|
movs r2, 0x65
|
|
cmp r3, 0x2
|
|
bne _080458A8
|
|
movs r2, 0x56
|
|
b _080458A8
|
|
_08045852:
|
|
movs r2, 0x18
|
|
cmp r3, 0
|
|
beq _080458A8
|
|
movs r2, 0x4A
|
|
cmp r3, 0x1
|
|
beq _080458A8
|
|
movs r2, 0x68
|
|
cmp r3, 0x2
|
|
bne _080458A8
|
|
movs r2, 0x59
|
|
b _080458A8
|
|
_08045868:
|
|
movs r2, 0x1B
|
|
cmp r3, 0
|
|
beq _080458A8
|
|
movs r2, 0x4D
|
|
cmp r3, 0x1
|
|
beq _080458A8
|
|
movs r2, 0x6B
|
|
cmp r3, 0x2
|
|
bne _080458A8
|
|
movs r2, 0x5C
|
|
b _080458A8
|
|
_0804587E:
|
|
movs r2, 0x1E
|
|
cmp r3, 0
|
|
beq _080458A8
|
|
movs r2, 0x50
|
|
cmp r3, 0x1
|
|
beq _080458A8
|
|
movs r2, 0x6E
|
|
cmp r3, 0x2
|
|
bne _080458A8
|
|
movs r2, 0x5F
|
|
b _080458A8
|
|
_08045894:
|
|
movs r2, 0x21
|
|
cmp r3, 0
|
|
beq _080458A8
|
|
movs r2, 0x53
|
|
cmp r3, 0x1
|
|
beq _080458A8
|
|
movs r2, 0x71
|
|
cmp r3, 0x2
|
|
bne _080458A8
|
|
movs r2, 0x62
|
|
_080458A8:
|
|
adds r0, r2, 0
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80457E8
|
|
|
|
thumb_func_start sub_80458B0
|
|
sub_80458B0: @ 80458B0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _08045984 @ =gSprites
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_get_per_side_status
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 7
|
|
ldr r0, _08045988 @ =0x02000520
|
|
adds r6, r1, r0
|
|
movs r1, 0x7
|
|
mov r8, r1
|
|
ldr r1, _0804598C @ =gUnknown_08400DD6
|
|
adds r0, r6, 0
|
|
bl sub_80034D4
|
|
movs r4, 0
|
|
_080458EE:
|
|
movs r0, 0x2B
|
|
bl sub_8043CDC
|
|
lsls r1, r4, 6
|
|
adds r1, r6, r1
|
|
ldr r2, _08045990 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, r8
|
|
bcc _080458EE
|
|
movs r7, 0x3
|
|
movs r2, 0x3
|
|
add r2, r8
|
|
mov r9, r2
|
|
cmp r7, r9
|
|
bge _08045974
|
|
ldr r1, _08045984 @ =gSprites
|
|
ldr r0, _08045990 @ =REG_BG0CNT
|
|
mov r10, r0
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
mov r8, r0
|
|
_08045924:
|
|
mov r1, r8
|
|
ldrh r0, [r1, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 22
|
|
adds r5, r7, 0
|
|
cmp r7, 0
|
|
bge _08045934
|
|
adds r5, r7, 0x7
|
|
_08045934:
|
|
asrs r5, 3
|
|
lsls r4, r5, 3
|
|
subs r4, r7, r4
|
|
adds r0, r4
|
|
lsls r5, 6
|
|
adds r0, r5
|
|
lsls r0, 5
|
|
ldr r2, _08045994 @ =0x06010000
|
|
adds r1, r0, r2
|
|
adds r0, r6, 0
|
|
mov r2, r10
|
|
bl CpuSet
|
|
adds r6, 0x20
|
|
mov r1, r8
|
|
ldrh r0, [r1, 0x4]
|
|
lsls r0, 22
|
|
lsrs r0, 22
|
|
adds r4, 0x8
|
|
adds r0, r4
|
|
adds r0, r5
|
|
lsls r0, 5
|
|
ldr r2, _08045994 @ =0x06010000
|
|
adds r1, r0, r2
|
|
adds r0, r6, 0
|
|
mov r2, r10
|
|
bl CpuSet
|
|
adds r6, 0x20
|
|
adds r7, 0x1
|
|
cmp r7, r9
|
|
blt _08045924
|
|
_08045974:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08045984: .4byte gSprites
|
|
_08045988: .4byte 0x02000520
|
|
_0804598C: .4byte gUnknown_08400DD6
|
|
_08045990: .4byte REG_BG0CNT
|
|
_08045994: .4byte 0x06010000
|
|
thumb_func_end sub_80458B0
|
|
|
|
thumb_func_start sub_8045998
|
|
sub_8045998: @ 8045998
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08045A38 @ =gUnknown_020238CC
|
|
mov r8, r0
|
|
ldr r1, _08045A3C @ =gUnknown_08400DE6
|
|
bl StringCopy
|
|
adds r7, r0, 0
|
|
ldr r0, _08045A40 @ =gNumSafariBalls
|
|
ldrb r1, [r0]
|
|
adds r0, r7, 0
|
|
movs r2, 0xA
|
|
movs r3, 0x1
|
|
bl sub_8003504
|
|
adds r7, r0, 0
|
|
ldr r1, _08045A44 @ =gUnknown_08400DF0
|
|
bl StringAppend
|
|
ldr r0, _08045A48 @ =gSprites
|
|
lsls r5, r4, 4
|
|
adds r5, r4
|
|
lsls r5, 2
|
|
adds r5, r0
|
|
ldrh r0, [r5, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl battle_get_per_side_status
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 1
|
|
adds r4, r0
|
|
lsls r4, 7
|
|
ldr r0, _08045A4C @ =0x02000520
|
|
adds r7, r4, r0
|
|
movs r6, 0x5
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
bl sub_80034D4
|
|
ldr r0, _08045A50 @ =0x02000540
|
|
adds r7, r4, r0
|
|
movs r4, 0x6
|
|
_080459F8:
|
|
ldrh r0, [r5, 0x4]
|
|
lsls r0, 22
|
|
lsrs r2, r0, 22
|
|
adds r0, r4, 0
|
|
cmp r4, 0
|
|
bge _08045A06
|
|
adds r0, r4, 0x7
|
|
_08045A06:
|
|
asrs r0, 3
|
|
lsls r1, r0, 3
|
|
subs r1, r4, r1
|
|
adds r1, 0x18
|
|
adds r1, r2, r1
|
|
lsls r0, 6
|
|
adds r1, r0
|
|
lsls r1, 5
|
|
ldr r0, _08045A54 @ =0x06010000
|
|
adds r1, r0
|
|
adds r0, r7, 0
|
|
ldr r2, _08045A58 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
adds r7, 0x40
|
|
adds r4, 0x1
|
|
adds r0, r6, 0x6
|
|
cmp r4, r0
|
|
blt _080459F8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08045A38: .4byte gUnknown_020238CC
|
|
_08045A3C: .4byte gUnknown_08400DE6
|
|
_08045A40: .4byte gNumSafariBalls
|
|
_08045A44: .4byte gUnknown_08400DF0
|
|
_08045A48: .4byte gSprites
|
|
_08045A4C: .4byte 0x02000520
|
|
_08045A50: .4byte 0x02000540
|
|
_08045A54: .4byte 0x06010000
|
|
_08045A58: .4byte REG_BG0CNT
|
|
thumb_func_end sub_8045998
|
|
|
|
thumb_func_start sub_8045A5C
|
|
sub_8045A5C: @ 8045A5C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
mov r9, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
ldr r1, _08045BE4 @ =gSprites
|
|
lsls r0, 4
|
|
add r0, r8
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08045A92
|
|
b _08045BF0
|
|
_08045A92:
|
|
cmp r7, 0x3
|
|
beq _08045A9A
|
|
cmp r7, 0
|
|
bne _08045AAE
|
|
_08045A9A:
|
|
mov r0, r9
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r0, r8
|
|
bl sub_8043FC0
|
|
_08045AAE:
|
|
cmp r7, 0x1
|
|
bhi _08045AC8
|
|
mov r0, r9
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
mov r0, r8
|
|
movs r2, 0
|
|
bl sub_80440EC
|
|
_08045AC8:
|
|
cmp r7, 0x2
|
|
beq _08045AD0
|
|
cmp r7, 0
|
|
bne _08045AE6
|
|
_08045AD0:
|
|
mov r0, r9
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
mov r0, r8
|
|
movs r2, 0x1
|
|
bl sub_80440EC
|
|
_08045AE6:
|
|
cmp r7, 0x5
|
|
beq _08045AEE
|
|
cmp r7, 0
|
|
bne _08045B22
|
|
_08045AEE:
|
|
movs r0, 0
|
|
bl load_gfxc_health_bar
|
|
mov r0, r9
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
mov r0, r9
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r3, r0, 0
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
mov r0, r10
|
|
mov r1, r8
|
|
adds r2, r4, 0
|
|
bl sub_8043D84
|
|
mov r0, r10
|
|
mov r1, r8
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8045C78
|
|
_08045B22:
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
bne _08045BA6
|
|
cmp r7, 0x6
|
|
beq _08045B38
|
|
cmp r7, 0
|
|
bne _08045BA6
|
|
_08045B38:
|
|
movs r0, 0x3
|
|
bl load_gfxc_health_bar
|
|
mov r0, r9
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
mov r0, r9
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r0, r9
|
|
movs r1, 0x19
|
|
bl GetMonData
|
|
adds r3, r0, 0
|
|
ldr r6, _08045BE8 @ =gExperienceTables
|
|
lsls r1, r4, 2
|
|
ldr r2, _08045BEC @ =gBaseStats
|
|
lsls r0, r5, 3
|
|
subs r0, r5
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r2, [r0, 0x13]
|
|
movs r0, 0xCA
|
|
lsls r0, 1
|
|
muls r0, r2
|
|
adds r1, r0
|
|
adds r1, r6
|
|
ldr r1, [r1]
|
|
subs r3, r1
|
|
adds r4, 0x1
|
|
lsls r4, 2
|
|
adds r4, r0
|
|
adds r4, r6
|
|
ldr r2, [r4]
|
|
subs r2, r1
|
|
ldr r0, [sp, 0x4]
|
|
str r0, [sp]
|
|
mov r0, r10
|
|
mov r1, r8
|
|
bl sub_8043D84
|
|
mov r0, r10
|
|
mov r1, r8
|
|
movs r2, 0x1
|
|
movs r3, 0
|
|
bl sub_8045C78
|
|
_08045BA6:
|
|
cmp r7, 0x4
|
|
beq _08045BAE
|
|
cmp r7, 0
|
|
bne _08045BB6
|
|
_08045BAE:
|
|
mov r0, r8
|
|
mov r1, r9
|
|
bl sub_80451A0
|
|
_08045BB6:
|
|
cmp r7, 0x9
|
|
beq _08045BBE
|
|
cmp r7, 0
|
|
bne _08045BC4
|
|
_08045BBE:
|
|
mov r0, r8
|
|
bl draw_status_ailment_maybe
|
|
_08045BC4:
|
|
cmp r7, 0xA
|
|
bne _08045BCE
|
|
mov r0, r8
|
|
bl sub_80458B0
|
|
_08045BCE:
|
|
adds r0, r7, 0
|
|
subs r0, 0xA
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _08045C66
|
|
mov r0, r8
|
|
bl sub_8045998
|
|
b _08045C66
|
|
.align 2, 0
|
|
_08045BE4: .4byte gSprites
|
|
_08045BE8: .4byte gExperienceTables
|
|
_08045BEC: .4byte gBaseStats
|
|
_08045BF0:
|
|
cmp r7, 0x3
|
|
beq _08045BF8
|
|
cmp r7, 0
|
|
bne _08045C0C
|
|
_08045BF8:
|
|
mov r0, r9
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r0, r8
|
|
bl sub_8043FC0
|
|
_08045C0C:
|
|
cmp r7, 0x5
|
|
beq _08045C14
|
|
cmp r7, 0
|
|
bne _08045C48
|
|
_08045C14:
|
|
movs r0, 0
|
|
bl load_gfxc_health_bar
|
|
mov r0, r9
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
mov r0, r9
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r3, r0, 0
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
mov r0, r10
|
|
mov r1, r8
|
|
adds r2, r4, 0
|
|
bl sub_8043D84
|
|
mov r0, r10
|
|
mov r1, r8
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8045C78
|
|
_08045C48:
|
|
cmp r7, 0x4
|
|
beq _08045C50
|
|
cmp r7, 0
|
|
bne _08045C58
|
|
_08045C50:
|
|
mov r0, r8
|
|
mov r1, r9
|
|
bl sub_80451A0
|
|
_08045C58:
|
|
cmp r7, 0x9
|
|
beq _08045C60
|
|
cmp r7, 0
|
|
bne _08045C66
|
|
_08045C60:
|
|
mov r0, r8
|
|
bl draw_status_ailment_maybe
|
|
_08045C66:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8045A5C
|
|
|
|
thumb_func_start sub_8045C78
|
|
sub_8045C78: @ 8045C78
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r9, r2
|
|
cmp r2, 0
|
|
bne _08045CBC
|
|
lsls r5, r7, 2
|
|
adds r3, r5, r7
|
|
lsls r3, 2
|
|
ldr r4, _08045CB8 @ =0x02017850
|
|
adds r2, r3, r4
|
|
ldr r0, [r2, 0x4]
|
|
ldr r1, [r2, 0x8]
|
|
ldr r2, [r2, 0xC]
|
|
adds r4, 0x10
|
|
adds r3, r4
|
|
movs r4, 0x6
|
|
str r4, [sp]
|
|
movs r4, 0x1
|
|
str r4, [sp, 0x4]
|
|
bl sub_8045F58
|
|
adds r6, r0, 0
|
|
adds r4, r5, 0
|
|
b _08045D0A
|
|
.align 2, 0
|
|
_08045CB8: .4byte 0x02017850
|
|
_08045CBC:
|
|
lsls r4, r7, 2
|
|
adds r0, r4, r7
|
|
lsls r0, 2
|
|
mov r10, r0
|
|
ldr r6, _08045D50 @ =0x02017850
|
|
add r6, r10
|
|
ldr r0, [r6, 0x8]
|
|
ldr r1, [r6, 0xC]
|
|
ldr r2, [r6, 0x4]
|
|
movs r3, 0x8
|
|
bl GetScaledExpFraction
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0
|
|
bne _08045CDE
|
|
movs r5, 0x1
|
|
_08045CDE:
|
|
ldr r0, [r6, 0xC]
|
|
mov r8, r0
|
|
adds r1, r5, 0
|
|
bl __divsi3
|
|
cmp r0, 0
|
|
bge _08045CEE
|
|
negs r0, r0
|
|
_08045CEE:
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldr r0, [r6, 0x4]
|
|
ldr r1, [r6, 0x8]
|
|
ldr r3, _08045D50 @ =0x02017850
|
|
adds r3, 0x10
|
|
add r3, r10
|
|
movs r2, 0x8
|
|
str r2, [sp]
|
|
str r5, [sp, 0x4]
|
|
mov r2, r8
|
|
bl sub_8045F58
|
|
adds r6, r0, 0
|
|
_08045D0A:
|
|
mov r0, r9
|
|
cmp r0, 0x1
|
|
beq _08045D22
|
|
cmp r0, 0
|
|
bne _08045D2A
|
|
ldr r0, _08045D54 @ =0x02017800
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08045D2A
|
|
_08045D22:
|
|
adds r0, r7, 0
|
|
mov r1, r9
|
|
bl sub_8045D58
|
|
_08045D2A:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r6, r0
|
|
bne _08045D3E
|
|
adds r0, r4, r7
|
|
lsls r0, 2
|
|
ldr r1, _08045D50 @ =0x02017850
|
|
adds r0, r1
|
|
movs r1, 0
|
|
str r1, [r0, 0x10]
|
|
_08045D3E:
|
|
adds r0, r6, 0
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08045D50: .4byte 0x02017850
|
|
_08045D54: .4byte 0x02017800
|
|
thumb_func_end sub_8045C78
|
|
|
|
thumb_func_start sub_8045D58
|
|
sub_8045D58: @ 8045D58
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
cmp r1, 0
|
|
beq _08045D72
|
|
cmp r1, 0x1
|
|
beq _08045E54
|
|
b _08045F42
|
|
_08045D72:
|
|
lsls r5, r6, 2
|
|
adds r3, r5, r6
|
|
lsls r3, 2
|
|
ldr r4, _08045E00 @ =0x02017850
|
|
adds r2, r3, r4
|
|
ldr r0, [r2, 0x4]
|
|
ldr r1, [r2, 0x8]
|
|
ldr r2, [r2, 0xC]
|
|
adds r4, 0x10
|
|
adds r3, r4
|
|
add r4, sp, 0x8
|
|
str r4, [sp]
|
|
movs r4, 0x6
|
|
str r4, [sp, 0x4]
|
|
bl sub_804602C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x3
|
|
mov r8, r1
|
|
adds r1, r5, 0
|
|
cmp r0, 0x18
|
|
bhi _08045DAC
|
|
movs r2, 0x38
|
|
mov r8, r2
|
|
cmp r0, 0x9
|
|
bls _08045DAC
|
|
movs r4, 0x2F
|
|
mov r8, r4
|
|
_08045DAC:
|
|
movs r5, 0
|
|
ldr r7, _08045E04 @ =gSprites
|
|
adds r0, r1, r6
|
|
lsls r6, r0, 2
|
|
_08045DB4:
|
|
ldr r0, _08045E00 @ =0x02017850
|
|
adds r0, r6, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldrh r0, [r0, 0x38]
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r5, 0x1
|
|
bhi _08045E10
|
|
mov r0, r8
|
|
bl sub_8043CDC
|
|
mov r1, sp
|
|
adds r1, r5
|
|
adds r1, 0x8
|
|
ldrb r1, [r1]
|
|
lsls r1, 5
|
|
adds r0, r1
|
|
lsls r1, r4, 4
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
adds r1, r7
|
|
ldrh r1, [r1, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
adds r2, r5, 0x2
|
|
adds r1, r2
|
|
lsls r1, 5
|
|
ldr r2, _08045E08 @ =0x06010000
|
|
adds r1, r2
|
|
ldr r2, _08045E0C @ =REG_BG0CNT
|
|
bl CpuSet
|
|
b _08045E3E
|
|
.align 2, 0
|
|
_08045E00: .4byte 0x02017850
|
|
_08045E04: .4byte gSprites
|
|
_08045E08: .4byte 0x06010000
|
|
_08045E0C: .4byte REG_BG0CNT
|
|
_08045E10:
|
|
mov r0, r8
|
|
bl sub_8043CDC
|
|
mov r1, sp
|
|
adds r1, r5
|
|
adds r1, 0x8
|
|
ldrb r1, [r1]
|
|
lsls r1, 5
|
|
adds r0, r1
|
|
lsls r1, r4, 4
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
adds r1, r7
|
|
ldrh r1, [r1, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
adds r1, r5, r1
|
|
lsls r1, 5
|
|
ldr r4, _08045E4C @ =0x06010040
|
|
adds r1, r4
|
|
ldr r2, _08045E50 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
_08045E3E:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x5
|
|
bls _08045DB4
|
|
b _08045F42
|
|
.align 2, 0
|
|
_08045E4C: .4byte 0x06010040
|
|
_08045E50: .4byte REG_BG0CNT
|
|
_08045E54:
|
|
lsls r5, r6, 2
|
|
adds r3, r5, r6
|
|
lsls r3, 2
|
|
ldr r4, _08045EF0 @ =0x02017850
|
|
adds r2, r3, r4
|
|
ldr r0, [r2, 0x4]
|
|
ldr r1, [r2, 0x8]
|
|
ldr r2, [r2, 0xC]
|
|
adds r4, 0x10
|
|
adds r3, r4
|
|
add r4, sp, 0x8
|
|
str r4, [sp]
|
|
movs r4, 0x8
|
|
str r4, [sp, 0x4]
|
|
bl sub_804602C
|
|
ldr r1, _08045EF4 @ =gUnknown_02024A6A
|
|
lsls r0, r6, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08045EF8 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r5, 0
|
|
cmp r0, 0x64
|
|
bne _08045EAA
|
|
movs r5, 0
|
|
movs r2, 0
|
|
_08045E98:
|
|
mov r0, sp
|
|
adds r0, r5
|
|
adds r0, 0x8
|
|
strb r2, [r0]
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x7
|
|
bls _08045E98
|
|
_08045EAA:
|
|
movs r5, 0
|
|
ldr r7, _08045EFC @ =gSprites
|
|
adds r0, r1, r6
|
|
lsls r0, 2
|
|
ldr r1, _08045EF0 @ =0x02017850
|
|
adds r4, r0, r1
|
|
_08045EB6:
|
|
cmp r5, 0x3
|
|
bhi _08045F08
|
|
movs r0, 0xC
|
|
bl sub_8043CDC
|
|
mov r1, sp
|
|
adds r1, r5
|
|
adds r1, 0x8
|
|
ldrb r1, [r1]
|
|
lsls r1, 5
|
|
adds r0, r1
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r7
|
|
ldrh r1, [r1, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
adds r2, r5, 0
|
|
adds r2, 0x24
|
|
adds r1, r2
|
|
lsls r1, 5
|
|
ldr r2, _08045F00 @ =0x06010000
|
|
adds r1, r2
|
|
ldr r2, _08045F04 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
b _08045F38
|
|
.align 2, 0
|
|
_08045EF0: .4byte 0x02017850
|
|
_08045EF4: .4byte gUnknown_02024A6A
|
|
_08045EF8: .4byte gPlayerParty
|
|
_08045EFC: .4byte gSprites
|
|
_08045F00: .4byte 0x06010000
|
|
_08045F04: .4byte REG_BG0CNT
|
|
_08045F08:
|
|
movs r0, 0xC
|
|
bl sub_8043CDC
|
|
mov r1, sp
|
|
adds r1, r5
|
|
adds r1, 0x8
|
|
ldrb r1, [r1]
|
|
lsls r1, 5
|
|
adds r0, r1
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r7
|
|
ldrh r1, [r1, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
adds r1, r5, r1
|
|
lsls r1, 5
|
|
ldr r2, _08045F50 @ =0x06010b80
|
|
adds r1, r2
|
|
ldr r2, _08045F54 @ =REG_BG0CNT
|
|
bl CpuSet
|
|
_08045F38:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x7
|
|
bls _08045EB6
|
|
_08045F42:
|
|
add sp, 0x10
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08045F50: .4byte 0x06010b80
|
|
_08045F54: .4byte REG_BG0CNT
|
|
thumb_func_end sub_8045D58
|
|
|
|
thumb_func_start sub_8045F58
|
|
sub_8045F58: @ 8045F58
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r7, r0, 0
|
|
adds r4, r1, 0
|
|
mov r8, r2
|
|
adds r5, r3, 0
|
|
ldr r1, [sp, 0x18]
|
|
ldr r0, [sp, 0x1C]
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
lsls r1, 27
|
|
lsrs r2, r1, 24
|
|
ldr r1, [r5]
|
|
ldr r0, _08045F84 @ =0xffff8000
|
|
cmp r1, r0
|
|
bne _08045F8A
|
|
cmp r7, r2
|
|
bge _08045F88
|
|
lsls r0, r4, 8
|
|
str r0, [r5]
|
|
b _08045F8A
|
|
.align 2, 0
|
|
_08045F84: .4byte 0xffff8000
|
|
_08045F88:
|
|
str r4, [r5]
|
|
_08045F8A:
|
|
mov r0, r8
|
|
subs r4, r0
|
|
cmp r4, 0
|
|
bge _08045F96
|
|
movs r4, 0
|
|
b _08045F9C
|
|
_08045F96:
|
|
cmp r4, r7
|
|
ble _08045F9C
|
|
adds r4, r7, 0
|
|
_08045F9C:
|
|
cmp r7, r2
|
|
bge _08045FB8
|
|
ldr r0, [r5]
|
|
asrs r1, r0, 8
|
|
adds r6, r0, 0
|
|
cmp r4, r1
|
|
bne _08045FC4
|
|
movs r0, 0xFF
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
bne _08045FC4
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
b _08046020
|
|
_08045FB8:
|
|
ldr r6, [r5]
|
|
cmp r4, r6
|
|
bne _08045FC4
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
b _08046020
|
|
_08045FC4:
|
|
cmp r7, r2
|
|
bge _08045FFE
|
|
lsls r0, r7, 8
|
|
adds r1, r2, 0
|
|
bl __divsi3
|
|
mov r1, r8
|
|
cmp r1, 0
|
|
bge _08045FE2
|
|
adds r0, r6, r0
|
|
str r0, [r5]
|
|
asrs r2, r0, 8
|
|
cmp r2, r4
|
|
blt _0804601E
|
|
b _08045FF6
|
|
_08045FE2:
|
|
subs r0, r6, r0
|
|
str r0, [r5]
|
|
asrs r2, r0, 8
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
ble _08045FF2
|
|
adds r2, 0x1
|
|
_08045FF2:
|
|
cmp r2, r4
|
|
bgt _0804601E
|
|
_08045FF6:
|
|
lsls r0, r4, 8
|
|
str r0, [r5]
|
|
adds r2, r4, 0
|
|
b _0804601E
|
|
_08045FFE:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bge _08046010
|
|
ldr r0, [r5]
|
|
adds r0, r3
|
|
str r0, [r5]
|
|
cmp r0, r4
|
|
ble _0804601C
|
|
b _0804601A
|
|
_08046010:
|
|
ldr r0, [r5]
|
|
subs r0, r3
|
|
str r0, [r5]
|
|
cmp r0, r4
|
|
bge _0804601C
|
|
_0804601A:
|
|
str r4, [r5]
|
|
_0804601C:
|
|
ldr r2, [r5]
|
|
_0804601E:
|
|
adds r0, r2, 0
|
|
_08046020:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8045F58
|
|
|
|
thumb_func_start sub_804602C
|
|
sub_804602C: @ 804602C
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
mov r12, r3
|
|
ldr r7, [sp, 0x14]
|
|
ldr r0, [sp, 0x18]
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
subs r5, r1, r2
|
|
cmp r5, 0
|
|
bge _08046044
|
|
movs r5, 0
|
|
b _0804604A
|
|
_08046044:
|
|
cmp r5, r4
|
|
ble _0804604A
|
|
adds r5, r4, 0
|
|
_0804604A:
|
|
lsls r0, r6, 27
|
|
lsrs r3, r0, 24
|
|
movs r1, 0
|
|
cmp r1, r6
|
|
bcs _08046064
|
|
movs r2, 0
|
|
_08046056:
|
|
adds r0, r7, r1
|
|
strb r2, [r0]
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, r6
|
|
bcc _08046056
|
|
_08046064:
|
|
cmp r4, r3
|
|
bge _08046078
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
muls r0, r3
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
asrs r0, 8
|
|
b _08046084
|
|
_08046078:
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
muls r0, r3
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
_08046084:
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
adds r3, r2, 0
|
|
cmp r3, 0
|
|
bne _0804609A
|
|
cmp r5, 0
|
|
ble _0804609A
|
|
movs r0, 0x1
|
|
strb r0, [r7]
|
|
movs r3, 0x1
|
|
b _080460BE
|
|
_0804609A:
|
|
movs r1, 0
|
|
movs r4, 0x8
|
|
_0804609E:
|
|
cmp r1, r6
|
|
bcs _080460BE
|
|
cmp r2, 0x7
|
|
bls _080460BA
|
|
adds r0, r7, r1
|
|
strb r4, [r0]
|
|
adds r0, r2, 0
|
|
subs r0, 0x8
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
b _0804609E
|
|
_080460BA:
|
|
adds r0, r7, r1
|
|
strb r2, [r0]
|
|
_080460BE:
|
|
adds r0, r3, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_804602C
|
|
|
|
thumb_func_start sub_80460C8
|
|
sub_80460C8: @ 80460C8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
adds r5, r0, 0
|
|
adds r6, r1, 0
|
|
adds r4, r2, 0
|
|
mov r8, r3
|
|
ldr r0, [r5]
|
|
ldr r1, [r5, 0x4]
|
|
ldr r2, [r5, 0x8]
|
|
movs r3, 0x6
|
|
str r3, [sp]
|
|
movs r3, 0x1
|
|
str r3, [sp, 0x4]
|
|
adds r3, r6, 0
|
|
bl sub_8045F58
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
adds r2, r4, 0
|
|
bl sub_8046128
|
|
ldr r0, [r5]
|
|
cmp r0, 0x2F
|
|
bgt _08046108
|
|
ldr r0, [r6]
|
|
lsls r0, 8
|
|
lsrs r1, r0, 16
|
|
b _0804610A
|
|
_08046108:
|
|
ldrh r1, [r6]
|
|
_0804610A:
|
|
movs r2, 0
|
|
ldrsh r0, [r5, r2]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
mov r2, r8
|
|
bl sub_804373C
|
|
lsls r0, r7, 16
|
|
asrs r0, 16
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80460C8
|
|
|
|
thumb_func_start sub_8046128
|
|
sub_8046128: @ 8046128
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x1C
|
|
adds r5, r0, 0
|
|
adds r3, r1, 0
|
|
mov r8, r2
|
|
ldr r0, [r5]
|
|
ldr r1, [r5, 0x4]
|
|
ldr r2, [r5, 0x8]
|
|
add r4, sp, 0x8
|
|
str r4, [sp]
|
|
movs r4, 0x6
|
|
str r4, [sp, 0x4]
|
|
bl sub_804602C
|
|
movs r3, 0
|
|
add r7, sp, 0x10
|
|
mov r12, r7
|
|
ldrb r0, [r5, 0xC]
|
|
lsls r6, r0, 27
|
|
ldr r4, [r5, 0x10]
|
|
_08046154:
|
|
lsls r2, r3, 1
|
|
add r2, r12
|
|
lsrs r1, r6, 15
|
|
mov r0, sp
|
|
adds r0, r3
|
|
adds r0, 0x8
|
|
ldrb r0, [r0]
|
|
adds r0, r4, r0
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0x5
|
|
bls _08046154
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
movs r2, 0x6
|
|
bl CpuSet
|
|
add sp, 0x1C
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8046128
|
|
|
|
thumb_func_start GetScaledExpFraction
|
|
GetScaledExpFraction: @ 8046188
|
|
push {r4-r7,lr}
|
|
adds r6, r2, 0
|
|
lsls r3, 27
|
|
lsrs r7, r3, 24
|
|
subs r5, r0, r1
|
|
cmp r5, 0
|
|
bge _0804619A
|
|
movs r5, 0
|
|
b _080461A0
|
|
_0804619A:
|
|
cmp r5, r6
|
|
ble _080461A0
|
|
adds r5, r6, 0
|
|
_080461A0:
|
|
muls r0, r7
|
|
adds r1, r6, 0
|
|
bl __divsi3
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
muls r0, r7
|
|
adds r1, r6, 0
|
|
bl __divsi3
|
|
lsls r4, 24
|
|
asrs r4, 24
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
subs r0, r4, r0
|
|
cmp r0, 0
|
|
bge _080461C8
|
|
negs r0, r0
|
|
_080461C8:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetScaledExpFraction
|
|
|
|
thumb_func_start GetScaledHPFraction
|
|
GetScaledHPFraction: @ 80461D4
|
|
push {r4,lr}
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
adds r0, r4, 0
|
|
muls r0, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl __divsi3
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _080461F8
|
|
cmp r4, 0
|
|
ble _080461F8
|
|
movs r0, 0x1
|
|
_080461F8:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetScaledHPFraction
|
|
|
|
thumb_func_start GetHPBarLevel
|
|
GetHPBarLevel: @ 8046200
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
cmp r0, r1
|
|
bne _08046212
|
|
movs r0, 0x4
|
|
b _0804622E
|
|
_08046212:
|
|
movs r2, 0x30
|
|
bl GetScaledHPFraction
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
movs r0, 0x3
|
|
cmp r1, 0x18
|
|
bhi _0804622E
|
|
movs r0, 0x2
|
|
cmp r1, 0x9
|
|
bhi _0804622E
|
|
negs r0, r1
|
|
orrs r0, r1
|
|
lsrs r0, 31
|
|
_0804622E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetHPBarLevel
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|