summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-10-18 00:00:46 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-10-18 00:00:46 +0200
commit0ffc5652fd746816a763e4e0ec83c08f2f53222c (patch)
treece3c5a8377ef27bed9e021058280b931371912b9
parent4b45282dd37266cc7d263a6fd4a5223f8e92b5be (diff)
hp printing in healthboxes done I hope
-rw-r--r--asm/battle_anim.s4
-rw-r--r--asm/battle_anim_8170478.s6
-rw-r--r--asm/battle_controller_linkopponent.s2
-rw-r--r--asm/battle_controller_linkpartner.s2
-rw-r--r--asm/battle_controller_opponent.s2
-rw-r--r--asm/battle_controller_player.s4
-rw-r--r--asm/battle_controller_player_partner.s2
-rw-r--r--asm/battle_controller_recorded_opponent.s2
-rw-r--r--asm/battle_controller_recorded_player.s4
-rw-r--r--asm/battle_controller_wally.s4
-rwxr-xr-xasm/battle_interface.s910
-rw-r--r--include/battle.h2
-rw-r--r--src/battle_interface.c309
13 files changed, 346 insertions, 907 deletions
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 5ce9c4cf9..effd6024e 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -129,7 +129,7 @@ move_something: @ 80A3A48
bne _080A3AE8
bl sub_80A8278
movs r0, 0
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
movs r4, 0
mov r0, r8
lsls r0, 2
@@ -852,7 +852,7 @@ _080A406E:
bne _080A409C
bl sub_80A8278
movs r0, 0x1
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
_080A409C:
ldr r0, =gAnimScriptActive
mov r1, r8
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
index dd992a8cd..9c59120e9 100644
--- a/asm/battle_anim_8170478.s
+++ b/asm/battle_anim_8170478.s
@@ -2379,7 +2379,7 @@ _0817185A:
movs r1, 0
strb r1, [r0]
movs r0, 0x1
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
bl m4aMPlayAllStop
ldr r0, =0x00000213
bl PlaySE
@@ -2879,7 +2879,7 @@ _08171C24:
ldr r0, =gDoingBattleAnim
strb r6, [r0]
movs r0, 0x1
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
_08171C8A:
pop {r4-r7}
pop {r0}
@@ -2974,7 +2974,7 @@ _08171D3E:
movs r0, 0
strb r0, [r1]
movs r0, 0x1
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
_08171D52:
pop {r4}
pop {r0}
diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s
index afa388d3b..cda07f31f 100644
--- a/asm/battle_controller_linkopponent.s
+++ b/asm/battle_controller_linkopponent.s
@@ -985,7 +985,7 @@ sub_8064BC0: @ 8064BC0
adds r0, r5
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08064C0C
.pool
_08064C08:
diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s
index 9c0e44d43..071f66787 100644
--- a/asm/battle_controller_linkpartner.s
+++ b/asm/battle_controller_linkpartner.s
@@ -509,7 +509,7 @@ bx_t4_healthbar_update: @ 814B2D0
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _0814B332
.pool
_0814B318:
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 5e5a790dd..82f705e01 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -1079,7 +1079,7 @@ sub_805FA70: @ 805FA70
adds r0, r5
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _0805FABC
.pool
_0805FAB8:
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index 80796fa58..653746f54 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -3278,7 +3278,7 @@ bx_t1_healthbar_update: @ 8059130
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08059192
.pool
_08059178:
@@ -9023,7 +9023,7 @@ _0805C4B4:
ldrb r0, [r0]
movs r1, 0
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_0805C4F2:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s
index 7c7b4939c..4231b0167 100644
--- a/asm/battle_controller_player_partner.s
+++ b/asm/battle_controller_player_partner.s
@@ -510,7 +510,7 @@ bx_t3_healthbar_update: @ 81BB214
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _081BB276
.pool
_081BB25C:
diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s
index 701c1d11c..8c0f52ffa 100644
--- a/asm/battle_controller_recorded_opponent.s
+++ b/asm/battle_controller_recorded_opponent.s
@@ -966,7 +966,7 @@ sub_8186D04: @ 8186D04
adds r0, r5
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08186D50
.pool
_08186D4C:
diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s
index 0bc8c2392..2b71e13ba 100644
--- a/asm/battle_controller_recorded_player.s
+++ b/asm/battle_controller_recorded_player.s
@@ -885,7 +885,7 @@ sub_818A0A4: @ 818A0A4
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _0818A106
.pool
_0818A0EC:
@@ -5083,7 +5083,7 @@ _0818C678:
ldrb r0, [r0]
movs r1, 0
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_0818C6B2:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s
index 8bf630188..ddceb87e6 100644
--- a/asm/battle_controller_wally.s
+++ b/asm/battle_controller_wally.s
@@ -676,7 +676,7 @@ sub_8168934: @ 8168934
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08168996
.pool
_0816897C:
@@ -3912,7 +3912,7 @@ _0816A664:
ldrb r0, [r0]
movs r1, 0
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_0816A69E:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
index d1762c93a..e0a766a5d 100755
--- a/asm/battle_interface.s
+++ b/asm/battle_interface.s
@@ -5,879 +5,7 @@
.text
- thumb_func_start SetHealthboxSpriteInvisible
-SetHealthboxSpriteInvisible: @ 8072984
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =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
- .pool
- thumb_func_end SetHealthboxSpriteInvisible
-
- thumb_func_start SetHealthboxSpriteVisible
-SetHealthboxSpriteVisible: @ 80729D0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =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
- .pool
- thumb_func_end SetHealthboxSpriteVisible
-
- thumb_func_start sub_8072A24
-sub_8072A24: @ 8072A24
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =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
- .pool
- thumb_func_end sub_8072A24
-
- thumb_func_start sub_8072A44
-sub_8072A44: @ 8072A44
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =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
- .pool
- thumb_func_end sub_8072A44
-
- thumb_func_start nullsub_30
-nullsub_30: @ 8072A84
- bx lr
- thumb_func_end nullsub_30
-
- thumb_func_start sub_8072A88
-sub_8072A88: @ 8072A88
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- ldr r1, =gNoOfAllBanks
- mov r8, r1
- ldrb r2, [r1]
- cmp r6, r2
- bge _08072B00
- ldr r1, =gSprites
- mov r12, r1
- movs r1, 0x3
- ands r0, r1
- lsls r5, r0, 2
- movs r7, 0xD
- negs r7, r7
- ldr r2, =gHealthBoxesIds
- mov r9, r2
-_08072AB2:
- 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 _08072AB2
-_08072B00:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072A88
-
- thumb_func_start SetBankHealthboxSpritePos
-SetBankHealthboxSpritePos: @ 8072B18
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- movs r4, 0
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08072B44
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08072B3E
- movs r5, 0x2C
- movs r4, 0x1E
- b _08072B7C
-_08072B3E:
- movs r5, 0x9E
- movs r4, 0x58
- b _08072B7C
-_08072B44:
- adds r0, r6, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08072B72
- cmp r0, 0x1
- bgt _08072B5C
- cmp r0, 0
- beq _08072B66
- b _08072B7C
-_08072B5C:
- cmp r0, 0x2
- beq _08072B6C
- cmp r0, 0x3
- beq _08072B78
- b _08072B7C
-_08072B66:
- movs r5, 0x9F
- movs r4, 0x4C
- b _08072B7C
-_08072B6C:
- movs r5, 0xAB
- movs r4, 0x65
- b _08072B7C
-_08072B72:
- movs r5, 0x2C
- movs r4, 0x13
- b _08072B7C
-_08072B78:
- movs r5, 0x20
- movs r4, 0x2C
-_08072B7C:
- ldr r0, =gHealthBoxesIds
- adds r0, r6, r0
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8072A24
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetBankHealthboxSpritePos
- thumb_func_start healthbar_draw_level
-healthbar_draw_level: @ 8072B94
- push {r4,r5,lr}
- sub sp, 0x18
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- add r2, sp, 0x4
- movs r0, 0xF9
- strb r0, [r2]
- movs r0, 0x5
- strb r0, [r2, 0x1]
- mov r0, sp
- adds r0, 0x6
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r1, r0, 0
- subs r1, 0x2
- add r0, sp, 0x4
- subs r1, r0
- movs r0, 0x3
- subs r0, r1
- lsls r1, r0, 2
- adds r1, r0
- add r0, sp, 0x14
- str r0, [sp]
- add r0, sp, 0x4
- movs r2, 0x3
- movs r3, 0x2
- bl write_to_rbox
- adds r5, r0, 0
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r4, r0, 17
- ldrh r0, [r1, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072C18
- bl IsDoubleBattle
- lsls r0, 24
- ldr r2, =0x06010420
- adds r1, r4, r2
- cmp r0, 0
- bne _08072C1C
- ldr r0, =0x06010820
- adds r1, r4, r0
- b _08072C1C
- .pool
-_08072C18:
- ldr r2, =0x06010400
- adds r1, r4, r2
-_08072C1C:
- adds r0, r1, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl sub_8075198
- ldr r0, [sp, 0x14]
- bl sub_807512C
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end healthbar_draw_level
-
- thumb_func_start heathbar_draw_hp
-heathbar_draw_hp: @ 8072C38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, =gSprites
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072D10
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08072D10
- ldrh r0, [r4, 0x4]
- lsls r0, 22
- lsrs r5, r0, 17
- mov r0, r8
- cmp r0, 0
- beq _08072CB8
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r0, sp, 0x24
- str r0, [sp]
- add r0, sp, 0x4
- movs r1, 0
- movs r2, 0x5
- movs r3, 0x2
- bl write_to_rbox
- adds r4, r0, 0
- ldr r1, =0x06010b40
- adds r0, r5, r1
- adds r1, r4, 0
- b _08072CF8
- .pool
-_08072CB8:
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r1, sp, 0x4
- movs r0, 0xBA
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- add r0, sp, 0x24
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0x4
- movs r2, 0x5
- movs r3, 0x2
- bl write_to_rbox
- adds r4, r0, 0
- ldr r1, =0x060103e0
- adds r0, r5, r1
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_8075170
- ldr r2, =0x06010b00
- adds r0, r5, r2
- adds r1, r4, 0
- adds r1, 0x20
-_08072CF8:
- movs r2, 0x2
- bl sub_8075170
- ldr r0, [sp, 0x24]
- bl sub_807512C
- b _08072DEA
- .pool
-_08072D10:
- ldr r1, =gUnknown_0832C3C4
- add r0, sp, 0x4
- movs r2, 0x14
- bl memcpy
- ldr r1, =gSprites
- lsls r4, r7, 4
- adds r0, r4, r7
- lsls r0, 2
- adds r6, r0, r1
- ldrh r0, [r6, 0x3A]
- lsls r0, 24
- lsrs r5, r0, 24
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- mov r10, r4
- cmp r0, 0x1
- beq _08072D46
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08072D60
-_08072D46:
- mov r0, r9
- lsls r1, r0, 16
- asrs r1, 16
- adds r0, r7, 0
- mov r2, r8
- bl sub_8072E0C
- b _08072DEA
- .pool
-_08072D60:
- ldrh r0, [r6, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072D7C
- movs r6, 0x59
- mov r1, r8
- cmp r1, 0
- bne _08072D86
- movs r6, 0x1D
- b _08072D86
-_08072D7C:
- movs r6, 0x30
- mov r2, r8
- cmp r2, 0
- bne _08072D86
- movs r6, 0x14
-_08072D86:
- mov r0, sp
- adds r0, 0xA
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x9
- add r2, sp, 0x4
- bl RenderTextFont9
- movs r4, 0
- ldr r1, =gSprites
- mov r2, r10
- adds r0, r2, r7
- lsls r0, 2
- adds r5, r0, r1
-_08072DB8:
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- lsls r1, r4, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r6
- adds r1, r4
- lsls r1, 5
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08072DB8
-_08072DEA:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end heathbar_draw_hp
-
- thumb_func_start sub_8072E0C
-sub_8072E0C: @ 8072E0C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r4, r1, 16
- mov r10, r4
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r5, =gSprites
- lsls r0, 4
- add r0, r9
- lsls r0, 2
- adds r7, r0, r5
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072F28
- ldr r0, =gBattleSpritesDataPtr
- ldr r1, [r0]
- movs r2, 0x3A
- ldrsh r0, [r7, r2]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08072E5E
- b _080730B8
-_08072E5E:
- movs r3, 0x38
- ldrsh r1, [r7, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r0, [r0, 0x4]
- lsls r0, 22
- lsrs r5, r0, 17
- ldr r0, =0x06010000
- adds r6, r5, r0
- mov r0, r8
- cmp r0, 0
- beq _08072EDC
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r0, sp, 0x28
- str r0, [sp]
- add r0, sp, 0x4
- movs r1, 0
- movs r2, 0x5
- movs r3, 0
- bl write_to_rbox
- adds r4, r0, 0
- ldr r1, =0x060100c0
- adds r0, r5, r1
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_8075170
- ldr r0, [sp, 0x28]
- bl sub_807512C
- movs r0, 0x74
- bl GetHealthboxElementGfxPtr
- ldrh r1, [r7, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, =0x06010680
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _080730B8
- .pool
-_08072EDC:
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r1, sp, 0x4
- movs r0, 0xBA
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- add r0, sp, 0x28
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0x4
- movs r2, 0x5
- movs r3, 0
- bl write_to_rbox
- adds r4, r0, 0
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0x3
- bl sub_807513C
- ldr r3, =0x06010060
- adds r0, r5, r3
- adds r1, r4, 0
- movs r2, 0x3
- bl sub_8075170
- ldr r0, [sp, 0x28]
- bl sub_807512C
- b _080730B8
- .pool
-_08072F28:
- ldr r1, =gUnknown_0832C3D8
- add r0, sp, 0x4
- movs r2, 0x14
- bl memcpy
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x2C]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r2, [sp, 0x2C]
- lsls r0, r2, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08072F52
- b _080730B8
-_08072F52:
- movs r6, 0x4
- mov r3, r8
- negs r0, r3
- orrs r0, r3
- asrs r0, 31
- ands r6, r0
- ldrh r0, [r7, 0x38]
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, sp
- adds r0, 0xA
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r3, r8
- cmp r3, 0
- bne _08072F82
- ldr r1, =gText_Slash
- bl StringCopy
-_08072F82:
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x9
- add r2, sp, 0x4
- bl RenderTextFont9
- adds r4, r6, 0
- adds r0, r4, 0x3
- cmp r4, r0
- bge _08073024
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r5, r0, r5
-_08072FA6:
- cmp r4, 0x2
- bhi _08072FF0
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r2, 0xBA
- lsls r2, 1
- adds r0, r2
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r4, 0x1
- adds r1, r4
- lsls r1, 5
- ldr r3, =0x06010000
- adds r1, r3
- ldr r2, =0x04000008
- bl CpuSet
- b _0807301A
- .pool
-_08072FF0:
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r4, r1
- lsls r1, 5
- ldr r2, =0x06010020
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- adds r4, 0x1
-_0807301A:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r6, 0x3
- cmp r4, r0
- blt _08072FA6
-_08073024:
- mov r3, r8
- cmp r3, 0
- bne _08073084
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- adds r0, 0xE0
- ldr r1, =gSprites
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- adds r4, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, 0x80
- ldr r5, =0x06010000
- adds r1, r5
- ldr r2, =0x04000008
- bl CpuSet
- mov r2, r8
- str r2, [sp, 0x24]
- add r0, sp, 0x24
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, r5
- ldr r2, =0x05000008
- bl CpuSet
- b _080730B8
- .pool
-_08073084:
- ldr r0, [sp, 0x2C]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080730B8
- movs r0, 0x74
- bl GetHealthboxElementGfxPtr
- ldr r2, =gSprites
- mov r3, r9
- lsls r1, r3, 4
- add r1, r9
- lsls r1, 2
- adds r1, r2
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r2, 0xD0
- lsls r2, 3
- adds r1, r2
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
-_080730B8:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072E0C
thumb_func_start sub_80730D4
sub_80730D4: @ 80730D4
@@ -1290,7 +418,7 @@ _080733DE:
asrs r1, 16
adds r0, r4, 0
movs r2, 0
- bl sub_8072E0C
+ bl UpdateHpTextInHealthboxInDoubles
ldrb r4, [r6]
mov r2, r8
ldrh r0, [r2]
@@ -1382,7 +510,7 @@ _080734DC:
asrs r1, 16
adds r0, r4, 0
movs r2, 0
- bl sub_8072E0C
+ bl UpdateHpTextInHealthboxInDoubles
ldrb r4, [r6]
mov r2, r8
ldrh r0, [r2]
@@ -1398,7 +526,7 @@ _08073536:
asrs r1, 16
adds r0, r4, 0
movs r2, 0x1
- bl sub_8072E0C
+ bl UpdateHpTextInHealthboxInDoubles
b _08073592
.pool
_0807355C:
@@ -3023,7 +2151,7 @@ _08074272:
movs r1, 0
movs r2, 0x3
movs r3, 0x2
- bl write_to_rbox
+ bl AddTextPrinterAndCreateWindowOnHealthbox
adds r6, r0, 0
ldr r0, =gSprites
lsls r1, r7, 4
@@ -3069,7 +2197,7 @@ _080742F0:
bl sub_8075198
_080742FC:
ldr r0, [sp, 0x10]
- bl sub_807512C
+ bl RemoveWindow_
add sp, 0x14
pop {r4-r7}
pop {r0}
@@ -3584,7 +2712,7 @@ sub_8074770: @ 8074770
movs r1, 0
movs r2, 0x3
movs r3, 0x2
- bl write_to_rbox
+ bl AddTextPrinterAndCreateWindowOnHealthbox
adds r5, r0, 0
ldr r1, =gSprites
lsls r0, r4, 4
@@ -3607,7 +2735,7 @@ sub_8074770: @ 8074770
movs r2, 0x2
bl sub_8075198
ldr r0, [sp, 0x4]
- bl sub_807512C
+ bl RemoveWindow_
add sp, 0x8
pop {r4,r5}
pop {r0}
@@ -3640,7 +2768,7 @@ sub_80747D8: @ 80747D8
add r0, sp, 0x4
movs r2, 0x3
movs r3, 0x2
- bl write_to_rbox
+ bl AddTextPrinterAndCreateWindowOnHealthbox
adds r5, r0, 0
ldr r1, =gSprites
lsls r0, r4, 4
@@ -3663,7 +2791,7 @@ sub_80747D8: @ 80747D8
movs r2, 0x4
bl sub_80751E4
ldr r0, [sp, 0x14]
- bl sub_807512C
+ bl RemoveWindow_
add sp, 0x18
pop {r4,r5}
pop {r0}
@@ -3728,7 +2856,7 @@ _080748C0:
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
- bl healthbar_draw_level
+ bl UpdateLvlInHealthbox
_080748D4:
cmp r7, 0x1
bhi _080748EE
@@ -3740,7 +2868,7 @@ _080748D4:
asrs r1, 16
adds r0, r6, 0
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_080748EE:
cmp r7, 0x2
beq _080748F6
@@ -3755,7 +2883,7 @@ _080748F6:
asrs r1, 16
adds r0, r6, 0
movs r2, 0x1
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_0807490C:
cmp r7, 0x5
beq _08074914
@@ -3891,7 +3019,7 @@ _08074A20:
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
- bl healthbar_draw_level
+ bl UpdateLvlInHealthbox
_08074A34:
cmp r7, 0x5
beq _08074A3C
@@ -4734,8 +3862,8 @@ _0807508E:
bx r1
thumb_func_end sub_8075060
- thumb_func_start write_to_rbox
-write_to_rbox: @ 8075094
+ thumb_func_start AddTextPrinterAndCreateWindowOnHealthbox
+AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -4807,17 +3935,17 @@ write_to_rbox: @ 8075094
pop {r1}
bx r1
.pool
- thumb_func_end write_to_rbox
+ thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox
- thumb_func_start sub_807512C
-sub_807512C: @ 807512C
+ thumb_func_start RemoveWindow_
+RemoveWindow_: @ 807512C
push {lr}
lsls r0, 24
lsrs r0, 24
bl RemoveWindow
pop {r0}
bx r0
- thumb_func_end sub_807512C
+ thumb_func_end RemoveWindow_
thumb_func_start sub_807513C
sub_807513C: @ 807513C
diff --git a/include/battle.h b/include/battle.h
index 548eb8de1..948111d43 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -931,6 +931,8 @@ struct MonSpritesGfx
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
struct SpriteTemplate templates[4];
+ u8 field_74[0x100];
+ u8 *fontPixels;
};
extern struct BattleSpritesGfx* gMonSpritesGfx;
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 4f0c6cfd0..e8ab8e478 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -3,6 +3,9 @@
#include "pokemon.h"
#include "battle_interface.h"
#include "sprite.h"
+#include "window.h"
+#include "string_util.h"
+#include "text.h"
extern bool8 IsDoubleBattle(void);
extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
@@ -11,6 +14,12 @@ extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
void sub_8072924(struct Sprite *sprite);
void sub_80728B4(struct Sprite *sprite);
const u32 *GetHealthboxElementGfxPtr(u8 elementId);
+u32 AddTextPrinterAndCreateWindowOnHealthbox(u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId);
+void sub_8075198(void *objVram, u32 windowTileData, u32 arg2);
+void RemoveWindow_(u32 windowId);
+void sub_8075170(void *dest, u32 arg1, u32 arg2);
+void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
+void sub_807513C(void *dest, u32 arg1, u32 arg2);
// const rom data
const struct OamData gUnknown_0832C138 =
@@ -144,6 +153,9 @@ static const struct SpriteTemplate gUnknown_0832C1C0[4] =
}
};
+extern const u8 gUnknown_0832C3C4[0x14];
+extern const u8 gUnknown_0832C3D8[0x14];
+
u8 sub_8072304(void)
{
return 9;
@@ -613,3 +625,300 @@ void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, u32 maxVal, u32 currVal,
gBattleSpritesDataPtr->battleBars[bank].isDoubleBattle = isDoubleBattle;
gBattleSpritesDataPtr->battleBars[bank].field_10 = -32768;
}
+
+void SetHealthboxSpriteInvisible(u8 healthboxSpriteId)
+{
+ gSprites[healthboxSpriteId].invisible = 1;
+ gSprites[gSprites[healthboxSpriteId].data5].invisible = 1;
+ gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 1;
+}
+
+void SetHealthboxSpriteVisible(u8 healthboxSpriteId)
+{
+ gSprites[healthboxSpriteId].invisible = 0;
+ gSprites[gSprites[healthboxSpriteId].data5].invisible = 0;
+ gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 0;
+}
+
+static void UpdateSpritePos(u8 spriteId, s16 x, s16 y)
+{
+ gSprites[spriteId].pos1.x = x;
+ gSprites[spriteId].pos1.y = y;
+}
+
+void DestoryHealthboxSprite(u8 healthboxSpriteId)
+{
+ DestroySprite(&gSprites[gSprites[healthboxSpriteId].oam.affineParam]);
+ DestroySprite(&gSprites[gSprites[healthboxSpriteId].data5]);
+ DestroySprite(&gSprites[healthboxSpriteId]);
+}
+
+void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly)
+{
+
+}
+
+extern u8 gNoOfAllBanks;
+extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
+
+void UpdateOamPriorityInAllHealthboxes(u8 priority)
+{
+ s32 i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ u8 healthboxSpriteId_1 = gHealthBoxesIds[i];
+ u8 healthboxSpriteId_2 = gSprites[gHealthBoxesIds[i]].oam.affineParam;
+ u8 healthboxSpriteId_3 = gSprites[gHealthBoxesIds[i]].data5;
+
+ gSprites[healthboxSpriteId_1].oam.priority = priority;
+ gSprites[healthboxSpriteId_2].oam.priority = priority;
+ gSprites[healthboxSpriteId_3].oam.priority = priority;
+ }
+}
+
+void SetBankHealthboxSpritePos(u8 bank)
+{
+ s16 x = 0, y = 0;
+
+ if (!IsDoubleBattle())
+ {
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ x = 44, y = 30;
+ else
+ x = 158, y = 88;
+ }
+ else
+ {
+ switch (GetBankIdentity(bank))
+ {
+ case IDENTITY_PLAYER_MON1:
+ x = 159, y = 76;
+ break;
+ case IDENTITY_PLAYER_MON2:
+ x = 171, y = 101;
+ break;
+ case IDENTITY_OPPONENT_MON1:
+ x = 44, y = 19;
+ break;
+ case IDENTITY_OPPONENT_MON2:
+ x = 32, y = 44;
+ break;
+ }
+ }
+
+ UpdateSpritePos(gHealthBoxesIds[bank], x, y);
+}
+
+void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
+{
+ u32 windowId, windowTileData, spriteTileNum;
+ u8 text[16];
+ u32 xPos, var1;
+ void *objVram;
+
+ text[0] = 0xF9;
+ text[1] = 5;
+
+ xPos = (u32) ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
+ // Alright, that part was unmatchable. It's basically doing:
+ // xPos = 5 * (3 - (u32)(&text[2]));
+ xPos--;
+ xPos--;
+ xPos -= ((u32)(text));
+ var1 = (3 - xPos);
+ xPos = 4 * var1;
+ xPos += var1;
+
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ objVram = (void*)(OBJ_VRAM0);
+ if (!IsDoubleBattle())
+ objVram += spriteTileNum + 0x820;
+ else
+ objVram += spriteTileNum + 0x420;
+ }
+ else
+ {
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0x400;
+ }
+ sub_8075198(objVram, windowTileData, 3);
+ RemoveWindow_(windowId);
+}
+
+void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, windowTileData, spriteTileNum;
+ u8 text[32];
+ void *objVram;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER && !IsDoubleBattle())
+ {
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ if (maxOrCurrent) // singles, max
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 2, &windowId);
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0xB40;
+ sub_8075170(objVram, windowTileData, 2);
+ RemoveWindow_(windowId);
+ }
+ else // singles, current
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ text[3] = CHAR_SLASH;
+ text[4] = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 2, &windowId);
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0x3E0;
+ sub_8075170(objVram, windowTileData, 1);
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0xB00;
+ sub_8075170(objVram, windowTileData + 0x20, 2);
+ RemoveWindow_(windowId);
+ }
+
+ }
+ else
+ {
+ u8 bank;
+
+ memcpy(text, gUnknown_0832C3C4, sizeof(gUnknown_0832C3C4));
+ bank = gSprites[healthboxSpriteId].data6;
+ if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
+ {
+ UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent);
+ }
+ else
+ {
+ u32 var;
+ u8 i;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ if (!maxOrCurrent)
+ var = 29;
+ else
+ var = 89;
+ }
+ else
+ {
+ if (!maxOrCurrent)
+ var = 20;
+ else
+ var = 48;
+ }
+
+ ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text);
+
+ for (i = 0; i < 3; i++)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[i * 64 + 32],
+ (void*)((OBJ_VRAM0) + 32 * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
+ 0x20);
+ }
+ }
+ }
+}
+
+extern const u8 gText_Slash[];
+
+void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, windowTileData, spriteTileNum;
+ u8 text[32];
+ void *objVram;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ if (gBattleSpritesDataPtr->bankData[gSprites[healthboxSpriteId].data6].hpNumbersNoBars) // don't print text if only bars are visible
+ {
+ spriteTileNum = gSprites[gSprites[healthboxSpriteId].data5].oam.tileNum * 32;
+ objVram = (void*)(OBJ_VRAM0) + spriteTileNum;
+
+ if (maxOrCurrent) // doubles, max hp
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId);
+ sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2);
+ RemoveWindow_(windowId);
+ CpuCopy32(GetHealthboxElementGfxPtr(0x74),
+ (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
+ 0x20);
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ text[3] = CHAR_SLASH;
+ text[4] = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId);
+ sub_807513C(objVram, 0, 3);
+ sub_8075170((void*)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3);
+ RemoveWindow_(windowId);
+ }
+ }
+ }
+ else
+ {
+ u8 bank;
+
+ memcpy(text, gUnknown_0832C3D8, sizeof(gUnknown_0832C3D8));
+ bank = gSprites[healthboxSpriteId].data6;
+
+ if (gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) // don't print text if only bars are visible
+ {
+ u8 var = 4;
+ u8 r7;
+ u8 *txtPtr;
+ u8 i;
+
+ if (!maxOrCurrent)
+ var = 0;
+
+ r7 = gSprites[healthboxSpriteId].data5;
+ txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ if (!maxOrCurrent)
+ StringCopy(txtPtr, gText_Slash);
+ RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text);
+
+ for (i = var; i < var + 3; i++)
+ {
+ if (i < 3)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0) + 32 * (1 + gSprites[r7].oam.tileNum + i)),
+ 0x20);
+ }
+ else
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[r7].oam.tileNum)),
+ 0x20);
+ }
+ }
+
+ if (!maxOrCurrent)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[224],
+ (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)),
+ 0x20);
+ CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * 32)), 0x20);
+ }
+ else
+ {
+ if (GetBankSide(bank) == SIDE_PLAYER) // impossible to reach part, because the bank is from the opponent's side
+ {
+ CpuCopy32(GetHealthboxElementGfxPtr(0x74),
+ (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32),
+ 0x20);
+ }
+ }
+ }
+ }
+}