316 lines
12 KiB
C#
316 lines
12 KiB
C#
namespace BizHawk.MultiClient
|
|
{
|
|
public class Config
|
|
{
|
|
public Config()
|
|
{
|
|
SMSController[0] = new SMSControllerTemplate(true);
|
|
SMSController[1] = new SMSControllerTemplate(false);
|
|
PCEController[0] = new PCEControllerTemplate(true);
|
|
PCEController[1] = new PCEControllerTemplate(false);
|
|
PCEController[2] = new PCEControllerTemplate(false);
|
|
PCEController[3] = new PCEControllerTemplate(false);
|
|
PCEController[4] = new PCEControllerTemplate(false);
|
|
NESController[0] = new NESControllerTemplate(true);
|
|
NESController[1] = new NESControllerTemplate(false);
|
|
NESController[2] = new NESControllerTemplate(false);
|
|
NESController[3] = new NESControllerTemplate(false);
|
|
}
|
|
|
|
// General Client Settings
|
|
public int TargetZoomFactor = 2;
|
|
public string LastRomPath = ".";
|
|
public bool AutoLoadMostRecentRom = false; //TODO: eventually make a class or struct for all the auto-loads, which will include recent roms, movies, etc, as well as autoloading any modeless dialog
|
|
public RecentFiles RecentRoms = new RecentFiles(8);
|
|
public bool PauseWhenMenuActivated = true;
|
|
public bool SaveWindowPosition = true;
|
|
public bool StartPaused = false;
|
|
public int MainWndx = -1; //Negative numbers will be ignored
|
|
public int MainWndy = -1;
|
|
|
|
// Run-Control settings
|
|
public int FrameProgressDelayMs = 500; //how long until a frame advance hold turns into a frame progress?
|
|
public int FrameSkip = 0;
|
|
public int SpeedPercent = 100;
|
|
public bool LimitFramerate = true;
|
|
public bool AutoMinimizeSkipping = true;
|
|
public bool DisplayVSync = false;
|
|
public bool RewindEnabled = true;
|
|
|
|
// Display options
|
|
public bool DisplayFPS = false;
|
|
public int DispFPSx = 0;
|
|
public int DispFPSy = 0;
|
|
public bool DisplayFrameCounter = false;
|
|
public int DispFrameCx = 0;
|
|
public int DispFrameCy = 12;
|
|
public bool DisplayLagCounter = false;
|
|
public int DispLagx = 0;
|
|
public int DispLagy = 36;
|
|
public bool DisplayInput = false;
|
|
public int DispInpx = 0;
|
|
public int DispInpy = 24;
|
|
public bool ForceGDI = false;
|
|
|
|
// Sound options
|
|
public bool SoundEnabled = true;
|
|
public bool MuteFrameAdvance = true;
|
|
|
|
// RamWatch Settings
|
|
public bool AutoLoadRamWatch = false;
|
|
public RecentFiles RecentWatches = new RecentFiles(8);
|
|
public bool RamWatchSaveWindowPosition = true;
|
|
public int RamWatchWndx = -1; //Negative numbers will be ignored even with save window position set
|
|
public int RamWatchWndy = -1;
|
|
public int RamWatchWidth = -1; //Negative numbers will be ignored
|
|
public int RamWatchHeight = -1;
|
|
public bool RamWatchShowChangeColumn = true;
|
|
public bool RamWatchShowPrevColumn = false;
|
|
public bool RamWatchShowChangeFromPrev = true;
|
|
public int RamWatchAddressWidth = -1;
|
|
public int RamWatchValueWidth = -1;
|
|
public int RamWatchPrevWidth = -1;
|
|
public int RamWatchChangeWidth = -1;
|
|
public int RamWatchNotesWidth = -1;
|
|
|
|
// RamSearch Settings
|
|
public bool AutoLoadRamSearch = false;
|
|
public bool RamSearchSaveWindowPosition = true;
|
|
public RecentFiles RecentSearches = new RecentFiles(8);
|
|
public int RamSearchWndx = -1; //Negative numbers will be ignored even with save window position set
|
|
public int RamSearchWndy = -1;
|
|
public int RamSearchWidth = -1; //Negative numbers will be ignored
|
|
public int RamSearchHeight = -1;
|
|
public int RamSearchPreviousAs = 0;
|
|
public bool RamSearchPreviewMode = true;
|
|
public bool AlwaysExludeRamWatch = false;
|
|
|
|
// HexEditor Settings
|
|
public bool AutoLoadHexEditor = false;
|
|
public bool HexEditorSaveWindowPosition = true;
|
|
public int HexEditorWndx = -1; //Negative numbers will be ignored even with save window position set
|
|
public int HexEditorWndy = -1;
|
|
public int HexEditorWidth = -1;
|
|
public int HexEditorHeight = -1;
|
|
|
|
// NESPPU Setings
|
|
public bool AutoLoadNESPPU = false;
|
|
public bool NESPPUSaveWindowPosition = true;
|
|
public int NESPPUWndx = -1;
|
|
public int NESPPUWndy = -1;
|
|
|
|
// Cheats Dialog
|
|
public bool AutoLoadCheats = false;
|
|
public bool CheatsSaveWindowPosition = true;
|
|
public bool DisableCheatsOnLoad = false;
|
|
public bool LoadCheatFileByGame = true;
|
|
public bool CheatsAutoSaveOnClose = true;
|
|
public RecentFiles RecentCheats = new RecentFiles(8);
|
|
public int CheatsWndx = -1;
|
|
public int CheatsWndy = -1;
|
|
public int CheatsWidth = -1;
|
|
public int CheatsHeight = -1;
|
|
public int CheatsNameWidth = -1;
|
|
public int CheatsAddressWidth = -1;
|
|
public int CheatsValueWidth = -1;
|
|
public int CheatsDomainWidth = -1;
|
|
public int CheatsOnWidth = -1;
|
|
|
|
// NES Game Genie Encoder/Decoder
|
|
public bool NESGGAutoload = false;
|
|
public bool NESGGSaveWindowPosition = true;
|
|
public int NESGGWndx = -1;
|
|
public int NESGGWndy = -1;
|
|
|
|
//Movie Settings
|
|
public RecentFiles RecentMovies = new RecentFiles(8);
|
|
|
|
// Client Hotkey Bindings
|
|
//TODO: These should be allowed to be "", not every hotkey should have to be mapped somewhere
|
|
public string HardResetBinding = "LeftShift+Tab"; //TODO: This needs to be Ctrl+R but how?
|
|
public string FastForwardBinding = "J1 B6, Tab";
|
|
public string RewindBinding = "J1 B5, LeftShift+R, RightShift+R";
|
|
public string EmulatorPauseBinding = "Pause";
|
|
public string FrameAdvanceBinding = "F";
|
|
public string ScreenshotBinding = "F12";
|
|
public string ToggleFullscreenBinding = "LeftAlt+Return, RightAlt+Return";
|
|
public string QuickSave = "I";
|
|
public string QuickLoad = "P";
|
|
public string SelectSlot0 = "0";
|
|
public string SelectSlot1 = "1";
|
|
public string SelectSlot2 = "2";
|
|
public string SelectSlot3 = "3";
|
|
public string SelectSlot4 = "4";
|
|
public string SelectSlot5 = "5";
|
|
public string SelectSlot6 = "6";
|
|
public string SelectSlot7 = "7";
|
|
public string SelectSlot8 = "8";
|
|
public string SelectSlot9 = "9";
|
|
public string SaveSlot0 = "LeftShift+F10";
|
|
public string SaveSlot1 = "LeftShift+F1";
|
|
public string SaveSlot2 = "LeftShift+F2";
|
|
public string SaveSlot3 = "LeftShift+F3";
|
|
public string SaveSlot4 = "LeftShift+F4";
|
|
public string SaveSlot5 = "LeftShift+F5";
|
|
public string SaveSlot6 = "LeftShift+F6";
|
|
public string SaveSlot7 = "LeftShift+F7";
|
|
public string SaveSlot8 = "LeftShift+F8";
|
|
public string SaveSlot9 = "LeftShift+F9";
|
|
public string LoadSlot0 = "F10";
|
|
public string LoadSlot1 = "F1";
|
|
public string LoadSlot2 = "F2";
|
|
public string LoadSlot3 = "F3";
|
|
public string LoadSlot4 = "F4";
|
|
public string LoadSlot5 = "F5";
|
|
public string LoadSlot6 = "F6";
|
|
public string LoadSlot7 = "F7";
|
|
public string LoadSlot8 = "F8";
|
|
public string LoadSlot9 = "F9";
|
|
|
|
|
|
// SMS / GameGear Settings
|
|
public bool SmsEnableFM = true;
|
|
public bool SmsAllowOverlock = false;
|
|
public bool SmsForceStereoSeparation = false;
|
|
|
|
public string SmsReset = "Tab";
|
|
public string SmsPause = "J1 B10, Space";
|
|
public SMSControllerTemplate[] SMSController = new SMSControllerTemplate[2];
|
|
|
|
// PCEngine Settings
|
|
public PCEControllerTemplate[] PCEController = new PCEControllerTemplate[5];
|
|
|
|
// Genesis Settings
|
|
public string GenP1Up = "J1 Up, UpArrow";
|
|
public string GenP1Down = "J1 Down, DownArrow";
|
|
public string GenP1Left = "J1 Left, LeftArrow";
|
|
public string GenP1Right = "J1 Right, RightArrow";
|
|
public string GenP1A = "J1 B1, Z";
|
|
public string GenP1B = "J1 B2, X";
|
|
public string GenP1C = "J1 B9, C";
|
|
public string GenP1Start = "J1 B10, Return";
|
|
|
|
//GameBoy Settings
|
|
public NESControllerTemplate GameBoyController = new NESControllerTemplate(true);
|
|
|
|
public string NESReset = "Backspace";
|
|
public NESControllerTemplate[] NESController = new NESControllerTemplate[4];
|
|
}
|
|
|
|
public class SMSControllerTemplate
|
|
{
|
|
public string Up;
|
|
public string Down;
|
|
public string Left;
|
|
public string Right;
|
|
public string B1;
|
|
public string B2;
|
|
public bool Enabled;
|
|
public SMSControllerTemplate() { }
|
|
public SMSControllerTemplate(bool defaults)
|
|
{
|
|
if (defaults)
|
|
{
|
|
Enabled = true;
|
|
Up = "J1 Up, UpArrow";
|
|
Down = "J1 Down, DownArrow";
|
|
Left = "J1 Left, LeftArrow";
|
|
Right = "J1 Right, RightArrow";
|
|
B1 = "J1 B1, Z";
|
|
B2 = "J1 B2, X";
|
|
}
|
|
else
|
|
{
|
|
Enabled = false;
|
|
Up = "";
|
|
Down = "";
|
|
Right = "";
|
|
Left = "";
|
|
B1 = "";
|
|
B2 = "";
|
|
}
|
|
}
|
|
}
|
|
|
|
public class PCEControllerTemplate
|
|
{
|
|
public string Up;
|
|
public string Down;
|
|
public string Left;
|
|
public string Right;
|
|
public string I;
|
|
public string II;
|
|
public string Run;
|
|
public string Select;
|
|
public bool Enabled;
|
|
public PCEControllerTemplate() { }
|
|
public PCEControllerTemplate(bool defaults)
|
|
{
|
|
if (defaults)
|
|
{
|
|
Enabled = true;
|
|
Up = "J1 Up, UpArrow";
|
|
Down = "J1 Down, DownArrow";
|
|
Left = "J1 Left, LeftArrow";
|
|
Right = "J1 Right, RightArrow";
|
|
I = "J1 B1, Z";
|
|
II = "J1 B2, X";
|
|
Run = "J1 B10, C";
|
|
Select = "J1 B9, V";
|
|
}
|
|
else
|
|
{
|
|
Enabled = false;
|
|
Up = "";
|
|
Down = "";
|
|
Right = "";
|
|
Left = "";
|
|
I = "";
|
|
II = "";
|
|
Run = "";
|
|
Select = "";
|
|
}
|
|
}
|
|
}
|
|
|
|
public class NESControllerTemplate
|
|
{
|
|
public string Up;
|
|
public string Down;
|
|
public string Left;
|
|
public string Right;
|
|
public string A;
|
|
public string B;
|
|
public string Start;
|
|
public string Select;
|
|
public bool Enabled;
|
|
public NESControllerTemplate() { }
|
|
public NESControllerTemplate(bool defaults)
|
|
{
|
|
if (defaults)
|
|
{
|
|
Enabled = true;
|
|
Up = "J1 Up, UpArrow";
|
|
Down = "J1 Down, DownArrow";
|
|
Left = "J1 Left, LeftArrow";
|
|
Right = "J1 Right, RightArrow";
|
|
A = "J1 B1, X";
|
|
B = "J1 B2, Z";
|
|
Start = "J1 B10, Return";
|
|
Select = "J1 B9, Space";
|
|
}
|
|
else
|
|
{
|
|
Enabled = false;
|
|
Up = "";
|
|
Down = "";
|
|
Right = "";
|
|
Left = "";
|
|
A = "";
|
|
B = "";
|
|
Start = "";
|
|
Select = "";
|
|
}
|
|
}
|
|
}
|
|
} |