2011-01-11 02:55:51 +00:00
namespace BizHawk.MultiClient
2011-02-19 20:31:32 +00:00
{
2011-01-11 02:55:51 +00:00
public class Config
{
2011-02-19 20:31:32 +00:00
public Config ( )
{
2011-02-20 06:13:26 +00:00
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 ) ;
2011-02-20 07:16:34 +00:00
NESController [ 0 ] = new NESControllerTemplate ( true ) ;
NESController [ 1 ] = new NESControllerTemplate ( false ) ;
NESController [ 2 ] = new NESControllerTemplate ( false ) ;
NESController [ 3 ] = new NESControllerTemplate ( false ) ;
2011-02-19 20:31:32 +00:00
}
2011-01-11 02:55:51 +00:00
// General Client Settings
2011-01-26 05:06:44 +00:00
public int TargetZoomFactor = 2 ;
2011-01-11 02:55:51 +00:00
public string LastRomPath = "." ;
2011-01-18 01:55:01 +00:00
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
2011-01-18 03:40:53 +00:00
public RecentFiles RecentRoms = new RecentFiles ( 8 ) ;
2011-02-15 17:04:07 +00:00
public bool PauseWhenMenuActivated = true ;
2011-02-18 05:12:23 +00:00
public bool SaveWindowPosition = true ;
2011-02-18 05:16:21 +00:00
public bool StartPaused = false ;
2011-02-18 02:10:46 +00:00
public int MainWndx = - 1 ; //Negative numbers will be ignored
public int MainWndy = - 1 ;
2011-01-11 02:55:51 +00:00
2011-02-21 09:48:53 +00:00
// 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 ;
2011-03-01 09:32:12 +00:00
public bool RewindEnabled = true ;
2011-02-21 09:48:53 +00:00
2011-02-15 16:41:03 +00:00
// Display options
public bool DisplayFPS = false ;
public bool DisplayFrameCounter = false ;
public bool DisplayLagCounter = false ;
public bool DisplayInput = false ;
2011-02-15 20:18:12 +00:00
// Sound options
public bool SoundEnabled = true ;
public bool MuteFrameAdvance = true ;
2011-01-19 04:18:33 +00:00
// RamWatch Settings
public bool AutoLoadRamWatch = false ;
public RecentFiles RecentWatches = new RecentFiles ( 8 ) ;
2011-02-21 17:29:47 +00:00
public bool RamWatchSaveWindowPosition = true ;
2011-01-20 00:40:23 +00:00
public int RamWatchWndx = - 1 ; //Negative numbers will be ignored even with save window position set
public int RamWatchWndy = - 1 ;
2011-01-20 02:22:15 +00:00
public int RamWatchWidth = - 1 ; //Negative numbers will be ignored
2011-02-24 16:34:41 +00:00
public int RamWatchHeight = - 1 ;
public bool RamWatchShowChangeColumn = true ;
public bool RamWatchShowPrevColumn = false ;
2011-02-24 16:51:31 +00:00
public bool RamWatchShowChangeFromPrev = true ;
2011-02-25 02:36:52 +00:00
public int RamWatchAddressWidth = 59 ;
public int RamWatchValueWidth = 59 ;
public int RamWatchPrevWidth = 59 ;
public int RamWatchChangeWidth = 54 ;
public int RamWatchNotesWidth = 130 ;
2011-01-19 04:18:33 +00:00
2011-01-28 03:52:43 +00:00
// RamSearch Settings
public bool AutoLoadRamSearch = false ;
2011-02-21 17:29:47 +00:00
public bool RamSearchSaveWindowPosition = true ;
2011-02-21 04:22:54 +00:00
public RecentFiles RecentSearches = new RecentFiles ( 8 ) ;
2011-02-18 19:53:41 +00:00
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
2011-02-21 18:03:19 +00:00
public int RamSearchHeight = - 1 ;
public int RamSearchPreviousAs = 0 ;
2011-02-22 16:06:28 +00:00
public bool RamSearchPreviewMode = true ;
2011-02-23 04:16:39 +00:00
public bool AlwaysExludeRamWatch = false ;
2011-01-28 03:52:43 +00:00
2011-02-11 02:30:45 +00:00
//Movie Settings
public RecentFiles RecentMovies = new RecentFiles ( 8 ) ;
2011-01-11 02:55:51 +00:00
// Client Hotkey Bindings
2011-02-15 20:51:07 +00:00
//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" ;
2011-01-28 06:46:33 +00:00
public string EmulatorPauseBinding = "Pause" ;
2011-01-11 02:55:51 +00:00
public string FrameAdvanceBinding = "F" ;
public string ScreenshotBinding = "F12" ;
2011-01-29 08:42:35 +00:00
public string ToggleFullscreenBinding = "LeftAlt+Return, RightAlt+Return" ;
2011-02-15 17:15:51 +00:00
public string QuickSave = "I" ;
public string QuickLoad = "P" ;
2011-02-15 17:38:30 +00:00
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" ;
2011-02-20 04:31:21 +00:00
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" ;
2011-02-20 02:59:15 +00:00
2011-01-11 02:55:51 +00:00
// SMS / GameGear Settings
2011-01-28 06:46:33 +00:00
public bool SmsEnableFM = true ;
public bool SmsAllowOverlock = false ;
2011-02-14 05:02:26 +00:00
public bool SmsForceStereoSeparation = false ;
2011-02-19 20:31:32 +00:00
2011-02-20 06:13:26 +00:00
public string SmsReset = "Tab" ;
2011-01-11 02:55:51 +00:00
public string SmsPause = "J1 B10, Space" ;
2011-02-19 20:31:32 +00:00
public SMSControllerTemplate [ ] SMSController = new SMSControllerTemplate [ 2 ] ;
2011-01-11 02:55:51 +00:00
// PCEngine Settings
2011-02-19 21:27:10 +00:00
public PCEControllerTemplate [ ] PCEController = new PCEControllerTemplate [ 5 ] ;
2011-01-11 02:55:51 +00:00
// 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" ;
2011-02-19 22:07:52 +00:00
public string GenP1Start = "J1 B10, Return" ;
//GameBoy Settings
2011-02-20 07:16:34 +00:00
public NESControllerTemplate GameBoyController = new NESControllerTemplate ( true ) ;
public NESControllerTemplate [ ] NESController = new NESControllerTemplate [ 4 ] ;
2011-01-11 02:55:51 +00:00
}
2011-02-19 22:07:52 +00:00
2011-02-19 20:31:32 +00:00
public class SMSControllerTemplate
{
public string Up ;
public string Down ;
public string Left ;
public string Right ;
public string B1 ;
public string B2 ;
2011-02-20 15:25:00 +00:00
public bool Enabled ;
2011-02-20 06:13:26 +00:00
public SMSControllerTemplate ( ) { }
public SMSControllerTemplate ( bool defaults )
2011-02-19 20:31:32 +00:00
{
2011-02-20 06:13:26 +00:00
if ( defaults )
2011-02-20 03:51:18 +00:00
{
2011-02-20 15:25:00 +00:00
Enabled = true ;
2011-02-20 06:52:39 +00:00
Up = "J1 Up, UpArrow" ;
Down = "J1 Down, DownArrow" ;
Left = "J1 Left, LeftArrow" ;
2011-02-20 06:13:26 +00:00
Right = "J1 Right, RightArrow" ;
2011-02-20 06:52:39 +00:00
B1 = "J1 B1, Z" ;
B2 = "J1 B2, X" ;
2011-02-20 03:51:18 +00:00
}
2011-02-20 06:52:39 +00:00
else
{
2011-02-20 15:25:00 +00:00
Enabled = false ;
2011-02-20 06:52:39 +00:00
Up = "" ;
Down = "" ;
Right = "" ;
Left = "" ;
B1 = "" ;
B2 = "" ;
}
2011-02-19 20:31:32 +00:00
}
}
2011-02-20 06:13:26 +00:00
2011-02-19 21:27:10 +00:00
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 ;
2011-02-20 15:25:00 +00:00
public bool Enabled ;
2011-02-20 06:13:26 +00:00
public PCEControllerTemplate ( ) { }
public PCEControllerTemplate ( bool defaults )
2011-02-19 21:27:10 +00:00
{
2011-02-20 06:13:26 +00:00
if ( defaults )
2011-02-20 03:51:18 +00:00
{
2011-02-20 15:25:00 +00:00
Enabled = true ;
2011-02-20 06:52:39 +00:00
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
{
2011-02-20 15:25:00 +00:00
Enabled = false ;
2011-02-20 06:52:39 +00:00
Up = "" ;
Down = "" ;
Right = "" ;
Left = "" ;
I = "" ;
II = "" ;
Run = "" ;
Select = "" ;
2011-02-20 03:51:18 +00:00
}
2011-02-19 21:27:10 +00:00
}
}
2011-02-20 06:13:26 +00:00
2011-02-19 22:07:52 +00:00
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 ;
2011-02-20 15:25:00 +00:00
public bool Enabled ;
2011-02-20 07:16:34 +00:00
public NESControllerTemplate ( ) { }
public NESControllerTemplate ( bool defaults )
2011-02-19 22:07:52 +00:00
{
2011-02-20 07:16:34 +00:00
if ( defaults )
{
2011-02-20 15:25:00 +00:00
Enabled = true ;
2011-02-20 07:16:34 +00:00
Up = "J1 Up, UpArrow" ;
Down = "J1 Down, DownArrow" ;
Left = "J1 Left, LeftArrow" ;
Right = "J1 Right, RightArrow" ;
A = "J1 B1, Z" ;
B = "J1 B2, X" ;
Start = "J1 B10, Return" ;
Select = "J1 B9, Space" ;
}
else
{
2011-02-20 15:25:00 +00:00
Enabled = false ;
2011-02-20 07:16:34 +00:00
Up = "" ;
Down = "" ;
Right = "" ;
Left = "" ;
A = "" ;
B = "" ;
Start = "" ;
Select = "" ;
}
2011-02-19 22:07:52 +00:00
}
}
2011-01-11 02:55:51 +00:00
}