Initial Commit

This commit is contained in:
Stardust Sauce 2022-04-02 21:12:02 -04:00
parent 5d967f8e8c
commit d97271c95a
13 changed files with 815 additions and 825 deletions

View File

@ -1,8 +1,8 @@
const char gBuildVersion[] = "DECKARD";
const char gBuildVersion[] = "DECKARD ALFA (1.0.0)";
const char gBuildTeam[] = "github.com/harbourmasters";
#ifdef __TIMESTAMP__
const char gBuildDate[] = __TIMESTAMP__;
#else
const char gBuildDate[] = __DATE__ " " __TIME__;
#endif
const char gBuildMakeOption[] = "";
const char gBuildMakeOption[] = "";

View File

@ -27,6 +27,9 @@
* for the base hearts, while the prim color for the double defense hearts is the white outline. The
* env color for the base hearts is the purple-ish outline, while the env color for the double defense
* hearts is the red color of the hearts.
*
* These are deprecated and no references to them exist in source anymore.
* The Resource Manager now handles these colors.
*/
#define HEARTS_PRIM_R 255

View File

@ -875,6 +875,7 @@
<ClCompile Include="src\overlays\misc\ovl_map_mark_data\z_map_mark_data.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="assets\colors\colorPaths.h" />
<ClInclude Include="include\alloca.h" />
<ClInclude Include="include\bgm.h" />
<ClInclude Include="include\color.h" />

View File

@ -3710,6 +3710,9 @@
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="assets\colors\colorPaths.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="include\macro.inc">

View File

