From 3a5f1f06e72d3bb0f06ac9fe9f2cce17485848b4 Mon Sep 17 00:00:00 2001 From: dborth Date: Tue, 16 Jun 2009 05:03:04 +0000 Subject: [PATCH] correction for loading settings from usb, set widescreen to maximum size --- source/ngc/preferences.cpp | 38 +++++++++++++++++++++++++++----------- source/ngc/snes9xGX.cpp | 12 +++++++++--- source/ngc/snes9xGX.h | 1 + source/ngc/video.cpp | 3 +-- 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/source/ngc/preferences.cpp b/source/ngc/preferences.cpp index 83fbf21..5ecac68 100644 --- a/source/ngc/preferences.cpp +++ b/source/ngc/preferences.cpp @@ -352,10 +352,12 @@ SavePrefs (bool silent) char filepath[1024]; int datasize; int offset = 0; + int method = appLoadMethod; // We'll save using the first available method (probably SD) since this // is the method preferences will be loaded from by default - int method = autoSaveMethod(silent); + if(method == METHOD_AUTO) + autoSaveMethod(silent); if(method == METHOD_AUTO) return false; @@ -433,16 +435,30 @@ bool LoadPrefs() return true; bool prefFound = false; - if(ChangeInterface(METHOD_SD, SILENT)) - prefFound = LoadPrefsFromMethod(METHOD_SD); - if(!prefFound && ChangeInterface(METHOD_USB, SILENT)) - prefFound = LoadPrefsFromMethod(METHOD_USB); - if(!prefFound && TestMC(CARD_SLOTA, SILENT)) - prefFound = LoadPrefsFromMethod(METHOD_MC_SLOTA); - if(!prefFound && TestMC(CARD_SLOTB, SILENT)) - prefFound = LoadPrefsFromMethod(METHOD_MC_SLOTB); - if(!prefFound && ChangeInterface(METHOD_SMB, SILENT)) - prefFound = LoadPrefsFromMethod(METHOD_SMB); + + if(appLoadMethod == METHOD_SD) + { + if(ChangeInterface(METHOD_SD, SILENT)) + prefFound = LoadPrefsFromMethod(METHOD_SD); + } + else if(appLoadMethod == METHOD_USB) + { + if(ChangeInterface(METHOD_USB, SILENT)) + prefFound = LoadPrefsFromMethod(METHOD_USB); + } + else + { + if(ChangeInterface(METHOD_SD, SILENT)) + prefFound = LoadPrefsFromMethod(METHOD_SD); + if(!prefFound && ChangeInterface(METHOD_USB, SILENT)) + prefFound = LoadPrefsFromMethod(METHOD_USB); + if(!prefFound && TestMC(CARD_SLOTA, SILENT)) + prefFound = LoadPrefsFromMethod(METHOD_MC_SLOTA); + if(!prefFound && TestMC(CARD_SLOTB, SILENT)) + prefFound = LoadPrefsFromMethod(METHOD_MC_SLOTB); + if(!prefFound && ChangeInterface(METHOD_SMB, SILENT)) + prefFound = LoadPrefsFromMethod(METHOD_SMB); + } prefLoaded = true; // attempted to load preferences diff --git a/source/ngc/snes9xGX.cpp b/source/ngc/snes9xGX.cpp index a24fbdf..bc7dbdf 100644 --- a/source/ngc/snes9xGX.cpp +++ b/source/ngc/snes9xGX.cpp @@ -63,6 +63,7 @@ int ShutdownRequested = 0; int ResetRequested = 0; int ExitRequested = 0; char appPath[1024]; +int appLoadMethod = METHOD_AUTO; FreeTypeGX *fontSystem; /**************************************************************************** @@ -279,22 +280,27 @@ emulate () } // main loop } -void CreateAppPath(char origpath[]) +static void CreateAppPath(char origpath[]) { #ifdef HW_DOL sprintf(appPath, GCSettings.SaveFolder); #else char path[1024]; - strcpy(path, origpath); // make a copy so we don't mess up original + strncpy(path, origpath, 1024); // make a copy so we don't mess up original char * loc; int pos = -1; + if(strncmp(path, "sd:/", 5) == 0 || strncmp(path, "fat:/", 5) == 0) + appLoadMethod = METHOD_SD; + else if(strncmp(path, "usb:/", 5) == 0) + appLoadMethod = METHOD_USB; + loc = strrchr(path,'/'); if (loc != NULL) *loc = 0; // strip file name - loc = strchr(path,'/'); // looking for / from fat:/ + loc = strchr(path,'/'); // looking for first / (after sd: or usb:) if (loc != NULL) pos = loc - path + 1; diff --git a/source/ngc/snes9xGX.h b/source/ngc/snes9xGX.h index 3686aab..3f97abe 100644 --- a/source/ngc/snes9xGX.h +++ b/source/ngc/snes9xGX.h @@ -99,6 +99,7 @@ extern int ConfigRequested; extern int ShutdownRequested; extern int ExitRequested; extern char appPath[]; +extern int appLoadMethod; extern FreeTypeGX *fontSystem; #endif diff --git a/source/ngc/video.cpp b/source/ngc/video.cpp index fde53a2..26fe066 100644 --- a/source/ngc/video.cpp +++ b/source/ngc/video.cpp @@ -553,8 +553,7 @@ static void SetupVideoMode() // widescreen fix if(CONF_GetAspectRatio() == CONF_ASPECT_16_9) { - vmode->viWidth = VI_MAX_WIDTH_PAL-12; - vmode->viXOrigin = ((VI_MAX_WIDTH_PAL - vmode->viWidth) / 2) + 2; + vmode->viWidth = VI_MAX_WIDTH_PAL; } #endif