[Enhancement] MM3D style clock (#713)

This commit is contained in:
Hoeloe
2024-08-18 17:55:02 -04:00
committed by GitHub
parent 53faf37dc1
commit b0ca99f18c
24 changed files with 414 additions and 0 deletions
+1
View File
@@ -48,6 +48,7 @@ static std::unordered_map<Ship::WindowBackend, const char*> windowBackendsMap =
static const std::unordered_map<int32_t, const char*> clockTypeOptions = {
{ CLOCK_TYPE_ORIGINAL, "Original" },
{ CLOCK_TYPE_3DS, "MM3D style" },
{ CLOCK_TYPE_TEXT_BASED, "Text only" },
};
+1
View File
@@ -16,6 +16,7 @@ void InitEnhancements() {
// Clock
RegisterTextBasedClock();
Register3DSClock();
// Cycle & Saving
RegisterEndOfCycleSaveHooks();
+2
View File
@@ -8,6 +8,7 @@
#include "Cheats/Infinite.h"
#include "Dialogue/Dialogue.h"
#include "Graphics/TextBasedClock.h"
#include "Graphics/3DSClock.h"
#include "Cheats/Cheats.h"
#include "Cheats/UnbreakableRazorSword.h"
#include "Cheats/UnrestrictedItems.h"
@@ -48,6 +49,7 @@ enum TimeStopOptions {
enum ClockTypeOptions {
CLOCK_TYPE_ORIGINAL,
CLOCK_TYPE_3DS,
CLOCK_TYPE_TEXT_BASED,
};
+350
View File
@@ -0,0 +1,350 @@
#include <libultraship/libultraship.h>
#include "2s2h/BenGui/HudEditor.h"
#include "2s2h/Enhancements/GameInteractor/GameInteractor.h"
#include "2s2h/Enhancements/Enhancements.h"
#include "2s2h/Enhancements/FrameInterpolation/FrameInterpolation.h"
#include "misc/title_static/title_static.h"
#include "2s2h_assets.h"
extern "C" {
#include <z64.h>
#include <macros.h>
#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h"
#include "interface/parameter_static/parameter_static.h"
extern PlayState* gPlayState;
Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop,
s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
Gfx* Gfx_DrawTexRectIA8_DropShadow(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft,
s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b,
s16 a);
Gfx* Gfx_DrawTexRectIA8_DropShadowOffset(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight,
s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy,
s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rects);
}
#define SECONDS_IN_THREE_DAYS (3 * 24 * 60 * 60)
#define SECONDS_IN_SIX_HOURS (6 * 60 * 60)
#define CLOCK_SECTION_HALFWIDTH 24
#define CLOCK_SECTION_WIDTH 48
static TexturePtr sDigitTextures[] = {
(TexturePtr)gFinalHoursClockDigit0Tex, (TexturePtr)gFinalHoursClockDigit1Tex, (TexturePtr)gFinalHoursClockDigit2Tex,
(TexturePtr)gFinalHoursClockDigit3Tex, (TexturePtr)gFinalHoursClockDigit4Tex, (TexturePtr)gFinalHoursClockDigit5Tex,
(TexturePtr)gFinalHoursClockDigit6Tex, (TexturePtr)gFinalHoursClockDigit7Tex, (TexturePtr)gFinalHoursClockDigit8Tex,
(TexturePtr)gFinalHoursClockDigit9Tex, (TexturePtr)gFinalHoursClockColonTex,
};
static TexturePtr sFinalHoursDigitTextures[] = {
(TexturePtr)gThreeDayClock3DSFinalHoursDigit0Tex, (TexturePtr)gThreeDayClock3DSFinalHoursDigit1Tex,
(TexturePtr)gThreeDayClock3DSFinalHoursDigit2Tex, (TexturePtr)gThreeDayClock3DSFinalHoursDigit3Tex,
(TexturePtr)gThreeDayClock3DSFinalHoursDigit4Tex, (TexturePtr)gThreeDayClock3DSFinalHoursDigit5Tex,
(TexturePtr)gThreeDayClock3DSFinalHoursDigit6Tex, (TexturePtr)gThreeDayClock3DSFinalHoursDigit7Tex,
(TexturePtr)gThreeDayClock3DSFinalHoursDigit8Tex, (TexturePtr)gThreeDayClock3DSFinalHoursDigit9Tex,
(TexturePtr)gThreeDayClock3DSFinalHoursColonTex,
};
s16 finalHoursClockSlots[8];
void Register3DSClock() {
REGISTER_VB_SHOULD(GI_VB_PREVENT_CLOCK_DISPLAY, {
if (CVarGetInteger("gEnhancements.Graphics.ClockType", CLOCK_TYPE_ORIGINAL) == CLOCK_TYPE_3DS) {
*should = true;
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
if (HudEditor_IsActiveElementHidden()) {
return;
}
static s32 sPreviousTimeCheck = -1;
if ((R_TIME_SPEED != 0) &&
((gPlayState->msgCtx.msgMode == MSGMODE_NONE) ||
((gPlayState->actorCtx.flags & ACTORCTX_FLAG_1) && !Play_InCsMode(gPlayState)) ||
(gPlayState->msgCtx.msgMode == MSGMODE_NONE) ||
((gPlayState->msgCtx.currentTextId >= 0x100) && (gPlayState->msgCtx.currentTextId <= 0x200)) ||
(gSaveContext.gameMode == GAMEMODE_END_CREDITS)) &&
!FrameAdvance_IsEnabled(&gPlayState->state) && !Environment_IsTimeStopped() &&
(gSaveContext.save.day <= 3)) {
if ((gPlayState->pauseCtx.state == PAUSE_STATE_OFF) &&
(gPlayState->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) {
static s16 sThreeDayClockAlpha = 255;
static s32 sFinalHoursIntro = 0;
sThreeDayClockAlpha = gPlayState->interfaceCtx.aAlpha;
OPEN_DISPS(gPlayState->state.gfxCtx);
s16 posX = 160;
s16 posY = 210;
// Draw background of 3DS clock
// TODO: Replace this with matrix/vertex handling to avoid gaps when scaled
OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadow(
OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSEdgeTex, CLOCK_SECTION_HALFWIDTH * 3, 12,
posX - (CLOCK_SECTION_HALFWIDTH * 4), posY, CLOCK_SECTION_HALFWIDTH * 3, 12, 1 << 10, 1 << 10,
255, 255, 255, sThreeDayClockAlpha);
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadow(
OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSMiddleTex, CLOCK_SECTION_WIDTH, 12,
posX - CLOCK_SECTION_HALFWIDTH, posY, CLOCK_SECTION_WIDTH, 12, 1 << 10, 1 << 10, 255, 255, 255,
sThreeDayClockAlpha);
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadowOffset(
OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSEdgeTex, CLOCK_SECTION_HALFWIDTH * 3, 12,
posX + CLOCK_SECTION_HALFWIDTH, posY, CLOCK_SECTION_HALFWIDTH * 3, 12, 1 << 10, 1 << 10, 255,
255, 255, sThreeDayClockAlpha, 3, (CLOCK_SECTION_HALFWIDTH * 3) << 5);
// Coloured day markers, which highlights the current day with its own colour
u16 fillalpha = 64;
if (gSaveContext.save.day <= 1) {
fillalpha = 255;
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 128, 255, (fillalpha * sThreeDayClockAlpha) / 255);
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP =
Gfx_DrawTexRectIA8(OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSFillTex, CLOCK_SECTION_WIDTH, 12,
posX - CLOCK_SECTION_WIDTH, posY, CLOCK_SECTION_WIDTH, 12, 1 << 10, 1 << 10);
fillalpha = 64;
if (gSaveContext.save.day == 2) {
fillalpha = 255;
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 192, 0, (fillalpha * sThreeDayClockAlpha) / 255);
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSFillTex,
CLOCK_SECTION_WIDTH, 12, posX - CLOCK_SECTION_HALFWIDTH, posY,
CLOCK_SECTION_WIDTH, 12, 1 << 10, 1 << 10);
fillalpha = 64;
if (gSaveContext.save.day >= 3) {
fillalpha = 255;
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 64, 0, (fillalpha * sThreeDayClockAlpha) / 255);
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSFillTex,
CLOCK_SECTION_WIDTH, 12, posX + CLOCK_SECTION_HALFWIDTH, posY,
CLOCK_SECTION_WIDTH, 12, 1 << 10, 1 << 10);
// This next part is for the little arrow that shows what the current time is
s32 timeUntilCrash = (s32)TIME_TO_SECONDS_F(TIME_UNTIL_MOON_CRASH);
// This is a safety measure to delay skipping the arrow marker back a day on the frame before the
// day changes by just checking if time went backwards
if (sPreviousTimeCheck != -1 && sPreviousTimeCheck > SECONDS_IN_THREE_DAYS - timeUntilCrash) {
s32 trueTimeUntilCrash = timeUntilCrash;
timeUntilCrash = SECONDS_IN_THREE_DAYS - sPreviousTimeCheck;
sPreviousTimeCheck = SECONDS_IN_THREE_DAYS - trueTimeUntilCrash;
} else {
sPreviousTimeCheck = SECONDS_IN_THREE_DAYS - timeUntilCrash;
}
// Compute the position of the arrow, and then draw it
s32 timeoffset =
std::max(std::min(3 * CLOCK_SECTION_WIDTH -
(timeUntilCrash * 3 * CLOCK_SECTION_WIDTH) / SECONDS_IN_THREE_DAYS,
3 * CLOCK_SECTION_WIDTH),
0);
u16 counterX = posX - (CLOCK_SECTION_HALFWIDTH * 3) + timeoffset;
u16 counterY = posY - 4;
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 0, 0, sThreeDayClockAlpha);
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSArrowTex, 8, 8,
counterX - 4, posY + 4, 8, 8, 1 << 10, 1 << 10);
u16 curMinutes = (s32)TIME_TO_MINUTES_F(gSaveContext.save.time) % 60;
u16 curHours = (s32)TIME_TO_MINUTES_F(gSaveContext.save.time) / 60;
// Final hours timer
if ((CURRENT_DAY >= 4) ||
((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= (CLOCK_TIME(0, 0) + 5)) &&
(((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0)))) {
// This all just gets the time to display in each number slot
s32 timeInSeconds = timeUntilCrash % 60;
s32 timeInMinutes = (timeUntilCrash / 60) % 60;
s32 timeInHours = (timeUntilCrash / 60) / 60;
finalHoursClockSlots[0] = std::min(timeInHours / 10, 9);
finalHoursClockSlots[1] = timeInHours % 10;
finalHoursClockSlots[2] = 10;
finalHoursClockSlots[3] = timeInMinutes / 10;
finalHoursClockSlots[4] = timeInMinutes % 10;
finalHoursClockSlots[5] = 10;
finalHoursClockSlots[6] = timeInSeconds / 10;
finalHoursClockSlots[7] = timeInSeconds % 10;
u16 finalTimerSpacing = 8;
u16 finalTimerPos = posX - finalTimerSpacing * 4 - finalTimerSpacing / 2;
s16 i;
s32 percentToCrash = std::min(std::max((timeUntilCrash * 255) / SECONDS_IN_SIX_HOURS, 0), 255);
// This is a lerp between yellow and red based on the remaining time
u16 finalHoursR1 = 255;
u16 finalHoursR2 = 255;
u16 finalHoursG1 = 0;
u16 finalHoursG2 = 255;
u16 finalHoursB1 = 0;
u16 finalHoursB2 = 0;
u16 finalHoursR =
(((255 - percentToCrash) * finalHoursR1) + (percentToCrash * finalHoursR2)) / 255;
u16 finalHoursG =
(((255 - percentToCrash) * finalHoursG1) + (percentToCrash * finalHoursG2)) / 255;
u16 finalHoursB =
(((255 - percentToCrash) * finalHoursB1) + (percentToCrash * finalHoursB2)) / 255;
// Controls the distance and speed modifier of the final hours clock intro animation
// finalHoursOffset controls the distance offset for the intro animation
// finalHoursModifier controls the speed of the intro animation - larger is slower
s32 finalHoursOffset = 10;
s32 finalHoursModifier = 2;
if (sFinalHoursIntro < finalHoursOffset * finalHoursModifier) {
sFinalHoursIntro++;
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, finalHoursR, finalHoursG, finalHoursB,
(sThreeDayClockAlpha * sFinalHoursIntro) /
(finalHoursOffset * finalHoursModifier));
// This just loops through and draws all the numbers
for (i = 0; i < 8; i++) {
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8(
OVERLAY_DISP, sFinalHoursDigitTextures[finalHoursClockSlots[i]], 16, 16, finalTimerPos,
posY - 14 - finalHoursOffset + (sFinalHoursIntro / finalHoursModifier), 16, 16, 1 << 10,
1 << 10);
finalTimerPos += finalTimerSpacing;
}
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8(
OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSFinalHoursMoonTex, 16, 16, posX - 8,
posY - 28 - finalHoursOffset + (sFinalHoursIntro / finalHoursModifier), 16, 16, 1 << 10,
1 << 10);
} else {
sFinalHoursIntro = 0;
// Draw the current time in a small box
// TODO: Add scale slider to allow this box to be scaled independently of the main UI element
// Draw the background box
if (gSaveContext.save.timeSpeedOffset == -2) {
u16 pulseTime = ((s32)TIME_TO_SECONDS_F(gSaveContext.save.time) % 120);
u16 pulse;
if (pulseTime < 60) {
pulse = (pulseTime * 255) / 60;
} else {
pulse = 255 - ((pulseTime - 60) * 255) / 60;
}
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, pulse, pulse, 0, sThreeDayClockAlpha / 2);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sThreeDayClockAlpha / 2);
}
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSTimeBackdropTex,
CLOCK_SECTION_WIDTH, 16, counterX - CLOCK_SECTION_HALFWIDTH,
counterY - 4, CLOCK_SECTION_WIDTH, 16, 1 << 10, 1 << 10);
counterX -= 8;
// Draw the sun/moon next to the current time
TexturePtr daynightmarker;
if (curHours < 6 || curHours >= 18) {
daynightmarker = (TexturePtr)gThreeDayClockMoonHourTex;
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 200, 0, sThreeDayClockAlpha);
} else {
daynightmarker = (TexturePtr)gThreeDayClockSunHourTex;
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 64, 0, sThreeDayClockAlpha);
}
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, daynightmarker, 24, 24, counterX - 11,
counterY - 2, 12, 12, 1 << 11, 1 << 11);
if (!CVarGetInteger("gEnhancements.Graphics.24HoursClock", 0)) {
curHours %= 12;
if (curHours == 0) {
curHours = 12;
}
}
u16 curTensHours = curHours / 10;
curHours %= 10;
u16 curTensMinutes = curMinutes / 10;
curMinutes %= 10;
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, sThreeDayClockAlpha);
// Inverted time
if (gSaveContext.save.timeSpeedOffset == -2) {
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP =
Gfx_DrawTexRectIA8(OVERLAY_DISP, (TexturePtr)gThreeDayClock3DSSlowTimeTex, 16, 16,
counterX + 8 + 20, counterY - 4, 16, 16, 1 << 10, 1 << 10);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 64, 192, 255, sThreeDayClockAlpha);
}
// Digital time
u16 timerSpacing = 6;
if (curTensHours > 0 || CVarGetInteger("gEnhancements.Graphics.24HoursClock", 0)) {
timerSpacing = 4;
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, sDigitTextures[curTensHours], 8, 8, counterX,
counterY, 8, 8, 1 << 10, 1 << 10);
counterX += timerSpacing;
}
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, sDigitTextures[curHours], 8, 8, counterX,
counterY, 8, 8, 1 << 10, 1 << 10);
counterX += timerSpacing;
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, sDigitTextures[10], 8, 8, counterX, counterY, 8,
8, 1 << 10, 1 << 10);
counterX += timerSpacing;
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, sDigitTextures[curTensMinutes], 8, 8, counterX,
counterY, 8, 8, 1 << 10, 1 << 10);
counterX += timerSpacing;
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_CLOCK);
OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, sDigitTextures[curMinutes], 8, 8, counterX,
counterY, 8, 8, 1 << 10, 1 << 10);
}
gDPPipeSync(OVERLAY_DISP++);
CLOSE_DISPS(gPlayState->state.gfxCtx);
} else {
sPreviousTimeCheck = SECONDS_IN_THREE_DAYS - (s32)TIME_TO_SECONDS_F(TIME_UNTIL_MOON_CRASH);
}
} else {
sPreviousTimeCheck = SECONDS_IN_THREE_DAYS - (s32)TIME_TO_SECONDS_F(TIME_UNTIL_MOON_CRASH);
}
hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
}
});
}
+6
View File
@@ -0,0 +1,6 @@
#ifndef MM3D_CLOCK_H
#define MM3D_CLOCK_H
void Register3DSClock();
#endif // TEXT_BASED_CLOCK_H
+54
View File
@@ -59,6 +59,60 @@ static const ALIGN_ASSET(2) char gThreeDayClockHour24Tex[] = dgThreeDayClockHour
#define dgEmptyTexture "__OTR__textures/virtual/gEmptyTexture"
static const ALIGN_ASSET(2) char gEmptyTexture[] = dgEmptyTexture;
#define dgThreeDayClock3DSEdgeTex "__OTR__textures/parameter_static/gThreeDayClock3DSEdgeTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSEdgeTex[] = dgThreeDayClock3DSEdgeTex;
#define dgThreeDayClock3DSMiddleTex "__OTR__textures/parameter_static/gThreeDayClock3DSMiddleTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSMiddleTex[] = dgThreeDayClock3DSMiddleTex;
#define dgThreeDayClock3DSFillTex "__OTR__textures/parameter_static/gThreeDayClock3DSFillTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFillTex[] = dgThreeDayClock3DSFillTex;
#define dgThreeDayClock3DSArrowTex "__OTR__textures/parameter_static/gThreeDayClock3DSArrowTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSArrowTex[] = dgThreeDayClock3DSArrowTex;
#define dgThreeDayClock3DSTimeBackdropTex "__OTR__textures/parameter_static/gThreeDayClock3DSTimeBackdropTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSTimeBackdropTex[] = dgThreeDayClock3DSTimeBackdropTex;
#define dgThreeDayClock3DSSlowTimeTex "__OTR__textures/parameter_static/gThreeDayClock3DSSlowTimeTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSSlowTimeTex[] = dgThreeDayClock3DSSlowTimeTex;
#define dgThreeDayClock3DSFinalHoursMoonTex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursMoonTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursMoonTex[] = dgThreeDayClock3DSFinalHoursMoonTex;
#define dgThreeDayClock3DSFinalHoursDigit0Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit0Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit0Tex[] = dgThreeDayClock3DSFinalHoursDigit0Tex;
#define dgThreeDayClock3DSFinalHoursDigit1Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit1Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit1Tex[] = dgThreeDayClock3DSFinalHoursDigit1Tex;
#define dgThreeDayClock3DSFinalHoursDigit2Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit2Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit2Tex[] = dgThreeDayClock3DSFinalHoursDigit2Tex;
#define dgThreeDayClock3DSFinalHoursDigit3Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit3Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit3Tex[] = dgThreeDayClock3DSFinalHoursDigit3Tex;
#define dgThreeDayClock3DSFinalHoursDigit4Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit4Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit4Tex[] = dgThreeDayClock3DSFinalHoursDigit4Tex;
#define dgThreeDayClock3DSFinalHoursDigit5Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit5Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit5Tex[] = dgThreeDayClock3DSFinalHoursDigit5Tex;
#define dgThreeDayClock3DSFinalHoursDigit6Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit6Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit6Tex[] = dgThreeDayClock3DSFinalHoursDigit6Tex;
#define dgThreeDayClock3DSFinalHoursDigit7Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit7Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit7Tex[] = dgThreeDayClock3DSFinalHoursDigit7Tex;
#define dgThreeDayClock3DSFinalHoursDigit8Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit8Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit8Tex[] = dgThreeDayClock3DSFinalHoursDigit8Tex;
#define dgThreeDayClock3DSFinalHoursDigit9Tex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursDigit9Tex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursDigit9Tex[] = dgThreeDayClock3DSFinalHoursDigit9Tex;
#define dgThreeDayClock3DSFinalHoursColonTex "__OTR__textures/parameter_static/gThreeDayClock3DSFinalHoursColonTex"
static const ALIGN_ASSET(2) char gThreeDayClock3DSFinalHoursColonTex[] = dgThreeDayClock3DSFinalHoursColonTex;
#define dgPauseSavePromptENGTex "__OTR__textures/icon_item_static/gPauseSavePromptENGTex"
static const ALIGN_ASSET(2) char gPauseSavePromptENGTex[] = dgPauseSavePromptENGTex;
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Some files were not shown because too many files have changed in this diff Show More