@ -1,5 +1,6 @@
#include "global.h"
#include <textures/do_action_static/do_action_static.h>
#include <colors/colorPaths.h>
void func_80110990(GlobalContext* globalCtx) {
Map_Destroy(globalCtx);
@ -57,8 +58,9 @@ void func_801109B0(GlobalContext* globalCtx) {
}
memcpy(interfaceCtx->doActionSegment, ResourceMgr_LoadTexByName(gAttackDoActionENGTex), 0x300);
//DmaMgr_SendRequest1(interfaceCtx->doActionSegment, (uintptr_t)_do_action_staticSegmentRomStart + doActionOffset, 0x300,
//"../z_construct.c", 174);
// DmaMgr_SendRequest1(interfaceCtx->doActionSegment, (uintptr_t)_do_action_staticSegmentRomStart + doActionOffset,
// 0x300,
//"../z_construct.c", 174);
if (gSaveContext.language == LANGUAGE_ENG) {
doActionOffset = 0x480;
@ -69,8 +71,8 @@ void func_801109B0(GlobalContext* globalCtx) {
}
memcpy(interfaceCtx->doActionSegment + 0x300, ResourceMgr_LoadTexByName(gReturnDoActionENGTex), 0x180);
//DmaMgr_SendRequest1(interfaceCtx->doActionSegment + 0x300, (uintptr_t)_do_action_staticSegmentRomStart + doActionOffset,
//0x180, "../z_construct.c", 178);
// DmaMgr_SendRequest1(interfaceCtx->doActionSegment + 0x300, (uintptr_t)_do_action_staticSegmentRomStart +
// doActionOffset, 0x180, "../z_construct.c", 178);
interfaceCtx->iconItemSegment = GameState_Alloc(&globalCtx->state, 0x4000, "../z_construct.c", 190);
@ -154,17 +156,20 @@ void func_801109B0(GlobalContext* globalCtx) {
interfaceCtx->unk_23C = interfaceCtx->unk_242 = 0;
Color_RGB8 buttonColor;
R_ITEM_BTN_X(0) = B_BUTTON_X;
R_B_BTN_COLOR(0) = 255;
R_B_BTN_COLOR(1) = 30;
R_B_BTN_COLOR(2) = 30;
buttonColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnB);
R_B_BTN_COLOR(0) = buttonColor.r;
R_B_BTN_COLOR(1) = buttonColor.g;
R_B_BTN_COLOR(2) = buttonColor.b;
R_ITEM_ICON_X(0) = B_BUTTON_X;
R_ITEM_AMMO_X(0) = B_BUTTON_X + 2;
R_A_BTN_X = A_BUTTON_X;
R_A_ICON_X = A_BUTTON_X;
R_A_BTN_COLOR(0) = 0;
R_A_BTN_COLOR(1) = 200;
R_A_BTN_COLOR(2) = 50;
buttonColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnA);
R_A_BTN_COLOR(0) = buttonColor.r;
R_A_BTN_COLOR(1) = buttonColor.g;
R_A_BTN_COLOR(2) = buttonColor.b;
}
void Message_Init(GlobalContext* globalCtx) {
@ -195,6 +200,7 @@ void Message_Init(GlobalContext* globalCtx) {
}
void func_80111070(void) {
Color_RGB8 color;
YREG(8) = 10;
YREG(14) = 0;
YREG(15) = 0;
@ -266,9 +272,10 @@ void func_80111070(void) {
YREG(93) = 6;
YREG(94) = 3;
YREG(95) = 1;
R_MAGIC_FILL_COLOR(0) = 0;
R_MAGIC_FILL_COLOR(1) = 200;
R_MAGIC_FILL_COLOR(2) = 0;
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorMagicFillNormal);
R_MAGIC_FILL_COLOR(0) = color.r;
R_MAGIC_FILL_COLOR(1) = color.g;
R_MAGIC_FILL_COLOR(2) = color.b;
ZREG(9) = 140;
ZREG(10) = 200;
ZREG(11) = 0;
@ -298,9 +305,10 @@ void func_80111070(void) {
ZREG(36) = 0;
ZREG(37) = 0;
ZREG(38) = 0;
R_C_BTN_COLOR(0) = 255;
R_C_BTN_COLOR(1) = 160;
R_C_BTN_COLOR(2) = 0;
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCLeft);
R_C_BTN_COLOR(0) = color.r; // Deprecated.
R_C_BTN_COLOR(1) = color.g; // All references to this reg are now removed.
R_C_BTN_COLOR(2) = color.b; // Use the colorBtnC directional assets to change colors.
ZREG(46) = 1;
ZREG(47) = 1;
R_START_LABEL_DD(0) = 100;
@ -524,9 +532,10 @@ void func_80111070(void) {
R_COMPASS_SCALE_Y = 32;
R_COMPASS_OFFSET_X = 110;
R_COMPASS_OFFSET_Y = -740;
R_MINIMAP_COLOR(0) = 0;
R_MINIMAP_COLOR(1) = 255;
R_MINIMAP_COLOR(2) = 255;
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorMinimap);
R_MINIMAP_COLOR(0) = color.r;
R_MINIMAP_COLOR(1) = color.g;
R_MINIMAP_COLOR(2) = color.b;
}
VREG(21) = 0;
@ -542,13 +551,10 @@ void func_80111070(void) {
VREG(31) = 0;
VREG(32) = 0;
R_TEXT_ADJUST_COLOR_1_R = 70;
R_TEXT_ADJUST_COLOR_1_G = 255;
R_TEXT_ADJUST_COLOR_1_B = 80;
R_TEXT_ADJUST_COLOR_2_R = 70;
R_TEXT_ADJUST_COLOR_2_G = 255;
R_TEXT_ADJUST_COLOR_2_B = 80;
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTextAdjustableDefault);
R_TEXT_ADJUST_COLOR_1_R = R_TEXT_ADJUST_COLOR_2_R = color.r;
R_TEXT_ADJUST_COLOR_1_G = R_TEXT_ADJUST_COLOR_2_G = color.g;
R_TEXT_ADJUST_COLOR_1_B = R_TEXT_ADJUST_COLOR_2_B = color.b;
VREG(40) = 9;
VREG(42) = 250;

View File

@ -1,117 +1,113 @@
#include "global.h"
#include "textures/parameter_static/parameter_static.h"
#include <colors/colorPaths.h>
static s16 sHeartsPrimColors[3][3] = {
{ HEARTS_PRIM_R, HEARTS_PRIM_G, HEARTS_PRIM_B },
{ HEARTS_BURN_PRIM_R, HEARTS_BURN_PRIM_G, HEARTS_BURN_PRIM_B }, // unused
{ HEARTS_DROWN_PRIM_R, HEARTS_DROWN_PRIM_G, HEARTS_DROWN_PRIM_B }, // unused
};
static s16 sHeartsEnvColors[3][3] = {
{ HEARTS_ENV_R, HEARTS_ENV_G, HEARTS_ENV_B },
{ HEARTS_BURN_ENV_R, HEARTS_BURN_ENV_G }, // unused
{ HEARTS_DROWN_ENV_R, HEARTS_DROWN_ENV_G, HEARTS_DROWN_ENV_B }, // unused
};
static s16 sHeartsPrimFactors[3][3] = {
{
HEARTS_PRIM_R - HEARTS_PRIM_R,
HEARTS_PRIM_G - HEARTS_PRIM_G,
HEARTS_PRIM_B - HEARTS_PRIM_B,
},
// unused
{
HEARTS_BURN_PRIM_R - HEARTS_PRIM_R,
HEARTS_BURN_PRIM_G - HEARTS_PRIM_G,
HEARTS_BURN_PRIM_B - HEARTS_PRIM_B,
},
// unused
{
HEARTS_DROWN_PRIM_R - HEARTS_PRIM_R,
HEARTS_DROWN_PRIM_G - HEARTS_PRIM_G,
HEARTS_DROWN_PRIM_B - HEARTS_PRIM_B,
},
};
static s16 sHeartsEnvFactors[3][3] = {
{
HEARTS_ENV_R - HEARTS_ENV_R,
HEARTS_ENV_G - HEARTS_ENV_G,
HEARTS_ENV_B - HEARTS_ENV_B,
},
// unused
{
HEARTS_BURN_ENV_R - HEARTS_ENV_R,
HEARTS_BURN_ENV_G - HEARTS_ENV_G,
HEARTS_BURN_ENV_B - HEARTS_ENV_B,
},
// unused
{
HEARTS_DROWN_ENV_R - HEARTS_ENV_R,
HEARTS_DROWN_ENV_G - HEARTS_ENV_G,
HEARTS_DROWN_ENV_B - HEARTS_ENV_B,
},
};
static s16 sHeartsDDPrimColors[3][3] = {
{ HEARTS_DD_PRIM_R, HEARTS_DD_PRIM_G, HEARTS_DD_PRIM_B },
{ HEARTS_BURN_PRIM_R, HEARTS_BURN_PRIM_G, HEARTS_BURN_PRIM_B }, // unused
{ HEARTS_DROWN_PRIM_R, HEARTS_DROWN_PRIM_G, HEARTS_DROWN_PRIM_B }, // unused
};
static s16 sHeartsDDEnvColors[3][3] = {
{ HEARTS_DD_ENV_R, HEARTS_DD_ENV_G, HEARTS_DD_ENV_B },
{ HEARTS_BURN_ENV_R, HEARTS_BURN_ENV_G, HEARTS_BURN_ENV_B }, // unused
{ HEARTS_DROWN_ENV_R, HEARTS_DROWN_ENV_G, HEARTS_DROWN_ENV_B }, // unused
};
static s16 sHeartsDDPrimFactors[3][3] = {
{
HEARTS_DD_PRIM_R - HEARTS_DD_PRIM_R,
HEARTS_DD_PRIM_G - HEARTS_DD_PRIM_G,
HEARTS_DD_PRIM_B - HEARTS_DD_PRIM_B,
},
// unused
{
HEARTS_BURN_PRIM_R - HEARTS_DD_PRIM_R,
HEARTS_BURN_PRIM_G - HEARTS_DD_PRIM_G,
HEARTS_BURN_PRIM_B - HEARTS_DD_PRIM_B,
},
// unused
{
HEARTS_DROWN_PRIM_R - HEARTS_DD_PRIM_R,
HEARTS_DROWN_PRIM_G - HEARTS_DD_PRIM_G,
HEARTS_DROWN_PRIM_B - HEARTS_DD_PRIM_B,
},
};
static s16 sHeartsDDEnvFactors[3][3] = {
{
HEARTS_DD_ENV_R - HEARTS_DD_ENV_R,
HEARTS_DD_ENV_G - HEARTS_DD_ENV_G,
HEARTS_DD_ENV_B - HEARTS_DD_ENV_B,
},
// unused
{
HEARTS_BURN_ENV_R - HEARTS_DD_ENV_R,
HEARTS_BURN_ENV_G - HEARTS_DD_ENV_G,
HEARTS_BURN_ENV_B - HEARTS_DD_ENV_B,
},
// unused
{
HEARTS_DROWN_ENV_R - HEARTS_DD_ENV_R,
HEARTS_DROWN_ENV_G - HEARTS_DD_ENV_G,
HEARTS_DROWN_ENV_B - HEARTS_DD_ENV_B,
},
};
static Color_RGB8 sHeartsPrimColors[3];
static Color_RGB8 sHeartsEnvColors[3];
static Color_RGB8 sHeartsPrimFactors[3];
static Color_RGB8 sHeartsEnvFactors[3];
static Color_RGB8 sHeartsDDPrimColors[3];
static Color_RGB8 sHeartsDDEnvColors[3];
static Color_RGB8 sHeartsDDPrimFactors[3];
static Color_RGB8 sHeartsDDEnvFactors[3];
// Current colors for the double defense hearts
s16 sBeatingHeartsDDPrim[3];
s16 sBeatingHeartsDDEnv[3];
s16 sHeartsDDPrim[2][3];
s16 sHeartsDDEnv[2][3];
Color_RGB8 sBeatingHeartsDDPrim;
Color_RGB8 sBeatingHeartsDDEnv;
Color_RGB8 sHeartsDDPrim[2];
Color_RGB8 sHeartsDDEnv[2];
void HealthMeter_Init(GlobalContext* globalCtx) {
Color_RGB8 heartPrimColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorHeartFill);
Color_RGB8 heartEnvColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorHeartOutline);
Color_RGB8 heartDDPrimColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorHeartDDOutline);
Color_RGB8 heartDDEnvColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorHeartDDFill);
Color_RGB8 heartBurnPrimColor = { HEARTS_BURN_PRIM_R, HEARTS_BURN_PRIM_G, HEARTS_BURN_PRIM_B };
Color_RGB8 heartDrownPrimColor = { HEARTS_BURN_ENV_R, HEARTS_BURN_ENV_G, HEARTS_BURN_ENV_B };
Color_RGB8 heartBurnEnvColor = { HEARTS_DROWN_PRIM_R, HEARTS_DROWN_PRIM_G, HEARTS_DROWN_PRIM_B };
Color_RGB8 heartDrownEnvColor = { HEARTS_DROWN_ENV_R, HEARTS_DROWN_ENV_G, HEARTS_DROWN_ENV_B };
sHeartsPrimColors[0].r = heartPrimColor.r;
sHeartsPrimColors[0].g = heartPrimColor.g;
sHeartsPrimColors[0].b = heartPrimColor.b;
sHeartsPrimColors[1].r = heartBurnPrimColor.r;
sHeartsPrimColors[1].g = heartBurnPrimColor.g;
sHeartsPrimColors[1].b = heartBurnPrimColor.b;
sHeartsPrimColors[2].r = heartDrownPrimColor.r;
sHeartsPrimColors[2].g = heartDrownPrimColor.g;
sHeartsPrimColors[2].b = heartDrownPrimColor.b;
sHeartsEnvColors[0].r = heartEnvColor.r;
sHeartsEnvColors[0].g = heartEnvColor.g;
sHeartsEnvColors[0].b = heartEnvColor.b;
sHeartsEnvColors[1].r = heartBurnEnvColor.r;
sHeartsEnvColors[1].g = heartBurnEnvColor.g;
sHeartsEnvColors[1].b = heartBurnEnvColor.b;
sHeartsEnvColors[2].r = heartDrownEnvColor.r;
sHeartsEnvColors[2].g = heartDrownEnvColor.g;
sHeartsEnvColors[2].b = heartDrownEnvColor.b;
sHeartsPrimFactors[0].r = heartPrimColor.r - heartPrimColor.r;
sHeartsPrimFactors[0].g = heartPrimColor.g - heartPrimColor.g;
sHeartsPrimFactors[0].b = heartPrimColor.b - heartPrimColor.b;
sHeartsPrimFactors[1].r = heartBurnPrimColor.r - heartPrimColor.r;
sHeartsPrimFactors[1].g = heartBurnPrimColor.g - heartPrimColor.g;
sHeartsPrimFactors[1].b = heartBurnPrimColor.b - heartPrimColor.b;
sHeartsPrimFactors[2].r = heartDrownPrimColor.r - heartPrimColor.r;
sHeartsPrimFactors[2].g = heartDrownPrimColor.g - heartPrimColor.g;
sHeartsPrimFactors[2].b = heartDrownPrimColor.b - heartPrimColor.b;
sHeartsEnvFactors[0].r = heartEnvColor.r - heartEnvColor.r;
sHeartsEnvFactors[0].g = heartEnvColor.g - heartEnvColor.g;
sHeartsEnvFactors[0].b = heartEnvColor.b - heartEnvColor.b;
sHeartsEnvFactors[1].r = heartBurnEnvColor.r - heartEnvColor.r;
sHeartsEnvFactors[1].g = heartBurnEnvColor.g - heartEnvColor.g;
sHeartsEnvFactors[1].b = heartBurnEnvColor.b - heartEnvColor.b;
sHeartsEnvFactors[2].r = heartDrownEnvColor.r - heartEnvColor.r;
sHeartsEnvFactors[2].g = heartDrownEnvColor.g - heartEnvColor.g;
sHeartsEnvFactors[2].b = heartDrownEnvColor.b - heartEnvColor.b;
sHeartsDDPrimColors[0].r = heartDDPrimColor.r;
sHeartsDDPrimColors[0].g = heartDDPrimColor.g;
sHeartsDDPrimColors[0].b = heartDDPrimColor.b;
sHeartsDDPrimColors[1].r = heartBurnPrimColor.r;
sHeartsDDPrimColors[1].g = heartBurnPrimColor.g;
sHeartsDDPrimColors[1].b = heartBurnPrimColor.b;
sHeartsDDPrimColors[2].r = heartDrownPrimColor.r;
sHeartsDDPrimColors[2].g = heartDrownPrimColor.g;
sHeartsDDPrimColors[2].b = heartDrownPrimColor.b;
sHeartsDDEnvColors[0].r = heartDDEnvColor.r;
sHeartsDDEnvColors[0].g = heartDDEnvColor.g;
sHeartsDDEnvColors[0].b = heartDDEnvColor.b;
sHeartsDDEnvColors[1].r = heartBurnEnvColor.r;
sHeartsDDEnvColors[1].g = heartBurnEnvColor.g;
sHeartsDDEnvColors[1].b = heartBurnEnvColor.b;
sHeartsDDEnvColors[2].r = heartDrownEnvColor.r;
sHeartsDDEnvColors[2].g = heartDrownEnvColor.g;
sHeartsDDEnvColors[2].b = heartDrownEnvColor.b;
sHeartsDDPrimFactors[0].r = heartDDPrimColor.r - heartDDPrimColor.r;
sHeartsDDPrimFactors[0].g = heartDDPrimColor.g - heartDDPrimColor.g;
sHeartsDDPrimFactors[0].b = heartDDPrimColor.b - heartDDPrimColor.b;
sHeartsDDPrimFactors[1].r = heartBurnPrimColor.r - heartDDPrimColor.r;
sHeartsDDPrimFactors[1].g = heartBurnPrimColor.g - heartDDPrimColor.g;
sHeartsDDPrimFactors[1].b = heartBurnPrimColor.b - heartDDPrimColor.b;
sHeartsDDPrimFactors[2].r = heartDrownPrimColor.r - heartDDPrimColor.r;
sHeartsDDPrimFactors[2].g = heartDrownPrimColor.g - heartDDPrimColor.g;
sHeartsDDPrimFactors[2].b = heartDrownPrimColor.b - heartDDPrimColor.b;
sHeartsDDEnvFactors[0].r = heartDDEnvColor.r - heartDDEnvColor.r;
sHeartsDDEnvFactors[0].g = heartDDEnvColor.g - heartDDEnvColor.g;
sHeartsDDEnvFactors[0].b = heartDDEnvColor.b - heartDDEnvColor.b;
sHeartsDDEnvFactors[1].r = heartBurnEnvColor.r - heartDDEnvColor.r;
sHeartsDDEnvFactors[1].g = heartBurnEnvColor.g - heartDDEnvColor.g;
sHeartsDDEnvFactors[1].b = heartBurnEnvColor.b - heartDDEnvColor.b;
sHeartsDDEnvFactors[2].r = heartDrownEnvColor.r - heartDDEnvColor.r;
sHeartsDDEnvFactors[2].g = heartDrownEnvColor.g - heartDDEnvColor.g;
sHeartsDDEnvFactors[2].b = heartDrownEnvColor.b - heartDDEnvColor.b;
InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx;
interfaceCtx->unk_228 = 0x140;
@ -119,29 +115,29 @@ void HealthMeter_Init(GlobalContext* globalCtx) {
interfaceCtx->unk_22A = interfaceCtx->unk_1FE = 0;
interfaceCtx->unk_22C = interfaceCtx->unk_200 = 0;
interfaceCtx->heartsPrimR[0] = HEARTS_PRIM_R;
interfaceCtx->heartsPrimG[0] = HEARTS_PRIM_G;
interfaceCtx->heartsPrimB[0] = HEARTS_PRIM_B;
interfaceCtx->heartsPrimR[0] = heartPrimColor.r;
interfaceCtx->heartsPrimG[0] = heartPrimColor.g;
interfaceCtx->heartsPrimB[0] = heartPrimColor.b;
interfaceCtx->heartsEnvR[0] = HEARTS_ENV_R;
interfaceCtx->heartsEnvG[0] = HEARTS_ENV_G;
interfaceCtx->heartsEnvB[0] = HEARTS_ENV_B;
interfaceCtx->heartsEnvR[0] = heartEnvColor.r;
interfaceCtx->heartsEnvG[0] = heartEnvColor.g;
interfaceCtx->heartsEnvB[0] = heartEnvColor.b;
interfaceCtx->heartsPrimR[1] = HEARTS_PRIM_R;
interfaceCtx->heartsPrimG[1] = HEARTS_PRIM_G;
interfaceCtx->heartsPrimB[1] = HEARTS_PRIM_B;
interfaceCtx->heartsPrimR[1] = heartPrimColor.r;
interfaceCtx->heartsPrimG[1] = heartPrimColor.g;
interfaceCtx->heartsPrimB[1] = heartPrimColor.b;
interfaceCtx->heartsEnvR[1] = HEARTS_ENV_R;
interfaceCtx->heartsEnvG[1] = HEARTS_ENV_G;
interfaceCtx->heartsEnvB[1] = HEARTS_ENV_B;
interfaceCtx->heartsEnvR[1] = heartEnvColor.r;
interfaceCtx->heartsEnvG[1] = heartEnvColor.g;
interfaceCtx->heartsEnvB[1] = heartEnvColor.b;
sHeartsDDPrim[0][0] = sHeartsDDPrim[1][0] = HEARTS_DD_PRIM_R;
sHeartsDDPrim[0][1] = sHeartsDDPrim[1][1] = HEARTS_DD_PRIM_G;
sHeartsDDPrim[0][2] = sHeartsDDPrim[1][2] = HEARTS_DD_PRIM_B;
sHeartsDDPrim[0].r = sHeartsDDPrim[1].r = heartDDPrimColor.r;
sHeartsDDPrim[0].g = sHeartsDDPrim[1].g = heartDDPrimColor.g;
sHeartsDDPrim[0].b = sHeartsDDPrim[1].b = heartDDPrimColor.b;
sHeartsDDEnv[0][0] = sHeartsDDEnv[1][0] = HEARTS_DD_ENV_R;
sHeartsDDEnv[0][1] = sHeartsDDEnv[1][1] = HEARTS_DD_ENV_G;
sHeartsDDEnv[0][2] = sHeartsDDEnv[1][2] = HEARTS_DD_ENV_B;
sHeartsDDEnv[0].r = sHeartsDDEnv[1].r = heartDDEnvColor.r;
sHeartsDDEnv[0].g = sHeartsDDEnv[1].g = heartDDEnvColor.g;
sHeartsDDEnv[0].b = sHeartsDDEnv[1].b = heartDDEnvColor.b;
}
void HealthMeter_Update(GlobalContext* globalCtx) {
@ -172,72 +168,72 @@ void HealthMeter_Update(GlobalContext* globalCtx) {
ddFactor = factor;
interfaceCtx->heartsPrimR[0] = HEARTS_PRIM_R;
interfaceCtx->heartsPrimG[0] = HEARTS_PRIM_G;
interfaceCtx->heartsPrimB[0] = HEARTS_PRIM_B;
interfaceCtx->heartsPrimR[0] = sHeartsPrimColors[0].r;
interfaceCtx->heartsPrimG[0] = sHeartsPrimColors[0].g;
interfaceCtx->heartsPrimB[0] = sHeartsPrimColors[0].b;
interfaceCtx->heartsEnvR[0] = HEARTS_ENV_R;
interfaceCtx->heartsEnvG[0] = HEARTS_ENV_G;
interfaceCtx->heartsEnvB[0] = HEARTS_ENV_B;
interfaceCtx->heartsEnvR[0] = sHeartsEnvColors[0].r;
interfaceCtx->heartsEnvG[0] = sHeartsEnvColors[0].g;
interfaceCtx->heartsEnvB[0] = sHeartsEnvColors[0].b;
interfaceCtx->heartsPrimR[1] = sHeartsPrimColors[type][0];
interfaceCtx->heartsPrimG[1] = sHeartsPrimColors[type][1];
interfaceCtx->heartsPrimB[1] = sHeartsPrimColors[type][2];
interfaceCtx->heartsPrimR[1] = sHeartsPrimColors[type].r;
interfaceCtx->heartsPrimG[1] = sHeartsPrimColors[type].g;
interfaceCtx->heartsPrimB[1] = sHeartsPrimColors[type].b;
interfaceCtx->heartsEnvR[1] = sHeartsEnvColors[type][0];
interfaceCtx->heartsEnvG[1] = sHeartsEnvColors[type][1];
interfaceCtx->heartsEnvB[1] = sHeartsEnvColors[type][2];
interfaceCtx->heartsEnvR[1] = sHeartsEnvColors[type].r;
interfaceCtx->heartsEnvG[1] = sHeartsEnvColors[type].g;
interfaceCtx->heartsEnvB[1] = sHeartsEnvColors[type].b;
rFactor = sHeartsPrimFactors[0][0] * factor;
gFactor = sHeartsPrimFactors[0][1] * factor;
bFactor = sHeartsPrimFactors[0][2] * factor;
rFactor = sHeartsPrimFactors[0].r * factor;
gFactor = sHeartsPrimFactors[0].g * factor;
bFactor = sHeartsPrimFactors[0].b * factor;
interfaceCtx->beatingHeartPrim[0] = (u8)(rFactor + HEARTS_PRIM_R) & 0xFF;
interfaceCtx->beatingHeartPrim[1] = (u8)(gFactor + HEARTS_PRIM_G) & 0xFF;
interfaceCtx->beatingHeartPrim[2] = (u8)(bFactor + HEARTS_PRIM_B) & 0xFF;
interfaceCtx->beatingHeartPrim[0] = (u8)(rFactor + sHeartsPrimColors[0].r) & 0xFF;
interfaceCtx->beatingHeartPrim[1] = (u8)(gFactor + sHeartsPrimColors[0].g) & 0xFF;
interfaceCtx->beatingHeartPrim[2] = (u8)(bFactor + sHeartsPrimColors[0].b) & 0xFF;
rFactor = sHeartsEnvFactors[0][0] * factor;
gFactor = sHeartsEnvFactors[0][1] * factor;
bFactor = sHeartsEnvFactors[0][2] * factor;
rFactor = sHeartsEnvFactors[0].r * factor;
gFactor = sHeartsEnvFactors[0].g * factor;
bFactor = sHeartsEnvFactors[0].b * factor;
if (1) {}
ddType = type;
interfaceCtx->beatingHeartEnv[0] = (u8)(rFactor + HEARTS_ENV_R) & 0xFF;
interfaceCtx->beatingHeartEnv[1] = (u8)(gFactor + HEARTS_ENV_G) & 0xFF;
interfaceCtx->beatingHeartEnv[2] = (u8)(bFactor + HEARTS_ENV_B) & 0xFF;
interfaceCtx->beatingHeartEnv[0] = (u8)(rFactor + sHeartsEnvColors[0].r) & 0xFF;
interfaceCtx->beatingHeartEnv[1] = (u8)(gFactor + sHeartsEnvColors[0].g) & 0xFF;
interfaceCtx->beatingHeartEnv[2] = (u8)(bFactor + sHeartsEnvColors[0].b) & 0xFF;
sHeartsDDPrim[0][0] = HEARTS_DD_PRIM_R;
sHeartsDDPrim[0][1] = HEARTS_DD_PRIM_G;
sHeartsDDPrim[0][2] = HEARTS_DD_PRIM_B;
sHeartsDDPrim[0].r = sHeartsDDPrimColors[0].r;
sHeartsDDPrim[0].g = sHeartsDDPrimColors[0].g;
sHeartsDDPrim[0].b = sHeartsDDPrimColors[0].b;
sHeartsDDEnv[0][0] = HEARTS_DD_ENV_R;
sHeartsDDEnv[0][1] = HEARTS_DD_ENV_G;
sHeartsDDEnv[0][2] = HEARTS_DD_ENV_B;
sHeartsDDEnv[0].r = sHeartsDDEnvColors[0].r;
sHeartsDDEnv[0].g = sHeartsDDEnvColors[0].g;
sHeartsDDEnv[0].b = sHeartsDDEnvColors[0].b;
sHeartsDDPrim[1][0] = sHeartsDDPrimColors[ddType][0];
sHeartsDDPrim[1][1] = sHeartsDDPrimColors[ddType][1];
sHeartsDDPrim[1][2] = sHeartsDDPrimColors[ddType][2];
sHeartsDDPrim[1].r = sHeartsDDPrimColors[ddType].r;
sHeartsDDPrim[1].g = sHeartsDDPrimColors[ddType].g;
sHeartsDDPrim[1].b = sHeartsDDPrimColors[ddType].b;
sHeartsDDEnv[1][0] = sHeartsDDEnvColors[ddType][0];
sHeartsDDEnv[1][1] = sHeartsDDEnvColors[ddType][1];
sHeartsDDEnv[1][2] = sHeartsDDEnvColors[ddType][2];
sHeartsDDEnv[1].r = sHeartsDDEnvColors[ddType].r;
sHeartsDDEnv[1].g = sHeartsDDEnvColors[ddType].g;
sHeartsDDEnv[1].b = sHeartsDDEnvColors[ddType].b;
rFactor = sHeartsDDPrimFactors[ddType][0] * ddFactor;
gFactor = sHeartsDDPrimFactors[ddType][1] * ddFactor;
bFactor = sHeartsDDPrimFactors[ddType][2] * ddFactor;
rFactor = sHeartsDDPrimFactors[ddType].r * ddFactor;
gFactor = sHeartsDDPrimFactors[ddType].g * ddFactor;
bFactor = sHeartsDDPrimFactors[ddType].b * ddFactor;
sBeatingHeartsDDPrim[0] = (u8)(rFactor + HEARTS_DD_PRIM_R) & 0xFF;
sBeatingHeartsDDPrim[1] = (u8)(gFactor + HEARTS_DD_PRIM_G) & 0xFF;
sBeatingHeartsDDPrim[2] = (u8)(bFactor + HEARTS_DD_PRIM_B) & 0xFF;
sBeatingHeartsDDPrim.r = (u8)(rFactor + sHeartsDDPrimColors[0].r) & 0xFF;
sBeatingHeartsDDPrim.g = (u8)(gFactor + sHeartsDDPrimColors[0].g) & 0xFF;
sBeatingHeartsDDPrim.b = (u8)(bFactor + sHeartsDDPrimColors[0].b) & 0xFF;
rFactor = sHeartsDDEnvFactors[ddType][0] * ddFactor;
gFactor = sHeartsDDEnvFactors[ddType][1] * ddFactor;
bFactor = sHeartsDDEnvFactors[ddType][2] * ddFactor;
rFactor = sHeartsDDEnvFactors[ddType].r * ddFactor;
gFactor = sHeartsDDEnvFactors[ddType].g * ddFactor;
bFactor = sHeartsDDEnvFactors[ddType].b * ddFactor;
sBeatingHeartsDDEnv[0] = (u8)(rFactor + HEARTS_DD_ENV_R) & 0xFF;
sBeatingHeartsDDEnv[1] = (u8)(gFactor + HEARTS_DD_ENV_G) & 0xFF;
sBeatingHeartsDDEnv[2] = (u8)(bFactor + HEARTS_DD_ENV_B) & 0xFF;
sBeatingHeartsDDEnv.r = (u8)(rFactor + sHeartsDDEnvColors[0].r) & 0xFF;
sBeatingHeartsDDEnv.g = (u8)(gFactor + sHeartsDDEnvColors[0].g) & 0xFF;
sBeatingHeartsDDEnv.b = (u8)(bFactor + sHeartsDDEnvColors[0].b) & 0xFF;
}
s32 func_80078E18(GlobalContext* globalCtx) {
@ -378,34 +374,34 @@ void HealthMeter_Draw(GlobalContext* globalCtx) {
if (curColorSet != 4) {
curColorSet = 4;
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sHeartsDDPrim[0][0], sHeartsDDPrim[0][1], sHeartsDDPrim[0][2],
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sHeartsDDPrim[0].r, sHeartsDDPrim[0].g, sHeartsDDPrim[0].b,
interfaceCtx->healthAlpha);
gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[0][0], sHeartsDDEnv[0][1], sHeartsDDEnv[0][2], 255);
gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[0].r, sHeartsDDEnv[0].g, sHeartsDDEnv[0].b, 255);
}
} else if (i == fullHeartCount) {
if (curColorSet != 5) {
curColorSet = 5;
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sBeatingHeartsDDPrim[0], sBeatingHeartsDDPrim[1],
sBeatingHeartsDDPrim[2], interfaceCtx->healthAlpha);
gDPSetEnvColor(OVERLAY_DISP++, sBeatingHeartsDDEnv[0], sBeatingHeartsDDEnv[1],
sBeatingHeartsDDEnv[2], 255);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sBeatingHeartsDDPrim.r, sBeatingHeartsDDPrim.g,
sBeatingHeartsDDPrim.b, interfaceCtx->healthAlpha);
gDPSetEnvColor(OVERLAY_DISP++, sBeatingHeartsDDEnv.r, sBeatingHeartsDDEnv.g,
sBeatingHeartsDDEnv.b, 255);
}
} else if (i > fullHeartCount) {
if (curColorSet != 6) {
curColorSet = 6;
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sHeartsDDPrim[0][0], sHeartsDDPrim[0][1], sHeartsDDPrim[0][2],
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sHeartsDDPrim[0].r, sHeartsDDPrim[0].g, sHeartsDDPrim[0].b,
interfaceCtx->healthAlpha);
gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[0][0], sHeartsDDEnv[0][1], sHeartsDDEnv[0][2], 255);
gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[0].r, sHeartsDDEnv[0].g, sHeartsDDEnv[0].b, 255);
}
} else {
if (curColorSet != 7) {
curColorSet = 7;
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sHeartsDDPrim[1][0], sHeartsDDPrim[1][1], sHeartsDDPrim[1][2],
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sHeartsDDPrim[1].r, sHeartsDDPrim[1].g, sHeartsDDPrim[1].b,
interfaceCtx->healthAlpha);
gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[1][0], sHeartsDDEnv[1][1], sHeartsDDEnv[1][2], 255);
gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[1].r, sHeartsDDEnv[1].g, sHeartsDDEnv[1].b, 255);
}
}

