Hex Editor - fix hex editing of 4 byte values, added a Unfreeze All menu/context menu item

This commit is contained in:
andres.delikat 2011-08-25 01:49:22 +00:00
parent 550261b831
commit 4017e8a068
3 changed files with 387 additions and 289 deletions

View File

@ -815,6 +815,15 @@ namespace BizHawk.MultiClient
UpdateNumberOfCheats();
}
public void RemoveAllCheats()
{
Global.CheatList.Clear();
MemoryPulse.Clear();
if (!this.IsHandleCreated || this.IsDisposed) return;
CheatListView.Refresh();
UpdateNumberOfCheats();
}
private void disableAllCheatsToolStripMenuItem_Click(object sender, EventArgs e)
{
DisableAllCheats();

View File

@ -58,6 +58,8 @@
this.MemoryViewerBox = new System.Windows.Forms.GroupBox();
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
this.AddressesLabel = new System.Windows.Forms.Label();
this.unfreezeAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.unfreezeAllToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.ViewerContextMenuStrip.SuspendLayout();
this.MemoryViewerBox.SuspendLayout();
@ -82,27 +84,27 @@
this.toolStripSeparator1,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20);
this.fileToolStripMenuItem.Text = "&File";
//
// dumpToFileToolStripMenuItem
//
this.dumpToFileToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.SaveAs;
this.dumpToFileToolStripMenuItem.Name = "dumpToFileToolStripMenuItem";
this.dumpToFileToolStripMenuItem.Size = new System.Drawing.Size(149, 22);
this.dumpToFileToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
this.dumpToFileToolStripMenuItem.Text = "&Dump to file...";
this.dumpToFileToolStripMenuItem.Click += new System.EventHandler(this.dumpToFileToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(146, 6);
this.toolStripSeparator1.Size = new System.Drawing.Size(151, 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(149, 22);
this.exitToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
this.exitToolStripMenuItem.Text = "E&xit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
@ -115,16 +117,17 @@
this.toolStripSeparator2,
this.goToAddressToolStripMenuItem,
this.addToRamWatchToolStripMenuItem1,
this.freezeAddressToolStripMenuItem});
this.freezeAddressToolStripMenuItem,
this.unfreezeAllToolStripMenuItem});
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(56, 20);
this.optionsToolStripMenuItem.Text = "&Options";
this.optionsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.optionsToolStripMenuItem_DropDownOpened);
//
// memoryDomainsToolStripMenuItem
//
this.memoryDomainsToolStripMenuItem.Name = "memoryDomainsToolStripMenuItem";
this.memoryDomainsToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
this.memoryDomainsToolStripMenuItem.Size = new System.Drawing.Size(204, 22);
this.memoryDomainsToolStripMenuItem.Text = "&Memory Domains";
this.memoryDomainsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.memoryDomainsToolStripMenuItem_DropDownOpened);
//
@ -135,47 +138,47 @@
this.byteToolStripMenuItem1,
this.byteToolStripMenuItem2});
this.dataSizeToolStripMenuItem.Name = "dataSizeToolStripMenuItem";
this.dataSizeToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
this.dataSizeToolStripMenuItem.Size = new System.Drawing.Size(204, 22);
this.dataSizeToolStripMenuItem.Text = "Data Size";
//
// byteToolStripMenuItem
//
this.byteToolStripMenuItem.Name = "byteToolStripMenuItem";
this.byteToolStripMenuItem.Size = new System.Drawing.Size(106, 22);
this.byteToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.byteToolStripMenuItem.Text = "1 Byte";
this.byteToolStripMenuItem.Click += new System.EventHandler(this.byteToolStripMenuItem_Click);
//
// byteToolStripMenuItem1
//
this.byteToolStripMenuItem1.Name = "byteToolStripMenuItem1";
this.byteToolStripMenuItem1.Size = new System.Drawing.Size(106, 22);
this.byteToolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
this.byteToolStripMenuItem1.Text = "2 Byte";
this.byteToolStripMenuItem1.Click += new System.EventHandler(this.byteToolStripMenuItem1_Click);
//
// byteToolStripMenuItem2
//
this.byteToolStripMenuItem2.Name = "byteToolStripMenuItem2";
this.byteToolStripMenuItem2.Size = new System.Drawing.Size(106, 22);
this.byteToolStripMenuItem2.Size = new System.Drawing.Size(152, 22);
this.byteToolStripMenuItem2.Text = "4 Byte";
this.byteToolStripMenuItem2.Click += new System.EventHandler(this.byteToolStripMenuItem2_Click);
//
// enToolStripMenuItem
//
this.enToolStripMenuItem.Name = "enToolStripMenuItem";
this.enToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
this.enToolStripMenuItem.Size = new System.Drawing.Size(204, 22);
this.enToolStripMenuItem.Text = "Big Endian";
this.enToolStripMenuItem.Click += new System.EventHandler(this.enToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(196, 6);
this.toolStripSeparator2.Size = new System.Drawing.Size(201, 6);
//
// goToAddressToolStripMenuItem
//
this.goToAddressToolStripMenuItem.Name = "goToAddressToolStripMenuItem";
this.goToAddressToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.G)));
this.goToAddressToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
this.goToAddressToolStripMenuItem.Size = new System.Drawing.Size(204, 22);
this.goToAddressToolStripMenuItem.Text = "&Go to Address...";
this.goToAddressToolStripMenuItem.Click += new System.EventHandler(this.goToAddressToolStripMenuItem_Click);
//
@ -183,7 +186,7 @@
//
this.addToRamWatchToolStripMenuItem1.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
this.addToRamWatchToolStripMenuItem1.Name = "addToRamWatchToolStripMenuItem1";
this.addToRamWatchToolStripMenuItem1.Size = new System.Drawing.Size(199, 22);
this.addToRamWatchToolStripMenuItem1.Size = new System.Drawing.Size(204, 22);
this.addToRamWatchToolStripMenuItem1.Text = "Add to Ram Watch";
this.addToRamWatchToolStripMenuItem1.Click += new System.EventHandler(this.addToRamWatchToolStripMenuItem1_Click);
//
@ -191,7 +194,7 @@
//
this.freezeAddressToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Freeze;
this.freezeAddressToolStripMenuItem.Name = "freezeAddressToolStripMenuItem";
this.freezeAddressToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
this.freezeAddressToolStripMenuItem.Size = new System.Drawing.Size(204, 22);
this.freezeAddressToolStripMenuItem.Text = "&Freeze Address";
this.freezeAddressToolStripMenuItem.Click += new System.EventHandler(this.freezeAddressToolStripMenuItem_Click);
//
@ -203,33 +206,33 @@
this.toolStripSeparator3,
this.restoreWindowSizeToolStripMenuItem});
this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
this.settingsToolStripMenuItem.Size = new System.Drawing.Size(58, 20);
this.settingsToolStripMenuItem.Text = "&Settings";
this.settingsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.settingsToolStripMenuItem_DropDownOpened);
//
// autoloadToolStripMenuItem
//
this.autoloadToolStripMenuItem.Name = "autoloadToolStripMenuItem";
this.autoloadToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.autoloadToolStripMenuItem.Size = new System.Drawing.Size(194, 22);
this.autoloadToolStripMenuItem.Text = "Auto-load";
this.autoloadToolStripMenuItem.Click += new System.EventHandler(this.autoloadToolStripMenuItem_Click);
//
// saveWindowsSettingsToolStripMenuItem
//
this.saveWindowsSettingsToolStripMenuItem.Name = "saveWindowsSettingsToolStripMenuItem";
this.saveWindowsSettingsToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.saveWindowsSettingsToolStripMenuItem.Size = new System.Drawing.Size(194, 22);
this.saveWindowsSettingsToolStripMenuItem.Text = "Save windows settings";
this.saveWindowsSettingsToolStripMenuItem.Click += new System.EventHandler(this.saveWindowsSettingsToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(189, 6);
this.toolStripSeparator3.Size = new System.Drawing.Size(191, 6);
//
// restoreWindowSizeToolStripMenuItem
//
this.restoreWindowSizeToolStripMenuItem.Name = "restoreWindowSizeToolStripMenuItem";
this.restoreWindowSizeToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.restoreWindowSizeToolStripMenuItem.Size = new System.Drawing.Size(194, 22);
this.restoreWindowSizeToolStripMenuItem.Text = "&Restore Window Size";
this.restoreWindowSizeToolStripMenuItem.Click += new System.EventHandler(this.restoreWindowSizeToolStripMenuItem_Click);
//
@ -238,15 +241,16 @@
this.ViewerContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.pokeToolStripMenuItem,
this.freezeToolStripMenuItem,
this.addToRamWatchToolStripMenuItem});
this.addToRamWatchToolStripMenuItem,
this.unfreezeAllToolStripMenuItem1});
this.ViewerContextMenuStrip.Name = "ViewerContextMenuStrip";
this.ViewerContextMenuStrip.Size = new System.Drawing.Size(175, 70);
this.ViewerContextMenuStrip.Size = new System.Drawing.Size(176, 114);
//
// pokeToolStripMenuItem
//
this.pokeToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.poke;
this.pokeToolStripMenuItem.Name = "pokeToolStripMenuItem";
this.pokeToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.pokeToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
this.pokeToolStripMenuItem.Text = "&Poke";
this.pokeToolStripMenuItem.Click += new System.EventHandler(this.pokeToolStripMenuItem_Click);
//
@ -254,7 +258,7 @@
//
this.freezeToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Freeze;
this.freezeToolStripMenuItem.Name = "freezeToolStripMenuItem";
this.freezeToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.freezeToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
this.freezeToolStripMenuItem.Text = "&Freeze";
this.freezeToolStripMenuItem.Click += new System.EventHandler(this.freezeToolStripMenuItem_Click);
//
@ -262,7 +266,7 @@
//
this.addToRamWatchToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
this.addToRamWatchToolStripMenuItem.Name = "addToRamWatchToolStripMenuItem";
this.addToRamWatchToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.addToRamWatchToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
this.addToRamWatchToolStripMenuItem.Text = "&Add to Ram Watch";
this.addToRamWatchToolStripMenuItem.Click += new System.EventHandler(this.addToRamWatchToolStripMenuItem_Click);
//
@ -309,6 +313,22 @@
this.AddressesLabel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.AddressesLabel_MouseMove);
this.AddressesLabel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.AddressesLabel_MouseClick);
//
// unfreezeAllToolStripMenuItem
//
this.unfreezeAllToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Unfreeze;
this.unfreezeAllToolStripMenuItem.Name = "unfreezeAllToolStripMenuItem";
this.unfreezeAllToolStripMenuItem.Size = new System.Drawing.Size(204, 22);
this.unfreezeAllToolStripMenuItem.Text = "Unfreeze All";
this.unfreezeAllToolStripMenuItem.Click += new System.EventHandler(this.unfreezeAllToolStripMenuItem_Click);
//
// unfreezeAllToolStripMenuItem1
//
this.unfreezeAllToolStripMenuItem1.Image = global::BizHawk.MultiClient.Properties.Resources.Unfreeze;
this.unfreezeAllToolStripMenuItem1.Name = "unfreezeAllToolStripMenuItem1";
this.unfreezeAllToolStripMenuItem1.Size = new System.Drawing.Size(175, 22);
this.unfreezeAllToolStripMenuItem1.Text = "&Unfreeze All";
this.unfreezeAllToolStripMenuItem1.Click += new System.EventHandler(this.unfreezeAllToolStripMenuItem1_Click);
//
// HexEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -366,5 +386,7 @@
private System.Windows.Forms.GroupBox MemoryViewerBox;
private System.Windows.Forms.Label AddressesLabel;
private System.Windows.Forms.VScrollBar vScrollBar1;
private System.Windows.Forms.ToolStripMenuItem unfreezeAllToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem unfreezeAllToolStripMenuItem1;
}
}

