more of battle interface done again

This commit is contained in:
DizzyEggg 2017-10-18 23:05:14 +02:00
parent 6e56211f40
commit 25a9c851cf
3 changed files with 213 additions and 558 deletions

View File

@ -6,548 +6,8 @@
.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
thumb_func_start UpdateLeftNoOfBallsTextOnHealthbox
UpdateLeftNoOfBallsTextOnHealthbox: @ 80747D8
push {r4,r5,lr}
sub sp, 0x18
adds r4, r0, 0
@ -594,13 +54,13 @@ sub_80747D8: @ 80747D8
movs r2, 0x4
bl sub_80751E4
ldr r0, [sp, 0x14]
bl RemoveWindow_
bl RemoveWindowOnHealthbox
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_80747D8
thumb_func_end UpdateLeftNoOfBallsTextOnHealthbox
thumb_func_start UpdateHealthboxAttribute
UpdateHealthboxAttribute: @ 8074860
@ -797,7 +257,7 @@ _080749EC:
cmp r7, 0xA
bne _080749F6
adds r0, r6, 0
bl sub_8074770
bl UpdateSafariBallsTextOnHealthbox
_080749F6:
adds r0, r7, 0
subs r0, 0xA
@ -806,7 +266,7 @@ _080749F6:
cmp r0, 0x1
bhi _08074A8E
adds r0, r6, 0
bl sub_80747D8
bl UpdateLeftNoOfBallsTextOnHealthbox
b _08074A8E
.pool
_08074A18:
@ -1740,15 +1200,15 @@ AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094
.pool
thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox
thumb_func_start RemoveWindow_
RemoveWindow_: @ 807512C
thumb_func_start RemoveWindowOnHealthbox
RemoveWindowOnHealthbox: @ 807512C
push {lr}
lsls r0, 24
lsrs r0, 24
bl RemoveWindow
pop {r0}
bx r0
thumb_func_end RemoveWindow_
thumb_func_end RemoveWindowOnHealthbox
thumb_func_start sub_807513C
sub_807513C: @ 807513C

View File

@ -130,7 +130,7 @@ gUnknown_0832C3D8:: @ 832C3D8
.byte 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_0832C3EC:: @ 832C3EC
gBattleInterfaceStatusIcons_DynPals:: @ 832C3EC
.byte 0x98, 0x61, 0xf7, 0x0e, 0x94, 0x46, 0xd1, 0x72
.byte 0xdc, 0x29, 0x00, 0x00

View File

