From 9f68a9c3255367514b51fdc6ca79d988b4412a08 Mon Sep 17 00:00:00 2001 From: RetroEdit <30182911+RetroEdit@users.noreply.github.com> Date: Fri, 10 Jul 2020 11:20:06 +0000 Subject: [PATCH] Hex editor: disable 0-length domains (b/c mGBA SaveRAM) --- src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs | 5 ++++- src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs | 9 +++++++-- .../Consoles/Nintendo/GBA/MGBAHawk.IMemoryDomains.cs | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs index 22a54ebd34..b2565be4f9 100644 --- a/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs +++ b/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs @@ -242,7 +242,10 @@ namespace BizHawk.Client.EmuHawk.ToolExtensions var item = new ToolStripMenuItem { Text = name, - Enabled = !(maxSize.HasValue && domain.Size > maxSize.Value), + // 0-length domains cause several problems, so they're disabled. + // Specifically, scrolling, arrow keys, and PgUp/PgDn all crash. + // Also, they're useless for RAM searches. + Enabled = !(maxSize.HasValue && domain.Size > maxSize.Value) && domain.Size != 0, Checked = name == selected }; item.Click += (o, ev) => setCallback(name); diff --git a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs index 40da6e2d46..2967252135 100644 --- a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs +++ b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs @@ -190,7 +190,7 @@ namespace BizHawk.Client.EmuHawk } } - if (MemoryDomains.Any(x => x.Name == _domain.Name)) + if (MemoryDomains.Any(x => x.Name == _domain.Name && x.Size != 0)) { _domain = MemoryDomains[_domain.Name]; } @@ -634,7 +634,12 @@ namespace BizHawk.Client.EmuHawk } else { - _domain = MemoryDomains[name]; + var domainCandidate = MemoryDomains[name]; + if (domainCandidate.Size == 0) + { + return; + } + _domain = domainCandidate; } BigEndian = _domain.EndianType == MemoryDomain.Endian.Big; diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.IMemoryDomains.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.IMemoryDomains.cs index 3286646d78..8ff99dba1c 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.IMemoryDomains.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.IMemoryDomains.cs @@ -31,7 +31,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA mm.Add(_vram = new MemoryDomainIntPtr("VRAM", le, IntPtr.Zero, 96 * 1024, true, 4)); mm.Add(_oam = new MemoryDomainIntPtr("OAM", le, IntPtr.Zero, 1024, true, 4)); mm.Add(_rom = new MemoryDomainIntPtr("ROM", le, IntPtr.Zero, romsize, true, 4)); - mm.Add(_sram = new MemoryDomainIntPtr("SRAM", le, IntPtr.Zero, 0, true, 4)); // size will be fixed in wireup + mm.Add(_sram = new MemoryDomainIntPtr("SaveRAM", le, IntPtr.Zero, 0, true, 4)); // size will be fixed in wireup mm.Add(_cwram = new MemoryDomainDelegate("Combined WRAM", (256 + 32) * 1024, le, null, null, 4)); mm.Add(new MemoryDomainDelegate("System Bus", 0x10000000, le,