Hex Editor - remove some bad code, still plenty to be found in here, but this should be better at least

This commit is contained in:
adelikat 2015-01-14 00:08:20 +00:00
parent b432069504
commit 9c8bb5ff1f
2 changed files with 77 additions and 94 deletions

View File

@ -86,6 +86,7 @@
this.HexScrollBar = new System.Windows.Forms.VScrollBar(); this.HexScrollBar = new System.Windows.Forms.VScrollBar();
this.AddressesLabel = new System.Windows.Forms.Label(); this.AddressesLabel = new System.Windows.Forms.Label();
this.Header = new System.Windows.Forms.Label(); this.Header = new System.Windows.Forms.Label();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.HexMenuStrip.SuspendLayout(); this.HexMenuStrip.SuspendLayout();
this.ViewerContextMenuStrip.SuspendLayout(); this.ViewerContextMenuStrip.SuspendLayout();
this.MemoryViewerBox.SuspendLayout(); this.MemoryViewerBox.SuspendLayout();
@ -274,6 +275,8 @@
// //
// MemoryDomainsMenuItem // MemoryDomainsMenuItem
// //
this.MemoryDomainsMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripSeparator3});
this.MemoryDomainsMenuItem.Name = "MemoryDomainsMenuItem"; this.MemoryDomainsMenuItem.Name = "MemoryDomainsMenuItem";
this.MemoryDomainsMenuItem.Size = new System.Drawing.Size(219, 22); this.MemoryDomainsMenuItem.Size = new System.Drawing.Size(219, 22);
this.MemoryDomainsMenuItem.Text = "&Memory Domains"; this.MemoryDomainsMenuItem.Text = "&Memory Domains";
@ -292,21 +295,21 @@
// DataSizeByteMenuItem // DataSizeByteMenuItem
// //
this.DataSizeByteMenuItem.Name = "DataSizeByteMenuItem"; this.DataSizeByteMenuItem.Name = "DataSizeByteMenuItem";
this.DataSizeByteMenuItem.Size = new System.Drawing.Size(106, 22); this.DataSizeByteMenuItem.Size = new System.Drawing.Size(152, 22);
this.DataSizeByteMenuItem.Text = "1 Byte"; this.DataSizeByteMenuItem.Text = "1 Byte";
this.DataSizeByteMenuItem.Click += new System.EventHandler(this.DataSizeByteMenuItem_Click); this.DataSizeByteMenuItem.Click += new System.EventHandler(this.DataSizeByteMenuItem_Click);
// //
// DataSizeWordMenuItem // DataSizeWordMenuItem
// //
this.DataSizeWordMenuItem.Name = "DataSizeWordMenuItem"; this.DataSizeWordMenuItem.Name = "DataSizeWordMenuItem";
this.DataSizeWordMenuItem.Size = new System.Drawing.Size(106, 22); this.DataSizeWordMenuItem.Size = new System.Drawing.Size(152, 22);
this.DataSizeWordMenuItem.Text = "2 Byte"; this.DataSizeWordMenuItem.Text = "2 Byte";
this.DataSizeWordMenuItem.Click += new System.EventHandler(this.DataSizeWordMenuItem_Click); this.DataSizeWordMenuItem.Click += new System.EventHandler(this.DataSizeWordMenuItem_Click);
// //
// DataSizeDWordMenuItem // DataSizeDWordMenuItem
// //
this.DataSizeDWordMenuItem.Name = "DataSizeDWordMenuItem"; this.DataSizeDWordMenuItem.Name = "DataSizeDWordMenuItem";
this.DataSizeDWordMenuItem.Size = new System.Drawing.Size(106, 22); this.DataSizeDWordMenuItem.Size = new System.Drawing.Size(152, 22);
this.DataSizeDWordMenuItem.Text = "4 Byte"; this.DataSizeDWordMenuItem.Text = "4 Byte";
this.DataSizeDWordMenuItem.Click += new System.EventHandler(this.DataSizeDWordMenuItem_Click); this.DataSizeDWordMenuItem.Click += new System.EventHandler(this.DataSizeDWordMenuItem_Click);
// //
@ -584,6 +587,11 @@
this.Header.TabIndex = 2; this.Header.TabIndex = 2;
this.Header.Text = "label1"; this.Header.Text = "label1";
// //
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(149, 6);
//
// HexEditor // HexEditor
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -672,5 +680,6 @@
private System.Windows.Forms.ToolStripMenuItem RecentTablesSubMenu; private System.Windows.Forms.ToolStripMenuItem RecentTablesSubMenu;
private System.Windows.Forms.ToolStripMenuItem noneToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem noneToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem CloseTableFileMenuItem; private System.Windows.Forms.ToolStripMenuItem CloseTableFileMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
} }
} }