@ -15,6 +15,10 @@
#include "gpu_regs.h"
#include "battle_message.h"
#include "species.h"
#include "pokedex.h"
#include "palette.h"
#include "international_string_util.h"
#include "safari_zone.h"
extern bool8 IsDoubleBattle(void);
extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
@ -29,9 +33,9 @@ extern const u8 gText_Slash[];
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);
u32 AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId);
void sub_8075198(void *objVram, u32 windowTileData, u32 arg2);
void RemoveWindow_(u32 windowId);
void RemoveWindowOnHealthbox(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);
@ -42,6 +46,7 @@ void sub_8073F98(u8 taskId);
void sub_8073E64(u8 taskId);
void sub_8074158(struct Sprite *sprite);
void sub_8074090(struct Sprite *sprite);
u8 GetStatusIconForBankId(u8 statusElementId, u8 bank);
// const rom data
const struct OamData gUnknown_0832C138 =
@ -186,6 +191,7 @@ extern const struct SpriteTemplate gUnknown_0832C364[2];
extern const struct SpriteTemplate gUnknown_0832C394[2];
extern const struct SubspriteTable gUnknown_0832C2C4;
extern const struct SubspriteTable gUnknown_0832C2CC;
extern const u16 gBattleInterfaceStatusIcons_DynPals[];
u8 sub_8072304(void)
{
@ -773,7 +779,7 @@ void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
objVram += spriteTileNum + 0x400;
}
sub_8075198(objVram, windowTileData, 3);
RemoveWindow_(windowId);
RemoveWindowOnHealthbox(windowId);
}
void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
@ -792,7 +798,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
objVram = (void*)(OBJ_VRAM0);
objVram += spriteTileNum + 0xB40;
sub_8075170(objVram, windowTileData, 2);
RemoveWindow_(windowId);
RemoveWindowOnHealthbox(windowId);
}
else // singles, current
{
@ -806,7 +812,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
objVram = (void*)(OBJ_VRAM0);
objVram += spriteTileNum + 0xB00;
sub_8075170(objVram, windowTileData + 0x20, 2);
RemoveWindow_(windowId);
RemoveWindowOnHealthbox(windowId);
}
}
@ -871,7 +877,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC
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);
RemoveWindowOnHealthbox(windowId);
CpuCopy32(GetHealthboxElementGfxPtr(0x74),
(void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
0x20);
@ -884,7 +890,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId);
sub_807513C(objVram, 0, 3);
sub_8075170((void*)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3);
RemoveWindow_(windowId);
RemoveWindowOnHealthbox(windowId);
}
}
}
@ -1580,5 +1586,194 @@ void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
sub_8075198((void*)(0x6010020 + spriteTileNum), windowTileData, 7);
}
RemoveWindow_(windowId);
RemoveWindowOnHealthbox(windowId);
}
void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
{
u8 bank, healthboxSpriteId_2;
if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
return;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
return;
bank = gSprites[healthboxSpriteId].data6;
if (GetBankSide(bank) == SIDE_PLAYER)
return;
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
return;
healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
if (noStatus)
CpuCopy32(GetHealthboxElementGfxPtr(0x46), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32);
else
CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32);
}
void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
{
s32 i;
u8 bank, healthboxSpriteId_2;
u32 status, pltAdder;
const u32 *statusGfxPtr;
s16 tileNumAdder;
u8 statusPalId;
bank = gSprites[healthboxSpriteId].data6;
healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
if (GetBankSide(bank) == SIDE_PLAYER)
{
status = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_STATUS);
if (!IsDoubleBattle())
tileNumAdder = 0x1A;
else
tileNumAdder = 0x12;
}
else
{
status = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_STATUS);
tileNumAdder = 0x11;
}
if (status & STATUS_SLEEP)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1B, bank));
statusPalId = 2;
}
else if (status & STATUS_PSN_ANY)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x15, bank));
statusPalId = 0;
}
else if (status & STATUS_BURN)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x21, bank));
statusPalId = 4;
}
else if (status & STATUS_FREEZE)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1E, bank));
statusPalId = 3;
}
else if (status & STATUS_PARALYSIS)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x18, bank));
statusPalId = 1;
}
else
{
statusGfxPtr = GetHealthboxElementGfxPtr(0x27);
for (i = 0; i < 3; i++)
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32);
if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
CpuCopy32(GetHealthboxElementGfxPtr(1), (void *)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 64);
TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
return;
}
pltAdder = gSprites[healthboxSpriteId].oam.paletteNum * 16;
pltAdder += bank + 12;
FillPalette(gBattleInterfaceStatusIcons_DynPals[statusPalId], pltAdder + 0x100, 2);
CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2);
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96);
if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
{
if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
{
CpuCopy32(GetHealthboxElementGfxPtr(0), (void*)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 32);
CpuCopy32(GetHealthboxElementGfxPtr(0x41), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 1) * 32), 32);
}
}
TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
}
u8 GetStatusIconForBankId(u8 statusElementId, u8 bank)
{
u8 ret = statusElementId;
switch (statusElementId)
{
case 21:
if (bank == 0)
ret = 21;
else if (bank == 1)
ret = 71;
else if (bank == 2)
ret = 86;
else
ret = 101;
break;
case 24:
if (bank == 0)
ret = 24;
else if (bank == 1)
ret = 74;
else if (bank == 2)
ret = 89;
else
ret = 104;
break;
case 27:
if (bank == 0)
ret = 27;
else if (bank == 1)
ret = 77;
else if (bank == 2)
ret = 92;
else
ret = 107;
break;
case 30:
if (bank == 0)
ret = 30;
else if (bank == 1)
ret = 80;
else if (bank == 2)
ret = 95;
else
ret = 110;
break;
case 33:
if (bank == 0)
ret = 33;
else if (bank == 1)
ret = 83;
else if (bank == 2)
ret = 98;
else
ret = 113;
break;
}
return ret;
}
extern const u8 gText_SafariBalls[];
extern const u8 gText_SafariBallLeft[];
void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId)
{
u32 windowId, windowTileData, spriteTileNum;
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId);
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
sub_8075198((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6);
sub_8075198((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2);
RemoveWindowOnHealthbox(windowId);
}
void UpdateLeftNoOfBallsTextOnHealthbox(healthboxSpriteId)
{
u8 text[20];
u8 *txtPtr;
u32 windowId, windowTileData, spriteTileNum;
txtPtr = StringCopy(text, gText_SafariBallLeft);
ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2);
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, 1));
}