hex editor: fix crash with odd-sized memory domains and 2/4 byte value sizes. fix display bug with odd-sized memory domains. fix display bugs with >64KB memory domains.

This commit is contained in:
goyuken 2012-12-03 16:51:39 +00:00
parent 8de879f132
commit 4d8a178703
2 changed files with 59 additions and 47 deletions

View File

@ -113,7 +113,7 @@
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";
this.fileToolStripMenuItem.DropDownOpened += new System.EventHandler(this.fileToolStripMenuItem_DropDownOpened);
//
@ -122,36 +122,36 @@
this.saveToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.SaveAs;
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.saveToolStripMenuItem.Size = new System.Drawing.Size(229, 22);
this.saveToolStripMenuItem.Size = new System.Drawing.Size(225, 22);
this.saveToolStripMenuItem.Text = "Save";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
//
// saveAsBinaryToolStripMenuItem
//
this.saveAsBinaryToolStripMenuItem.Name = "saveAsBinaryToolStripMenuItem";
this.saveAsBinaryToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.S)));
this.saveAsBinaryToolStripMenuItem.Size = new System.Drawing.Size(229, 22);
this.saveAsBinaryToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.S)));
this.saveAsBinaryToolStripMenuItem.Size = new System.Drawing.Size(225, 22);
this.saveAsBinaryToolStripMenuItem.Text = "Save as binary...";
this.saveAsBinaryToolStripMenuItem.Click += new System.EventHandler(this.saveAsBinaryToolStripMenuItem_Click);
//
// dumpToFileToolStripMenuItem
//
this.dumpToFileToolStripMenuItem.Name = "dumpToFileToolStripMenuItem";
this.dumpToFileToolStripMenuItem.Size = new System.Drawing.Size(229, 22);
this.dumpToFileToolStripMenuItem.Size = new System.Drawing.Size(225, 22);
this.dumpToFileToolStripMenuItem.Text = "Save as text...";
this.dumpToFileToolStripMenuItem.Click += new System.EventHandler(this.dumpToFileToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(226, 6);
this.toolStripSeparator1.Size = new System.Drawing.Size(222, 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(229, 22);
this.exitToolStripMenuItem.Size = new System.Drawing.Size(225, 22);
this.exitToolStripMenuItem.Text = "E&xit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
@ -165,7 +165,7 @@
this.findNextToolStripMenuItem,
this.findPrevToolStripMenuItem});
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20);
this.editToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.editToolStripMenuItem.Text = "&Edit";
this.editToolStripMenuItem.DropDownOpened += new System.EventHandler(this.editToolStripMenuItem_DropDownOpened);
//
@ -174,7 +174,7 @@
this.copyToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Duplicate;
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(146, 22);
this.copyToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.copyToolStripMenuItem.Text = "&Copy";
this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click);
//
@ -183,20 +183,20 @@
this.pasteToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Paste;
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(146, 22);
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.pasteToolStripMenuItem.Text = "&Paste";
this.pasteToolStripMenuItem.Click += new System.EventHandler(this.pasteToolStripMenuItem_Click);
//
// toolStripSeparator6
//
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(143, 6);
this.toolStripSeparator6.Size = new System.Drawing.Size(141, 6);
//
// findToolStripMenuItem1
//
this.findToolStripMenuItem1.Name = "findToolStripMenuItem1";
this.findToolStripMenuItem1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
this.findToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
this.findToolStripMenuItem1.Size = new System.Drawing.Size(144, 22);
this.findToolStripMenuItem1.Text = "&Find...";
this.findToolStripMenuItem1.Click += new System.EventHandler(this.findToolStripMenuItem1_Click);
//
@ -204,7 +204,7 @@
//
this.findNextToolStripMenuItem.Name = "findNextToolStripMenuItem";
this.findNextToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F3;
this.findNextToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.findNextToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.findNextToolStripMenuItem.Text = "Find Next";
this.findNextToolStripMenuItem.Click += new System.EventHandler(this.findNextToolStripMenuItem_Click);
//
@ -212,7 +212,7 @@
//
this.findPrevToolStripMenuItem.Name = "findPrevToolStripMenuItem";
this.findPrevToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F2;
this.findPrevToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.findPrevToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.findPrevToolStripMenuItem.Text = "Find Prev";
this.findPrevToolStripMenuItem.Click += new System.EventHandler(this.findPrevToolStripMenuItem_Click);
//
@ -229,14 +229,14 @@
this.unfreezeAllToolStripMenuItem,
this.pokeAddressToolStripMenuItem});
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(219, 22);
this.memoryDomainsToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.memoryDomainsToolStripMenuItem.Text = "&Memory Domains";
this.memoryDomainsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.memoryDomainsToolStripMenuItem_DropDownOpened);
//
@ -247,47 +247,47 @@
this.byteToolStripMenuItem1,
this.byteToolStripMenuItem2});
this.dataSizeToolStripMenuItem.Name = "dataSizeToolStripMenuItem";
this.dataSizeToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.dataSizeToolStripMenuItem.Size = new System.Drawing.Size(206, 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(105, 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(105, 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(105, 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(219, 22);
this.enToolStripMenuItem.Size = new System.Drawing.Size(206, 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(216, 6);
this.toolStripSeparator2.Size = new System.Drawing.Size(203, 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(219, 22);
this.goToAddressToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.goToAddressToolStripMenuItem.Text = "&Go to Address...";
this.goToAddressToolStripMenuItem.Click += new System.EventHandler(this.goToAddressToolStripMenuItem_Click);
//
@ -296,7 +296,7 @@
this.addToRamWatchToolStripMenuItem1.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
this.addToRamWatchToolStripMenuItem1.Name = "addToRamWatchToolStripMenuItem1";
this.addToRamWatchToolStripMenuItem1.ShortcutKeyDisplayString = "Ctrl+W";
this.addToRamWatchToolStripMenuItem1.Size = new System.Drawing.Size(219, 22);
this.addToRamWatchToolStripMenuItem1.Size = new System.Drawing.Size(206, 22);
this.addToRamWatchToolStripMenuItem1.Text = "Add to Ram Watch";
this.addToRamWatchToolStripMenuItem1.Click += new System.EventHandler(this.addToRamWatchToolStripMenuItem1_Click);
//
@ -305,7 +305,7 @@
this.freezeAddressToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Freeze;
this.freezeAddressToolStripMenuItem.Name = "freezeAddressToolStripMenuItem";
this.freezeAddressToolStripMenuItem.ShortcutKeyDisplayString = "Space";
this.freezeAddressToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.freezeAddressToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.freezeAddressToolStripMenuItem.Text = "&Freeze Address";
this.freezeAddressToolStripMenuItem.Click += new System.EventHandler(this.freezeAddressToolStripMenuItem_Click);
//
@ -314,7 +314,7 @@
this.unfreezeAllToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Unfreeze;
this.unfreezeAllToolStripMenuItem.Name = "unfreezeAllToolStripMenuItem";
this.unfreezeAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.Delete)));
this.unfreezeAllToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.unfreezeAllToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.unfreezeAllToolStripMenuItem.Text = "Unfreeze All";
this.unfreezeAllToolStripMenuItem.Click += new System.EventHandler(this.unfreezeAllToolStripMenuItem_Click);
//
@ -323,7 +323,7 @@
this.pokeAddressToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.poke;
this.pokeAddressToolStripMenuItem.Name = "pokeAddressToolStripMenuItem";
this.pokeAddressToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
this.pokeAddressToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.pokeAddressToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.pokeAddressToolStripMenuItem.Text = "&Poke Address";
this.pokeAddressToolStripMenuItem.Click += new System.EventHandler(this.pokeAddressToolStripMenuItem_Click);
//
@ -336,14 +336,14 @@
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(183, 22);
this.autoloadToolStripMenuItem.Text = "Auto-load";
this.autoloadToolStripMenuItem.Click += new System.EventHandler(this.autoloadToolStripMenuItem_Click);
//
@ -354,44 +354,44 @@
this.toolStripSeparator8,
this.resetToDefaultToolStripMenuItem1});
this.customColorsToolStripMenuItem.Name = "customColorsToolStripMenuItem";
this.customColorsToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.customColorsToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
this.customColorsToolStripMenuItem.Text = "Custom Colors";
//
// setColorsToolStripMenuItem1
//
this.setColorsToolStripMenuItem1.Name = "setColorsToolStripMenuItem1";
this.setColorsToolStripMenuItem1.Size = new System.Drawing.Size(157, 22);
this.setColorsToolStripMenuItem1.Size = new System.Drawing.Size(153, 22);
this.setColorsToolStripMenuItem1.Text = "Set Colors";
this.setColorsToolStripMenuItem1.Click += new System.EventHandler(this.setColorsToolStripMenuItem1_Click);
//
// toolStripSeparator8
//
this.toolStripSeparator8.Name = "toolStripSeparator8";
this.toolStripSeparator8.Size = new System.Drawing.Size(154, 6);
this.toolStripSeparator8.Size = new System.Drawing.Size(150, 6);
//
// resetToDefaultToolStripMenuItem1
//
this.resetToDefaultToolStripMenuItem1.Name = "resetToDefaultToolStripMenuItem1";
this.resetToDefaultToolStripMenuItem1.Size = new System.Drawing.Size(157, 22);
this.resetToDefaultToolStripMenuItem1.Size = new System.Drawing.Size(153, 22);
this.resetToDefaultToolStripMenuItem1.Text = "Reset to Default";
this.resetToDefaultToolStripMenuItem1.Click += new System.EventHandler(this.resetToDefaultToolStripMenuItem1_Click);
//
// saveWindowsSettingsToolStripMenuItem
//
this.saveWindowsSettingsToolStripMenuItem.Name = "saveWindowsSettingsToolStripMenuItem";
this.saveWindowsSettingsToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.saveWindowsSettingsToolStripMenuItem.Size = new System.Drawing.Size(183, 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(180, 6);
//
// restoreWindowSizeToolStripMenuItem
//
this.restoreWindowSizeToolStripMenuItem.Name = "restoreWindowSizeToolStripMenuItem";
this.restoreWindowSizeToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.restoreWindowSizeToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
this.restoreWindowSizeToolStripMenuItem.Text = "&Restore Window Size";
this.restoreWindowSizeToolStripMenuItem.Click += new System.EventHandler(this.restoreWindowSizeToolStripMenuItem_Click);
//
@ -521,9 +521,9 @@
//
// MemoryViewerBox
//
this.MemoryViewerBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.MemoryViewerBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.MemoryViewerBox.ContextMenuStrip = this.ViewerContextMenuStrip;
this.MemoryViewerBox.Controls.Add(this.AddressLabel);
this.MemoryViewerBox.Controls.Add(this.vScrollBar1);
@ -550,8 +550,8 @@
//
// vScrollBar1
//
this.vScrollBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
this.vScrollBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
this.vScrollBar1.LargeChange = 16;
this.vScrollBar1.Location = new System.Drawing.Point(539, 8);
this.vScrollBar1.Name = "vScrollBar1";
@ -563,7 +563,7 @@
//
this.AddressesLabel.AutoSize = true;
this.AddressesLabel.ContextMenuStrip = this.ViewerContextMenuStrip;
this.AddressesLabel.Location = new System.Drawing.Point(55, 30);
this.AddressesLabel.Location = new System.Drawing.Point(65, 30);
this.AddressesLabel.Name = "AddressesLabel";
this.AddressesLabel.Size = new System.Drawing.Size(31, 13);
this.AddressesLabel.TabIndex = 0;
@ -578,7 +578,7 @@
//
this.Header.AutoSize = true;
this.Header.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Header.Location = new System.Drawing.Point(18, 44);
this.Header.Location = new System.Drawing.Point(28, 44);
this.Header.Name = "Header";
this.Header.Size = new System.Drawing.Size(35, 13);
this.Header.TabIndex = 2;

View File

@ -155,7 +155,11 @@ namespace BizHawk.MultiClient
if (NumDigits == 4)
{
addrStr.Append(" "); //Hack to line things up better between 4 and 6
addrStr.Append(" "); //Hack to line things up better between 4 and 6
}
else if (NumDigits == 6)
{
addrStr.Append(" ");
}
addrStr.Append(String.Format("{0:X" + NumDigits + "}", addr));
addrStr.Append('\n');
@ -178,10 +182,16 @@ namespace BizHawk.MultiClient
for (int j = 0; j < 16; j += DataSize)
{
if (addr + j < Domain.Size)
if (addr + j + DataSize <= Domain.Size)
{
rowStr.AppendFormat(DigitFormatString, MakeValue(addr + j));
}
else
{
for (int t = 0; t < DataSize; t++)
rowStr.Append(" ");
rowStr.Append(' ');
}
}
rowStr.Append(" | ");
for (int k = 0; k < 16; k++)
@ -267,6 +277,7 @@ namespace BizHawk.MultiClient
Domain = domain;
int? theDomain = GetDomainInt(Domain.Name);
SetMemoryDomain(theDomain ?? 0);
SetHeader();
}
public void Restart()
@ -291,7 +302,7 @@ namespace BizHawk.MultiClient
{
SetMemoryDomain(theDomain ?? 0);
}
SetHeader();
ResetScrollBar();
@ -449,6 +460,7 @@ namespace BizHawk.MultiClient
{
SetMemoryDomain(Global.Emulator.MemoryDomains[pos]);
}
SetHeader();
UpdateGroupBoxTitle();
ResetScrollBar();
UpdateValues();