modified GUI engine (** still BROKEN**)

This commit is contained in:
ekeeke31 2009-03-30 07:05:34 +00:00
parent 612c512bf4
commit b524f447d9
6 changed files with 223 additions and 199 deletions

View File

@ -100,6 +100,7 @@ int FileSortCallback(const void *f1, const void *f2)
* ROM size is returned
*
****************************************************************************/
extern s16 ogc_input__getMenuButtons(u32 cnt);
int FileSelector(unsigned char *buffer)
{
short p;

View File

@ -152,7 +152,7 @@ void WriteCentre_HL( int y, char *string)
DrawTexture(&texture, 0, y-fheight, 640, fheight);
}
void FONT_WriteLeft(char *string, int size, int x, int y)
void FONT_alignLeft(char *string, int size, int x, int y)
{
x -= (vmode->fbWidth / 2);
y -= (vmode->efbHeight / 2);
@ -164,7 +164,7 @@ void FONT_WriteLeft(char *string, int size, int x, int y)
}
}
void FONT_WriteRight(char *string, int size, int x, int y)
void FONT_alignRight(char *string, int size, int x, int y)
{
int i;
u16 width = 0;
@ -182,7 +182,7 @@ void FONT_WriteRight(char *string, int size, int x, int y)
}
}
void FONT_WriteCenter(char *string, int size, int x1, int x2, int y)
void FONT_writeCenter(char *string, int size, int x1, int x2, int y)
{
int i;
u16 width = 0;
@ -427,7 +427,6 @@ void DrawTexture(png_texture *texture, int x, int y, int w, int h)
GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4);
GX_LoadTexObj(&texObj, GX_TEXMAP0);
GX_InvalidateTexAll();
DCFlushRange(texture->data, texture->width * texture->height * 4);
/* adjust coordinate system */
x -= (vmode->fbWidth/2);
@ -445,9 +444,6 @@ void DrawTexture(png_texture *texture, int x, int y, int w, int h)
GX_TexCoord2f32(0.0, 0.0);
GX_End ();
GX_DrawDone();
/* free texture data array */
free(texture->data);
}
}
@ -474,6 +470,8 @@ void ClearScreen (GXColor color)
GX_Flush();
}
extern s16 ogc_input__getMenuButtons(u32 cnt);
void WaitButtonA ()
{
s16 p = ogc_input__getMenuButtons(0);

View File

@ -40,9 +40,9 @@ extern void OpenPNGFromMemory(png_texture *texture, const u8 *buffer);
extern void DrawTexture(png_texture *texture, int x, int y, int w, int h);
extern int FONT_Init(void);
extern void FONT_WriteLeft(char *string, int size, int x, int y);
extern void FONT_WriteRight(char *string, int size, int x, int y);
extern void FONT_WriteCenter(char *string, int size, int x1, int x2, int y);
extern void FONT_alignLeft(char *string, int size, int x, int y);
extern void FONT_alignRight(char *string, int size, int x, int y);
extern void FONT_writeCenter(char *string, int size, int x1, int x2, int y);
extern void WriteCentre_HL( int y, char *string);

View File

@ -27,6 +27,7 @@
#define MAXCODES 8
extern char menutitle[60];
extern s16 ogc_input__getMenuButtons(u32 cnt);
typedef struct
{

View File

@ -29,6 +29,8 @@
#include "Background_intro_c3.h"
#include "Background_intro_c4.h"
extern s16 ogc_input__getMenuButtons(u32 cnt);
/*
* This is the legal stuff - which must be shown at program startup
* Any derivative work MUST include the same textual output.

View File

@ -86,6 +86,7 @@ typedef struct
u16 keys;
#ifdef HW_RVL
struct ir_t ir;
#endif
} gui_input;
/* Item descriptor*/
@ -93,7 +94,7 @@ typedef struct
{
png_texture *texture; /* temporary texture data */
const u8 *data; /* pointer to png image data (items icon only) */
const char *text; /* item string (items list only) */
char *text; /* item string (items list only) */
char *comment; /* item comment */
u16 x; /* button image or text X position (upper left corner) */
u16 y; /* button image or text Y position (upper left corner) */
@ -140,10 +141,10 @@ typedef struct
u8 max_buttons; /* total number of buttons (not necessary identical) */
gui_item *items; /* menu items table */
gui_butn *buttons; /* menu buttons table */
gui_image *frames[2]; /* top and bottom frames */
gui_image *background; /* background image */
gui_image *logo; /* logo image */
gui_item *helper[2]; /* key helpers */
gui_image *frames[2]; /* top and bottom frames */
gui_item *helpers[2]; /* key helpers */
gui_butn *arrows[2]; /* items list arrows */
} gui_menu;
@ -173,12 +174,12 @@ static gui_image top_frame =
static gui_image bottom_frame =
{
NULL,Banner_top,0,388,640,92
NULL,Banner_bottom,0,388,640,92
};
static gui_image main_frame =
{
NULL,Banner_top,0,356,640,124
NULL,Banner_main,0,356,640,124
};
static gui_image background_center =
@ -221,15 +222,8 @@ static butn_data button_icon_data =
/*****************************************************************************/
/* Generic Arrow Buttons */
/*****************************************************************************/
static gui_butn arrow_up =
{
&arrow_up_data,172,82,36,36
};
static gui_butn arrow_down =
{
&arrow_down_data,172,360,36,36
};
static gui_butn arrow_up = {&arrow_up_data,172,82,36,36};
static gui_butn arrow_down = {&arrow_down_data,172,360,36,36};
/*****************************************************************************/
/* Generic Items */
@ -265,35 +259,35 @@ static gui_item action_exit =
/* Audio options menu */
static gui_item items_audio[5] =
{
{NULL,NULL,"PSG Volume:", "Adjust PSG output level", 0,0,0,0},
{NULL,NULL,"FM Volume:", "Adjust FM output level", 0,0,0,0},
{NULL,NULL,"Volume Boost:", "Adjust general output level", 0,0,0,0},
{NULL,NULL,"LowPass Filter:","Enable/disable sound filtering", 0,0,0,0},
{NULL,NULL,"HQ YM2612:", "Adjust FM emulation accuracy level",0,0,0,0}
{NULL,NULL,"PSG Volume: 2.50", "Adjust PSG output level", 0,0,0,0},
{NULL,NULL,"FM Volume: 1.00", "Adjust FM output level", 0,0,0,0},
{NULL,NULL,"Volume Boost: 1x", "Adjust general output level", 0,0,0,0},
{NULL,NULL,"LowPass Filter: OFF","Enable/disable sound filtering", 0,0,0,0},
{NULL,NULL,"HQ YM2612: LINEAR", "Enable/disable FM chip interpolation",0,0,0,0}
};
/* System options menu */
static gui_item items_system[6] =
{
{NULL,NULL,"Console Region:","Select system region", 0,0,0,0},
{NULL,NULL,"System Lockups:","Enable/disable original system lock-ups",0,0,0,0},
{NULL,NULL,"System BIOS:", "Enable/disable TMSS BIOS support", 0,0,0,0},
{NULL,NULL,"SVP Cycles", "Adjust SVP chip emulation speed", 0,0,0,0},
{NULL,NULL,"Auto SRAM", "Enable/disable automatic SRAM", 0,0,0,0},
{NULL,NULL,"Auto STATE", "Enable/disable automatic Freeze State", 0,0,0,0}
{NULL,NULL,"Console Region: AUTO","Select system region", 0,0,0,0},
{NULL,NULL,"System Lockups: OFF", "Enable/disable original system lock-ups",0,0,0,0},
{NULL,NULL,"System BIOS: OFF", "Enable/disable TMSS BIOS support", 0,0,0,0},
{NULL,NULL,"SVP Cycles: 1500", "Adjust SVP chip emulation speed", 0,0,0,0},
{NULL,NULL,"Auto SRAM: OFF", "Enable/disable automatic SRAM", 0,0,0,0},
{NULL,NULL,"Auto STATE: OFF", "Enable/disable automatic Freeze State", 0,0,0,0}
};
/* Video options menu */
static gui_item items_video[8] =
{
{NULL,NULL,"Aspect Ratio:", "Select display aspect ratio", 0,0,0,0},
{NULL,NULL,"Display:", "Select video mode type", 0,0,0,0},
{NULL,NULL,"TV mode:", "Select video refresh rate", 0,0,0,0},
{NULL,NULL,"Bilinear Filter:","Enable/disable hardware filtering", 0,0,0,0},
{NULL,NULL,"NTSC Filter:", "Enable/disable NTSC software filtering", 0,0,0,0},
{NULL,NULL,"Borders:", "Enable/disable original overscan emulation",0,0,0,0},
{NULL,NULL,"DISPLAY POSITION","Adjust display position", 0,0,0,0},
{NULL,NULL,"DISPLAY SIZE", "Adjust display size", 0,0,0,0}
{NULL,NULL,"Aspect: STRETCHED", "Select display aspect ratio", 0,0,0,0},
{NULL,NULL,"Display: PROGRESSIVE", "Select video mode type", 0,0,0,0},
{NULL,NULL,"TV mode: 50/60Hz", "Select video refresh rate", 0,0,0,0},
{NULL,NULL,"Bilinear Filter: OFF", "Enable/disable hardware filtering", 0,0,0,0},
{NULL,NULL,"NTSC Filter: COMPOSITE","Enable/disable NTSC software filtering", 0,0,0,0},
{NULL,NULL,"Borders: OFF", "Enable/disable original overscan emulation",0,0,0,0},
{NULL,NULL,"DISPLAY POSITION", "Adjust display position", 0,0,0,0},
{NULL,NULL,"DISPLAY SIZE", "Adjust display size", 0,0,0,0}
};
/* Main menu */
@ -341,48 +335,49 @@ static gui_item items_options[5] =
/* Generic list menu */
static gui_butn buttons_generic[4] =
{
&button_text_data,52,132,276,48},
&button_text_data,52,188,276,48},
&button_text_data,52,244,276,48},
&button_text_data,52,300,276,48},
{&button_text_data,52,132,276,48},
{&button_text_data,52,188,276,48},
{&button_text_data,52,244,276,48},
{&button_text_data,52,300,276,48}
};
/* Main menu */
static gui_butn buttons_main[6] =
{
&button_icon_data, 80, 50,148,132},
&button_icon_data,246, 50,148,132},
&button_icon_data,412, 50,148,132},
&button_icon_data, 80,194,148,132},
&button_icon_data,246,194,148,132},
&button_icon_data,412,194,148,132}
{&button_icon_data, 80, 50,148,132},
{&button_icon_data,246, 50,148,132},
{&button_icon_data,412, 50,148,132},
{&button_icon_data, 80,194,148,132},
{&button_icon_data,246,194,148,132},
{&button_icon_data,412,194,148,132}
};
/* Load Game menu */
#ifdef HW_RVL
static gui_butn buttons_load[4] =
{
&button_icon_data,246,102,148,132},
&button_icon_data, 80,248,148,132},
&button_icon_data,246,248,148,132},
&button_icon_data,412,248,148,132}
{&button_icon_data,246,102,148,132},
{&button_icon_data, 80,248,148,132},
{&button_icon_data,246,248,148,132},
{&button_icon_data,412,248,148,132}
};
#else
static gui_butn buttons_load[3] =
{
&button_icon_data, 80,180,148,132},
&button_icon_data,246,180,148,132},
&button_icon_data,412,180,148,132}
{&button_icon_data, 80,180,148,132},
{&button_icon_data,246,180,148,132},
{&button_icon_data,412,180,148,132}
};
#endif
/* Options menu */
static gui_butn buttons_options[5] =
{
&button_icon_data, 80,120,148,132},
&button_icon_data,246,120,148,132},
&button_icon_data,412,120,148,132},
&button_icon_data,162,264,148,132},
&button_icon_data,330,264,148,132}
{&button_icon_data, 80,120,148,132},
{&button_icon_data,246,120,148,132},
{&button_icon_data,412,120,148,132},
{&button_icon_data,162,264,148,132},
{&button_icon_data,330,264,148,132}
};
/*****************************************************************************/
@ -482,11 +477,11 @@ static gui_menu menu_audio =
/*****************************************************************************/
static void menu_initialize(gui_menu *menu)
{
int i,j;
int i;
png_texture *texture;
gui_item *item;
gui_butn *button;
gui_image *image;
gui_butn *button;
butn_data *button_data;
#ifdef HW_RVL
@ -542,9 +537,9 @@ static void menu_initialize(gui_menu *menu)
texture = (png_texture *)malloc(sizeof(png_texture));
if (texture)
{
image = menu->helpers[i];
OpenPNGFromMemory(texture, image->data);
image->texture = texture;
item = menu->helpers[i];
OpenPNGFromMemory(texture, item->data);
item->texture = texture;
}
}
@ -555,23 +550,39 @@ static void menu_initialize(gui_menu *menu)
texture = (png_texture *)malloc(sizeof(png_texture));
if (texture)
{
OpenPNGFromMemory(texture, button_data->image);
button_data->texture = texture;
OpenPNGFromMemory(texture, button_data->image[0]);
button_data->texture[0] = texture;
}
texture = (png_texture *)malloc(sizeof(png_texture));
if (texture)
{
OpenPNGFromMemory(texture, button_data->image[1]);
button_data->texture[1] = texture;
}
}
}
/* menu buttons */
for (j=0; j<menu->max_buttons; j++)
/* menu buttons */
for (i=0; i<menu->max_buttons; i++)
{
button = &menu->buttons[i];
button_data = button->data;
if (button_data->texture[0] == NULL)
{
button_data = menu->buttons[j]->data;
if (!button_data->texture[i])
texture = (png_texture *)malloc(sizeof(png_texture));
if (texture)
{
texture = (png_texture *)malloc(sizeof(png_texture));
if (texture)
{
OpenPNGFromMemory(texture, buttons_data->image[i]);
buttons_data->texture[i] = texture;
}
OpenPNGFromMemory(texture, button_data->image[0]);
button_data->texture[0] = texture;
}
}
if (button_data->texture[1] == NULL)
{
texture = (png_texture *)malloc(sizeof(png_texture));
if (texture)
{
OpenPNGFromMemory(texture, button_data->image[1]);
button_data->texture[1] = texture;
}
}
}
@ -579,14 +590,14 @@ static void menu_initialize(gui_menu *menu)
/* allocate item textures */
for (i=0; i<menu->max_items; i++)
{
item = menu->items[i];
item = &menu->items[i];
if (item->data)
{
texture = (png_texture *)malloc(sizeof(png_texture));
if (texture)
{
OpenPNGFromMemory(texture, item->data);
items->texture = texture;
item->texture = texture;
}
}
}
@ -594,11 +605,10 @@ static void menu_initialize(gui_menu *menu)
static void menu_delete(gui_menu *menu)
{
int i,j;
int i;
png_texture *texture;
gui_item *item;
gui_butn *button;
gui_image *image;
gui_item *item;
butn_data *button_data;
/* free background image texture */
@ -607,7 +617,7 @@ static void menu_delete(gui_menu *menu)
texture = menu->background->texture;
if (texture)
{
if (texture->data) free(texture.data);
if (texture->data) free(texture->data);
free(texture);
}
}
@ -618,7 +628,7 @@ static void menu_delete(gui_menu *menu)
texture = menu->logo->texture;
if (texture)
{
if (texture->data) free(texture.data);
if (texture->data) free(texture->data);
free(texture);
}
}
@ -632,7 +642,7 @@ static void menu_delete(gui_menu *menu)
texture = menu->frames[i]->texture;
if (texture)
{
if (texture->data) free(texture.data);
if (texture->data) free(texture->data);
free(texture);
texture = NULL;
}
@ -644,7 +654,7 @@ static void menu_delete(gui_menu *menu)
texture = menu->helpers[i]->texture;
if (texture)
{
if (texture->data) free(texture.data);
if (texture->data) free(texture->data);
free(texture);
texture = NULL;
}
@ -653,36 +663,52 @@ static void menu_delete(gui_menu *menu)
/* up/down buttons */
if (menu->arrows[i])
{
texture = menu->arrows[i]->texture;
texture = menu->arrows[i]->data->texture[0];
if (texture)
{
if (texture->data) free(texture.data);
if (texture->data) free(texture->data);
free(texture);
texture = NULL;
}
}
/* menu buttons */
for (j=0; j<menu->max_buttons; j++)
{
button_data = menu->buttons[j]->data;
texture = button_data->texture[i];
texture = menu->arrows[i]->data->texture[1];
if (texture)
{
if (texture->data) free(texture.data);
if (texture->data) free(texture->data);
free(texture);
texture = NULL;
}
}
}
/* menu buttons */
for (i=0; i<menu->max_buttons; i++)
{
button = &menu->buttons[i];
button_data = button->data;
texture = button_data->texture[0];
if (texture)
{
if (texture->data) free(texture->data);
free(texture);
texture = NULL;
}
texture = button_data->texture[1];
if (texture)
{
if (texture->data) free(texture->data);
free(texture);
texture = NULL;
}
}
/* allocate item textures */
for (i=0; i<menu->max_items; i++)
{
texture = menu->items[i]->texture;
item = &menu->items[i];
texture = item->texture;
if (texture)
{
if (texture->data) free(texture.data);
if (texture->data) free(texture->data);
free(texture);
texture = NULL;
}
@ -703,13 +729,6 @@ static void menu_draw(gui_menu *menu)
image = menu->background;
if (image) DrawTexture(image->texture,image->x,image->y,image->w,image->h);
/* draw logo */
image = menu->logo;
if (image) DrawTexture(image->texture,image->x,image->y,image->w,image->h);
/* draw title */
if (menu->title) FONT_alignLeft(menu->title, 22,10,56);
/* draw background frames */
for (i=0; i<2; i++)
{
@ -717,8 +736,15 @@ static void menu_draw(gui_menu *menu)
if (image) DrawTexture(image->texture,image->x,image->y,image->w,image->h);
}
/* draw logo */
image = menu->logo;
if (image) DrawTexture(image->texture,image->x,image->y,image->w,image->h);
/* draw title */
if (menu->title) FONT_alignLeft(menu->title, 22,10,56);
/* draw left helper */
item = menu->helper[0];
item = menu->helpers[0];
if (item)
{
DrawTexture(item->texture, item->x, item->y, item->w, item->h);
@ -726,7 +752,7 @@ static void menu_draw(gui_menu *menu)
}
/* draw right helper */
item = menu->helper[1];
item = menu->helpers[1];
if (item)
{
DrawTexture(item->texture, item->x, item->y, item->w, item->h);
@ -738,12 +764,12 @@ static void menu_draw(gui_menu *menu)
{
/* draw button */
button = &menu->buttons[i];
DrawTexture(button->texture[i == menu->selected], button->x, button->y, button->w, button->h);
DrawTexture(button->data->texture[i==menu->selected], button->x, button->y, button->w, button->h);
/* draw item */
item = &menu->items[menu->offset +i];
if (item->texture) DrawTexture(item->texture, item->x, item->y, item->w, item->h);
else FONT_writeCenter(item->text, 18, button->x, button->x + button->w, button->y + (button->h - 18)/2 + 18);
/*item = &menu->items[menu->offset +i];
if (item->data) DrawTexture(item->texture, item->x, item->y, item->w, item->h);
else FONT_writeCenter(item->text, 18, button->x, button->x + button->w, button->y + (button->h - 18)/2 + 18);*/
}
/* Arrows (Items list only) */
@ -754,11 +780,11 @@ static void menu_draw(gui_menu *menu)
{
if (menu->selected == menu->max_buttons + i)
{
DrawTexture(button->texture[1], button->x-2, button->y-2, button->w+4, button->h+4);
DrawTexture(button->data->texture[1], button->x-2, button->y-2, button->w+4, button->h+4);
}
else
{
DrawTexture(button->texture[0], button->x, button->y, button->w, button->h);
DrawTexture(button->data->texture[0], button->x, button->y, button->w, button->h);
}
}
}
@ -933,19 +959,19 @@ static int menu_callback(gui_menu *menu)
menu->arrows[1] = NULL;
/* update comment */
if (menu->helper[1])
if (menu->helpers[1])
{
gui_item *item = &menu->items[menu->offset + menu->selected];
strcpy(menu->helper[1]->comment,item->comment);
if (item->comment) strcpy(menu->helpers[1]->comment,item->comment);
}
}
}
void menu_update_inputs(u32 cnt)
s16 ogc_input__getMenuButtons(u32 cnt)
{
/* get gamepad inputs */
PAD_ScanPads();
u16 p = PAD_ButtonsDown(0);
s16 p = PAD_ButtonsDown(0);
s8 x = PAD_StickX(0);
s8 y = PAD_StickY(0);
if (x > 70) p |= PAD_BUTTON_RIGHT;
@ -957,15 +983,15 @@ void menu_update_inputs(u32 cnt)
/* get wiimote + expansions inputs */
WPAD_ScanPads();
u32 q = WPAD_ButtonsDown(0);
u32 h = WPAD_ButtonsHeld(0);
/*u32 h = WPAD_ButtonsHeld(0);*/
x = WPAD_StickX(0, 0);
y = WPAD_StickY(0, 0);
/* Wiimote orientation */
WPAD_IR(0, &M_inputs.ir);
WPAD_IR(0, &m_input.ir);
/* wiimote directions */
if (m_inputs.ir.valid)
if (m_input.ir.valid)
{
if (q & WPAD_BUTTON_UP) p |= PAD_BUTTON_UP;
else if (q & WPAD_BUTTON_DOWN) p |= PAD_BUTTON_DOWN;
@ -1010,6 +1036,8 @@ void menu_update_inputs(u32 cnt)
#endif
m_input.keys = p;
return p;
}
/***************************************************************************
@ -1019,9 +1047,9 @@ void menu_update_inputs(u32 cnt)
* selected item :)
***************************************************************************/
char menutitle[60] = { "" };
int menu = 0;
static int menu = 0;
void drawmenu (char items[][25], int maxitems, int selected)
static void drawmenu (char items[][25], int maxitems, int selected)
{
int i;
@ -1045,18 +1073,16 @@ void drawmenu (char items[][25], int maxitems, int selected)
OpenPNGFromMemory(&texture, Main_logo);
DrawTexture(&texture, 444, 28, 176, 48);
// WriteCentre (134, menutitle);
for (i = 0; i < maxitems; i++)
{
if (i == selected) WriteCentre_HL (i * fheight + ypos, (char *) items[i]);
else WriteCentre (i * fheight + ypos, (char *) items[i]);
if (i == selected) WriteCentre_HL (i * fheight + ypos, (char *) items[i]);
else WriteCentre (i * fheight + ypos, (char *) items[i]);
}
SetScreen ();
}
int domenu (char items[][25], int maxitems, u8 fastmove)
static int domenu (char items[][25], int maxitems, u8 fastmove)
{
int redraw = 1;
int quit = 0;
@ -1120,11 +1146,13 @@ int domenu (char items[][25], int maxitems, u8 fastmove)
* Sound Option menu
*
****************************************************************************/
void soundmenu ()
static void soundmenu ()
{
int ret;
int quit = 0;
gui_item *items = menu_audio.items;
int ret, quit = 0;
gui_menu *m = &menu_audio;
gui_item *items = m->items;
menu_initialize(m);
while (quit == 0)
{
@ -1136,7 +1164,7 @@ void soundmenu ()
else if (config.hq_fm == 1) sprintf (items[4].text, "HQ YM2612: LINEAR");
else sprintf (items[4].text, "HQ YM2612: SINC");
ret = MenuCall(&menu_audio);
ret = menu_callback(m);
switch (ret)
{
case 0:
@ -1183,27 +1211,29 @@ void soundmenu ()
break;
}
}
menu_delete(m);
}
/****************************************************************************
* Misc Option menu
*
****************************************************************************/
void miscmenu ()
static void systemmenu ()
{
int ret;
int quit = 0;
gui_item *items = menu_system.items;
int ret, quit = 0;
gui_menu *m = &menu_system;
gui_item *items = m->items;
menu_initialize(m);
while (quit == 0)
{
if (config.region_detect == 0) sprintf (items[0].text, "Region: AUTO");
else if (config.region_detect == 1) sprintf (items[0].text, "Region: USA");
else if (config.region_detect == 2) sprintf (items[0].text, "Region: EUR");
else if (config.region_detect == 3) sprintf (items[0].text, "Region: JAP");
sprintf (items[1].text, "Force DTACK: %s", config.force_dtack ? "Y" : "N");
if (config.bios_enabled & 1) sprintf (items[2].text, "Use BIOS: ON");
else sprintf (items[2].text, "Use BIOS: OFF");
if (config.region_detect == 0) sprintf (items[0].text, "Console Region: AUTO");
else if (config.region_detect == 1) sprintf (items[0].text, "Console Region: USA");
else if (config.region_detect == 2) sprintf (items[0].text, "Console Region: EUR");
else if (config.region_detect == 3) sprintf (items[0].text, "Console Region: JAP");
sprintf (items[1].text, "System Lockups: %s", config.force_dtack ? "ON" : "OFF");
sprintf (items[2].text, "System BIOS: %s", (config.bios_enabled & 1) ? "ON":"OFF");
sprintf (items[3].text, "SVP Cycles: %d", SVP_cycles);
if (config.sram_auto == 0) sprintf (items[4].text, "Auto SRAM: FAT");
else if (config.sram_auto == 1) sprintf (items[4].text, "Auto SRAM: MCARD A");
@ -1214,7 +1244,8 @@ void miscmenu ()
else if (config.freeze_auto == 2) sprintf (items[5].text, "Auto FREEZE: MCARD B");
else sprintf (items[5].text, "Auto FREEZE: OFF");
ret = MenuCall(&menu_system);
ret = menu_callback(m);
switch (ret)
{
case 0: /*** Region Force ***/
@ -1278,17 +1309,20 @@ void miscmenu ()
break;
}
}
menu_delete(m);
}
/****************************************************************************
* Display Option menu
*
****************************************************************************/
void dispmenu ()
static void videomenu ()
{
int ret;
int quit = 0;
gui_item *items = menu_video.items;
int ret, quit = 0;
gui_menu *m = &menu_video;
gui_item *items = m->items;
menu_initialize(m);
while (quit == 0)
{
@ -1305,10 +1339,8 @@ void dispmenu ()
else if (config.ntsc == 3) sprintf (items[4].text, "NTSC Filter: RGB");
else sprintf (items[4].text, "NTSC Filter: OFF");
sprintf (items[5].text, "Borders: %s", config.overscan ? " ON" : "OFF");
strcpy (items[6].text, "DISPLAY POSITION");
strcpy (items[7].text, "DISPLAY SIZE");
ret = MenuCall(&menu_video);
ret = menu_callback(m);
switch (ret)
{
case 0: /*** config.aspect ratio ***/
@ -1333,8 +1365,7 @@ void dispmenu ()
break;
case 2: /*** tv mode ***/
if (config.render == 2) break; /* 60hz progressive only */
config.tv_mode = (config.tv_mode + 1) % 3;
if (config.render != 2) config.tv_mode = (config.tv_mode + 1) % 3;
break;
case 3: /*** bilinear filtering ***/
@ -1383,13 +1414,14 @@ void dispmenu ()
break;
}
}
menu_delete(m);
}
/****************************************************************************
* ConfigureJoypads
****************************************************************************/
extern int old_system[2];
void ConfigureJoypads ()
static void inputsmenu(void)
{
int ret, max_players;
int i = 0;
@ -1693,27 +1725,29 @@ void ConfigureJoypads ()
* Main Option menu
*
****************************************************************************/
void optionmenu ()
static void optionmenu(void)
{
int ret;
int quit = 0;
int ret, quit = 0;
gui_menu *m = &menu_options;
while (quit == 0)
{
ret = MenuCall(&menu_options);
menu_initialize(m);
ret = menu_callback(m);
menu_delete(m);
switch (ret)
{
case 0:
miscmenu();
systemmenu();
break;
case 1:
dispmenu();
videomenu();
break;
case 2:
soundmenu();
break;
case 3:
ConfigureJoypads();
inputsmenu();
break;
case 4:
GetGGEntries();
@ -1733,7 +1767,7 @@ void optionmenu ()
****************************************************************************/
static u8 device = 0;
int loadsavemenu (int which)
static int loadsavemenu (int which)
{
int prevmenu = menu;
int quit = 0;
@ -1741,8 +1775,6 @@ int loadsavemenu (int which)
int count = 3;
char items[3][25];
strcpy (menutitle, "Press B to return");
menu = 2;
if (which == 1)
@ -1791,7 +1823,7 @@ int loadsavemenu (int which)
* File Manager menu
*
****************************************************************************/
int filemenu ()
static int filemenu ()
{
int prevmenu = menu;
int ret;
@ -1833,15 +1865,18 @@ int filemenu ()
****************************************************************************/
extern char rom_filename[MAXJOLIET];
static u8 load_menu = 0;
static u8 dvd_on = 0;
int loadmenu ()
static int loadmenu ()
{
int ret,size;
int quit = 0;
int ret,size,quit = 0;
gui_menu *m = &menu_load;
while (quit == 0)
{
ret = MenuCall(&menu_load);
menu_initialize(m);
ret = menu_callback(m);
menu_delete(m);
switch (ret)
{
/*** Button B ***/
@ -1859,7 +1894,7 @@ int loadmenu ()
size = DVD_Open(cart_rom);
if (size)
{
dvd_on = 1;
dvd_motor_off();
genromsize = size;
memfile_autosave();
reloadrom();
@ -1870,17 +1905,6 @@ int loadmenu ()
}
break;
/*** Stop DVD Disc ***/
#ifdef HW_RVL
case 4:
#else
case 3:
#endif
dvd_motor_off();
dvd_on = 0;
menu = load_menu;
break;
/*** Load from FAT device ***/
default:
load_menu = menu;
@ -1896,7 +1920,6 @@ int loadmenu ()
return 1;
}
break;
}
}
@ -1906,7 +1929,7 @@ int loadmenu ()
/***************************************************************************
* Show rom info screen
***************************************************************************/
void showrominfo ()
static void showrominfo ()
{
int ypos;
u8 i,j,quit,redraw,max;
@ -2030,9 +2053,8 @@ void showrominfo ()
****************************************************************************/
void MainMenu (u32 fps)
{
int ret;
int quit = 0;
uint32 crccheck;
int ret, quit = 0;
/* uint32 crccheck;*/
/* autosave (SRAM only) */
int temp = config.freeze_auto;
@ -2040,15 +2062,19 @@ void MainMenu (u32 fps)
memfile_autosave();
config.freeze_auto = temp;
gui_menu *m = &menu_main;
while (quit == 0)
{
crccheck = crc32 (0, &sram.sram[0], 0x10000);
/* crccheck = crc32 (0, &sram.sram[0], 0x10000);
strcpy (menutitle,"");
if (genromsize && (crccheck != sram.crc)) strcpy (menutitle, "*** SRAM has been modified ***");
else if (genromsize) sprintf (menutitle, "%d FPS",fps);
*/
menu_initialize(m);
ret = menu_callback(m);
menu_delete(m);
menu_initialize(&menu_main);
ret = menu_callback(&menu_main);
switch (ret)
{
case -1: /*** Button B ***/
@ -2082,7 +2108,6 @@ void MainMenu (u32 fps)
case 6: /*** SD/PSO/TP Reload ***/
menu_delete(&menu_main);
memfile_autosave();
system_shutdown();
audio_shutdown();
@ -2096,7 +2121,6 @@ void MainMenu (u32 fps)
break;
case 7: /*** Return to Wii System Menu ***/
menu_delete(&menu_main);
memfile_autosave();
system_shutdown();
audio_shutdown();
@ -2113,8 +2137,6 @@ void MainMenu (u32 fps)
}
}
menu_delete(&menu_main);
/*** Remove any still held buttons ***/
while (PAD_ButtonsHeld(0)) PAD_ScanPads();
#ifdef HW_RVL