src/battle/healthbox.c - assigning proper names (#1134)
Some checks are pending
build / build (push) Waiting to run

This commit is contained in:
Land0fChocolate 2026-05-06 04:37:04 +01:00 committed by GitHub
parent 3d698e0f19
commit 54fb94654a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 213 additions and 220 deletions

View File

@ -247,7 +247,7 @@ void *BattleSystem_GetHealthBox(BattleSystem *battleSys, int battler);
void ov16_0223F36C(BattleSystem *battleSys);
void ov16_0223F3BC(BattleSystem *battleSys);
void ov16_0223F3EC(BattleSystem *battleSys);
void ov16_0223F414(BattleSystem *battleSys);
void BattleSystem_DestroyHealthboxes(BattleSystem *battleSys);
u8 BattleSystem_GetResultMask(BattleSystem *battleSys);
void BattleSystem_SetResultMask(BattleSystem *battleSys, u8 value);
u8 BattleSystem_GetRedHPSoundFlag(BattleSystem *battleSys);
@ -273,7 +273,7 @@ u8 BattleSystem_GetRecordedChatter(BattleSystem *battleSys, int battler);
void ov16_0223F858(BattleSystem *battleSys, u8 *param1);
void BattleSystem_SetBattlerTypes(BattleSystem *battleSys, u8 *battlerTypes);
void ov16_0223F8AC(BattleSystem *battleSys, PokemonSprite **monSprites);
void BattleSystem_SetGaugePriority(BattleSystem *battleSys, int param1);
void BattleSystem_SetHealthboxPriority(BattleSystem *battleSys, int param1);
/**
* @brief Calculate the money penalty for losing a battle.

View File

@ -84,7 +84,7 @@ typedef struct HealthBox {
u8 unused_4F_2 : 1;
u8 numberMode : 1;
u8 padding : 4;
SysTask *task_50;
SysTask *bobbingAnimTask;
u16 degrees;
} HealthBox;
@ -112,11 +112,11 @@ ManagedSprite *HealthBox_DrawSprite(SpriteSystem *spriteSys, SpriteManager *spri
* @param flags The components to be drawn, as a bitmask.
*/
void HealthBox_DrawInfo(HealthBox *healthbox, u32 hp, u32 flags);
void ov16_02267220(HealthBox *healthbox);
void ov16_02267258(HealthBox *healthbox);
void ov16_022672C4(HealthBox *healthbox);
void ov16_02267360(HealthBox *healthbox);
void ov16_0226737C(HealthBox *healthbox);
void Healthbox_DeleteMainSprite(HealthBox *healthbox);
void Healthbox_UnloadMainSpriteObjects(HealthBox *healthbox);
void Healthbox_CreateMainSprite(HealthBox *healthbox);
void Healthbox_DestroySprites(HealthBox *healthbox);
void Healthbox_ToggleHPDisplayMode(HealthBox *healthbox);
/**
* @brief Compute the battler's new HP after taking a given amount of
@ -129,12 +129,12 @@ void ov16_0226737C(HealthBox *healthbox);
* values are damage, positive values are recovery.
*/
void HealthBox_CalcHP(HealthBox *healthbox, int damage);
s32 ov16_022674F8(HealthBox *healthbox);
s32 Healthbox_DrawHPBar(HealthBox *healthbox);
void HealthBox_CalcExp(HealthBox *healthbox, int expReward);
s32 ov16_02267560(HealthBox *healthbox);
void ov16_0226757C(HealthBox *healthbox);
void ov16_022675AC(HealthBox *healthbox);
void ov16_022675D8(HealthBox *healthbox, int priority);
s32 Healthbox_DrawExpBar(HealthBox *healthbox);
void Healthbox_Activate(HealthBox *healthbox);
void Healthbox_Deactivate(HealthBox *healthbox);
void Healthbox_SetExplicitPriority(HealthBox *healthbox, int priority);
/**
* @brief Enable (or disable) the healthbox.
@ -172,10 +172,10 @@ void HealthBox_Scroll(HealthBox *healthbox, enum HealthBoxScrollDirection direct
* @return The resulting healthbox type; see enum HealthBoxType.
*/
u8 HealthBox_Type(int battlerType, u32 battleType);
void ov16_0226834C(HealthBox *healthbox, u8 *param1);
void Healthbox_StartLevelUpFlash(HealthBox *healthbox, u8 *param1);
void ov16_02268468(HealthBox *healthbox);
void ov16_0226846C(HealthBox *healthbox);
void ov16_02268470(HealthBox *healthbox);
void ov16_02268498(HealthBox *healthbox);
void Healthbox_StartBobAnimation(HealthBox *healthbox);
void Healthbox_StopBobAnimation(HealthBox *healthbox);
#endif // POKEPLATINUM_HEALTHBOX_H

View File

@ -3253,7 +3253,7 @@ static void Task_PlayerSetCommandSelection(SysTask *task, void *data)
}
break;
case 3:
ov16_0226757C(commandSetData->healthbox);
Healthbox_Activate(commandSetData->healthbox);
ov16_02264798(battlerData, commandSetData->battleSys);
commandSetData->state = 4;
case 4:
@ -3324,7 +3324,7 @@ static void Task_PlayerSetCommandSelection(SysTask *task, void *data)
for (int i = 0; i < BattleSystem_GetMaxBattlers(commandSetData->battleSys); i++) {
battlerData = BattleSystem_GetBattlerData(commandSetData->battleSys, i);
ov16_0226737C(&battlerData->healthbox);
Healthbox_ToggleHPDisplayMode(&battlerData->healthbox);
}
}
@ -3351,7 +3351,7 @@ static void Task_PlayerSetCommandSelection(SysTask *task, void *data)
ov16_02268C04(bgNarc, objNarc, v2, 0, 0, NULL);
ov16_0226BCCC(v2, 0);
ov16_0226846C(healthbox);
ov16_022675AC(commandSetData->healthbox);
Healthbox_Deactivate(commandSetData->healthbox);
ov16_022647D8(battlerData);
NARC_dtor(bgNarc);
NARC_dtor(objNarc);
@ -3363,7 +3363,7 @@ static void Task_PlayerSetCommandSelection(SysTask *task, void *data)
ov16_02268C04(bgNarc, objNarc, v2, 0, 0, NULL);
ov16_0226BCCC(v2, 0);
ov16_0226846C(healthbox);
ov16_022675AC(commandSetData->healthbox);
Healthbox_Deactivate(commandSetData->healthbox);
ov16_022647D8(battlerData);
NARC_dtor(bgNarc);
NARC_dtor(objNarc);
@ -3398,7 +3398,7 @@ static void Task_PlayerSetCommandSelection(SysTask *task, void *data)
ov16_02268C04(bgNarc, objNarc, v2, 0, 0, NULL);
ov16_0226BCCC(v2, 0);
ov16_0226846C(healthbox);
ov16_022675AC(commandSetData->healthbox);
Healthbox_Deactivate(commandSetData->healthbox);
ov16_022647D8(battlerData);
ov16_02269218(v2);
@ -3570,7 +3570,7 @@ static void Task_PlayerShowMoveSelectMenu(SysTask *task, void *data)
if ((BattleSystem_GetBattleType(moveSelectMenuData->battleSys) & BATTLE_TYPE_DOUBLES) == FALSE) {
ov16_0226BCCC(v2, 0);
ov16_0226846C(healthbox);
ov16_022675AC(moveSelectMenuData->healthbox);
Healthbox_Deactivate(moveSelectMenuData->healthbox);
ov16_022647D8(battlerData);
}
}
@ -3717,7 +3717,7 @@ static void Task_PlayerShowTargetSelectMenu(SysTask *task, void *data)
break;
case 2:
if (targetSelectMenuData->input != 0xFF) {
ov16_022675AC(targetSelectMenuData->healthbox);
Healthbox_Deactivate(targetSelectMenuData->healthbox);
ov16_022647D8(battlerData);
ov16_0226846C(healthbox);
@ -4185,7 +4185,7 @@ static void Task_PlayerShowBagMenu(SysTask *task, void *data)
int battler = bagMenuData->partyMenuData->battlePartyCtx->selectedPartyIndex * 2;
HealthBox *healthbox = BattleSystem_GetHealthBox(bagMenuData->battleSys, battler);
if (ov16_022674F8(healthbox) == -1) {
if (Healthbox_DrawHPBar(healthbox) == -1) {
HealthBox_DrawInfo(healthbox, NULL, HEALTHBOX_INFO_STATUS);
bagMenuData->state++;
}
@ -4720,7 +4720,7 @@ static void Task_PlayerShowYesNoMenu(SysTask *task, void *data)
NARC *bgNarc = NARC_ctor(NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_BG, HEAP_ID_BATTLE);
NARC *objNarc = NARC_ctor(NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_OBJ, HEAP_ID_BATTLE);
ov16_022675AC(yesNoMenuData->healthbox);
Healthbox_Deactivate(yesNoMenuData->healthbox);
ov16_022647D8(battlerData);
ov16_0226846C(healthbox);
ov16_02269218(v2);
@ -4917,7 +4917,7 @@ static void Task_UpdateHPGauge(SysTask *task, void *data)
HealthBox_CalcHP(healthbox, healthbox->damage);
healthbox->state++;
case 1:
result = ov16_022674F8(healthbox);
result = Healthbox_DrawHPBar(healthbox);
if (result == -1) {
healthbox->state++;
@ -4947,7 +4947,7 @@ static void Task_UpdateExpGauge(SysTask *task, void *data)
healthbox->unk_4E++;
}
result = ov16_02267560(healthbox);
result = Healthbox_DrawExpBar(healthbox);
if (result == -1) {
if (healthbox->unk_4E >= 8) {
@ -5190,7 +5190,7 @@ static void Task_PlayLevelUpAnimation(SysTask *task, void *data)
switch (playLevelUpAnimationData->state) {
case 0:
ov16_0226834C(playLevelUpAnimationData->healthbox, &playLevelUpAnimationData->unk_0B);
Healthbox_StartLevelUpFlash(playLevelUpAnimationData->healthbox, &playLevelUpAnimationData->unk_0B);
Sound_PlayEffect(SEQ_SE_DP_EXPMAX);
playLevelUpAnimationData->state++;
break;

View File

@ -238,7 +238,7 @@ void BattleSystem_ExecuteBattlerCommand(BattleSystem *battleSys, BattlerData *ba
void ov16_0225C104(BattleSystem *battleSys, BattlerData *battlerData, int param2)
{
if (param2 != 2) {
ov16_02267360(&battlerData->healthbox);
Healthbox_DestroySprites(&battlerData->healthbox);
}
if (battlerData->managedSprite) {
@ -626,7 +626,7 @@ static void ov16_0225C558(BattleSystem *battleSys, BattlerData *battlerData)
static void BtlIOCmd_StopGaugeAnimation(BattleSystem *battleSys, BattlerData *battlerData)
{
ov16_022675AC(&battlerData->healthbox);
Healthbox_Deactivate(&battlerData->healthbox);
ov16_022647D8(battlerData);
BattleController_EmitClearCommand(battleSys, battlerData->battler, battlerData->data[0]);
ZeroDataBuffer(battlerData);
@ -739,7 +739,7 @@ static void BtlIOCmd_ClearTouchScreen(BattleSystem *battleSys, BattlerData *batt
ov16_0226846C(healthbox);
}
ov16_022675AC(&battlerData->healthbox);
Healthbox_Deactivate(&battlerData->healthbox);
ov16_02269218(v0);
ov16_022647D8(battlerData);
}

View File

@ -9902,7 +9902,7 @@ static void BattleScript_GetExpTask(SysTask *task, void *inData)
Bg_SetPriority(BG_LAYER_MAIN_1, 1);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
BattleSystem_SetGaugePriority(data->battleSys, 0 + 2); // gauge's default is 0
BattleSystem_SetHealthboxPriority(data->battleSys, 0 + 2); // gauge's default is 0
LoadStandardWindowTiles(bgl, 2, 1, 0, HEAP_ID_BATTLE);
PaletteData_LoadBufferFromFileStart(paletteSys, NARC_INDEX_GRAPHIC__PL_WINFRAME, GetStandardWindowPaletteNARCMember(), HEAP_ID_BATTLE, 0, 0x20, 8 * 0x10);
@ -9990,7 +9990,7 @@ static void BattleScript_GetExpTask(SysTask *task, void *inData)
Bg_SetPriority(BG_LAYER_MAIN_1, 0);
Bg_SetPriority(BG_LAYER_MAIN_2, 1);
BattleSystem_SetGaugePriority(data->battleSys, 0);
BattleSystem_SetHealthboxPriority(data->battleSys, 0);
if (data->battleCtx->selectedPartySlot[expBattler] != slot) {
BattleScript_FreePartyLevelUpIcon(data->battleSys, data);
@ -10672,7 +10672,7 @@ static void BattleScript_CatchMonTask(SysTask *task, void *inData)
data->tmpPtr[0] = ApplicationManager_New(&gNamingScreenAppTemplate, namingScreenArgs, HEAP_ID_BATTLE);
data->seqNum = SEQ_CATCH_MON_FREE_NAMING_SCREEN;
ov16_0223F414(data->battleSys);
BattleSystem_DestroyHealthboxes(data->battleSys);
int i;
BattlerData *battlerData;

View File

@ -1234,7 +1234,7 @@ void ov16_0223F36C(BattleSystem *battleSys)
healthbox->battleSys = battleSys;
healthbox->type = HealthBox_Type(BattlerData_GetBattlerType(battleSys->battlers[i]), BattleSystem_GetBattleType(battleSys));
ov16_022672C4(healthbox);
Healthbox_CreateMainSprite(healthbox);
HealthBox_Enable(healthbox, FALSE);
}
}
@ -1264,14 +1264,13 @@ void ov16_0223F3EC(BattleSystem *battleSys)
}
}
void ov16_0223F414(BattleSystem *battleSys)
void BattleSystem_DestroyHealthboxes(BattleSystem *battleSys)
{
int i;
HealthBox *healthbox;
for (i = 0; i < battleSys->maxBattlers; i++) {
healthbox = BattlerData_GetHealthBox(battleSys->battlers[i]);
ov16_02267360(healthbox);
Healthbox_DestroySprites(BattlerData_GetHealthBox(battleSys->battlers[i]));
}
}
@ -1515,14 +1514,13 @@ void ov16_0223F8AC(BattleSystem *battleSys, PokemonSprite **monSprites)
}
}
void BattleSystem_SetGaugePriority(BattleSystem *battleSys, int param1)
void BattleSystem_SetHealthboxPriority(BattleSystem *battleSys, int param1)
{
int battler;
HealthBox *healthbox;
for (battler = 0; battler < battleSys->maxBattlers; battler++) {
healthbox = BattlerData_GetHealthBox(battleSys->battlers[battler]);
ov16_022675D8(healthbox, param1);
Healthbox_SetExplicitPriority(BattlerData_GetHealthBox(battleSys->battlers[battler]), param1);
}
}

View File

@ -71,13 +71,13 @@ typedef struct VRAMTransfer {
u16 size;
} VRAMTransfer;
typedef struct {
typedef struct HealthboxLevelUpFlashState {
HealthBox *healthbox;
u8 *unk_04;
u8 *done;
u8 state;
u8 unk_09;
s8 unk_0A;
} UnkStruct_ov16_0226834C;
u8 paletteOffset;
s8 blendIntensity;
} HealthboxLevelUpFlashState;
enum HealthBoxPart {
HEALTHBOX_PART_HP_H = 0,
@ -176,15 +176,15 @@ static void HealthBox_DrawStatusIcon(HealthBox *healthbox, enum HealthBoxPart pa
static void HealthBox_DrawBallCount(HealthBox *healthbox, u32 flags);
static void HealthBox_DrawBallsLeftMessage(HealthBox *healthbox, u32 flags);
static void HealthBox_LoadMainPalette(SpriteSystem *spriteSys, SpriteManager *handler, NARC *narc, PaletteData *palette, int type);
static void ov16_02267244(HealthBox *healthbox);
static void ov16_0226728C(HealthBox *healthbox);
static const SpriteTemplate *HealthBox_SpriteTemplate(u8 type);
static const SpriteTemplate *ov16_02268314(u8 type);
static void ScrollHealthBoxTask(SysTask *task, void *data);
static void ov16_02268380(SysTask *task, void *param1);
void ov16_02268470(HealthBox *healthbox);
void ov16_02268498(HealthBox *healthbox);
static void ov16_022684BC(SysTask *task, void *data);
static void Healthbox_DeleteArrowSprite(HealthBox *healthbox);
static void Healthbox_UnloadArrowSpriteObjects(HealthBox *healthbox);
static const SpriteTemplate *HealthBox_MainSpriteTemplate(u8 type);
static const SpriteTemplate *HealthBox_ArrowSpriteTemplate(u8 type);
static void Healthbox_Task_Scroll(SysTask *task, void *data);
static void Healthbox_Task_LevelUpFlashAnimation(SysTask *task, void *param1);
static void Healthbox_StartBobAnimation(HealthBox *healthbox);
static void Healthbox_StopBobAnimation(HealthBox *healthbox);
static void Healthbox_Task_Bob(SysTask *task, void *data);
static void HealthBox_EnableArrow(HealthBox *healthbox, BOOL enable);
ALIGN_4 static const s8 sArrowOffsetX[] = {
@ -235,7 +235,7 @@ static const VRAMTransfer sBattlerNameVRAMTransfer[][4] = {
},
};
static const VRAMTransfer Unk_ov16_0226F47C[][2] = {
static const VRAMTransfer sLevelIconVRAMTransfer[][2] = {
{
{ 0xA60, 0x40 },
{ 0xB60, 0x40 },
@ -262,7 +262,7 @@ static const VRAMTransfer Unk_ov16_0226F47C[][2] = {
},
};
static const VRAMTransfer Unk_ov16_0226F3EC[][2] = {
static const VRAMTransfer sLevelNumberVRAMTransfer[][2] = {
{
{ 0xAA0, 0x60 },
{ 0xBA0, 0x60 },
@ -289,7 +289,7 @@ static const VRAMTransfer Unk_ov16_0226F3EC[][2] = {
},
};
static const VRAMTransfer Unk_ov16_0226F41C[][2] = {
static const VRAMTransfer sCurrentHPNumberVRAMTransfer[][2] = {
{
{ 0x0, 0x0 },
{ 0xD00, 0x60 },
@ -316,7 +316,7 @@ static const VRAMTransfer Unk_ov16_0226F41C[][2] = {
},
};
static const VRAMTransfer Unk_ov16_0226F3BC[] = {
static const VRAMTransfer sMaxHPNumberVRAMTransfer[] = {
{ 0xD80, 0x60 },
{ 0x6A0, 0x60 },
{ 0xC80, 0x60 },
@ -325,7 +325,7 @@ static const VRAMTransfer Unk_ov16_0226F3BC[] = {
{ 0x6A0, 0x60 },
};
static const VRAMTransfer Unk_ov16_0226F44C[][2] = {
static const VRAMTransfer sHPGaugeVRAMTransfer[][2] = {
{
{ 0x4E0, 0x0 },
{ 0xC20, 0xC0 },
@ -352,7 +352,7 @@ static const VRAMTransfer Unk_ov16_0226F44C[][2] = {
},
};
static const VRAMTransfer Unk_ov16_0226F38C[] = {
static const VRAMTransfer sCaughtIconVRAMTransfer[] = {
{ 0x460, HEALTHBOX_WINDOW_BLOCK_SIZE },
{ 0x420, HEALTHBOX_WINDOW_BLOCK_SIZE },
{ 0x440, HEALTHBOX_WINDOW_BLOCK_SIZE },
@ -361,7 +361,7 @@ static const VRAMTransfer Unk_ov16_0226F38C[] = {
{ 0x420, HEALTHBOX_WINDOW_BLOCK_SIZE },
};
static const VRAMTransfer Unk_ov16_0226F35C[] = {
static const VRAMTransfer sStatusIconVRAMTransfer[] = {
{ 0x480, 0x60 },
{ 0x440, 0x60 },
{ 0x460, 0x60 },
@ -370,21 +370,21 @@ static const VRAMTransfer Unk_ov16_0226F35C[] = {
{ 0x440, 0x60 },
};
static const VRAMTransfer Unk_ov16_0226F33C[4] = {
static const VRAMTransfer sBallCountVRAMTransfer[4] = {
{ 0x240, 0xC0 },
{ 0x340, 0xC0 },
{ 0xA00, 0xE0 },
{ 0xB00, 0xE0 },
};
static const VRAMTransfer Unk_ov16_0226F34C[4] = {
static const VRAMTransfer sBallsLeftVRAMTransfer[4] = {
{ 0x440, 0xC0 },
{ 0x540, 0xC0 },
{ 0xC00, 0xE0 },
{ 0xD00, 0xE0 },
};
static const VRAMTransfer Unk_ov16_0226F374[] = {
static const VRAMTransfer sHPDisplayLeftVRAMTransfer[] = {
{ 0x0, 0x0 },
{ 0x0, 0x0 },
{ 0x4C0, 0x40 },
@ -393,7 +393,7 @@ static const VRAMTransfer Unk_ov16_0226F374[] = {
{ 0x0, 0x0 },
};
static const VRAMTransfer Unk_ov16_0226F3A4[] = {
static const VRAMTransfer sHPDisplayRightVRAMTransfer[] = {
{ 0x0, 0x0 },
{ 0x0, 0x0 },
{ 0xCC0, HEALTHBOX_WINDOW_BLOCK_SIZE },
@ -402,7 +402,7 @@ static const VRAMTransfer Unk_ov16_0226F3A4[] = {
{ 0x0, 0x0 },
};
static const VRAMTransfer Unk_ov16_0226F3D4[] = {
static const VRAMTransfer sHPDisplaySlashVRAMTransfer[] = {
{ 0x0, 0x0 },
{ 0x0, 0x0 },
{ 0xC60, HEALTHBOX_WINDOW_BLOCK_SIZE },
@ -535,7 +535,7 @@ static const SpriteTemplate sHealthBoxTemplate_EnemySlot2 = {
.vramTransfer = FALSE,
};
static const SpriteTemplate sHealthBoxTemplate_Unk_ov16_0226F514 = {
static const SpriteTemplate sHealthBoxTemplate_Arrow = {
.x = 0,
.y = 0,
.z = 0,
@ -579,7 +579,7 @@ static const SpriteTemplate sHealthBoxTemplate_NoPlayerMon = {
void HealthBox_LoadResources(SpriteSystem *spriteSys, SpriteManager *spriteMan, NARC *narc, PaletteData *palette, enum HealthBoxType healthboxType)
{
const SpriteTemplate *template = HealthBox_SpriteTemplate(healthboxType);
const SpriteTemplate *template = HealthBox_MainSpriteTemplate(healthboxType);
SpriteSystem_LoadCharResObjFromOpenNarc(spriteSys, spriteMan, narc, template->resources[SPRITE_RESOURCE_CHAR], TRUE, NNS_G2D_VRAM_TYPE_2DMAIN, template->resources[SPRITE_RESOURCE_CHAR]);
SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, spriteMan, narc, healthbox_primary_NCLR, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBOX_MAIN_PALETTE_RESID);
@ -594,7 +594,7 @@ void HealthBox_LoadResources(SpriteSystem *spriteSys, SpriteManager *spriteMan,
static void HealthBox_LoadMainPalette(SpriteSystem *spriteSys, SpriteManager *handler, NARC *narc, PaletteData *palette, int type)
{
const SpriteTemplate *template = ov16_02268314(type);
const SpriteTemplate *template = HealthBox_ArrowSpriteTemplate(type);
if (template != NULL) {
SpriteSystem_LoadCharResObjFromOpenNarc(spriteSys, handler, narc, template->resources[SPRITE_RESOURCE_CHAR], TRUE, NNS_G2D_VRAM_TYPE_2DMAIN, template->resources[SPRITE_RESOURCE_CHAR]);
@ -606,7 +606,7 @@ static void HealthBox_LoadMainPalette(SpriteSystem *spriteSys, SpriteManager *ha
ManagedSprite *HealthBox_DrawSprite(SpriteSystem *spriteSys, SpriteManager *handler, int type)
{
const SpriteTemplate *template = HealthBox_SpriteTemplate(type);
const SpriteTemplate *template = HealthBox_MainSpriteTemplate(type);
ManagedSprite *managedSprite = SpriteSystem_NewSprite(spriteSys, handler, template);
Sprite_TickFrame(managedSprite->sprite);
@ -733,11 +733,11 @@ void HealthBox_DrawInfo(HealthBox *healthbox, u32 hp, u32 flags)
}
}
void ov16_02267220(HealthBox *healthbox)
void Healthbox_DeleteMainSprite(HealthBox *healthbox)
{
if (healthbox->task_50 != NULL) {
SysTask_Done(healthbox->task_50);
healthbox->task_50 = NULL;
if (healthbox->bobbingAnimTask != NULL) {
SysTask_Done(healthbox->bobbingAnimTask);
healthbox->bobbingAnimTask = NULL;
}
if (healthbox->mainSprite == NULL) {
@ -748,7 +748,7 @@ void ov16_02267220(HealthBox *healthbox)
healthbox->mainSprite = NULL;
}
static void ov16_02267244(HealthBox *healthbox)
static void Healthbox_DeleteArrowSprite(HealthBox *healthbox)
{
if (healthbox->arrowSprite == NULL) {
return;
@ -758,11 +758,11 @@ static void ov16_02267244(HealthBox *healthbox)
healthbox->arrowSprite = NULL;
}
void ov16_02267258(HealthBox *healthbox)
void Healthbox_UnloadMainSpriteObjects(HealthBox *healthbox)
{
SpriteSystem *spriteSystem;
SpriteManager *spriteManager;
const SpriteTemplate *spriteTemplate = HealthBox_SpriteTemplate(healthbox->type);
const SpriteTemplate *spriteTemplate = HealthBox_MainSpriteTemplate(healthbox->type);
spriteSystem = BattleSystem_GetSpriteSystem(healthbox->battleSys);
spriteManager = BattleSystem_GetSpriteManager(healthbox->battleSys);
@ -771,11 +771,11 @@ void ov16_02267258(HealthBox *healthbox)
SpriteManager_UnloadAnimObjById(spriteManager, spriteTemplate->resources[3]);
}
static void ov16_0226728C(HealthBox *healthbox)
static void Healthbox_UnloadArrowSpriteObjects(HealthBox *healthbox)
{
SpriteSystem *spriteSystem;
SpriteManager *spriteManager;
const SpriteTemplate *spriteTemplate = ov16_02268314(healthbox->type);
const SpriteTemplate *spriteTemplate = HealthBox_ArrowSpriteTemplate(healthbox->type);
if (spriteTemplate == NULL) {
return;
@ -789,13 +789,13 @@ static void ov16_0226728C(HealthBox *healthbox)
SpriteManager_UnloadAnimObjById(spriteManager, spriteTemplate->resources[3]);
}
void ov16_022672C4(HealthBox *healthbox)
void Healthbox_CreateMainSprite(HealthBox *healthbox)
{
NARC *narc = NARC_ctor(NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_OBJ, HEAP_ID_BATTLE);
SpriteSystem *spriteSystem = BattleSystem_GetSpriteSystem(healthbox->battleSys);
SpriteManager *spriteManager = BattleSystem_GetSpriteManager(healthbox->battleSys);
PaletteData *paletteData = BattleSystem_GetPaletteData(healthbox->battleSys);
const SpriteTemplate *spriteTemplate = HealthBox_SpriteTemplate(healthbox->type);
const SpriteTemplate *spriteTemplate = HealthBox_MainSpriteTemplate(healthbox->type);
HealthBox_LoadResources(spriteSystem, spriteManager, narc, paletteData, healthbox->type);
healthbox->mainSprite = HealthBox_DrawSprite(spriteSystem, spriteManager, healthbox->type);
@ -809,19 +809,19 @@ void ov16_022672C4(HealthBox *healthbox)
NARC_dtor(narc);
}
void ov16_02267360(HealthBox *healthbox)
void Healthbox_DestroySprites(HealthBox *healthbox)
{
ov16_02267220(healthbox);
ov16_02267258(healthbox);
ov16_02267244(healthbox);
ov16_0226728C(healthbox);
Healthbox_DeleteMainSprite(healthbox);
Healthbox_UnloadMainSpriteObjects(healthbox);
Healthbox_DeleteArrowSprite(healthbox);
Healthbox_UnloadArrowSpriteObjects(healthbox);
}
void ov16_0226737C(HealthBox *healthbox)
void Healthbox_ToggleHPDisplayMode(HealthBox *healthbox)
{
const u8 *tileNum;
NNSG2dImageProxy *imgProxy;
void *v2;
void *objCharPtr;
switch (healthbox->type) {
case HEALTHBOX_TYPE_PLAYER_SLOT_1:
@ -833,34 +833,34 @@ void ov16_0226737C(HealthBox *healthbox)
healthbox->numberMode ^= 1;
v2 = G2_GetOBJCharPtr();
objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
if (healthbox->numberMode == 1) {
tileNum = GetHealthBoxPartsTile(HEALTHBOX_PART_NUMBERS_LEFT);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F374[healthbox->type].pos + HEALTHBOX_WINDOW_BLOCK_SIZE + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sHPDisplayLeftVRAMTransfer[healthbox->type].pos + HEALTHBOX_WINDOW_BLOCK_SIZE + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
tileNum = GetHealthBoxPartsTile(HEALTHBOX_PART_NUMBERS_RIGHT);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F3A4[healthbox->type].pos + HEALTHBOX_WINDOW_BLOCK_SIZE + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sHPDisplayRightVRAMTransfer[healthbox->type].pos + HEALTHBOX_WINDOW_BLOCK_SIZE + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
tileNum = GetHealthBoxPartsTile(HEALTHBOX_PART_SLASH);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F3D4[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F3D4[healthbox->type].size);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sHPDisplaySlashVRAMTransfer[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sHPDisplaySlashVRAMTransfer[healthbox->type].size);
HealthBox_DrawInfo(healthbox, healthbox->curHP, HEALTHBOX_INFO_CURRENT_HP | HEALTHBOX_INFO_MAX_HP);
} else {
tileNum = GetHealthBoxPartsTile(HEALTHBOX_PART_HP_H_2);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F374[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F374[healthbox->type].size);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sHPDisplayLeftVRAMTransfer[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sHPDisplayLeftVRAMTransfer[healthbox->type].size);
tileNum = GetHealthBoxPartsTile(HEALTHBOX_PART_BAR_END);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F3A4[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F3A4[healthbox->type].size);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sHPDisplayRightVRAMTransfer[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sHPDisplayRightVRAMTransfer[healthbox->type].size);
tileNum = GetHealthBoxPartsTile(HEALTHBOX_PART_STATUS_HEALTHY_0);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F3A4[healthbox->type].pos + HEALTHBOX_WINDOW_BLOCK_SIZE + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sHPDisplayRightVRAMTransfer[healthbox->type].pos + HEALTHBOX_WINDOW_BLOCK_SIZE + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
HealthBox_DrawInfo(healthbox, healthbox->curHP, HEALTHBOX_INFO_HP_GAUGE);
}
}
void HealthBox_CalcHP(HealthBox *healthbox, int damage) // TODO: all calls pass in damage from healthbox, pls fix.
void HealthBox_CalcHP(HealthBox *healthbox, int damage) // CLEANUP: all calls pass in damage from healthbox, pls fix.
{
healthbox->hpTemp = S32_MIN;
@ -884,7 +884,7 @@ void HealthBox_CalcHP(HealthBox *healthbox, int damage) // TODO: all calls pass
}
}
s32 ov16_022674F8(HealthBox *healthbox)
s32 Healthbox_DrawHPBar(HealthBox *healthbox)
{
s32 result = HealthBox_DrawGauge(healthbox, HEALTHBOX_GAUGE_HP);
@ -921,7 +921,7 @@ void HealthBox_CalcExp(HealthBox *healthbox, int expReward)
}
}
s32 ov16_02267560(HealthBox *healthbox)
s32 Healthbox_DrawExpBar(HealthBox *healthbox)
{
s32 result = HealthBox_DrawGauge(healthbox, HEALTHBOX_GAUGE_EXP);
@ -932,7 +932,7 @@ s32 ov16_02267560(HealthBox *healthbox)
return result;
}
void ov16_0226757C(HealthBox *healthbox)
void Healthbox_Activate(HealthBox *healthbox)
{
if (healthbox->arrowSprite != NULL) {
Sprite_SetAnimateFlag(healthbox->arrowSprite->sprite, TRUE);
@ -940,11 +940,11 @@ void ov16_0226757C(HealthBox *healthbox)
}
if ((BattleSystem_GetBattleType(healthbox->battleSys) & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_PAL_PARK)) == FALSE) {
ov16_02268470(healthbox);
Healthbox_StartBobAnimation(healthbox);
}
}
void ov16_022675AC(HealthBox *healthbox)
void Healthbox_Deactivate(HealthBox *healthbox)
{
if (healthbox->arrowSprite != NULL) {
Sprite_SetAnimateFlag(healthbox->arrowSprite->sprite, FALSE);
@ -952,10 +952,10 @@ void ov16_022675AC(HealthBox *healthbox)
HealthBox_EnableArrow(healthbox, FALSE);
}
ov16_02268498(healthbox);
Healthbox_StopBobAnimation(healthbox);
}
void ov16_022675D8(HealthBox *healthbox, int priority)
void Healthbox_SetExplicitPriority(HealthBox *healthbox, int priority)
{
if (healthbox->mainSprite == NULL) {
return;
@ -1002,7 +1002,7 @@ void HealthBox_Enable(HealthBox *battleSys, BOOL enable)
void HealthBox_OffsetPositionXY(HealthBox *healthbox, int x, int y)
{
GF_ASSERT(healthbox->mainSprite != NULL);
const SpriteTemplate *template = HealthBox_SpriteTemplate(healthbox->type);
const SpriteTemplate *template = HealthBox_MainSpriteTemplate(healthbox->type);
Sprite_SetPositionXY(healthbox->mainSprite->sprite, template->x + x, template->y + y);
if (healthbox->arrowSprite != NULL) {
@ -1040,7 +1040,7 @@ void HealthBox_Scroll(HealthBox *healthbox, enum HealthBoxScrollDirection direct
HealthBox_OffsetPositionXY(healthbox, 0, 0);
}
SysTask_Start(ScrollHealthBoxTask, healthbox, 990);
SysTask_Start(Healthbox_Task_Scroll, healthbox, 990);
}
/**
@ -1049,11 +1049,11 @@ void HealthBox_Scroll(HealthBox *healthbox, enum HealthBoxScrollDirection direct
* @param task
* @param data
*/
static void ScrollHealthBoxTask(SysTask *task, void *data)
static void Healthbox_Task_Scroll(SysTask *task, void *data)
{
HealthBox *healthbox = data;
int done = 0;
const SpriteTemplate *template = HealthBox_SpriteTemplate(healthbox->type);
const SpriteTemplate *template = HealthBox_MainSpriteTemplate(healthbox->type);
s16 x, y;
ManagedSprite_GetPositionXY(healthbox->mainSprite, &x, &y);
@ -1188,88 +1188,85 @@ static void HealthBox_DrawLevelText(HealthBox *healthbox)
tileNum1 = GetHealthBoxPartsTile(part1);
tileNum2 = GetHealthBoxPartsTile(part2);
void *v5 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
MI_CpuCopy16(tileNum2, (void *)((u32)v5 + Unk_ov16_0226F47C[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F47C[healthbox->type][0].size);
MI_CpuCopy16(tileNum1, (void *)((u32)v5 + Unk_ov16_0226F47C[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F47C[healthbox->type][1].size);
MI_CpuCopy16(tileNum2, (void *)((u32)objCharPtr + sLevelIconVRAMTransfer[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sLevelIconVRAMTransfer[healthbox->type][0].size);
MI_CpuCopy16(tileNum1, (void *)((u32)objCharPtr + sLevelIconVRAMTransfer[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sLevelIconVRAMTransfer[healthbox->type][1].size);
}
static void HealthBox_DrawLevelNumber(HealthBox *healthbox)
{
NNSG2dImageProxy *imgProxy;
int v4, v5, v6;
int byteIdx, tileOffset, srcOffset;
int size = 3 * HEALTHBOX_WINDOW_BLOCK_SIZE;
u8 *v0 = Heap_Alloc(HEAP_ID_BATTLE, size);
u8 *v1 = Heap_Alloc(HEAP_ID_BATTLE, size * 2);
u8 *levelTextBuf = Heap_Alloc(HEAP_ID_BATTLE, size);
u8 *tileWorkBuf = Heap_Alloc(HEAP_ID_BATTLE, size * 2);
MI_CpuFill8(v0, 0xf | (0xf << 4), size);
FontSpecialChars_DrawBattleScreenText(BattleSystem_GetSpecialCharsLevel(healthbox->battleSys), healthbox->level, 3, PADDING_MODE_NONE, v0);
MI_CpuFill8(levelTextBuf, 0xf | (0xf << 4), size);
FontSpecialChars_DrawBattleScreenText(BattleSystem_GetSpecialCharsLevel(healthbox->battleSys), healthbox->level, 3, PADDING_MODE_NONE, levelTextBuf);
void *v7 = G2_GetOBJCharPtr();
u8 *v8, *v9;
void *objCharPtr = G2_GetOBJCharPtr();
u8 *bottomBlock;
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
MI_CpuCopy16((void *)((u32)v7 + Unk_ov16_0226F3EC[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), v1, Unk_ov16_0226F3EC[healthbox->type][0].size);
MI_CpuCopy16((void *)((u32)v7 + Unk_ov16_0226F3EC[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), &v1[size], Unk_ov16_0226F3EC[healthbox->type][1].size);
MI_CpuCopy16((void *)((u32)objCharPtr + sLevelNumberVRAMTransfer[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), tileWorkBuf, sLevelNumberVRAMTransfer[healthbox->type][0].size);
MI_CpuCopy16((void *)((u32)objCharPtr + sLevelNumberVRAMTransfer[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), &tileWorkBuf[size], sLevelNumberVRAMTransfer[healthbox->type][1].size);
v6 = 0;
srcOffset = 0;
for (v5 = 0; v5 < size; v5 += 32) {
for (v4 = 0; v4 < 16; v4++) {
v1[v5 + 16 + v4] = v0[v6];
v1[v5 + v4 + size] = v0[v6 + 16];
v6++;
for (tileOffset = 0; tileOffset < size; tileOffset += 32) {
for (byteIdx = 0; byteIdx < 16; byteIdx++) {
tileWorkBuf[tileOffset + 16 + byteIdx] = levelTextBuf[srcOffset];
tileWorkBuf[tileOffset + byteIdx + size] = levelTextBuf[srcOffset + 16];
srcOffset++;
}
v6 += 16;
srcOffset += 16;
}
v8 = v1;
v9 = &v1[size];
bottomBlock = &tileWorkBuf[size];
MI_CpuCopy16(v8, (void *)((u32)v7 + Unk_ov16_0226F3EC[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F3EC[healthbox->type][0].size);
MI_CpuCopy16(v9, (void *)((u32)v7 + Unk_ov16_0226F3EC[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F3EC[healthbox->type][1].size);
MI_CpuCopy16(tileWorkBuf, (void *)((u32)objCharPtr + sLevelNumberVRAMTransfer[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sLevelNumberVRAMTransfer[healthbox->type][0].size);
MI_CpuCopy16(bottomBlock, (void *)((u32)objCharPtr + sLevelNumberVRAMTransfer[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sLevelNumberVRAMTransfer[healthbox->type][1].size);
Heap_Free(v0);
Heap_Free(v1);
Heap_Free(levelTextBuf);
Heap_Free(tileWorkBuf);
}
static void HealthBox_DrawCurrentHP(HealthBox *healthbox, u32 hp)
{
u8 *v0 = Heap_Alloc(HEAP_ID_BATTLE, 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
u8 *currHPTextBuf = Heap_Alloc(HEAP_ID_BATTLE, 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
NNSG2dImageProxy *imgProxy;
MI_CpuFill8(v0, 0xf | (0xf << 4), 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
FontSpecialChars_DrawBattleScreenText(BattleSystem_GetSpecialCharsHP(healthbox->battleSys), hp, 3, PADDING_MODE_SPACES, v0);
MI_CpuFill8(currHPTextBuf, 0xf | (0xf << 4), 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
FontSpecialChars_DrawBattleScreenText(BattleSystem_GetSpecialCharsHP(healthbox->battleSys), hp, 3, PADDING_MODE_SPACES, currHPTextBuf);
void *v2 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
u8 *v3 = v0;
MI_CpuCopy16(v3, (void *)((u32)v2 + Unk_ov16_0226F41C[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F41C[healthbox->type][0].size);
MI_CpuCopy16(&v3[Unk_ov16_0226F41C[healthbox->type][0].size], (void *)((u32)v2 + Unk_ov16_0226F41C[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F41C[healthbox->type][1].size);
MI_CpuCopy16(currHPTextBuf, (void *)((u32)objCharPtr + sCurrentHPNumberVRAMTransfer[healthbox->type][0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sCurrentHPNumberVRAMTransfer[healthbox->type][0].size);
MI_CpuCopy16(&currHPTextBuf[sCurrentHPNumberVRAMTransfer[healthbox->type][0].size], (void *)((u32)objCharPtr + sCurrentHPNumberVRAMTransfer[healthbox->type][1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sCurrentHPNumberVRAMTransfer[healthbox->type][1].size);
Heap_Free(v0);
Heap_Free(currHPTextBuf);
}
static void HealthBox_DrawMaxHP(HealthBox *healthbox)
{
u8 *v0 = Heap_Alloc(HEAP_ID_BATTLE, 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
u8 *maxHPTextBuf = Heap_Alloc(HEAP_ID_BATTLE, 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
NNSG2dImageProxy *imgProxy;
MI_CpuFill8(v0, 0xf | (0xf << 4), 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
FontSpecialChars_DrawBattleScreenText(BattleSystem_GetSpecialCharsHP(healthbox->battleSys), healthbox->maxHP, 3, PADDING_MODE_NONE, v0);
MI_CpuFill8(maxHPTextBuf, 0xf | (0xf << 4), 3 * HEALTHBOX_WINDOW_BLOCK_SIZE);
FontSpecialChars_DrawBattleScreenText(BattleSystem_GetSpecialCharsHP(healthbox->battleSys), healthbox->maxHP, 3, PADDING_MODE_NONE, maxHPTextBuf);
void *v2 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
u8 *v3 = v0;
MI_CpuCopy16(v3, (void *)((u32)v2 + Unk_ov16_0226F3BC[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F3BC[healthbox->type].size);
MI_CpuCopy16(maxHPTextBuf, (void *)((u32)objCharPtr + sMaxHPNumberVRAMTransfer[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sMaxHPNumberVRAMTransfer[healthbox->type].size);
Heap_Free(v0);
Heap_Free(maxHPTextBuf);
}
static void HealthBox_DrawCaughtIcon(HealthBox *healthbox)
@ -1283,10 +1280,10 @@ static void HealthBox_DrawCaughtIcon(HealthBox *healthbox)
tileNum = GetHealthBoxPartsTile(HEALTHBOX_PART_STATUS_HEALTHY_0);
}
void *v2 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F38C[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F38C[healthbox->type].size);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sCaughtIconVRAMTransfer[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sCaughtIconVRAMTransfer[healthbox->type].size);
}
static void HealthBox_DrawStatusIcon(HealthBox *healthbox, enum HealthBoxPart part)
@ -1294,16 +1291,16 @@ static void HealthBox_DrawStatusIcon(HealthBox *healthbox, enum HealthBoxPart pa
NNSG2dImageProxy *imgProxy;
const u8 *tileNum = GetHealthBoxPartsTile(part);
void *v2 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
MI_CpuCopy16(tileNum, (void *)((u32)v2 + Unk_ov16_0226F35C[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F35C[healthbox->type].size);
MI_CpuCopy16(tileNum, (void *)((u32)objCharPtr + sStatusIconVRAMTransfer[healthbox->type].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sStatusIconVRAMTransfer[healthbox->type].size);
}
static void HealthBox_DrawBallCount(HealthBox *healthbox, u32 flags)
{
BgConfig *bgConfig = BattleSystem_GetBgConfig(healthbox->battleSys);
u8 *v1;
u8 *topRow;
NNSG2dImageProxy *imgProxy;
Window window;
MessageLoader *msgLoader = BattleSystem_GetMessageLoader(healthbox->battleSys);
@ -1318,18 +1315,17 @@ static void HealthBox_DrawBallCount(HealthBox *healthbox, u32 flags)
Window_AddToTopLeftCorner(bgConfig, &window, 13, 2, 0, 0xf);
Text_AddPrinterWithParamsColorAndSpacing(&window, FONT_SYSTEM, string, 0, 0, TEXT_SPEED_NO_TRANSFER, HEALTHBOX_NAME_TEXT_COLOR, 0, 0, NULL);
v1 = window.pixels;
topRow = window.pixels;
void *v6 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
u8 *v7 = v1;
u8 *v8 = &v1[13 * HEALTHBOX_WINDOW_BLOCK_SIZE];
u8 *bottomRow = &topRow[13 * HEALTHBOX_WINDOW_BLOCK_SIZE];
MI_CpuCopy16(v7, (void *)((u32)v6 + Unk_ov16_0226F33C[0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F33C[0].size);
MI_CpuCopy16(v8, (void *)((u32)v6 + Unk_ov16_0226F33C[1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F33C[1].size);
MI_CpuCopy16(topRow, (void *)((u32)objCharPtr + sBallCountVRAMTransfer[0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallCountVRAMTransfer[0].size);
MI_CpuCopy16(bottomRow, (void *)((u32)objCharPtr + sBallCountVRAMTransfer[1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallCountVRAMTransfer[1].size);
MI_CpuCopy16(&v7[Unk_ov16_0226F33C[0].size], (void *)((u32)v6 + Unk_ov16_0226F33C[2].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F33C[2].size);
MI_CpuCopy16(&v8[Unk_ov16_0226F33C[1].size], (void *)((u32)v6 + Unk_ov16_0226F33C[3].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F33C[3].size);
MI_CpuCopy16(&topRow[sBallCountVRAMTransfer[0].size], (void *)((u32)objCharPtr + sBallCountVRAMTransfer[2].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallCountVRAMTransfer[2].size);
MI_CpuCopy16(&bottomRow[sBallCountVRAMTransfer[1].size], (void *)((u32)objCharPtr + sBallCountVRAMTransfer[3].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallCountVRAMTransfer[3].size);
Window_Remove(&window);
String_Free(string);
@ -1338,7 +1334,7 @@ static void HealthBox_DrawBallCount(HealthBox *healthbox, u32 flags)
static void HealthBox_DrawBallsLeftMessage(HealthBox *healthbox, u32 flags)
{
BgConfig *bgConfig = BattleSystem_GetBgConfig(healthbox->battleSys);
u8 *v1;
u8 *topRow;
NNSG2dImageProxy *imgProxy;
Window window;
MessageLoader *msgLoader = BattleSystem_GetMessageLoader(healthbox->battleSys);
@ -1358,17 +1354,16 @@ static void HealthBox_DrawBallsLeftMessage(HealthBox *healthbox, u32 flags)
Window_AddToTopLeftCorner(bgConfig, &window, 13, 2, 0, 0xf);
Text_AddPrinterWithParamsColorAndSpacing(&window, FONT_SYSTEM, string, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(14, 2, 15), 0, 0, NULL);
v1 = window.pixels;
topRow = window.pixels;
void *v8 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
u8 *v9 = v1;
u8 *v10 = &v1[13 * HEALTHBOX_WINDOW_BLOCK_SIZE];
u8 *bottomRow = &topRow[13 * HEALTHBOX_WINDOW_BLOCK_SIZE];
MI_CpuCopy16(v9, (void *)((u32)v8 + Unk_ov16_0226F34C[0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F34C[0].size);
MI_CpuCopy16(v10, (void *)((u32)v8 + Unk_ov16_0226F34C[1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F34C[1].size);
MI_CpuCopy16(&v9[Unk_ov16_0226F34C[0].size], (void *)((u32)v8 + Unk_ov16_0226F34C[2].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F34C[2].size);
MI_CpuCopy16(&v10[Unk_ov16_0226F34C[1].size], (void *)((u32)v8 + Unk_ov16_0226F34C[3].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), Unk_ov16_0226F34C[3].size);
MI_CpuCopy16(topRow, (void *)((u32)objCharPtr + sBallsLeftVRAMTransfer[0].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallsLeftVRAMTransfer[0].size);
MI_CpuCopy16(bottomRow, (void *)((u32)objCharPtr + sBallsLeftVRAMTransfer[1].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallsLeftVRAMTransfer[1].size);
MI_CpuCopy16(&topRow[sBallsLeftVRAMTransfer[0].size], (void *)((u32)objCharPtr + sBallsLeftVRAMTransfer[2].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallsLeftVRAMTransfer[2].size);
MI_CpuCopy16(&bottomRow[sBallsLeftVRAMTransfer[1].size], (void *)((u32)objCharPtr + sBallsLeftVRAMTransfer[3].pos + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), sBallsLeftVRAMTransfer[3].size);
Window_Remove(&window);
String_Free(string);
@ -1416,7 +1411,7 @@ static void DrawGauge(HealthBox *healthbox, u8 gaugeType)
u8 pixels;
u8 level;
const u8 *tileNum;
void *v7 = G2_GetOBJCharPtr();
void *objCharPtr = G2_GetOBJCharPtr();
NNSG2dImageProxy *imgProxy = Sprite_GetImageProxy(healthbox->mainSprite->sprite);
int numBlocks;
@ -1440,13 +1435,13 @@ static void DrawGauge(HealthBox *healthbox, u8 gaugeType)
}
tileNum = GetHealthBoxPartsTile(part);
numBlocks = Unk_ov16_0226F44C[healthbox->type][0].size / HEALTHBOX_WINDOW_BLOCK_SIZE;
numBlocks = sHPGaugeVRAMTransfer[healthbox->type][0].size / HEALTHBOX_WINDOW_BLOCK_SIZE;
for (i = 0; i < HEALTHBOX_HP_CELL_COUNT; i++) {
if (i < numBlocks) {
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)v7 + Unk_ov16_0226F44C[healthbox->type][0].pos + (i * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)objCharPtr + sHPGaugeVRAMTransfer[healthbox->type][0].pos + (i * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
} else {
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)v7 + Unk_ov16_0226F44C[healthbox->type][1].pos + ((i - numBlocks) * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)objCharPtr + sHPGaugeVRAMTransfer[healthbox->type][1].pos + ((i - numBlocks) * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
}
}
break;
@ -1464,9 +1459,9 @@ static void DrawGauge(HealthBox *healthbox, u8 gaugeType)
for (i = 0; i < HEALTHBOX_EXP_CELL_COUNT; i++) {
if (i < 5) {
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)v7 + 1632 + (i * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)objCharPtr + 1632 + (i * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
} else {
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)v7 + 3584 + ((i - 5) * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
MI_CpuCopy16(tileNum + (cells[i] << 5), (void *)((u32)objCharPtr + 3584 + ((i - 5) * HEALTHBOX_WINDOW_BLOCK_SIZE) + imgProxy->vramLocation.baseAddrOfVram[NNS_G2D_VRAM_TYPE_2DMAIN]), HEALTHBOX_WINDOW_BLOCK_SIZE);
}
}
break;
@ -1679,7 +1674,7 @@ u8 HealthBox_Type(int battlerType, u32 battleType)
* @return Address of the SpriteTemplate struct which applies to this
* healthbox type.
*/
static const SpriteTemplate *HealthBox_SpriteTemplate(u8 type)
static const SpriteTemplate *HealthBox_MainSpriteTemplate(u8 type)
{
switch (type) {
case HEALTHBOX_TYPE_PLAYER_SOLO:
@ -1710,7 +1705,7 @@ static const SpriteTemplate *HealthBox_SpriteTemplate(u8 type)
}
}
static const SpriteTemplate *ov16_02268314(u8 type)
static const SpriteTemplate *HealthBox_ArrowSpriteTemplate(u8 type)
{
const SpriteTemplate *spriteTemplate;
@ -1720,7 +1715,7 @@ static const SpriteTemplate *ov16_02268314(u8 type)
case HEALTHBOX_TYPE_PLAYER_SLOT_2:
case HEALTHBOX_TYPE_SAFARI_ZONE:
case HEALTHBOX_TYPE_PAL_PARK:
spriteTemplate = &sHealthBoxTemplate_Unk_ov16_0226F514;
spriteTemplate = &sHealthBoxTemplate_Arrow;
break;
case HEALTHBOX_TYPE_ENEMY_SOLO:
case HEALTHBOX_TYPE_ENEMY_SLOT_1:
@ -1734,59 +1729,59 @@ static const SpriteTemplate *ov16_02268314(u8 type)
return spriteTemplate;
}
void ov16_0226834C(HealthBox *healthbox, u8 *param1)
void Healthbox_StartLevelUpFlash(HealthBox *healthbox, u8 *doneFlag)
{
UnkStruct_ov16_0226834C *v0;
HealthboxLevelUpFlashState *flashState;
*param1 = 0;
*doneFlag = 0;
v0 = Heap_Alloc(HEAP_ID_BATTLE, sizeof(UnkStruct_ov16_0226834C));
MI_CpuClear8(v0, sizeof(UnkStruct_ov16_0226834C));
flashState = Heap_Alloc(HEAP_ID_BATTLE, sizeof(HealthboxLevelUpFlashState));
MI_CpuClear8(flashState, sizeof(HealthboxLevelUpFlashState));
v0->healthbox = healthbox;
v0->unk_04 = param1;
flashState->healthbox = healthbox;
flashState->done = doneFlag;
SysTask_Start(ov16_02268380, v0, 1000);
SysTask_Start(Healthbox_Task_LevelUpFlashAnimation, flashState, 1000);
}
static void ov16_02268380(SysTask *task, void *param1)
static void Healthbox_Task_LevelUpFlashAnimation(SysTask *task, void *param1)
{
UnkStruct_ov16_0226834C *v0 = param1;
SpriteManager *spriteManager = BattleSystem_GetSpriteManager(v0->healthbox->battleSys);
int v2;
PaletteData *paletteData = BattleSystem_GetPaletteData(v0->healthbox->battleSys);
HealthboxLevelUpFlashState *flashState = param1;
SpriteManager *spriteManager = BattleSystem_GetSpriteManager(flashState->healthbox->battleSys);
int plttOffset;
PaletteData *paletteData = BattleSystem_GetPaletteData(flashState->healthbox->battleSys);
switch (v0->state) {
switch (flashState->state) {
case 0:
v2 = SpriteManager_FindPlttResourceOffset(spriteManager, 20007, NNS_G2D_VRAM_TYPE_2DMAIN);
ManagedSprite_SetExplicitPalette(v0->healthbox->mainSprite, v2);
v0->unk_09 = v2;
v0->state++;
plttOffset = SpriteManager_FindPlttResourceOffset(spriteManager, 20007, NNS_G2D_VRAM_TYPE_2DMAIN);
ManagedSprite_SetExplicitPalette(flashState->healthbox->mainSprite, plttOffset);
flashState->paletteOffset = plttOffset;
flashState->state++;
case 1:
v0->unk_0A += 2;
flashState->blendIntensity += 2;
if (v0->unk_0A >= 10) {
v0->unk_0A = 10;
v0->state++;
if (flashState->blendIntensity >= 10) {
flashState->blendIntensity = 10;
flashState->state++;
}
PaletteData_Blend(paletteData, 2, v0->unk_09 * 16 + 0, 16, v0->unk_0A, 0x73a5);
PaletteData_Blend(paletteData, 2, flashState->paletteOffset * 16 + 0, 16, flashState->blendIntensity, 0x73a5);
break;
case 2:
v0->unk_0A -= 2;
flashState->blendIntensity -= 2;
if (v0->unk_0A <= 0) {
v0->unk_0A = 0;
v0->state++;
if (flashState->blendIntensity <= 0) {
flashState->blendIntensity = 0;
flashState->state++;
}
PaletteData_Blend(paletteData, 2, v0->unk_09 * 16 + 0, 16, v0->unk_0A, 0x73a5);
PaletteData_Blend(paletteData, 2, flashState->paletteOffset * 16 + 0, 16, flashState->blendIntensity, 0x73a5);
break;
default:
v2 = SpriteManager_FindPlttResourceOffset(spriteManager, HEALTHBOX_MAIN_PALETTE_RESID, NNS_G2D_VRAM_TYPE_2DMAIN);
ManagedSprite_SetExplicitPalette(v0->healthbox->mainSprite, v2);
plttOffset = SpriteManager_FindPlttResourceOffset(spriteManager, HEALTHBOX_MAIN_PALETTE_RESID, NNS_G2D_VRAM_TYPE_2DMAIN);
ManagedSprite_SetExplicitPalette(flashState->healthbox->mainSprite, plttOffset);
*(v0->unk_04) = 1;
*(flashState->done) = 1;
Heap_Free(param1);
SysTask_Done(task);
@ -1795,38 +1790,38 @@ static void ov16_02268380(SysTask *task, void *param1)
}
}
void ov16_02268468(HealthBox *healthbox)
void ov16_02268468(HealthBox *healthbox) // CLEANUP: does nothing. Remove.
{
return;
}
void ov16_0226846C(HealthBox *healthbox)
void ov16_0226846C(HealthBox *healthbox) // CLEANUP: does nothing. Remove.
{
return;
}
void ov16_02268470(HealthBox *healthbox)
void Healthbox_StartBobAnimation(HealthBox *healthbox)
{
if (healthbox->task_50 != NULL) {
if (healthbox->bobbingAnimTask != NULL) {
return;
}
healthbox->degrees = 0;
healthbox->task_50 = SysTask_Start(ov16_022684BC, healthbox, 1010);
healthbox->bobbingAnimTask = SysTask_Start(Healthbox_Task_Bob, healthbox, 1010);
}
void ov16_02268498(HealthBox *healthbox)
void Healthbox_StopBobAnimation(HealthBox *healthbox)
{
if (healthbox->task_50 != NULL) {
SysTask_Done(healthbox->task_50);
healthbox->task_50 = NULL;
if (healthbox->bobbingAnimTask != NULL) {
SysTask_Done(healthbox->bobbingAnimTask);
healthbox->bobbingAnimTask = NULL;
}
healthbox->degrees = 0;
HealthBox_OffsetPositionXY(healthbox, 0, 0);
}
static void ov16_022684BC(SysTask *task, void *data)
static void Healthbox_Task_Bob(SysTask *task, void *data)
{
HealthBox *healthbox = data;
int y;