From 249ddea2684eb76ed945302f3080cf3b25c1443a Mon Sep 17 00:00:00 2001 From: zeromus Date: Fri, 25 Oct 2013 00:34:01 +0000 Subject: [PATCH] revert to pre-refactor state. its a WIP, dont judge --- .../BizHawk.Client.Common.csproj | 140 -- BizHawk.Client.Common/Global.cs | 18 - BizHawk.Client.Common/config/Binding.cs | 204 --- BizHawk.Client.Common/movie/Subtitle.cs | 49 - .../BizHawk.Emulation_v4.5.csproj | 608 +++++++ .../Consoles/Nintendo/Gameboy/Gambatte.cs | 60 +- .../Database/FirmwareDatabase.cs | 20 +- BizHawk.MultiClient/AVOut/AviWriter.cs | 2 - BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs | 2 - BizHawk.MultiClient/AVOut/GifWriter.cs | 2 - BizHawk.MultiClient/AVOut/GifWriterForm.cs | 2 - BizHawk.MultiClient/AVOut/JMDWriter.cs | 2 - .../AVOut/VideoWriterChooserForm.cs | 2 - BizHawk.MultiClient/ArchiveChooser.cs | 2 - .../BizHawk.MultiClient.csproj | 80 +- .../BizHawk.MultiClient_v4.5.csproj | 1223 ++++++++++++++ .../config => BizHawk.MultiClient}/Config.cs | 492 ++++-- .../ConfigService.cs | 5 +- .../CoreFileProvider.cs | 4 +- .../DisplayManager/DisplayManager.cs | 26 +- .../FirmwareManager.cs | 3 +- .../{GlobalWinF.cs => Global.cs} | 16 +- .../HawkFile.cs | 2 +- .../Input/ControllerBinding.cs | 6 +- BizHawk.MultiClient/Input/GamePad.cs | 2 +- BizHawk.MultiClient/Input/Input.cs | 6 +- BizHawk.MultiClient/Input/Keyboard.cs | 2 +- BizHawk.MultiClient/LogConsole.cs | 2 - BizHawk.MultiClient/LogWindow.cs | 4 +- BizHawk.MultiClient/MainForm.MenuItems.cs | 152 +- BizHawk.MultiClient/MainForm.Movie.cs | 324 +--- BizHawk.MultiClient/MainForm.Rewind.cs | 6 +- BizHawk.MultiClient/MainForm.cs | 380 +++-- BizHawk.MultiClient/Program.cs | 14 +- .../RecentFiles.cs | 7 +- BizHawk.MultiClient/RenderPanel.cs | 12 +- .../RomGame.cs | 2 - BizHawk.MultiClient/SavestateManager.cs | 2 - BizHawk.MultiClient/Sound.cs | 6 +- BizHawk.MultiClient/Throttle.cs | 8 +- BizHawk.MultiClient/XmlGame.cs | 2 - BizHawk.MultiClient/config/AutofireConfig.cs | 12 +- .../config/ControllerConfig.cs | 18 +- .../ControllerConfig/AnalogBindControl.cs | 6 +- .../ControllerConfig/AnalogBindPanel.cs | 8 +- .../config/FirmwaresConfig.Designer.cs | 156 +- BizHawk.MultiClient/config/FirmwaresConfig.cs | 62 +- .../config/FirmwaresConfig.resx | 6 +- .../config/FirmwaresConfigInfo.Designer.cs | 201 --- .../config/FirmwaresConfigInfo.cs | 48 - BizHawk.MultiClient/config/GifAnimator.cs | 2 - BizHawk.MultiClient/config/HotkeyConfig.cs | 16 +- BizHawk.MultiClient/config/MessageConfig.cs | 6 +- BizHawk.MultiClient/config/PathConfig.cs | 6 +- BizHawk.MultiClient/config/PathManager.cs | 2 - BizHawk.MultiClient/config/RewindConfig.cs | 22 +- BizHawk.MultiClient/config/SoundConfig.cs | 12 +- BizHawk.MultiClient/movie/EditCommentsForm.cs | 4 +- .../movie/EditSubtitlesForm.cs | 11 +- .../movie/InputAdapters.cs | 2 +- .../movie/Movie.cs | 205 ++- .../movie/MovieHeader.cs | 26 +- BizHawk.MultiClient/movie/MovieImport.cs | 36 +- .../movie/MovieLog.cs | 8 +- .../movie/MovieMnemonics.cs | 2 +- .../movie/MovieSession.cs | 2 +- .../movie/MultitrackRecording.cs | 2 +- BizHawk.MultiClient/movie/PlayMovie.cs | 18 +- BizHawk.MultiClient/movie/RecordMovie.cs | 12 +- BizHawk.MultiClient/movie/Subtitle.cs | 44 + .../movie/SubtitleList.cs | 113 +- BizHawk.MultiClient/movie/SubtitleMaker.cs | 2 - .../tools/Cheats}/Cheat.cs | 21 +- .../tools/Cheats/CheatEdit.Designer.cs | 8 +- BizHawk.MultiClient/tools/Cheats/CheatEdit.cs | 2 - BizHawk.MultiClient/tools/Cheats/CheatForm.cs | 35 +- .../tools/Cheats}/CheatList.cs | 296 ++-- .../tools/GB/CGBColorChooserForm.cs | 2 - .../tools/GB/ColorChooserForm.cs | 2 - .../tools/GB/DualGBFileSelector.cs | 2 - BizHawk.MultiClient/tools/GB/GBGPUView.cs | 6 +- BizHawk.MultiClient/tools/GB/GBGameGenie.cs | 4 - BizHawk.MultiClient/tools/GBA/GBAGPUView.cs | 2 - .../tools/Genesis/GenGameGenie.cs | 4 - .../tools/HexEditor/HexColor.cs | 12 +- .../tools/HexEditor/HexEditor.cs | 45 +- .../tools/HexEditor/HexFind.cs | 6 +- .../tools/HexEditor/MemoryViewer.cs | 5 +- BizHawk.MultiClient/tools/InputPrompt.cs | 2 - BizHawk.MultiClient/tools/Lua/LuaConsole.cs | 24 +- .../tools/Lua/LuaDocumentation.cs | 2 +- .../tools/Lua/LuaFunctionList.cs | 20 +- .../tools/Lua/LuaImplementation.cs | 236 ++- .../tools/Lua/LuaRegisteredFunctionsList.cs | 8 +- BizHawk.MultiClient/tools/Lua/LuaTextBox.cs | 2 - .../tools/Lua/LuaWinform.Designer.cs | 2 +- BizHawk.MultiClient/tools/Lua/LuaWinform.cs | 4 +- BizHawk.MultiClient/tools/Lua/LuaWriter.cs | 13 +- .../Lua/LuaWriterColorConfig.Designer.cs | 2 +- .../tools/Lua/LuaWriterColorConfig.cs | 250 ++- .../tools/N64/N64VideoPluginconfig.cs | 4 +- BizHawk.MultiClient/tools/NES/NESDebugger.cs | 2 - BizHawk.MultiClient/tools/NES/NESGameGenie.cs | 4 +- .../tools/NES/NESGraphicsConfig.cs | 6 +- .../tools/NES/NESNameTableViewer.cs | 2 - BizHawk.MultiClient/tools/NES/NESPPU.cs | 2 - .../tools/NES/NESSoundConfig.cs | 14 +- .../tools/NES/NameTableViewer.cs | 6 +- .../tools/NES/PaletteViewer.cs | 6 +- .../tools/NES/PatternViewer.cs | 6 +- BizHawk.MultiClient/tools/NES/SpriteViewer.cs | 6 +- BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs | 2 - .../tools/PCE/PCEGraphicsConfig.cs | 2 - .../tools/SMS/SMSGraphicsConfig.cs | 2 - .../tools/SNES/SNESGameGenie.cs | 6 +- .../tools/SNES/SNESGraphicsDebugger.cs | 4 +- .../tools/Saturn/SaturnPrefs.Designer.cs | 2 +- .../tools/Saturn/SaturnPrefs.cs | 4 +- BizHawk.MultiClient/tools/StateVisualizer.cs | 14 +- .../tools/TAStudio.Designer.cs | 1412 ++++++++--------- BizHawk.MultiClient/tools/TAStudio.cs | 114 +- BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs | 102 +- BizHawk.MultiClient/tools/ToolBox.cs | 38 +- BizHawk.MultiClient/tools/ToolHelpers.cs | 70 +- BizHawk.MultiClient/tools/TraceLogger.cs | 20 +- .../tools/VirtualPads/VirtualPadA26.cs | 22 +- .../tools/VirtualPads/VirtualPadA26Control.cs | 10 +- .../tools/VirtualPads/VirtualPadA78.cs | 26 +- .../tools/VirtualPads/VirtualPadA78Control.cs | 18 +- .../tools/VirtualPads/VirtualPadButton.cs | 8 +- .../VirtualPads/VirtualPadC64Keyboard.cs | 290 ++-- .../tools/VirtualPads/VirtualPadColeco.cs | 74 +- .../tools/VirtualPads/VirtualPadForm.cs | 6 +- .../tools/VirtualPads/VirtualPadGB.cs | 34 +- .../tools/VirtualPads/VirtualPadGBA.cs | 42 +- .../tools/VirtualPads/VirtualPadGBControl.cs | 6 +- .../tools/VirtualPads/VirtualPadGen3Button.cs | 34 +- .../tools/VirtualPads/VirtualPadN64.cs | 6 +- .../tools/VirtualPads/VirtualPadN64Control.cs | 8 +- .../tools/VirtualPads/VirtualPadNES.cs | 34 +- .../tools/VirtualPads/VirtualPadNESControl.cs | 8 +- .../tools/VirtualPads/VirtualPadPCE.cs | 34 +- .../tools/VirtualPads/VirtualPadSMS.cs | 26 +- .../tools/VirtualPads/VirtualPadSMSControl.cs | 10 +- .../tools/VirtualPads/VirtualPadSNES.cs | 50 +- .../VirtualPads/VirtualPadSNESControl.cs | 10 +- .../tools/VirtualPads/VirtualPadSaturn.cs | 54 +- .../VirtualPads/VirtualPadSaturnControl.cs | 10 +- .../tools/Watch/RamPoke.Designer.cs | 4 +- BizHawk.MultiClient/tools/Watch/RamPoke.cs | 2 - .../tools/Watch/RamSearch.Designer.cs | 4 +- BizHawk.MultiClient/tools/Watch/RamSearch.cs | 16 +- .../tools/Watch/RamSearchEngine.cs | 2 - BizHawk.MultiClient/tools/Watch/RamWatch.cs | 24 +- .../tools/Watch}/Watch.cs | 8 +- .../tools/Watch/WatchEditor.cs | 2 - BizHawk.MultiClient/tools/Watch/WatchList.cs | 10 +- .../tools/Watch/WatchValueBox.cs | 3 - .../BizHawk.PCE_Debugger.csproj | 4 + BizHawk.PCE_Debugger/Mainform.Designer.cs | 93 +- BizHawk.PCE_Debugger/Mainform.cs | 29 +- BizHawk.PCE_Debugger/Program.cs | 28 +- BizHawk.Util/7z.dll | Bin 0 -> 878592 bytes .../7z/ArchiveEmulationStreamProxy.cs | 0 .../7z/ArchiveExtractCallback.cs | 0 .../7z/ArchiveOpenCallback.cs | 0 .../7z/ArchiveUpdateCallback.cs | 0 .../7z/COM.cs | 0 .../7z/Common.cs | 0 .../7z/EventArgs.cs | 0 .../7z/Exceptions.cs | 0 .../7z/FileSignatureChecker.cs | 0 .../7z/Formats.cs | 0 .../7z/LibraryFeature.cs | 0 .../7z/LibraryManager.cs | 0 .../7z/LzmaDecodeStream.cs | 0 .../7z/LzmaEncodeStream.cs | 0 .../7z/LzmaProgressCallback.cs | 0 .../7z/NativeMethods.cs | 0 .../7z/SevenZipCompressor.cs | 0 .../7z/SevenZipCompressorAsynchronous.cs | 0 .../7z/SevenZipExtractor.cs | 0 .../7z/SevenZipExtractorAsynchronous.cs | 0 .../7z/SevenZipSfx.cs | 0 .../7z/StreamWrappers.cs | 0 .../7z/arch/Test.bzip2.7z | Bin .../7z/arch/Test.lzma.7z | Bin .../7z/arch/Test.lzma2.7z | Bin .../7z/arch/Test.ppmd.7z | Bin .../7z/arch/Test.rar | Bin .../7z/arch/Test.tar | Bin .../7z/arch/Test.txt | 0 .../7z/arch/Test.txt.bz2 | Bin .../7z/arch/Test.txt.gz | Bin .../7z/arch/Test.txt.xz | Bin .../7z/arch/Test.zip | Bin .../7z/sdk/Common/CRC.cs | 0 .../7z/sdk/Common/InBuffer.cs | 0 .../7z/sdk/Common/OutBuffer.cs | 0 .../7z/sdk/Compress/LZ/IMatchFinder.cs | 0 .../7z/sdk/Compress/LZ/LzBinTree.cs | 0 .../7z/sdk/Compress/LZ/LzInWindow.cs | 0 .../7z/sdk/Compress/LZ/LzOutWindow.cs | 0 .../7z/sdk/Compress/LZMA/LzmaBase.cs | 0 .../7z/sdk/Compress/LZMA/LzmaDecoder.cs | 0 .../7z/sdk/Compress/LZMA/LzmaEncoder.cs | 0 .../7z/sdk/Compress/RangeCoder/RangeCoder.cs | 0 .../sdk/Compress/RangeCoder/RangeCoderBit.cs | 0 .../Compress/RangeCoder/RangeCoderBitTree.cs | 0 .../7z/sdk/ICoder.cs | 0 BizHawk.Util/BizHawk.Util.csproj | 205 +++ BizHawk.Util/BizHawk.Util_v4.5.csproj | 198 +++ .../FolderBrowserDialogEx.cs | 0 .../HexTextBox.cs | 2 - .../InputConfigBase.cs | 0 .../InputConfigBase.resx | 0 .../helpers => BizHawk.Util}/InputValidate.cs | 2 +- .../KeyTurbo.cs | 2 +- .../MiscControls.cs | 0 BizHawk.Util/Properties/AssemblyInfo.cs | 31 + BizHawk.Util/Properties/svnrev_template | 4 + .../QuickProgressPopup.Designer.cs | 0 .../QuickProgressPopup.cs | 0 .../QuickProgressPopup.resx | 0 .../SmartTextBoxControl.cs | 0 .../helpers => BizHawk.Util}/StringHelpers.cs | 2 +- .../TextDebugView.cs | 0 .../ToolStripEx.cs | 0 .../CustomControls => BizHawk.Util}/Util.cs | 3 - .../ViewportPanel.cs | 0 .../VirtualListView.cs | 0 .../CustomControls => BizHawk.Util}/Win32.cs | 0 BizHawk.sln | 42 +- BizHawk_2012.sln | 87 + LuaHawk/LuaHawk.csproj | 96 ++ LuaHawk/LuaHawkMainForm.Designer.cs | 107 ++ LuaHawk/LuaHawkMainForm.cs | 29 + LuaHawk/LuaHawkMainForm.resx | 1127 +++++++++++++ LuaHawk/Program.cs | 21 + .../Properties/AssemblyInfo.cs | 6 +- LuaHawk/Properties/Resources.Designer.cs | 71 + .../Properties/Resources.resx | 16 +- LuaHawk/Properties/Settings.Designer.cs | 30 + LuaHawk/Properties/Settings.settings | 7 + LuaHawk/logo.ico | Bin 0 -> 59916 bytes 245 files changed, 6918 insertions(+), 4057 deletions(-) delete mode 100644 BizHawk.Client.Common/BizHawk.Client.Common.csproj delete mode 100644 BizHawk.Client.Common/Global.cs delete mode 100644 BizHawk.Client.Common/config/Binding.cs delete mode 100644 BizHawk.Client.Common/movie/Subtitle.cs create mode 100644 BizHawk.Emulation/BizHawk.Emulation_v4.5.csproj create mode 100644 BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj rename {BizHawk.Client.Common/config => BizHawk.MultiClient}/Config.cs (56%) rename {BizHawk.Client.Common/config => BizHawk.MultiClient}/ConfigService.cs (90%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/CoreFileProvider.cs (83%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/FirmwareManager.cs (96%) rename BizHawk.MultiClient/{GlobalWinF.cs => Global.cs} (84%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/HawkFile.cs (95%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/RecentFiles.cs (88%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/RomGame.cs (95%) delete mode 100644 BizHawk.MultiClient/config/FirmwaresConfigInfo.Designer.cs delete mode 100644 BizHawk.MultiClient/config/FirmwaresConfigInfo.cs rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/InputAdapters.cs (95%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/Movie.cs (78%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/MovieHeader.cs (90%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/MovieLog.cs (88%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/MovieMnemonics.cs (96%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/MovieSession.cs (93%) rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/MultitrackRecording.cs (81%) create mode 100644 BizHawk.MultiClient/movie/Subtitle.cs rename {BizHawk.Client.Common => BizHawk.MultiClient}/movie/SubtitleList.cs (55%) rename {BizHawk.Client.Common/tools => BizHawk.MultiClient/tools/Cheats}/Cheat.cs (83%) rename {BizHawk.Client.Common/tools => BizHawk.MultiClient/tools/Cheats}/CheatList.cs (63%) rename {BizHawk.Client.Common/tools => BizHawk.MultiClient/tools/Watch}/Watch.cs (94%) create mode 100644 BizHawk.Util/7z.dll rename {BizHawk.Client.Common => BizHawk.Util}/7z/ArchiveEmulationStreamProxy.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/ArchiveExtractCallback.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/ArchiveOpenCallback.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/ArchiveUpdateCallback.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/COM.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/Common.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/EventArgs.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/Exceptions.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/FileSignatureChecker.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/Formats.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/LibraryFeature.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/LibraryManager.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/LzmaDecodeStream.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/LzmaEncodeStream.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/LzmaProgressCallback.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/NativeMethods.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/SevenZipCompressor.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/SevenZipCompressorAsynchronous.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/SevenZipExtractor.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/SevenZipExtractorAsynchronous.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/SevenZipSfx.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/StreamWrappers.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.bzip2.7z (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.lzma.7z (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.lzma2.7z (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.ppmd.7z (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.rar (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.tar (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.txt (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.txt.bz2 (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.txt.gz (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.txt.xz (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/arch/Test.zip (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Common/CRC.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Common/InBuffer.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Common/OutBuffer.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/LZ/IMatchFinder.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/LZ/LzBinTree.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/LZ/LzInWindow.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/LZ/LzOutWindow.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/LZMA/LzmaBase.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/LZMA/LzmaDecoder.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/LZMA/LzmaEncoder.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/RangeCoder/RangeCoder.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/RangeCoder/RangeCoderBit.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/Compress/RangeCoder/RangeCoderBitTree.cs (100%) rename {BizHawk.Client.Common => BizHawk.Util}/7z/sdk/ICoder.cs (100%) create mode 100644 BizHawk.Util/BizHawk.Util.csproj create mode 100644 BizHawk.Util/BizHawk.Util_v4.5.csproj rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/FolderBrowserDialogEx.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/HexTextBox.cs (93%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/InputConfigBase.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/InputConfigBase.resx (100%) rename {BizHawk.Client.Common/helpers => BizHawk.Util}/InputValidate.cs (95%) rename {BizHawk.Client.Common => BizHawk.Util}/KeyTurbo.cs (87%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/MiscControls.cs (100%) create mode 100644 BizHawk.Util/Properties/AssemblyInfo.cs create mode 100644 BizHawk.Util/Properties/svnrev_template rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/QuickProgressPopup.Designer.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/QuickProgressPopup.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/QuickProgressPopup.resx (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/SmartTextBoxControl.cs (100%) rename {BizHawk.Client.Common/helpers => BizHawk.Util}/StringHelpers.cs (92%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/TextDebugView.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/ToolStripEx.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/Util.cs (93%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/ViewportPanel.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/VirtualListView.cs (100%) rename {BizHawk.MultiClient/CustomControls => BizHawk.Util}/Win32.cs (100%) create mode 100644 BizHawk_2012.sln create mode 100644 LuaHawk/LuaHawk.csproj create mode 100644 LuaHawk/LuaHawkMainForm.Designer.cs create mode 100644 LuaHawk/LuaHawkMainForm.cs create mode 100644 LuaHawk/LuaHawkMainForm.resx create mode 100644 LuaHawk/Program.cs rename {BizHawk.Client.Common => LuaHawk}/Properties/AssemblyInfo.cs (87%) create mode 100644 LuaHawk/Properties/Resources.Designer.cs rename BizHawk.MultiClient/config/FirmwaresConfigInfo.resx => LuaHawk/Properties/Resources.resx (85%) create mode 100644 LuaHawk/Properties/Settings.Designer.cs create mode 100644 LuaHawk/Properties/Settings.settings create mode 100644 LuaHawk/logo.ico diff --git a/BizHawk.Client.Common/BizHawk.Client.Common.csproj b/BizHawk.Client.Common/BizHawk.Client.Common.csproj deleted file mode 100644 index c44a270aac..0000000000 --- a/BizHawk.Client.Common/BizHawk.Client.Common.csproj +++ /dev/null @@ -1,140 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {24A0AA3C-B25F-4197-B23D-476D6462DBA0} - Library - Properties - BizHawk.Client.Common - BizHawk.Client.Common - v4.0 - 512 - - - true - full - false - bin\Release\ - TRACE;DEBUG;DOTNET20;UNMANAGED;COMPRESS - prompt - 4 - true - - - pdbonly - true - bin\Release\ - TRACE;DOTNET20;UNMANAGED;COMPRESS - prompt - 4 - true - - - - ..\Newtonsoft.Json.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {197D4314-8A9F-49BA-977D-54ACEFAEB6BA} - BizHawk.Emulation - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/BizHawk.Client.Common/Global.cs b/BizHawk.Client.Common/Global.cs deleted file mode 100644 index 91de5f80a6..0000000000 --- a/BizHawk.Client.Common/Global.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace BizHawk.Client.Common -{ - public static class Global - { - public static IEmulator Emulator; - public static Config Config; - public static GameInfo Game; - public static CheatList CheatList; - - //Movie - - /// - /// the global MovieSession can use this to deal with multitrack player remapping (should this be here? maybe it should be in MovieSession) - /// - public static MultitrackRewiringControllerAdapter MultitrackRewiringControllerAdapter = new MultitrackRewiringControllerAdapter(); - public static MovieSession MovieSession = new MovieSession(); - } -} diff --git a/BizHawk.Client.Common/config/Binding.cs b/BizHawk.Client.Common/config/Binding.cs deleted file mode 100644 index 846a006ae1..0000000000 --- a/BizHawk.Client.Common/config/Binding.cs +++ /dev/null @@ -1,204 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using System.Linq; - -namespace BizHawk.Client.Common -{ - public class Binding - { - public string DisplayName; - public string Bindings; - public string DefaultBinding; - public string TabGroup; - public int Ordinal = 0; - } - - public class BindingCollection : IEnumerable - { - public List Bindings { get; private set; } - - public BindingCollection() - { - Bindings = new List(); - Bindings.AddRange(DefaultValues); - } - - public void Add(Binding b) - { - Bindings.Add(b); - } - - public IEnumerator GetEnumerator() - { - return Bindings.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public Binding this[string index] - { - get - { - return Bindings.FirstOrDefault(x => x.DisplayName == index) ?? new Binding(); - } - } - - public void ResolveWithDefaults() - { - //Add missing entries - foreach (Binding default_binding in DefaultValues) - { - var binding = Bindings.FirstOrDefault(x => x.DisplayName == default_binding.DisplayName); - if (binding == null) - { - Bindings.Add(default_binding); - } - } - - List entriesToRemove = (from entry in Bindings let binding = DefaultValues.FirstOrDefault(x => x.DisplayName == entry.DisplayName) where binding == null select entry).ToList(); - - //Remove entries that no longer exist in defaults - - foreach (Binding entry in entriesToRemove) - { - Bindings.Remove(entry); - } - } - - public static List DefaultValues - { - get - { - return new List - { - //General - new Binding { DisplayName = "Frame Advance", Bindings = "F", TabGroup = "General", DefaultBinding = "F", Ordinal = 0 }, - new Binding { DisplayName = "Rewind", Bindings = "Shift+R, J1 B7, X1 Left Trigger", TabGroup = "General", DefaultBinding = "Shift+R, J1 B7, X1 Left Trigger", Ordinal = 1 }, - new Binding { DisplayName = "Pause", Bindings = "Pause", TabGroup = "General", DefaultBinding = "Pause", Ordinal = 2 }, - new Binding { DisplayName = "Fast Forward", Bindings = "Tab, J1 B8, X1 Right Trigger", TabGroup = "General", DefaultBinding = "Tab, J1 B8, X1 Right Trigger", Ordinal = 3 }, - new Binding { DisplayName = "Turbo", Bindings = "Shift+Tab", TabGroup = "General", DefaultBinding = "Shift+Tab", Ordinal = 4 }, - new Binding { DisplayName = "Toggle Throttle", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 5 }, - new Binding { DisplayName = "Soft Reset", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 6 }, - new Binding { DisplayName = "Hard Reset", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 7 }, - new Binding { DisplayName = "Quick Load", Bindings = "P", TabGroup = "General", DefaultBinding = "P", Ordinal = 8 }, - new Binding { DisplayName = "Quick Save", Bindings = "I", TabGroup = "General", DefaultBinding = "I", Ordinal = 9 }, - new Binding { DisplayName = "Autohold", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 10 }, - new Binding { DisplayName = "Clear Autohold", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 11 }, - new Binding { DisplayName = "Screenshot", Bindings = "F12", TabGroup = "General", DefaultBinding = "F12", Ordinal = 12 }, - new Binding { DisplayName = "Full Screen", Bindings = "Alt+Return", TabGroup = "General", DefaultBinding = "Alt+Return", Ordinal = 13 }, - new Binding { DisplayName = "Open ROM", Bindings = "Ctrl+O", TabGroup = "General", DefaultBinding = "Ctrl+O", Ordinal = 14 }, - new Binding { DisplayName = "Close ROM", Bindings = "Ctrl+W", TabGroup = "General", DefaultBinding = "Ctrl+W", Ordinal = 15 }, - new Binding { DisplayName = "Display FPS", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 16 }, - new Binding { DisplayName = "Frame Counter", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 17 }, - new Binding { DisplayName = "Lag Counter", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 18 }, - new Binding { DisplayName = "Input Display", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 19 }, - new Binding { DisplayName = "Toggle BG Input", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 20 }, - new Binding { DisplayName = "Toggle Menu", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 21 }, - new Binding { DisplayName = "Volume Up", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 22 }, - new Binding { DisplayName = "Volume Down", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 23 }, - new Binding { DisplayName = "Record A/V", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 24 }, - new Binding { DisplayName = "Stop A/V", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 25 }, - new Binding { DisplayName = "Larger Window", Bindings = "Alt+UpArrow", TabGroup = "General", DefaultBinding = "Alt+UpArrow", Ordinal = 26 }, - new Binding { DisplayName = "Smaller Window", Bindings = "Alt+DownArrow", TabGroup = "General", DefaultBinding = "Alt+DownArrow", Ordinal = 27 }, - new Binding { DisplayName = "Increase Speed", Bindings = "Equals", TabGroup = "General", DefaultBinding = "Equals", Ordinal = 28 }, - new Binding { DisplayName = "Decrease Speed", Bindings = "Minus", TabGroup = "General", DefaultBinding = "Minus", Ordinal = 29 }, - new Binding { DisplayName = "Reboot Core", Bindings = "Ctrl+R", TabGroup = "General", DefaultBinding = "Ctrl+R", Ordinal = 30 }, - new Binding { DisplayName = "Autofire", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 31 }, - - //Save States - new Binding { DisplayName = "Save State 0", Bindings = "Shift+F10", TabGroup = "Save States", DefaultBinding = "Shift+F10", Ordinal = 1 }, - new Binding { DisplayName = "Save State 1", Bindings = "Shift+F1", TabGroup = "Save States", DefaultBinding = "Shift+F1", Ordinal = 2 }, - new Binding { DisplayName = "Save State 2", Bindings = "Shift+F2", TabGroup = "Save States", DefaultBinding = "Shift+F2", Ordinal = 3 }, - new Binding { DisplayName = "Save State 3", Bindings = "Shift+F3", TabGroup = "Save States", DefaultBinding = "Shift+F3", Ordinal = 4 }, - new Binding { DisplayName = "Save State 4", Bindings = "Shift+F4", TabGroup = "Save States", DefaultBinding = "Shift+F4", Ordinal = 5 }, - new Binding { DisplayName = "Save State 5", Bindings = "Shift+F5", TabGroup = "Save States", DefaultBinding = "Shift+F5", Ordinal = 6 }, - new Binding { DisplayName = "Save State 6", Bindings = "Shift+F6", TabGroup = "Save States", DefaultBinding = "Shift+F6", Ordinal = 7 }, - new Binding { DisplayName = "Save State 7", Bindings = "Shift+F7", TabGroup = "Save States", DefaultBinding = "Shift+F7", Ordinal = 8 }, - new Binding { DisplayName = "Save State 8", Bindings = "Shift+F8", TabGroup = "Save States", DefaultBinding = "Shift+F8", Ordinal = 9 }, - new Binding { DisplayName = "Save State 9", Bindings = "Shift+F9", TabGroup = "Save States", DefaultBinding = "Shift+F9", Ordinal = 10 }, - new Binding { DisplayName = "Load State 0", Bindings = "F10", TabGroup = "Save States", DefaultBinding = "F10", Ordinal = 11 }, - new Binding { DisplayName = "Load State 1", Bindings = "F1", TabGroup = "Save States", DefaultBinding = "F1", Ordinal = 12 }, - new Binding { DisplayName = "Load State 2", Bindings = "F2", TabGroup = "Save States", DefaultBinding = "F2", Ordinal = 13 }, - new Binding { DisplayName = "Load State 3", Bindings = "F3", TabGroup = "Save States", DefaultBinding = "F3", Ordinal = 14 }, - new Binding { DisplayName = "Load State 4", Bindings = "F4", TabGroup = "Save States", DefaultBinding = "F4", Ordinal = 15 }, - new Binding { DisplayName = "Load State 5", Bindings = "F5", TabGroup = "Save States", DefaultBinding = "F5", Ordinal = 16 }, - new Binding { DisplayName = "Load State 6", Bindings = "F6", TabGroup = "Save States", DefaultBinding = "F6", Ordinal = 17 }, - new Binding { DisplayName = "Load State 7", Bindings = "F7", TabGroup = "Save States", DefaultBinding = "F7", Ordinal = 18 }, - new Binding { DisplayName = "Load State 8", Bindings = "F8", TabGroup = "Save States", DefaultBinding = "F8", Ordinal = 19 }, - new Binding { DisplayName = "Load State 9", Bindings = "F9", TabGroup = "Save States", DefaultBinding = "F9", Ordinal = 20 }, - new Binding { DisplayName = "Select State 0", Bindings = "D0", TabGroup = "Save States", DefaultBinding = "D0", Ordinal = 21 }, - new Binding { DisplayName = "Select State 1", Bindings = "D1", TabGroup = "Save States", DefaultBinding = "D1", Ordinal = 22 }, - new Binding { DisplayName = "Select State 2", Bindings = "D2", TabGroup = "Save States", DefaultBinding = "D2", Ordinal = 23 }, - new Binding { DisplayName = "Select State 3", Bindings = "D3", TabGroup = "Save States", DefaultBinding = "D3", Ordinal = 24 }, - new Binding { DisplayName = "Select State 4", Bindings = "D4", TabGroup = "Save States", DefaultBinding = "D4", Ordinal = 25 }, - new Binding { DisplayName = "Select State 5", Bindings = "D5", TabGroup = "Save States", DefaultBinding = "D5", Ordinal = 26 }, - new Binding { DisplayName = "Select State 6", Bindings = "D6", TabGroup = "Save States", DefaultBinding = "D6", Ordinal = 27 }, - new Binding { DisplayName = "Select State 7", Bindings = "D7", TabGroup = "Save States", DefaultBinding = "D7", Ordinal = 28 }, - new Binding { DisplayName = "Select State 8", Bindings = "D8", TabGroup = "Save States", DefaultBinding = "D8", Ordinal = 29 }, - new Binding { DisplayName = "Select State 9", Bindings = "D9", TabGroup = "Save States", DefaultBinding = "D9", Ordinal = 30 }, - new Binding { DisplayName = "Save Named State", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 31 }, - new Binding { DisplayName = "Load Named State", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 32 }, - new Binding { DisplayName = "Previous Slot", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 33 }, - new Binding { DisplayName = "Next Slot", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 34 }, - - //Movie - new Binding { DisplayName = "Toggle read-only", Bindings = "Q", TabGroup = "Movie", DefaultBinding = "Q", Ordinal = 0 }, - new Binding { DisplayName = "Play Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 1 }, - new Binding { DisplayName = "Record Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 2 }, - new Binding { DisplayName = "Stop Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 3 }, - new Binding { DisplayName = "Play from beginning", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 4 }, - new Binding { DisplayName = "Save Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 5 }, - new Binding { DisplayName = "Toggle MultiTrack", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 6 }, - new Binding { DisplayName = "MT Select All", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 7 }, - new Binding { DisplayName = "MT Select None", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 8 }, - new Binding { DisplayName = "MT Increment Player", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 9 }, - new Binding { DisplayName = "MT Decrement Player", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 10 }, - new Binding { DisplayName = "Movie Poke", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 11 }, - new Binding { DisplayName = "Scrub Input", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 12 }, - - //Tools - new Binding { DisplayName = "Ram Watch", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 0 }, - new Binding { DisplayName = "Ram Search", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 1 }, - new Binding { DisplayName = "Hex Editor", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 3 }, - new Binding { DisplayName = "Trace Logger", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 4 }, - new Binding { DisplayName = "Lua Console", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 5 }, - new Binding { DisplayName = "Cheats", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 6 }, - new Binding { DisplayName = "TAStudio", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 7 }, - new Binding { DisplayName = "ToolBox", Bindings = "T", TabGroup = "Tools", DefaultBinding = "", Ordinal = 8 }, - new Binding { DisplayName = "Virtual Pad", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 9 }, - - new Binding { DisplayName = "New Search", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 10 }, - new Binding { DisplayName = "Do Search", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 11 }, - new Binding { DisplayName = "Previous Compare To", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 12 }, - new Binding { DisplayName = "Next Compare To", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 13 }, - new Binding { DisplayName = "Previous Operator", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 14 }, - new Binding { DisplayName = "Next Operator", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 15 }, - - //SNES - new Binding { DisplayName = "Toggle BG 1", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 0 }, - new Binding { DisplayName = "Toggle BG 2", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 1 }, - new Binding { DisplayName = "Toggle BG 3", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 2 }, - new Binding { DisplayName = "Toggle BG 4", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 3 }, - new Binding { DisplayName = "Toggle OBJ 1", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 4 }, - new Binding { DisplayName = "Toggle OBJ 2", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 5 }, - new Binding { DisplayName = "Toggle OBJ 3", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 6 }, - new Binding { DisplayName = "Toggle OBJ 4", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 7 }, - - //Analog - new Binding { DisplayName = "Y Up Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 0 }, - new Binding { DisplayName = "Y Up Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 1 }, - new Binding { DisplayName = "Y Down Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 2 }, - new Binding { DisplayName = "Y Down Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 3 }, - new Binding { DisplayName = "X Up Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 4 }, - new Binding { DisplayName = "X Up Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 5 }, - new Binding { DisplayName = "X Down Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 6 }, - new Binding { DisplayName = "X Down Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 7 }, - - }; - } - } - } -} diff --git a/BizHawk.Client.Common/movie/Subtitle.cs b/BizHawk.Client.Common/movie/Subtitle.cs deleted file mode 100644 index e897d36255..0000000000 --- a/BizHawk.Client.Common/movie/Subtitle.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Text; - -namespace BizHawk.Client.Common -{ - public class Subtitle - { - public string Message { get; set; } - public int Frame { get; set; } - public int X { get; set; } - public int Y { get; set; } - public int Duration { get; set; } - public uint Color { get; set; } - - public Subtitle() - { - Message = String.Empty; - X = 0; - Y = 0; - Duration = 120; - Frame = 0; - Color = 0xFFFFFFFF; - } - - public Subtitle(Subtitle s) - { - Message = s.Message; - Frame = s.Frame; - X = s.X; - Y = s.Y; - Duration = s.Duration; - Color = s.Color; - } - - public override string ToString() - { - StringBuilder sb = new StringBuilder("subtitle "); - sb - .Append(Frame.ToString()).Append(" ") - .Append(X.ToString()).Append(" ") - .Append(Y.ToString()).Append(" ") - .Append(Duration.ToString()).Append(" ") - .Append(String.Format("{0:X8}", Color)).Append(" ") - .Append(Message); - - return sb.ToString(); - } - } -} diff --git a/BizHawk.Emulation/BizHawk.Emulation_v4.5.csproj b/BizHawk.Emulation/BizHawk.Emulation_v4.5.csproj new file mode 100644 index 0000000000..0ff914c21d --- /dev/null +++ b/BizHawk.Emulation/BizHawk.Emulation_v4.5.csproj @@ -0,0 +1,608 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA} + Library + Properties + BizHawk.Emulation + BizHawk.Emulation + v4.5 + 512 + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + true + false + AllRules.ruleset + false + + + pdbonly + true + bin\Release\ + TRACE;VS2012 + prompt + 4 + x86 + true + AllRules.ruleset + false + false + + + + False + ..\BizHawk.MultiClient\output\dll\EMU7800.dll + + + + 3.5 + + + + + 3.5 + + + 3.5 + + + + + + + VersionInfo.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + + + + + + + + Code + + + + Code + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + + + + Code + + + + + + + + + + + + Code + + + + + + + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + Code + + + Code + + + + + + + + + + Code + + + + Code + + + Code + + + + Code + + + Code + + + + Code + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + + + + + + + + + "$(SolutionDir)subwcrev.bat" "$(ProjectDir)" + "$(SolutionDir)subwcrev.sh" "$(ProjectDir)" + + + \ No newline at end of file diff --git a/BizHawk.Emulation/Consoles/Nintendo/Gameboy/Gambatte.cs b/BizHawk.Emulation/Consoles/Nintendo/Gameboy/Gambatte.cs index f5fc2c0380..30ea61310b 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/Gameboy/Gambatte.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/Gameboy/Gambatte.cs @@ -194,14 +194,9 @@ namespace BizHawk.Emulation.Consoles.GB LibGambatte.gambatte_runfor(GambatteState, VideoBuffer, 160, soundbuff, ref nsamp); if (rendersound) - { soundbuffcontains = (int)nsamp; - ProcessSound(); - } else - { soundbuffcontains = 0; - } FrameAdvancePost(); } @@ -782,7 +777,7 @@ namespace BizHawk.Emulation.Consoles.GB #region ISoundProvider public ISoundProvider SoundProvider { get { return null; } } - public ISyncSoundProvider SyncSoundProvider { get { return this; } } + public ISyncSoundProvider SyncSoundProvider { get { return dcfilter; } } public bool StartAsyncSound() { return false; } public void EndAsyncSound() { } @@ -795,58 +790,21 @@ namespace BizHawk.Emulation.Consoles.GB /// int soundbuffcontains = 0; - int soundoutbuffcontains = 0; - - short[] soundoutbuff = new short[2048]; - - int latchaudio = 0; - - //Sound.Utilities.SpeexResampler resampler; - //Sound.Utilities.DCFilter dcfilter; - - Sound.Utilities.BlipBuffer blip; - - void ProcessSound() - { - for (uint i = 0; i < soundbuffcontains; i++) - { - int curr = soundbuff[i * 2]; - - if (curr != latchaudio) - { - int diff = latchaudio - curr; - latchaudio = curr; - blip.AddDelta(i, diff); - } - } - blip.EndFrame((uint)soundbuffcontains); - - soundoutbuffcontains = blip.SamplesAvailable(); - - blip.ReadSamples(soundoutbuff, soundoutbuffcontains, true); - for (int i = 0; i < soundoutbuffcontains * 2; i += 2) - soundoutbuff[i + 1] = soundoutbuff[i]; - - soundbuffcontains = 0; - - } + Sound.Utilities.SpeexResampler resampler; + Sound.Utilities.DCFilter dcfilter; void InitSound() { - //resampler = new Sound.Utilities.SpeexResampler(2, 2097152, 44100, 2097152, 44100, null, this); + resampler = new Sound.Utilities.SpeexResampler(2, 2097152, 44100, 2097152, 44100, null, this); //dcfilter = Sound.Utilities.DCFilter.AsISyncSoundProvider(resampler, 65536); // lowpass filtering on an actual GB was probably pretty aggressive? - //dcfilter = Sound.Utilities.DCFilter.AsISyncSoundProvider(resampler, 2048); - blip = new Sound.Utilities.BlipBuffer(1024); - blip.SetRates(2097152, 44100); + dcfilter = Sound.Utilities.DCFilter.AsISyncSoundProvider(resampler, 2048); } void DisposeSound() { - blip.Dispose(); - blip = null; - //resampler.Dispose(); - //resampler = null; + resampler.Dispose(); + resampler = null; } public void DiscardSamples() @@ -856,8 +814,8 @@ namespace BizHawk.Emulation.Consoles.GB public void GetSamples(out short[] samples, out int nsamp) { - samples = soundoutbuff; - nsamp = soundoutbuffcontains; + samples = soundbuff; + nsamp = soundbuffcontains; } #endregion diff --git a/BizHawk.Emulation/Database/FirmwareDatabase.cs b/BizHawk.Emulation/Database/FirmwareDatabase.cs index d50f79024f..82ef8a84a6 100644 --- a/BizHawk.Emulation/Database/FirmwareDatabase.cs +++ b/BizHawk.Emulation/Database/FirmwareDatabase.cs @@ -33,6 +33,7 @@ namespace BizHawk FirmwareAndOption("300C20DF6731A33952DED8C436F7F186D25D3492", "GBA", "Bios", "gbabios.rom", "Bios"); //FirmwareAndOption("24F67BDEA115A2C847C8813A262502EE1607B7DF", "NDS", "Bios_Arm7", "biosnds7.rom", "ARM7 Bios"); //FirmwareAndOption("BFAAC75F101C135E32E2AAF541DE6B1BE4C8C62D", "NDS", "Bios_Arm9", "biosnds9.rom", "ARM9 Bios"); + FirmwareAndOption("EF66DAD3E7B2B6A86F326765E7DFD7D1A308AD8F", "TI83", "Rom", "ti83_1.rom", "TI-83 Rom"); FirmwareAndOption("5A65B922B562CB1F57DAB51B73151283F0E20C7A", "INTV", "EROM", "erom.bin", "Executive Rom"); FirmwareAndOption("F9608BB4AD1CFE3640D02844C7AD8E0BCD974917", "INTV", "GROM", "grom.bin", "Graphics Rom"); FirmwareAndOption("1D503E56DF85A62FEE696E7618DC5B4E781DF1BB", "C64", "Kernal", "c64-kernal.bin", "Kernal Rom"); @@ -60,25 +61,6 @@ namespace BizHawk Option("SAT", "E", ss_100a_ue); Option("SAT", "E", ss_100_j); Option("SAT", "E", ss_101_j); - - var ti83_102 = File("CE08F6A808701FC6672230A790167EE485157561", "ti83_102.rom", "TI-83 Rom v1.02"); - var ti83_103 = File("8399E384804D8D29866CAA4C8763D7A61946A467", "ti83_103.rom", "TI-83 Rom v1.03"); - var ti83_104 = File("33877FF637DC5F4C5388799FD7E2159B48E72893", "ti83_104.rom", "TI-83 Rom v1.04"); - var ti83_106 = File("3D65C2A1B771CE8E5E5A0476EC1AA9C9CDC0E833", "ti83_106.rom", "TI-83 Rom v1.06"); - var ti83_107 = File("EF66DAD3E7B2B6A86F326765E7DFD7D1A308AD8F", "ti83_107.rom", "TI-83 Rom v1.07"); //formerly the 1.?? recommended one - var ti83_108 = File("9C74F0B61655E9E160E92164DB472AD7EE02B0F8", "ti83_108.rom", "TI-83 Rom v1.08"); - var ti83p_103 = File("37EAEEB9FB5C18FB494E322B75070E80CC4D858E", "ti83p_103b.rom", "TI-83 Plus Rom v1.03"); - var ti83p_112 = File("6615DF5554076B6B81BD128BF847D2FF046E556B", "ti83p_112.rom", "TI-83 Plus Rom v1.12"); - - Firmware("TI83", "Rom", "TI-83 Rom"); - Option("TI83", "Rom", ti83_102); - Option("TI83", "Rom", ti83_103); - Option("TI83", "Rom", ti83_104); - Option("TI83", "Rom", ti83_106); - Option("TI83", "Rom", ti83_107); - Option("TI83", "Rom", ti83_108); - Option("TI83", "Rom", ti83p_103); - Option("TI83", "Rom", ti83p_112); } //adds a defined firmware ID to the database diff --git a/BizHawk.MultiClient/AVOut/AviWriter.cs b/BizHawk.MultiClient/AVOut/AviWriter.cs index c0b1ebd79f..b74cc553bc 100644 --- a/BizHawk.MultiClient/AVOut/AviWriter.cs +++ b/BizHawk.MultiClient/AVOut/AviWriter.cs @@ -3,8 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; -using BizHawk.Client.Common; - //some helpful p/invoke from http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx?msg=1142967 namespace BizHawk.MultiClient diff --git a/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs b/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs index 8e18f84052..92a56088bb 100644 --- a/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs +++ b/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { /// diff --git a/BizHawk.MultiClient/AVOut/GifWriter.cs b/BizHawk.MultiClient/AVOut/GifWriter.cs index 2029977ed2..981c77a813 100644 --- a/BizHawk.MultiClient/AVOut/GifWriter.cs +++ b/BizHawk.MultiClient/AVOut/GifWriter.cs @@ -5,8 +5,6 @@ using System.Text; using System.IO; using System.Drawing; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.AVOut { public class GifWriter : IVideoWriter diff --git a/BizHawk.MultiClient/AVOut/GifWriterForm.cs b/BizHawk.MultiClient/AVOut/GifWriterForm.cs index 76eb79e0d8..39fb9725d6 100644 --- a/BizHawk.MultiClient/AVOut/GifWriterForm.cs +++ b/BizHawk.MultiClient/AVOut/GifWriterForm.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.AVOut { public partial class GifWriterForm : Form diff --git a/BizHawk.MultiClient/AVOut/JMDWriter.cs b/BizHawk.MultiClient/AVOut/JMDWriter.cs index fd154f2719..3ea8f754e8 100644 --- a/BizHawk.MultiClient/AVOut/JMDWriter.cs +++ b/BizHawk.MultiClient/AVOut/JMDWriter.cs @@ -7,8 +7,6 @@ using System.Text; using ICSharpCode.SharpZipLib.Zip.Compression.Streams; using ICSharpCode.SharpZipLib.Zip.Compression; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { /// diff --git a/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs b/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs index 1632ac359e..80cbdc0a9f 100644 --- a/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs +++ b/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { /// diff --git a/BizHawk.MultiClient/ArchiveChooser.cs b/BizHawk.MultiClient/ArchiveChooser.cs index 232c49b823..47dfa6458a 100644 --- a/BizHawk.MultiClient/ArchiveChooser.cs +++ b/BizHawk.MultiClient/ArchiveChooser.cs @@ -4,8 +4,6 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class ArchiveChooser : Form diff --git a/BizHawk.MultiClient/BizHawk.MultiClient.csproj b/BizHawk.MultiClient/BizHawk.MultiClient.csproj index aa7275b8e6..5aeadbc718 100644 --- a/BizHawk.MultiClient/BizHawk.MultiClient.csproj +++ b/BizHawk.MultiClient/BizHawk.MultiClient.csproj @@ -60,7 +60,6 @@ true false AllRules.ruleset - WINDOWS true @@ -160,6 +159,8 @@ BizBox.cs + + Form @@ -193,12 +194,6 @@ FirmwaresConfig.cs - - Form - - - FirmwaresConfigInfo.cs - Form @@ -245,44 +240,12 @@ SoundConfig.cs - - Component - - - Component - - - Form - - - Component - - - Form - - - QuickProgressPopup.cs - - - Component - - - Component - - - Component - - - - Component - - - Component - - + - + + + @@ -308,6 +271,7 @@ EditCommentsForm.cs + Form @@ -325,7 +289,13 @@ EditSubtitlesForm.cs + + + + + + Form @@ -338,6 +308,8 @@ RecordMovie.cs + + Form @@ -353,6 +325,7 @@ + UserControl @@ -365,6 +338,7 @@ CheatForm.cs + Form @@ -734,6 +708,7 @@ RamWatch.cs + Form @@ -770,9 +745,6 @@ FirmwaresConfig.cs - - FirmwaresConfigInfo.cs - GifAnimator.cs @@ -788,12 +760,6 @@ RewindConfig.cs - - InputConfigBase.cs - - - QuickProgressPopup.cs - MainForm.cs Designer @@ -989,7 +955,9 @@ InputPrompt.cs + + @@ -1006,14 +974,14 @@ - - {24A0AA3C-B25F-4197-B23D-476D6462DBA0} - BizHawk.Client.Common - {197D4314-8A9F-49BA-977D-54ACEFAEB6BA} BizHawk.Emulation + + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9} + BizHawk.Util + diff --git a/BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj b/BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj new file mode 100644 index 0000000000..b57467b34a --- /dev/null +++ b/BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj @@ -0,0 +1,1223 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {DD448B37-BA3F-4544-9754-5406E8094723} + WinExe + Properties + BizHawk.MultiClient + BizHawk.MultiClient + v4.5 + 512 + + + false + images\logo.ico + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + WINDOWS + + + true + full + false + output\ + $(DefineConstants);DEBUG + prompt + 4 + x86 + false + true + AllRules.ruleset + false + + + pdbonly + true + output\ + prompt + 4 + x86 + true + false + AllRules.ruleset + false + + + true + + + + ..\ICSharpCode.SharpZipLib.dll + + + False + .\LuaInterface.dll + + + + False + ..\Newtonsoft.Json.dll + + + + 3.5 + + + + + + 3.5 + + + 3.5 + + + + + + + + False + ..\SlimDX.dll + + + + + VersionInfo.cs + + + Form + + + AboutBox.cs + + + Form + + + ArchiveChooser.cs + + + + + + Form + + + FFmpegWriterForm.cs + + + + Form + + + GifWriterForm.cs + + + + Form + + + JMDForm.cs + + + + Component + + + + + Form + + + VideoWriterChooserForm.cs + + + + + Form + + + BizBox.cs + + + + + Form + + + AutofireConfig.cs + + + Form + + + ControllerConfig.cs + + + UserControl + + + AnalogBindControl.cs + + + UserControl + + + UserControl + + + ControllerConfigPanel.cs + + + Form + + + FirmwaresConfig.cs + + + Form + + + GifAnimator.cs + + + Form + + + HotkeyConfig.cs + + + Component + + + Form + + + MessageConfig.cs + + + Form + + + PathConfig.cs + + + Form + + + PathInfo.cs + + + + Form + + + RewindConfig.cs + + + Form + + + SoundConfig.cs + + + + + + + + + + + + + + Form + + + LogWindow.cs + + + MainForm.cs + Form + + + MainForm.cs + Form + + + Form + + + EditCommentsForm.cs + + + + + Form + + + MainForm.cs + + + MainForm.cs + Form + + + Form + + + EditSubtitlesForm.cs + + + + + + + + + + Form + + + PlayMovie.cs + + + Form + + + RecordMovie.cs + + + + + Form + + + SubtitleMaker.cs + + + + Form + + + NameStateForm.cs + + + + + UserControl + + + CheatEdit.cs + + + + + Form + + + CheatForm.cs + + + Form + + + GBAGPUView.cs + + + Form + + + MobileBmpView.cs + + + Form + + + MobileDetailView.cs + + + Component + + + Form + + + CGBColorChooserForm.cs + + + Form + + + ColorChooserForm.cs + + + UserControl + + + DualGBFileSelector.cs + + + Form + + + DualGBXMLCreator.cs + + + Form + + + GBGameGenie.cs + + + Form + + + GBGPUView.cs + + + Form + + + GenGameGenie.cs + + + Form + + + HexColor.cs + + + Form + + + HexEditor.cs + + + Form + + + HexFind.cs + + + Component + + + Component + + + Form + + + LuaConsole.cs + + + + + Form + + + LuaFunctionList.cs + + + + Form + + + LuaRegisteredFunctionsList.cs + + + + Component + + + Form + + + LuaWinform.cs + + + Form + + + LuaWriter.cs + + + Component + + + Form + + + LuaWriterColorConfig.cs + + + Form + + + N64VideoPluginconfig.cs + + + + Component + + + Form + + + NESDebugger.cs + + + Form + + + NESGameGenie.cs + + + Form + + + NESGraphicsConfig.cs + + + Form + + + NESNameTableViewer.cs + + + Form + + + NESPPU.cs + + + Form + + + NESSoundConfig.cs + + + Component + + + Component + + + Component + + + Component + + + Form + + + PCEBGViewer.cs + + + Form + + + PCEGraphicsConfig.cs + + + Form + + + SaturnPrefs.cs + + + Form + + + SMSGraphicsConfig.cs + + + Form + + + SNESGameGenie.cs + + + Form + + + SNESGraphicsDebugger.cs + + + Component + + + Form + + + SNESOptions.cs + + + + Form + + + TI83KeyPad.cs + + + + Form + + + TraceLogger.cs + + + Component + + + + Component + + + Component + + + Component + + + UserControl + + + VirtualPadA78.cs + + + UserControl + + + VirtualPadA78Control.cs + + + Component + + + UserControl + + + VirtualPadC64Keyboard.cs + + + UserControl + + + VirtualPadColeco.cs + + + Form + + + VirtualPadForm.cs + + + Component + + + Component + + + Component + + + Component + + + UserControl + + + VirtualPadN64.cs + + + Component + + + Component + + + Component + + + Component + + + UserControl + + + VirtualPadSaturn.cs + + + UserControl + + + VirtualPadSaturnControl.cs + + + Component + + + Component + + + Component + + + Component + + + Form + + + RamSearch.cs + + + Form + + + RamPoke.cs + + + + Form + + + RamWatch.cs + + + + Form + + + WatchEditor.cs + + + + + Component + + + + FFmpegWriterForm.cs + + + GifWriterForm.cs + + + JMDForm.cs + + + VideoWriterChooserForm.cs + + + ControllerConfig.cs + + + AnalogBindControl.cs + + + ControllerConfigPanel.cs + + + FirmwaresConfig.cs + + + GifAnimator.cs + + + HotkeyConfig.cs + + + PathConfig.cs + + + PathInfo.cs + + + RewindConfig.cs + + + MainForm.cs + Designer + + + PlayMovie.cs + + + RecordMovie.cs + + + NameStateForm.cs + Designer + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + CheatEdit.cs + + + CheatForm.cs + + + GBAGPUView.cs + + + MobileBmpView.cs + + + MobileDetailView.cs + + + CGBColorChooserForm.cs + + + ColorChooserForm.cs + + + DualGBFileSelector.cs + + + DualGBXMLCreator.cs + + + GBGameGenie.cs + + + GBGPUView.cs + + + GenGameGenie.cs + + + HexColor.cs + + + HexEditor.cs + + + HexFind.cs + + + MemoryViewer.cs + + + LuaConsole.cs + + + LuaFunctionList.cs + + + LuaRegisteredFunctionsList.cs + + + LuaWinform.cs + + + LuaWriter.cs + + + LuaWriterColorConfig.cs + + + N64VideoPluginconfig.cs + + + NESDebugger.cs + + + NESGameGenie.cs + + + NESGraphicsConfig.cs + + + NESNameTableViewer.cs + + + NESPPU.cs + + + NESSoundConfig.cs + + + PatternViewer.cs + + + PCEBGViewer.cs + + + PCEGraphicsConfig.cs + + + SaturnPrefs.cs + + + SMSGraphicsConfig.cs + + + SNESGameGenie.cs + + + SNESGraphicsDebugger.cs + + + SNESOptions.cs + + + TI83KeyPad.cs + + + VirtualPad.cs + + + VirtualPadA78.cs + + + VirtualPadA78Control.cs + + + VirtualPadC64Keyboard.cs + + + VirtualPadColeco.cs + + + VirtualPadForm.cs + + + VirtualPadN64.cs + + + VirtualPadSaturn.cs + + + VirtualPadSaturnControl.cs + + + RamSearch.cs + + + RamPoke.cs + + + RamWatch.cs + + + WatchEditor.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + Form + + + InputPrompt.cs + + + + + + + + Form + + + TAStudio.cs + + + Form + + + ToolBox.cs + + + + + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA} + BizHawk.Emulation + + + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9} + BizHawk.Util + + + + + AboutBox.cs + Designer + + + ArchiveChooser.cs + Designer + + + BizBox.cs + + + AutofireConfig.cs + + + MessageConfig.cs + Designer + + + SoundConfig.cs + Designer + + + + + + + + LogWindow.cs + + + EditCommentsForm.cs + + + EditSubtitlesForm.cs + + + SubtitleMaker.cs + + + TraceLogger.cs + + + InputPrompt.cs + Designer + + + TAStudio.cs + + + ToolBox.cs + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 2.0 %28x86%29 + false + + + False + .NET Framework 3.0 %28x86%29 + false + + + False + .NET Framework 3.5 + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + + + + + "$(SolutionDir)subwcrev.bat" "$(ProjectDir)" + "$(SolutionDir)subwcrev.sh" "$(ProjectDir)" + + \ No newline at end of file diff --git a/BizHawk.Client.Common/config/Config.cs b/BizHawk.MultiClient/Config.cs similarity index 56% rename from BizHawk.Client.Common/config/Config.cs rename to BizHawk.MultiClient/Config.cs index d9f615a1ae..a848a65c14 100644 --- a/BizHawk.Client.Common/config/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -4,13 +4,13 @@ using System.Drawing; using System.Collections.Generic; using System.Collections; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class Config { public Config() { - /*ControllerConfig.ConfigCheckAllControlDefaults(this); TODO*/ + ControllerConfig.ConfigCheckAllControlDefaults(this); } public void ResolveDefaults() @@ -184,8 +184,8 @@ namespace BizHawk.Client.Common public bool RamWatchShowDiffColumn = false; public bool RamWatchShowDomainColumn = true; - public Dictionary RamWatchColumnWidths = new Dictionary - { + public Dictionary RamWatchColumnWidths = new Dictionary() + { { "AddressColumn", -1 }, { "ValueColumn", -1 }, { "PrevColumn", -1 }, @@ -195,8 +195,8 @@ namespace BizHawk.Client.Common { "NotesColumn",-1 }, }; - public Dictionary RamWatchColumnIndexes = new Dictionary - { + public Dictionary RamWatchColumnIndexes = new Dictionary() + { { "AddressColumn", 0 }, { "ValueColumn", 1 }, { "PrevColumn", 2 }, @@ -230,8 +230,8 @@ namespace BizHawk.Client.Common public bool RamSearchFastMode = false; public bool RamSearchAlwaysOnTop = false; - public Dictionary RamSearchColumnWidths = new Dictionary - { + public Dictionary RamSearchColumnWidths = new Dictionary() + { { "AddressColumn", -1 }, { "ValueColumn", -1 }, { "PrevColumn", -1 }, @@ -239,8 +239,8 @@ namespace BizHawk.Client.Common { "DiffColumn", -1 }, }; - public Dictionary RamSearchColumnIndexes = new Dictionary - { + public Dictionary RamSearchColumnIndexes = new Dictionary() + { { "AddressColumn", 0 }, { "ValueColumn", 1 }, { "PrevColumn", 2 }, @@ -414,8 +414,8 @@ namespace BizHawk.Client.Common public int CheatsDomainIndex = 5; public bool CheatsAlwaysOnTop = false; - public Dictionary CheatsColumnWidths = new Dictionary - { + public Dictionary CheatsColumnWidths = new Dictionary() + { { "NamesColumn", -1 }, { "AddressColumn", -1 }, { "ValueColumn", -1 }, @@ -427,8 +427,8 @@ namespace BizHawk.Client.Common { "DisplayTypeColumn", -1 }, }; - public Dictionary CheatsColumnIndices = new Dictionary - { + public Dictionary CheatsColumnIndices = new Dictionary() + { { "NamesColumn", 0 }, { "AddressColumn", 1 }, { "ValueColumn", 2 }, @@ -440,8 +440,8 @@ namespace BizHawk.Client.Common { "DisplayTypeColumn", 8 }, }; - public Dictionary CheatsColumnShow = new Dictionary - { + public Dictionary CheatsColumnShow = new Dictionary() + { { "NamesColumn", true }, { "AddressColumn", true }, { "ValueColumn", true }, @@ -649,6 +649,214 @@ namespace BizHawk.Client.Common #region Sub-classes TODO - it is about time to port these to separate files + public class BindingCollection : IEnumerable + { + public List Bindings { get; private set; } + + public BindingCollection() + { + Bindings = new List(); + Bindings.AddRange(DefaultValues); + } + + public void Add(Binding b) + { + Bindings.Add(b); + } + + public IEnumerator GetEnumerator() + { + return Bindings.GetEnumerator(); + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public Binding this[string index] + { + get + { + return Bindings.FirstOrDefault(x => x.DisplayName == index) ?? new Binding(); + } + } + + public void ResolveWithDefaults() + { + //Add missing entries + foreach (Binding default_binding in DefaultValues) + { + var binding = Bindings.FirstOrDefault(x => x.DisplayName == default_binding.DisplayName); + if (binding == null) + { + Bindings.Add(default_binding); + } + } + + List entriesToRemove = new List(); + + //Remove entries that no longer exist in defaults + foreach (Binding entry in Bindings) + { + var binding = DefaultValues.FirstOrDefault(x => x.DisplayName == entry.DisplayName); + if (binding == null) + { + entriesToRemove.Add(entry); + } + } + + foreach (Binding entry in entriesToRemove) + { + Bindings.Remove(entry); + } + } + + public static List DefaultValues + { + get + { + return new List() + { + //General + new Binding() { DisplayName = "Frame Advance", Bindings = "F", TabGroup = "General", DefaultBinding = "F", Ordinal = 0 }, + new Binding() { DisplayName = "Rewind", Bindings = "Shift+R, J1 B7, X1 Left Trigger", TabGroup = "General", DefaultBinding = "Shift+R, J1 B7, X1 Left Trigger", Ordinal = 1 }, + new Binding() { DisplayName = "Pause", Bindings = "Pause", TabGroup = "General", DefaultBinding = "Pause", Ordinal = 2 }, + new Binding() { DisplayName = "Fast Forward", Bindings = "Tab, J1 B8, X1 Right Trigger", TabGroup = "General", DefaultBinding = "Tab, J1 B8, X1 Right Trigger", Ordinal = 3 }, + new Binding() { DisplayName = "Turbo", Bindings = "Shift+Tab", TabGroup = "General", DefaultBinding = "Shift+Tab", Ordinal = 4 }, + new Binding() { DisplayName = "Toggle Throttle", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 5 }, + new Binding() { DisplayName = "Soft Reset", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 6 }, + new Binding() { DisplayName = "Hard Reset", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 7 }, + new Binding() { DisplayName = "Quick Load", Bindings = "P", TabGroup = "General", DefaultBinding = "P", Ordinal = 8 }, + new Binding() { DisplayName = "Quick Save", Bindings = "I", TabGroup = "General", DefaultBinding = "I", Ordinal = 9 }, + new Binding() { DisplayName = "Autohold", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 10 }, + new Binding() { DisplayName = "Clear Autohold", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 11 }, + new Binding() { DisplayName = "Screenshot", Bindings = "F12", TabGroup = "General", DefaultBinding = "F12", Ordinal = 12 }, + new Binding() { DisplayName = "Full Screen", Bindings = "Alt+Return", TabGroup = "General", DefaultBinding = "Alt+Return", Ordinal = 13 }, + new Binding() { DisplayName = "Open ROM", Bindings = "Ctrl+O", TabGroup = "General", DefaultBinding = "Ctrl+O", Ordinal = 14 }, + new Binding() { DisplayName = "Close ROM", Bindings = "Ctrl+W", TabGroup = "General", DefaultBinding = "Ctrl+W", Ordinal = 15 }, + new Binding() { DisplayName = "Display FPS", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 16 }, + new Binding() { DisplayName = "Frame Counter", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 17 }, + new Binding() { DisplayName = "Lag Counter", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 18 }, + new Binding() { DisplayName = "Input Display", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 19 }, + new Binding() { DisplayName = "Toggle BG Input", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 20 }, + new Binding() { DisplayName = "Toggle Menu", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 21 }, + new Binding() { DisplayName = "Volume Up", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 22 }, + new Binding() { DisplayName = "Volume Down", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 23 }, + new Binding() { DisplayName = "Record A/V", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 24 }, + new Binding() { DisplayName = "Stop A/V", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 25 }, + new Binding() { DisplayName = "Larger Window", Bindings = "Alt+UpArrow", TabGroup = "General", DefaultBinding = "Alt+UpArrow", Ordinal = 26 }, + new Binding() { DisplayName = "Smaller Window", Bindings = "Alt+DownArrow", TabGroup = "General", DefaultBinding = "Alt+DownArrow", Ordinal = 27 }, + new Binding() { DisplayName = "Increase Speed", Bindings = "Equals", TabGroup = "General", DefaultBinding = "Equals", Ordinal = 28 }, + new Binding() { DisplayName = "Decrease Speed", Bindings = "Minus", TabGroup = "General", DefaultBinding = "Minus", Ordinal = 29 }, + new Binding() { DisplayName = "Reboot Core", Bindings = "Ctrl+R", TabGroup = "General", DefaultBinding = "Ctrl+R", Ordinal = 30 }, + new Binding() { DisplayName = "Autofire", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 31 }, + + //Save States + new Binding() { DisplayName = "Save State 0", Bindings = "Shift+F10", TabGroup = "Save States", DefaultBinding = "Shift+F10", Ordinal = 1 }, + new Binding() { DisplayName = "Save State 1", Bindings = "Shift+F1", TabGroup = "Save States", DefaultBinding = "Shift+F1", Ordinal = 2 }, + new Binding() { DisplayName = "Save State 2", Bindings = "Shift+F2", TabGroup = "Save States", DefaultBinding = "Shift+F2", Ordinal = 3 }, + new Binding() { DisplayName = "Save State 3", Bindings = "Shift+F3", TabGroup = "Save States", DefaultBinding = "Shift+F3", Ordinal = 4 }, + new Binding() { DisplayName = "Save State 4", Bindings = "Shift+F4", TabGroup = "Save States", DefaultBinding = "Shift+F4", Ordinal = 5 }, + new Binding() { DisplayName = "Save State 5", Bindings = "Shift+F5", TabGroup = "Save States", DefaultBinding = "Shift+F5", Ordinal = 6 }, + new Binding() { DisplayName = "Save State 6", Bindings = "Shift+F6", TabGroup = "Save States", DefaultBinding = "Shift+F6", Ordinal = 7 }, + new Binding() { DisplayName = "Save State 7", Bindings = "Shift+F7", TabGroup = "Save States", DefaultBinding = "Shift+F7", Ordinal = 8 }, + new Binding() { DisplayName = "Save State 8", Bindings = "Shift+F8", TabGroup = "Save States", DefaultBinding = "Shift+F8", Ordinal = 9 }, + new Binding() { DisplayName = "Save State 9", Bindings = "Shift+F9", TabGroup = "Save States", DefaultBinding = "Shift+F9", Ordinal = 10 }, + new Binding() { DisplayName = "Load State 0", Bindings = "F10", TabGroup = "Save States", DefaultBinding = "F10", Ordinal = 11 }, + new Binding() { DisplayName = "Load State 1", Bindings = "F1", TabGroup = "Save States", DefaultBinding = "F1", Ordinal = 12 }, + new Binding() { DisplayName = "Load State 2", Bindings = "F2", TabGroup = "Save States", DefaultBinding = "F2", Ordinal = 13 }, + new Binding() { DisplayName = "Load State 3", Bindings = "F3", TabGroup = "Save States", DefaultBinding = "F3", Ordinal = 14 }, + new Binding() { DisplayName = "Load State 4", Bindings = "F4", TabGroup = "Save States", DefaultBinding = "F4", Ordinal = 15 }, + new Binding() { DisplayName = "Load State 5", Bindings = "F5", TabGroup = "Save States", DefaultBinding = "F5", Ordinal = 16 }, + new Binding() { DisplayName = "Load State 6", Bindings = "F6", TabGroup = "Save States", DefaultBinding = "F6", Ordinal = 17 }, + new Binding() { DisplayName = "Load State 7", Bindings = "F7", TabGroup = "Save States", DefaultBinding = "F7", Ordinal = 18 }, + new Binding() { DisplayName = "Load State 8", Bindings = "F8", TabGroup = "Save States", DefaultBinding = "F8", Ordinal = 19 }, + new Binding() { DisplayName = "Load State 9", Bindings = "F9", TabGroup = "Save States", DefaultBinding = "F9", Ordinal = 20 }, + new Binding() { DisplayName = "Select State 0", Bindings = "D0", TabGroup = "Save States", DefaultBinding = "D0", Ordinal = 21 }, + new Binding() { DisplayName = "Select State 1", Bindings = "D1", TabGroup = "Save States", DefaultBinding = "D1", Ordinal = 22 }, + new Binding() { DisplayName = "Select State 2", Bindings = "D2", TabGroup = "Save States", DefaultBinding = "D2", Ordinal = 23 }, + new Binding() { DisplayName = "Select State 3", Bindings = "D3", TabGroup = "Save States", DefaultBinding = "D3", Ordinal = 24 }, + new Binding() { DisplayName = "Select State 4", Bindings = "D4", TabGroup = "Save States", DefaultBinding = "D4", Ordinal = 25 }, + new Binding() { DisplayName = "Select State 5", Bindings = "D5", TabGroup = "Save States", DefaultBinding = "D5", Ordinal = 26 }, + new Binding() { DisplayName = "Select State 6", Bindings = "D6", TabGroup = "Save States", DefaultBinding = "D6", Ordinal = 27 }, + new Binding() { DisplayName = "Select State 7", Bindings = "D7", TabGroup = "Save States", DefaultBinding = "D7", Ordinal = 28 }, + new Binding() { DisplayName = "Select State 8", Bindings = "D8", TabGroup = "Save States", DefaultBinding = "D8", Ordinal = 29 }, + new Binding() { DisplayName = "Select State 9", Bindings = "D9", TabGroup = "Save States", DefaultBinding = "D9", Ordinal = 30 }, + new Binding() { DisplayName = "Save Named State", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 31 }, + new Binding() { DisplayName = "Load Named State", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 32 }, + new Binding() { DisplayName = "Previous Slot", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 33 }, + new Binding() { DisplayName = "Next Slot", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 34 }, + + //Movie + new Binding() { DisplayName = "Toggle read-only", Bindings = "Q", TabGroup = "Movie", DefaultBinding = "Q", Ordinal = 0 }, + new Binding() { DisplayName = "Play Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 1 }, + new Binding() { DisplayName = "Record Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 2 }, + new Binding() { DisplayName = "Stop Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 3 }, + new Binding() { DisplayName = "Play from beginning", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 4 }, + new Binding() { DisplayName = "Save Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 5 }, + new Binding() { DisplayName = "Toggle MultiTrack", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 6 }, + new Binding() { DisplayName = "MT Select All", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 7 }, + new Binding() { DisplayName = "MT Select None", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 8 }, + new Binding() { DisplayName = "MT Increment Player", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 9 }, + new Binding() { DisplayName = "MT Decrement Player", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 10 }, + new Binding() { DisplayName = "Movie Poke", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 11 }, + new Binding() { DisplayName = "Scrub Input", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 12 }, + + //Tools + new Binding() { DisplayName = "Ram Watch", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 0 }, + new Binding() { DisplayName = "Ram Search", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 1 }, + new Binding() { DisplayName = "Hex Editor", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 3 }, + new Binding() { DisplayName = "Trace Logger", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 4 }, + new Binding() { DisplayName = "Lua Console", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 5 }, + new Binding() { DisplayName = "Cheats", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 6 }, + new Binding() { DisplayName = "TAStudio", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 7 }, + new Binding() { DisplayName = "ToolBox", Bindings = "T", TabGroup = "Tools", DefaultBinding = "", Ordinal = 8 }, + new Binding() { DisplayName = "Virtual Pad", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 9 }, + + new Binding() { DisplayName = "New Search", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 10 }, + new Binding() { DisplayName = "Do Search", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 11 }, + new Binding() { DisplayName = "Previous Compare To", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 12 }, + new Binding() { DisplayName = "Next Compare To", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 13 }, + new Binding() { DisplayName = "Previous Operator", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 14 }, + new Binding() { DisplayName = "Next Operator", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 15 }, + + //SNES + new Binding() { DisplayName = "Toggle BG 1", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 0 }, + new Binding() { DisplayName = "Toggle BG 2", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 1 }, + new Binding() { DisplayName = "Toggle BG 3", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 2 }, + new Binding() { DisplayName = "Toggle BG 4", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 3 }, + new Binding() { DisplayName = "Toggle OBJ 1", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 4 }, + new Binding() { DisplayName = "Toggle OBJ 2", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 5 }, + new Binding() { DisplayName = "Toggle OBJ 3", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 6 }, + new Binding() { DisplayName = "Toggle OBJ 4", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 7 }, + + //Analog + new Binding() { DisplayName = "Y Up Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 0 }, + new Binding() { DisplayName = "Y Up Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 1 }, + new Binding() { DisplayName = "Y Down Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 2 }, + new Binding() { DisplayName = "Y Down Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 3 }, + new Binding() { DisplayName = "X Up Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 4 }, + new Binding() { DisplayName = "X Up Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 5 }, + new Binding() { DisplayName = "X Down Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 6 }, + new Binding() { DisplayName = "X Down Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 7 }, + + }; + } + } + } + + public class Binding + { + //TODO: how about a delegate, that would be called by the mainform? Thereby putting all the action logic in one place + public string DisplayName; + public string Bindings; + public string DefaultBinding; + public string TabGroup; + public int Ordinal = 0; + public Binding() { } + } + public class PathEntryCollection : IEnumerable { public List Paths { get; private set; } @@ -669,7 +877,7 @@ namespace BizHawk.Client.Common return Paths.GetEnumerator(); } - IEnumerator IEnumerable.GetEnumerator() + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } @@ -733,151 +941,151 @@ namespace BizHawk.Client.Common { get { - return new List + return new List() { - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Movies", Path = Path.Combine(".", "Movies"), Ordinal = 0 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Movie backups", Path = Path.Combine(".", "Movies", "backup"), Ordinal = 1 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Lua", Path = Path.Combine(".", "Lua"), Ordinal = 2 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Watch (.wch)", Path = ".", Ordinal = 3 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "A/V Dumps", Path = ".", Ordinal = 4 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Debug Logs", Path = ".", Ordinal = 5 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Firmware", Path = Path.Combine(".", "Firmware"), Ordinal = 6 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Base ROM", Path = ".", Ordinal = 6 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Base", Path = ".", Ordinal = 6 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Movies", Path = Path.Combine(".", "Movies"), Ordinal = 0 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Movie backups", Path = Path.Combine(".", "Movies", "backup"), Ordinal = 1 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Lua", Path = Path.Combine(".", "Lua"), Ordinal = 2 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Watch (.wch)", Path = ".", Ordinal = 3 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "A/V Dumps", Path = ".", Ordinal = 4 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Debug Logs", Path = ".", Ordinal = 5 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Firmware", Path = Path.Combine(".", "Firmware"), Ordinal = 6 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Base ROM", Path = ".", Ordinal = 6 }, + new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Base", Path = ".", Ordinal = 6 }, - new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "Base", Path = Path.Combine(".", "Intellivision"), Ordinal = 0 }, - new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, + new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Base", Path = Path.Combine(".", "Intellivision"), Ordinal = 0 }, + new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, - new PathEntry { System = "NES", SystemDisplayName="NES", Type = "Base", Path = Path.Combine(".", "NES"), Ordinal = 0 }, - new PathEntry { System = "NES", SystemDisplayName="NES", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "NES", SystemDisplayName="NES", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "NES", SystemDisplayName="NES", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "NES", SystemDisplayName="NES", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "NES", SystemDisplayName="NES", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "NES", SystemDisplayName="NES", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, + new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Base", Path = Path.Combine(".", "NES"), Ordinal = 0 }, + new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, - new PathEntry { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Base", Path= Path.Combine(".", "SNES"), Ordinal = 0 }, - new PathEntry { System = "SNES_SGB", SystemDisplayName="SNES", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Base", Path= Path.Combine(".", "SNES"), Ordinal = 0 }, + new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "GBA", SystemDisplayName="GBA", Type = "Base", Path= Path.Combine(".", "GBA"), Ordinal = 0 }, - new PathEntry { System = "GBA", SystemDisplayName="GBA", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "GBA", SystemDisplayName="GBA", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "GBA", SystemDisplayName="GBA", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "GBA", SystemDisplayName="GBA", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "GBA", SystemDisplayName="GBA", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Base", Path= Path.Combine(".", "GBA"), Ordinal = 0 }, + new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "SMS", SystemDisplayName="SMS", Type = "Base", Path= Path.Combine(".", "SMS"), Ordinal = 0 }, - new PathEntry { System = "SMS", SystemDisplayName="SMS", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "SMS", SystemDisplayName="SMS", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "SMS", SystemDisplayName="SMS", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "SMS", SystemDisplayName="SMS", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "SMS", SystemDisplayName="SMS", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Base", Path= Path.Combine(".", "SMS"), Ordinal = 0 }, + new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "GG", SystemDisplayName="GG", Type = "Base", Path= Path.Combine(".", "Game Gear"), Ordinal = 0 }, - new PathEntry { System = "GG", SystemDisplayName="GG", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "GG", SystemDisplayName="GG", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "GG", SystemDisplayName="GG", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "GG", SystemDisplayName="GG", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "GG", SystemDisplayName="GG", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Base", Path= Path.Combine(".", "Game Gear"), Ordinal = 0 }, + new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "SG", SystemDisplayName="SG", Type = "Base", Path= Path.Combine(".", "SG-1000"), Ordinal = 0 }, - new PathEntry { System = "SG", SystemDisplayName="SG", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "SG", SystemDisplayName="SG", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "SG", SystemDisplayName="SG", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "SG", SystemDisplayName="SG", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "SG", SystemDisplayName="SG", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Base", Path= Path.Combine(".", "SG-1000"), Ordinal = 0 }, + new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "GEN", SystemDisplayName="Genesis", Type = "Base", Path= Path.Combine(".", "Genesis"), Ordinal = 0 }, - new PathEntry { System = "GEN", SystemDisplayName="Genesis", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "GEN", SystemDisplayName="Genesis", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "GEN", SystemDisplayName="Genesis", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "GEN", SystemDisplayName="Genesis", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "GEN", SystemDisplayName="Genesis", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Base", Path= Path.Combine(".", "Genesis"), Ordinal = 0 }, + new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Base", Path= Path.Combine(".", "PC Engine"), Ordinal = 0 }, - new PathEntry { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Base", Path= Path.Combine(".", "PC Engine"), Ordinal = 0 }, + new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Base", Path= Path.Combine(".", "Gameboy"), Ordinal = 0 }, - new PathEntry { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, + new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Base", Path= Path.Combine(".", "Gameboy"), Ordinal = 0 }, + new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, - new PathEntry { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Base", Path= Path.Combine(".", "Dual Gameboy"), Ordinal = 0 }, - new PathEntry { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, + new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Base", Path= Path.Combine(".", "Dual Gameboy"), Ordinal = 0 }, + new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 }, - new PathEntry { System = "TI83", SystemDisplayName="TI83", Type = "Base", Path= Path.Combine(".", "TI83"), Ordinal = 0 }, - new PathEntry { System = "TI83", SystemDisplayName="TI83", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "TI83", SystemDisplayName="TI83", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "TI83", SystemDisplayName="TI83", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "TI83", SystemDisplayName="TI83", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "TI83", SystemDisplayName="TI83", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Base", Path= Path.Combine(".", "TI83"), Ordinal = 0 }, + new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "A26", SystemDisplayName="Atari 2600", Type = "Base", Path= Path.Combine(".", "Atari 2600"), Ordinal = 0 }, - new PathEntry { System = "A26", SystemDisplayName="Atari 2600", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "A26", SystemDisplayName="Atari 2600", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "A26", SystemDisplayName="Atari 2600", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "A26", SystemDisplayName="Atari 2600", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Base", Path= Path.Combine(".", "Atari 2600"), Ordinal = 0 }, + new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "A78", SystemDisplayName="Atari 7800", Type = "Base", Path= Path.Combine(".", "Atari 7800"), Ordinal = 0 }, - new PathEntry { System = "A78", SystemDisplayName="Atari 7800", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "A78", SystemDisplayName="Atari 7800", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "A78", SystemDisplayName="Atari 7800", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "A78", SystemDisplayName="Atari 7800", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "A78", SystemDisplayName="Atari 7800", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Base", Path= Path.Combine(".", "Atari 7800"), Ordinal = 0 }, + new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "C64", SystemDisplayName="Commodore 64", Type = "Base", Path= Path.Combine(".", "C64"), Ordinal = 0 }, - new PathEntry { System = "C64", SystemDisplayName="Commodore 64", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "C64", SystemDisplayName="Commodore 64", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "C64", SystemDisplayName="Commodore 64", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "C64", SystemDisplayName="Commodore 64", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Base", Path= Path.Combine(".", "C64"), Ordinal = 0 }, + new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "PSX", SystemDisplayName="Playstation", Type = "Base", Path= Path.Combine(".", "PSX"), Ordinal = 0 }, - new PathEntry { System = "PSX", SystemDisplayName="Playstation", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "PSX", SystemDisplayName="Playstation", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "PSX", SystemDisplayName="Playstation", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "PSX", SystemDisplayName="Playstation", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "PSX", SystemDisplayName="Playstation", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Base", Path= Path.Combine(".", "PSX"), Ordinal = 0 }, + new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "Coleco", SystemDisplayName = "Coleco", Type = "Base", Path= Path.Combine(".", "Coleco"), Ordinal = 0 }, - new PathEntry { System = "Coleco", SystemDisplayName = "Coleco", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "Coleco", SystemDisplayName = "Coleco", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "Coleco", SystemDisplayName = "Coleco", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "Coleco", SystemDisplayName = "Coleco", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Base", Path= Path.Combine(".", "Coleco"), Ordinal = 0 }, + new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "N64", SystemDisplayName = "N64", Type = "Base", Path= Path.Combine(".", "N64"), Ordinal = 0 }, - new PathEntry { System = "N64", SystemDisplayName = "N64", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "N64", SystemDisplayName = "N64", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "N64", SystemDisplayName = "N64", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "N64", SystemDisplayName = "N64", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "N64", SystemDisplayName = "N64", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Base", Path= Path.Combine(".", "N64"), Ordinal = 0 }, + new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, - new PathEntry { System = "SAT", SystemDisplayName = "Saturn", Type = "Base", Path= Path.Combine(".", "Saturn"), Ordinal = 0 }, - new PathEntry { System = "SAT", SystemDisplayName = "Saturn", Type = "ROM", Path = ".", Ordinal = 1 }, - new PathEntry { System = "SAT", SystemDisplayName = "Saturn", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, - new PathEntry { System = "SAT", SystemDisplayName = "Saturn", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, - new PathEntry { System = "SAT", SystemDisplayName = "Saturn", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, - new PathEntry { System = "SAT", SystemDisplayName = "Saturn", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Base", Path= Path.Combine(".", "Saturn"), Ordinal = 0 }, + new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, + new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, }; } } diff --git a/BizHawk.Client.Common/config/ConfigService.cs b/BizHawk.MultiClient/ConfigService.cs similarity index 90% rename from BizHawk.Client.Common/config/ConfigService.cs rename to BizHawk.MultiClient/ConfigService.cs index d661838e35..bdf9f850ef 100644 --- a/BizHawk.Client.Common/config/ConfigService.cs +++ b/BizHawk.MultiClient/ConfigService.cs @@ -1,9 +1,10 @@ using System; using System.IO; using System.Reflection; +using System.Windows.Forms; using Newtonsoft.Json; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public static class ConfigService { @@ -22,7 +23,7 @@ namespace BizHawk.Client.Common config = (T)s.Deserialize(r, typeof(T)); } } - catch (Exception e) { /*TODO MessageBox.Show(e.ToString(), "Config Error"); */ } + catch (Exception e) { MessageBox.Show(e.ToString(), "Config Error"); } if (config == null) return new T(); //patch up arrays in the config with the minimum number of things diff --git a/BizHawk.Client.Common/CoreFileProvider.cs b/BizHawk.MultiClient/CoreFileProvider.cs similarity index 83% rename from BizHawk.Client.Common/CoreFileProvider.cs rename to BizHawk.MultiClient/CoreFileProvider.cs index 3ed88ca61f..43536dc876 100644 --- a/BizHawk.Client.Common/CoreFileProvider.cs +++ b/BizHawk.MultiClient/CoreFileProvider.cs @@ -2,9 +2,9 @@ using System.IO; using System.Collections.Generic; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { - public class CoreFileProvider : ICoreFileProvider + class CoreFileProvider : ICoreFileProvider { public string SubfileDirectory; public FirmwareManager FirmwareManager; diff --git a/BizHawk.MultiClient/DisplayManager/DisplayManager.cs b/BizHawk.MultiClient/DisplayManager/DisplayManager.cs index d97ca491d9..c9e1ed0d0a 100644 --- a/BizHawk.MultiClient/DisplayManager/DisplayManager.cs +++ b/BizHawk.MultiClient/DisplayManager/DisplayManager.cs @@ -11,8 +11,6 @@ using System.Drawing.Imaging; //using dx=SlimDX; //using d3d=SlimDX.Direct3D9; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { /// @@ -393,19 +391,19 @@ namespace BizHawk.MultiClient public void AddMessage(string message) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; messages.Add(new UIMessage { Message = message, ExpireAt = DateTime.Now + TimeSpan.FromSeconds(2) }); } public void AddGUIText(string message, int x, int y, bool alert, Color BackGround, Color ForeColor, int anchor) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; GUITextList.Add(new UIDisplay { Message = message, X = x, Y = y, BackGround = BackGround, ForeColor = ForeColor, Alert = alert, Anchor = anchor }); } public void ClearGUIText() { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; GUITextList.Clear(); } @@ -413,7 +411,7 @@ namespace BizHawk.MultiClient public void DrawMessages(IBlitter g) { - if (!GlobalWinF.ClientControls["MaxTurbo"]) + if (!Global.ClientControls["MaxTurbo"]) { messages.RemoveAll(m => DateTime.Now > m.ExpireAt); int line = 1; @@ -485,7 +483,7 @@ namespace BizHawk.MultiClient StringBuilder s; if (!Global.MovieSession.Movie.IsActive || Global.MovieSession.Movie.IsFinished) { - s = new StringBuilder(GlobalWinF.GetOutputControllersAsMnemonic()); + s = new StringBuilder(Global.GetOutputControllersAsMnemonic()); } else { @@ -586,17 +584,17 @@ namespace BizHawk.MultiClient g.DrawString(rerec, MessageFont, FixedMessagesColor, x, y); } - if (GlobalWinF.ClientControls["Autohold"] || GlobalWinF.ClientControls["Autofire"]) + if (Global.ClientControls["Autohold"] || Global.ClientControls["Autofire"]) { StringBuilder disp = new StringBuilder("Held: "); - foreach (string s in GlobalWinF.StickyXORAdapter.CurrentStickies) + foreach (string s in Global.StickyXORAdapter.CurrentStickies) { disp.Append(s); disp.Append(' '); } - foreach (string s in GlobalWinF.AutofireStickyXORAdapter.CurrentStickies) + foreach (string s in Global.AutofireStickyXORAdapter.CurrentStickies) { disp.Append("Auto-"); disp.Append(s); @@ -662,7 +660,7 @@ namespace BizHawk.MultiClient /// update Global.RenderPanel from the passed IVideoProvider public void UpdateSource(IVideoProvider videoProvider) { - UpdateSourceEx(videoProvider, GlobalWinF.RenderPanel); + UpdateSourceEx(videoProvider, Global.RenderPanel); } /// @@ -775,10 +773,10 @@ namespace BizHawk.MultiClient void RenderOSD(IBlitter renderPanel) { - GlobalWinF.OSD.Begin(renderPanel); + Global.OSD.Begin(renderPanel); renderPanel.Open(); - GlobalWinF.OSD.DrawScreenInfo(renderPanel); - GlobalWinF.OSD.DrawMessages(renderPanel); + Global.OSD.DrawScreenInfo(renderPanel); + Global.OSD.DrawMessages(renderPanel); renderPanel.Close(); } diff --git a/BizHawk.Client.Common/FirmwareManager.cs b/BizHawk.MultiClient/FirmwareManager.cs similarity index 96% rename from BizHawk.Client.Common/FirmwareManager.cs rename to BizHawk.MultiClient/FirmwareManager.cs index 4a25256ef1..6e120a3163 100644 --- a/BizHawk.Client.Common/FirmwareManager.cs +++ b/BizHawk.MultiClient/FirmwareManager.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; //IDEA: put filesizes in DB too. then scans can go real quick by only scanning filesizes that match (and then scanning filesizes that dont match, in case of an emergency) //this would be adviseable if we end up with a very large firmware file -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class FirmwareManager { @@ -186,4 +186,5 @@ namespace BizHawk.Client.Common } } + } \ No newline at end of file diff --git a/BizHawk.MultiClient/GlobalWinF.cs b/BizHawk.MultiClient/Global.cs similarity index 84% rename from BizHawk.MultiClient/GlobalWinF.cs rename to BizHawk.MultiClient/Global.cs index ce1b5ef693..bd79a38c24 100644 --- a/BizHawk.MultiClient/GlobalWinF.cs +++ b/BizHawk.MultiClient/Global.cs @@ -1,12 +1,13 @@ using BizHawk.DiscSystem; using SlimDX.Direct3D9; using SlimDX.DirectSound; +#if WINDOWS -using BizHawk.Client.Common; +#endif namespace BizHawk.MultiClient { - public static class GlobalWinF + public static class Global { public static MainForm MainForm; #if WINDOWS @@ -17,7 +18,11 @@ namespace BizHawk.MultiClient public static IRenderer RenderPanel; public static OSDManager OSD = new OSDManager(); public static DisplayManager DisplayManager = new DisplayManager(); + public static Config Config; + public static IEmulator Emulator; public static CoreComm CoreComm; + public static GameInfo Game; + public static CheatList CheatList; public static Controller NullControls; public static AutofireController AutofireNullControls; @@ -31,6 +36,13 @@ namespace BizHawk.MultiClient public static CopyControllerAdapter MovieInputSourceAdapter = new CopyControllerAdapter(); public static CopyControllerAdapter MovieOutputHardpoint = new CopyControllerAdapter(); + /// + /// the global MovieSession can use this to deal with multitrack player remapping (should this be here? maybe it should be in MovieSession) + /// + public static MultitrackRewiringControllerAdapter MultitrackRewiringControllerAdapter = new MultitrackRewiringControllerAdapter(); + + public static MovieSession MovieSession = new MovieSession(); + //dont take my word for it, since the final word is actually in RewireInputChain, but here is a guide... //user -> Input -> ActiveController -> UDLR -> StickyXORPlayerInputAdapter -> TurboAdapter(TBD) -> Lua(?TBD?) -> .. //.. -> MultitrackRewiringControllerAdapter -> MovieInputSourceAdapter -> (MovieSession) -> MovieOutputAdapter -> ControllerOutput(1) -> Game diff --git a/BizHawk.Client.Common/HawkFile.cs b/BizHawk.MultiClient/HawkFile.cs similarity index 95% rename from BizHawk.Client.Common/HawkFile.cs rename to BizHawk.MultiClient/HawkFile.cs index 46e08b91c5..cb865b4d76 100644 --- a/BizHawk.Client.Common/HawkFile.cs +++ b/BizHawk.MultiClient/HawkFile.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { //todo: //split into "bind" and "open (the bound thing)" diff --git a/BizHawk.MultiClient/Input/ControllerBinding.cs b/BizHawk.MultiClient/Input/ControllerBinding.cs index 80a11ea5be..c8dd7ddbd3 100644 --- a/BizHawk.MultiClient/Input/ControllerBinding.cs +++ b/BizHawk.MultiClient/Input/ControllerBinding.cs @@ -2,8 +2,6 @@ using System.Collections.Generic; using System.Linq; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class Controller : IController @@ -16,7 +14,7 @@ namespace BizHawk.MultiClient private readonly Dictionary FloatRanges = new WorkingDictionary(); - private readonly Dictionary FloatBinds = new Dictionary(); + private readonly Dictionary FloatBinds = new Dictionary(); public Controller(ControllerDefinition definition) { @@ -155,7 +153,7 @@ namespace BizHawk.MultiClient bindings[button].Add(control.Trim()); } - public void BindFloat(string button, BizHawk.Client.Common.Config.AnalogBind bind) + public void BindFloat(string button, Config.AnalogBind bind) { FloatBinds[button] = bind; } diff --git a/BizHawk.MultiClient/Input/GamePad.cs b/BizHawk.MultiClient/Input/GamePad.cs index d3d8550fc1..5179db9e56 100644 --- a/BizHawk.MultiClient/Input/GamePad.cs +++ b/BizHawk.MultiClient/Input/GamePad.cs @@ -27,7 +27,7 @@ namespace BizHawk.MultiClient continue; // Don't input XBOX 360 controllers into here; we'll process them via XInput (there are limitations in some trigger axes when xbox pads go over xinput) var joystick = new Joystick(dinput, device.InstanceGuid); - joystick.SetCooperativeLevel(GlobalWinF.MainForm.Handle, CooperativeLevel.Background | CooperativeLevel.Nonexclusive); + joystick.SetCooperativeLevel(Global.MainForm.Handle, CooperativeLevel.Background | CooperativeLevel.Nonexclusive); foreach (DeviceObjectInstance deviceObject in joystick.GetObjects()) { if ((deviceObject.ObjectType & ObjectDeviceType.Axis) != 0) diff --git a/BizHawk.MultiClient/Input/Input.cs b/BizHawk.MultiClient/Input/Input.cs index b2c61dbb68..986da8097f 100644 --- a/BizHawk.MultiClient/Input/Input.cs +++ b/BizHawk.MultiClient/Input/Input.cs @@ -6,8 +6,6 @@ using System.Threading; using SlimDX.DirectInput; #endif -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { //coalesces events back into instantaneous states @@ -339,7 +337,7 @@ namespace BizHawk.MultiClient } - bool swallow = !GlobalWinF.MainForm.AllowInput; + bool swallow = !Global.MainForm.AllowInput; foreach (var ie in _NewEvents) { @@ -401,7 +399,7 @@ namespace BizHawk.MultiClient lock (this) { if (InputEvents.Count == 0) return null; - if (!GlobalWinF.MainForm.AllowInput) return null; + if (!Global.MainForm.AllowInput) return null; //we only listen to releases for input binding, because we need to distinguish releases of pure modifierkeys from modified keys //if you just pressed ctrl, wanting to bind ctrl, we'd see: pressed:ctrl, unpressed:ctrl diff --git a/BizHawk.MultiClient/Input/Keyboard.cs b/BizHawk.MultiClient/Input/Keyboard.cs index a8bf4210cd..a1d3f569a0 100644 --- a/BizHawk.MultiClient/Input/Keyboard.cs +++ b/BizHawk.MultiClient/Input/Keyboard.cs @@ -16,7 +16,7 @@ namespace BizHawk.MultiClient if (keyboard == null || keyboard.Disposed) keyboard = new Keyboard(dinput); - keyboard.SetCooperativeLevel(GlobalWinF.MainForm.Handle, CooperativeLevel.Background | CooperativeLevel.Nonexclusive); + keyboard.SetCooperativeLevel(Global.MainForm.Handle, CooperativeLevel.Background | CooperativeLevel.Nonexclusive); } public static void Update() diff --git a/BizHawk.MultiClient/LogConsole.cs b/BizHawk.MultiClient/LogConsole.cs index f9de1c7591..2a93106993 100644 --- a/BizHawk.MultiClient/LogConsole.cs +++ b/BizHawk.MultiClient/LogConsole.cs @@ -3,8 +3,6 @@ using System.Text; using System.IO; using System.Runtime.InteropServices; -using BizHawk.Client.Common; - #pragma warning disable 162 //thanks! - http://sharp-developer.net/ru/CodeBank/WinForms/GuiConsole.aspx diff --git a/BizHawk.MultiClient/LogWindow.cs b/BizHawk.MultiClient/LogWindow.cs index b0ad3b4908..79a9644619 100644 --- a/BizHawk.MultiClient/LogWindow.cs +++ b/BizHawk.MultiClient/LogWindow.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - //todo - perks - pause, copy to clipboard, backlog length limiting namespace BizHawk.MultiClient @@ -20,7 +18,7 @@ namespace BizHawk.MultiClient Closing += (o, e) => { Global.Config.ShowLogWindow = false; - GlobalWinF.MainForm.notifyLogWindowClosing(); + Global.MainForm.notifyLogWindowClosing(); LogConsole.notifyLogWindowClosing(); SaveConfigSettings(); }; diff --git a/BizHawk.MultiClient/MainForm.MenuItems.cs b/BizHawk.MultiClient/MainForm.MenuItems.cs index 5bf2f5e6f5..e8cdf4c021 100644 --- a/BizHawk.MultiClient/MainForm.MenuItems.cs +++ b/BizHawk.MultiClient/MainForm.MenuItems.cs @@ -7,8 +7,6 @@ using BizHawk.Emulation.Consoles.Calculator; using BizHawk.Emulation.Consoles.GB; using BizHawk.Emulation.Consoles.Nintendo.SNES; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { partial class MainForm @@ -32,9 +30,9 @@ namespace BizHawk.MultiClient { string details = Global.Emulator.CoreComm.RomStatusDetails; if (string.IsNullOrEmpty(details)) return; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); LogWindow.ShowReport("Dump Status Report", details, this); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } private void saveWindowPositionToolStripMenuItem_Click(object sender, EventArgs e) @@ -64,7 +62,7 @@ namespace BizHawk.MultiClient old = Global.Config.VSyncThrottle; Global.Config.VSyncThrottle = false; if (old) - GlobalWinF.RenderPanel.Resized = true; + Global.RenderPanel.Resized = true; } LimitFrameRateMessage(); } @@ -79,7 +77,7 @@ namespace BizHawk.MultiClient bool old = Global.Config.VSyncThrottle; Global.Config.VSyncThrottle = false; if (old) - GlobalWinF.RenderPanel.Resized = true; + Global.RenderPanel.Resized = true; } } @@ -87,7 +85,7 @@ namespace BizHawk.MultiClient private void miDisplayVsync_Click(object sender, EventArgs e) { Global.Config.VSyncThrottle ^= true; - GlobalWinF.RenderPanel.Resized = true; + Global.RenderPanel.Resized = true; if (Global.Config.VSyncThrottle) { Global.Config.ClockThrottle = false; @@ -103,18 +101,18 @@ namespace BizHawk.MultiClient { Global.Config.VSync ^= true; if (!Global.Config.VSyncThrottle) // when vsync throttle is on, vsync is forced to on, so no change to make here - GlobalWinF.RenderPanel.Resized = true; + Global.RenderPanel.Resized = true; } public void LimitFrameRateMessage() { if (Global.Config.ClockThrottle) { - GlobalWinF.OSD.AddMessage("Framerate limiting on"); + Global.OSD.AddMessage("Framerate limiting on"); } else { - GlobalWinF.OSD.AddMessage("Framerate limiting off"); + Global.OSD.AddMessage("Framerate limiting off"); } } @@ -123,11 +121,11 @@ namespace BizHawk.MultiClient { if (Global.Config.VSyncThrottle) { - GlobalWinF.OSD.AddMessage("Display Vsync is set to on"); + Global.OSD.AddMessage("Display Vsync is set to on"); } else { - GlobalWinF.OSD.AddMessage("Display Vsync is set to off"); + Global.OSD.AddMessage("Display Vsync is set to off"); } } @@ -140,11 +138,11 @@ namespace BizHawk.MultiClient { if (Global.Config.AutoMinimizeSkipping) { - GlobalWinF.OSD.AddMessage("Autominimizing set to on"); + Global.OSD.AddMessage("Autominimizing set to on"); } else { - GlobalWinF.OSD.AddMessage("Autominimizing set to off"); + Global.OSD.AddMessage("Autominimizing set to off"); } } @@ -161,7 +159,7 @@ namespace BizHawk.MultiClient public void FrameSkipMessage() { - GlobalWinF.OSD.AddMessage("Frameskipping set to " + Global.Config.FrameSkip.ToString()); + Global.OSD.AddMessage("Frameskipping set to " + Global.Config.FrameSkip.ToString()); } public void ClickSpeedItem(int num) @@ -468,25 +466,25 @@ namespace BizHawk.MultiClient private void displayFPSToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; ToggleFPS(); } private void displayFrameCounterToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; ToggleFrameCounter(); } private void displayInputToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; ToggleInputDisplay(); } private void displayLagCounterToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; ToggleLagCounter(); } @@ -698,7 +696,7 @@ namespace BizHawk.MultiClient private void displayRerecordCountToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; Global.Config.DisplayRerecordCount ^= true; } @@ -735,9 +733,9 @@ namespace BizHawk.MultiClient Filter = "PNG File (*.png)|*.png" }; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; TakeScreenshot(sfd.FileName); @@ -763,11 +761,11 @@ namespace BizHawk.MultiClient Global.Config.AcceptBackgroundInput ^= true; if (Global.Config.AcceptBackgroundInput) { - GlobalWinF.OSD.AddMessage("Background Input enabled"); + Global.OSD.AddMessage("Background Input enabled"); } else { - GlobalWinF.OSD.AddMessage("Background Input disabled"); + Global.OSD.AddMessage("Background Input disabled"); } } @@ -829,11 +827,11 @@ namespace BizHawk.MultiClient Global.Config.ShowContextMenu ^= true; if (Global.Config.ShowContextMenu) { - GlobalWinF.OSD.AddMessage("Context menu enabled"); + Global.OSD.AddMessage("Context menu enabled"); } else { - GlobalWinF.OSD.AddMessage("Context menu disabled"); + Global.OSD.AddMessage("Context menu disabled"); } } @@ -860,7 +858,7 @@ namespace BizHawk.MultiClient Subtitle sub = new Subtitle(); for (int x = 0; x < Global.MovieSession.Movie.Subtitles.Count; x++) { - sub = Global.MovieSession.Movie.Subtitles[x]; + sub = Global.MovieSession.Movie.Subtitles.GetSubtitleByIndex(x); if (Global.Emulator.Frame == sub.Frame) { index = x; @@ -876,7 +874,7 @@ namespace BizHawk.MultiClient if (s.ShowDialog() == DialogResult.OK) { if (index >= 0) - Global.MovieSession.Movie.Subtitles.RemoveAt(index); + Global.MovieSession.Movie.Subtitles.Remove(index); Global.MovieSession.Movie.Subtitles.AddSubtitle(s.sub); } } @@ -1044,7 +1042,6 @@ namespace BizHawk.MultiClient private void makeMovieBackupToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Backup movie saved."); Global.MovieSession.Movie.WriteBackup(); } @@ -1075,7 +1072,7 @@ namespace BizHawk.MultiClient private void displaySubtitlesToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; Global.Config.DisplaySubtitles ^= true; } @@ -1184,14 +1181,14 @@ namespace BizHawk.MultiClient private void saveConfigToolStripMenuItem_Click(object sender, EventArgs e) { SaveConfig(); - GlobalWinF.OSD.AddMessage("Saved settings"); + Global.OSD.AddMessage("Saved settings"); } private void loadConfigToolStripMenuItem_Click(object sender, EventArgs e) { Global.Config = ConfigService.Load(PathManager.DefaultIniPath, Global.Config); Global.Config.ResolveDefaults(); - GlobalWinF.OSD.AddMessage("Config file loaded"); + Global.OSD.AddMessage("Config file loaded"); } private void frameSkipToolStripMenuItem_DropDownOpened(object sender, EventArgs e) @@ -1276,7 +1273,7 @@ namespace BizHawk.MultiClient private void menuStrip1_MenuDeactivate(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; if (!wasPaused) { UnpauseEmulator(); @@ -1503,11 +1500,11 @@ namespace BizHawk.MultiClient Global.Config.BackupSavestates ^= true; if (Global.Config.BackupSavestates) { - GlobalWinF.OSD.AddMessage("Backup savestates enabled"); + Global.OSD.AddMessage("Backup savestates enabled"); } else { - GlobalWinF.OSD.AddMessage("Backup savestates disabled"); + Global.OSD.AddMessage("Backup savestates disabled"); } } @@ -1516,11 +1513,11 @@ namespace BizHawk.MultiClient Global.Config.AutoSavestates ^= true; if (Global.Config.AutoSavestates) { - GlobalWinF.OSD.AddMessage("AutoSavestates enabled"); + Global.OSD.AddMessage("AutoSavestates enabled"); } else { - GlobalWinF.OSD.AddMessage("AutoSavestates disabled"); + Global.OSD.AddMessage("AutoSavestates disabled"); } } @@ -1529,11 +1526,11 @@ namespace BizHawk.MultiClient Global.Config.SaveScreenshotWithStates ^= true; if (Global.Config.SaveScreenshotWithStates) { - GlobalWinF.OSD.AddMessage("Screenshots will be saved in savestates"); + Global.OSD.AddMessage("Screenshots will be saved in savestates"); } else { - GlobalWinF.OSD.AddMessage("Screenshots will not be saved in savestates"); + Global.OSD.AddMessage("Screenshots will not be saved in savestates"); } } @@ -1541,7 +1538,7 @@ namespace BizHawk.MultiClient { string path = PathManager.SaveStatePrefix(Global.Game) + "." + "QuickSave" + Global.Config.SaveSlot + ".State"; SwapBackupSavestate(path); - GlobalWinF.OSD.AddMessage("Save slot " + Global.Config.SaveSlot.ToString() + " restored."); + Global.OSD.AddMessage("Save slot " + Global.Config.SaveSlot.ToString() + " restored."); } private void FreezeStatus_Click(object sender, EventArgs e) @@ -1605,9 +1602,9 @@ namespace BizHawk.MultiClient Global.Config.Atari2600_BW ^= true; ((Atari2600)Global.Emulator).SetBw(Global.Config.Atari2600_BW); if (Global.Config.Atari2600_BW) - GlobalWinF.OSD.AddMessage("Setting to Black and White Switch to On"); + Global.OSD.AddMessage("Setting to Black and White Switch to On"); else - GlobalWinF.OSD.AddMessage("Setting to Black and White Switch to Off"); + Global.OSD.AddMessage("Setting to Black and White Switch to Off"); } } @@ -1618,9 +1615,9 @@ namespace BizHawk.MultiClient Global.Config.Atari2600_LeftDifficulty ^= true; ((Atari2600)Global.Emulator).SetP0Diff(Global.Config.Atari2600_BW); if (Global.Config.Atari2600_LeftDifficulty) - GlobalWinF.OSD.AddMessage("Setting Left Difficulty to B"); + Global.OSD.AddMessage("Setting Left Difficulty to B"); else - GlobalWinF.OSD.AddMessage("Setting Left Difficulty to A"); + Global.OSD.AddMessage("Setting Left Difficulty to A"); } } @@ -1631,9 +1628,9 @@ namespace BizHawk.MultiClient Global.Config.Atari2600_RightDifficulty ^= true; ((Atari2600)Global.Emulator).SetP1Diff(Global.Config.Atari2600_BW); if (Global.Config.Atari2600_RightDifficulty) - GlobalWinF.OSD.AddMessage("Setting Right Difficulty to B"); + Global.OSD.AddMessage("Setting Right Difficulty to B"); else - GlobalWinF.OSD.AddMessage("Setting Right Difficulty to A"); + Global.OSD.AddMessage("Setting Right Difficulty to A"); } } @@ -1701,11 +1698,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowBG1_1) { - GlobalWinF.OSD.AddMessage("BG 1 Layer On"); + Global.OSD.AddMessage("BG 1 Layer On"); } else { - GlobalWinF.OSD.AddMessage("BG 1 Layer Off"); + Global.OSD.AddMessage("BG 1 Layer Off"); } } } @@ -1725,11 +1722,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowBG2_1) { - GlobalWinF.OSD.AddMessage("BG 2 Layer On"); + Global.OSD.AddMessage("BG 2 Layer On"); } else { - GlobalWinF.OSD.AddMessage("BG 2 Layer Off"); + Global.OSD.AddMessage("BG 2 Layer Off"); } } } @@ -1749,11 +1746,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowBG3_1) { - GlobalWinF.OSD.AddMessage("BG 3 Layer On"); + Global.OSD.AddMessage("BG 3 Layer On"); } else { - GlobalWinF.OSD.AddMessage("BG 3 Layer Off"); + Global.OSD.AddMessage("BG 3 Layer Off"); } } } @@ -1773,11 +1770,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowBG4_1) { - GlobalWinF.OSD.AddMessage("BG 4 Layer On"); + Global.OSD.AddMessage("BG 4 Layer On"); } else { - GlobalWinF.OSD.AddMessage("BG 4 Layer Off"); + Global.OSD.AddMessage("BG 4 Layer Off"); } } } @@ -1797,11 +1794,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowOBJ1) { - GlobalWinF.OSD.AddMessage("OBJ 1 Layer On"); + Global.OSD.AddMessage("OBJ 1 Layer On"); } else { - GlobalWinF.OSD.AddMessage("OBJ 1 Layer Off"); + Global.OSD.AddMessage("OBJ 1 Layer Off"); } } } @@ -1821,11 +1818,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowOBJ2) { - GlobalWinF.OSD.AddMessage("OBJ 2 Layer On"); + Global.OSD.AddMessage("OBJ 2 Layer On"); } else { - GlobalWinF.OSD.AddMessage("OBJ 2 Layer Off"); + Global.OSD.AddMessage("OBJ 2 Layer Off"); } } } @@ -1845,11 +1842,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowOBJ3) { - GlobalWinF.OSD.AddMessage("OBJ 3 Layer On"); + Global.OSD.AddMessage("OBJ 3 Layer On"); } else { - GlobalWinF.OSD.AddMessage("OBJ 3 Layer Off"); + Global.OSD.AddMessage("OBJ 3 Layer Off"); } } } @@ -1869,11 +1866,11 @@ namespace BizHawk.MultiClient SyncCoreCommInputSignals(); if (Global.Config.SNES_ShowOBJ4) { - GlobalWinF.OSD.AddMessage("OBJ 4 Layer On"); + Global.OSD.AddMessage("OBJ 4 Layer On"); } else { - GlobalWinF.OSD.AddMessage("OBJ 4 Layer Off"); + Global.OSD.AddMessage("OBJ 4 Layer Off"); } } } @@ -2143,9 +2140,9 @@ namespace BizHawk.MultiClient RestoreDirectory = false }; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = ofd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; @@ -2180,7 +2177,7 @@ namespace BizHawk.MultiClient } else if (IsValidMovieExtension(ext)) { - Movie m = new Movie(filePaths[0], GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(filePaths[0]); StartNewMovie(m, false); } @@ -2192,7 +2189,6 @@ namespace BizHawk.MultiClient { Global.CheatList.Load(filePaths[0], false); LoadCheatsWindow(); - ToolHelpers.UpdateCheatRelatedTools(); } else if (ext.ToUpper() == ".WCH") { @@ -2215,7 +2211,7 @@ namespace BizHawk.MultiClient string errorMsg; string warningMsg; - Movie m = MovieImport.ImportFile(filePaths[0], GlobalWinF.MainForm.GetEmuVersion(), out errorMsg, out warningMsg); + Movie m = MovieImport.ImportFile(filePaths[0], out errorMsg, out warningMsg); if (errorMsg.Length > 0) { MessageBox.Show(errorMsg, "Conversion error", MessageBoxButtons.OK, MessageBoxIcon.Error); @@ -2229,7 +2225,7 @@ namespace BizHawk.MultiClient m.WriteMovie(); StartNewMovie(m, false); } - GlobalWinF.OSD.AddMessage(warningMsg); + Global.OSD.AddMessage(warningMsg); } else LoadRom(filePaths[0]); @@ -2262,12 +2258,12 @@ namespace BizHawk.MultiClient private void createDualGBXMLToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); using (var dlg = new GBtools.DualGBXMLCreator()) { dlg.ShowDialog(this); } - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } private void tempN64PluginControlToolStripMenuItem_Click(object sender, EventArgs e) @@ -2275,11 +2271,11 @@ namespace BizHawk.MultiClient var result = new N64VideoPluginconfig().ShowDialog(); if (result == DialogResult.OK) { - GlobalWinF.OSD.AddMessage("Plugin settings saved"); + Global.OSD.AddMessage("Plugin settings saved"); } else { - GlobalWinF.OSD.AddMessage("Plugin settings aborted"); + Global.OSD.AddMessage("Plugin settings aborted"); } } @@ -2313,7 +2309,7 @@ namespace BizHawk.MultiClient private void preferencesToolStripMenuItem_Click(object sender, EventArgs e) { - using (var dlg = new SaturnPrefs()) + using (var dlg = new SATTools.SaturnPrefs()) { var result = dlg.ShowDialog(this); if (result == DialogResult.OK) @@ -2416,7 +2412,7 @@ namespace BizHawk.MultiClient private void MainForm_Resize(object sender, EventArgs e) { - GlobalWinF.RenderPanel.Resized = true; + Global.RenderPanel.Resized = true; } private void backupSaveramToolStripMenuItem_Click(object sender, EventArgs e) @@ -2424,11 +2420,11 @@ namespace BizHawk.MultiClient Global.Config.BackupSaveram ^= true; if (Global.Config.BackupSaveram) { - GlobalWinF.OSD.AddMessage("Backup saveram enabled"); + Global.OSD.AddMessage("Backup saveram enabled"); } else { - GlobalWinF.OSD.AddMessage("Backup saveram disabled"); + Global.OSD.AddMessage("Backup saveram disabled"); } } @@ -2451,13 +2447,13 @@ namespace BizHawk.MultiClient private void showClippedRegionsToolStripMenuItem_Click(object sender, EventArgs e) { Global.Config.GGShowClippedRegions ^= true; - GlobalWinF.CoreComm.GG_ShowClippedRegions = Global.Config.GGShowClippedRegions; + Global.CoreComm.GG_ShowClippedRegions = Global.Config.GGShowClippedRegions; } private void highlightActiveDisplayRegionToolStripMenuItem_Click(object sender, EventArgs e) { Global.Config.GGHighlightActiveDisplayRegion ^= true; - GlobalWinF.CoreComm.GG_HighlightActiveDisplayRegion = Global.Config.GGHighlightActiveDisplayRegion; + Global.CoreComm.GG_HighlightActiveDisplayRegion = Global.Config.GGHighlightActiveDisplayRegion; } private void saveMovieToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/BizHawk.MultiClient/MainForm.Movie.cs b/BizHawk.MultiClient/MainForm.Movie.cs index d189b54941..cab9360910 100644 --- a/BizHawk.MultiClient/MainForm.Movie.cs +++ b/BizHawk.MultiClient/MainForm.Movie.cs @@ -2,8 +2,6 @@ using System.IO; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { partial class MainForm @@ -15,7 +13,7 @@ namespace BizHawk.MultiClient if (Global.MovieSession.Movie.IsPlaying) { Global.MovieSession.Movie.ClearFrame(Global.Emulator.Frame); - GlobalWinF.OSD.AddMessage("Scrubbed input at frame " + Global.Emulator.Frame.ToString()); + Global.OSD.AddMessage("Scrubbed input at frame " + Global.Emulator.Frame.ToString()); } } @@ -27,7 +25,7 @@ namespace BizHawk.MultiClient Global.MovieSession.Movie.WriteMovie(); } - Global.MovieSession = new MovieSession { Movie = m }; + Global.MovieSession = new MovieSession {Movie = m}; RewireInputChain(); if (!record) @@ -36,7 +34,7 @@ namespace BizHawk.MultiClient SetSyncDependentSettings(); } - LoadRom(GlobalWinF.MainForm.CurrentlyOpenRom, true, !record); + LoadRom(Global.MainForm.CurrentlyOpenRom, true, !record); Global.Config.RecentMovies.Add(m.Filename); if (Global.MovieSession.Movie.StartsFromSavestate) @@ -46,19 +44,17 @@ namespace BizHawk.MultiClient } if (record) { - GlobalWinF.MainForm.ClearSaveRAM(); Global.MovieSession.Movie.StartRecording(); ReadOnly = false; } else { - GlobalWinF.MainForm.ClearSaveRAM(); Global.MovieSession.Movie.StartPlayback(); } SetMainformMovieInfo(); TAStudio1.Restart(); VirtualPadForm1.Restart(); - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; } public void SetMainformMovieInfo() @@ -120,11 +116,10 @@ namespace BizHawk.MultiClient LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); Global.Emulator.ResetFrameCounter(); } - GlobalWinF.MainForm.ClearSaveRAM(); Global.MovieSession.Movie.StartPlayback(); SetMainformMovieInfo(); - GlobalWinF.OSD.AddMessage("Replaying movie file in read-only mode"); - GlobalWinF.MainForm.ReadOnly = true; + Global.OSD.AddMessage("Replaying movie file in read-only mode"); + Global.MainForm.ReadOnly = true; } } @@ -147,22 +142,14 @@ namespace BizHawk.MultiClient Global.MovieSession.Movie.Stop(abortchanges); if (!abortchanges) { - GlobalWinF.OSD.AddMessage(Path.GetFileName(Global.MovieSession.Movie.Filename) + " written to disk."); + Global.OSD.AddMessage(Path.GetFileName(Global.MovieSession.Movie.Filename) + " written to disk."); } - GlobalWinF.OSD.AddMessage(message); - GlobalWinF.MainForm.ReadOnly = true; + Global.OSD.AddMessage(message); + Global.MainForm.ReadOnly = true; SetMainformMovieInfo(); } } - private void ShowError(string error) - { - if (!String.IsNullOrWhiteSpace(error)) - { - MessageBox.Show(error, "Loadstate Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private bool HandleMovieLoadState(string path) { using (var sr = new StreamReader(path)) @@ -171,10 +158,8 @@ namespace BizHawk.MultiClient } } - //OMG this needs to be refactored! private bool HandleMovieLoadState(StreamReader reader) { - string ErrorMSG = String.Empty; //Note, some of the situations in these IF's may be identical and could be combined but I intentionally separated it out for clarity if (!Global.MovieSession.Movie.IsActive) { @@ -183,94 +168,29 @@ namespace BizHawk.MultiClient else if (Global.MovieSession.Movie.IsRecording) { + if (ReadOnly) { - var result = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: false, IgnoreGuidMismatch: false, ErrorMessage: out ErrorMSG); - if (result == Movie.LoadStateResult.Pass) + if (!Global.MovieSession.Movie.CheckTimeLines(reader, false)) + { + return false; //Timeline/GUID error + } + else { Global.MovieSession.Movie.WriteMovie(); Global.MovieSession.Movie.SwitchToPlay(); SetMainformMovieInfo(); - return true; - } - else - { - if (result == Movie.LoadStateResult.GuidMismatch) - { - var dresult = MessageBox.Show("The savestate GUID does not match the current movie. Proceed anyway?", - "GUID Mismatch error", - MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dresult == DialogResult.Yes) - { - var newresult = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: false, IgnoreGuidMismatch: true, ErrorMessage: out ErrorMSG); - if (newresult == Movie.LoadStateResult.Pass) - { - Global.MovieSession.Movie.WriteMovie(); - Global.MovieSession.Movie.SwitchToPlay(); - SetMainformMovieInfo(); - return true; - } - else - { - ShowError(ErrorMSG); - return false; - } - } - else - { - return false; - } - } - else - { - ShowError(ErrorMSG); - return false; - } } } else { - var result = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: true, IgnoreGuidMismatch: false, ErrorMessage: out ErrorMSG); - if (result == Movie.LoadStateResult.Pass) + if (!Global.MovieSession.Movie.CheckTimeLines(reader, true)) { - reader.BaseStream.Position = 0; - reader.DiscardBufferedData(); - Global.MovieSession.Movie.LoadLogFromSavestateText(reader, Global.MovieSession.MultiTrack.IsActive); - } - else - { - if (result == Movie.LoadStateResult.GuidMismatch) - { - var dresult = MessageBox.Show("The savestate GUID does not match the current movie. Proceed anyway?", - "GUID Mismatch error", - MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dresult == DialogResult.Yes) - { - var newresult = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: false, IgnoreGuidMismatch: true, ErrorMessage: out ErrorMSG); - if (newresult == Movie.LoadStateResult.Pass) - { - reader.BaseStream.Position = 0; - reader.DiscardBufferedData(); - Global.MovieSession.Movie.LoadLogFromSavestateText(reader, Global.MovieSession.MultiTrack.IsActive); - return true; - } - else - { - ShowError(ErrorMSG); - return false; - } - } - else - { - return false; - } - } - else - { - ShowError(ErrorMSG); - return false; - } + return false; //GUID Error } + reader.BaseStream.Position = 0; + reader.DiscardBufferedData(); + Global.MovieSession.Movie.LoadLogFromSavestateText(reader); } } @@ -278,195 +198,63 @@ namespace BizHawk.MultiClient { if (ReadOnly) { - var result = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: false, ErrorMessage: out ErrorMSG); - if (result == Movie.LoadStateResult.Pass) + if (!Global.MovieSession.Movie.CheckTimeLines(reader, false)) { - //Frame loop automatically handles the rewinding effect based on Global.Emulator.Frame so nothing else is needed here - return true; - } - else - { - if (result == Movie.LoadStateResult.GuidMismatch) - { - var dresult = MessageBox.Show("The savestate GUID does not match the current movie. Proceed anyway?", - "GUID Mismatch error", - MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dresult == DialogResult.Yes) - { - var newresult = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: true, ErrorMessage: out ErrorMSG); - if (newresult == Movie.LoadStateResult.Pass) - { - return true; - } - else - { - ShowError(ErrorMSG); - return false; - } - } - else - { - return false; - } - } - else - { - ShowError(ErrorMSG); - return false; - } + return false; //Timeline/GUID error } + //Frame loop automatically handles the rewinding effect based on Global.Emulator.Frame so nothing else is needed here } else { - var result = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: false, ErrorMessage: out ErrorMSG); - if (result == Movie.LoadStateResult.Pass) + if (!Global.MovieSession.Movie.CheckTimeLines(reader, true)) { - Global.MovieSession.Movie.SwitchToRecord(); - SetMainformMovieInfo(); - reader.BaseStream.Position = 0; - reader.DiscardBufferedData(); - Global.MovieSession.Movie.LoadLogFromSavestateText(reader, Global.MovieSession.MultiTrack.IsActive); - return true; - } - else - { - if (result == Movie.LoadStateResult.GuidMismatch) - { - var dresult = MessageBox.Show("The savestate GUID does not match the current movie. Proceed anyway?", - "GUID Mismatch error", - MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dresult == DialogResult.Yes) - { - var newresult = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: true, ErrorMessage: out ErrorMSG); - if (newresult == Movie.LoadStateResult.Pass) - { - Global.MovieSession.Movie.SwitchToRecord(); - SetMainformMovieInfo(); - reader.BaseStream.Position = 0; - reader.DiscardBufferedData(); - Global.MovieSession.Movie.LoadLogFromSavestateText(reader, Global.MovieSession.MultiTrack.IsActive); - return true; - } - else - { - ShowError(ErrorMSG); - return false; - } - } - else - { - return false; - } - } - else - { - ShowError(ErrorMSG); - return false; - } + return false; //GUID Error } + Global.MovieSession.Movie.SwitchToRecord(); + SetMainformMovieInfo(); + reader.BaseStream.Position = 0; + reader.DiscardBufferedData(); + Global.MovieSession.Movie.LoadLogFromSavestateText(reader); } } else if (Global.MovieSession.Movie.IsFinished) { if (ReadOnly) { - var result = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: false, ErrorMessage: out ErrorMSG); - if (result != Movie.LoadStateResult.Pass) { - if (result == Movie.LoadStateResult.GuidMismatch) + if (!Global.MovieSession.Movie.CheckTimeLines(reader, false)) { - var dresult = MessageBox.Show("The savestate GUID does not match the current movie. Proceed anyway?", - "GUID Mismatch error", - MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dresult == DialogResult.Yes) - { - var newresult = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: true, ErrorMessage: out ErrorMSG); - if (newresult == Movie.LoadStateResult.Pass) - { - Global.MovieSession.Movie.SwitchToPlay(); - SetMainformMovieInfo(); - return true; - } - else - { - ShowError(ErrorMSG); - return false; - } - } - else - { - return false; - } + return false; //Timeline/GUID error + } + else if (Global.MovieSession.Movie.IsFinished) //TimeLine check can change a movie to finished, hence the check here (not a good design) + { + Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); } else { - ShowError(ErrorMSG); - return false; + Global.MovieSession.Movie.SwitchToPlay(); + SetMainformMovieInfo(); } } - else if (Global.MovieSession.Movie.IsFinished) //TimeLine check can change a movie to finished, hence the check here (not a good design) - { - Global.MovieSession.LatchInputFromPlayer(GlobalWinF.MovieInputSourceAdapter); - } - else - { - Global.MovieSession.Movie.SwitchToPlay(); - SetMainformMovieInfo(); - } } else { - var result = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: false, ErrorMessage: out ErrorMSG); - if (result == Movie.LoadStateResult.Pass) { - GlobalWinF.MainForm.ClearSaveRAM(); - Global.MovieSession.Movie.StartRecording(); - SetMainformMovieInfo(); - reader.BaseStream.Position = 0; - reader.DiscardBufferedData(); - Global.MovieSession.Movie.LoadLogFromSavestateText(reader, Global.MovieSession.MultiTrack.IsActive); - return true; - } - else - { - if (result == Movie.LoadStateResult.GuidMismatch) + if (!Global.MovieSession.Movie.CheckTimeLines(reader, true)) { - var dresult = MessageBox.Show("The savestate GUID does not match the current movie. Proceed anyway?", - "GUID Mismatch error", - MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dresult == DialogResult.Yes) - { - var newresult = Global.MovieSession.Movie.CheckTimeLines(reader, OnlyGUID: !ReadOnly, IgnoreGuidMismatch: true, ErrorMessage: out ErrorMSG); - if (newresult == Movie.LoadStateResult.Pass) - { - GlobalWinF.MainForm.ClearSaveRAM(); - Global.MovieSession.Movie.StartRecording(); - SetMainformMovieInfo(); - reader.BaseStream.Position = 0; - reader.DiscardBufferedData(); - Global.MovieSession.Movie.LoadLogFromSavestateText(reader, Global.MovieSession.MultiTrack.IsActive); - return true; - } - else - { - ShowError(ErrorMSG); - return false; - } - } - else - { - return false; - } + return false; //GUID Error } else { - ShowError(ErrorMSG); - return false; + Global.MovieSession.Movie.StartRecording(); + SetMainformMovieInfo(); + reader.BaseStream.Position = 0; + reader.DiscardBufferedData(); + Global.MovieSession.Movie.LoadLogFromSavestateText(reader); } } } } - return true; } @@ -482,7 +270,7 @@ namespace BizHawk.MultiClient { if (!Global.MovieSession.Movie.IsActive) { - Global.MovieSession.LatchInputFromPlayer(GlobalWinF.MovieInputSourceAdapter); + Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); } else if (Global.MovieSession.Movie.IsFinished) @@ -494,7 +282,7 @@ namespace BizHawk.MultiClient } else { - Global.MovieSession.LatchInputFromPlayer(GlobalWinF.MovieInputSourceAdapter); + Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); } } @@ -506,7 +294,7 @@ namespace BizHawk.MultiClient { Global.MovieSession.Movie.CaptureState(); Global.MovieSession.LatchInputFromLog(); - Global.MovieSession.Movie.CommitFrame(Global.Emulator.Frame, GlobalWinF.MovieOutputHardpoint); + Global.MovieSession.Movie.CommitFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint); } else { @@ -517,19 +305,19 @@ namespace BizHawk.MultiClient { Global.MovieSession.Movie.CaptureState(); Global.MovieSession.LatchInputFromLog(); - if (GlobalWinF.ClientControls["ClearFrame"]) + if (Global.ClientControls["ClearFrame"]) { - Global.MovieSession.LatchInputFromPlayer(GlobalWinF.MovieInputSourceAdapter); + Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); ClearFrame(); } else if (TAStudio1.IsHandleCreated && !TAStudio1.IsDisposed || Global.Config.MoviePlaybackPokeMode) { - Global.MovieSession.LatchInputFromPlayer(GlobalWinF.MovieInputSourceAdapter); + Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); MnemonicsGenerator mg = new MnemonicsGenerator(); - mg.SetSource( GlobalWinF.MovieOutputHardpoint); + mg.SetSource( Global.MovieOutputHardpoint); if (!mg.IsEmpty) { - Global.MovieSession.LatchInputFromPlayer(GlobalWinF.MovieInputSourceAdapter); + Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); Global.MovieSession.Movie.PokeFrame(Global.Emulator.Frame, mg.GetControllersAsMnemonic()); } else @@ -545,15 +333,15 @@ namespace BizHawk.MultiClient Global.MovieSession.Movie.CaptureState(); if (Global.MovieSession.MultiTrack.IsActive) { - Global.MovieSession.LatchMultitrackPlayerInput(GlobalWinF.MovieInputSourceAdapter, Global.MultitrackRewiringControllerAdapter); + Global.MovieSession.LatchMultitrackPlayerInput(Global.MovieInputSourceAdapter, Global.MultitrackRewiringControllerAdapter); } else { - Global.MovieSession.LatchInputFromPlayer(GlobalWinF.MovieInputSourceAdapter); + Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); } //the movie session makes sure that the correct input has been read and merged to its MovieControllerAdapter; //this has been wired to Global.MovieOutputHardpoint in RewireInputChain - Global.MovieSession.Movie.CommitFrame(Global.Emulator.Frame, GlobalWinF.MovieOutputHardpoint); + Global.MovieSession.Movie.CommitFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint); } } diff --git a/BizHawk.MultiClient/MainForm.Rewind.cs b/BizHawk.MultiClient/MainForm.Rewind.cs index d34d61023e..78192592fb 100644 --- a/BizHawk.MultiClient/MainForm.Rewind.cs +++ b/BizHawk.MultiClient/MainForm.Rewind.cs @@ -4,8 +4,6 @@ using System.Threading; using System.Collections.Generic; using System.Collections.Concurrent; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class MainForm @@ -401,12 +399,12 @@ namespace BizHawk.MultiClient { if (RewindActive != enabled) { - GlobalWinF.OSD.AddMessage("Rewind " + (enabled ? "Enabled" : "Disabled")); + Global.OSD.AddMessage("Rewind " + (enabled ? "Enabled" : "Disabled")); } if (RewindFrequency != frequency && enabled) { - GlobalWinF.OSD.AddMessage("Rewind frequency set to " + frequency); + Global.OSD.AddMessage("Rewind frequency set to " + frequency); } RewindActive = enabled; diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 445826a724..dc730ac94f 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -22,8 +22,6 @@ using BizHawk.Emulation.Consoles.Nintendo.SNES; using BizHawk.Emulation.Consoles.Sega; using BizHawk.Emulation.Consoles.TurboGrafx; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class MainForm : Form @@ -138,26 +136,7 @@ namespace BizHawk.MultiClient public void Cheats_Restart() { if (_cheats != null) _cheats.Restart(); - else Global.CheatList.NewList(GenerateDefaultCheatFilename()); - ToolHelpers.UpdateCheatRelatedTools(); - } - - public string GenerateDefaultCheatFilename() - { - PathEntry pathEntry = Global.Config.PathEntries[Global.Emulator.SystemId, "Cheats"]; - if (pathEntry == null) - { - pathEntry = Global.Config.PathEntries[Global.Emulator.SystemId, "Base"]; - } - string path = PathManager.MakeAbsolutePath(pathEntry.Path, Global.Emulator.SystemId); - - var f = new FileInfo(path); - if (f.Directory != null && f.Directory.Exists == false) - { - f.Directory.Create(); - } - - return Path.Combine(path, PathManager.FilesystemSafeName(Global.Game) + ".cht"); + else Global.CheatList.NewList(); } #if WINDOWS @@ -179,8 +158,7 @@ namespace BizHawk.MultiClient public MainForm(string[] args) { - GlobalWinF.MainForm = this; - Global.MovieSession = new MovieSession { Movie = new Movie(GlobalWinF.MainForm.GetEmuVersion()) }; + Global.MovieSession = new MovieSession { Movie = new Movie() }; MainWait = new AutoResetEvent(false); Icon = Properties.Resources.logo; InitializeComponent(); @@ -207,7 +185,7 @@ namespace BizHawk.MultiClient using (HawkFile NesCartFile = new HawkFile(Path.Combine(PathManager.GetExeDirectoryAbsolute(), "gamedb", "NesCarts.7z")).BindFirst()) return Util.ReadAllBytes(NesCartFile.GetStream()); }; - + Global.MainForm = this; //Global.CoreComm = new CoreComm(); //SyncCoreCommInputSignals(); @@ -233,29 +211,29 @@ namespace BizHawk.MultiClient ResizeBegin += (o, e) => { - if (GlobalWinF.Sound != null) GlobalWinF.Sound.StopSound(); + if (Global.Sound != null) Global.Sound.StopSound(); }; ResizeEnd += (o, e) => { - if (GlobalWinF.RenderPanel != null) GlobalWinF.RenderPanel.Resized = true; - if (GlobalWinF.Sound != null) GlobalWinF.Sound.StartSound(); + if (Global.RenderPanel != null) Global.RenderPanel.Resized = true; + if (Global.Sound != null) Global.Sound.StartSound(); }; Input.Initialize(); InitControls(); - GlobalWinF.CoreComm = new CoreComm(); + Global.CoreComm = new CoreComm(); SyncCoreCommInputSignals(); - Global.Emulator = new NullEmulator(GlobalWinF.CoreComm); - GlobalWinF.ActiveController = GlobalWinF.NullControls; - GlobalWinF.AutoFireController = GlobalWinF.AutofireNullControls; - GlobalWinF.AutofireStickyXORAdapter.SetOnOffPatternFromConfig(); + Global.Emulator = new NullEmulator(Global.CoreComm); + Global.ActiveController = Global.NullControls; + Global.AutoFireController = Global.AutofireNullControls; + Global.AutofireStickyXORAdapter.SetOnOffPatternFromConfig(); #if WINDOWS - GlobalWinF.Sound = new Sound(Handle, GlobalWinF.DSound); + Global.Sound = new Sound(Handle, Global.DSound); #else Global.Sound = new Sound(); #endif - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); RewireInputChain(); //TODO - replace this with some kind of standard dictionary-yielding parser in a separate component string cmdRom = null; @@ -314,7 +292,7 @@ namespace BizHawk.MultiClient } else { - Movie m = new Movie(cmdMovie, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(cmdMovie); ReadOnly = true; // if user is dumping and didnt supply dump length, make it as long as the loaded movie if (autoDumpLength == 0) @@ -333,7 +311,7 @@ namespace BizHawk.MultiClient } else { - Movie m = new Movie(Global.Config.RecentMovies[0], GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(Global.Config.RecentMovies[0]); StartNewMovie(m, false); } } @@ -412,7 +390,7 @@ namespace BizHawk.MultiClient } if (Global.Config.TraceLoggerAutoLoad) { - if (GlobalWinF.CoreComm.CpuTraceAvailable) + if (Global.CoreComm.CpuTraceAvailable) { LoadTraceLogger(); } @@ -453,7 +431,7 @@ namespace BizHawk.MultiClient renderTarget.Paint += (o, e) => { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; }; } @@ -463,8 +441,8 @@ namespace BizHawk.MultiClient /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { - if (GlobalWinF.DisplayManager != null) GlobalWinF.DisplayManager.Dispose(); - GlobalWinF.DisplayManager = null; + if (Global.DisplayManager != null) Global.DisplayManager.Dispose(); + Global.DisplayManager = null; if (disposing && (components != null)) { @@ -560,15 +538,15 @@ namespace BizHawk.MultiClient public void SyncCoreCommInputSignals() { - SyncCoreCommInputSignals(GlobalWinF.CoreComm); + SyncCoreCommInputSignals(Global.CoreComm); } void SyncPresentationMode() { - GlobalWinF.DisplayManager.Suspend(); + Global.DisplayManager.Suspend(); #if WINDOWS - bool gdi = Global.Config.DisplayGDI || GlobalWinF.Direct3D == null; + bool gdi = Global.Config.DisplayGDI || Global.Direct3D == null; #endif if (renderTarget != null) { @@ -577,7 +555,7 @@ namespace BizHawk.MultiClient } if (retainedPanel != null) retainedPanel.Dispose(); - if (GlobalWinF.RenderPanel != null) GlobalWinF.RenderPanel.Dispose(); + if (Global.RenderPanel != null) Global.RenderPanel.Dispose(); #if WINDOWS if (gdi) @@ -596,7 +574,7 @@ namespace BizHawk.MultiClient if (gdi) { #endif - GlobalWinF.RenderPanel = new SysdrawingRenderPanel(retainedPanel); + Global.RenderPanel = new SysdrawingRenderPanel(retainedPanel); retainedPanel.ActivateThreaded(); #if WINDOWS } @@ -604,28 +582,28 @@ namespace BizHawk.MultiClient { try { - var d3dPanel = new Direct3DRenderPanel(GlobalWinF.Direct3D, renderTarget); + var d3dPanel = new Direct3DRenderPanel(Global.Direct3D, renderTarget); d3dPanel.CreateDevice(); - GlobalWinF.RenderPanel = d3dPanel; + Global.RenderPanel = d3dPanel; } catch { Program.DisplayDirect3DError(); - GlobalWinF.Direct3D.Dispose(); - GlobalWinF.Direct3D = null; + Global.Direct3D.Dispose(); + Global.Direct3D = null; SyncPresentationMode(); } } #endif - GlobalWinF.DisplayManager.Resume(); + Global.DisplayManager.Resume(); } void SyncThrottle() { - bool fastforward = GlobalWinF.ClientControls["Fast Forward"] || FastForward; - bool superfastforward = GlobalWinF.ClientControls["Turbo"]; - GlobalWinF.ForceNoThrottle = unthrottled || fastforward; + bool fastforward = Global.ClientControls["Fast Forward"] || FastForward; + bool superfastforward = Global.ClientControls["Turbo"]; + 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); @@ -648,14 +626,14 @@ namespace BizHawk.MultiClient { Global.Config.SpeedPercentAlternate = value; SyncThrottle(); - GlobalWinF.OSD.AddMessage("Alternate Speed: " + value + "%"); + Global.OSD.AddMessage("Alternate Speed: " + value + "%"); } void SetSpeedPercent(int value) { Global.Config.SpeedPercent = value; SyncThrottle(); - GlobalWinF.OSD.AddMessage("Speed: " + value + "%"); + Global.OSD.AddMessage("Speed: " + value + "%"); } public void ProgramRunLoop() @@ -668,20 +646,20 @@ namespace BizHawk.MultiClient Input.Instance.Update(); //handle events and dispatch as a hotkey action, or a hotkey button, or an input button ProcessInput(); - GlobalWinF.ClientControls.LatchFromPhysical(GlobalWinF.HotkeyCoalescer); - GlobalWinF.ActiveController.LatchFromPhysical(GlobalWinF.ControllerInputCoalescer); + Global.ClientControls.LatchFromPhysical(Global.HotkeyCoalescer); + Global.ActiveController.LatchFromPhysical(Global.ControllerInputCoalescer); - GlobalWinF.ActiveController.OR_FromLogical(GlobalWinF.ClickyVirtualPadController); - GlobalWinF.AutoFireController.LatchFromPhysical(GlobalWinF.ControllerInputCoalescer); + Global.ActiveController.OR_FromLogical(Global.ClickyVirtualPadController); + Global.AutoFireController.LatchFromPhysical(Global.ControllerInputCoalescer); - if (GlobalWinF.ClientControls["Autohold"]) + if (Global.ClientControls["Autohold"]) { - GlobalWinF.StickyXORAdapter.MassToggleStickyState(GlobalWinF.ActiveController.PressedButtons); - GlobalWinF.AutofireStickyXORAdapter.MassToggleStickyState(GlobalWinF.AutoFireController.PressedButtons); + Global.StickyXORAdapter.MassToggleStickyState(Global.ActiveController.PressedButtons); + Global.AutofireStickyXORAdapter.MassToggleStickyState(Global.AutoFireController.PressedButtons); } - else if (GlobalWinF.ClientControls["Autofire"]) + else if (Global.ClientControls["Autofire"]) { - GlobalWinF.AutofireStickyXORAdapter.MassToggleStickyState(GlobalWinF.ActiveController.PressedButtons); + Global.AutofireStickyXORAdapter.MassToggleStickyState(Global.ActiveController.PressedButtons); } //if (!EmulatorPaused) @@ -695,7 +673,7 @@ namespace BizHawk.MultiClient //if(!IsNullEmulator()) StepRunLoop_Throttle(); - if (GlobalWinF.DisplayManager.NeedsToPaint) { Render(); } + if (Global.DisplayManager.NeedsToPaint) { Render(); } CheckMessages(); if (exit) @@ -766,7 +744,7 @@ namespace BizHawk.MultiClient private void LoadMoviesFromRecent(string path) { - Movie m = new Movie(path, GetEmuVersion()); + Movie m = new Movie(path); if (!m.Loaded) { @@ -788,14 +766,14 @@ namespace BizHawk.MultiClient BoolButtons = Global.Config.HotkeyBindings.Select(x => x.DisplayName).ToList() }); - foreach (var b in Global.Config.HotkeyBindings) + foreach (Binding b in Global.Config.HotkeyBindings) { controls.BindMulti(b.DisplayName, b.Bindings); } - GlobalWinF.ClientControls = controls; - GlobalWinF.NullControls = new Controller(NullEmulator.NullController); - GlobalWinF.AutofireNullControls = new AutofireController(NullEmulator.NullController); + Global.ClientControls = controls; + Global.NullControls = new Controller(NullEmulator.NullController); + Global.AutofireNullControls = new AutofireController(NullEmulator.NullController); } @@ -940,8 +918,8 @@ namespace BizHawk.MultiClient { if (!Global.MovieSession.Movie.IsPlaying || Global.MovieSession.Movie.IsFinished) { - GlobalWinF.ClickyVirtualPadController.Click(button); - GlobalWinF.OSD.AddMessage(msg); + Global.ClickyVirtualPadController.Click(button); + Global.OSD.AddMessage(msg); } } }); @@ -987,7 +965,7 @@ namespace BizHawk.MultiClient } } - static Controller BindToDefinition(ControllerDefinition def, Dictionary> allbinds, Dictionary> analogbinds) + static Controller BindToDefinition(ControllerDefinition def, Dictionary> allbinds, Dictionary> analogbinds) { var ret = new Controller(def); Dictionary binds; @@ -1036,42 +1014,42 @@ namespace BizHawk.MultiClient { var def = Global.Emulator.ControllerDefinition; - GlobalWinF.ActiveController = BindToDefinition(def, Global.Config.AllTrollers, Global.Config.AllTrollersAnalog); - GlobalWinF.AutoFireController = BindToDefinitionAF(def, Global.Config.AllTrollersAutoFire); + Global.ActiveController = BindToDefinition(def, Global.Config.AllTrollers, Global.Config.AllTrollersAnalog); + Global.AutoFireController = BindToDefinitionAF(def, Global.Config.AllTrollersAutoFire); // allow propogating controls that are in the current controller definition but not in the prebaked one // these two lines shouldn't be required anymore under the new system? - GlobalWinF.ActiveController.ForceType(new ControllerDefinition(Global.Emulator.ControllerDefinition)); - GlobalWinF.ClickyVirtualPadController.Type = new ControllerDefinition(Global.Emulator.ControllerDefinition); + Global.ActiveController.ForceType(new ControllerDefinition(Global.Emulator.ControllerDefinition)); + Global.ClickyVirtualPadController.Type = new ControllerDefinition(Global.Emulator.ControllerDefinition); RewireInputChain(); } void RewireInputChain() { - GlobalWinF.ControllerInputCoalescer = new ControllerInputCoalescer { Type = GlobalWinF.ActiveController.Type }; + Global.ControllerInputCoalescer = new ControllerInputCoalescer { Type = Global.ActiveController.Type }; - GlobalWinF.OrControllerAdapter.Source = GlobalWinF.ActiveController; - GlobalWinF.OrControllerAdapter.SourceOr = GlobalWinF.AutoFireController; - GlobalWinF.UD_LR_ControllerAdapter.Source = GlobalWinF.OrControllerAdapter; + Global.OrControllerAdapter.Source = Global.ActiveController; + Global.OrControllerAdapter.SourceOr = Global.AutoFireController; + Global.UD_LR_ControllerAdapter.Source = Global.OrControllerAdapter; - GlobalWinF.StickyXORAdapter.Source = GlobalWinF.UD_LR_ControllerAdapter; - GlobalWinF.AutofireStickyXORAdapter.Source = GlobalWinF.StickyXORAdapter; + Global.StickyXORAdapter.Source = Global.UD_LR_ControllerAdapter; + Global.AutofireStickyXORAdapter.Source = Global.StickyXORAdapter; - Global.MultitrackRewiringControllerAdapter.Source = GlobalWinF.AutofireStickyXORAdapter; - GlobalWinF.ForceOffAdaptor.Source = Global.MultitrackRewiringControllerAdapter; + Global.MultitrackRewiringControllerAdapter.Source = Global.AutofireStickyXORAdapter; + Global.ForceOffAdaptor.Source = Global.MultitrackRewiringControllerAdapter; - GlobalWinF.MovieInputSourceAdapter.Source = GlobalWinF.ForceOffAdaptor; - GlobalWinF.ControllerOutput.Source = GlobalWinF.MovieOutputHardpoint; + Global.MovieInputSourceAdapter.Source = Global.ForceOffAdaptor; + Global.ControllerOutput.Source = Global.MovieOutputHardpoint; - Global.Emulator.Controller = GlobalWinF.ControllerOutput; - Global.MovieSession.MovieControllerAdapter.Type = GlobalWinF.MovieInputSourceAdapter.Type; + Global.Emulator.Controller = Global.ControllerOutput; + Global.MovieSession.MovieControllerAdapter.Type = Global.MovieInputSourceAdapter.Type; //connect the movie session before MovieOutputHardpoint if it is doing anything //otherwise connect the MovieInputSourceAdapter to it, effectively bypassing the movie session if (Global.MovieSession.Movie != null) - GlobalWinF.MovieOutputHardpoint.Source = Global.MovieSession.MovieControllerAdapter; + Global.MovieOutputHardpoint.Source = Global.MovieSession.MovieControllerAdapter; else - GlobalWinF.MovieOutputHardpoint.Source = GlobalWinF.MovieInputSourceAdapter; + Global.MovieOutputHardpoint.Source = Global.MovieInputSourceAdapter; } public bool LoadRom(string path, bool deterministicemulation = false, bool hasmovie = false) @@ -1560,7 +1538,7 @@ namespace BizHawk.MultiClient CloseGame(); Global.Emulator.Dispose(); Global.Emulator = nextEmulator; - GlobalWinF.CoreComm = nextComm; + Global.CoreComm = nextComm; Global.Game = game; SyncCoreCommInputSignals(); SyncControls(); @@ -1639,7 +1617,7 @@ namespace BizHawk.MultiClient if (Global.CheatList.AttemptToLoadCheatFile()) { ToolHelpers.UpdateCheatRelatedTools(); - GlobalWinF.OSD.AddMessage("Cheats file loaded"); + Global.OSD.AddMessage("Cheats file loaded"); } } @@ -1653,9 +1631,9 @@ namespace BizHawk.MultiClient CaptureRewindState(); - GlobalWinF.StickyXORAdapter.ClearStickies(); - GlobalWinF.StickyXORAdapter.ClearStickyFloats(); - GlobalWinF.AutofireStickyXORAdapter.ClearStickies(); + Global.StickyXORAdapter.ClearStickies(); + Global.StickyXORAdapter.ClearStickyFloats(); + Global.AutofireStickyXORAdapter.ClearStickies(); RewireSound(); @@ -1669,13 +1647,13 @@ namespace BizHawk.MultiClient { // we're video dumping, so async mode only and use the DumpProxy. // note that the avi dumper has already rewired the emulator itself in this case. - GlobalWinF.Sound.SetAsyncInputPin(DumpProxy); + Global.Sound.SetAsyncInputPin(DumpProxy); } else if (Global.Config.SoundThrottle) { // for sound throttle, use sync mode Global.Emulator.EndAsyncSound(); - GlobalWinF.Sound.SetSyncInputPin(Global.Emulator.SyncSoundProvider); + Global.Sound.SetSyncInputPin(Global.Emulator.SyncSoundProvider); } else { @@ -1683,11 +1661,11 @@ namespace BizHawk.MultiClient if (!Global.Emulator.StartAsyncSound()) { // if the core doesn't support async mode, use a standard vecna wrapper - GlobalWinF.Sound.SetAsyncInputPin(new Emulation.Sound.MetaspuAsync(Global.Emulator.SyncSoundProvider, Emulation.Sound.ESynchMethod.ESynchMethod_V)); + Global.Sound.SetAsyncInputPin(new Emulation.Sound.MetaspuAsync(Global.Emulator.SyncSoundProvider, Emulation.Sound.ESynchMethod.ESynchMethod_V)); } else { - GlobalWinF.Sound.SetAsyncInputPin(Global.Emulator.SoundProvider); + Global.Sound.SetAsyncInputPin(Global.Emulator.SoundProvider); } } } @@ -1846,7 +1824,7 @@ namespace BizHawk.MultiClient //TODO - wonder what happens if we pop up something interactive as a response to one of these hotkeys? may need to purge further processing //look for hotkey bindings for this key - var triggers = GlobalWinF.ClientControls.SearchBindings(ie.LogicalButton.ToString()); + var triggers = Global.ClientControls.SearchBindings(ie.LogicalButton.ToString()); if (triggers.Count == 0) { //bool sys_hotkey = false; @@ -1893,7 +1871,7 @@ namespace BizHawk.MultiClient { default: case 0: //Both allowed - GlobalWinF.ControllerInputCoalescer.Receive(ie); + Global.ControllerInputCoalescer.Receive(ie); handled = false; if (ie.EventType == Input.InputEventType.Press) @@ -1904,12 +1882,12 @@ namespace BizHawk.MultiClient //hotkeys which arent handled as actions get coalesced as pollable virtual client buttons if (!handled) { - GlobalWinF.HotkeyCoalescer.Receive(ie); + Global.HotkeyCoalescer.Receive(ie); } break; case 1: //Input overrides Hokeys - GlobalWinF.ControllerInputCoalescer.Receive(ie); - bool inputisbound = GlobalWinF.ActiveController.HasBinding(ie.LogicalButton.ToString()); + Global.ControllerInputCoalescer.Receive(ie); + bool inputisbound = Global.ActiveController.HasBinding(ie.LogicalButton.ToString()); if (!inputisbound) { handled = false; @@ -1921,7 +1899,7 @@ namespace BizHawk.MultiClient //hotkeys which arent handled as actions get coalesced as pollable virtual client buttons if (!handled) { - GlobalWinF.HotkeyCoalescer.Receive(ie); + Global.HotkeyCoalescer.Receive(ie); } } break; @@ -1935,8 +1913,8 @@ namespace BizHawk.MultiClient //hotkeys which arent handled as actions get coalesced as pollable virtual client buttons if (!handled) { - GlobalWinF.HotkeyCoalescer.Receive(ie); - GlobalWinF.ControllerInputCoalescer.Receive(ie); + Global.HotkeyCoalescer.Receive(ie); + Global.ControllerInputCoalescer.Receive(ie); } break; } @@ -1944,15 +1922,15 @@ namespace BizHawk.MultiClient } //foreach event // also handle floats - GlobalWinF.ControllerInputCoalescer.AcceptNewFloats(Input.Instance.GetFloats()); + Global.ControllerInputCoalescer.AcceptNewFloats(Input.Instance.GetFloats()); } private void ClearAutohold() { - GlobalWinF.StickyXORAdapter.ClearStickies(); - GlobalWinF.AutofireStickyXORAdapter.ClearStickies(); + Global.StickyXORAdapter.ClearStickies(); + Global.AutofireStickyXORAdapter.ClearStickies(); VirtualPadForm1.ClearVirtualPadHolds(); - GlobalWinF.OSD.AddMessage("Autohold keys cleared"); + Global.OSD.AddMessage("Autohold keys cleared"); } bool CheckHotkey(string trigger) @@ -1965,7 +1943,7 @@ namespace BizHawk.MultiClient case "Pause": TogglePause(); break; case "Toggle Throttle": unthrottled ^= true; - GlobalWinF.OSD.AddMessage("Unthrottled: " + unthrottled); + Global.OSD.AddMessage("Unthrottled: " + unthrottled); break; case "Soft Reset": SoftReset(); break; case "Hard Reset": HardReset(); break; @@ -2051,19 +2029,19 @@ namespace BizHawk.MultiClient if (Global.Config.VBAStyleMovieLoadState) { - GlobalWinF.OSD.AddMessage("Multi-track can not be used in Full Movie Loadstates mode"); + Global.OSD.AddMessage("Multi-track can not be used in Full Movie Loadstates mode"); } else { Global.MovieSession.MultiTrack.IsActive = !Global.MovieSession.MultiTrack.IsActive; if (Global.MovieSession.MultiTrack.IsActive) { - GlobalWinF.OSD.AddMessage("MultiTrack Enabled"); - GlobalWinF.OSD.MT = "Recording None"; + Global.OSD.AddMessage("MultiTrack Enabled"); + Global.OSD.MT = "Recording None"; } else { - GlobalWinF.OSD.AddMessage("MultiTrack Disabled"); + Global.OSD.AddMessage("MultiTrack Disabled"); } Global.MovieSession.MultiTrack.RecordAll = false; Global.MovieSession.MultiTrack.CurrentPlayer = 0; @@ -2071,21 +2049,21 @@ namespace BizHawk.MultiClient } else { - GlobalWinF.OSD.AddMessage("MultiTrack cannot be enabled while not recording."); + Global.OSD.AddMessage("MultiTrack cannot be enabled while not recording."); } - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; break; case "MT Select All": Global.MovieSession.MultiTrack.CurrentPlayer = 0; Global.MovieSession.MultiTrack.RecordAll = true; - GlobalWinF.OSD.MT = "Recording All"; - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.OSD.MT = "Recording All"; + Global.DisplayManager.NeedsToPaint = true; break; case "MT Select None": Global.MovieSession.MultiTrack.CurrentPlayer = 0; Global.MovieSession.MultiTrack.RecordAll = false; - GlobalWinF.OSD.MT = "Recording None"; - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.OSD.MT = "Recording None"; + Global.DisplayManager.NeedsToPaint = true; break; case "MT Increment Player": Global.MovieSession.MultiTrack.CurrentPlayer++; @@ -2094,8 +2072,8 @@ namespace BizHawk.MultiClient { Global.MovieSession.MultiTrack.CurrentPlayer = 1; } - GlobalWinF.OSD.MT = "Recording Player " + Global.MovieSession.MultiTrack.CurrentPlayer.ToString(); - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.OSD.MT = "Recording Player " + Global.MovieSession.MultiTrack.CurrentPlayer.ToString(); + Global.DisplayManager.NeedsToPaint = true; break; case "MT Decrement Player": Global.MovieSession.MultiTrack.CurrentPlayer--; @@ -2104,8 +2082,8 @@ namespace BizHawk.MultiClient { Global.MovieSession.MultiTrack.CurrentPlayer = 5;//TODO: Replace with console's maximum or current maximum players??! } - GlobalWinF.OSD.MT = "Recording Player " + Global.MovieSession.MultiTrack.CurrentPlayer.ToString(); - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.OSD.MT = "Recording Player " + Global.MovieSession.MultiTrack.CurrentPlayer.ToString(); + Global.DisplayManager.NeedsToPaint = true; break; case "Movie Poke": ToggleModePokeMode(); break; @@ -2174,7 +2152,7 @@ namespace BizHawk.MultiClient runFrame = true; } - if (GlobalWinF.ClientControls["Frame Advance"] || PressFrameAdvance) + if (Global.ClientControls["Frame Advance"] || PressFrameAdvance) { //handle the initial trigger of a frame advance if (FrameAdvanceTimestamp == DateTime.MinValue) @@ -2212,7 +2190,7 @@ namespace BizHawk.MultiClient } bool ReturnToRecording = Global.MovieSession.Movie.IsRecording; - if (RewindActive && (GlobalWinF.ClientControls["Rewind"] || PressRewind)) + if (RewindActive && (Global.ClientControls["Rewind"] || PressRewind)) { Rewind(1); suppressCaptureRewind = true; @@ -2243,8 +2221,8 @@ namespace BizHawk.MultiClient bool coreskipaudio = false; if (runFrame) { - bool ff = GlobalWinF.ClientControls["Fast Forward"] || GlobalWinF.ClientControls["Turbo"]; - bool fff = GlobalWinF.ClientControls["Turbo"]; + bool ff = Global.ClientControls["Fast Forward"] || Global.ClientControls["Turbo"]; + bool fff = Global.ClientControls["Turbo"]; bool updateFpsString = (runloop_last_ff != ff); runloop_last_ff = ff; @@ -2253,11 +2231,11 @@ namespace BizHawk.MultiClient UpdateToolsBefore(); } - GlobalWinF.ClickyVirtualPadController.FrameTick(); + Global.ClickyVirtualPadController.FrameTick(); runloop_fps++; //client input-related duties - GlobalWinF.OSD.ClearGUIText(); + Global.OSD.ClearGUIText(); if ((DateTime.Now - runloop_second).TotalSeconds > 1) { @@ -2278,7 +2256,7 @@ namespace BizHawk.MultiClient { fps_string += " >>"; } - GlobalWinF.OSD.FPS = fps_string; + Global.OSD.FPS = fps_string; } if (!suppressCaptureRewind && RewindActive) CaptureRewindState(); @@ -2289,11 +2267,11 @@ namespace BizHawk.MultiClient HandleMovieOnFrameLoop(); - coreskipaudio = GlobalWinF.ClientControls["Turbo"] && CurrAviWriter == null; + coreskipaudio = Global.ClientControls["Turbo"] && CurrAviWriter == null; //======================================= Global.CheatList.Pulse(); Global.Emulator.FrameAdvance(!throttle.skipnextframe || CurrAviWriter != null, !coreskipaudio); - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; Global.CheatList.Pulse(); //======================================= @@ -2304,7 +2282,7 @@ namespace BizHawk.MultiClient if (Global.Emulator.IsLagFrame && Global.Config.AutofireLagFrames) { - GlobalWinF.AutoFireController.IncrementStarts(); + Global.AutoFireController.IncrementStarts(); } PressFrameAdvance = false; @@ -2314,7 +2292,7 @@ namespace BizHawk.MultiClient } } - if (GlobalWinF.ClientControls["Rewind"] || PressRewind) + if (Global.ClientControls["Rewind"] || PressRewind) { UpdateToolsAfter(); if (ReturnToRecording) @@ -2334,10 +2312,10 @@ namespace BizHawk.MultiClient if (genSound && !coreskipaudio) { - GlobalWinF.Sound.UpdateSound(); + Global.Sound.UpdateSound(); } else - GlobalWinF.Sound.UpdateSilence(); + Global.Sound.UpdateSilence(); } /// @@ -2393,7 +2371,7 @@ namespace BizHawk.MultiClient LuaConsole1.LuaImp.FrameRegisterAfter(); if (!fromLua) { - GlobalWinF.DisplayManager.PreFrameUpdateLuaSource(); + Global.DisplayManager.PreFrameUpdateLuaSource(); LuaConsole1.EndLuaDrawing(); } } @@ -2438,7 +2416,7 @@ namespace BizHawk.MultiClient { Clipboard.SetImage(img); } - GlobalWinF.OSD.AddMessage("Screenshot saved to clipboard."); + Global.OSD.AddMessage("Screenshot saved to clipboard."); } public void TakeScreenshot() @@ -2463,7 +2441,7 @@ namespace BizHawk.MultiClient { img.Save(fi.FullName, ImageFormat.Png); } - GlobalWinF.OSD.AddMessage(fi.Name + " saved."); + Global.OSD.AddMessage(fi.Name + " saved."); } public void SaveState(string name) @@ -2551,7 +2529,7 @@ namespace BizHawk.MultiClient //DateTime end = DateTime.UtcNow; //Console.WriteLine("n64 savestate TEXT time: {0}", (end - start).TotalMilliseconds); } - GlobalWinF.OSD.AddMessage("Saved state: " + name); + Global.OSD.AddMessage("Saved state: " + name); if (!fromLua) UpdateStatusSlots(); @@ -2568,9 +2546,9 @@ namespace BizHawk.MultiClient if (file.Directory != null && file.Directory.Exists == false) file.Directory.Create(); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; @@ -2580,7 +2558,7 @@ namespace BizHawk.MultiClient public void LoadStateFile(string path, string name, bool fromLua = false) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; // try to detect binary first BinaryStateLoader bw = BinaryStateLoader.LoadAndDetect(path); if (bw != null) @@ -2661,15 +2639,15 @@ namespace BizHawk.MultiClient } } else - GlobalWinF.OSD.AddMessage("Loadstate error!"); + Global.OSD.AddMessage("Loadstate error!"); } cleanup: - GlobalWinF.OSD.ClearGUIText(); + Global.OSD.ClearGUIText(); UpdateToolsBefore(fromLua); UpdateToolsAfter(fromLua); UpdateToolsLoadstate(); - GlobalWinF.OSD.AddMessage("Loaded state: " + name); + Global.OSD.AddMessage("Loaded state: " + name); LuaConsole1.LuaImp.SavestateRegisterLoad(name); } @@ -2683,7 +2661,7 @@ namespace BizHawk.MultiClient string path = PathManager.SaveStatePrefix(Global.Game) + "." + name + ".State"; if (File.Exists(path) == false) { - GlobalWinF.OSD.AddMessage("Unable to load " + name + ".State"); + Global.OSD.AddMessage("Unable to load " + name + ".State"); return; } @@ -2700,9 +2678,9 @@ namespace BizHawk.MultiClient RestoreDirectory = true }; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = ofd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; @@ -2715,7 +2693,7 @@ namespace BizHawk.MultiClient private void SaveSlotSelectedMessage() { - GlobalWinF.OSD.AddMessage("Slot " + Global.Config.SaveSlot + " selected."); + Global.OSD.AddMessage("Slot " + Global.Config.SaveSlot + " selected."); } public void LoadRamSearch() @@ -3109,7 +3087,7 @@ namespace BizHawk.MultiClient FrameBufferResized(); } - GlobalWinF.DisplayManager.UpdateSource(Global.Emulator.VideoProvider); + Global.DisplayManager.UpdateSource(Global.Emulator.VideoProvider); } public void FrameBufferResized() @@ -3134,7 +3112,7 @@ namespace BizHawk.MultiClient // Change size Size = new Size((video.BufferWidth * zoom) + borderWidth, (video.BufferHeight * zoom + borderHeight)); PerformLayout(); - GlobalWinF.RenderPanel.Resized = true; + Global.RenderPanel.Resized = true; // Is window off the screen at this size? if (area.Contains(Bounds) == false) @@ -3161,7 +3139,7 @@ namespace BizHawk.MultiClient MainMenuStrip.Visible = false; StatusSlot0.Visible = false; PerformLayout(); - GlobalWinF.RenderPanel.Resized = true; + Global.RenderPanel.Resized = true; InFullscreen = true; } else @@ -3282,9 +3260,9 @@ namespace BizHawk.MultiClient ofd.RestoreDirectory = false; ofd.FilterIndex = LastOpenRomFilter; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = ofd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; var file = new FileInfo(ofd.FileName); @@ -3310,7 +3288,7 @@ namespace BizHawk.MultiClient if (File.Exists(path)) { File.Delete(path); - GlobalWinF.OSD.AddMessage("SRAM cleared."); + Global.OSD.AddMessage("SRAM cleared."); } } else if (Global.Emulator.SaveRamModified) @@ -3320,11 +3298,11 @@ namespace BizHawk.MultiClient StopAVI(); Global.Emulator.Dispose(); - GlobalWinF.CoreComm = new CoreComm(); + Global.CoreComm = new CoreComm(); SyncCoreCommInputSignals(); - Global.Emulator = new NullEmulator(GlobalWinF.CoreComm); - GlobalWinF.ActiveController = GlobalWinF.NullControls; - GlobalWinF.AutoFireController = GlobalWinF.AutofireNullControls; + Global.Emulator = new NullEmulator(Global.CoreComm); + Global.ActiveController = Global.NullControls; + Global.AutoFireController = Global.AutofireNullControls; Global.MovieSession.Movie.Stop(); NeedsReboot = false; SetRebootIconStatus(); @@ -3333,9 +3311,9 @@ namespace BizHawk.MultiClient public void CloseROM(bool clearSRAM = false) { CloseGame(clearSRAM); - GlobalWinF.CoreComm = new CoreComm(); + Global.CoreComm = new CoreComm(); SyncCoreCommInputSignals(); - Global.Emulator = new NullEmulator(GlobalWinF.CoreComm); + Global.Emulator = new NullEmulator(Global.CoreComm); Global.Game = GameInfo.GetNullGame(); RewireSound(); @@ -3455,16 +3433,16 @@ namespace BizHawk.MultiClient ReadOnly ^= true; if (ReadOnly) { - GlobalWinF.OSD.AddMessage("Movie read-only mode"); + Global.OSD.AddMessage("Movie read-only mode"); } else { - GlobalWinF.OSD.AddMessage("Movie read+write mode"); + Global.OSD.AddMessage("Movie read+write mode"); } } else { - GlobalWinF.OSD.AddMessage("No movie active"); + Global.OSD.AddMessage("No movie active"); } } @@ -3474,11 +3452,11 @@ namespace BizHawk.MultiClient ReadOnly = read_only; if (ReadOnly) { - GlobalWinF.OSD.AddMessage("Movie read-only mode"); + Global.OSD.AddMessage("Movie read-only mode"); } else { - GlobalWinF.OSD.AddMessage("Movie read+write mode"); + Global.OSD.AddMessage("Movie read+write mode"); } } @@ -3509,8 +3487,8 @@ namespace BizHawk.MultiClient Global.Config.SoundVolume += 10; if (Global.Config.SoundVolume > 100) Global.Config.SoundVolume = 100; - GlobalWinF.Sound.ChangeVolume(Global.Config.SoundVolume); - GlobalWinF.OSD.AddMessage("Volume " + Global.Config.SoundVolume.ToString()); + Global.Sound.ChangeVolume(Global.Config.SoundVolume); + Global.OSD.AddMessage("Volume " + Global.Config.SoundVolume.ToString()); } private void VolumeDown() @@ -3518,8 +3496,8 @@ namespace BizHawk.MultiClient Global.Config.SoundVolume -= 10; if (Global.Config.SoundVolume < 0) Global.Config.SoundVolume = 0; - GlobalWinF.Sound.ChangeVolume(Global.Config.SoundVolume); - GlobalWinF.OSD.AddMessage("Volume " + Global.Config.SoundVolume.ToString()); + Global.Sound.ChangeVolume(Global.Config.SoundVolume); + Global.OSD.AddMessage("Volume " + Global.Config.SoundVolume.ToString()); } private void SoftReset() @@ -3529,8 +3507,8 @@ namespace BizHawk.MultiClient { if (!Global.MovieSession.Movie.IsPlaying || Global.MovieSession.Movie.IsFinished) { - GlobalWinF.ClickyVirtualPadController.Click("Reset"); - GlobalWinF.OSD.AddMessage("Reset button pressed."); + Global.ClickyVirtualPadController.Click("Reset"); + Global.OSD.AddMessage("Reset button pressed."); } } } @@ -3542,8 +3520,8 @@ namespace BizHawk.MultiClient { if (!Global.MovieSession.Movie.IsPlaying || Global.MovieSession.Movie.IsFinished) { - GlobalWinF.ClickyVirtualPadController.Click("Power"); - GlobalWinF.OSD.AddMessage("Power button pressed."); + Global.ClickyVirtualPadController.Click("Power"); + Global.OSD.AddMessage("Power button pressed."); } } } @@ -3722,7 +3700,7 @@ namespace BizHawk.MultiClient } else { - aw = VideoWriterChooserForm.DoVideoWriterChoserDlg(video_writers, GlobalWinF.MainForm, out avwriter_resizew, out avwriter_resizeh); + aw = VideoWriterChooserForm.DoVideoWriterChoserDlg(video_writers, Global.MainForm, out avwriter_resizew, out avwriter_resizeh); } foreach (var w in video_writers) @@ -3734,9 +3712,9 @@ namespace BizHawk.MultiClient if (aw == null) { if (unattended) - GlobalWinF.OSD.AddMessage(string.Format("Couldn't start video writer \"{0}\"", videowritername)); + Global.OSD.AddMessage(string.Format("Couldn't start video writer \"{0}\"", videowritername)); else - GlobalWinF.OSD.AddMessage("A/V capture canceled."); + Global.OSD.AddMessage("A/V capture canceled."); return; } @@ -3757,10 +3735,10 @@ namespace BizHawk.MultiClient } else { - var token = aw.AcquireVideoCodecToken(GlobalWinF.MainForm); + var token = aw.AcquireVideoCodecToken(Global.MainForm); if (token == null) { - GlobalWinF.OSD.AddMessage("A/V capture canceled."); + Global.OSD.AddMessage("A/V capture canceled."); aw.Dispose(); return; } @@ -3787,9 +3765,9 @@ namespace BizHawk.MultiClient } sfd.Filter = String.Format("{0} (*.{0})|*.{0}|All Files|*.*", aw.DesiredExtension()); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.Cancel) { @@ -3801,7 +3779,7 @@ namespace BizHawk.MultiClient //commit the avi writing last, in case there were any errors earlier CurrAviWriter = aw; - GlobalWinF.OSD.AddMessage("A/V capture started"); + Global.OSD.AddMessage("A/V capture started"); AVIStatusLabel.Image = Properties.Resources.AVI; AVIStatusLabel.ToolTipText = "A/V capture in progress"; AVIStatusLabel.Visible = true; @@ -3809,7 +3787,7 @@ namespace BizHawk.MultiClient } catch { - GlobalWinF.OSD.AddMessage("A/V capture failed!"); + Global.OSD.AddMessage("A/V capture failed!"); aw.Dispose(); throw; } @@ -3834,7 +3812,7 @@ namespace BizHawk.MultiClient } CurrAviWriter.Dispose(); CurrAviWriter = null; - GlobalWinF.OSD.AddMessage("A/V capture aborted"); + Global.OSD.AddMessage("A/V capture aborted"); AVIStatusLabel.Image = Properties.Resources.Blank; AVIStatusLabel.ToolTipText = ""; AVIStatusLabel.Visible = false; @@ -3855,7 +3833,7 @@ namespace BizHawk.MultiClient CurrAviWriter.CloseFile(); CurrAviWriter.Dispose(); CurrAviWriter = null; - GlobalWinF.OSD.AddMessage("A/V capture stopped"); + Global.OSD.AddMessage("A/V capture stopped"); AVIStatusLabel.Image = Properties.Resources.Blank; AVIStatusLabel.ToolTipText = ""; AVIStatusLabel.Visible = false; @@ -3982,13 +3960,13 @@ namespace BizHawk.MultiClient string d = PathManager.MakeAbsolutePath(Global.Config.PathEntries.MoviesPath, null); string errorMsg; string warningMsg; - Movie m = MovieImport.ImportFile(fn, GlobalWinF.MainForm.GetEmuVersion(), out errorMsg, out warningMsg); + Movie m = MovieImport.ImportFile(fn, out errorMsg, out warningMsg); if (errorMsg.Length > 0) MessageBox.Show(errorMsg, "Conversion error", MessageBoxButtons.OK, MessageBoxIcon.Error); if (warningMsg.Length > 0) - GlobalWinF.OSD.AddMessage(warningMsg); + Global.OSD.AddMessage(warningMsg); else - GlobalWinF.OSD.AddMessage(Path.GetFileName(fn) + " imported as " + "Movies\\" + + Global.OSD.AddMessage(Path.GetFileName(fn) + " imported as " + "Movies\\" + Path.GetFileName(fn) + "." + Global.Config.MovieExtension); if (!Directory.Exists(d)) Directory.CreateDirectory(d); @@ -4022,7 +4000,7 @@ namespace BizHawk.MultiClient captureosd_rvp.Height = Global.Emulator.VideoProvider.BufferHeight; - GlobalWinF.DisplayManager.UpdateSourceEx(Global.Emulator.VideoProvider, captureosd_srp); + Global.DisplayManager.UpdateSourceEx(Global.Emulator.VideoProvider, captureosd_srp); Bitmap ret = (Bitmap)captureosd_rvp.GetBitmap().Clone(); @@ -4197,7 +4175,7 @@ namespace BizHawk.MultiClient { NeedsReboot = true; SetRebootIconStatus(); - GlobalWinF.OSD.AddMessage("Core reboot needed for this setting"); + Global.OSD.AddMessage("Core reboot needed for this setting"); } private void SaveMovie() @@ -4205,7 +4183,7 @@ namespace BizHawk.MultiClient if (Global.MovieSession.Movie.IsActive) { Global.MovieSession.Movie.WriteMovie(); - GlobalWinF.OSD.AddMessage(Global.MovieSession.Movie.Filename + " saved."); + Global.OSD.AddMessage(Global.MovieSession.Movie.Filename + " saved."); } } @@ -4263,11 +4241,11 @@ namespace BizHawk.MultiClient Global.Config.MoviePlaybackPokeMode ^= true; if (Global.Config.MoviePlaybackPokeMode) { - GlobalWinF.OSD.AddMessage("Movie Poke mode enabled"); + Global.OSD.AddMessage("Movie Poke mode enabled"); } else { - GlobalWinF.OSD.AddMessage("Movie Poke mode disabled"); + Global.OSD.AddMessage("Movie Poke mode disabled"); } } @@ -4295,12 +4273,12 @@ namespace BizHawk.MultiClient private void menuStrip1_Leave(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; } private void MainForm_Enter(object sender, EventArgs e) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; } public void LoadRamWatch(bool load_dialog) diff --git a/BizHawk.MultiClient/Program.cs b/BizHawk.MultiClient/Program.cs index b8bcf452cc..96d2a38ae0 100644 --- a/BizHawk.MultiClient/Program.cs +++ b/BizHawk.MultiClient/Program.cs @@ -12,8 +12,6 @@ using Microsoft.VisualBasic.ApplicationServices; #pragma warning disable 618 -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { static class Program @@ -69,13 +67,13 @@ namespace BizHawk.MultiClient Global.Config.ResolveDefaults(); #if WINDOWS - try { GlobalWinF.DSound = SoundEnumeration.Create(); } + try { Global.DSound = SoundEnumeration.Create(); } catch { MessageBox.Show("Couldn't initialize DirectSound! Things may go poorly for you. Try changing your sound driver to 41khz instead of 48khz in mmsys.cpl.", "Initialization Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } - try { GlobalWinF.Direct3D = new Direct3D(); } + try { Global.Direct3D = new Direct3D(); } catch { //fallback to GDI rendering @@ -124,10 +122,10 @@ namespace BizHawk.MultiClient #if WINDOWS finally { - if (GlobalWinF.DSound != null && GlobalWinF.DSound.Disposed == false) - GlobalWinF.DSound.Dispose(); - if (GlobalWinF.Direct3D != null && GlobalWinF.Direct3D.Disposed == false) - GlobalWinF.Direct3D.Dispose(); + if (Global.DSound != null && Global.DSound.Disposed == false) + Global.DSound.Dispose(); + if (Global.Direct3D != null && Global.Direct3D.Disposed == false) + Global.Direct3D.Dispose(); GamePad.CloseAll(); } #endif diff --git a/BizHawk.Client.Common/RecentFiles.cs b/BizHawk.MultiClient/RecentFiles.cs similarity index 88% rename from BizHawk.Client.Common/RecentFiles.cs rename to BizHawk.MultiClient/RecentFiles.cs index 270ab116d8..f7f016b4f2 100644 --- a/BizHawk.Client.Common/RecentFiles.cs +++ b/BizHawk.MultiClient/RecentFiles.cs @@ -1,8 +1,9 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; using System.Linq; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class RecentFiles : IEnumerable { @@ -23,7 +24,7 @@ namespace BizHawk.Client.Common return recentlist.GetEnumerator(); } - IEnumerator IEnumerable.GetEnumerator() + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } diff --git a/BizHawk.MultiClient/RenderPanel.cs b/BizHawk.MultiClient/RenderPanel.cs index bdec14fb5c..b1c888d534 100644 --- a/BizHawk.MultiClient/RenderPanel.cs +++ b/BizHawk.MultiClient/RenderPanel.cs @@ -10,8 +10,6 @@ using SlimDX; using SlimDX.Direct3D9; using d3d9font=SlimDX.Direct3D9.Font; #endif - -using BizHawk.Client.Common; using BizHawk.Core; namespace BizHawk.MultiClient @@ -348,13 +346,13 @@ namespace BizHawk.MultiClient d3d = direct3D; backingControl = control; control.MouseDoubleClick += (o, e) => HandleFullscreenToggle(o, e); - control.MouseClick += (o, e) => GlobalWinF.MainForm.MainForm_MouseClick(o, e); + control.MouseClick += (o, e) => Global.MainForm.MainForm_MouseClick(o, e); } private void HandleFullscreenToggle(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) - GlobalWinF.MainForm.ToggleFullscreen(); + Global.MainForm.ToggleFullscreen(); } private void DestroyDevice() @@ -392,7 +390,7 @@ namespace BizHawk.MultiClient { get { - if (GlobalWinF.ForceNoThrottle) + if (Global.ForceNoThrottle) return false; return Global.Config.VSyncThrottle || Global.Config.VSync; } @@ -463,13 +461,13 @@ namespace BizHawk.MultiClient // Wait until device is available or user gets annoyed and closes app Result r; // it can take a while for the device to be ready again, so avoid sound looping during the wait - if (GlobalWinF.Sound != null) GlobalWinF.Sound.StopSound(); + if (Global.Sound != null) Global.Sound.StopSound(); do { r = _device.TestCooperativeLevel(); Thread.Sleep(100); } while (r == ResultCode.DeviceLost); - if (GlobalWinF.Sound != null) GlobalWinF.Sound.StartSound(); + if (Global.Sound != null) Global.Sound.StartSound(); // lets try recovery! DestroyDevice(); diff --git a/BizHawk.Client.Common/RomGame.cs b/BizHawk.MultiClient/RomGame.cs similarity index 95% rename from BizHawk.Client.Common/RomGame.cs rename to BizHawk.MultiClient/RomGame.cs index eb43355584..f823f8e458 100644 --- a/BizHawk.Client.Common/RomGame.cs +++ b/BizHawk.MultiClient/RomGame.cs @@ -1,8 +1,6 @@ using System; using System.Globalization; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class RomGame diff --git a/BizHawk.MultiClient/SavestateManager.cs b/BizHawk.MultiClient/SavestateManager.cs index c4ac71c5a6..faca48799b 100644 --- a/BizHawk.MultiClient/SavestateManager.cs +++ b/BizHawk.MultiClient/SavestateManager.cs @@ -1,7 +1,5 @@ using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class SavestateManager diff --git a/BizHawk.MultiClient/Sound.cs b/BizHawk.MultiClient/Sound.cs index a481e17934..e1b17d38aa 100644 --- a/BizHawk.MultiClient/Sound.cs +++ b/BizHawk.MultiClient/Sound.cs @@ -6,8 +6,6 @@ using SlimDX.DirectSound; using SlimDX.Multimedia; #endif -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { #if WINDOWS @@ -137,7 +135,7 @@ namespace BizHawk.MultiClient syncsoundProvider = null; asyncsoundProvider = source; semisync.BaseSoundProvider = source; - semisync.RecalculateMagic(GlobalWinF.CoreComm.VsyncRate); + semisync.RecalculateMagic(Global.CoreComm.VsyncRate); } static int circularDist(int from, int to, int size) @@ -208,7 +206,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 diff --git a/BizHawk.MultiClient/Throttle.cs b/BizHawk.MultiClient/Throttle.cs index 20ea680b93..f491688361 100644 --- a/BizHawk.MultiClient/Throttle.cs +++ b/BizHawk.MultiClient/Throttle.cs @@ -2,8 +2,6 @@ using System.Runtime.InteropServices; using System.Threading; -using BizHawk.Client.Common; - //this throttle is nitsuja's fine-tuned techniques from desmume namespace BizHawk.MultiClient @@ -25,7 +23,7 @@ namespace BizHawk.MultiClient { get { - if (GlobalWinF.ClientControls["MaxTurbo"]) + if (Global.ClientControls["MaxTurbo"]) { return 20; } @@ -39,7 +37,7 @@ namespace BizHawk.MultiClient { get { - if (GlobalWinF.ClientControls["MaxTurbo"]) + if (Global.ClientControls["MaxTurbo"]) { return false; } @@ -54,7 +52,7 @@ namespace BizHawk.MultiClient { get { - if (GlobalWinF.ClientControls["MaxTurbo"]) + if (Global.ClientControls["MaxTurbo"]) { return false; } diff --git a/BizHawk.MultiClient/XmlGame.cs b/BizHawk.MultiClient/XmlGame.cs index c429a94aec..d274cb9fd8 100644 --- a/BizHawk.MultiClient/XmlGame.cs +++ b/BizHawk.MultiClient/XmlGame.cs @@ -5,8 +5,6 @@ using System.Text; using System.IO; using System.Xml; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class XmlGame diff --git a/BizHawk.MultiClient/config/AutofireConfig.cs b/BizHawk.MultiClient/config/AutofireConfig.cs index a5a53d4400..385d03c4d0 100644 --- a/BizHawk.MultiClient/config/AutofireConfig.cs +++ b/BizHawk.MultiClient/config/AutofireConfig.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class AutofireConfig : Form @@ -39,18 +37,18 @@ namespace BizHawk.MultiClient private void Ok_Click(object sender, EventArgs e) { - GlobalWinF.AutoFireController.On = Global.Config.AutofireOn = (int)OnNumeric.Value; - GlobalWinF.AutoFireController.Off = Global.Config.AutofireOff = (int)OffNumeric.Value; + Global.AutoFireController.On = Global.Config.AutofireOn = (int)OnNumeric.Value; + Global.AutoFireController.Off = Global.Config.AutofireOff = (int)OffNumeric.Value; Global.Config.AutofireLagFrames = LagFrameCheck.Checked; - GlobalWinF.AutofireStickyXORAdapter.SetOnOffPatternFromConfig(); + Global.AutofireStickyXORAdapter.SetOnOffPatternFromConfig(); - GlobalWinF.OSD.AddMessage("Autofire settings saved"); + Global.OSD.AddMessage("Autofire settings saved"); this.Close(); } private void Cancel_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Autofire config aborted"); + Global.OSD.AddMessage("Autofire config aborted"); this.Close(); } } diff --git a/BizHawk.MultiClient/config/ControllerConfig.cs b/BizHawk.MultiClient/config/ControllerConfig.cs index fade25cc58..0139b8ce94 100644 --- a/BizHawk.MultiClient/config/ControllerConfig.cs +++ b/BizHawk.MultiClient/config/ControllerConfig.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Linq; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class ControllerConfig : Form @@ -53,7 +51,7 @@ namespace BizHawk.MultiClient return cp; } - Control CreateAnalogPanel(Dictionary settings, List buttons, Size size) + Control CreateAnalogPanel(Dictionary settings, List buttons, Size size) { var acp = new AnalogBindPanel(settings, buttons) { Dock = DockStyle.Fill }; return acp; @@ -155,7 +153,7 @@ namespace BizHawk.MultiClient private void LoadPanels(Dictionary> normal, Dictionary> autofire, - Dictionary> analog) + Dictionary> analog) { LoadToPanel(tabPage1, the_definition.Name, the_definition.BoolButtons, normal, "", CreateNormalPanel); LoadToPanel(tabPage2, the_definition.Name, the_definition.BoolButtons, autofire, "", CreateNormalPanel); @@ -172,7 +170,7 @@ namespace BizHawk.MultiClient LoadPanels(cd.AllTrollers, cd.AllTrollersAutoFire, cd.AllTrollersAnalog); } - private void LoadPanels(BizHawk.Client.Common.Config c) + private void LoadPanels(Config c) { LoadPanels(c.AllTrollers, c.AllTrollersAutoFire, c.AllTrollersAnalog); } @@ -259,14 +257,14 @@ namespace BizHawk.MultiClient Save(); - GlobalWinF.OSD.AddMessage("Controller settings saved"); + Global.OSD.AddMessage("Controller settings saved"); DialogResult = DialogResult.OK; Close(); } private void buttonCancel_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Controller config aborted"); + Global.OSD.AddMessage("Controller config aborted"); Close(); } @@ -358,10 +356,10 @@ namespace BizHawk.MultiClient { public Dictionary> AllTrollers = new Dictionary>(); public Dictionary> AllTrollersAutoFire = new Dictionary>(); - public Dictionary> AllTrollersAnalog = new Dictionary>(); + public Dictionary> AllTrollersAnalog = new Dictionary>(); } - public static void ConfigCheckAllControlDefaults(BizHawk.Client.Common.Config c) + public static void ConfigCheckAllControlDefaults(Config c) { if (c.AllTrollers.Count == 0 && c.AllTrollersAutoFire.Count == 0 && c.AllTrollersAnalog.Count == 0) { @@ -382,7 +380,7 @@ namespace BizHawk.MultiClient cd = ConfigService.Load(ControlDefaultPath, cd); cd.AllTrollers[the_definition.Name] = new Dictionary(); cd.AllTrollersAutoFire[the_definition.Name] = new Dictionary(); - cd.AllTrollersAnalog[the_definition.Name] = new Dictionary(); + cd.AllTrollersAnalog[the_definition.Name] = new Dictionary(); SaveToDefaults(cd); diff --git a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs index 61d2797747..4395016bac 100644 --- a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs +++ b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class AnalogBindControl : UserControl @@ -19,10 +17,10 @@ namespace BizHawk.MultiClient } public string ButtonName; - public BizHawk.Client.Common.Config.AnalogBind Bind; + public Config.AnalogBind Bind; bool listening = false; - public AnalogBindControl(string ButtonName, BizHawk.Client.Common.Config.AnalogBind Bind) + public AnalogBindControl(string ButtonName, Config.AnalogBind Bind) : this() { this.Bind = Bind; diff --git a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs index ea9bafc8bc..2be74fbf40 100644 --- a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs +++ b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs @@ -5,15 +5,13 @@ using System.Text; using System.Windows.Forms; using System.Drawing; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class AnalogBindPanel : UserControl { - Dictionary RealConfigObject; + Dictionary RealConfigObject; - public AnalogBindPanel(Dictionary RealConfigObject, List RealConfigButtons = null) + public AnalogBindPanel(Dictionary RealConfigObject, List RealConfigButtons = null) :base() { this.RealConfigObject = RealConfigObject; @@ -40,7 +38,7 @@ namespace BizHawk.MultiClient /// save to config /// /// if non-null, save to possibly different config object than originally initialized from - public void Save(Dictionary SaveConfigObject = null) + public void Save(Dictionary SaveConfigObject = null) { var saveto = SaveConfigObject ?? RealConfigObject; foreach (Control c in Controls) diff --git a/BizHawk.MultiClient/config/FirmwaresConfig.Designer.cs b/BizHawk.MultiClient/config/FirmwaresConfig.Designer.cs index 46fd2fe017..6613caeea8 100644 --- a/BizHawk.MultiClient/config/FirmwaresConfig.Designer.cs +++ b/BizHawk.MultiClient/config/FirmwaresConfig.Designer.cs @@ -34,28 +34,26 @@ this.lvFirmwares = new System.Windows.Forms.ListView(); this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.lvFirmwaresContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); - this.tsmiSetCustomization = new System.Windows.Forms.ToolStripMenuItem(); - this.tsmiClearCustomization = new System.Windows.Forms.ToolStripMenuItem(); - this.tsmiInfo = new System.Windows.Forms.ToolStripMenuItem(); this.panel1 = new System.Windows.Forms.Panel(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.toolStrip1 = new ToolStripEx(); this.tbbGroup = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.tbbScan = new System.Windows.Forms.ToolStripButton(); this.tbbOrganize = new System.Windows.Forms.ToolStripButton(); - this.tsmiCopy = new System.Windows.Forms.ToolStripMenuItem(); - this.lvFirmwaresContextMenuStrip.SuspendLayout(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.lvFirmwaresContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); + this.tsmiClearCustomization = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiSetCustomization = new System.Windows.Forms.ToolStripMenuItem(); this.panel1.SuspendLayout(); - this.tableLayoutPanel1.SuspendLayout(); this.toolStrip1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.lvFirmwaresContextMenuStrip.SuspendLayout(); this.SuspendLayout(); // // imageList1 @@ -98,62 +96,11 @@ // this.columnHeader1.Text = "System"; // - // columnHeader6 - // - this.columnHeader6.Text = "Id"; - // // columnHeader4 // this.columnHeader4.Text = "Description"; this.columnHeader4.Width = 165; // - // columnHeader2 - // - this.columnHeader2.Text = "Resolved With"; - this.columnHeader2.Width = 116; - // - // columnHeader3 - // - this.columnHeader3.Text = "Location"; - this.columnHeader3.Width = 252; - // - // columnHeader7 - // - this.columnHeader7.Text = "Hash"; - this.columnHeader7.Width = 340; - // - // lvFirmwaresContextMenuStrip - // - this.lvFirmwaresContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsmiSetCustomization, - this.tsmiClearCustomization, - this.tsmiInfo, - this.tsmiCopy}); - this.lvFirmwaresContextMenuStrip.Name = "lvFirmwaresContextMenuStrip"; - this.lvFirmwaresContextMenuStrip.Size = new System.Drawing.Size(170, 114); - this.lvFirmwaresContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.lvFirmwaresContextMenuStrip_Opening); - // - // tsmiSetCustomization - // - this.tsmiSetCustomization.Name = "tsmiSetCustomization"; - this.tsmiSetCustomization.Size = new System.Drawing.Size(169, 22); - this.tsmiSetCustomization.Text = "&Set Customization"; - this.tsmiSetCustomization.Click += new System.EventHandler(this.tsmiClearCustomization_Click); - // - // tsmiClearCustomization - // - this.tsmiClearCustomization.Name = "tsmiClearCustomization"; - this.tsmiClearCustomization.Size = new System.Drawing.Size(169, 22); - this.tsmiClearCustomization.Text = "C&lear Customization"; - this.tsmiClearCustomization.Click += new System.EventHandler(this.tsmiClearCustomization_Click); - // - // tsmiInfo - // - this.tsmiInfo.Name = "tsmiInfo"; - this.tsmiInfo.Size = new System.Drawing.Size(169, 22); - this.tsmiInfo.Text = "&Info"; - this.tsmiInfo.Click += new System.EventHandler(this.tsmiInfo_Click); - // // panel1 // this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2); @@ -165,24 +112,8 @@ this.panel1.Size = new System.Drawing.Size(773, 472); this.panel1.TabIndex = 24; // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 2; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.tableLayoutPanel1.Size = new System.Drawing.Size(779, 478); - this.tableLayoutPanel1.TabIndex = 25; - // // toolStrip1 // - this.toolStrip1.ClickThrough = true; this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tbbGroup, this.toolStripSeparator2, @@ -232,12 +163,61 @@ this.tbbOrganize.Text = "Organize"; this.tbbOrganize.Click += new System.EventHandler(this.tbbOrganize_Click); // - // tsmiCopy + // tableLayoutPanel1 // - this.tsmiCopy.Name = "tsmiCopy"; - this.tsmiCopy.Size = new System.Drawing.Size(169, 22); - this.tsmiCopy.Text = "&Copy"; - this.tsmiCopy.Click += new System.EventHandler(this.tsmiCopy_Click); + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.Size = new System.Drawing.Size(779, 478); + this.tableLayoutPanel1.TabIndex = 25; + // + // columnHeader6 + // + this.columnHeader6.Text = "Id"; + // + // columnHeader2 + // + this.columnHeader2.Text = "Resolved With"; + this.columnHeader2.Width = 116; + // + // columnHeader7 + // + this.columnHeader7.Text = "Hash"; + this.columnHeader7.Width = 340; + // + // columnHeader3 + // + this.columnHeader3.Text = "Location"; + this.columnHeader3.Width = 252; + // + // lvFirmwaresContextMenuStrip + // + this.lvFirmwaresContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiSetCustomization, + this.tsmiClearCustomization}); + this.lvFirmwaresContextMenuStrip.Name = "lvFirmwaresContextMenuStrip"; + this.lvFirmwaresContextMenuStrip.Size = new System.Drawing.Size(170, 48); + // + // tsmiClearCustomization + // + this.tsmiClearCustomization.Name = "tsmiClearCustomization"; + this.tsmiClearCustomization.Size = new System.Drawing.Size(169, 22); + this.tsmiClearCustomization.Text = "&Clear Customization"; + this.tsmiClearCustomization.Click += new System.EventHandler(this.tsmiClearCustomization_Click); + // + // tsmiSetCustomization + // + this.tsmiSetCustomization.Name = "tsmiSetCustomization"; + this.tsmiSetCustomization.Size = new System.Drawing.Size(169, 22); + this.tsmiSetCustomization.Text = "&Set Customization"; + this.tsmiSetCustomization.Click += new System.EventHandler(this.tsmiSetCustomization_Click); // // FirmwaresConfig // @@ -250,12 +230,12 @@ this.Text = "Firmwares"; this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FirmwaresConfig_FormClosed); this.Load += new System.EventHandler(this.FirmwaresConfig_Load); - this.lvFirmwaresContextMenuStrip.ResumeLayout(false); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); - this.tableLayoutPanel1.ResumeLayout(false); this.toolStrip1.ResumeLayout(false); this.toolStrip1.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.lvFirmwaresContextMenuStrip.ResumeLayout(false); this.ResumeLayout(false); } @@ -282,7 +262,5 @@ private System.Windows.Forms.ContextMenuStrip lvFirmwaresContextMenuStrip; private System.Windows.Forms.ToolStripMenuItem tsmiSetCustomization; private System.Windows.Forms.ToolStripMenuItem tsmiClearCustomization; - private System.Windows.Forms.ToolStripMenuItem tsmiInfo; - private System.Windows.Forms.ToolStripMenuItem tsmiCopy; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/config/FirmwaresConfig.cs b/BizHawk.MultiClient/config/FirmwaresConfig.cs index 98757b424f..69de8be2ca 100644 --- a/BizHawk.MultiClient/config/FirmwaresConfig.cs +++ b/BizHawk.MultiClient/config/FirmwaresConfig.cs @@ -9,8 +9,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - //notes: eventually, we intend to have a "firmware acquisition interface" exposed to the emulator cores. //it will be implemented by the multiclient, and use firmware keys to fetch the firmware content. //however, for now, the cores are using strings from the config class. so we have the `configMember` which is @@ -177,7 +175,7 @@ namespace BizHawk.MultiClient DoScan(); } - FirmwareManager Manager { get { return GlobalWinF.MainForm.FirmwareManager; } } + FirmwareManager Manager { get { return Global.MainForm.FirmwareManager; } } private void DoScan() { @@ -281,16 +279,11 @@ namespace BizHawk.MultiClient { if (e.KeyCode == Keys.C && e.Control && !e.Alt && !e.Shift) { - PerformListCopy(); + var str = lvFirmwares.CopyItemsAsText(); + if (str.Length > 0) Clipboard.SetDataObject(str); } } - void PerformListCopy() - { - var str = lvFirmwares.CopyItemsAsText(); - if (str.Length > 0) Clipboard.SetDataObject(str); - } - private void lvFirmwares_MouseClick(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Right && lvFirmwares.GetItemAt(e.X, e.Y) != null) @@ -309,7 +302,7 @@ namespace BizHawk.MultiClient //remember the location we selected this firmware from, maybe there are others currSelectorDir = Path.GetDirectoryName(ofd.FileName); - //for each selected item, set the user choice (even though multiple selection for this operation is no longer allowed) + //for each selected item, set the user choice (hey, thats the expected semantic foreach (ListViewItem lvi in lvFirmwares.SelectedItems) { var fr = lvi.Tag as FirmwareDatabase.FirmwareRecord; @@ -333,52 +326,5 @@ namespace BizHawk.MultiClient DoScan(); } - private void tsmiInfo_Click(object sender, EventArgs e) - { - var lvi = lvFirmwares.SelectedItems[0]; - var fr = lvi.Tag as FirmwareDatabase.FirmwareRecord; - - //get all options for this firmware (in order) - var options = - from fo in FirmwareDatabase.FirmwareOptions - where fo.systemId == fr.systemId && fo.firmwareId == fr.firmwareId - select fo; - - FirmwaresConfigInfo fciDialog = new FirmwaresConfigInfo(); - fciDialog.lblFirmware.Text = string.Format("{0} : {1} ({2})", fr.systemId, fr.firmwareId, fr.descr); - foreach (var o in options) - { - ListViewItem olvi = new ListViewItem(); - olvi.SubItems.Add(new ListViewItem.ListViewSubItem()); - olvi.SubItems.Add(new ListViewItem.ListViewSubItem()); - var ff = FirmwareDatabase.FirmwareFilesByHash[o.hash]; - olvi.SubItems[0].Text = o.hash; - olvi.SubItems[0].Font = fixedFont; - olvi.SubItems[1].Text = ff.recommendedName; - olvi.SubItems[1].Font = this.Font; //why doesnt this work? - olvi.SubItems[2].Text = ff.descr; - olvi.SubItems[2].Font = this.Font; //why doesnt this work? - fciDialog.lvOptions.Items.Add(olvi); - } - - fciDialog.lvOptions.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent); - fciDialog.lvOptions.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent); - fciDialog.lvOptions.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.ColumnContent); - - fciDialog.ShowDialog(); - } - - private void lvFirmwaresContextMenuStrip_Opening(object sender, CancelEventArgs e) - { - //hide menu items that arent appropriate for multi-select - tsmiSetCustomization.Visible = lvFirmwares.SelectedItems.Count == 1; - tsmiInfo.Visible = lvFirmwares.SelectedItems.Count == 1; - } - - private void tsmiCopy_Click(object sender, EventArgs e) - { - PerformListCopy(); - } - } //class FirmwaresConfig } diff --git a/BizHawk.MultiClient/config/FirmwaresConfig.resx b/BizHawk.MultiClient/config/FirmwaresConfig.resx index 55a8eccb82..cb8e4f87cc 100644 --- a/BizHawk.MultiClient/config/FirmwaresConfig.resx +++ b/BizHawk.MultiClient/config/FirmwaresConfig.resx @@ -126,9 +126,6 @@ 122, 17 - - 221, 17 - @@ -175,4 +172,7 @@ TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + 221, 17 + \ No newline at end of file diff --git a/BizHawk.MultiClient/config/FirmwaresConfigInfo.Designer.cs b/BizHawk.MultiClient/config/FirmwaresConfigInfo.Designer.cs deleted file mode 100644 index e65bff5dbe..0000000000 --- a/BizHawk.MultiClient/config/FirmwaresConfigInfo.Designer.cs +++ /dev/null @@ -1,201 +0,0 @@ -namespace BizHawk.MultiClient -{ - partial class FirmwaresConfigInfo - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.lvOptions = new System.Windows.Forms.ListView(); - this.colHash = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.colStandardFilename = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.colDescription = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.label1 = new System.Windows.Forms.Label(); - this.btnClose = new System.Windows.Forms.Button(); - this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); - this.label2 = new System.Windows.Forms.Label(); - this.lblFirmware = new System.Windows.Forms.Label(); - this.lvmiOptionsContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); - this.tsmiOptionsCopy = new System.Windows.Forms.ToolStripMenuItem(); - this.tableLayoutPanel1.SuspendLayout(); - this.flowLayoutPanel1.SuspendLayout(); - this.lvmiOptionsContextMenuStrip.SuspendLayout(); - this.SuspendLayout(); - // - // lvOptions - // - this.lvOptions.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.colHash, - this.colStandardFilename, - this.colDescription}); - this.lvOptions.Dock = System.Windows.Forms.DockStyle.Fill; - this.lvOptions.FullRowSelect = true; - this.lvOptions.GridLines = true; - this.lvOptions.Location = new System.Drawing.Point(3, 29); - this.lvOptions.Name = "lvOptions"; - this.lvOptions.Size = new System.Drawing.Size(648, 402); - this.lvOptions.TabIndex = 0; - this.lvOptions.UseCompatibleStateImageBehavior = false; - this.lvOptions.View = System.Windows.Forms.View.Details; - this.lvOptions.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvOptions_KeyDown); - this.lvOptions.MouseClick += new System.Windows.Forms.MouseEventHandler(this.lvOptions_MouseClick); - // - // colHash - // - this.colHash.Text = "Hash"; - this.colHash.Width = 251; - // - // colStandardFilename - // - this.colStandardFilename.Text = "Standard Filename"; - this.colStandardFilename.Width = 175; - // - // colDescription - // - this.colDescription.Text = "Description"; - this.colDescription.Width = 214; - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 1; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.lvOptions, 0, 2); - this.tableLayoutPanel1.Controls.Add(this.btnClose, 0, 3); - this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 0); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 4; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.tableLayoutPanel1.Size = new System.Drawing.Size(654, 469); - this.tableLayoutPanel1.TabIndex = 1; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(3, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(122, 13); - this.label1.TabIndex = 1; - this.label1.Text = "Options for this firmware:"; - // - // btnClose - // - this.btnClose.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.btnClose.AutoSize = true; - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Location = new System.Drawing.Point(595, 440); - this.btnClose.Margin = new System.Windows.Forms.Padding(6); - this.btnClose.Name = "btnClose"; - this.btnClose.Size = new System.Drawing.Size(53, 23); - this.btnClose.TabIndex = 2; - this.btnClose.Text = "Close"; - this.btnClose.UseVisualStyleBackColor = true; - // - // flowLayoutPanel1 - // - this.flowLayoutPanel1.AutoSize = true; - this.flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.flowLayoutPanel1.Controls.Add(this.label2); - this.flowLayoutPanel1.Controls.Add(this.lblFirmware); - this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); - this.flowLayoutPanel1.Name = "flowLayoutPanel1"; - this.flowLayoutPanel1.Size = new System.Drawing.Size(99, 13); - this.flowLayoutPanel1.TabIndex = 3; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(3, 0); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(52, 13); - this.label2.TabIndex = 0; - this.label2.Text = "Firmware:"; - // - // lblFirmware - // - this.lblFirmware.AutoSize = true; - this.lblFirmware.Location = new System.Drawing.Point(61, 0); - this.lblFirmware.Name = "lblFirmware"; - this.lblFirmware.Size = new System.Drawing.Size(35, 13); - this.lblFirmware.TabIndex = 1; - this.lblFirmware.Text = "label3"; - // - // lvmiOptionsContextMenuStrip - // - this.lvmiOptionsContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsmiOptionsCopy}); - this.lvmiOptionsContextMenuStrip.Name = "lvmiOptionsContextMenuStrip"; - this.lvmiOptionsContextMenuStrip.Size = new System.Drawing.Size(100, 26); - // - // tsmiOptionsCopy - // - this.tsmiOptionsCopy.Name = "tsmiOptionsCopy"; - this.tsmiOptionsCopy.Size = new System.Drawing.Size(152, 22); - this.tsmiOptionsCopy.Text = "&Copy"; - this.tsmiOptionsCopy.Click += new System.EventHandler(this.tsmiOptionsCopy_Click); - // - // FirmwaresConfigInfo - // - this.AcceptButton = this.btnClose; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.ClientSize = new System.Drawing.Size(654, 469); - this.Controls.Add(this.tableLayoutPanel1); - this.Name = "FirmwaresConfigInfo"; - this.Text = "Firmware Info"; - this.tableLayoutPanel1.ResumeLayout(false); - this.tableLayoutPanel1.PerformLayout(); - this.flowLayoutPanel1.ResumeLayout(false); - this.flowLayoutPanel1.PerformLayout(); - this.lvmiOptionsContextMenuStrip.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.ColumnHeader colHash; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.ColumnHeader colStandardFilename; - private System.Windows.Forms.ColumnHeader colDescription; - public System.Windows.Forms.ListView lvOptions; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; - private System.Windows.Forms.Label label2; - public System.Windows.Forms.Label lblFirmware; - private System.Windows.Forms.ContextMenuStrip lvmiOptionsContextMenuStrip; - private System.Windows.Forms.ToolStripMenuItem tsmiOptionsCopy; - } -} \ No newline at end of file diff --git a/BizHawk.MultiClient/config/FirmwaresConfigInfo.cs b/BizHawk.MultiClient/config/FirmwaresConfigInfo.cs deleted file mode 100644 index b0a5abf213..0000000000 --- a/BizHawk.MultiClient/config/FirmwaresConfigInfo.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Windows.Forms; - -//todo - display details on the current resolution status -//todo - check(mark) the one thats selected -//todo - turn top info into textboxes i guess, labels suck - -namespace BizHawk.MultiClient -{ - public partial class FirmwaresConfigInfo : Form - { - public FirmwaresConfigInfo() - { - InitializeComponent(); - } - - private void lvOptions_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.C && e.Control && !e.Alt && !e.Shift) - { - PerformListCopy(); - } - } - - void PerformListCopy() - { - var str = lvOptions.CopyItemsAsText(); - if (str.Length > 0) Clipboard.SetDataObject(str); - } - - private void tsmiOptionsCopy_Click(object sender, EventArgs e) - { - PerformListCopy(); - } - - private void lvOptions_MouseClick(object sender, MouseEventArgs e) - { - if (e.Button == System.Windows.Forms.MouseButtons.Right && lvOptions.GetItemAt(e.X, e.Y) != null) - lvmiOptionsContextMenuStrip.Show(lvOptions, e.Location); - } - } -} diff --git a/BizHawk.MultiClient/config/GifAnimator.cs b/BizHawk.MultiClient/config/GifAnimator.cs index 82a6ba4cfe..6238107c5d 100644 --- a/BizHawk.MultiClient/config/GifAnimator.cs +++ b/BizHawk.MultiClient/config/GifAnimator.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class GifAnimator : Form diff --git a/BizHawk.MultiClient/config/HotkeyConfig.cs b/BizHawk.MultiClient/config/HotkeyConfig.cs index 7e88f32686..9c6816df2c 100644 --- a/BizHawk.MultiClient/config/HotkeyConfig.cs +++ b/BizHawk.MultiClient/config/HotkeyConfig.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class HotkeyConfig : Form @@ -33,14 +31,14 @@ namespace BizHawk.MultiClient private void IDB_CANCEL_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Hotkey config aborted"); + Global.OSD.AddMessage("Hotkey config aborted"); Close(); } private void IDB_SAVE_Click(object sender, EventArgs e) { Save(); - GlobalWinF.OSD.AddMessage("Hotkey settings saved"); + Global.OSD.AddMessage("Hotkey settings saved"); DialogResult = DialogResult.OK; Close(); } @@ -61,7 +59,7 @@ namespace BizHawk.MultiClient foreach (InputWidget w in _inputWidgets) { - var b = Global.Config.HotkeyBindings.FirstOrDefault(x => x.DisplayName == w.WidgetName); + Binding b = Global.Config.HotkeyBindings.FirstOrDefault(x => x.DisplayName == w.WidgetName); b.Bindings = w.Text; } } @@ -97,14 +95,14 @@ namespace BizHawk.MultiClient tb.Name = tab; tb.Text = tab; - var bindings = Global.Config.HotkeyBindings.Where(x => x.TabGroup == tab).OrderBy(x => x.Ordinal).ThenBy(x => x.DisplayName).ToList(); + List bindings = Global.Config.HotkeyBindings.Where(x => x.TabGroup == tab).OrderBy(x => x.Ordinal).ThenBy(x => x.DisplayName).ToList(); int _x = 6; int _y = 14; int iw_offset_x = 110; int iw_offset_y = -4; int iw_width = 120; - foreach (var b in bindings) + foreach (Binding b in bindings) { Label l = new Label() { @@ -141,7 +139,7 @@ namespace BizHawk.MultiClient { foreach (InputWidget w in _inputWidgets) { - var b = Global.Config.HotkeyBindings.FirstOrDefault(x => x.DisplayName == w.WidgetName); + Binding b = Global.Config.HotkeyBindings.FirstOrDefault(x => x.DisplayName == w.WidgetName); w.Text = b.DefaultBinding; } } @@ -182,7 +180,7 @@ namespace BizHawk.MultiClient { string user_selection = SearchBox.Text; - var b = Global.Config.HotkeyBindings.FirstOrDefault(x => x.DisplayName == SearchBox.Text); + Binding b = Global.Config.HotkeyBindings.FirstOrDefault(x => x.DisplayName == SearchBox.Text); //Found if (b != null) diff --git a/BizHawk.MultiClient/config/MessageConfig.cs b/BizHawk.MultiClient/config/MessageConfig.cs index 9fe98f2d81..0590e1e7f0 100644 --- a/BizHawk.MultiClient/config/MessageConfig.cs +++ b/BizHawk.MultiClient/config/MessageConfig.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class MessageConfig : Form @@ -229,7 +227,7 @@ namespace BizHawk.MultiClient private void OK_Click(object sender, EventArgs e) { SaveSettings(); - GlobalWinF.OSD.AddMessage("Message settings saved"); + Global.OSD.AddMessage("Message settings saved"); this.Close(); } @@ -289,7 +287,7 @@ namespace BizHawk.MultiClient private void Cancel_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Message config aborted"); + Global.OSD.AddMessage("Message config aborted"); this.Close(); } diff --git a/BizHawk.MultiClient/config/PathConfig.cs b/BizHawk.MultiClient/config/PathConfig.cs index d5b0bb0806..bbd55dc642 100644 --- a/BizHawk.MultiClient/config/PathConfig.cs +++ b/BizHawk.MultiClient/config/PathConfig.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class PathConfig : Form @@ -58,13 +56,13 @@ namespace BizHawk.MultiClient private void OK_Click(object sender, EventArgs e) { SaveSettings(); - GlobalWinF.OSD.AddMessage("Path settings saved"); + Global.OSD.AddMessage("Path settings saved"); Close(); } private void Cancel_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Path config aborted"); + Global.OSD.AddMessage("Path config aborted"); Close(); } diff --git a/BizHawk.MultiClient/config/PathManager.cs b/BizHawk.MultiClient/config/PathManager.cs index 16c47670bf..2650adea30 100644 --- a/BizHawk.MultiClient/config/PathManager.cs +++ b/BizHawk.MultiClient/config/PathManager.cs @@ -3,8 +3,6 @@ using System.Linq; using System.IO; using System.Reflection; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public static class PathManager diff --git a/BizHawk.MultiClient/config/RewindConfig.cs b/BizHawk.MultiClient/config/RewindConfig.cs index ed4f1dd474..e208676578 100644 --- a/BizHawk.MultiClient/config/RewindConfig.cs +++ b/BizHawk.MultiClient/config/RewindConfig.cs @@ -2,8 +2,6 @@ using System.Windows.Forms; using System.Drawing; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class RewindConfig : Form @@ -11,7 +9,7 @@ namespace BizHawk.MultiClient private long StateSize; private int MediumStateSize; private int LargeStateSize; - private int StateSizeCategory = 1; //1 = small, 2 = med, 3 = larg //TODO: enum + private int StateSizeCategory = 1; //1 = small, 2 = med, 3 = larg //TODO: enum public RewindConfig() { InitializeComponent(); @@ -19,10 +17,10 @@ namespace BizHawk.MultiClient private void RewindConfig_Load(object sender, EventArgs e) { - if (GlobalWinF.MainForm.RewindBuf != null) + if (Global.MainForm.RewindBuf != null) { - FullnessLabel.Text = String.Format("{0:0.00}", GlobalWinF.MainForm.Rewind_FullnessRatio * 100) + "%"; - RewindFramesUsedLabel.Text = GlobalWinF.MainForm.Rewind_Count.ToString(); + FullnessLabel.Text = String.Format("{0:0.00}", Global.MainForm.Rewind_FullnessRatio * 100) + "%"; + RewindFramesUsedLabel.Text = Global.MainForm.Rewind_Count.ToString(); } else { @@ -111,13 +109,13 @@ namespace BizHawk.MultiClient private void Cancel_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Rewind config aborted"); + Global.OSD.AddMessage("Rewind config aborted"); Close(); } private void OK_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Rewind settings saved"); + Global.OSD.AddMessage("Rewind settings saved"); Global.Config.RewindFrequencySmall = (int)SmallSavestateNumeric.Value; Global.Config.RewindFrequencyMedium = (int)MediumSavestateNumeric.Value; @@ -127,7 +125,7 @@ namespace BizHawk.MultiClient Global.Config.RewindEnabledMedium = MediumStateEnabledBox.Checked; Global.Config.RewindEnabledLarge = LargeStateEnabledBox.Checked; - GlobalWinF.MainForm.DoRewindSettings(); + Global.MainForm.DoRewindSettings(); Global.Config.Rewind_UseDelta = UseDeltaCompression.Checked; @@ -137,7 +135,7 @@ namespace BizHawk.MultiClient Global.Config.Rewind_BufferSize = (int)BufferSizeUpDown.Value; if (Global.Config.Rewind_IsThreaded != RewindIsThreadedCheckbox.Checked) { - GlobalWinF.MainForm.FlagNeedsReboot(); + Global.MainForm.FlagNeedsReboot(); Global.Config.Rewind_IsThreaded = RewindIsThreadedCheckbox.Checked; } @@ -260,9 +258,9 @@ namespace BizHawk.MultiClient if (UseDeltaCompression.Checked || StateSize == 0) { - if (GlobalWinF.MainForm.Rewind_Count > 0) + if (Global.MainForm.Rewind_Count > 0) { - avg_state_size = (long)(GlobalWinF.MainForm.Rewind_Size / GlobalWinF.MainForm.Rewind_Count); + avg_state_size = (long)(Global.MainForm.Rewind_Size / Global.MainForm.Rewind_Count); } else { diff --git a/BizHawk.MultiClient/config/SoundConfig.cs b/BizHawk.MultiClient/config/SoundConfig.cs index 6ebb714f08..c99e1af3df 100644 --- a/BizHawk.MultiClient/config/SoundConfig.cs +++ b/BizHawk.MultiClient/config/SoundConfig.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class SoundConfig : Form @@ -49,16 +47,16 @@ namespace BizHawk.MultiClient Global.Config.SoundVolume = SoundVolBar.Value; Global.Config.SoundThrottle = ThrottlecheckBox.Checked; Global.Config.SoundDevice = (string)listBoxSoundDevices.SelectedItem ?? ""; - GlobalWinF.Sound.ChangeVolume(Global.Config.SoundVolume); - GlobalWinF.Sound.UpdateSoundSettings(); - GlobalWinF.Sound.StartSound(); - GlobalWinF.OSD.AddMessage("Sound settings saved"); + Global.Sound.ChangeVolume(Global.Config.SoundVolume); + Global.Sound.UpdateSoundSettings(); + Global.Sound.StartSound(); + Global.OSD.AddMessage("Sound settings saved"); this.Close(); } private void Cancel_Click(object sender, EventArgs e) { - GlobalWinF.OSD.AddMessage("Sound config aborted"); + Global.OSD.AddMessage("Sound config aborted"); this.Close(); } diff --git a/BizHawk.MultiClient/movie/EditCommentsForm.cs b/BizHawk.MultiClient/movie/EditCommentsForm.cs index d5b563a911..b071f5e57e 100644 --- a/BizHawk.MultiClient/movie/EditCommentsForm.cs +++ b/BizHawk.MultiClient/movie/EditCommentsForm.cs @@ -1,14 +1,12 @@ using System; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class EditCommentsForm : Form { public bool ReadOnly; - private Movie selectedMovie; + private Movie selectedMovie = new Movie(); public EditCommentsForm() { diff --git a/BizHawk.MultiClient/movie/EditSubtitlesForm.cs b/BizHawk.MultiClient/movie/EditSubtitlesForm.cs index 30d229a7af..c1648748b9 100644 --- a/BizHawk.MultiClient/movie/EditSubtitlesForm.cs +++ b/BizHawk.MultiClient/movie/EditSubtitlesForm.cs @@ -3,14 +3,13 @@ using System.Drawing; using System.Windows.Forms; using System.Globalization; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class EditSubtitlesForm : Form { public bool ReadOnly; - private Movie selectedMovie; + private Movie selectedMovie = new Movie(); + public EditSubtitlesForm() { @@ -54,7 +53,7 @@ namespace BizHawk.MultiClient { if (!ReadOnly) { - selectedMovie.Subtitles.Clear(); + selectedMovie.Subtitles.ClearSubtitles(); for (int x = 0; x < SubGrid.Rows.Count - 1; x++) { Subtitle s = new Subtitle(); @@ -87,12 +86,12 @@ namespace BizHawk.MultiClient public void GetMovie(Movie m) { selectedMovie = m; - SubtitleList subs = new SubtitleList(m.Subtitles); + SubtitleList subs = new SubtitleList(m); if (subs.Count == 0) return; for (int x = 0; x < subs.Count; x++) { - Subtitle s = subs[x]; + Subtitle s = subs.GetSubtitleByIndex(x); SubGrid.Rows.Add(); DataGridViewCell c = SubGrid.Rows[x].Cells[0]; c.Value = s.Frame; diff --git a/BizHawk.Client.Common/movie/InputAdapters.cs b/BizHawk.MultiClient/movie/InputAdapters.cs similarity index 95% rename from BizHawk.Client.Common/movie/InputAdapters.cs rename to BizHawk.MultiClient/movie/InputAdapters.cs index 86fd7bf1e5..20fe124929 100644 --- a/BizHawk.Client.Common/movie/InputAdapters.cs +++ b/BizHawk.MultiClient/movie/InputAdapters.cs @@ -2,7 +2,7 @@ using System.Text; using System.Collections.Generic; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { /// /// will hold buttons for 1 frame and then release them. (Calling Click() from your button click is what you want to do) diff --git a/BizHawk.Client.Common/movie/Movie.cs b/BizHawk.MultiClient/movie/Movie.cs similarity index 78% rename from BizHawk.Client.Common/movie/Movie.cs rename to BizHawk.MultiClient/movie/Movie.cs index 293701dff6..f7f224c035 100644 --- a/BizHawk.Client.Common/movie/Movie.cs +++ b/BizHawk.MultiClient/movie/Movie.cs @@ -1,36 +1,42 @@ using System; using System.IO; +using System.Windows.Forms; using System.Globalization; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class Movie { #region Constructors - public Movie(string filename, string version) - : this(version) + public Movie(string filename) { + Mode = MOVIEMODE.INACTIVE; Rerecords = 0; Filename = filename; - Loaded = filename.Length > 0; + IsText = true; + preload_framecount = 0; + IsCountingRerecords = true; + StartsFromSavestate = false; + if (filename.Length > 0) + Loaded = true; } - public Movie(string version) + public Movie() { - Header = new MovieHeader(version); - Filename = String.Empty; - preload_framecount = 0; - StartsFromSavestate = false; - IsCountingRerecords = true; + Filename = ""; Mode = MOVIEMODE.INACTIVE; IsText = true; + preload_framecount = 0; + StartsFromSavestate = false; + Loaded = false; + IsCountingRerecords = true; } #endregion #region Properties - public MovieHeader Header; + public MovieHeader Header = new MovieHeader(); public SubtitleList Subtitles = new SubtitleList(); public bool MakeBackup = true; //make backup before altering movie @@ -134,7 +140,6 @@ namespace BizHawk.Client.Common } } - //TODO: these are getting too lengthy perhaps the log should just be exposed? public int StateFirstIndex { get { return Log.StateFirstIndex; } @@ -159,16 +164,6 @@ namespace BizHawk.Client.Common } } - public byte[] GetState(int frame) - { - return Log.GetState(frame); - } - - public byte[] InitState - { - get { return Log.InitState; } - } - #endregion #region Public Mode Methods @@ -244,6 +239,7 @@ namespace BizHawk.Client.Common /// public void StartRecording(bool truncate = true) { + Global.MainForm.ClearSaveRAM(); Mode = MOVIEMODE.RECORD; if (Global.Config.EnableBackupMovies && MakeBackup && Log.Length > 0) { @@ -258,6 +254,7 @@ namespace BizHawk.Client.Common public void StartPlayback() { + Global.MainForm.ClearSaveRAM(); Mode = MOVIEMODE.PLAY; } @@ -375,6 +372,7 @@ namespace BizHawk.Client.Common var directory_info = new FileInfo(BackupName).Directory; if (directory_info != null) Directory.CreateDirectory(directory_info.FullName); + Global.OSD.AddMessage("Backup movie saved to " + BackupName); if (IsText) { WriteText(BackupName); @@ -522,6 +520,17 @@ namespace BizHawk.Client.Common public void DeleteFrame(int frame) { + if (frame <= StateLastIndex) + { + if (frame <= StateFirstIndex) + { + RewindToFrame(0); + } + else + { + RewindToFrame(frame); + } + } Log.DeleteFrame(frame); changes = true; } @@ -560,6 +569,52 @@ namespace BizHawk.Client.Common } } + public void RewindToFrame(int frame) + { + if (Mode == MOVIEMODE.INACTIVE || Mode == MOVIEMODE.FINISHED) + { + return; + } + if (frame <= Global.Emulator.Frame) + { + if (frame <= Log.StateFirstIndex) + { + Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Log.InitState))); + if (Global.MainForm.EmulatorPaused && frame > 0) + { + Global.MainForm.UnpauseEmulator(); + } + if (MOVIEMODE.RECORD == Mode) + { + Mode = MOVIEMODE.PLAY; + Global.MainForm.RestoreReadWriteOnStop = true; + } + } + else + { + if (frame == 0) + { + Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Log.InitState))); + } + else + { + //frame-1 because we need to go back an extra frame and then run a frame, otherwise the display doesn't get updated. + Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Log.GetState(frame - 1)))); + Global.MainForm.UpdateFrame = true; + } + } + } + else if (frame <= Log.StateLastIndex) + { + Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Log.GetState(frame - 1)))); + Global.MainForm.UpdateFrame = true; + } + else + { + Global.MainForm.UnpauseEmulator(); + } + } + public void PokeFrame(int frameNum, string input) { changes = true; @@ -597,11 +652,19 @@ namespace BizHawk.Client.Common writer.WriteLine("[/Input]"); } - public void LoadLogFromSavestateText(TextReader reader, bool isMultitracking) + public void LoadLogFromSavestateText(string path) + { + using (var reader = new StreamReader(path)) + { + LoadLogFromSavestateText(reader); + } + } + + public void LoadLogFromSavestateText(TextReader reader) { int? stateFrame = null; //We are in record mode so replace the movie log with the one from the savestate - if (!isMultitracking) + if (!Global.MovieSession.MultiTrack.IsActive) { if (Global.Config.EnableBackupMovies && MakeBackup && Log.Length > 0) { @@ -623,7 +686,7 @@ namespace BizHawk.Client.Common { stateFrame = int.Parse(strs[1], NumberStyles.HexNumber); } - catch { } //TODO: message? + catch { Global.OSD.AddMessage("Savestate Frame failed to parse"); } //TODO: message? } else if (line.Contains("Frame ")) { @@ -632,7 +695,7 @@ namespace BizHawk.Client.Common { stateFrame = int.Parse(strs[1]); } - catch { } //TODO: message? + catch { Global.OSD.AddMessage("Savestate Frame failed to parse"); } //TODO: message? } if (line[0] == '|') { @@ -657,7 +720,7 @@ namespace BizHawk.Client.Common { stateFrame = int.Parse(strs[1], NumberStyles.HexNumber); } - catch { } //TODO: message? + catch { Global.OSD.AddMessage("Savestate Frame failed to parse"); } //TODO: message? } else if (line.Contains("Frame ")) { @@ -734,20 +797,18 @@ namespace BizHawk.Client.Common return time; } - public enum LoadStateResult { Pass, GuidMismatch, TimeLineError, FutureEventError, NotInRecording, EmptyLog, MissingFrameNumber } - - public LoadStateResult CheckTimeLines(TextReader reader, bool OnlyGUID, bool IgnoreGuidMismatch, out string ErrorMessage) + public bool CheckTimeLines(TextReader reader, bool OnlyGUID) { //This function will compare the movie data to the savestate movie data to see if they match - ErrorMessage = String.Empty; - var log = new MovieLog(); + + MovieLog l = new MovieLog(); int stateFrame = 0; while (true) { string line = reader.ReadLine(); if (line == null) { - return LoadStateResult.EmptyLog; + return false; } else if (line.Trim() == "") { @@ -758,11 +819,22 @@ namespace BizHawk.Client.Common string guid = ParseHeader(line, MovieHeader.GUID); if (Header.GetHeaderLine(MovieHeader.GUID) != guid) { - if (!IgnoreGuidMismatch) + //GUID Mismatch error + var result = MessageBox.Show(guid + " : " + Header.GetHeaderLine(MovieHeader.GUID) + "\n" + + "The savestate GUID does not match the current movie. Proceed anyway?", "GUID Mismatch error", + MessageBoxButtons.YesNo, MessageBoxIcon.Question); + + if (result == DialogResult.No) { - return LoadStateResult.GuidMismatch; + //reader.Close(); + return false; } } + else if (OnlyGUID) + { + //reader.Close(); + return true; + } } else if (line.Contains("Frame 0x")) //NES stores frame count in hex, yay { @@ -771,11 +843,7 @@ namespace BizHawk.Client.Common { stateFrame = int.Parse(strs[1], NumberStyles.HexNumber); } - catch - { - ErrorMessage = "Savestate Frame number failed to parse"; - return LoadStateResult.MissingFrameNumber; - } + catch { Global.OSD.AddMessage("Savestate Frame number failed to parse"); } } else if (line.Contains("Frame ")) { @@ -784,68 +852,69 @@ namespace BizHawk.Client.Common { stateFrame = int.Parse(strs[1]); } - catch - { - ErrorMessage = "Savestate Frame number failed to parse"; - return LoadStateResult.MissingFrameNumber; - } + catch { Global.OSD.AddMessage("Savestate Frame number failed to parse"); } } else if (line == "[Input]") continue; else if (line == "[/Input]") break; else if (line[0] == '|') - { - log.AppendFrame(line); - } + l.AppendFrame(line); } + //reader.BaseStream.Position = 0; //Reset position because this stream may be read again by other code + if (OnlyGUID) { - return LoadStateResult.Pass; + //reader.Close(); + return true; } + + if (stateFrame == 0) { - stateFrame = log.Length; //In case the frame count failed to parse, revert to using the entire state input log + stateFrame = l.Length; //In case the frame count failed to parse, revert to using the entire state input log } if (Log.Length < stateFrame) { - ErrorMessage = "The savestate is from frame " - + log.Length.ToString() - + " which is greater than the current movie length of " - + Log.Length.ToString(); - return LoadStateResult.FutureEventError; + //Future event error + MessageBox.Show("The savestate is from frame " + l.Length.ToString() + " which is greater than the current movie length of " + + Log.Length.ToString() + ".\nCan not load this savestate.", "Future event Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + //reader.Close(); + return false; } - for (int i = 0; i < stateFrame; i++) + for (int x = 0; x < stateFrame; x++) { - string xs = Log.GetFrame(i); - string ys = log.GetFrame(i); //TODO: huh?? + string xs = Log.GetFrame(x); + string ys = l.GetFrame(x); if (xs != ys) { - ErrorMessage = "The savestate input does not match the movie input at frame " - + (i + 1).ToString() - + "."; - return LoadStateResult.TimeLineError; + //TimeLine Error + MessageBox.Show("The savestate input does not match the movie input at frame " + (x + 1).ToString() + ".", + "Timeline Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + //reader.Close(); + return false; } } - if (stateFrame > log.Length) //stateFrame is greater than state input log, so movie finished mode + + + if (stateFrame > l.Length) //stateFrame is greater than state input log, so movie finished mode { if (Mode == MOVIEMODE.PLAY || Mode == MOVIEMODE.FINISHED) { Mode = MOVIEMODE.FINISHED; - return LoadStateResult.Pass; + return true; } else - { - return LoadStateResult.NotInRecording; //TODO: For now throw an error if recording, ideally what should happen is that the state gets loaded, and the movie set to movie finished, the movie at its current state is preserved and the state is loaded just fine. This should probably also only happen if checktimelines passes - } + return false; //For now throw an error if recording, ideally what should happen is that the state gets loaded, and the movie set to movie finished, the movie at its current state is preserved and the state is loaded just fine. This should probably also only happen if checktimelines passes } else if (Mode == MOVIEMODE.FINISHED) { Mode = MOVIEMODE.PLAY; } - return LoadStateResult.Pass; + //reader.Close(); + return true; } #endregion diff --git a/BizHawk.Client.Common/movie/MovieHeader.cs b/BizHawk.MultiClient/movie/MovieHeader.cs similarity index 90% rename from BizHawk.Client.Common/movie/MovieHeader.cs rename to BizHawk.MultiClient/movie/MovieHeader.cs index ef8e7b3cd5..b5ba4674b7 100644 --- a/BizHawk.Client.Common/movie/MovieHeader.cs +++ b/BizHawk.MultiClient/movie/MovieHeader.cs @@ -1,7 +1,8 @@ using System.Collections.Generic; using System.IO; +using System.Linq; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class MovieHeader { @@ -52,10 +53,16 @@ namespace BizHawk.Client.Common return System.Guid.NewGuid().ToString(); } - public MovieHeader(string version) //All required fields will be set to default values + public MovieHeader() //All required fields will be set to default values { - - HeaderParams.Add(EMULATIONVERSION, version); + if (Global.MainForm != null) + { + HeaderParams.Add(EMULATIONVERSION, Global.MainForm.GetEmuVersion()); + } + else + { + HeaderParams.Add(EMULATIONVERSION, MainForm.EMUVERSION); + } HeaderParams.Add(MOVIEVERSION, MovieVersion); HeaderParams.Add(PLATFORM, ""); HeaderParams.Add(GAMENAME, ""); @@ -276,12 +283,15 @@ namespace BizHawk.Client.Common public void ReadHeader(StreamReader reader) { - string str; - while ((str = reader.ReadLine()) != null) + using (reader) { - AddHeaderFromLine(str); + string str; + while ((str = reader.ReadLine()) != null) + { + AddHeaderFromLine(str); + } + reader.Close(); } - reader.Close(); } } } diff --git a/BizHawk.MultiClient/movie/MovieImport.cs b/BizHawk.MultiClient/movie/MovieImport.cs index cd4f4a8424..0b36faac26 100644 --- a/BizHawk.MultiClient/movie/MovieImport.cs +++ b/BizHawk.MultiClient/movie/MovieImport.cs @@ -4,8 +4,6 @@ using System.Linq; using System.Text; using System.IO; -using BizHawk.Client.Common; - #pragma warning disable 219 namespace BizHawk.MultiClient @@ -33,11 +31,11 @@ namespace BizHawk.MultiClient public const string UNITCODE = "UnitCode"; // Attempt to import another type of movie file into a movie object. - public static Movie ImportFile(string path, string bizVersion, out string errorMsg, out string warningMsg) + public static Movie ImportFile(string path, out string errorMsg, out string warningMsg) { - Movie m = new Movie(bizVersion); - errorMsg = String.Empty; - warningMsg = String.Empty; + Movie m = new Movie(); + errorMsg = ""; + warningMsg = ""; string ext = path != null ? Path.GetExtension(path).ToUpper() : ""; try @@ -84,7 +82,7 @@ namespace BizHawk.MultiClient m = ImportZMV(path, out errorMsg, out warningMsg); break; } - if (errorMsg == String.Empty) + if (errorMsg == "") { m.Header.SetHeaderLine(MovieHeader.MOVIEVERSION, MovieHeader.MovieVersion); } @@ -290,7 +288,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileInfo file = new FileInfo(path); StreamReader sr = file.OpenText(); string emulator = ""; @@ -472,7 +470,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 4-byte signature: 46 43 4D 1A "FCM\x1A" @@ -729,7 +727,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 4-byte signature: 46 4D 56 1A "FMV\x1A" @@ -872,7 +870,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 16-byte signature and format version: "Gens Movie TEST9" @@ -998,7 +996,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); HawkFile hf = new HawkFile(path); // .LSMV movies are .zip files containing data files. if (!hf.IsArchive) @@ -1231,7 +1229,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 8-byte "MDFNMOVI" signature @@ -1355,7 +1353,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 0000: 4-byte signature: "MMV\0" @@ -1472,7 +1470,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 4-byte signature: 4E 53 53 1A "NSS\x1A" @@ -1702,7 +1700,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 4-byte signature: 53 4D 56 1A "SMV\x1A" @@ -1976,7 +1974,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 4-byte signature: 56 42 4D 1A "VBM\x1A" @@ -2249,7 +2247,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 12-byte signature: "VirtuaNES MV" @@ -2470,7 +2468,7 @@ namespace BizHawk.MultiClient { errorMsg = ""; warningMsg = ""; - Movie m = new Movie(path + "." + Global.Config.MovieExtension, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path + "." + Global.Config.MovieExtension); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // 000 3-byte signature: 5A 4D 56 "ZMV" diff --git a/BizHawk.Client.Common/movie/MovieLog.cs b/BizHawk.MultiClient/movie/MovieLog.cs similarity index 88% rename from BizHawk.Client.Common/movie/MovieLog.cs rename to BizHawk.MultiClient/movie/MovieLog.cs index ed3e25e254..4888c26111 100644 --- a/BizHawk.Client.Common/movie/MovieLog.cs +++ b/BizHawk.MultiClient/movie/MovieLog.cs @@ -1,10 +1,8 @@ using System.Collections.Generic; using System.IO; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { - //TODO: what is this object really trying to accomplish? COnsider making it a collection (ICollection, IEnumerable perhaps) - /// /// Represents the controller key presses of a movie /// @@ -129,12 +127,12 @@ namespace BizHawk.Client.Common if (frame <= StateFirstIndex) { _state_records.Clear(); - //Global.MovieSession.Movie.RewindToFrame(0); //TODO: unbreak this, also don't do it this way + Global.MovieSession.Movie.RewindToFrame(0); } else { _state_records.RemoveRange(frame - StateFirstIndex, StateLastIndex - frame + 1); - //Global.MovieSession.Movie.RewindToFrame(frame); //TODO: unbreak this, also don't do it this way + Global.MovieSession.Movie.RewindToFrame(frame); } } } diff --git a/BizHawk.Client.Common/movie/MovieMnemonics.cs b/BizHawk.MultiClient/movie/MovieMnemonics.cs similarity index 96% rename from BizHawk.Client.Common/movie/MovieMnemonics.cs rename to BizHawk.MultiClient/movie/MovieMnemonics.cs index f75b642920..c4c9873584 100644 --- a/BizHawk.Client.Common/movie/MovieMnemonics.cs +++ b/BizHawk.MultiClient/movie/MovieMnemonics.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public static class MnemonicConstants { diff --git a/BizHawk.Client.Common/movie/MovieSession.cs b/BizHawk.MultiClient/movie/MovieSession.cs similarity index 93% rename from BizHawk.Client.Common/movie/MovieSession.cs rename to BizHawk.MultiClient/movie/MovieSession.cs index 83695879ca..14e264263e 100644 --- a/BizHawk.Client.Common/movie/MovieSession.cs +++ b/BizHawk.MultiClient/movie/MovieSession.cs @@ -1,4 +1,4 @@ -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class MovieSession { diff --git a/BizHawk.Client.Common/movie/MultitrackRecording.cs b/BizHawk.MultiClient/movie/MultitrackRecording.cs similarity index 81% rename from BizHawk.Client.Common/movie/MultitrackRecording.cs rename to BizHawk.MultiClient/movie/MultitrackRecording.cs index 55727047ac..af5d9e236e 100644 --- a/BizHawk.Client.Common/movie/MultitrackRecording.cs +++ b/BizHawk.MultiClient/movie/MultitrackRecording.cs @@ -1,4 +1,4 @@ -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class MultitrackRecording { diff --git a/BizHawk.MultiClient/movie/PlayMovie.cs b/BizHawk.MultiClient/movie/PlayMovie.cs index acfde6c7cb..f14c7dc1a0 100644 --- a/BizHawk.MultiClient/movie/PlayMovie.cs +++ b/BizHawk.MultiClient/movie/PlayMovie.cs @@ -5,8 +5,6 @@ using System.Text; using System.Windows.Forms; using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class PlayMovie : Form @@ -67,12 +65,12 @@ namespace BizHawk.MultiClient //Import file if necessary - GlobalWinF.MainForm.StartNewMovie(MovieList[MovieView.SelectedIndices[0]], false); + Global.MainForm.StartNewMovie(MovieList[MovieView.SelectedIndices[0]], false); } private void OK_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.ReadOnly = ReadOnlyCheckBox.Checked; + Global.MainForm.ReadOnly = ReadOnlyCheckBox.Checked; Run(); Close(); } @@ -83,9 +81,9 @@ namespace BizHawk.MultiClient string filter = "Movie Files (*." + Global.Config.MovieExtension + ")|*." + Global.Config.MovieExtension + "|Savestates|*.state|All Files|*.*"; ofd.Filter = filter; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = ofd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.OK) { var file = new FileInfo(ofd.FileName); @@ -95,7 +93,7 @@ namespace BizHawk.MultiClient { if (file.Extension.ToUpper() == "STATE") { - Movie m = new Movie(file.FullName, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(file.FullName); m.LoadMovie(); //State files will have to load everything unfortunately if (m.Frames == 0) { @@ -124,7 +122,7 @@ namespace BizHawk.MultiClient int x = IsDuplicate(filename); if (x == 0) { - Movie m = new Movie(file.CanonicalFullPath, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(file.CanonicalFullPath); m.LoadMovie(); //State files will have to load everything unfortunately if (m.Frames > 0) { @@ -176,7 +174,7 @@ namespace BizHawk.MultiClient private void PreLoadMovieFile(HawkFile path, bool force) { - Movie m = new Movie(path.CanonicalFullPath, GlobalWinF.MainForm.GetEmuVersion()); + Movie m = new Movie(path.CanonicalFullPath); m.PreLoadText(); if (path.Extension == ".FM2") { @@ -389,7 +387,7 @@ namespace BizHawk.MultiClient } break; case MovieHeader.EMULATIONVERSION: - if (kvp.Value != GlobalWinF.MainForm.GetEmuVersion()) + if (kvp.Value != Global.MainForm.GetEmuVersion()) { item.BackColor = Color.Yellow; } diff --git a/BizHawk.MultiClient/movie/RecordMovie.cs b/BizHawk.MultiClient/movie/RecordMovie.cs index c11eeacf13..19ca6bd754 100644 --- a/BizHawk.MultiClient/movie/RecordMovie.cs +++ b/BizHawk.MultiClient/movie/RecordMovie.cs @@ -1,8 +1,6 @@ using System; using System.Windows.Forms; using System.IO; - -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.GB; using BizHawk.Emulation.Consoles.Nintendo.SNES; using BizHawk.Emulation.Consoles.Sega; @@ -58,11 +56,11 @@ namespace BizHawk.MultiClient } - MovieToRecord = new Movie(path, GlobalWinF.MainForm.GetEmuVersion()); + MovieToRecord = new Movie(path); //Header MovieToRecord.Header.SetHeaderLine(MovieHeader.AUTHOR, AuthorBox.Text); - MovieToRecord.Header.SetHeaderLine(MovieHeader.EMULATIONVERSION, GlobalWinF.MainForm.GetEmuVersion()); + MovieToRecord.Header.SetHeaderLine(MovieHeader.EMULATIONVERSION, Global.MainForm.GetEmuVersion()); MovieToRecord.Header.SetHeaderLine(MovieHeader.MOVIEVERSION, MovieHeader.MovieVersion); MovieToRecord.Header.SetHeaderLine(MovieHeader.GUID, MovieHeader.MakeGUID()); MovieToRecord.Header.SetHeaderLine(MovieHeader.PLATFORM, Global.Game.System); @@ -162,7 +160,7 @@ namespace BizHawk.MultiClient } } } - GlobalWinF.MainForm.StartNewMovie(MovieToRecord, true); + Global.MainForm.StartNewMovie(MovieToRecord, true); Global.Config.UseDefaultAuthor = DefaultAuthorCheckBox.Checked; if (DefaultAuthorCheckBox.Checked) @@ -196,9 +194,9 @@ namespace BizHawk.MultiClient string filter = "Movie Files (*." + Global.Config.MovieExtension + ")|*." + Global.Config.MovieExtension + "|Savestates|*.state|All Files|*.*"; sfd.Filter = filter; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.OK) { filename = sfd.FileName; diff --git a/BizHawk.MultiClient/movie/Subtitle.cs b/BizHawk.MultiClient/movie/Subtitle.cs new file mode 100644 index 0000000000..f9dc8e5501 --- /dev/null +++ b/BizHawk.MultiClient/movie/Subtitle.cs @@ -0,0 +1,44 @@ +using System; + +namespace BizHawk.MultiClient +{ + public class Subtitle + { + public string Message; + public int Frame; + public int X; + public int Y; + public int Duration; + public uint Color; + + public Subtitle() + { + Message = ""; + X = 0; + Y = 0; + Duration = 120; + Frame = 0; + Color = 0xFFFFFFFF; + } + + public Subtitle(string message, int x, int y, int dur, int frame, UInt32 color) + { + Message = message; + Frame = frame; + X = x; + Y = y; + Duration = dur; + Color = color; + } + + public Subtitle(Subtitle s) + { + Message = s.Message; + Frame = s.Frame; + X = s.X; + Y = s.Y; + Duration = s.Duration; + Color = s.Color; + } + } +} diff --git a/BizHawk.Client.Common/movie/SubtitleList.cs b/BizHawk.MultiClient/movie/SubtitleList.cs similarity index 55% rename from BizHawk.Client.Common/movie/SubtitleList.cs rename to BizHawk.MultiClient/movie/SubtitleList.cs index 0ed4061707..45e00ab02e 100644 --- a/BizHawk.Client.Common/movie/SubtitleList.cs +++ b/BizHawk.MultiClient/movie/SubtitleList.cs @@ -1,44 +1,62 @@ -using System; -using System.Collections; -using System.Collections.Generic; +using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Drawing; using System.IO; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { - public class SubtitleList : IEnumerable + public class SubtitleList { - private readonly List _subtitles = new List(); + private readonly List subs = new List(); - public SubtitleList() { } - - public SubtitleList(SubtitleList subtitles) + public SubtitleList() { - foreach (var subtitle in subtitles) + + } + + public SubtitleList(Movie m) + { + if (m != null && m.Subtitles.Count == 0) { - _subtitles.Add(new Subtitle(subtitle)); //TODO: Multiclient.EditSubtitlesForm needs a deep copy here, refactor it so that it doesn't + return; + } + + for (int x = 0; x < m.Subtitles.Count; x++) + { + Subtitle s = new Subtitle(m.Subtitles.GetSubtitleByIndex(x)); + subs.Add(s); } } - public IEnumerator GetEnumerator() + public Subtitle GetSubtitleByIndex(int index) { - return _subtitles.GetEnumerator(); + if (index >= subs.Count || index < 0) return new Subtitle(); + + return subs[index]; } - IEnumerator IEnumerable.GetEnumerator() + public string GetSubtitleText(int index) { - return GetEnumerator(); - } - - public Subtitle this[int index] - { - get + if (index >= subs.Count || index < 0) { - return _subtitles[index]; + return ""; } + + StringBuilder sb = new StringBuilder("subtitle "); + sb.Append(subs[index].Frame.ToString()); + sb.Append(" "); + sb.Append(subs[index].X.ToString()); + sb.Append(" "); + sb.Append(subs[index].Y.ToString()); + sb.Append(" "); + sb.Append(subs[index].Duration.ToString()); + sb.Append(" "); + sb.Append(string.Format("{0:X8}", subs[index].Color)); + sb.Append(" "); + sb.Append(subs[index].Message); + return sb.ToString(); } /// @@ -48,42 +66,45 @@ namespace BizHawk.Client.Common /// public string GetSubtitleMessage(int frame) { - if (_subtitles.Count == 0) return ""; + if (subs.Count == 0) return ""; - foreach (Subtitle t in _subtitles) + foreach (Subtitle t in subs) { if (frame >= t.Frame && frame <= t.Frame + t.Duration) { return t.Message; } } - return String.Empty; + return ""; } public Subtitle GetSubtitle(int frame) { - if (_subtitles.Any()) + if (subs.Count == 0) return new Subtitle(); + + foreach (Subtitle t in subs) { - foreach (Subtitle t in _subtitles) + if (frame >= t.Frame && frame <= t.Frame + t.Duration) { - if (frame >= t.Frame && frame <= t.Frame + t.Duration) - { - return t; - } + return t; } } - return new Subtitle(); } public List GetSubtitles(int frame) { - return _subtitles.Where(t => frame >= t.Frame && frame <= t.Frame + t.Duration).ToList(); + if (subs.Count == 0) + { + return null; + } + + return subs.Where(t => frame >= t.Frame && frame <= t.Frame + t.Duration).ToList(); } public int Count { - get { return _subtitles.Count; } + get { return subs.Count; } } //TODO @@ -98,12 +119,9 @@ namespace BizHawk.Client.Common /// /// /// - public bool AddSubtitle(string subtitleStr) //TODO: refactor with String.Split + public bool AddSubtitle(string subtitleStr) { - if (!String.IsNullOrWhiteSpace(subtitleStr)) - { - return false; - } + if (subtitleStr.Length == 0) return false; Subtitle s = new Subtitle(); @@ -181,33 +199,34 @@ namespace BizHawk.Client.Common } s.Message = str; - _subtitles.Add(s); + subs.Add(s); return true; } public void AddSubtitle(Subtitle s) { - _subtitles.Add(s); + subs.Add(s); } - public void Clear() + public void ClearSubtitles() { - _subtitles.Clear(); + subs.Clear(); } - public void RemoveAt(int index) + public void Remove(int index) { - if (index >= _subtitles.Count) return; + if (index >= subs.Count) return; - _subtitles.RemoveAt(index); + subs.RemoveAt(index); } public void WriteText(StreamWriter sw) { - foreach(var subtitle in _subtitles) + int length = subs.Count; + for (int x = 0; x < length; x++) { - sw.WriteLine(subtitle.ToString()); + sw.WriteLine(GetSubtitleText(x)); } } } diff --git a/BizHawk.MultiClient/movie/SubtitleMaker.cs b/BizHawk.MultiClient/movie/SubtitleMaker.cs index 0c6fa50f96..538512381b 100644 --- a/BizHawk.MultiClient/movie/SubtitleMaker.cs +++ b/BizHawk.MultiClient/movie/SubtitleMaker.cs @@ -2,8 +2,6 @@ using System.Drawing; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class SubtitleMaker : Form diff --git a/BizHawk.Client.Common/tools/Cheat.cs b/BizHawk.MultiClient/tools/Cheats/Cheat.cs similarity index 83% rename from BizHawk.Client.Common/tools/Cheat.cs rename to BizHawk.MultiClient/tools/Cheats/Cheat.cs index 1a6fc15fcc..c085ebdfbf 100644 --- a/BizHawk.Client.Common/tools/Cheat.cs +++ b/BizHawk.MultiClient/tools/Cheats/Cheat.cs @@ -1,6 +1,9 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class Cheat { @@ -28,14 +31,14 @@ namespace BizHawk.Client.Common { _enabled = cheat.Enabled; _watch = Watch.GenerateWatch(cheat.Domain, - cheat.Address ?? 0, + cheat.Address.Value, cheat.Size, cheat.Type, cheat.Name, - cheat.BigEndian ?? false + cheat.BigEndian.Value ); _compare = cheat.Compare; - _val = cheat.Value ?? 0; + _val = cheat.Value.Value; Pulse(); } @@ -200,12 +203,12 @@ namespace BizHawk.Client.Common case Watch.WatchSize.Separator: return false; case Watch.WatchSize.Byte: - return (_watch.Address ?? 0) == addr; + return _watch.Address.Value == addr; case Watch.WatchSize.Word: - return (addr == (_watch.Address ?? 0)) || (addr == (_watch.Address ?? 0) + 1); + return (addr == _watch.Address.Value) || (addr == _watch.Address + 1); case Watch.WatchSize.DWord: - return (addr == (_watch.Address ?? 0)) || (addr == (_watch.Address ?? 0) + 1) || - (addr == (_watch.Address ?? 0) + 2) || (addr == (_watch.Address ?? 0) + 3); + return (addr == _watch.Address.Value) || (addr == _watch.Address + 1) || + (addr == _watch.Address.Value + 2) || (addr == _watch.Address + 3); } } @@ -239,7 +242,7 @@ namespace BizHawk.Client.Common #region private parts - private readonly Watch _watch; + private Watch _watch; private int? _compare; private int _val; private bool _enabled; diff --git a/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs b/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs index 06664f11eb..03d8dc5899 100644 --- a/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs +++ b/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs @@ -231,7 +231,7 @@ // // CompareBox // - this.CompareBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte; + this.CompareBox.ByteSize = BizHawk.MultiClient.Watch.WatchSize.Byte; this.CompareBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; this.CompareBox.Location = new System.Drawing.Point(113, 91); this.CompareBox.MaxLength = 2; @@ -240,11 +240,11 @@ this.CompareBox.Size = new System.Drawing.Size(65, 20); this.CompareBox.TabIndex = 15; this.CompareBox.Text = "00"; - this.CompareBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex; + this.CompareBox.Type = BizHawk.MultiClient.Watch.DisplayType.Hex; // // ValueBox // - this.ValueBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte; + this.ValueBox.ByteSize = BizHawk.MultiClient.Watch.WatchSize.Byte; this.ValueBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; this.ValueBox.Location = new System.Drawing.Point(113, 65); this.ValueBox.MaxLength = 2; @@ -253,7 +253,7 @@ this.ValueBox.Size = new System.Drawing.Size(65, 20); this.ValueBox.TabIndex = 12; this.ValueBox.Text = "00"; - this.ValueBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex; + this.ValueBox.Type = BizHawk.MultiClient.Watch.DisplayType.Hex; // // CheatEdit // diff --git a/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs b/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs index 018d31b8c8..71b49948c1 100644 --- a/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs +++ b/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs @@ -8,8 +8,6 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class CheatEdit : UserControl diff --git a/BizHawk.MultiClient/tools/Cheats/CheatForm.cs b/BizHawk.MultiClient/tools/Cheats/CheatForm.cs index 245961f760..4ec8e63958 100644 --- a/BizHawk.MultiClient/tools/Cheats/CheatForm.cs +++ b/BizHawk.MultiClient/tools/Cheats/CheatForm.cs @@ -9,7 +9,6 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.Nintendo.SNES; using BizHawk.Emulation.Consoles.Nintendo; using BizHawk.Emulation.Consoles.Sega; @@ -112,7 +111,6 @@ namespace BizHawk.MultiClient Global.Config.RecentWatches.Add(path); UpdateListView(); UpdateMessageLabel(); - ToolHelpers.UpdateCheatRelatedTools(); } } } @@ -142,9 +140,9 @@ namespace BizHawk.MultiClient if (Global.CheatList.Changes) { - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); DialogResult result = MessageBox.Show("Save Changes?", "Cheats", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.Yes) { Global.CheatList.Save(); @@ -178,24 +176,10 @@ namespace BizHawk.MultiClient UpdateListView(); UpdateMessageLabel(); Global.Config.RecentCheats.Add(Global.CheatList.CurrentFileName); - ToolHelpers.UpdateCheatRelatedTools(); } } } - private bool SaveAs() - { - var file = ToolHelpers.GetCheatSaveFileFromUser(Global.CheatList.CurrentFileName); - if (file != null) - { - return Global.CheatList.SaveFile(file.FullName); - } - else - { - return false; - } - } - private void NewCheatForm_Load(object sender, EventArgs e) { LoadConfigSettings(); @@ -231,7 +215,6 @@ namespace BizHawk.MultiClient Global.CheatList.Add(CheatEditor.Cheat); UpdateListView(); UpdateMessageLabel(); - ToolHelpers.UpdateCheatRelatedTools(); } private void EditCheat() @@ -420,7 +403,6 @@ namespace BizHawk.MultiClient } UpdateListView(); - ToolHelpers.UpdateCheatRelatedTools(); } private void MoveDown() @@ -457,7 +439,6 @@ namespace BizHawk.MultiClient } UpdateListView(); - ToolHelpers.UpdateCheatRelatedTools(); } private void Remove() @@ -570,10 +551,9 @@ namespace BizHawk.MultiClient if (result) { - Global.CheatList.NewList(GlobalWinF.MainForm.GenerateDefaultCheatFilename()); + Global.CheatList.NewList(); UpdateListView(); UpdateMessageLabel(); - ToolHelpers.UpdateCheatRelatedTools(); } } @@ -602,7 +582,7 @@ namespace BizHawk.MultiClient private void OpenMenuItem_Click(object sender, EventArgs e) { bool append = sender == AppendMenuItem; - LoadFile(ToolHelpers.GetCheatFileFromUser(Global.CheatList.CurrentFileName), append); + LoadFile(CheatList.GetFileFromUser(Global.CheatList.CurrentFileName), append); } private void SaveMenuItem_Click(object sender, EventArgs e) @@ -622,7 +602,7 @@ namespace BizHawk.MultiClient private void SaveAsMenuItem_Click(object sender, EventArgs e) { - if (SaveAs()) + if (Global.CheatList.SaveAs()) { UpdateMessageLabel(saved: true); } @@ -674,7 +654,6 @@ namespace BizHawk.MultiClient UpdateListView(); UpdateMessageLabel(); - ToolHelpers.UpdateCheatRelatedTools(); } private void InsertSeparatorMenuItem_Click(object sender, EventArgs e) @@ -690,7 +669,6 @@ namespace BizHawk.MultiClient UpdateListView(); UpdateMessageLabel(); - ToolHelpers.UpdateCheatRelatedTools(); } private void MoveUpMenuItem_Click(object sender, EventArgs e) @@ -719,12 +697,11 @@ namespace BizHawk.MultiClient private void DisableAllCheatsMenuItem_Click(object sender, EventArgs e) { Global.CheatList.DisableAll(); - ToolHelpers.UpdateCheatRelatedTools(); } private void OpenGameGenieEncoderDecoderMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadGameGenieEC(); + Global.MainForm.LoadGameGenieEC(); } #endregion diff --git a/BizHawk.Client.Common/tools/CheatList.cs b/BizHawk.MultiClient/tools/Cheats/CheatList.cs similarity index 63% rename from BizHawk.Client.Common/tools/CheatList.cs rename to BizHawk.MultiClient/tools/Cheats/CheatList.cs index f8435d4322..595004ecd0 100644 --- a/BizHawk.Client.Common/tools/CheatList.cs +++ b/BizHawk.MultiClient/tools/Cheats/CheatList.cs @@ -4,15 +4,17 @@ using System.Globalization; using System.IO; using System.Linq; using System.Text; +using System.Windows.Forms; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public class CheatList : IEnumerable { private List _cheatList = new List(); private string _currentFileName = String.Empty; - private bool _changes; - private string _defaultFileName = String.Empty; + private bool _changes = false; + + public CheatList() { } public IEnumerator GetEnumerator() { @@ -43,7 +45,7 @@ namespace BizHawk.Client.Common /// public bool AttemptToLoadCheatFile() { - var file = new FileInfo(_defaultFileName); + var file = new FileInfo(GenerateDefaultFilename()); if (file.Exists) { @@ -75,12 +77,12 @@ namespace BizHawk.Client.Common get { return _cheatList.Count(x => x.Enabled); } } - public void NewList(string defaultFileName) + public void NewList() { - _defaultFileName = defaultFileName; _cheatList.Clear(); _currentFileName = String.Empty; _changes = false; + ToolHelpers.UpdateCheatRelatedTools(); } public void Update() @@ -100,6 +102,7 @@ namespace BizHawk.Client.Common } _changes = true; + ToolHelpers.UpdateCheatRelatedTools(); } public void Insert(int index, Cheat c) @@ -114,12 +117,14 @@ namespace BizHawk.Client.Common } _changes = true; + ToolHelpers.UpdateCheatRelatedTools(); } public void Remove(Cheat c) { _changes = true; _cheatList.Remove(c); + ToolHelpers.UpdateCheatRelatedTools(); } public void Remove(Watch w) @@ -130,6 +135,7 @@ namespace BizHawk.Client.Common { _changes = true; _cheatList.Remove(cheat); + ToolHelpers.UpdateCheatRelatedTools(); } } @@ -140,6 +146,7 @@ namespace BizHawk.Client.Common { _cheatList.Remove(cheat); } + ToolHelpers.UpdateCheatRelatedTools(); } public bool Changes @@ -151,18 +158,21 @@ namespace BizHawk.Client.Common { _changes = true; _cheatList.Clear(); + ToolHelpers.UpdateCheatRelatedTools(); } public void DisableAll() { _changes = true; _cheatList.ForEach(x => x.Disable()); + ToolHelpers.UpdateCheatRelatedTools(); } public void EnableAll() { _changes = true; _cheatList.ForEach(x => x.Enable()); + ToolHelpers.UpdateCheatRelatedTools(); } public bool IsActive(MemoryDomain domain, int address) @@ -190,7 +200,7 @@ namespace BizHawk.Client.Common { if (String.IsNullOrWhiteSpace(_currentFileName)) { - _currentFileName = _defaultFileName; + _currentFileName = GenerateDefaultFilename(); } SaveFile(_currentFileName); @@ -206,60 +216,20 @@ namespace BizHawk.Client.Common { if (String.IsNullOrWhiteSpace(_currentFileName)) { - _currentFileName = _defaultFileName; + _currentFileName = GenerateDefaultFilename(); } return SaveFile(_currentFileName); } - public bool SaveFile(string path) + public bool SaveAs() { - try + var file = GetSaveFileFromUser(); + if (file != null) { - FileInfo file = new FileInfo(path); - if (file.Directory != null && !file.Directory.Exists) - { - file.Directory.Create(); - } - - using (StreamWriter sw = new StreamWriter(path)) - { - StringBuilder sb = new StringBuilder(); - - foreach (var cheat in _cheatList) - { - if (cheat.IsSeparator) - { - sb.AppendLine("----"); - } - else - { - //Set to hex for saving - cheat.SetType(Watch.DisplayType.Hex); - - sb - .Append(cheat.AddressStr).Append('\t') - .Append(cheat.ValueStr).Append('\t') - .Append(cheat.Compare.HasValue ? cheat.Compare.Value.ToString() : "N").Append('\t') - .Append(cheat.Domain != null ? cheat.Domain.Name : String.Empty).Append('\t') - .Append(cheat.Enabled ? '1' : '0').Append('\t') - .Append(cheat.Name).Append('\t') - .Append(cheat.SizeAsChar).Append('\t') - .Append(cheat.TypeAsChar).Append('\t') - .Append((cheat.BigEndian ?? false) ? '1' : '0').Append('\t') - .AppendLine(); - } - } - - sw.WriteLine(sb.ToString()); - } - - _changes = false; - _currentFileName = path; - Global.Config.RecentCheats.Add(_currentFileName); - return true; + return SaveFile(file.FullName); } - catch + else { return false; } @@ -301,48 +271,52 @@ namespace BizHawk.Client.Common } else { - int? compare; - Watch.WatchSize size = Watch.WatchSize.Byte; - Watch.DisplayType type = Watch.DisplayType.Hex; + int ADDR, VALUE; + int? COMPARE; + MemoryDomain DOMAIN; + bool ENABLED; + string NAME; + Watch.WatchSize SIZE = Watch.WatchSize.Byte; + Watch.DisplayType TYPE = Watch.DisplayType.Hex; bool BIGENDIAN = false; if (s.Length < 6) continue; //NewCheat c = new NewCheat( string[] vals = s.Split('\t'); - int ADDR = Int32.Parse(vals[0], NumberStyles.HexNumber); - int value = Int32.Parse(vals[1], NumberStyles.HexNumber); + ADDR = Int32.Parse(vals[0], NumberStyles.HexNumber); + VALUE = Int32.Parse(vals[1], NumberStyles.HexNumber); if (vals[2] == "N") { - compare = null; + COMPARE = null; } else { - compare = Int32.Parse(vals[2], NumberStyles.HexNumber); + COMPARE = Int32.Parse(vals[2], NumberStyles.HexNumber); } - MemoryDomain domain = DomainByName(vals[3]); - bool ENABLED = vals[4] == "1"; - string name = vals[5]; + DOMAIN = ToolHelpers.DomainByName(vals[3]); + ENABLED = vals[4] == "1"; + NAME = vals[5]; //For backwards compatibility, don't assume these values exist if (vals.Length > 6) { - size = Watch.SizeFromChar(vals[6][0]); - type = Watch.DisplayTypeFromChar(vals[7][0]); + SIZE = Watch.SizeFromChar(vals[6][0]); + TYPE = Watch.DisplayTypeFromChar(vals[7][0]); BIGENDIAN = vals[8] == "1"; } Watch w = Watch.GenerateWatch( - domain, + DOMAIN, ADDR, - size, - type, - name, + SIZE, + TYPE, + NAME, BIGENDIAN ); - Cheat c = new Cheat(w, value, compare, !Global.Config.DisableCheatsOnLoad && ENABLED); + Cheat c = new Cheat(w, VALUE, COMPARE, Global.Config.DisableCheatsOnLoad ? false : ENABLED); _cheatList.Add(c); } } @@ -353,6 +327,7 @@ namespace BizHawk.Client.Common } } + Global.MainForm.UpdateCheatStatus(); return true; } @@ -365,7 +340,7 @@ namespace BizHawk.Client.Common { switch (column) { - case NAME: + case Cheats.NAME: if (reverse) { _cheatList = _cheatList @@ -381,7 +356,7 @@ namespace BizHawk.Client.Common .ToList(); } break; - case ADDRESS: + case Cheats.ADDRESS: if (reverse) { _cheatList = _cheatList @@ -397,13 +372,13 @@ namespace BizHawk.Client.Common .ToList(); } break; - case VALUE: + case Cheats.VALUE: if (reverse) { _cheatList = _cheatList .OrderByDescending(x => x.Value ?? 0) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } else @@ -411,17 +386,17 @@ namespace BizHawk.Client.Common _cheatList = _cheatList .OrderBy(x => x.Value ?? 0) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } break; - case COMPARE: + case Cheats.COMPARE: if (reverse) { _cheatList = _cheatList .OrderByDescending(x => x.Compare ?? 0) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } else @@ -429,17 +404,17 @@ namespace BizHawk.Client.Common _cheatList = _cheatList .OrderBy(x => x.Compare ?? 0) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } break; - case ON: + case Cheats.ON: if (reverse) { _cheatList = _cheatList .OrderByDescending(x => x.Enabled) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } else @@ -447,17 +422,17 @@ namespace BizHawk.Client.Common _cheatList = _cheatList .OrderBy(x => x.Enabled) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } break; - case DOMAIN: + case Cheats.DOMAIN: if (reverse) { _cheatList = _cheatList .OrderByDescending(x => x.Domain) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } else @@ -465,17 +440,17 @@ namespace BizHawk.Client.Common _cheatList = _cheatList .OrderBy(x => x.Domain) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } break; - case SIZE: + case Cheats.SIZE: if (reverse) { _cheatList = _cheatList .OrderByDescending(x => ((int)x.Size)) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } else @@ -483,17 +458,17 @@ namespace BizHawk.Client.Common _cheatList = _cheatList .OrderBy(x => ((int)x.Size)) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } break; - case ENDIAN: + case Cheats.ENDIAN: if (reverse) { _cheatList = _cheatList .OrderByDescending(x => x.BigEndian) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } else @@ -501,17 +476,17 @@ namespace BizHawk.Client.Common _cheatList = _cheatList .OrderBy(x => x.BigEndian) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } break; - case TYPE: + case Cheats.TYPE: if (reverse) { _cheatList = _cheatList .OrderByDescending(x => x.Type) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } else @@ -519,39 +494,138 @@ namespace BizHawk.Client.Common _cheatList = _cheatList .OrderBy(x => x.Type) .ThenBy(x => x.Name) - .ThenBy(x => x.Address ?? 0) + .ThenBy(x => x.Address.Value) .ToList(); } break; } } - #region Privates + #region privates - private static MemoryDomain DomainByName(string name) + private string GenerateDefaultFilename() { - //Attempts to find the memory domain by name, if it fails, it defaults to index 0 - foreach (MemoryDomain domain in Global.Emulator.MemoryDomains) + PathEntry pathEntry = Global.Config.PathEntries[Global.Emulator.SystemId, "Cheats"]; + if (pathEntry == null) { - if (domain.Name == name) - { - return domain; - } + pathEntry = Global.Config.PathEntries[Global.Emulator.SystemId, "Base"]; + } + string path = PathManager.MakeAbsolutePath(pathEntry.Path, Global.Emulator.SystemId); + + var f = new FileInfo(path); + if (f.Directory != null && f.Directory.Exists == false) + { + f.Directory.Create(); } - return Global.Emulator.MainMemory; + return Path.Combine(path, PathManager.FilesystemSafeName(Global.Game) + ".cht"); + } + + private bool SaveFile(string path) + { + try + { + FileInfo file = new FileInfo(path); + if (file.Directory != null && !file.Directory.Exists) + { + file.Directory.Create(); + } + + using (StreamWriter sw = new StreamWriter(path)) + { + StringBuilder sb = new StringBuilder(); + + foreach (var cheat in _cheatList) + { + if (cheat.IsSeparator) + { + sb.AppendLine("----"); + } + else + { + //Set to hex for saving + Watch.DisplayType type = cheat.Type; + cheat.SetType(Watch.DisplayType.Hex); + + sb + .Append(cheat.AddressStr).Append('\t') + .Append(cheat.ValueStr).Append('\t') + .Append(cheat.Compare.HasValue ? cheat.Compare.Value.ToString() : "N").Append('\t') + .Append(cheat.Domain != null ? cheat.Domain.Name : String.Empty).Append('\t') + .Append(cheat.Enabled ? '1' : '0').Append('\t') + .Append(cheat.Name).Append('\t') + .Append(cheat.SizeAsChar).Append('\t') + .Append(cheat.TypeAsChar).Append('\t') + .Append(cheat.BigEndian.Value ? '1' : '0').Append('\t') + .AppendLine(); + } + } + + sw.WriteLine(sb.ToString()); + } + + _changes = false; + _currentFileName = path; + Global.Config.RecentCheats.Add(_currentFileName); + return true; + } + catch + { + return false; + } } #endregion - public const string NAME = "NamesColumn"; - public const string ADDRESS = "AddressColumn"; - public const string VALUE = "ValueColumn"; - public const string COMPARE = "CompareColumn"; - public const string ON = "OnColumn"; - public const string DOMAIN = "DomainColumn"; - public const string SIZE = "SizeColumn"; - public const string ENDIAN = "EndianColumn"; - public const string TYPE = "DisplayTypeColumn"; + #region File Handling + + public static FileInfo GetFileFromUser(string currentFile) + { + var ofd = new OpenFileDialog(); + if (!String.IsNullOrWhiteSpace(currentFile)) + { + ofd.FileName = Path.GetFileNameWithoutExtension(currentFile); + } + ofd.InitialDirectory = PathManager.GetCheatsPath(Global.Game); + ofd.Filter = "Cheat Files (*.cht)|*.cht|All Files|*.*"; + ofd.RestoreDirectory = true; + + Global.Sound.StopSound(); + var result = ofd.ShowDialog(); + Global.Sound.StartSound(); + if (result != DialogResult.OK) + return null; + var file = new FileInfo(ofd.FileName); + return file; + } + + private FileInfo GetSaveFileFromUser() + { + var sfd = new SaveFileDialog(); + if (!String.IsNullOrWhiteSpace(_currentFileName)) + { + sfd.FileName = Path.GetFileNameWithoutExtension(_currentFileName); + } + else if (!(Global.Emulator is NullEmulator)) + { + sfd.FileName = PathManager.FilesystemSafeName(Global.Game); + } + sfd.InitialDirectory = PathManager.GetCheatsPath(Global.Game); + sfd.Filter = "Cheat Files (*.cht)|*.cht|All Files|*.*"; + sfd.RestoreDirectory = true; + Global.Sound.StopSound(); + var result = sfd.ShowDialog(); + Global.Sound.StartSound(); + if (result != DialogResult.OK) + { + return null; + } + + var file = new FileInfo(sfd.FileName); + Global.Config.LastRomPath = file.DirectoryName; + return file; + } + + #endregion } } diff --git a/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs b/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs index 26bb9e794f..e974c7798b 100644 --- a/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs +++ b/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using BizHawk.Emulation.Consoles.GB; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.GBtools { public partial class CGBColorChooserForm : Form diff --git a/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs b/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs index f9abe99ca1..337b031e1e 100644 --- a/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs +++ b/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Windows.Forms; using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.GBtools { public partial class ColorChooserForm : Form diff --git a/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs b/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs index 2f5cf11e6e..e58461da12 100644 --- a/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs +++ b/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.GBtools { public partial class DualGBFileSelector : UserControl diff --git a/BizHawk.MultiClient/tools/GB/GBGPUView.cs b/BizHawk.MultiClient/tools/GB/GBGPUView.cs index 730728d38b..9e51701ff4 100644 --- a/BizHawk.MultiClient/tools/GB/GBGPUView.cs +++ b/BizHawk.MultiClient/tools/GB/GBGPUView.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.GBtools { public partial class GBGPUView : Form @@ -957,9 +955,9 @@ namespace BizHawk.MultiClient.GBtools dlg.FullOpen = true; dlg.Color = spriteback; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = dlg.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.OK) { // force full opaque diff --git a/BizHawk.MultiClient/tools/GB/GBGameGenie.cs b/BizHawk.MultiClient/tools/GB/GBGameGenie.cs index cff5f946b6..60dc69c8b5 100644 --- a/BizHawk.MultiClient/tools/GB/GBGameGenie.cs +++ b/BizHawk.MultiClient/tools/GB/GBGameGenie.cs @@ -5,8 +5,6 @@ using System.Windows.Forms; using System.Globalization; using System.Text.RegularExpressions; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class GBGameGenie : Form @@ -413,8 +411,6 @@ namespace BizHawk.MultiClient VALUE, COMPARE, enabled: true)); - - ToolHelpers.UpdateCheatRelatedTools(); } } diff --git a/BizHawk.MultiClient/tools/GBA/GBAGPUView.cs b/BizHawk.MultiClient/tools/GBA/GBAGPUView.cs index 33b8bc6718..2d78f33b40 100644 --- a/BizHawk.MultiClient/tools/GBA/GBAGPUView.cs +++ b/BizHawk.MultiClient/tools/GBA/GBAGPUView.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using BizHawk.MultiClient.GBtools; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.GBAtools { public partial class GBAGPUView : Form diff --git a/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs b/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs index 324244530e..afcb3b0c23 100644 --- a/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs +++ b/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Windows.Forms; using System.Globalization; using System.Text.RegularExpressions; - -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.Sega; #pragma warning disable 675 //TOOD: fix the potential problem this is masking @@ -278,8 +276,6 @@ namespace BizHawk.MultiClient compare: null, enabled: true )); - - ToolHelpers.UpdateCheatRelatedTools(); } } diff --git a/BizHawk.MultiClient/tools/HexEditor/HexColor.cs b/BizHawk.MultiClient/tools/HexEditor/HexColor.cs index ac606925ed..e82ee085ea 100644 --- a/BizHawk.MultiClient/tools/HexEditor/HexColor.cs +++ b/BizHawk.MultiClient/tools/HexEditor/HexColor.cs @@ -1,8 +1,6 @@ using System; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class HexColors_Form : Form @@ -27,8 +25,8 @@ namespace BizHawk.MultiClient if (colorDialog1.ShowDialog() == DialogResult.OK) { Global.Config.HexBackgrndColor = colorDialog1.Color; - GlobalWinF.MainForm.HexEditor1.Header.BackColor = colorDialog1.Color; - GlobalWinF.MainForm.HexEditor1.MemoryViewerBox.BackColor = Global.Config.HexBackgrndColor; + Global.MainForm.HexEditor1.Header.BackColor = colorDialog1.Color; + Global.MainForm.HexEditor1.MemoryViewerBox.BackColor = Global.Config.HexBackgrndColor; HexBackgrnd.BackColor = colorDialog1.Color; } } @@ -38,8 +36,8 @@ namespace BizHawk.MultiClient if (colorDialog1.ShowDialog() == DialogResult.OK) { Global.Config.HexForegrndColor = colorDialog1.Color; - GlobalWinF.MainForm.HexEditor1.Header.ForeColor = colorDialog1.Color; - GlobalWinF.MainForm.HexEditor1.MemoryViewerBox.ForeColor = Global.Config.HexForegrndColor; + Global.MainForm.HexEditor1.Header.ForeColor = colorDialog1.Color; + Global.MainForm.HexEditor1.MemoryViewerBox.ForeColor = Global.Config.HexForegrndColor; HexForegrnd.BackColor = colorDialog1.Color; } @@ -50,7 +48,7 @@ namespace BizHawk.MultiClient if (colorDialog1.ShowDialog() == DialogResult.OK) { Global.Config.HexMenubarColor = colorDialog1.Color; - GlobalWinF.MainForm.HexEditor1.menuStrip1.BackColor = Global.Config.HexMenubarColor; + Global.MainForm.HexEditor1.menuStrip1.BackColor = Global.Config.HexMenubarColor; HexMenubar.BackColor = colorDialog1.Color; } } diff --git a/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs b/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs index 077b7a035c..3d611be67f 100644 --- a/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs +++ b/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs @@ -8,8 +8,6 @@ using System.Windows.Forms; using System.Globalization; using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class HexEditor : Form @@ -386,7 +384,7 @@ namespace BizHawk.MultiClient private bool CurrentROMIsArchive() { - string path = GlobalWinF.MainForm.CurrentlyOpenRom; + string path = Global.MainForm.CurrentlyOpenRom; if (path == null) { return false; @@ -414,7 +412,7 @@ namespace BizHawk.MultiClient private byte[] GetRomBytes() { - string path = GlobalWinF.MainForm.CurrentlyOpenRom; + string path = Global.MainForm.CurrentlyOpenRom; if (path == null) { return null; @@ -536,9 +534,9 @@ namespace BizHawk.MultiClient InputPrompt i = new InputPrompt { Text = "Go to Address" }; i._Location = GetPromptPoint(); i.SetMessage("Enter a hexadecimal value"); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); i.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (i.UserOK) { @@ -706,16 +704,16 @@ namespace BizHawk.MultiClient { if (HighlightedAddress.HasValue || SecondaryHighlightedAddresses.Count > 0) { - GlobalWinF.MainForm.LoadRamWatch(true); + Global.MainForm.LoadRamWatch(true); } if (HighlightedAddress.HasValue) { - GlobalWinF.MainForm.RamWatch1.AddWatch(MakeWatch(HighlightedAddress.Value)); + Global.MainForm.RamWatch1.AddWatch(MakeWatch(HighlightedAddress.Value)); } foreach (int i in SecondaryHighlightedAddresses) { - GlobalWinF.MainForm.RamWatch1.AddWatch(MakeWatch(i)); + Global.MainForm.RamWatch1.AddWatch(MakeWatch(i)); } } @@ -753,10 +751,10 @@ namespace BizHawk.MultiClient poke.SetWatch(Watches); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = poke.ShowDialog(); UpdateValues(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } } @@ -872,7 +870,6 @@ namespace BizHawk.MultiClient Global.CheatList.RemoveRange(cheats); } MemoryViewerBox.Refresh(); - ToolHelpers.UpdateCheatRelatedTools(); } private Watch.WatchSize WatchSize @@ -894,10 +891,10 @@ namespace BizHawk.MultiClient private void UpdateRelatedDialogs() { - GlobalWinF.MainForm.UpdateCheatStatus(); - GlobalWinF.MainForm.RamSearch1.UpdateValues(); - GlobalWinF.MainForm.RamWatch1.UpdateValues(); - GlobalWinF.MainForm.Cheats_UpdateValues(); + Global.MainForm.UpdateCheatStatus(); + Global.MainForm.RamSearch1.UpdateValues(); + Global.MainForm.RamWatch1.UpdateValues(); + Global.MainForm.Cheats_UpdateValues(); UpdateValues(); } @@ -1010,9 +1007,9 @@ namespace BizHawk.MultiClient sfd.Filter = "Text (*.txt)|*.txt|All Files|*.*"; sfd.RestoreDirectory = true; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return null; var file = new FileInfo(sfd.FileName); @@ -1023,7 +1020,7 @@ namespace BizHawk.MultiClient { if (Domain.Name == "ROM File") { - string extension = Path.GetExtension(GlobalWinF.MainForm.CurrentlyOpenRom); + string extension = Path.GetExtension(Global.MainForm.CurrentlyOpenRom); return "Binary (*" + extension + ")|*" + extension + "|All Files|*.*"; } @@ -1047,9 +1044,9 @@ namespace BizHawk.MultiClient sfd.Filter = GetSaveFileFilter(); sfd.RestoreDirectory = true; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return null; var file = new FileInfo(sfd.FileName); @@ -2062,9 +2059,9 @@ namespace BizHawk.MultiClient private void setColorsToolStripMenuItem1_Click(object sender, EventArgs e) { HexColors_Form h = new HexColors_Form(); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); h.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } private void resetToDefaultToolStripMenuItem1_Click(object sender, EventArgs e) @@ -2124,7 +2121,7 @@ namespace BizHawk.MultiClient } else { - FileInfo file = new FileInfo(GlobalWinF.MainForm.CurrentlyOpenRom); + FileInfo file = new FileInfo(Global.MainForm.CurrentlyOpenRom); SaveFileBinary(file); } } diff --git a/BizHawk.MultiClient/tools/HexEditor/HexFind.cs b/BizHawk.MultiClient/tools/HexEditor/HexFind.cs index c0a0d3427e..2f8ecf8108 100644 --- a/BizHawk.MultiClient/tools/HexEditor/HexFind.cs +++ b/BizHawk.MultiClient/tools/HexEditor/HexFind.cs @@ -60,12 +60,12 @@ namespace BizHawk.MultiClient private void Find_Prev_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.HexEditor1.FindPrev(GetFindBoxChars(), false); + Global.MainForm.HexEditor1.FindPrev(GetFindBoxChars(), false); } private void Find_Next_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.HexEditor1.FindNext(GetFindBoxChars(), false); + Global.MainForm.HexEditor1.FindNext(GetFindBoxChars(), false); } private void ChangeCasing() @@ -94,7 +94,7 @@ namespace BizHawk.MultiClient { if (e.KeyData == Keys.Enter) { - GlobalWinF.MainForm.HexEditor1.FindNext(GetFindBoxChars(), false); + Global.MainForm.HexEditor1.FindNext(GetFindBoxChars(), false); } } } diff --git a/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs b/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs index 61ba8ff484..0eeb7b5cd5 100644 --- a/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs +++ b/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs @@ -4,7 +4,6 @@ using System.Windows.Forms; using System.Text; using System.Globalization; -using BizHawk.Client.Common; namespace BizHawk.MultiClient { @@ -518,9 +517,9 @@ namespace BizHawk.MultiClient { InputPrompt i = new InputPrompt {Text = "Go to Address"}; i.SetMessage("Enter a hexadecimal value"); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); i.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (i.UserOK) { diff --git a/BizHawk.MultiClient/tools/InputPrompt.cs b/BizHawk.MultiClient/tools/InputPrompt.cs index ec438f67df..dcbe39807a 100644 --- a/BizHawk.MultiClient/tools/InputPrompt.cs +++ b/BizHawk.MultiClient/tools/InputPrompt.cs @@ -2,8 +2,6 @@ using System.Drawing; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { /// diff --git a/BizHawk.MultiClient/tools/Lua/LuaConsole.cs b/BizHawk.MultiClient/tools/Lua/LuaConsole.cs index 551de905f2..fa02cbf57e 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaConsole.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaConsole.cs @@ -6,8 +6,6 @@ using System.Linq; using System.Windows.Forms; using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class LuaConsole : Form @@ -180,9 +178,9 @@ namespace BizHawk.MultiClient if (!Directory.Exists(ofd.InitialDirectory)) Directory.CreateDirectory(ofd.InitialDirectory); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = ofd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return null; var file = new FileInfo(ofd.FileName); @@ -710,9 +708,9 @@ namespace BizHawk.MultiClient private void luaFunctionsListToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); new LuaFunctionList().Show(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } public bool LoadLuaSession(string path) @@ -922,9 +920,9 @@ namespace BizHawk.MultiClient } sfd.Filter = "Lua Session Files (*.luases)|*.luases|All Files|*.*"; sfd.RestoreDirectory = true; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return null; var file = new FileInfo(sfd.FileName); @@ -1019,9 +1017,9 @@ namespace BizHawk.MultiClient if (changes) { - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); DialogResult result = MessageBox.Show("Save changes to session?", "Lua Console", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.Yes) { if (string.Compare(currentSessionFile, "") == 0) @@ -1101,7 +1099,7 @@ namespace BizHawk.MultiClient turnOffAllScriptsToolStripMenuItem.Enabled = luaRunning; - showRegisteredFunctionsToolStripMenuItem.Enabled = GlobalWinF.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Any(); + showRegisteredFunctionsToolStripMenuItem.Enabled = Global.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Any(); } private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) @@ -1247,7 +1245,7 @@ namespace BizHawk.MultiClient private void showRegisteredFunctionsToolStripMenuItem_Click(object sender, EventArgs e) { - if (GlobalWinF.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Any()) + if (Global.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Any()) { LuaRegisteredFunctionsList dialog = new LuaRegisteredFunctionsList(); dialog.ShowDialog(); @@ -1256,7 +1254,7 @@ namespace BizHawk.MultiClient private void contextMenuStrip2_Opening(object sender, CancelEventArgs e) { - registeredFunctionsToolStripMenuItem.Enabled = GlobalWinF.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Any(); + registeredFunctionsToolStripMenuItem.Enabled = Global.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Any(); } } } diff --git a/BizHawk.MultiClient/tools/Lua/LuaDocumentation.cs b/BizHawk.MultiClient/tools/Lua/LuaDocumentation.cs index 8397789852..4a74ff96dc 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaDocumentation.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaDocumentation.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient.tools { public class LuaDocumentation { diff --git a/BizHawk.MultiClient/tools/Lua/LuaFunctionList.cs b/BizHawk.MultiClient/tools/Lua/LuaFunctionList.cs index 63cd5b5a3f..0d5a7f65f8 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaFunctionList.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaFunctionList.cs @@ -23,7 +23,7 @@ namespace BizHawk.MultiClient private void PopulateListView() { FunctionView.Items.Clear(); - foreach (LuaDocumentation.LibraryFunction l in GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList) + foreach (LuaDocumentation.LibraryFunction l in Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList) { ListViewItem item = new ListViewItem {Text = l.ReturnType}; item.SubItems.Add(l.library + "."); @@ -41,16 +41,16 @@ namespace BizHawk.MultiClient switch (column) { case 0: //Return - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.ReturnType).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.ReturnType).ToList(); break; case 1: //Library - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.library).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.library).ToList(); break; case 2: //Name - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.name).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.name).ToList(); break; case 3: //Parameters - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.ParameterList).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderByDescending(x => x.ParameterList).ToList(); break; } } @@ -59,16 +59,16 @@ namespace BizHawk.MultiClient switch (column) { case 0: //Return - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.ReturnType).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.ReturnType).ToList(); break; case 1: //Library - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.library).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.library).ToList(); break; case 2: //Name - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.name).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.name).ToList(); break; case 3: //Parameters - GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.ParameterList).ToList(); + Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList.OrderBy(x => x.ParameterList).ToList(); break; } } @@ -132,7 +132,7 @@ namespace BizHawk.MultiClient foreach (int index in indexes) { - var library_function = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList[index]; + var library_function = Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList[index]; sb.Append(library_function.library).Append('.').Append(library_function.name).Append("()\n"); } diff --git a/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs b/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs index e8c887a42a..495ef0f0f8 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs @@ -8,12 +8,10 @@ using System.Drawing; using System.Threading; using System.Globalization; -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.Nintendo; +using BizHawk.MultiClient.tools; using System.Text; -using BizHawk.MultiClient.tools; //TODO: remove me, this is not an intended namespace - namespace BizHawk.MultiClient { public class LuaImplementation @@ -563,7 +561,7 @@ namespace BizHawk.MultiClient public void client_closerom() { - GlobalWinF.MainForm.CloseROM(); + Global.MainForm.CloseROM(); } public int client_getwindowsize() @@ -573,74 +571,74 @@ namespace BizHawk.MultiClient public void client_opencheats() { - GlobalWinF.MainForm.LoadCheatsWindow(); + Global.MainForm.LoadCheatsWindow(); } public void client_openhexeditor() { - GlobalWinF.MainForm.LoadHexEditor(); + Global.MainForm.LoadHexEditor(); } public void client_openramwatch() { - GlobalWinF.MainForm.LoadRamWatch(true); + Global.MainForm.LoadRamWatch(true); } public void client_openramsearch() { - GlobalWinF.MainForm.LoadRamSearch(); + Global.MainForm.LoadRamSearch(); } public void client_openrom(object lua_input) { - GlobalWinF.MainForm.LoadRom(lua_input.ToString()); + Global.MainForm.LoadRom(lua_input.ToString()); } public void client_opentasstudio() { - GlobalWinF.MainForm.LoadTAStudio(); + Global.MainForm.LoadTAStudio(); } public void client_opentoolbox() { - GlobalWinF.MainForm.LoadToolBox(); + Global.MainForm.LoadToolBox(); } public void client_opentracelogger() { - GlobalWinF.MainForm.LoadTraceLogger(); + Global.MainForm.LoadTraceLogger(); } public void client_pause_av() { - GlobalWinF.MainForm.PauseAVI = true; + Global.MainForm.PauseAVI = true; } public void client_reboot_core() { - GlobalWinF.MainForm.RebootCore(); + Global.MainForm.RebootCore(); } public int client_screenheight() { - return GlobalWinF.RenderPanel.NativeSize.Height; + return Global.RenderPanel.NativeSize.Height; } public void client_screenshot(object path = null) { if (path == null) { - GlobalWinF.MainForm.TakeScreenshot(); + Global.MainForm.TakeScreenshot(); } else { - GlobalWinF.MainForm.TakeScreenshot(path.ToString()); + Global.MainForm.TakeScreenshot(path.ToString()); } } public void client_screenshottoclipboard() { - GlobalWinF.MainForm.TakeScreenshotToClipboard(); + Global.MainForm.TakeScreenshotToClipboard(); } public void client_setscreenshotosd(bool value) @@ -650,7 +648,7 @@ namespace BizHawk.MultiClient public int client_screenwidth() { - return GlobalWinF.RenderPanel.NativeSize.Width; + return Global.RenderPanel.NativeSize.Width; } public void client_setwindowsize(object window_size) @@ -662,8 +660,8 @@ namespace BizHawk.MultiClient if (size == 1 || size == 2 || size == 3 || size == 4 || size == 5 || size == 10) { Global.Config.TargetZoomFactor = size; - GlobalWinF.MainForm.FrameBufferResized(); - GlobalWinF.OSD.AddMessage("Window size set to " + size.ToString() + "x"); + Global.MainForm.FrameBufferResized(); + Global.OSD.AddMessage("Window size set to " + size.ToString() + "x"); } else { @@ -679,17 +677,17 @@ namespace BizHawk.MultiClient public void client_unpause_av() { - GlobalWinF.MainForm.PauseAVI = false; + Global.MainForm.PauseAVI = false; } public int client_xpos() { - return GlobalWinF.MainForm.DesktopLocation.X; + return Global.MainForm.DesktopLocation.X; } public int client_ypos() { - return GlobalWinF.MainForm.DesktopLocation.Y; + return Global.MainForm.DesktopLocation.Y; } #endregion @@ -698,13 +696,13 @@ namespace BizHawk.MultiClient public void console_clear() { - GlobalWinF.MainForm.LuaConsole1.ClearOutputWindow(); + Global.MainForm.LuaConsole1.ClearOutputWindow(); } public string console_getluafunctionslist() { string list = ""; - foreach (LuaDocumentation.LibraryFunction l in GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.FunctionList) + foreach (LuaDocumentation.LibraryFunction l in Global.MainForm.LuaConsole1.LuaImp.docs.FunctionList) { list += l.name + "\n"; } @@ -721,7 +719,7 @@ namespace BizHawk.MultiClient { if (lua_input == null) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow("NULL"); + Global.MainForm.LuaConsole1.WriteToOutputWindow("NULL"); } else { @@ -756,11 +754,11 @@ namespace BizHawk.MultiClient .AppendLine(); } - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow(sb.ToString()); + Global.MainForm.LuaConsole1.WriteToOutputWindow(sb.ToString()); } else { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow(lua_input.ToString()); + Global.MainForm.LuaConsole1.WriteToOutputWindow(lua_input.ToString()); } } } @@ -812,7 +810,7 @@ namespace BizHawk.MultiClient public void gui_clearGraphics() { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; luaSurface.Clear(); } @@ -825,12 +823,12 @@ namespace BizHawk.MultiClient /// public void gui_drawNew() { - luaSurface = GlobalWinF.DisplayManager.GetLuaSurfaceNative(); + luaSurface = Global.DisplayManager.GetLuaSurfaceNative(); } public void gui_drawNewEmu() { - luaSurface = GlobalWinF.DisplayManager.GetLuaEmuSurfaceEmu(); + luaSurface = Global.DisplayManager.GetLuaEmuSurfaceEmu(); } /// @@ -840,13 +838,13 @@ namespace BizHawk.MultiClient /// public void gui_drawFinish() { - GlobalWinF.DisplayManager.SetLuaSurfaceNativePreOSD(luaSurface); + Global.DisplayManager.SetLuaSurfaceNativePreOSD(luaSurface); luaSurface = null; } public void gui_drawFinishEmu() { - GlobalWinF.DisplayManager.SetLuaSurfaceEmu(luaSurface); + Global.DisplayManager.SetLuaSurfaceEmu(luaSurface); luaSurface = null; } @@ -907,14 +905,14 @@ namespace BizHawk.MultiClient dx *= client_getwindowsize(); dy *= client_getwindowsize(); - GlobalWinF.OSD.AddGUIText(luaStr.ToString(), dx, dy, alert, GetColor(background), GetColor(forecolor), a); + Global.OSD.AddGUIText(luaStr.ToString(), dx, dy, alert, GetColor(background), GetColor(forecolor), a); } #endregion public void gui_addmessage(object luaStr) { - GlobalWinF.OSD.AddMessage(luaStr.ToString()); + Global.OSD.AddMessage(luaStr.ToString()); } public void gui_alert(object luaX, object luaY, object luaStr, object anchor = null) @@ -924,12 +922,12 @@ namespace BizHawk.MultiClient public void gui_cleartext() { - GlobalWinF.OSD.ClearGUIText(); + Global.OSD.ClearGUIText(); } public void gui_drawBezier(LuaTable points, object color) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { try @@ -1000,7 +998,7 @@ namespace BizHawk.MultiClient public void gui_drawEllipse(object X, object Y, object width, object height, object line, object background = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { try @@ -1022,7 +1020,7 @@ namespace BizHawk.MultiClient public void gui_drawIcon(object Path, object x, object y, object width = null, object height = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { try @@ -1048,7 +1046,7 @@ namespace BizHawk.MultiClient public void gui_drawImage(object Path, object x, object y, object width = null, object height = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { try @@ -1071,7 +1069,7 @@ namespace BizHawk.MultiClient public void gui_drawLine(object x1, object y1, object x2, object y2, object color = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { try @@ -1088,7 +1086,7 @@ namespace BizHawk.MultiClient public void gui_drawPie(object X, object Y, object width, object height, object startangle, object sweepangle, object line, object background = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { try @@ -1111,7 +1109,7 @@ namespace BizHawk.MultiClient public void gui_drawPixel(object X, object Y, object color = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { float x = LuaInt(X) + 0.1F; @@ -1128,7 +1126,7 @@ namespace BizHawk.MultiClient public void gui_drawPolygon(LuaTable points, object line, object background = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; //this is a test using (var g = GetGraphics()) { @@ -1183,13 +1181,13 @@ namespace BizHawk.MultiClient public void gui_drawString(object X, object Y, object message, object color = null, object fontsize = null, object fontfamily = null, object fontstyle = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; gui_drawText(X, Y, message, color, fontsize, fontfamily, fontstyle); } public void gui_drawText(object X, object Y, object message, object color = null, object fontsize = null, object fontfamily = null, object fontstyle = null) { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { try @@ -1257,23 +1255,23 @@ namespace BizHawk.MultiClient { if (Global.Emulator is NES) { - GlobalWinF.CoreComm.NES_ShowOBJ = Global.Config.NESDispSprites = (bool)lua_p[0]; - GlobalWinF.CoreComm.NES_ShowBG = Global.Config.NESDispBackground = (bool)lua_p[1]; + Global.CoreComm.NES_ShowOBJ = Global.Config.NESDispSprites = (bool)lua_p[0]; + Global.CoreComm.NES_ShowBG = Global.Config.NESDispBackground = (bool)lua_p[1]; } else if (Global.Emulator is Emulation.Consoles.TurboGrafx.PCEngine) { - GlobalWinF.CoreComm.PCE_ShowOBJ1 = Global.Config.PCEDispOBJ1 = (bool)lua_p[0]; - GlobalWinF.CoreComm.PCE_ShowBG1 = Global.Config.PCEDispBG1 = (bool)lua_p[1]; + Global.CoreComm.PCE_ShowOBJ1 = Global.Config.PCEDispOBJ1 = (bool)lua_p[0]; + Global.CoreComm.PCE_ShowBG1 = Global.Config.PCEDispBG1 = (bool)lua_p[1]; if (lua_p.Length > 2) { - GlobalWinF.CoreComm.PCE_ShowOBJ2 = Global.Config.PCEDispOBJ2 = (bool)lua_p[2]; - GlobalWinF.CoreComm.PCE_ShowBG2 = Global.Config.PCEDispBG2 = (bool)lua_p[3]; + Global.CoreComm.PCE_ShowOBJ2 = Global.Config.PCEDispOBJ2 = (bool)lua_p[2]; + Global.CoreComm.PCE_ShowBG2 = Global.Config.PCEDispBG2 = (bool)lua_p[3]; } } else if (Global.Emulator is Emulation.Consoles.Sega.SMS) { - GlobalWinF.CoreComm.SMS_ShowOBJ = Global.Config.SMSDispOBJ = (bool)lua_p[0]; - GlobalWinF.CoreComm.SMS_ShowBG = Global.Config.SMSDispBG = (bool)lua_p[1]; + Global.CoreComm.SMS_ShowOBJ = Global.Config.SMSDispOBJ = (bool)lua_p[0]; + Global.CoreComm.SMS_ShowBG = Global.Config.SMSDispBG = (bool)lua_p[1]; } } @@ -1292,7 +1290,7 @@ namespace BizHawk.MultiClient { Global.Config.VSyncThrottle = true; } - GlobalWinF.MainForm.VsyncMessage(); + Global.MainForm.VsyncMessage(); } } @@ -1303,13 +1301,13 @@ namespace BizHawk.MultiClient { if (temp == "0" || temp.ToLower() == "false") { - GlobalWinF.MainForm.RewindActive = false; - GlobalWinF.OSD.AddMessage("Rewind suspended"); + Global.MainForm.RewindActive = false; + Global.OSD.AddMessage("Rewind suspended"); } else { - GlobalWinF.MainForm.RewindActive = true; - GlobalWinF.OSD.AddMessage("Rewind enabled"); + Global.MainForm.RewindActive = true; + Global.OSD.AddMessage("Rewind enabled"); } } } @@ -1334,7 +1332,7 @@ namespace BizHawk.MultiClient if (frames > 0) { Global.Config.FrameSkip = frames; - GlobalWinF.MainForm.FrameSkipMessage(); + Global.MainForm.FrameSkipMessage(); } else { @@ -1359,7 +1357,7 @@ namespace BizHawk.MultiClient public bool emu_ispaused() { - return GlobalWinF.MainForm.EmulatorPaused; + return Global.MainForm.EmulatorPaused; } public int emu_lagcount() @@ -1380,7 +1378,7 @@ namespace BizHawk.MultiClient { Global.Config.ClockThrottle = true; } - GlobalWinF.MainForm.LimitFrameRateMessage(); + Global.MainForm.LimitFrameRateMessage(); } } @@ -1397,7 +1395,7 @@ namespace BizHawk.MultiClient { Global.Config.AutoMinimizeSkipping = true; } - GlobalWinF.MainForm.MinimizeFrameskipMessage(); + Global.MainForm.MinimizeFrameskipMessage(); } } @@ -1413,7 +1411,7 @@ namespace BizHawk.MultiClient } catch (SystemException e) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow( + Global.MainForm.LuaConsole1.WriteToOutputWindow( "error running function attached by lua function emu.on_snoop" + "\nError message: " + e.Message); } @@ -1425,7 +1423,7 @@ namespace BizHawk.MultiClient public void emu_pause() { - GlobalWinF.MainForm.PauseEmulator(); + Global.MainForm.PauseEmulator(); } public void emu_setrenderplanes( // For now, it accepts arguments up to 5. @@ -1443,7 +1441,7 @@ namespace BizHawk.MultiClient int speed = Convert.ToInt32(temp); if (speed > 0 && speed < 1000) //arbituarily capping it at 1000% { - GlobalWinF.MainForm.ClickSpeedItem(speed); + Global.MainForm.ClickSpeedItem(speed); } else { @@ -1458,17 +1456,17 @@ namespace BizHawk.MultiClient public void emu_togglepause() { - GlobalWinF.MainForm.TogglePause(); + Global.MainForm.TogglePause(); } public void emu_unpause() { - GlobalWinF.MainForm.UnpauseEmulator(); + Global.MainForm.UnpauseEmulator(); } public void emu_yield() { - GlobalWinF.DisplayManager.NeedsToPaint = true; + Global.DisplayManager.NeedsToPaint = true; currThread.Yield(0); } @@ -1496,7 +1494,7 @@ namespace BizHawk.MultiClient } catch (SystemException e) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow( + Global.MainForm.LuaConsole1.WriteToOutputWindow( "error running function attached by lua function savestate.registersave" + "\nError message: " + e.Message); } @@ -1517,7 +1515,7 @@ namespace BizHawk.MultiClient } catch (SystemException e) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow( + Global.MainForm.LuaConsole1.WriteToOutputWindow( "error running function attached by lua function savestate.registerload" + "\nError message: " + e.Message); } @@ -1538,7 +1536,7 @@ namespace BizHawk.MultiClient } catch (SystemException e) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow( + Global.MainForm.LuaConsole1.WriteToOutputWindow( "error running function attached by lua function emu.registerbefore" + "\nError message: " + e.Message); } @@ -1559,7 +1557,7 @@ namespace BizHawk.MultiClient } catch (SystemException e) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow( + Global.MainForm.LuaConsole1.WriteToOutputWindow( "error running function attached by lua function emu.registerafter" + "\nError message: " + e.Message); } @@ -1616,7 +1614,7 @@ namespace BizHawk.MultiClient } catch (SystemException e) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow( + Global.MainForm.LuaConsole1.WriteToOutputWindow( "error running function attached by lua function event.onmemoryread" + "\nError message: " + e.Message); } @@ -1653,7 +1651,7 @@ namespace BizHawk.MultiClient } catch (SystemException e) { - GlobalWinF.MainForm.LuaConsole1.WriteToOutputWindow( + Global.MainForm.LuaConsole1.WriteToOutputWindow( "error running function attached by lua function event.onmemoryread" + "\nError message: " + e.Message); } @@ -2110,7 +2108,7 @@ namespace BizHawk.MultiClient public LuaTable input_get() { LuaTable buttons = _lua.NewTable(); - foreach (var kvp in GlobalWinF.ControllerInputCoalescer.BoolButtons()) + foreach (var kvp in Global.ControllerInputCoalescer.BoolButtons()) if (kvp.Value) buttons[kvp.Key] = true; return buttons; @@ -2119,7 +2117,7 @@ namespace BizHawk.MultiClient public LuaTable input_getmouse() { LuaTable buttons = _lua.NewTable(); - Point p = GlobalWinF.RenderPanel.ScreenToScreen(Control.MousePosition); + Point p = Global.RenderPanel.ScreenToScreen(Control.MousePosition); buttons["X"] = p.X; buttons["Y"] = p.Y; buttons[MouseButtons.Left.ToString()] = (Control.MouseButtons & MouseButtons.Left) != 0; @@ -2138,27 +2136,27 @@ namespace BizHawk.MultiClient public LuaTable joypad_get(object controller = null) { LuaTable buttons = _lua.NewTable(); - foreach (string button in GlobalWinF.ControllerOutput.Source.Type.BoolButtons) + foreach (string button in Global.ControllerOutput.Source.Type.BoolButtons) { if (controller == null) { - buttons[button] = GlobalWinF.ControllerOutput[button]; + buttons[button] = Global.ControllerOutput[button]; } else if (button.Length >= 3 && button.Substring(0, 2) == "P" + LuaInt(controller).ToString()) { - buttons[button.Substring(3)] = GlobalWinF.ControllerOutput["P" + LuaInt(controller) + " " + button.Substring(3)]; + buttons[button.Substring(3)] = Global.ControllerOutput["P" + LuaInt(controller) + " " + button.Substring(3)]; } } - foreach (string button in GlobalWinF.ControllerOutput.Source.Type.FloatControls) + foreach (string button in Global.ControllerOutput.Source.Type.FloatControls) { if (controller == null) { - buttons[button] = GlobalWinF.ControllerOutput.GetFloat(button); + buttons[button] = Global.ControllerOutput.GetFloat(button); } else if (button.Length >= 3 && button.Substring(0, 2) == "P" + LuaInt(controller).ToString()) { - buttons[button.Substring(3)] = GlobalWinF.ControllerOutput.GetFloat("P" + LuaInt(controller) + " " + button.Substring(3)); + buttons[button.Substring(3)] = Global.ControllerOutput.GetFloat("P" + LuaInt(controller) + " " + button.Substring(3)); } } @@ -2172,8 +2170,8 @@ namespace BizHawk.MultiClient public LuaTable joypad_getimmediate() { LuaTable buttons = _lua.NewTable(); - foreach (string button in GlobalWinF.ActiveController.Type.BoolButtons) - buttons[button] = GlobalWinF.ActiveController[button]; + foreach (string button in Global.ActiveController.Type.BoolButtons) + buttons[button] = Global.ActiveController[button]; return buttons; } @@ -2215,24 +2213,24 @@ namespace BizHawk.MultiClient { if (controller == null) //Force On { - GlobalWinF.ClickyVirtualPadController.Click(button.ToString()); - GlobalWinF.ForceOffAdaptor.SetSticky(button.ToString(), false); + Global.ClickyVirtualPadController.Click(button.ToString()); + Global.ForceOffAdaptor.SetSticky(button.ToString(), false); } else { - GlobalWinF.ClickyVirtualPadController.Click("P" + controller + " " + button); - GlobalWinF.ForceOffAdaptor.SetSticky("P" + controller + " " + button, false); + Global.ClickyVirtualPadController.Click("P" + controller + " " + button); + Global.ForceOffAdaptor.SetSticky("P" + controller + " " + button, false); } } else if (theValue == false) //Force off { if (controller == null) { - GlobalWinF.ForceOffAdaptor.SetSticky(button.ToString(), true); + Global.ForceOffAdaptor.SetSticky(button.ToString(), true); } else { - GlobalWinF.ForceOffAdaptor.SetSticky("P" + controller + " " + button, true); + Global.ForceOffAdaptor.SetSticky("P" + controller + " " + button, true); } } else @@ -2240,11 +2238,11 @@ namespace BizHawk.MultiClient //Turn everything off if (controller == null) { - GlobalWinF.ForceOffAdaptor.SetSticky(button.ToString(), false); + Global.ForceOffAdaptor.SetSticky(button.ToString(), false); } else { - GlobalWinF.ForceOffAdaptor.SetSticky("P" + controller + " " + button, false); + Global.ForceOffAdaptor.SetSticky("P" + controller + " " + button, false); } } } @@ -2252,13 +2250,13 @@ namespace BizHawk.MultiClient { if (controller == null) { - GlobalWinF.StickyXORAdapter.SetSticky(button.ToString(), true); - GlobalWinF.ForceOffAdaptor.SetSticky(button.ToString(), false); + Global.StickyXORAdapter.SetSticky(button.ToString(), true); + Global.ForceOffAdaptor.SetSticky(button.ToString(), false); } else { - GlobalWinF.StickyXORAdapter.SetSticky("P" + controller + " " + button, true); - GlobalWinF.ForceOffAdaptor.SetSticky("P" + controller + " " + button, false); + Global.StickyXORAdapter.SetSticky("P" + controller + " " + button, true); + Global.ForceOffAdaptor.SetSticky("P" + controller + " " + button, false); } } } @@ -2281,11 +2279,11 @@ namespace BizHawk.MultiClient float theValue = float.Parse(theValueStr); if (controller == null) { - GlobalWinF.StickyXORAdapter.SetFloat(name.ToString(), theValue); + Global.StickyXORAdapter.SetFloat(name.ToString(), theValue); } else { - GlobalWinF.StickyXORAdapter.SetFloat("P" + controller + " " + name, theValue); + Global.StickyXORAdapter.SetFloat("P" + controller + " " + name, theValue); } } catch { } @@ -2953,7 +2951,7 @@ namespace BizHawk.MultiClient public bool movie_getreadonly() { - return GlobalWinF.MainForm.ReadOnly; + return Global.MainForm.ReadOnly; } public bool movie_getrerecordcounting() @@ -3013,9 +3011,9 @@ namespace BizHawk.MultiClient public void movie_setreadonly(object lua_input) { if (lua_input.ToString().ToUpper() == "TRUE" || lua_input.ToString() == "1") - GlobalWinF.MainForm.SetReadOnly(true); + Global.MainForm.SetReadOnly(true); else - GlobalWinF.MainForm.SetReadOnly(false); + Global.MainForm.SetReadOnly(false); } public void movie_setrerecordcounting(object lua_input) @@ -3057,8 +3055,6 @@ namespace BizHawk.MultiClient gg.Compare, enabled: true)); } - - ToolHelpers.UpdateCheatRelatedTools(); } } @@ -3117,8 +3113,6 @@ namespace BizHawk.MultiClient var cheats = Global.CheatList.Where(x => x.Address == gg.Address); Global.CheatList.RemoveRange(cheats); } - - ToolHelpers.UpdateCheatRelatedTools(); } } @@ -3143,13 +3137,13 @@ namespace BizHawk.MultiClient public void nes_setdispbackground(bool show) { Global.Config.NESDispBackground = show; - GlobalWinF.MainForm.SyncCoreCommInputSignals(); + Global.MainForm.SyncCoreCommInputSignals(); } public void nes_setdispsprites(bool show) { Global.Config.NESDispSprites = show; - GlobalWinF.MainForm.SyncCoreCommInputSignals(); + Global.MainForm.SyncCoreCommInputSignals(); } public void nes_setscanlines(object top, object bottom, bool pal = false) @@ -3209,7 +3203,7 @@ namespace BizHawk.MultiClient { if (lua_input is string) { - GlobalWinF.MainForm.LoadStateFile(lua_input.ToString(), Path.GetFileName(lua_input.ToString()), true); + Global.MainForm.LoadStateFile(lua_input.ToString(), Path.GetFileName(lua_input.ToString()), true); } } @@ -3229,7 +3223,7 @@ namespace BizHawk.MultiClient if (x < 0 || x > 9) return; - GlobalWinF.MainForm.LoadState("QuickSave" + x.ToString(), true); + Global.MainForm.LoadState("QuickSave" + x.ToString(), true); } public string savestate_registerload(LuaFunction luaf, object name) @@ -3251,7 +3245,7 @@ namespace BizHawk.MultiClient if (lua_input is string) { string path = lua_input.ToString(); - GlobalWinF.MainForm.SaveStateFile(path, path, true); + Global.MainForm.SaveStateFile(path, path, true); } } @@ -3271,7 +3265,7 @@ namespace BizHawk.MultiClient if (x < 0 || x > 9) return; - GlobalWinF.MainForm.SaveState("QuickSave" + x.ToString()); + Global.MainForm.SaveState("QuickSave" + x.ToString()); } #endregion @@ -3320,42 +3314,42 @@ namespace BizHawk.MultiClient public void snes_setlayer_bg_1(bool value) { - GlobalWinF.MainForm.SNES_ToggleBG1(value); + Global.MainForm.SNES_ToggleBG1(value); } public void snes_setlayer_bg_2(bool value) { - GlobalWinF.MainForm.SNES_ToggleBG2(value); + Global.MainForm.SNES_ToggleBG2(value); } public void snes_setlayer_bg_3(bool value) { - GlobalWinF.MainForm.SNES_ToggleBG3(value); + Global.MainForm.SNES_ToggleBG3(value); } public void snes_setlayer_bg_4(bool value) { - GlobalWinF.MainForm.SNES_ToggleBG4(value); + Global.MainForm.SNES_ToggleBG4(value); } public void snes_setlayer_obj_1(bool value) { - GlobalWinF.MainForm.SNES_ToggleOBJ1(value); + Global.MainForm.SNES_ToggleOBJ1(value); } public void snes_setlayer_obj_2(bool value) { - GlobalWinF.MainForm.SNES_ToggleOBJ2(value); + Global.MainForm.SNES_ToggleOBJ2(value); } public void snes_setlayer_obj_3(bool value) { - GlobalWinF.MainForm.SNES_ToggleOBJ3(value); + Global.MainForm.SNES_ToggleOBJ3(value); } public void snes_setlayer_obj_4(bool value) { - GlobalWinF.MainForm.SNES_ToggleOBJ4(value); + Global.MainForm.SNES_ToggleOBJ4(value); } #endregion diff --git a/BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.cs b/BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.cs index 74ba8dbff4..7a55302702 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.cs @@ -30,7 +30,7 @@ namespace BizHawk.MultiClient { FunctionView.Items.Clear(); - List nlfs = GlobalWinF.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.OrderBy(x => x.Event).ThenBy(x => x.Name).ToList(); + List nlfs = Global.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.OrderBy(x => x.Event).ThenBy(x => x.Name).ToList(); foreach (NamedLuaFunction nlf in nlfs) { ListViewItem item = new ListViewItem { Text = nlf.Event }; @@ -55,7 +55,7 @@ namespace BizHawk.MultiClient ListView.SelectedIndexCollection indexes = FunctionView.SelectedIndices; if (indexes.Count > 0) { - GlobalWinF.MainForm.LuaConsole1.LuaImp.RegisteredFunctions[indexes[0]].Call(); + Global.MainForm.LuaConsole1.LuaImp.RegisteredFunctions[indexes[0]].Call(); } } @@ -64,8 +64,8 @@ namespace BizHawk.MultiClient ListView.SelectedIndexCollection indexes = FunctionView.SelectedIndices; if (indexes.Count > 0) { - NamedLuaFunction nlf = GlobalWinF.MainForm.LuaConsole1.LuaImp.RegisteredFunctions[indexes[0]]; - GlobalWinF.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Remove(nlf); + NamedLuaFunction nlf = Global.MainForm.LuaConsole1.LuaImp.RegisteredFunctions[indexes[0]]; + Global.MainForm.LuaConsole1.LuaImp.RegisteredFunctions.Remove(nlf); PopulateListView(); } } diff --git a/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs b/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs index 234b33c50b..9dae008d77 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs @@ -1,7 +1,5 @@ using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient.tools { enum BoxType { ALL, SIGNED, UNSIGNED, HEX }; diff --git a/BizHawk.MultiClient/tools/Lua/LuaWinform.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaWinform.Designer.cs index 3f4725fb72..97924bcf96 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaWinform.Designer.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaWinform.Designer.cs @@ -1,4 +1,4 @@ -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient.tools { partial class LuaWinform { diff --git a/BizHawk.MultiClient/tools/Lua/LuaWinform.cs b/BizHawk.MultiClient/tools/Lua/LuaWinform.cs index 31ef3c08db..0274036160 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaWinform.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaWinform.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Windows.Forms; using LuaInterface; -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient.tools { public partial class LuaWinform : Form { @@ -22,7 +22,7 @@ namespace BizHawk.MultiClient public void CloseThis() { - GlobalWinF.MainForm.LuaConsole1.LuaImp.WindowClosed(Handle); + Global.MainForm.LuaConsole1.LuaImp.WindowClosed(Handle); } public void DoLuaEvent(IntPtr handle) diff --git a/BizHawk.MultiClient/tools/Lua/LuaWriter.cs b/BizHawk.MultiClient/tools/Lua/LuaWriter.cs index 9543a4acea..a7b6ce86de 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaWriter.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaWriter.cs @@ -6,8 +6,7 @@ using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using System.IO; - -using BizHawk.Client.Common; +using BizHawk.MultiClient.tools; namespace BizHawk.MultiClient { @@ -434,7 +433,7 @@ namespace BizHawk.MultiClient private void GenerateLibraryRegex() { StringBuilder list = new StringBuilder(); - List Libs = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.GetLibraryList(); + List Libs = Global.MainForm.LuaConsole1.LuaImp.docs.GetLibraryList(); for (int i = 0; i < Libs.Count; i++) { list.Append(Libs[i]); @@ -577,9 +576,9 @@ namespace BizHawk.MultiClient } sfd.Filter = "Watch Files (*.lua)|*.lua|All Files|*.*"; sfd.RestoreDirectory = true; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return null; var file = new FileInfo(sfd.FileName); @@ -659,7 +658,7 @@ namespace BizHawk.MultiClient string currentword = CurrentWord(); if (IsLibraryWord(currentword)) { - List libfunctions = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.GetFunctionsByLibrary(currentword); + List libfunctions = Global.MainForm.LuaConsole1.LuaImp.docs.GetFunctionsByLibrary(currentword); // Position autocomplete box near the cursor's current position int x = LuaText.GetPositionFromCharIndex(LuaText.SelectionStart).X + LuaText.Location.X + 5; @@ -783,7 +782,7 @@ namespace BizHawk.MultiClient private bool IsLibraryWord(string word) { - List Libs = GlobalWinF.MainForm.LuaConsole1.LuaImp.docs.GetLibraryList(); + List Libs = Global.MainForm.LuaConsole1.LuaImp.docs.GetLibraryList(); if (Libs.Contains(word)) { return true; diff --git a/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.Designer.cs index 6ac03000b9..470e28603a 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.Designer.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.Designer.cs @@ -1,4 +1,4 @@ -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient.tools { partial class LuaWriterColorConfig { diff --git a/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs index 850ce6b138..0af412f0d5 100644 --- a/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs +++ b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs @@ -2,42 +2,40 @@ using System.Drawing; using System.Windows.Forms; -using BizHawk.Client.Common; - -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient.tools { public partial class LuaWriterColorConfig : Form { - //Get existing global Lua color settings + //Get existing global Lua color settings int TextColor = Global.Config.LuaDefaultTextColor; - int KeyWordColor = Global.Config.LuaKeyWordColor; - int CommentColor = Global.Config.LuaCommentColor; - int StringColor = Global.Config.LuaStringColor; - int SymbolColor = Global.Config.LuaSymbolColor; - int LibraryColor = Global.Config.LuaLibraryColor; + int KeyWordColor = Global.Config.LuaKeyWordColor; + int CommentColor = Global.Config.LuaCommentColor; + int StringColor = Global.Config.LuaStringColor; + int SymbolColor = Global.Config.LuaSymbolColor; + int LibraryColor = Global.Config.LuaLibraryColor; public LuaWriterColorConfig() { InitializeComponent(); } - private void LuaWriterColorConfig_Load(object sender, EventArgs e) - { - //Set the initial colors into the panels + private void LuaWriterColorConfig_Load(object sender, EventArgs e) + { + //Set the initial colors into the panels SetTextColor(TextColor); - SetKeyWordColor(KeyWordColor); - SetCommentColor(CommentColor); - SetStringColor(StringColor); - SetSymbolColor(SymbolColor); - SetLibraryColor(LibraryColor); + SetKeyWordColor(KeyWordColor); + SetCommentColor(CommentColor); + SetStringColor(StringColor); + SetSymbolColor(SymbolColor); + SetLibraryColor(LibraryColor); BoldText.Checked = Global.Config.LuaDefaultTextBold; - BoldKeyWords.Checked = Global.Config.LuaKeyWordBold; - BoldComments.Checked = Global.Config.LuaCommentBold; - BoldStrings.Checked = Global.Config.LuaStringBold; - BoldSymbols.Checked = Global.Config.LuaSymbolBold; - BoldLibraries.Checked = Global.Config.LuaLibraryBold; - } + BoldKeyWords.Checked = Global.Config.LuaKeyWordBold; + BoldComments.Checked = Global.Config.LuaCommentBold; + BoldStrings.Checked = Global.Config.LuaStringBold; + BoldSymbols.Checked = Global.Config.LuaSymbolBold; + BoldLibraries.Checked = Global.Config.LuaLibraryBold; + } private void SetTextColor(int color) { @@ -45,35 +43,35 @@ namespace BizHawk.MultiClient panelText.BackColor = Color.FromArgb(color); //Update panel color with new selection } - private void SetKeyWordColor(int color) - { - KeyWordColor = color; //Set new color - panelKeyWord.BackColor = Color.FromArgb(color); //Update panel color with new selection - } + private void SetKeyWordColor(int color) + { + KeyWordColor = color; //Set new color + panelKeyWord.BackColor = Color.FromArgb(color); //Update panel color with new selection + } - private void SetCommentColor(int color) - { - CommentColor = color; //Set new color - panelComment.BackColor = Color.FromArgb(color); //Update panel color with new selection - } + private void SetCommentColor(int color) + { + CommentColor = color; //Set new color + panelComment.BackColor = Color.FromArgb(color); //Update panel color with new selection + } - private void SetStringColor(int color) - { - StringColor = color; //Set new color - panelString.BackColor = Color.FromArgb(color); //Update panel color with new selection - } + private void SetStringColor(int color) + { + StringColor = color; //Set new color + panelString.BackColor = Color.FromArgb(color); //Update panel color with new selection + } - private void SetSymbolColor(int color) - { - SymbolColor = color; //Set new color - panelSymbol.BackColor = Color.FromArgb(color); //Update panel color with new selection - } + private void SetSymbolColor(int color) + { + SymbolColor = color; //Set new color + panelSymbol.BackColor = Color.FromArgb(color); //Update panel color with new selection + } - private void SetLibraryColor(int color) - { - LibraryColor = color; //Set new color + private void SetLibraryColor(int color) + { + LibraryColor = color; //Set new color panelLibrary.BackColor = Color.FromArgb(color); //Update panel color with new selection - } + } //Pop up color dialog when double-clicked private void panelText_DoubleClick(object sender, EventArgs e) @@ -84,93 +82,93 @@ namespace BizHawk.MultiClient } } - //Pop up color dialog when double-clicked - private void panelKeyWord_DoubleClick(object sender, EventArgs e) + //Pop up color dialog when double-clicked + private void panelKeyWord_DoubleClick(object sender, EventArgs e) + { + if (KeyWordColorDialog.ShowDialog() == DialogResult.OK) + { + SetKeyWordColor(KeyWordColorDialog.Color.ToArgb()); + } + } + + //Pop up color dialog when double-clicked + private void panelComment_DoubleClick(object sender, EventArgs e) + { + if (CommentColorDialog.ShowDialog() == DialogResult.OK) + { + SetCommentColor(CommentColorDialog.Color.ToArgb()); + } + } + + //Pop up color dialog when double-clicked + private void panelString_DoubleClick(object sender, EventArgs e) + { + if (StringColorDialog.ShowDialog() == DialogResult.OK) + { + SetStringColor(StringColorDialog.Color.ToArgb()); + } + } + + //Pop up color dialog when double-clicked + private void panelSymbol_DoubleClick(object sender, EventArgs e) + { + if (SymbolColorDialog.ShowDialog() == DialogResult.OK) + { + SetSymbolColor(SymbolColorDialog.Color.ToArgb()); + } + } + + //Pop up color dialog when double-clicked + private void panelLibrary_DoubleClick(object sender, EventArgs e) + { + if (LibraryColorDialog.ShowDialog() == DialogResult.OK) + { + SetLibraryColor(LibraryColorDialog.Color.ToArgb()); + LibraryColorDialog.Color = Color.FromArgb(10349567); + } + } + + private void OK_Click(object sender, EventArgs e) { - if (KeyWordColorDialog.ShowDialog() == DialogResult.OK) - { - SetKeyWordColor(KeyWordColorDialog.Color.ToArgb()); - } + SaveData(); //Save the chosen settings + DialogResult = DialogResult.OK; + Close(); } - //Pop up color dialog when double-clicked - private void panelComment_DoubleClick(object sender, EventArgs e) - { - if (CommentColorDialog.ShowDialog() == DialogResult.OK) - { - SetCommentColor(CommentColorDialog.Color.ToArgb()); - } - } - - //Pop up color dialog when double-clicked - private void panelString_DoubleClick(object sender, EventArgs e) - { - if (StringColorDialog.ShowDialog() == DialogResult.OK) - { - SetStringColor(StringColorDialog.Color.ToArgb()); - } - } - - //Pop up color dialog when double-clicked - private void panelSymbol_DoubleClick(object sender, EventArgs e) - { - if (SymbolColorDialog.ShowDialog() == DialogResult.OK) - { - SetSymbolColor(SymbolColorDialog.Color.ToArgb()); - } - } - - //Pop up color dialog when double-clicked - private void panelLibrary_DoubleClick(object sender, EventArgs e) - { - if (LibraryColorDialog.ShowDialog() == DialogResult.OK) - { - SetLibraryColor(LibraryColorDialog.Color.ToArgb()); - LibraryColorDialog.Color = Color.FromArgb(10349567); - } - } - - private void OK_Click(object sender, EventArgs e) - { - SaveData(); //Save the chosen settings - DialogResult = DialogResult.OK; - Close(); - } - - private void SaveData() - { - //Colors + private void SaveData() + { + //Colors Global.Config.LuaDefaultTextColor = TextColor; - Global.Config.LuaKeyWordColor = KeyWordColor; - Global.Config.LuaCommentColor = CommentColor; - Global.Config.LuaStringColor = StringColor; - Global.Config.LuaSymbolColor = SymbolColor; - Global.Config.LuaLibraryColor = LibraryColor; - - //Bold + Global.Config.LuaKeyWordColor = KeyWordColor; + Global.Config.LuaCommentColor = CommentColor; + Global.Config.LuaStringColor = StringColor; + Global.Config.LuaSymbolColor = SymbolColor; + Global.Config.LuaLibraryColor = LibraryColor; + + //Bold Global.Config.LuaDefaultTextBold = BoldText.Checked; - Global.Config.LuaKeyWordBold = BoldKeyWords.Checked; - Global.Config.LuaCommentBold = BoldComments.Checked; - Global.Config.LuaStringBold = BoldStrings.Checked; - Global.Config.LuaSymbolBold = BoldSymbols.Checked; - Global.Config.LuaLibraryBold = BoldLibraries.Checked; - } + Global.Config.LuaKeyWordBold = BoldKeyWords.Checked; + Global.Config.LuaCommentBold = BoldComments.Checked; + Global.Config.LuaStringBold = BoldStrings.Checked; + Global.Config.LuaSymbolBold = BoldSymbols.Checked; + Global.Config.LuaLibraryBold = BoldLibraries.Checked; + } - private void buttonDefaults_Click(object sender, EventArgs e) - { + private void buttonDefaults_Click(object sender, EventArgs e) + { SetTextColor(-16777216); - SetKeyWordColor(-16776961); - SetCommentColor(-16744448); - SetStringColor(-8355712); - SetSymbolColor(-16777216); + SetKeyWordColor(-16776961); + SetCommentColor(-16744448); + SetStringColor(-8355712); + SetSymbolColor(-16777216); SetLibraryColor(-16711681); BoldText.Checked = false; - BoldKeyWords.Checked = false; - BoldComments.Checked = false; - BoldStrings.Checked = false; - BoldSymbols.Checked = false; - BoldLibraries.Checked = false; - } - } + BoldKeyWords.Checked = false; + BoldComments.Checked = false; + BoldStrings.Checked = false; + BoldSymbols.Checked = false; + BoldLibraries.Checked = false; + } + } } diff --git a/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs b/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs index 7a3c6bfab2..9248d55f48 100644 --- a/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs +++ b/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class N64VideoPluginconfig : Form @@ -40,7 +38,7 @@ namespace BizHawk.MultiClient Global.Config.N64VideoSizeX = Int32.Parse(strArr[0].Trim()); Global.Config.N64VideoSizeY = Int32.Parse(strArr[1].Trim()); Global.Config.N64VidPlugin = PluginComboBox.Text; - GlobalWinF.MainForm.FlagNeedsReboot(); //TODO: this won't always be necessary, keep that in mind + Global.MainForm.FlagNeedsReboot(); //TODO: this won't always be necessary, keep that in mind //Rice Global.Config.RicePlugin.NormalAlphaBlender = RiceNormalAlphaBlender_CB.Checked; diff --git a/BizHawk.MultiClient/tools/NES/NESDebugger.cs b/BizHawk.MultiClient/tools/NES/NESDebugger.cs index 5933fb2d9b..94f9cd1482 100644 --- a/BizHawk.MultiClient/tools/NES/NESDebugger.cs +++ b/BizHawk.MultiClient/tools/NES/NESDebugger.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Windows.Forms; using BizHawk.Emulation.Consoles.Nintendo; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class NESDebugger : Form diff --git a/BizHawk.MultiClient/tools/NES/NESGameGenie.cs b/BizHawk.MultiClient/tools/NES/NESGameGenie.cs index 8d21a50ae1..2776e2b83b 100644 --- a/BizHawk.MultiClient/tools/NES/NESGameGenie.cs +++ b/BizHawk.MultiClient/tools/NES/NESGameGenie.cs @@ -3,8 +3,6 @@ using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Globalization; - -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.Nintendo; namespace BizHawk.MultiClient @@ -380,7 +378,7 @@ namespace BizHawk.MultiClient compare, enabled: true)); - GlobalWinF.MainForm.Cheats_UpdateValues(); + Global.MainForm.Cheats_UpdateValues(); } } diff --git a/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs b/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs index e80fc0405d..828d3842d9 100644 --- a/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs +++ b/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using BizHawk.Emulation.Consoles.Nintendo; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class NESGraphicsConfig : Form @@ -75,7 +73,7 @@ namespace BizHawk.MultiClient { Global.Config.NESPaletteFile = palette.Name; nes.SetPalette(NES.Palettes.Load_FCEUX_Palette(HawkFile.ReadAllBytes(palette.Name))); - GlobalWinF.OSD.AddMessage("Palette file loaded: " + palette.Name); + Global.OSD.AddMessage("Palette file loaded: " + palette.Name); } } } @@ -83,7 +81,7 @@ namespace BizHawk.MultiClient { Global.Config.NESPaletteFile = ""; nes.SetPalette(NES.Palettes.FCEUX_Standard); - GlobalWinF.OSD.AddMessage("Standard Palette set"); + Global.OSD.AddMessage("Standard Palette set"); } Global.Config.NTSC_NESTopLine = (int)NTSC_FirstLineNumeric.Value; diff --git a/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs b/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs index 7e5347fdfb..d985921586 100644 --- a/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs +++ b/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs @@ -4,8 +4,6 @@ using System.Drawing.Imaging; using System.Windows.Forms; using BizHawk.Emulation.Consoles.Nintendo; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class NESNameTableViewer : Form diff --git a/BizHawk.MultiClient/tools/NES/NESPPU.cs b/BizHawk.MultiClient/tools/NES/NESPPU.cs index 561b3a3b96..5d22c8be2d 100644 --- a/BizHawk.MultiClient/tools/NES/NESPPU.cs +++ b/BizHawk.MultiClient/tools/NES/NESPPU.cs @@ -2,8 +2,6 @@ using System.Drawing; using System.Windows.Forms; using System.Globalization; - -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.Nintendo; namespace BizHawk.MultiClient diff --git a/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs b/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs index e6000f8ca2..572054e1ae 100644 --- a/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs +++ b/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs @@ -1,8 +1,6 @@ using System; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class NESSoundConfig : Form @@ -47,7 +45,7 @@ namespace BizHawk.MultiClient Global.Config.NESTriangle = tr; Global.Config.NESNoise = no; Global.Config.NESDMC = dmc; - GlobalWinF.MainForm.SetNESSoundChannels(); + Global.MainForm.SetNESSoundChannels(); Close(); } @@ -77,35 +75,35 @@ namespace BizHawk.MultiClient { label6.Text = trackBar1.Value.ToString(); Global.Config.NESSquare1 = trackBar1.Value; - GlobalWinF.MainForm.SetNESSoundChannels(); + Global.MainForm.SetNESSoundChannels(); } private void trackBar2_ValueChanged(object sender, EventArgs e) { label7.Text = trackBar2.Value.ToString(); Global.Config.NESSquare2 = trackBar2.Value; - GlobalWinF.MainForm.SetNESSoundChannels(); + Global.MainForm.SetNESSoundChannels(); } private void trackBar3_ValueChanged(object sender, EventArgs e) { label8.Text = trackBar3.Value.ToString(); Global.Config.NESTriangle = trackBar3.Value; - GlobalWinF.MainForm.SetNESSoundChannels(); + Global.MainForm.SetNESSoundChannels(); } private void trackBar4_ValueChanged(object sender, EventArgs e) { label9.Text = trackBar4.Value.ToString(); Global.Config.NESNoise = trackBar4.Value; - GlobalWinF.MainForm.SetNESSoundChannels(); + Global.MainForm.SetNESSoundChannels(); } private void trackBar5_ValueChanged(object sender, EventArgs e) { label10.Text = trackBar5.Value.ToString(); Global.Config.NESDMC = trackBar5.Value; - GlobalWinF.MainForm.SetNESSoundChannels(); + Global.MainForm.SetNESSoundChannels(); } } } diff --git a/BizHawk.MultiClient/tools/NES/NameTableViewer.cs b/BizHawk.MultiClient/tools/NES/NameTableViewer.cs index 4815187a33..916d2f0ef9 100644 --- a/BizHawk.MultiClient/tools/NES/NameTableViewer.cs +++ b/BizHawk.MultiClient/tools/NES/NameTableViewer.cs @@ -3,8 +3,6 @@ using System.Windows.Forms; using System.IO; using System.Drawing.Imaging; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public sealed class NameTableViewer : Control @@ -76,9 +74,9 @@ namespace BizHawk.MultiClient RestoreDirectory = true }; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) { return; diff --git a/BizHawk.MultiClient/tools/NES/PaletteViewer.cs b/BizHawk.MultiClient/tools/NES/PaletteViewer.cs index c0e9b2c542..66da77995c 100644 --- a/BizHawk.MultiClient/tools/NES/PaletteViewer.cs +++ b/BizHawk.MultiClient/tools/NES/PaletteViewer.cs @@ -3,8 +3,6 @@ using System.Windows.Forms; using System.IO; using System.Drawing.Imaging; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public sealed class PaletteViewer : Control @@ -83,9 +81,9 @@ namespace BizHawk.MultiClient RestoreDirectory = true }; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; diff --git a/BizHawk.MultiClient/tools/NES/PatternViewer.cs b/BizHawk.MultiClient/tools/NES/PatternViewer.cs index 6553719bae..181d18dabd 100644 --- a/BizHawk.MultiClient/tools/NES/PatternViewer.cs +++ b/BizHawk.MultiClient/tools/NES/PatternViewer.cs @@ -3,8 +3,6 @@ using System.Windows.Forms; using System.IO; using System.Drawing.Imaging; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public sealed class PatternViewer : Control @@ -44,9 +42,9 @@ namespace BizHawk.MultiClient RestoreDirectory = true }; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; diff --git a/BizHawk.MultiClient/tools/NES/SpriteViewer.cs b/BizHawk.MultiClient/tools/NES/SpriteViewer.cs index 0224b717de..973dc11252 100644 --- a/BizHawk.MultiClient/tools/NES/SpriteViewer.cs +++ b/BizHawk.MultiClient/tools/NES/SpriteViewer.cs @@ -3,8 +3,6 @@ using System.Windows.Forms; using System.IO; using System.Drawing.Imaging; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public sealed class SpriteViewer : Control @@ -49,9 +47,9 @@ namespace BizHawk.MultiClient RestoreDirectory = true }; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return; diff --git a/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs b/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs index 8e204e400a..c63caafad7 100644 --- a/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs +++ b/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs @@ -2,8 +2,6 @@ using System.Drawing; using System.Windows.Forms; using System.Drawing.Imaging; - -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.TurboGrafx; namespace BizHawk.MultiClient diff --git a/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs b/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs index f004263f41..7c94bb52eb 100644 --- a/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs +++ b/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs @@ -1,8 +1,6 @@ using System; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class PCEGraphicsConfig : Form diff --git a/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs b/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs index 5ee17fd91a..980c85ae08 100644 --- a/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs +++ b/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs @@ -1,8 +1,6 @@ using System; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class SMSGraphicsConfig : Form diff --git a/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs b/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs index 43dc1edaeb..dbb198e149 100644 --- a/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs +++ b/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs @@ -6,8 +6,6 @@ using System.Globalization; using System.Text.RegularExpressions; using BizHawk.Emulation.Consoles.Nintendo.SNES; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class SNESGameGenie : Form @@ -15,7 +13,7 @@ namespace BizHawk.MultiClient private readonly Dictionary GameGenieTable = new Dictionary(); private bool Processing = false; - public SNESGameGenie() + public SNESGameGenie() { InitializeComponent(); Closing += (o, e) => SaveConfigSettings(); @@ -347,8 +345,6 @@ namespace BizHawk.MultiClient compare: null, enabled: true )); - - ToolHelpers.UpdateCheatRelatedTools(); } } diff --git a/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs b/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs index 2245f8dbfe..60e924b63d 100644 --- a/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs +++ b/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs @@ -28,8 +28,6 @@ using System.Collections.Generic; using System.Drawing; using System.Reflection; using System.Windows.Forms; - -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.Nintendo.SNES; using BizHawk.Core; @@ -1386,7 +1384,7 @@ namespace BizHawk.MultiClient suppression = false; } - GlobalWinF.MainForm.SyncCoreCommInputSignals(); + Global.MainForm.SyncCoreCommInputSignals(); } private void lblEnPrio0_Click(object sender, EventArgs e) diff --git a/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.Designer.cs b/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.Designer.cs index 0224ae2a20..14482f5486 100644 --- a/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.Designer.cs +++ b/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.Designer.cs @@ -1,4 +1,4 @@ -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient.SATTools { partial class SaturnPrefs { diff --git a/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs b/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs index 13469d1357..c33d9a2dee 100644 --- a/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs +++ b/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs @@ -7,9 +7,7 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient.SATTools { public partial class SaturnPrefs : Form { diff --git a/BizHawk.MultiClient/tools/StateVisualizer.cs b/BizHawk.MultiClient/tools/StateVisualizer.cs index 07694371fe..827004f2df 100644 --- a/BizHawk.MultiClient/tools/StateVisualizer.cs +++ b/BizHawk.MultiClient/tools/StateVisualizer.cs @@ -2,8 +2,6 @@ using System.Linq; using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class StateVisualizer @@ -21,21 +19,13 @@ namespace BizHawk.MultiClient string path = PathManager.SaveStatePrefix(Global.Game) + "." + name + ".State"; if (File.Exists(path)) { - Movie m = new Movie(GlobalWinF.MainForm.GetEmuVersion()); - LoadLogFromSavestateText(m, path); + Movie m = new Movie(); + m.LoadLogFromSavestateText(path); AddLog(m.LogDump, i); } } } - private void LoadLogFromSavestateText(Movie movie, string path) - { - using (var reader = new StreamReader(path)) - { - movie.LoadLogFromSavestateText(reader, Global.MovieSession.MultiTrack.IsActive); - } - } - public int TimeLineCount { get diff --git a/BizHawk.MultiClient/tools/TAStudio.Designer.cs b/BizHawk.MultiClient/tools/TAStudio.Designer.cs index 88152ad8b0..5d41ba3b02 100644 --- a/BizHawk.MultiClient/tools/TAStudio.Designer.cs +++ b/BizHawk.MultiClient/tools/TAStudio.Designer.cs @@ -1,130 +1,128 @@ -using BizHawk.Client.Common; - -namespace BizHawk.MultiClient +namespace BizHawk.MultiClient { - partial class TAStudio - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; + partial class TAStudio + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } - Global.MovieSession.Movie.StateCapturing = false; //TODO: This doesn't go here, extend this method in the .cs file + Global.MovieSession.Movie.StateCapturing = false; base.Dispose(disposing); - } + } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TAStudio)); - this.menuStrip1 = new MenuStripEx(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.newProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.openProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveProjectAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.recentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.nToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.importTASFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.clearToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); - this.deleteFramesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.cloneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.insertFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.insertNumFramesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteInsertToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); - this.truncateMovieToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.clearVirtualPadsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.autoloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.updatePadsOnMovePlaybackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.restoreWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.ReadOnlyCheckBox = new System.Windows.Forms.CheckBox(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); - this.clearToolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); - this.ContextMenu_Delete = new System.Windows.Forms.ToolStripMenuItem(); - this.cloneToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.ContextMenu_Insert = new System.Windows.Forms.ToolStripMenuItem(); - this.insertFramesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripItem_SelectAll = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); - this.truncateMovieToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.ClipboardDisplay = new System.Windows.Forms.Label(); - this.SelectionDisplay = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.toolStrip1 = new ToolStripEx(); - this.RewindToBeginning = new System.Windows.Forms.ToolStripButton(); - this.RewindButton = new System.Windows.Forms.ToolStripButton(); - this.PauseButton = new System.Windows.Forms.ToolStripButton(); - this.FrameAdvanceButton = new System.Windows.Forms.ToolStripButton(); - this.FastForward = new System.Windows.Forms.ToolStripButton(); - this.TurboFastForward = new System.Windows.Forms.ToolStripButton(); - this.FastFowardToEnd = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); - this.StopButton = new System.Windows.Forms.ToolStripButton(); - this.TASView = new BizHawk.VirtualListView(); - this.Frame = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.Log = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.VisualizerBox = new System.Windows.Forms.GroupBox(); - this.button1 = new System.Windows.Forms.Button(); - this.alwaysOnTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.menuStrip1.SuspendLayout(); - this.contextMenuStrip1.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.toolStrip1.SuspendLayout(); - this.VisualizerBox.SuspendLayout(); - this.SuspendLayout(); - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TAStudio)); + this.menuStrip1 = new MenuStripEx(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.newProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveProjectAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.recentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.nToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.importTASFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.clearToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.deleteFramesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cloneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.insertFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.insertNumFramesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteInsertToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.truncateMovieToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.clearVirtualPadsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.autoloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.updatePadsOnMovePlaybackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.restoreWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ReadOnlyCheckBox = new System.Windows.Forms.CheckBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.clearToolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); + this.ContextMenu_Delete = new System.Windows.Forms.ToolStripMenuItem(); + this.cloneToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.ContextMenu_Insert = new System.Windows.Forms.ToolStripMenuItem(); + this.insertFramesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripItem_SelectAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.truncateMovieToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.ClipboardDisplay = new System.Windows.Forms.Label(); + this.SelectionDisplay = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.toolStrip1 = new ToolStripEx(); + this.RewindToBeginning = new System.Windows.Forms.ToolStripButton(); + this.RewindButton = new System.Windows.Forms.ToolStripButton(); + this.PauseButton = new System.Windows.Forms.ToolStripButton(); + this.FrameAdvanceButton = new System.Windows.Forms.ToolStripButton(); + this.FastForward = new System.Windows.Forms.ToolStripButton(); + this.TurboFastForward = new System.Windows.Forms.ToolStripButton(); + this.FastFowardToEnd = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.StopButton = new System.Windows.Forms.ToolStripButton(); + this.TASView = new BizHawk.VirtualListView(); + this.Frame = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.Log = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.VisualizerBox = new System.Windows.Forms.GroupBox(); + this.button1 = new System.Windows.Forms.Button(); + this.alwaysOnTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip1.SuspendLayout(); + this.contextMenuStrip1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.VisualizerBox.SuspendLayout(); + this.SuspendLayout(); + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, this.editToolStripMenuItem, this.settingsToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(586, 24); - this.menuStrip1.TabIndex = 0; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(586, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.newProjectToolStripMenuItem, this.openProjectToolStripMenuItem, this.saveProjectToolStripMenuItem, @@ -134,95 +132,95 @@ namespace BizHawk.MultiClient this.importTASFileToolStripMenuItem, this.toolStripSeparator2, this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // newProjectToolStripMenuItem - // - this.newProjectToolStripMenuItem.Name = "newProjectToolStripMenuItem"; - this.newProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); - this.newProjectToolStripMenuItem.Size = new System.Drawing.Size(186, 22); - this.newProjectToolStripMenuItem.Text = "New Project"; - this.newProjectToolStripMenuItem.Click += new System.EventHandler(this.newProjectToolStripMenuItem_Click); - // - // openProjectToolStripMenuItem - // - this.openProjectToolStripMenuItem.Name = "openProjectToolStripMenuItem"; - this.openProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); - this.openProjectToolStripMenuItem.Size = new System.Drawing.Size(186, 22); - this.openProjectToolStripMenuItem.Text = "&Open Project"; - this.openProjectToolStripMenuItem.Click += new System.EventHandler(this.openProjectToolStripMenuItem_Click); - // - // saveProjectToolStripMenuItem - // - this.saveProjectToolStripMenuItem.Name = "saveProjectToolStripMenuItem"; - this.saveProjectToolStripMenuItem.Size = new System.Drawing.Size(186, 22); - this.saveProjectToolStripMenuItem.Text = "&Save Project"; - this.saveProjectToolStripMenuItem.Click += new System.EventHandler(this.saveProjectToolStripMenuItem_Click); - // - // saveProjectAsToolStripMenuItem - // - this.saveProjectAsToolStripMenuItem.Name = "saveProjectAsToolStripMenuItem"; - this.saveProjectAsToolStripMenuItem.Size = new System.Drawing.Size(186, 22); - this.saveProjectAsToolStripMenuItem.Text = "Save Project As"; - this.saveProjectAsToolStripMenuItem.Click += new System.EventHandler(this.saveProjectAsToolStripMenuItem_Click); - // - // recentToolStripMenuItem - // - this.recentToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "&File"; + // + // newProjectToolStripMenuItem + // + this.newProjectToolStripMenuItem.Name = "newProjectToolStripMenuItem"; + this.newProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); + this.newProjectToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.newProjectToolStripMenuItem.Text = "New Project"; + this.newProjectToolStripMenuItem.Click += new System.EventHandler(this.newProjectToolStripMenuItem_Click); + // + // openProjectToolStripMenuItem + // + this.openProjectToolStripMenuItem.Name = "openProjectToolStripMenuItem"; + this.openProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); + this.openProjectToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.openProjectToolStripMenuItem.Text = "&Open Project"; + this.openProjectToolStripMenuItem.Click += new System.EventHandler(this.openProjectToolStripMenuItem_Click); + // + // saveProjectToolStripMenuItem + // + this.saveProjectToolStripMenuItem.Name = "saveProjectToolStripMenuItem"; + this.saveProjectToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.saveProjectToolStripMenuItem.Text = "&Save Project"; + this.saveProjectToolStripMenuItem.Click += new System.EventHandler(this.saveProjectToolStripMenuItem_Click); + // + // saveProjectAsToolStripMenuItem + // + this.saveProjectAsToolStripMenuItem.Name = "saveProjectAsToolStripMenuItem"; + this.saveProjectAsToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.saveProjectAsToolStripMenuItem.Text = "Save Project As"; + this.saveProjectAsToolStripMenuItem.Click += new System.EventHandler(this.saveProjectAsToolStripMenuItem_Click); + // + // recentToolStripMenuItem + // + this.recentToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.nToolStripMenuItem, this.toolStripSeparator3, this.clearToolStripMenuItem}); - this.recentToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Recent; - this.recentToolStripMenuItem.Name = "recentToolStripMenuItem"; - this.recentToolStripMenuItem.Size = new System.Drawing.Size(186, 22); - this.recentToolStripMenuItem.Text = "Recent"; - // - // nToolStripMenuItem - // - this.nToolStripMenuItem.Name = "nToolStripMenuItem"; - this.nToolStripMenuItem.Size = new System.Drawing.Size(103, 22); - this.nToolStripMenuItem.Text = "None"; - // - // toolStripSeparator3 - // - this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(100, 6); - // - // clearToolStripMenuItem - // - this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; - this.clearToolStripMenuItem.Size = new System.Drawing.Size(103, 22); - this.clearToolStripMenuItem.Text = "Clear"; - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(183, 6); - // - // importTASFileToolStripMenuItem - // - this.importTASFileToolStripMenuItem.Name = "importTASFileToolStripMenuItem"; - this.importTASFileToolStripMenuItem.Size = new System.Drawing.Size(186, 22); - this.importTASFileToolStripMenuItem.Text = "Import TAS file"; - // - // toolStripSeparator2 - // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(183, 6); - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4))); - this.exitToolStripMenuItem.Size = new System.Drawing.Size(186, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // editToolStripMenuItem - // - this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.recentToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Recent; + this.recentToolStripMenuItem.Name = "recentToolStripMenuItem"; + this.recentToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.recentToolStripMenuItem.Text = "Recent"; + // + // nToolStripMenuItem + // + this.nToolStripMenuItem.Name = "nToolStripMenuItem"; + this.nToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.nToolStripMenuItem.Text = "None"; + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(100, 6); + // + // clearToolStripMenuItem + // + this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; + this.clearToolStripMenuItem.Size = new System.Drawing.Size(103, 22); + this.clearToolStripMenuItem.Text = "Clear"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(183, 6); + // + // importTASFileToolStripMenuItem + // + this.importTASFileToolStripMenuItem.Name = "importTASFileToolStripMenuItem"; + this.importTASFileToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.importTASFileToolStripMenuItem.Text = "Import TAS file"; + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(183, 6); + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4))); + this.exitToolStripMenuItem.Size = new System.Drawing.Size(186, 22); + this.exitToolStripMenuItem.Text = "E&xit"; + this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); + // + // editToolStripMenuItem + // + this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.clearToolStripMenuItem2, this.deleteFramesToolStripMenuItem, this.cloneToolStripMenuItem, @@ -237,181 +235,181 @@ namespace BizHawk.MultiClient this.toolStripSeparator8, this.truncateMovieToolStripMenuItem, this.clearVirtualPadsToolStripMenuItem}); - this.editToolStripMenuItem.Name = "editToolStripMenuItem"; - this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); - this.editToolStripMenuItem.Text = "&Edit"; - this.editToolStripMenuItem.DropDownOpened += new System.EventHandler(this.editToolStripMenuItem_DropDownOpened); - // - // clearToolStripMenuItem2 - // - this.clearToolStripMenuItem2.Name = "clearToolStripMenuItem2"; - this.clearToolStripMenuItem2.ShortcutKeyDisplayString = "Del"; - this.clearToolStripMenuItem2.Size = new System.Drawing.Size(207, 22); - this.clearToolStripMenuItem2.Text = "Clear"; - this.clearToolStripMenuItem2.Click += new System.EventHandler(this.clearToolStripMenuItem2_Click); - // - // deleteFramesToolStripMenuItem - // - this.deleteFramesToolStripMenuItem.Name = "deleteFramesToolStripMenuItem"; - this.deleteFramesToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete))); - this.deleteFramesToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.deleteFramesToolStripMenuItem.Text = "&Delete"; - this.deleteFramesToolStripMenuItem.Click += new System.EventHandler(this.deleteFramesToolStripMenuItem_Click); - // - // cloneToolStripMenuItem - // - this.cloneToolStripMenuItem.Name = "cloneToolStripMenuItem"; - this.cloneToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert))); - this.cloneToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.cloneToolStripMenuItem.Text = "&Clone"; - this.cloneToolStripMenuItem.Click += new System.EventHandler(this.cloneToolStripMenuItem_Click); - // - // insertFrameToolStripMenuItem - // - this.insertFrameToolStripMenuItem.Name = "insertFrameToolStripMenuItem"; - this.insertFrameToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.Insert))); - this.insertFrameToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.insertFrameToolStripMenuItem.Text = "&Insert"; - this.insertFrameToolStripMenuItem.Click += new System.EventHandler(this.insertFrameToolStripMenuItem_Click); - // - // insertNumFramesToolStripMenuItem - // - this.insertNumFramesToolStripMenuItem.Name = "insertNumFramesToolStripMenuItem"; - this.insertNumFramesToolStripMenuItem.ShortcutKeyDisplayString = "Ins"; - this.insertNumFramesToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.insertNumFramesToolStripMenuItem.Text = "Insert # of Frames"; - this.insertNumFramesToolStripMenuItem.Click += new System.EventHandler(this.insertNumFramesToolStripMenuItem_Click); - // - // toolStripSeparator7 - // - this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(204, 6); - // - // copyToolStripMenuItem - // - this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); - this.copyToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.copyToolStripMenuItem.Text = "Copy"; - this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click); - // - // pasteToolStripMenuItem - // - this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; - this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); - this.pasteToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.pasteToolStripMenuItem.Text = "&Paste"; - this.pasteToolStripMenuItem.Click += new System.EventHandler(this.pasteToolStripMenuItem_Click); - // - // pasteInsertToolStripMenuItem - // - this.pasteInsertToolStripMenuItem.Name = "pasteInsertToolStripMenuItem"; - this.pasteInsertToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.V))); - this.pasteInsertToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.pasteInsertToolStripMenuItem.Text = "&Paste Insert"; - this.pasteInsertToolStripMenuItem.Click += new System.EventHandler(this.pasteInsertToolStripMenuItem_Click); - // - // cutToolStripMenuItem - // - this.cutToolStripMenuItem.Name = "cutToolStripMenuItem"; - this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); - this.cutToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.cutToolStripMenuItem.Text = "&Cut"; - this.cutToolStripMenuItem.Click += new System.EventHandler(this.cutToolStripMenuItem_Click); - // - // selectAllToolStripMenuItem - // - this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; - this.selectAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A))); - this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.selectAllToolStripMenuItem.Text = "Select &All"; - this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click); - // - // toolStripSeparator8 - // - this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.Size = new System.Drawing.Size(204, 6); - // - // truncateMovieToolStripMenuItem - // - this.truncateMovieToolStripMenuItem.Name = "truncateMovieToolStripMenuItem"; - this.truncateMovieToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.truncateMovieToolStripMenuItem.Text = "&Truncate Movie"; - this.truncateMovieToolStripMenuItem.Click += new System.EventHandler(this.truncateMovieToolStripMenuItem_Click); - // - // clearVirtualPadsToolStripMenuItem - // - this.clearVirtualPadsToolStripMenuItem.Name = "clearVirtualPadsToolStripMenuItem"; - this.clearVirtualPadsToolStripMenuItem.Size = new System.Drawing.Size(207, 22); - this.clearVirtualPadsToolStripMenuItem.Text = "Clear controller &holds"; - // - // settingsToolStripMenuItem - // - this.settingsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.editToolStripMenuItem.Name = "editToolStripMenuItem"; + this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); + this.editToolStripMenuItem.Text = "&Edit"; + this.editToolStripMenuItem.DropDownOpened += new System.EventHandler(this.editToolStripMenuItem_DropDownOpened); + // + // clearToolStripMenuItem2 + // + this.clearToolStripMenuItem2.Name = "clearToolStripMenuItem2"; + this.clearToolStripMenuItem2.ShortcutKeyDisplayString = "Del"; + this.clearToolStripMenuItem2.Size = new System.Drawing.Size(207, 22); + this.clearToolStripMenuItem2.Text = "Clear"; + this.clearToolStripMenuItem2.Click += new System.EventHandler(this.clearToolStripMenuItem2_Click); + // + // deleteFramesToolStripMenuItem + // + this.deleteFramesToolStripMenuItem.Name = "deleteFramesToolStripMenuItem"; + this.deleteFramesToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete))); + this.deleteFramesToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.deleteFramesToolStripMenuItem.Text = "&Delete"; + this.deleteFramesToolStripMenuItem.Click += new System.EventHandler(this.deleteFramesToolStripMenuItem_Click); + // + // cloneToolStripMenuItem + // + this.cloneToolStripMenuItem.Name = "cloneToolStripMenuItem"; + this.cloneToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert))); + this.cloneToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.cloneToolStripMenuItem.Text = "&Clone"; + this.cloneToolStripMenuItem.Click += new System.EventHandler(this.cloneToolStripMenuItem_Click); + // + // insertFrameToolStripMenuItem + // + this.insertFrameToolStripMenuItem.Name = "insertFrameToolStripMenuItem"; + this.insertFrameToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.Insert))); + this.insertFrameToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.insertFrameToolStripMenuItem.Text = "&Insert"; + this.insertFrameToolStripMenuItem.Click += new System.EventHandler(this.insertFrameToolStripMenuItem_Click); + // + // insertNumFramesToolStripMenuItem + // + this.insertNumFramesToolStripMenuItem.Name = "insertNumFramesToolStripMenuItem"; + this.insertNumFramesToolStripMenuItem.ShortcutKeyDisplayString = "Ins"; + this.insertNumFramesToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.insertNumFramesToolStripMenuItem.Text = "Insert # of Frames"; + this.insertNumFramesToolStripMenuItem.Click += new System.EventHandler(this.insertNumFramesToolStripMenuItem_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(204, 6); + // + // copyToolStripMenuItem + // + this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; + this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.copyToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.copyToolStripMenuItem.Text = "Copy"; + this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click); + // + // pasteToolStripMenuItem + // + this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; + this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); + this.pasteToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.pasteToolStripMenuItem.Text = "&Paste"; + this.pasteToolStripMenuItem.Click += new System.EventHandler(this.pasteToolStripMenuItem_Click); + // + // pasteInsertToolStripMenuItem + // + this.pasteInsertToolStripMenuItem.Name = "pasteInsertToolStripMenuItem"; + this.pasteInsertToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.V))); + this.pasteInsertToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.pasteInsertToolStripMenuItem.Text = "&Paste Insert"; + this.pasteInsertToolStripMenuItem.Click += new System.EventHandler(this.pasteInsertToolStripMenuItem_Click); + // + // cutToolStripMenuItem + // + this.cutToolStripMenuItem.Name = "cutToolStripMenuItem"; + this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); + this.cutToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.cutToolStripMenuItem.Text = "&Cut"; + this.cutToolStripMenuItem.Click += new System.EventHandler(this.cutToolStripMenuItem_Click); + // + // selectAllToolStripMenuItem + // + this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; + this.selectAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A))); + this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.selectAllToolStripMenuItem.Text = "Select &All"; + this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.Size = new System.Drawing.Size(204, 6); + // + // truncateMovieToolStripMenuItem + // + this.truncateMovieToolStripMenuItem.Name = "truncateMovieToolStripMenuItem"; + this.truncateMovieToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.truncateMovieToolStripMenuItem.Text = "&Truncate Movie"; + this.truncateMovieToolStripMenuItem.Click += new System.EventHandler(this.truncateMovieToolStripMenuItem_Click); + // + // clearVirtualPadsToolStripMenuItem + // + this.clearVirtualPadsToolStripMenuItem.Name = "clearVirtualPadsToolStripMenuItem"; + this.clearVirtualPadsToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.clearVirtualPadsToolStripMenuItem.Text = "Clear controller &holds"; + // + // settingsToolStripMenuItem + // + this.settingsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.saveWindowPositionToolStripMenuItem, this.autoloadToolStripMenuItem, this.updatePadsOnMovePlaybackToolStripMenuItem, this.toolStripSeparator4, this.alwaysOnTopToolStripMenuItem, this.restoreWindowToolStripMenuItem}); - this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; - this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 20); - this.settingsToolStripMenuItem.Text = "&Settings"; - this.settingsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.settingsToolStripMenuItem_DropDownOpened); - // - // saveWindowPositionToolStripMenuItem - // - this.saveWindowPositionToolStripMenuItem.Name = "saveWindowPositionToolStripMenuItem"; - this.saveWindowPositionToolStripMenuItem.Size = new System.Drawing.Size(240, 22); - this.saveWindowPositionToolStripMenuItem.Text = "Save Window Position"; - this.saveWindowPositionToolStripMenuItem.Click += new System.EventHandler(this.saveWindowPositionToolStripMenuItem_Click); - // - // autoloadToolStripMenuItem - // - this.autoloadToolStripMenuItem.Name = "autoloadToolStripMenuItem"; - this.autoloadToolStripMenuItem.Size = new System.Drawing.Size(240, 22); - this.autoloadToolStripMenuItem.Text = "Autoload"; - this.autoloadToolStripMenuItem.Click += new System.EventHandler(this.autoloadToolStripMenuItem_Click); - // - // updatePadsOnMovePlaybackToolStripMenuItem - // - this.updatePadsOnMovePlaybackToolStripMenuItem.Name = "updatePadsOnMovePlaybackToolStripMenuItem"; - this.updatePadsOnMovePlaybackToolStripMenuItem.Size = new System.Drawing.Size(240, 22); - this.updatePadsOnMovePlaybackToolStripMenuItem.Text = "Update Pads on Move playback"; - this.updatePadsOnMovePlaybackToolStripMenuItem.Click += new System.EventHandler(this.updatePadsOnMovePlaybackToolStripMenuItem_Click); - // - // toolStripSeparator4 - // - this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(237, 6); - // - // restoreWindowToolStripMenuItem - // - this.restoreWindowToolStripMenuItem.Name = "restoreWindowToolStripMenuItem"; - this.restoreWindowToolStripMenuItem.Size = new System.Drawing.Size(240, 22); - this.restoreWindowToolStripMenuItem.Text = "Restore Default Settings"; - this.restoreWindowToolStripMenuItem.Click += new System.EventHandler(this.restoreWindowToolStripMenuItem_Click); - // - // ReadOnlyCheckBox - // - this.ReadOnlyCheckBox.Appearance = System.Windows.Forms.Appearance.Button; - this.ReadOnlyCheckBox.AutoSize = true; - this.ReadOnlyCheckBox.BackColor = System.Drawing.SystemColors.Control; - this.ReadOnlyCheckBox.Image = global::BizHawk.MultiClient.Properties.Resources.ReadOnly; - this.ReadOnlyCheckBox.ImageAlign = System.Drawing.ContentAlignment.BottomRight; - this.ReadOnlyCheckBox.Location = new System.Drawing.Point(12, 27); - this.ReadOnlyCheckBox.Name = "ReadOnlyCheckBox"; - this.ReadOnlyCheckBox.Size = new System.Drawing.Size(22, 22); - this.ReadOnlyCheckBox.TabIndex = 3; - this.toolTip1.SetToolTip(this.ReadOnlyCheckBox, "Read-only"); - this.ReadOnlyCheckBox.UseVisualStyleBackColor = false; - this.ReadOnlyCheckBox.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); - // - // contextMenuStrip1 - // - this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; + this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 20); + this.settingsToolStripMenuItem.Text = "&Settings"; + this.settingsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.settingsToolStripMenuItem_DropDownOpened); + // + // saveWindowPositionToolStripMenuItem + // + this.saveWindowPositionToolStripMenuItem.Name = "saveWindowPositionToolStripMenuItem"; + this.saveWindowPositionToolStripMenuItem.Size = new System.Drawing.Size(240, 22); + this.saveWindowPositionToolStripMenuItem.Text = "Save Window Position"; + this.saveWindowPositionToolStripMenuItem.Click += new System.EventHandler(this.saveWindowPositionToolStripMenuItem_Click); + // + // autoloadToolStripMenuItem + // + this.autoloadToolStripMenuItem.Name = "autoloadToolStripMenuItem"; + this.autoloadToolStripMenuItem.Size = new System.Drawing.Size(240, 22); + this.autoloadToolStripMenuItem.Text = "Autoload"; + this.autoloadToolStripMenuItem.Click += new System.EventHandler(this.autoloadToolStripMenuItem_Click); + // + // updatePadsOnMovePlaybackToolStripMenuItem + // + this.updatePadsOnMovePlaybackToolStripMenuItem.Name = "updatePadsOnMovePlaybackToolStripMenuItem"; + this.updatePadsOnMovePlaybackToolStripMenuItem.Size = new System.Drawing.Size(240, 22); + this.updatePadsOnMovePlaybackToolStripMenuItem.Text = "Update Pads on Move playback"; + this.updatePadsOnMovePlaybackToolStripMenuItem.Click += new System.EventHandler(this.updatePadsOnMovePlaybackToolStripMenuItem_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(237, 6); + // + // restoreWindowToolStripMenuItem + // + this.restoreWindowToolStripMenuItem.Name = "restoreWindowToolStripMenuItem"; + this.restoreWindowToolStripMenuItem.Size = new System.Drawing.Size(240, 22); + this.restoreWindowToolStripMenuItem.Text = "Restore Default Settings"; + this.restoreWindowToolStripMenuItem.Click += new System.EventHandler(this.restoreWindowToolStripMenuItem_Click); + // + // ReadOnlyCheckBox + // + this.ReadOnlyCheckBox.Appearance = System.Windows.Forms.Appearance.Button; + this.ReadOnlyCheckBox.AutoSize = true; + this.ReadOnlyCheckBox.BackColor = System.Drawing.SystemColors.Control; + this.ReadOnlyCheckBox.Image = global::BizHawk.MultiClient.Properties.Resources.ReadOnly; + this.ReadOnlyCheckBox.ImageAlign = System.Drawing.ContentAlignment.BottomRight; + this.ReadOnlyCheckBox.Location = new System.Drawing.Point(12, 27); + this.ReadOnlyCheckBox.Name = "ReadOnlyCheckBox"; + this.ReadOnlyCheckBox.Size = new System.Drawing.Size(22, 22); + this.ReadOnlyCheckBox.TabIndex = 3; + this.toolTip1.SetToolTip(this.ReadOnlyCheckBox, "Read-only"); + this.ReadOnlyCheckBox.UseVisualStyleBackColor = false; + this.ReadOnlyCheckBox.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.clearToolStripMenuItem3, this.ContextMenu_Delete, this.cloneToolStripMenuItem1, @@ -421,126 +419,126 @@ namespace BizHawk.MultiClient this.toolStripItem_SelectAll, this.toolStripSeparator9, this.truncateMovieToolStripMenuItem1}); - this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(185, 170); - this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); - // - // clearToolStripMenuItem3 - // - this.clearToolStripMenuItem3.Name = "clearToolStripMenuItem3"; - this.clearToolStripMenuItem3.Size = new System.Drawing.Size(184, 22); - this.clearToolStripMenuItem3.Text = "Clear"; - // - // ContextMenu_Delete - // - this.ContextMenu_Delete.Name = "ContextMenu_Delete"; - this.ContextMenu_Delete.ShortcutKeyDisplayString = "Ctrl+Del"; - this.ContextMenu_Delete.Size = new System.Drawing.Size(184, 22); - this.ContextMenu_Delete.Text = "Delete"; - this.ContextMenu_Delete.Click += new System.EventHandler(this.Delete_Click); - // - // cloneToolStripMenuItem1 - // - this.cloneToolStripMenuItem1.Name = "cloneToolStripMenuItem1"; - this.cloneToolStripMenuItem1.ShortcutKeyDisplayString = "Ctrl+Ins"; - this.cloneToolStripMenuItem1.Size = new System.Drawing.Size(184, 22); - this.cloneToolStripMenuItem1.Text = "Clone"; - this.cloneToolStripMenuItem1.Click += new System.EventHandler(this.cloneToolStripMenuItem1_Click); - // - // ContextMenu_Insert - // - this.ContextMenu_Insert.Name = "ContextMenu_Insert"; - this.ContextMenu_Insert.ShortcutKeyDisplayString = "Ctrl+Shift+Ins"; - this.ContextMenu_Insert.Size = new System.Drawing.Size(184, 22); - this.ContextMenu_Insert.Text = "Insert"; - this.ContextMenu_Insert.Click += new System.EventHandler(this.Insert_Click); - // - // insertFramesToolStripMenuItem - // - this.insertFramesToolStripMenuItem.Name = "insertFramesToolStripMenuItem"; - this.insertFramesToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.insertFramesToolStripMenuItem.Text = "Insert # Frames"; - this.insertFramesToolStripMenuItem.Click += new System.EventHandler(this.insertFramesToolStripMenuItem_Click); - // - // toolStripSeparator5 - // - this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(181, 6); - // - // toolStripItem_SelectAll - // - this.toolStripItem_SelectAll.Name = "toolStripItem_SelectAll"; - this.toolStripItem_SelectAll.Size = new System.Drawing.Size(184, 22); - this.toolStripItem_SelectAll.Text = "Select All"; - this.toolStripItem_SelectAll.Click += new System.EventHandler(this.SelectAll_Click); - // - // toolStripSeparator9 - // - this.toolStripSeparator9.Name = "toolStripSeparator9"; - this.toolStripSeparator9.Size = new System.Drawing.Size(181, 6); - // - // truncateMovieToolStripMenuItem1 - // - this.truncateMovieToolStripMenuItem1.Name = "truncateMovieToolStripMenuItem1"; - this.truncateMovieToolStripMenuItem1.Size = new System.Drawing.Size(184, 22); - this.truncateMovieToolStripMenuItem1.Text = "&Truncate Movie"; - this.truncateMovieToolStripMenuItem1.Click += new System.EventHandler(this.truncateMovieToolStripMenuItem1_Click); - // - // groupBox1 - // - this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox1.Controls.Add(this.ClipboardDisplay); - this.groupBox1.Controls.Add(this.SelectionDisplay); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Location = new System.Drawing.Point(300, 55); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(274, 83); - this.groupBox1.TabIndex = 5; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Slicer"; - // - // ClipboardDisplay - // - this.ClipboardDisplay.AutoSize = true; - this.ClipboardDisplay.Location = new System.Drawing.Point(68, 36); - this.ClipboardDisplay.Name = "ClipboardDisplay"; - this.ClipboardDisplay.Size = new System.Drawing.Size(31, 13); - this.ClipboardDisplay.TabIndex = 3; - this.ClipboardDisplay.Text = "none"; - // - // SelectionDisplay - // - this.SelectionDisplay.AutoSize = true; - this.SelectionDisplay.Location = new System.Drawing.Point(68, 19); - this.SelectionDisplay.Name = "SelectionDisplay"; - this.SelectionDisplay.Size = new System.Drawing.Size(31, 13); - this.SelectionDisplay.TabIndex = 2; - this.SelectionDisplay.Text = "none"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(8, 36); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(54, 13); - this.label2.TabIndex = 1; - this.label2.Text = "Clipboard:"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(8, 19); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(54, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Selection:"; - // - // toolStrip1 - // - this.toolStrip1.ClickThrough = true; - this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None; - this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(185, 170); + this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); + // + // clearToolStripMenuItem3 + // + this.clearToolStripMenuItem3.Name = "clearToolStripMenuItem3"; + this.clearToolStripMenuItem3.Size = new System.Drawing.Size(184, 22); + this.clearToolStripMenuItem3.Text = "Clear"; + // + // ContextMenu_Delete + // + this.ContextMenu_Delete.Name = "ContextMenu_Delete"; + this.ContextMenu_Delete.ShortcutKeyDisplayString = "Ctrl+Del"; + this.ContextMenu_Delete.Size = new System.Drawing.Size(184, 22); + this.ContextMenu_Delete.Text = "Delete"; + this.ContextMenu_Delete.Click += new System.EventHandler(this.Delete_Click); + // + // cloneToolStripMenuItem1 + // + this.cloneToolStripMenuItem1.Name = "cloneToolStripMenuItem1"; + this.cloneToolStripMenuItem1.ShortcutKeyDisplayString = "Ctrl+Ins"; + this.cloneToolStripMenuItem1.Size = new System.Drawing.Size(184, 22); + this.cloneToolStripMenuItem1.Text = "Clone"; + this.cloneToolStripMenuItem1.Click += new System.EventHandler(this.cloneToolStripMenuItem1_Click); + // + // ContextMenu_Insert + // + this.ContextMenu_Insert.Name = "ContextMenu_Insert"; + this.ContextMenu_Insert.ShortcutKeyDisplayString = "Ctrl+Shift+Ins"; + this.ContextMenu_Insert.Size = new System.Drawing.Size(184, 22); + this.ContextMenu_Insert.Text = "Insert"; + this.ContextMenu_Insert.Click += new System.EventHandler(this.Insert_Click); + // + // insertFramesToolStripMenuItem + // + this.insertFramesToolStripMenuItem.Name = "insertFramesToolStripMenuItem"; + this.insertFramesToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.insertFramesToolStripMenuItem.Text = "Insert # Frames"; + this.insertFramesToolStripMenuItem.Click += new System.EventHandler(this.insertFramesToolStripMenuItem_Click); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(181, 6); + // + // toolStripItem_SelectAll + // + this.toolStripItem_SelectAll.Name = "toolStripItem_SelectAll"; + this.toolStripItem_SelectAll.Size = new System.Drawing.Size(184, 22); + this.toolStripItem_SelectAll.Text = "Select All"; + this.toolStripItem_SelectAll.Click += new System.EventHandler(this.SelectAll_Click); + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + this.toolStripSeparator9.Size = new System.Drawing.Size(181, 6); + // + // truncateMovieToolStripMenuItem1 + // + this.truncateMovieToolStripMenuItem1.Name = "truncateMovieToolStripMenuItem1"; + this.truncateMovieToolStripMenuItem1.Size = new System.Drawing.Size(184, 22); + this.truncateMovieToolStripMenuItem1.Text = "&Truncate Movie"; + this.truncateMovieToolStripMenuItem1.Click += new System.EventHandler(this.truncateMovieToolStripMenuItem1_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.ClipboardDisplay); + this.groupBox1.Controls.Add(this.SelectionDisplay); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(300, 55); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(274, 83); + this.groupBox1.TabIndex = 5; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Slicer"; + // + // ClipboardDisplay + // + this.ClipboardDisplay.AutoSize = true; + this.ClipboardDisplay.Location = new System.Drawing.Point(68, 36); + this.ClipboardDisplay.Name = "ClipboardDisplay"; + this.ClipboardDisplay.Size = new System.Drawing.Size(31, 13); + this.ClipboardDisplay.TabIndex = 3; + this.ClipboardDisplay.Text = "none"; + // + // SelectionDisplay + // + this.SelectionDisplay.AutoSize = true; + this.SelectionDisplay.Location = new System.Drawing.Point(68, 19); + this.SelectionDisplay.Name = "SelectionDisplay"; + this.SelectionDisplay.Size = new System.Drawing.Size(31, 13); + this.SelectionDisplay.TabIndex = 2; + this.SelectionDisplay.Text = "none"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(8, 36); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(54, 13); + this.label2.TabIndex = 1; + this.label2.Text = "Clipboard:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 19); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(54, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Selection:"; + // + // toolStrip1 + // + this.toolStrip1.ClickThrough = true; + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None; + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.RewindToBeginning, this.RewindButton, this.PauseButton, @@ -550,225 +548,225 @@ namespace BizHawk.MultiClient this.FastFowardToEnd, this.toolStripSeparator6, this.StopButton}); - this.toolStrip1.Location = new System.Drawing.Point(37, 27); - this.toolStrip1.Name = "toolStrip1"; - this.toolStrip1.Size = new System.Drawing.Size(202, 25); - this.toolStrip1.TabIndex = 0; - // - // RewindToBeginning - // - this.RewindToBeginning.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.RewindToBeginning.Image = global::BizHawk.MultiClient.Properties.Resources.BackMore; - this.RewindToBeginning.ImageTransparentColor = System.Drawing.Color.Magenta; - this.RewindToBeginning.Name = "RewindToBeginning"; - this.RewindToBeginning.Size = new System.Drawing.Size(23, 22); - this.RewindToBeginning.Text = "<<"; - this.RewindToBeginning.ToolTipText = "Rewind to Beginning"; - this.RewindToBeginning.Click += new System.EventHandler(this.RewindToBeginning_Click); - // - // RewindButton - // - this.RewindButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.RewindButton.Image = global::BizHawk.MultiClient.Properties.Resources.Back; - this.RewindButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.RewindButton.Name = "RewindButton"; - this.RewindButton.Size = new System.Drawing.Size(23, 22); - this.RewindButton.Text = "<"; - this.RewindButton.ToolTipText = "Rewind"; - this.RewindButton.Click += new System.EventHandler(this.RewindButton_Click); - // - // PauseButton - // - this.PauseButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.PauseButton.Image = global::BizHawk.MultiClient.Properties.Resources.Pause; - this.PauseButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.PauseButton.Name = "PauseButton"; - this.PauseButton.Size = new System.Drawing.Size(23, 22); - this.PauseButton.Text = "Pause Button"; - this.PauseButton.ToolTipText = "Pause"; - this.PauseButton.Click += new System.EventHandler(this.PauseButton_Click); - // - // FrameAdvanceButton - // - this.FrameAdvanceButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.FrameAdvanceButton.Image = global::BizHawk.MultiClient.Properties.Resources.Forward; - this.FrameAdvanceButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.FrameAdvanceButton.Name = "FrameAdvanceButton"; - this.FrameAdvanceButton.Size = new System.Drawing.Size(23, 22); - this.FrameAdvanceButton.Text = ">"; - this.FrameAdvanceButton.ToolTipText = "Frame Advance"; - this.FrameAdvanceButton.Click += new System.EventHandler(this.FrameAdvanceButton_Click); - // - // FastForward - // - this.FastForward.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.FastForward.Image = global::BizHawk.MultiClient.Properties.Resources.FastForward; - this.FastForward.ImageTransparentColor = System.Drawing.Color.Magenta; - this.FastForward.Name = "FastForward"; - this.FastForward.Size = new System.Drawing.Size(23, 22); - this.FastForward.Text = ">>"; - this.FastForward.ToolTipText = "Fast Forward"; - this.FastForward.Click += new System.EventHandler(this.FastForward_Click); - // - // TurboFastForward - // - this.TurboFastForward.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.TurboFastForward.Enabled = false; - this.TurboFastForward.Image = global::BizHawk.MultiClient.Properties.Resources.TurboFastForward; - this.TurboFastForward.ImageTransparentColor = System.Drawing.Color.Magenta; - this.TurboFastForward.Name = "TurboFastForward"; - this.TurboFastForward.Size = new System.Drawing.Size(23, 22); - this.TurboFastForward.Text = ">>>"; - this.TurboFastForward.ToolTipText = "Turbo Fast Forward"; - this.TurboFastForward.Click += new System.EventHandler(this.TurboFastForward_Click); - // - // FastFowardToEnd - // - this.FastFowardToEnd.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.FastFowardToEnd.Image = global::BizHawk.MultiClient.Properties.Resources.ForwardMore; - this.FastFowardToEnd.ImageTransparentColor = System.Drawing.Color.Magenta; - this.FastFowardToEnd.Name = "FastFowardToEnd"; - this.FastFowardToEnd.Size = new System.Drawing.Size(23, 22); - this.FastFowardToEnd.Text = ">>"; - this.FastFowardToEnd.ToolTipText = "Fast Foward To End"; - this.FastFowardToEnd.Click += new System.EventHandler(this.FastForwardToEnd_Click); - // - // toolStripSeparator6 - // - this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); - // - // StopButton - // - this.StopButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.StopButton.Image = global::BizHawk.MultiClient.Properties.Resources.Stop; - this.StopButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.StopButton.Name = "StopButton"; - this.StopButton.Size = new System.Drawing.Size(23, 22); - this.StopButton.Text = "Stop Movie"; - this.StopButton.Click += new System.EventHandler(this.StopButton_Click); - // - // TASView - // - this.TASView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.TASView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.toolStrip1.Location = new System.Drawing.Point(37, 27); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(202, 25); + this.toolStrip1.TabIndex = 0; + // + // RewindToBeginning + // + this.RewindToBeginning.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.RewindToBeginning.Image = global::BizHawk.MultiClient.Properties.Resources.BackMore; + this.RewindToBeginning.ImageTransparentColor = System.Drawing.Color.Magenta; + this.RewindToBeginning.Name = "RewindToBeginning"; + this.RewindToBeginning.Size = new System.Drawing.Size(23, 22); + this.RewindToBeginning.Text = "<<"; + this.RewindToBeginning.ToolTipText = "Rewind to Beginning"; + this.RewindToBeginning.Click += new System.EventHandler(this.RewindToBeginning_Click); + // + // RewindButton + // + this.RewindButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.RewindButton.Image = global::BizHawk.MultiClient.Properties.Resources.Back; + this.RewindButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.RewindButton.Name = "RewindButton"; + this.RewindButton.Size = new System.Drawing.Size(23, 22); + this.RewindButton.Text = "<"; + this.RewindButton.ToolTipText = "Rewind"; + this.RewindButton.Click += new System.EventHandler(this.RewindButton_Click); + // + // PauseButton + // + this.PauseButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.PauseButton.Image = global::BizHawk.MultiClient.Properties.Resources.Pause; + this.PauseButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.PauseButton.Name = "PauseButton"; + this.PauseButton.Size = new System.Drawing.Size(23, 22); + this.PauseButton.Text = "Pause Button"; + this.PauseButton.ToolTipText = "Pause"; + this.PauseButton.Click += new System.EventHandler(this.PauseButton_Click); + // + // FrameAdvanceButton + // + this.FrameAdvanceButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.FrameAdvanceButton.Image = global::BizHawk.MultiClient.Properties.Resources.Forward; + this.FrameAdvanceButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.FrameAdvanceButton.Name = "FrameAdvanceButton"; + this.FrameAdvanceButton.Size = new System.Drawing.Size(23, 22); + this.FrameAdvanceButton.Text = ">"; + this.FrameAdvanceButton.ToolTipText = "Frame Advance"; + this.FrameAdvanceButton.Click += new System.EventHandler(this.FrameAdvanceButton_Click); + // + // FastForward + // + this.FastForward.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.FastForward.Image = global::BizHawk.MultiClient.Properties.Resources.FastForward; + this.FastForward.ImageTransparentColor = System.Drawing.Color.Magenta; + this.FastForward.Name = "FastForward"; + this.FastForward.Size = new System.Drawing.Size(23, 22); + this.FastForward.Text = ">>"; + this.FastForward.ToolTipText = "Fast Forward"; + this.FastForward.Click += new System.EventHandler(this.FastForward_Click); + // + // TurboFastForward + // + this.TurboFastForward.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.TurboFastForward.Enabled = false; + this.TurboFastForward.Image = global::BizHawk.MultiClient.Properties.Resources.TurboFastForward; + this.TurboFastForward.ImageTransparentColor = System.Drawing.Color.Magenta; + this.TurboFastForward.Name = "TurboFastForward"; + this.TurboFastForward.Size = new System.Drawing.Size(23, 22); + this.TurboFastForward.Text = ">>>"; + this.TurboFastForward.ToolTipText = "Turbo Fast Forward"; + this.TurboFastForward.Click += new System.EventHandler(this.TurboFastForward_Click); + // + // FastFowardToEnd + // + this.FastFowardToEnd.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.FastFowardToEnd.Image = global::BizHawk.MultiClient.Properties.Resources.ForwardMore; + this.FastFowardToEnd.ImageTransparentColor = System.Drawing.Color.Magenta; + this.FastFowardToEnd.Name = "FastFowardToEnd"; + this.FastFowardToEnd.Size = new System.Drawing.Size(23, 22); + this.FastFowardToEnd.Text = ">>"; + this.FastFowardToEnd.ToolTipText = "Fast Foward To End"; + this.FastFowardToEnd.Click += new System.EventHandler(this.FastForwardToEnd_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); + // + // StopButton + // + this.StopButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.StopButton.Image = global::BizHawk.MultiClient.Properties.Resources.Stop; + this.StopButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.StopButton.Name = "StopButton"; + this.StopButton.Size = new System.Drawing.Size(23, 22); + this.StopButton.Text = "Stop Movie"; + this.StopButton.Click += new System.EventHandler(this.StopButton_Click); + // + // TASView + // + this.TASView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.TASView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.Frame, this.Log}); - this.TASView.ContextMenuStrip = this.contextMenuStrip1; - this.TASView.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.TASView.FullRowSelect = true; - this.TASView.GridLines = true; - this.TASView.ItemCount = 0; - this.TASView.Location = new System.Drawing.Point(12, 55); - this.TASView.Name = "TASView"; - this.TASView.selectedItem = -1; - this.TASView.Size = new System.Drawing.Size(282, 452); - this.TASView.TabIndex = 1; - this.TASView.UseCompatibleStateImageBehavior = false; - this.TASView.View = System.Windows.Forms.View.Details; - this.TASView.SelectedIndexChanged += new System.EventHandler(this.TASView_SelectedIndexChanged); - this.TASView.Click += new System.EventHandler(this.TASView_Click); - this.TASView.DoubleClick += new System.EventHandler(this.TASView_DoubleClick); - this.TASView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TASView_KeyDown); - this.TASView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseUp); - this.TASView.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseWheel); - // - // Frame - // - this.Frame.Text = "Frame"; - // - // Log - // - this.Log.Text = "Log"; - this.Log.Width = 201; - // - // VisualizerBox - // - this.VisualizerBox.Controls.Add(this.button1); - this.VisualizerBox.Location = new System.Drawing.Point(300, 144); - this.VisualizerBox.Name = "VisualizerBox"; - this.VisualizerBox.Size = new System.Drawing.Size(274, 166); - this.VisualizerBox.TabIndex = 6; - this.VisualizerBox.TabStop = false; - this.VisualizerBox.Text = "Visualize Savestates"; - this.VisualizerBox.Visible = false; - this.VisualizerBox.Paint += new System.Windows.Forms.PaintEventHandler(this.VisualizerBox_Paint); - this.VisualizerBox.Enter += new System.EventHandler(this.VisualizerBox_Enter); - // - // button1 - // - this.button1.Location = new System.Drawing.Point(211, 137); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(57, 23); - this.button1.TabIndex = 0; - this.button1.Text = "Scan"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // alwaysOnTopToolStripMenuItem - // - this.alwaysOnTopToolStripMenuItem.Name = "alwaysOnTopToolStripMenuItem"; - this.alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(240, 22); - this.alwaysOnTopToolStripMenuItem.Text = "Always On Top"; - this.alwaysOnTopToolStripMenuItem.Click += new System.EventHandler(this.alwaysOnTopToolStripMenuItem_Click); - // - // TAStudio - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(586, 519); - this.Controls.Add(this.VisualizerBox); - this.Controls.Add(this.toolStrip1); - this.Controls.Add(this.menuStrip1); - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.ReadOnlyCheckBox); - this.Controls.Add(this.TASView); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.MinimumSize = new System.Drawing.Size(437, 148); - this.Name = "TAStudio"; - this.Text = "TAStudio"; - this.Load += new System.EventHandler(this.TAStudio_Load); - this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.TAStudio_KeyPress); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.contextMenuStrip1.ResumeLayout(false); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.toolStrip1.ResumeLayout(false); - this.toolStrip1.PerformLayout(); - this.VisualizerBox.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); + this.TASView.ContextMenuStrip = this.contextMenuStrip1; + this.TASView.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.TASView.FullRowSelect = true; + this.TASView.GridLines = true; + this.TASView.ItemCount = 0; + this.TASView.Location = new System.Drawing.Point(12, 55); + this.TASView.Name = "TASView"; + this.TASView.selectedItem = -1; + this.TASView.Size = new System.Drawing.Size(282, 452); + this.TASView.TabIndex = 1; + this.TASView.UseCompatibleStateImageBehavior = false; + this.TASView.View = System.Windows.Forms.View.Details; + this.TASView.SelectedIndexChanged += new System.EventHandler(this.TASView_SelectedIndexChanged); + this.TASView.Click += new System.EventHandler(this.TASView_Click); + this.TASView.DoubleClick += new System.EventHandler(this.TASView_DoubleClick); + this.TASView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TASView_KeyDown); + this.TASView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseUp); + this.TASView.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseWheel); + // + // Frame + // + this.Frame.Text = "Frame"; + // + // Log + // + this.Log.Text = "Log"; + this.Log.Width = 201; + // + // VisualizerBox + // + this.VisualizerBox.Controls.Add(this.button1); + this.VisualizerBox.Location = new System.Drawing.Point(300, 144); + this.VisualizerBox.Name = "VisualizerBox"; + this.VisualizerBox.Size = new System.Drawing.Size(274, 166); + this.VisualizerBox.TabIndex = 6; + this.VisualizerBox.TabStop = false; + this.VisualizerBox.Text = "Visualize Savestates"; + this.VisualizerBox.Visible = false; + this.VisualizerBox.Paint += new System.Windows.Forms.PaintEventHandler(this.VisualizerBox_Paint); + this.VisualizerBox.Enter += new System.EventHandler(this.VisualizerBox_Enter); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(211, 137); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(57, 23); + this.button1.TabIndex = 0; + this.button1.Text = "Scan"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // alwaysOnTopToolStripMenuItem + // + this.alwaysOnTopToolStripMenuItem.Name = "alwaysOnTopToolStripMenuItem"; + this.alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(240, 22); + this.alwaysOnTopToolStripMenuItem.Text = "Always On Top"; + this.alwaysOnTopToolStripMenuItem.Click += new System.EventHandler(this.alwaysOnTopToolStripMenuItem_Click); + // + // TAStudio + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(586, 519); + this.Controls.Add(this.VisualizerBox); + this.Controls.Add(this.toolStrip1); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.ReadOnlyCheckBox); + this.Controls.Add(this.TASView); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.menuStrip1; + this.MinimumSize = new System.Drawing.Size(437, 148); + this.Name = "TAStudio"; + this.Text = "TAStudio"; + this.Load += new System.EventHandler(this.TAStudio_Load); + this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.TAStudio_KeyPress); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.contextMenuStrip1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.VisualizerBox.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); - } + } - #endregion + #endregion - private MenuStripEx menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem newProjectToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem openProjectToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveProjectToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveProjectAsToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripMenuItem importTASFileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveWindowPositionToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreWindowToolStripMenuItem; - private VirtualListView TASView; + private MenuStripEx menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem newProjectToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem openProjectToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveProjectToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveProjectAsToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem importTASFileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveWindowPositionToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem restoreWindowToolStripMenuItem; + private VirtualListView TASView; private System.Windows.Forms.ColumnHeader Log; - private System.Windows.Forms.ToolStripMenuItem recentToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; - private System.Windows.Forms.ToolStripMenuItem nToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripMenuItem recentToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripMenuItem nToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem; private ToolStripEx toolStrip1; - private System.Windows.Forms.ToolStripButton FrameAdvanceButton; - private System.Windows.Forms.ToolStripButton RewindButton; + private System.Windows.Forms.ToolStripButton FrameAdvanceButton; + private System.Windows.Forms.ToolStripButton RewindButton; private System.Windows.Forms.ToolStripButton PauseButton; private System.Windows.Forms.ToolStripMenuItem autoloadToolStripMenuItem; private System.Windows.Forms.CheckBox ReadOnlyCheckBox; @@ -786,8 +784,8 @@ namespace BizHawk.MultiClient private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; private System.Windows.Forms.ToolStripMenuItem clearVirtualPadsToolStripMenuItem; - private System.Windows.Forms.ToolStripButton FastForward; - private System.Windows.Forms.ToolStripButton TurboFastForward; + private System.Windows.Forms.ToolStripButton FastForward; + private System.Windows.Forms.ToolStripButton TurboFastForward; private System.Windows.Forms.ToolStripMenuItem ContextMenu_Delete; private System.Windows.Forms.ToolStripMenuItem cloneToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem cloneToolStripMenuItem1; @@ -813,6 +811,6 @@ namespace BizHawk.MultiClient private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem; private System.Windows.Forms.GroupBox VisualizerBox; private System.Windows.Forms.Button button1; - private System.Windows.Forms.ToolStripMenuItem alwaysOnTopToolStripMenuItem; - } + private System.Windows.Forms.ToolStripMenuItem alwaysOnTopToolStripMenuItem; + } } \ No newline at end of file diff --git a/BizHawk.MultiClient/tools/TAStudio.cs b/BizHawk.MultiClient/tools/TAStudio.cs index 251563dfd7..9e0c436c39 100644 --- a/BizHawk.MultiClient/tools/TAStudio.cs +++ b/BizHawk.MultiClient/tools/TAStudio.cs @@ -2,9 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Drawing; -using System.IO; using System.Windows.Forms; -using BizHawk.Client.Common; namespace BizHawk.MultiClient { @@ -78,7 +76,7 @@ namespace BizHawk.MultiClient if (Global.Emulator.Frame < stopOnFrame) { - GlobalWinF.MainForm.PressFrameAdvance = true; + Global.MainForm.PressFrameAdvance = true; } } @@ -165,13 +163,13 @@ namespace BizHawk.MultiClient { //TODO: don't engage until new/open project // - GlobalWinF.MainForm.PauseEmulator(); + Global.MainForm.PauseEmulator(); Engaged = true; - GlobalWinF.OSD.AddMessage("TAStudio engaged"); + Global.OSD.AddMessage("TAStudio engaged"); if (Global.MovieSession.Movie.IsActive) { Global.MovieSession.Movie.StateCapturing = true; - ReadOnlyCheckBox.Checked = GlobalWinF.MainForm.ReadOnly; + ReadOnlyCheckBox.Checked = Global.MainForm.ReadOnly; } else { @@ -247,13 +245,13 @@ namespace BizHawk.MultiClient private void StopButton_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.StopMovie(); + Global.MainForm.StopMovie(); Restart(); } private void FrameAdvanceButton_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.PressFrameAdvance = true; + Global.MainForm.PressFrameAdvance = true; } private void RewindButton_Click(object sender, EventArgs e) @@ -261,7 +259,7 @@ namespace BizHawk.MultiClient stopOnFrame = 0; if (Global.MovieSession.Movie.IsFinished || !Global.MovieSession.Movie.IsActive) { - GlobalWinF.MainForm.Rewind(1); + Global.MainForm.Rewind(1); if (Global.Emulator.Frame <= Global.MovieSession.Movie.Frames) { Global.MovieSession.Movie.SwitchToPlay(); @@ -269,14 +267,14 @@ namespace BizHawk.MultiClient } else { - RewindToFrame(Global.Emulator.Frame - 1); + Global.MovieSession.Movie.RewindToFrame(Global.Emulator.Frame - 1); } UpdateValues(); } private void PauseButton_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.TogglePause(); + Global.MainForm.TogglePause(); } private void autoloadToolStripMenuItem_Click(object sender, EventArgs e) @@ -288,7 +286,7 @@ namespace BizHawk.MultiClient { if (ReadOnlyCheckBox.Checked) { - GlobalWinF.MainForm.SetReadOnly(true); + Global.MainForm.SetReadOnly(true); ReadOnlyCheckBox.BackColor = SystemColors.Control; if (Global.MovieSession.Movie.IsActive) @@ -299,7 +297,7 @@ namespace BizHawk.MultiClient } else { - GlobalWinF.MainForm.SetReadOnly(false); + Global.MainForm.SetReadOnly(false); ReadOnlyCheckBox.BackColor = Color.LightCoral; if (Global.MovieSession.Movie.IsActive) { @@ -311,7 +309,7 @@ namespace BizHawk.MultiClient private void RewindToBeginning_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.Rewind(Global.Emulator.Frame); + Global.MainForm.Rewind(Global.Emulator.Frame); DisplayList(); } @@ -320,7 +318,7 @@ namespace BizHawk.MultiClient //TODO: adelikat: I removed the stop on frame feature, so this will keep playing into movie finished mode, need to rebuild that functionality FastFowardToEnd.Checked ^= true; - GlobalWinF.MainForm.FastForward = FastFowardToEnd.Checked; + Global.MainForm.FastForward = FastFowardToEnd.Checked; if (FastFowardToEnd.Checked) { FastForward.Checked = false; @@ -371,12 +369,12 @@ namespace BizHawk.MultiClient private void newProjectToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.RecordMovie(); + Global.MainForm.RecordMovie(); } private void openProjectToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.PlayMovie(); + Global.MainForm.PlayMovie(); } private void saveProjectToolStripMenuItem_Click(object sender, EventArgs e) @@ -398,7 +396,7 @@ namespace BizHawk.MultiClient private void FastForward_Click(object sender, EventArgs e) { FastForward.Checked ^= true; - GlobalWinF.MainForm.FastForward = FastForward.Checked; + Global.MainForm.FastForward = FastForward.Checked; if (FastForward.Checked) { TurboFastForward.Checked = false; @@ -408,7 +406,7 @@ namespace BizHawk.MultiClient private void TurboFastForward_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.TurboFastForward ^= true; + Global.MainForm.TurboFastForward ^= true; TurboFastForward.Checked ^= true; if (TurboFastForward.Checked) { @@ -427,13 +425,13 @@ namespace BizHawk.MultiClient if (TASView.selectedItem <= Global.MovieSession.Movie.StateLastIndex) { stopOnFrame = 0; - RewindToFrame(TASView.selectedItem); + Global.MovieSession.Movie.RewindToFrame(TASView.selectedItem); } else { - RewindToFrame(Global.MovieSession.Movie.StateLastIndex); + Global.MovieSession.Movie.RewindToFrame(Global.MovieSession.Movie.StateLastIndex); stopOnFrame = TASView.selectedItem; - GlobalWinF.MainForm.PressFrameAdvance = true; + Global.MainForm.PressFrameAdvance = true; } UpdateValues(); @@ -460,9 +458,9 @@ namespace BizHawk.MultiClient string filter = "Movie Files (*." + Global.Config.MovieExtension + ")|*." + Global.Config.MovieExtension + "|Savestates|*.state|All Files|*.*"; sfd.Filter = filter; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.OK) { return sfd.FileName; @@ -480,11 +478,11 @@ namespace BizHawk.MultiClient if (e.Delta > 0) //Scroll up { - RewindToFrame(Global.Emulator.Frame - 1); + Global.MovieSession.Movie.RewindToFrame(Global.Emulator.Frame - 1); } else if (e.Delta < 0) //Scroll down { - GlobalWinF.MainForm.PressFrameAdvance = true; + Global.MainForm.PressFrameAdvance = true; } UpdateValues(); @@ -543,64 +541,6 @@ namespace BizHawk.MultiClient UpdateValues(); } - private void RewindToFrame(int frame) - { - if (!Global.MovieSession.Movie.IsActive || Global.MovieSession.Movie.IsFinished) - { - return; - } - else if (frame <= Global.Emulator.Frame) - { - if (frame <= Global.MovieSession.Movie.StateFirstIndex) - { - Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Global.MovieSession.Movie.InitState))); - if (Global.MovieSession.Movie.IsRecording) - { - Global.MovieSession.Movie.StartPlayback(); - GlobalWinF.MainForm.RestoreReadWriteOnStop = true; - } - } - else - { - if (frame == 0) - { - Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Global.MovieSession.Movie.InitState))); - } - else - { - //frame-1 because we need to go back an extra frame and then run a frame, otherwise the display doesn't get updated. - Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Global.MovieSession.Movie.GetState(frame - 1)))); - GlobalWinF.MainForm.UpdateFrame = true; - } - } - } - else if (frame <= Global.MovieSession.Movie.StateLastIndex) - { - Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(Global.MovieSession.Movie.GetState(frame - 1)))); - GlobalWinF.MainForm.UpdateFrame = true; - } - else - { - GlobalWinF.MainForm.UnpauseEmulator(); - } - } - - public void DeleteFrame(int frame) - { - if (frame <= Global.MovieSession.Movie.StateLastIndex) - { - if (frame <= Global.MovieSession.Movie.StateFirstIndex) - { - RewindToFrame(0); - } - else - { - RewindToFrame(frame); - } - } - Global.MovieSession.Movie.DeleteFrame(frame); - } - private void DeleteFrames() { ListView.SelectedIndexCollection list = TASView.SelectedIndices; @@ -799,7 +739,7 @@ namespace BizHawk.MultiClient { ClipboardEntry entry = new ClipboardEntry {Frame = list[i], Inputstr = Global.MovieSession.Movie.GetInput(list[i])}; Clipboard.Add(entry); - DeleteFrame(list[0]); + Global.MovieSession.Movie.DeleteFrame(list[0]); } UpdateValues(); @@ -828,13 +768,13 @@ namespace BizHawk.MultiClient { if (e.Button == MouseButtons.Middle) { - GlobalWinF.MainForm.TogglePause(); + Global.MainForm.TogglePause(); } } private void TAStudio_KeyPress(object sender, KeyPressEventArgs e) { - GlobalWinF.MainForm.ProcessInput(); + Global.MainForm.ProcessInput(); } private void button1_Click(object sender, EventArgs e) diff --git a/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs b/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs index 7673f8d4e1..b8844c399e 100644 --- a/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs +++ b/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs @@ -1,9 +1,7 @@ using System; using System.Drawing; using System.Windows.Forms; - using BizHawk.Emulation.Consoles.Calculator; -using BizHawk.Client.Common; namespace BizHawk.MultiClient { @@ -124,247 +122,247 @@ namespace BizHawk.MultiClient private void button42_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("ENTER"); + Global.ClickyVirtualPadController.Click("ENTER"); } private void button43_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("DASH"); + Global.ClickyVirtualPadController.Click("DASH"); } private void button39_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("2"); + Global.ClickyVirtualPadController.Click("2"); } private void ONE_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("1"); + Global.ClickyVirtualPadController.Click("1"); } private void THREE_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("3"); + Global.ClickyVirtualPadController.Click("3"); } private void FOUR_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("4"); + Global.ClickyVirtualPadController.Click("4"); } private void FIVE_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("5"); + Global.ClickyVirtualPadController.Click("5"); } private void SIX_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("6"); + Global.ClickyVirtualPadController.Click("6"); } private void SEVEN_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("7"); + Global.ClickyVirtualPadController.Click("7"); } private void EIGHT_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("8"); + Global.ClickyVirtualPadController.Click("8"); } private void NINE_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("9"); + Global.ClickyVirtualPadController.Click("9"); } private void ON_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("ON"); + Global.ClickyVirtualPadController.Click("ON"); } private void STO_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("STO"); + Global.ClickyVirtualPadController.Click("STO"); } private void PLUS_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("PLUS"); + Global.ClickyVirtualPadController.Click("PLUS"); } private void LN_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("LN"); + Global.ClickyVirtualPadController.Click("LN"); } private void MINUS_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("MINUS"); + Global.ClickyVirtualPadController.Click("MINUS"); } private void LOG_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("LOG"); + Global.ClickyVirtualPadController.Click("LOG"); } private void MULTIPLY_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("MULTIPLY"); + Global.ClickyVirtualPadController.Click("MULTIPLY"); } private void button26_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("SQUARED"); + Global.ClickyVirtualPadController.Click("SQUARED"); } private void button25_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("COMMA"); + Global.ClickyVirtualPadController.Click("COMMA"); } private void button24_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("PARAOPEN"); + Global.ClickyVirtualPadController.Click("PARAOPEN"); } private void button23_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("PARACLOSE"); + Global.ClickyVirtualPadController.Click("PARACLOSE"); } private void button22_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("DIVIDE"); + Global.ClickyVirtualPadController.Click("DIVIDE"); } private void button17_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("NEG1"); + Global.ClickyVirtualPadController.Click("NEG1"); } private void button18_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("SIN"); + Global.ClickyVirtualPadController.Click("SIN"); } private void button19_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("COS"); + Global.ClickyVirtualPadController.Click("COS"); } private void button20_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("TAN"); + Global.ClickyVirtualPadController.Click("TAN"); } private void button21_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("EXP"); + Global.ClickyVirtualPadController.Click("EXP"); } private void button12_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("MATH"); + Global.ClickyVirtualPadController.Click("MATH"); } private void button13_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("MATRIX"); + Global.ClickyVirtualPadController.Click("MATRIX"); } private void button14_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("PRGM"); + Global.ClickyVirtualPadController.Click("PRGM"); } private void button15_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("VARS"); + Global.ClickyVirtualPadController.Click("VARS"); } private void button16_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("CLEAR"); + Global.ClickyVirtualPadController.Click("CLEAR"); } private void button11_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("ALPHA"); + Global.ClickyVirtualPadController.Click("ALPHA"); } private void button4_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("X"); + Global.ClickyVirtualPadController.Click("X"); } private void button10_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("STAT"); + Global.ClickyVirtualPadController.Click("STAT"); } private void button5_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("2ND"); + Global.ClickyVirtualPadController.Click("2ND"); } private void button2_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("MODE"); + Global.ClickyVirtualPadController.Click("MODE"); } private void button3_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("DEL"); + Global.ClickyVirtualPadController.Click("DEL"); } private void button47_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("LEFT"); + Global.ClickyVirtualPadController.Click("LEFT"); } private void button49_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("DOWN"); + Global.ClickyVirtualPadController.Click("DOWN"); } private void button48_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("RIGHT"); + Global.ClickyVirtualPadController.Click("RIGHT"); } private void button50_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("UP"); + Global.ClickyVirtualPadController.Click("UP"); } private void button1_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("Y"); + Global.ClickyVirtualPadController.Click("Y"); } private void button6_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("WINDOW"); + Global.ClickyVirtualPadController.Click("WINDOW"); } private void button7_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("ZOOM"); + Global.ClickyVirtualPadController.Click("ZOOM"); } private void button8_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("TRACE"); + Global.ClickyVirtualPadController.Click("TRACE"); } private void button9_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("GRAPH"); + Global.ClickyVirtualPadController.Click("GRAPH"); } private void PERIOD_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("DOT"); + Global.ClickyVirtualPadController.Click("DOT"); } private void showHotkToolStripMenuItem_Click(object sender, EventArgs e) @@ -383,7 +381,7 @@ namespace BizHawk.MultiClient private void ZERO_Click(object sender, EventArgs e) { - GlobalWinF.ClickyVirtualPadController.Click("0"); + Global.ClickyVirtualPadController.Click("0"); } } } diff --git a/BizHawk.MultiClient/tools/ToolBox.cs b/BizHawk.MultiClient/tools/ToolBox.cs index 4c4c9a8452..87ef09d7d7 100644 --- a/BizHawk.MultiClient/tools/ToolBox.cs +++ b/BizHawk.MultiClient/tools/ToolBox.cs @@ -1,8 +1,6 @@ using System; using System.Drawing; using System.Windows.Forms; - -using BizHawk.Client.Common; using BizHawk.Emulation.Consoles.Nintendo; using BizHawk.Emulation.Consoles.Calculator; using BizHawk.Emulation.Consoles.Nintendo.SNES; @@ -19,8 +17,8 @@ namespace BizHawk.MultiClient private void ToolBox_Load(object sender, EventArgs e) { - int x = GlobalWinF.MainForm.Location.X + GlobalWinF.MainForm.Size.Width; - int y = GlobalWinF.MainForm.Location.Y; + int x = Global.MainForm.Location.X + Global.MainForm.Size.Width; + int y = Global.MainForm.Location.Y; Location = new Point(x, y); HideShowIcons(); } @@ -88,88 +86,88 @@ namespace BizHawk.MultiClient private void toolStripButton1_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadCheatsWindow(); + Global.MainForm.LoadCheatsWindow(); } private void toolStripButton2_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadRamWatch(true); + Global.MainForm.LoadRamWatch(true); } private void toolStripButton3_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadRamSearch(); + Global.MainForm.LoadRamSearch(); } private void HexEditor_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadHexEditor(); + Global.MainForm.LoadHexEditor(); } private void toolStripButton5_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.OpenLuaConsole(); + Global.MainForm.OpenLuaConsole(); } private void NESPPU_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadNESPPU(); + Global.MainForm.LoadNESPPU(); } private void NESDebugger_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadNESDebugger(); + Global.MainForm.LoadNESDebugger(); } private void NESGameGenie_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadGameGenieEC(); + Global.MainForm.LoadGameGenieEC(); } private void NESNameTable_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadNESNameTable(); + Global.MainForm.LoadNESNameTable(); } private void KeyPadTool_Click(object sender, EventArgs e) { if (Global.Emulator is TI83) { - GlobalWinF.MainForm.LoadTI83KeyPad(); + Global.MainForm.LoadTI83KeyPad(); } } private void TAStudioButton_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadTAStudio(); + Global.MainForm.LoadTAStudio(); } private void SNESGraphicsDebuggerButton_Click(object sender, EventArgs e) { if (Global.Emulator is LibsnesCore) { - GlobalWinF.MainForm.LoadSNESGraphicsDebugger(); + Global.MainForm.LoadSNESGraphicsDebugger(); } } private void TAStudioButton_Click_1(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadVirtualPads(); + Global.MainForm.LoadVirtualPads(); } private void SNESGameGenie_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadGameGenieEC(); + Global.MainForm.LoadGameGenieEC(); } private void GGGameGenie_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadGameGenieEC(); + Global.MainForm.LoadGameGenieEC(); } private void GBGameGenie_Click(object sender, EventArgs e) { - GlobalWinF.MainForm.LoadGameGenieEC(); + Global.MainForm.LoadGameGenieEC(); } diff --git a/BizHawk.MultiClient/tools/ToolHelpers.cs b/BizHawk.MultiClient/tools/ToolHelpers.cs index 705c39cbdc..0061f18092 100644 --- a/BizHawk.MultiClient/tools/ToolHelpers.cs +++ b/BizHawk.MultiClient/tools/ToolHelpers.cs @@ -1,63 +1,13 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class ToolHelpers { - public static FileInfo GetCheatFileFromUser(string currentFile) - { - var ofd = new OpenFileDialog(); - if (!String.IsNullOrWhiteSpace(currentFile)) - { - ofd.FileName = Path.GetFileNameWithoutExtension(currentFile); - } - ofd.InitialDirectory = PathManager.GetCheatsPath(Global.Game); - ofd.Filter = "Cheat Files (*.cht)|*.cht|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 GetCheatSaveFileFromUser(string currentFile) - { - var sfd = new SaveFileDialog(); - if (!String.IsNullOrWhiteSpace(currentFile)) - { - sfd.FileName = Path.GetFileNameWithoutExtension(currentFile); - } - else if (!(Global.Emulator is NullEmulator)) - { - sfd.FileName = PathManager.FilesystemSafeName(Global.Game); - } - sfd.InitialDirectory = PathManager.GetCheatsPath(Global.Game); - sfd.Filter = "Cheat Files (*.cht)|*.cht|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); - Global.Config.LastRomPath = file.DirectoryName; - return file; - } - public static ToolStripMenuItem GenerateAutoLoadItem(RecentFiles recent) { var auto = new ToolStripMenuItem { Text = "&Auto-Load", Checked = recent.AutoLoad }; @@ -96,14 +46,14 @@ namespace BizHawk.MultiClient public static void HandleLoadError(RecentFiles recent, string path) { - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); DialogResult result = MessageBox.Show("Could not open " + path + "\nRemove from list?", "File not found", MessageBoxButtons.YesNo, MessageBoxIcon.Error); if (result == DialogResult.Yes) { recent.Remove(path); } - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } public static ToolStripMenuItem[] GenerateMemoryDomainMenuItems(Action SetCallback, string SelectedDomain = "", int? maxSize = null) @@ -157,11 +107,11 @@ namespace BizHawk.MultiClient public static void UpdateCheatRelatedTools() { - GlobalWinF.MainForm.RamWatch1.UpdateValues(); - GlobalWinF.MainForm.HexEditor1.UpdateValues(); - GlobalWinF.MainForm.Cheats_UpdateValues(); - GlobalWinF.MainForm.RamSearch1.UpdateValues(); - GlobalWinF.MainForm.UpdateCheatStatus(); + Global.MainForm.RamWatch1.UpdateValues(); + Global.MainForm.HexEditor1.UpdateValues(); + Global.MainForm.Cheats_UpdateValues(); + Global.MainForm.RamSearch1.UpdateValues(); + Global.MainForm.UpdateCheatStatus(); } public static void UnfreezeAll() @@ -200,9 +150,9 @@ namespace BizHawk.MultiClient public static void ViewInHexEditor(MemoryDomain domain, IEnumerable addresses) { - GlobalWinF.MainForm.LoadHexEditor(); - GlobalWinF.MainForm.HexEditor1.SetDomain(domain); - GlobalWinF.MainForm.HexEditor1.SetToAddresses(addresses.ToList()); + Global.MainForm.LoadHexEditor(); + Global.MainForm.HexEditor1.SetDomain(domain); + Global.MainForm.HexEditor1.SetToAddresses(addresses.ToList()); } public static MemoryDomain DomainByName(string name) diff --git a/BizHawk.MultiClient/tools/TraceLogger.cs b/BizHawk.MultiClient/tools/TraceLogger.cs index 4ecb5670f5..9041628845 100644 --- a/BizHawk.MultiClient/tools/TraceLogger.cs +++ b/BizHawk.MultiClient/tools/TraceLogger.cs @@ -5,8 +5,6 @@ using System.Text; using System.Windows.Forms; using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class TraceLogger : Form @@ -31,7 +29,7 @@ namespace BizHawk.MultiClient public void SaveConfigSettings() { - GlobalWinF.CoreComm.Tracer.Enabled = false; + Global.CoreComm.Tracer.Enabled = false; Global.Config.TraceLoggerWndx = Location.X; Global.Config.TraceLoggerWndy = Location.Y; } @@ -62,7 +60,7 @@ namespace BizHawk.MultiClient ClearList(); LoggingEnabled.Checked = true; - GlobalWinF.CoreComm.Tracer.Enabled = true; + Global.CoreComm.Tracer.Enabled = true; SetTracerBoxTitle(); Restart(); } @@ -106,7 +104,7 @@ namespace BizHawk.MultiClient private void LoggingEnabled_CheckedChanged(object sender, EventArgs e) { - GlobalWinF.CoreComm.Tracer.Enabled = LoggingEnabled.Checked; + Global.CoreComm.Tracer.Enabled = LoggingEnabled.Checked; SetTracerBoxTitle(); } @@ -132,13 +130,13 @@ namespace BizHawk.MultiClient { using (StreamWriter sw = new StreamWriter(LogFile.FullName, true)) { - sw.Write(GlobalWinF.CoreComm.Tracer.TakeContents()); + sw.Write(Global.CoreComm.Tracer.TakeContents()); } } private void LogToWindow() { - string[] instructions = GlobalWinF.CoreComm.Tracer.TakeContents().Split('\n'); + string[] instructions = Global.CoreComm.Tracer.TakeContents().Split('\n'); if (!String.IsNullOrWhiteSpace(instructions[0])) { foreach (string s in instructions) @@ -199,7 +197,7 @@ namespace BizHawk.MultiClient private void SetTracerBoxTitle() { - if (GlobalWinF.CoreComm.Tracer.Enabled) + if (Global.CoreComm.Tracer.Enabled) { if (ToFileRadio.Checked) { @@ -320,10 +318,10 @@ namespace BizHawk.MultiClient sfd.Filter = "Text Files (*.txt)|*.txt|Log Files (*.log)|*.log|All Files|*.*"; sfd.RestoreDirectory = true; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) { return null; @@ -341,7 +339,7 @@ namespace BizHawk.MultiClient if (file != null) { DumpListToDisk(file); - GlobalWinF.OSD.AddMessage("Log dumped to " + file.FullName); + Global.OSD.AddMessage("Log dumped to " + file.FullName); } } diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26.cs index d01cf7e09a..de0455624e 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class VirtualPadA26 : VirtualPad @@ -148,15 +146,15 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "A26" && Global.Emulator.SystemId != "C64") return; if (sender == PU) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); else if (sender == PD) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); else if (sender == PL) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); else if (sender == PR) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); else if (sender == B1) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Button", B1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Button", B1.Checked); } public override void Clear() @@ -164,11 +162,11 @@ namespace BizHawk.MultiClient if (Global.Emulator.SystemId != "A26" && Global.Emulator.SystemId != "C64") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26Control.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26Control.cs index 425ef20c2f..ec10b6dbce 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26Control.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA26Control.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class VirtualPadA26Control : VirtualPad @@ -103,7 +101,7 @@ namespace BizHawk.MultiClient if (Global.Emulator.SystemId != "A26") return; else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Reset", B1.Checked); + Global.StickyXORAdapter.SetSticky("Reset", B1.Checked); if (B1.Checked) { B1.BackColor = Color.Pink; @@ -115,7 +113,7 @@ namespace BizHawk.MultiClient } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Select", B2.Checked); + Global.StickyXORAdapter.SetSticky("Select", B2.Checked); if (B2.Checked) { B2.BackColor = Color.Pink; @@ -131,8 +129,8 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "A26") return; - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Reset", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Pause", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Reset", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky("Pause", false); B1.Checked = false; B2.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78.cs index aa26454a71..1cdaeb27b4 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78.cs @@ -2,8 +2,6 @@ using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class VirtualPadA78 : UserControl, IVirtualPad @@ -79,27 +77,27 @@ namespace BizHawk.MultiClient } else if (sender == PU) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); } else if (sender == PD) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); } else if (sender == PL) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); } else if (sender == PR) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Trigger", B1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Trigger", B1.Checked); } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Trigger 2", B2.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Trigger 2", B2.Checked); } } @@ -108,12 +106,12 @@ namespace BizHawk.MultiClient if (Global.Emulator.SystemId != "A78") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Trigger", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Trigger 2", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Trigger", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Trigger 2", false); PU.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78Control.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78Control.cs index 119e780a99..03474c0124 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78Control.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadA78Control.cs @@ -2,8 +2,6 @@ using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class VirtualPadA78Control : UserControl, IVirtualPad @@ -78,19 +76,19 @@ namespace BizHawk.MultiClient } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Power", B1.Checked); + Global.StickyXORAdapter.SetSticky("Power", B1.Checked); } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Reset", B2.Checked); + Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); } else if (sender == B3) { - GlobalWinF.StickyXORAdapter.SetSticky("Select", B3.Checked); + Global.StickyXORAdapter.SetSticky("Select", B3.Checked); } else if (sender == B4) { - GlobalWinF.StickyXORAdapter.SetSticky("Pause", B4.Checked); + Global.StickyXORAdapter.SetSticky("Pause", B4.Checked); } } @@ -98,10 +96,10 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "A78") return; - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Power", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Reset", false); - if (B3.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Select", false); - if (B4.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Pause", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Power", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky("Reset", false); + if (B3.Checked) Global.StickyXORAdapter.SetSticky("Select", false); + if (B4.Checked) Global.StickyXORAdapter.SetSticky("Pause", false); B1.Checked = false; B2.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadButton.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadButton.cs index 35f6b4ffbb..4c57f6d612 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadButton.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadButton.cs @@ -45,7 +45,7 @@ namespace BizHawk.MultiClient protected void SetSticky() { - GlobalWinF.StickyXORAdapter.SetSticky(ControllerButton, Checked); + Global.StickyXORAdapter.SetSticky(ControllerButton, Checked); if (Checked == false) { @@ -55,7 +55,7 @@ namespace BizHawk.MultiClient protected void SetAutofireSticky() { - GlobalWinF.AutofireStickyXORAdapter.SetSticky(ControllerButton, Checked); + Global.AutofireStickyXORAdapter.SetSticky(ControllerButton, Checked); if (Checked == false) { @@ -92,8 +92,8 @@ namespace BizHawk.MultiClient _rightClicked = false; ForeColor = Color.Black; Checked = false; - GlobalWinF.AutofireStickyXORAdapter.SetSticky(ControllerButton, false); - GlobalWinF.StickyXORAdapter.SetSticky(ControllerButton, false); + Global.AutofireStickyXORAdapter.SetSticky(ControllerButton, false); + Global.StickyXORAdapter.SetSticky(ControllerButton, false); } } } diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadC64Keyboard.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadC64Keyboard.cs index e6f3e5b5cf..cef468a18d 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadC64Keyboard.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadC64Keyboard.cs @@ -2,8 +2,6 @@ using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class VirtualPadC64Keyboard : UserControl , IVirtualPad @@ -21,319 +19,319 @@ namespace BizHawk.MultiClient } else if (sender == KF1) { - GlobalWinF.StickyXORAdapter.SetSticky("Key F1", KF1.Checked); + Global.StickyXORAdapter.SetSticky("Key F1", KF1.Checked); } else if (sender == KF3) { - GlobalWinF.StickyXORAdapter.SetSticky("Key F3", KF3.Checked); + Global.StickyXORAdapter.SetSticky("Key F3", KF3.Checked); } else if (sender == KF5) { - GlobalWinF.StickyXORAdapter.SetSticky("Key F5", KF5.Checked); + Global.StickyXORAdapter.SetSticky("Key F5", KF5.Checked); } else if (sender == KF7) { - GlobalWinF.StickyXORAdapter.SetSticky("Key F7", KF7.Checked); + Global.StickyXORAdapter.SetSticky("Key F7", KF7.Checked); } else if (sender == KLeftArrow) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Left Arrow", KLeftArrow.Checked); + Global.StickyXORAdapter.SetSticky("Key Left Arrow", KLeftArrow.Checked); } else if (sender == K1) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 1", K1.Checked); + Global.StickyXORAdapter.SetSticky("Key 1", K1.Checked); } else if (sender == K2) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 2", K2.Checked); + Global.StickyXORAdapter.SetSticky("Key 2", K2.Checked); } else if (sender == K3) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 3", K3.Checked); + Global.StickyXORAdapter.SetSticky("Key 3", K3.Checked); } else if (sender == K4) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 4", K4.Checked); + Global.StickyXORAdapter.SetSticky("Key 4", K4.Checked); } else if (sender == K5) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 5", K5.Checked); + Global.StickyXORAdapter.SetSticky("Key 5", K5.Checked); } else if (sender == K6) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 6", K6.Checked); + Global.StickyXORAdapter.SetSticky("Key 6", K6.Checked); } else if (sender == K7) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 7", K7.Checked); + Global.StickyXORAdapter.SetSticky("Key 7", K7.Checked); } else if (sender == K8) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 8", K8.Checked); + Global.StickyXORAdapter.SetSticky("Key 8", K8.Checked); } else if (sender == K9) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 9", K9.Checked); + Global.StickyXORAdapter.SetSticky("Key 9", K9.Checked); } else if (sender == K0) { - GlobalWinF.StickyXORAdapter.SetSticky("Key 0", K0.Checked); + Global.StickyXORAdapter.SetSticky("Key 0", K0.Checked); } else if (sender == KPlus) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Plus", KPlus.Checked); + Global.StickyXORAdapter.SetSticky("Key Plus", KPlus.Checked); } else if (sender == KMinus) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Minus", KMinus.Checked); + Global.StickyXORAdapter.SetSticky("Key Minus", KMinus.Checked); } else if (sender == KPound) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Pound", KPound.Checked); + Global.StickyXORAdapter.SetSticky("Key Pound", KPound.Checked); } else if (sender == KClear) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Clear/Home", KClear.Checked); + Global.StickyXORAdapter.SetSticky("Key Clear/Home", KClear.Checked); } else if (sender == KInsert) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Insert/Delete", KInsert.Checked); + Global.StickyXORAdapter.SetSticky("Key Insert/Delete", KInsert.Checked); } else if (sender == KCtrl) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Control", KCtrl.Checked); + Global.StickyXORAdapter.SetSticky("Key Control", KCtrl.Checked); } else if (sender == KQ) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Q", KQ.Checked); + Global.StickyXORAdapter.SetSticky("Key Q", KQ.Checked); } else if (sender == KW) { - GlobalWinF.StickyXORAdapter.SetSticky("Key W", KW.Checked); + Global.StickyXORAdapter.SetSticky("Key W", KW.Checked); } else if (sender == KE) { - GlobalWinF.StickyXORAdapter.SetSticky("Key E", KE.Checked); + Global.StickyXORAdapter.SetSticky("Key E", KE.Checked); } else if (sender == KR) { - GlobalWinF.StickyXORAdapter.SetSticky("Key R", KR.Checked); + Global.StickyXORAdapter.SetSticky("Key R", KR.Checked); } else if (sender == KT) { - GlobalWinF.StickyXORAdapter.SetSticky("Key T", KT.Checked); + Global.StickyXORAdapter.SetSticky("Key T", KT.Checked); } else if (sender == KY) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Y", KY.Checked); + Global.StickyXORAdapter.SetSticky("Key Y", KY.Checked); } else if (sender == KU) { - GlobalWinF.StickyXORAdapter.SetSticky("Key U", KU.Checked); + Global.StickyXORAdapter.SetSticky("Key U", KU.Checked); } else if (sender == KI) { - GlobalWinF.StickyXORAdapter.SetSticky("Key I", KI.Checked); + Global.StickyXORAdapter.SetSticky("Key I", KI.Checked); } else if (sender == KO) { - GlobalWinF.StickyXORAdapter.SetSticky("Key O", KO.Checked); + Global.StickyXORAdapter.SetSticky("Key O", KO.Checked); } else if (sender == KP) { - GlobalWinF.StickyXORAdapter.SetSticky("Key P", KP.Checked); + Global.StickyXORAdapter.SetSticky("Key P", KP.Checked); } else if (sender == KAt) { - GlobalWinF.StickyXORAdapter.SetSticky("Key At", KAt.Checked); + Global.StickyXORAdapter.SetSticky("Key At", KAt.Checked); } else if (sender == KAsterisk) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Asterisk", KAsterisk.Checked); + Global.StickyXORAdapter.SetSticky("Key Asterisk", KAsterisk.Checked); } else if (sender == KUpArrow) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Up Arrow", KUpArrow.Checked); + Global.StickyXORAdapter.SetSticky("Key Up Arrow", KUpArrow.Checked); } else if (sender == KRST) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Restore", KRST.Checked); + Global.StickyXORAdapter.SetSticky("Key Restore", KRST.Checked); } else if (sender == KRun) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Run/Stop", KRun.Checked); + Global.StickyXORAdapter.SetSticky("Key Run/Stop", KRun.Checked); } else if (sender == KLck) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Lck", KLck.Checked); + Global.StickyXORAdapter.SetSticky("Key Lck", KLck.Checked); } else if (sender == KA) { - GlobalWinF.StickyXORAdapter.SetSticky("Key A", KA.Checked); + Global.StickyXORAdapter.SetSticky("Key A", KA.Checked); } else if (sender == KS) { - GlobalWinF.StickyXORAdapter.SetSticky("Key S", KS.Checked); + Global.StickyXORAdapter.SetSticky("Key S", KS.Checked); } else if (sender == KD) { - GlobalWinF.StickyXORAdapter.SetSticky("Key D", KD.Checked); + Global.StickyXORAdapter.SetSticky("Key D", KD.Checked); } else if (sender == KF) { - GlobalWinF.StickyXORAdapter.SetSticky("Key F", KF.Checked); + Global.StickyXORAdapter.SetSticky("Key F", KF.Checked); } else if (sender == KG) { - GlobalWinF.StickyXORAdapter.SetSticky("Key G", KG.Checked); + Global.StickyXORAdapter.SetSticky("Key G", KG.Checked); } else if (sender == KH) { - GlobalWinF.StickyXORAdapter.SetSticky("Key H", KH.Checked); + Global.StickyXORAdapter.SetSticky("Key H", KH.Checked); } else if (sender == KJ) { - GlobalWinF.StickyXORAdapter.SetSticky("Key J", KJ.Checked); + Global.StickyXORAdapter.SetSticky("Key J", KJ.Checked); } else if (sender == KK) { - GlobalWinF.StickyXORAdapter.SetSticky("Key K", KK.Checked); + Global.StickyXORAdapter.SetSticky("Key K", KK.Checked); } else if (sender == KL) { - GlobalWinF.StickyXORAdapter.SetSticky("Key L", KL.Checked); + Global.StickyXORAdapter.SetSticky("Key L", KL.Checked); } else if (sender == KColon) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Colon", KColon.Checked); + Global.StickyXORAdapter.SetSticky("Key Colon", KColon.Checked); } else if (sender == KSemicolon) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Semicolon", KSemicolon.Checked); + Global.StickyXORAdapter.SetSticky("Key Semicolon", KSemicolon.Checked); } else if (sender == KEquals) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Equal", KEquals.Checked); + Global.StickyXORAdapter.SetSticky("Key Equal", KEquals.Checked); } else if (sender == KReturn) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Return", KReturn.Checked); + Global.StickyXORAdapter.SetSticky("Key Return", KReturn.Checked); } else if (sender == KCommodore) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Commodore", KCommodore.Checked); + Global.StickyXORAdapter.SetSticky("Key Commodore", KCommodore.Checked); } else if (sender == KLeftShift) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Left Shift", KLeftShift.Checked); + Global.StickyXORAdapter.SetSticky("Key Left Shift", KLeftShift.Checked); } else if (sender == KZ) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Z", KZ.Checked); + Global.StickyXORAdapter.SetSticky("Key Z", KZ.Checked); } else if (sender == KX) { - GlobalWinF.StickyXORAdapter.SetSticky("Key X", KX.Checked); + Global.StickyXORAdapter.SetSticky("Key X", KX.Checked); } else if (sender == KC) { - GlobalWinF.StickyXORAdapter.SetSticky("Key C", KC.Checked); + Global.StickyXORAdapter.SetSticky("Key C", KC.Checked); } else if (sender == KV) { - GlobalWinF.StickyXORAdapter.SetSticky("Key V", KV.Checked); + Global.StickyXORAdapter.SetSticky("Key V", KV.Checked); } else if (sender == KB) { - GlobalWinF.StickyXORAdapter.SetSticky("Key B", KB.Checked); + Global.StickyXORAdapter.SetSticky("Key B", KB.Checked); } else if (sender == KN) { - GlobalWinF.StickyXORAdapter.SetSticky("Key N", KN.Checked); + Global.StickyXORAdapter.SetSticky("Key N", KN.Checked); } else if (sender == KM) { - GlobalWinF.StickyXORAdapter.SetSticky("Key M", KM.Checked); + Global.StickyXORAdapter.SetSticky("Key M", KM.Checked); } else if (sender == KComma) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Comma", KComma.Checked); + Global.StickyXORAdapter.SetSticky("Key Comma", KComma.Checked); } else if (sender == KSemicolon) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Semicolon", KSemicolon.Checked); + Global.StickyXORAdapter.SetSticky("Key Semicolon", KSemicolon.Checked); } else if (sender == KEquals) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Equal", KEquals.Checked); + Global.StickyXORAdapter.SetSticky("Key Equal", KEquals.Checked); } else if (sender == KReturn) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Return", KReturn.Checked); + Global.StickyXORAdapter.SetSticky("Key Return", KReturn.Checked); } else if (sender == KCommodore) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Commodore", KCommodore.Checked); + Global.StickyXORAdapter.SetSticky("Key Commodore", KCommodore.Checked); } else if (sender == KLeftShift) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Left Shift", KLeftShift.Checked); + Global.StickyXORAdapter.SetSticky("Key Left Shift", KLeftShift.Checked); } else if (sender == KZ) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Z", KZ.Checked); + Global.StickyXORAdapter.SetSticky("Key Z", KZ.Checked); } else if (sender == KX) { - GlobalWinF.StickyXORAdapter.SetSticky("Key X", KX.Checked); + Global.StickyXORAdapter.SetSticky("Key X", KX.Checked); } else if (sender == KC) { - GlobalWinF.StickyXORAdapter.SetSticky("Key C", KC.Checked); + Global.StickyXORAdapter.SetSticky("Key C", KC.Checked); } else if (sender == KV) { - GlobalWinF.StickyXORAdapter.SetSticky("Key V", KV.Checked); + Global.StickyXORAdapter.SetSticky("Key V", KV.Checked); } else if (sender == KB) { - GlobalWinF.StickyXORAdapter.SetSticky("Key B", KB.Checked); + Global.StickyXORAdapter.SetSticky("Key B", KB.Checked); } else if (sender == KN) { - GlobalWinF.StickyXORAdapter.SetSticky("Key N", KN.Checked); + Global.StickyXORAdapter.SetSticky("Key N", KN.Checked); } else if (sender == KM) { - GlobalWinF.StickyXORAdapter.SetSticky("Key M", KM.Checked); + Global.StickyXORAdapter.SetSticky("Key M", KM.Checked); } else if (sender == KComma) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Comma", KComma.Checked); + Global.StickyXORAdapter.SetSticky("Key Comma", KComma.Checked); } else if (sender == KPeriod) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Period", KPeriod.Checked); + Global.StickyXORAdapter.SetSticky("Key Period", KPeriod.Checked); } else if (sender == KSlash) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Slash", KSlash.Checked); + Global.StickyXORAdapter.SetSticky("Key Slash", KSlash.Checked); } else if (sender == KRightShift) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Right Shift", KRightShift.Checked); + Global.StickyXORAdapter.SetSticky("Key Right Shift", KRightShift.Checked); } else if (sender == KCursorUp) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Cursor Up/Down", KCursorUp.Checked); + Global.StickyXORAdapter.SetSticky("Key Cursor Up/Down", KCursorUp.Checked); } else if (sender == KCursorLeft) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Cursor Left/Right", KCursorLeft.Checked); + Global.StickyXORAdapter.SetSticky("Key Cursor Left/Right", KCursorLeft.Checked); } else if (sender == KSpace) { - GlobalWinF.StickyXORAdapter.SetSticky("Key Space", KSpace.Checked); + Global.StickyXORAdapter.SetSticky("Key Space", KSpace.Checked); } } @@ -345,71 +343,71 @@ namespace BizHawk.MultiClient } else { - if (KF1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key F1", false); - if (KF3.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key F3", false); - if (KF5.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key F5", false); - if (KF7.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key F7", false); - if (KLeftArrow.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Left Arrow", false); - if (K1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 1", false); - if (K2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 2", false); - if (K3.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 3", false); - if (K4.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 4", false); - if (K5.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 5", false); - if (K6.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 6", false); - if (K7.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 7", false); - if (K8.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 8", false); - if (K9.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key 9", false); - if (K0.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Plus", false); - if (KPlus.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Minus", false); - if (KMinus.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Pound", false); - if (KPound.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Clear/Home", false); - if (KClear.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Insert/Delete", false); - if (KInsert.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Control", false); - if (KCtrl.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Q", false); - if (KQ.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key W", false); - if (KW.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key E", false); - if (KE.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key R", false); - if (KR.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key T", false); - if (KT.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Y", false); - if (KY.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key U", false); - if (KU.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key I", false); - if (KI.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key O", false); - if (KO.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key P", false); - if (KP.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key At", false); - if (KAt.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Asterisk", false); - if (KAsterisk.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Up Arrow", false); - if (KUpArrow.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Restore", false); - if (KRST.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Run/Stop", false); - if (KRun.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Lck", false); - if (KLck.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key A", false); - if (KA.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key S", false); - if (KS.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key D", false); - if (KD.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key F", false); - if (KF.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key G", false); - if (KG.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key H", false); - if (KH.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key J", false); - if (KJ.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key K", false); - if (KK.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key L", false); - if (KL.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Colon", false); - if (KColon.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Semicolon", false); - if (KSemicolon.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Equal", false); - if (KEquals.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Return", false); - if (KReturn.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Commodore", false); - if (KCommodore.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Left Shift", false); - if (KLeftShift.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Z", false); - if (KZ.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key X", false); - if (KX.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key C", false); - if (KC.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key V", false); - if (KV.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key B", false); - if (KB.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key N", false); - if (KN.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key M", false); - if (KM.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Comma", false); - if (KComma.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Period", false); - if (KPeriod.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Slash", false); - if (KSlash.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Right Shift", false); - if (KRightShift.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Cursor Up/Down", false); - if (KCursorUp.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Cursor Left/Right", false); - if (KCursorLeft.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Key Space", false); + if (KF1.Checked) Global.StickyXORAdapter.SetSticky("Key F1", false); + if (KF3.Checked) Global.StickyXORAdapter.SetSticky("Key F3", false); + if (KF5.Checked) Global.StickyXORAdapter.SetSticky("Key F5", false); + if (KF7.Checked) Global.StickyXORAdapter.SetSticky("Key F7", false); + if (KLeftArrow.Checked) Global.StickyXORAdapter.SetSticky("Key Left Arrow", false); + if (K1.Checked) Global.StickyXORAdapter.SetSticky("Key 1", false); + if (K2.Checked) Global.StickyXORAdapter.SetSticky("Key 2", false); + if (K3.Checked) Global.StickyXORAdapter.SetSticky("Key 3", false); + if (K4.Checked) Global.StickyXORAdapter.SetSticky("Key 4", false); + if (K5.Checked) Global.StickyXORAdapter.SetSticky("Key 5", false); + if (K6.Checked) Global.StickyXORAdapter.SetSticky("Key 6", false); + if (K7.Checked) Global.StickyXORAdapter.SetSticky("Key 7", false); + if (K8.Checked) Global.StickyXORAdapter.SetSticky("Key 8", false); + if (K9.Checked) Global.StickyXORAdapter.SetSticky("Key 9", false); + if (K0.Checked) Global.StickyXORAdapter.SetSticky("Key Plus", false); + if (KPlus.Checked) Global.StickyXORAdapter.SetSticky("Key Minus", false); + if (KMinus.Checked) Global.StickyXORAdapter.SetSticky("Key Pound", false); + if (KPound.Checked) Global.StickyXORAdapter.SetSticky("Key Clear/Home", false); + if (KClear.Checked) Global.StickyXORAdapter.SetSticky("Key Insert/Delete", false); + if (KInsert.Checked) Global.StickyXORAdapter.SetSticky("Key Control", false); + if (KCtrl.Checked) Global.StickyXORAdapter.SetSticky("Key Q", false); + if (KQ.Checked) Global.StickyXORAdapter.SetSticky("Key W", false); + if (KW.Checked) Global.StickyXORAdapter.SetSticky("Key E", false); + if (KE.Checked) Global.StickyXORAdapter.SetSticky("Key R", false); + if (KR.Checked) Global.StickyXORAdapter.SetSticky("Key T", false); + if (KT.Checked) Global.StickyXORAdapter.SetSticky("Key Y", false); + if (KY.Checked) Global.StickyXORAdapter.SetSticky("Key U", false); + if (KU.Checked) Global.StickyXORAdapter.SetSticky("Key I", false); + if (KI.Checked) Global.StickyXORAdapter.SetSticky("Key O", false); + if (KO.Checked) Global.StickyXORAdapter.SetSticky("Key P", false); + if (KP.Checked) Global.StickyXORAdapter.SetSticky("Key At", false); + if (KAt.Checked) Global.StickyXORAdapter.SetSticky("Key Asterisk", false); + if (KAsterisk.Checked) Global.StickyXORAdapter.SetSticky("Key Up Arrow", false); + if (KUpArrow.Checked) Global.StickyXORAdapter.SetSticky("Key Restore", false); + if (KRST.Checked) Global.StickyXORAdapter.SetSticky("Key Run/Stop", false); + if (KRun.Checked) Global.StickyXORAdapter.SetSticky("Key Lck", false); + if (KLck.Checked) Global.StickyXORAdapter.SetSticky("Key A", false); + if (KA.Checked) Global.StickyXORAdapter.SetSticky("Key S", false); + if (KS.Checked) Global.StickyXORAdapter.SetSticky("Key D", false); + if (KD.Checked) Global.StickyXORAdapter.SetSticky("Key F", false); + if (KF.Checked) Global.StickyXORAdapter.SetSticky("Key G", false); + if (KG.Checked) Global.StickyXORAdapter.SetSticky("Key H", false); + if (KH.Checked) Global.StickyXORAdapter.SetSticky("Key J", false); + if (KJ.Checked) Global.StickyXORAdapter.SetSticky("Key K", false); + if (KK.Checked) Global.StickyXORAdapter.SetSticky("Key L", false); + if (KL.Checked) Global.StickyXORAdapter.SetSticky("Key Colon", false); + if (KColon.Checked) Global.StickyXORAdapter.SetSticky("Key Semicolon", false); + if (KSemicolon.Checked) Global.StickyXORAdapter.SetSticky("Key Equal", false); + if (KEquals.Checked) Global.StickyXORAdapter.SetSticky("Key Return", false); + if (KReturn.Checked) Global.StickyXORAdapter.SetSticky("Key Commodore", false); + if (KCommodore.Checked) Global.StickyXORAdapter.SetSticky("Key Left Shift", false); + if (KLeftShift.Checked) Global.StickyXORAdapter.SetSticky("Key Z", false); + if (KZ.Checked) Global.StickyXORAdapter.SetSticky("Key X", false); + if (KX.Checked) Global.StickyXORAdapter.SetSticky("Key C", false); + if (KC.Checked) Global.StickyXORAdapter.SetSticky("Key V", false); + if (KV.Checked) Global.StickyXORAdapter.SetSticky("Key B", false); + if (KB.Checked) Global.StickyXORAdapter.SetSticky("Key N", false); + if (KN.Checked) Global.StickyXORAdapter.SetSticky("Key M", false); + if (KM.Checked) Global.StickyXORAdapter.SetSticky("Key Comma", false); + if (KComma.Checked) Global.StickyXORAdapter.SetSticky("Key Period", false); + if (KPeriod.Checked) Global.StickyXORAdapter.SetSticky("Key Slash", false); + if (KSlash.Checked) Global.StickyXORAdapter.SetSticky("Key Right Shift", false); + if (KRightShift.Checked) Global.StickyXORAdapter.SetSticky("Key Cursor Up/Down", false); + if (KCursorUp.Checked) Global.StickyXORAdapter.SetSticky("Key Cursor Left/Right", false); + if (KCursorLeft.Checked) Global.StickyXORAdapter.SetSticky("Key Space", false); KF1.Checked = false; KF3.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadColeco.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadColeco.cs index 79cb8a15f7..a7c08c3955 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadColeco.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadColeco.cs @@ -2,8 +2,6 @@ using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class VirtualPadColeco : UserControl , IVirtualPad @@ -109,42 +107,42 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "Coleco") return; if (sender == PU) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); else if (sender == PD) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); else if (sender == PL) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); else if (sender == PR) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); else if (sender == KeyLeft) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " L", KeyLeft.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " L", KeyLeft.Checked); else if (sender == KeyRight) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " R", KeyRight.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " R", KeyRight.Checked); else if (sender == KP1) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key1", KP1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key1", KP1.Checked); else if (sender == KP2) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key2", KP2.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key2", KP2.Checked); else if (sender == KP3) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key3", KP3.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key3", KP3.Checked); else if (sender == KP4) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key4", KP4.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key4", KP4.Checked); else if (sender == KP5) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key5", KP5.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key5", KP5.Checked); else if (sender == KP6) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key6", KP6.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key6", KP6.Checked); else if (sender == KP7) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key7", KP7.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key7", KP7.Checked); else if (sender == KP8) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key8", KP8.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key8", KP8.Checked); else if (sender == KP9) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key9", KP9.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key9", KP9.Checked); else if (sender == KPStar) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Star", KPStar.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Star", KPStar.Checked); else if (sender == KP0) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key0", KP0.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Key0", KP0.Checked); else if (sender == KPPound) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Pound", KPPound.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Pound", KPPound.Checked); } public void Clear() @@ -152,24 +150,24 @@ namespace BizHawk.MultiClient if (Global.Emulator.SystemId != "Coleco") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (KeyLeft.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " L", false); - if (KeyRight.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " R", false); - if (KP1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key0", false); - if (KP2.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key1", false); - if (KP3.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key2", false); - if (KP4.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key3", false); - if (KP5.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key4", false); - if (KP6.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key5", false); - if (KP7.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key6", false); - if (KP8.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key7", false); - if (KP9.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key8", false); - if (KPStar.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Key9", false); - if (KP0.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Star", false); - if (KPPound.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Pound", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (KeyLeft.Checked) Global.StickyXORAdapter.SetSticky(Controller + " L", false); + if (KeyRight.Checked) Global.StickyXORAdapter.SetSticky(Controller + " R", false); + if (KP1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key0", false); + if (KP2.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key1", false); + if (KP3.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key2", false); + if (KP4.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key3", false); + if (KP5.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key4", false); + if (KP6.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key5", false); + if (KP7.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key6", false); + if (KP8.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key7", false); + if (KP9.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key8", false); + if (KPStar.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Key9", false); + if (KP0.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Star", false); + if (KPPound.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Pound", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs index a4c460a397..d69442b706 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs @@ -2,9 +2,7 @@ using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; - using BizHawk.Emulation.Consoles.Nintendo.N64; -using BizHawk.Client.Common; namespace BizHawk.MultiClient { @@ -226,8 +224,8 @@ namespace BizHawk.MultiClient protected override void OnClosed(EventArgs e) { //is this a good idea? - GlobalWinF.StickyXORAdapter.ClearStickies(); - GlobalWinF.StickyXORAdapter.ClearStickyFloats(); + Global.StickyXORAdapter.ClearStickies(); + Global.StickyXORAdapter.ClearStickyFloats(); } public void ClearVirtualPadHolds() diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGB.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGB.cs index 24a07def1f..e06bfdd701 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGB.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGB.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadGB : VirtualPad @@ -203,35 +201,35 @@ namespace BizHawk.MultiClient } else if (sender == PU) { - GlobalWinF.StickyXORAdapter.SetSticky("Up", PU.Checked); + Global.StickyXORAdapter.SetSticky("Up", PU.Checked); } else if (sender == PD) { - GlobalWinF.StickyXORAdapter.SetSticky("Down", PD.Checked); + Global.StickyXORAdapter.SetSticky("Down", PD.Checked); } else if (sender == PL) { - GlobalWinF.StickyXORAdapter.SetSticky("Left", PL.Checked); + Global.StickyXORAdapter.SetSticky("Left", PL.Checked); } else if (sender == PR) { - GlobalWinF.StickyXORAdapter.SetSticky("Right", PR.Checked); + Global.StickyXORAdapter.SetSticky("Right", PR.Checked); } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Select", B1.Checked); + Global.StickyXORAdapter.SetSticky("Select", B1.Checked); } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Start", B2.Checked); + Global.StickyXORAdapter.SetSticky("Start", B2.Checked); } else if (sender == B3) { - GlobalWinF.StickyXORAdapter.SetSticky("B", B3.Checked); + Global.StickyXORAdapter.SetSticky("B", B3.Checked); } else if (sender == B4) { - GlobalWinF.StickyXORAdapter.SetSticky("A", B4.Checked); + Global.StickyXORAdapter.SetSticky("A", B4.Checked); } } @@ -240,14 +238,14 @@ namespace BizHawk.MultiClient if (Global.Emulator.SystemId != "GB") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Select", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Start", false); - if (B3.Checked) GlobalWinF.StickyXORAdapter.SetSticky("B", false); - if (B4.Checked) GlobalWinF.StickyXORAdapter.SetSticky("A", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky("Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky("Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky("Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky("Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Select", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky("Start", false); + if (B3.Checked) Global.StickyXORAdapter.SetSticky("B", false); + if (B4.Checked) Global.StickyXORAdapter.SetSticky("A", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBA.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBA.cs index 59fcd03203..85f879f876 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBA.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBA.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class VirtualPadGBA : VirtualPad @@ -231,41 +229,41 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "GBA") return; if (sender == PU) - GlobalWinF.StickyXORAdapter.SetSticky("Up", PU.Checked); + Global.StickyXORAdapter.SetSticky("Up", PU.Checked); else if (sender == PD) - GlobalWinF.StickyXORAdapter.SetSticky("Down", PD.Checked); + Global.StickyXORAdapter.SetSticky("Down", PD.Checked); else if (sender == PL) - GlobalWinF.StickyXORAdapter.SetSticky("Left", PL.Checked); + Global.StickyXORAdapter.SetSticky("Left", PL.Checked); else if (sender == PR) - GlobalWinF.StickyXORAdapter.SetSticky("Right", PR.Checked); + Global.StickyXORAdapter.SetSticky("Right", PR.Checked); else if (sender == B1) - GlobalWinF.StickyXORAdapter.SetSticky("Select", B1.Checked); + Global.StickyXORAdapter.SetSticky("Select", B1.Checked); else if (sender == B2) - GlobalWinF.StickyXORAdapter.SetSticky("Start", B2.Checked); + Global.StickyXORAdapter.SetSticky("Start", B2.Checked); else if (sender == B3) - GlobalWinF.StickyXORAdapter.SetSticky("B", B3.Checked); + Global.StickyXORAdapter.SetSticky("B", B3.Checked); else if (sender == B4) - GlobalWinF.StickyXORAdapter.SetSticky("A", B4.Checked); + Global.StickyXORAdapter.SetSticky("A", B4.Checked); else if (sender == B5) - GlobalWinF.StickyXORAdapter.SetSticky("L", B5.Checked); + Global.StickyXORAdapter.SetSticky("L", B5.Checked); else if (sender == B6) - GlobalWinF.StickyXORAdapter.SetSticky("R", B6.Checked); + Global.StickyXORAdapter.SetSticky("R", B6.Checked); } public override void Clear() { if (Global.Emulator.SystemId != "GBA") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Select", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Start", false); - if (B3.Checked) GlobalWinF.StickyXORAdapter.SetSticky("B", false); - if (B4.Checked) GlobalWinF.StickyXORAdapter.SetSticky("A", false); - if (B5.Checked) GlobalWinF.StickyXORAdapter.SetSticky("L", false); - if (B6.Checked) GlobalWinF.StickyXORAdapter.SetSticky("R", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky("Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky("Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky("Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky("Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Select", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky("Start", false); + if (B3.Checked) Global.StickyXORAdapter.SetSticky("B", false); + if (B4.Checked) Global.StickyXORAdapter.SetSticky("A", false); + if (B5.Checked) Global.StickyXORAdapter.SetSticky("L", false); + if (B6.Checked) Global.StickyXORAdapter.SetSticky("R", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBControl.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBControl.cs index fa36b8898e..334ff952cc 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBControl.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGBControl.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadGBControl : VirtualPad @@ -95,7 +93,7 @@ namespace BizHawk.MultiClient } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Power", B1.Checked); + Global.StickyXORAdapter.SetSticky("Power", B1.Checked); if (B1.Checked) { B1.BackColor = Color.Pink; @@ -114,7 +112,7 @@ namespace BizHawk.MultiClient return; } - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Power", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Power", false); B1.Checked = false; } diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGen3Button.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGen3Button.cs index 79fbf44c51..35be775bfe 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGen3Button.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadGen3Button.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class VirtualPadGen3Button : VirtualPad @@ -195,35 +193,35 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "GEN") return; if (sender == PU) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); else if (sender == PD) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); else if (sender == PL) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); else if (sender == PR) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); else if (sender == B1) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " C", B1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " C", B1.Checked); else if (sender == B2) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", B2.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Start", B2.Checked); else if (sender == B3) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", B3.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B", B3.Checked); else if (sender == B4) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", B4.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " A", B4.Checked); } public override void Clear() { if (Global.Emulator.SystemId != "GEN") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " C", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", false); - if (B3.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", false); - if (B4.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " C", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Start", false); + if (B3.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B", false); + if (B4.Checked) Global.StickyXORAdapter.SetSticky(Controller + " A", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs index 5805c8c5f7..e3a617d588 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs @@ -4,8 +4,6 @@ using System.Windows.Forms; using System.Collections.Generic; using System.Linq; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class VirtualPadN64 : UserControl, IVirtualPad @@ -167,8 +165,8 @@ namespace BizHawk.MultiClient { int? x = hasValue ? X : (int?)null; int? y = hasValue ? Y : (int?)null; - GlobalWinF.StickyXORAdapter.SetFloat(Controller + " X Axis", x); - GlobalWinF.StickyXORAdapter.SetFloat(Controller + " Y Axis", y); + Global.StickyXORAdapter.SetFloat(Controller + " X Axis", x); + Global.StickyXORAdapter.SetFloat(Controller + " Y Axis", y); AnalogControl1.X = X; AnalogControl1.Y = Y; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64Control.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64Control.cs index 0eb52d1f39..aae6868bac 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64Control.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64Control.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadN64Control : VirtualPad @@ -118,7 +116,7 @@ namespace BizHawk.MultiClient } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Power", B1.Checked); + Global.StickyXORAdapter.SetSticky("Power", B1.Checked); if (B1.Checked) B1.BackColor = Color.Pink; else @@ -126,7 +124,7 @@ namespace BizHawk.MultiClient } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Reset", B2.Checked); + Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); if (B2.Checked) B2.BackColor = Color.Pink; else @@ -141,7 +139,7 @@ namespace BizHawk.MultiClient B1.Checked = false; B2.Checked = false; - GlobalWinF.StickyXORAdapter.SetSticky("Reset", false); + Global.StickyXORAdapter.SetSticky("Reset", false); } } } diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNES.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNES.cs index 046f3bcc5f..e08dbde346 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNES.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNES.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadNES : VirtualPad @@ -198,35 +196,35 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "NES") return; if (sender == PU) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); else if (sender == PD) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); else if (sender == PL) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); else if (sender == PR) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); else if (sender == B1) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Select", B1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Select", B1.Checked); else if (sender == B2) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", B2.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Start", B2.Checked); else if (sender == B3) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", B3.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B", B3.Checked); else if (sender == B4) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", B4.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " A", B4.Checked); } public override void Clear() { if (Global.Emulator.SystemId != "NES") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Select", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", false); - if (B3.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", false); - if (B4.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Select", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Start", false); + if (B3.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B", false); + if (B4.Checked) Global.StickyXORAdapter.SetSticky(Controller + " A", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNESControl.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNESControl.cs index 373d71b123..9bab96025e 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNESControl.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadNESControl.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadNESControl : VirtualPad @@ -118,7 +116,7 @@ namespace BizHawk.MultiClient } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Power", B1.Checked); + Global.StickyXORAdapter.SetSticky("Power", B1.Checked); if (B1.Checked) B1.BackColor = Color.Pink; else @@ -126,7 +124,7 @@ namespace BizHawk.MultiClient } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Reset", B2.Checked); + Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); if (B2.Checked) B2.BackColor = Color.Pink; else @@ -141,7 +139,7 @@ namespace BizHawk.MultiClient B1.Checked = false; B2.Checked = false; - GlobalWinF.StickyXORAdapter.SetSticky("Reset", false); + Global.StickyXORAdapter.SetSticky("Reset", false); } } } diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadPCE.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadPCE.cs index 3d09dff019..02f2e8a2f8 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadPCE.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadPCE.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadPCE : VirtualPad @@ -198,35 +196,35 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "PCE") return; if (sender == PU) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); else if (sender == PD) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); else if (sender == PL) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); else if (sender == PR) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); else if (sender == B1) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Select", B1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Select", B1.Checked); else if (sender == B2) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Run", B2.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Run", B2.Checked); else if (sender == B3) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B2", B3.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B2", B3.Checked); else if (sender == B4) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B1", B4.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B1", B4.Checked); } public override void Clear() { if (Global.Emulator.SystemId != "PCE" && Global.Emulator.SystemId != "PCECD" && Global.Emulator.SystemId != "SGX") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Select", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Run", false); - if (B3.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B2", false); - if (B4.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B1", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Select", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Run", false); + if (B3.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B2", false); + if (B4.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B1", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMS.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMS.cs index 5d1bf9baf0..ef49fe0b0e 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMS.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMS.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadSMS : VirtualPad @@ -169,29 +167,29 @@ namespace BizHawk.MultiClient if (Global.Emulator.SystemId != "SMS" && Global.Emulator.SystemId != "GG" && Global.Emulator.SystemId != "SG") return; if (sender == PU) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); else if (sender == PD) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); else if (sender == PL) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); else if (sender == PR) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); else if (sender == B1) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B1", B1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B1", B1.Checked); else if (sender == B2) - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B2", B2.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B2", B2.Checked); } public override void Clear() { if (Global.Emulator.SystemId != "SMS" && Global.Emulator.SystemId != "GG" && Global.Emulator.SystemId != "SG") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B1", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B2", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B1", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B2", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMSControl.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMSControl.cs index e71e651fa9..b3fb55a9f5 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMSControl.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSMSControl.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadSMSControl : VirtualPad @@ -104,7 +102,7 @@ namespace BizHawk.MultiClient else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Pause", B1.Checked); + Global.StickyXORAdapter.SetSticky("Pause", B1.Checked); if (B1.Checked) B1.BackColor = Color.Pink; else @@ -112,7 +110,7 @@ namespace BizHawk.MultiClient } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Reset", B2.Checked); + Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); if (B2.Checked) B2.BackColor = Color.Pink; else @@ -124,8 +122,8 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "SMS" && Global.Emulator.SystemId != "GG" && Global.Emulator.SystemId != "SG") return; - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Pause", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Reset", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Pause", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky("Reset", false); B1.Checked = false; B2.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNES.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNES.cs index 2274b3c9c4..910fbf72df 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNES.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNES.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadSNES : VirtualPad @@ -267,52 +265,52 @@ namespace BizHawk.MultiClient } else if (sender == PU) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); } else if (sender == PD) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); } else if (sender == PL) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); } else if (sender == PR) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Select", B1.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Select", B1.Checked); } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", B2.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Start", B2.Checked); } else if (sender == B3) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", B3.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B", B3.Checked); } else if (sender == B4) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", B4.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " A", B4.Checked); } else if (sender == B5) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " X", B5.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " X", B5.Checked); } else if (sender == B6) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Y", B6.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Y", B6.Checked); } else if (sender == B7) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " L", B7.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " L", B7.Checked); } else if (sender == B8) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " R", B8.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " R", B8.Checked); } } @@ -324,18 +322,18 @@ namespace BizHawk.MultiClient } else { - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Select", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", false); - if (B3.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", false); - if (B4.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", false); - if (B5.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " X", false); - if (B6.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Y", false); - if (B7.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " L", false); - if (B8.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " R", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Select", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Start", false); + if (B3.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B", false); + if (B4.Checked) Global.StickyXORAdapter.SetSticky(Controller + " A", false); + if (B5.Checked) Global.StickyXORAdapter.SetSticky(Controller + " X", false); + if (B6.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Y", false); + if (B7.Checked) Global.StickyXORAdapter.SetSticky(Controller + " L", false); + if (B8.Checked) Global.StickyXORAdapter.SetSticky(Controller + " R", false); PU.Checked = false; PD.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNESControl.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNESControl.cs index d9a2cf1669..94ce4bd05c 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNESControl.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSNESControl.cs @@ -3,8 +3,6 @@ using System.Drawing; using System.Windows.Forms; using System.Text; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class VirtualPadSNESControl : VirtualPad @@ -128,7 +126,7 @@ namespace BizHawk.MultiClient } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Power", B1.Checked); + Global.StickyXORAdapter.SetSticky("Power", B1.Checked); if (B1.Checked) { B1.BackColor = Color.Pink; @@ -140,7 +138,7 @@ namespace BizHawk.MultiClient } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Reset", B2.Checked); + Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); if (B2.Checked) { B2.BackColor = Color.Pink; @@ -160,8 +158,8 @@ namespace BizHawk.MultiClient } else { - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Reset", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Power", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Reset", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky("Power", false); B1.Checked = false; B2.Checked = false; diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturn.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturn.cs index 1209c28405..999ef7fe6e 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturn.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturn.cs @@ -2,8 +2,6 @@ using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class VirtualPadSaturn : UserControl, IVirtualPad @@ -83,23 +81,23 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "SAT") return; - if (PU.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", false); - if (PD.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", false); - if (PL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", false); - if (PR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", false); + if (PU.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Up", false); + if (PD.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Down", false); + if (PL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Left", false); + if (PR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Right", false); - if (BStart.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", false); + if (BStart.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Start", false); - if (BX.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " X", false); - if (BY.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Y", false); - if (BZ.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Z", false); + if (BX.Checked) Global.StickyXORAdapter.SetSticky(Controller + " X", false); + if (BY.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Y", false); + if (BZ.Checked) Global.StickyXORAdapter.SetSticky(Controller + " Z", false); - if (BA.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", false); - if (BB.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", false); - if (BC.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " C", false); + if (BA.Checked) Global.StickyXORAdapter.SetSticky(Controller + " A", false); + if (BB.Checked) Global.StickyXORAdapter.SetSticky(Controller + " B", false); + if (BC.Checked) Global.StickyXORAdapter.SetSticky(Controller + " C", false); - if (BL.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " L", false); - if (BR.Checked) GlobalWinF.StickyXORAdapter.SetSticky(Controller + " R", false); + if (BL.Checked) Global.StickyXORAdapter.SetSticky(Controller + " L", false); + if (BR.Checked) Global.StickyXORAdapter.SetSticky(Controller + " R", false); PU.Checked = false; PD.Checked = false; @@ -145,55 +143,55 @@ namespace BizHawk.MultiClient } else if (sender == PU) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Up", PU.Checked); } else if (sender == PD) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Down", PD.Checked); } else if (sender == PL) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Left", PL.Checked); } else if (sender == PR) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Right", PR.Checked); } else if (sender == BStart) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Start", BStart.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Start", BStart.Checked); } else if (sender == BX) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " X", BX.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " X", BX.Checked); } else if (sender == BY) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Y", BY.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Y", BY.Checked); } else if (sender == BZ) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " Z", BZ.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " Z", BZ.Checked); } else if (sender == BA) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " A", BA.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " A", BA.Checked); } else if (sender == BB) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " B", BB.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " B", BB.Checked); } else if (sender == BC) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " C", BC.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " C", BC.Checked); } else if (sender == BL) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " L", BL.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " L", BL.Checked); } else if (sender == BR) { - GlobalWinF.StickyXORAdapter.SetSticky(Controller + " R", BR.Checked); + Global.StickyXORAdapter.SetSticky(Controller + " R", BR.Checked); } } } diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturnControl.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturnControl.cs index c21ef2882a..25c866a2a8 100644 --- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturnControl.cs +++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadSaturnControl.cs @@ -2,8 +2,6 @@ using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class VirtualPadSaturnControl : UserControl, IVirtualPad @@ -79,11 +77,11 @@ namespace BizHawk.MultiClient } else if (sender == B1) { - GlobalWinF.StickyXORAdapter.SetSticky("Power", B1.Checked); + Global.StickyXORAdapter.SetSticky("Power", B1.Checked); } else if (sender == B2) { - GlobalWinF.StickyXORAdapter.SetSticky("Reset", B2.Checked); + Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); } } @@ -91,8 +89,8 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "SAT") return; - if (B1.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Power", false); - if (B2.Checked) GlobalWinF.StickyXORAdapter.SetSticky("Reset", false); + if (B1.Checked) Global.StickyXORAdapter.SetSticky("Power", false); + if (B2.Checked) Global.StickyXORAdapter.SetSticky("Reset", false); B1.Checked = false; B2.Checked = false; diff --git a/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs index 723c2da48c..4032035dfd 100644 --- a/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs +++ b/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs @@ -99,7 +99,7 @@ // // ValueBox // - this.ValueBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte; + this.ValueBox.ByteSize = BizHawk.MultiClient.Watch.WatchSize.Byte; this.ValueBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; this.ValueBox.Location = new System.Drawing.Point(82, 57); this.ValueBox.MaxLength = 9; @@ -108,7 +108,7 @@ this.ValueBox.Size = new System.Drawing.Size(116, 20); this.ValueBox.TabIndex = 10; this.ValueBox.Text = "0000"; - this.ValueBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex; + this.ValueBox.Type = BizHawk.MultiClient.Watch.DisplayType.Hex; // // ValueHexLabel // diff --git a/BizHawk.MultiClient/tools/Watch/RamPoke.cs b/BizHawk.MultiClient/tools/Watch/RamPoke.cs index e0f9f77b39..755a99768c 100644 --- a/BizHawk.MultiClient/tools/Watch/RamPoke.cs +++ b/BizHawk.MultiClient/tools/Watch/RamPoke.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Linq; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class RamPoke : Form diff --git a/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs index 7d068caff9..0cc7a03582 100644 --- a/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs +++ b/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs @@ -1352,7 +1352,7 @@ // this.SpecificValueBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.SpecificValueBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte; + this.SpecificValueBox.ByteSize = BizHawk.MultiClient.Watch.WatchSize.Byte; this.SpecificValueBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; this.SpecificValueBox.Enabled = false; this.SpecificValueBox.Location = new System.Drawing.Point(114, 38); @@ -1362,7 +1362,7 @@ this.SpecificValueBox.Size = new System.Drawing.Size(72, 20); this.SpecificValueBox.TabIndex = 15; this.SpecificValueBox.Text = "00"; - this.SpecificValueBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex; + this.SpecificValueBox.Type = BizHawk.MultiClient.Watch.DisplayType.Hex; this.SpecificValueBox.TextChanged += new System.EventHandler(this.CompareToValue_TextChanged); // // RamSearch diff --git a/BizHawk.MultiClient/tools/Watch/RamSearch.cs b/BizHawk.MultiClient/tools/Watch/RamSearch.cs index 626dd6f03b..e1cc60c573 100644 --- a/BizHawk.MultiClient/tools/Watch/RamSearch.cs +++ b/BizHawk.MultiClient/tools/Watch/RamSearch.cs @@ -10,8 +10,6 @@ using System.Windows.Forms; using System.IO; using System.Globalization; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { /// @@ -788,10 +786,10 @@ namespace BizHawk.MultiClient { if (SelectedIndices.Count > 0) { - GlobalWinF.MainForm.LoadRamWatch(true); + Global.MainForm.LoadRamWatch(true); for (int x = 0; x < SelectedIndices.Count; x++) { - GlobalWinF.MainForm.RamWatch1.AddWatch(Searches[SelectedIndices[x]]); + Global.MainForm.RamWatch1.AddWatch(Searches[SelectedIndices[x]]); } if (Global.Config.RamSearchAlwaysExcludeRamWatch) @@ -810,7 +808,7 @@ namespace BizHawk.MultiClient { if (SelectedIndices.Count > 0) { - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var poke = new RamPoke(); var watches = new List(); @@ -823,13 +821,13 @@ namespace BizHawk.MultiClient poke.InitialLocation = GetPromptPoint(); poke.ShowDialog(); UpdateValues(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } } private void RemoveRamWatchesFromList() { - Searches.RemoveRange(GlobalWinF.MainForm.RamWatch1.AddressList); + Searches.RemoveRange(Global.MainForm.RamWatch1.AddressList); WatchListView.ItemCount = Searches.Count; SetTotal(); } @@ -874,9 +872,9 @@ namespace BizHawk.MultiClient InputPrompt i = new InputPrompt { Text = "Go to Address" }; i._Location = GetPromptPoint(); i.SetMessage("Enter a hexadecimal value"); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); i.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (i.UserOK) { diff --git a/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs b/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs index 3133daa029..0407d36599 100644 --- a/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs +++ b/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs @@ -6,8 +6,6 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { //TODO: move me diff --git a/BizHawk.MultiClient/tools/Watch/RamWatch.cs b/BizHawk.MultiClient/tools/Watch/RamWatch.cs index 8393964d2c..7c937e2189 100644 --- a/BizHawk.MultiClient/tools/Watch/RamWatch.cs +++ b/BizHawk.MultiClient/tools/Watch/RamWatch.cs @@ -7,8 +7,6 @@ using System.Text; using System.Windows.Forms; using System.IO; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class RamWatch : Form @@ -67,7 +65,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Watches.Count; x++) { bool alert = Watches[x].IsSeparator ? false : Global.CheatList.IsActive(Watches[x].Domain, Watches[x].Address.Value); - GlobalWinF.OSD.AddGUIText( + Global.OSD.AddGUIText( Watches[x].ToString(), Global.Config.DispRamWatchx, (Global.Config.DispRamWatchy + (x * 14)), @@ -166,9 +164,9 @@ namespace BizHawk.MultiClient if (Watches.Changes) { - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); DialogResult result = MessageBox.Show("Save Changes?", "Ram Watch", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result == DialogResult.Yes) { Watches.Save(); @@ -520,9 +518,9 @@ namespace BizHawk.MultiClient InitialLocation = GetPromptPoint() }; we.SetWatch(Watches.Domain); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); we.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (we.DialogResult == DialogResult.OK) { @@ -550,7 +548,7 @@ namespace BizHawk.MultiClient } we.SetWatch(Watches.Domain, SelectedWatches, duplicate ? WatchEditor.Mode.Duplicate : WatchEditor.Mode.Edit); - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = we.ShowDialog(); if (result == DialogResult.OK) { @@ -569,7 +567,7 @@ namespace BizHawk.MultiClient } } - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); UpdateValues(); } } @@ -588,13 +586,13 @@ namespace BizHawk.MultiClient poke.SetWatch(SelectedWatches); } - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = poke.ShowDialog(); if (result == DialogResult.OK) { UpdateValues(); } - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); } } @@ -1031,7 +1029,7 @@ namespace BizHawk.MultiClient if (!Global.Config.DisplayRamWatch) { - GlobalWinF.OSD.ClearGUIText(); + Global.OSD.ClearGUIText(); } else { @@ -1148,7 +1146,7 @@ namespace BizHawk.MultiClient var selected = SelectedWatches; if (selected.Any()) { - GlobalWinF.MainForm.LoadHexEditor(); + Global.MainForm.LoadHexEditor(); if (selected.Select(x => x.Domain).Distinct().Count() > 1) { diff --git a/BizHawk.Client.Common/tools/Watch.cs b/BizHawk.MultiClient/tools/Watch/Watch.cs similarity index 94% rename from BizHawk.Client.Common/tools/Watch.cs rename to BizHawk.MultiClient/tools/Watch/Watch.cs index 1c2350e96b..93f04961b1 100644 --- a/BizHawk.Client.Common/tools/Watch.cs +++ b/BizHawk.MultiClient/tools/Watch/Watch.cs @@ -2,7 +2,7 @@ using System.Globalization; using System.Collections.Generic; -namespace BizHawk.Client.Common +namespace BizHawk.MultiClient { public abstract class Watch { @@ -343,7 +343,7 @@ namespace BizHawk.Client.Common _address = address; _domain = domain; _value = _previous = GetByte(); - if (AvailableTypes(WatchSize.Byte).Contains(type)) + if (Watch.AvailableTypes(WatchSize.Byte).Contains(type)) { _type = type; } @@ -547,7 +547,7 @@ namespace BizHawk.Client.Common _address = address; _value = _previous = GetWord(); - if (AvailableTypes(WatchSize.Word).Contains(type)) + if (Watch.AvailableTypes(WatchSize.Word).Contains(type)) { _type = type; } @@ -741,7 +741,7 @@ namespace BizHawk.Client.Common _address = address; _value = _previous = GetDWord(); - if (AvailableTypes(WatchSize.DWord).Contains(type)) + if (Watch.AvailableTypes(WatchSize.DWord).Contains(type)) { _type = type; } diff --git a/BizHawk.MultiClient/tools/Watch/WatchEditor.cs b/BizHawk.MultiClient/tools/Watch/WatchEditor.cs index 17dea3265f..2a20dd13fa 100644 --- a/BizHawk.MultiClient/tools/Watch/WatchEditor.cs +++ b/BizHawk.MultiClient/tools/Watch/WatchEditor.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Linq; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public partial class WatchEditor : Form diff --git a/BizHawk.MultiClient/tools/Watch/WatchList.cs b/BizHawk.MultiClient/tools/Watch/WatchList.cs index e5d05834ef..6d785d758c 100644 --- a/BizHawk.MultiClient/tools/Watch/WatchList.cs +++ b/BizHawk.MultiClient/tools/Watch/WatchList.cs @@ -6,8 +6,6 @@ using System.Linq; using System.Text; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { public class WatchList : IEnumerable @@ -546,9 +544,9 @@ namespace BizHawk.MultiClient ofd.Filter = "Watch Files (*.wch)|*.wch|All Files|*.*"; ofd.RestoreDirectory = true; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = ofd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return null; var file = new FileInfo(ofd.FileName); @@ -575,9 +573,9 @@ namespace BizHawk.MultiClient } sfd.Filter = "Watch Files (*.wch)|*.wch|All Files|*.*"; sfd.RestoreDirectory = true; - GlobalWinF.Sound.StopSound(); + Global.Sound.StopSound(); var result = sfd.ShowDialog(); - GlobalWinF.Sound.StartSound(); + Global.Sound.StartSound(); if (result != DialogResult.OK) return null; var file = new FileInfo(sfd.FileName); diff --git a/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs b/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs index 83d2e832b8..fdbb5f1750 100644 --- a/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs +++ b/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs @@ -1,9 +1,6 @@ using System; using System.Globalization; using System.Windows.Forms; - -using BizHawk.Client.Common; - namespace BizHawk.MultiClient { class WatchValueBox : TextBox, INumberBox diff --git a/BizHawk.PCE_Debugger/BizHawk.PCE_Debugger.csproj b/BizHawk.PCE_Debugger/BizHawk.PCE_Debugger.csproj index 4ba7913714..e73df4edeb 100644 --- a/BizHawk.PCE_Debugger/BizHawk.PCE_Debugger.csproj +++ b/BizHawk.PCE_Debugger/BizHawk.PCE_Debugger.csproj @@ -81,6 +81,10 @@ {197D4314-8A9F-49BA-977D-54ACEFAEB6BA} BizHawk.Emulation + + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9} + BizHawk.Util + + \ No newline at end of file diff --git a/BizHawk.Util/BizHawk.Util_v4.5.csproj b/BizHawk.Util/BizHawk.Util_v4.5.csproj new file mode 100644 index 0000000000..fdf29f8eeb --- /dev/null +++ b/BizHawk.Util/BizHawk.Util_v4.5.csproj @@ -0,0 +1,198 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9} + Library + Properties + BizHawk.Util + BizHawk.Util + v4.5 + 512 + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + true + full + false + bin\Debug\ + TRACE;DEBUG;DOTNET20;UNMANAGED;COMPRESS + prompt + 4 + x86 + AllRules.ruleset + false + + + pdbonly + true + bin\Release\ + TRACE;DOTNET20;UNMANAGED;COMPRESS + prompt + 4 + x86 + AllRules.ruleset + false + + + + + 3.5 + + + + + 3.5 + + + 3.5 + + + + + + + VersionInfo.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Component + + + Component + + + Form + + + + + + Component + + + + + Component + + + Component + + + Component + + + + Component + + + Component + + + + + + + + + + + + + + + + + + + InputConfigBase.cs + Designer + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + "$(SolutionDir)subwcrev.bat" "$(ProjectDir)" + "$(SolutionDir)subwcrev.sh" "$(ProjectDir)" + + + \ No newline at end of file diff --git a/BizHawk.MultiClient/CustomControls/FolderBrowserDialogEx.cs b/BizHawk.Util/FolderBrowserDialogEx.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/FolderBrowserDialogEx.cs rename to BizHawk.Util/FolderBrowserDialogEx.cs diff --git a/BizHawk.MultiClient/CustomControls/HexTextBox.cs b/BizHawk.Util/HexTextBox.cs similarity index 93% rename from BizHawk.MultiClient/CustomControls/HexTextBox.cs rename to BizHawk.Util/HexTextBox.cs index 9313865bf1..73289e5637 100644 --- a/BizHawk.MultiClient/CustomControls/HexTextBox.cs +++ b/BizHawk.Util/HexTextBox.cs @@ -2,8 +2,6 @@ using System.Globalization; using System.Windows.Forms; -using BizHawk.Client.Common; - namespace BizHawk { public interface INumberBox diff --git a/BizHawk.MultiClient/CustomControls/InputConfigBase.cs b/BizHawk.Util/InputConfigBase.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/InputConfigBase.cs rename to BizHawk.Util/InputConfigBase.cs diff --git a/BizHawk.MultiClient/CustomControls/InputConfigBase.resx b/BizHawk.Util/InputConfigBase.resx similarity index 100% rename from BizHawk.MultiClient/CustomControls/InputConfigBase.resx rename to BizHawk.Util/InputConfigBase.resx diff --git a/BizHawk.Client.Common/helpers/InputValidate.cs b/BizHawk.Util/InputValidate.cs similarity index 95% rename from BizHawk.Client.Common/helpers/InputValidate.cs rename to BizHawk.Util/InputValidate.cs index d33c944eb7..3252c880d6 100644 --- a/BizHawk.Client.Common/helpers/InputValidate.cs +++ b/BizHawk.Util/InputValidate.cs @@ -1,6 +1,6 @@ using System.Text; -namespace BizHawk.Client.Common +namespace BizHawk { /// /// Includes helper functions to validate user input diff --git a/BizHawk.Client.Common/KeyTurbo.cs b/BizHawk.Util/KeyTurbo.cs similarity index 87% rename from BizHawk.Client.Common/KeyTurbo.cs rename to BizHawk.Util/KeyTurbo.cs index 4bf0ab628b..6fe6eb6ed6 100644 --- a/BizHawk.Client.Common/KeyTurbo.cs +++ b/BizHawk.Util/KeyTurbo.cs @@ -1,4 +1,4 @@ -namespace BizHawk.Client.Common +namespace BizHawk { public class TurboKey { diff --git a/BizHawk.MultiClient/CustomControls/MiscControls.cs b/BizHawk.Util/MiscControls.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/MiscControls.cs rename to BizHawk.Util/MiscControls.cs diff --git a/BizHawk.Util/Properties/AssemblyInfo.cs b/BizHawk.Util/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..c78a21b9f3 --- /dev/null +++ b/BizHawk.Util/Properties/AssemblyInfo.cs @@ -0,0 +1,31 @@ +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.Util")] +[assembly: AssemblyDescription("http://code.google.com/p/bizhawk")] +[assembly: AssemblyCompany("BizHawk")] + +// 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("53c04c97-2bac-4fa9-af11-2540b483674f")] + +// 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(VersionInfo.MAINVERSION + "." + SubWCRev.SVN_REV)] +[assembly: AssemblyFileVersion(VersionInfo.MAINVERSION + "." + SubWCRev.SVN_REV)] diff --git a/BizHawk.Util/Properties/svnrev_template b/BizHawk.Util/Properties/svnrev_template new file mode 100644 index 0000000000..31c5a95c9c --- /dev/null +++ b/BizHawk.Util/Properties/svnrev_template @@ -0,0 +1,4 @@ +static class SubWCRev +{ + public const string SVN_REV = "$WCREV$"; +} diff --git a/BizHawk.MultiClient/CustomControls/QuickProgressPopup.Designer.cs b/BizHawk.Util/QuickProgressPopup.Designer.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/QuickProgressPopup.Designer.cs rename to BizHawk.Util/QuickProgressPopup.Designer.cs diff --git a/BizHawk.MultiClient/CustomControls/QuickProgressPopup.cs b/BizHawk.Util/QuickProgressPopup.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/QuickProgressPopup.cs rename to BizHawk.Util/QuickProgressPopup.cs diff --git a/BizHawk.MultiClient/CustomControls/QuickProgressPopup.resx b/BizHawk.Util/QuickProgressPopup.resx similarity index 100% rename from BizHawk.MultiClient/CustomControls/QuickProgressPopup.resx rename to BizHawk.Util/QuickProgressPopup.resx diff --git a/BizHawk.MultiClient/CustomControls/SmartTextBoxControl.cs b/BizHawk.Util/SmartTextBoxControl.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/SmartTextBoxControl.cs rename to BizHawk.Util/SmartTextBoxControl.cs diff --git a/BizHawk.Client.Common/helpers/StringHelpers.cs b/BizHawk.Util/StringHelpers.cs similarity index 92% rename from BizHawk.Client.Common/helpers/StringHelpers.cs rename to BizHawk.Util/StringHelpers.cs index b231101b49..ef55c81fd9 100644 --- a/BizHawk.Client.Common/helpers/StringHelpers.cs +++ b/BizHawk.Util/StringHelpers.cs @@ -1,7 +1,7 @@ using System; using System.Linq; -namespace BizHawk.Client.Common +namespace BizHawk { public static class StringHelpers { diff --git a/BizHawk.MultiClient/CustomControls/TextDebugView.cs b/BizHawk.Util/TextDebugView.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/TextDebugView.cs rename to BizHawk.Util/TextDebugView.cs diff --git a/BizHawk.MultiClient/CustomControls/ToolStripEx.cs b/BizHawk.Util/ToolStripEx.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/ToolStripEx.cs rename to BizHawk.Util/ToolStripEx.cs diff --git a/BizHawk.MultiClient/CustomControls/Util.cs b/BizHawk.Util/Util.cs similarity index 93% rename from BizHawk.MultiClient/CustomControls/Util.cs rename to BizHawk.Util/Util.cs index d3a7f8acf0..5ecd9dac91 100644 --- a/BizHawk.MultiClient/CustomControls/Util.cs +++ b/BizHawk.Util/Util.cs @@ -65,9 +65,6 @@ namespace BizHawk [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, IntPtr wParam, ref HDITEM lParam); - /// - /// Dumps the contents of the ListView into a tab separated list of lines - /// public static string CopyItemsAsText(this ListView listViewControl) { ListView.SelectedIndexCollection indexes = listViewControl.SelectedIndices; diff --git a/BizHawk.MultiClient/CustomControls/ViewportPanel.cs b/BizHawk.Util/ViewportPanel.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/ViewportPanel.cs rename to BizHawk.Util/ViewportPanel.cs diff --git a/BizHawk.MultiClient/CustomControls/VirtualListView.cs b/BizHawk.Util/VirtualListView.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/VirtualListView.cs rename to BizHawk.Util/VirtualListView.cs diff --git a/BizHawk.MultiClient/CustomControls/Win32.cs b/BizHawk.Util/Win32.cs similarity index 100% rename from BizHawk.MultiClient/CustomControls/Win32.cs rename to BizHawk.Util/Win32.cs diff --git a/BizHawk.sln b/BizHawk.sln index 0355e2d56d..6475cf59a6 100644 --- a/BizHawk.sln +++ b/BizHawk.sln @@ -3,13 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Emulation", "BizHawk.Emulation\BizHawk.Emulation.csproj", "{197D4314-8A9F-49BA-977D-54ACEFAEB6BA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Util", "BizHawk.Util\BizHawk.Util.csproj", "{EE135301-08B3-4EFC-A61C-1C53E1C65CB9}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.MultiClient", "BizHawk.MultiClient\BizHawk.MultiClient.csproj", "{DD448B37-BA3F-4544-9754-5406E8094723}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscoHawk", "DiscoHawk\DiscoHawk.csproj", "{C4366030-6D03-424B-AE53-F4F43BB217C3}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.PCE_Debugger", "BizHawk.PCE_Debugger\BizHawk.PCE_Debugger.csproj", "{2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Client.Common", "BizHawk.Client.Common\BizHawk.Client.Common.csproj", "{24A0AA3C-B25F-4197-B23D-476D6462DBA0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LuaHawk", "LuaHawk\LuaHawk.csproj", "{B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -37,6 +39,20 @@ Global {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Win32.ActiveCfg = Release|Any CPU {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Win32.Build.0 = Release|Any CPU {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|x86.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Win32.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Win32.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|x86.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Any CPU.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Win32.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Win32.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|x86.ActiveCfg = Release|Any CPU {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Any CPU.Build.0 = Debug|Any CPU {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -77,18 +93,18 @@ Global {2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}.Release|Win32.ActiveCfg = Release|x86 {2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}.Release|x86.ActiveCfg = Release|x86 {2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}.Release|x86.Build.0 = Release|x86 - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Win32.ActiveCfg = Debug|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|x86.ActiveCfg = Debug|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Release|Any CPU.Build.0 = Release|Any CPU - {24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {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 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Any CPU.ActiveCfg = Debug|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Win32.ActiveCfg = Debug|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|x86.ActiveCfg = Debug|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|x86.Build.0 = Debug|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Any CPU.ActiveCfg = Release|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Mixed Platforms.Build.0 = Release|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Win32.ActiveCfg = Release|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|x86.ActiveCfg = Release|x86 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/BizHawk_2012.sln b/BizHawk_2012.sln new file mode 100644 index 0000000000..96a7eac34d --- /dev/null +++ b/BizHawk_2012.sln @@ -0,0 +1,87 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Emulation_v4.5", "BizHawk.Emulation\BizHawk.Emulation_v4.5.csproj", "{197D4314-8A9F-49BA-977D-54ACEFAEB6BA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Util_v4.5", "BizHawk.Util\BizHawk.Util_v4.5.csproj", "{EE135301-08B3-4EFC-A61C-1C53E1C65CB9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.MultiClient_v4.5", "BizHawk.MultiClient\BizHawk.MultiClient_v4.5.csproj", "{DD448B37-BA3F-4544-9754-5406E8094723}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscoHawk_4.5", "DiscoHawk\DiscoHawk_4.5.csproj", "{C4366030-6D03-424B-AE53-F4F43BB217C3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Win32.ActiveCfg = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Win32.Build.0 = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|x86.ActiveCfg = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Any CPU.Build.0 = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Win32.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Win32.Build.0 = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|x86.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Win32.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Win32.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|x86.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Any CPU.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Win32.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Win32.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|x86.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Win32.ActiveCfg = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Win32.Build.0 = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|x86.ActiveCfg = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Any CPU.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Win32.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Win32.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|x86.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Win32.ActiveCfg = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Win32.Build.0 = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|x86.ActiveCfg = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Any CPU.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Win32.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Win32.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = BizHawk.MultiClient\BizHawk.MultiClient.csproj + EndGlobalSection +EndGlobal diff --git a/LuaHawk/LuaHawk.csproj b/LuaHawk/LuaHawk.csproj new file mode 100644 index 0000000000..0463fa0c70 --- /dev/null +++ b/LuaHawk/LuaHawk.csproj @@ -0,0 +1,96 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF} + WinExe + Properties + LuaHawk + LuaHawk + v4.0 + Client + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + ..\BizHawk.MultiClient\output\ + TRACE + prompt + 4 + + + logo.ico + + + + + + + + + + + + + + + + Form + + + LuaHawkMainForm.cs + + + + + LuaHawkMainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + "$(SolutionDir)subwcrev.bat" "$(ProjectDir)" + + + \ No newline at end of file diff --git a/LuaHawk/LuaHawkMainForm.Designer.cs b/LuaHawk/LuaHawkMainForm.Designer.cs new file mode 100644 index 0000000000..5dc95dcc6d --- /dev/null +++ b/LuaHawk/LuaHawkMainForm.Designer.cs @@ -0,0 +1,107 @@ +namespace LuaHawk +{ + partial class LuaHawkMainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LuaHawkMainForm)); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(284, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.openToolStripMenuItem, + this.toolStripSeparator1, + this.exitToolStripMenuItem}); + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "&File"; + // + // openToolStripMenuItem + // + this.openToolStripMenuItem.Name = "openToolStripMenuItem"; + this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); + this.openToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.openToolStripMenuItem.Text = "&Open"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+F4"; + this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.exitToolStripMenuItem.Text = "E&xit"; + this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); + // + // LuaHawkMainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 262); + this.Controls.Add(this.menuStrip1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.menuStrip1; + this.Name = "LuaHawkMainForm"; + this.Text = "LuaHawk"; + this.Load += new System.EventHandler(this.LuaHawkMainForm_Load); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; + } +} + diff --git a/LuaHawk/LuaHawkMainForm.cs b/LuaHawk/LuaHawkMainForm.cs new file mode 100644 index 0000000000..3d489b91d1 --- /dev/null +++ b/LuaHawk/LuaHawkMainForm.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace LuaHawk +{ + public partial class LuaHawkMainForm : Form + { + public LuaHawkMainForm() + { + InitializeComponent(); + } + + private void exitToolStripMenuItem_Click(object sender, EventArgs e) + { + Close(); + } + + private void LuaHawkMainForm_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/LuaHawk/LuaHawkMainForm.resx b/LuaHawk/LuaHawkMainForm.resx new file mode 100644 index 0000000000..487177ea6d --- /dev/null +++ b/LuaHawk/LuaHawkMainForm.resx @@ -0,0 +1,1127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAkAICAQAAEABADoAgAAlgAAABAQEAABAAQAKAEAAH4DAAAwMAAAAQAIAKgOAACmBAAAICAAAAEA + CACoCAAAThMAABAQAAABAAgAaAUAAPYbAAAAAAAAAQAgAPaNAABeIQAAMDAAAAEAIACoJQAAVK8AACAg + AAABACAAqBAAAPzUAAAQEAAAAQAgAGgEAACk5QAAKAAAACAAAABAAAAAAQAEAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A + AAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI53d3eAAAAA + AAAAAAAACHY0AAB2d3AAAAAAAAAAAHdAAAcAAAZ3gAAAAAAAAIZQIAAIAAAAd2gAAAAAAAhwAAAAf4AG + AABngAAAAAAHAAJAB/X3AAAABoAAAAAAcgAAAAjwfwBCAgB4AAAACGAAQQB/cH+AAAAARwAAAAcEACAA + /2AP9wQEACaAAAAGAAIAB/gBCPcAAgAFcAAAiAAEAAj4AAf/IEAEBHAAAIZAAgBP+ABI/wAAIAeAAACI + ZAAAD/8wD/9SBABOiAAAjscAAA//cH//cAAk54AAAIfocAcP+IR/j3RwSH6AAACOiMZBePhwOPh3JIjo + cAAAiO+GACd4gHiHh3aIjoAAAIjvjnQABDR3eHhIiOiAAAAI6P6AAwB4iIiIaPjoAAAAB46PhhAAd3iI + +IiOiAAAAACIj3YEAAh3j4iIjoAAAAAAiOg3EzFSWP//eOiAAAAAAA6ImzMyF4/4/2iIAAAAAAAAh7s5 + NDB4iPh44AAAAAAAAAgzMwBzCP/4eAAAAAAAAAAAhzeHiP//hwAAAAAAAAAAAAiP//+I+HAAAAAAAAAA + AAAAiP+IiIAAAAAAAAAAAAAAAAB3iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////+AH//+A + Af//AAB//AAAP/gAAB/4AAAf8AAAD+AAAA/gAAAH4AAAB8AAAAfAAAAHwAAAA8AAAAfAAAAHwAAAB8AA + AAfAAAAH4AAAD+AAAA/wAAAf8AAAH/gAAD/8AAB//gAA//8AA///gAf//8Af///w////////KAAAABAA + AAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA + AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAACHZ3cAAAAA9wBAAG + gAAAgAAIcAB4AABgAHeHAAcACAAG8HgEBwAIAAeAfwAEgAhkB/N/AkeADoYHh4h0foAIiEJ0d4eOAAjv + cAeIiIgAAIhwF3+I4AAACLMwj4iAAAAAc3ePiAAAAAAI/4gAAAAAAAAAAAAAAP/////4H///4Af//8AD + ///AA///gAP//4AB//+AAf//gAH//4AD//+AA///wAf//+AH///wD///+D////////8oAAAAMAAAAGAA + AAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgHBwAGCQUACgsGAAwNCQARDgoADRAJABYU + CwANDxQADRIWABYVFwAhHAwAIBwXACkiCwAnIxsAODEbAA8cJAAcHyIAFyEnABIuOQAaNz0AJyUmADIr + KAAoMCoANTMlADEvMQAuNjgANjY3AEw6GwBFOiwAUD4lAEI6NwBLRB4AVkMdAFVHIwBJQzMAU0ozAFxU + OQBjVCwAdVwlAGJYOwBpZDsAd2I2AAwxQQAPPVUAJkNHAD9CRgAnUVUAPVRVAA1LYQAOU2wAFlFqAApZ + dQA1Wm4AO2tqACx9fgA7cHwARkZHAFBOSABRVE8AR01RAEtUUwBWVlcAeEtGAGNVRwBuaUQAfHRGAFpg + YgBnaGkAdXNnAGxucgByb3EAb3FzAHd4eQCBYS0AmHgsAIluMwCMcTgAmXo6AKl+MgCFd0YAjH9cALB/ + dACqhjYAvJU0AMqXOADHoDQA0aI+AI2CTACUh04Ak4xNAJWSTQCbk00AnZpLAIqHVwCSi1QAm5dSAJuY + UACUlFgAkJxYAKKaTACimlMAqaVXALKrXACvsVsAjIxrAJmHYACQjmMAkI1rAJqZZQCTlmsAhIN5AI2c + dQCRkXwAm5p8AKGeZQCpp2MAuathAK6wawC4tGsAralzALe2cgDOnkQA2ptGAMeGXQDfmVYA4J9JANuq + RgDJpVQA1atVANqyUQDhqEkA57JMAOqqUgDmtVQA8bpTANu4aADCqXYAwrp6AN++egDyqG4A6LtpAPO7 + aQDzpnMA5L11APq1ewDuw14A9cZYAPzWXwDExHwA+MplAPnUZwDnxXkA+cZ3APjUcwAOZYoACnWSABB9 + nAAHeqYACYOsAAaLuwBDho8AWJeUAH+AgAB3mJcACI3AAAeXxAAVmsYAC5zRAC2kwAAErOQAA7X0AIaG + hgCQjIUAkJCFAJKRjgCPkZIAmJiYAKGfnwCWq50ApaKDALWpigC4t4oApqWYALqzmQCenaAAn6ChAKeo + qACwr68Ar7GrAL25rQCusLEAsrKzALW2uAC4t7kAuru7AMivgADBvYAA0beIANu9kwDwpIMA+72HAOC1 + mgD0up4AwL+8APO2oAC+wr8AyMaIANjCiADNy5kA18WXANfRlgDoyokA9taJAP3LmgDs1JoA9deWAPzm + igDu654A+eGdAMjFqQDTzagA1tWmANHOvgDX07EA5s6iAPXHogDo16YA+NioAO7bsQD13LQA7+mlAPXk + qQD25LQAvsDBAMbGxwDQz84Azc7QAM7Q0ADX2NgA4dzDAODe3gD468kA+e3VAPnx2ADc3+AA4d/hANzh + 4QDo6OkA8O/vAO/x7wD68+EA7e/wAPr6+gDa0f8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwsLBw8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAL60bVxbW1pia3GvsrvMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC2ZlxfKSVAKCgoUFtlW2yuusEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeWVCHQwEAwMDAQIB + AwUWJV9da626zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZgKQwDAwMDAwQFFgQEAQMCBgMdWGRpr8AA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdFAOCAQEBAYFBwYOrwUFBQQBAQQGByRcYq27AAAAAAAAAAAAAAAA + AAAAAAAAAOBlKAUGBAYGBQcHBQNJ+TkFBQcFBgQEBAQOXmFvuwAAAAAAAAAAAAAAAAAAAAAA3V0jBQME + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /////wAA////////AAD///4P//8AAP//wAD//wAA//8AAD//AAD//AAAD/8AAP/wAAAH/wAA/+AAAAP/ + AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAA/AAD4AAAAAB8AAPAA + AAAAHwAA8AAAAAAfAADwAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAP + AADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAfAADwAAAAAB8AAPAA + AAAAHwAA8AAAAAA/AAD4AAAAAD8AAPgAAAAAfwAA/AAAAAD/AAD+AAAAAP8AAP4AAAAB/wAA/wAAAAP/ + AAD/gAAAB/8AAP/AAAAP/wAA//AAAB//AAD/+AAAf/8AAP/4AAD//wAA//wAAf//AAD//gAP//8AAP// + gH///wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAABgkGAAkKBgAMDQkAEA4KAA8QBgAOEAoAEREHABMSCgAZFgsAFxgJABwaDAAOERUADhIYABES + FAAZExYAFxgTABwbFQARFBgAHRcZABYZHQAdGhsAIB0NACAbGwAsJhcAKiUdADUnEwAbHiEAIx0gAB4m + KAASKjAAGC0xACQjIwAoIyUAIyUqAC8uLAAxKy4AOzUgADQyLgAtLTIALzQ2ADMyMwA3ODUAOTg1ADA3 + OgA5ODgAQTYXAEQ7IgBCOyoAVEEbAFxJHgBGQCoAUEElAE9MMABCRT0AUUI7AFZRNQBZUTMAcFkiAGld + OgBuZjkAdXA/AA84RgARNEMADDxRAAxAUgAqSEoAN1daAAtceQAmU2MAOmVrAENDQwBMTE0AUlNTAFhW + VwBYW18AY1lAAGJcXgB1bkIAfnZDAGJiXgBjZGMAbWpqAHR0YQBxb3EAb3FyAHNzcwB5encAe3p8AIFo + KgCZdC0AkHU5AJh9OQCFfUYAgH9+AK97cACphi0AjoZMAJiRTwCVjVAAmpNUAJmWWQCfm1wAr5JMAKGY + VwChl1kAj4xmAI2NagCWlWYAn5xhAJWTawCOjHkAkY50AJycegC6gWIAopxhAKumbACwp2cArat8ALay + cgC+s3EAvbl1AL27eQDAmkMAx5pIAM6gSgDOrFEA5aNcAOikXADtulcA4rpbAOy6WADmnmEA559zANey + ZADYsWIA3blrAMWucQDDsHQAxbV6AMi1fADfunAA7KphAOS5YwDgumkA9LVuAOrJZQD2xWMA+MRiAPTJ + aAD702YA+tJuAObEewDoxXsADGiGAAlzmQAJeZ8ACXukAIF/gAAJhbMAIJi1ADKWtQB+gYQAe5STAHeo + pgAFksQACJnNAASh1AAFsOwABLb1AIKDhACFh4wAiIeKAIaIiwCKi4sAlJSFAJWWlgCbnZUAm5ydAKCd + ngCHqocAla6MAJKxlwCso4wAsKiCALCsiAC6vIUAoqCbALOsnwCfoaMAo6SkAK+vpwCmqKkAq6usAK6u + sACzs7QAtba4ALW4uAC7vb0Azb6WAMTBhgDNxYcAxsWOANHHhwDRyYYAyciSAMfEnQDNzJwA+seHAPfI + hwD414YA+dmEAO/PmgDi0JwA79CZAOvenADz2JcA+dqTAPLYmADt5J8A8eSdAMvJrwDSz6IA1dOpAMnI + uwDW1bQA3ti3ANjVuwDu2a0A9+GsAPfqvwCywcAAw8PEAMfIxgDMy8UAxsjJAMvLzQDa2MQAztHRANTU + 1ADc3NwA9ujGAPvpwAD458gA+e3RAPry3ADe4OEA4+PjAOvr6wDt7/AA8O7wAPP09AD4+PcA9/j4APv7 + +wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA4LltaGllZW6vvgAAAAAAAAAAAAAAAAAAAAAAAAAA3XM8MBcCAQIR + MDxia7IAAAAAAAAAAAAAAAAAAAAAAHQ4CAMCAwcmBAMBAgg5Ym/CAAAAAAAAAAAAAAAAAONdEQYDAwgH + DukhCAQEAwMRXWrBAAAAAAAAAAAAAADhPQ4DAwYKBQJX/MAECAkGAwMETmrDAAAAAAAAAAAAAE8GBgMG + CQUCKvhI+EoECQsIAwMGT3AAAAAAAAAAAABmEwQGBAoEAg7p7g/B9yEICwsGBgQQY7sAAAAAAAAA3jME + DAQJCAMBWP6eE03+wQQJCwsGAwYzbgAAAAAAAABjAwQGCAkDAhf4/ikTIfj9LQgJFggDBgNhvwAAAAAA + AEwDBgQJCAMBVv/sDxMTwf6wBAkWCwQDAzVxAAAAAADNXwMGBAkEAgHo/6wTExNU/vcECREWBAMDN3MA + AAAAAIuFGgYICQMBDvj/6A8TE8H//CMICxYJBAZydQAAAAAAioRaBgkIAwEg+//+JBMh+v/+SAgJFgkD + MYSK6gAAAACMgH1bFgYDAyn8/v5YE1L+/v5QCAkWCzR8gIwAAAAAAIyOho0yDgJJR/vw98QTs/fw/a4r + UBEujYaOjAAAAAAAeJGQ5Hs6GA5LwPj4SiEp9/joVrIpL2fkkJF4AAAAAADI0Y/0mVkRFBuuSensHFbC + vljCUatcmfSP0HcAAAAAAN/Wg/PxgmAlEhQSIEdHVqqw66rFK4Lz84HUzgAAAAAAAMuT2vXlfhkSEg0N + Sb3owe7r6Paex/XYk8kAAAAAAAAAetmV8vTVOxISEhJHVaro6ff8s8O85pXZegAAAAAAAAAAzJfS4qQ2 + EhISEizFsq3G/ujwxrfTl8wAAAAAAAAAAADP15a1oUY+QUQeSCdIxvn7/P6tiZbXzwAAAAAAAAAAAAB5 + 3LSopqWdm0A/ou75/un7+1GS3MgAAAAAAAAAAAAAAAB6tqmop50+LB0oXsDv9/7CuNvKAAAAAAAAAAAA + AAAAAAC6oJ+cmg0fQ0Iivv3//rF2zQAAAAAAAAAAAAAAAAAAAADto0VexMLn7Pz//v7FUwAAAAAAAAAA + AAAAAAAAAAAAAADCwe/+//7/+MP+7J4AAAAAAAAAAAAAAAAAAAAAAAAAAADE7/7+vvDvvsIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAva3AwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///////////+AH//+AAf//AAB//AAAP/gAAB/4AAAf8AAAD+AAAA/gAAAH4AAAB8AA + AAfAAAAHwAAAA8AAAAfAAAAHwAAAB8AAAAfAAAAH4AAAD+AAAA/wAAAf8AAAH/gAAD/8AAB//gAA//8A + A///gAf//8Af///w////////KAAAABAAAAAgAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAALCwcACwwHAA4PBwAKCgkADAsIAA0OCgAQDwkAEREJABQSCwAUFAsAEBAMABQTDwAVFAwAGxgMABwZ + DQAPExcAFhcRABEUFwAaGBMAHBYZACAfFAAkIBEAKScZACIdIAAPJzIADys2ACYkIQAoKSgAPTskAD47 + LwA1NDAAOTQ3ADM1OAA+OzgARTsfAEk4LABFQSoAVVAvAE1KMQBYVTMAZ1MkAGViPwAVSFsAN0RKAEdH + QwBUUFIAUlRVAFhZXABeXFwAcm1JAHBsTQB3dFcAYV5gAGFpbABoamsAcXFxAHVycwB1dXUAfnx8AIJm + LwCOfVUAkYBRALqHSACFgWEAr5ZgALuvegDXqmsA2bNvAMemewDQtHEA5rJnAN3HfADuwncA4MB6APbQ + fgD3130ALm2CAEl6gQAHirgAd4uNAGakrgAFrOcAh4aHAImMjQCMjo8AkZGRAJOUkwCSlJUAoJ+LAKCd + nwCyvo0AraaSAKynmgC3tJwAvLibAJ2foACopqYAqqqqAKutrgC+uqQAsLGqALW0rgCvsLEAsbGxALe4 + ugC6uLkAxb6jANnMjADe0IoA3sqSAPDSlQDd2awAwcC8ANPOtQDX1rcA3927APbfpwDz4bYAwcHCAMXG + xgDJyckAzc7OANjXwQDc28sAz9DRANLR0gDe398A+evGAN/g4ADk5OQA6+vsAPT09AD6+/sA+/z7APDD + AAD/0hEA/9gxAP/dUQD/5HEA/+qRAP/wsQD/9tEA////AAAAAAAvFAAAUCIAAHAwAACQPgAAsE0AAM9b + AADwaQAA/3kRAP+KMQD/nVEA/69xAP/BkQD/0rEA/+XRAP///wAAAAAALwMAAFAEAABwBgAAkAkAALAK + AADPDAAA8A4AAP8gEgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAA + KwCwADYAzwBAAPAASQD/EVoA/zFwAP9RhgD/cZwA/5GyAP+xyAD/0d8A////AAAAAAAvACAAUAA2AHAA + TACQAGIAsAB4AM8AjgDwAKQA/xGzAP8xvgD/UccA/3HRAP+R3AD/seUA/9HwAP///wAAAAAALAAvAEsA + UABpAHAAhwCQAKUAsADEAM8A4QDwAPAR/wDyMf8A9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsA + 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 + Cg4J/xEQC/8QDwv/FxcN/xYVCv8QDgn/DAsJ/wcHBv8FBQX/WVlZ//v7+//+/v7/+/v7/2dnaP8bFxn/ + Hhca/x0WGf8dGBr/HBga/7Sztf/8+/z//v7+/+3t7f8iISD/EQ4K/xcUDP8bFg7/HxsO/yAeDf8VFAr/ + DQwI/w0NCf8NDgj/Ew8N/7B/dP+5q2H/g4JqtaenpVja2dwk8/PzCQAAAAAAAAAAAAAAAP778QuqpFb5 + 8bag/9+ZVv9bRB7/CAwL/w4RCP8QDw//GBgN/xUUCv8ODQn/CgsI/wYHBv8EBAT/hISE//39/f/+/v7/ + /f39/7m5uf8UEBL/Hxgb/x4XGv8dFxn/ODQ2/+jm6P/9/f7//v7+//n5+f9IR0b/Dw0J/xUSDP8ZFgz/ + HhoO/yEeD/8ZGAv/Dw0I/w0OCv8KDQz/TDob//Ckg//BsXf/jYlizaSko1vX19om8/PzCgAAAAAAAAAA + AAAAAPTq0FirplP/9bag/9+ZSf+rgjD/KR8O/wwPCv8QEQz/GBgL/xUSDP8NDAr/CQoH/wYGBv8EBAT/ + oqKi//39/f/9/f3//Pz8//T09P8rJij/Hxgb/x0WGf8aFBf/fnp8//r4+v/9/P3//v7+//n5+f9sa2v/ + DgwI/xUSDP8ZFQz/HRoN/yAdDv8cGw3/Dw0I/wwMCP8hGgv/qX4y//aidv/Rt4j/k5Ja66ekolrX19gn + 8/PzCgAAAAAAAAAAAAAAANjQqVmxrFr/9Lif/96aS//LlTf/jHE4/yAYC/8OEg3/GhkK/xAQDf8MCwn/ + CAkH/wUFBf8HBwf/sLCw//z8/P/+/v7//f39//7+/v9yb3H/GhUX/x4YG/8dGBr/xsPE//79/v/9/f3/ + /f39//v7+/+Dg4H/CwsG/xMQCv8ZFQ3/HRkO/yAdDv8bHQ//EhAJ/xAQDP+BYS3/x5U3//Ckcv/bvZP/ + mJZX6qiopVfa2dol8/PzCQAAAAAAAAAAAAAAAM/KnV21q1//9Lyd/+CfSf/OnkT/0Kxf/51+Pf8pIgv/ + GBYJ/wwPDf8KCgn/Dw8P/w4ODv8JCQn/urq6//39/f/6+vr/9vb2//39/f++vL3/GhYY/xwXGf9EQEL/ + 7+3t//38/P/19PT/+/v7//z8/P+QkI//DAwJ/xAOCf8XFA3/GxgP/x4dD/8cHRL/JhwJ/4xzQf/Sp1j/ + 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 + +Om1/+Lbwv9Dho//urOZ/wwSE/8RFBj/ERQY/xEUGP8RFBj/DxIW/xATF/8SFRf/dXd4/77Awf+1t7j/ + rK6v/4+Rkv+Wl5f/7Ozs//39/f/k5OT/jo6O/+7u7v/Qz87/dnRz/7Wpjf/54Z3/+cxi//rQcf/w46j/ + pqdZ8tDMpjMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLeuimrqVfy + 5d+n//nafP/6zmL/9tuL/5arnf8tpMD/1sym/ygwKv8SERb/ERMU/xASF/8QExf/ERQb/xAUGf9UV1f/ + mp2d/4SGif9JS03/REVG/4WHiP/W19f/8/Pz/+zs7P/Dw8P/9fX1//39/f/u7+3/mZeR/+rVnP/51HH/ + /dBh//vmoP+/uXH+wLyHf+ng2gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADQ0J9wr7Fa/fjnsf/22W3/9s5m/1+Wlv8Ln9P/O3B8/xZRav8NSmD/Dk1j/whcd/8JeqT/ + CnWQ/xchIf84NDv/FhYa/xQTGP9LT1H/rrCx/9vd3v/u7/D/+/v7//Ly8v/9/f3//v7+//j4+P92eHz/ + UE5I/+fHcv/6zmT/++eM/9fRlv+yrl6719SzDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADk6MQDurpwsrq3bP/366z/9tNw/1CWlv8Ft/b/CYvA/wmSwP8Gi7v/ + Bnqo/wmDrv8LlcT/Dz1V/wwxQf8SLjn/JERM/7Gztv/T2Nj/4ePk//P19v/8/f3/+/v7/9XV1f/r6+v/ + /v7+//X19f+Hh4X/mYdg//zWX//95Iv/39uh/6WnWePh3MAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3NexFr67esTCvXj/7+ml/1makf8Btvj/ + A7X2/wa18v8Bren/BpjH/weEq/8KdZX/B1dy/zVabv8TIC7/Dxwk/2RiZP+3t7j/09TW/+bo6P/s7e3/ + np6e/6+vr//6+vn/6err/5aWlf9YXFv/ppFZ//3oif/j3af/raxa3dnSo0AAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO3qwiC6u3nU + vrlq/3ifnP8Gtvb/ArPw/wes4f8Fn8n/C5nQ/wtWdP8QGB//EBIT/zAzMP8vOzz/DBga/0pMUP9YVlr/ + YWJl/5yenv/p6ur/5+fn//z8/P/+/f3/7e/w/8C/vP+1qof/7uue/9zXoP+nqVnZ086kNQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADv5tMOxb+DopCcWP8Vmsb/Bqvj/w5liv8OU2z/BJfC/xB9nP8MFR7/EhIW/xo3Pf8nUVX/ + O2tq/xQkKP8NDxT/QEFE/6KkpP/v7+///Pz8//39/f/+/f3/3N3e/4CBd/+ZmH7/xMR8/66qW8bLx5Aa + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8e3YB9XSpnuGlm3wLH1+/wuCrP8Hj8H/Dlx4/x4hJ/81NTj/ + MS8x/yhDQ/89VFX/d5GS/1ZgY/+SkpX/wMHC//Lz8//9/f3//f39//z8/P/8/Pz/qKes/3VzZ/+jn2T4 + urp1q9rXsREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+8QLr6Mw3npyK4Ly9uP9ATVT/ + S1RT/77Cv//b3+H/5+fo/+Ll5v/g6Of/2uDg//f6+v/9/f7//f39//39/f/9/f3//f39//X19f+rrq// + hYeB/4uPbf/Q0alp9fTZCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t7q8ksTEyP+0trv/cXd6/+Lh4//59/j//f79//79/f/+/Pz//v38//79/f/5+fn/xMTE/76+vv/5+fn/ + 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 + + + \ No newline at end of file diff --git a/LuaHawk/Program.cs b/LuaHawk/Program.cs new file mode 100644 index 0000000000..0ec269a80b --- /dev/null +++ b/LuaHawk/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace LuaHawk +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new LuaHawkMainForm()); + } + } +} diff --git a/BizHawk.Client.Common/Properties/AssemblyInfo.cs b/LuaHawk/Properties/AssemblyInfo.cs similarity index 87% rename from BizHawk.Client.Common/Properties/AssemblyInfo.cs rename to LuaHawk/Properties/AssemblyInfo.cs index e72bc09e09..ff9212305f 100644 --- a/BizHawk.Client.Common/Properties/AssemblyInfo.cs +++ b/LuaHawk/Properties/AssemblyInfo.cs @@ -5,11 +5,11 @@ 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("Client.Core")] +[assembly: AssemblyTitle("LuaHawk")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Client.Core")] +[assembly: AssemblyProduct("LuaHawk")] [assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -20,7 +20,7 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("8281b376-a1d5-4157-97b8-dab7246ef4c8")] +[assembly: Guid("f0d38019-a1d0-47d8-869d-2cce26a40ca2")] // Version information for an assembly consists of the following four values: // diff --git a/LuaHawk/Properties/Resources.Designer.cs b/LuaHawk/Properties/Resources.Designer.cs new file mode 100644 index 0000000000..9c512f6bb6 --- /dev/null +++ b/LuaHawk/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18052 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace LuaHawk.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LuaHawk.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/BizHawk.MultiClient/config/FirmwaresConfigInfo.resx b/LuaHawk/Properties/Resources.resx similarity index 85% rename from BizHawk.MultiClient/config/FirmwaresConfigInfo.resx rename to LuaHawk/Properties/Resources.resx index 1a712589cd..ffecec851a 100644 --- a/BizHawk.MultiClient/config/FirmwaresConfigInfo.resx +++ b/LuaHawk/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : System.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,7 +60,6 @@ : and then encoded with base64 encoding. --> - @@ -69,10 +68,9 @@ - + - @@ -87,10 +85,9 @@ - + - @@ -112,12 +109,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - \ No newline at end of file diff --git a/LuaHawk/Properties/Settings.Designer.cs b/LuaHawk/Properties/Settings.Designer.cs new file mode 100644 index 0000000000..c436d97df4 --- /dev/null +++ b/LuaHawk/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18052 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace LuaHawk.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/LuaHawk/Properties/Settings.settings b/LuaHawk/Properties/Settings.settings new file mode 100644 index 0000000000..abf36c5d3d --- /dev/null +++ b/LuaHawk/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/LuaHawk/logo.ico b/LuaHawk/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..40cf4e3eeec9b73c2f7be11e909414b66b401fc0 GIT binary patch literal 59916 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%0DX+mocNgNBP8i6Y@#OJ{8hWK|ukIj*euW{*oVz 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 literal 0 HcmV?d00001