View File

@ -8,6 +8,20 @@
#include "textures/message_static/message_static.h"
#include "textures/message_texture_static/message_texture_static.h"
#include <colors/colorPaths.h>
// Appears frequently in z_message flashing animations.
// "temp" variable is included because it is generally reused between instances of this block.
// This is mathematically equivalent but does not match.Macro was introduced because it
// originally represented a 20 line block and was going to be used an additional 3 times.
#define advanceFlashAnimation(currentColor, targetColor, flashIndex, flashTimer) \
currentColor.r += (currentColor.r >= targetColor[flashIndex].r ? -1 : 1) * \
ABS(currentColor.r - targetColor[flashIndex].r) / flashTimer; \
currentColor.g += (currentColor.g >= targetColor[flashIndex].g ? -1 : 1) * \
ABS(currentColor.g - targetColor[flashIndex].g) / flashTimer; \
currentColor.b += (currentColor.b >= targetColor[flashIndex].b ? -1 : 1) * \
ABS(currentColor.b - targetColor[flashIndex].b) / flashTimer;
s16 sTextFade = false; // original name: key_off_flag ?
u8 D_8014B2F4 = 0;
@ -37,42 +51,42 @@ MessageTableEntry* sStaffMessageEntryTablePtr;
char* _message_0xFFFC_nes;
//MessageTableEntry sNesMessageEntryTable[] = {
//#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \
// MessageTableEntry sNesMessageEntryTable[] = {
//#def ine DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \
// { textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_nes },
//#define DEFINE_MESSAGE_FFFC
//#include "text/message_data.h"
//#undef DEFINE_MESSAGE_FFFC
//#undef DEFINE_MESSAGE
// { 0xFFFF, 0, NULL },
//};
// { 0xFFFF, 0, NULL },
// };
//
//const char* sGerMessageEntryTable[] = {
// const char* sGerMessageEntryTable[] = {
//#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) _message_##textId##_ger,
//#include "text/message_data.h"
//#undef DEFINE_MESSAGE
// NULL,
//};
// NULL,
// };
//
//const char* sFraMessageEntryTable[] = {
// const char* sFraMessageEntryTable[] = {
//#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) _message_##textId##_fra,
//#include "text/message_data.h"
//#undef DEFINE_MESSAGE
// NULL,
//};
// NULL,
// };
//
//MessageTableEntry sStaffMessageEntryTable[] = {
//#define DEFINE_MESSAGE(textId, type, yPos, staffMessage) \
// MessageTableEntry sStaffMessageEntryTable[] = {
//#def ine DEFINE_MESSAGE(textId, type, yPos, staffMessage) \
// { textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_staff },
//#include "text/message_data_staff.h"
//#undef DEFINE_MESSAGE
// { 0xFFFF, 0, NULL },
//};
// { 0xFFFF, 0, NULL },
// };
//MessageTableEntry* sNesMessageEntryTablePtr = sNesMessageEntryTable;
//const char** sGerMessageEntryTablePtr = sGerMessageEntryTable;
//const char** sFraMessageEntryTablePtr = sFraMessageEntryTable;
//MessageTableEntry* sStaffMessageEntryTablePtr = sStaffMessageEntryTable;
// MessageTableEntry* sNesMessageEntryTablePtr = sNesMessageEntryTable;
// const char** sGerMessageEntryTablePtr = sGerMessageEntryTable;
// const char** sFraMessageEntryTablePtr = sFraMessageEntryTable;
// MessageTableEntry* sStaffMessageEntryTablePtr = sStaffMessageEntryTable;
s16 sTextboxBackgroundForePrimColors[][3] = {
{ 255, 255, 255 }, { 50, 20, 0 }, { 255, 60, 0 }, { 255, 255, 255 },
@ -105,18 +119,18 @@ s16 gOcarinaSongItemMap[] = {
s32 sCharTexSize;
s32 sCharTexScale;
s16 sOcarinaNoteAPrimR;
s16 sOcarinaNoteAPrimB;
s16 sOcarinaNoteAPrimG;
s16 sOcarinaNoteAEnvR;
s16 sOcarinaNoteAEnvB;
s16 sOcarinaNoteAEnvG;
s16 sOcarinaNoteCPrimR;
s16 sOcarinaNoteCPrimB;
s16 sOcarinaNoteCPrimG;
s16 sOcarinaNoteCEnvR;
s16 sOcarinaNoteCEnvB;
s16 sOcarinaNoteCEnvG;
Color_RGB8 sOcarinaNoteAPrim;
Color_RGB8 sOcarinaNoteAEnv;
Color_RGB8 sOcarinaNoteCUpPrim;
Color_RGB8 sOcarinaNoteCUpEnv;
Color_RGB8 sOcarinaNoteCRightPrim;
Color_RGB8 sOcarinaNoteCRightEnv;
Color_RGB8 sOcarinaNoteCDownPrim;
Color_RGB8 sOcarinaNoteCDownEnv;
Color_RGB8 sOcarinaNoteCLeftPrim;
Color_RGB8 sOcarinaNoteCLeftEnv;
void Message_ResetOcarinaNoteState(void) {
R_OCARINA_NOTES_YPOS(0) = 189;
@ -128,18 +142,17 @@ void Message_ResetOcarinaNoteState(void) {
sOcarinaNotesAlphaValues[0] = sOcarinaNotesAlphaValues[1] = sOcarinaNotesAlphaValues[2] =
sOcarinaNotesAlphaValues[3] = sOcarinaNotesAlphaValues[4] = sOcarinaNotesAlphaValues[5] =
sOcarinaNotesAlphaValues[6] = sOcarinaNotesAlphaValues[7] = sOcarinaNotesAlphaValues[8] = 0;
sOcarinaNoteAPrimR = 80;
sOcarinaNoteAPrimG = 255;
sOcarinaNoteAPrimB = 150;
sOcarinaNoteAEnvR = 10;
sOcarinaNoteAEnvG = 10;
sOcarinaNoteAEnvB = 10;
sOcarinaNoteCPrimR = 255;
sOcarinaNoteCPrimG = 255;
sOcarinaNoteCPrimB = 50;
sOcarinaNoteCEnvR = 10;
sOcarinaNoteCEnvG = 10;
sOcarinaNoteCEnvB = 10;
Color_RGB8 envColor = { 10, 10, 10 };
sOcarinaNoteAPrim = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteA);
sOcarinaNoteAEnv = envColor;
sOcarinaNoteCUpPrim = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCUp);
sOcarinaNoteCUpEnv = envColor;
sOcarinaNoteCRightPrim = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCRight);
sOcarinaNoteCRightEnv = envColor;
sOcarinaNoteCDownPrim = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCDown);
sOcarinaNoteCDownEnv = envColor;
sOcarinaNoteCLeftPrim = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCLeft);
sOcarinaNoteCLeftEnv = envColor;
}
void Message_UpdateOcarinaGame(GlobalContext* globalCtx) {
@ -234,8 +247,8 @@ void Message_DrawTextChar(GlobalContext* globalCtx, void* textureImage, Gfx** p)
s16 x = msgCtx->textPosX;
s16 y = msgCtx->textPosY;
//gSPInvalidateTexCache(gfx++, 0);
//gSPInvalidateTexCache(gfx++, msgCtx->textboxSegment);
// gSPInvalidateTexCache(gfx++, 0);
// gSPInvalidateTexCache(gfx++, msgCtx->textboxSegment);
gSPInvalidateTexCache(gfx++, textureImage);
gDPPipeSync(gfx++);
@ -309,7 +322,6 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) {
Font* font;
const char* seg;
if (gSaveContext.language == LANGUAGE_ENG) {
seg = messageTableEntry->segment;
@ -319,7 +331,7 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) {
if (messageTableEntry->textId == textId) {
foundSeg = messageTableEntry->segment;
font->charTexBuf[0] = messageTableEntry->typePos;
//messageTableEntry++;
// messageTableEntry++;
nextSeg = messageTableEntry->segment;
font->msgOffset = messageTableEntry->segment;
font->msgLength = messageTableEntry->msgSize;
@ -332,7 +344,8 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) {
messageTableEntry++;
}
} else {
//languageSegmentTable = (gSaveContext.language == LANGUAGE_GER) ? sGerMessageEntryTablePtr : sFraMessageEntryTablePtr; // OTRTODO
// languageSegmentTable = (gSaveContext.language == LANGUAGE_GER) ? sGerMessageEntryTablePtr :
// sFraMessageEntryTablePtr; // OTRTODO
seg = messageTableEntry->segment;
while (messageTableEntry->textId != 0xFFFF) {
@ -366,7 +379,8 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) {
messageTableEntry++;
nextSeg = messageTableEntry->segment;
} else {
//languageSegmentTable = (gSaveContext.language == LANGUAGE_GER) ? sGerMessageEntryTablePtr : sFraMessageEntryTablePtr; // OTRTODO
// languageSegmentTable = (gSaveContext.language == LANGUAGE_GER) ? sGerMessageEntryTablePtr :
// sFraMessageEntryTablePtr; // OTRTODO
foundSeg = *languageSegmentTable;
font->charTexBuf[0] = messageTableEntry->typePos;
languageSegmentTable++;
@ -404,176 +418,94 @@ void Message_FindCreditsMessage(GlobalContext* globalCtx, u16 textId) {
}
void Message_SetTextColor(MessageContext* msgCtx, u16 colorParameter) {
Color_RGB8 color;
bool isWooden = msgCtx->textBoxType == TEXTBOX_TYPE_WOODEN;
bool isNoShadow = msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW;
switch (colorParameter) {
case MSGCOL_RED:
if (msgCtx->textBoxType == TEXTBOX_TYPE_WOODEN) {
msgCtx->textColorR = 255;
msgCtx->textColorG = 120;
msgCtx->textColorB = 0;
} else {
msgCtx->textColorR = 255;
msgCtx->textColorG = 60;
msgCtx->textColorB = 60;
}
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(isWooden ? colorTextWoodenRed : colorTextDefaultRed);
break;
case MSGCOL_ADJUSTABLE:
if (msgCtx->textBoxType == TEXTBOX_TYPE_WOODEN) {
msgCtx->textColorR = R_TEXT_ADJUST_COLOR_1_R;
msgCtx->textColorG = R_TEXT_ADJUST_COLOR_1_G;
msgCtx->textColorB = R_TEXT_ADJUST_COLOR_1_B;
if (isWooden) {
color.r = R_TEXT_ADJUST_COLOR_1_R;
color.g = R_TEXT_ADJUST_COLOR_1_G;
color.b = R_TEXT_ADJUST_COLOR_1_B;
} else {
msgCtx->textColorR = R_TEXT_ADJUST_COLOR_2_R;
msgCtx->textColorG = R_TEXT_ADJUST_COLOR_2_G;
msgCtx->textColorB = R_TEXT_ADJUST_COLOR_2_B;
color.r = R_TEXT_ADJUST_COLOR_2_R;
color.g = R_TEXT_ADJUST_COLOR_2_G;
color.b = R_TEXT_ADJUST_COLOR_2_B;
}
break;
case MSGCOL_BLUE:
if (msgCtx->textBoxType == TEXTBOX_TYPE_WOODEN) {
msgCtx->textColorR = 80;
msgCtx->textColorG = 110;
msgCtx->textColorB = 255;
} else {
msgCtx->textColorR = 80;
msgCtx->textColorG = 90;
msgCtx->textColorB = 255;
}
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(isWooden ? colorTextWoodenBlue : colorTextDefaultBlue);
break;
case MSGCOL_LIGHTBLUE:
if (msgCtx->textBoxType == TEXTBOX_TYPE_WOODEN) {
msgCtx->textColorR = 90;
msgCtx->textColorG = 180;
msgCtx->textColorB = 255;
} else if (msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW) {
msgCtx->textColorR = 80;
msgCtx->textColorG = 150;
msgCtx->textColorB = 180;
if (isWooden) {
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTextWoodenLightBlue);
} else if (isNoShadow) {
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTextNoShadowLightBlue);
} else {
msgCtx->textColorR = 100;
msgCtx->textColorG = 180;
msgCtx->textColorB = 255;
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTextDefaultLightBlue);
}
break;
case MSGCOL_PURPLE:
if (msgCtx->textBoxType == TEXTBOX_TYPE_WOODEN) {
msgCtx->textColorR = 210;
msgCtx->textColorG = 100;
msgCtx->textColorB = 255;
} else {
msgCtx->textColorR = 255;
msgCtx->textColorG = 150;
msgCtx->textColorB = 180;
}
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(isWooden ? colorTextWoodenPurple : colorTextDefaultPurple);
break;
case MSGCOL_YELLOW:
if (msgCtx->textBoxType == TEXTBOX_TYPE_WOODEN) {
msgCtx->textColorR = 255;
msgCtx->textColorG = 255;
msgCtx->textColorB = 30;
} else {
msgCtx->textColorR = 225;
msgCtx->textColorG = 255;
msgCtx->textColorB = 50;
}
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(isWooden ? colorTextWoodenYellow : colorTextDefaultYellow);
break;
case MSGCOL_BLACK:
msgCtx->textColorR = msgCtx->textColorG = msgCtx->textColorB = 0;
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTextDefaultBlack);
break;
case MSGCOL_DEFAULT:
default:
if (msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW) {
msgCtx->textColorR = msgCtx->textColorG = msgCtx->textColorB = 0;
} else {
msgCtx->textColorR = msgCtx->textColorG = msgCtx->textColorB = 255;
}
color =
*(Color_RGB8*)ResourceMgr_LoadBlobByName(isNoShadow ? colorTextDefaultBlack : colorTextDefaultWhite);
break;
}
msgCtx->textColorR = color.r;
msgCtx->textColorG = color.g;
msgCtx->textColorB = color.b;
}
void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) {
static s16 sIconPrimColors[][3] = {
{ 0, 200, 80 },
{ 50, 255, 130 },
Color_RGB8 sIconPrimColors[2] = {
*(Color_RGB8*) ResourceMgr_LoadBlobByName(colorTextStopIconDim),
*(Color_RGB8*) ResourceMgr_LoadBlobByName(colorTextStopIconGlow)
};
static s16 sIconEnvColors[][3] = {
{ 0, 0, 0 },
{ 0, 255, 130 },
Color_RGB8 sIconEnvColors[2] = {
{ 0, 0, 0 },
sIconPrimColors[1]
};
static s16 sIconPrimR = 0;
static s16 sIconPrimG = 200;
static s16 sIconPrimB = 80;
static s16 sIconFlashTimer = 12;
static s16 sIconFlashColorIdx = 0;
static s16 sIconEnvR = 0;
static s16 sIconEnvG = 0;
static s16 sIconEnvB = 0;
static Color_RGB8 sIconPrim;
static Color_RGB8 sIconEnv;
if (sIconEnv.r == NULL || sIconEnv.g == NULL || sIconEnv.b == NULL) {
sIconEnv = sIconEnvColors[0];
}
if (sIconPrim.r == NULL || sIconPrim.g == NULL || sIconPrim.b == NULL) {
sIconPrim = sIconPrimColors[0];
}
MessageContext* msgCtx = &globalCtx->msgCtx;
Font* font = &msgCtx->font;
Gfx* gfx = *p;
s16 primR;
s16 primG;
s16 primB;
s16 envR;
s16 envG;
s16 envB;
u8* iconTexture = font->iconBuf;
if (sTextIsCredits) {
return;
}
primR = (ABS(sIconPrimR - sIconPrimColors[sIconFlashColorIdx][0])) / sIconFlashTimer;
primG = (ABS(sIconPrimG - sIconPrimColors[sIconFlashColorIdx][1])) / sIconFlashTimer;
primB = (ABS(sIconPrimB - sIconPrimColors[sIconFlashColorIdx][2])) / sIconFlashTimer;
if (sIconPrimR >= sIconPrimColors[sIconFlashColorIdx][0]) {
sIconPrimR -= primR;
} else {
sIconPrimR += primR;
}
if (sIconPrimG >= sIconPrimColors[sIconFlashColorIdx][1]) {
sIconPrimG -= primG;
} else {
sIconPrimG += primG;
}
if (sIconPrimB >= sIconPrimColors[sIconFlashColorIdx][2]) {
sIconPrimB -= primB;
} else {
sIconPrimB += primB;
}
envR = (ABS(sIconEnvR - sIconEnvColors[sIconFlashColorIdx][0])) / sIconFlashTimer;
envG = (ABS(sIconEnvG - sIconEnvColors[sIconFlashColorIdx][1])) / sIconFlashTimer;
envB = (ABS(sIconEnvB - sIconEnvColors[sIconFlashColorIdx][2])) / sIconFlashTimer;
if (sIconEnvR >= sIconEnvColors[sIconFlashColorIdx][0]) {
sIconEnvR -= envR;
} else {
sIconEnvR += envR;
}
if (sIconEnvG >= sIconEnvColors[sIconFlashColorIdx][1]) {
sIconEnvG -= envG;
} else {
sIconEnvG += envG;
}
if (sIconEnvB >= sIconEnvColors[sIconFlashColorIdx][2]) {
sIconEnvB -= envB;
} else {
sIconEnvB += envB;
}
advanceFlashAnimation(sIconPrim, sIconPrimColors, sIconFlashColorIdx, sIconFlashTimer);
advanceFlashAnimation(sIconEnv, sIconEnvColors, sIconFlashColorIdx, sIconFlashTimer);
sIconFlashTimer--;
if (sIconFlashTimer == 0) {
sIconPrimR = sIconPrimColors[sIconFlashColorIdx][0];
sIconPrimG = sIconPrimColors[sIconFlashColorIdx][1];
sIconPrimB = sIconPrimColors[sIconFlashColorIdx][2];
sIconEnvR = sIconEnvColors[sIconFlashColorIdx][0];
sIconEnvG = sIconEnvColors[sIconFlashColorIdx][1];
sIconEnvB = sIconEnvColors[sIconFlashColorIdx][2];
sIconPrim = sIconPrimColors[sIconFlashColorIdx];
sIconEnv = sIconEnvColors[sIconFlashColorIdx];
sIconFlashTimer = 12;
sIconFlashColorIdx ^= 1;
}
@ -583,8 +515,8 @@ void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) {
gDPSetCombineLERP(gfx++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE,
ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
gDPSetPrimColor(gfx++, 0, 0, sIconPrimR, sIconPrimG, sIconPrimB, 255);
gDPSetEnvColor(gfx++, sIconEnvR, sIconEnvG, sIconEnvB, 255);
gDPSetPrimColor(gfx++, 0, 0, sIconPrim.r, sIconPrim.g, sIconPrim.b, 255);
gDPSetEnvColor(gfx++, sIconEnv.r, sIconEnv.g, sIconEnv.b, 255);
gDPLoadTextureBlock_4b(gfx++, iconTexture, G_IM_FMT_I, FONT_CHAR_TEX_WIDTH, FONT_CHAR_TEX_HEIGHT, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
@ -763,13 +695,13 @@ u16 Message_DrawItemIcon(GlobalContext* globalCtx, u16 itemId, Gfx** p, u16 i) {
gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, msgCtx->textColorAlpha);
if (itemId >= ITEM_MEDALLION_FOREST) {
gDPLoadTextureBlock(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA, G_IM_SIZ_32b,
24, 24, 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);
gDPLoadTextureBlock(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA,
G_IM_SIZ_32b, 24, 24, 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 {
gDPLoadTextureBlock(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA, G_IM_SIZ_32b,
32, 32, 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);
gDPLoadTextureBlock(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA,
G_IM_SIZ_32b, 32, 32, 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(gfx++, (msgCtx->textPosX + R_TEXTBOX_ICON_XPOS) << 2, R_TEXTBOX_ICON_YPOS << 2,
(msgCtx->textPosX + R_TEXTBOX_ICON_XPOS + R_TEXTBOX_ICON_SIZE) << 2,
@ -874,11 +806,11 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) {
msgCtx->textPosY = YREG(1);
}
if (msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW) {
msgCtx->textColorR = msgCtx->textColorG = msgCtx->textColorB = 0;
} else {
msgCtx->textColorR = msgCtx->textColorG = msgCtx->textColorB = 255;
}
Color_RGB8 textColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(
msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW ? colorTextDefaultBlack : colorTextDefaultWhite);
msgCtx->textColorR = textColor.r;
msgCtx->textColorG = textColor.g;
msgCtx->textColorB = textColor.b;
msgCtx->unk_E3D0 = 0;
charTexIdx = 0;
@ -1011,8 +943,8 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) {
sTextboxBackgroundBackPrimColors[msgCtx->textboxBackgroundBackColorIdx][2],
msgCtx->textColorAlpha);
gDPLoadTextureBlock_4b(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_I, 96, 48,
0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
gDPLoadTextureBlock_4b(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_I,
96, 48, 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(
gfx++, (msgCtx->textPosX + 1) << 2,
@ -1021,9 +953,9 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) {
(R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2,
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
gDPLoadTextureBlock_4b(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900, G_IM_FMT_I,
96, 48, 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);
gDPLoadTextureBlock_4b(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900,
G_IM_FMT_I, 96, 48, 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(
gfx++, (msgCtx->textPosX + 96 + 1) << 2,
(R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2,
@ -1037,8 +969,8 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) {
sTextboxBackgroundForePrimColors[msgCtx->textboxBackgroundForeColorIdx][2],
msgCtx->textColorAlpha);
gDPLoadTextureBlock_4b(gfx++, ((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE), G_IM_FMT_I, 96,
48, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
gDPLoadTextureBlock_4b(gfx++, ((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE), G_IM_FMT_I,
96, 48, 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(gfx++, msgCtx->textPosX << 2, R_TEXTBOX_BG_YPOS << 2, (msgCtx->textPosX + 96) << 2,
(R_TEXTBOX_BG_YPOS + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
@ -1172,7 +1104,7 @@ void Message_LoadItemIcon(GlobalContext* globalCtx, u16 itemId, s16 y) {
R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem24XOffsets[gSaveContext.language];
R_TEXTBOX_ICON_YPOS = y + 10;
R_TEXTBOX_ICON_SIZE = 24;
memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, gItemIcons[itemId], 0x900);
memcpy((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, gItemIcons[itemId], 0x900);
// "Item 24"
osSyncPrintf("アイテム24%d (%d) {%d}\n", itemId, itemId - ITEM_KOKIRI_EMERALD, 84);
}
@ -1635,28 +1567,26 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) {
memcpy(font->msgBuf, src, font->msgLength);
// OTRTODO
//DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)(_staff_message_data_staticSegmentRomStart + 4 + font->msgOffset),
//font->msgLength, "../z_message_PAL.c", 1954);
// DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)(_staff_message_data_staticSegmentRomStart + 4 +
// font->msgOffset), font->msgLength, "../z_message_PAL.c", 1954);
} else {
if (gSaveContext.language == LANGUAGE_ENG)
{
if (gSaveContext.language == LANGUAGE_ENG) {
Message_FindMessage(globalCtx, textId);
msgCtx->msgLength = font->msgLength;
char* src = (uintptr_t)font->msgOffset;
memcpy(font->msgBuf, src, font->msgLength);
} else if (gSaveContext.language == LANGUAGE_GER) {
// OTRTODO
//Message_FindMessage(globalCtx, textId);
//msgCtx->msgLength = font->msgLength;
//DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)(_ger_message_data_staticSegmentRomStart + font->msgOffset),
//font->msgLength, "../z_message_PAL.c", 1978);
} else
{
// Message_FindMessage(globalCtx, textId);
// msgCtx->msgLength = font->msgLength;
// DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)(_ger_message_data_staticSegmentRomStart + font->msgOffset),
// font->msgLength, "../z_message_PAL.c", 1978);
} else {
// OTRTODO
//Message_FindMessage(globalCtx, textId);
//msgCtx->msgLength = font->msgLength;
//DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)(_fra_message_data_staticSegmentRomStart + font->msgOffset),
//font->msgLength, "../z_message_PAL.c", 1990);
// Message_FindMessage(globalCtx, textId);
// msgCtx->msgLength = font->msgLength;
// DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)(_fra_message_data_staticSegmentRomStart + font->msgOffset),
// font->msgLength, "../z_message_PAL.c", 1990);
}
}
@ -1667,7 +1597,8 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) {
// "Text Box Type"
osSyncPrintf("吹き出し種類=%d\n", msgCtx->textBoxType);
if (textBoxType < TEXTBOX_TYPE_NONE_BOTTOM) {
memcpy(msgCtx->textboxSegment, ResourceMgr_LoadTexByName(msgStaticTbl[messageStaticIndices[textBoxType]]), MESSAGE_STATIC_TEX_SIZE);
memcpy(msgCtx->textboxSegment, ResourceMgr_LoadTexByName(msgStaticTbl[messageStaticIndices[textBoxType]]),
MESSAGE_STATIC_TEX_SIZE);
if (textBoxType == TEXTBOX_TYPE_BLACK) {
msgCtx->textboxColorRed = 0;
msgCtx->textboxColorGreen = 0;
@ -1970,22 +1901,49 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
static void* sOcarinaNoteTextures[] = {
gOcarinaATex, gOcarinaCDownTex, gOcarinaCRightTex, gOcarinaCLeftTex, gOcarinaCUpTex,
};
static s16 sOcarinaNoteAPrimColors[][3] = {
{ 80, 255, 150 },
{ 100, 255, 200 },
};
static s16 sOcarinaNoteAEnvColors[][3] = {
{ 10, 10, 10 },
{ 50, 255, 50 },
};
static s16 sOcarinaNoteCPrimColors[][3] = {
{ 255, 255, 50 },
{ 255, 255, 180 },
};
static s16 sOcarinaNoteCEnvColors[][3] = {
{ 10, 10, 10 },
{ 110, 110, 50 },
};
//static s16 sOcarinaNoteAPrimColors[2][3]; // Base Flash Colors
//static s16 sOcarinaNoteCPrimColors[2][3];
//static s16 sOcarinaNoteAEnvColors[2][3]; // Highlight Flash Colors
//static s16 sOcarinaNoteCEnvColors[2][3];
static Color_RGB8 sOcarinaNoteAPrimColors[2];
static Color_RGB8 sOcarinaNoteAEnvColors[2];
static Color_RGB8 sOcarinaNoteCUpPrimColors[2];
static Color_RGB8 sOcarinaNoteCUpEnvColors[2];
static Color_RGB8 sOcarinaNoteCRightPrimColors[2];
static Color_RGB8 sOcarinaNoteCRightEnvColors[2];
static Color_RGB8 sOcarinaNoteCDownPrimColors[2];
static Color_RGB8 sOcarinaNoteCDownEnvColors[2];
static Color_RGB8 sOcarinaNoteCLeftPrimColors[2];
static Color_RGB8 sOcarinaNoteCLeftEnvColors[2];
// Initialize static variables
if (sOcarinaNoteAPrimColors[0].r == NULL) {
Color_RGB8 dim = { 10, 10, 10 };
sOcarinaNoteAPrimColors[0] = sOcarinaNoteAPrim;
sOcarinaNoteCUpPrimColors[0] = sOcarinaNoteCUpPrim;
sOcarinaNoteCRightPrimColors[0] = sOcarinaNoteCRightPrim;
sOcarinaNoteCDownPrimColors[0] = sOcarinaNoteCDownPrim;
sOcarinaNoteCLeftPrimColors[0] = sOcarinaNoteCLeftPrim;
sOcarinaNoteAEnvColors[0] = dim;
sOcarinaNoteCUpEnvColors[0] = dim;
sOcarinaNoteCRightEnvColors[0] = dim;
sOcarinaNoteCDownEnvColors[0] = dim;
sOcarinaNoteCLeftEnvColors[0] = dim;
sOcarinaNoteAPrimColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteAFlashBase);
sOcarinaNoteCUpPrimColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCUpFlashBase);
sOcarinaNoteCRightPrimColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCRightFlashBase);
sOcarinaNoteCDownPrimColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCDownFlashBase);
sOcarinaNoteCLeftPrimColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCLeftFlashBase);
sOcarinaNoteAEnvColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteAFlashLight);
sOcarinaNoteCUpEnvColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCUpFlashLight);
sOcarinaNoteCRightEnvColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCRightFlashLight);
sOcarinaNoteCDownEnvColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCDownFlashLight);
sOcarinaNoteCLeftEnvColors[1] = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCLeftFlashLight);
}
static s16 sOcarinaNoteFlashTimer = 12;
static s16 sOcarinaNoteFlashColorIdx = 1;
static s16 sOcarinaSongFanfares[] = {
@ -1999,9 +1957,6 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
Player* player = GET_PLAYER(globalCtx);
s32 pad;
Gfx* gfx = *p;
s16 r;
s16 g;
s16 b;
u16 i;
u16 notePosX;
u16 pad1;
@ -2025,7 +1980,7 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE,
0);
bool isB_Held = CVar_GetS32("gFastText", 0) != 0 ? CHECK_BTN_ALL(globalCtx->state.input[0].cur.button, BTN_B)
bool isB_Held = CVar_GetS32("gFastText", 0) != 0 ? CHECK_BTN_ALL(globalCtx->state.input[0].cur.button, BTN_B)
: CHECK_BTN_ALL(globalCtx->state.input[0].press.button, BTN_B);
switch (msgCtx->msgMode) {
@ -2190,112 +2145,32 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
case MSGMODE_OCARINA_CORRECT_PLAYBACK:
case MSGMODE_SONG_PLAYBACK_SUCCESS:
case MSGMODE_SCARECROW_RECORDING_DONE:
r = ABS(sOcarinaNoteAPrimR - sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][0]) /
sOcarinaNoteFlashTimer;
g = ABS(sOcarinaNoteAPrimG - sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][1]) /
sOcarinaNoteFlashTimer;
b = ABS(sOcarinaNoteAPrimB - sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][2]) /
sOcarinaNoteFlashTimer;
if (sOcarinaNoteAPrimR >= sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][0]) {
sOcarinaNoteAPrimR -= r;
} else {
sOcarinaNoteAPrimR += r;
}
if (sOcarinaNoteAPrimG >= sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][1]) {
sOcarinaNoteAPrimG -= g;
} else {
sOcarinaNoteAPrimG += g;
}
if (sOcarinaNoteAPrimB >= sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][2]) {
sOcarinaNoteAPrimB -= b;
} else {
sOcarinaNoteAPrimB += b;
}
r = ABS(sOcarinaNoteAEnvR - sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][0]) /
sOcarinaNoteFlashTimer;
g = ABS(sOcarinaNoteAEnvG - sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][1]) /
sOcarinaNoteFlashTimer;
b = ABS(sOcarinaNoteAEnvB - sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][2]) /
sOcarinaNoteFlashTimer;
if (sOcarinaNoteCEnvR >= sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][0]) {
sOcarinaNoteAEnvR -= r;
} else {
sOcarinaNoteAEnvR += r;
}
if (sOcarinaNoteCEnvG >= sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][1]) {
sOcarinaNoteAEnvG -= g;
} else {
sOcarinaNoteAEnvG += g;
}
if (sOcarinaNoteCEnvB >= sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][2]) {
sOcarinaNoteAEnvB -= b;
} else {
sOcarinaNoteAEnvB += b;
}
r = ABS(sOcarinaNoteCPrimR - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][0]) /
sOcarinaNoteFlashTimer;
g = ABS(sOcarinaNoteCPrimG - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][1]) /
sOcarinaNoteFlashTimer;
b = ABS(sOcarinaNoteCPrimB - sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][2]) /
sOcarinaNoteFlashTimer;
if (sOcarinaNoteCPrimR >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][0]) {
sOcarinaNoteCPrimR -= r;
} else {
sOcarinaNoteCPrimR += r;
}
if (sOcarinaNoteCPrimG >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][1]) {
sOcarinaNoteCPrimG -= g;
} else {
sOcarinaNoteCPrimG += g;
}
if (sOcarinaNoteCPrimB >= sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][2]) {
sOcarinaNoteCPrimB -= b;
} else {
sOcarinaNoteCPrimB += b;
}
r = ABS(sOcarinaNoteCEnvR - sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][0]) /
sOcarinaNoteFlashTimer;
g = ABS(sOcarinaNoteCEnvG - sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][1]) /
sOcarinaNoteFlashTimer;
b = ABS(sOcarinaNoteCEnvB - sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][2]) /
sOcarinaNoteFlashTimer;
if (sOcarinaNoteCEnvR >= sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][0]) {
sOcarinaNoteCEnvR -= r;
} else {
sOcarinaNoteCEnvR += r;
}
if (sOcarinaNoteCEnvG >= sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][1]) {
sOcarinaNoteCEnvG -= g;
} else {
sOcarinaNoteCEnvG += g;
}
if (sOcarinaNoteCEnvB >= sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][2]) {
sOcarinaNoteCEnvB -= b;
} else {
sOcarinaNoteCEnvB += b;
}
advanceFlashAnimation(sOcarinaNoteAPrim, sOcarinaNoteAPrimColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
// expanded block used to contain minor logical error that produced nearly no visual difference
// for consistency and for the sake of a functional macro it has been patched
advanceFlashAnimation(sOcarinaNoteAEnv, sOcarinaNoteAEnvColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCUpPrim, sOcarinaNoteCUpPrimColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCUpEnv, sOcarinaNoteCUpEnvColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCRightPrim, sOcarinaNoteCRightPrimColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCRightEnv, sOcarinaNoteCRightEnvColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCDownPrim, sOcarinaNoteCDownPrimColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCDownEnv, sOcarinaNoteCDownEnvColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCLeftPrim, sOcarinaNoteCLeftPrimColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
advanceFlashAnimation(sOcarinaNoteCLeftEnv, sOcarinaNoteCLeftEnvColors, sOcarinaNoteFlashColorIdx, sOcarinaNoteFlashTimer);
sOcarinaNoteFlashTimer--;
if (sOcarinaNoteFlashTimer == 0) {
sOcarinaNoteAPrimR = sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][0];
sOcarinaNoteAPrimG = sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][1];
sOcarinaNoteAPrimB = sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx][2];
sOcarinaNoteAEnvR = sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][0];
sOcarinaNoteAEnvG = sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][1];
sOcarinaNoteAEnvB = sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx][2];
sOcarinaNoteCPrimR = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][0];
sOcarinaNoteCPrimG = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][1];
sOcarinaNoteCPrimB = sOcarinaNoteCPrimColors[sOcarinaNoteFlashColorIdx][2];
sOcarinaNoteCEnvR = sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][0];
sOcarinaNoteCEnvG = sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][1];
sOcarinaNoteCEnvB = sOcarinaNoteCEnvColors[sOcarinaNoteFlashColorIdx][2];
sOcarinaNoteAPrim = sOcarinaNoteAPrimColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteAEnv = sOcarinaNoteAEnvColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCUpPrim = sOcarinaNoteCUpPrimColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCUpEnv = sOcarinaNoteCUpEnvColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCRightPrim = sOcarinaNoteCRightPrimColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCRightEnv = sOcarinaNoteCRightEnvColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCDownPrim = sOcarinaNoteCDownPrimColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCDownEnv = sOcarinaNoteCDownEnvColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCLeftPrim = sOcarinaNoteCLeftPrimColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteCLeftEnv = sOcarinaNoteCLeftEnvColors[sOcarinaNoteFlashColorIdx];
sOcarinaNoteFlashTimer = 3;
sOcarinaNoteFlashColorIdx ^= 1;
}
@ -2615,7 +2490,7 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
osSyncPrintf(VT_FGCOL(YELLOW));
osSyncPrintf("\n====================================================================\n");
memcpy(gSaveContext.scarecrowCustomSong, gScarecrowCustomSongPtr,
sizeof(gSaveContext.scarecrowCustomSong));
sizeof(gSaveContext.scarecrowCustomSong));
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowCustomSong); i++) {
osSyncPrintf("%d, ", gSaveContext.scarecrowCustomSong[i]);
}
@ -2678,7 +2553,7 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
osSyncPrintf(VT_FGCOL(YELLOW));
osSyncPrintf("\n====================================================================\n");
memcpy(gSaveContext.scarecrowSpawnSong, gScarecrowSpawnSongPtr,
sizeof(gSaveContext.scarecrowSpawnSong));
sizeof(gSaveContext.scarecrowSpawnSong));
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowSpawnSong); i++) {
osSyncPrintf("%d, ", gSaveContext.scarecrowSpawnSong[i]);
}
@ -2866,20 +2741,20 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
if (msgCtx->msgMode == MSGMODE_SONG_PLAYBACK) {
g = msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET;
r = gOcarinaSongNotes[g].len;
for (notePosX = R_OCARINA_NOTES_XPOS, i = 0; i < r; i++, notePosX += R_OCARINA_NOTES_XPOS_OFFSET) {
s16 songIdx = msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET;
s16 songLength = gOcarinaSongNotes[songIdx].len;
for (notePosX = R_OCARINA_NOTES_XPOS, i = 0; i < songLength; i++, notePosX += R_OCARINA_NOTES_XPOS_OFFSET) {
gDPPipeSync(gfx++);
gDPSetPrimColor(gfx++, 0, 0, 150, 150, 150, 150);
gDPSetEnvColor(gfx++, 10, 10, 10, 0);
gDPLoadTextureBlock(gfx++, sOcarinaNoteTextures[gOcarinaSongNotes[g].notesIdx[i]], G_IM_FMT_IA,
gDPLoadTextureBlock(gfx++, sOcarinaNoteTextures[gOcarinaSongNotes[songIdx].notesIdx[i]], G_IM_FMT_IA,
G_IM_SIZ_8b, 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);
gSPTextureRectangle(
gfx++, notePosX << 2, R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) << 2,
(notePosX + 16) << 2, (R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) + 16) << 2,
gfx++, notePosX << 2, R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[songIdx].notesIdx[i]) << 2,
(notePosX + 16) << 2, (R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[songIdx].notesIdx[i]) + 16) << 2,
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
}
}
@ -2900,14 +2775,36 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) {
}
gDPPipeSync(gfx++);
if (sOcarinaNoteBuf[i] == OCARINA_NOTE_A) {
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteAPrimR, sOcarinaNoteAPrimG, sOcarinaNoteAPrimB,
sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, sOcarinaNoteAEnvR, sOcarinaNoteAEnvG, sOcarinaNoteAEnvB, 0);
} else {
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCPrimR, sOcarinaNoteCPrimG, sOcarinaNoteCPrimB,
sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, sOcarinaNoteCEnvR, sOcarinaNoteCEnvG, sOcarinaNoteCEnvB, 0);
switch (sOcarinaNoteBuf[i]) {
case OCARINA_NOTE_A:
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteAPrim.r, sOcarinaNoteAPrim.g, sOcarinaNoteAPrim.b,
sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, sOcarinaNoteAEnv.r, sOcarinaNoteAEnv.g, sOcarinaNoteAEnv.b, 0);
break;
case OCARINA_NOTE_C_UP:
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCUpPrim.r, sOcarinaNoteCUpPrim.g,
sOcarinaNoteCUpPrim.b, sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, sOcarinaNoteCUpEnv.r, sOcarinaNoteCUpEnv.g, sOcarinaNoteCUpEnv.b, 0);
break;
case OCARINA_NOTE_C_RIGHT:
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCRightPrim.r, sOcarinaNoteCRightPrim.g,
sOcarinaNoteCRightPrim.b, sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, sOcarinaNoteCRightEnv.r, sOcarinaNoteCRightEnv.g, sOcarinaNoteCRightEnv.b, 0);
break;
case OCARINA_NOTE_C_DOWN:
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCDownPrim.r, sOcarinaNoteCDownPrim.g,
sOcarinaNoteCDownPrim.b, sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, sOcarinaNoteCDownEnv.r, sOcarinaNoteCDownEnv.g, sOcarinaNoteCDownEnv.b, 0);
break;
case OCARINA_NOTE_C_LEFT:
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCLeftPrim.r, sOcarinaNoteCLeftPrim.g,
sOcarinaNoteCLeftPrim.b, sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, sOcarinaNoteCLeftEnv.r, sOcarinaNoteCLeftEnv.g, sOcarinaNoteCLeftEnv.b, 0);
break;
default:
gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, sOcarinaNotesAlphaValues[i]);
gDPSetEnvColor(gfx++, 255, 255, 255, 0);
break;
}
gDPLoadTextureBlock(gfx++, sOcarinaNoteTextures[sOcarinaNoteBuf[i]], G_IM_FMT_IA, G_IM_SIZ_8b, 16,
@ -3319,12 +3216,12 @@ void Message_Update(GlobalContext* globalCtx) {
void Message_SetTables(void) {
OTRMessage_Init();
// OTRTODO
//sNesMessageEntryTablePtr = sNesMessageEntryTable;
//sGerMessageEntryTablePtr = sGerMessageEntryTable;
//sFraMessageEntryTablePtr = sFraMessageEntryTable;
//sStaffMessageEntryTablePtr = sStaffMessageEntryTable;
// sNesMessageEntryTablePtr = sNesMessageEntryTable;
// sGerMessageEntryTablePtr = sGerMessageEntryTable;
// sFraMessageEntryTablePtr = sFraMessageEntryTable;
// sStaffMessageEntryTablePtr = sStaffMessageEntryTable;
}
// Appears to be file padding

View File

@ -3,6 +3,7 @@
#include "textures/parameter_static/parameter_static.h"
#include "textures/do_action_static/do_action_static.h"
#include "textures/icon_item_static/icon_item_static.h"
#include <colors/colorPaths.h>
#ifdef _MSC_VER
#include <stdlib.h>
@ -135,9 +136,7 @@ static u16 sCUpTimer = 0;
s16 gSpoilingItems[] = { ITEM_ODD_MUSHROOM, ITEM_FROG, ITEM_EYEDROPS };
s16 gSpoilingItemReverts[] = { ITEM_COJIRO, ITEM_PRESCRIPTION, ITEM_PRESCRIPTION };
static s16 sMagicBorderR = 255;
static s16 sMagicBorderG = 255;
static s16 sMagicBorderB = 255;
static Color_RGB8 sMagicBorder;
static s16 sExtraItemBases[] = {
ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, ITEM_BOW,
@ -158,36 +157,14 @@ static Gfx sSetupDL_80125A60[] = {
gsSPEndDisplayList(),
};
static const char* actionsTbl[] =
{
gAttackDoActionENGTex,
gCheckDoActionENGTex,
gEnterDoActionENGTex,
gReturnDoActionENGTex,
gOpenDoActionENGTex,
gJumpDoActionENGTex,
gDecideDoActionENGTex,
gDiveDoActionENGTex,
gFasterDoActionENGTex,
gThrowDoActionENGTex,
gUnusedNaviDoActionENGTex,
gClimbDoActionENGTex,
gDropDoActionENGTex,
gDownDoActionENGTex,
gSaveDoActionENGTex,
gSpeakDoActionENGTex,
gNextDoActionENGTex,
gGrabDoActionENGTex,
gStopDoActionENGTex,
gPutAwayDoActionENGTex,
gReelDoActionENGTex,
gNum1DoActionENGTex,
gNum2DoActionENGTex,
gNum3DoActionENGTex,
gNum4DoActionENGTex,
gNum5DoActionENGTex,
gNum6DoActionENGTex,
gNum7DoActionENGTex,
static const char* actionsTbl[] = {
gAttackDoActionENGTex, gCheckDoActionENGTex, gEnterDoActionENGTex, gReturnDoActionENGTex,
gOpenDoActionENGTex, gJumpDoActionENGTex, gDecideDoActionENGTex, gDiveDoActionENGTex,
gFasterDoActionENGTex, gThrowDoActionENGTex, gUnusedNaviDoActionENGTex, gClimbDoActionENGTex,
gDropDoActionENGTex, gDownDoActionENGTex, gSaveDoActionENGTex, gSpeakDoActionENGTex,
gNextDoActionENGTex, gGrabDoActionENGTex, gStopDoActionENGTex, gPutAwayDoActionENGTex,
gReelDoActionENGTex, gNum1DoActionENGTex, gNum2DoActionENGTex, gNum3DoActionENGTex,
gNum4DoActionENGTex, gNum5DoActionENGTex, gNum6DoActionENGTex, gNum7DoActionENGTex,
gNum8DoActionENGTex,
};
@ -1157,7 +1134,7 @@ Gfx* Gfx_TextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 t
G_TX_NOLOD);
gSPWideTextureRectangle(displayListHead++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2,
(rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx, dtdy);
(rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx, dtdy);
return displayListHead;
}
@ -1169,7 +1146,7 @@ Gfx* Gfx_TextureI8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 te
G_TX_NOLOD);
gSPWideTextureRectangle(displayListHead++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2,
(rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx, dtdy);
(rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx, dtdy);
return displayListHead;
}
@ -1299,7 +1276,8 @@ void Interface_LoadItemIcon1(GlobalContext* globalCtx, u16 button) {
osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, OS_MESG_BLOCK);
DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_160, interfaceCtx->iconItemSegment + button * 0x1000,
(uintptr_t)_icon_item_staticSegmentRomStart + (gSaveContext.equips.buttonItems[button] * 0x1000),
(uintptr_t)_icon_item_staticSegmentRomStart +
(gSaveContext.equips.buttonItems[button] * 0x1000),
0x1000, 0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1171);
osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK);
}
@ -1309,7 +1287,8 @@ void Interface_LoadItemIcon2(GlobalContext* globalCtx, u16 button) {
osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, OS_MESG_BLOCK);
DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_180, interfaceCtx->iconItemSegment + button * 0x1000,
(uintptr_t)_icon_item_staticSegmentRomStart + (gSaveContext.equips.buttonItems[button] * 0x1000),
(uintptr_t)_icon_item_staticSegmentRomStart +
(gSaveContext.equips.buttonItems[button] * 0x1000),
0x1000, 0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1193);
osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK);
}
@ -2070,7 +2049,7 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) {
void func_80086D5C(s32* buf, u16 size) {
u16 i;
//buf = ResourceMgr_LoadTexByName(buf);
// buf = ResourceMgr_LoadTexByName(buf);
for (i = 0; i < size; i++) {
buf[i] = 0;
@ -2110,19 +2089,18 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l
action += DO_ACTION_MAX;
}*/
if (action != DO_ACTION_NONE) {
//osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, OS_MESG_BLOCK);
// osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, OS_MESG_BLOCK);
memcpy(interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE), ResourceMgr_LoadTexByName(doAction),
DO_ACTION_TEX_SIZE);
//DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_160,
//interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE),
//(uintptr_t)_do_action_staticSegmentRomStart + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE,
//0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 2145);
//osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK);
// DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_160,
// interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE),
//(uintptr_t)_do_action_staticSegmentRomStart + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE,
// 0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 2145);
// osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK);
} else {
gSegments[7] = VIRTUAL_TO_PHYSICAL(interfaceCtx->doActionSegment);
//func_80086D5C(SEGMENTED_TO_VIRTUAL(sDoActionTextures[loadOffset]), DO_ACTION_TEX_SIZE / 4);
// func_80086D5C(SEGMENTED_TO_VIRTUAL(sDoActionTextures[loadOffset]), DO_ACTION_TEX_SIZE / 4);
func_80086D5C(interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE / 4);
}
}
@ -2195,14 +2173,12 @@ void Interface_LoadActionLabelB(GlobalContext* globalCtx, u16 action) {
interfaceCtx->unk_1FC = action;
// OTRTODO
osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, OS_MESG_BLOCK);
memcpy(interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE, ResourceMgr_LoadTexByName(doAction), DO_ACTION_TEX_SIZE);
//DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_160, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE,
//(uintptr_t)_do_action_staticSegmentRomStart + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE, 0,
//&interfaceCtx->loadQueue, NULL, "../z_parameter.c", 2228);
// DmaMgr_SendRequest2(&interfaceCtx->dmaRequest_160, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE,
//(uintptr_t)_do_action_staticSegmentRomStart + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE, 0,
//&interfaceCtx->loadQueue, NULL, "../z_parameter.c", 2228);
osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK);
interfaceCtx->unk_1FA = 1;
@ -2423,20 +2399,18 @@ s32 func_80087708(GlobalContext* globalCtx, s16 arg1, s16 arg2) {
}
void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
static s16 sMagicBorderColors[][3] = {
{ 255, 255, 255 },
{ 150, 150, 150 },
{ 255, 255, 150 },
{ 255, 255, 50 },
};
Color_RGB8 magicBorderDefault = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorMagicBorder);
static Color_RGB8 sMagicBorderColors[4];
sMagicBorderColors[0] = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorMagicBorder);
sMagicBorderColors[1] = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorMagicBorderDim);
static s16 sMagicBorderIndexes[] = { 0, 1, 1, 0 };
static s16 sMagicBorderRatio = 2;
static s16 sMagicBorderStep = 1;
MessageContext* msgCtx = &globalCtx->msgCtx;
InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx;
s16 borderChangeR;
s16 borderChangeG;
s16 borderChangeB;
Color_RGB8 borderChange;
s16 temp;
switch (gSaveContext.unk_13F0) {
@ -2486,42 +2460,42 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
if (gSaveContext.magic <= 0) {
gSaveContext.magic = 0;
gSaveContext.unk_13F0 = 3;
sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
sMagicBorder = magicBorderDefault;
} else if (gSaveContext.magic == gSaveContext.unk_13F8) {
gSaveContext.unk_13F0 = 3;
sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
sMagicBorder = magicBorderDefault;
}
case 3:
case 4:
case 6:
temp = sMagicBorderIndexes[sMagicBorderStep];
borderChangeR = ABS(sMagicBorderR - sMagicBorderColors[temp][0]) / sMagicBorderRatio;
borderChangeG = ABS(sMagicBorderG - sMagicBorderColors[temp][1]) / sMagicBorderRatio;
borderChangeB = ABS(sMagicBorderB - sMagicBorderColors[temp][2]) / sMagicBorderRatio;
borderChange.r = ABS(sMagicBorder.r - sMagicBorderColors[temp].r) / sMagicBorderRatio;
borderChange.g = ABS(sMagicBorder.g - sMagicBorderColors[temp].g) / sMagicBorderRatio;
borderChange.b = ABS(sMagicBorder.b - sMagicBorderColors[temp].b) / sMagicBorderRatio;
if (sMagicBorderR >= sMagicBorderColors[temp][0]) {
sMagicBorderR -= borderChangeR;
if (sMagicBorder.r >= sMagicBorderColors[temp].r) {
sMagicBorder.r -= borderChange.r;
} else {
sMagicBorderR += borderChangeR;
sMagicBorder.r += borderChange.r;
}
if (sMagicBorderG >= sMagicBorderColors[temp][1]) {
sMagicBorderG -= borderChangeG;
if (sMagicBorder.g >= sMagicBorderColors[temp].g) {
sMagicBorder.g -= borderChange.g;
} else {
sMagicBorderG += borderChangeG;
sMagicBorder.g += borderChange.g;
}
if (sMagicBorderB >= sMagicBorderColors[temp][2]) {
sMagicBorderB -= borderChangeB;
if (sMagicBorder.b >= sMagicBorderColors[temp].b) {
sMagicBorder.b -= borderChange.b;
} else {
sMagicBorderB += borderChangeB;
sMagicBorder.b += borderChange.b;
}
sMagicBorderRatio--;
if (sMagicBorderRatio == 0) {
sMagicBorderR = sMagicBorderColors[temp][0];
sMagicBorderG = sMagicBorderColors[temp][1];
sMagicBorderB = sMagicBorderColors[temp][2];
sMagicBorder.r = sMagicBorderColors[temp].r;
sMagicBorder.g = sMagicBorderColors[temp].g;
sMagicBorder.b = sMagicBorderColors[temp].b;
sMagicBorderRatio = YREG(40 + sMagicBorderStep);
sMagicBorderStep++;
if (sMagicBorderStep >= 4) {
@ -2531,7 +2505,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
break;
case 5:
sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
sMagicBorder = magicBorderDefault;
gSaveContext.unk_13F0 = 0;
break;
@ -2548,7 +2522,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
Audio_PlaySoundGeneral(NA_SE_SY_GLASSMODE_OFF, &D_801333D4, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
gSaveContext.unk_13F0 = 0;
sMagicBorderR = sMagicBorderG = sMagicBorderB = 255;
sMagicBorder = magicBorderDefault;
break;
}
@ -2560,33 +2534,33 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) {
}
temp = sMagicBorderIndexes[sMagicBorderStep];
borderChangeR = ABS(sMagicBorderR - sMagicBorderColors[temp][0]) / sMagicBorderRatio;
borderChangeG = ABS(sMagicBorderG - sMagicBorderColors[temp][1]) / sMagicBorderRatio;
borderChangeB = ABS(sMagicBorderB - sMagicBorderColors[temp][2]) / sMagicBorderRatio;
borderChange.r = ABS(sMagicBorder.r - sMagicBorderColors[temp].r) / sMagicBorderRatio;
borderChange.g = ABS(sMagicBorder.g - sMagicBorderColors[temp].g) / sMagicBorderRatio;
borderChange.b = ABS(sMagicBorder.b - sMagicBorderColors[temp].b) / sMagicBorderRatio;
if (sMagicBorderR >= sMagicBorderColors[temp][0]) {
sMagicBorderR -= borderChangeR;
if (sMagicBorder.r >= sMagicBorderColors[temp].r) {
sMagicBorder.r -= borderChange.r;
} else {
sMagicBorderR += borderChangeR;
sMagicBorder.r += borderChange.r;
}
if (sMagicBorderG >= sMagicBorderColors[temp][1]) {
sMagicBorderG -= borderChangeG;
if (sMagicBorder.g >= sMagicBorderColors[temp].g) {
sMagicBorder.g -= borderChange.g;
} else {
sMagicBorderG += borderChangeG;
sMagicBorder.g += borderChange.g;
}
if (sMagicBorderB >= sMagicBorderColors[temp][2]) {
sMagicBorderB -= borderChangeB;
if (sMagicBorder.b >= sMagicBorderColors[temp].b) {
sMagicBorder.b -= borderChange.b;
} else {
sMagicBorderB += borderChangeB;
sMagicBorder.b += borderChange.b;
}
sMagicBorderRatio--;
if (sMagicBorderRatio == 0) {
sMagicBorderR = sMagicBorderColors[temp][0];
sMagicBorderG = sMagicBorderColors[temp][1];
sMagicBorderB = sMagicBorderColors[temp][2];
sMagicBorder.r = sMagicBorderColors[temp].r;
sMagicBorder.g = sMagicBorderColors[temp].g;
sMagicBorder.b = sMagicBorderColors[temp].b;
sMagicBorderRatio = YREG(40 + sMagicBorderStep);
sMagicBorderStep++;
if (sMagicBorderStep >= 4) {
@ -2626,15 +2600,19 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) {
func_80094520(globalCtx->state.gfxCtx);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sMagicBorderR, sMagicBorderG, sMagicBorderB, interfaceCtx->magicAlpha);
if (sMagicBorder.r == NULL || sMagicBorder.g == NULL || sMagicBorder.b == NULL) {
sMagicBorder = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorMagicBorder);
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sMagicBorder.r, sMagicBorder.g, sMagicBorder.b, interfaceCtx->magicAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255);
OVERLAY_DISP =
Gfx_TextureIA8(OVERLAY_DISP, gMagicBarEndTex, 8, 16, OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X),
magicBarY, 8, 16, 1 << 10, 1 << 10);
magicBarY, 8, 16, 1 << 10, 1 << 10);
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gMagicBarMidTex, 24, 16, OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X) + 8, magicBarY,
gSaveContext.unk_13F4, 16, 1 << 10, 1 << 10);
OVERLAY_DISP =
Gfx_TextureIA8(OVERLAY_DISP, gMagicBarMidTex, 24, 16, OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X) + 8,
magicBarY, gSaveContext.unk_13F4, 16, 1 << 10, 1 << 10);
gDPLoadTextureBlock(OVERLAY_DISP++, gMagicBarEndTex, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0,
G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 3, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
@ -2642,8 +2620,8 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) {
const s16 rMagicBarX = OTRGetRectDimensionFromLeftEdge(R_MAGIC_BAR_X);
gSPWideTextureRectangle(OVERLAY_DISP++, ((rMagicBarX + gSaveContext.unk_13F4) + 8) << 2, magicBarY << 2,
((rMagicBarX + gSaveContext.unk_13F4) + 16) << 2, (magicBarY + 16) << 2, G_TX_RENDERTILE,
256, 0, 1 << 10, 1 << 10);
((rMagicBarX + gSaveContext.unk_13F4) + 16) << 2, (magicBarY + 16) << 2,
G_TX_RENDERTILE, 256, 0, 1 << 10, 1 << 10);
gDPPipeSync(OVERLAY_DISP++);
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE, PRIMITIVE,
@ -2654,15 +2632,16 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) {
if (gSaveContext.unk_13F0 == 4) {
// Yellow part of the bar indicating the amount of magic to be subtracted
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 250, 0, interfaceCtx->magicAlpha);
Color_RGB8 burnColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorMagicFillBurn);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, burnColor.r, burnColor.g, burnColor.b, interfaceCtx->magicAlpha);
gDPLoadMultiBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, 0, G_TX_RENDERTILE, G_IM_FMT_I, 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);
gSPWideTextureRectangle(OVERLAY_DISP++, rMagicFillX << 2, (magicBarY + 3) << 2,
(rMagicFillX + gSaveContext.magic) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0,
0, 1 << 10, 1 << 10);
(rMagicFillX + gSaveContext.magic) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0,
0, 1 << 10, 1 << 10);
// Fill the rest of the bar with the normal magic color
gDPPipeSync(OVERLAY_DISP++);
@ -2670,8 +2649,8 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) {
interfaceCtx->magicAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, rMagicFillX << 2, (magicBarY + 3) << 2,
(rMagicFillX + gSaveContext.unk_13F8) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE,
0, 0, 1 << 10, 1 << 10);
(rMagicFillX + gSaveContext.unk_13F8) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE,
0, 0, 1 << 10, 1 << 10);
} else {
// Fill the whole bar with the normal magic color
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_MAGIC_FILL_COLOR(0), R_MAGIC_FILL_COLOR(1), R_MAGIC_FILL_COLOR(2),
@ -2682,8 +2661,8 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) {
G_TX_NOLOD, G_TX_NOLOD);
gSPWideTextureRectangle(OVERLAY_DISP++, rMagicFillX << 2, (magicBarY + 3) << 2,
(rMagicFillX + gSaveContext.magic) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0,
0, 1 << 10, 1 << 10);
(rMagicFillX + gSaveContext.magic) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0,
0, 1 << 10, 1 << 10);
}
}
@ -2758,43 +2737,49 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_B_BTN_COLOR(0), R_B_BTN_COLOR(1), R_B_BTN_COLOR(2), interfaceCtx->bAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
OVERLAY_DISP =
Gfx_TextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(0)), R_ITEM_BTN_Y(0),
R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_DD(0) << 1, R_ITEM_BTN_DD(0) << 1);
OVERLAY_DISP = Gfx_TextureIA8(
OVERLAY_DISP, gButtonBackgroundTex, 32, 32, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(0)), R_ITEM_BTN_Y(0),
R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_WIDTH(0), R_ITEM_BTN_DD(0) << 1, R_ITEM_BTN_DD(0) << 1);
Color_RGB8 cColor;
// C-Left Button Color & Texture
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2),
interfaceCtx->cLeftAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(1)) << 2, R_ITEM_BTN_Y(1) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(1)) + R_ITEM_BTN_WIDTH(1)) << 2,
(R_ITEM_BTN_Y(1) + R_ITEM_BTN_WIDTH(1)) << 2,
G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(1) << 1, R_ITEM_BTN_DD(1) << 1);
cColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCLeft);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, cColor.r, cColor.g, cColor.b, interfaceCtx->cLeftAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(1)) << 2,
R_ITEM_BTN_Y(1) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(1)) + R_ITEM_BTN_WIDTH(1)) << 2,
(R_ITEM_BTN_Y(1) + R_ITEM_BTN_WIDTH(1)) << 2, G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(1) << 1,
R_ITEM_BTN_DD(1) << 1);
// C-Down Button Color & Texture
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2),
interfaceCtx->cDownAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(2)) << 2, R_ITEM_BTN_Y(2) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(2)) + R_ITEM_BTN_WIDTH(2)) << 2,
(R_ITEM_BTN_Y(2) + R_ITEM_BTN_WIDTH(2)) << 2,
G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(2) << 1, R_ITEM_BTN_DD(2) << 1);
cColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCDown);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, cColor.r, cColor.g, cColor.b, interfaceCtx->cDownAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(2)) << 2,
R_ITEM_BTN_Y(2) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(2)) + R_ITEM_BTN_WIDTH(2)) << 2,
(R_ITEM_BTN_Y(2) + R_ITEM_BTN_WIDTH(2)) << 2, G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(2) << 1,
R_ITEM_BTN_DD(2) << 1);
// C-Right Button Color & Texture
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2),
interfaceCtx->cRightAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(3)) << 2, R_ITEM_BTN_Y(3) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(3)) + R_ITEM_BTN_WIDTH(3)) << 2,
(R_ITEM_BTN_Y(3) + R_ITEM_BTN_WIDTH(3)) << 2,
G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(3) << 1, R_ITEM_BTN_DD(3) << 1);
cColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCRight);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, cColor.r, cColor.g, cColor.b, interfaceCtx->cRightAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(3)) << 2,
R_ITEM_BTN_Y(3) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(3)) + R_ITEM_BTN_WIDTH(3)) << 2,
(R_ITEM_BTN_Y(3) + R_ITEM_BTN_WIDTH(3)) << 2, G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(3) << 1,
R_ITEM_BTN_DD(3) << 1);
if ((pauseCtx->state < 8) || (pauseCtx->state >= 18)) {
if ((globalCtx->pauseCtx.state != 0) || (globalCtx->pauseCtx.debugState != 0)) {
// Start Button Texture, Color & Label
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 120, 120, interfaceCtx->startAlpha);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(startButtonLeftPos[gSaveContext.language]) << 2, 68,
(OTRGetRectDimensionFromRightEdge(startButtonLeftPos[gSaveContext.language]) + 22) << 2, 156,
G_TX_RENDERTILE, 0, 0, 1462, 1462);
Color_RGB8 startColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnStart);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, startColor.r, startColor.g, startColor.b, interfaceCtx->startAlpha);
gSPWideTextureRectangle(
OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(startButtonLeftPos[gSaveContext.language]) << 2, 68,
(OTRGetRectDimensionFromRightEdge(startButtonLeftPos[gSaveContext.language]) + 22) << 2, 156,
G_TX_RENDERTILE, 0, 0, 1462, 1462);
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->startAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
@ -2809,10 +2794,9 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
width = DO_ACTION_TEX_WIDTH / (R_START_LABEL_DD(gSaveContext.language) / 100.0f);
height = DO_ACTION_TEX_HEIGHT / (R_START_LABEL_DD(gSaveContext.language) / 100.0f);
const s16 rStartLabelX = OTRGetRectDimensionFromRightEdge(R_START_LABEL_X(gSaveContext.language));
gSPWideTextureRectangle(
OVERLAY_DISP++, rStartLabelX << 2,
R_START_LABEL_Y(gSaveContext.language) << 2, (rStartLabelX + width) << 2,
(R_START_LABEL_Y(gSaveContext.language) + height) << 2, G_TX_RENDERTILE, 0, 0, dxdy, dxdy);
gSPWideTextureRectangle(OVERLAY_DISP++, rStartLabelX << 2, R_START_LABEL_Y(gSaveContext.language) << 2,
(rStartLabelX + width) << 2, (R_START_LABEL_Y(gSaveContext.language) + height) << 2,
G_TX_RENDERTILE, 0, 0, dxdy, dxdy);
}
}
@ -2831,12 +2815,13 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
temp = interfaceCtx->healthAlpha;
}
const s16 rCUpBtnX = OTRGetRectDimensionFromRightEdge(R_C_UP_BTN_X);
const s16 rCUpBtnX = OTRGetRectDimensionFromRightEdge(R_C_UP_BTN_X);
const s16 rCUPIconX = OTRGetRectDimensionFromRightEdge(R_C_UP_ICON_X);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), temp);
cColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCUp);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, cColor.r, cColor.g, cColor.b, temp);
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
gSPWideTextureRectangle(OVERLAY_DISP++, rCUpBtnX << 2, R_C_UP_BTN_Y << 2, (rCUpBtnX + 16) << 2,
(R_C_UP_BTN_Y + 16) << 2, G_TX_RENDERTILE, 0, 0, 2 << 10, 2 << 10);
(R_C_UP_BTN_Y + 16) << 2, G_TX_RENDERTILE, 0, 0, 2 << 10, 2 << 10);
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, temp);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
@ -2848,7 +2833,7 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
G_TX_NOLOD, G_TX_NOLOD);
gSPWideTextureRectangle(OVERLAY_DISP++, rCUPIconX << 2, R_C_UP_ICON_Y << 2, (rCUPIconX + 32) << 2,
(R_C_UP_ICON_Y + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
(R_C_UP_ICON_Y + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
}
sCUpTimer--;
@ -2864,27 +2849,28 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
for (temp = 1; temp < 4; temp++) {
if (gSaveContext.equips.buttonItems[temp] > 0xF0) {
if (temp == 1) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2),
interfaceCtx->cLeftAlpha);
Color_RGB8 cColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCLeft);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, cColor.r, cColor.g, cColor.b, interfaceCtx->cLeftAlpha);
} else if (temp == 2) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2),
interfaceCtx->cDownAlpha);
Color_RGB8 cColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCDown);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, cColor.r, cColor.g, cColor.b, interfaceCtx->cDownAlpha);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2),
interfaceCtx->cRightAlpha);
Color_RGB8 cColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorBtnCRight);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, cColor.r, cColor.g, cColor.b, interfaceCtx->cRightAlpha);
}
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex), 32, 32,
OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(temp)), R_ITEM_BTN_Y(temp), R_ITEM_BTN_WIDTH(temp),
R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_DD(temp) << 1, R_ITEM_BTN_DD(temp) << 1);
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex), 32, 32,
OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(temp)), R_ITEM_BTN_Y(temp),
R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_DD(temp) << 1,
R_ITEM_BTN_DD(temp) << 1);
const char* cButtonIcons[] = { gButtonBackgroundTex, gEquippedItemOutlineTex, gEmptyCLeftArrowTex,
gEmptyCDownArrowTex, gEmptyCRightArrowTex
};
gEmptyCDownArrowTex, gEmptyCRightArrowTex };
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, cButtonIcons[(temp + 1)], 32, 32,
OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(temp)), R_ITEM_BTN_Y(temp), R_ITEM_BTN_WIDTH(temp),
R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_DD(temp) << 1, R_ITEM_BTN_DD(temp) << 1);
OTRGetRectDimensionFromRightEdge(R_ITEM_BTN_X(temp)), R_ITEM_BTN_Y(temp),
R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_WIDTH(temp), R_ITEM_BTN_DD(temp) << 1,
R_ITEM_BTN_DD(temp) << 1);
}
}
@ -2897,20 +2883,18 @@ void Interface_DrawItemIconTexture(GlobalContext* globalCtx, void* texture, s16
gDPLoadTextureBlock(OVERLAY_DISP++, texture, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, 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);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_ICON_X(button)) << 2, R_ITEM_ICON_Y(button) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_ICON_X(button)) + R_ITEM_ICON_WIDTH(button)) << 2,
(R_ITEM_ICON_Y(button) + R_ITEM_ICON_WIDTH(button)) << 2, G_TX_RENDERTILE, 0, 0,
R_ITEM_ICON_DD(button) << 1, R_ITEM_ICON_DD(button) << 1);
gSPWideTextureRectangle(OVERLAY_DISP++, OTRGetRectDimensionFromRightEdge(R_ITEM_ICON_X(button)) << 2,
R_ITEM_ICON_Y(button) << 2,
(OTRGetRectDimensionFromRightEdge(R_ITEM_ICON_X(button)) + R_ITEM_ICON_WIDTH(button)) << 2,
(R_ITEM_ICON_Y(button) + R_ITEM_ICON_WIDTH(button)) << 2, G_TX_RENDERTILE, 0, 0,
R_ITEM_ICON_DD(button) << 1, R_ITEM_ICON_DD(button) << 1);
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_parameter.c", 3094);
}
const char* _gAmmoDigit0Tex[] =
{
gAmmoDigit0Tex, gAmmoDigit1Tex, gAmmoDigit2Tex, gAmmoDigit3Tex, gAmmoDigit4Tex,
gAmmoDigit5Tex, gAmmoDigit6Tex, gAmmoDigit7Tex, gAmmoDigit8Tex, gAmmoDigit9Tex,
gUnusedAmmoDigitHalfTex
};
const char* _gAmmoDigit0Tex[] = { gAmmoDigit0Tex, gAmmoDigit1Tex, gAmmoDigit2Tex, gAmmoDigit3Tex,
gAmmoDigit4Tex, gAmmoDigit5Tex, gAmmoDigit6Tex, gAmmoDigit7Tex,
gAmmoDigit8Tex, gAmmoDigit9Tex, gUnusedAmmoDigitHalfTex };
void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) {
s16 i;
@ -2947,11 +2931,14 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) {
((i == ITEM_STICK) && (AMMO(i) == CUR_CAPACITY(UPG_STICKS))) ||
((i == ITEM_NUT) && (AMMO(i) == CUR_CAPACITY(UPG_NUTS))) || ((i == ITEM_BOMBCHU) && (ammo == 50)) ||
((i == ITEM_BEAN) && (ammo == 15))) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, alpha);
}
if (ammo == 0) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, alpha);
Color_RGB8 ammoCountColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorAmmoCountFull);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, ammoCountColor.r, ammoCountColor.g, ammoCountColor.b, alpha);
} else if (ammo == 0) {
Color_RGB8 ammoCountColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorAmmoCountEmpty);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, ammoCountColor.r, ammoCountColor.g, ammoCountColor.b, alpha);
} else {
Color_RGB8 ammoCountColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorAmmoCountDefault);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, ammoCountColor.r, ammoCountColor.g, ammoCountColor.b, alpha);
}
for (i = 0; ammo >= 10; i++) {
@ -2959,12 +2946,14 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) {
}
if (i != 0) {
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, (u8*)_gAmmoDigit0Tex[i], 8, 8,
OTRGetRectDimensionFromRightEdge(R_ITEM_AMMO_X(button)), R_ITEM_AMMO_Y(button), 8, 8, 1 << 10, 1 << 10);
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, (u8*)_gAmmoDigit0Tex[i], 8, 8,
OTRGetRectDimensionFromRightEdge(R_ITEM_AMMO_X(button)),
R_ITEM_AMMO_Y(button), 8, 8, 1 << 10, 1 << 10);
}
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, (u8*)_gAmmoDigit0Tex[ammo], 8, 8,
OTRGetRectDimensionFromRightEdge(R_ITEM_AMMO_X(button)) + 6, R_ITEM_AMMO_Y(button), 8, 8, 1 << 10, 1 << 10);
OTRGetRectDimensionFromRightEdge(R_ITEM_AMMO_X(button)) + 6,
R_ITEM_AMMO_Y(button), 8, 8, 1 << 10, 1 << 10);
}
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_parameter.c", 3158);
@ -3105,13 +3094,11 @@ void func_8008A994(InterfaceContext* interfaceCtx) {
func_800AB2C4(&interfaceCtx->view);
}
const char* digitTextures[] =
{
gCounterDigit0Tex, gCounterDigit1Tex, gCounterDigit2Tex, gCounterDigit3Tex,
gCounterDigit4Tex, gCounterDigit5Tex, gCounterDigit6Tex, gCounterDigit7Tex, gCounterDigit8Tex,
gCounterDigit9Tex, gCounterColonTex, gCounterDigit1Tex, gCounterDigit2Tex, gCounterDigit3Tex,
gCounterDigit4Tex, gCounterDigit5Tex, gCounterDigit6Tex, gCounterDigit7Tex, gCounterDigit8Tex
};
const char* digitTextures[] = { gCounterDigit0Tex, gCounterDigit1Tex, gCounterDigit2Tex, gCounterDigit3Tex,
gCounterDigit4Tex, gCounterDigit5Tex, gCounterDigit6Tex, gCounterDigit7Tex,
gCounterDigit8Tex, gCounterDigit9Tex, gCounterColonTex, gCounterDigit1Tex,
gCounterDigit2Tex, gCounterDigit3Tex, gCounterDigit4Tex, gCounterDigit5Tex,
gCounterDigit6Tex, gCounterDigit7Tex, gCounterDigit8Tex };
void Interface_Draw(GlobalContext* globalCtx) {
static s16 magicArrowEffectsR[] = { 255, 100, 255 };
@ -3163,8 +3150,9 @@ void Interface_Draw(GlobalContext* globalCtx) {
func_80094520(globalCtx->state.gfxCtx);
// Rupee Icon
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 255, 100, interfaceCtx->magicAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 80, 0, 255);
Color_RGB8 rupeeColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorRupeeIcon);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, rupeeColor.r, rupeeColor.g, rupeeColor.b, interfaceCtx->magicAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 80, 0, 0, 255);
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26),
206, 16, 16, 1 << 10, 1 << 10);
@ -3186,14 +3174,16 @@ void Interface_Draw(GlobalContext* globalCtx) {
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) {
// Small Key Icon
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha);
Color_RGB8 keyColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorSmallKeyIcon);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, keyColor.r, keyColor.g, keyColor.b, interfaceCtx->magicAlpha);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255);
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, OTRGetRectDimensionFromLeftEdge(26), 190, 16, 16,
1 << 10, 1 << 10);
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16,
OTRGetRectDimensionFromLeftEdge(26), 190, 16, 16, 1 << 10, 1 << 10);
// Small Key Counter
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
Color_RGB8 keyCounterColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorSmallKeyCountNormal);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, keyCounterColor.r, keyCounterColor.g, keyCounterColor.b, interfaceCtx->magicAlpha);
gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE,
TEXEL0, 0, PRIMITIVE, 0);
@ -3208,14 +3198,14 @@ void Interface_Draw(GlobalContext* globalCtx) {
svar3 = OTRGetRectDimensionFromLeftEdge(42);
if (interfaceCtx->counterDigits[2] != 0) {
OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8,
OVERLAY_DISP =
Gfx_TextureI8(OVERLAY_DISP, ((u8*)((u8*)digitTextures[interfaceCtx->counterDigits[2]])), 8,
16, svar3, 190, 8, 16, 1 << 10, 1 << 10);
svar3 += 8;
}
OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP,
((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8, 16,
svar3, 190, 8, 16, 1 << 10, 1 << 10);
OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[3]]), 8,
16, svar3, 190, 8, 16, 1 << 10, 1 << 10);
}
break;
default:
@ -3225,13 +3215,15 @@ void Interface_Draw(GlobalContext* globalCtx) {
// Rupee Counter
gDPPipeSync(OVERLAY_DISP++);
Color_RGB8 rupeeCountColor;
if (gSaveContext.rupees == CUR_CAPACITY(UPG_WALLET)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha);
rupeeCountColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorRupeeCountFull);
} else if (gSaveContext.rupees != 0) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
rupeeCountColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorRupeeCountNormal);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha);
rupeeCountColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorRupeeCountEmpty);
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, rupeeCountColor.r, rupeeCountColor.g, rupeeCountColor.b, interfaceCtx->magicAlpha);
gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0,
PRIMITIVE, 0);
@ -3257,9 +3249,8 @@ void Interface_Draw(GlobalContext* globalCtx) {
svar5 = rupeeDigitsCount[CUR_UPG_VALUE(UPG_WALLET)];
for (svar1 = 0, svar3 = 42; svar1 < svar5; svar1++, svar2++, svar3 += 8) {
OVERLAY_DISP =
Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[svar2]]), 8, 16,
OTRGetRectDimensionFromLeftEdge(svar3), 206, 8, 16, 1 << 10, 1 << 10);
OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)digitTextures[interfaceCtx->counterDigits[svar2]]), 8, 16,
OTRGetRectDimensionFromLeftEdge(svar3), 206, 8, 16, 1 << 10, 1 << 10);
}
Interface_DrawMagicBar(globalCtx);
@ -3279,8 +3270,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
if (!(interfaceCtx->unk_1FA)) {
// B Button Icon & Ammo Count
if (gSaveContext.equips.buttonItems[0] != ITEM_NONE)
{
if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) {
Interface_DrawItemIconTexture(globalCtx, gItemIcons[gSaveContext.equips.buttonItems[0]], 0);
if ((player->stateFlags1 & 0x00800000) || (globalCtx->shootingGalleryStatus > 1) ||
@ -3305,9 +3295,9 @@ void Interface_Draw(GlobalContext* globalCtx) {
R_B_LABEL_DD = (1 << 10) / (WREG(37 + gSaveContext.language) / 100.0f);
const s16 rBLabelX = OTRGetRectDimensionFromRightEdge(R_B_LABEL_X(gSaveContext.language));
gSPWideTextureRectangle(OVERLAY_DISP++, rBLabelX << 2, R_B_LABEL_Y(gSaveContext.language) << 2,
(rBLabelX + DO_ACTION_TEX_WIDTH) << 2,
(R_B_LABEL_Y(gSaveContext.language) + DO_ACTION_TEX_HEIGHT) << 2, G_TX_RENDERTILE, 0, 0,
R_B_LABEL_DD, R_B_LABEL_DD);
(rBLabelX + DO_ACTION_TEX_WIDTH) << 2,
(R_B_LABEL_Y(gSaveContext.language) + DO_ACTION_TEX_HEIGHT) << 2, G_TX_RENDERTILE,
0, 0, R_B_LABEL_DD, R_B_LABEL_DD);
}
gDPPipeSync(OVERLAY_DISP++);
@ -3352,7 +3342,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
// A Button
func_80094A14(globalCtx->state.gfxCtx);
const f32 rABtnX = OTRGetDimensionFromRightEdge(R_A_BTN_X);
//func_8008A8B8(globalCtx, R_A_BTN_Y, R_A_BTN_Y + 45, rABtnX, rABtnX + 45);
// func_8008A8B8(globalCtx, R_A_BTN_Y, R_A_BTN_Y + 45, rABtnX, rABtnX + 45);
gSPClearGeometryMode(OVERLAY_DISP++, G_CULL_BOTH);
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_A_BTN_COLOR(0), R_A_BTN_COLOR(1), R_A_BTN_COLOR(2),
@ -3360,7 +3350,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
Interface_DrawActionButton(globalCtx, rABtnX, R_A_BTN_Y);
gDPPipeSync(OVERLAY_DISP++);
const f32 rAIconX = OTRGetDimensionFromRightEdge(R_A_ICON_X);
//func_8008A8B8(globalCtx, R_A_ICON_Y, R_A_ICON_Y + 45, rAIconX, rAIconX + 45);
// func_8008A8B8(globalCtx, R_A_ICON_Y, R_A_ICON_Y + 45, rAIconX, rAIconX + 45);
gSPSetGeometryMode(OVERLAY_DISP++, G_CULL_BACK);
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0,
PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
@ -3479,9 +3469,9 @@ void Interface_Draw(GlobalContext* globalCtx) {
for (svar1 = svar2 = 0; svar1 < 4; svar1++) {
if (sHBAScoreDigits[svar1] != 0 || (svar2 != 0) || (svar1 >= 3)) {
OVERLAY_DISP = Gfx_TextureI8(
OVERLAY_DISP, digitTextures[sHBAScoreDigits[svar1]], 8, 16, svar5,
(ZREG(15) - 2), digitWidth[0], VREG(42), VREG(43) << 1, VREG(43) << 1);
OVERLAY_DISP =
Gfx_TextureI8(OVERLAY_DISP, digitTextures[sHBAScoreDigits[svar1]], 8, 16, svar5,
(ZREG(15) - 2), digitWidth[0], VREG(42), VREG(43) << 1, VREG(43) << 1);
svar5 += 9;
svar2++;
}
@ -3882,24 +3872,26 @@ void Interface_Draw(GlobalContext* globalCtx) {
gDPPipeSync(OVERLAY_DISP++);
gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE,
TEXEL0, 0, PRIMITIVE, 0);
Color_RGB8 timerColor;
if (gSaveContext.timer1State != 0) {
if ((gSaveContext.timer1Value < 10) && (gSaveContext.timer1State < 11)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255);
timerColor = *(Color_RGB8*) ResourceMgr_LoadBlobByName(colorTimerCountPanic);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
timerColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTimerCountNormal);
}
} else {
if ((gSaveContext.timer2Value < 10) && (gSaveContext.timer2State < 6)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255);
timerColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTimerCountPanic);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255);
timerColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTimerCountWarning);
}
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, timerColor.r, timerColor.g, timerColor.b, 255);
for (svar1 = 0; svar1 < 5; svar1++) {
// clang-format off
svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6]);
svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6]);
OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, digitTextures[timerDigits[svar1]], 8, 16,
svar5 + timerDigitLeftPos[svar1],
svar2 = gSaveContext.timerY[svar6], digitWidth[svar1], VREG(42), VREG(43) << 1,

View File

@ -4,6 +4,7 @@
#include "objects/object_link_child/object_link_child.h"
#include "objects/object_triforce_spot/object_triforce_spot.h"
#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h"
#include <colors/colorPaths.h>
typedef struct {
/* 0x00 */ u8 flag;
@ -713,7 +714,7 @@ Gfx* sBootDListGroups[][2] = {
void func_8008F470(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, s32 tunic,
s32 boots, s32 face, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw,
void* data) {
Color_RGB8* color;
Color_RGB8 color;
s32 eyeIndex = (jointTable[22].x & 0xF) - 1;
s32 mouthIndex = (jointTable[22].x >> 4) - 1;
@ -744,8 +745,23 @@ void func_8008F470(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable,
gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sMouthTextures[eyeIndex]));
#endif
color = &sTunicColors[tunic];
gDPSetEnvColor(POLY_OPA_DISP++, color->r, color->g, color->b, 0);
switch (tunic) {
case 0:
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTunicKokiri);
break;
case 1:
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTunicGoron);
break;
case 2:
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorTunicZora);
break;
default:
color.r = 255;
color.g = 255;
color.b = 255;
break;
}
gDPSetEnvColor(POLY_OPA_DISP++, color.r, color.g, color.b, 0);
sDListsLodOffset = lod * 2;
@ -758,8 +774,22 @@ void func_8008F470(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable,
if (strengthUpgrade >= 2) { // silver or gold gauntlets
gDPPipeSync(POLY_OPA_DISP++);
color = &sGauntletColors[strengthUpgrade - 2];
gDPSetEnvColor(POLY_OPA_DISP++, color->r, color->g, color->b, 0);
switch (strengthUpgrade) {
case 2:
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorGauntletSilver);
break;
case 3:
color = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorGauntletGold);
break;
default:
// Always accesses an out of bounds value
// The Colored Gauntlets come from here. In the future, those values should be assetized
// And added here so that we don't go out of bounds on this anymore
color = sGauntletColors[strengthUpgrade - 2];
break; // RBA Lives On
}
gDPSetEnvColor(POLY_OPA_DISP++, color.r, color.g, color.b, 0);
gSPDisplayList(POLY_OPA_DISP++, gLinkAdultLeftGauntletPlate1DL);
gSPDisplayList(POLY_OPA_DISP++, gLinkAdultRightGauntletPlate1DL);

