pokeemerald/asm/battle_interface.s
2017-10-18 23:05:14 +02:00

1329 lines
19 KiB
ArmAsm
Executable File

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start UpdateLeftNoOfBallsTextOnHealthbox
UpdateLeftNoOfBallsTextOnHealthbox: @ 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 RemoveWindowOnHealthbox
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end UpdateLeftNoOfBallsTextOnHealthbox
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 UpdateSafariBallsTextOnHealthbox
_080749F6:
adds r0, r7, 0
subs r0, 0xA
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _08074A8E
adds r0, r6, 0
bl UpdateLeftNoOfBallsTextOnHealthbox
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 RemoveWindowOnHealthbox
RemoveWindowOnHealthbox: @ 807512C
push {lr}
lsls r0, 24
lsrs r0, 24
bl RemoveWindow
pop {r0}
bx r0
thumb_func_end RemoveWindowOnHealthbox
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.