View File

@ -124,11 +124,6 @@ namespace BizHawk.Client.EmuHawk
public void UpdateValues() public void UpdateValues()
{ {
if (!IsHandleCreated || IsDisposed)
{
return;
}
AddressesLabel.Text = GenerateMemoryViewString(); AddressesLabel.Text = GenerateMemoryViewString();
AddressLabel.Text = GenerateAddressString(); AddressLabel.Text = GenerateAddressString();
} }
@ -140,16 +135,32 @@ namespace BizHawk.Client.EmuHawk
public void Restart() public void Restart()
{ {
var theDomain = _domain.Name.ToLower() == "file on disk" ? 999 : GetDomainInt(_domain.Name); _rom = GetRomBytes();
_romDomain = new MemoryDomain(
"File on Disk", _rom.Length, MemoryDomain.Endian.Little, i => _rom[i], (i, value) => _rom[i] = value);
SetMemoryDomainMenu(); // Calls update routines, TODO: refactor, that is confusing! if (_domain.Name == _romDomain.Name)
if (theDomain.HasValue)
{ {
SetMemoryDomain(theDomain.Value); _domain = _romDomain;
}
else if (MemoryDomains.Any(x => x.Name == _domain.Name))
{
_domain = MemoryDomains[_domain.Name];
}
else
{
_domain = MemoryDomains.MainMemory;
} }
SetHeader(); // TODO: SetMemoryDomain copy pasta, do it in one place
//store domain size separately as a long, to apply 0-hack
_domainSize = _domain.Size;
if (_domainSize == 0)
_domainSize = 0x100000000;
BigEndian = _domain.EndianType == MemoryDomain.Endian.Big;
_maxRow = (int)(_domainSize / 2);
ResetScrollBar(); ResetScrollBar();
SetDataSize(DataSize); SetDataSize(DataSize);
UpdateValues(); UpdateValues();
@ -327,18 +338,18 @@ namespace BizHawk.Client.EmuHawk
} }
} }
private int? GetDomainInt(string name) //private int? GetDomainInt(string name)
{ //{
for (var i = 0; i < MemoryDomains.Count; i++) // for (var i = 0; i < MemoryDomains.Count; i++)
{ // {
if (MemoryDomains[i].Name == name) // if (MemoryDomains[i].Name == name)
{ // {
return i; // return i;
} // }
} // }
return null; // return null;
} //}
private static bool CurrentRomIsArchive() private static bool CurrentRomIsArchive()
{ {
@ -441,7 +452,6 @@ namespace BizHawk.Client.EmuHawk
private void HexEditor_Load(object sender, EventArgs e) private void HexEditor_Load(object sender, EventArgs e)
{ {
SetMemoryDomainMenu();
SetDataSize(DataSize); SetDataSize(DataSize);
if (RecentTables.AutoLoad) if (RecentTables.AutoLoad)
@ -569,16 +579,23 @@ namespace BizHawk.Client.EmuHawk
} }
} }
private void SetMemoryDomain(MemoryDomain d) private void SetMemoryDomain(string name)
{ {
_domain = d; if (name == _romDomain.Name)
{
_domain = _romDomain;
}
else
{
_domain = MemoryDomains[name];
//store domain size separately as a long, to apply 0-hack //store domain size separately as a long, to apply 0-hack
_domainSize = _domain.Size; _domainSize = _domain.Size;
if (_domainSize == 0) if (_domainSize == 0)
_domainSize = 0x100000000; _domainSize = 0x100000000;
}
BigEndian = d.EndianType == MemoryDomain.Endian.Big; BigEndian = _domain.EndianType == MemoryDomain.Endian.Big;
_maxRow = (int)(_domainSize / 2); _maxRow = (int)(_domainSize / 2);
SetUpScrollBar(); SetUpScrollBar();
if (0 >= HexScrollBar.Minimum && 0 <= HexScrollBar.Maximum) if (0 >= HexScrollBar.Minimum && 0 <= HexScrollBar.Maximum)
@ -586,36 +603,12 @@ namespace BizHawk.Client.EmuHawk
HexScrollBar.Value = 0; HexScrollBar.Value = 0;
} }
Refresh(); UpdateGroupBoxTitle();
UpdateValues();
} }
private void SetDomain(MemoryDomain domain) private void SetDomain(MemoryDomain domain)
{ {
SetMemoryDomain(GetDomainInt(domain.Name) ?? 0);
SetHeader();
}
// TODO: this should be removable or at least refactorable
private void SetMemoryDomain(int pos)
{
// <zeromus> THIS IS HORRIBLE.
if (pos == 999)
{
// <zeromus> THIS IS HORRIBLE.
_rom = GetRomBytes();
// <zeromus> THIS IS HORRIBLE.
_romDomain = new MemoryDomain(
"File on Disk", _rom.Length, MemoryDomain.Endian.Little, i => _rom[i], (i, value) => _rom[i] = value);
// <zeromus> THIS IS HORRIBLE.
SetMemoryDomain(_romDomain);
}
else if (pos < MemoryDomains.Count)
{
SetMemoryDomain(MemoryDomains[pos]);
}
SetHeader(); SetHeader();
UpdateGroupBoxTitle(); UpdateGroupBoxTitle();
ResetScrollBar(); ResetScrollBar();
@ -629,38 +622,6 @@ namespace BizHawk.Client.EmuHawk
MemoryViewerBox.Text = Emulator.SystemId + " " + _domain + " - " + addressesString + " addresses"; MemoryViewerBox.Text = Emulator.SystemId + " " + _domain + " - " + addressesString + " addresses";
} }
private void SetMemoryDomainMenu()
{
MemoryDomainsMenuItem.DropDownItems.Clear();
for (var i = 0; i < MemoryDomains.Count; i++)
{
//zero 11-sep-2014 - historically, memorydomains of size zero were ignored.
//now, they'll be confused with a 32bit memorydomain. hope that's not a problem.
var str = MemoryDomains[i].ToString();
var item = new ToolStripMenuItem { Text = str };
{
var temp = i;
item.Click += (o, ev) => SetMemoryDomain(temp);
}
if (i == 0)
{
SetMemoryDomain(i);
}
MemoryDomainsMenuItem.DropDownItems.Add(item);
_domainMenuItems.Add(item);
}
// Add File on Disk memory domain
// <zeromus> THIS IS HORRIBLE.
var rom_item = new ToolStripMenuItem { Text = "File on Disk" };
rom_item.Click += (o, ev) => SetMemoryDomain(999); // 999 will denote File on Disk
MemoryDomainsMenuItem.DropDownItems.Add(rom_item);
_domainMenuItems.Add(rom_item);
}
private void ClearNibbles() private void ClearNibbles()
{ {
for (var i = 0; i < 8; i++) for (var i = 0; i < 8; i++)
@ -1392,10 +1353,23 @@ namespace BizHawk.Client.EmuHawk
private void MemoryDomainsMenuItem_DropDownOpened(object sender, EventArgs e) private void MemoryDomainsMenuItem_DropDownOpened(object sender, EventArgs e)
{ {
foreach (var menuItem in _domainMenuItems) MemoryDomainsMenuItem.DropDownItems.Clear();
MemoryDomainsMenuItem.DropDownItems.AddRange(
MemoryDomains.MenuItems(SetMemoryDomain, _domain.Name)
.ToArray());
var romMenuItem = new ToolStripMenuItem
{ {
menuItem.Checked = _domain.Name == menuItem.Text; Text = _romDomain.Name,
} Checked = _domain.Name == _romDomain.Name
};
MemoryDomainsMenuItem.DropDownItems.Add(new ToolStripSeparator());
MemoryDomainsMenuItem.DropDownItems.Add(romMenuItem);
romMenuItem.Click += (o, ev) => SetMemoryDomain(_romDomain.Name);
} }
private void DataSizeByteMenuItem_Click(object sender, EventArgs e) private void DataSizeByteMenuItem_Click(object sender, EventArgs e)