hex editor - clean up copy/paste. fix data scrambling bugs and handling of weird selection areas. copy now creates writes raw (non-byteswapped) values. add 'export' command which creates the text you have copied, complete with spaces.

This commit is contained in:
zeromus 2015-09-29 02:29:19 -05:00
parent 56c3360ec8
commit 5b4845692a
2 changed files with 147 additions and 71 deletions

View File

@ -44,6 +44,7 @@
this.ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.EditMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.CopyMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ExportMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.PasteMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
this.FindMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -72,6 +73,7 @@
this.resetToDefaultToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ViewerContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.CopyContextItem = new System.Windows.Forms.ToolStripMenuItem();
this.ExportContextItem = new System.Windows.Forms.ToolStripMenuItem();
this.PasteContextItem = new System.Windows.Forms.ToolStripMenuItem();
this.FreezeContextItem = new System.Windows.Forms.ToolStripMenuItem();
this.AddToRamWatchContextItem = new System.Windows.Forms.ToolStripMenuItem();
@ -122,7 +124,7 @@
this.toolStripSeparator1,
this.ExitMenuItem});
this.FileSubMenu.Name = "FileSubMenu";
this.FileSubMenu.Size = new System.Drawing.Size(37, 20);
this.FileSubMenu.Size = new System.Drawing.Size(35, 20);
this.FileSubMenu.Text = "&File";
this.FileSubMenu.DropDownOpened += new System.EventHandler(this.FileSubMenu_DropDownOpened);
//
@ -131,7 +133,7 @@
this.SaveMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.SaveAs;
this.SaveMenuItem.Name = "SaveMenuItem";
this.SaveMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.SaveMenuItem.Size = new System.Drawing.Size(229, 22);
this.SaveMenuItem.Size = new System.Drawing.Size(225, 22);
this.SaveMenuItem.Text = "Save";
this.SaveMenuItem.Click += new System.EventHandler(this.SaveMenuItem_Click);
//
@ -140,33 +142,33 @@
this.SaveAsBinaryMenuItem.Name = "SaveAsBinaryMenuItem";
this.SaveAsBinaryMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.S)));
this.SaveAsBinaryMenuItem.Size = new System.Drawing.Size(229, 22);
this.SaveAsBinaryMenuItem.Size = new System.Drawing.Size(225, 22);
this.SaveAsBinaryMenuItem.Text = "Save as binary...";
this.SaveAsBinaryMenuItem.Click += new System.EventHandler(this.SaveAsBinaryMenuItem_Click);
//
// SaveAsTextMenuItem
//
this.SaveAsTextMenuItem.Name = "SaveAsTextMenuItem";
this.SaveAsTextMenuItem.Size = new System.Drawing.Size(229, 22);
this.SaveAsTextMenuItem.Size = new System.Drawing.Size(225, 22);
this.SaveAsTextMenuItem.Text = "Save as text...";
this.SaveAsTextMenuItem.Click += new System.EventHandler(this.SaveAsTextMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(226, 6);
this.toolStripSeparator4.Size = new System.Drawing.Size(222, 6);
//
// LoadTableFileMenuItem
//
this.LoadTableFileMenuItem.Name = "LoadTableFileMenuItem";
this.LoadTableFileMenuItem.Size = new System.Drawing.Size(229, 22);
this.LoadTableFileMenuItem.Size = new System.Drawing.Size(225, 22);
this.LoadTableFileMenuItem.Text = "&Load .tbl file";
this.LoadTableFileMenuItem.Click += new System.EventHandler(this.LoadTableFileMenuItem_Click);
//
// CloseTableFileMenuItem
//
this.CloseTableFileMenuItem.Name = "CloseTableFileMenuItem";
this.CloseTableFileMenuItem.Size = new System.Drawing.Size(229, 22);
this.CloseTableFileMenuItem.Size = new System.Drawing.Size(225, 22);
this.CloseTableFileMenuItem.Text = "Close .tbl file";
this.CloseTableFileMenuItem.Click += new System.EventHandler(this.CloseTableFileMenuItem_Click);
//
@ -175,26 +177,26 @@
this.RecentTablesSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.noneToolStripMenuItem});
this.RecentTablesSubMenu.Name = "RecentTablesSubMenu";
this.RecentTablesSubMenu.Size = new System.Drawing.Size(229, 22);
this.RecentTablesSubMenu.Size = new System.Drawing.Size(225, 22);
this.RecentTablesSubMenu.Text = "Recent";
this.RecentTablesSubMenu.DropDownOpened += new System.EventHandler(this.RecentTablesSubMenu_DropDownOpened);
//
// noneToolStripMenuItem
//
this.noneToolStripMenuItem.Name = "noneToolStripMenuItem";
this.noneToolStripMenuItem.Size = new System.Drawing.Size(103, 22);
this.noneToolStripMenuItem.Size = new System.Drawing.Size(99, 22);
this.noneToolStripMenuItem.Text = "None";
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(226, 6);
this.toolStripSeparator1.Size = new System.Drawing.Size(222, 6);
//
// ExitMenuItem
//
this.ExitMenuItem.Name = "ExitMenuItem";
this.ExitMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
this.ExitMenuItem.Size = new System.Drawing.Size(229, 22);
this.ExitMenuItem.Size = new System.Drawing.Size(225, 22);
this.ExitMenuItem.Text = "E&xit";
this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click);
//
@ -202,13 +204,14 @@
//
this.EditMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.CopyMenuItem,
this.ExportMenuItem,
this.PasteMenuItem,
this.toolStripSeparator6,
this.FindMenuItem,
this.FindNextMenuItem,
this.FindPrevMenuItem});
this.EditMenuItem.Name = "EditMenuItem";
this.EditMenuItem.Size = new System.Drawing.Size(39, 20);
this.EditMenuItem.Size = new System.Drawing.Size(37, 20);
this.EditMenuItem.Text = "&Edit";
this.EditMenuItem.DropDownOpened += new System.EventHandler(this.EditMenuItem_DropDownOpened);
//
@ -217,29 +220,37 @@
this.CopyMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Duplicate;
this.CopyMenuItem.Name = "CopyMenuItem";
this.CopyMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
this.CopyMenuItem.Size = new System.Drawing.Size(146, 22);
this.CopyMenuItem.Size = new System.Drawing.Size(152, 22);
this.CopyMenuItem.Text = "&Copy";
this.CopyMenuItem.Click += new System.EventHandler(this.CopyMenuItem_Click);
//
// ExportMenuItem
//
this.ExportMenuItem.Name = "ExportMenuItem";
this.ExportMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)));
this.ExportMenuItem.Size = new System.Drawing.Size(152, 22);
this.ExportMenuItem.Text = "&Export";
this.ExportMenuItem.Click += new System.EventHandler(this.ExportMenuItem_Click);
//
// PasteMenuItem
//
this.PasteMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Paste;
this.PasteMenuItem.Name = "PasteMenuItem";
this.PasteMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
this.PasteMenuItem.Size = new System.Drawing.Size(146, 22);
this.PasteMenuItem.Size = new System.Drawing.Size(152, 22);
this.PasteMenuItem.Text = "&Paste";
this.PasteMenuItem.Click += new System.EventHandler(this.PasteMenuItem_Click);
//
// toolStripSeparator6
//
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(143, 6);
this.toolStripSeparator6.Size = new System.Drawing.Size(149, 6);
//
// FindMenuItem
//
this.FindMenuItem.Name = "FindMenuItem";
this.FindMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
this.FindMenuItem.Size = new System.Drawing.Size(146, 22);
this.FindMenuItem.Size = new System.Drawing.Size(152, 22);
this.FindMenuItem.Text = "&Find...";
this.FindMenuItem.Click += new System.EventHandler(this.FindMenuItem_Click);
//
@ -247,7 +258,7 @@
//
this.FindNextMenuItem.Name = "FindNextMenuItem";
this.FindNextMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F3;
this.FindNextMenuItem.Size = new System.Drawing.Size(146, 22);
this.FindNextMenuItem.Size = new System.Drawing.Size(152, 22);
this.FindNextMenuItem.Text = "Find Next";
this.FindNextMenuItem.Click += new System.EventHandler(this.FindNextMenuItem_Click);
//
@ -255,7 +266,7 @@
//
this.FindPrevMenuItem.Name = "FindPrevMenuItem";
this.FindPrevMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F2;
this.FindPrevMenuItem.Size = new System.Drawing.Size(146, 22);
this.FindPrevMenuItem.Size = new System.Drawing.Size(152, 22);
this.FindPrevMenuItem.Text = "Find Prev";
this.FindPrevMenuItem.Click += new System.EventHandler(this.FindPrevMenuItem_Click);
//
@ -272,7 +283,7 @@
this.UnfreezeAllMenuItem,
this.PokeAddressMenuItem});
this.OptionsSubMenu.Name = "OptionsSubMenu";
this.OptionsSubMenu.Size = new System.Drawing.Size(61, 20);
this.OptionsSubMenu.Size = new System.Drawing.Size(56, 20);
this.OptionsSubMenu.Text = "&Options";
this.OptionsSubMenu.DropDownOpened += new System.EventHandler(this.OptionsSubMenu_DropDownOpened);
//
@ -281,7 +292,7 @@
this.MemoryDomainsMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripSeparator3});
this.MemoryDomainsMenuItem.Name = "MemoryDomainsMenuItem";
this.MemoryDomainsMenuItem.Size = new System.Drawing.Size(219, 22);
this.MemoryDomainsMenuItem.Size = new System.Drawing.Size(206, 22);
this.MemoryDomainsMenuItem.Text = "&Memory Domains";
this.MemoryDomainsMenuItem.DropDownOpened += new System.EventHandler(this.MemoryDomainsMenuItem_DropDownOpened);
//
@ -297,47 +308,47 @@
this.DataSizeWordMenuItem,
this.DataSizeDWordMenuItem});
this.DataSizeSubMenu.Name = "DataSizeSubMenu";
this.DataSizeSubMenu.Size = new System.Drawing.Size(219, 22);
this.DataSizeSubMenu.Size = new System.Drawing.Size(206, 22);
this.DataSizeSubMenu.Text = "Data Size";
//
// DataSizeByteMenuItem
//
this.DataSizeByteMenuItem.Name = "DataSizeByteMenuItem";
this.DataSizeByteMenuItem.Size = new System.Drawing.Size(106, 22);
this.DataSizeByteMenuItem.Size = new System.Drawing.Size(105, 22);
this.DataSizeByteMenuItem.Text = "1 Byte";
this.DataSizeByteMenuItem.Click += new System.EventHandler(this.DataSizeByteMenuItem_Click);
//
// DataSizeWordMenuItem
//
this.DataSizeWordMenuItem.Name = "DataSizeWordMenuItem";
this.DataSizeWordMenuItem.Size = new System.Drawing.Size(106, 22);
this.DataSizeWordMenuItem.Size = new System.Drawing.Size(105, 22);
this.DataSizeWordMenuItem.Text = "2 Byte";
this.DataSizeWordMenuItem.Click += new System.EventHandler(this.DataSizeWordMenuItem_Click);
//
// DataSizeDWordMenuItem
//
this.DataSizeDWordMenuItem.Name = "DataSizeDWordMenuItem";
this.DataSizeDWordMenuItem.Size = new System.Drawing.Size(106, 22);
this.DataSizeDWordMenuItem.Size = new System.Drawing.Size(105, 22);
this.DataSizeDWordMenuItem.Text = "4 Byte";
this.DataSizeDWordMenuItem.Click += new System.EventHandler(this.DataSizeDWordMenuItem_Click);
//
// BigEndianMenuItem
//
this.BigEndianMenuItem.Name = "BigEndianMenuItem";
this.BigEndianMenuItem.Size = new System.Drawing.Size(219, 22);
this.BigEndianMenuItem.Size = new System.Drawing.Size(206, 22);
this.BigEndianMenuItem.Text = "Big Endian";
this.BigEndianMenuItem.Click += new System.EventHandler(this.BigEndianMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(216, 6);
this.toolStripSeparator2.Size = new System.Drawing.Size(203, 6);
//
// GoToAddressMenuItem
//
this.GoToAddressMenuItem.Name = "GoToAddressMenuItem";
this.GoToAddressMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.G)));
this.GoToAddressMenuItem.Size = new System.Drawing.Size(219, 22);
this.GoToAddressMenuItem.Size = new System.Drawing.Size(206, 22);
this.GoToAddressMenuItem.Text = "&Go to Address...";
this.GoToAddressMenuItem.Click += new System.EventHandler(this.GoToAddressMenuItem_Click);
//
@ -346,7 +357,7 @@
this.AddToRamWatchMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.FindHS;
this.AddToRamWatchMenuItem.Name = "AddToRamWatchMenuItem";
this.AddToRamWatchMenuItem.ShortcutKeyDisplayString = "Ctrl+W";
this.AddToRamWatchMenuItem.Size = new System.Drawing.Size(219, 22);
this.AddToRamWatchMenuItem.Size = new System.Drawing.Size(206, 22);
this.AddToRamWatchMenuItem.Text = "Add to Ram Watch";
this.AddToRamWatchMenuItem.Click += new System.EventHandler(this.AddToRamWatchMenuItem_Click);
//
@ -355,7 +366,7 @@
this.FreezeAddressMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Freeze;
this.FreezeAddressMenuItem.Name = "FreezeAddressMenuItem";
this.FreezeAddressMenuItem.ShortcutKeyDisplayString = "Space";
this.FreezeAddressMenuItem.Size = new System.Drawing.Size(219, 22);
this.FreezeAddressMenuItem.Size = new System.Drawing.Size(206, 22);
this.FreezeAddressMenuItem.Text = "&Freeze Address";
this.FreezeAddressMenuItem.Click += new System.EventHandler(this.FreezeAddressMenuItem_Click);
//
@ -364,7 +375,7 @@
this.UnfreezeAllMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Unfreeze;
this.UnfreezeAllMenuItem.Name = "UnfreezeAllMenuItem";
this.UnfreezeAllMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.Delete)));
this.UnfreezeAllMenuItem.Size = new System.Drawing.Size(219, 22);
this.UnfreezeAllMenuItem.Size = new System.Drawing.Size(206, 22);
this.UnfreezeAllMenuItem.Text = "Unfreeze All";
this.UnfreezeAllMenuItem.Click += new System.EventHandler(this.UnfreezeAllMenuItem_Click);
//
@ -373,7 +384,7 @@
this.PokeAddressMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.poke;
this.PokeAddressMenuItem.Name = "PokeAddressMenuItem";
this.PokeAddressMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
this.PokeAddressMenuItem.Size = new System.Drawing.Size(219, 22);
this.PokeAddressMenuItem.Size = new System.Drawing.Size(206, 22);
this.PokeAddressMenuItem.Text = "&Poke Address";
this.PokeAddressMenuItem.Click += new System.EventHandler(this.PokeAddressMenuItem_Click);
//
@ -382,7 +393,7 @@
this.SettingsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.CustomColorsSubMenu});
this.SettingsSubMenu.Name = "SettingsSubMenu";
this.SettingsSubMenu.Size = new System.Drawing.Size(61, 20);
this.SettingsSubMenu.Size = new System.Drawing.Size(58, 20);
this.SettingsSubMenu.Text = "&Settings";
//
// CustomColorsSubMenu
@ -392,25 +403,25 @@
this.toolStripSeparator8,
this.ResetColorsToDefaultMenuItem});
this.CustomColorsSubMenu.Name = "CustomColorsSubMenu";
this.CustomColorsSubMenu.Size = new System.Drawing.Size(153, 22);
this.CustomColorsSubMenu.Size = new System.Drawing.Size(143, 22);
this.CustomColorsSubMenu.Text = "Custom Colors";
//
// SetColorsMenuItem
//
this.SetColorsMenuItem.Name = "SetColorsMenuItem";
this.SetColorsMenuItem.Size = new System.Drawing.Size(157, 22);
this.SetColorsMenuItem.Size = new System.Drawing.Size(153, 22);
this.SetColorsMenuItem.Text = "Set Colors";
this.SetColorsMenuItem.Click += new System.EventHandler(this.SetColorsMenuItem_Click);
//
// toolStripSeparator8
//
this.toolStripSeparator8.Name = "toolStripSeparator8";
this.toolStripSeparator8.Size = new System.Drawing.Size(154, 6);
this.toolStripSeparator8.Size = new System.Drawing.Size(150, 6);
//
// ResetColorsToDefaultMenuItem
//
this.ResetColorsToDefaultMenuItem.Name = "ResetColorsToDefaultMenuItem";
this.ResetColorsToDefaultMenuItem.Size = new System.Drawing.Size(157, 22);
this.ResetColorsToDefaultMenuItem.Size = new System.Drawing.Size(153, 22);
this.ResetColorsToDefaultMenuItem.Text = "Reset to Default";
this.ResetColorsToDefaultMenuItem.Click += new System.EventHandler(this.ResetColorsToDefaultMenuItem_Click);
//
@ -429,6 +440,7 @@
//
this.ViewerContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.CopyContextItem,
this.ExportContextItem,
this.PasteContextItem,
this.FreezeContextItem,
this.AddToRamWatchContextItem,
@ -442,7 +454,7 @@
this.toolStripMenuItem1,
this.viewN64MatrixToolStripMenuItem});
this.ViewerContextMenuStrip.Name = "ViewerContextMenuStrip";
this.ViewerContextMenuStrip.Size = new System.Drawing.Size(220, 242);
this.ViewerContextMenuStrip.Size = new System.Drawing.Size(207, 264);
this.ViewerContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.ViewerContextMenuStrip_Opening);
//
// CopyContextItem
@ -450,16 +462,23 @@
this.CopyContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Duplicate;
this.CopyContextItem.Name = "CopyContextItem";
this.CopyContextItem.ShortcutKeyDisplayString = "Ctrl+C";
this.CopyContextItem.Size = new System.Drawing.Size(219, 22);
this.CopyContextItem.Size = new System.Drawing.Size(206, 22);
this.CopyContextItem.Text = "&Copy";
this.CopyContextItem.Click += new System.EventHandler(this.CopyMenuItem_Click);
//
// ExportContextItem
//
this.ExportContextItem.Name = "ExportContextItem";
this.ExportContextItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)));
this.ExportContextItem.Size = new System.Drawing.Size(206, 22);
this.ExportContextItem.Text = "&Export";
//
// PasteContextItem
//
this.PasteContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Paste;
this.PasteContextItem.Name = "PasteContextItem";
this.PasteContextItem.ShortcutKeyDisplayString = "Ctrl+V";
this.PasteContextItem.Size = new System.Drawing.Size(219, 22);
this.PasteContextItem.Size = new System.Drawing.Size(206, 22);
this.PasteContextItem.Text = "&Paste";
this.PasteContextItem.Click += new System.EventHandler(this.PasteMenuItem_Click);
//
@ -468,7 +487,7 @@
this.FreezeContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Freeze;
this.FreezeContextItem.Name = "FreezeContextItem";
this.FreezeContextItem.ShortcutKeyDisplayString = "Space";
this.FreezeContextItem.Size = new System.Drawing.Size(219, 22);
this.FreezeContextItem.Size = new System.Drawing.Size(206, 22);
this.FreezeContextItem.Text = "&Freeze";
this.FreezeContextItem.Click += new System.EventHandler(this.FreezeAddressMenuItem_Click);
//
@ -477,7 +496,7 @@
this.AddToRamWatchContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.FindHS;
this.AddToRamWatchContextItem.Name = "AddToRamWatchContextItem";
this.AddToRamWatchContextItem.ShortcutKeyDisplayString = "Ctrl+W";
this.AddToRamWatchContextItem.Size = new System.Drawing.Size(219, 22);
this.AddToRamWatchContextItem.Size = new System.Drawing.Size(206, 22);
this.AddToRamWatchContextItem.Text = "&Add to Ram Watch";
this.AddToRamWatchContextItem.Click += new System.EventHandler(this.AddToRamWatchMenuItem_Click);
//
@ -486,7 +505,7 @@
this.UnfreezeAllContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Unfreeze;
this.UnfreezeAllContextItem.Name = "UnfreezeAllContextItem";
this.UnfreezeAllContextItem.ShortcutKeyDisplayString = "Shift+Del";
this.UnfreezeAllContextItem.Size = new System.Drawing.Size(219, 22);
this.UnfreezeAllContextItem.Size = new System.Drawing.Size(206, 22);
this.UnfreezeAllContextItem.Text = "&Unfreeze All";
this.UnfreezeAllContextItem.Click += new System.EventHandler(this.UnfreezeAllMenuItem_Click);
//
@ -495,20 +514,20 @@
this.PokeContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.poke;
this.PokeContextItem.Name = "PokeContextItem";
this.PokeContextItem.ShortcutKeyDisplayString = "Ctrl+P";
this.PokeContextItem.Size = new System.Drawing.Size(219, 22);
this.PokeContextItem.Size = new System.Drawing.Size(206, 22);
this.PokeContextItem.Text = "&Poke Address";
this.PokeContextItem.Click += new System.EventHandler(this.PokeAddressMenuItem_Click);
//
// ContextSeparator1
//
this.ContextSeparator1.Name = "ContextSeparator1";
this.ContextSeparator1.Size = new System.Drawing.Size(216, 6);
this.ContextSeparator1.Size = new System.Drawing.Size(203, 6);
//
// IncrementContextItem
//
this.IncrementContextItem.Name = "IncrementContextItem";
this.IncrementContextItem.ShortcutKeyDisplayString = "+";
this.IncrementContextItem.Size = new System.Drawing.Size(219, 22);
this.IncrementContextItem.Size = new System.Drawing.Size(206, 22);
this.IncrementContextItem.Text = "&Increment";
this.IncrementContextItem.Click += new System.EventHandler(this.IncrementContextItem_Click);
//
@ -516,32 +535,32 @@
//
this.DecrementContextItem.Name = "DecrementContextItem";
this.DecrementContextItem.ShortcutKeyDisplayString = "-";
this.DecrementContextItem.Size = new System.Drawing.Size(219, 22);
this.DecrementContextItem.Size = new System.Drawing.Size(206, 22);
this.DecrementContextItem.Text = "&Decrement";
this.DecrementContextItem.Click += new System.EventHandler(this.DecrementContextItem_Click);
//
// ContextSeparator2
//
this.ContextSeparator2.Name = "ContextSeparator2";
this.ContextSeparator2.Size = new System.Drawing.Size(216, 6);
this.ContextSeparator2.Size = new System.Drawing.Size(203, 6);
//
// GoToContextItem
//
this.GoToContextItem.Name = "GoToContextItem";
this.GoToContextItem.ShortcutKeyDisplayString = "Ctrl+G";
this.GoToContextItem.Size = new System.Drawing.Size(219, 22);
this.GoToContextItem.Size = new System.Drawing.Size(206, 22);
this.GoToContextItem.Text = "&Go to Address...";
this.GoToContextItem.Click += new System.EventHandler(this.GoToAddressMenuItem_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(216, 6);
this.toolStripMenuItem1.Size = new System.Drawing.Size(203, 6);
//
// viewN64MatrixToolStripMenuItem
//
this.viewN64MatrixToolStripMenuItem.Name = "viewN64MatrixToolStripMenuItem";
this.viewN64MatrixToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.viewN64MatrixToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.viewN64MatrixToolStripMenuItem.Text = "View N64 Matrix";
this.viewN64MatrixToolStripMenuItem.Click += new System.EventHandler(this.viewN64MatrixToolStripMenuItem_Click);
//
@ -700,5 +719,7 @@
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem viewN64MatrixToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ExportContextItem;
private System.Windows.Forms.ToolStripMenuItem ExportMenuItem;
}
}

