Files
PokemonEmeraldSafariFrontier/asm/battle_interface.s
2017-10-18 21:42:00 +02:00

1869 lines
27 KiB
ArmAsm
Executable File

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_8074310
sub_8074310: @ 8074310
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r7, r1, 24
ldr r0, =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x80
lsls r0, 2
ands r0, r1
cmp r0, 0
bne _080743E6
movs r0, 0x8
ands r1, r0
cmp r1, 0
bne _080743E6
ldr r6, =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 GetBankSide
lsls r0, 24
cmp r0, 0
beq _080743E6
ldr r1, =gBattlePartyID
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gEnemyParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _080743E6
ldrh r0, [r5, 0x38]
lsls r0, 24
lsrs r4, r0, 24
cmp r7, 0
beq _080743C4
movs r0, 0x46
bl GetHealthboxElementGfxPtr
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, =0x06010000
adds r1, r2
ldr r2, =0x04000008
bl CpuSet
b _080743E6
.pool
_080743C4:
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, =0x06010000
adds r1, r0
ldr r2, =0x05000008
mov r0, sp
bl CpuSet
_080743E6:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8074310
thumb_func_start UpdateStatusIconInHealthbox
UpdateStatusIconInHealthbox: @ 80743F8
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, =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 GetBankSide
lsls r0, 24
cmp r0, 0
bne _08074468
ldr r1, =gBattlePartyID
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
movs r1, 0x37
bl GetMonData
adds r4, r0, 0
bl IsDoubleBattle
lsls r0, 24
movs r3, 0x12
mov r8, r3
cmp r0, 0
bne _08074484
movs r0, 0x1A
mov r8, r0
b _08074484
.pool
_08074468:
ldr r1, =gBattlePartyID
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gEnemyParty
adds r0, r1
movs r1, 0x37
bl GetMonData
adds r4, r0, 0
movs r1, 0x11
mov r8, r1
_08074484:
movs r0, 0x7
ands r0, r4
cmp r0, 0
beq _080744AC
movs r0, 0x1B
adds r1, r7, 0
bl sub_80746A8
lsls r0, 24
lsrs r0, 24
bl GetHealthboxElementGfxPtr
adds r6, r0, 0
movs r0, 0x2
b _080745B8
.pool
_080744AC:
movs r0, 0x88
ands r0, r4
cmp r0, 0
beq _080744CA
movs r0, 0x15
adds r1, r7, 0
bl sub_80746A8
lsls r0, 24
lsrs r0, 24
bl GetHealthboxElementGfxPtr
adds r6, r0, 0
movs r0, 0
b _080745B8
_080744CA:
movs r0, 0x10
ands r0, r4
cmp r0, 0
beq _080744E8
movs r0, 0x21
adds r1, r7, 0
bl sub_80746A8
lsls r0, 24
lsrs r0, 24
bl GetHealthboxElementGfxPtr
adds r6, r0, 0
movs r0, 0x4
b _080745B8
_080744E8:
movs r0, 0x20
ands r0, r4
cmp r0, 0
beq _08074506
movs r0, 0x1E
adds r1, r7, 0
bl sub_80746A8
lsls r0, 24
lsrs r0, 24
bl GetHealthboxElementGfxPtr
adds r6, r0, 0
movs r0, 0x3
b _080745B8
_08074506:
movs r0, 0x40
ands r0, r4
cmp r0, 0
beq _08074524
movs r0, 0x18
adds r1, r7, 0
bl sub_80746A8
lsls r0, 24
lsrs r0, 24
bl GetHealthboxElementGfxPtr
adds r6, r0, 0
movs r0, 0x1
b _080745B8
_08074524:
movs r0, 0x27
bl GetHealthboxElementGfxPtr
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, =gSprites
add r0, r9
lsls r0, 2
adds r5, r0, r1
_08074542:
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, =0x06010000
adds r1, r3
adds r0, r6, 0
ldr r2, =0x04000008
bl CpuSet
adds r4, 0x1
cmp r4, 0x2
ble _08074542
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
adds r0, r7, r0
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08074598
movs r0, 0x1
bl GetHealthboxElementGfxPtr
ldr r2, =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, =0x06010000
adds r1, r2
ldr r2, =0x04000010
bl CpuSet
_08074598:
mov r0, r9
movs r1, 0x1
bl sub_8074310
b _0807467A
.pool
_080745B8:
mov r1, r9
lsls r5, r1, 4
add r5, r9
lsls r5, 2
ldr r2, =gSprites
adds r5, r2
ldrb r4, [r5, 0x5]
lsrs r4, 4
lsls r4, 4
adds r4, 0xC
adds r4, r7
ldr r1, =gUnknown_0832C3EC
lsls r0, 1
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, =gPlttBufferUnfaded + 0x200
adds r0, r4, r0
ldr r1, =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, =0x06010000
mov r8, r2
add r1, r8
ldr r2, =0x04000018
adds r0, r6, 0
bl CpuSet
bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08074626
adds r0, r7, 0
bl GetBankSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08074672
_08074626:
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r7, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08074672
movs r0, 0
bl GetHealthboxElementGfxPtr
mov r3, r10
lsls r4, r3, 4
add r4, r10
lsls r4, 2
ldr r1, =gSprites
adds r4, r1
ldrh r1, [r4, 0x4]
lsls r1, 22
lsrs r1, 17
add r1, r8
ldr r5, =0x04000008
adds r2, r5, 0
bl CpuSet
movs r0, 0x41
bl GetHealthboxElementGfxPtr
ldrh r1, [r4, 0x4]
lsls r1, 22
lsrs r1, 17
adds r1, 0x20
add r1, r8
adds r2, r5, 0
bl CpuSet
_08074672:
mov r0, r9
movs r1, 0
bl sub_8074310
_0807467A:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end UpdateStatusIconInHealthbox
thumb_func_start sub_80746A8
sub_80746A8: @ 80746A8
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 _08074768
lsls r0, 2
ldr r1, =_080746C8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080746C8:
.4byte _080746FC
.4byte _08074768
.4byte _08074768
.4byte _08074712
.4byte _08074768
.4byte _08074768
.4byte _08074728
.4byte _08074768
.4byte _08074768
.4byte _0807473E
.4byte _08074768
.4byte _08074768
.4byte _08074754
_080746FC:
movs r2, 0x15
cmp r3, 0
beq _08074768
movs r2, 0x47
cmp r3, 0x1
beq _08074768
movs r2, 0x65
cmp r3, 0x2
bne _08074768
movs r2, 0x56
b _08074768
_08074712:
movs r2, 0x18
cmp r3, 0
beq _08074768
movs r2, 0x4A
cmp r3, 0x1
beq _08074768
movs r2, 0x68
cmp r3, 0x2
bne _08074768
movs r2, 0x59
b _08074768
_08074728:
movs r2, 0x1B
cmp r3, 0
beq _08074768
movs r2, 0x4D
cmp r3, 0x1
beq _08074768
movs r2, 0x6B
cmp r3, 0x2
bne _08074768
movs r2, 0x5C
b _08074768
_0807473E:
movs r2, 0x1E
cmp r3, 0
beq _08074768
movs r2, 0x50
cmp r3, 0x1
beq _08074768
movs r2, 0x6E
cmp r3, 0x2
bne _08074768
movs r2, 0x5F
b _08074768
_08074754:
movs r2, 0x21
cmp r3, 0
beq _08074768
movs r2, 0x53
cmp r3, 0x1
beq _08074768
movs r2, 0x71
cmp r3, 0x2
bne _08074768
movs r2, 0x62
_08074768:
adds r0, r2, 0
pop {r1}
bx r1
thumb_func_end sub_80746A8
thumb_func_start sub_8074770
sub_8074770: @ 8074770
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, =gText_SafariBalls
add r1, sp, 0x4
str r1, [sp]
movs r1, 0
movs r2, 0x3
movs r3, 0x2
bl AddTextPrinterAndCreateWindowOnHealthbox
adds r5, r0, 0
ldr r1, =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
ldrh r4, [r0, 0x4]
lsls r4, 22
lsrs r4, 17
ldr r1, =0x06010040
adds r0, r4, r1
adds r1, r5, 0
movs r2, 0x6
bl sub_8075198
ldr r0, =0x06010800
adds r4, r0
adds r5, 0xC0
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x2
bl sub_8075198
ldr r0, [sp, 0x4]
bl RemoveWindow_
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_8074770
thumb_func_start sub_80747D8
sub_80747D8: @ 80747D8
push {r4,r5,lr}
sub sp, 0x18
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r1, =gText_SafariBallLeft
add r0, sp, 0x4
bl StringCopy
ldr r1, =gNumSafariBalls
ldrb r1, [r1]
movs r2, 0
movs r3, 0x2
bl ConvertIntToDecimalStringN
movs r0, 0
add r1, sp, 0x4
movs r2, 0x2F
bl GetStringRightAlignXOffset
adds r1, r0, 0
add r0, sp, 0x14
str r0, [sp]
add r0, sp, 0x4
movs r2, 0x3
movs r3, 0x2
bl AddTextPrinterAndCreateWindowOnHealthbox
adds r5, r0, 0
ldr r1, =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
ldrh r4, [r0, 0x4]
lsls r4, 22
lsrs r4, 17
ldr r1, =0x060102c0
adds r0, r4, r1
adds r1, r5, 0
movs r2, 0x2
bl sub_80751E4
ldr r0, =0x06010a00
adds r4, r0
adds r5, 0x40
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x4
bl sub_80751E4
ldr r0, [sp, 0x14]
bl RemoveWindow_
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_80747D8
thumb_func_start UpdateHealthboxAttribute
UpdateHealthboxAttribute: @ 8074860
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r8, r1
lsls r0, 24
lsrs r6, r0, 24
lsls r2, 24
lsrs r7, r2, 24
ldr r1, =gSprites
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
mov r9, r0
cmp r7, 0
bne _0807489C
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0807489C
mov r0, r9
bl GetBankSide
_0807489C:
ldr r1, =gSprites
lsls r0, r6, 4
adds r0, r6
lsls r0, 2
adds r0, r1
ldrh r0, [r0, 0x3A]
lsls r0, 24
lsrs r0, 24
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _080748B8
b _08074A18
_080748B8:
cmp r7, 0x3
beq _080748C0
cmp r7, 0
bne _080748D4
_080748C0:
mov r0, r8
movs r1, 0x38
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
bl UpdateLvlInHealthbox
_080748D4:
cmp r7, 0x1
bhi _080748EE
mov r0, r8
movs r1, 0x39
bl GetMonData
adds r1, r0, 0
lsls r1, 16
asrs r1, 16
adds r0, r6, 0
movs r2, 0
bl UpdateHpTextInHealthbox
_080748EE:
cmp r7, 0x2
beq _080748F6
cmp r7, 0
bne _0807490C
_080748F6:
mov r0, r8
movs r1, 0x3A
bl GetMonData
adds r1, r0, 0
lsls r1, 16
asrs r1, 16
adds r0, r6, 0
movs r2, 0x1
bl UpdateHpTextInHealthbox
_0807490C:
cmp r7, 0x5
beq _08074914
cmp r7, 0
bne _08074948
_08074914:
movs r0, 0
bl load_gfxc_health_bar
mov r0, r8
movs r1, 0x3A
bl GetMonData
adds r4, r0, 0
mov r0, r8
movs r1, 0x39
bl GetMonData
adds r3, r0, 0
movs r0, 0
str r0, [sp]
mov r0, r9
adds r1, r6, 0
adds r2, r4, 0
bl SetBattleBarStruct
mov r0, r9
adds r1, r6, 0
movs r2, 0
movs r3, 0
bl sub_8074AA0
_08074948:
bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
mov r10, r0
cmp r0, 0
bne _080749CE
cmp r7, 0x6
beq _0807495E
cmp r7, 0
bne _080749CE
_0807495E:
movs r0, 0x3
bl load_gfxc_health_bar
mov r0, r8
movs r1, 0xB
bl GetMonData
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
mov r0, r8
movs r1, 0x38
bl GetMonData
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
mov r0, r8
movs r1, 0x19
bl GetMonData
adds r3, r0, 0
ldr r0, =gExperienceTables
mov r12, r0
lsls r1, r4, 2
ldr r2, =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
add r1, r12
ldr r1, [r1]
subs r3, r1
adds r4, 0x1
lsls r4, 2
adds r4, r0
add r4, r12
ldr r2, [r4]
subs r2, r1
mov r0, r10
str r0, [sp]
mov r0, r9
adds r1, r6, 0
bl SetBattleBarStruct
mov r0, r9
adds r1, r6, 0
movs r2, 0x1
movs r3, 0
bl sub_8074AA0
_080749CE:
cmp r7, 0x4
beq _080749D6
cmp r7, 0
bne _080749DE
_080749D6:
adds r0, r6, 0
mov r1, r8
bl UpdateNickInHealthbox
_080749DE:
cmp r7, 0x9
beq _080749E6
cmp r7, 0
bne _080749EC
_080749E6:
adds r0, r6, 0
bl UpdateStatusIconInHealthbox
_080749EC:
cmp r7, 0xA
bne _080749F6
adds r0, r6, 0
bl sub_8074770
_080749F6:
adds r0, r7, 0
subs r0, 0xA
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _08074A8E
adds r0, r6, 0
bl sub_80747D8
b _08074A8E
.pool
_08074A18:
cmp r7, 0x3
beq _08074A20
cmp r7, 0
bne _08074A34
_08074A20:
mov r0, r8
movs r1, 0x38
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
bl UpdateLvlInHealthbox
_08074A34:
cmp r7, 0x5
beq _08074A3C
cmp r7, 0
bne _08074A70
_08074A3C:
movs r0, 0
bl load_gfxc_health_bar
mov r0, r8
movs r1, 0x3A
bl GetMonData
adds r4, r0, 0
mov r0, r8
movs r1, 0x39
bl GetMonData
adds r3, r0, 0
movs r0, 0
str r0, [sp]
mov r0, r9
adds r1, r6, 0
adds r2, r4, 0
bl SetBattleBarStruct
mov r0, r9
adds r1, r6, 0
movs r2, 0
movs r3, 0
bl sub_8074AA0
_08074A70:
cmp r7, 0x4
beq _08074A78
cmp r7, 0
bne _08074A80
_08074A78:
adds r0, r6, 0
mov r1, r8
bl UpdateNickInHealthbox
_08074A80:
cmp r7, 0x9
beq _08074A88
cmp r7, 0
bne _08074A8E
_08074A88:
adds r0, r6, 0
bl UpdateStatusIconInHealthbox
_08074A8E:
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 UpdateHealthboxAttribute
thumb_func_start sub_8074AA0
sub_8074AA0: @ 8074AA0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r2, 24
lsrs r2, 24
mov r9, r2
cmp r2, 0
bne _08074AEC
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0xC]
mov r1, r8
lsls r5, r1, 2
adds r3, r5, r1
lsls r3, 2
adds r3, r0
ldr r0, [r3, 0x4]
ldr r1, [r3, 0x8]
ldr r2, [r3, 0xC]
adds r3, 0x10
movs r4, 0x6
str r4, [sp]
movs r4, 0x1
str r4, [sp, 0x4]
bl sub_8074DB8
adds r4, r0, 0
adds r7, r5, 0
b _08074B48
.pool
_08074AEC:
ldr r2, =gBattleSpritesDataPtr
mov r10, r2
ldr r0, [r2]
ldr r2, [r0, 0xC]
mov r0, r8
lsls r4, r0, 2
adds r0, r4, r0
lsls r6, r0, 2
adds r2, r6, r2
ldr r0, [r2, 0x8]
ldr r1, [r2, 0xC]
ldr r2, [r2, 0x4]
movs r3, 0x8
bl sub_8074FE8
lsls r0, 24
lsrs r5, r0, 24
adds r7, r4, 0
cmp r5, 0
bne _08074B16
movs r5, 0x1
_08074B16:
mov r1, r10
ldr r0, [r1]
ldr r0, [r0, 0xC]
adds r4, r6, r0
ldr r6, [r4, 0xC]
adds r0, r6, 0
adds r1, r5, 0
bl __divsi3
cmp r0, 0
bge _08074B2E
negs r0, r0
_08074B2E:
lsls r0, 16
lsrs r5, r0, 16
ldr r0, [r4, 0x4]
ldr r1, [r4, 0x8]
adds r3, r4, 0
adds r3, 0x10
movs r2, 0x8
str r2, [sp]
str r5, [sp, 0x4]
adds r2, r6, 0
bl sub_8074DB8
adds r4, r0, 0
_08074B48:
mov r2, r9
cmp r2, 0x1
beq _08074B64
cmp r2, 0
bne _08074B6C
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
adds r0, r7, r0
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08074B6C
_08074B64:
mov r0, r8
mov r1, r9
bl sub_8074B9C
_08074B6C:
movs r0, 0x1
negs r0, r0
cmp r4, r0
bne _08074B86
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0xC]
mov r2, r8
adds r0, r7, r2
lsls r0, 2
adds r0, r1
movs r1, 0
str r1, [r0, 0x10]
_08074B86:
adds r0, r4, 0
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end sub_8074AA0
thumb_func_start sub_8074B9C
sub_8074B9C: @ 8074B9C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x10
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r1, 24
cmp r1, 0
beq _08074BB8
cmp r1, 0x1
beq _08074CA0
b _08074D9E
_08074BB8:
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0xC]
lsls r5, r6, 2
adds r3, r5, r6
lsls r3, 2
adds r3, r0
ldr r0, [r3, 0x4]
ldr r1, [r3, 0x8]
ldr r2, [r3, 0xC]
adds r3, 0x10
add r4, sp, 0x8
str r4, [sp]
movs r4, 0x6
str r4, [sp, 0x4]
bl sub_8074E8C
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
mov r9, r1
adds r7, r5, 0
cmp r0, 0x18
bhi _08074BF4
movs r2, 0x38
mov r9, r2
cmp r0, 0x9
bls _08074BF4
movs r4, 0x2F
mov r9, r4
_08074BF4:
movs r5, 0
ldr r0, =gSprites
mov r8, r0
_08074BFA:
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0xC]
adds r0, r7, r6
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r8
ldrh r0, [r0, 0x38]
lsls r0, 24
lsrs r4, r0, 24
cmp r5, 0x1
bhi _08074C5C
mov r0, r9
bl GetHealthboxElementGfxPtr
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
add r1, r8
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 22
adds r2, r5, 0x2
adds r1, r2
lsls r1, 5
ldr r2, =0x06010000
adds r1, r2
ldr r2, =0x04000008
bl CpuSet
b _08074C8A
.pool
_08074C5C:
mov r0, r9
bl GetHealthboxElementGfxPtr
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
add r1, r8
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 22
adds r1, r5, r1
lsls r1, 5
ldr r4, =0x06010040
adds r1, r4
ldr r2, =0x04000008
bl CpuSet
_08074C8A:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x5
bls _08074BFA
b _08074D9E
.pool
_08074CA0:
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0xC]
lsls r5, r6, 2
adds r3, r5, r6
lsls r3, 2
adds r3, r0
ldr r0, [r3, 0x4]
ldr r1, [r3, 0x8]
ldr r2, [r3, 0xC]
adds r3, 0x10
add r4, sp, 0x8
str r4, [sp]
movs r4, 0x8
str r4, [sp, 0x4]
bl sub_8074E8C
ldr r1, =gBattlePartyID
lsls r0, r6, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
movs r1, 0x38
bl GetMonData
lsls r0, 24
lsrs r0, 24
adds r7, r5, 0
cmp r0, 0x64
bne _08074CF8
movs r5, 0
movs r1, 0
_08074CE6:
mov r0, sp
adds r0, r5
adds r0, 0x8
strb r1, [r0]
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x7
bls _08074CE6
_08074CF8:
movs r5, 0
ldr r0, =gSprites
mov r8, r0
adds r0, r7, r6
lsls r4, r0, 2
_08074D02:
cmp r5, 0x3
bhi _08074D5C
movs r0, 0xC
bl GetHealthboxElementGfxPtr
mov r1, sp
adds r1, r5
adds r1, 0x8
ldrb r1, [r1]
lsls r1, 5
adds r0, r1
ldr r1, =gBattleSpritesDataPtr
ldr r1, [r1]
ldr r1, [r1, 0xC]
adds r1, r4, r1
ldrb r2, [r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
add r1, r8
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, =0x06010000
adds r1, r2
ldr r2, =0x04000008
bl CpuSet
b _08074D94
.pool
_08074D5C:
movs r0, 0xC
bl GetHealthboxElementGfxPtr
mov r1, sp
adds r1, r5
adds r1, 0x8
ldrb r1, [r1]
lsls r1, 5
adds r0, r1
ldr r1, =gBattleSpritesDataPtr
ldr r1, [r1]
ldr r1, [r1, 0xC]
adds r1, r4, r1
ldrb r2, [r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
add r1, r8
ldrh r1, [r1, 0x4]
lsls r1, 22
lsrs r1, 22
adds r1, r5, r1
lsls r1, 5
ldr r2, =0x06010b80
adds r1, r2
ldr r2, =0x04000008
bl CpuSet
_08074D94:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x7
bls _08074D02
_08074D9E:
add sp, 0x10
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8074B9C
thumb_func_start sub_8074DB8
sub_8074DB8: @ 8074DB8
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, =0xffff8000
cmp r1, r0
bne _08074DEA
cmp r7, r2
bge _08074DE8
lsls r0, r4, 8
str r0, [r5]
b _08074DEA
.pool
_08074DE8:
str r4, [r5]
_08074DEA:
mov r0, r8
subs r4, r0
cmp r4, 0
bge _08074DF6
movs r4, 0
b _08074DFC
_08074DF6:
cmp r4, r7
ble _08074DFC
adds r4, r7, 0
_08074DFC:
cmp r7, r2
bge _08074E18
ldr r0, [r5]
asrs r1, r0, 8
adds r6, r0, 0
cmp r4, r1
bne _08074E24
movs r0, 0xFF
ands r0, r6
cmp r0, 0
bne _08074E24
movs r0, 0x1
negs r0, r0
b _08074E80
_08074E18:
ldr r6, [r5]
cmp r4, r6
bne _08074E24
movs r0, 0x1
negs r0, r0
b _08074E80
_08074E24:
cmp r7, r2
bge _08074E5E
lsls r0, r7, 8
adds r1, r2, 0
bl __divsi3
mov r1, r8
cmp r1, 0
bge _08074E42
adds r0, r6, r0
str r0, [r5]
asrs r2, r0, 8
cmp r2, r4
blt _08074E7E
b _08074E56
_08074E42:
subs r0, r6, r0
str r0, [r5]
asrs r2, r0, 8
movs r1, 0xFF
ands r0, r1
cmp r0, 0
ble _08074E52
adds r2, 0x1
_08074E52:
cmp r2, r4
bgt _08074E7E
_08074E56:
lsls r0, r4, 8
str r0, [r5]
adds r2, r4, 0
b _08074E7E
_08074E5E:
mov r0, r8
cmp r0, 0
bge _08074E70
ldr r0, [r5]
adds r0, r3
str r0, [r5]
cmp r0, r4
ble _08074E7C
b _08074E7A
_08074E70:
ldr r0, [r5]
subs r0, r3
str r0, [r5]
cmp r0, r4
bge _08074E7C
_08074E7A:
str r4, [r5]
_08074E7C:
ldr r2, [r5]
_08074E7E:
adds r0, r2, 0
_08074E80:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8074DB8
thumb_func_start sub_8074E8C
sub_8074E8C: @ 8074E8C
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 _08074EA4
movs r5, 0
b _08074EAA
_08074EA4:
cmp r5, r4
ble _08074EAA
adds r5, r4, 0
_08074EAA:
lsls r0, r6, 27
lsrs r3, r0, 24
movs r1, 0
cmp r1, r6
bcs _08074EC4
movs r2, 0
_08074EB6:
adds r0, r7, r1
strb r2, [r0]
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, r6
bcc _08074EB6
_08074EC4:
cmp r4, r3
bge _08074ED8
mov r1, r12
ldr r0, [r1]
muls r0, r3
adds r1, r4, 0
bl __divsi3
asrs r0, 8
b _08074EE4
_08074ED8:
mov r1, r12
ldr r0, [r1]
muls r0, r3
adds r1, r4, 0
bl __divsi3
_08074EE4:
lsls r0, 24
lsrs r2, r0, 24
adds r3, r2, 0
cmp r3, 0
bne _08074EFA
cmp r5, 0
ble _08074EFA
movs r0, 0x1
strb r0, [r7]
movs r3, 0x1
b _08074F1E
_08074EFA:
movs r1, 0
movs r4, 0x8
_08074EFE:
cmp r1, r6
bcs _08074F1E
cmp r2, 0x7
bls _08074F1A
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 _08074EFE
_08074F1A:
adds r0, r7, r1
strb r2, [r0]
_08074F1E:
adds r0, r3, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8074E8C
thumb_func_start sub_8074F28
sub_8074F28: @ 8074F28
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_8074DB8
lsls r0, 16
lsrs r7, r0, 16
adds r0, r5, 0
adds r1, r6, 0
adds r2, r4, 0
bl sub_8074F88
ldr r0, [r5]
cmp r0, 0x2F
bgt _08074F68
ldr r0, [r6]
lsls r0, 8
lsrs r1, r0, 16
b _08074F6A
_08074F68:
ldrh r1, [r6]
_08074F6A:
movs r2, 0
ldrsh r0, [r5, r2]
lsls r1, 16
asrs r1, 16
mov r2, r8
bl sub_8072304
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_8074F28
thumb_func_start sub_8074F88
sub_8074F88: @ 8074F88
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_8074E8C
movs r3, 0
add r7, sp, 0x10
mov r12, r7
ldrb r0, [r5, 0xC]
lsls r6, r0, 27
ldr r4, [r5, 0x10]
_08074FB4:
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 _08074FB4
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_8074F88
thumb_func_start sub_8074FE8
sub_8074FE8: @ 8074FE8
push {r4-r7,lr}
adds r6, r2, 0
lsls r3, 27
lsrs r7, r3, 24
subs r5, r0, r1
cmp r5, 0
bge _08074FFA
movs r5, 0
b _08075000
_08074FFA:
cmp r5, r6
ble _08075000
adds r5, r6, 0
_08075000:
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 _08075028
negs r0, r0
_08075028:
lsls r0, 24
lsrs r0, 24
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8074FE8
thumb_func_start GetScaledHPFraction
GetScaledHPFraction: @ 8075034
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 _08075058
cmp r4, 0
ble _08075058
movs r0, 0x1
_08075058:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetScaledHPFraction
thumb_func_start sub_8075060
sub_8075060: @ 8075060
push {lr}
lsls r0, 16
asrs r0, 16
lsls r1, 16
asrs r1, 16
cmp r0, r1
bne _08075072
movs r0, 0x4
b _0807508E
_08075072:
movs r2, 0x30
bl GetScaledHPFraction
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x3
cmp r1, 0x18
bhi _0807508E
movs r0, 0x2
cmp r1, 0x9
bhi _0807508E
negs r0, r1
orrs r0, r1
lsrs r0, 31
_0807508E:
pop {r1}
bx r1
thumb_func_end sub_8075060
thumb_func_start AddTextPrinterAndCreateWindowOnHealthbox
AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
mov r10, r0
mov r8, r1
mov r9, r2
adds r5, r3, 0
ldr r7, [sp, 0x40]
ldr r0, =gUnknown_0832C3F8
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [sp, 0x18]
str r1, [sp, 0x1C]
add r0, sp, 0x18
bl AddWindow
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
lsls r6, r4, 24
lsrs r6, 24
lsls r1, r5, 4
orrs r1, r5
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
bl FillWindowPixelBuffer
add r0, sp, 0x14
movs r2, 0
strb r5, [r0]
adds r1, r0, 0
movs r0, 0x1
strb r0, [r1, 0x1]
movs r0, 0x3
strb r0, [r1, 0x2]
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
mov r0, r9
lsls r0, 24
lsrs r0, 24
mov r9, r0
str r2, [sp]
str r2, [sp, 0x4]
str r1, [sp, 0x8]
movs r0, 0x1
negs r0, r0
str r0, [sp, 0xC]
mov r0, r10
str r0, [sp, 0x10]
adds r0, r6, 0
movs r1, 0
mov r2, r8
mov r3, r9
bl AddTextPrinterParametrized2
str r4, [r7]
adds r0, r6, 0
movs r1, 0x7
bl GetWindowAttribute
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox
thumb_func_start RemoveWindow_
RemoveWindow_: @ 807512C
push {lr}
lsls r0, 24
lsrs r0, 24
bl RemoveWindow
pop {r0}
bx r0
thumb_func_end RemoveWindow_
thumb_func_start sub_807513C
sub_807513C: @ 807513C
push {lr}
sub sp, 0x4
adds r3, r0, 0
lsls r0, r1, 4
adds r0, r1
lsls r1, r0, 8
adds r0, r1
lsls r1, r0, 16
adds r0, r1
str r0, [sp]
lsls r2, 3
ldr r0, =0x001fffff
ands r2, r0
movs r0, 0xA0
lsls r0, 19
orrs r2, r0
mov r0, sp
adds r1, r3, 0
bl CpuSet
add sp, 0x4
pop {r0}
bx r0
.pool
thumb_func_end sub_807513C
thumb_func_start sub_8075170
sub_8075170: @ 8075170
push {lr}
adds r3, r0, 0
adds r0, r1, 0
movs r1, 0x80
lsls r1, 1
adds r0, r1
lsls r2, 3
ldr r1, =0x001fffff
ands r2, r1
movs r1, 0x80
lsls r1, 19
orrs r2, r1
adds r1, r3, 0
bl CpuSet
pop {r0}
bx r0
.pool
thumb_func_end sub_8075170
thumb_func_start sub_8075198
sub_8075198: @ 8075198
push {r4-r6,lr}
adds r6, r0, 0
adds r5, r1, 0
adds r4, r2, 0
movs r1, 0x80
lsls r1, 1
adds r0, r5, r1
adds r1, r6, r1
lsls r2, r4, 3
ldr r3, =0x001fffff
ands r2, r3
movs r3, 0x80
lsls r3, 19
orrs r2, r3
bl CpuSet
cmp r4, 0
ble _080751D4
_080751BC:
adds r0, r5, 0
adds r0, 0x14
adds r1, r6, 0
adds r1, 0x14
ldr r2, =0x04000003
bl CpuSet
adds r6, 0x20
adds r5, 0x20
subs r4, 0x1
cmp r4, 0
bne _080751BC
_080751D4:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_8075198
thumb_func_start sub_80751E4
sub_80751E4: @ 80751E4
push {r4-r6,lr}
adds r6, r0, 0
adds r5, r1, 0
lsls r4, r2, 3
ldr r0, =0x001fffff
ands r4, r0
movs r0, 0x80
lsls r0, 19
orrs r4, r0
adds r0, r5, 0
adds r1, r6, 0
adds r2, r4, 0
bl CpuSet
movs r0, 0x80
lsls r0, 1
adds r5, r0
adds r6, r0
adds r0, r5, 0
adds r1, r6, 0
adds r2, r4, 0
bl CpuSet
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_80751E4
.align 2, 0 @ Don't pad with nop.