mirror of
https://github.com/dborth/vbagx.git
synced 2024-11-29 14:04:16 +01:00
add DI_Close, don't wait for net init before entering game, add filename text scrolling, improved efficiency on text wrapping, add reset button for mappings, change video callbacks to avoid over-reading pads
This commit is contained in:
parent
c3440eb8b2
commit
3e76213c96
@ -31,6 +31,8 @@ With it you can play GBA/Game Boy Color/Game Boy games on your Wii/GameCube.
|
|||||||
[2.0.4]
|
[2.0.4]
|
||||||
|
|
||||||
* Increase file browser listing to 10 entries, decrease font size
|
* Increase file browser listing to 10 entries, decrease font size
|
||||||
|
* Added text scrolling on file browser
|
||||||
|
* Added reset button for controller mappings
|
||||||
* Settings are now loaded from USB when loading the app from USB on HBC
|
* Settings are now loaded from USB when loading the app from USB on HBC
|
||||||
* Fixed menu crashes caused by ogg player bugs
|
* Fixed menu crashes caused by ogg player bugs
|
||||||
* Fixed memory card saving verification bug
|
* Fixed memory card saving verification bug
|
||||||
|
@ -680,6 +680,7 @@ void FreeTypeGX::copyTextureToFramebuffer(GXTexObj *texObj, f32 texWidth, f32 te
|
|||||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||||
GX_TexCoord2f32(0.0f, 1.0f);
|
GX_TexCoord2f32(0.0f, 1.0f);
|
||||||
GX_End();
|
GX_End();
|
||||||
|
GX_DrawDone();
|
||||||
|
|
||||||
this->setDefaultMode();
|
this->setDefaultMode();
|
||||||
}
|
}
|
||||||
@ -713,6 +714,7 @@ void FreeTypeGX::copyFeatureToFramebuffer(f32 featureWidth, f32 featureHeight, i
|
|||||||
GX_Position2s16(screenX, featureHeight + screenY);
|
GX_Position2s16(screenX, featureHeight + screenY);
|
||||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||||
GX_End();
|
GX_End();
|
||||||
|
GX_DrawDone();
|
||||||
|
|
||||||
this->setDefaultMode();
|
this->setDefaultMode();
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,7 @@
|
|||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
extern "C" {
|
|
||||||
#include <di/di.h>
|
#include <di/di.h>
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "vba.h"
|
#include "vba.h"
|
||||||
@ -364,7 +362,6 @@ static int
|
|||||||
getentry (int entrycount, unsigned char dvdbuffer[])
|
getentry (int entrycount, unsigned char dvdbuffer[])
|
||||||
{
|
{
|
||||||
char fname[512]; /* Huge, but experience has determined this */
|
char fname[512]; /* Huge, but experience has determined this */
|
||||||
char tmpname[512];
|
|
||||||
char *ptr;
|
char *ptr;
|
||||||
char *filename;
|
char *filename;
|
||||||
char *filenamelength;
|
char *filenamelength;
|
||||||
@ -466,8 +463,7 @@ getentry (int entrycount, unsigned char dvdbuffer[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StripExt(tmpname, fname); // hide file extension
|
StripExt(browserList[entrycount].displayname, browserList[entrycount].filename); // hide file extension
|
||||||
strncpy (browserList[entrycount].displayname, tmpname, MAXDISPLAY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy (&offset32, &dvdbuffer[diroffset + EXTENT], 4);
|
memcpy (&offset32, &dvdbuffer[diroffset + EXTENT], 4);
|
||||||
|
@ -352,7 +352,7 @@ void StripExt(char* returnstring, char * inputstring)
|
|||||||
{
|
{
|
||||||
char* loc_dot;
|
char* loc_dot;
|
||||||
|
|
||||||
strncpy (returnstring, inputstring, 255);
|
strncpy (returnstring, inputstring, MAXJOLIET);
|
||||||
|
|
||||||
if(inputstring == NULL || strlen(inputstring) < 4)
|
if(inputstring == NULL || strlen(inputstring) < 4)
|
||||||
return;
|
return;
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include <gccore.h>
|
#include <gccore.h>
|
||||||
|
|
||||||
#define MAXJOLIET 255
|
#define MAXJOLIET 255
|
||||||
#define MAXDISPLAY 37
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -32,7 +31,7 @@ typedef struct
|
|||||||
time_t mtime; // file modified time
|
time_t mtime; // file modified time
|
||||||
char isdir; // 0 - file, 1 - directory
|
char isdir; // 0 - file, 1 - directory
|
||||||
char filename[MAXJOLIET + 1]; // full filename
|
char filename[MAXJOLIET + 1]; // full filename
|
||||||
char displayname[MAXDISPLAY + 1]; // name for browser display
|
char displayname[MAXJOLIET + 1]; // name for browser display
|
||||||
} BROWSERENTRY;
|
} BROWSERENTRY;
|
||||||
|
|
||||||
extern BROWSERINFO browser;
|
extern BROWSERINFO browser;
|
||||||
|
@ -89,6 +89,12 @@ extern const u32 button_png_size;
|
|||||||
extern const u8 button_over_png[];
|
extern const u8 button_over_png[];
|
||||||
extern const u32 button_over_png_size;
|
extern const u32 button_over_png_size;
|
||||||
|
|
||||||
|
extern const u8 button_short_png[];
|
||||||
|
extern const u32 button_short_png_size;
|
||||||
|
|
||||||
|
extern const u8 button_short_over_png[];
|
||||||
|
extern const u32 button_short_over_png_size;
|
||||||
|
|
||||||
extern const u8 button_small_png[];
|
extern const u8 button_small_png[];
|
||||||
extern const u32 button_small_png_size;
|
extern const u32 button_small_png_size;
|
||||||
|
|
||||||
|
@ -75,6 +75,11 @@ HaltDeviceThread()
|
|||||||
{
|
{
|
||||||
deviceHalt = true;
|
deviceHalt = true;
|
||||||
|
|
||||||
|
#ifdef HW_RVL
|
||||||
|
if(inNetworkInit) // don't wait for network to initialize
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
// wait for thread to finish
|
// wait for thread to finish
|
||||||
while(!LWP_ThreadIsSuspended(devicethread))
|
while(!LWP_ThreadIsSuspended(devicethread))
|
||||||
usleep(100);
|
usleep(100);
|
||||||
@ -120,8 +125,8 @@ devicecallback (void *arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
InitializeNetwork(SILENT);
|
|
||||||
UpdateCheck();
|
UpdateCheck();
|
||||||
|
InitializeNetwork(SILENT);
|
||||||
#else
|
#else
|
||||||
if(isMounted[METHOD_SD_SLOTA])
|
if(isMounted[METHOD_SD_SLOTA])
|
||||||
{
|
{
|
||||||
@ -318,7 +323,6 @@ ParseDirectory(int method)
|
|||||||
DIR_ITER *dir = NULL;
|
DIR_ITER *dir = NULL;
|
||||||
char fulldir[MAXPATHLEN];
|
char fulldir[MAXPATHLEN];
|
||||||
char filename[MAXPATHLEN];
|
char filename[MAXPATHLEN];
|
||||||
char tmpname[MAXPATHLEN];
|
|
||||||
struct stat filestat;
|
struct stat filestat;
|
||||||
char msg[128];
|
char msg[128];
|
||||||
int retry = 1;
|
int retry = 1;
|
||||||
@ -390,8 +394,7 @@ ParseDirectory(int method)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShortenFilename(tmpname, filename); // hide file extension
|
StripExt(browserList[entryNum].displayname, browserList[entryNum].filename); // hide file extension
|
||||||
strncpy(browserList[entryNum].displayname, tmpname, MAXDISPLAY); // crop name for display
|
|
||||||
}
|
}
|
||||||
|
|
||||||
browserList[entryNum].length = filestat.st_size;
|
browserList[entryNum].length = filestat.st_size;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Tantric September 2008
|
* Tantric September 2008
|
||||||
*
|
*
|
||||||
* unzip.cpp
|
* gcunzip.cpp
|
||||||
*
|
*
|
||||||
* File unzip routines
|
* File unzip routines
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@ -482,11 +482,9 @@ int SzParse(char * filepath, int method)
|
|||||||
}
|
}
|
||||||
memset(&(browserList[SzJ]), 0, sizeof(BROWSERENTRY)); // clear the new entry
|
memset(&(browserList[SzJ]), 0, sizeof(BROWSERENTRY)); // clear the new entry
|
||||||
|
|
||||||
// parse information about this file to the dvd file list structure
|
// parse information about this file to the file list structure
|
||||||
strncpy(browserList[SzJ].filename, SzF->Name, MAXJOLIET); // copy joliet name (useless...)
|
strncpy(browserList[SzJ].filename, SzF->Name, MAXJOLIET);
|
||||||
char tmpname[MAXJOLIET+1] = "";
|
StripExt(browserList[SzJ].displayname, browserList[SzJ].filename);
|
||||||
ShortenFilename(tmpname, browserList[SzJ].filename);
|
|
||||||
strncpy(browserList[SzJ].displayname, tmpname, MAXDISPLAY); // crop name for display
|
|
||||||
browserList[SzJ].length = SzF->Size; // filesize
|
browserList[SzJ].length = SzF->Size; // filesize
|
||||||
browserList[SzJ].offset = SzI; // the extraction function identifies the file with this number
|
browserList[SzJ].offset = SzI; // the extraction function identifies the file with this number
|
||||||
browserList[SzJ].isdir = 0; // only files will be displayed (-> no flags)
|
browserList[SzJ].isdir = 0; // only files will be displayed (-> no flags)
|
||||||
|
@ -102,6 +102,12 @@ enum
|
|||||||
TRIGGER_BUTTON_ONLY_IN_FOCUS
|
TRIGGER_BUTTON_ONLY_IN_FOCUS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SCROLL_NONE,
|
||||||
|
SCROLL_HORIZONTAL
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct _paddata {
|
typedef struct _paddata {
|
||||||
u16 btns_d;
|
u16 btns_d;
|
||||||
u16 btns_u;
|
u16 btns_u;
|
||||||
@ -613,7 +619,9 @@ class GuiText : public GuiElement
|
|||||||
//!Sets the maximum width of the drawn texture image
|
//!Sets the maximum width of the drawn texture image
|
||||||
//!If the text exceeds this, it is wrapped to the next line
|
//!If the text exceeds this, it is wrapped to the next line
|
||||||
//!\param w Maximum width
|
//!\param w Maximum width
|
||||||
void SetMaxWidth(int w);
|
void SetMaxWidth(int width);
|
||||||
|
void SetScroll(int s);
|
||||||
|
void SetWrap(bool w, int width = 0);
|
||||||
//!Sets the font color
|
//!Sets the font color
|
||||||
//!\param c Font color
|
//!\param c Font color
|
||||||
void SetColor(GXColor c);
|
void SetColor(GXColor c);
|
||||||
@ -627,9 +635,16 @@ class GuiText : public GuiElement
|
|||||||
//!Constantly called to draw the text
|
//!Constantly called to draw the text
|
||||||
void Draw();
|
void Draw();
|
||||||
protected:
|
protected:
|
||||||
|
char * origText;
|
||||||
wchar_t* text; //!< Unicode text value
|
wchar_t* text; //!< Unicode text value
|
||||||
int size; //!< Font size
|
int size; //!< Font size
|
||||||
int maxWidth; //!< Maximum width of the generated text object (for text wrapping)
|
int maxWidth; //!< Maximum width of the generated text object (for text wrapping)
|
||||||
|
bool wrap;
|
||||||
|
wchar_t* textDyn;
|
||||||
|
int textScroll;
|
||||||
|
int textScrollPos;
|
||||||
|
int textScrollInitialDelay;
|
||||||
|
int textScrollDelay;
|
||||||
u16 style; //!< FreeTypeGX style attributes
|
u16 style; //!< FreeTypeGX style attributes
|
||||||
GXColor color; //!< Font color
|
GXColor color; //!< Font color
|
||||||
};
|
};
|
||||||
@ -930,4 +945,3 @@ class GuiFileBrowser : public GuiElement
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -103,6 +103,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h)
|
|||||||
fileListText[i] = new GuiText(NULL, 20, (GXColor){0, 0, 0, 0xff});
|
fileListText[i] = new GuiText(NULL, 20, (GXColor){0, 0, 0, 0xff});
|
||||||
fileListText[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
fileListText[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
fileListText[i]->SetPosition(5,0);
|
fileListText[i]->SetPosition(5,0);
|
||||||
|
fileListText[i]->SetMaxWidth(380);
|
||||||
|
|
||||||
fileListBg[i] = new GuiImage(bgGameSelectionEntry);
|
fileListBg[i] = new GuiImage(bgGameSelectionEntry);
|
||||||
fileListFolder[i] = new GuiImage(gameFolder);
|
fileListFolder[i] = new GuiImage(gameFolder);
|
||||||
@ -375,6 +376,11 @@ void GuiFileBrowser::Update(GuiTrigger * t)
|
|||||||
selectedItem = i;
|
selectedItem = i;
|
||||||
browser.selIndex = browser.pageIndex + i;
|
browser.selIndex = browser.pageIndex + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(selectedItem == i)
|
||||||
|
fileListText[i]->SetScroll(SCROLL_HORIZONTAL);
|
||||||
|
else
|
||||||
|
fileListText[i]->SetScroll(SCROLL_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the location of the scroll box based on the position in the file list
|
// update the location of the scroll box based on the position in the file list
|
||||||
|
@ -18,23 +18,36 @@ static int presetAlignmentVert = 0;
|
|||||||
static u16 presetStyle = 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 8
|
||||||
|
#define TEXT_SCROLL_INITIAL_DELAY 6
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for the GuiText class.
|
* Constructor for the GuiText class.
|
||||||
*/
|
*/
|
||||||
GuiText::GuiText(const char * t, int s, GXColor c)
|
GuiText::GuiText(const char * t, int s, GXColor c)
|
||||||
{
|
{
|
||||||
|
origText = NULL;
|
||||||
text = NULL;
|
text = NULL;
|
||||||
size = s;
|
size = s;
|
||||||
color = c;
|
color = c;
|
||||||
alpha = c.a;
|
alpha = c.a;
|
||||||
style = FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE;
|
style = FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE;
|
||||||
maxWidth = 0;
|
maxWidth = 0;
|
||||||
|
wrap = false;
|
||||||
|
textDyn = NULL;
|
||||||
|
textScroll = SCROLL_NONE;
|
||||||
|
textScrollPos = 0;
|
||||||
|
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
||||||
|
textScrollDelay = TEXT_SCROLL_DELAY;
|
||||||
|
|
||||||
alignmentHor = ALIGN_CENTRE;
|
alignmentHor = ALIGN_CENTRE;
|
||||||
alignmentVert = ALIGN_MIDDLE;
|
alignmentVert = ALIGN_MIDDLE;
|
||||||
|
|
||||||
if(t)
|
if(t)
|
||||||
|
{
|
||||||
|
origText = strdup(t);
|
||||||
text = fontSystem->charToWideChar((char *)t);
|
text = fontSystem->charToWideChar((char *)t);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,18 +55,28 @@ GuiText::GuiText(const char * t, int s, GXColor c)
|
|||||||
*/
|
*/
|
||||||
GuiText::GuiText(const char * t)
|
GuiText::GuiText(const char * t)
|
||||||
{
|
{
|
||||||
|
origText = NULL;
|
||||||
text = NULL;
|
text = NULL;
|
||||||
size = presetSize;
|
size = presetSize;
|
||||||
color = presetColor;
|
color = presetColor;
|
||||||
alpha = presetColor.a;
|
alpha = presetColor.a;
|
||||||
style = presetStyle;
|
style = presetStyle;
|
||||||
maxWidth = presetMaxWidth;
|
maxWidth = presetMaxWidth;
|
||||||
|
wrap = false;
|
||||||
|
textDyn = NULL;
|
||||||
|
textScroll = SCROLL_NONE;
|
||||||
|
textScrollPos = 0;
|
||||||
|
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
||||||
|
textScrollDelay = TEXT_SCROLL_DELAY;
|
||||||
|
|
||||||
alignmentHor = presetAlignmentHor;
|
alignmentHor = presetAlignmentHor;
|
||||||
alignmentVert = presetAlignmentVert;
|
alignmentVert = presetAlignmentVert;
|
||||||
|
|
||||||
if(t)
|
if(t)
|
||||||
|
{
|
||||||
|
origText = strdup(t);
|
||||||
text = fontSystem->charToWideChar((char *)t);
|
text = fontSystem->charToWideChar((char *)t);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,22 +84,34 @@ GuiText::GuiText(const char * t)
|
|||||||
*/
|
*/
|
||||||
GuiText::~GuiText()
|
GuiText::~GuiText()
|
||||||
{
|
{
|
||||||
|
if(origText)
|
||||||
|
free(origText);
|
||||||
if(text)
|
if(text)
|
||||||
{
|
|
||||||
delete text;
|
delete text;
|
||||||
text = NULL;
|
if(textDyn)
|
||||||
}
|
delete textDyn;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::SetText(const char * t)
|
void GuiText::SetText(const char * t)
|
||||||
{
|
{
|
||||||
|
if(origText)
|
||||||
|
free(origText);
|
||||||
if(text)
|
if(text)
|
||||||
delete text;
|
delete text;
|
||||||
|
if(textDyn)
|
||||||
|
delete textDyn;
|
||||||
|
|
||||||
|
origText = NULL;
|
||||||
text = NULL;
|
text = NULL;
|
||||||
|
textDyn = NULL;
|
||||||
|
textScrollPos = 0;
|
||||||
|
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
||||||
|
|
||||||
if(t)
|
if(t)
|
||||||
|
{
|
||||||
|
origText = strdup(t);
|
||||||
text = fontSystem->charToWideChar((char *)t);
|
text = fontSystem->charToWideChar((char *)t);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::SetPresets(int sz, GXColor c, int w, u16 s, int h, int v)
|
void GuiText::SetPresets(int sz, GXColor c, int w, u16 s, int h, int v)
|
||||||
@ -94,9 +129,31 @@ void GuiText::SetFontSize(int s)
|
|||||||
size = s;
|
size = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::SetMaxWidth(int w)
|
void GuiText::SetMaxWidth(int width)
|
||||||
{
|
{
|
||||||
maxWidth = w;
|
maxWidth = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiText::SetWrap(bool w, int width)
|
||||||
|
{
|
||||||
|
wrap = w;
|
||||||
|
maxWidth = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiText::SetScroll(int s)
|
||||||
|
{
|
||||||
|
if(textScroll == s)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(textDyn)
|
||||||
|
{
|
||||||
|
delete(textDyn);
|
||||||
|
textDyn = NULL;
|
||||||
|
}
|
||||||
|
textScroll = s;
|
||||||
|
textScrollPos = 0;
|
||||||
|
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
||||||
|
textScrollDelay = TEXT_SCROLL_DELAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::SetColor(GXColor c)
|
void GuiText::SetColor(GXColor c)
|
||||||
@ -170,32 +227,81 @@ void GuiText::Draw()
|
|||||||
if(alignmentVert == ALIGN_MIDDLE)
|
if(alignmentVert == ALIGN_MIDDLE)
|
||||||
voffset = -newSize/2 + 2;
|
voffset = -newSize/2 + 2;
|
||||||
|
|
||||||
if(maxWidth > 0) // text wrapping
|
if(maxWidth > 0)
|
||||||
|
{
|
||||||
|
char * tmpText = strdup(origText);
|
||||||
|
u8 maxChar = (maxWidth*2.0) / newSize;
|
||||||
|
|
||||||
|
if(!textDyn)
|
||||||
|
{
|
||||||
|
if(strlen(tmpText) > maxChar)
|
||||||
|
tmpText[maxChar] = 0;
|
||||||
|
textDyn = fontSystem->charToWideChar(tmpText);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(textScroll == SCROLL_HORIZONTAL)
|
||||||
|
{
|
||||||
|
int textlen = strlen(origText);
|
||||||
|
|
||||||
|
if(textlen > maxChar && (FrameTimer % textScrollDelay == 0))
|
||||||
|
{
|
||||||
|
if(textScrollInitialDelay)
|
||||||
|
{
|
||||||
|
textScrollInitialDelay--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
textScrollPos++;
|
||||||
|
if(textScrollPos > textlen-1)
|
||||||
|
{
|
||||||
|
textScrollPos = 0;
|
||||||
|
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
||||||
|
}
|
||||||
|
|
||||||
|
strncpy(tmpText, &origText[textScrollPos], maxChar-1);
|
||||||
|
tmpText[maxChar-1] = 0;
|
||||||
|
|
||||||
|
int dynlen = strlen(tmpText);
|
||||||
|
|
||||||
|
if(dynlen+2 < maxChar)
|
||||||
|
{
|
||||||
|
tmpText[dynlen] = ' ';
|
||||||
|
tmpText[dynlen+1] = ' ';
|
||||||
|
strncat(&tmpText[dynlen+2], origText, maxChar - dynlen - 2);
|
||||||
|
}
|
||||||
|
if(textDyn) delete textDyn;
|
||||||
|
textDyn = fontSystem->charToWideChar(tmpText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(textDyn)
|
||||||
|
fontSystem->drawText(this->GetLeft(), this->GetTop()+voffset, textDyn, c, style);
|
||||||
|
}
|
||||||
|
else if(wrap)
|
||||||
{
|
{
|
||||||
int lineheight = newSize + 6;
|
int lineheight = newSize + 6;
|
||||||
int strlen = wcslen(text);
|
int txtlen = wcslen(text);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int ch = 0;
|
int ch = 0;
|
||||||
int linenum = 0;
|
int linenum = 0;
|
||||||
int lastSpace = -1;
|
int lastSpace = -1;
|
||||||
int lastSpaceIndex = -1;
|
int lastSpaceIndex = -1;
|
||||||
wchar_t * tmptext[20];
|
wchar_t * textrow[20];
|
||||||
|
|
||||||
while(ch < strlen)
|
while(ch < txtlen)
|
||||||
{
|
{
|
||||||
if(i == 0)
|
if(i == 0)
|
||||||
tmptext[linenum] = new wchar_t[strlen + 1];
|
textrow[linenum] = new wchar_t[txtlen + 1];
|
||||||
|
|
||||||
tmptext[linenum][i] = text[ch];
|
textrow[linenum][i] = text[ch];
|
||||||
tmptext[linenum][i+1] = 0;
|
textrow[linenum][i+1] = 0;
|
||||||
|
|
||||||
if(text[ch] == ' ' || ch == strlen-1)
|
if(text[ch] == ' ' || ch == txtlen-1)
|
||||||
{
|
{
|
||||||
if(fontSystem->getWidth(tmptext[linenum]) >= maxWidth)
|
if(wcslen(textrow[linenum]) >= maxChar)
|
||||||
{
|
{
|
||||||
if(lastSpace >= 0)
|
if(lastSpace >= 0)
|
||||||
{
|
{
|
||||||
tmptext[linenum][lastSpaceIndex] = 0; // discard space, and everything after
|
textrow[linenum][lastSpaceIndex] = 0; // discard space, and everything after
|
||||||
ch = lastSpace; // go backwards to the last space
|
ch = lastSpace; // go backwards to the last space
|
||||||
lastSpace = -1; // we have used this space
|
lastSpace = -1; // we have used this space
|
||||||
lastSpaceIndex = -1;
|
lastSpaceIndex = -1;
|
||||||
@ -203,7 +309,7 @@ void GuiText::Draw()
|
|||||||
linenum++;
|
linenum++;
|
||||||
i = -1;
|
i = -1;
|
||||||
}
|
}
|
||||||
else if(ch == strlen-1)
|
else if(ch == txtlen-1)
|
||||||
{
|
{
|
||||||
linenum++;
|
linenum++;
|
||||||
}
|
}
|
||||||
@ -222,11 +328,17 @@ void GuiText::Draw()
|
|||||||
|
|
||||||
for(i=0; i < linenum; i++)
|
for(i=0; i < linenum; i++)
|
||||||
{
|
{
|
||||||
fontSystem->drawText(this->GetLeft(), this->GetTop()+voffset+i*lineheight, tmptext[i], c, style);
|
fontSystem->drawText(this->GetLeft(), this->GetTop()+voffset+i*lineheight, textrow[i], c, style);
|
||||||
delete tmptext[i];
|
delete textrow[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
fontSystem->drawText(this->GetLeft(), this->GetTop()+voffset, textDyn, c, style);
|
||||||
|
}
|
||||||
|
free(tmpText);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
fontSystem->drawText(this->GetLeft(), this->GetTop()+voffset, text, c, style);
|
fontSystem->drawText(this->GetLeft(), this->GetTop()+voffset, text, c, style);
|
||||||
}
|
}
|
||||||
|
BIN
source/ngc/images/button_short.png
Normal file
BIN
source/ngc/images/button_short.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
source/ngc/images/button_short_over.png
Normal file
BIN
source/ngc/images/button_short_over.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
@ -43,10 +43,8 @@ int gameRumbleCount = 0, menuRumbleCount = 0, rumbleCountAlready = 0;
|
|||||||
unsigned int vbapadmap[10]; // VBA controller buttons
|
unsigned int vbapadmap[10]; // VBA controller buttons
|
||||||
u32 btnmap[5][10]; // button mapping
|
u32 btnmap[5][10]; // button mapping
|
||||||
|
|
||||||
void ResetControls()
|
void ResetControls(int wiiCtrl)
|
||||||
{
|
{
|
||||||
memset(btnmap, 0, sizeof(btnmap));
|
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// VBA controller buttons
|
// VBA controller buttons
|
||||||
@ -64,6 +62,8 @@ void ResetControls()
|
|||||||
vbapadmap[i++] = VBA_BUTTON_R;
|
vbapadmap[i++] = VBA_BUTTON_R;
|
||||||
|
|
||||||
/*** Gamecube controller Padmap ***/
|
/*** Gamecube controller Padmap ***/
|
||||||
|
if(wiiCtrl == CTRLR_GCPAD || wiiCtrl == 0)
|
||||||
|
{
|
||||||
i=0;
|
i=0;
|
||||||
btnmap[CTRLR_GCPAD][i++] = PAD_BUTTON_B;
|
btnmap[CTRLR_GCPAD][i++] = PAD_BUTTON_B;
|
||||||
btnmap[CTRLR_GCPAD][i++] = PAD_BUTTON_A;
|
btnmap[CTRLR_GCPAD][i++] = PAD_BUTTON_A;
|
||||||
@ -75,8 +75,11 @@ void ResetControls()
|
|||||||
btnmap[CTRLR_GCPAD][i++] = PAD_BUTTON_RIGHT;
|
btnmap[CTRLR_GCPAD][i++] = PAD_BUTTON_RIGHT;
|
||||||
btnmap[CTRLR_GCPAD][i++] = PAD_TRIGGER_L;
|
btnmap[CTRLR_GCPAD][i++] = PAD_TRIGGER_L;
|
||||||
btnmap[CTRLR_GCPAD][i++] = PAD_TRIGGER_R;
|
btnmap[CTRLR_GCPAD][i++] = PAD_TRIGGER_R;
|
||||||
|
}
|
||||||
|
|
||||||
/*** Wiimote Padmap ***/
|
/*** Wiimote Padmap ***/
|
||||||
|
if(wiiCtrl == CTRLR_WIIMOTE || wiiCtrl == 0)
|
||||||
|
{
|
||||||
i=0;
|
i=0;
|
||||||
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_1;
|
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_1;
|
||||||
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_2;
|
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_2;
|
||||||
@ -88,8 +91,11 @@ void ResetControls()
|
|||||||
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_DOWN;
|
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_DOWN;
|
||||||
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_B;
|
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_B;
|
||||||
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_A;
|
btnmap[CTRLR_WIIMOTE][i++] = WPAD_BUTTON_A;
|
||||||
|
}
|
||||||
|
|
||||||
/*** Classic Controller Padmap ***/
|
/*** Classic Controller Padmap ***/
|
||||||
|
if(wiiCtrl == CTRLR_CLASSIC || wiiCtrl == 0)
|
||||||
|
{
|
||||||
i=0;
|
i=0;
|
||||||
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_Y;
|
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_Y;
|
||||||
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_B;
|
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_B;
|
||||||
@ -101,8 +107,11 @@ void ResetControls()
|
|||||||
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_RIGHT;
|
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_RIGHT;
|
||||||
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_FULL_L;
|
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_FULL_L;
|
||||||
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_FULL_R;
|
btnmap[CTRLR_CLASSIC][i++] = WPAD_CLASSIC_BUTTON_FULL_R;
|
||||||
|
}
|
||||||
|
|
||||||
/*** Nunchuk + wiimote Padmap ***/
|
/*** Nunchuk + wiimote Padmap ***/
|
||||||
|
if(wiiCtrl == CTRLR_NUNCHUK || wiiCtrl == 0)
|
||||||
|
{
|
||||||
i=0;
|
i=0;
|
||||||
btnmap[CTRLR_NUNCHUK][i++] = WPAD_NUNCHUK_BUTTON_C;
|
btnmap[CTRLR_NUNCHUK][i++] = WPAD_NUNCHUK_BUTTON_C;
|
||||||
btnmap[CTRLR_NUNCHUK][i++] = WPAD_NUNCHUK_BUTTON_Z;
|
btnmap[CTRLR_NUNCHUK][i++] = WPAD_NUNCHUK_BUTTON_Z;
|
||||||
@ -114,8 +123,11 @@ void ResetControls()
|
|||||||
btnmap[CTRLR_NUNCHUK][i++] = WPAD_BUTTON_RIGHT;
|
btnmap[CTRLR_NUNCHUK][i++] = WPAD_BUTTON_RIGHT;
|
||||||
btnmap[CTRLR_NUNCHUK][i++] = WPAD_BUTTON_2;
|
btnmap[CTRLR_NUNCHUK][i++] = WPAD_BUTTON_2;
|
||||||
btnmap[CTRLR_NUNCHUK][i++] = WPAD_BUTTON_1;
|
btnmap[CTRLR_NUNCHUK][i++] = WPAD_BUTTON_1;
|
||||||
|
}
|
||||||
|
|
||||||
/*** Keyboard map ***/
|
/*** Keyboard map ***/
|
||||||
|
if(wiiCtrl == CTRLR_KEYBOARD || wiiCtrl == 0)
|
||||||
|
{
|
||||||
i=0;
|
i=0;
|
||||||
btnmap[CTRLR_KEYBOARD][i++] = KB_X; // VBA stupidly has B on the right instead of left
|
btnmap[CTRLR_KEYBOARD][i++] = KB_X; // VBA stupidly has B on the right instead of left
|
||||||
btnmap[CTRLR_KEYBOARD][i++] = KB_Z;
|
btnmap[CTRLR_KEYBOARD][i++] = KB_Z;
|
||||||
@ -127,6 +139,39 @@ void ResetControls()
|
|||||||
btnmap[CTRLR_KEYBOARD][i++] = KB_RIGHT;
|
btnmap[CTRLR_KEYBOARD][i++] = KB_RIGHT;
|
||||||
btnmap[CTRLR_KEYBOARD][i++] = KB_A;
|
btnmap[CTRLR_KEYBOARD][i++] = KB_A;
|
||||||
btnmap[CTRLR_KEYBOARD][i++] = KB_S;
|
btnmap[CTRLR_KEYBOARD][i++] = KB_S;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* UpdatePads
|
||||||
|
*
|
||||||
|
* called by PostRetraceCallback in InitGCVideo - scans pad and wpad
|
||||||
|
***************************************************************************/
|
||||||
|
void
|
||||||
|
UpdatePads()
|
||||||
|
{
|
||||||
|
#ifdef HW_RVL
|
||||||
|
WPAD_ScanPads();
|
||||||
|
#endif
|
||||||
|
PAD_ScanPads();
|
||||||
|
|
||||||
|
for(int i=3; i >= 0; i--)
|
||||||
|
{
|
||||||
|
#ifdef HW_RVL
|
||||||
|
memcpy(&userInput[i].wpad, WPAD_Data(i), sizeof(WPADData));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
userInput[i].chan = i;
|
||||||
|
userInput[i].pad.btns_d = PAD_ButtonsDown(i);
|
||||||
|
userInput[i].pad.btns_u = PAD_ButtonsUp(i);
|
||||||
|
userInput[i].pad.btns_h = PAD_ButtonsHeld(i);
|
||||||
|
userInput[i].pad.stickX = PAD_StickX(i);
|
||||||
|
userInput[i].pad.stickY = PAD_StickY(i);
|
||||||
|
userInput[i].pad.substickX = PAD_SubStickX(i);
|
||||||
|
userInput[i].pad.substickY = PAD_SubStickY(i);
|
||||||
|
userInput[i].pad.triggerL = PAD_TriggerL(i);
|
||||||
|
userInput[i].pad.triggerR = PAD_TriggerR(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
@ -959,6 +1004,8 @@ bool MenuRequested()
|
|||||||
|
|
||||||
u32 GetJoy(int pad)
|
u32 GetJoy(int pad)
|
||||||
{
|
{
|
||||||
|
UpdatePads();
|
||||||
|
|
||||||
// request to go back to menu
|
// request to go back to menu
|
||||||
if (MenuRequested())
|
if (MenuRequested())
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
extern int rumbleRequest[4];
|
extern int rumbleRequest[4];
|
||||||
extern u32 btnmap[5][10];
|
extern u32 btnmap[5][10];
|
||||||
|
|
||||||
void ResetControls();
|
void ResetControls(int wc = 0);
|
||||||
void ShutoffRumble();
|
void ShutoffRumble();
|
||||||
void DoRumble(int i);
|
void DoRumble(int i);
|
||||||
void systemGameRumble(int RumbleForFrames);
|
void systemGameRumble(int RumbleForFrames);
|
||||||
@ -43,5 +43,6 @@ void updateRumbleFrame();
|
|||||||
s8 WPAD_Stick(u8 chan,u8 right, int axis);
|
s8 WPAD_Stick(u8 chan,u8 right, int axis);
|
||||||
u32 GetJoy(int which);
|
u32 GetJoy(int which);
|
||||||
bool MenuRequested();
|
bool MenuRequested();
|
||||||
|
void UpdatePads();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -99,7 +99,6 @@ ParseMCDirectory (int slot)
|
|||||||
card_dir CardDir;
|
card_dir CardDir;
|
||||||
int CardError;
|
int CardError;
|
||||||
int entryNum = 0;
|
int entryNum = 0;
|
||||||
char tmpname[MAXPATHLEN];
|
|
||||||
|
|
||||||
// Try to mount the card
|
// Try to mount the card
|
||||||
CardError = MountMC(slot, NOTSILENT);
|
CardError = MountMC(slot, NOTSILENT);
|
||||||
@ -125,8 +124,7 @@ ParseMCDirectory (int slot)
|
|||||||
memset(&(browserList[entryNum]), 0, sizeof(BROWSERENTRY)); // clear the new entry
|
memset(&(browserList[entryNum]), 0, sizeof(BROWSERENTRY)); // clear the new entry
|
||||||
|
|
||||||
strncpy(browserList[entryNum].filename, (char *)CardDir.filename, MAXJOLIET);
|
strncpy(browserList[entryNum].filename, (char *)CardDir.filename, MAXJOLIET);
|
||||||
ShortenFilename(tmpname, (char *)CardDir.filename); // hide file extension
|
StripExt(browserList[entryNum].displayname, browserList[entryNum].filename); // hide file extension
|
||||||
strncpy(browserList[entryNum].displayname, tmpname, MAXDISPLAY); // crop name for display
|
|
||||||
browserList[entryNum].length = CardDir.filelen;
|
browserList[entryNum].length = CardDir.filelen;
|
||||||
|
|
||||||
entryNum++;
|
entryNum++;
|
||||||
|
@ -141,7 +141,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label, const ch
|
|||||||
GuiText msgTxt(msg, 26, (GXColor){0, 0, 0, 255});
|
GuiText msgTxt(msg, 26, (GXColor){0, 0, 0, 255});
|
||||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||||
msgTxt.SetPosition(0,-20);
|
msgTxt.SetPosition(0,-20);
|
||||||
msgTxt.SetMaxWidth(430);
|
msgTxt.SetWrap(true, 430);
|
||||||
|
|
||||||
GuiText btn1Txt(btn1Label, 24, (GXColor){0, 0, 0, 255});
|
GuiText btn1Txt(btn1Label, 24, (GXColor){0, 0, 0, 255});
|
||||||
GuiImage btn1Img(&btnOutline);
|
GuiImage btn1Img(&btnOutline);
|
||||||
@ -1087,7 +1087,7 @@ static int MenuGame()
|
|||||||
sprintf(s, "Weather: Night Time");
|
sprintf(s, "Weather: Night Time");
|
||||||
} else sprintf(s, "Weather: %d%% sun", SunBars*10);
|
} else sprintf(s, "Weather: %d%% sun", SunBars*10);
|
||||||
sunBtnTxt = new GuiText(s, 24, (GXColor){0, 0, 0, 255});
|
sunBtnTxt = new GuiText(s, 24, (GXColor){0, 0, 0, 255});
|
||||||
sunBtnTxt->SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
sunBtnTxt->SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
sunBtnImg = new GuiImage(&btnLargeOutline);
|
sunBtnImg = new GuiImage(&btnLargeOutline);
|
||||||
sunBtnImgOver = new GuiImage(&btnLargeOutlineOver);
|
sunBtnImgOver = new GuiImage(&btnLargeOutlineOver);
|
||||||
sunBtn = new GuiButton(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight());
|
sunBtn = new GuiButton(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight());
|
||||||
@ -1119,7 +1119,7 @@ static int MenuGame()
|
|||||||
resetBtn.SetEffectGrow();
|
resetBtn.SetEffectGrow();
|
||||||
|
|
||||||
GuiText gameSettingsBtnTxt("Game Settings", 24, (GXColor){0, 0, 0, 255});
|
GuiText gameSettingsBtnTxt("Game Settings", 24, (GXColor){0, 0, 0, 255});
|
||||||
gameSettingsBtnTxt.SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
gameSettingsBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
GuiImage gameSettingsBtnImg(&btnLargeOutline);
|
GuiImage gameSettingsBtnImg(&btnLargeOutline);
|
||||||
GuiImage gameSettingsBtnImgOver(&btnLargeOutlineOver);
|
GuiImage gameSettingsBtnImgOver(&btnLargeOutlineOver);
|
||||||
GuiImage gameSettingsBtnIcon(&iconGameSettings);
|
GuiImage gameSettingsBtnIcon(&iconGameSettings);
|
||||||
@ -1466,7 +1466,7 @@ static int MenuGameSaves(int action)
|
|||||||
GuiImage backBtnImgOver(&btnOutlineOver);
|
GuiImage backBtnImgOver(&btnOutlineOver);
|
||||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
backBtn.SetPosition(100, -35);
|
backBtn.SetPosition(50, -35);
|
||||||
backBtn.SetLabel(&backBtnTxt);
|
backBtn.SetLabel(&backBtnTxt);
|
||||||
backBtn.SetImage(&backBtnImg);
|
backBtn.SetImage(&backBtnImg);
|
||||||
backBtn.SetImageOver(&backBtnImgOver);
|
backBtn.SetImageOver(&backBtnImgOver);
|
||||||
@ -1736,7 +1736,7 @@ static int MenuGameSettings()
|
|||||||
trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
|
trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
|
||||||
|
|
||||||
GuiText mappingBtnTxt("Button Mappings", 24, (GXColor){0, 0, 0, 255});
|
GuiText mappingBtnTxt("Button Mappings", 24, (GXColor){0, 0, 0, 255});
|
||||||
mappingBtnTxt.SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
mappingBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
GuiImage mappingBtnImg(&btnLargeOutline);
|
GuiImage mappingBtnImg(&btnLargeOutline);
|
||||||
GuiImage mappingBtnImgOver(&btnLargeOutlineOver);
|
GuiImage mappingBtnImgOver(&btnLargeOutlineOver);
|
||||||
GuiImage mappingBtnIcon(&iconMappings);
|
GuiImage mappingBtnIcon(&iconMappings);
|
||||||
@ -1753,7 +1753,7 @@ static int MenuGameSettings()
|
|||||||
mappingBtn.SetEffectGrow();
|
mappingBtn.SetEffectGrow();
|
||||||
|
|
||||||
GuiText videoBtnTxt("Video", 24, (GXColor){0, 0, 0, 255});
|
GuiText videoBtnTxt("Video", 24, (GXColor){0, 0, 0, 255});
|
||||||
videoBtnTxt.SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
videoBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
GuiImage videoBtnImg(&btnLargeOutline);
|
GuiImage videoBtnImg(&btnLargeOutline);
|
||||||
GuiImage videoBtnImgOver(&btnLargeOutlineOver);
|
GuiImage videoBtnImgOver(&btnLargeOutlineOver);
|
||||||
GuiImage videoBtnIcon(&iconVideo);
|
GuiImage videoBtnIcon(&iconVideo);
|
||||||
@ -1834,7 +1834,7 @@ static int MenuGameSettings()
|
|||||||
GuiImage backBtnImgOver(&btnOutlineOver);
|
GuiImage backBtnImgOver(&btnOutlineOver);
|
||||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
backBtn.SetPosition(100, -35);
|
backBtn.SetPosition(50, -35);
|
||||||
backBtn.SetLabel(&backBtnTxt);
|
backBtn.SetLabel(&backBtnTxt);
|
||||||
backBtn.SetImage(&backBtnImg);
|
backBtn.SetImage(&backBtnImg);
|
||||||
backBtn.SetImageOver(&backBtnImgOver);
|
backBtn.SetImageOver(&backBtnImgOver);
|
||||||
@ -1957,7 +1957,7 @@ static int MenuGameSettings()
|
|||||||
GuiImage backBtnImgOver(&btnOutlineOver);
|
GuiImage backBtnImgOver(&btnOutlineOver);
|
||||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
backBtn.SetPosition(100, -35);
|
backBtn.SetPosition(50, -35);
|
||||||
backBtn.SetLabel(&backBtnTxt);
|
backBtn.SetLabel(&backBtnTxt);
|
||||||
backBtn.SetImage(&backBtnImg);
|
backBtn.SetImage(&backBtnImg);
|
||||||
backBtn.SetImageOver(&backBtnImgOver);
|
backBtn.SetImageOver(&backBtnImgOver);
|
||||||
@ -2034,7 +2034,7 @@ static int MenuSettingsMappings()
|
|||||||
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
||||||
|
|
||||||
GuiText gamecubeBtnTxt("GameCube Controller", 24, (GXColor){0, 0, 0, 255});
|
GuiText gamecubeBtnTxt("GameCube Controller", 24, (GXColor){0, 0, 0, 255});
|
||||||
gamecubeBtnTxt.SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
gamecubeBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
GuiImage gamecubeBtnImg(&btnLargeOutline);
|
GuiImage gamecubeBtnImg(&btnLargeOutline);
|
||||||
GuiImage gamecubeBtnImgOver(&btnLargeOutlineOver);
|
GuiImage gamecubeBtnImgOver(&btnLargeOutlineOver);
|
||||||
GuiImage gamecubeBtnIcon(&iconGamecube);
|
GuiImage gamecubeBtnIcon(&iconGamecube);
|
||||||
@ -2067,7 +2067,7 @@ static int MenuSettingsMappings()
|
|||||||
wiimoteBtn.SetEffectGrow();
|
wiimoteBtn.SetEffectGrow();
|
||||||
|
|
||||||
GuiText classicBtnTxt("Classic Controller", 24, (GXColor){0, 0, 0, 255});
|
GuiText classicBtnTxt("Classic Controller", 24, (GXColor){0, 0, 0, 255});
|
||||||
classicBtnTxt.SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
classicBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
GuiImage classicBtnImg(&btnLargeOutline);
|
GuiImage classicBtnImg(&btnLargeOutline);
|
||||||
GuiImage classicBtnImgOver(&btnLargeOutlineOver);
|
GuiImage classicBtnImgOver(&btnLargeOutlineOver);
|
||||||
GuiImage classicBtnIcon(&iconClassic);
|
GuiImage classicBtnIcon(&iconClassic);
|
||||||
@ -2132,7 +2132,7 @@ static int MenuSettingsMappings()
|
|||||||
GuiImage backBtnImgOver(&btnOutlineOver);
|
GuiImage backBtnImgOver(&btnOutlineOver);
|
||||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
backBtn.SetPosition(100, -35);
|
backBtn.SetPosition(50, -35);
|
||||||
backBtn.SetLabel(&backBtnTxt);
|
backBtn.SetLabel(&backBtnTxt);
|
||||||
backBtn.SetImage(&backBtnImg);
|
backBtn.SetImage(&backBtnImg);
|
||||||
backBtn.SetImageOver(&backBtnImgOver);
|
backBtn.SetImageOver(&backBtnImgOver);
|
||||||
@ -2248,7 +2248,7 @@ ButtonMappingWindow()
|
|||||||
GuiText msgTxt(msg, 26, (GXColor){0, 0, 0, 255});
|
GuiText msgTxt(msg, 26, (GXColor){0, 0, 0, 255});
|
||||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||||
msgTxt.SetPosition(0,-20);
|
msgTxt.SetPosition(0,-20);
|
||||||
msgTxt.SetMaxWidth(430);
|
msgTxt.SetWrap(true, 430);
|
||||||
|
|
||||||
promptWindow.Append(&dialogBoxImg);
|
promptWindow.Append(&dialogBoxImg);
|
||||||
promptWindow.Append(&titleTxt);
|
promptWindow.Append(&titleTxt);
|
||||||
@ -2359,6 +2359,8 @@ static int MenuSettingsMappingsMap()
|
|||||||
GuiSound btnSoundClick(button_click_pcm, button_click_pcm_size, SOUND_PCM);
|
GuiSound btnSoundClick(button_click_pcm, button_click_pcm_size, SOUND_PCM);
|
||||||
GuiImageData btnOutline(button_png);
|
GuiImageData btnOutline(button_png);
|
||||||
GuiImageData btnOutlineOver(button_over_png);
|
GuiImageData btnOutlineOver(button_over_png);
|
||||||
|
GuiImageData btnShortOutline(button_short_png);
|
||||||
|
GuiImageData btnShortOutlineOver(button_short_over_png);
|
||||||
|
|
||||||
GuiTrigger trigA;
|
GuiTrigger trigA;
|
||||||
if(GCSettings.WiimoteOrientation)
|
if(GCSettings.WiimoteOrientation)
|
||||||
@ -2371,7 +2373,7 @@ static int MenuSettingsMappingsMap()
|
|||||||
GuiImage backBtnImgOver(&btnOutlineOver);
|
GuiImage backBtnImgOver(&btnOutlineOver);
|
||||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
backBtn.SetPosition(100, -35);
|
backBtn.SetPosition(50, -35);
|
||||||
backBtn.SetLabel(&backBtnTxt);
|
backBtn.SetLabel(&backBtnTxt);
|
||||||
backBtn.SetImage(&backBtnImg);
|
backBtn.SetImage(&backBtnImg);
|
||||||
backBtn.SetImageOver(&backBtnImgOver);
|
backBtn.SetImageOver(&backBtnImgOver);
|
||||||
@ -2380,6 +2382,20 @@ static int MenuSettingsMappingsMap()
|
|||||||
backBtn.SetTrigger(&trigA);
|
backBtn.SetTrigger(&trigA);
|
||||||
backBtn.SetEffectGrow();
|
backBtn.SetEffectGrow();
|
||||||
|
|
||||||
|
GuiText resetBtnTxt("Reset", 24, (GXColor){0, 0, 0, 255});
|
||||||
|
GuiImage resetBtnImg(&btnShortOutline);
|
||||||
|
GuiImage resetBtnImgOver(&btnShortOutlineOver);
|
||||||
|
GuiButton resetBtn(btnShortOutline.GetWidth(), btnShortOutline.GetHeight());
|
||||||
|
resetBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
|
resetBtn.SetPosition(260, -35);
|
||||||
|
resetBtn.SetLabel(&resetBtnTxt);
|
||||||
|
resetBtn.SetImage(&resetBtnImg);
|
||||||
|
resetBtn.SetImageOver(&resetBtnImgOver);
|
||||||
|
resetBtn.SetSoundOver(&btnSoundOver);
|
||||||
|
resetBtn.SetSoundClick(&btnSoundClick);
|
||||||
|
resetBtn.SetTrigger(&trigA);
|
||||||
|
resetBtn.SetEffectGrow();
|
||||||
|
|
||||||
i=0;
|
i=0;
|
||||||
sprintf(options.name[i++], "B");
|
sprintf(options.name[i++], "B");
|
||||||
sprintf(options.name[i++], "A");
|
sprintf(options.name[i++], "A");
|
||||||
@ -2393,6 +2409,9 @@ static int MenuSettingsMappingsMap()
|
|||||||
sprintf(options.name[i++], "R");
|
sprintf(options.name[i++], "R");
|
||||||
options.length = i;
|
options.length = i;
|
||||||
|
|
||||||
|
for(i=0; i < options.length; i++)
|
||||||
|
options.value[i][0] = 0;
|
||||||
|
|
||||||
GuiOptionBrowser optionBrowser(552, 248, &options);
|
GuiOptionBrowser optionBrowser(552, 248, &options);
|
||||||
optionBrowser.SetPosition(0, 108);
|
optionBrowser.SetPosition(0, 108);
|
||||||
optionBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
optionBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
@ -2401,6 +2420,7 @@ static int MenuSettingsMappingsMap()
|
|||||||
HaltGui();
|
HaltGui();
|
||||||
GuiWindow w(screenwidth, screenheight);
|
GuiWindow w(screenwidth, screenheight);
|
||||||
w.Append(&backBtn);
|
w.Append(&backBtn);
|
||||||
|
w.Append(&resetBtn);
|
||||||
mainWindow->Append(&optionBrowser);
|
mainWindow->Append(&optionBrowser);
|
||||||
mainWindow->Append(&w);
|
mainWindow->Append(&w);
|
||||||
mainWindow->Append(&titleTxt);
|
mainWindow->Append(&titleTxt);
|
||||||
@ -2413,13 +2433,16 @@ static int MenuSettingsMappingsMap()
|
|||||||
|
|
||||||
for(i=0; i < options.length; i++)
|
for(i=0; i < options.length; i++)
|
||||||
{
|
{
|
||||||
options.value[i][0] = 0;
|
|
||||||
|
|
||||||
for(j=0; j < ctrlr_def[mapMenuCtrl].num_btns; j++)
|
for(j=0; j < ctrlr_def[mapMenuCtrl].num_btns; j++)
|
||||||
{
|
{
|
||||||
if(btnmap[mapMenuCtrl][i] ==
|
if(btnmap[mapMenuCtrl][i] == 0)
|
||||||
|
{
|
||||||
|
options.value[i][0] = 0;
|
||||||
|
}
|
||||||
|
else if(btnmap[mapMenuCtrl][i] ==
|
||||||
ctrlr_def[mapMenuCtrl].map[j].btn)
|
ctrlr_def[mapMenuCtrl].map[j].btn)
|
||||||
{
|
{
|
||||||
|
if(strcmp(options.value[i], ctrlr_def[mapMenuCtrl].map[j].name) != 0)
|
||||||
sprintf(options.value[i], ctrlr_def[mapMenuCtrl].map[j].name);
|
sprintf(options.value[i], ctrlr_def[mapMenuCtrl].map[j].name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2430,13 +2453,27 @@ static int MenuSettingsMappingsMap()
|
|||||||
|
|
||||||
if(ret >= 0)
|
if(ret >= 0)
|
||||||
{
|
{
|
||||||
btnmap[mapMenuCtrl][ret] = ButtonMappingWindow(); // get a button selection from user
|
// get a button selection from user
|
||||||
|
btnmap[mapMenuCtrl][ret] = ButtonMappingWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(backBtn.GetState() == STATE_CLICKED)
|
if(backBtn.GetState() == STATE_CLICKED)
|
||||||
{
|
{
|
||||||
menu = MENU_GAMESETTINGS_MAPPINGS;
|
menu = MENU_GAMESETTINGS_MAPPINGS;
|
||||||
}
|
}
|
||||||
|
else if(resetBtn.GetState() == STATE_CLICKED)
|
||||||
|
{
|
||||||
|
resetBtn.ResetState();
|
||||||
|
|
||||||
|
int choice = WindowPrompt(
|
||||||
|
"Reset Mappings",
|
||||||
|
"Are you sure that you want to reset your mappings?",
|
||||||
|
"Yes",
|
||||||
|
"No");
|
||||||
|
|
||||||
|
if(choice == 1)
|
||||||
|
ResetControls(mapMenuCtrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&optionBrowser);
|
mainWindow->Remove(&optionBrowser);
|
||||||
@ -2669,6 +2706,9 @@ static int MenuSettingsVideo()
|
|||||||
sprintf(options.name[i++], "GB Palette");
|
sprintf(options.name[i++], "GB Palette");
|
||||||
options.length = i;
|
options.length = i;
|
||||||
|
|
||||||
|
for(i=0; i < options.length; i++)
|
||||||
|
options.value[i][0] = 0;
|
||||||
|
|
||||||
if(!IsGameboyGame())
|
if(!IsGameboyGame())
|
||||||
options.name[6][0] = 0; // disable palette option for GBA/GBC
|
options.name[6][0] = 0; // disable palette option for GBA/GBC
|
||||||
|
|
||||||
@ -2692,7 +2732,7 @@ static int MenuSettingsVideo()
|
|||||||
GuiImage backBtnImgOver(&btnOutlineOver);
|
GuiImage backBtnImgOver(&btnOutlineOver);
|
||||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
backBtn.SetPosition(100, -35);
|
backBtn.SetPosition(50, -35);
|
||||||
backBtn.SetLabel(&backBtnTxt);
|
backBtn.SetLabel(&backBtnTxt);
|
||||||
backBtn.SetImage(&backBtnImg);
|
backBtn.SetImage(&backBtnImg);
|
||||||
backBtn.SetImageOver(&backBtnImgOver);
|
backBtn.SetImageOver(&backBtnImgOver);
|
||||||
@ -2868,7 +2908,7 @@ static int MenuSettings()
|
|||||||
savingBtn.SetEffectGrow();
|
savingBtn.SetEffectGrow();
|
||||||
|
|
||||||
GuiText menuBtnTxt("Menu", 24, (GXColor){0, 0, 0, 255});
|
GuiText menuBtnTxt("Menu", 24, (GXColor){0, 0, 0, 255});
|
||||||
menuBtnTxt.SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
menuBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
GuiImage menuBtnImg(&btnLargeOutline);
|
GuiImage menuBtnImg(&btnLargeOutline);
|
||||||
GuiImage menuBtnImgOver(&btnLargeOutlineOver);
|
GuiImage menuBtnImgOver(&btnLargeOutlineOver);
|
||||||
GuiImage menuBtnIcon(&iconMenu);
|
GuiImage menuBtnIcon(&iconMenu);
|
||||||
@ -2885,7 +2925,7 @@ static int MenuSettings()
|
|||||||
menuBtn.SetEffectGrow();
|
menuBtn.SetEffectGrow();
|
||||||
|
|
||||||
GuiText networkBtnTxt("Network", 24, (GXColor){0, 0, 0, 255});
|
GuiText networkBtnTxt("Network", 24, (GXColor){0, 0, 0, 255});
|
||||||
networkBtnTxt.SetMaxWidth(btnLargeOutline.GetWidth()-30);
|
networkBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30);
|
||||||
GuiImage networkBtnImg(&btnLargeOutline);
|
GuiImage networkBtnImg(&btnLargeOutline);
|
||||||
GuiImage networkBtnImgOver(&btnLargeOutlineOver);
|
GuiImage networkBtnImgOver(&btnLargeOutlineOver);
|
||||||
GuiImage networkBtnIcon(&iconNetwork);
|
GuiImage networkBtnIcon(&iconNetwork);
|
||||||
@ -3010,6 +3050,9 @@ static int MenuSettingsFile()
|
|||||||
options.length = i;
|
options.length = i;
|
||||||
options.name[4][0] = 0; // hide cheats folder (not implemented)
|
options.name[4][0] = 0; // hide cheats folder (not implemented)
|
||||||
|
|
||||||
|
for(i=0; i < options.length; i++)
|
||||||
|
options.value[i][0] = 0;
|
||||||
|
|
||||||
GuiText titleTxt("Settings - Saving & Loading", 28, (GXColor){255, 255, 255, 255});
|
GuiText titleTxt("Settings - Saving & Loading", 28, (GXColor){255, 255, 255, 255});
|
||||||
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
titleTxt.SetPosition(50,50);
|
titleTxt.SetPosition(50,50);
|
||||||
@ -3198,6 +3241,9 @@ static int MenuSettingsMenu()
|
|||||||
sprintf(options.name[i++], "Rumble");
|
sprintf(options.name[i++], "Rumble");
|
||||||
options.length = i;
|
options.length = i;
|
||||||
|
|
||||||
|
for(i=0; i < options.length; i++)
|
||||||
|
options.value[i][0] = 0;
|
||||||
|
|
||||||
GuiText titleTxt("Settings - Menu", 28, (GXColor){255, 255, 255, 255});
|
GuiText titleTxt("Settings - Menu", 28, (GXColor){255, 255, 255, 255});
|
||||||
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
titleTxt.SetPosition(50,50);
|
titleTxt.SetPosition(50,50);
|
||||||
@ -3342,6 +3388,9 @@ static int MenuSettingsNetwork()
|
|||||||
sprintf(options.name[i++], "SMB Share Password");
|
sprintf(options.name[i++], "SMB Share Password");
|
||||||
options.length = i;
|
options.length = i;
|
||||||
|
|
||||||
|
for(i=0; i < options.length; i++)
|
||||||
|
options.value[i][0] = 0;
|
||||||
|
|
||||||
GuiText titleTxt("Settings - Network", 28, (GXColor){255, 255, 255, 255});
|
GuiText titleTxt("Settings - Network", 28, (GXColor){255, 255, 255, 255});
|
||||||
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
titleTxt.SetPosition(50,50);
|
titleTxt.SetPosition(50,50);
|
||||||
@ -3863,7 +3912,7 @@ static int MenuPalette()
|
|||||||
spr2Btn.SetEffectGrow();
|
spr2Btn.SetEffectGrow();
|
||||||
|
|
||||||
GuiText importBtnTxt("Load / Save", 24, (GXColor){0, 0, 0, 255});
|
GuiText importBtnTxt("Load / Save", 24, (GXColor){0, 0, 0, 255});
|
||||||
importBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
importBtnTxt.SetWrap(true, btnOutline.GetWidth()-30);
|
||||||
GuiImage importBtnImg(&btnOutline);
|
GuiImage importBtnImg(&btnOutline);
|
||||||
GuiImage importBtnImgOver(&btnOutlineOver);
|
GuiImage importBtnImgOver(&btnOutlineOver);
|
||||||
GuiButton importBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
GuiButton importBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#include "http.h"
|
#include "http.h"
|
||||||
#include "filebrowser.h"
|
#include "filebrowser.h"
|
||||||
|
|
||||||
static bool inNetworkInit = false;
|
bool inNetworkInit = false;
|
||||||
static bool networkInit = false;
|
static bool networkInit = false;
|
||||||
static bool autoNetworkInit = true;
|
static bool autoNetworkInit = true;
|
||||||
static bool networkShareInit = false;
|
static bool networkShareInit = false;
|
||||||
|
@ -18,5 +18,6 @@ bool ConnectShare (bool silent);
|
|||||||
void CloseShare();
|
void CloseShare();
|
||||||
|
|
||||||
extern bool updateFound;
|
extern bool updateFound;
|
||||||
|
extern bool inNetworkInit;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -211,6 +211,7 @@ int main(int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
|
DI_Close(); // fixes some black screen issues
|
||||||
DI_Init(); // first
|
DI_Init(); // first
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <wiiuse/wpad.h>
|
|
||||||
|
|
||||||
#include "vba.h"
|
#include "vba.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -300,39 +299,6 @@ void StopGX()
|
|||||||
VIDEO_Flush();
|
VIDEO_Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* UpdatePadsCB
|
|
||||||
*
|
|
||||||
* called by postRetraceCallback in InitGCVideo - scans gcpad and wpad
|
|
||||||
***************************************************************************/
|
|
||||||
static void
|
|
||||||
UpdatePadsCB ()
|
|
||||||
{
|
|
||||||
#ifdef HW_RVL
|
|
||||||
WPAD_ScanPads();
|
|
||||||
#endif
|
|
||||||
PAD_ScanPads();
|
|
||||||
|
|
||||||
for(int i=3; i >= 0; i--)
|
|
||||||
{
|
|
||||||
#ifdef HW_RVL
|
|
||||||
memcpy(&userInput[i].wpad, WPAD_Data(i), sizeof(WPADData));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
userInput[i].chan = i;
|
|
||||||
userInput[i].pad.btns_d = PAD_ButtonsDown(i);
|
|
||||||
userInput[i].pad.btns_u = PAD_ButtonsUp(i);
|
|
||||||
userInput[i].pad.btns_h = PAD_ButtonsHeld(i);
|
|
||||||
userInput[i].pad.stickX = PAD_StickX(i);
|
|
||||||
userInput[i].pad.stickY = PAD_StickY(i);
|
|
||||||
userInput[i].pad.substickX = PAD_SubStickX(i);
|
|
||||||
userInput[i].pad.substickY = PAD_SubStickY(i);
|
|
||||||
userInput[i].pad.triggerL = PAD_TriggerL(i);
|
|
||||||
userInput[i].pad.triggerR = PAD_TriggerR(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* SetupVideoMode
|
* SetupVideoMode
|
||||||
*
|
*
|
||||||
@ -437,9 +403,7 @@ InitializeVideo ()
|
|||||||
VIDEO_ClearFrameBuffer (vmode, xfb[1], COLOR_BLACK);
|
VIDEO_ClearFrameBuffer (vmode, xfb[1], COLOR_BLACK);
|
||||||
VIDEO_SetNextFramebuffer (xfb[0]);
|
VIDEO_SetNextFramebuffer (xfb[0]);
|
||||||
|
|
||||||
// video callbacks
|
VIDEO_SetPostRetraceCallback ((VIRetraceCallback)copy_to_xfb);
|
||||||
VIDEO_SetPostRetraceCallback ((VIRetraceCallback)UpdatePadsCB);
|
|
||||||
VIDEO_SetPreRetraceCallback ((VIRetraceCallback)copy_to_xfb);
|
|
||||||
|
|
||||||
VIDEO_SetBlack (FALSE);
|
VIDEO_SetBlack (FALSE);
|
||||||
|
|
||||||
@ -556,6 +520,8 @@ ResetVideo_Emu ()
|
|||||||
while (VIDEO_GetNextField())
|
while (VIDEO_GetNextField())
|
||||||
VIDEO_WaitVSync();
|
VIDEO_WaitVSync();
|
||||||
|
|
||||||
|
VIDEO_SetPreRetraceCallback(NULL);
|
||||||
|
|
||||||
// reconfigure GX
|
// reconfigure GX
|
||||||
GX_SetViewport (0, 0, rmode->fbWidth, rmode->efbHeight, 0, 1);
|
GX_SetViewport (0, 0, rmode->fbWidth, rmode->efbHeight, 0, 1);
|
||||||
GX_SetDispCopyYScale ((f32) rmode->xfbHeight / (f32) rmode->efbHeight);
|
GX_SetDispCopyYScale ((f32) rmode->xfbHeight / (f32) rmode->efbHeight);
|
||||||
@ -770,6 +736,8 @@ ResetVideo_Menu ()
|
|||||||
while (VIDEO_GetNextField())
|
while (VIDEO_GetNextField())
|
||||||
VIDEO_WaitVSync();
|
VIDEO_WaitVSync();
|
||||||
|
|
||||||
|
VIDEO_SetPreRetraceCallback((VIRetraceCallback)UpdatePads);
|
||||||
|
|
||||||
// clears the bg to color and clears the z buffer
|
// clears the bg to color and clears the z buffer
|
||||||
GXColor background = {0, 0, 0, 255};
|
GXColor background = {0, 0, 0, 255};
|
||||||
GX_SetCopyClear (background, 0x00ffffff);
|
GX_SetCopyClear (background, 0x00ffffff);
|
||||||
@ -827,8 +795,6 @@ ResetVideo_Menu ()
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
void Menu_Render()
|
void Menu_Render()
|
||||||
{
|
{
|
||||||
GX_DrawDone ();
|
|
||||||
|
|
||||||
whichfb ^= 1; // flip framebuffer
|
whichfb ^= 1; // flip framebuffer
|
||||||
GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
||||||
GX_SetColorUpdate(GX_TRUE);
|
GX_SetColorUpdate(GX_TRUE);
|
||||||
@ -888,6 +854,7 @@ void Menu_DrawImg(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[],
|
|||||||
GX_Color4u8(0xFF,0xFF,0xFF,alpha);
|
GX_Color4u8(0xFF,0xFF,0xFF,alpha);
|
||||||
GX_TexCoord2f32(0, 1);
|
GX_TexCoord2f32(0, 1);
|
||||||
GX_End();
|
GX_End();
|
||||||
|
GX_DrawDone();
|
||||||
GX_LoadPosMtxImm (GXmodelView2D, GX_PNMTX0);
|
GX_LoadPosMtxImm (GXmodelView2D, GX_PNMTX0);
|
||||||
|
|
||||||
GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
|
GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
|
||||||
@ -926,4 +893,5 @@ void Menu_DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color, u8 f
|
|||||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||||
}
|
}
|
||||||
GX_End();
|
GX_End();
|
||||||
|
GX_DrawDone();
|
||||||
}
|
}
|
||||||
|
@ -37,5 +37,6 @@ extern bool TiltScreen;
|
|||||||
extern float TiltAngle;
|
extern float TiltAngle;
|
||||||
extern u8 * gameScreenTex;
|
extern u8 * gameScreenTex;
|
||||||
extern u8 * gameScreenTex2;
|
extern u8 * gameScreenTex2;
|
||||||
|
extern u32 FrameTimer;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user