diff --git a/.gitignore b/.gitignore index cae7e55..5623cd5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -/snes9x-gx.pnps -/snes9x-gx.pnproj -/build_wii -/executables +executables +build_wii +build_gc +dist diff --git a/hbc/meta.xml b/hbc/meta.xml index 7008792..7e65633 100644 --- a/hbc/meta.xml +++ b/hbc/meta.xml @@ -2,8 +2,8 @@ Visual Boy Advance GX Tantric - 2.3.5 - 20161210 + 2.3.6 + 20161211 GBA/GBC/GB Emulator A port of Visual Boy Advance - M to the Wii. diff --git a/readme.txt b/readme.txt index c911307..70a3e48 100644 --- a/readme.txt +++ b/readme.txt @@ -38,6 +38,13 @@ https://github.com/dborth/vbagx/releases |0Oื๘oท UPDATE HISTORY ทo๘ืO0| `จ•จจจจจ จจจจจจจจจจจจจจจจ จจจจจจจจจจจจจจจ จจจจจจจจจจจจจจจจจจจจ จจจจจจจจจจจจจ' +[2.3.6 - December 11, 2016] + +* Restored Wiiflow mode plugin by fix94 +* Restored fix filebrowser window overlapping +* Change all files End Of Line to windows mode +* Remove update check for updates + [2.3.5 - December 10, 2016] * Hide saving dialog that pops up briefly when returning from a game @@ -1159,7 +1166,7 @@ switched items since then. Additional coding Carl Kenner, dancinninjac Menu artwork the3seashells Menu sound Peter de Man - + จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ VBA GameCube/Wii SoftDev, emukidid diff --git a/source/fileop.cpp b/source/fileop.cpp index 94e7b42..e9ac29c 100644 --- a/source/fileop.cpp +++ b/source/fileop.cpp @@ -156,7 +156,6 @@ devicecallback (void *arg) usleep(THREAD_SLEEP); devsleep -= THREAD_SLEEP; } - UpdateCheck(); } return NULL; } diff --git a/source/gui/gui_filebrowser.cpp b/source/gui/gui_filebrowser.cpp index f91fa83..a3ea6e0 100644 --- a/source/gui/gui_filebrowser.cpp +++ b/source/gui/gui_filebrowser.cpp @@ -39,7 +39,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h) bgFileSelectionImg = new GuiImage(bgFileSelection); bgFileSelectionImg->SetParent(this); bgFileSelectionImg->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); - + bgFileSelectionEntry = new GuiImageData(bg_game_selection_entry_png); iconFolder = new GuiImageData(icon_folder_png); @@ -52,7 +52,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h) scrollbarImg = new GuiImage(scrollbar); scrollbarImg->SetParent(this); scrollbarImg->SetAlignment(ALIGN_RIGHT, ALIGN_TOP); - scrollbarImg->SetPosition(0, 30); + scrollbarImg->SetPosition(5, 30); arrowDown = new GuiImageData(scrollbar_arrowdown_png); arrowDownImg = new GuiImage(arrowDown); @@ -78,6 +78,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h) arrowUpBtn->SetTrigger(trigHeldA); arrowUpBtn->SetSoundOver(btnSoundOver); arrowUpBtn->SetSoundClick(btnSoundClick); + arrowUpBtn->SetPosition(5, 0); arrowDownBtn = new GuiButton(arrowDownImg->GetWidth(), arrowDownImg->GetHeight()); arrowDownBtn->SetParent(this); @@ -90,6 +91,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h) arrowDownBtn->SetTrigger(trigHeldA); arrowDownBtn->SetSoundOver(btnSoundOver); arrowDownBtn->SetSoundClick(btnSoundClick); + arrowDownBtn->SetPosition(5, 0); scrollbarBoxBtn = new GuiButton(scrollbarBoxImg->GetWidth(), scrollbarBoxImg->GetHeight()); scrollbarBoxBtn->SetParent(this); @@ -102,6 +104,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h) scrollbarBoxBtn->SetClickable(false); scrollbarBoxBtn->SetHoldable(true); scrollbarBoxBtn->SetTrigger(trigHeldA); + scrollbarBoxBtn->SetPosition(5, 30); for(int i=0; i 0) { position = positionWiimote; // follow wiimote cursor - scrollbarBoxBtn->SetPosition(0,position+36); + scrollbarBoxBtn->SetPosition(5,position+36); } else if(listChanged || numEntries != browser.numEntries) { @@ -446,7 +449,7 @@ void GuiFileBrowser::Update(GuiTrigger * t) { position = 156 * (browser.pageIndex + FILE_PAGESIZE/2) / (float)browser.numEntries; } - scrollbarBoxBtn->SetPosition(0,position+36); + scrollbarBoxBtn->SetPosition(5,position+36); } listChanged = false; @@ -454,4 +457,4 @@ void GuiFileBrowser::Update(GuiTrigger * t) if(updateCB) updateCB(this); -} \ No newline at end of file +} diff --git a/source/images/bg_game_selection.png b/source/images/bg_game_selection.png index 7978d45..f900327 100644 Binary files a/source/images/bg_game_selection.png and b/source/images/bg_game_selection.png differ diff --git a/source/images/bg_game_selection_entry.png b/source/images/bg_game_selection_entry.png index 47efdde..a071513 100644 Binary files a/source/images/bg_game_selection_entry.png and b/source/images/bg_game_selection_entry.png differ diff --git a/source/images/button_gamesave.png b/source/images/button_gamesave.png index e5ba780..389e920 100644 Binary files a/source/images/button_gamesave.png and b/source/images/button_gamesave.png differ diff --git a/source/images/button_gamesave_over.png b/source/images/button_gamesave_over.png index 7c4abbb..28bb677 100644 Binary files a/source/images/button_gamesave_over.png and b/source/images/button_gamesave_over.png differ diff --git a/source/menu.cpp b/source/menu.cpp index d8dc684..9f0c09a 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -1212,7 +1212,6 @@ static int MenuGame() // regardless of the weather, there should be no sun at night time! time(&long_time); // Get time as long integer. newtime = localtime(&long_time); // Convert to local time. - if (newtime->tm_hour > 21 || newtime->tm_hour < 5) { sprintf(s, "Weather: Night Time"); @@ -3213,6 +3212,10 @@ static int MenuSettingsEmulation() sprintf (options.value[0], "Super Game Boy"); else if (GCSettings.GBHardware == 3) sprintf (options.value[0], "Game Boy"); + else if (GCSettings.GBHardware == 4) + sprintf (options.value[0], "Game Boy Advance"); + else if (GCSettings.GBHardware == 5) + sprintf (options.value[0], "Super Game Boy 2"); if (GCSettings.SGBBorder == 0) sprintf (options.value[1], "Off"); diff --git a/source/preferences.cpp b/source/preferences.cpp index ddb3852..e7ca24b 100644 --- a/source/preferences.cpp +++ b/source/preferences.cpp @@ -166,12 +166,16 @@ preparePrefsData () createXMLSetting("LoadMethod", "Load Method", toStr(GCSettings.LoadMethod)); createXMLSetting("SaveMethod", "Save Method", toStr(GCSettings.SaveMethod)); createXMLSetting("LoadFolder", "Load Folder", GCSettings.LoadFolder); + createXMLSetting("LastFileLoaded", "Last File Loaded", GCSettings.LastFileLoaded); createXMLSetting("SaveFolder", "Save Folder", GCSettings.SaveFolder); + createXMLSetting("AppendAuto", "Append Auto to .SAV Files", toStr(GCSettings.AppendAuto)); + //createXMLSetting("CheatFolder", "Cheats Folder", GCSettings.CheatFolder); createXMLSetting("ScreenshotsFolder", "Screenshots Folder", GCSettings.ScreenshotsFolder); + createXMLSetting("BorderFolder", "SGB Borders Folder", GCSettings.BorderFolder); createXMLSetting("CoverFolder", "Covers Folder", GCSettings.CoverFolder); createXMLSetting("ArtworkFolder", "Artworks Folder", GCSettings.ArtworkFolder); createXMLSetting("ImageFolder", "Image Folder", GCSettings.ImageFolder); - + createXMLSection("Network", "Network Settings"); createXMLSetting("smbip", "Share Computer IP", GCSettings.smbip); @@ -186,11 +190,14 @@ preparePrefsData () createXMLSetting("gbaZoomVert", "GBA Vertical Zoom Level", FtoStr(GCSettings.gbaZoomVert)); createXMLSetting("gbZoomHor", "GB Horizontal Zoom Level", FtoStr(GCSettings.gbZoomHor)); createXMLSetting("gbZoomVert", "GB Vertical Zoom Level", FtoStr(GCSettings.gbZoomVert)); + createXMLSetting("gbFixed", "GB Fixed Pixel Ratio", toStr(GCSettings.gbFixed)); + createXMLSetting("gbaFixed", "GBA Fixed Pixel Ratio", toStr(GCSettings.gbaFixed)); createXMLSetting("render", "Video Filtering", toStr(GCSettings.render)); createXMLSetting("scaling", "Aspect Ratio Correction", toStr(GCSettings.scaling)); createXMLSetting("xshift", "Horizontal Video Shift", toStr(GCSettings.xshift)); createXMLSetting("yshift", "Vertical Video Shift", toStr(GCSettings.yshift)); createXMLSetting("colorize", "Colorize Mono Gameboy", toStr(GCSettings.colorize)); + createXMLSetting("gbaFrameskip", "GBA Frameskip", toStr(GCSettings.gbaFrameskip)); createXMLSection("Menu", "Menu Settings"); @@ -214,6 +221,12 @@ preparePrefsData () createXMLController(btnmap[CTRLR_CLASSIC], "ccpadmap", "Classic Controller"); createXMLController(btnmap[CTRLR_NUNCHUK], "ncpadmap", "Nunchuk"); + createXMLSection("Emulation", "Emulation Settings"); + + createXMLSetting("OffsetMinutesUTC", "Offset from UTC (minutes)", toStr(GCSettings.OffsetMinutesUTC)); + createXMLSetting("GBHardware", "Hardware (GB/GBC)", toStr(GCSettings.GBHardware)); + createXMLSetting("SGBBorder", "Border (GB/GBC)", toStr(GCSettings.SGBBorder)); + int datasize = mxmlSaveString(xml, (char *)savebuffer, SAVEBUFFERSIZE, XMLSaveCallback); mxmlDelete(xml); @@ -456,6 +469,9 @@ decodePrefsData () result = false; else if(verMajor < 2) // less than version 2.0.0 result = false; // reset settings (sorry, should update settings instead) + else if((verMajor*100 + verMinor*10 + verPoint) > + (curMajor*100 + curMinor*10 + curPoint)) // some future version + result = false; // reset settings else result = true; } @@ -470,12 +486,16 @@ decodePrefsData () loadXMLSetting(&GCSettings.LoadMethod, "LoadMethod"); loadXMLSetting(&GCSettings.SaveMethod, "SaveMethod"); loadXMLSetting(GCSettings.LoadFolder, "LoadFolder", sizeof(GCSettings.LoadFolder)); + loadXMLSetting(GCSettings.LastFileLoaded, "LastFileLoaded", sizeof(GCSettings.LastFileLoaded)); loadXMLSetting(GCSettings.SaveFolder, "SaveFolder", sizeof(GCSettings.SaveFolder)); + loadXMLSetting(&GCSettings.AppendAuto, "AppendAuto"); + //loadXMLSetting(GCSettings.CheatFolder, "CheatFolder", sizeof(GCSettings.CheatFolder)); loadXMLSetting(GCSettings.ScreenshotsFolder, "ScreenshotsFolder", sizeof(GCSettings.ScreenshotsFolder)); + loadXMLSetting(GCSettings.BorderFolder, "BorderFolder", sizeof(GCSettings.BorderFolder)); loadXMLSetting(GCSettings.CoverFolder, "CoverFolder", sizeof(GCSettings.CoverFolder)); loadXMLSetting(GCSettings.ArtworkFolder, "ArtworkFolder", sizeof(GCSettings.ArtworkFolder)); loadXMLSetting(GCSettings.ImageFolder, "ImageFolder", sizeof(GCSettings.ImageFolder)); - + // Network Settings loadXMLSetting(GCSettings.smbip, "smbip", sizeof(GCSettings.smbip)); @@ -490,11 +510,14 @@ decodePrefsData () loadXMLSetting(&GCSettings.gbaZoomVert, "gbaZoomVert"); loadXMLSetting(&GCSettings.gbZoomHor, "gbZoomHor"); loadXMLSetting(&GCSettings.gbZoomVert, "gbZoomVert"); + loadXMLSetting(&GCSettings.gbaFixed, "gbaFixed"); + loadXMLSetting(&GCSettings.gbFixed, "gbFixed"); loadXMLSetting(&GCSettings.render, "render"); loadXMLSetting(&GCSettings.scaling, "scaling"); loadXMLSetting(&GCSettings.xshift, "xshift"); loadXMLSetting(&GCSettings.yshift, "yshift"); loadXMLSetting(&GCSettings.colorize, "colorize"); + loadXMLSetting(&GCSettings.gbaFrameskip, "gbaFrameskip"); // Menu Settings @@ -506,11 +529,6 @@ decodePrefsData () loadXMLSetting(&GCSettings.language, "language"); loadXMLSetting(&GCSettings.PreviewImage, "PreviewImage"); - // Emulation Settings - - loadXMLSetting(&GCSettings.BasicPalette, "BasicPalette"); - - // Controller Settings loadXMLSetting(&GCSettings.WiiControls, "WiiControls"); @@ -518,6 +536,14 @@ decodePrefsData () loadXMLController(btnmap[CTRLR_WIIMOTE], "wmpadmap"); loadXMLController(btnmap[CTRLR_CLASSIC], "ccpadmap"); loadXMLController(btnmap[CTRLR_NUNCHUK], "ncpadmap"); + + // Emulation Settings + + loadXMLSetting(&GCSettings.OffsetMinutesUTC, "OffsetMinutesUTC"); + loadXMLSetting(&GCSettings.GBHardware, "GBHardware"); + loadXMLSetting(&GCSettings.SGBBorder, "SGBBorder"); + loadXMLSetting(&GCSettings.BasicPalette, "BasicPalette"); + } mxmlDelete(xml); } @@ -592,9 +618,9 @@ void FixInvalidSettings() GCSettings.SFXVolume = 40; if(GCSettings.language < 0 || GCSettings.language >= LANG_LENGTH) GCSettings.language = LANG_ENGLISH; - if(!(GCSettings.render >= 0 && GCSettings.render < 3)) + if(!(GCSettings.render >= 0 && GCSettings.render < 5)) GCSettings.render = 1; - if(!(GCSettings.videomode >= 0 && GCSettings.videomode < 5)) + if(!(GCSettings.videomode >= 0 && GCSettings.videomode < 7)) GCSettings.videomode = 0; } @@ -613,13 +639,16 @@ DefaultSettings () GCSettings.SaveMethod = DEVICE_AUTO; // Auto, SD, USB, Network (SMB) sprintf (GCSettings.LoadFolder, "%s/roms", APPFOLDER); // Path to game files sprintf (GCSettings.SaveFolder, "%s/saves", APPFOLDER); // Path to save files - sprintf (GCSettings.ScreenshotsFolder, "%s/screenshots", APPFOLDER); // Path to screenshot files + sprintf (GCSettings.CheatFolder, "%s/cheats", APPFOLDER); // Path to cheat files + sprintf (GCSettings.ScreenshotsFolder, "%s/screenshots", APPFOLDER); + sprintf (GCSettings.BorderFolder, "%s/borders", APPFOLDER); sprintf (GCSettings.CoverFolder, "%s/covers", APPFOLDER); // Path to cover files sprintf (GCSettings.ArtworkFolder, "%s/artworks", APPFOLDER); // Path to artwork files sprintf (GCSettings.ImageFolder, "%s/screenshots", APPFOLDER); GCSettings.AutoLoad = 1; GCSettings.AutoSave = 1; + GCSettings.AppendAuto = 1; GCSettings.WiimoteOrientation = 0; @@ -627,6 +656,8 @@ DefaultSettings () GCSettings.gbaZoomVert = 1.0; // GBA vertical zoom level GCSettings.gbZoomHor = 1.0; // GBA horizontal zoom level GCSettings.gbZoomVert = 1.0; // GBA vertical zoom level + GCSettings.gbFixed = 0; // not fixed - use zoom level + GCSettings.gbaFixed = 0; // not fixed - use zoom level GCSettings.videomode = 0; // automatic video mode detection GCSettings.render = 1; // Filtered GCSettings.scaling = 1; // partial stretch @@ -635,6 +666,7 @@ DefaultSettings () GCSettings.xshift = 0; // horizontal video shift GCSettings.yshift = 0; // vertical video shift GCSettings.colorize = 0; // Colorize mono gameboy games + GCSettings.gbaFrameskip = 1; // Turn auto-frameskip on for GBA games GCSettings.WiimoteOrientation = 0; GCSettings.ExitAction = 0; @@ -656,6 +688,9 @@ DefaultSettings () #else GCSettings.language = LANG_ENGLISH; #endif + GCSettings.OffsetMinutesUTC = 0; + GCSettings.GBHardware = 0; + GCSettings.SGBBorder = 0; } diff --git a/source/utils/FreeTypeGX.cpp b/source/utils/FreeTypeGX.cpp index 8c2f936..1fa9306 100644 --- a/source/utils/FreeTypeGX.cpp +++ b/source/utils/FreeTypeGX.cpp @@ -244,14 +244,14 @@ ftgxCharData *FreeTypeGX::cacheGlyphData(wchar_t charCode) textureHeight = adjustTextureHeight(glyphBitmap->rows); this->fontData[charCode] = (ftgxCharData){ - ftSlot->bitmap_left, - ftSlot->advance.x >> 6, - gIndex, + (s16)(ftSlot->bitmap_left), + (u16)(ftSlot->advance.x >> 6), + (u16)(gIndex), textureWidth, textureHeight, - ftSlot->bitmap_top, - ftSlot->bitmap_top, - glyphBitmap->rows - ftSlot->bitmap_top, + (s16)(ftSlot->bitmap_top), + (s16)(ftSlot->bitmap_top), + (s16)(glyphBitmap->rows - ftSlot->bitmap_top), NULL }; this->loadGlyphData(glyphBitmap, &this->fontData[charCode]); diff --git a/source/vba/apu/Gb_Apu_State.cpp b/source/vba/apu/Gb_Apu_State.cpp index 7dedcc3..75c8018 100644 --- a/source/vba/apu/Gb_Apu_State.cpp +++ b/source/vba/apu/Gb_Apu_State.cpp @@ -116,3 +116,4 @@ blargg_err_t Gb_Apu::load_state( gb_apu_state_t const& in ) return 0; } + diff --git a/source/vbagx.cpp b/source/vbagx.cpp index 224a1db..da2af7c 100644 --- a/source/vbagx.cpp +++ b/source/vbagx.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #ifdef HW_RVL #include @@ -77,6 +78,26 @@ static void ExitCleanup() void (*PSOReload) () = (void (*)()) 0x80001800; #endif +void ExitToWiiflow() +{ + ShutoffRumble(); + SavePrefs(SILENT); + if (ROMLoaded && !ConfigRequested && GCSettings.AutoSave == 1) + SaveBatteryOrStateAuto(FILE_SRAM, SILENT); + ExitCleanup(); + + if( !!*(u32*)0x80001800 ) + { + // Were we launched via HBC? (or via wiiflows stub replacement? :P) + exit(1); + } + else + { + // Wii channel support + SYS_ResetSystem( SYS_RETURNTOMENU, 0, 0 ); + } +} + void ExitApp() { #ifdef HW_RVL @@ -379,6 +400,64 @@ int main(int argc, char *argv[]) gameScreenPng = (u8 *)malloc(512*1024); InitGUIThreads(); + bool autoboot = false; + if(argc > 3 && argv[1] != NULL && argv[2] != NULL && argv[3] != NULL) + { + autoboot = true; + ResetBrowser(); + LoadPrefs(); + if(strcasestr(argv[1], "sd:/") != NULL) + { + GCSettings.SaveMethod = DEVICE_SD; + GCSettings.LoadMethod = DEVICE_SD; + } + else + { + GCSettings.SaveMethod = DEVICE_USB; + GCSettings.LoadMethod = DEVICE_USB; + } + SavePrefs(SILENT); + selectLoadedFile = 1; + std::string dir(argv[1]); + dir.assign(&dir[dir.find_last_of(":") + 2]); + char arg_filename[1024]; + strncpy(arg_filename, argv[2], sizeof(arg_filename)); + strncpy(GCSettings.LoadFolder, dir.c_str(), sizeof(GCSettings.LoadFolder)); + OpenGameList(); + strncpy(GCSettings.Exit_Dol_File, argv[3], sizeof(GCSettings.Exit_Dol_File)); + if(argc > 5 && argv[4] != NULL && argv[5] != NULL) + { + sscanf(argv[4], "%08x", &GCSettings.Exit_Channel[0]); + sscanf(argv[5], "%08x", &GCSettings.Exit_Channel[1]); + } + else + { + GCSettings.Exit_Channel[0] = 0x00010008; + GCSettings.Exit_Channel[1] = 0x57494948; + } + if(argc > 6 && argv[6] != NULL) + strncpy(GCSettings.LoaderName, argv[6], sizeof(GCSettings.LoaderName)); + else + snprintf(GCSettings.LoaderName, sizeof(GCSettings.LoaderName), "WiiFlow"); + for(int i = 0; i < browser.numEntries; i++) + { + // Skip it + if (strcmp(browserList[i].filename, ".") == 0 || strcmp(browserList[i].filename, "..") == 0) + continue; + if(strcasestr(browserList[i].filename, arg_filename) != NULL) + { + browser.selIndex = i; + if(IsSz()) + { + BrowserLoadSz(); + browser.selIndex = 1; + } + break; + } + } + BrowserLoadFile(); + } + while(1) // main loop { // go back to checking if devices were inserted/removed @@ -387,13 +466,21 @@ int main(int argc, char *argv[]) SwitchAudioMode(1); - if(!ROMLoaded) - MainMenu(MENU_GAMESELECTION); - else - MainMenu(MENU_GAME); + if(!autoboot) + { + if(!ROMLoaded) + MainMenu(MENU_GAMESELECTION); + else + MainMenu(MENU_GAME); + + ConfigRequested = 0; + ScreenshotRequested = 0; + } + else if(ROMLoaded && autoboot) + autoboot = false; + else + ExitApp(); - ConfigRequested = 0; - ScreenshotRequested = 0; SwitchAudioMode(0); // stop checking if devices were removed/inserted diff --git a/source/vbagx.h b/source/vbagx.h index 988706f..0b59f90 100644 --- a/source/vbagx.h +++ b/source/vbagx.h @@ -16,7 +16,7 @@ #include "utils/FreeTypeGX.h" #define APPNAME "Visual Boy Advance GX" -#define APPVERSION "2.3.5" +#define APPVERSION "2.3.6" #define APPFOLDER "vbagx" #define PREF_FILE_NAME "settings.xml" #define PAL_FILE_NAME "palettes.xml" @@ -68,23 +68,23 @@ enum struct SGCSettings { float gbaZoomHor; // GBA horizontal zoom amount - float gbaZoomVert; // GBA vertical zoom amount - float gbZoomHor; // GB horizontal zoom amount - float gbZoomVert; // GB vertical zoom amount - int gbFixed; - int gbaFixed; + float gbaZoomVert; // GBA vertical zoom amount + float gbZoomHor; // GB horizontal zoom amount + float gbZoomVert; // GB vertical zoom amount + int gbFixed; + int gbaFixed; int AutoLoad; - int AutoSave; - int LoadMethod; // For ROMS: Auto, SD, DVD, USB, Network (SMB) + int AutoSave; + int LoadMethod; // For ROMS: Auto, SD, DVD, USB, Network (SMB) int SaveMethod; // For SRAM, Freeze, Prefs: Auto, SD, USB, SMB - int AppendAuto; // 0 - no, 1 - yes - int videomode; // 0 - automatic, 1 - NTSC (480i), 2 - Progressive (480p), 3 - PAL (50Hz), 4 - PAL (60Hz) - int scaling; // 0 - default, 1 - partial stretch, 2 - stretch to fit, 3 - widescreen correction + int AppendAuto; // 0 - no, 1 - yes + int videomode; // 0 - automatic, 1 - NTSC (480i), 2 - Progressive (480p), 3 - PAL (50Hz), 4 - PAL (60Hz) + int scaling; // 0 - default, 1 - partial stretch, 2 - stretch to fit, 3 - widescreen correction int render; // 0 - original, 1 - filtered, 2 - unfiltered int xshift; // video output shift int yshift; - int colorize; // colorize Mono Gameboy games - int gbaFrameskip; // turn on auto-frameskip for GBA games + int colorize; // colorize Mono Gameboy games + int gbaFrameskip; // turn on auto-frameskip for GBA games int WiiControls; // Match Wii Game int WiimoteOrientation; int ExitAction; @@ -108,6 +108,10 @@ struct SGCSettings char ImageFolder[MAXPATHLEN]; //Saved image folder path char BorderFolder[MAXPATHLEN]; // Path to Super Game Boy border files + char Exit_Dol_File[MAXPATHLEN]; // Exit Path + char LoaderName[20]; // Menu Loader Name + u32 Exit_Channel[2]; // Exit Channel + char smbip[80]; char smbuser[20]; char smbpwd[20];