View File

@ -17,19 +17,16 @@ namespace BizHawk.MultiClient
//Find text box - autohighlights matches, and shows total matches
//Users can customize background, & text colors
//Tool strip
//Show num addresses in group box title (show "address" if 1 address)
//big font for currently mouse over'ed value?
//Unfreeze All items - this one is tricky though, the dialog should keep track of
// which addresses were frozen using this dialog (its own cheatList), and only
// remove those from the Cheats window cheat list
//4 byte hex editing
int defaultWidth;
int defaultHeight;
List<ToolStripMenuItem> domainMenuItems = new List<ToolStripMenuItem>();
int RowsVisible = 0;
string Header = "";
int NumDigits = 4;
char[] nibbles = { 'G', 'G', 'G', 'G' }; //G = off 0-9 & A-F are acceptable values
char[] nibbles = { 'G', 'G', 'G', 'G' , 'G', 'G', 'G', 'G'}; //G = off 0-9 & A-F are acceptable values
int addressHighlighted = -1;
int addressOver = -1;
int addrOffset = 0; //If addresses are > 4 digits, this offset is how much the columns are moved to the right
@ -316,7 +313,7 @@ namespace BizHawk.MultiClient
private void ClearNibbles()
{
for (int x = 0; x < 4; x++)
for (int x = 0; x < 8; x++)
nibbles[x] = 'G';
}
@ -893,7 +890,61 @@ namespace BizHawk.MultiClient
}
break;
case 4:
if (nibbles[0] == 'G')
{
nibbles[0] = (char)e.KeyCode;
info = nibbles[0].ToString();
}
else if (nibbles[1] == 'G')
{
nibbles[1] = (char)e.KeyCode;
info = nibbles[1].ToString();
}
else if (nibbles[2] == 'G')
{
nibbles[2] = (char)e.KeyCode;
info = nibbles[2].ToString();
}
else if (nibbles[3] == 'G')
{
nibbles[3] = (char)e.KeyCode;
info = nibbles[3].ToString();
}
else if (nibbles[4] == 'G')
{
nibbles[4] = (char)e.KeyCode;
info = nibbles[4].ToString();
}
else if (nibbles[5] == 'G')
{
nibbles[5] = (char)e.KeyCode;
info = nibbles[5].ToString();
}
else if (nibbles[6] == 'G')
{
nibbles[6] = (char)e.KeyCode;
info = nibbles[6].ToString();
}
else if (nibbles[7] == 'G')
{
string temp = nibbles[0].ToString() + nibbles[1].ToString();
byte x1 = byte.Parse(temp, NumberStyles.HexNumber);
string temp2 = nibbles[2].ToString() + nibbles[3].ToString();
byte x2 = byte.Parse(temp2, NumberStyles.HexNumber);
string temp3 = nibbles[4].ToString() + nibbles[5].ToString();
byte x3 = byte.Parse(temp3, NumberStyles.HexNumber);
string temp4 = nibbles[6].ToString() + ((char)e.KeyCode).ToString();
byte x4 = byte.Parse(temp4, NumberStyles.HexNumber);
PokeWord(addressHighlighted, x1, x2);
PokeWord(addressHighlighted + 2, x3, x4);
ClearNibbles();
SetHighlighted(addressHighlighted + 4);
UpdateValues();
}
break;
}
}
@ -911,5 +962,21 @@ namespace BizHawk.MultiClient
Domain.PokeByte(addr + 1, _2);
}
}
private void RemoveAllCheats()
{
Global.MainForm.Cheats1.RemoveAllCheats();
MemoryViewerBox.Refresh();
}
private void unfreezeAllToolStripMenuItem_Click(object sender, EventArgs e)
{
RemoveAllCheats();
}
private void unfreezeAllToolStripMenuItem1_Click(object sender, EventArgs e)
{
RemoveAllCheats();
}
}
}