private void SetupSettings() { string iniFile = Path.Combine(_path, "settings.ini"); if (File.Exists(iniFile)) { try { using (var ini = new IniFile(iniFile)) { Uri relRoot = new Uri(_path, UriKind.Absolute); string biosPath = AppConfig.GetFullPath("bios"); if (!string.IsNullOrEmpty(biosPath)) { ini.WriteValue("BIOS", "SearchDirectory", biosPath.Replace("\\", "\\\\")); } if (SystemConfig.isOptSet("ratio") && !string.IsNullOrEmpty(SystemConfig["ratio"])) { ini.WriteValue("Display", "AspectRatio", SystemConfig["ratio"]); } else { ini.WriteValue("Display", "AspectRatio", "Auto (Game Native)"); } if (SystemConfig.isOptSet("internal_resolution") && !string.IsNullOrEmpty(SystemConfig["internal_resolution"])) { ini.WriteValue("GPU", "ResolutionScale", SystemConfig["internal_resolution"]); } else { ini.WriteValue("GPU", "ResolutionScale", "5"); } if (SystemConfig.isOptSet("gfxbackend") && !string.IsNullOrEmpty(SystemConfig["gfxbackend"])) { ini.WriteValue("GPU", "Renderer", SystemConfig["gfxbackend"]); } else { ini.WriteValue("GPU", "Renderer", "Vulkan"); } if (SystemConfig.isOptSet("Texture_Enhancement") && !string.IsNullOrEmpty(SystemConfig["Texture_Enhancement"])) { ini.WriteValue("GPU", "TextureFilter", SystemConfig["Texture_Enhancement"]); } else { ini.WriteValue("GPU", "TextureFilter", "Nearest"); } if (SystemConfig.isOptSet("interlace") && !string.IsNullOrEmpty(SystemConfig["interlace"])) { ini.WriteValue("GPU", "DisableInterlacing", SystemConfig["interlace"]); } else { ini.WriteValue("GPU", "DisableInterlacing", "true"); } if (SystemConfig.isOptSet("NTSC_Timings") && !string.IsNullOrEmpty(SystemConfig["NTSC_Timings"])) { ini.WriteValue("GPU", "ForceNTSCTimings", SystemConfig["NTSC_Timings"]); } else { ini.WriteValue("GPU", "ForceNTSCTimings", "false"); } if (SystemConfig.isOptSet("Widescreen_Hack") && !string.IsNullOrEmpty(SystemConfig["Widescreen_Hack"])) { ini.WriteValue("GPU", "WidescreenHack", SystemConfig["Widescreen_Hack"]); } else { ini.WriteValue("GPU", "WidescreenHack", "false"); } if (SystemConfig.isOptSet("Disable_Dithering") && !string.IsNullOrEmpty(SystemConfig["Disable_Dithering"])) { ini.WriteValue("GPU", "TrueColor", SystemConfig["Disable_Dithering"]); } else { ini.WriteValue("GPU", "TrueColor", "false"); } if (SystemConfig.isOptSet("Scaled_Dithering") && !string.IsNullOrEmpty(SystemConfig["Scaled_Dithering"])) { ini.WriteValue("GPU", "ScaledDithering", SystemConfig["Scaled_Dithering"]); } else { ini.WriteValue("GPU", "ScaledDithering", "false"); } if (SystemConfig.isOptSet("VSync") && !string.IsNullOrEmpty(SystemConfig["VSync"])) { ini.WriteValue("Display", "VSync", SystemConfig["VSync"]); } else { ini.WriteValue("Display", "VSync", "true"); } if (SystemConfig.isOptSet("Linear_Filtering") && !string.IsNullOrEmpty(SystemConfig["Linear_Filtering"])) { ini.WriteValue("Display", "LinearFiltering", SystemConfig["Linear_Filtering"]); } else { ini.WriteValue("Display", "LinearFiltering", "true"); } if (SystemConfig.isOptSet("Integer_Scaling") && !string.IsNullOrEmpty(SystemConfig["Integer_Scaling"])) { ini.WriteValue("Display", "IntegerScaling", SystemConfig["Integer_Scaling"]); } else { ini.WriteValue("Display", "IntegerScaling", "false"); } ini.WriteValue("Main", "ConfirmPowerOff", "false"); ini.WriteValue("Main", "StartFullscreen", "true"); ini.WriteValue("Main", "ApplyGameSettings", "true"); ini.WriteValue("Main", "RenderToMainWindow", "true"); ini.WriteValue("Main", "EnableDiscordPresence", "false"); ini.WriteValue("Display", "Fullscreen", "true"); } } catch { } } }
private static void ConfigureKeyboard(IniFile ini, InputConfig keyboard) { if (keyboard == null) { return; } ini.WriteValue("General", "emulate", "Wii U GamePad"); ini.WriteValue("General", "api", "Keyboard"); ini.WriteValue("General", "controller", null); ini.WriteValue("Controller", "rumble", "0"); ini.WriteValue("Controller", "leftRange", "1"); ini.WriteValue("Controller", "rightRange", "1"); ini.WriteValue("Controller", "leftDeadzone", "0.15"); ini.WriteValue("Controller", "rightDeadzone", "0.15"); ini.WriteValue("Controller", "buttonThreshold", "0.5"); Action <string, InputKey> writeIni = (v, k) => { var a = keyboard[k]; if (a != null) { byte value = SdlToKeyCode(a.Id); ini.WriteValue("Controller", v, "key_" + value.ToString()); } else if (ini.GetValue("Controller", v) != null && ini.GetValue("Controller", v).StartsWith("button")) { ini.WriteValue("Controller", v, ""); } }; writeIni("1", InputKey.a); writeIni("2", InputKey.b); writeIni("3", InputKey.x); writeIni("4", InputKey.y); writeIni("5", InputKey.pageup); writeIni("6", InputKey.pagedown); writeIni("7", InputKey.lefttrigger); writeIni("8", InputKey.righttrigger); writeIni("9", InputKey.start); writeIni("10", InputKey.select); writeIni("11", InputKey.up); writeIni("12", InputKey.down); writeIni("13", InputKey.left); writeIni("14", InputKey.right); if (ini.GetValue("Controller", "15") != null && ini.GetValue("Controller", "15").StartsWith("button")) { ini.WriteValue("Controller", "15", null); } if (ini.GetValue("Controller", "16") != null && ini.GetValue("Controller", "16").StartsWith("button")) { ini.WriteValue("Controller", "16", null); } writeIni("17", InputKey.joystick1up); writeIni("18", InputKey.joystick1up); writeIni("19", InputKey.joystick1left); writeIni("20", InputKey.joystick1left); writeIni("21", InputKey.joystick2up); writeIni("22", InputKey.joystick2up); writeIni("23", InputKey.joystick2left); writeIni("24", InputKey.joystick2left); writeIni("26", InputKey.hotkeyenable); }
private static void generateControllerConfig_any(string filename, string anyDefKey, Dictionary <InputKey, string> anyMapping, Dictionary <string, string> anyReverseAxes, Dictionary <string, string> anyReplacements, Dictionary <string, string> extraOptions = null) { string path = Program.AppConfig.GetFullPath("dolphin"); string iniFile = Path.Combine(path, "User", "Config", filename); int nsamepad = 0; Dictionary <string, int> double_pads = new Dictionary <string, int>(); using (IniFile ini = new IniFile(iniFile, true)) { foreach (var pad in Program.Controllers) { string gcpad = anyDefKey + pad.Index; ini.ClearSection(gcpad); if (pad.Input == null) { continue; } // SIDevice0 = 7 -> Keyb GCKeyNew.ini // SIDevice1 = 6 -> controlleur standard GCPadNew.ini string tech = "XInput"; string deviceName = "Gamepad"; if (pad.Input.Type == "keyboard") { tech = "DInput"; deviceName = "Keyboard Mouse"; } else if (!pad.Input.IsXInputDevice()) { var di = pad.Input.GetDirectInputInfo(); if (di == null) { continue; } tech = "DInput"; deviceName = di.Name; } if (double_pads.ContainsKey(tech + "/" + deviceName)) { nsamepad = double_pads[tech + "/" + deviceName]; } else { nsamepad = 0; } double_pads[tech + "/" + deviceName] = nsamepad + 1; ini.WriteValue(gcpad, "Device", tech + "/" + nsamepad.ToString() + "/" + deviceName); if (extraOptions != null) { foreach (var xtra in extraOptions) { ini.WriteValue(gcpad, xtra.Key, xtra.Value); } } foreach (var x in anyMapping) { string keyName = x.Value; if (pad.Input.Type == "keyboard") { var value = x.Value; if (x.Key == InputKey.a) { value = "Buttons/A"; } else if (x.Key == InputKey.b) { value = "Buttons/B"; } else if (x.Key == InputKey.up) { value = "Main Stick/Up"; } else if (x.Key == InputKey.down) { value = "Main Stick/Down"; } else if (x.Key == InputKey.left) { value = "Main Stick/Left"; } else if (x.Key == InputKey.right) { value = "Main Stick/Right"; } if (x.Key == InputKey.joystick1left || x.Key == InputKey.joystick1up) { continue; } var input = pad.Input[x.Key]; if (input == null) { continue; } var name = ToDolphinKey(input.Id); ini.WriteValue(gcpad, value, name); } else if (tech == "XInput") { var mapping = pad.Input.GetXInputMapping(x.Key); if (mapping != XINPUTMAPPING.UNKNOWN && xInputMapping.ContainsKey(mapping)) { ini.WriteValue(gcpad, x.Value, xInputMapping[mapping]); } string reverseAxis; if (anyReverseAxes.TryGetValue(x.Value, out reverseAxis)) { mapping = pad.Input.GetXInputMapping(x.Key, true); if (mapping != XINPUTMAPPING.UNKNOWN && xInputMapping.ContainsKey(mapping)) { ini.WriteValue(gcpad, reverseAxis, xInputMapping[mapping]); } } } else { var input = pad.Input[x.Key]; if (input == null) { continue; } if (input.Type == "button") { if (input.Id == 0) // Invert A & B { ini.WriteValue(gcpad, x.Value, "`Button 1`"); } else if (input.Id == 1) // Invert A & B { ini.WriteValue(gcpad, x.Value, "`Button 0`"); } else { ini.WriteValue(gcpad, x.Value, "`Button " + input.Id.ToString() + "`"); } } else if (input.Type == "hat") { string hat = "`Hat " + input.Id + " N`"; if (input.Value == 2) // SDL_HAT_RIGHT { hat = "`Hat " + input.Id + " E`"; } else if (input.Value == 4) // SDL_HAT_DOWN { hat = "`Hat " + input.Id + " S`"; } else if (input.Value == 8) // SDL_HAT_LEFT { hat = "`Hat " + input.Id + " W`"; } ini.WriteValue(gcpad, x.Value, hat); } else if (input.Type == "axis") { Func <Input, bool, string> axisValue = (inp, revertAxis) => { string axis = "`Axis "; if (inp.Id == 2 || inp.Id == 5) { axis += "Z"; } else if (inp.Id == 0 || inp.Id == 3) { axis += "X"; } else { axis += "Y"; } if (inp.Id == 3 || inp.Id == 4) { axis += "r"; } if (inp.Id == 5) { revertAxis = !revertAxis; } if ((!revertAxis && inp.Value > 0) || (revertAxis && inp.Value < 0)) { axis += "+"; } else { axis += "-"; } return(axis + "`"); }; ini.WriteValue(gcpad, x.Value, axisValue(input, false)); string reverseAxis; if (anyReverseAxes.TryGetValue(x.Value, out reverseAxis)) { ini.WriteValue(gcpad, reverseAxis, axisValue(input, true)); } } } } if (tech == "XInput") { // ini.WriteValue(gcpad, "Main Stick/Modifier", "`Thumb L`"); // ini.WriteValue(gcpad, "C-Stick/Modifier" , "`Thumb R`"); ini.WriteValue(gcpad, "Main Stick/Dead Zone", "5.0000000000000000"); ini.WriteValue(gcpad, "C-Stick/Dead Zone", "5.0000000000000000"); ini.WriteValue(gcpad, "Rumble/Motor", "`Motor L``Motor R`"); } } ini.Save(); } }
private void SetupConfig(string path) { string iniFile = Path.Combine(path, "memstick", "PSP", "SYSTEM", "ppsspp.ini"); if (!File.Exists(iniFile)) { return; } try { using (var ini = new IniFile(iniFile, true)) { ini.WriteValue("Graphics", "FullScreen", "True"); //if (SystemConfig.isOptSet("showFPS") && SystemConfig.getOptBoolean("showFPS")) if (SystemConfig.isOptSet("DrawFramerate") && SystemConfig.getOptBoolean("DrawFramerate")) { ini.WriteValue("Graphics", "ShowFPSCounter", "3"); } else { ini.WriteValue("Graphics", "ShowFPSCounter", "0"); } if (SystemConfig.isOptSet("frameskip") && SystemConfig.getOptBoolean("frameskip")) { ini.WriteValue("Graphics", "FrameSkip", SystemConfig["frameskip"]); } else { ini.WriteValue("Graphics", "FrameSkip", "0"); } if (SystemConfig.isOptSet("frameskiptype") && !string.IsNullOrEmpty(SystemConfig["frameskiptype"])) { ini.WriteValue("Graphics", "FrameSkipType", SystemConfig["frameskiptype"]); } else { ini.WriteValue("Graphics", "FrameSkipType", "0"); } if (SystemConfig.isOptSet("internalresolution") && !string.IsNullOrEmpty(SystemConfig["internalresolution"])) { ini.WriteValue("Graphics", "InternalResolution", SystemConfig["internalresolution"]); } else { ini.WriteValue("Graphics", "InternalResolution", "0"); } if (SystemConfig.isOptSet("rewind") && SystemConfig.getOptBoolean("rewind")) { ini.WriteValue("General", "RewindFlipFrequency", "300"); } else { ini.WriteValue("General", "RewindFlipFrequency", "0"); } } } catch { } }
private static void ConfigureJoystick(IniFile ini, InputConfig joy, int playerIndex) { if (joy == null) { return; } string api; string guid = string.Empty; if (joy.IsXInputDevice()) { api = "XInput"; guid = "0"; } else { api = "DirectInput"; Guid gd = joy.GetJoystickInstanceGuid(); if (gd == Guid.Empty) { return; } guid = gd.ToString().ToUpper(); } if (playerIndex == 0) { ini.WriteValue("General", "emulate", "Wii U GamePad"); } else { ini.WriteValue("General", "emulate", "Wii U Classic Controller"); } ini.WriteValue("General", "api", api); ini.WriteValue("General", "controller", guid); ini.WriteValue("Controller", "rumble", "0"); ini.WriteValue("Controller", "leftRange", "1"); ini.WriteValue("Controller", "rightRange", "1"); ini.WriteValue("Controller", "leftDeadzone", "0.15"); ini.WriteValue("Controller", "rightDeadzone", "0.15"); ini.WriteValue("Controller", "buttonThreshold", "0.5"); Action <string, InputKey, bool> writeIni = (v, k, r) => { var val = GetInputValue(joy, k, api, r); ini.WriteValue("Controller", v, val); }; // if (val != null) writeIni("1", InputKey.a, false); writeIni("2", InputKey.b, false); writeIni("3", InputKey.x, false); writeIni("4", InputKey.y, false); writeIni("5", InputKey.pageup, false); writeIni("6", InputKey.pagedown, false); writeIni("7", InputKey.lefttrigger, false); writeIni("8", InputKey.righttrigger, false); writeIni("9", InputKey.start, false); writeIni("10", InputKey.select, false); writeIni("11", InputKey.up, false); writeIni("12", InputKey.down, false); writeIni("13", InputKey.left, false); writeIni("14", InputKey.right, false); if (api == "XInput") { ini.WriteValue("Controller", "15", "button_100"); ini.WriteValue("Controller", "16", "button_200"); } else { ini.WriteValue("Controller", "15", null); ini.WriteValue("Controller", "16", null); } writeIni("17", InputKey.joystick1up, false); writeIni("18", InputKey.joystick1up, true); writeIni("19", InputKey.joystick1left, false); writeIni("20", InputKey.joystick1left, true); writeIni("21", InputKey.joystick2up, false); writeIni("22", InputKey.joystick2up, true); writeIni("23", InputKey.joystick2left, false); writeIni("24", InputKey.joystick2left, true); /* * if (joy[InputKey.select] != null && !joy[InputKey.select].Equals(joy[InputKey.hotkey])) * writeIni("26", InputKey.hotkey, false); * else*/ ini.WriteValue("Controller", "26", null); }
private void SetupGfxConfig(string path) { string iniFile = Path.Combine(path, "User", "Config", "GFX.ini"); if (!File.Exists(iniFile)) { return; } try { using (var ini = new IniFile(iniFile, true)) { if (SystemConfig.isOptSet("ratio")) { if (SystemConfig["ratio"] == "4/3") { ini.WriteValue("Settings", "AspectRatio", "2"); } else if (SystemConfig["ratio"] == "16/9") { ini.WriteValue("Settings", "AspectRatio", "1"); } else { ini.WriteValue("Settings", "AspectRatio", "0"); } } else { ini.WriteValue("Settings", "AspectRatio", "0"); } // draw or not FPS if (SystemConfig.isOptSet("DrawFramerate") && SystemConfig.getOptBoolean("DrawFramerate")) { ini.WriteValue("Settings", "ShowFPS", "True"); } else { ini.WriteValue("Settings", "ShowFPS", "False"); } if (_bezelFileInfo != null) { ini.WriteValue("Settings", "BorderlessFullscreen", "True"); } else { ini.WriteValue("Settings", "BorderlessFullscreen", "False"); } ini.WriteValue("Hardware", "VSync", SystemConfig["VSync"] != "false" ? "True" : "False"); // search for custom textures ini.WriteValue("Settings", "HiresTextures", "True"); ini.WriteValue("Settings", "CacheHiresTextures", "True"); if (SystemConfig.isOptSet("internalresolution") && !string.IsNullOrEmpty(SystemConfig["internalresolution"])) { ini.WriteValue("Settings", "InternalResolution", SystemConfig["internalresolution"]); } else if (SystemConfig.isOptSet("internal_resolution") && !string.IsNullOrEmpty(SystemConfig["internal_resolution"])) { ini.WriteValue("Settings", "InternalResolution", SystemConfig["internal_resolution"]); } else { ini.WriteValue("Settings", "InternalResolution", "0"); } // HiResTextures - Default On if (SystemConfig.isOptSet("hires_textures")) { if (!SystemConfig.getOptBoolean("hires_textures")) { ini.WriteValue("Settings", "HiresTextures", "False"); ini.WriteValue("Settings", "CacheHiresTextures", "False"); } else { ini.WriteValue("Settings", "HiresTextures", "True"); ini.WriteValue("Settings", "CacheHiresTextures", "True"); } } // anisotropic filtering - Auto 0 if (SystemConfig.isOptSet("anisotropic_filtering")) { ini.WriteValue("Enhancements", "MaxAnisotropy", SystemConfig["anisotropic_filtering"]); } else { ini.WriteValue("Enhancements", "MaxAnisotropy", "0"); } // anisotropic filtering - Auto 0 if (SystemConfig.isOptSet("antialiasing")) { ini.WriteValue("Settings", "MSAA", "0x0000000" + SystemConfig["antialiasing"]); } else { ini.WriteValue("Settings", "MSAA", "0x00000001"); } // SSAA = True // widescreen hack but only if enable cheats is not enabled - Default Off if (SystemConfig.isOptSet("widescreen_hack")) { if (SystemConfig.getOptBoolean("widescreen_hack")) { ini.WriteValue("Settings", "wideScreenHack", "True"); } else { ini.Remove("Settings", "wideScreenHack"); } } // various performance hacks - Default Off if (SystemConfig.isOptSet("perf_hacks")) { if (SystemConfig.getOptBoolean("perf_hacks")) { ini.WriteValue("Hacks", "BBoxEnable", "False"); ini.WriteValue("Hacks", "DeferEFBCopies", "True"); ini.WriteValue("Hacks", "EFBEmulateFormatChanges", "False"); ini.WriteValue("Hacks", "EFBScaledCopy", "True"); ini.WriteValue("Hacks", "EFBToTextureEnable", "True"); ini.WriteValue("Hacks", "SkipDuplicateXFBs", "True"); ini.WriteValue("Hacks", "XFBToTextureEnable", "True"); ini.WriteValue("Enhancements", "ForceFiltering", "True"); ini.WriteValue("Enhancements", "ArbitraryMipmapDetection", "True"); ini.WriteValue("Enhancements", "DisableCopyFilter", "True"); ini.WriteValue("Enhancements", "ForceTrueColor", "True"); } else { ini.Remove("Hacks", "BBoxEnable"); ini.Remove("Hacks", "DeferEFBCopies"); ini.Remove("Hacks", "EFBEmulateFormatChanges"); ini.Remove("Hacks", "EFBScaledCopy"); ini.Remove("Hacks", "EFBToTextureEnable"); ini.Remove("Hacks", "SkipDuplicateXFBs"); ini.Remove("Hacks", "XFBToTextureEnable"); ini.Remove("Enhancements", "ForceFiltering"); ini.Remove("Enhancements", "ArbitraryMipmapDetection"); ini.Remove("Enhancements", "DisableCopyFilter"); ini.Remove("Enhancements", "ForceTrueColor"); } } } } catch { } }
private void SetupGeneralConfig(string path, string system) { string iniFile = Path.Combine(path, "User", "Config", "Dolphin.ini"); if (!File.Exists(iniFile)) { return; } try { using (var ini = new IniFile(iniFile, true)) { ini.WriteValue("Display", "Fullscreen", "True"); // draw or not FPS if (SystemConfig.isOptSet("DrawFramerate") && SystemConfig.getOptBoolean("DrawFramerate")) { ini.WriteValue("General", "ShowLag", "True"); ini.WriteValue("General", "ShowFPSCounter", "True"); } else { ini.WriteValue("General", "ShowLag", "False"); ini.WriteValue("General", "ShowFrameCount", "False"); } // don't ask about statistics ini.WriteValue("Analytics", "PermissionAsked", "True"); // don't confirm at stop ini.WriteValue("Interface", "ConfirmStop", "False"); // language (for gamecube at least) ini.WriteValue("Core", "SelectedLanguage", getGameCubeLangFromEnvironment()); ini.WriteValue("Core", "GameCubeLanguage", getGameCubeLangFromEnvironment()); // backend - Default if (SystemConfig.isOptSet("gfxbackend")) { ini.WriteValue("Core", "GFXBackend", SystemConfig["gfxbackend"]); } else { ini.WriteValue("Core", "GFXBackend", "Vulkan"); } // Cheats - default false if (SystemConfig.isOptSet("enable_cheats")) { if (SystemConfig.getOptBoolean("enable_cheats")) { ini.WriteValue("Core", "EnableCheats", "True"); } else { ini.WriteValue("Core", "EnableCheats", "False"); } } // Fast Disc Speed - Default Off if (SystemConfig.isOptSet("enable_fastdisc")) { if (SystemConfig.getOptBoolean("enable_fastdisc")) { ini.WriteValue("Core", "FastDiscSpeed", "True"); } else { ini.WriteValue("Core", "FastDiscSpeed", "False"); } } // Enable MMU - Default On if (!SystemConfig.isOptSet("enable_mmu") || SystemConfig.getOptBoolean("enable_mmu")) { ini.WriteValue("Core", "MMU", "True"); } else { ini.WriteValue("Core", "MMU", "False"); } // gamecube pads forced as standard pad bool emulatedWiiMote = (system == "wii" && Program.SystemConfig.isOptSet("emulatedwiimotes") && Program.SystemConfig.getOptBoolean("emulatedwiimotes")); // wiimote scanning if (emulatedWiiMote || system == "gamecube") { ini.WriteValue("Core", "WiimoteContinuousScanning", "False"); } else { ini.WriteValue("Core", "WiimoteContinuousScanning", "True"); } if (_triforce) { ini.WriteValue("Core", "SerialPort1", "6"); ini.WriteValue("Core", "SIDevice0", "11"); ini.WriteValue("Core", "SIDevice1", "0"); ini.WriteValue("Core", "SIDevice2", "0"); ini.WriteValue("Core", "SIDevice3", "0"); } else if (!((Program.SystemConfig.isOptSet("disableautocontrollers") && Program.SystemConfig["disableautocontrollers"] == "1"))) { for (int i = 0; i < 4; i++) { var ctl = Controllers.FirstOrDefault(c => c.PlayerIndex == i + 1); if (ctl != null && ctl.Config != null && !emulatedWiiMote) { /*if (ctl.Input.Type == "keyboard") * ini.WriteValue("Core", "SIDevice" + i, "7"); * else*/ ini.WriteValue("Core", "SIDevice" + i, "6"); } else { ini.WriteValue("Core", "SIDevice" + i, "0"); } } } } } catch { } }