Interface_DrawAmmoCount WIP

This commit is contained in:
engineer124
2022-04-13 15:52:39 +10:00
parent 52e886355b
commit 17f710491d
2 changed files with 66 additions and 2 deletions
+2 -2
View File
@@ -42,10 +42,10 @@ typedef enum {
/* 0x0F */ QUEST_SONG_SOARING,
/* 0x10 */ QUEST_SONG_STORMS,
/* 0x11 */ QUEST_SONG_SUN,
/* 0x12 */ QUEST_BOMBERS_NOTEBOOK,
/* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook
/* 0x17 */ QUEST_SKULL_TOKEN = 0x17,
/* 0x18 */ QUEST_SONG_LULLABY_INTRO,
/* 0x19 */ QUEST_UNK_19, // Related to PictoBox
/* 0x19 */ QUEST_UNK_19, // Photo taken from PictoBox
/* 0x1C */ QUEST_HEART_PIECE = 0x1C,
/* 0x1E */ QUEST_HEART_CONTAINER = 0x1E
} QuestItem;
+64
View File
@@ -2955,7 +2955,71 @@ void Interface_DrawItemIconTexture(GlobalContext* globalCtx, void* texture, s16
s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 };
s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 };
#ifdef NON_MATCHING
void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) {
u8 i;
u16 ammo;
OPEN_DISPS(globalCtx->state.gfxCtx);
i = (((button) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, button) : BUTTON_ITEM_EQUIP(0, button)) & 0xFF);
if ((i == ITEM_STICK) || (i == ITEM_NUT) || (i == ITEM_BOMB) || (i == ITEM_BOW) ||
((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) || (i == ITEM_BOMBCHU) || (i == ITEM_POWDER_KEG) ||
(i == ITEM_BEAN) || (i == ITEM_PICTO_BOX)) {
if ((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) {
i = ITEM_BOW;
}
ammo = AMMO(i);
if (i == ITEM_PICTO_BOX) {
if ((((void)0, gSaveContext.save.inventory.questItems) & (gBitFlags[0, QUEST_UNK_19])) == 0) {
ammo = 0;
} else {
ammo = 1;
}
}
gDPPipeSync(OVERLAY_DISP++);
if ((button == 0) && (gSaveContext.minigameState == 1)) {
ammo = globalCtx->interfaceCtx.hbaAmmo;
} else if ((button == 0) && (globalCtx->unk_1887C > 1)) {
ammo = globalCtx->unk_1887C - 1;
} else if (((i == ITEM_BOW) && (AMMO(i) == CUR_CAPACITY(UPG_QUIVER))) ||
((i == ITEM_BOMB) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) ||
((i == ITEM_STICK) && (AMMO(i) == CUR_CAPACITY(UPG_STICKS))) ||
((i == ITEM_NUT) && (AMMO(i) == CUR_CAPACITY(UPG_NUTS))) ||
((i == ITEM_BOMBCHU) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) ||
((i == ITEM_POWDER_KEG) && (ammo == 1)) || ((i == ITEM_PICTO_BOX) && (ammo == 1)) ||
((i == ITEM_BEAN) && (ammo == 20))) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, alpha);
}
if (!ammo) { // TODO: No == 0
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, alpha);
}
for (i = 0; ammo >= 10; i++) {
ammo -= 10;
}
if (i) { // TODO: No != 0
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, D_801BFB04[button],
D_801BFB0C[button], 8, 8, 0x400, 0x400);
}
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8,
D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 0x400, 0x400);
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s")
#endif
void func_80118084(GlobalContext* globalCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118084.s")