View File

@ -13,6 +13,7 @@
#include "objects/object_mastergolon/object_mastergolon.h"
#include "objects/object_masterzoora/object_masterzoora.h"
#include "objects/object_masterkokirihead/object_masterkokirihead.h"
#include <colors/colorPaths.h>
#define FLAGS (ACTOR_FLAG_0 | ACTOR_FLAG_3 | ACTOR_FLAG_4)
@ -1879,17 +1880,19 @@ void EnOssan_UpdateCursorAnim(EnOssan* this) {
this->cursorAnimState = 0;
}
}
this->cursorColorR = ColChanMix(0, 0.0f, t);
this->cursorColorG = ColChanMix(255, 80.0f, t);
this->cursorColorB = ColChanMix(80, 0.0f, t);
this->cursorColorA = ColChanMix(255, 0.0f, t);
Color_RGB8 normalColor = this->cursorColorNormal;
Color_RGB8 dimColor = this->cursorColorDim;
this->cursorColorR = Lerp(normalColor.r, dimColor.r, t);
this->cursorColorG = Lerp(normalColor.g, dimColor.g, t);
this->cursorColorB = Lerp(normalColor.b, dimColor.b, t);
this->cursorColorA = 255;
this->cursorAnimTween = t;
}
void EnOssan_UpdateStickDirectionPromptAnim(EnOssan* this) {
f32 arrowAnimTween;
f32 new_var3; // likely fake temp
s32 new_var2 = 255; // likely fake temp
f32 stickAnimTween;
arrowAnimTween = this->arrowAnimTween;
@ -1922,16 +1925,17 @@ void EnOssan_UpdateStickDirectionPromptAnim(EnOssan* this) {
this->stickAnimState = 0;
}
Color_RGB8 arrowNormal = this->arrowColorNormal;
Color_RGB8 arrowDim = this->arrowColorDim;
this->stickAnimTween = stickAnimTween;
this->stickLeftPrompt.arrowColorR = (u8)(255 - ((s32)(155.0f * arrowAnimTween)));
this->stickLeftPrompt.arrowColorG = (u8)(new_var2 - (s32)(155.0f * arrowAnimTween));
new_var3 = (155.0f * arrowAnimTween);
this->stickLeftPrompt.arrowColorB = (u8)(0 - ((s32)((-100.0f) * arrowAnimTween)));
this->stickLeftPrompt.arrowColorA = (u8)(200 - ((s32)(50.0f * arrowAnimTween)));
this->stickRightPrompt.arrowColorR = (u8)(new_var2 - (s32)new_var3);
this->stickRightPrompt.arrowColorG = (u8)(255 - (s32)new_var3);
this->stickRightPrompt.arrowColorB = (u8)(0 - ((s32)((-100.0f) * arrowAnimTween)));
this->stickRightPrompt.arrowColorA = (u8)(200 - ((s32)(50.0f * arrowAnimTween)));
this->stickLeftPrompt.arrowColorR = Lerp(arrowNormal.r, arrowDim.r, arrowAnimTween);
this->stickLeftPrompt.arrowColorG = Lerp(arrowNormal.g, arrowDim.g, arrowAnimTween);
this->stickLeftPrompt.arrowColorB = Lerp(arrowNormal.b, arrowDim.b, arrowAnimTween);
this->stickLeftPrompt.arrowColorA = Lerp(200, 150, arrowAnimTween);
this->stickRightPrompt.arrowColorR = Lerp(arrowNormal.r, arrowDim.r, arrowAnimTween);
this->stickRightPrompt.arrowColorG = Lerp(arrowNormal.g, arrowDim.g, arrowAnimTween);
this->stickRightPrompt.arrowColorB = Lerp(arrowNormal.b, arrowDim.b, arrowAnimTween);
this->stickRightPrompt.arrowColorA = Lerp(200, 150, arrowAnimTween);
this->stickRightPrompt.arrowTexX = 290.0f;
this->stickLeftPrompt.arrowTexX = 33.0f;
this->stickRightPrompt.stickTexX = 274.0f;
@ -2137,11 +2141,17 @@ void EnOssan_InitActionFunc(EnOssan* this, GlobalContext* globalCtx) {
this->stateFlag = OSSAN_STATE_IDLE;
this->stickAccumX = this->stickAccumY = 0;
this->cursorColorNormal = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorShopCursorNormal);
this->cursorColorDim = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorShopCursorDim);
this->arrowColorNormal = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorShopArrowNormal);
this->arrowColorDim = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorShopArrowDim);
Color_RGB8 stickColor = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorShopStick);
this->cursorIndex = 0;
this->cursorZ = 1.5f;
this->cursorColorR = 0;
this->cursorColorG = 255;
this->cursorColorB = 80;
this->cursorColorR = this->cursorColorNormal.r;
this->cursorColorG = this->cursorColorNormal.g;
this->cursorColorB = this->cursorColorNormal.b;
this->cursorColorA = 255;
this->cursorAnimTween = 0;
@ -2149,30 +2159,30 @@ void EnOssan_InitActionFunc(EnOssan* this, GlobalContext* globalCtx) {
this->drawCursor = 0;
this->happyMaskShopkeeperEyeIdx = 0;
this->stickLeftPrompt.stickColorR = 200;
this->stickLeftPrompt.stickColorG = 200;
this->stickLeftPrompt.stickColorB = 200;
this->stickLeftPrompt.stickColorR = stickColor.r;
this->stickLeftPrompt.stickColorG = stickColor.g;
this->stickLeftPrompt.stickColorB = stickColor.b;
this->stickLeftPrompt.stickColorA = 180;
this->stickLeftPrompt.stickTexX = 49;
this->stickLeftPrompt.stickTexY = 95;
this->stickLeftPrompt.arrowColorR = 255;
this->stickLeftPrompt.arrowColorG = 255;
this->stickLeftPrompt.arrowColorB = 0;
this->stickLeftPrompt.arrowColorR = this->arrowColorNormal.r;
this->stickLeftPrompt.arrowColorG = this->arrowColorNormal.g;
this->stickLeftPrompt.arrowColorB = this->arrowColorNormal.b;
this->stickLeftPrompt.arrowColorA = 200;
this->stickLeftPrompt.arrowTexX = 33;
this->stickLeftPrompt.arrowTexY = 91;
this->stickLeftPrompt.z = 1;
this->stickLeftPrompt.isEnabled = false;
this->stickRightPrompt.stickColorR = 200;
this->stickRightPrompt.stickColorG = 200;
this->stickRightPrompt.stickColorB = 200;
this->stickRightPrompt.stickColorR = stickColor.r;
this->stickRightPrompt.stickColorG = stickColor.g;
this->stickRightPrompt.stickColorB = stickColor.b;
this->stickRightPrompt.stickColorA = 180;
this->stickRightPrompt.stickTexX = 274;
this->stickRightPrompt.stickTexY = 95;
this->stickRightPrompt.arrowColorR = 255;
this->stickRightPrompt.arrowColorG = 255;
this->stickRightPrompt.arrowColorB = 0;
this->stickRightPrompt.arrowColorR = this->arrowColorNormal.r;
this->stickRightPrompt.arrowColorG = this->arrowColorNormal.g;
this->stickRightPrompt.arrowColorB = this->arrowColorNormal.b;
this->stickRightPrompt.arrowColorA = 200;
this->stickRightPrompt.arrowTexX = 290;
this->stickRightPrompt.arrowTexY = 91;

View File

@ -31,7 +31,7 @@ typedef struct {
/* 0x34 */ s32 isEnabled;
} StickDirectionPrompt; // size = 0x38
#define ColChanMix(c1, c2, m) (c1 - (s32)(c2 * m)) & 0xFF
#define Lerp(c1, c2, m) (c1 - (s8)((c1 - c2) * m))
typedef struct EnOssan {
/* 0x0000 */ Actor actor;
@ -81,7 +81,11 @@ typedef struct EnOssan {
/* 0x02CD */ u8 stickAnimState;
/* 0x02D0 */ f32 shopItemSelectedTween;
/* 0x02D4 */ f32 cameraFaceAngle; // stored in degrees
} EnOssan; // size = 0x02D8
/* 0x02D8 */ Color_RGB8 arrowColorNormal;
/* 0x02F0 */ Color_RGB8 arrowColorDim;
/* 0x0308 */ Color_RGB8 cursorColorNormal;
/* 0x0320 */ Color_RGB8 cursorColorDim;
} EnOssan; // size = 0x0338
typedef enum {
/* 00 */ OSSAN_TYPE_KOKIRI,

View File

@ -1,6 +1,7 @@
#include "z_kaleido_scope.h"
#include "textures/parameter_static/parameter_static.h"
#include "textures/icon_item_static/icon_item_static.h"
#include <colors/colorPaths.h>
extern const char* digitTextures[];
@ -467,6 +468,11 @@ void KaleidoScope_DrawQuestStatus(GlobalContext* globalCtx, GraphicsContext* gfx
}
}
Color_RGB8 colorA = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteA);
Color_RGB8 colorCUp = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCUp);
Color_RGB8 colorCRight = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCRight);
Color_RGB8 colorCDown = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCDown);
Color_RGB8 colorCLeft = *(Color_RGB8*)ResourceMgr_LoadBlobByName(colorOcarinaNoteCLeft);
if (pauseCtx->unk_1E4 == 2) {
pauseCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
@ -496,10 +502,24 @@ void KaleidoScope_DrawQuestStatus(GlobalContext* globalCtx, GraphicsContext* gfx
gDPPipeSync(POLY_KAL_DISP++);
if (D_8082A124[sp218] == 0) {
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 80, 255, 150, D_8082A150[sp218]);
} else {
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 255, 255, 50, D_8082A150[sp218]);
switch (D_8082A124[sp218]) {
case OCARINA_NOTE_A:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorA.r, colorA.g, colorA.b, 200);
break;
case OCARINA_NOTE_C_UP:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCUp.r, colorCUp.g, colorCUp.b, 200);
break;
case OCARINA_NOTE_C_RIGHT:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCRight.r, colorCRight.g, colorCRight.b, 200);
break;
case OCARINA_NOTE_C_DOWN:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCDown.r, colorCDown.g, colorCDown.b, 200);
break;
case OCARINA_NOTE_C_LEFT:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCLeft.r, colorCLeft.g, colorCLeft.b, 200);
break;
default:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 255, 255, 50, 200);
}
gDPSetEnvColor(POLY_KAL_DISP++, 10, 10, 10, 0);
@ -526,10 +546,24 @@ void KaleidoScope_DrawQuestStatus(GlobalContext* globalCtx, GraphicsContext* gfx
gDPPipeSync(POLY_KAL_DISP++);
if (pauseCtx->unk_1E4 == 8) {
if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == 0) {
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 80, 255, 150, 200);
} else {
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 255, 255, 50, 200);
switch (gOcarinaSongNotes[sp224].notesIdx[phi_s3]) {
case OCARINA_NOTE_A:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorA.r, colorA.g, colorA.b, 200);
break;
case OCARINA_NOTE_C_UP:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCUp.r, colorCUp.g, colorCUp.b, 200);
break;
case OCARINA_NOTE_C_RIGHT:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCRight.r, colorCRight.g, colorCRight.b, 200);
break;
case OCARINA_NOTE_C_DOWN:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCDown.r, colorCDown.g, colorCDown.b, 200);
break;
case OCARINA_NOTE_C_LEFT:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCLeft.r, colorCLeft.g, colorCLeft.b, 200);
break;
default:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 255, 255, 50, 200);
}
} else {
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 150, 150, 150, 150);
@ -581,10 +615,24 @@ void KaleidoScope_DrawQuestStatus(GlobalContext* globalCtx, GraphicsContext* gfx
gDPPipeSync(POLY_KAL_DISP++);
if (D_8082A124[phi_s3] == 0) {
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 80, 255, 150, D_8082A150[phi_s3]);
} else {
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 255, 255, 50, D_8082A150[phi_s3]);
switch (D_8082A124[phi_s3]) {
case OCARINA_NOTE_A:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorA.r, colorA.g, colorA.b, 200);
break;
case OCARINA_NOTE_C_UP:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCUp.r, colorCUp.g, colorCUp.b, 200);
break;
case OCARINA_NOTE_C_RIGHT:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCRight.r, colorCRight.g, colorCRight.b, 200);
break;
case OCARINA_NOTE_C_DOWN:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCDown.r, colorCDown.g, colorCDown.b, 200);
break;
case OCARINA_NOTE_C_LEFT:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, colorCLeft.r, colorCLeft.g, colorCLeft.b, 200);
break;
default:
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, 255, 255, 50, 200);
}
gDPSetEnvColor(POLY_KAL_DISP++, 10, 10, 10, 0);

View File

@ -144,8 +144,8 @@ void KaleidoScope_DrawEquipment(GlobalContext* globalCtx) {
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_kaleido_equipment.c", 219);
gDPPipeSync(POLY_KAL_DISP++);
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, ZREG(39), ZREG(40), ZREG(41), pauseCtx->alpha);
gDPSetEnvColor(POLY_KAL_DISP++, ZREG(43), ZREG(44), ZREG(45), 0);
gDPSetPrimColor(POLY_KAL_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), pauseCtx->alpha);
gDPSetEnvColor(POLY_KAL_DISP++, R_B_BTN_COLOR(0), R_B_BTN_COLOR(1), R_B_BTN_COLOR(2), 0);
for (i = 0, j = 64; i < 4; i++, j += 4) {
if (CUR_EQUIP_VALUE(i) != 0) {