*Added a widescreen factor to the settings which defines how much the images should be scaled down in X-Axis to look like widescreen. This value is usually 640/854=0.75 but might be not "looking good" for some people, so it is a setting now. It is applied to covers/buttons/windows (on set widescreen prompts)/several images

*Added a font scale factor to the settings. This font scale resizes the overall font sizes. Only full integer font sizes are supported. The font scale factor is multiplied to the font size of a text and the result is rounded and used as the font size. It's a good quick fix for too big fonts.
*Fixed GAMEID_GAMETITLE folder game layout
This commit is contained in:
dimok321 2011-02-25 18:18:57 +00:00
parent e11901bc09
commit 6d6f0f2243
21 changed files with 132 additions and 99 deletions

View File

@ -2,8 +2,8 @@
<app version="1">
<name> USB Loader GX</name>
<coder>USB Loader GX Team</coder>
<version>2.0 r1073</version>
<release_date>201102141852</release_date>
<version>2.0 r1074</version>
<release_date>201102211941</release_date>
<no_ios_reload/>
<short_description>Loads games from USB-devices</short_description>
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.

File diff suppressed because one or more lines are too long

View File

@ -23,6 +23,7 @@
***************************************************************************/
#include "BoxCover.hpp"
#include "BoxMesh.hpp"
#include "settings/CSettings.h"
#include "themes/CTheme.h"
extern GuiImageData * pointer[4];
@ -47,12 +48,13 @@ BoxCover::BoxCover(GuiImageData * img, bool flat)
PosZ = -27.f;
AnimRotate = 0.0f;
last_manual_move_frame = 0;
camera = (guVector) {0.0F, 0.0F, 0.0F};
up = (guVector) {0.0F, 1.0F, 0.0F};
look = (guVector) {0.0F, 0.0F, -1.0F};
guVector camera = (guVector) {0.0F, 0.0F, 0.0F};
guVector up = (guVector) {0.0F, 1.0F, 0.0F};
guVector look = (guVector) {0.0F, 0.0F, -1.0F};
boxColor = (GXColor) {233, 233, 233, 255};
guLookAt(view, &camera, &up, &look);
guPerspective(projection, 8, 640.f/480.f, 1.0f, 300.0F);
//! Remove me later
for(int i = 0; i < 4; ++i)
@ -110,7 +112,7 @@ void BoxCover::WiiPADControl(GuiTrigger *t)
else
moveChan = -1;
}
else if((t->wpad.btns_h & WPAD_BUTTON_A) && moveChan == t->chan && t->wpad.ir.valid)
else if((t->wpad.btns_h & WPAD_BUTTON_A) && moveChan == t->chan && t->wpad.ir.valid && !effects)
{
movePosX = (t->wpad.ir.x-moveStartPosX) * fabs(PosZ)/3400.f;
movePosY = (moveStartPosY-t->wpad.ir.y) * fabs(PosZ)/3400.f;
@ -194,8 +196,6 @@ void BoxCover::Draw()
{
u8 BoxAlpha = (int) (alpha+angleDyn) & 0xFF;
Mtx44 projection;
guPerspective(projection, 8, (f32)screenwidth/(f32)screenheight, 1.0f, 300.0F);
GX_LoadProjectionMtx(projection, GX_PERSPECTIVE);
GX_SetVtxDesc(GX_VA_POS, GX_INDEX8);
@ -215,7 +215,8 @@ void BoxCover::Draw()
guMtxRotAxisDeg(modelView, &cubeAxis, RotZ-Animation);
guMtxConcat(modelView3, modelView2, modelView2);
guMtxConcat(modelView2, modelView, modelView);
//guMtxScaleApply(modelView, modelView, BoxScale, BoxScale, BoxScale);
if(Settings.widescreen)
guMtxScaleApply(modelView, modelView, Settings.WSFactor, 1.0f, 1.0f);
guMtxTransApply(modelView, modelView, PosX+xoffsetDyn/680.0f+movePosX, PosY+yoffsetDyn/680.0f+movePosY, PosZ);
guMtxConcat(view,modelView,modelView);
@ -317,14 +318,14 @@ void BoxCover::UpdateEffects()
if(effects & EFFECT_BOX_FLY_CENTRE)
{
if(PosX > 0.01f)
PosX -= effectAmount/1200.0f;
if(PosY > 0.01f)
PosY -= effectAmount/1200.0f;
if(PosX < -0.01f)
PosX += effectAmount/1200.0f;
if(PosY < -0.01f)
PosY += effectAmount/1200.0f;
if(PosX > 0.1f)
PosX -= effectAmount/1200.f;
if(PosY > 0.1f)
PosY -= effectAmount/1200.f;
if(PosX < -0.1f)
PosX += effectAmount/1200.f;
if(PosY < -0.1f)
PosY += effectAmount/1200.f;
movePosX = 0.0f;
movePosY = 0.0f;
@ -342,13 +343,13 @@ void BoxCover::UpdateEffects()
else if(effects & EFFECT_BOX_FLY_BACK)
{
if(PosX > PosXOrig+0.1f)
PosX -= effectAmount/1200.0f;
PosX -= effectAmount/1200.f;
if(PosY > PosYOrig+0.1f)
PosY -= effectAmount/1200.0f;
PosY -= effectAmount/1200.f;
if(PosX < PosXOrig-0.1f)
PosX += effectAmount/1200.0f;
PosX += effectAmount/1200.f;
if(PosY < PosYOrig-0.1f)
PosY += effectAmount/1200.0f;
PosY += effectAmount/1200.f;
PosZ -= 0.4f;
RotY -= effectAmount/4.9f;

View File

@ -69,7 +69,7 @@ class BoxCover : public GuiImage
int moveChan;
bool flatCover;
bool Zoomable;
guVector camera, up, look;
Mtx44 projection;
GuiImageData boxBorder;
GuiImageData *defaultBox;
GuiImageData *NormalPointers[4];
@ -79,8 +79,6 @@ class BoxCover : public GuiImage
GXTexObj boxBorderTex;
GXTexObj defaultBoxTex;
GXColor boxColor;
};
#endif

View File

@ -81,7 +81,7 @@ bool DirList::LoadPath(std::string &folderpath, const char *filter, u32 flags)
if(!filename || !st)
{
delete [] filename;
delete filename;
delete st;
closedir(dir);
return false;
}

View File

@ -377,15 +377,12 @@ uint16_t FreeTypeGX::drawText(int16_t x, int16_t y, int16_t z, const wchar_t *te
{
if (ftKerningEnabled && i > 0)
{
FT_Get_Kerning(ftFace, fontData[pixelSize][text[i - 1]].glyphIndex, glyphData->glyphIndex,
FT_KERNING_DEFAULT, &pairDelta);
FT_Get_Kerning(ftFace, fontData[pixelSize][text[i - 1]].glyphIndex, glyphData->glyphIndex, FT_KERNING_DEFAULT, &pairDelta);
x_pos += pairDelta.x >> 6;
}
GX_InitTexObj(&glyphTexture, glyphData->glyphDataTexture, glyphData->textureWidth,
glyphData->textureHeight, GX_TF_IA4, GX_CLAMP, GX_CLAMP, GX_FALSE);
copyTextureToFramebuffer(&glyphTexture, glyphData->textureWidth, glyphData->textureHeight, x_pos
+ glyphData->renderOffsetX + x_offset, y - glyphData->renderOffsetY + y_offset, z, color);
GX_InitTexObj(&glyphTexture, glyphData->glyphDataTexture, glyphData->textureWidth, glyphData->textureHeight, GX_TF_IA4, GX_CLAMP, GX_CLAMP, GX_FALSE);
copyTextureToFramebuffer(&glyphTexture, glyphData->textureWidth, glyphData->textureHeight, x_pos + glyphData->renderOffsetX + x_offset, y - glyphData->renderOffsetY + y_offset, z, color);
x_pos += glyphData->glyphAdvanceX;
++printed;

View File

@ -1,3 +1,4 @@
#include "settings/CSettings.h"
#include "Text.hpp"
Text::Text(const char * t, int s, GXColor c) :
@ -312,7 +313,7 @@ void Text::Draw()
GXColor c = color;
c.a = this->GetAlpha();
int newSize = size * GetScale();
int newSize = size * GetScale() * Settings.FontScaleFactor;
if (newSize != currentSize)
{

View File

@ -216,10 +216,10 @@ class GuiElement
int GetMaxX();
//!Gets the current width of the element. Does not currently consider the scale
//!\return width
int GetWidth();
virtual int GetWidth();
//!Gets the height of the element. Does not currently consider the scale
//!\return height
int GetHeight();
virtual int GetHeight();
//!Sets the size (width/height) of the element
//!\param w Width of element
//!\param h Height of element
@ -662,6 +662,8 @@ class GuiText: public GuiElement
void SetFont(FreeTypeGX *f);
//!Get the original text as char
virtual const wchar_t * GetText();
//!Overload for GetWidth()
int GetWidth() { return GetTextWidth(); }
//!Get the Horizontal Size of Text
int GetTextWidth();
int GetTextWidth(int ind);

View File

@ -1,4 +1,5 @@
#include "gui_diskcover.h"
#include "settings/CSettings.h"
GuiDiskCover::GuiDiskCover()
{
@ -75,11 +76,11 @@ void GuiDiskCover::Draw()
LOCK( this );
if (!image || !this->IsVisible()) return;
float currScale = this->GetScale();
// Menu_DrawDiskCoverShadow(this->GetLeft(), this->GetTop(), 190, width, height, 40, image, imageangle, deg_beta, widescreen ? currScale*0.8 : currScale, currScale, this->GetAlpha(), true);
Menu_DrawDiskCover(this->GetLeft(), this->GetTop(), PosZ, width, height, Distance, image, imageangle, deg_beta,
widescreen ? currScale * 0.8 : currScale, currScale, 64, true);
widescreen ? currScale * Settings.WSFactor : currScale, currScale, 64, true);
Menu_DrawDiskCover(this->GetLeft(), this->GetTop(), PosZ, width, height, Distance, image, imageangle, deg_beta,
widescreen ? currScale * 0.8 : currScale, currScale, this->GetAlpha(), false);
widescreen ? currScale * Settings.WSFactor : currScale, currScale, this->GetAlpha(), false);
if (eff_step)
{

View File

@ -248,21 +248,6 @@ int GuiGameBrowser::GetClickedOption()
return found;
}
int GuiGameBrowser::GetSelectedOption()
{
int found = -1;
for (int i = 0; i < pagesize; i++)
{
if (game[i]->GetState() == STATE_SELECTED)
{
game[i]->SetState(STATE_SELECTED);
found = gameIndex[i];
break;
}
}
return found;
}
/****************************************************************************
* FindMenuItem
*

View File

@ -11,7 +11,7 @@ class GuiGameBrowser: public GuiElement
~GuiGameBrowser();
int FindMenuItem(int c, int d);
int GetClickedOption();
int GetSelectedOption();
int GetSelectedOption() { return listOffset+selectedItem; }
void ResetState();
void SetFocus(int f);
void Draw();

View File

@ -9,6 +9,7 @@
***************************************************************************/
#include "gui.h"
#include "settings/CSettings.h"
/**
* Constructor for the GuiImage class.
*/
@ -440,7 +441,7 @@ void GuiImage::Draw()
{
for (int i = 0; i < tile; i++)
Menu_DrawImg(currLeft + width * i, this->GetTop(), zoffset, width, height, image, imageangle,
widescreen ? currScale * 0.80 : currScale, currScale, this->GetAlpha(), xx1, yy1, xx2, yy2, xx3,
widescreen ? currScale * Settings.WSFactor : currScale, currScale, this->GetAlpha(), xx1, yy1, xx2, yy2, xx3,
yy3, xx4, yy4);
}
else
@ -448,7 +449,7 @@ void GuiImage::Draw()
// temporary (maybe), used to correct offset for scaled images
if (scale != 1) currLeft = currLeft - width / 2 + (width * scale) / 2;
Menu_DrawImg(currLeft, this->GetTop(), zoffset, width, height, image, imageangle, widescreen ? currScale * 0.80
Menu_DrawImg(currLeft, this->GetTop(), zoffset, width, height, image, imageangle, widescreen ? currScale * Settings.WSFactor
: currScale, currScale, this->GetAlpha(), xx1, yy1, xx2, yy2, xx3, yy3, xx4, yy4);
}

View File

@ -10,6 +10,7 @@
#include "gui.h"
#include "wstring.hpp"
#include "settings/CSettings.h"
#define MAX_LINES_TO_DRAW 9
@ -18,8 +19,7 @@ static int presetMaxWidth = 0;
static int presetAlignmentHor = 0;
static int presetAlignmentVert = 0;
static u16 presetStyle = 0;
static GXColor presetColor = ( GXColor )
{ 255, 255, 255, 255};
static GXColor presetColor = (GXColor) {255, 255, 255, 255};
#define TEXT_SCROLL_DELAY 5
#define TEXT_SCROLL_INITIAL_DELAY 8
@ -527,7 +527,7 @@ void GuiText::Draw()
GXColor c = color;
c.a = GetAlpha();
int newSize = size * GetScale();
int newSize = size * GetScale() * Settings.FontScaleFactor;
if (newSize != currentSize)
{
@ -540,18 +540,19 @@ void GuiText::Draw()
{
if (wrapMode == DOTTED) // text dotted
{
if (textDyn.size() == 0) MakeDottedText();
if (textDyn.size() == 0)
MakeDottedText();
if (textDyn.size() > 0) (font ? font : fontSystem)->drawText(this->GetLeft(), this->GetTop(), 0,
textDyn[textDyn.size() - 1], currentSize, c, style);
if (textDyn.size() > 0)
(font ? font : fontSystem)->drawText(this->GetLeft(), this->GetTop(), 0, textDyn[textDyn.size() - 1], currentSize, c, style);
}
else if (wrapMode == SCROLL_HORIZONTAL)
{
ScrollText();
if (textDyn.size() > 0) (font ? font : fontSystem)->drawText(this->GetLeft(), this->GetTop(), 0,
textDyn[textDyn.size() - 1], currentSize, c, style);
if (textDyn.size() > 0)
(font ? font : fontSystem)->drawText(this->GetLeft(), this->GetTop(), 0, textDyn[textDyn.size() - 1], currentSize, c, style);
}
else if (wrapMode == WRAP)
{
@ -563,8 +564,7 @@ void GuiText::Draw()
for (u32 i = 0; i < textDyn.size(); i++)
{
(font ? font : fontSystem)->drawText(this->GetLeft(), this->GetTop() + voffset + i * lineheight, 0,
textDyn[i], currentSize, c, style);
(font ? font : fontSystem)->drawText(this->GetLeft(), this->GetTop() + voffset + i * lineheight, 0, textDyn[i], currentSize, c, style);
}
}
}

View File

@ -116,7 +116,7 @@ static void * UpdateGUI(void *arg)
userInput[i].wpad.ir.y - pointer[i]->GetHeight()/2,
9900.0f, pointer[i]->GetWidth(), pointer[i]->GetHeight(),
pointer[i]->GetImage(), userInput[i].wpad.ir.angle,
Settings.widescreen ? 0.8f : 1.f, 1.f, 255, 0, 0, 0, 0, 0, 0, 0, 0);
Settings.widescreen ? Settings.WSFactor : 1.f, 1.f, 255, 0, 0, 0, 0, 0, 0, 0, 0);
}
}

View File

@ -181,9 +181,9 @@ static void UpdateProgressValues(GuiImage *progressbarImg, GuiText *prTxt, GuiTe
prTxt->SetTextf("%.2f", progressPercent);
if (Settings.widescreen && Settings.wsprompt)
progressbarImg->SetSkew(0, 0, static_cast<int> (progressbarImg->GetWidth() * progressPercent * 0.8)
progressbarImg->SetSkew(0, 0, static_cast<int> (progressbarImg->GetWidth() * progressPercent * Settings.WSFactor)
- progressbarImg->GetWidth(), 0, static_cast<int> (progressbarImg->GetWidth() * progressPercent
* 0.8) - progressbarImg->GetWidth(), 0, 0, 0);
* Settings.WSFactor) - progressbarImg->GetWidth(), 0, 0, 0);
else
progressbarImg->SetSkew(0, 0, static_cast<int> (progressbarImg->GetWidth() * progressPercent)
- progressbarImg->GetWidth(), 0, static_cast<int> (progressbarImg->GetWidth() * progressPercent)

View File

@ -240,11 +240,10 @@ void WindowCredits()
txt[i]->SetPosition(0, 12);
i++;
char SvnRev[30];
#ifdef FULLCHANNEL
char SvnRev[30];
snprintf( SvnRev, sizeof( SvnRev ), "Rev%sc IOS%u (Rev %u)", GetRev(), IOS_GetVersion(), IOS_GetRevision() );
snprintf(SvnRev, sizeof(SvnRev), "Rev%sc IOS%u (Rev %u)", GetRev(), IOS_GetVersion(), IOS_GetRevision());
#else
char SvnRev[30];
snprintf(SvnRev, sizeof(SvnRev), "Rev%s IOS%u (Rev %u)", GetRev(), IOS_GetVersion(), IOS_GetRevision());
#endif
@ -362,35 +361,35 @@ void WindowCredits()
sprintf(text, "Waninkoko, Kwiirk & Hermes %s", tr( "for the USB Loader source" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(60, y);
txt[i]->SetPosition(10, y);
i++;
y += 20;
sprintf(text, "Tantric %s", tr( "for his awesome tool LibWiiGui" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(60, y);
txt[i]->SetPosition(10, y);
i++;
y += 20;
sprintf(text, "Fishears/Nuke %s", tr( "for Ocarina" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(60, y);
txt[i]->SetPosition(10, y);
i++;
y += 20;
sprintf(text, "WiiPower %s", tr( "for diverse patches" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(60, y);
txt[i]->SetPosition(10, y);
i++;
y += 20;
sprintf(text, "Oggzee %s", tr( "for FAT/NTFS support" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(60, y);
txt[i]->SetPosition(10, y);
i++;
y += 20;

View File

@ -396,7 +396,7 @@ static int InternalShowGameInfo(char *ID)
playersImg->SetPosition(intputX, inputY);
playersImg->SetAlignment(0, 4);
InfoWindow.Append(playersImg);
intputX += (Settings.widescreen ? playersImg->GetWidth() * .8 : playersImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? playersImg->GetWidth() * Settings.WSFactor : playersImg->GetWidth()) + 5;
}
//draw the input types for this game
@ -407,7 +407,7 @@ static int InternalShowGameInfo(char *ID)
motionplusImg->SetPosition(intputX, inputY);
motionplusImg->SetAlignment(0, 4);
InfoWindow.Append(motionplusImg);
intputX += (Settings.widescreen ? motionplusImg->GetWidth() * .8 : motionplusImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? motionplusImg->GetWidth() * Settings.WSFactor : motionplusImg->GetWidth()) + 5;
}
if (nunchuk == 1)
{
@ -416,7 +416,7 @@ static int InternalShowGameInfo(char *ID)
nunchukImg->SetPosition(intputX, inputY);
nunchukImg->SetAlignment(0, 4);
InfoWindow.Append(nunchukImg);
intputX += (Settings.widescreen ? nunchukImg->GetWidth() * .8 : nunchukImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? nunchukImg->GetWidth() * Settings.WSFactor : nunchukImg->GetWidth()) + 5;
}
if (classiccontroller == 1)
{
@ -425,7 +425,7 @@ static int InternalShowGameInfo(char *ID)
classiccontrollerImg->SetPosition(intputX, inputY);
classiccontrollerImg->SetAlignment(0, 4);
InfoWindow.Append(classiccontrollerImg);
intputX += (Settings.widescreen ? classiccontrollerImg->GetWidth() * .8 : classiccontrollerImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? classiccontrollerImg->GetWidth() * Settings.WSFactor : classiccontrollerImg->GetWidth()) + 5;
}
if (gamecube == 1)
{
@ -434,7 +434,7 @@ static int InternalShowGameInfo(char *ID)
gcImg->SetPosition(intputX, inputY);
gcImg->SetAlignment(0, 4);
InfoWindow.Append(gcImg);
intputX += (Settings.widescreen ? gcImg->GetWidth() * .8 : gcImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? gcImg->GetWidth() * Settings.WSFactor : gcImg->GetWidth()) + 5;
}
if (wheel == 1)
{
@ -443,7 +443,7 @@ static int InternalShowGameInfo(char *ID)
wheelImg->SetPosition(intputX, inputY);
wheelImg->SetAlignment(0, 4);
InfoWindow.Append(wheelImg);
intputX += (Settings.widescreen ? wheelImg->GetWidth() * .8 : wheelImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? wheelImg->GetWidth() * Settings.WSFactor : wheelImg->GetWidth()) + 5;
}
if (guitar == 1)
{
@ -452,7 +452,7 @@ static int InternalShowGameInfo(char *ID)
guitarImg->SetPosition(intputX, inputY);
guitarImg->SetAlignment(0, 4);
InfoWindow.Append(guitarImg);
intputX += (Settings.widescreen ? guitarImg->GetWidth() * .8 : guitarImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? guitarImg->GetWidth() * Settings.WSFactor : guitarImg->GetWidth()) + 5;
}
if (drums == 1)
{
@ -461,7 +461,7 @@ static int InternalShowGameInfo(char *ID)
drumsImg->SetPosition(intputX, inputY);
drumsImg->SetAlignment(0, 4);
InfoWindow.Append(drumsImg);
intputX += (Settings.widescreen ? drumsImg->GetWidth() * .8 : drumsImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? drumsImg->GetWidth() * Settings.WSFactor : drumsImg->GetWidth()) + 5;
}
if (microphone == 1)
{
@ -470,7 +470,7 @@ static int InternalShowGameInfo(char *ID)
microphoneImg->SetPosition(intputX, inputY);
microphoneImg->SetAlignment(0, 4);
InfoWindow.Append(microphoneImg);
intputX += (Settings.widescreen ? microphoneImg->GetWidth() * .8 : microphoneImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? microphoneImg->GetWidth() * Settings.WSFactor : microphoneImg->GetWidth()) + 5;
}
if (zapper == 1)
{
@ -479,7 +479,7 @@ static int InternalShowGameInfo(char *ID)
zapperImg->SetPosition(intputX, inputY);
zapperImg->SetAlignment(0, 4);
InfoWindow.Append(zapperImg);
intputX += (Settings.widescreen ? zapperImg->GetWidth() * .8 : zapperImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? zapperImg->GetWidth() * Settings.WSFactor : zapperImg->GetWidth()) + 5;
}
if (wiispeak == 1)
{
@ -488,7 +488,7 @@ static int InternalShowGameInfo(char *ID)
wiispeakImg->SetPosition(intputX, inputY);
wiispeakImg->SetAlignment(0, 4);
InfoWindow.Append(wiispeakImg);
intputX += (Settings.widescreen ? wiispeakImg->GetWidth() * .8 : wiispeakImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? wiispeakImg->GetWidth() * Settings.WSFactor : wiispeakImg->GetWidth()) + 5;
}
if (nintendods == 1)
{
@ -497,7 +497,7 @@ static int InternalShowGameInfo(char *ID)
nintendodsImg->SetPosition(intputX, inputY);
nintendodsImg->SetAlignment(0, 4);
InfoWindow.Append(nintendodsImg);
intputX += (Settings.widescreen ? nintendodsImg->GetWidth() * .8 : nintendodsImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? nintendodsImg->GetWidth() * Settings.WSFactor : nintendodsImg->GetWidth()) + 5;
}
if (dancepad == 1)
{
@ -506,7 +506,7 @@ static int InternalShowGameInfo(char *ID)
dancepadImg->SetPosition(intputX, inputY);
dancepadImg->SetAlignment(0, 4);
InfoWindow.Append(dancepadImg);
intputX += (Settings.widescreen ? dancepadImg->GetWidth() * .8 : dancepadImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? dancepadImg->GetWidth() * Settings.WSFactor : dancepadImg->GetWidth()) + 5;
}
if (balanceboard == 1)
{
@ -515,7 +515,7 @@ static int InternalShowGameInfo(char *ID)
balanceboardImg->SetPosition(intputX, inputY);
balanceboardImg->SetAlignment(0, 4);
InfoWindow.Append(balanceboardImg);
intputX += (Settings.widescreen ? balanceboardImg->GetWidth() * .8 : balanceboardImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? balanceboardImg->GetWidth() * Settings.WSFactor : balanceboardImg->GetWidth()) + 5;
}
// # online players
@ -547,7 +547,7 @@ static int InternalShowGameInfo(char *ID)
wifiplayersImg->SetPosition(intputX, inputY);
wifiplayersImg->SetAlignment(0, 4);
InfoWindow.Append(wifiplayersImg);
intputX += (Settings.widescreen ? wifiplayersImg->GetWidth() * .8 : wifiplayersImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? wifiplayersImg->GetWidth() * Settings.WSFactor : wifiplayersImg->GetWidth()) + 5;
}
// ratings
@ -614,7 +614,7 @@ static int InternalShowGameInfo(char *ID)
ratingImg->SetPosition(-25, inputY);
ratingImg->SetAlignment(1, 4);
InfoWindow.Append(ratingImg);
intputX += (Settings.widescreen ? ratingImg->GetWidth() * .8 : ratingImg->GetWidth()) + 5;
intputX += (Settings.widescreen ? ratingImg->GetWidth() * Settings.WSFactor : ratingImg->GetWidth()) + 5;
}
// title
@ -680,7 +680,7 @@ static int InternalShowGameInfo(char *ID)
char linebuf[300];
snprintf(linebuf, sizeof(linebuf), "%s : %s%i", tr( "Released" ), linebuf2, year);
releasedTxt = new GuiText(linebuf, 16, ( GXColor ) {0, 0, 0, 255});
if (releasedTxt->GetWidth() > 300) newline = 2;
if (releasedTxt->GetTextWidth() > 300) newline = 2;
releasedTxt->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
releasedTxt->SetPosition(-17, 12 + indexy);
indexy += (20 * newline);
@ -693,7 +693,7 @@ static int InternalShowGameInfo(char *ID)
{
snprintf(linebuf2, sizeof(linebuf2), "%s %s", tr( "Published by" ), GameInfo.Publisher.c_str());
publisherTxt = new GuiText(linebuf2, 16, ( GXColor ) {0, 0, 0, 255});
if (publisherTxt->GetWidth() > 250) newline = 2;
if (publisherTxt->GetTextWidth() > 250) newline = 2;
publisherTxt->SetMaxWidth(250, WRAP);
publisherTxt->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
publisherTxt->SetPosition(-17, 12 + indexy);
@ -707,7 +707,7 @@ static int InternalShowGameInfo(char *ID)
{
snprintf(linebuf2, sizeof(linebuf2), "%s %s", tr( "Developed by" ), GameInfo.Developer.c_str());
developerTxt = new GuiText(linebuf2, 16, ( GXColor ) {0, 0, 0, 255});
if (developerTxt->GetWidth() > 250) newline = 2;
if (developerTxt->GetTextWidth() > 250) newline = 2;
developerTxt->SetMaxWidth(250, WRAP);
developerTxt->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
developerTxt->SetPosition(-17, 12 + indexy);

View File

@ -116,6 +116,8 @@ void CSettings::SetDefault()
MultiplePartitions = OFF;
USBPort = 0;
CacheTitles = ON;
WSFactor = 0.8f; //actually should be 0.75 for real widescreen
FontScaleFactor = 1.0f;
}
bool CSettings::Load()
@ -259,6 +261,8 @@ bool CSettings::Save()
fprintf(file, "MultiplePartitions = %d\n ", MultiplePartitions);
fprintf(file, "USBPort = %d\n ", USBPort);
fprintf(file, "CacheTitles = %d\n ", CacheTitles);
fprintf(file, "WSFactor = %0.3f\n ", WSFactor);
fprintf(file, "FontScaleFactor = %0.3f\n ", FontScaleFactor);
fclose(file);
return true;
@ -516,6 +520,16 @@ bool CSettings::SetSetting(char *name, char *value)
InstallPartitions = strtoul(value, 0, 16);
return true;
}
else if (strcmp(name, "WSFactor") == 0)
{
WSFactor = atof(value);
return true;
}
else if (strcmp(name, "FontScaleFactor") == 0)
{
FontScaleFactor = atof(value);
return true;
}
else if (strcmp(name, "ParentalBlocks") == 0)
{
ParentalBlocks = strtoul(value, 0, 16);

View File

@ -115,6 +115,8 @@ class CSettings
short CacheTitles;
u32 InstallPartitions;
u32 ParentalBlocks;
f32 WSFactor;
f32 FontScaleFactor;
protected:
bool ValidVersion(FILE * file);
bool SetSetting(char *name, char *value);

View File

@ -111,6 +111,8 @@ GuiSettingsMenu::GuiSettingsMenu()
Options->SetName(Idx++, "%s", tr( "Tooltips" ));
Options->SetName(Idx++, "%s", tr( "Flip-X" ));
Options->SetName(Idx++, "%s", tr( "Prompts Buttons" ));
Options->SetName(Idx++, "%s", tr( "Widescreen Factor" ));
Options->SetName(Idx++, "%s", tr( "Font Scale Factor" ));
Options->SetName(Idx++, "%s", tr( "Keyboard" ));
Options->SetName(Idx++, "%s", tr( "Disc Artwork Download" ));
Options->SetName(Idx++, "%s", tr( "Wiilight" ));
@ -168,6 +170,12 @@ void GuiSettingsMenu::SetOptionValues()
//! Settings: Prompts Buttons
Options->SetValue(Idx++, "%s", tr( PromptButtonsText[Settings.wsprompt] ));
//! Settings: Widescreen Factor
Options->SetValue(Idx++, "%0.3f", Settings.WSFactor);
//! Settings: Font Scale Factor
Options->SetValue(Idx++, "%0.3f", Settings.FontScaleFactor);
//! Settings: Keyboard
Options->SetValue(Idx++, "%s", KeyboardText[Settings.keyset]);
@ -281,6 +289,26 @@ int GuiSettingsMenu::GetMenuInternal()
if (++Settings.wsprompt >= MAX_ON_OFF) Settings.wsprompt = 0;
}
//! Settings: Widescreen Factor
else if (ret == ++Idx)
{
char entrie[20];
snprintf(entrie, sizeof(entrie), "%0.3f", Settings.WSFactor);
int ret = OnScreenKeyboard(entrie, sizeof(entrie), 0);
if(ret)
Settings.WSFactor = atof(entrie);
}
//! Settings: Font Scale Factor
else if (ret == ++Idx)
{
char entrie[20];
snprintf(entrie, sizeof(entrie), "%0.3f", Settings.FontScaleFactor);
int ret = OnScreenKeyboard(entrie, sizeof(entrie), 0);
if(ret)
Settings.FontScaleFactor = atof(entrie);
}
//! Settings: Keyboard
else if (ret == ++Idx)
{

View File

@ -423,13 +423,17 @@ s32 Wbfs_Fat::GetHeadersCount()
// usb:/wbfs/TITLE[GAMEID]/GAMEID.wbfs
lay_b = 1;
}
else if (fname[6] == '_' && is_gameid((char*) id))
else if (fname[6] == '_')
{
// usb:/wbfs/GAMEID_TITLE/GAMEID.wbfs
lay_a = 1;
memcpy(id, fname, 6);
if(is_gameid((char*) id))
{
lay_a = 1;
snprintf(fname_title, sizeof(fname_title), &fname[7]);
}
}
if (!lay_a && !lay_b) continue;