aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/qt_sdl/Config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/qt_sdl/Config.cpp')
-rw-r--r--src/frontend/qt_sdl/Config.cpp378
1 files changed, 378 insertions, 0 deletions
diff --git a/src/frontend/qt_sdl/Config.cpp b/src/frontend/qt_sdl/Config.cpp
new file mode 100644
index 0000000..8c3690b
--- /dev/null
+++ b/src/frontend/qt_sdl/Config.cpp
@@ -0,0 +1,378 @@
+/*
+ Copyright 2016-2021 Arisotura
+
+ This file is part of melonDS.
+
+ melonDS is free software: you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ melonDS is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with melonDS. If not, see http://www.gnu.org/licenses/.
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "Platform.h"
+#include "Config.h"
+
+
+namespace Config
+{
+
+int KeyMapping[12];
+int JoyMapping[12];
+
+int HKKeyMapping[HK_MAX];
+int HKJoyMapping[HK_MAX];
+
+int JoystickID;
+
+int WindowWidth;
+int WindowHeight;
+int WindowMaximized;
+
+int ScreenRotation;
+int ScreenGap;
+int ScreenLayout;
+int ScreenSwap;
+int ScreenSizing;
+int IntegerScaling;
+int ScreenAspectTop;
+int ScreenAspectBot;
+int ScreenFilter;
+
+int ScreenUseGL;
+int ScreenVSync;
+int ScreenVSyncInterval;
+
+int _3DRenderer;
+int Threaded3D;
+
+int GL_ScaleFactor;
+int GL_BetterPolygons;
+
+int LimitFPS;
+int AudioSync;
+int ShowOSD;
+
+int ConsoleType;
+int DirectBoot;
+
+#ifdef JIT_ENABLED
+int JIT_Enable = false;
+int JIT_MaxBlockSize = 32;
+int JIT_BranchOptimisations = true;
+int JIT_LiteralOptimisations = true;
+int JIT_FastMemory = true;
+#endif
+
+int ExternalBIOSEnable;
+
+char BIOS9Path[1024];
+char BIOS7Path[1024];
+char FirmwarePath[1024];
+
+char DSiBIOS9Path[1024];
+char DSiBIOS7Path[1024];
+char DSiFirmwarePath[1024];
+char DSiNANDPath[1024];
+
+int DLDIEnable;
+char DLDISDPath[1024];
+int DLDISize;
+int DLDIReadOnly;
+int DLDIFolderSync;
+char DLDIFolderPath[1024];
+
+int DSiSDEnable;
+char DSiSDPath[1024];
+int DSiSDSize;
+int DSiSDReadOnly;
+int DSiSDFolderSync;
+char DSiSDFolderPath[1024];
+
+int RandomizeMAC;
+int FirmwareOverrideSettings;
+char FirmwareUsername[64];
+int FirmwareLanguage;
+int FirmwareBirthdayMonth;
+int FirmwareBirthdayDay;
+int FirmwareFavouriteColour;
+char FirmwareMessage[1024];
+
+int SocketBindAnyAddr;
+char LANDevice[128];
+int DirectLAN;
+
+int SavestateRelocSRAM;
+
+int AudioInterp;
+int AudioBitrate;
+int AudioVolume;
+int MicInputType;
+char MicWavPath[1024];
+
+char LastROMFolder[1024];
+
+char RecentROMList[10][1024];
+
+int EnableCheats;
+
+int MouseHide;
+int MouseHideSeconds;
+
+int PauseLostFocus;
+
+
+const char* kConfigFile = "melonDS.ini";
+
+ConfigEntry ConfigFile[] =
+{
+ {"Key_A", 0, &KeyMapping[0], -1, NULL, 0},
+ {"Key_B", 0, &KeyMapping[1], -1, NULL, 0},
+ {"Key_Select", 0, &KeyMapping[2], -1, NULL, 0},
+ {"Key_Start", 0, &KeyMapping[3], -1, NULL, 0},
+ {"Key_Right", 0, &KeyMapping[4], -1, NULL, 0},
+ {"Key_Left", 0, &KeyMapping[5], -1, NULL, 0},
+ {"Key_Up", 0, &KeyMapping[6], -1, NULL, 0},
+ {"Key_Down", 0, &KeyMapping[7], -1, NULL, 0},
+ {"Key_R", 0, &KeyMapping[8], -1, NULL, 0},
+ {"Key_L", 0, &KeyMapping[9], -1, NULL, 0},
+ {"Key_X", 0, &KeyMapping[10], -1, NULL, 0},
+ {"Key_Y", 0, &KeyMapping[11], -1, NULL, 0},
+
+ {"Joy_A", 0, &JoyMapping[0], -1, NULL, 0},
+ {"Joy_B", 0, &JoyMapping[1], -1, NULL, 0},
+ {"Joy_Select", 0, &JoyMapping[2], -1, NULL, 0},
+ {"Joy_Start", 0, &JoyMapping[3], -1, NULL, 0},
+ {"Joy_Right", 0, &JoyMapping[4], -1, NULL, 0},
+ {"Joy_Left", 0, &JoyMapping[5], -1, NULL, 0},
+ {"Joy_Up", 0, &JoyMapping[6], -1, NULL, 0},
+ {"Joy_Down", 0, &JoyMapping[7], -1, NULL, 0},
+ {"Joy_R", 0, &JoyMapping[8], -1, NULL, 0},
+ {"Joy_L", 0, &JoyMapping[9], -1, NULL, 0},
+ {"Joy_X", 0, &JoyMapping[10], -1, NULL, 0},
+ {"Joy_Y", 0, &JoyMapping[11], -1, NULL, 0},
+
+ {"HKKey_Lid", 0, &HKKeyMapping[HK_Lid], -1, NULL, 0},
+ {"HKKey_Mic", 0, &HKKeyMapping[HK_Mic], -1, NULL, 0},
+ {"HKKey_Pause", 0, &HKKeyMapping[HK_Pause], -1, NULL, 0},
+ {"HKKey_Reset", 0, &HKKeyMapping[HK_Reset], -1, NULL, 0},
+ {"HKKey_FastForward", 0, &HKKeyMapping[HK_FastForward], -1, NULL, 0},
+ {"HKKey_FastForwardToggle", 0, &HKKeyMapping[HK_FastForwardToggle], -1, NULL, 0},
+ {"HKKey_FullscreenToggle", 0, &HKKeyMapping[HK_FullscreenToggle], -1, NULL, 0},
+ {"HKKey_SwapScreens", 0, &HKKeyMapping[HK_SwapScreens], -1, NULL, 0},
+ {"HKKey_SolarSensorDecrease", 0, &HKKeyMapping[HK_SolarSensorDecrease], -1, NULL, 0},
+ {"HKKey_SolarSensorIncrease", 0, &HKKeyMapping[HK_SolarSensorIncrease], -1, NULL, 0},
+ {"HKKey_FrameStep", 0, &HKKeyMapping[HK_FrameStep], -1, NULL, 0},
+
+ {"HKJoy_Lid", 0, &HKJoyMapping[HK_Lid], -1, NULL, 0},
+ {"HKJoy_Mic", 0, &HKJoyMapping[HK_Mic], -1, NULL, 0},
+ {"HKJoy_Pause", 0, &HKJoyMapping[HK_Pause], -1, NULL, 0},
+ {"HKJoy_Reset", 0, &HKJoyMapping[HK_Reset], -1, NULL, 0},
+ {"HKJoy_FastForward", 0, &HKJoyMapping[HK_FastForward], -1, NULL, 0},
+ {"HKJoy_FastForwardToggle", 0, &HKJoyMapping[HK_FastForwardToggle], -1, NULL, 0},
+ {"HKJoy_FullscreenToggle", 0, &HKJoyMapping[HK_FullscreenToggle], -1, NULL, 0},
+ {"HKJoy_SwapScreens", 0, &HKJoyMapping[HK_SwapScreens], -1, NULL, 0},
+ {"HKJoy_SolarSensorDecrease", 0, &HKJoyMapping[HK_SolarSensorDecrease], -1, NULL, 0},
+ {"HKJoy_SolarSensorIncrease", 0, &HKJoyMapping[HK_SolarSensorIncrease], -1, NULL, 0},
+ {"HKJoy_FrameStep", 0, &HKJoyMapping[HK_FrameStep], -1, NULL, 0},
+
+ {"JoystickID", 0, &JoystickID, 0, NULL, 0},
+
+ {"WindowWidth", 0, &WindowWidth, 256, NULL, 0},
+ {"WindowHeight", 0, &WindowHeight, 384, NULL, 0},
+ {"WindowMax", 0, &WindowMaximized, 0, NULL, 0},
+
+ {"ScreenRotation", 0, &ScreenRotation, 0, NULL, 0},
+ {"ScreenGap", 0, &ScreenGap, 0, NULL, 0},
+ {"ScreenLayout", 0, &ScreenLayout, 0, NULL, 0},
+ {"ScreenSwap", 0, &ScreenSwap, 0, NULL, 0},
+ {"ScreenSizing", 0, &ScreenSizing, 0, NULL, 0},
+ {"IntegerScaling", 0, &IntegerScaling, 0, NULL, 0},
+ {"ScreenAspectTop",0, &ScreenAspectTop,0, NULL, 0},
+ {"ScreenAspectBot",0, &ScreenAspectBot,0, NULL, 0},
+ {"ScreenFilter", 0, &ScreenFilter, 1, NULL, 0},
+
+ {"ScreenUseGL", 0, &ScreenUseGL, 0, NULL, 0},
+ {"ScreenVSync", 0, &ScreenVSync, 0, NULL, 0},
+ {"ScreenVSyncInterval", 0, &ScreenVSyncInterval, 1, NULL, 0},
+
+ {"3DRenderer", 0, &_3DRenderer, 0, NULL, 0},
+ {"Threaded3D", 0, &Threaded3D, 1, NULL, 0},
+
+ {"GL_ScaleFactor", 0, &GL_ScaleFactor, 1, NULL, 0},
+ {"GL_BetterPolygons", 0, &GL_BetterPolygons, 0, NULL, 0},
+
+ {"LimitFPS", 0, &LimitFPS, 1, NULL, 0},
+ {"AudioSync", 0, &AudioSync, 0, NULL, 0},
+ {"ShowOSD", 0, &ShowOSD, 1, NULL, 0},
+
+ {"ConsoleType", 0, &ConsoleType, 0, NULL, 0},
+ {"DirectBoot", 0, &DirectBoot, 1, NULL, 0},
+
+#ifdef JIT_ENABLED
+ {"JIT_Enable", 0, &JIT_Enable, 0, NULL, 0},
+ {"JIT_MaxBlockSize", 0, &JIT_MaxBlockSize, 32, NULL, 0},
+ {"JIT_BranchOptimisations", 0, &JIT_BranchOptimisations, 1, NULL, 0},
+ {"JIT_LiteralOptimisations", 0, &JIT_LiteralOptimisations, 1, NULL, 0},
+ #ifdef __APPLE__
+ {"JIT_FastMemory", 0, &JIT_FastMemory, 0, NULL, 0},
+ #else
+ {"JIT_FastMemory", 0, &JIT_FastMemory, 1, NULL, 0},
+ #endif
+#endif
+
+ {"ExternalBIOSEnable", 0, &ExternalBIOSEnable, 0, NULL, 0},
+
+ {"BIOS9Path", 1, BIOS9Path, 0, "", 1023},
+ {"BIOS7Path", 1, BIOS7Path, 0, "", 1023},
+ {"FirmwarePath", 1, FirmwarePath, 0, "", 1023},
+
+ {"DSiBIOS9Path", 1, DSiBIOS9Path, 0, "", 1023},
+ {"DSiBIOS7Path", 1, DSiBIOS7Path, 0, "", 1023},
+ {"DSiFirmwarePath", 1, DSiFirmwarePath, 0, "", 1023},
+ {"DSiNANDPath", 1, DSiNANDPath, 0, "", 1023},
+
+ {"DLDIEnable", 0, &DLDIEnable, 0, NULL, 0},
+ {"DLDISDPath", 1, DLDISDPath, 0, "dldi.bin", 1023},
+ {"DLDISize", 0, &DLDISize, 0, NULL, 0},
+ {"DLDIReadOnly", 0, &DLDIReadOnly, 0, NULL, 0},
+ {"DLDIFolderSync", 0, &DLDIFolderSync, 0, NULL, 0},
+ {"DLDIFolderPath", 1, DLDIFolderPath, 0, "", 1023},
+
+ {"DSiSDEnable", 0, &DSiSDEnable, 0, NULL, 0},
+ {"DSiSDPath", 1, DSiSDPath, 0, "dsisd.bin", 1023},
+ {"DSiSDSize", 0, &DSiSDSize, 0, NULL, 0},
+ {"DSiSDReadOnly", 0, &DSiSDReadOnly, 0, NULL, 0},
+ {"DSiSDFolderSync", 0, &DSiSDFolderSync, 0, NULL, 0},
+ {"DSiSDFolderPath", 1, DSiSDFolderPath, 0, "", 1023},
+
+ {"RandomizeMAC", 0, &RandomizeMAC, 0, NULL, 0},
+ {"FirmwareOverrideSettings", 0, &FirmwareOverrideSettings, false, NULL, 0},
+ {"FirmwareUsername", 1, FirmwareUsername, 0, "melonDS", 63},
+ {"FirmwareLanguage", 0, &FirmwareLanguage, 1, NULL, 0},
+ {"FirmwareBirthdayMonth", 0, &FirmwareBirthdayMonth, 0, NULL, 0},
+ {"FirmwareBirthdayDay", 0, &FirmwareBirthdayDay, 0, NULL, 0},
+ {"FirmwareFavouriteColour", 0, &FirmwareFavouriteColour, 0, NULL, 0},
+ {"FirmwareMessage", 1, FirmwareMessage, 0, "", 1023},
+
+ {"SockBindAnyAddr", 0, &SocketBindAnyAddr, 0, NULL, 0},
+ {"LANDevice", 1, LANDevice, 0, "", 127},
+ {"DirectLAN", 0, &DirectLAN, 0, NULL, 0},
+
+ {"SavStaRelocSRAM", 0, &SavestateRelocSRAM, 0, NULL, 0},
+
+ {"AudioInterp", 0, &AudioInterp, 0, NULL, 0},
+ {"AudioBitrate", 0, &AudioBitrate, 0, NULL, 0},
+ {"AudioVolume", 0, &AudioVolume, 256, NULL, 0},
+ {"MicInputType", 0, &MicInputType, 1, NULL, 0},
+ {"MicWavPath", 1, MicWavPath, 0, "", 1023},
+
+ {"LastROMFolder", 1, LastROMFolder, 0, "", 1023},
+
+ {"RecentROM_0", 1, RecentROMList[0], 0, "", 1023},
+ {"RecentROM_1", 1, RecentROMList[1], 0, "", 1023},
+ {"RecentROM_2", 1, RecentROMList[2], 0, "", 1023},
+ {"RecentROM_3", 1, RecentROMList[3], 0, "", 1023},
+ {"RecentROM_4", 1, RecentROMList[4], 0, "", 1023},
+ {"RecentROM_5", 1, RecentROMList[5], 0, "", 1023},
+ {"RecentROM_6", 1, RecentROMList[6], 0, "", 1023},
+ {"RecentROM_7", 1, RecentROMList[7], 0, "", 1023},
+ {"RecentROM_8", 1, RecentROMList[8], 0, "", 1023},
+ {"RecentROM_9", 1, RecentROMList[9], 0, "", 1023},
+
+ {"EnableCheats", 0, &EnableCheats, 0, NULL, 0},
+
+ {"MouseHide", 0, &MouseHide, 0, NULL, 0},
+ {"MouseHideSeconds", 0, &MouseHideSeconds, 5, NULL, 0},
+ {"PauseLostFocus", 0, &PauseLostFocus, 0, NULL, 0},
+
+ {"", -1, NULL, 0, NULL, 0}
+};
+
+
+void Load()
+{
+ ConfigEntry* entry = &ConfigFile[0];
+ for (;;)
+ {
+ if (!entry->Value) break;
+
+ if (entry->Type == 0)
+ *(int*)entry->Value = entry->DefaultInt;
+ else
+ {
+ strncpy((char*)entry->Value, entry->DefaultStr, entry->StrLength);
+ ((char*)entry->Value)[entry->StrLength] = '\0';
+ }
+
+ entry++;
+ }
+
+ FILE* f = Platform::OpenLocalFile(kConfigFile, "r");
+ if (!f) return;
+
+ char linebuf[1024];
+ char entryname[32];
+ char entryval[1024];
+ while (!feof(f))
+ {
+ if (fgets(linebuf, 1024, f) == nullptr)
+ break;
+
+ int ret = sscanf(linebuf, "%31[A-Za-z_0-9]=%[^\t\r\n]", entryname, entryval);
+ entryname[31] = '\0';
+ if (ret < 2) continue;
+
+ ConfigEntry* entry = &ConfigFile[0];
+ for (;;)
+ {
+ if (!entry->Value) break;
+
+ if (!strncmp(entry->Name, entryname, 32))
+ {
+ if (entry->Type == 0)
+ *(int*)entry->Value = strtol(entryval, NULL, 10);
+ else
+ strncpy((char*)entry->Value, entryval, entry->StrLength);
+
+ break;
+ }
+
+ entry++;
+ }
+ }
+
+ fclose(f);
+}
+
+void Save()
+{
+ FILE* f = Platform::OpenLocalFile(kConfigFile, "w");
+ if (!f) return;
+
+ ConfigEntry* entry = &ConfigFile[0];
+ for (;;)
+ {
+ if (!entry->Value) break;
+
+ if (entry->Type == 0)
+ fprintf(f, "%s=%d\r\n", entry->Name, *(int*)entry->Value);
+ else
+ fprintf(f, "%s=%s\r\n", entry->Name, (char*)entry->Value);
+
+ entry++;
+ }
+
+ fclose(f);
+}
+
+}