summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorengineer124 <engineer124engineer124@gmail.com>2022-04-14 15:07:09 +1000
committerengineer124 <engineer124engineer124@gmail.com>2022-04-14 15:07:09 +1000
commit2f49e3f5c7e970b3fd2d9a98d65caace62ed301d (patch)
tree94a080a93d6ce7d3ce74b222f36c7c45287f0982 /src/code
parentae6ba9d88d0e3cf77d7984dc6fb611d4eaba140c (diff)
Interface_DrawMinigameIcons WIP
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_parameter.c119
1 files changed, 118 insertions, 1 deletions
diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c
index afdabfbb2..9ea40cafa 100644
--- a/src/code/z_parameter.c
+++ b/src/code/z_parameter.c
@@ -550,7 +550,7 @@ void func_8010EBA0(s16 timer, s16 timerId) {
D_801BF8F0 = 0;
}
-// Crazy u64 math
+// u64 nonsense
#ifdef NON_EQUIVALENT
s32 func_8010EC54(s16 timerId) {
u64 time;
@@ -4254,6 +4254,7 @@ void func_8011C808(GlobalContext* globalCtx) {
globalCtx->unk_1887F = 3;
}
+// u64 nonsense
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s")
s32 D_801BFCE4[] = {
@@ -4286,8 +4287,124 @@ void Interface_DrawTimers(GlobalContext* globalCtx);
void Interface_UpdateTimers(GlobalContext* globalCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s")
+#ifdef NON_EQUIVALENT
+void Interface_DrawMinigameIcons(GlobalContext* globalCtx) {
+ InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx;
+ s16 sp42;
+ s16 sp40;
+ s16 sp3E;
+ s16 sp3C;
+ s16 phi_a0;
+ s16 phi_a1;
+
+ func_8012C654(globalCtx->state.gfxCtx);
+
+ if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) {
+ if (interfaceCtx->unk_212 == 8) {
+ gDPLoadTextureBlock(OVERLAY_DISP++, gCarrotIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 16, 16, 0,
+ G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
+ G_TX_NOLOD, G_TX_NOLOD);
+
+ if (interfaceCtx->unk_280 != 0) {
+ sp3C = 200;
+ } else {
+ sp3C = 56;
+ }
+
+ for (sp42 = 1, sp3E = 110; sp42 < 7; sp42++, sp3E += 16) {
+ if ((interfaceCtx->numHorseBoosts == 0) || (interfaceCtx->numHorseBoosts < sp42)) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 150, 255, interfaceCtx->aAlpha);
+ } else {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha);
+ }
+
+ gSPTextureRectangle(OVERLAY_DISP++, (sp3E * 4), (sp3C * 4), (sp3E * 4), ((sp3C + 0x10) * 4),
+ G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400);
+ }
+ }
+
+ if (gSaveContext.minigameState == 1) {
+ gDPPipeSync(OVERLAY_DISP++);
+ gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0,
+ PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
+ sp3E = 0x14;
+ phi_a0 = 0x18;
+ phi_a1 = 0x10;
+ if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
+ sp3C = 0x4B;
+ } else {
+ sp3C = 0x43;
+ }
+
+ if (gSaveContext.save.entranceIndex == 0x8E10) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha);
+ gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
+ gDPLoadTextureBlock(OVERLAY_DISP++, gBeaverRingIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 24, 16, 0,
+ G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
+ G_TX_NOLOD, G_TX_NOLOD);
+ } else {
+ if (globalCtx->sceneNum == 0x54) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 140, 50, interfaceCtx->bAlpha);
+ gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
+ gDPLoadTextureBlock(OVERLAY_DISP++, gSwordTrainingLogIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 24, 16, 0,
+ G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
+ G_TX_NOLOD, G_TX_NOLOD);
+ } else if (globalCtx->sceneNum == 0x37) {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 75, interfaceCtx->bAlpha);
+ gDPSetEnvColor(OVERLAY_DISP++, 55, 55, 0, 255);
+ gDPLoadTextureBlock(OVERLAY_DISP++, gFishermanMinigameTorchIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16,
+ 30, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
+ G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
+ sp3E = 0x18;
+ phi_a0 = 0x10;
+ phi_a1 = 0x1E;
+ } else {
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha);
+ gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
+ gDPLoadTextureBlock(OVERLAY_DISP++, gArcheryScoreIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 24, 16, 0,
+ G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
+ G_TX_NOLOD, G_TX_NOLOD);
+ }
+ }
+
+ gSPTextureRectangle(OVERLAY_DISP++, (sp3E * 4), (sp3C * 4), ((sp3E + phi_a0) * 4), ((sp3C + phi_a1) * 4),
+ G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400);
+ gDPPipeSync(OVERLAY_DISP++);
+ gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha);
+ gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0,
+ 0, PRIMITIVE, 0);
+
+ if (globalCtx->sceneNum == 0x37) {
+ sp3E += 0x14;
+ if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
+ sp3C = 0x57;
+ } else {
+ sp3C = 0x4F;
+ }
+ } else {
+ sp3E += 0x1A;
+ }
+
+ for (sp42 = sp40 = 0; sp42 < 4; sp42++) {
+ if ((sMinigameScoreDigits[sp42] != 0) || (sp40 != 0) || (sp42 >= 3)) {
+ // (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2])
+ OVERLAY_DISP =
+ Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), 8,
+ 0x10, sp3E, sp3C - 2, 9, 0xFA, 0x370, 0x370);
+ sp3E += 9;
+ sp40++;
+ }
+ }
+
+ gDPPipeSync(OVERLAY_DISP++);
+ gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
+ }
+ }
+}
+#else
void Interface_DrawMinigameIcons(GlobalContext* globalCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMinigameIcons.s")
+#endif
// rupeeDigitsFirst
s16 D_801BFD1C[] = { 1, 0, 0, 0 };