mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-11-30 14:34:22 +01:00
reorg menu, fix intermittent crashes/freezes problem, bg now stored in MEM2, change savebuffer alloc, other misc changes
This commit is contained in:
parent
dba88e0437
commit
5730ab7f94
@ -59,7 +59,7 @@ unsigned char *savebuffer = NULL;
|
|||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* AllocSaveBuffer ()
|
* AllocSaveBuffer ()
|
||||||
* Clear and allocate the savebuffer
|
* Allocate and clear the savebuffer
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
void
|
void
|
||||||
AllocSaveBuffer ()
|
AllocSaveBuffer ()
|
||||||
@ -67,7 +67,7 @@ AllocSaveBuffer ()
|
|||||||
if (savebuffer != NULL)
|
if (savebuffer != NULL)
|
||||||
free(savebuffer);
|
free(savebuffer);
|
||||||
|
|
||||||
savebuffer = (unsigned char *) memalign(32, SAVEBUFFERSIZE);
|
savebuffer = (unsigned char *) malloc(SAVEBUFFERSIZE);
|
||||||
memset (savebuffer, 0, SAVEBUFFERSIZE);
|
memset (savebuffer, 0, SAVEBUFFERSIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,17 +161,17 @@ NGCFreezeGame (int method, bool8 silent)
|
|||||||
{
|
{
|
||||||
sprintf (filename, "%s.snz", Memory.ROMName);
|
sprintf (filename, "%s.snz", Memory.ROMName);
|
||||||
|
|
||||||
/*** Copy in save icon ***/
|
// Copy in save icon
|
||||||
int woffset = sizeof (saveicon);
|
int woffset = sizeof (saveicon);
|
||||||
memcpy (savebuffer, saveicon, woffset);
|
memcpy (savebuffer, saveicon, woffset);
|
||||||
|
|
||||||
/*** And the freezecomment ***/
|
// And the freezecomment
|
||||||
sprintf (freezecomment[0], "%s Freeze", VERSIONSTR);
|
sprintf (freezecomment[0], "%s Freeze", VERSIONSTR);
|
||||||
sprintf (freezecomment[1], Memory.ROMName);
|
sprintf (freezecomment[1], Memory.ROMName);
|
||||||
memcpy (savebuffer + woffset, freezecomment, 64);
|
memcpy (savebuffer + woffset, freezecomment, 64);
|
||||||
woffset += 64;
|
woffset += 64;
|
||||||
|
|
||||||
/*** Zip and copy in the freeze ***/
|
// Zip and copy in the freeze
|
||||||
uLongf DestBuffSize = (uLongf) SAVEBUFFERSIZE;
|
uLongf DestBuffSize = (uLongf) SAVEBUFFERSIZE;
|
||||||
int err= compress2((Bytef*)(savebuffer+woffset+8), (uLongf*)&DestBuffSize, (const Bytef*)savebuffer, (uLongf)bufoffset, Z_BEST_COMPRESSION);
|
int err= compress2((Bytef*)(savebuffer+woffset+8), (uLongf*)&DestBuffSize, (const Bytef*)savebuffer, (uLongf)bufoffset, Z_BEST_COMPRESSION);
|
||||||
|
|
||||||
@ -290,7 +290,8 @@ NGCUnfreezeGame (int method, bool8 silent)
|
|||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
char zipbuffer[SAVEBUFFERSIZE];
|
char * zipbuffer = (char *)malloc(SAVEBUFFERSIZE);
|
||||||
|
memset (zipbuffer, 0, SAVEBUFFERSIZE);
|
||||||
|
|
||||||
// skip the saveicon and comment
|
// skip the saveicon and comment
|
||||||
offset = (sizeof(saveicon) + 64);
|
offset = (sizeof(saveicon) + 64);
|
||||||
@ -310,18 +311,21 @@ NGCUnfreezeGame (int method, bool8 silent)
|
|||||||
{
|
{
|
||||||
sprintf (msg, "Unzip error %s ",zError(err));
|
sprintf (msg, "Unzip error %s ",zError(err));
|
||||||
WaitPrompt (msg);
|
WaitPrompt (msg);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
else if ( DestBuffSize != decompressedsize )
|
else if ( DestBuffSize != decompressedsize )
|
||||||
{
|
{
|
||||||
WaitPrompt((char*) "Unzipped size doesn't match expected size!");
|
WaitPrompt((char*) "Unzipped size doesn't match expected size!");
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
offset = SAVEBUFFERSIZE;
|
offset = SAVEBUFFERSIZE;
|
||||||
memcpy (savebuffer, zipbuffer, SAVEBUFFERSIZE);
|
memcpy (savebuffer, zipbuffer, SAVEBUFFERSIZE);
|
||||||
}
|
}
|
||||||
|
free(zipbuffer);
|
||||||
|
zipbuffer = NULL;
|
||||||
|
|
||||||
|
if(offset == 0)
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,301 +114,6 @@ LoadManager ()
|
|||||||
return loadROM;
|
return loadROM;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Preferences Menu
|
|
||||||
***************************************************************************/
|
|
||||||
static int prefmenuCount = 11;
|
|
||||||
static char prefmenu[][50] = {
|
|
||||||
|
|
||||||
"Load Method",
|
|
||||||
"Load Folder",
|
|
||||||
"Save Method",
|
|
||||||
"Save Folder",
|
|
||||||
|
|
||||||
"Auto Load",
|
|
||||||
"Auto Save",
|
|
||||||
"Verify MC Saves",
|
|
||||||
|
|
||||||
"Reverse Stereo",
|
|
||||||
"Interpolated Sound",
|
|
||||||
|
|
||||||
"Save Preferences",
|
|
||||||
"Back to Main Menu"
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
PreferencesMenu ()
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
int quit = 0;
|
|
||||||
int oldmenu = menu;
|
|
||||||
menu = 0;
|
|
||||||
while (quit == 0)
|
|
||||||
{
|
|
||||||
// some load/save methods are not implemented - here's where we skip them
|
|
||||||
// they need to be skipped in the order they were enumerated in snes9xGX.h
|
|
||||||
|
|
||||||
// no USB ports on GameCube
|
|
||||||
#ifndef HW_RVL
|
|
||||||
if(GCSettings.LoadMethod == METHOD_USB)
|
|
||||||
GCSettings.LoadMethod++;
|
|
||||||
if(GCSettings.SaveMethod == METHOD_USB)
|
|
||||||
GCSettings.SaveMethod++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// saving to DVD is impossible
|
|
||||||
if(GCSettings.SaveMethod == METHOD_DVD)
|
|
||||||
GCSettings.SaveMethod++;
|
|
||||||
|
|
||||||
// disable SMB in GC mode (stalls out)
|
|
||||||
#ifndef HW_RVL
|
|
||||||
if(GCSettings.LoadMethod == METHOD_SMB)
|
|
||||||
GCSettings.LoadMethod++;
|
|
||||||
if(GCSettings.SaveMethod == METHOD_SMB)
|
|
||||||
GCSettings.SaveMethod++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// disable MC saving in Wii mode - does not work for some reason!
|
|
||||||
#ifdef HW_RVL
|
|
||||||
if(GCSettings.SaveMethod == METHOD_MC_SLOTA)
|
|
||||||
GCSettings.SaveMethod++;
|
|
||||||
if(GCSettings.SaveMethod == METHOD_MC_SLOTB)
|
|
||||||
GCSettings.SaveMethod++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// correct load/save methods out of bounds
|
|
||||||
if(GCSettings.LoadMethod > 4)
|
|
||||||
GCSettings.LoadMethod = 0;
|
|
||||||
if(GCSettings.SaveMethod > 6)
|
|
||||||
GCSettings.SaveMethod = 0;
|
|
||||||
|
|
||||||
if (GCSettings.LoadMethod == METHOD_AUTO) sprintf (prefmenu[0],"Load Method AUTO");
|
|
||||||
else if (GCSettings.LoadMethod == METHOD_SD) sprintf (prefmenu[0],"Load Method SD");
|
|
||||||
else if (GCSettings.LoadMethod == METHOD_USB) sprintf (prefmenu[0],"Load Method USB");
|
|
||||||
else if (GCSettings.LoadMethod == METHOD_DVD) sprintf (prefmenu[0],"Load Method DVD");
|
|
||||||
else if (GCSettings.LoadMethod == METHOD_SMB) sprintf (prefmenu[0],"Load Method Network");
|
|
||||||
|
|
||||||
sprintf (prefmenu[1], "Load Folder %s", GCSettings.LoadFolder);
|
|
||||||
|
|
||||||
if (GCSettings.SaveMethod == METHOD_AUTO) sprintf (prefmenu[2],"Save Method AUTO");
|
|
||||||
else if (GCSettings.SaveMethod == METHOD_SD) sprintf (prefmenu[2],"Save Method SD");
|
|
||||||
else if (GCSettings.SaveMethod == METHOD_USB) sprintf (prefmenu[2],"Save Method USB");
|
|
||||||
else if (GCSettings.SaveMethod == METHOD_SMB) sprintf (prefmenu[2],"Save Method Network");
|
|
||||||
else if (GCSettings.SaveMethod == METHOD_MC_SLOTA) sprintf (prefmenu[2],"Save Method MC Slot A");
|
|
||||||
else if (GCSettings.SaveMethod == METHOD_MC_SLOTB) sprintf (prefmenu[2],"Save Method MC Slot B");
|
|
||||||
|
|
||||||
sprintf (prefmenu[3], "Save Folder %s", GCSettings.SaveFolder);
|
|
||||||
|
|
||||||
// disable changing load/save directories for now
|
|
||||||
prefmenu[1][0] = '\0';
|
|
||||||
prefmenu[3][0] = '\0';
|
|
||||||
|
|
||||||
if (GCSettings.AutoLoad == 0) sprintf (prefmenu[4],"Auto Load OFF");
|
|
||||||
else if (GCSettings.AutoLoad == 1) sprintf (prefmenu[4],"Auto Load SRAM");
|
|
||||||
else if (GCSettings.AutoLoad == 2) sprintf (prefmenu[4],"Auto Load SNAPSHOT");
|
|
||||||
|
|
||||||
if (GCSettings.AutoSave == 0) sprintf (prefmenu[5],"Auto Save OFF");
|
|
||||||
else if (GCSettings.AutoSave == 1) sprintf (prefmenu[5],"Auto Save SRAM");
|
|
||||||
else if (GCSettings.AutoSave == 2) sprintf (prefmenu[5],"Auto Save SNAPSHOT");
|
|
||||||
else if (GCSettings.AutoSave == 3) sprintf (prefmenu[5],"Auto Save BOTH");
|
|
||||||
|
|
||||||
sprintf (prefmenu[6], "Verify MC Saves %s",
|
|
||||||
GCSettings.VerifySaves == true ? " ON" : "OFF");
|
|
||||||
|
|
||||||
sprintf (prefmenu[7], "Reverse Stereo %s",
|
|
||||||
Settings.ReverseStereo == true ? " ON" : "OFF");
|
|
||||||
|
|
||||||
sprintf (prefmenu[8], "Interpolated Sound %s",
|
|
||||||
Settings.InterpolatedSound == true ? " ON" : "OFF");
|
|
||||||
|
|
||||||
ret = RunMenu (prefmenu, prefmenuCount, (char*)"Preferences", 16);
|
|
||||||
|
|
||||||
switch (ret)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
GCSettings.LoadMethod ++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
GCSettings.SaveMethod ++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
GCSettings.AutoLoad ++;
|
|
||||||
if (GCSettings.AutoLoad > 2)
|
|
||||||
GCSettings.AutoLoad = 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
GCSettings.AutoSave ++;
|
|
||||||
if (GCSettings.AutoSave > 3)
|
|
||||||
GCSettings.AutoSave = 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 6:
|
|
||||||
GCSettings.VerifySaves ^= 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 7:
|
|
||||||
Settings.ReverseStereo ^= 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 8:
|
|
||||||
Settings.InterpolatedSound ^= 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 9:
|
|
||||||
SavePrefs(GCSettings.SaveMethod, NOTSILENT);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case -1: /*** Button B ***/
|
|
||||||
case 10:
|
|
||||||
quit = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
menu = oldmenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Video Options
|
|
||||||
***************************************************************************/
|
|
||||||
static int videomenuCount = 14;
|
|
||||||
static char videomenu[][50] = {
|
|
||||||
|
|
||||||
"Transparency",
|
|
||||||
"Display Frame Rate",
|
|
||||||
"Enable Zooming",
|
|
||||||
"Video Filtering",
|
|
||||||
"Widescreen",
|
|
||||||
|
|
||||||
"X-shift ++",
|
|
||||||
" --",
|
|
||||||
"Y-shift ++",
|
|
||||||
" --",
|
|
||||||
"X-shift: ",
|
|
||||||
"Y-shift: ",
|
|
||||||
"Reset Video Shifts",
|
|
||||||
|
|
||||||
"Save Preferences",
|
|
||||||
"Back to Main Menu"
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
VideoOptions ()
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
int quit = 0;
|
|
||||||
int oldmenu = menu;
|
|
||||||
menu = 0;
|
|
||||||
while (quit == 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
sprintf (prefmenu[0], "Transparency %s",
|
|
||||||
Settings.Transparency == true ? " ON" : "OFF");
|
|
||||||
|
|
||||||
sprintf (prefmenu[1], "Display Frame Rate %s",
|
|
||||||
Settings.DisplayFrameRate == true ? " ON" : "OFF");
|
|
||||||
|
|
||||||
sprintf (prefmenu[2], "Enable Zooming %s",
|
|
||||||
GCSettings.NGCZoom == true ? " ON" : "OFF");
|
|
||||||
|
|
||||||
// don't allow original render mode if progressive video mode detected
|
|
||||||
if (GCSettings.render==0 && progressive)
|
|
||||||
GCSettings.render++;
|
|
||||||
|
|
||||||
if ( GCSettings.render == 0 )
|
|
||||||
sprintf (prefmenu[3], "Video Rendering Original");
|
|
||||||
if ( GCSettings.render == 1 )
|
|
||||||
sprintf (prefmenu[3], "Video Rendering Filtered");
|
|
||||||
if ( GCSettings.render == 2 )
|
|
||||||
sprintf (prefmenu[3], "Video Rendering Unfiltered");
|
|
||||||
|
|
||||||
sprintf (prefmenu[4], "Video Scaling %s",
|
|
||||||
GCSettings.widescreen == true ? "16:9 Correction" : "Default");
|
|
||||||
|
|
||||||
sprintf (prefmenu[9], "X-shift: %d", GCSettings.xshift);
|
|
||||||
|
|
||||||
sprintf (prefmenu[10], "Y-shift: %d", GCSettings.yshift);
|
|
||||||
|
|
||||||
ret = RunMenu (videomenu, videomenuCount, (char*)"Video Options", 16);
|
|
||||||
|
|
||||||
switch (ret)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
Settings.Transparency ^= 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
Settings.DisplayFrameRate ^= 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
GCSettings.NGCZoom ^= 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
GCSettings.render++;
|
|
||||||
if (GCSettings.render > 2 )
|
|
||||||
GCSettings.render = 0;
|
|
||||||
// reset zoom
|
|
||||||
zoom_reset ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
GCSettings.widescreen ^= 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
// xscale UP
|
|
||||||
GCSettings.xshift++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 6:
|
|
||||||
// xscale DOWN
|
|
||||||
GCSettings.xshift--;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 7:
|
|
||||||
// yscale UP
|
|
||||||
GCSettings.yshift++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 8:
|
|
||||||
// yscale DOWN
|
|
||||||
GCSettings.yshift--;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 9:
|
|
||||||
case 10:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 11:
|
|
||||||
// reset video shifts
|
|
||||||
GCSettings.xshift = GCSettings.yshift = 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 12:
|
|
||||||
SavePrefs(GCSettings.SaveMethod, NOTSILENT);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case -1: /*** Button B ***/
|
|
||||||
case 13:
|
|
||||||
quit = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
menu = oldmenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Cheat Menu
|
* Cheat Menu
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@ -693,6 +398,286 @@ GameMenu ()
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* File Options Menu
|
||||||
|
***************************************************************************/
|
||||||
|
static int filemenuCount = 8;
|
||||||
|
static char filemenu[][50] = {
|
||||||
|
"Load Method",
|
||||||
|
"Load Folder",
|
||||||
|
"Save Method",
|
||||||
|
"Save Folder",
|
||||||
|
|
||||||
|
"Auto Load",
|
||||||
|
"Auto Save",
|
||||||
|
"Verify MC Saves",
|
||||||
|
|
||||||
|
"Back to Preferences Menu"
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
FileOptions ()
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
int quit = 0;
|
||||||
|
int oldmenu = menu;
|
||||||
|
menu = 0;
|
||||||
|
while (quit == 0)
|
||||||
|
{
|
||||||
|
// some load/save methods are not implemented - here's where we skip them
|
||||||
|
// they need to be skipped in the order they were enumerated in snes9xGX.h
|
||||||
|
|
||||||
|
// no USB ports on GameCube
|
||||||
|
#ifndef HW_RVL
|
||||||
|
if(GCSettings.LoadMethod == METHOD_USB)
|
||||||
|
GCSettings.LoadMethod++;
|
||||||
|
if(GCSettings.SaveMethod == METHOD_USB)
|
||||||
|
GCSettings.SaveMethod++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// saving to DVD is impossible
|
||||||
|
if(GCSettings.SaveMethod == METHOD_DVD)
|
||||||
|
GCSettings.SaveMethod++;
|
||||||
|
|
||||||
|
// disable SMB in GC mode (stalls out)
|
||||||
|
#ifndef HW_RVL
|
||||||
|
if(GCSettings.LoadMethod == METHOD_SMB)
|
||||||
|
GCSettings.LoadMethod++;
|
||||||
|
if(GCSettings.SaveMethod == METHOD_SMB)
|
||||||
|
GCSettings.SaveMethod++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// disable MC saving in Wii mode - does not work for some reason!
|
||||||
|
#ifdef HW_RVL
|
||||||
|
if(GCSettings.SaveMethod == METHOD_MC_SLOTA)
|
||||||
|
GCSettings.SaveMethod++;
|
||||||
|
if(GCSettings.SaveMethod == METHOD_MC_SLOTB)
|
||||||
|
GCSettings.SaveMethod++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// correct load/save methods out of bounds
|
||||||
|
if(GCSettings.LoadMethod > 4)
|
||||||
|
GCSettings.LoadMethod = 0;
|
||||||
|
if(GCSettings.SaveMethod > 6)
|
||||||
|
GCSettings.SaveMethod = 0;
|
||||||
|
|
||||||
|
if (GCSettings.LoadMethod == METHOD_AUTO) sprintf (filemenu[0],"Load Method AUTO");
|
||||||
|
else if (GCSettings.LoadMethod == METHOD_SD) sprintf (filemenu[0],"Load Method SD");
|
||||||
|
else if (GCSettings.LoadMethod == METHOD_USB) sprintf (filemenu[0],"Load Method USB");
|
||||||
|
else if (GCSettings.LoadMethod == METHOD_DVD) sprintf (filemenu[0],"Load Method DVD");
|
||||||
|
else if (GCSettings.LoadMethod == METHOD_SMB) sprintf (filemenu[0],"Load Method Network");
|
||||||
|
|
||||||
|
sprintf (filemenu[1], "Load Folder %s", GCSettings.LoadFolder);
|
||||||
|
|
||||||
|
if (GCSettings.SaveMethod == METHOD_AUTO) sprintf (filemenu[2],"Save Method AUTO");
|
||||||
|
else if (GCSettings.SaveMethod == METHOD_SD) sprintf (filemenu[2],"Save Method SD");
|
||||||
|
else if (GCSettings.SaveMethod == METHOD_USB) sprintf (filemenu[2],"Save Method USB");
|
||||||
|
else if (GCSettings.SaveMethod == METHOD_SMB) sprintf (filemenu[2],"Save Method Network");
|
||||||
|
else if (GCSettings.SaveMethod == METHOD_MC_SLOTA) sprintf (filemenu[2],"Save Method MC Slot A");
|
||||||
|
else if (GCSettings.SaveMethod == METHOD_MC_SLOTB) sprintf (filemenu[2],"Save Method MC Slot B");
|
||||||
|
|
||||||
|
sprintf (filemenu[3], "Save Folder %s", GCSettings.SaveFolder);
|
||||||
|
|
||||||
|
// disable changing load/save directories for now
|
||||||
|
filemenu[1][0] = '\0';
|
||||||
|
filemenu[3][0] = '\0';
|
||||||
|
|
||||||
|
if (GCSettings.AutoLoad == 0) sprintf (filemenu[4],"Auto Load OFF");
|
||||||
|
else if (GCSettings.AutoLoad == 1) sprintf (filemenu[4],"Auto Load SRAM");
|
||||||
|
else if (GCSettings.AutoLoad == 2) sprintf (filemenu[4],"Auto Load SNAPSHOT");
|
||||||
|
|
||||||
|
if (GCSettings.AutoSave == 0) sprintf (filemenu[5],"Auto Save OFF");
|
||||||
|
else if (GCSettings.AutoSave == 1) sprintf (filemenu[5],"Auto Save SRAM");
|
||||||
|
else if (GCSettings.AutoSave == 2) sprintf (filemenu[5],"Auto Save SNAPSHOT");
|
||||||
|
else if (GCSettings.AutoSave == 3) sprintf (filemenu[5],"Auto Save BOTH");
|
||||||
|
|
||||||
|
sprintf (filemenu[6], "Verify MC Saves %s",
|
||||||
|
GCSettings.VerifySaves == true ? " ON" : "OFF");
|
||||||
|
|
||||||
|
ret = RunMenu (filemenu, filemenuCount, (char*)"Save/Load Options", 16);
|
||||||
|
|
||||||
|
switch (ret)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
GCSettings.LoadMethod ++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
GCSettings.SaveMethod ++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
GCSettings.AutoLoad ++;
|
||||||
|
if (GCSettings.AutoLoad > 2)
|
||||||
|
GCSettings.AutoLoad = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
GCSettings.AutoSave ++;
|
||||||
|
if (GCSettings.AutoSave > 3)
|
||||||
|
GCSettings.AutoSave = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
GCSettings.VerifySaves ^= 1;
|
||||||
|
break;
|
||||||
|
case -1: /*** Button B ***/
|
||||||
|
case 7:
|
||||||
|
SavePrefs(GCSettings.SaveMethod, SILENT);
|
||||||
|
quit = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
menu = oldmenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Video Options
|
||||||
|
***************************************************************************/
|
||||||
|
static int videomenuCount = 14;
|
||||||
|
static char videomenu[][50] = {
|
||||||
|
|
||||||
|
"Transparency",
|
||||||
|
"Display Frame Rate",
|
||||||
|
"Enable Zooming",
|
||||||
|
"Video Filtering",
|
||||||
|
"Widescreen",
|
||||||
|
|
||||||
|
"X-shift ++",
|
||||||
|
" --",
|
||||||
|
"Y-shift ++",
|
||||||
|
" --",
|
||||||
|
"Shift: ",
|
||||||
|
"Reset Video Shift",
|
||||||
|
|
||||||
|
"Reverse Stereo",
|
||||||
|
"Interpolated Sound",
|
||||||
|
"Back to Preferences Menu"
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
VideoOptions ()
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
int quit = 0;
|
||||||
|
int oldmenu = menu;
|
||||||
|
menu = 0;
|
||||||
|
while (quit == 0)
|
||||||
|
{
|
||||||
|
sprintf (videomenu[0], "Transparency %s",
|
||||||
|
Settings.Transparency == true ? " ON" : "OFF");
|
||||||
|
|
||||||
|
sprintf (videomenu[1], "Display Frame Rate %s",
|
||||||
|
Settings.DisplayFrameRate == true ? " ON" : "OFF");
|
||||||
|
|
||||||
|
sprintf (videomenu[2], "Enable Zooming %s",
|
||||||
|
GCSettings.NGCZoom == true ? " ON" : "OFF");
|
||||||
|
|
||||||
|
// don't allow original render mode if progressive video mode detected
|
||||||
|
if (GCSettings.render==0 && progressive)
|
||||||
|
GCSettings.render++;
|
||||||
|
|
||||||
|
if ( GCSettings.render == 0 )
|
||||||
|
sprintf (videomenu[3], "Video Rendering Original");
|
||||||
|
if ( GCSettings.render == 1 )
|
||||||
|
sprintf (videomenu[3], "Video Rendering Filtered");
|
||||||
|
if ( GCSettings.render == 2 )
|
||||||
|
sprintf (videomenu[3], "Video Rendering Unfiltered");
|
||||||
|
|
||||||
|
sprintf (videomenu[4], "Video Scaling %s",
|
||||||
|
GCSettings.widescreen == true ? "16:9 Correction" : "Default");
|
||||||
|
|
||||||
|
sprintf (videomenu[9], "Video Shift: %d, %d", GCSettings.xshift, GCSettings.yshift);
|
||||||
|
|
||||||
|
sprintf (videomenu[11], "Reverse Stereo %s",
|
||||||
|
Settings.ReverseStereo == true ? " ON" : "OFF");
|
||||||
|
|
||||||
|
sprintf (videomenu[12], "Interpolated Sound %s",
|
||||||
|
Settings.InterpolatedSound == true ? " ON" : "OFF");
|
||||||
|
|
||||||
|
ret = RunMenu (videomenu, videomenuCount, (char*)"Video Options", 16);
|
||||||
|
|
||||||
|
switch (ret)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Settings.Transparency ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
Settings.DisplayFrameRate ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
GCSettings.NGCZoom ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
GCSettings.render++;
|
||||||
|
if (GCSettings.render > 2 )
|
||||||
|
GCSettings.render = 0;
|
||||||
|
// reset zoom
|
||||||
|
zoom_reset ();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
GCSettings.widescreen ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
// xscale UP
|
||||||
|
GCSettings.xshift++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
// xscale DOWN
|
||||||
|
GCSettings.xshift--;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
// yscale UP
|
||||||
|
GCSettings.yshift++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8:
|
||||||
|
// yscale DOWN
|
||||||
|
GCSettings.yshift--;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 9:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 10:
|
||||||
|
// reset video shifts
|
||||||
|
GCSettings.xshift = GCSettings.yshift = 0;
|
||||||
|
WaitPrompt((char *)"Video Shift Reset");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 11:
|
||||||
|
Settings.ReverseStereo ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 12:
|
||||||
|
Settings.InterpolatedSound ^= 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case -1: // Button B
|
||||||
|
case 13:
|
||||||
|
SavePrefs(GCSettings.SaveMethod, SILENT);
|
||||||
|
quit = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
menu = oldmenu;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Controller Configuration
|
* Controller Configuration
|
||||||
*
|
*
|
||||||
@ -916,7 +901,7 @@ ConfigureButtons (u16 ctrlr_type)
|
|||||||
menu = oldmenu;
|
menu = oldmenu;
|
||||||
} // end configurebuttons()
|
} // end configurebuttons()
|
||||||
|
|
||||||
int ctlrmenucount = 10;
|
int ctlrmenucount = 9;
|
||||||
char ctlrmenu[][50] = {
|
char ctlrmenu[][50] = {
|
||||||
// toggle:
|
// toggle:
|
||||||
"MultiTap",
|
"MultiTap",
|
||||||
@ -928,8 +913,7 @@ char ctlrmenu[][50] = {
|
|||||||
"Classic Controller",
|
"Classic Controller",
|
||||||
"Wiimote",
|
"Wiimote",
|
||||||
"Gamecube Pad",
|
"Gamecube Pad",
|
||||||
"Save Preferences",
|
"Back to Preferences Menu"
|
||||||
"Go Back"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1004,13 +988,9 @@ ConfigureControllers ()
|
|||||||
ConfigureButtons (CTRLR_GCPAD);
|
ConfigureButtons (CTRLR_GCPAD);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
|
||||||
/*** Save Preferences Now ***/
|
|
||||||
SavePrefs(GCSettings.SaveMethod, NOTSILENT);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case -1: /*** Button B ***/
|
case -1: /*** Button B ***/
|
||||||
case 9:
|
case 8:
|
||||||
|
SavePrefs(GCSettings.SaveMethod, SILENT);
|
||||||
/*** Return ***/
|
/*** Return ***/
|
||||||
quit = 1;
|
quit = 1;
|
||||||
break;
|
break;
|
||||||
@ -1020,16 +1000,66 @@ ConfigureControllers ()
|
|||||||
menu = oldmenu;
|
menu = oldmenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Preferences Menu
|
||||||
|
***************************************************************************/
|
||||||
|
static int prefmenuCount = 5;
|
||||||
|
static char prefmenu[][50] = {
|
||||||
|
"Controllers",
|
||||||
|
"Video / Sound",
|
||||||
|
"Saving / Loading",
|
||||||
|
"Reset Preferences",
|
||||||
|
"Back to Main Menu"
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
PreferencesMenu ()
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
int quit = 0;
|
||||||
|
int oldmenu = menu;
|
||||||
|
menu = 0;
|
||||||
|
while (quit == 0)
|
||||||
|
{
|
||||||
|
ret = RunMenu (prefmenu, prefmenuCount, (char*)"Preferences");
|
||||||
|
|
||||||
|
switch (ret)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ConfigureControllers ();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
VideoOptions ();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
FileOptions ();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
DefaultSettings ();
|
||||||
|
WaitPrompt((char *)"Preferences Reset");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case -1: /*** Button B ***/
|
||||||
|
case 4:
|
||||||
|
quit = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
menu = oldmenu;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Main Menu
|
* Main Menu
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
int menucount = 9;
|
int menucount = 7;
|
||||||
char menuitems[][50] = {
|
char menuitems[][50] = {
|
||||||
"Choose Game",
|
"Choose Game",
|
||||||
"Controller Configuration",
|
|
||||||
"Preferences",
|
"Preferences",
|
||||||
"Game Menu",
|
"Game Menu",
|
||||||
"Video Options",
|
|
||||||
"Credits",
|
"Credits",
|
||||||
"DVD Motor Off",
|
"DVD Motor Off",
|
||||||
"Reset System",
|
"Reset System",
|
||||||
@ -1037,20 +1067,20 @@ char menuitems[][50] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
mainmenu (int selectedMenu)
|
MainMenu (int selectedMenu)
|
||||||
{
|
{
|
||||||
int quit = 0;
|
int quit = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
// disable game-specific menu items if a ROM isn't loaded
|
// disable game-specific menu items if a ROM isn't loaded
|
||||||
if ( ARAM_ROMSIZE == 0 )
|
if ( ARAM_ROMSIZE == 0 )
|
||||||
menuitems[3][0] = '\0';
|
menuitems[2][0] = '\0';
|
||||||
else
|
else
|
||||||
sprintf (menuitems[3], "Game Menu");
|
sprintf (menuitems[2], "Game Menu");
|
||||||
|
|
||||||
#ifndef HW_DOL
|
#ifndef HW_DOL
|
||||||
// don't show dvd motor off on the wii
|
// don't show dvd motor off on the wii
|
||||||
menuitems[6][0] = '\0';
|
menuitems[4][0] = '\0';
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VIDEO_WaitVSync ();
|
VIDEO_WaitVSync ();
|
||||||
@ -1075,44 +1105,34 @@ mainmenu (int selectedMenu)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
// Configure Controllers
|
|
||||||
ConfigureControllers ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
// Preferences
|
// Preferences
|
||||||
PreferencesMenu ();
|
PreferencesMenu ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 2:
|
||||||
// Game Options
|
// Game Options
|
||||||
quit = GameMenu ();
|
quit = GameMenu ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 3:
|
||||||
// Video Options
|
|
||||||
VideoOptions ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
// Credits
|
// Credits
|
||||||
Credits ();
|
Credits ();
|
||||||
WaitButtonA ();
|
WaitButtonA ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 4:
|
||||||
// turn the dvd motor off (GC only)
|
// turn the dvd motor off (GC only)
|
||||||
#ifdef HW_DOL
|
#ifdef HW_DOL
|
||||||
dvd_motor_off ();
|
dvd_motor_off ();
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 5:
|
||||||
// Reset the Gamecube/Wii
|
// Reset the Gamecube/Wii
|
||||||
Reboot();
|
Reboot();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 6:
|
||||||
// Exit to Loader
|
// Exit to Loader
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
#ifdef WII_DVD
|
#ifdef WII_DVD
|
||||||
|
@ -15,6 +15,6 @@
|
|||||||
|
|
||||||
#define _NGCMENU_
|
#define _NGCMENU_
|
||||||
|
|
||||||
void mainmenu (int selectedMenu);
|
void MainMenu (int selectedMenu);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -55,9 +55,7 @@ extern int whichfb;
|
|||||||
|
|
||||||
/*** Permanent backdrop ***/
|
/*** Permanent backdrop ***/
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
u32 *backdrop;
|
u32 *backdrop = NULL;
|
||||||
#else
|
|
||||||
static u32 *backdrop;
|
|
||||||
#endif
|
#endif
|
||||||
unsigned int getcolour (u8 r1, u8 g1, u8 b1);
|
unsigned int getcolour (u8 r1, u8 g1, u8 b1);
|
||||||
void DrawLineFast( int startx, int endx, int y, u8 r, u8 g, u8 b );
|
void DrawLineFast( int startx, int endx, int y, u8 r, u8 g, u8 b );
|
||||||
@ -318,14 +316,14 @@ unpackbackdrop ()
|
|||||||
unsigned int colour;
|
unsigned int colour;
|
||||||
int offset;
|
int offset;
|
||||||
int i;
|
int i;
|
||||||
|
int bgSize = (screenheight * 640 * 2);
|
||||||
|
|
||||||
// backdrop = (unsigned int *) malloc (screenheight * 1280);
|
u32 * bgtemp = (u32 *) malloc (bgSize);
|
||||||
backdrop = (u32 *) malloc (screenheight * 1280);
|
|
||||||
colour = getcolour (0x00, 0x00, 0x00);
|
colour = getcolour (0x00, 0x00, 0x00);
|
||||||
|
|
||||||
/*** Fill with black for now ***/
|
/*** Fill with black for now ***/
|
||||||
for (i = 0; i < (320 * screenheight); i++)
|
for (i = 0; i < (320 * screenheight); i++)
|
||||||
backdrop[i] = colour;
|
bgtemp[i] = colour;
|
||||||
|
|
||||||
/*** If it's PAL50, need to move down a few lines ***/
|
/*** If it's PAL50, need to move down a few lines ***/
|
||||||
offset = ((screenheight - 480) >> 1) * 320;
|
offset = ((screenheight - 480) >> 1) * 320;
|
||||||
@ -333,15 +331,22 @@ unpackbackdrop ()
|
|||||||
outbytes = BG_RAW;
|
outbytes = BG_RAW;
|
||||||
|
|
||||||
res =
|
res =
|
||||||
uncompress ((Bytef *) backdrop + offset, &outbytes, (Bytef *) bg,
|
uncompress ((Bytef *) bgtemp + offset, &outbytes, (Bytef *) bg,
|
||||||
inbytes);
|
inbytes);
|
||||||
|
|
||||||
#ifndef HW_RVL
|
#ifdef HW_RVL
|
||||||
/*** Now store the backdrop in ARAM ***/
|
// On Wii - store backdrop in MEM2
|
||||||
ARAMPut ((char *) backdrop, (char *) AR_BACKDROP, 640 * screenheight * 2);
|
unsigned int MEM2Storage = 0x91000000;
|
||||||
free (backdrop);
|
backdrop = (u32 *)MEM2Storage;
|
||||||
|
memcpy(backdrop, bgtemp, bgSize);
|
||||||
|
#else
|
||||||
|
// On GameCube - store the backdrop in ARAM
|
||||||
|
ARAMPut ((char *) bgtemp, (char *) AR_BACKDROP, bgSize);
|
||||||
#endif
|
#endif
|
||||||
// otherwise (on wii) backdrop is stored in memory
|
|
||||||
|
free (bgtemp);
|
||||||
|
bgtemp = NULL;
|
||||||
|
|
||||||
clearscreen ();
|
clearscreen ();
|
||||||
showscreen ();
|
showscreen ();
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ DefaultSettings ()
|
|||||||
Settings.SkipFrames = 10;
|
Settings.SkipFrames = 10;
|
||||||
Settings.TurboSkipFrames = 19;
|
Settings.TurboSkipFrames = 19;
|
||||||
Settings.DisplayFrameRate = false;
|
Settings.DisplayFrameRate = false;
|
||||||
Settings.AutoDisplayMessages = 1; // SNES9x 1.51
|
Settings.AutoDisplayMessages = 0; // SNES9x 1.51
|
||||||
Settings.InitialInfoStringTimeout = 200; // # frames to display messages for
|
Settings.InitialInfoStringTimeout = 200; // # frames to display messages for
|
||||||
|
|
||||||
// Frame timings in 50hz and 60hz cpu mode
|
// Frame timings in 50hz and 60hz cpu mode
|
||||||
|
@ -156,7 +156,7 @@ emulate ()
|
|||||||
//gui_savescreen ();
|
//gui_savescreen ();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
mainmenu (3); // go to game menu
|
MainMenu (2); // go to game menu
|
||||||
|
|
||||||
FrameTimer = 0;
|
FrameTimer = 0;
|
||||||
setFrameTimerMethod (); // set frametimer method every time a ROM is loaded
|
setFrameTimerMethod (); // set frametimer method every time a ROM is loaded
|
||||||
@ -297,7 +297,7 @@ main ()
|
|||||||
if(!LoadPrefs())
|
if(!LoadPrefs())
|
||||||
{
|
{
|
||||||
WaitPrompt((char*) "Preferences reset - check settings!");
|
WaitPrompt((char*) "Preferences reset - check settings!");
|
||||||
selectedMenu = 2; // change to preferences menu
|
selectedMenu = 1; // change to preferences menu
|
||||||
}
|
}
|
||||||
|
|
||||||
// No appended ROM, so get the user to load one
|
// No appended ROM, so get the user to load one
|
||||||
@ -305,7 +305,7 @@ main ()
|
|||||||
{
|
{
|
||||||
while (ARAM_ROMSIZE == 0)
|
while (ARAM_ROMSIZE == 0)
|
||||||
{
|
{
|
||||||
mainmenu (selectedMenu);
|
MainMenu (selectedMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -156,10 +156,12 @@ LoadSRAM (int method, bool silent)
|
|||||||
|
|
||||||
if(method == METHOD_SD || method == METHOD_USB)
|
if(method == METHOD_SD || method == METHOD_USB)
|
||||||
{
|
{
|
||||||
ChangeFATInterface(method, NOTSILENT);
|
if(ChangeFATInterface(method, NOTSILENT))
|
||||||
|
{
|
||||||
sprintf (filepath, "%s/%s/%s.srm", ROOTFATDIR, GCSettings.SaveFolder, Memory.ROMFilename);
|
sprintf (filepath, "%s/%s/%s.srm", ROOTFATDIR, GCSettings.SaveFolder, Memory.ROMFilename);
|
||||||
offset = LoadBufferFromFAT (filepath, silent);
|
offset = LoadBufferFromFAT (filepath, silent);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if(method == METHOD_SMB)
|
else if(method == METHOD_SMB)
|
||||||
{
|
{
|
||||||
sprintf (filepath, "%s/%s.srm", GCSettings.SaveFolder, Memory.ROMFilename);
|
sprintf (filepath, "%s/%s.srm", GCSettings.SaveFolder, Memory.ROMFilename);
|
||||||
|
Loading…
Reference in New Issue
Block a user