reapply edits and cleanup

This commit is contained in:
zeromus 2013-10-27 07:54:00 +00:00
parent 11dbb0e1c8
commit fa40ae718f
27 changed files with 2970 additions and 2834 deletions

View File

@ -5,7 +5,7 @@ using System.Text;
using ICSharpCode.SharpZipLib.Zip;
using System.IO;
namespace BizHawk.MultiClient
namespace BizHawk.Client.Common
{
public class BinaryStateFileNames
{

View File

@ -33,6 +33,9 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\Newtonsoft.Json.dll</HintPath>
</Reference>
@ -82,9 +85,11 @@
<Compile Include="7z\SevenZipExtractorAsynchronous.cs" />
<Compile Include="7z\SevenZipSfx.cs" />
<Compile Include="7z\StreamWrappers.cs" />
<Compile Include="BinarySaveStates.cs" />
<Compile Include="config\Binding.cs" />
<Compile Include="config\Config.cs" />
<Compile Include="config\ConfigService.cs" />
<Compile Include="ControllerBinding.cs" />
<Compile Include="CoreFileProvider.cs" />
<Compile Include="FirmwareManager.cs" />
<Compile Include="Global.cs" />
@ -100,15 +105,24 @@
<Compile Include="movie\MultitrackRecording.cs" />
<Compile Include="movie\Subtitle.cs" />
<Compile Include="movie\SubtitleList.cs" />
<Compile Include="PathManager.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RecentFiles.cs" />
<Compile Include="helpers\StringHelpers.cs" />
<Compile Include="RomGame.cs" />
<Compile Include="SavestateManager.cs" />
<Compile Include="tools\Cheat.cs" />
<Compile Include="tools\CheatList.cs" />
<Compile Include="tools\RamSearchEngine.cs" />
<Compile Include="tools\Watch.cs" />
<Compile Include="tools\WatchList.cs" />
<Compile Include="XmlGame.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BizHawk.Common\BizHawk.Common.csproj">
<Project>{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}</Project>
<Name>BizHawk.Common</Name>
</ProjectReference>
<ProjectReference Include="..\BizHawk.Emulation\BizHawk.Emulation.csproj">
<Project>{197D4314-8A9F-49BA-977D-54ACEFAEB6BA}</Project>
<Name>BizHawk.Emulation</Name>

View File

@ -2,9 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using BizHawk.Client.Common;
namespace BizHawk.MultiClient
namespace BizHawk.Client.Common
{
public class Controller : IController
{

View File

@ -14,5 +14,10 @@
/// </summary>
public static MultitrackRewiringControllerAdapter MultitrackRewiringControllerAdapter = new MultitrackRewiringControllerAdapter();
public static MovieSession MovieSession = new MovieSession();
/// <summary>
/// whether throttling is force-disabled by use of fast forward
/// </summary>
public static bool ForceNoThrottle;
}
}

View File

@ -3,17 +3,13 @@ using System.Linq;
using System.IO;
using System.Reflection;
using BizHawk.Client.Common;
namespace BizHawk.MultiClient
namespace BizHawk.Client.Common
{
public static class PathManager
{
public static string GetExeDirectoryAbsolute()
{
var uri = new Uri(Assembly.GetEntryAssembly().GetName().CodeBase);
string module = uri.LocalPath + System.Web.HttpUtility.UrlDecode(uri.Fragment);
return Path.GetDirectoryName(module);
return AppDomain.CurrentDomain.BaseDirectory;
}
/// <summary>

View File

@ -1,10 +1,8 @@
using System.IO;
using BizHawk.Client.Common;
namespace BizHawk.MultiClient
namespace BizHawk.Client.Common
{
class SavestateManager
public class SavestateManager
{
private readonly bool[] slots = new bool[10];
private readonly bool[] redo = new bool[10];
@ -32,14 +30,17 @@ namespace BizHawk.MultiClient
}
}
public bool HasSavestateSlots()
public bool HasSavestateSlots
{
Update();
for (int x = 0; x < 10; x++)
get
{
if (slots[x]) return true;
Update();
for (int x = 0; x < 10; x++)
{
if (slots[x]) return true;
}
return false;
}
return false;
}
public bool HasSlot(int slot)

View File

@ -5,9 +5,7 @@ using System.Text;
using System.IO;
using System.Xml;
using BizHawk.Client.Common;
namespace BizHawk.MultiClient
namespace BizHawk.Client.Common
{
public class XmlGame
{
@ -96,10 +94,9 @@ namespace BizHawk.MultiClient
}
return ret;
}
catch (Exception e)
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(e.ToString(), "XMLGame Load Error");
return null;
throw new InvalidOperationException(ex.ToString());
}
}

View File

@ -6,9 +6,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BizHawk.Client.Common;
using BizHawk.Common;
namespace BizHawk.MultiClient
namespace BizHawk.Client.Common
{
//TODO: move me
//http://stackoverflow.com/questions/1766328/can-linq-use-binary-search-when-the-collection-is-ordered
@ -49,8 +49,6 @@ namespace BizHawk.MultiClient
public class RamSearchEngine
{
public enum ComparisonOperator { Equal, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, NotEqual, DifferentBy };
public enum Compare { Previous, SpecificValue, SpecificAddress, Changes, Difference }
@ -61,7 +59,7 @@ namespace BizHawk.MultiClient
private List<IMiniWatch> _watchList = new List<IMiniWatch>();
private Settings _settings = new Settings();
private WatchHistory _history = new WatchHistory(true);
private UndoHistory<IMiniWatch> _history = new UndoHistory<IMiniWatch>(true);
private bool _keepHistory = true;
public RamSearchEngine(Settings settings)
@ -408,7 +406,7 @@ namespace BizHawk.MultiClient
{
switch(column)
{
case RamSearch.ADDRESS:
case WatchList.ADDRESS:
if (reverse)
{
_watchList = _watchList.OrderByDescending(x => x.Address).ToList();
@ -418,7 +416,7 @@ namespace BizHawk.MultiClient
_watchList = _watchList.OrderBy(x => x.Address).ToList();
}
break;
case RamSearch.VALUE:
case WatchList.VALUE:
if (reverse)
{
_watchList = _watchList.OrderByDescending(x => GetValue(x.Address)).ToList();
@ -428,7 +426,7 @@ namespace BizHawk.MultiClient
_watchList = _watchList.OrderBy(x => GetValue(x.Address)).ToList();
}
break;
case RamSearch.PREV:
case WatchList.PREV:
if (reverse)
{
_watchList = _watchList.OrderByDescending(x => x.Previous).ToList();
@ -438,7 +436,7 @@ namespace BizHawk.MultiClient
_watchList = _watchList.OrderBy(x => x.Previous).ToList();
}
break;
case RamSearch.CHANGES:
case WatchList.CHANGES:
if (_settings.Mode == Settings.SearchMode.Detailed)
{
if (reverse)
@ -457,7 +455,7 @@ namespace BizHawk.MultiClient
}
}
break;
case RamSearch.DIFF:
case WatchList.DIFF:
if (reverse)
{
_watchList = _watchList.OrderByDescending(x => (GetValue(x.Address) - x.Previous)).ToList();
@ -499,7 +497,7 @@ namespace BizHawk.MultiClient
{
if (_keepHistory)
{
_watchList = _history.Undo();
_watchList = _history.Undo().ToList();
}
}
@ -507,7 +505,7 @@ namespace BizHawk.MultiClient
{
if (_keepHistory)
{
_watchList = _history.Redo();
_watchList = _history.Redo().ToList();
}
}

View File

@ -4,16 +4,11 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BizHawk.Client.Common;
namespace BizHawk.MultiClient
namespace BizHawk.Client.Common
{
public class WatchList : IEnumerable<Watch>
{
public const string ADDRESS = "AddressColumn";
public const string VALUE = "ValueColumn";
public const string PREV = "PrevColumn";
@ -297,26 +292,6 @@ namespace BizHawk.MultiClient
public string CurrentFileName { get { return _currentFilename; } set { _currentFilename = value; } }
public bool Changes { get; set; }
public bool Save()
{
bool result;
if (!String.IsNullOrWhiteSpace(CurrentFileName))
{
result = SaveFile();
}
else
{
result = SaveAs();
}
if (result)
{
Changes = false;
}
return result;
}
public bool Load(string path, bool append)
{
bool result = LoadFile(path, append);
@ -346,7 +321,7 @@ namespace BizHawk.MultiClient
}
}
private bool SaveFile()
public bool Save()
{
if (String.IsNullOrWhiteSpace(CurrentFileName))
{
@ -380,13 +355,12 @@ namespace BizHawk.MultiClient
return true;
}
public bool SaveAs()
public bool SaveAs(FileInfo file)
{
var file = GetSaveFileFromUser(CurrentFileName);
if (file != null)
{
CurrentFileName = file.FullName;
return SaveFile();
return Save();
}
else
{
@ -546,53 +520,6 @@ namespace BizHawk.MultiClient
return 0;
}
public static FileInfo GetFileFromUser(string currentFile)
{
var ofd = new OpenFileDialog();
if (currentFile.Length > 0)
ofd.FileName = Path.GetFileNameWithoutExtension(currentFile);
ofd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.WatchPath, null);
ofd.Filter = "Watch Files (*.wch)|*.wch|All Files|*.*";
ofd.RestoreDirectory = true;
GlobalWinF.Sound.StopSound();
var result = ofd.ShowDialog();
GlobalWinF.Sound.StartSound();
if (result != DialogResult.OK)
return null;
var file = new FileInfo(ofd.FileName);
return file;
}
public static FileInfo GetSaveFileFromUser(string currentFile)
{
var sfd = new SaveFileDialog();
if (currentFile.Length > 0)
{
sfd.FileName = Path.GetFileNameWithoutExtension(currentFile);
sfd.InitialDirectory = Path.GetDirectoryName(currentFile);
}
else if (!(Global.Emulator is NullEmulator))
{
sfd.FileName = PathManager.FilesystemSafeName(Global.Game);
sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.WatchPath, null);
}
else
{
sfd.FileName = "NULL";
sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.WatchPath, null);
}
sfd.Filter = "Watch Files (*.wch)|*.wch|All Files|*.*";
sfd.RestoreDirectory = true;
GlobalWinF.Sound.StopSound();
var result = sfd.ShowDialog();
GlobalWinF.Sound.StartSound();
if (result != DialogResult.OK)
return null;
var file = new FileInfo(sfd.FileName);
return file;
}
#endregion
}
}

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BizHawk.Common</RootNamespace>
<AssemblyName>BizHawk.Common</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MruStack.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UndoHistory.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -1,4 +1,4 @@
namespace BizHawk.MultiClient
namespace BizHawk.Common
{
public class MruStack<T>
{

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BizHawk.Common")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Measurement Incorporated")]
[assembly: AssemblyProduct("BizHawk.Common")]
[assembly: AssemblyCopyright("Copyright © Measurement Incorporated 2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f8e9ad29-89d8-478b-a699-ed3369703b6a")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -1,20 +1,21 @@
using System.Collections.Generic;
using System.Linq;
namespace BizHawk.MultiClient
namespace BizHawk.Common
{
public class WatchHistory
public class UndoHistory<T>
{
private List<List<RamSearchEngine.IMiniWatch>> _history = new List<List<RamSearchEngine.IMiniWatch>>();
private List<List<T>> _history = new List<List<T>>();
private int curPos; //1-based
public bool Enabled { get; private set; }
public WatchHistory(bool enabled)
public UndoHistory(bool enabled)
{
Enabled = enabled;
}
public WatchHistory(List<RamSearchEngine.IMiniWatch> newState, bool enabled)
public UndoHistory(IEnumerable<T> newState, bool enabled)
{
AddState(newState);
Enabled = enabled;
@ -22,7 +23,7 @@ namespace BizHawk.MultiClient
public void Clear()
{
_history = new List<List<RamSearchEngine.IMiniWatch>>();
_history = new List<List<T>>();
curPos = 0;
}
@ -41,7 +42,7 @@ namespace BizHawk.MultiClient
get { return Enabled && _history.Any(); }
}
public void AddState(List<RamSearchEngine.IMiniWatch> newState)
public void AddState(IEnumerable<T> newState)
{
if (Enabled)
{
@ -53,12 +54,12 @@ namespace BizHawk.MultiClient
}
}
_history.Add(newState);
_history.Add(newState.ToList());
curPos = _history.Count;
}
}
public List<RamSearchEngine.IMiniWatch> Undo()
public IEnumerable<T> Undo()
{
if (CanUndo && Enabled)
{
@ -71,7 +72,7 @@ namespace BizHawk.MultiClient
}
}
public List<RamSearchEngine.IMiniWatch> Redo()
public IEnumerable<T> Redo()
{
if (CanRedo && Enabled)
{

View File

@ -583,7 +583,12 @@
<ItemGroup>
<Folder Include="Computers\Commodore64\Peripheral\" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<ProjectReference Include="..\BizHawk.Common\BizHawk.Common.csproj">
<Project>{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}</Project>
<Name>BizHawk.Common</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Consoles\Atari\docs\stella.pdf" />
<None Include="Consoles\Coleco\docs\colecovision tech1.pdf" />

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
/// <summary>

View File

@ -84,7 +84,6 @@
</Reference>
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Numerics" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
@ -153,7 +152,6 @@
<DependentUpon>VideoWriterChooserForm.cs</DependentUpon>
</Compile>
<Compile Include="AVOut\WavWriter.cs" />
<Compile Include="BinarySaveStates.cs" />
<Compile Include="BizBox.cs">
<SubType>Form</SubType>
</Compile>
@ -232,7 +230,6 @@
<Compile Include="config\PathInfo.Designer.cs">
<DependentUpon>PathInfo.cs</DependentUpon>
</Compile>
<Compile Include="config\PathManager.cs" />
<Compile Include="config\RewindConfig.cs">
<SubType>Form</SubType>
</Compile>
@ -283,7 +280,6 @@
<Compile Include="DisplayManager\DisplayManager.cs" />
<Compile Include="DisplayManager\Filters\Hq2x.cs" />
<Compile Include="GlobalWinF.cs" />
<Compile Include="Input\ControllerBinding.cs" />
<Compile Include="Input\GamePad.cs" Condition=" '$(OS)' == 'Windows_NT' " />
<Compile Include="Input\GamePad360.cs" />
<Compile Include="Input\Input.cs" />
@ -344,7 +340,6 @@
<Compile Include="movie\SubtitleMaker.Designer.cs">
<DependentUpon>SubtitleMaker.cs</DependentUpon>
</Compile>
<Compile Include="MruStack.cs" />
<Compile Include="NameStateForm.cs">
<SubType>Form</SubType>
</Compile>
@ -504,7 +499,6 @@
<Compile Include="tools\N64\N64VideoPluginconfig.Designer.cs">
<DependentUpon>N64VideoPluginconfig.cs</DependentUpon>
</Compile>
<Compile Include="tools\NES\MovieConvert.cs" />
<Compile Include="tools\NES\NameTableViewer.cs">
<SubType>Component</SubType>
</Compile>
@ -727,7 +721,6 @@
<Compile Include="tools\Watch\RamSearch.Designer.cs">
<DependentUpon>RamSearch.cs</DependentUpon>
</Compile>
<Compile Include="tools\Watch\RamSearchEngine.cs" />
<Compile Include="tools\Watch\RamWatch.cs">
<SubType>Form</SubType>
</Compile>
@ -740,12 +733,9 @@
<Compile Include="tools\Watch\WatchEditor.Designer.cs">
<DependentUpon>WatchEditor.cs</DependentUpon>
</Compile>
<Compile Include="tools\Watch\WatchHistory.cs" />
<Compile Include="tools\Watch\WatchList.cs" />
<Compile Include="tools\Watch\WatchValueBox.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="XmlGame.cs" />
<EmbeddedResource Include="AVOut\FFmpegWriterForm.resx">
<DependentUpon>FFmpegWriterForm.cs</DependentUpon>
</EmbeddedResource>
@ -981,7 +971,6 @@
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Properties\svnrev.cs" />
<Compile Include="SavestateManager.cs" />
<Compile Include="Throttle.cs" />
<Compile Include="tools\InputPrompt.cs">
<SubType>Form</SubType>
@ -1010,6 +999,10 @@
<Project>{24A0AA3C-B25F-4197-B23D-476D6462DBA0}</Project>
<Name>BizHawk.Client.Common</Name>
</ProjectReference>
<ProjectReference Include="..\BizHawk.Common\BizHawk.Common.csproj">
<Project>{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}</Project>
<Name>BizHawk.Common</Name>
</ProjectReference>
<ProjectReference Include="..\BizHawk.Emulation\BizHawk.Emulation.csproj">
<Project>{197D4314-8A9F-49BA-977D-54ACEFAEB6BA}</Project>
<Name>BizHawk.Emulation</Name>

View File

@ -22,11 +22,6 @@ namespace BizHawk.MultiClient
public static Controller NullControls;
public static AutofireController AutofireNullControls;
/// <summary>
/// whether throttling is force-disabled by use of fast forward
/// </summary>
public static bool ForceNoThrottle;
//the movie will be spliced inbetween these if it is present
public static CopyControllerAdapter MovieInputSourceAdapter = new CopyControllerAdapter();
public static CopyControllerAdapter MovieOutputHardpoint = new CopyControllerAdapter();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -189,7 +189,7 @@ namespace BizHawk.MultiClient
{
ShowConsole();
//PsxApi.StdioFixes();
displayLogWindowToolStripMenuItem.Checked = true;
DisplayLogWindowMenuItem.Checked = true;
}
throttle = new Throttle();
@ -429,7 +429,7 @@ namespace BizHawk.MultiClient
}
else
{
displayStatusBarToolStripMenuItem.Checked = true;
DisplayStatusBarMenuItem.Checked = true;
}
if (Global.Config.StartPaused)
@ -625,7 +625,7 @@ namespace BizHawk.MultiClient
{
bool fastforward = GlobalWinF.ClientControls["Fast Forward"] || FastForward;
bool superfastforward = GlobalWinF.ClientControls["Turbo"];
GlobalWinF.ForceNoThrottle = unthrottled || fastforward;
Global.ForceNoThrottle = unthrottled || fastforward;
// realtime throttle is never going to be so exact that using a double here is wrong
throttle.SetCoreFps(Global.Emulator.CoreComm.VsyncRate);
@ -1228,10 +1228,9 @@ namespace BizHawk.MultiClient
}
else if (file.Extension.ToLower() == ".xml")
{
var XMLG = XmlGame.Create(file);
if (XMLG != null)
try
{
var XMLG = XmlGame.Create(file); // if load fails, are we supposed to retry as a bsnes XML????????
game = XMLG.GI;
switch (game.System)
@ -1256,9 +1255,11 @@ namespace BizHawk.MultiClient
default:
return false;
}
}
// if load fails, are we supposed to retry as a bsnes XML????????
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString(), "XMLGame Load Error");
}
}
else // most extensions
{
@ -3206,7 +3207,7 @@ namespace BizHawk.MultiClient
//sends an alt+mnemonic combination
void SendAltKeyChar(char c)
{
typeof(ToolStrip).InvokeMember("ProcessMnemonicInternal", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Instance, null, menuStrip1, new object[] { c });
typeof(ToolStrip).InvokeMember("ProcessMnemonicInternal", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Instance, null, MainformMenu, new object[] { c });
}
string FormatFilter(params string[] args)
@ -4032,19 +4033,19 @@ namespace BizHawk.MultiClient
private void ShowConsole()
{
LogConsole.ShowConsole();
logWindowAsConsoleToolStripMenuItem.Enabled = false;
LogWindowAsConsoleMenuItem.Enabled = false;
}
private void HideConsole()
{
LogConsole.HideConsole();
logWindowAsConsoleToolStripMenuItem.Enabled = true;
LogWindowAsConsoleMenuItem.Enabled = true;
}
public void notifyLogWindowClosing()
{
displayLogWindowToolStripMenuItem.Checked = false;
logWindowAsConsoleToolStripMenuItem.Enabled = true;
DisplayLogWindowMenuItem.Checked = false;
LogWindowAsConsoleMenuItem.Enabled = true;
}
private void MainForm_Load(object sender, EventArgs e)
@ -4283,16 +4284,6 @@ namespace BizHawk.MultiClient
}
}
private void configToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
{
controllersToolStripMenuItem.Enabled = !(Global.Emulator is NullEmulator);
}
private void firmwaresToolStripMenuItem_Click(object sender, EventArgs e)
{
new FirmwaresConfig().Show();
}
private void menuStrip1_Leave(object sender, EventArgs e)
{
GlobalWinF.DisplayManager.NeedsToPaint = true;
@ -4327,5 +4318,65 @@ namespace BizHawk.MultiClient
{
CloseROM(clearSRAM: true);
}
public void ToggleBackgroundInput()
{
Global.Config.AcceptBackgroundInput ^= true;
if (Global.Config.AcceptBackgroundInput)
{
GlobalWinF.OSD.AddMessage("Background Input enabled");
}
else
{
GlobalWinF.OSD.AddMessage("Background Input disabled");
}
}
public void LimitFrameRateMessage()
{
if (Global.Config.ClockThrottle)
{
GlobalWinF.OSD.AddMessage("Framerate limiting on");
}
else
{
GlobalWinF.OSD.AddMessage("Framerate limiting off");
}
}
public void ClickSpeedItem(int num)
{
if ((ModifierKeys & Keys.Control) != 0) SetSpeedPercentAlternate(num);
else SetSpeedPercent(num);
}
public void VsyncMessage()
{
if (Global.Config.VSyncThrottle)
{
GlobalWinF.OSD.AddMessage("Display Vsync is set to on");
}
else
{
GlobalWinF.OSD.AddMessage("Display Vsync is set to off");
}
}
public void MinimizeFrameskipMessage()
{
if (Global.Config.AutoMinimizeSkipping)
{
GlobalWinF.OSD.AddMessage("Autominimizing set to on");
}
else
{
GlobalWinF.OSD.AddMessage("Autominimizing set to off");
}
}
public void FrameSkipMessage()
{
GlobalWinF.OSD.AddMessage("Frameskipping set to " + Global.Config.FrameSkip.ToString());
}
}
}

View File

@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="MainformMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

View File

@ -392,7 +392,7 @@ namespace BizHawk.MultiClient
{
get
{
if (GlobalWinF.ForceNoThrottle)
if (Global.ForceNoThrottle)
return false;
return Global.Config.VSyncThrottle || Global.Config.VSync;
}

View File

@ -208,7 +208,7 @@ namespace BizHawk.MultiClient
samplesProvided = 2 * nsampgot;
if (!GlobalWinF.ForceNoThrottle)
if (!Global.ForceNoThrottle)
while (samplesNeeded < samplesProvided)
{
System.Threading.Thread.Sleep((samplesProvided - samplesNeeded) / 88); // let audio clock control sleep time

View File

@ -11,6 +11,55 @@ namespace BizHawk.MultiClient
{
class ToolHelpers
{
public static FileInfo GetWatchFileFromUser(string currentFile)
{
var ofd = new OpenFileDialog();
if (!String.IsNullOrWhiteSpace(currentFile))
{
ofd.FileName = Path.GetFileNameWithoutExtension(currentFile);
}
ofd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.WatchPath, null);
ofd.Filter = "Watch Files (*.wch)|*.wch|All Files|*.*";
ofd.RestoreDirectory = true;
GlobalWinF.Sound.StopSound();
var result = ofd.ShowDialog();
GlobalWinF.Sound.StartSound();
if (result != DialogResult.OK)
return null;
var file = new FileInfo(ofd.FileName);
return file;
}
public static FileInfo GetWatchSaveFileFromUser(string currentFile)
{
var sfd = new SaveFileDialog();
if (!String.IsNullOrWhiteSpace(currentFile))
{
sfd.FileName = Path.GetFileNameWithoutExtension(currentFile);
sfd.InitialDirectory = Path.GetDirectoryName(currentFile);
}
else if (!(Global.Emulator is NullEmulator))
{
sfd.FileName = PathManager.FilesystemSafeName(Global.Game);
sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.WatchPath, null);
}
else
{
sfd.FileName = "NULL";
sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries.WatchPath, null);
}
sfd.Filter = "Watch Files (*.wch)|*.wch|All Files|*.*";
sfd.RestoreDirectory = true;
GlobalWinF.Sound.StopSound();
var result = sfd.ShowDialog();
GlobalWinF.Sound.StartSound();
if (result != DialogResult.OK)
return null;
var file = new FileInfo(sfd.FileName);
return file;
}
public static FileInfo GetCheatFileFromUser(string currentFile)
{
var ofd = new OpenFileDialog();

View File

@ -19,19 +19,15 @@ namespace BizHawk.MultiClient
/// </summary>
public partial class RamSearch : Form
{
public const string ADDRESS = "AddressColumn";
public const string VALUE = "ValueColumn";
public const string PREV = "PrevColumn";
public const string CHANGES = "ChangesColumn";
public const string DIFF = "DiffColumn";
//TODO: DoSearch grabs the state of widgets and passes it to the engine before running, so rip out code that is attempting to keep the state up to date through change events
private readonly Dictionary<string, int> DefaultColumnWidths = new Dictionary<string, int>
{
{ ADDRESS, 60 },
{ VALUE, 59 },
{ PREV, 59 },
{ CHANGES, 55 },
{ DIFF, 59 },
{ WatchList.ADDRESS, 60 },
{ WatchList.VALUE, 59 },
{ WatchList.PREV, 59 },
{ WatchList.CHANGES, 55 },
{ WatchList.DIFF, 59 },
};
private string CurrentFileName = String.Empty;
@ -174,19 +170,19 @@ namespace BizHawk.MultiClient
string columnName = WatchListView.Columns[column].Name;
switch (columnName)
{
case ADDRESS:
case WatchList.ADDRESS:
text = Searches[index].AddressString;
break;
case VALUE:
case WatchList.VALUE:
text = Searches[index].ValueString;
break;
case PREV:
case WatchList.PREV:
text = Searches[index].PreviousStr;
break;
case CHANGES:
case WatchList.CHANGES:
text = Searches[index].ChangeCount.ToString();
break;
case DIFF:
case WatchList.DIFF:
text = Searches[index].Diff;
break;
}
@ -413,10 +409,39 @@ namespace BizHawk.MultiClient
}
}
private RamSearchEngine.ComparisonOperator Operator
{
get
{
if (NotEqualToRadio.Checked) return RamSearchEngine.ComparisonOperator.NotEqual;
else if (LessThanRadio.Checked) return RamSearchEngine.ComparisonOperator.LessThan;
else if (GreaterThanRadio.Checked) return RamSearchEngine.ComparisonOperator.GreaterThan;
else if (LessThanOrEqualToRadio.Checked) return RamSearchEngine.ComparisonOperator.LessThanEqual;
else if (GreaterThanOrEqualToRadio.Checked) return RamSearchEngine.ComparisonOperator.GreaterThanEqual;
else if (DifferentByRadio.Checked) return RamSearchEngine.ComparisonOperator.DifferentBy;
else return RamSearchEngine.ComparisonOperator.Equal;
}
}
private RamSearchEngine.Compare Compare
{
get
{
if (SpecificValueRadio.Checked) return RamSearchEngine.Compare.SpecificValue;
else if (SpecificAddressRadio.Checked) return RamSearchEngine.Compare.SpecificAddress;
else if (NumberOfChangesRadio.Checked) return RamSearchEngine.Compare.Changes;
else if (DifferenceRadio.Checked) return RamSearchEngine.Compare.Difference;
else return RamSearchEngine.Compare.Previous;
}
}
public void DoSearch()
{
Searches.CompareValue = CompareToValue;
Searches.DifferentBy = DifferentByValue;
Searches.Operator = Operator;
Searches.CompareTo = Compare;
int removed = Searches.DoSearch();
SetTotal();
WatchListView.ItemCount = Searches.Count;
@ -515,11 +540,11 @@ namespace BizHawk.MultiClient
private void LoadColumnInfo()
{
WatchListView.Columns.Clear();
ToolHelpers.AddColumn(WatchListView, ADDRESS, true, GetColumnWidth(ADDRESS));
ToolHelpers.AddColumn(WatchListView, VALUE, true, GetColumnWidth(VALUE));
ToolHelpers.AddColumn(WatchListView, PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(PREV));
ToolHelpers.AddColumn(WatchListView, CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(CHANGES));
ToolHelpers.AddColumn(WatchListView, DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(DIFF));
ToolHelpers.AddColumn(WatchListView, WatchList.ADDRESS, true, GetColumnWidth(WatchList.ADDRESS));
ToolHelpers.AddColumn(WatchListView, WatchList.VALUE, true, GetColumnWidth(WatchList.VALUE));
ToolHelpers.AddColumn(WatchListView, WatchList.PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(WatchList.PREV));
ToolHelpers.AddColumn(WatchListView, WatchList.CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(WatchList.CHANGES));
ToolHelpers.AddColumn(WatchListView, WatchList.DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(WatchList.DIFF));
ColumnPositions();
}
@ -542,34 +567,34 @@ namespace BizHawk.MultiClient
private void SaveColumnInfo()
{
if (WatchListView.Columns[ADDRESS] != null)
if (WatchListView.Columns[WatchList.ADDRESS] != null)
{
Global.Config.RamSearchColumnIndexes[ADDRESS] = WatchListView.Columns[ADDRESS].DisplayIndex;
Global.Config.RamSearchColumnWidths[ADDRESS] = WatchListView.Columns[ADDRESS].Width;
Global.Config.RamSearchColumnIndexes[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
Global.Config.RamSearchColumnWidths[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].Width;
}
if (WatchListView.Columns[VALUE] != null)
if (WatchListView.Columns[WatchList.VALUE] != null)
{
Global.Config.RamSearchColumnIndexes[VALUE] = WatchListView.Columns[VALUE].DisplayIndex;
Global.Config.RamSearchColumnWidths[VALUE] = WatchListView.Columns[VALUE].Width;
Global.Config.RamSearchColumnIndexes[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].DisplayIndex;
Global.Config.RamSearchColumnWidths[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].Width;
}
if (WatchListView.Columns[PREV] != null)
if (WatchListView.Columns[WatchList.PREV] != null)
{
Global.Config.RamSearchColumnIndexes[PREV] = WatchListView.Columns[PREV].DisplayIndex;
Global.Config.RamSearchColumnWidths[PREV] = WatchListView.Columns[PREV].Width;
Global.Config.RamSearchColumnIndexes[WatchList.PREV] = WatchListView.Columns[WatchList.PREV].DisplayIndex;
Global.Config.RamSearchColumnWidths[WatchList.PREV] = WatchListView.Columns[WatchList.PREV].Width;
}
if (WatchListView.Columns[CHANGES] != null)
if (WatchListView.Columns[WatchList.CHANGES] != null)
{
Global.Config.RamSearchColumnIndexes[CHANGES] = WatchListView.Columns[CHANGES].DisplayIndex;
Global.Config.RamSearchColumnWidths[CHANGES] = WatchListView.Columns[CHANGES].Width;
Global.Config.RamSearchColumnIndexes[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].DisplayIndex;
Global.Config.RamSearchColumnWidths[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].Width;
}
if (WatchListView.Columns[DIFF] != null)
if (WatchListView.Columns[WatchList.DIFF] != null)
{
Global.Config.RamSearchColumnIndexes[DIFF] = WatchListView.Columns[DIFF].DisplayIndex;
Global.Config.RamSearchColumnWidths[DIFF] = WatchListView.Columns[DIFF].Width;
Global.Config.RamSearchColumnIndexes[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].DisplayIndex;
Global.Config.RamSearchColumnWidths[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].Width;
}
}
@ -700,7 +725,7 @@ namespace BizHawk.MultiClient
DifferenceRadio.Enabled = true;
DifferentByBox.Enabled = true;
ClearChangeCountsToolBarItem.Enabled = true;
WatchListView.Columns[CHANGES].Width = Global.Config.RamSearchColumnWidths[CHANGES];
WatchListView.Columns[WatchList.CHANGES].Width = Global.Config.RamSearchColumnWidths[WatchList.CHANGES];
SetReboot(true);
}
@ -723,8 +748,8 @@ namespace BizHawk.MultiClient
PreviousValueRadio.Checked = true;
}
Global.Config.RamSearchColumnWidths[CHANGES] = WatchListView.Columns[CHANGES].Width;
WatchListView.Columns[CHANGES].Width = 0;
Global.Config.RamSearchColumnWidths[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].Width;
WatchListView.Columns[WatchList.CHANGES].Width = 0;
SetReboot(true);
}
@ -846,15 +871,15 @@ namespace BizHawk.MultiClient
{
default:
return String.Empty;
case ADDRESS:
case WatchList.ADDRESS:
return Searches[index].AddressString;
case VALUE:
case WatchList.VALUE:
return Searches[index].ValueString;
case PREV:
case WatchList.PREV:
return Searches[index].PreviousStr;
case CHANGES:
case WatchList.CHANGES:
return Searches[index].ChangeCount.ToString();
case DIFF:
case WatchList.DIFF:
return Searches[index].Diff;
}
}
@ -911,7 +936,7 @@ namespace BizHawk.MultiClient
private void OpenMenuItem_Click(object sender, EventArgs e)
{
LoadWatchFile(
WatchList.GetFileFromUser(String.Empty),
ToolHelpers.GetWatchFileFromUser(String.Empty),
sender == AppendFileMenuItem,
sender == TruncateFromFileMenuItem
);
@ -928,10 +953,22 @@ namespace BizHawk.MultiClient
watches.Add(Searches[i]);
}
if (watches.Save())
if (!String.IsNullOrWhiteSpace(watches.CurrentFileName))
{
CurrentFileName = watches.CurrentFileName;
MessageLabel.Text = Path.GetFileName(CurrentFileName) + " saved";
if (watches.Save())
{
CurrentFileName = watches.CurrentFileName;
MessageLabel.Text = Path.GetFileName(CurrentFileName) + " saved";
}
}
else
{
bool result = watches.SaveAs(ToolHelpers.GetWatchSaveFileFromUser(watches.CurrentFileName));
if (result)
{
MessageLabel.Text = Path.GetFileName(CurrentFileName) + " saved";
Global.Config.RecentWatches.Add(watches.CurrentFileName);
}
}
}
}
@ -945,7 +982,7 @@ namespace BizHawk.MultiClient
watches.Add(Searches[i]);
}
if (watches.SaveAs())
if (watches.SaveAs(ToolHelpers.GetWatchSaveFileFromUser(watches.CurrentFileName)))
{
CurrentFileName = watches.CurrentFileName;
MessageLabel.Text = Path.GetFileName(CurrentFileName) + " saved";
@ -1123,6 +1160,10 @@ namespace BizHawk.MultiClient
if (Searches.CanUndo)
{
Searches.Undo();
SetTotal();
WatchListView.ItemCount = Searches.Count;
ToggleSearchDependentToolBarItems();
forcePreviewClear = true;
UpdateUndoToolBarButtons();
}
}
@ -1132,6 +1173,10 @@ namespace BizHawk.MultiClient
if (Searches.CanRedo)
{
Searches.Redo();
SetTotal();
WatchListView.ItemCount = Searches.Count;
ToggleSearchDependentToolBarItems();
forcePreviewClear = true;
UpdateUndoToolBarButtons();
}
}
@ -1274,11 +1319,11 @@ namespace BizHawk.MultiClient
Global.Config.RamSearchShowPrevColumn = true;
Global.Config.RamSearchShowDiffColumn = false;
WatchListView.Columns[ADDRESS].Width = DefaultColumnWidths[ADDRESS];
WatchListView.Columns[VALUE].Width = DefaultColumnWidths[VALUE];
//WatchListView.Columns[PREV].Width = DefaultColumnWidths[PREV];
WatchListView.Columns[CHANGES].Width = DefaultColumnWidths[CHANGES];
//WatchListView.Columns[DIFF].Width = DefaultColumnWidths[DIFF];
WatchListView.Columns[WatchList.ADDRESS].Width = DefaultColumnWidths[WatchList.ADDRESS];
WatchListView.Columns[WatchList.VALUE].Width = DefaultColumnWidths[WatchList.VALUE];
//WatchListView.Columns[WatchList.PREV].Width = DefaultColumnWidths[WatchList.PREV];
WatchListView.Columns[WatchList.CHANGES].Width = DefaultColumnWidths[WatchList.CHANGES];
//WatchListView.Columns[WatchList.DIFF].Width = DefaultColumnWidths[WatchList.DIFF];
Global.Config.RamSearchSaveWindowPosition = true;
Global.Config.RamSearchAlwaysOnTop = TopMost = false;
@ -1631,11 +1676,11 @@ namespace BizHawk.MultiClient
private void WatchListView_ColumnReordered(object sender, ColumnReorderedEventArgs e)
{
Global.Config.RamSearchColumnIndexes[ADDRESS] = WatchListView.Columns[ADDRESS].DisplayIndex;
Global.Config.RamSearchColumnIndexes[VALUE] = WatchListView.Columns[VALUE].DisplayIndex;
Global.Config.RamSearchColumnIndexes[PREV] = WatchListView.Columns[ADDRESS].DisplayIndex;
Global.Config.RamSearchColumnIndexes[CHANGES] = WatchListView.Columns[CHANGES].DisplayIndex;
Global.Config.RamSearchColumnIndexes[DIFF] = WatchListView.Columns[DIFF].DisplayIndex;
Global.Config.RamSearchColumnIndexes[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
Global.Config.RamSearchColumnIndexes[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].DisplayIndex;
Global.Config.RamSearchColumnIndexes[WatchList.PREV] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
Global.Config.RamSearchColumnIndexes[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].DisplayIndex;
Global.Config.RamSearchColumnIndexes[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].DisplayIndex;
}
private void WatchListView_Enter(object sender, EventArgs e)

View File

@ -737,6 +737,16 @@ namespace BizHawk.MultiClient
WatchListView.Refresh();
}
private void SaveAs()
{
bool result = Watches.SaveAs(ToolHelpers.GetWatchSaveFileFromUser(Watches.CurrentFileName));
if (result)
{
UpdateMessageLabel(saved: true);
Global.Config.RecentWatches.Add(Watches.CurrentFileName);
}
}
#region Winform Events
private void NewRamWatch_Load(object sender, EventArgs e)
@ -783,25 +793,27 @@ namespace BizHawk.MultiClient
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
bool append = sender == appendFileToolStripMenuItem;
LoadWatchFile(WatchList.GetFileFromUser(Watches.CurrentFileName), append);
LoadWatchFile(ToolHelpers.GetWatchFileFromUser(Watches.CurrentFileName), append);
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
if (Watches.Save())
if (!String.IsNullOrWhiteSpace(Watches.CurrentFileName))
{
UpdateMessageLabel(saved: true);
if (Watches.Save())
{
UpdateMessageLabel(saved: true);
}
}
else
{
SaveAs();
}
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
bool result = Watches.SaveAs();
if (result)
{
UpdateMessageLabel(saved: true);
Global.Config.RecentWatches.Add(Watches.CurrentFileName);
}
SaveAs();
}
private void recentToolStripMenuItem_DropDownOpened(object sender, EventArgs e)

View File

@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.PCE_Debugger", "Biz
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Client.Common", "BizHawk.Client.Common\BizHawk.Client.Common.csproj", "{24A0AA3C-B25F-4197-B23D-476D6462DBA0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Common", "BizHawk.Common\BizHawk.Common.csproj", "{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -89,6 +91,18 @@ Global
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Release|Win32.ActiveCfg = Release|Any CPU
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Release|x86.ActiveCfg = Release|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Debug|Win32.ActiveCfg = Debug|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Debug|x86.ActiveCfg = Debug|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Release|Any CPU.Build.0 = Release|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Release|Win32.ActiveCfg = Release|Any CPU
{866F8D13-0678-4FF9-80A4-A3993FD4D8A3}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE