mirror of
https://github.com/pret/pokeruby.git
synced 2026-08-08 10:34:12 -05:00
8496 lines
137 KiB
ArmAsm
8496 lines
137 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 battle_type_is_double
|
|
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 battle_type_is_double
|
|
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 battle_type_is_double
|
|
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 battle_type_is_double
|
|
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 battle_type_is_double
|
|
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 battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080445FA
|
|
b _080447D4
|
|
_080445FA:
|
|
ldr r0, _08044684 @ =gUnknown_020239F8
|
|
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 gUnknown_020239F8
|
|
_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 @ =gUnknown_020239F8
|
|
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 gUnknown_020239F8
|
|
_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 @ =gUnknown_020239F8
|
|
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 gUnknown_020239F8
|
|
_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 battle_type_is_double
|
|
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 @ =gUnknown_020239F8
|
|
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 gUnknown_020239F8
|
|
_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 @ =gUnknown_020239F8
|
|
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 gUnknown_020239F8
|
|
_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 battle_type_is_double
|
|
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 @ =gUnknown_020239F8
|
|
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 gUnknown_020239F8
|
|
_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 battle_type_is_double
|
|
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 battle_type_is_double
|
|
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 @ =gUnknown_02038808
|
|
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 gUnknown_02038808
|
|
_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 battle_type_is_double
|
|
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 sub_8046188
|
|
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 sub_8046188
|
|
sub_8046188: @ 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 sub_8046188
|
|
|
|
thumb_func_start sub_80461D4
|
|
sub_80461D4: @ 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 sub_80461D4
|
|
|
|
thumb_func_start sub_8046200
|
|
sub_8046200: @ 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 sub_80461D4
|
|
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 sub_8046200
|
|
|
|
thumb_func_start sub_8046234
|
|
sub_8046234: @ 8046234
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsls r1, 16
|
|
lsrs r7, r1, 16
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
ldr r5, _0804636C @ =gUnknown_081FAEA4
|
|
ldrh r0, [r5, 0x6]
|
|
bl GetSpriteTileStartByTag
|
|
lsls r0, 16
|
|
ldr r1, _08046370 @ =0xffff0000
|
|
cmp r0, r1
|
|
bne _08046266
|
|
adds r0, r5, 0
|
|
bl LoadCompressedObjectPic
|
|
ldr r0, _08046374 @ =gUnknown_081FAEAC
|
|
bl LoadCompressedObjectPalette
|
|
_08046266:
|
|
ldr r0, _08046378 @ =sub_8046388
|
|
bl object_new_hidden_with_callback
|
|
mov r8, r0
|
|
mov r0, r8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r5, r0, 4
|
|
add r5, r8
|
|
lsls r5, 2
|
|
ldr r0, _0804637C @ =gSprites
|
|
adds r5, r0
|
|
strh r4, [r5, 0x30]
|
|
ldr r0, _08046380 @ =gSpriteTemplate_81FAF0C
|
|
mov r9, r0
|
|
lsls r6, 16
|
|
asrs r0, r6, 16
|
|
mov r10, r0
|
|
ldr r0, _08046384 @ =0xfff00000
|
|
adds r6, r0
|
|
asrs r6, 16
|
|
lsls r4, r7, 16
|
|
asrs r7, r4, 16
|
|
adds r4, r0
|
|
asrs r4, 16
|
|
mov r0, r9
|
|
adds r1, r6, 0
|
|
adds r2, r4, 0
|
|
movs r3, 0x2
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _0804637C @ =gSprites
|
|
adds r1, r0
|
|
mov r0, r8
|
|
strh r0, [r1, 0x2E]
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r1, 0
|
|
bl AnimateSprite
|
|
mov r0, r9
|
|
mov r1, r10
|
|
adds r2, r4, 0
|
|
movs r3, 0x2
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0804637C @ =gSprites
|
|
adds r4, r0
|
|
mov r0, r8
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
adds r0, r4, 0
|
|
bl AnimateSprite
|
|
mov r0, r9
|
|
adds r1, r6, 0
|
|
adds r2, r7, 0
|
|
movs r3, 0x2
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0804637C @ =gSprites
|
|
adds r4, r0
|
|
mov r0, r8
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAnim
|
|
adds r0, r4, 0
|
|
bl AnimateSprite
|
|
mov r0, r9
|
|
mov r1, r10
|
|
adds r2, r7, 0
|
|
movs r3, 0x2
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0804637C @ =gSprites
|
|
adds r4, r0
|
|
mov r0, r8
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl StartSpriteAnim
|
|
adds r0, r4, 0
|
|
bl AnimateSprite
|
|
mov r0, r8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0804636C: .4byte gUnknown_081FAEA4
|
|
_08046370: .4byte 0xffff0000
|
|
_08046374: .4byte gUnknown_081FAEAC
|
|
_08046378: .4byte sub_8046388
|
|
_0804637C: .4byte gSprites
|
|
_08046380: .4byte gSpriteTemplate_81FAF0C
|
|
_08046384: .4byte 0xfff00000
|
|
thumb_func_end sub_8046234
|
|
|
|
thumb_func_start sub_8046388
|
|
sub_8046388: @ 8046388
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080463C0
|
|
ldr r0, _080463B4 @ =gUnknown_081FAEA4
|
|
ldrh r0, [r0, 0x6]
|
|
bl FreeSpriteTilesByTag
|
|
ldr r0, _080463B8 @ =gUnknown_081FAEAC
|
|
ldrh r0, [r0, 0x4]
|
|
bl FreeSpritePaletteByTag
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080463BC
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
b _080463C0
|
|
.align 2, 0
|
|
_080463B4: .4byte gUnknown_081FAEA4
|
|
_080463B8: .4byte gUnknown_081FAEAC
|
|
_080463BC:
|
|
ldr r0, _080463C8 @ =SpriteCallbackDummy
|
|
str r0, [r4, 0x1C]
|
|
_080463C0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080463C8: .4byte SpriteCallbackDummy
|
|
thumb_func_end sub_8046388
|
|
|
|
thumb_func_start sub_80463CC
|
|
sub_80463CC: @ 80463CC
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080463F6
|
|
ldr r2, _080463FC @ =gSprites
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x2E]
|
|
subs r1, 0x1
|
|
strh r1, [r0, 0x2E]
|
|
adds r0, r3, 0
|
|
bl DestroySprite
|
|
_080463F6:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080463FC: .4byte gSprites
|
|
thumb_func_end sub_80463CC
|
|
|
|
thumb_func_start sub_8046400
|
|
sub_8046400: @ 8046400
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r1, _08046450 @ =gUnknown_02024E6D
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r6, _08046454 @ =gUnknown_02024A60
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08046458 @ =0x02017810
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r2, 0x8
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
ldr r0, _0804645C @ =sub_8046464
|
|
movs r1, 0x5
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08046460 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
strh r4, [r1, 0xA]
|
|
strh r5, [r1, 0xC]
|
|
ldrb r0, [r6]
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08046450: .4byte gUnknown_02024E6D
|
|
_08046454: .4byte gUnknown_02024A60
|
|
_08046458: .4byte 0x02017810
|
|
_0804645C: .4byte sub_8046464
|
|
_08046460: .4byte gTasks
|
|
thumb_func_end sub_8046400
|
|
|
|
thumb_func_start sub_8046464
|
|
sub_8046464: @ 8046464
|
|
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]
|
|
ldr r1, _08046498 @ =gTasks
|
|
mov r2, r10
|
|
lsls r0, r2, 2
|
|
add r0, r10
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
ldrh r2, [r1, 0x8]
|
|
movs r3, 0x8
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
bne _0804649C
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0x8]
|
|
b _08046616
|
|
.align 2, 0
|
|
_08046498: .4byte gTasks
|
|
_0804649C:
|
|
ldrh r0, [r1, 0xC]
|
|
mov r8, r0
|
|
ldrb r5, [r1, 0xE]
|
|
adds r0, r5, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080464C8
|
|
ldr r1, _080464C0 @ =gUnknown_02024A6A
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080464C4 @ =gEnemyParty
|
|
b _080464D6
|
|
.align 2, 0
|
|
_080464C0: .4byte gUnknown_02024A6A
|
|
_080464C4: .4byte gEnemyParty
|
|
_080464C8:
|
|
ldr r1, _08046544 @ =gUnknown_02024A6A
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08046548 @ =gPlayerParty
|
|
_080464D6:
|
|
adds r0, r1
|
|
movs r1, 0x26
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl ball_number_to_ball_processing_index
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl sub_80478DC
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _0804654C @ =gSpriteTemplate_820AAB4
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
movs r2, 0x50
|
|
movs r3, 0x1D
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r2, _08046550 @ =gSprites
|
|
mov r9, r2
|
|
lsls r0, r7, 4
|
|
adds r0, r7
|
|
lsls r6, r0, 2
|
|
adds r4, r6, r2
|
|
movs r0, 0x80
|
|
strh r0, [r4, 0x2E]
|
|
movs r3, 0
|
|
strh r3, [r4, 0x30]
|
|
mov r0, r8
|
|
strh r0, [r4, 0x3C]
|
|
mov r2, r8
|
|
cmp r2, 0xFE
|
|
beq _0804655C
|
|
cmp r2, 0xFF
|
|
bne _08046598
|
|
ldr r0, _08046554 @ =gUnknown_02024C08
|
|
strb r5, [r0]
|
|
movs r0, 0x18
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0x44
|
|
strh r0, [r4, 0x22]
|
|
mov r0, r9
|
|
adds r0, 0x1C
|
|
adds r0, r6, r0
|
|
ldr r1, _08046558 @ =sub_8047074
|
|
str r1, [r0]
|
|
b _080465A6
|
|
.align 2, 0
|
|
_08046544: .4byte gUnknown_02024A6A
|
|
_08046548: .4byte gPlayerParty
|
|
_0804654C: .4byte gSpriteTemplate_820AAB4
|
|
_08046550: .4byte gSprites
|
|
_08046554: .4byte gUnknown_02024C08
|
|
_08046558: .4byte sub_8047074
|
|
_0804655C:
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8077ABC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8077ABC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x18
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _08046590 @ =gUnknown_02024C08
|
|
strb r5, [r0]
|
|
movs r3, 0
|
|
strh r3, [r4, 0x2E]
|
|
mov r0, r9
|
|
adds r0, 0x1C
|
|
adds r0, r6, r0
|
|
ldr r1, _08046594 @ =sub_8047254
|
|
str r1, [r0]
|
|
b _080465A6
|
|
.align 2, 0
|
|
_08046590: .4byte gUnknown_02024C08
|
|
_08046594: .4byte sub_8047254
|
|
_08046598:
|
|
movs r0, 0x1
|
|
bl battle_get_side_with_given_state
|
|
ldr r1, _080465C4 @ =gUnknown_02024C08
|
|
strb r0, [r1]
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
_080465A6:
|
|
ldr r0, _080465C8 @ =gSprites
|
|
lsls r1, r7, 4
|
|
adds r1, r7
|
|
lsls r1, 2
|
|
adds r4, r1, r0
|
|
ldr r5, _080465C4 @ =gUnknown_02024C08
|
|
ldrb r0, [r5]
|
|
strh r0, [r4, 0x3A]
|
|
ldr r2, [sp]
|
|
cmp r2, 0
|
|
bne _080465CC
|
|
mov r0, r10
|
|
bl DestroyTask
|
|
b _08046616
|
|
.align 2, 0
|
|
_080465C4: .4byte gUnknown_02024C08
|
|
_080465C8: .4byte gSprites
|
|
_080465CC:
|
|
movs r0, 0x22
|
|
strh r0, [r4, 0x2E]
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl sub_8077ABC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl sub_8077ABC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, 0x10
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _08046628 @ =0x0000ffd8
|
|
strh r0, [r4, 0x38]
|
|
adds r0, r4, 0
|
|
bl sub_80786EC
|
|
mov r3, r10
|
|
strh r3, [r4, 0x6]
|
|
ldr r1, _0804662C @ =gTasks
|
|
mov r2, r10
|
|
lsls r0, r2, 2
|
|
add r0, r10
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrb r1, [r5]
|
|
strh r1, [r0, 0x10]
|
|
ldr r1, _08046630 @ =TaskDummy
|
|
str r1, [r0]
|
|
movs r0, 0x3D
|
|
bl PlaySE
|
|
_08046616:
|
|
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
|
|
_08046628: .4byte 0x0000ffd8
|
|
_0804662C: .4byte gTasks
|
|
_08046630: .4byte TaskDummy
|
|
thumb_func_end sub_8046464
|
|
|
|
thumb_func_start objc_0804ABD4
|
|
objc_0804ABD4: @ 8046634
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
adds r7, r0, 0
|
|
bl sub_8078718
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080466D4
|
|
ldrb r6, [r7, 0x6]
|
|
ldr r1, _080466E0 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrb r5, [r0, 0x10]
|
|
ldrb r0, [r0, 0xC]
|
|
mov r8, r0
|
|
adds r0, r7, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
adds r2, r7, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrh r0, [r7, 0x24]
|
|
ldrh r1, [r7, 0x20]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r7, 0x20]
|
|
ldrh r0, [r7, 0x26]
|
|
ldrh r2, [r7, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r7, 0x22]
|
|
strh r1, [r7, 0x24]
|
|
strh r1, [r7, 0x26]
|
|
strh r1, [r7, 0x38]
|
|
adds r0, r5, 0
|
|
bl sub_8047978
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl ball_number_to_ball_processing_index
|
|
adds r4, r0, 0
|
|
ldrh r0, [r7, 0x20]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r7, 0x22]
|
|
subs r1, 0x5
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
str r4, [sp]
|
|
movs r2, 0x1
|
|
movs r3, 0x1C
|
|
bl sub_814086C
|
|
movs r0, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0xE
|
|
adds r3, r4, 0
|
|
bl sub_8141314
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r7, 0x2E]
|
|
strh r5, [r7, 0x3A]
|
|
mov r0, r8
|
|
strh r0, [r7, 0x3C]
|
|
adds r0, r6, 0
|
|
bl DestroyTask
|
|
ldr r0, _080466E4 @ =sub_80466E8
|
|
str r0, [r7, 0x1C]
|
|
_080466D4:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080466E0: .4byte gTasks
|
|
_080466E4: .4byte sub_80466E8
|
|
thumb_func_end objc_0804ABD4
|
|
|
|
thumb_func_start sub_80466E8
|
|
sub_80466E8: @ 80466E8
|
|
ldr r1, _080466F0 @ =sub_80466F4
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.align 2, 0
|
|
_080466F0: .4byte sub_80466F4
|
|
thumb_func_end sub_80466E8
|
|
|
|
thumb_func_start sub_80466F4
|
|
sub_80466F4: @ 80466F4
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
ldrh r0, [r6, 0x38]
|
|
adds r0, 0x1
|
|
movs r7, 0
|
|
strh r0, [r6, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xA
|
|
bne _0804674E
|
|
strh r7, [r6, 0x38]
|
|
ldr r0, _08046754 @ =sub_8046760
|
|
str r0, [r6, 0x1C]
|
|
ldr r5, _08046758 @ =gUnknown_02024BE0
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _0804675C @ =gSprites
|
|
adds r0, r4
|
|
movs r1, 0x2
|
|
bl StartSpriteAffineAnim
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl AnimateSprite
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
strh r7, [r0, 0x30]
|
|
_0804674E:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08046754: .4byte sub_8046760
|
|
_08046758: .4byte gUnknown_02024BE0
|
|
_0804675C: .4byte gSprites
|
|
thumb_func_end sub_80466F4
|
|
|
|
thumb_func_start sub_8046760
|
|
sub_8046760: @ 8046760
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xB
|
|
bne _08046778
|
|
movs r0, 0x3C
|
|
bl PlaySE
|
|
_08046778:
|
|
ldr r6, _080467C4 @ =gSprites
|
|
ldr r5, _080467C8 @ =gUnknown_02024BE0
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r0, r6
|
|
adds r0, r1, 0
|
|
adds r0, 0x3F
|
|
ldrb r0, [r0]
|
|
lsls r0, 26
|
|
cmp r0, 0
|
|
bge _080467D0
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAnim
|
|
movs r2, 0x3A
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x38]
|
|
ldr r0, _080467CC @ =sub_80467F8
|
|
str r0, [r4, 0x1C]
|
|
b _080467F0
|
|
.align 2, 0
|
|
_080467C4: .4byte gSprites
|
|
_080467C8: .4byte gUnknown_02024BE0
|
|
_080467CC: .4byte sub_80467F8
|
|
_080467D0:
|
|
ldrh r0, [r1, 0x30]
|
|
adds r0, 0x60
|
|
strh r0, [r1, 0x30]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
movs r2, 0x30
|
|
ldrsh r0, [r1, r2]
|
|
negs r0, r0
|
|
asrs r0, 8
|
|
strh r0, [r1, 0x26]
|
|
_080467F0:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8046760
|
|
|
|
thumb_func_start sub_80467F8
|
|
sub_80467F8: @ 80467F8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08046840
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x1
|
|
movs r1, 0
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
bne _08046840
|
|
strh r1, [r4, 0x34]
|
|
movs r0, 0x20
|
|
strh r0, [r4, 0x36]
|
|
strh r1, [r4, 0x38]
|
|
movs r0, 0
|
|
movs r1, 0x20
|
|
bl Cos
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0x36
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0
|
|
bl Cos
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
ldr r0, _08046848 @ =sub_804684C
|
|
str r0, [r4, 0x1C]
|
|
_08046840:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08046848: .4byte sub_804684C
|
|
thumb_func_end sub_80467F8
|
|
|
|
thumb_func_start sub_804684C
|
|
sub_804684C: @ 804684C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r5, 0
|
|
ldrh r0, [r4, 0x34]
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _08046862
|
|
cmp r1, 0x1
|
|
beq _080468D6
|
|
b _08046902
|
|
_08046862:
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x36
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x38]
|
|
adds r1, 0x4
|
|
ldrh r2, [r4, 0x34]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
adds r1, r0
|
|
strh r1, [r4, 0x38]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
cmp r1, 0x3F
|
|
ble _08046902
|
|
ldrh r0, [r4, 0x36]
|
|
subs r0, 0xA
|
|
strh r0, [r4, 0x36]
|
|
ldr r1, _080468AC @ =0x00000101
|
|
adds r0, r2, r1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
cmp r0, 0x4
|
|
bne _0804689E
|
|
movs r5, 0x1
|
|
_0804689E:
|
|
cmp r0, 0x2
|
|
beq _080468BE
|
|
cmp r0, 0x2
|
|
bgt _080468B0
|
|
cmp r0, 0x1
|
|
beq _080468B6
|
|
b _080468CE
|
|
.align 2, 0
|
|
_080468AC: .4byte 0x00000101
|
|
_080468B0:
|
|
cmp r0, 0x3
|
|
beq _080468C6
|
|
b _080468CE
|
|
_080468B6:
|
|
movs r0, 0x38
|
|
bl PlaySE
|
|
b _08046902
|
|
_080468BE:
|
|
movs r0, 0x39
|
|
bl PlaySE
|
|
b _08046902
|
|
_080468C6:
|
|
movs r0, 0x3A
|
|
bl PlaySE
|
|
b _08046902
|
|
_080468CE:
|
|
movs r0, 0x3B
|
|
bl PlaySE
|
|
b _08046902
|
|
_080468D6:
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x36
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x38]
|
|
subs r1, 0x4
|
|
ldrh r2, [r4, 0x34]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
subs r1, r0
|
|
strh r1, [r4, 0x38]
|
|
lsls r1, 16
|
|
cmp r1, 0
|
|
bgt _08046902
|
|
strh r5, [r4, 0x38]
|
|
ldr r0, _08046928 @ =0xffffff00
|
|
ands r0, r2
|
|
strh r0, [r4, 0x34]
|
|
_08046902:
|
|
cmp r5, 0
|
|
beq _0804693A
|
|
movs r5, 0
|
|
strh r5, [r4, 0x34]
|
|
movs r0, 0x40
|
|
movs r1, 0x20
|
|
bl Cos
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
strh r5, [r4, 0x26]
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _08046930
|
|
ldr r0, _0804692C @ =sub_8046C78
|
|
str r0, [r4, 0x1C]
|
|
b _0804693A
|
|
.align 2, 0
|
|
_08046928: .4byte 0xffffff00
|
|
_0804692C: .4byte sub_8046C78
|
|
_08046930:
|
|
ldr r0, _08046940 @ =sub_8046944
|
|
str r0, [r4, 0x1C]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
strh r5, [r4, 0x38]
|
|
_0804693A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08046940: .4byte sub_8046944
|
|
thumb_func_end sub_804684C
|
|
|
|
thumb_func_start sub_8046944
|
|
sub_8046944: @ 8046944
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1F
|
|
bne _08046978
|
|
movs r0, 0
|
|
strh r0, [r4, 0x34]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, _08046980 @ =sub_8046984
|
|
str r0, [r4, 0x1C]
|
|
movs r0, 0x17
|
|
bl PlaySE
|
|
_08046978:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08046980: .4byte sub_8046984
|
|
thumb_func_end sub_8046944
|
|
|
|
thumb_func_start sub_8046984
|
|
sub_8046984: @ 8046984
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x34]
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
cmp r1, 0x4
|
|
bhi _08046A84
|
|
lsls r0, r1, 2
|
|
ldr r1, _0804699C @ =_080469A0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0804699C: .4byte _080469A0
|
|
.align 2, 0
|
|
_080469A0:
|
|
.4byte _080469B4
|
|
.4byte _080469E6
|
|
.4byte _080469B4
|
|
.4byte _08046A3A
|
|
.4byte _08046A84
|
|
_080469B4:
|
|
ldrh r0, [r4, 0x36]
|
|
ldrh r2, [r4, 0x24]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x24]
|
|
ldrh r1, [r4, 0x38]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x38]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x6
|
|
bls _08046ACA
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x38]
|
|
b _08046ACA
|
|
_080469E6:
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
bne _08046A2C
|
|
movs r0, 0
|
|
strh r0, [r4, 0x38]
|
|
ldrh r0, [r4, 0x36]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x36]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
movs r2, 0x36
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bge _08046A22
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl ChangeSpriteAffineAnim
|
|
b _08046ACA
|
|
_08046A22:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl ChangeSpriteAffineAnim
|
|
b _08046ACA
|
|
_08046A2C:
|
|
adds r0, r4, 0
|
|
adds r0, 0x2C
|
|
ldrb r1, [r0]
|
|
movs r2, 0x80
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
b _08046ACA
|
|
_08046A3A:
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ldrh r2, [r4, 0x34]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
bne _08046A5C
|
|
ldr r0, _08046A58 @ =sub_8046C78
|
|
str r0, [r4, 0x1C]
|
|
b _08046ACA
|
|
.align 2, 0
|
|
_08046A58: .4byte sub_8046C78
|
|
_08046A5C:
|
|
cmp r1, 0x4
|
|
bne _08046A70
|
|
cmp r0, 0x3
|
|
bne _08046A70
|
|
ldr r0, _08046A6C @ =sub_8046E7C
|
|
str r0, [r4, 0x1C]
|
|
b _08046A76
|
|
.align 2, 0
|
|
_08046A6C: .4byte sub_8046E7C
|
|
_08046A70:
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
_08046A76:
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
b _08046ACA
|
|
_08046A84:
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1F
|
|
bne _08046ACA
|
|
movs r0, 0
|
|
strh r0, [r4, 0x38]
|
|
ldrh r1, [r4, 0x34]
|
|
ldr r0, _08046AB8 @ =0xffffff00
|
|
ands r0, r1
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl StartSpriteAffineAnim
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bge _08046ABC
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAffineAnim
|
|
b _08046AC4
|
|
.align 2, 0
|
|
_08046AB8: .4byte 0xffffff00
|
|
_08046ABC:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
_08046AC4:
|
|
movs r0, 0x17
|
|
bl PlaySE
|
|
_08046ACA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8046984
|
|
|
|
thumb_func_start sub_8046AD0
|
|
sub_8046AD0: @ 8046AD0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _08046AFC @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrb r6, [r0, 0xC]
|
|
ldrb r3, [r0, 0xA]
|
|
ldrh r5, [r0, 0x8]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x20
|
|
bhi _08046B88
|
|
lsls r0, 2
|
|
ldr r1, _08046B00 @ =_08046B04
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08046AFC: .4byte gTasks
|
|
_08046B00: .4byte _08046B04
|
|
.align 2, 0
|
|
_08046B04:
|
|
.4byte _08046B88
|
|
.4byte _08046BA6
|
|
.4byte _08046BB2
|
|
.4byte _08046BF6
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046BD0
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046B88
|
|
.4byte _08046C08
|
|
.4byte _08046C20
|
|
.4byte _08046C48
|
|
_08046B88:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0x18]
|
|
movs r3, 0x18
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x2
|
|
bgt _08046BA0
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0x18]
|
|
b _08046C72
|
|
_08046BA0:
|
|
adds r0, r6, 0x1
|
|
strh r0, [r1, 0x26]
|
|
b _08046C72
|
|
_08046BA6:
|
|
lsls r1, r3, 24
|
|
asrs r1, 24
|
|
adds r0, r5, 0
|
|
bl PlayCry1
|
|
b _08046BEE
|
|
_08046BB2:
|
|
bl StopCryAndClearCrySongs
|
|
ldr r1, _08046BCC @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0x3
|
|
strh r1, [r0, 0x1C]
|
|
movs r1, 0x14
|
|
strh r1, [r0, 0x26]
|
|
b _08046C72
|
|
.align 2, 0
|
|
_08046BCC: .4byte gTasks
|
|
_08046BD0:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0x1C]
|
|
movs r6, 0x1C
|
|
ldrsh r0, [r1, r6]
|
|
cmp r0, 0
|
|
bne _08046C5A
|
|
lsls r1, r3, 24
|
|
asrs r1, 24
|
|
adds r0, r5, 0
|
|
movs r2, 0x1
|
|
bl PlayCry4
|
|
_08046BEE:
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
b _08046C72
|
|
_08046BF6:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r1, 0x6
|
|
strh r1, [r0, 0x1C]
|
|
movs r1, 0x1E
|
|
strh r1, [r0, 0x26]
|
|
b _08046C72
|
|
_08046C08:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0x1C]
|
|
movs r3, 0x1C
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
bne _08046C5A
|
|
ldrh r0, [r1, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x26]
|
|
_08046C20:
|
|
bl IsCryPlayingOrClearCrySongs
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08046C72
|
|
bl StopCryAndClearCrySongs
|
|
ldr r0, _08046C44 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r0, 0x3
|
|
strh r0, [r1, 0x1C]
|
|
ldrh r0, [r1, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x26]
|
|
b _08046C72
|
|
.align 2, 0
|
|
_08046C44: .4byte gTasks
|
|
_08046C48:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0x1C]
|
|
movs r6, 0x1C
|
|
ldrsh r0, [r1, r6]
|
|
cmp r0, 0
|
|
beq _08046C60
|
|
_08046C5A:
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0x1C]
|
|
b _08046C72
|
|
_08046C60:
|
|
lsls r1, r3, 24
|
|
asrs r1, 24
|
|
adds r0, r5, 0
|
|
movs r2, 0
|
|
bl PlayCry4
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_08046C72:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8046AD0
|
|
|
|
thumb_func_start sub_8046C78
|
|
sub_8046C78: @ 8046C78
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
adds r6, r0, 0
|
|
ldrh r0, [r6, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
adds r0, r5, 0
|
|
bl sub_8047978
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl ball_number_to_ball_processing_index
|
|
adds r4, r0, 0
|
|
ldrh r0, [r6, 0x20]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x22]
|
|
subs r1, 0x5
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
str r4, [sp]
|
|
movs r2, 0x1
|
|
movs r3, 0x1C
|
|
bl sub_814086C
|
|
ldrh r1, [r6, 0x3A]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x1
|
|
movs r2, 0xE
|
|
adds r3, r4, 0
|
|
bl sub_8141314
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x2E]
|
|
ldr r0, _08046D0C @ =sub_8046E9C
|
|
str r0, [r6, 0x1C]
|
|
ldr r0, _08046D10 @ =gMain
|
|
ldr r1, _08046D14 @ =0x0000043d
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08046CE8
|
|
b _08046E1C
|
|
_08046CE8:
|
|
adds r0, r5, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08046D20
|
|
ldr r1, _08046D18 @ =gUnknown_02024A6A
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08046D1C @ =gEnemyParty
|
|
adds r0, r1, r0
|
|
movs r3, 0x19
|
|
mov r8, r3
|
|
b _08046D34
|
|
.align 2, 0
|
|
_08046D0C: .4byte sub_8046E9C
|
|
_08046D10: .4byte gMain
|
|
_08046D14: .4byte 0x0000043d
|
|
_08046D18: .4byte gUnknown_02024A6A
|
|
_08046D1C: .4byte gEnemyParty
|
|
_08046D20:
|
|
ldr r1, _08046D90 @ =gUnknown_02024A6A
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08046D94 @ =gPlayerParty
|
|
adds r0, r1, r0
|
|
movs r1, 0xE7
|
|
mov r8, r1
|
|
_08046D34:
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
movs r0, 0
|
|
bl battle_get_side_with_given_state
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r5, r0
|
|
beq _08046D5A
|
|
movs r0, 0x1
|
|
bl battle_get_side_with_given_state
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r5, r0
|
|
bne _08046DAE
|
|
_08046D5A:
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08046DAE
|
|
ldr r0, _08046D98 @ =0x02017840
|
|
ldrb r1, [r0, 0x9]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08046DAE
|
|
ldr r0, _08046D9C @ =gUnknown_020239F8
|
|
ldrh r1, [r0]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08046DA4
|
|
bl IsBGMPlaying
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08046DAE
|
|
ldr r0, _08046DA0 @ =gMPlay_BGM
|
|
bl m4aMPlayStop
|
|
b _08046DAE
|
|
.align 2, 0
|
|
_08046D90: .4byte gUnknown_02024A6A
|
|
_08046D94: .4byte gPlayerParty
|
|
_08046D98: .4byte 0x02017840
|
|
_08046D9C: .4byte gUnknown_020239F8
|
|
_08046DA0: .4byte gMPlay_BGM
|
|
_08046DA4:
|
|
ldr r0, _08046DC8 @ =gMPlay_BGM
|
|
ldr r1, _08046DCC @ =0x0000ffff
|
|
movs r2, 0x80
|
|
bl m4aMPlayVolumeControl
|
|
_08046DAE:
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08046DC4
|
|
ldr r0, _08046DD0 @ =0x02017840
|
|
ldrb r1, [r0, 0x9]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08046DD4
|
|
_08046DC4:
|
|
movs r4, 0
|
|
b _08046DF6
|
|
.align 2, 0
|
|
_08046DC8: .4byte gMPlay_BGM
|
|
_08046DCC: .4byte 0x0000ffff
|
|
_08046DD0: .4byte 0x02017840
|
|
_08046DD4:
|
|
movs r0, 0
|
|
bl battle_get_side_with_given_state
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r5, r0
|
|
beq _08046DF0
|
|
movs r0, 0x1
|
|
bl battle_get_side_with_given_state
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r5, r0
|
|
bne _08046DF4
|
|
_08046DF0:
|
|
movs r4, 0x1
|
|
b _08046DF6
|
|
_08046DF4:
|
|
movs r4, 0x2
|
|
_08046DF6:
|
|
ldr r0, _08046E6C @ =sub_8046AD0
|
|
movs r1, 0x3
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08046E70 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0
|
|
strh r7, [r1, 0x8]
|
|
mov r3, r8
|
|
lsls r0, r3, 24
|
|
asrs r0, 24
|
|
strh r0, [r1, 0xA]
|
|
strh r4, [r1, 0xC]
|
|
strh r2, [r1, 0x26]
|
|
_08046E1C:
|
|
ldr r5, _08046E74 @ =gUnknown_02024BE0
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _08046E78 @ =gSprites
|
|
adds r0, r4
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
movs r3, 0x3A
|
|
ldrsh r0, [r6, r3]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl AnimateSprite
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
strh r1, [r0, 0x30]
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08046E6C: .4byte sub_8046AD0
|
|
_08046E70: .4byte gTasks
|
|
_08046E74: .4byte gUnknown_02024BE0
|
|
_08046E78: .4byte gSprites
|
|
thumb_func_end sub_8046C78
|
|
|
|
thumb_func_start sub_8046E7C
|
|
sub_8046E7C: @ 8046E7C
|
|
adds r3, r0, 0
|
|
adds r3, 0x2C
|
|
ldrb r1, [r3]
|
|
movs r2, 0x40
|
|
orrs r1, r2
|
|
strb r1, [r3]
|
|
ldr r1, _08046E98 @ =sub_8046FBC
|
|
str r1, [r0, 0x1C]
|
|
movs r1, 0
|
|
strh r1, [r0, 0x34]
|
|
strh r1, [r0, 0x36]
|
|
strh r1, [r0, 0x38]
|
|
bx lr
|
|
.align 2, 0
|
|
_08046E98: .4byte sub_8046FBC
|
|
thumb_func_end sub_8046E7C
|
|
|
|
thumb_func_start sub_8046E9C
|
|
sub_8046E9C: @ 8046E9C
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
movs r7, 0
|
|
ldrh r0, [r5, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r6, _08046F00 @ =gSprites
|
|
ldr r0, _08046F04 @ =gUnknown_02024BE0
|
|
adds r3, r4, r0
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08046EDE
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08046EDE:
|
|
ldrb r0, [r3]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
adds r0, r1, 0
|
|
adds r0, 0x3F
|
|
ldrb r0, [r0]
|
|
lsls r0, 26
|
|
cmp r0, 0
|
|
bge _08046F08
|
|
adds r0, r1, 0
|
|
movs r1, 0
|
|
bl StartSpriteAffineAnim
|
|
movs r7, 0x1
|
|
b _08046F24
|
|
.align 2, 0
|
|
_08046F00: .4byte gSprites
|
|
_08046F04: .4byte gUnknown_02024BE0
|
|
_08046F08:
|
|
ldr r2, _08046FA8 @ =0xfffffee0
|
|
adds r0, r2, 0
|
|
ldrh r2, [r1, 0x30]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x30]
|
|
ldrb r0, [r3]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r1, 0x26]
|
|
_08046F24:
|
|
adds r0, r5, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08046FA0
|
|
cmp r7, 0
|
|
beq _08046FA0
|
|
ldr r2, _08046FAC @ =gSprites
|
|
ldr r0, _08046FB0 @ =gUnknown_02024BE0
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r2, 0
|
|
movs r1, 0
|
|
strh r1, [r0, 0x26]
|
|
ldr r0, _08046FB4 @ =gUnknown_02024E6D
|
|
strb r2, [r0]
|
|
lsls r1, r4, 1
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
ldr r4, _08046FB8 @ =0x02017810
|
|
adds r1, r4
|
|
ldrb r2, [r1]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
adds r0, r5, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r5, 0
|
|
bl DestroySprite
|
|
movs r3, 0
|
|
movs r5, 0x8
|
|
adds r2, r4, 0
|
|
movs r4, 0x3
|
|
_08046F78:
|
|
ldrb r1, [r2]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08046F84
|
|
adds r3, 0x1
|
|
_08046F84:
|
|
adds r2, 0xC
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _08046F78
|
|
cmp r3, 0x4
|
|
bne _08046FA0
|
|
movs r4, 0
|
|
_08046F92:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl sub_804794C
|
|
adds r4, 0x1
|
|
cmp r4, 0xB
|
|
ble _08046F92
|
|
_08046FA0:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08046FA8: .4byte 0xfffffee0
|
|
_08046FAC: .4byte gSprites
|
|
_08046FB0: .4byte gUnknown_02024BE0
|
|
_08046FB4: .4byte gUnknown_02024E6D
|
|
_08046FB8: .4byte 0x02017810
|
|
thumb_func_end sub_8046E9C
|
|
|
|
thumb_func_start sub_8046FBC
|
|
sub_8046FBC: @ 8046FBC
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
ldrh r0, [r6, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldrh r0, [r6, 0x36]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x36]
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0x28
|
|
beq _08047056
|
|
cmp r1, 0x5F
|
|
bne _08046FF4
|
|
ldr r0, _08046FEC @ =gUnknown_02024E6D
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
bl m4aMPlayAllStop
|
|
ldr r0, _08046FF0 @ =0x00000173
|
|
bl PlaySE
|
|
b _08047056
|
|
.align 2, 0
|
|
_08046FEC: .4byte gUnknown_02024E6D
|
|
_08046FF0: .4byte 0x00000173
|
|
_08046FF4:
|
|
ldr r0, _0804705C @ =0x0000013b
|
|
cmp r1, r0
|
|
bne _08047056
|
|
ldr r5, _08047060 @ =gSprites
|
|
ldr r4, _08047064 @ =gUnknown_02024BE0
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r4
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrb r0, [r0, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r4
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
bl DestroySprite
|
|
adds r0, r6, 0
|
|
bl DestroySpriteAndFreeResources
|
|
ldr r0, _08047068 @ =gMain
|
|
ldr r1, _0804706C @ =0x0000043d
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08047056
|
|
lsls r1, r7, 1
|
|
adds r1, r7
|
|
lsls r1, 2
|
|
ldr r0, _08047070 @ =0x02017810
|
|
adds r1, r0
|
|
ldrb r2, [r1]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
_08047056:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804705C: .4byte 0x0000013b
|
|
_08047060: .4byte gSprites
|
|
_08047064: .4byte gUnknown_02024BE0
|
|
_08047068: .4byte gMain
|
|
_0804706C: .4byte 0x0000043d
|
|
_08047070: .4byte 0x02017810
|
|
thumb_func_end sub_8046FBC
|
|
|
|
thumb_func_start sub_8047074
|
|
sub_8047074: @ 8047074
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x19
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x2
|
|
bl sub_8077ABC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x3A]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x3
|
|
bl sub_8077ABC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x18
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080470BC @ =0x0000ffe2
|
|
strh r0, [r4, 0x38]
|
|
ldrh r0, [r4, 0x3A]
|
|
strh r0, [r4, 0x6]
|
|
adds r0, r4, 0
|
|
bl sub_80786EC
|
|
ldr r0, _080470C0 @ =sub_80470C4
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080470BC: .4byte 0x0000ffe2
|
|
_080470C0: .4byte sub_80470C4
|
|
thumb_func_end sub_8047074
|
|
|
|
thumb_func_start sub_80470C4
|
|
sub_80470C4: @ 80470C4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x3C]
|
|
movs r1, 0xFF
|
|
mov r8, r1
|
|
lsrs r0, 8
|
|
subs r0, 0x23
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x2C
|
|
bhi _080471B8
|
|
ldrh r1, [r5, 0x6]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08047126
|
|
ldrh r0, [r5, 0x30]
|
|
movs r1, 0x1
|
|
adds r6, r1, 0
|
|
ands r6, r0
|
|
ldrh r0, [r5, 0x32]
|
|
adds r7, r1, 0
|
|
ands r7, r0
|
|
movs r2, 0x30
|
|
ldrsh r0, [r5, r2]
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
adds r4, r1, 0
|
|
ands r0, r4
|
|
orrs r6, r0
|
|
strh r6, [r5, 0x30]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r5, r2]
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
ands r0, r4
|
|
orrs r7, r0
|
|
strh r7, [r5, 0x32]
|
|
adds r0, r5, 0
|
|
movs r1, 0x4
|
|
bl StartSpriteAffineAnim
|
|
_08047126:
|
|
ldrh r4, [r5, 0x2E]
|
|
adds r0, r5, 0
|
|
bl sub_8078B5C
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
adds r1, r0, 0
|
|
ldrh r0, [r5, 0x3C]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x3C]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
mov r2, r8
|
|
ands r0, r2
|
|
movs r2, 0x38
|
|
ldrsh r1, [r5, r2]
|
|
bl Sin
|
|
ldrh r1, [r5, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x26]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r2, 0
|
|
ldrh r1, [r5, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x6]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
movs r1, 0x3
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08047176
|
|
strh r4, [r5, 0x2E]
|
|
b _0804717E
|
|
_08047176:
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
subs r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
_0804717E:
|
|
ldrh r0, [r5, 0x3C]
|
|
lsrs r0, 8
|
|
cmp r0, 0x4F
|
|
ble _08047220
|
|
ldrh r0, [r5, 0x30]
|
|
movs r1, 0x1
|
|
adds r6, r1, 0
|
|
ands r6, r0
|
|
ldrh r0, [r5, 0x32]
|
|
adds r7, r1, 0
|
|
ands r7, r0
|
|
movs r2, 0x30
|
|
ldrsh r1, [r5, r2]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
adds r2, r1, 0
|
|
ands r0, r2
|
|
orrs r0, r6
|
|
strh r0, [r5, 0x30]
|
|
movs r0, 0x32
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
ands r0, r2
|
|
orrs r0, r7
|
|
strh r0, [r5, 0x32]
|
|
b _08047220
|
|
_080471B8:
|
|
adds r0, r5, 0
|
|
bl sub_8078718
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08047220
|
|
ldrh r0, [r5, 0x24]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x26]
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
strh r1, [r5, 0x26]
|
|
strh r1, [r5, 0x24]
|
|
ldrb r0, [r5, 0x6]
|
|
strh r0, [r5, 0x3A]
|
|
strh r1, [r5, 0x2E]
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08047214
|
|
ldr r0, _0804720C @ =0x02017840
|
|
ldrb r1, [r0, 0x9]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08047214
|
|
movs r0, 0x3A
|
|
ldrsh r4, [r5, r0]
|
|
movs r0, 0x2
|
|
bl battle_get_side_with_given_state
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r4, r0
|
|
bne _08047214
|
|
ldr r0, _08047210 @ =sub_8047230
|
|
b _08047216
|
|
.align 2, 0
|
|
_0804720C: .4byte 0x02017840
|
|
_08047210: .4byte sub_8047230
|
|
_08047214:
|
|
ldr r0, _0804722C @ =sub_8046C78
|
|
_08047216:
|
|
str r0, [r5, 0x1C]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl StartSpriteAffineAnim
|
|
_08047220:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804722C: .4byte sub_8046C78
|
|
thumb_func_end sub_80470C4
|
|
|
|
thumb_func_start sub_8047230
|
|
sub_8047230: @ 8047230
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x2E]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r2, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x18
|
|
ble _0804724A
|
|
movs r0, 0
|
|
strh r0, [r2, 0x2E]
|
|
ldr r0, _08047250 @ =sub_8046C78
|
|
str r0, [r2, 0x1C]
|
|
_0804724A:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08047250: .4byte sub_8046C78
|
|
thumb_func_end sub_8047230
|
|
|
|
thumb_func_start sub_8047254
|
|
sub_8047254: @ 8047254
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xF
|
|
ble _080472A4
|
|
movs r0, 0
|
|
strh r0, [r5, 0x2E]
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080472A0
|
|
ldr r0, _08047298 @ =0x02017840
|
|
ldrb r1, [r0, 0x9]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080472A0
|
|
movs r0, 0x3A
|
|
ldrsh r4, [r5, r0]
|
|
movs r0, 0x3
|
|
bl battle_get_side_with_given_state
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r4, r0
|
|
bne _080472A0
|
|
ldr r0, _0804729C @ =sub_8047230
|
|
b _080472A2
|
|
.align 2, 0
|
|
_08047298: .4byte 0x02017840
|
|
_0804729C: .4byte sub_8047230
|
|
_080472A0:
|
|
ldr r0, _080472AC @ =sub_8046C78
|
|
_080472A2:
|
|
str r0, [r5, 0x1C]
|
|
_080472A4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080472AC: .4byte sub_8046C78
|
|
thumb_func_end sub_8047254
|
|
|
|
thumb_func_start sub_80472B0
|
|
sub_80472B0: @ 80472B0
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
movs r4, 0
|
|
str r4, [sp]
|
|
bl sub_814086C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80472B0
|
|
|
|
thumb_func_start sub_80472D8
|
|
sub_80472D8: @ 80472D8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r3, 0
|
|
bl sub_8141314
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80472D8
|
|
|
|
thumb_func_start CreatePokeballSprite
|
|
CreatePokeballSprite: @ 80472F0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
mov r9, r2
|
|
mov r10, r3
|
|
ldr r6, [sp, 0x24]
|
|
ldr r4, [sp, 0x28]
|
|
ldr r0, [sp, 0x2C]
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp]
|
|
mov r1, r9
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
mov r2, r10
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r10, r2
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _080473BC @ =gUnknown_0820A92C
|
|
bl LoadCompressedObjectPic
|
|
ldr r0, _080473C0 @ =gUnknown_0820A98C
|
|
bl LoadCompressedObjectPalette
|
|
ldr r0, _080473C4 @ =gSpriteTemplate_820AAB4
|
|
mov r1, r9
|
|
mov r2, r10
|
|
adds r3, r4, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, _080473C8 @ =gSprites
|
|
mov r8, r3
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r1, r4, r3
|
|
strh r5, [r1, 0x2E]
|
|
lsls r2, r5, 4
|
|
adds r2, r5
|
|
lsls r2, 2
|
|
add r2, r8
|
|
ldrh r0, [r2, 0x20]
|
|
strh r0, [r1, 0x38]
|
|
ldrh r0, [r2, 0x22]
|
|
strh r0, [r1, 0x3A]
|
|
mov r0, r9
|
|
strh r0, [r2, 0x20]
|
|
mov r3, r10
|
|
strh r3, [r2, 0x22]
|
|
strh r7, [r1, 0x30]
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
strh r0, [r1, 0x32]
|
|
mov r3, sp
|
|
ldrh r3, [r3, 0x30]
|
|
strh r3, [r1, 0x34]
|
|
ldr r3, [sp, 0x30]
|
|
lsrs r0, r3, 16
|
|
strh r0, [r1, 0x36]
|
|
movs r0, 0x3
|
|
ands r6, r0
|
|
lsls r6, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r6
|
|
strb r0, [r1, 0x5]
|
|
movs r0, 0x1C
|
|
add r8, r0
|
|
add r4, r8
|
|
ldr r0, _080473CC @ =sub_80473D0
|
|
str r0, [r4]
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
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
|
|
_080473BC: .4byte gUnknown_0820A92C
|
|
_080473C0: .4byte gUnknown_0820A98C
|
|
_080473C4: .4byte gSpriteTemplate_820AAB4
|
|
_080473C8: .4byte gSprites
|
|
_080473CC: .4byte sub_80473D0
|
|
thumb_func_end CreatePokeballSprite
|
|
|
|
thumb_func_start sub_80473D0
|
|
sub_80473D0: @ 80473D0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, 0
|
|
ldrh r1, [r6, 0x30]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r6, r2]
|
|
cmp r0, 0
|
|
bne _0804747C
|
|
ldrh r0, [r6, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldrh r0, [r6, 0x32]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldrh r4, [r6, 0x34]
|
|
ldrh r0, [r6, 0x36]
|
|
lsls r0, 16
|
|
orrs r4, r0
|
|
adds r0, r6, 0
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804740A
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
b _0804740C
|
|
_0804740A:
|
|
movs r5, 0
|
|
_0804740C:
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r6, 0x20]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x22]
|
|
subs r1, 0x5
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r2, [r6, 0x5]
|
|
lsls r2, 28
|
|
lsrs r2, 30
|
|
adds r3, r5, 0
|
|
bl sub_80472B0
|
|
movs r0, 0x1
|
|
mov r1, r8
|
|
adds r2, r4, 0
|
|
bl sub_80472D8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r5, 0
|
|
strh r0, [r6, 0x30]
|
|
ldr r0, _08047474 @ =sub_804748C
|
|
str r0, [r6, 0x1C]
|
|
ldr r0, _08047478 @ =gSprites
|
|
lsls r4, r7, 4
|
|
adds r4, r7
|
|
lsls r4, 2
|
|
adds r4, r0
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
adds r0, r4, 0
|
|
bl AnimateSprite
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
strh r0, [r4, 0x30]
|
|
strh r5, [r6, 0x3C]
|
|
b _08047480
|
|
.align 2, 0
|
|
_08047474: .4byte sub_804748C
|
|
_08047478: .4byte gSprites
|
|
_0804747C:
|
|
subs r0, r1, 0x1
|
|
strh r0, [r6, 0x30]
|
|
_08047480:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80473D0
|
|
|
|
thumb_func_start sub_804748C
|
|
sub_804748C: @ 804748C
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0
|
|
mov r12, r0
|
|
movs r6, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080474B6
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_080474B6:
|
|
ldr r0, _08047544 @ =gSprites
|
|
lsls r1, r3, 4
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
adds r5, r1, r0
|
|
adds r0, r5, 0
|
|
adds r0, 0x3F
|
|
ldrb r0, [r0]
|
|
lsls r0, 26
|
|
cmp r0, 0
|
|
bge _080474D8
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl StartSpriteAffineAnim
|
|
movs r1, 0x1
|
|
mov r12, r1
|
|
_080474D8:
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
movs r7, 0x20
|
|
ldrsh r1, [r4, r7]
|
|
subs r0, r1
|
|
movs r1, 0x3C
|
|
ldrsh r2, [r4, r1]
|
|
muls r0, r2
|
|
cmp r0, 0
|
|
bge _080474EE
|
|
adds r0, 0x7F
|
|
_080474EE:
|
|
asrs r0, 7
|
|
ldrh r7, [r4, 0x20]
|
|
adds r0, r7
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
movs r7, 0x22
|
|
ldrsh r1, [r4, r7]
|
|
subs r0, r1
|
|
muls r0, r2
|
|
cmp r0, 0
|
|
bge _0804750A
|
|
adds r0, 0x7F
|
|
_0804750A:
|
|
asrs r0, 7
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r3, [r5, 0x20]
|
|
strh r0, [r5, 0x22]
|
|
ldrh r2, [r4, 0x3C]
|
|
movs r7, 0x3C
|
|
ldrsh r0, [r4, r7]
|
|
cmp r0, 0x7F
|
|
bgt _0804754C
|
|
ldr r1, _08047548 @ =gSineTable
|
|
lsls r0, r2, 24
|
|
lsrs r0, 23
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bge _08047530
|
|
adds r0, 0x7
|
|
_08047530:
|
|
asrs r0, 3
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r2, 0x4
|
|
strh r1, [r4, 0x3C]
|
|
strh r0, [r5, 0x24]
|
|
strh r0, [r5, 0x26]
|
|
b _0804755A
|
|
.align 2, 0
|
|
_08047544: .4byte gSprites
|
|
_08047548: .4byte gSineTable
|
|
_0804754C:
|
|
ldrh r0, [r4, 0x38]
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r4, 0x3A]
|
|
strh r0, [r5, 0x22]
|
|
strh r6, [r5, 0x24]
|
|
strh r6, [r5, 0x26]
|
|
movs r6, 0x1
|
|
_0804755A:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08047578
|
|
mov r2, r12
|
|
cmp r2, 0
|
|
beq _08047578
|
|
cmp r6, 0
|
|
beq _08047578
|
|
adds r0, r4, 0
|
|
bl DestroySpriteAndFreeResources
|
|
_08047578:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804748C
|
|
|
|
thumb_func_start sub_8047580
|
|
sub_8047580: @ 8047580
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
mov r10, r0
|
|
adds r6, r2, 0
|
|
mov r8, r3
|
|
ldr r5, [sp, 0x20]
|
|
ldr r4, [sp, 0x24]
|
|
ldr r0, [sp, 0x28]
|
|
mov r9, r0
|
|
mov r0, r10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
mov r1, r8
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r0, r9
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldr r0, _08047624 @ =gUnknown_0820A92C
|
|
bl LoadCompressedObjectPic
|
|
ldr r0, _08047628 @ =gUnknown_0820A98C
|
|
bl LoadCompressedObjectPalette
|
|
ldr r0, _0804762C @ =gSpriteTemplate_820AAB4
|
|
adds r1, r6, 0
|
|
mov r2, r8
|
|
adds r3, r4, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r6, _08047630 @ =gSprites
|
|
lsls r3, r0, 4
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
adds r2, r3, r6
|
|
mov r1, r10
|
|
strh r1, [r2, 0x2E]
|
|
mov r4, r9
|
|
strh r4, [r2, 0x30]
|
|
strh r7, [r2, 0x32]
|
|
mov r1, sp
|
|
ldrh r1, [r1, 0x2C]
|
|
strh r1, [r2, 0x34]
|
|
ldr r4, [sp, 0x2C]
|
|
lsrs r1, r4, 16
|
|
strh r1, [r2, 0x36]
|
|
movs r1, 0x3
|
|
ands r5, r1
|
|
lsls r5, 2
|
|
ldrb r4, [r2, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r4
|
|
orrs r1, r5
|
|
strb r1, [r2, 0x5]
|
|
adds r6, 0x1C
|
|
adds r3, r6
|
|
ldr r1, _08047634 @ =sub_8047638
|
|
str r1, [r3]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08047624: .4byte gUnknown_0820A92C
|
|
_08047628: .4byte gUnknown_0820A98C
|
|
_0804762C: .4byte gSpriteTemplate_820AAB4
|
|
_08047630: .4byte gSprites
|
|
_08047634: .4byte sub_8047638
|
|
thumb_func_end sub_8047580
|
|
|
|
thumb_func_start sub_8047638
|
|
sub_8047638: @ 8047638
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x30]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080476D0
|
|
ldrh r0, [r4, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldrh r0, [r4, 0x32]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldrh r5, [r4, 0x34]
|
|
ldrh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
orrs r5, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08047672
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
b _08047674
|
|
_08047672:
|
|
movs r6, 0
|
|
_08047674:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r4, 0x20]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x22]
|
|
subs r1, 0x5
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r2, [r4, 0x5]
|
|
lsls r2, 28
|
|
lsrs r2, 30
|
|
adds r3, r6, 0
|
|
bl sub_80472B0
|
|
movs r0, 0x1
|
|
mov r1, r8
|
|
adds r2, r5, 0
|
|
bl sub_80472D8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r5, 0
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _080476C8 @ =sub_80476E0
|
|
str r0, [r4, 0x1C]
|
|
lsls r4, r7, 4
|
|
adds r4, r7
|
|
lsls r4, 2
|
|
ldr r0, _080476CC @ =gSprites
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAffineAnim
|
|
adds r0, r4, 0
|
|
bl AnimateSprite
|
|
strh r5, [r4, 0x30]
|
|
b _080476D4
|
|
.align 2, 0
|
|
_080476C8: .4byte sub_80476E0
|
|
_080476CC: .4byte gSprites
|
|
_080476D0:
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x30]
|
|
_080476D4:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8047638
|
|
|
|
thumb_func_start sub_80476E0
|
|
sub_80476E0: @ 80476E0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x38]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xB
|
|
bne _080476F8
|
|
movs r0, 0x3C
|
|
bl PlaySE
|
|
_080476F8:
|
|
ldrh r1, [r5, 0x2E]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, _08047734 @ =gSprites
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r4, r0, r2
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r0, [r0]
|
|
lsls r0, 26
|
|
cmp r0, 0
|
|
bge _0804773C
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAnim
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
movs r0, 0
|
|
strh r0, [r5, 0x38]
|
|
ldr r0, _08047738 @ =sub_8047754
|
|
str r0, [r5, 0x1C]
|
|
b _0804774C
|
|
.align 2, 0
|
|
_08047734: .4byte gSprites
|
|
_08047738: .4byte sub_8047754
|
|
_0804773C:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x60
|
|
strh r0, [r4, 0x30]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
negs r0, r0
|
|
asrs r0, 8
|
|
strh r0, [r4, 0x26]
|
|
_0804774C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80476E0
|
|
|
|
thumb_func_start sub_8047754
|
|
sub_8047754: @ 8047754
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08047768
|
|
ldr r0, _0804776C @ =SpriteCallbackDummy
|
|
str r0, [r2, 0x1C]
|
|
_08047768:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804776C: .4byte SpriteCallbackDummy
|
|
thumb_func_end sub_8047754
|
|
|
|
thumb_func_start obj_delete_and_free_associated_resources_
|
|
obj_delete_and_free_associated_resources_: @ 8047770
|
|
push {lr}
|
|
bl DestroySpriteAndFreeResources
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end obj_delete_and_free_associated_resources_
|
|
|
|
thumb_func_start sub_804777C
|
|
sub_804777C: @ 804777C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r0, _080477FC @ =gUnknown_03004340
|
|
adds r0, r5, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r6, _08047800 @ =gSprites
|
|
adds r4, r0, r6
|
|
movs r1, 0
|
|
movs r0, 0x5
|
|
strh r0, [r4, 0x2E]
|
|
strh r1, [r4, 0x30]
|
|
movs r0, 0x73
|
|
strh r0, [r4, 0x24]
|
|
strh r1, [r4, 0x26]
|
|
ldr r0, _08047804 @ =sub_8047830
|
|
str r0, [r4, 0x1C]
|
|
adds r0, r5, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080477CA
|
|
ldrh r0, [r4, 0x2E]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x30]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x26]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
_080477CA:
|
|
movs r0, 0x38
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r6, 0
|
|
adds r1, 0x1C
|
|
adds r1, r0, r1
|
|
adds r0, r6
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
adds r0, r5, 0
|
|
bl battle_get_per_side_status
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _080477F4
|
|
ldr r0, _08047808 @ =sub_804780C
|
|
str r0, [r4, 0x1C]
|
|
_080477F4:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080477FC: .4byte gUnknown_03004340
|
|
_08047800: .4byte gSprites
|
|
_08047804: .4byte sub_8047830
|
|
_08047808: .4byte sub_804780C
|
|
thumb_func_end sub_804777C
|
|
|
|
thumb_func_start sub_804780C
|
|
sub_804780C: @ 804780C
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
bne _08047826
|
|
movs r0, 0
|
|
strh r0, [r1, 0x30]
|
|
ldr r0, _0804782C @ =sub_8047830
|
|
str r0, [r1, 0x1C]
|
|
_08047826:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804782C: .4byte sub_8047830
|
|
thumb_func_end sub_804780C
|
|
|
|
thumb_func_start sub_8047830
|
|
sub_8047830: @ 8047830
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x24]
|
|
ldrh r1, [r2, 0x2E]
|
|
subs r0, r1
|
|
strh r0, [r2, 0x24]
|
|
ldrh r0, [r2, 0x26]
|
|
ldrh r1, [r2, 0x30]
|
|
subs r0, r1
|
|
strh r0, [r2, 0x26]
|
|
ldr r0, [r2, 0x24]
|
|
cmp r0, 0
|
|
bne _0804784E
|
|
ldr r0, _08047854 @ =SpriteCallbackDummy
|
|
str r0, [r2, 0x1C]
|
|
_0804784E:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08047854: .4byte SpriteCallbackDummy
|
|
thumb_func_end sub_8047830
|
|
|
|
thumb_func_start sub_8047858
|
|
sub_8047858: @ 8047858
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r5, _08047890 @ =oamc_804BEB4
|
|
adds r0, r5, 0
|
|
bl object_new_hidden_with_callback
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08047894 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r3, r1, r2
|
|
movs r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
ldr r0, _08047898 @ =gUnknown_03004340
|
|
adds r4, r0
|
|
ldrb r0, [r4]
|
|
strh r0, [r3, 0x30]
|
|
adds r2, 0x1C
|
|
adds r1, r2
|
|
str r5, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08047890: .4byte oamc_804BEB4
|
|
_08047894: .4byte gSprites
|
|
_08047898: .4byte gUnknown_03004340
|
|
thumb_func_end sub_8047858
|
|
|
|
thumb_func_start oamc_804BEB4
|
|
oamc_804BEB4: @ 804789C
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, _080478D8 @ =gSprites
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r0, r2
|
|
ldrh r0, [r3, 0x2E]
|
|
movs r2, 0
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r3, 0x2E]
|
|
negs r0, r0
|
|
strh r0, [r3, 0x2E]
|
|
ldrh r0, [r3, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x15
|
|
bne _080478D4
|
|
strh r2, [r1, 0x24]
|
|
strh r2, [r1, 0x26]
|
|
adds r0, r3, 0
|
|
bl DestroySprite
|
|
_080478D4:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080478D8: .4byte gSprites
|
|
thumb_func_end oamc_804BEB4
|
|
|
|
thumb_func_start sub_80478DC
|
|
sub_80478DC: @ 80478DC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _08047938 @ =gUnknown_0820A92C
|
|
lsls r6, r4, 3
|
|
adds r5, r6, r0
|
|
ldrh r0, [r5, 0x6]
|
|
bl GetSpriteTileStartByTag
|
|
lsls r0, 16
|
|
ldr r1, _0804793C @ =0xffff0000
|
|
cmp r0, r1
|
|
bne _08047904
|
|
adds r0, r5, 0
|
|
bl LoadCompressedObjectPic
|
|
ldr r0, _08047940 @ =gUnknown_0820A98C
|
|
adds r0, r6, r0
|
|
bl LoadCompressedObjectPalette
|
|
_08047904:
|
|
cmp r4, 0x6
|
|
beq _08047930
|
|
cmp r4, 0x6
|
|
blt _08047914
|
|
cmp r4, 0xB
|
|
bgt _08047914
|
|
cmp r4, 0xA
|
|
bge _08047930
|
|
_08047914:
|
|
ldr r1, _08047938 @ =gUnknown_0820A92C
|
|
lsls r0, r4, 3
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x6]
|
|
bl GetSpriteTileStartByTag
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
ldr r0, _08047944 @ =gUnknown_08D030D0
|
|
lsrs r1, 11
|
|
ldr r2, _08047948 @ =0x06010100
|
|
adds r1, r2
|
|
bl LZDecompressVram
|
|
_08047930:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08047938: .4byte gUnknown_0820A92C
|
|
_0804793C: .4byte 0xffff0000
|
|
_08047940: .4byte gUnknown_0820A98C
|
|
_08047944: .4byte gUnknown_08D030D0
|
|
_08047948: .4byte 0x06010100
|
|
thumb_func_end sub_80478DC
|
|
|
|
thumb_func_start sub_804794C
|
|
sub_804794C: @ 804794C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
ldr r0, _08047970 @ =gUnknown_0820A92C
|
|
lsrs r4, 21
|
|
adds r0, r4, r0
|
|
ldrh r0, [r0, 0x6]
|
|
bl FreeSpriteTilesByTag
|
|
ldr r0, _08047974 @ =gUnknown_0820A98C
|
|
adds r4, r0
|
|
ldrh r0, [r4, 0x4]
|
|
bl FreeSpritePaletteByTag
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08047970: .4byte gUnknown_0820A92C
|
|
_08047974: .4byte gUnknown_0820A98C
|
|
thumb_func_end sub_804794C
|
|
|
|
thumb_func_start sub_8047978
|
|
sub_8047978: @ 8047978
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl battle_side_get_owner
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080479A4
|
|
ldr r1, _0804799C @ =gUnknown_02024A6A
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080479A0 @ =gEnemyParty
|
|
b _080479B2
|
|
.align 2, 0
|
|
_0804799C: .4byte gUnknown_02024A6A
|
|
_080479A0: .4byte gEnemyParty
|
|
_080479A4:
|
|
ldr r1, _080479C4 @ =gUnknown_02024A6A
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080479C8 @ =gPlayerParty
|
|
_080479B2:
|
|
adds r0, r1
|
|
movs r1, 0x26
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080479C4: .4byte gUnknown_02024A6A
|
|
_080479C8: .4byte gPlayerParty
|
|
thumb_func_end sub_8047978
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|