From 126bb4736b1aa2d90a1c00e96cd9376ec6077bf4 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Mon, 13 Jan 2020 11:14:16 +1000 Subject: [PATCH] Move commented-out code blocks to #if false CBB doing Cores or Bizware --- BizHawk.Client.ApiHawk/Classes/ClientApi.cs | 14 +- BizHawk.Client.DiscoHawk/DiscoHawk.cs | 158 ++++++------- BizHawk.Client.DiscoHawk/MainDiscoForm.cs | 48 ++-- BizHawk.Client.EmuHawk/AVOut/AviWriter.cs | 63 +++--- .../Extensions/ToolExtensions.cs | 28 +-- BizHawk.Client.EmuHawk/Input/Input.cs | 13 +- BizHawk.Client.EmuHawk/MainForm.FileLoader.cs | 21 +- BizHawk.Client.EmuHawk/Throttle.cs | 20 +- BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs | 6 +- BizHawk.Client.EmuHawk/tools/GameShark.cs | 92 ++++---- .../tools/HexEditor/HexEditor.cs | 15 +- .../tools/SNES/SNESGraphicsDebugger.cs | 13 +- .../controls/VirtualPadDiscManager.cs | 8 +- .../Sound/Utilities/Waves.cs | 6 +- BizHawk.Emulation.DiscSystem/API_MednaDisc.cs | 74 +++--- .../Internal/Algorithms/ECM.cs | 84 +++---- .../Internal/Algorithms/GPL_ECM.cs | 214 +++++++++--------- 17 files changed, 443 insertions(+), 434 deletions(-) diff --git a/BizHawk.Client.ApiHawk/Classes/ClientApi.cs b/BizHawk.Client.ApiHawk/Classes/ClientApi.cs index cc2e778159..55502afda2 100644 --- a/BizHawk.Client.ApiHawk/Classes/ClientApi.cs +++ b/BizHawk.Client.ApiHawk/Classes/ClientApi.cs @@ -380,15 +380,17 @@ namespace BizHawk.Client.ApiHawk } //Using this break joypad usage (even in UI); have to figure out why - /*if ((RunningSystem.AvailableButtons & JoypadButton.AnalogStick) == JoypadButton.AnalogStick) +#if false + if ((RunningSystem.AvailableButtons & JoypadButton.AnalogStick) == JoypadButton.AnalogStick) { - AutoFireStickyXorAdapter joypadAdaptor = Global.AutofireStickyXORAdapter; - for (int i = 1; i <= RunningSystem.MaxControllers; i++) + var joypadAdaptor = Global.AutofireStickyXORAdapter; + for (var i = 1; i <= RunningSystem.MaxControllers; i++) { - joypadAdaptor.SetFloat($"P{i} X Axis", allJoypads[i - 1].AnalogX); - joypadAdaptor.SetFloat($"P{i} Y Axis", allJoypads[i - 1].AnalogY); + joypadAdaptor.SetFloat($"P{i} X Axis", _allJoyPads[i - 1].AnalogX); + joypadAdaptor.SetFloat($"P{i} Y Axis", _allJoyPads[i - 1].AnalogY); } - }*/ + } +#endif } } diff --git a/BizHawk.Client.DiscoHawk/DiscoHawk.cs b/BizHawk.Client.DiscoHawk/DiscoHawk.cs index ba91359d15..1dc43eb927 100644 --- a/BizHawk.Client.DiscoHawk/DiscoHawk.cs +++ b/BizHawk.Client.DiscoHawk/DiscoHawk.cs @@ -497,86 +497,92 @@ namespace BizHawk.Client.DiscoHawk } //class DiscoHawk -} +#if false + /// code to test ECM + static class Test + { + public static void Shuffle(this IList list, Random rng) + { + int n = list.Count; + while (n > 1) + { + n--; + int k = rng.Next(n + 1); + T value = list[k]; + list[k] = list[n]; + list[n] = value; + } + } -//code to test ECM: -//static class test -//{ -// public static void Shuffle(this IList list, Random rng) -// { -// int n = list.Count; -// while (n > 1) -// { -// n--; -// int k = rng.Next(n + 1); -// T value = list[k]; -// list[k] = list[n]; -// list[n] = value; -// } -// } + public static void TestMain() + { + var plaindisc = Disc.LoadAutomagic("d:\\ecmtest\\test.cue"); + var ecmdisc = Disc.LoadAutomagic("d:\\ecmtest\\ecmtest.cue"); -// public static void Test() -// { -// var plaindisc = BizHawk.DiscSystem.Disc.FromCuePath("d:\\ecmtest\\test.cue", BizHawk.MainDiscoForm.GetCuePrefs()); -// var ecmdisc = BizHawk.DiscSystem.Disc.FromCuePath("d:\\ecmtest\\ecmtest.cue", BizHawk.MainDiscoForm.GetCuePrefs()); +// var prefs = new CueBinPrefs +// { +// AnnotateCue = false, +// OneBlobPerTrack = false, +// ReallyDumpBin = true, +// SingleSession = true, +// DumpToBitbucket = true +// }; +// var dump = ecmdisc.DumpCueBin("test", prefs); +// dump.Dump("test", prefs); -// //var prefs = new BizHawk.DiscSystem.CueBinPrefs(); -// //prefs.AnnotateCue = false; -// //prefs.OneBlobPerTrack = false; -// //prefs.ReallyDumpBin = true; -// //prefs.SingleSession = true; -// //prefs.DumpToBitbucket = true; -// //var dump = ecmdisc.DumpCueBin("test", prefs); -// //dump.Dump("test", prefs); +// var prefs = new CueBinPrefs +// { +// AnnotateCue = false, +// OneBlobPerTrack = false, +// ReallyDumpBin = true, +// SingleSession = true +// }; +// var dump = ecmdisc.DumpCueBin("test", prefs); +// dump.Dump(@"D:\ecmtest\myout", prefs); -// //var prefs = new BizHawk.DiscSystem.CueBinPrefs(); -// //prefs.AnnotateCue = false; -// //prefs.OneBlobPerTrack = false; -// //prefs.ReallyDumpBin = true; -// //prefs.SingleSession = true; -// //var dump = ecmdisc.DumpCueBin("test", prefs); -// //dump.Dump(@"D:\ecmtest\myout", prefs); + int seed = 102; -// int seed = 102; + for (; ; ) + { + Console.WriteLine("running seed {0}", seed); + Random r = new Random(seed); + seed++; -// for (; ; ) -// { -// Console.WriteLine("running seed {0}", seed); -// Random r = new Random(seed); -// seed++; + byte[] chunkbuf_corlet = new byte[2352 * 20]; + byte[] chunkbuf_mine = new byte[2352 * 20]; +// int length = (ecmdisc._Sectors.Count - 150) * 2352; // API has changed + var length = 0; + int counter = 0; + List> testChunks = new List>(); + while (counter < length) + { + int chunk = r.Next(1, 2352 * 20); + if (r.Next(20) == 0) + chunk /= 100; + if (r.Next(40) == 0) + chunk = 0; + if (counter + chunk > length) + chunk = length - counter; + testChunks.Add(new Tuple(counter, chunk)); + counter += chunk; + } + testChunks.Shuffle(r); -// byte[] chunkbuf_corlet = new byte[2352 * 20]; -// byte[] chunkbuf_mine = new byte[2352 * 20]; -// int length = ecmdisc.LBACount * 2352; -// int counter = 0; -// List> testChunks = new List>(); -// while (counter < length) -// { -// int chunk = r.Next(1, 2352 * 20); -// if (r.Next(20) == 0) -// chunk /= 100; -// if (r.Next(40) == 0) -// chunk = 0; -// if (counter + chunk > length) -// chunk = length - counter; -// testChunks.Add(new Tuple(counter, chunk)); -// counter += chunk; -// } -// testChunks.Shuffle(r); - -// for (int t = 0; t < testChunks.Count; t++) -// { -// //Console.WriteLine("skank"); -// var item = testChunks[t]; -// //Console.WriteLine("chunk {0} of {3} is {1} bytes @ {2:X8}", t, item.Item2, item.Item1, testChunks.Count); -// plaindisc.ReadLBA_2352_Flat(item.Item1, chunkbuf_corlet, 0, item.Item2); -// ecmdisc.ReadLBA_2352_Flat(item.Item1, chunkbuf_mine, 0, item.Item2); -// for (int i = 0; i < item.Item2; i++) -// if (chunkbuf_corlet[i] != chunkbuf_mine[i]) -// { -// Debug.Assert(false); -// } -// } -// } -// } -//} \ No newline at end of file + for (int t = 0; t < testChunks.Count; t++) + { + //Console.WriteLine("skank"); + var item = testChunks[t]; + //Console.WriteLine("chunk {0} of {3} is {1} bytes @ {2:X8}", t, item.Item2, item.Item1, testChunks.Count); +// plaindisc.ReadLBA_2352_Flat(item.Item1, chunkbuf_corlet, 0, item.Item2); // API has changed +// ecmdisc.ReadLBA_2352_Flat(item.Item1, chunkbuf_mine, 0, item.Item2); // API has changed + for (int i = 0; i < item.Item2; i++) + if (chunkbuf_corlet[i] != chunkbuf_mine[i]) + { + Debug.Assert(false); + } + } + } + } + } +#endif +} \ No newline at end of file diff --git a/BizHawk.Client.DiscoHawk/MainDiscoForm.cs b/BizHawk.Client.DiscoHawk/MainDiscoForm.cs index a0c1d0ac45..77960027fa 100644 --- a/BizHawk.Client.DiscoHawk/MainDiscoForm.cs +++ b/BizHawk.Client.DiscoHawk/MainDiscoForm.cs @@ -70,30 +70,32 @@ namespace BizHawk.Client.DiscoHawk } } - //bool Dump(CueBin cueBin, string directoryTo, CueBinPrefs prefs) - //{ - // ProgressReport pr = new ProgressReport(); - // Thread workThread = new Thread(() => - // { - // cueBin.Dump(directoryTo, prefs, pr); - // }); +#if false // API has changed + bool Dump(CueBin cueBin, string directoryTo, CueBinPrefs prefs) + { + ProgressReport pr = new ProgressReport(); + Thread workThread = new Thread(() => + { + cueBin.Dump(directoryTo, prefs, pr); + }); - // ProgressDialog pd = new ProgressDialog(pr); - // pd.Show(this); - // this.Enabled = false; - // workThread.Start(); - // for (; ; ) - // { - // Application.DoEvents(); - // Thread.Sleep(10); - // if (workThread.ThreadState != ThreadState.Running) - // break; - // pd.Update(); - // } - // this.Enabled = true; - // pd.Dispose(); - // return !pr.CancelSignal; - //} + ProgressDialog pd = new ProgressDialog(pr); + pd.Show(this); + this.Enabled = false; + workThread.Start(); + for (; ; ) + { + Application.DoEvents(); + Thread.Sleep(10); + if (workThread.ThreadState != ThreadState.Running) + break; + pd.Update(); + } + this.Enabled = true; + pd.Dispose(); + return !pr.CancelSignal; + } +#endif private void lblMagicDragArea_DragEnter(object sender, DragEventArgs e) { diff --git a/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs b/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs index fc735e1214..85ed7d949b 100644 --- a/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs +++ b/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs @@ -987,35 +987,38 @@ namespace BizHawk.Client.EmuHawk public bool UsesAudio => parameters.has_audio; public bool UsesVideo => true; + +#if false // API has changed + private static void TestAVI() + { + AviWriter aw = new AviWriter(); + aw.SetVideoParameters(256, 256); + aw.SetMovieParameters(60, 1); + aw.OpenFile("d:\\bizhawk.avi"); + CreateHandle(); + var token = aw.AcquireVideoCodecToken(Handle); + aw.SetVideoCodecToken(token); + aw.OpenStreams(); + + for (int i = 0; i < 100; i++) + { + TestVideoProvider video = new TestVideoProvider(); + Bitmap bmp = new Bitmap(256, 256, System.Drawing.Imaging.PixelFormat.Format32bppArgb); + using (Graphics g = Graphics.FromImage(bmp)) + { + g.Clear(Color.Red); + using (Font f = new Font(FontFamily.GenericMonospace, 10)) + g.DrawString(i.ToString(), f, Brushes.Black, 0, 0); + } +// bmp.Save($"c:\\dump\\{i}.bmp", ImageFormat.Bmp); + for (int y = 0, idx = 0; y < 256; y++) + for (int x = 0; x < 256; x++) + video.buffer[idx++] = bmp.GetPixel(x, y).ToArgb(); + aw.AddFrame(video); + } + aw.CloseStreams(); + aw.CloseFile(); + } +#endif } } - -////TEST AVI -//AviWriter aw = new AviWriter(); -//aw.SetVideoParameters(256, 256); -//aw.SetMovieParameters(60, 1); -//aw.OpenFile("d:\\bizhawk.avi"); -//CreateHandle(); -//var token = aw.AcquireVideoCodecToken(Handle); -//aw.SetVideoCodecToken(token); -//aw.OpenStreams(); - -//for (int i = 0; i < 100; i++) -//{ -// TestVideoProvider video = new TestVideoProvider(); -// Bitmap bmp = new Bitmap(256, 256, System.Drawing.Imaging.PixelFormat.Format32bppArgb); -// using (Graphics g = Graphics.FromImage(bmp)) -// { -// g.Clear(Color.Red); -// using (Font f = new Font(FontFamily.GenericMonospace, 10)) -// g.DrawString(i.ToString(), f, Brushes.Black, 0, 0); -// } -// //bmp.Save($"c:\\dump\\{i}.bmp", ImageFormat.Bmp); -// for (int y = 0, idx = 0; y < 256; y++) -// for (int x = 0; x < 256; x++) -// video.buffer[idx++] = bmp.GetPixel(x, y).ToArgb(); -// aw.AddFrame(video); -//} -//aw.CloseStreams(); -//aw.CloseFile(); -////----- diff --git a/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs b/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs index 3fde8729d4..c231f4821a 100644 --- a/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs +++ b/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs @@ -146,20 +146,20 @@ namespace BizHawk.Client.EmuHawk.ToolExtensions }; tsdd.Items.Add(tsmiRemovePath); - ////experiment of popping open a submenu. doesnt work well. - //item.MouseDown += (o, mev) => - //{ - // if (mev.Button != MouseButtons.Right) return; - // //location of the menu containing this item that was just rightclicked - // var pos = item.Owner.Bounds.Location; - // //the offset within that menu of this item - // var tsddi = item as ToolStripDropDownItem; - // pos.Offset(tsddi.Bounds.Location); - // //the offset of the click - // pos.Offset(mev.Location); - // //tsdd.OwnerItem = item; //has interesting promise, but breaks things otherwise - // tsdd.Show(pos); - //}; +#if false //experiment of popping open a submenu. doesn't work well. + item.MouseDown += (o, mev) => + { + if (mev.Button != MouseButtons.Right) return; + //location of the menu containing this item that was just right-clicked + var pos = item.Owner.Bounds.Location; + //the offset within that menu of this item + pos.Offset(item.Bounds.Location); + //the offset of the click + pos.Offset(mev.Location); +// tsdd.OwnerItem = item; //has interesting promise, but breaks things otherwise + tsdd.Show(pos); + }; +#endif //just add it to the submenu for now. seems to work well enough, even though its a bit odd item.MouseDown += (o, mev) => diff --git a/BizHawk.Client.EmuHawk/Input/Input.cs b/BizHawk.Client.EmuHawk/Input/Input.cs index bce802a768..592bc63d25 100644 --- a/BizHawk.Client.EmuHawk/Input/Input.cs +++ b/BizHawk.Client.EmuHawk/Input/Input.cs @@ -460,13 +460,14 @@ namespace BizHawk.Client.EmuHawk } else { - // don't do this: for now, it will interfere with the virtualpad. don't do something similar for the mouse position either +#if false // don't do this: for now, it will interfere with the virtualpad. don't do something similar for the mouse position either // unpress all buttons - //HandleButton("WMouse L", false); - //HandleButton("WMouse C", false); - //HandleButton("WMouse R", false); - //HandleButton("WMouse 1", false); - //HandleButton("WMouse 2", false); + HandleButton("WMouse L", false, InputFocus.Mouse); + HandleButton("WMouse C", false, InputFocus.Mouse); + HandleButton("WMouse R", false, InputFocus.Mouse); + HandleButton("WMouse 1", false, InputFocus.Mouse); + HandleButton("WMouse 2", false, InputFocus.Mouse); +#endif } } diff --git a/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs b/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs index 52f1a4be75..a71cd5246f 100644 --- a/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs +++ b/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs @@ -195,6 +195,7 @@ namespace BizHawk.Client.EmuHawk sortedFiles[LoadOrdering.Rom].Add(fileInformation); } +#if false /* * This is where handling archives would go. * Right now, that's going to be a HUGE hassle, because of the problem with @@ -202,26 +203,16 @@ namespace BizHawk.Client.EmuHawk * and not streams (also no), so for the purposes of making drag/drop more robust, * I am not building this out just yet. * -- Adam Michaud (Invariel) - - int offset = 0; - bool executable = false; - var archiveHandler = new SevenZipSharpArchiveHandler(); + */ // Not going to process nested archives at the moment. - if (String.IsNullOrEmpty (archive) && archiveHandler.CheckSignature(file, out offset, out executable)) + if (string.IsNullOrEmpty(archive) && archiveHandler.CheckSignature(file, out _, out _)) { - List fileNames = new List(); - var openedArchive = archiveHandler.Construct (file); - - foreach (BizHawk.Common.HawkFileArchiveItem item in openedArchive.Scan ()) - fileNames.Add(item.Name); - - ProcessFileList(fileNames.ToArray(), ref sortedFiles, file); - - openedArchive.Dispose(); + using var openedArchive = archiveHandler.Construct(file); + ProcessFileList(openedArchive.Scan().Select(item => item.Name), ref sortedFiles, file); } archiveHandler.Dispose(); - */ +#endif } break; } diff --git a/BizHawk.Client.EmuHawk/Throttle.cs b/BizHawk.Client.EmuHawk/Throttle.cs index 3c061e706b..4a75db94a5 100644 --- a/BizHawk.Client.EmuHawk/Throttle.cs +++ b/BizHawk.Client.EmuHawk/Throttle.cs @@ -44,7 +44,8 @@ namespace BizHawk.Client.EmuHawk return; } - //heres some ideas for how to begin cleaning this up +#if false + //here's some ideas for how to begin cleaning this up ////at this point, its assumed that we're running. ////this could be a free run, an unthrottled run, or a 'continuous frame advance' (aka continuous) run ////free run: affected by frameskips and throttles @@ -52,16 +53,15 @@ namespace BizHawk.Client.EmuHawk ////continuous run: affected by frameskips and throttles ////so continuous and free are the same? - //bool continuous_run = signal_continuousFrameAdvancing; - //bool unthrottled_run = signal_unthrottle; - //bool free_run = !continuous_run && !unthrottled_run; + bool continuous_run = signal_continuousFrameAdvancing; + bool unthrottled_run = signal_unthrottle; + bool free_run = !continuous_run && !unthrottled_run; - //bool do_throttle, do_skip; - //if (continuous_run || free_run) - // do_throttle = do_skip = true; - //else if (unthrottled_run) - // do_skip = true; - //else throw new InvalidOperationException(); + bool do_throttle, do_skip; + if (continuous_run || free_run) do_throttle = do_skip = true; + else if (unthrottled_run) do_skip = true; + else throw new InvalidOperationException(); +#endif int skipRate = (forceFrameSkip < 0) ? Global.Config.FrameSkip : forceFrameSkip; int ffSkipRate = (forceFrameSkip < 0) ? 3 : forceFrameSkip; diff --git a/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs b/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs index 3736e79ae7..ba42eb3e96 100644 --- a/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs +++ b/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs @@ -371,8 +371,9 @@ namespace BizHawk.Client.EmuHawk _lcdc = lcdc; // set alpha on all pixels +#if false // TODO: RE: Spriteback, you can't muck with Sameboy in this way due to how SGB reads stuff...? - /*unsafe + unsafe { int* p = (int*)_bgpal; for (int i = 0; i < 32; i++) @@ -383,7 +384,8 @@ namespace BizHawk.Client.EmuHawk int c = Spriteback.ToArgb(); for (int i = 0; i < 32; i += 4) p[i] = c; - }*/ + } +#endif // bg maps if (!_cgb) diff --git a/BizHawk.Client.EmuHawk/tools/GameShark.cs b/BizHawk.Client.EmuHawk/tools/GameShark.cs index e24e0db672..e20e5894a5 100644 --- a/BizHawk.Client.EmuHawk/tools/GameShark.cs +++ b/BizHawk.Client.EmuHawk/tools/GameShark.cs @@ -513,6 +513,7 @@ namespace BizHawk.Client.EmuHawk MessageBox.Show("Codebreaker/GameShark SP/Xploder codes are not supported by this tool.", "Tool error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; +#if false //WARNING!! //This code is NOT ready yet. //The GameShark Key @@ -534,54 +535,55 @@ namespace BizHawk.Client.EmuHawk //Decrypted: 82028048 FFFFFFFF //GBACodeBreaker(); - //if (blnCodeBreaker == false) - //{ - // parseString = SingleCheat; - // UInt32 op1 = 0; - // UInt32 op2 = 0; - // UInt32 sum = 0xC6EF3720; - // string test1; - // string test2; - // test1 = parseString.Remove(5, 6); - // test2 = parseString.Remove(0, 6); - // MessageBox.Show(test1.ToString()); - // MessageBox.Show(test2.ToString()); - // op1 = UInt32.Parse(parseString.Remove(5, 6), NumberStyles.HexNumber); - // op2 = UInt32.Parse(parseString.Remove(0, 6), NumberStyles.HexNumber); + if (blnCodeBreaker == false) + { + parseString = SingleCheat; + UInt32 op1 = 0; + UInt32 op2 = 0; + UInt32 sum = 0xC6EF3720; + string test1; + string test2; + test1 = parseString.Remove(5, 6); + test2 = parseString.Remove(0, 6); + MessageBox.Show(test1.ToString()); + MessageBox.Show(test2.ToString()); + op1 = UInt32.Parse(parseString.Remove(5, 6), NumberStyles.HexNumber); + op2 = UInt32.Parse(parseString.Remove(0, 6), NumberStyles.HexNumber); - // //Tiny Encryption Algorithm - // int i; - // for (i = 0; i < 32; ++i) - // { - // op2 -= ((op1 << 4) + GBAGameSharkSeeds[2]) ^ (op1 + sum) ^ ((op1 >> 5) + GBAGameSharkSeeds[3]); - // op1 -= ((op2 << 4) + GBAGameSharkSeeds[0]) ^ (op2 + sum) ^ ((op2 >> 5) + GBAGameSharkSeeds[1]); - // sum -= 0x9E3779B9; - // } - // //op1 has the Address - // //op2 has the Value - // //Sum, is pointless? - // RAMAddress = $"{op1:X8}"; - // //RAMAddress = RAMAddress.Remove(0, 1); - // RAMValue = $"{op2:X8}"; - // // && RAMAddress[6] == '0' - //} + //Tiny Encryption Algorithm + int i; + for (i = 0; i < 32; ++i) + { + op2 -= ((op1 << 4) + GBAGameSharkSeeds[2]) ^ (op1 + sum) ^ ((op1 >> 5) + GBAGameSharkSeeds[3]); + op1 -= ((op2 << 4) + GBAGameSharkSeeds[0]) ^ (op2 + sum) ^ ((op2 >> 5) + GBAGameSharkSeeds[1]); + sum -= 0x9E3779B9; + } + //op1 has the Address + //op2 has the Value + //Sum, is pointless? + RAMAddress = $"{op1:X8}"; + //RAMAddress = RAMAddress.Remove(0, 1); + RAMValue = $"{op2:X8}"; + // && RAMAddress[6] == '0' + } - //if (blnCodeBreaker == true) - //{ - // //We got a Valid Code Breaker Code. Hopefully. - // AddGBA(); - // return; - //} + if (blnCodeBreaker == true) + { + //We got a Valid Code Breaker Code. Hopefully. + AddGBA(); + return; + } - //if (SingleCheat.IndexOf(" ") != 8 && SingleCheat.Length != 12) - //{ - // MessageBox.Show("ALL Codes for Action Replay, Action Replay MAX, Codebreaker, GameShark Advance, GameShark SP, Xploder have a Space after the 8th character.", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - // return; - //} - ////We have a code - //if (blnNoCode == false) - //{ - //} + if (SingleCheat.IndexOf(" ") != 8 && SingleCheat.Length != 12) + { + MessageBox.Show("ALL Codes for Action Replay, Action Replay MAX, Codebreaker, GameShark Advance, GameShark SP, Xploder have a Space after the 8th character.", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + //We have a code + if (blnNoCode == false) + { + } +#endif } } } diff --git a/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs index ad0d2f160a..bf4c2167b6 100644 --- a/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs +++ b/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs @@ -2257,13 +2257,14 @@ namespace BizHawk.Client.EmuHawk } } - // if needed - ////var mat = new SlimDX.Matrix(); - ////mat.M11 = matVals[0, 0]; mat.M12 = matVals[0, 1]; mat.M13 = matVals[0, 2]; mat.M14 = matVals[0, 3]; - ////mat.M21 = matVals[1, 0]; mat.M22 = matVals[1, 1]; mat.M23 = matVals[1, 2]; mat.M24 = matVals[1, 3]; - ////mat.M31 = matVals[2, 0]; mat.M32 = matVals[2, 1]; mat.M33 = matVals[2, 2]; mat.M34 = matVals[2, 3]; - ////mat.M41 = matVals[3, 0]; mat.M42 = matVals[3, 1]; mat.M43 = matVals[3, 2]; mat.M44 = matVals[3, 3]; - ////MessageBox.Show(mat.ToString()); +#if false // if needed + MessageBox.Show(new SlimDX.Matrix { + M11 = matVals[0, 0], M12 = matVals[0, 1], M13 = matVals[0, 2], M14 = matVals[0, 3], + M21 = matVals[1, 0], M22 = matVals[1, 1], M23 = matVals[1, 2], M24 = matVals[1, 3], + M31 = matVals[2, 0], M32 = matVals[2, 1], M33 = matVals[2, 2], M34 = matVals[2, 3], + M41 = matVals[3, 0], M42 = matVals[3, 1], M43 = matVals[3, 2], M44 = matVals[3, 3] + }.ToString()); +#endif using var sw = new StringWriter(); for (int i = 0; i < 4; i++) diff --git a/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs b/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs index 8b218e1024..b2a4b9fd2b 100644 --- a/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs +++ b/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs @@ -1205,16 +1205,11 @@ namespace BizHawk.Client.EmuHawk private void SyncBackdropColor() { +#if false //TODO - //if (checkBackdropColor.Checked) - //{ - // int col = DecodeWinformsColorToSNES(pnBackdropColor.BackColor); - // LibsnesDll.snes_set_backdropColor(col); - //} - //else - //{ - // LibsnesDll.snes_set_backdropColor(-1); - //} + LibsnesApi dll = TODO; + dll.QUERY_set_backdropColor(DecodeWinformsColorToSNES(checkBackdropColor.Checked ? pnBackdropColor.BackColor : Color.FromArgb(-1))); +#endif } private void checkBackdropColor_CheckedChanged(object sender, EventArgs e) diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadDiscManager.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadDiscManager.cs index 6366e785f8..ae8423b0f2 100644 --- a/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadDiscManager.cs +++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadDiscManager.cs @@ -139,10 +139,10 @@ namespace BizHawk.Client.EmuHawk private void lvDiscs_SelectedIndexChanged(object sender, EventArgs e) { - //not a valid way to fight unselection, it results in craptons of ping-ponging logic and eventual malfunction - //if (lvDiscs.SelectedIndices.Count == 0) - // lvDiscs.SelectedIndices.Add(0); - //Global.StickyXORAdapter.SetFloat(_discSelectName, lvDiscs.SelectedIndices[0]); +#if false // not a valid way to fight unselection, it results in craptons of ping-ponging logic and eventual malfunction + if (lvDiscs.SelectedIndices.Count == 0) lvDiscs.SelectedIndices.Add(0); + Global.StickyXORAdapter.SetFloat(_discSelectName, lvDiscs.SelectedIndices[0]); +#endif //emergency measure: if no selection, set no disc if (lvDiscs.SelectedIndices.Count == 0) diff --git a/BizHawk.Emulation.Common/Sound/Utilities/Waves.cs b/BizHawk.Emulation.Common/Sound/Utilities/Waves.cs index 78ff9166dd..466d3a60a5 100644 --- a/BizHawk.Emulation.Common/Sound/Utilities/Waves.cs +++ b/BizHawk.Emulation.Common/Sound/Utilities/Waves.cs @@ -34,7 +34,8 @@ } } - /*TriangleWave = new short[512]; +#if false + TriangleWave = new short[512]; for (int i = 0; i < 256; i++) TriangleWave[i] = (short)((ushort.MaxValue*i/256)-short.MinValue); for (int i = 0; i < 256; i++) @@ -49,7 +50,8 @@ for (int i=0; i<1024; i++) { SineWave[i] = (short) (Math.Sin(i*Math.PI*2/1024d)*32767); - }*/ + } +#endif } } } \ No newline at end of file diff --git a/BizHawk.Emulation.DiscSystem/API_MednaDisc.cs b/BizHawk.Emulation.DiscSystem/API_MednaDisc.cs index c8f8c24921..82e0c5f6f2 100644 --- a/BizHawk.Emulation.DiscSystem/API_MednaDisc.cs +++ b/BizHawk.Emulation.DiscSystem/API_MednaDisc.cs @@ -51,47 +51,49 @@ namespace BizHawk.Emulation.DiscSystem mednadisc_ReadSector(handle, LBA, pBuffer + offset); } - //public void ReadSubcodeDeinterleaved(int LBA, byte[] buffer, int offset) - //{ - // fixed (byte* pBuffer = buf2442) - // mednadisc_ReadSector(handle, LBA, pBuffer); - // SubcodeUtils.Deinterleave(buf2442, 2352, buffer, offset); - //} +#if false + public void ReadSubcodeDeinterleaved(int LBA, byte[] buffer, int offset) + { + fixed (byte* pBuffer = buf2442) + mednadisc_ReadSector(handle, LBA, pBuffer); + SynthUtils.DeinterleaveSubcode(buf2442, 2352, buffer, offset); + } - //public void ReadSubcodeChannel(int LBA, int number, byte[] buffer, int offset) - //{ - // fixed (byte* pBuffer = buf2442) - // mednadisc_ReadSector(handle, LBA, pBuffer); - // SubcodeUtils.Deinterleave(buf2442, 2352, buf96, 0); - // for (int i = 0; i < 12; i++) - // buffer[offset + i] = buf96[number * 12 + i]; - //} + public void ReadSubcodeChannel(int LBA, int number, byte[] buffer, int offset) + { + fixed (byte* pBuffer = buf2442) + mednadisc_ReadSector(handle, LBA, pBuffer); + SynthUtils.DeinterleaveSubcode(buf2442, 2352, buf96, 0); + for (int i = 0; i < 12; i++) + buffer[offset + i] = buf96[number * 12 + i]; + } - //public void Read_2352(int LBA, byte[] buffer, int offset) - //{ - // fixed (byte* pBuffer = buf2442) - // mednadisc_ReadSector(handle, LBA, pBuffer); - // Buffer.BlockCopy(buf2442, 0, buffer, offset, 2352); - //} + public void Read_2352(int LBA, byte[] buffer, int offset) + { + fixed (byte* pBuffer = buf2442) + mednadisc_ReadSector(handle, LBA, pBuffer); + Buffer.BlockCopy(buf2442, 0, buffer, offset, 2352); + } - //public void Read_2048(int LBA, byte[] buffer, int offset) - //{ - // //this depends on CD-XA mode and such. so we need to read the mode bytes - // //HEY!!!!!! SHOULD THIS BE DONE BASED ON THE CLAIMED TRACK TYPE, OR ON WHATS IN THE SECTOR? - // //this is kind of a function of the CD reader.. it's not clear how this function should work. - // //YIKES!!!!!!!!!!!!!! - // //well, we need to scrutinize it for CCD files anyway, so... - // //this sucks. + public void Read_2048(int LBA, byte[] buffer, int offset) + { + //this depends on CD-XA mode and such. so we need to read the mode bytes + //HEY!!!!!! SHOULD THIS BE DONE BASED ON THE CLAIMED TRACK TYPE, OR ON WHATS IN THE SECTOR? + //this is kind of a function of the CD reader.. it's not clear how this function should work. + //YIKES!!!!!!!!!!!!!! + //well, we need to scrutinize it for CCD files anyway, so... + //this sucks. - // fixed (byte* pBuffer = buf2442) - // mednadisc_ReadSector(handle, LBA, pBuffer); + fixed (byte* pBuffer = buf2442) + mednadisc_ReadSector(handle, LBA, pBuffer); - // byte mode = buf2442[15]; - // if (mode == 1) - // Buffer.BlockCopy(buf2442, 16, buffer, offset, 2048); - // else - // Buffer.BlockCopy(buf2442, 24, buffer, offset, 2048); //PSX assumptions about CD-XA.. BAD BAD BAD - //} + byte mode = buf2442[15]; + if (mode == 1) + Buffer.BlockCopy(buf2442, 16, buffer, offset, 2048); + else + Buffer.BlockCopy(buf2442, 24, buffer, offset, 2048); //PSX assumptions about CD-XA.. BAD BAD BAD + } +#endif static void CheckLibrary() { diff --git a/BizHawk.Emulation.DiscSystem/Internal/Algorithms/ECM.cs b/BizHawk.Emulation.DiscSystem/Internal/Algorithms/ECM.cs index 744d447873..a6b8b34924 100644 --- a/BizHawk.Emulation.DiscSystem/Internal/Algorithms/ECM.cs +++ b/BizHawk.Emulation.DiscSystem/Internal/Algorithms/ECM.cs @@ -287,51 +287,51 @@ namespace BizHawk.Emulation.DiscSystem SetSectorAddress(src, src_offset, address); } +#if false + /// + /// Finite Field math helpers. Adapted from: http://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders + /// Only used by alternative implementations of ECM techniques + /// + static class FFUtil + { + public static byte gf_div(byte x, byte y) + { + if (y == 0) + return 0; //? error ? + if (x == 0) + return 0; + int q = gf_log[x] + 255 - gf_log[y]; + return gf_exp[q]; + } - ///// - ///// Finite Field math helpers. Adapted from: http://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders - ///// Only used by alternative implementations of ECM techniques - ///// - //static class FFUtil - //{ - // public static byte gf_div(byte x, byte y) - // { - // if (y == 0) - // return 0; //? error ? - // if (x == 0) - // return 0; - // int q = gf_log[x] + 255 - gf_log[y]; - // return gf_exp[q]; - // } + public static byte gf_mul(byte x, byte y) + { + if (x == 0 || y == 0) + return 0; + return gf_exp[gf_log[x] + gf_log[y]]; + } - // public static byte gf_mul(byte x, byte y) - // { - // if (x == 0 || y == 0) - // return 0; - // return gf_exp[gf_log[x] + gf_log[y]]; - // } - - // static byte[] gf_exp = new byte[512]; - // static byte[] gf_log = new byte[256]; - // static FFUtil() - // { - // for (int i = 0; i < 512; i++) gf_exp[i] = 1; - // for (int i = 0; i < 256; i++) gf_log[i] = 0; - // int x = 1; - // for (int i = 1; i < 255; i++) - // { - // x <<= 1; - // if ((x & 0x100) != 0) - // x ^= 0x11d; //yellowbook specified primitive polynomial - // gf_exp[i] = (byte)x; - // gf_log[x] = (byte)i; - // } - // for (int i = 255; i < 512; i++) - // gf_exp[i] = gf_exp[(byte)(i - 255)]; - // } - - //} //static class FFUtil + static byte[] gf_exp = new byte[512]; + static byte[] gf_log = new byte[256]; + static FFUtil() + { + for (int i = 0; i < 512; i++) gf_exp[i] = 1; + for (int i = 0; i < 256; i++) gf_log[i] = 0; + int x = 1; + for (int i = 1; i < 255; i++) + { + x <<= 1; + if ((x & 0x100) != 0) + x ^= 0x11d; //yellowbook specified primitive polynomial + gf_exp[i] = (byte)x; + gf_log[x] = (byte)i; + } + for (int i = 255; i < 512; i++) + gf_exp[i] = gf_exp[(byte)(i - 255)]; + } + } //static class FFUtil +#endif } //static class ECM } diff --git a/BizHawk.Emulation.DiscSystem/Internal/Algorithms/GPL_ECM.cs b/BizHawk.Emulation.DiscSystem/Internal/Algorithms/GPL_ECM.cs index bd8154072b..3c71f39829 100644 --- a/BizHawk.Emulation.DiscSystem/Internal/Algorithms/GPL_ECM.cs +++ b/BizHawk.Emulation.DiscSystem/Internal/Algorithms/GPL_ECM.cs @@ -1,116 +1,116 @@ -////------------------- -////WARNING GPL CODE -////------------------- -//// -////this is stolen somewhat from neill corlett's code. almost certainly some kind of GPL. originally it came from mednafen, and then I think mednafen may have changed to use another. sorry for the confusion! -//// -////it's kept in this project so that we can readily a/b test it against new algorithms +//------------------- +//WARNING GPL CODE +//------------------- +// +//this is stolen somewhat from neill corlett's code. almost certainly some kind of GPL. originally it came from mednafen, and then I think mednafen may have changed to use another. sorry for the confusion! +// +//it's kept in this project so that we can readily a/b test it against new algorithms -//using System.Diagnostics; +#if false +using System.Diagnostics; -//namespace BizHawk.DiscSystem -//{ -// public static class GPL_ECM -// { -// static byte[] ecc_f_lut = new byte[256]; -// static byte[] ecc_b_lut = new byte[256]; -// static uint[] edc_lut = new uint[256]; +namespace BizHawk.DiscSystem +{ + public static class GPL_ECM + { + static byte[] ecc_f_lut = new byte[256]; + static byte[] ecc_b_lut = new byte[256]; + static uint[] edc_lut = new uint[256]; -// static GPL_ECM() -// { -// uint i, j, edc; -// for (i = 0; i < 256; i++) -// { -// j = (uint)((i << 1) ^ (((i & 0x80) != 0) ? 0x11D : 0)); -// ecc_f_lut[i] = (byte)j; -// ecc_b_lut[i ^ j] = (byte)i; -// edc = i; -// for (j = 0; j < 8; j++) -// edc = (edc >> 1) ^ (((edc & 1) != 0) ? 0xD8018001 : 0); -// edc_lut[i] = edc; -// } -// } + static GPL_ECM() + { + uint i, j, edc; + for (i = 0; i < 256; i++) + { + j = (uint)((i << 1) ^ (((i & 0x80) != 0) ? 0x11D : 0)); + ecc_f_lut[i] = (byte)j; + ecc_b_lut[i ^ j] = (byte)i; + edc = i; + for (j = 0; j < 8; j++) + edc = (edc >> 1) ^ (((edc & 1) != 0) ? 0xD8018001 : 0); + edc_lut[i] = edc; + } + } -// public static uint edc_partial_computeblock(uint edc, byte[] src, int count) -// { -// int i = 0; -// while (count-- != 0) edc = (edc >> 8) ^ edc_lut[(edc ^ (src[i++])) & 0xFF]; -// return edc; -// } + public static uint edc_partial_computeblock(uint edc, byte[] src, int count) + { + int i = 0; + while (count-- != 0) edc = (edc >> 8) ^ edc_lut[(edc ^ (src[i++])) & 0xFF]; + return edc; + } -// public static void edc_computeblock(byte[] src, int count, byte[] dest, int dest_offset) -// { -// uint edc = edc_partial_computeblock(0, src, count); -// dest[dest_offset + 0] = (byte)((edc >> 0) & 0xFF); -// dest[dest_offset + 1] = (byte)((edc >> 8) & 0xFF); -// dest[dest_offset + 2] = (byte)((edc >> 16) & 0xFF); -// dest[dest_offset + 3] = (byte)((edc >> 24) & 0xFF); -// } + public static void edc_computeblock(byte[] src, int count, byte[] dest, int dest_offset) + { + uint edc = edc_partial_computeblock(0, src, count); + dest[dest_offset + 0] = (byte)((edc >> 0) & 0xFF); + dest[dest_offset + 1] = (byte)((edc >> 8) & 0xFF); + dest[dest_offset + 2] = (byte)((edc >> 16) & 0xFF); + dest[dest_offset + 3] = (byte)((edc >> 24) & 0xFF); + } -// public static void edc_validateblock(byte[] src, int count, byte[] dest, int dest_offset) -// { -// uint edc = edc_partial_computeblock(0, src, count); -// Debug.Assert(dest[dest_offset + 0] == (byte)((edc >> 0) & 0xFF)); -// Debug.Assert(dest[dest_offset + 1] == (byte)((edc >> 8) & 0xFF)); -// Debug.Assert(dest[dest_offset + 2] == (byte)((edc >> 16) & 0xFF)); -// Debug.Assert(dest[dest_offset + 3] == (byte)((edc >> 24) & 0xFF)); -// } + public static void edc_validateblock(byte[] src, int count, byte[] dest, int dest_offset) + { + uint edc = edc_partial_computeblock(0, src, count); + Debug.Assert(dest[dest_offset + 0] == (byte)((edc >> 0) & 0xFF)); + Debug.Assert(dest[dest_offset + 1] == (byte)((edc >> 8) & 0xFF)); + Debug.Assert(dest[dest_offset + 2] == (byte)((edc >> 16) & 0xFF)); + Debug.Assert(dest[dest_offset + 3] == (byte)((edc >> 24) & 0xFF)); + } -// public static void ecc_validateblock(byte[] src, int src_offset, uint major_count, uint minor_count, uint major_mult, uint minor_inc, byte[] dest, int dest_offset) -// { -// uint size = major_count * minor_count; -// uint major, minor; -// for (major = 0; major < major_count; major++) -// { -// uint index = (major >> 1) * major_mult + (major & 1); -// byte ecc_a = 0; -// byte ecc_b = 0; -// for (minor = 0; minor < minor_count; minor++) -// { -// byte temp = src[src_offset + index]; -// if ((major >> 1) * major_mult + (major & 1) == 12 && minor_inc == 86) -// System.Console.WriteLine(temp); -// index += minor_inc; -// if (index >= size) index -= size; -// ecc_a ^= temp; -// ecc_b ^= temp; -// ecc_a = ecc_f_lut[ecc_a]; -// } -// ecc_a = ecc_b_lut[ecc_f_lut[ecc_a] ^ ecc_b]; -// Debug.Assert(dest[dest_offset + major] == ecc_a); -// Debug.Assert(dest[dest_offset + major + major_count] == (byte)(ecc_a ^ ecc_b)); -// } -// } + public static void ecc_validateblock(byte[] src, int src_offset, uint major_count, uint minor_count, uint major_mult, uint minor_inc, byte[] dest, int dest_offset) + { + uint size = major_count * minor_count; + uint major, minor; + for (major = 0; major < major_count; major++) + { + uint index = (major >> 1) * major_mult + (major & 1); + byte ecc_a = 0; + byte ecc_b = 0; + for (minor = 0; minor < minor_count; minor++) + { + byte temp = src[src_offset + index]; + if ((major >> 1) * major_mult + (major & 1) == 12 && minor_inc == 86) + System.Console.WriteLine(temp); + index += minor_inc; + if (index >= size) index -= size; + ecc_a ^= temp; + ecc_b ^= temp; + ecc_a = ecc_f_lut[ecc_a]; + } + ecc_a = ecc_b_lut[ecc_f_lut[ecc_a] ^ ecc_b]; + Debug.Assert(dest[dest_offset + major] == ecc_a); + Debug.Assert(dest[dest_offset + major + major_count] == (byte)(ecc_a ^ ecc_b)); + } + } -// public unsafe static void ecc_validate(byte[] sector, int sector_offset, bool zeroaddress) -// { -// byte[] dest = sector; -// int dest_offset = sector_offset+2076; - -// byte address0 = 0, address1 = 0, address2 = 0, address3 = 0; -// //byte i; -// /* Save the address and zero it out */ -// if (zeroaddress) -// { -// address0 = sector[sector_offset + 12 + 0]; sector[sector_offset + 12 + 0] = 0; -// address1 = sector[sector_offset + 12 + 1]; sector[sector_offset + 12 + 1] = 0; -// address2 = sector[sector_offset + 12 + 2]; sector[sector_offset + 12 + 2] = 0; -// address3 = sector[sector_offset + 12 + 3]; sector[sector_offset + 12 + 3] = 0; -// } -// /* Compute ECC P code */ -// ecc_validateblock(sector, sector_offset + 0xC, 86, 24, 2, 86, dest, dest_offset); -// /* Compute ECC Q code */ -// ecc_validateblock(sector, sector_offset + 0xC, 52, 43, 86, 88, dest, dest_offset + 172); -// /* Restore the address */ -// if (zeroaddress) -// { -// sector[sector_offset + 12 + 0] = address0; -// sector[sector_offset + 12 + 3] = address1; -// sector[sector_offset + 12 + 2] = address2; -// sector[sector_offset + 12 + 1] = address3; -// } -// } -// } - -//} + public unsafe static void ecc_validate(byte[] sector, int sector_offset, bool zeroaddress) + { + byte[] dest = sector; + int dest_offset = sector_offset+2076; + byte address0 = 0, address1 = 0, address2 = 0, address3 = 0; + //byte i; + /* Save the address and zero it out */ + if (zeroaddress) + { + address0 = sector[sector_offset + 12 + 0]; sector[sector_offset + 12 + 0] = 0; + address1 = sector[sector_offset + 12 + 1]; sector[sector_offset + 12 + 1] = 0; + address2 = sector[sector_offset + 12 + 2]; sector[sector_offset + 12 + 2] = 0; + address3 = sector[sector_offset + 12 + 3]; sector[sector_offset + 12 + 3] = 0; + } + /* Compute ECC P code */ + ecc_validateblock(sector, sector_offset + 0xC, 86, 24, 2, 86, dest, dest_offset); + /* Compute ECC Q code */ + ecc_validateblock(sector, sector_offset + 0xC, 52, 43, 86, 88, dest, dest_offset + 172); + /* Restore the address */ + if (zeroaddress) + { + sector[sector_offset + 12 + 0] = address0; + sector[sector_offset + 12 + 3] = address1; + sector[sector_offset + 12 + 2] = address2; + sector[sector_offset + 12 + 1] = address3; + } + } + } +} +#endif