View File

@ -542,14 +542,14 @@ namespace BizHawk.Client.EmuHawk
: _domain.PeekByte(address);
}
private int MakeValue(long address)
private int MakeValue(int dataSize, long address)
{
if (Global.CheatList.IsActive(_domain, address))
{
return Global.CheatList.GetCheatValue(_domain, address, (Watch.WatchSize)DataSize ).Value;
}
switch (DataSize)
switch (dataSize)
{
default:
case 1:
@ -561,6 +561,11 @@ namespace BizHawk.Client.EmuHawk
}
}
private int MakeValue(long address)
{
return MakeValue(DataSize, address);
}
private void SetMemoryDomain(string name)
{
if (name == _romDomain.Name)
@ -1333,36 +1338,85 @@ namespace BizHawk.Client.EmuHawk
FindNextMenuItem.Enabled = !string.IsNullOrWhiteSpace(_findStr);
}
string MakeCopyExportString(bool export)
{
//make room for an array with _secondaryHighlightedAddresses and optionally HighlightedAddress
long[] addresses = new long[_secondaryHighlightedAddresses.Count + (HighlightedAddress.HasValue ? 1 : 0)];
//if there was actually nothing to do, return
if (addresses.Length == 0)
return null;
//fill the array with _secondaryHighlightedAddresses
for (int i = 0; i < _secondaryHighlightedAddresses.Count; i++)
addresses[i] = _secondaryHighlightedAddresses[i];
//and add HighlightedAddress if present
if (HighlightedAddress.HasValue)
addresses[addresses.Length - 1] = HighlightedAddress.Value;
//these need to be sorted. it's not just for HighlightedAddress, _secondaryHighlightedAddresses can even be jumbled
Array.Sort(addresses);
//find the maximum length of the exported string
int maximumLength = addresses.Length * (export ? 3 : 2) + 8;
StringBuilder sb = new StringBuilder(maximumLength);
//generate it differently for export (as you see it) or copy (raw bytes)
if (export)
for (int i = 0; i < addresses.Length; i++)
{
sb.Append(ValueString(addresses[i]));
if(i != addresses.Length-1)
sb.Append(' ');
}
else
{
for (int i = 0; i < addresses.Length; i++)
{
long start = addresses[i];
long end = addresses[i] + DataSize -1 ;
for(long a = start;a<=end;a++)
sb.AppendFormat("{0:X2}", MakeValue(1,a));
}
}
return sb.ToString();
}
private void ExportMenuItem_Click(object sender, EventArgs e)
{
var value = MakeCopyExportString(true);
if (!string.IsNullOrEmpty(value))
Clipboard.SetDataObject(value);
}
private void CopyMenuItem_Click(object sender, EventArgs e)
{
var value = HighlightedAddress.HasValue ? ValueString(HighlightedAddress.Value) : string.Empty;
value = _secondaryHighlightedAddresses.Aggregate(value, (current, x) => current + ValueString(x));
if (!string.IsNullOrWhiteSpace(value))
{
var value = MakeCopyExportString(false);
if (!string.IsNullOrEmpty(value))
Clipboard.SetDataObject(value);
}
}
private void PasteMenuItem_Click(object sender, EventArgs e)
{
var data = Clipboard.GetDataObject();
if (data != null && data.GetDataPresent(DataFormats.Text))
if (data != null && !data.GetDataPresent(DataFormats.Text))
return;
var clipboardRaw = (string)data.GetData(DataFormats.Text);
var hex = clipboardRaw.OnlyHex();
var numBytes = hex.Length / 2;
for (var i = 0; i < numBytes; i++)
{
var clipboardRaw = (string)data.GetData(DataFormats.Text);
var hex = clipboardRaw.OnlyHex();
var numBytes = hex.Length / 2;
for (var i = 0; i < numBytes; i++)
{
var value = int.Parse(hex.Substring(i * 2, 2), NumberStyles.HexNumber);
var address = _addressHighlighted + i;
_domain.PokeByte(address, (byte)value);
}
UpdateValues();
var value = int.Parse(hex.Substring(i * 2, 2), NumberStyles.HexNumber);
var address = _addressHighlighted + i;
_domain.PokeByte(address, (byte)value);
}
}
UpdateValues();
}
private void FindMenuItem_Click(object sender, EventArgs e)
{
@ -2247,5 +2301,6 @@ namespace BizHawk.Client.EmuHawk
MessageBox.Show(str);
}
}
}