From 75c0d1ae9606482453260ec7f10cea0f081f638c Mon Sep 17 00:00:00 2001 From: Extrems Date: Sun, 29 Aug 2021 11:20:47 -0400 Subject: [PATCH] Added Wii Remote +Control Pad as analog source. Added AutoLoadSave option. Fixed regression from 03b282c2953407ec0fc566887f25e110b06bdc92. --- gc_input/controller-WiimoteNunchuk.c | 14 +++++- glN64_GX/Textures.cpp | 74 ++++++++++++++-------------- main/main_gc-menu2.cpp | 16 +++--- main/wii64config.h | 11 +++-- menu/FileBrowserFrame.cpp | 6 +-- menu/SettingsFrame.cpp | 58 +++++++++++++++------- 6 files changed, 110 insertions(+), 69 deletions(-) diff --git a/gc_input/controller-WiimoteNunchuk.c b/gc_input/controller-WiimoteNunchuk.c index 7174a0a..67ce43f 100644 --- a/gc_input/controller-WiimoteNunchuk.c +++ b/gc_input/controller-WiimoteNunchuk.c @@ -43,7 +43,7 @@ static float getStickValue(joystick_t* j, int axis, float maxAbsValue){ enum { NUNCHUK_AS_ANALOG, IR_AS_ANALOG, TILT_AS_ANALOG, WHEEL_AS_ANALOG, - NO_ANALOG, + BUTTON_AS_ANALOG, NO_ANALOG, }; enum { @@ -84,7 +84,8 @@ static button_t analog_sources_wm[] = { { 0, TILT_AS_ANALOG, "Tilt" }, { 1, WHEEL_AS_ANALOG, "Wheel" }, { 2, IR_AS_ANALOG, "IR" }, - { 3, NO_ANALOG, "None" }, + { 3, BUTTON_AS_ANALOG, "D-Pad" }, + { 4, NO_ANALOG, "None" }, }; static button_t menu_combos[] = { @@ -147,6 +148,15 @@ static int _GetKeys(int Control, BUTTONS * Keys, controller_config_t* config, } else if(config->analog->mask == WHEEL_AS_ANALOG){ c->X_AXIS = 512 - wpad->accel.y; c->Y_AXIS = wpad->accel.z - 512; + } else if(config->analog->mask == BUTTON_AS_ANALOG){ + if(b & WPAD_BUTTON_DOWN) + c->X_AXIS = +80; + else if(b & WPAD_BUTTON_UP) + c->X_AXIS = -80; + if(b & WPAD_BUTTON_RIGHT) + c->Y_AXIS = +80; + else if(b & WPAD_BUTTON_LEFT) + c->Y_AXIS = -80; } if(config->invertedY) c->Y_AXIS = -c->Y_AXIS; diff --git a/glN64_GX/Textures.cpp b/glN64_GX/Textures.cpp index 0831643..8263cc2 100644 --- a/glN64_GX/Textures.cpp +++ b/glN64_GX/Textures.cpp @@ -383,23 +383,23 @@ const struct { // 4-bit { GXGetI4_IA4, GX_TF_IA4, 1, 4, 8192 }, // RGBA as I { GetNone, GX_TF_I4, 0, 4, 8192 }, // YUV - { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // CI without palette + { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // CI as I (FIXME) { GXGetIA31_IA4, GX_TF_IA4, 1, 4, 8192 }, // IA { GXGetI4_IA4, GX_TF_IA4, 1, 4, 8192 }, // I }, { // 8-bit { GXGetI8_IA8, GX_TF_IA8, 2, 3, 4096 }, // RGBA as I { GetNone, GX_TF_I4, 0, 3, 4096 }, // YUV - { GXGetI8_IA8, GX_TF_IA8, 2, 3, 4096 }, // CI without palette + { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // CI as I (FIXME) { GXGetIA44_IA4, GX_TF_IA4, 1, 3, 4096 }, // IA { GXGetI8_IA8, GX_TF_IA8, 2, 3, 4096 }, // I }, { // 16-bit { GXGetRGBA5551_RGB5A3, GX_TF_RGB5A3, 2, 2, 2048 }, // RGBA { GXGetUYVY8888_RGBA8, GX_TF_RGBA8, 4, 2, 2048 }, // YUV - { GXGetIA88_IA8, GX_TF_IA8, 2, 2, 2048 }, // CI as IA + { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // CI as I (FIXME) { GXGetIA88_IA8, GX_TF_IA8, 2, 2, 2048 }, // IA - { GetNone, GX_TF_I4, 0, 2, 2048 }, // I + { GXGetIA88_IA8, GX_TF_RGBA8, 4, 2, 2048 }, // I }, { // 32-bit { GXGetRGBA8888_RGBA8, GX_TF_RGBA8, 4, 2, 1024 }, // RGBA @@ -411,28 +411,28 @@ const struct }, { // DUMMY { // 4-bit - { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // CI (Banjo-Kazooie uses this, doesn't make sense, but it works...) - { GetNone, GX_TF_I4, 0, 4, 4096 }, // YUV + { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 4, 4096 }, // YUV as CI { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // CI { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // IA as CI { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // I as CI }, { // 8-bit - { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // RGBA - { GetNone, GX_TF_I4, 0, 3, 2048 }, // YUV + { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 3, 2048 }, // YUV as CI { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // CI { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // IA as CI { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // I as CI }, { // 16-bit - { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // RGBA - { GXGetUYVY8888_RGBA8, GX_TF_RGBA8, 4, 2, 2048 }, // YUV - { GetNone, GX_TF_I4, 0, 2, 1024 }, // CI + { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 2, 1024 }, // YUV as CI + { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // CI { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // IA as CI - { GetNone, GX_TF_I4, 0, 2, 1024 }, // I + { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // I as CI }, { // 32-bit - { GXGetRGBA8888_RGBA8, GX_TF_RGBA8, 4, 2, 1024 }, // RGBA + { GetNone, GX_TF_I4, 0, 2, 1024 }, // RGBA { GetNone, GX_TF_I4, 0, 2, 1024 }, // YUV { GetNone, GX_TF_I4, 0, 2, 1024 }, // CI { GetNone, GX_TF_I4, 0, 2, 1024 }, // IA @@ -441,28 +441,28 @@ const struct }, { // G_TT_RGBA16 { // 4-bit - { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // CI (Banjo-Kazooie uses this, doesn't make sense, but it works...) - { GetNone, GX_TF_I4, 0, 4, 4096 }, // YUV + { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 4, 4096 }, // YUV as CI { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // CI { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // IA as CI { GXGetCI4RGBA_RGB5A3, GX_TF_RGB5A3, 2, 4, 4096 }, // I as CI }, { // 8-bit - { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // RGBA - { GetNone, GX_TF_I4, 0, 3, 2048 }, // YUV + { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 3, 2048 }, // YUV as CI { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // CI { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // IA as CI { GXGetCI8RGBA_RGB5A3, GX_TF_RGB5A3, 2, 3, 2048 }, // I as CI }, { // 16-bit - { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // RGBA - { GXGetUYVY8888_RGBA8, GX_TF_RGBA8, 4, 2, 2048 }, // YUV - { GetNone, GX_TF_I4, 0, 2, 1024 }, // CI + { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 2, 1024 }, // YUV as CI + { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // CI { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // IA as CI - { GetNone, GX_TF_I4, 0, 2, 1024 }, // I + { GXGetCI16RGBA_RGB5A3, GX_TF_RGB5A3, 2, 2, 1024 }, // I as CI }, { // 32-bit - { GXGetRGBA8888_RGBA8, GX_TF_RGBA8, 4, 2, 1024 }, // RGBA + { GetNone, GX_TF_I4, 0, 2, 1024 }, // RGBA { GetNone, GX_TF_I4, 0, 2, 1024 }, // YUV { GetNone, GX_TF_I4, 0, 2, 1024 }, // CI { GetNone, GX_TF_I4, 0, 2, 1024 }, // IA @@ -471,28 +471,28 @@ const struct }, { // G_TT_IA16 { // 4-bit - { GXGetCI4IA_IA8, GX_TF_IA8, 2, 4, 4096 }, // IA - { GetNone, GX_TF_I4, 0, 4, 4096 }, // YUV + { GXGetCI4IA_IA8, GX_TF_IA8, 2, 4, 4096 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 4, 4096 }, // YUV as CI { GXGetCI4IA_IA8, GX_TF_IA8, 2, 4, 4096 }, // CI - { GXGetCI4IA_IA8, GX_TF_IA8, 2, 4, 4096 }, // IA - { GXGetCI4IA_IA8, GX_TF_IA8, 2, 4, 4096 }, // I + { GXGetCI4IA_IA8, GX_TF_IA8, 2, 4, 4096 }, // IA as CI + { GXGetCI4IA_IA8, GX_TF_IA8, 2, 4, 4096 }, // I as CI }, { // 8-bit - { GXGetCI8IA_IA8, GX_TF_IA8, 2, 3, 2048 }, // RGBA - { GetNone, GX_TF_I4, 0, 3, 2048 }, // YUV + { GXGetCI8IA_IA8, GX_TF_IA8, 2, 3, 2048 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 3, 2048 }, // YUV as CI { GXGetCI8IA_IA8, GX_TF_IA8, 2, 3, 2048 }, // CI - { GXGetCI8IA_IA8, GX_TF_IA8, 2, 3, 2048 }, // IA - { GXGetCI8IA_IA8, GX_TF_IA8, 2, 3, 2048 }, // I + { GXGetCI8IA_IA8, GX_TF_IA8, 2, 3, 2048 }, // IA as CI + { GXGetCI8IA_IA8, GX_TF_IA8, 2, 3, 2048 }, // I as CI }, { // 16-bit - { GXGetCI16IA_IA8, GX_TF_IA8, 2, 2, 1024 }, // RGBA - { GXGetUYVY8888_RGBA8, GX_TF_RGBA8, 4, 2, 2048 }, // YUV - { GetNone, GX_TF_I4, 0, 2, 1024 }, // CI - { GXGetCI16IA_IA8, GX_TF_IA8, 2, 2, 1024 }, // IA - { GetNone, GX_TF_I4, 0, 2, 1024 }, // I + { GXGetCI16IA_IA8, GX_TF_IA8, 2, 2, 1024 }, // RGBA as CI + { GetNone, GX_TF_I4, 0, 2, 1024 }, // YUV as CI + { GXGetCI16IA_IA8, GX_TF_IA8, 2, 2, 1024 }, // CI + { GXGetCI16IA_IA8, GX_TF_IA8, 2, 2, 1024 }, // IA as CI + { GXGetCI16IA_IA8, GX_TF_IA8, 2, 2, 1024 }, // I as CI }, { // 32-bit - { GXGetRGBA8888_RGBA8, GX_TF_RGBA8, 4, 2, 1024 }, // RGBA + { GetNone, GX_TF_I4, 0, 2, 1024 }, // RGBA { GetNone, GX_TF_I4, 0, 2, 1024 }, // YUV { GetNone, GX_TF_I4, 0, 2, 1024 }, // CI { GetNone, GX_TF_I4, 0, 2, 1024 }, // IA @@ -1520,7 +1520,7 @@ u32 TextureCache_CalculateCRC( u32 t, u32 width, u32 height ) crc = Hash_Calculate( crc, src, bpl ); } - if (gDP.otherMode.textureLUT != G_TT_NONE) + if ((gDP.otherMode.textureLUT != G_TT_NONE) || (gSP.textureTile[t]->format == G_IM_FMT_CI)) { if (gSP.textureTile[t]->size == G_IM_SIZ_4b) crc = Hash_Calculate( crc, &TMEM[0x100 + (gSP.textureTile[t]->palette << 4)], 128 ); diff --git a/main/main_gc-menu2.cpp b/main/main_gc-menu2.cpp index 26b71f2..5224e9b 100644 --- a/main/main_gc-menu2.cpp +++ b/main/main_gc-menu2.cpp @@ -115,11 +115,11 @@ char renderCpuFramebuffer; extern timers Timers; char menuActive; char skipMenu; - char saveEnabled; char creditsScrolling; char shutdown = 0; char nativeSaveDevice; char saveStateDevice; + char autoLoadSave; char autoSave; char screenMode = 0; char videoFormat; @@ -164,6 +164,7 @@ static struct { { "CountPerOp", ((char*)&count_per_op)+3, COUNT_PER_OP_1, COUNT_PER_OP_3 }, { "NativeDevice", &nativeSaveDevice, NATIVESAVEDEVICE_SD, NATIVESAVEDEVICE_CARDB }, { "StatesDevice", &saveStateDevice, SAVESTATEDEVICE_SD, SAVESTATEDEVICE_FAT }, + { "AutoLoadSave", &autoLoadSave, AUTOLOADSAVE_DISABLE, AUTOLOADSAVE_ENABLE }, { "AutoSave", &autoSave, AUTOSAVE_DISABLE, AUTOSAVE_ENABLE }, { "LimitVIs", &Timers.limitVIs, LIMITVIS_NONE, LIMITVIS_WAIT_FOR_FRAME }, { "PollRate", &pollRate, POLLRATE_VSYNC, POLLRATE_11MS }, @@ -251,6 +252,7 @@ int main(int argc, char* argv[]){ printToScreen = 1; // Show DEBUG text on screen printToSD = 0; // Disable SD logging Timers.limitVIs = 1; + autoLoadSave = 1; // Auto Load Save File autoSave = 1; // Auto Save Game dynacore = 1; // Dynarec #ifndef HW_RVL @@ -438,7 +440,7 @@ extern BOOL mempakWritten; extern BOOL sramWritten; extern BOOL flashramWritten; BOOL hasLoadedROM = FALSE; -int autoSaveLoaded = NATIVESAVEDEVICE_NONE; +int autoLoadedSave = NATIVESAVEDEVICE_NONE; int loadROM(fileBrowser_file* rom){ int ret = 0; @@ -506,7 +508,7 @@ int loadROM(fileBrowser_file* rom){ cpu_init(); - if(autoSave==AUTOSAVE_ENABLE) { + if(autoLoadSave==AUTOLOADSAVE_ENABLE) { switch (nativeSaveDevice) { case NATIVESAVEDEVICE_SD: @@ -541,19 +543,19 @@ int loadROM(fileBrowser_file* rom){ { case NATIVESAVEDEVICE_SD: // if (result) menu::MessageBox::getInstance().setMessage("Found & loaded save from SD card"); - if (result) autoSaveLoaded = NATIVESAVEDEVICE_SD; + if (result) autoLoadedSave = NATIVESAVEDEVICE_SD; break; case NATIVESAVEDEVICE_FAT: // if (result) menu::MessageBox::getInstance().setMessage("Found & loaded save from FAT device"); - if (result) autoSaveLoaded = NATIVESAVEDEVICE_FAT; + if (result) autoLoadedSave = NATIVESAVEDEVICE_FAT; break; case NATIVESAVEDEVICE_CARDA: // if (result) menu::MessageBox::getInstance().setMessage("Found & loaded save from Memory Card A"); - if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDA; + if (result) autoLoadedSave = NATIVESAVEDEVICE_CARDA; break; case NATIVESAVEDEVICE_CARDB: // if (result) menu::MessageBox::getInstance().setMessage("Found & loaded save from Memory Card B"); - if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDB; + if (result) autoLoadedSave = NATIVESAVEDEVICE_CARDB; break; } } diff --git a/main/wii64config.h b/main/wii64config.h index b24a556..3545a3d 100644 --- a/main/wii64config.h +++ b/main/wii64config.h @@ -77,8 +77,6 @@ enum limitVIs LIMITVIS_WAIT_FOR_FRAME }; -extern char saveEnabled; //??? - extern char nativeSaveDevice; enum nativeSaveDevice { @@ -96,7 +94,14 @@ enum saveStateDevice SAVESTATEDEVICE_FAT }; -extern char autoSave; //TODO: Use me +extern char autoLoadSave; +enum autoLoadSave +{ + AUTOLOADSAVE_DISABLE=0, + AUTOLOADSAVE_ENABLE +}; + +extern char autoSave; enum autoSave { AUTOSAVE_DISABLE=0, diff --git a/menu/FileBrowserFrame.cpp b/menu/FileBrowserFrame.cpp index c9a8e9b..e5a7d17 100644 --- a/menu/FileBrowserFrame.cpp +++ b/menu/FileBrowserFrame.cpp @@ -449,7 +449,7 @@ void fileBrowserFrame_FillPage() extern BOOL hasLoadedROM; extern int rom_length; -extern int autoSaveLoaded; +extern int autoLoadedSave; void Func_PlayGame(); void Func_SetPlayGame(); @@ -493,7 +493,7 @@ void fileBrowserFrame_LoadFile(int i) countrycodestring(ROM_HEADER.Country_code&0xFF, buffer2); sprintf(buffer,"Country: %s\n",buffer2); strcat(RomInfo,buffer); - switch (autoSaveLoaded) + switch (autoLoadedSave) { case NATIVESAVEDEVICE_NONE: break; @@ -510,7 +510,7 @@ void fileBrowserFrame_LoadFile(int i) strcat(RomInfo,"\nFound & loaded save from Memory Card B\n"); break; } - autoSaveLoaded = NATIVESAVEDEVICE_NONE; + autoLoadedSave = NATIVESAVEDEVICE_NONE; menu::MessageBox::getInstance().setMessage(RomInfo); pMenuContext->setActiveFrame(MenuContext::FRAME_MAIN); diff --git a/menu/SettingsFrame.cpp b/menu/SettingsFrame.cpp index b58efb9..7906369 100644 --- a/menu/SettingsFrame.cpp +++ b/menu/SettingsFrame.cpp @@ -85,21 +85,23 @@ void Func_SpeedLimitDl(); void Func_ScalePitchYes(); void Func_ScalePitchNo(); -void Func_AutoSaveNativeYes(); -void Func_AutoSaveNativeNo(); +void Func_AutoLoadSaveYes(); +void Func_AutoLoadSaveNo(); +void Func_AutoSaveYes(); +void Func_AutoSaveNo(); void Func_CopySaves(); void Func_DeleteSaves(); void Func_ReturnFromSettingsFrame(); -#define NUM_FRAME_BUTTONS 46 +#define NUM_FRAME_BUTTONS 48 #define NUM_TAB_BUTTONS 5 #define FRAME_BUTTONS settingsFrameButtons #define FRAME_STRINGS settingsFrameStrings -#define NUM_FRAME_TEXTBOXES 16 +#define NUM_FRAME_TEXTBOXES 17 #define FRAME_TEXTBOXES settingsFrameTextBoxes -static char FRAME_STRINGS[45][23] = +static char FRAME_STRINGS[46][23] = { "General", "Video", "Input", @@ -147,6 +149,7 @@ static char FRAME_STRINGS[45][23] = "VI", "DL", //Strings for Saves tab [42] + "Auto Load Native Saves", "Auto Save Native Saves", "Copy Saves", "Delete Saves"}; @@ -216,10 +219,12 @@ struct ButtonInfo { NULL, BTN_A_SEL, FRAME_STRINGS[38], 345.0, 240.0, 75.0, 56.0, 38, 3, 41, 41, Func_ScalePitchYes, Func_ReturnFromSettingsFrame }, // Scale Pitch: Yes { NULL, BTN_A_SEL, FRAME_STRINGS[39], 440.0, 240.0, 75.0, 56.0, 39, 3, 40, 40, Func_ScalePitchNo, Func_ReturnFromSettingsFrame }, // Scale Pitch: No //Buttons for Saves Tab (starts at button[42]) - { NULL, BTN_A_SEL, FRAME_STRINGS[38], 375.0, 100.0, 75.0, 56.0, 4, 44, 43, 43, Func_AutoSaveNativeYes, Func_ReturnFromSettingsFrame }, // Auto Save Native: Yes - { NULL, BTN_A_SEL, FRAME_STRINGS[39], 470.0, 100.0, 75.0, 56.0, 4, 44, 42, 42, Func_AutoSaveNativeNo, Func_ReturnFromSettingsFrame }, // Auto Save Native: No - { NULL, BTN_A_NRM, FRAME_STRINGS[43], 365.0, 170.0, 190.0, 56.0, 42, 45, -1, -1, Func_CopySaves, Func_ReturnFromSettingsFrame }, // Copy Saves - { NULL, BTN_A_NRM, FRAME_STRINGS[44], 365.0, 240.0, 190.0, 56.0, 44, 4, -1, -1, Func_DeleteSaves, Func_ReturnFromSettingsFrame }, // Delete Saves + { NULL, BTN_A_SEL, FRAME_STRINGS[38], 375.0, 100.0, 75.0, 56.0, 4, 44, 43, 43, Func_AutoLoadSaveYes, Func_ReturnFromSettingsFrame }, // Auto Load Native Saves: Yes + { NULL, BTN_A_SEL, FRAME_STRINGS[39], 470.0, 100.0, 75.0, 56.0, 4, 45, 42, 42, Func_AutoLoadSaveNo, Func_ReturnFromSettingsFrame }, // Auto Load Native Saves: No + { NULL, BTN_A_SEL, FRAME_STRINGS[38], 375.0, 170.0, 75.0, 56.0, 42, 46, 45, 45, Func_AutoSaveYes, Func_ReturnFromSettingsFrame }, // Auto Save Native Saves: Yes + { NULL, BTN_A_SEL, FRAME_STRINGS[39], 470.0, 170.0, 75.0, 56.0, 43, 46, 44, 44, Func_AutoSaveNo, Func_ReturnFromSettingsFrame }, // Auto Save Native Saves: No + { NULL, BTN_A_NRM, FRAME_STRINGS[44], 365.0, 240.0, 190.0, 56.0, 44, 47, -1, -1, Func_CopySaves, Func_ReturnFromSettingsFrame }, // Copy Saves + { NULL, BTN_A_NRM, FRAME_STRINGS[45], 365.0, 310.0, 190.0, 56.0, 46, 4, -1, -1, Func_DeleteSaves, Func_ReturnFromSettingsFrame }, // Delete Saves }; struct TextBoxInfo @@ -252,7 +257,8 @@ struct TextBoxInfo { NULL, FRAME_STRINGS[36], 150.0, 198.0, 1.0, true }, // Speed Limit: Off/VI/DL { NULL, FRAME_STRINGS[37], 210.0, 268.0, 1.0, true }, // Scale Pitch: Yes/No //TextBoxes for Saves Tab (starts at textBox[14]) - { NULL, FRAME_STRINGS[42], 200.0, 128.0, 1.0, true }, // Auto Save Native Save: Yes/No + { NULL, FRAME_STRINGS[42], 200.0, 128.0, 1.0, true }, // Auto Load Native Saves: Yes/No + { NULL, FRAME_STRINGS[43], 200.0, 198.0, 1.0, true }, // Auto Save Native Saves: Yes/No }; SettingsFrame::SettingsFrame() @@ -427,14 +433,16 @@ void SettingsFrame::activateSubmenu(int submenu) { FRAME_BUTTONS[i].button->setVisible(true); FRAME_BUTTONS[i].button->setNextFocus(menu::Focus::DIRECTION_DOWN, FRAME_BUTTONS[42].button); - FRAME_BUTTONS[i].button->setNextFocus(menu::Focus::DIRECTION_UP, FRAME_BUTTONS[45].button); + FRAME_BUTTONS[i].button->setNextFocus(menu::Focus::DIRECTION_UP, FRAME_BUTTONS[47].button); FRAME_BUTTONS[i].button->setActive(true); } - for (int i = 15; i < 16; i++) + for (int i = 15; i < NUM_FRAME_TEXTBOXES; i++) FRAME_TEXTBOXES[i].textBox->setVisible(true); FRAME_BUTTONS[4].button->setSelected(true); - if (autoSave == AUTOSAVE_ENABLE) FRAME_BUTTONS[42].button->setSelected(true); - else FRAME_BUTTONS[43].button->setSelected(true); + if (autoLoadSave == AUTOLOADSAVE_ENABLE) FRAME_BUTTONS[42].button->setSelected(true); + else FRAME_BUTTONS[43].button->setSelected(true); + if (autoSave == AUTOSAVE_ENABLE) FRAME_BUTTONS[44].button->setSelected(true); + else FRAME_BUTTONS[45].button->setSelected(true); for (int i = 42; i < NUM_FRAME_BUTTONS; i++) { FRAME_BUTTONS[i].button->setVisible(true); @@ -1068,19 +1076,35 @@ void Func_ScalePitchNo() scalePitch = SCALEPITCH_DISABLE; } -void Func_AutoSaveNativeYes() +void Func_AutoLoadSaveYes() { for (int i = 42; i <= 43; i++) FRAME_BUTTONS[i].button->setSelected(false); FRAME_BUTTONS[42].button->setSelected(true); - autoSave = AUTOSAVE_ENABLE; + autoLoadSave = AUTOLOADSAVE_ENABLE; } -void Func_AutoSaveNativeNo() +void Func_AutoLoadSaveNo() { for (int i = 42; i <= 43; i++) FRAME_BUTTONS[i].button->setSelected(false); FRAME_BUTTONS[43].button->setSelected(true); + autoLoadSave = AUTOLOADSAVE_DISABLE; +} + +void Func_AutoSaveYes() +{ + for (int i = 44; i <= 45; i++) + FRAME_BUTTONS[i].button->setSelected(false); + FRAME_BUTTONS[44].button->setSelected(true); + autoSave = AUTOSAVE_ENABLE; +} + +void Func_AutoSaveNo() +{ + for (int i = 44; i <= 45; i++) + FRAME_BUTTONS[i].button->setSelected(false); + FRAME_BUTTONS[45].button->setSelected(true); autoSave = AUTOSAVE_DISABLE; }