remove the obsolete MemoryDomain.FromIntPtr method

This commit is contained in:
adelikat 2017-04-24 13:47:40 -05:00
parent 5a408f9321
commit 54ebe75d2b
9 changed files with 68 additions and 56 deletions

View File

@ -35,17 +35,6 @@ namespace BizHawk.Emulation.Common
return new MemoryDomainByteArray(name, endian, data, writable, wordSize); return new MemoryDomainByteArray(name, endian, data, writable, wordSize);
} }
/// <summary>
/// create a memorydomain that references an unmanaged memory block
/// </summary>
/// <param name="data">must remain valid as long as the MemoryDomain exists!</param>
/// <param name="writable">if false, writes will be ignored</param>
[Obsolete]
public static unsafe MemoryDomain FromIntPtr(string name, long size, Endian endian, IntPtr data, bool writable = true, int wordSize = 1)
{
return new MemoryDomainIntPtr(name, endian, data, size, writable, wordSize);
}
/// <summary> /// <summary>
/// create a memorydomain that references an unmanaged memory block with 16 bit swaps /// create a memorydomain that references an unmanaged memory block with 16 bit swaps
/// </summary> /// </summary>

View File

@ -9,23 +9,30 @@ namespace BizHawk.Emulation.Cores.Atari.Lynx
{ {
private void SetupMemoryDomains() private void SetupMemoryDomains()
{ {
var mms = new List<MemoryDomain>(); var mms = new List<MemoryDomain>
mms.Add(MemoryDomain.FromIntPtr("RAM", 65536, MemoryDomain.Endian.Little, LibLynx.GetRamPointer(Core), true, 2)); {
new MemoryDomainIntPtr("RAM", MemoryDomain.Endian.Little, LibLynx.GetRamPointer(Core), 65536, true, 2)
};
IntPtr p; IntPtr p;
int s; int s;
if (LibLynx.GetSaveRamPtr(Core, out s, out p)) if (LibLynx.GetSaveRamPtr(Core, out s, out p))
{ {
mms.Add(MemoryDomain.FromIntPtr("Save RAM", s, MemoryDomain.Endian.Little, p, true, 2)); mms.Add(new MemoryDomainIntPtr("Save RAM", MemoryDomain.Endian.Little, p, s, true, 2));
} }
IntPtr p0, p1; IntPtr p0, p1;
int s0, s1; int s0, s1;
LibLynx.GetReadOnlyCartPtrs(Core, out s0, out p0, out s1, out p1); LibLynx.GetReadOnlyCartPtrs(Core, out s0, out p0, out s1, out p1);
if (s0 > 0 && p0 != IntPtr.Zero) if (s0 > 0 && p0 != IntPtr.Zero)
mms.Add(MemoryDomain.FromIntPtr("Cart A", s0, MemoryDomain.Endian.Little, p0, false, 2)); {
mms.Add(new MemoryDomainIntPtr("Cart A", MemoryDomain.Endian.Little, p0, s0, false, 2));
}
if (s1 > 0 && p1 != IntPtr.Zero) if (s1 > 0 && p1 != IntPtr.Zero)
mms.Add(MemoryDomain.FromIntPtr("Cart B", s1, MemoryDomain.Endian.Little, p1, false, 2)); {
mms.Add(new MemoryDomainIntPtr("Cart B", MemoryDomain.Endian.Little, p1, s1, false, 2));
}
_memoryDomains = new MemoryDomainList(mms); _memoryDomains = new MemoryDomainList(mms);
(ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(_memoryDomains); (ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(_memoryDomains);

View File

@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
@ -16,28 +15,38 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
var s = new LibVBANext.MemoryAreas(); var s = new LibVBANext.MemoryAreas();
var l = MemoryDomain.Endian.Little; var l = MemoryDomain.Endian.Little;
LibVBANext.GetMemoryAreas(Core, s); LibVBANext.GetMemoryAreas(Core, s);
mm.Add(MemoryDomain.FromIntPtr("IWRAM", 32 * 1024, l, s.iwram, true, 4));
mm.Add(MemoryDomain.FromIntPtr("EWRAM", 256 * 1024, l, s.ewram, true, 4)); mm.Add(new MemoryDomainIntPtr("IWRAM", l, s.iwram, 32 * 1024, true, 4));
mm.Add(MemoryDomain.FromIntPtr("BIOS", 16 * 1024, l, s.bios, false, 4)); mm.Add(new MemoryDomainIntPtr("EWRAM", l, s.ewram, 256 * 1024, true, 4));
mm.Add(MemoryDomain.FromIntPtr("PALRAM", 1024, l, s.palram, false, 4)); mm.Add(new MemoryDomainIntPtr("BIOS", l, s.bios, 16 * 1024, false, 4));
mm.Add(MemoryDomain.FromIntPtr("VRAM", 96 * 1024, l, s.vram, true, 4)); mm.Add(new MemoryDomainIntPtr("PALRAM", l, s.palram, 1024, false, 4));
mm.Add(MemoryDomain.FromIntPtr("OAM", 1024, l, s.oam, true, 4)); mm.Add(new MemoryDomainIntPtr("VRAM", l, s.vram, 96 * 1024, true, 4));
mm.Add(MemoryDomain.FromIntPtr("ROM", 32 * 1024 * 1024, l, s.rom, true, 4)); mm.Add(new MemoryDomainIntPtr("OAM", l, s.oam, 1024, true, 4));
mm.Add(MemoryDomain.FromIntPtr("SRAM", s.sram_size, l, s.sram, true, 4));
mm.Add(new MemoryDomainIntPtr("ROM", l, s.rom, 32 * 1024 * 1024, true, 4));
mm.Add(new MemoryDomainIntPtr("SRAM", l, s.sram, s.sram_size, true, 4));
mm.Add(new MemoryDomainDelegate("System Bus", 0x10000000, l, mm.Add(new MemoryDomainDelegate("System Bus", 0x10000000, l,
delegate(long addr) delegate(long addr)
{ {
if (addr < 0 || addr >= 0x10000000) if (addr < 0 || addr >= 0x10000000)
{
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
}
return LibVBANext.SystemBusRead(Core, (int)addr); return LibVBANext.SystemBusRead(Core, (int)addr);
}, },
delegate(long addr, byte val) delegate(long addr, byte val)
{ {
if (addr < 0 || addr >= 0x10000000) if (addr < 0 || addr >= 0x10000000)
{
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
}
LibVBANext.SystemBusWrite(Core, (int)addr, val); LibVBANext.SystemBusWrite(Core, (int)addr, val);
}, 4)); }, 4));
// special combined ram memory domain // special combined ram memory domain
{ {
var ew = mm[1]; var ew = mm[1];

View File

@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
@ -8,20 +7,24 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
{ {
public partial class Gameboy public partial class Gameboy
{ {
private List<MemoryDomain> _memoryDomains = new List<MemoryDomain>(); private readonly List<MemoryDomain> _memoryDomains = new List<MemoryDomain>();
internal IMemoryDomains MemoryDomains { get; set; } internal IMemoryDomains MemoryDomains { get; set; }
void CreateMemoryDomain(LibGambatte.MemoryAreas which, string name) private void CreateMemoryDomain(LibGambatte.MemoryAreas which, string name)
{ {
IntPtr data = IntPtr.Zero; IntPtr data = IntPtr.Zero;
int length = 0; int length = 0;
if (!LibGambatte.gambatte_getmemoryarea(GambatteState, which, ref data, ref length)) if (!LibGambatte.gambatte_getmemoryarea(GambatteState, which, ref data, ref length))
{
throw new Exception("gambatte_getmemoryarea() failed!"); throw new Exception("gambatte_getmemoryarea() failed!");
}
// if length == 0, it's an empty block; (usually rambank on some carts); that's ok // if length == 0, it's an empty block; (usually rambank on some carts); that's ok
if (data != IntPtr.Zero && length > 0) if (data != IntPtr.Zero && length > 0)
_memoryDomains.Add(MemoryDomain.FromIntPtr(name, length, MemoryDomain.Endian.Little, data)); {
_memoryDomains.Add(new MemoryDomainIntPtr(name, MemoryDomain.Endian.Little, data, length, true, 1));
}
} }
private void InitMemoryDomains() private void InitMemoryDomains()
@ -34,18 +37,23 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
CreateMemoryDomain(LibGambatte.MemoryAreas.hram, "HRAM"); CreateMemoryDomain(LibGambatte.MemoryAreas.hram, "HRAM");
// also add a special memory domain for the system bus, where calls get sent directly to the core each time // also add a special memory domain for the system bus, where calls get sent directly to the core each time
_memoryDomains.Add(new MemoryDomainDelegate("System Bus", 65536, MemoryDomain.Endian.Little, _memoryDomains.Add(new MemoryDomainDelegate("System Bus", 65536, MemoryDomain.Endian.Little,
delegate(long addr) delegate(long addr)
{ {
if (addr < 0 || addr >= 65536) if (addr < 0 || addr >= 65536)
{
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
}
return LibGambatte.gambatte_cpuread(GambatteState, (ushort)addr); return LibGambatte.gambatte_cpuread(GambatteState, (ushort)addr);
}, },
delegate(long addr, byte val) delegate(long addr, byte val)
{ {
if (addr < 0 || addr >= 65536) if (addr < 0 || addr >= 65536)
{
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
}
LibGambatte.gambatte_cpuwrite(GambatteState, (ushort)addr, val); LibGambatte.gambatte_cpuwrite(GambatteState, (ushort)addr, val);
}, 1)); }, 1));

View File

@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES
{ {
public partial class QuickNES public partial class QuickNES
{ {
unsafe void InitMemoryDomains() private unsafe void InitMemoryDomains()
{ {
List<MemoryDomain> mm = new List<MemoryDomain>(); List<MemoryDomain> mm = new List<MemoryDomain>();
for (int i = 0; ; i++) for (int i = 0; ; i++)
@ -23,12 +23,12 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES
if (data != IntPtr.Zero && size > 0 && name != IntPtr.Zero) if (data != IntPtr.Zero && size > 0 && name != IntPtr.Zero)
{ {
mm.Add(MemoryDomain.FromIntPtr(Marshal.PtrToStringAnsi(name), size, MemoryDomain.Endian.Little, data, writable)); mm.Add(new MemoryDomainIntPtr(Marshal.PtrToStringAnsi(name), MemoryDomain.Endian.Little, data, size, writable, 1));
} }
} }
// add system bus // add system bus
mm.Add(new MemoryDomainDelegate mm.Add(new MemoryDomainDelegate(
(
"System Bus", "System Bus",
0x10000, 0x10000,
MemoryDomain.Endian.Unknown, MemoryDomain.Endian.Unknown,
@ -49,8 +49,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES
} }
QN.qn_poke_prgbus(Context, (int)addr, val); QN.qn_poke_prgbus(Context, (int)addr, val);
}, 1 }, 1));
));
_memoryDomains = new MemoryDomainList(mm); _memoryDomains = new MemoryDomainList(mm);
(ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(_memoryDomains); (ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(_memoryDomains);

View File

@ -1,7 +1,4 @@
using System; using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Sega.Saturn namespace BizHawk.Emulation.Cores.Sega.Saturn
@ -16,9 +13,7 @@ namespace BizHawk.Emulation.Cores.Sega.Saturn
var nmds = LibYabause.libyabause_getmemoryareas_ex(); var nmds = LibYabause.libyabause_getmemoryareas_ex();
foreach (var nmd in nmds) foreach (var nmd in nmds)
{ {
int l = nmd.length; ret.Add(new MemoryDomainIntPtr(nmd.name, MemoryDomain.Endian.Little, nmd.data, nmd.length, true, 4));
IntPtr d = nmd.data;
ret.Add(MemoryDomain.FromIntPtr(nmd.name, nmd.length, MemoryDomain.Endian.Little, nmd.data, true, 4));
} }
// main memory is in position 2 // main memory is in position 2

View File

@ -830,22 +830,22 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
int size; int size;
OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.MainRAM); OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.MainRAM);
mmd.Add(MemoryDomain.FromIntPtr("MainRAM", size, MemoryDomain.Endian.Little, ptr, true, 4)); mmd.Add(new MemoryDomainIntPtr("MainRAM", MemoryDomain.Endian.Little, ptr, size, true, 4));
OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.GPURAM); OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.GPURAM);
mmd.Add(MemoryDomain.FromIntPtr("GPURAM", size, MemoryDomain.Endian.Little, ptr, true, 4)); mmd.Add(new MemoryDomainIntPtr("GPURAM", MemoryDomain.Endian.Little, ptr, size, true, 4));
OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.SPURAM); OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.SPURAM);
mmd.Add(MemoryDomain.FromIntPtr("SPURAM", size, MemoryDomain.Endian.Little, ptr, true, 4)); mmd.Add(new MemoryDomainIntPtr("SPURAM", MemoryDomain.Endian.Little, ptr, size, true, 4));
OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.BiosROM); OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.BiosROM);
mmd.Add(MemoryDomain.FromIntPtr("BiosROM", size, MemoryDomain.Endian.Little, ptr, true, 4)); mmd.Add(new MemoryDomainIntPtr("BiosROM", MemoryDomain.Endian.Little, ptr, size, true, 4));
OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.PIOMem); OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.PIOMem);
mmd.Add(MemoryDomain.FromIntPtr("PIOMem", size, MemoryDomain.Endian.Little, ptr, true, 4)); mmd.Add(new MemoryDomainIntPtr("PIOMem", MemoryDomain.Endian.Little, ptr, size, true, 4));
OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.DCache); OctoshockDll.shock_GetMemData(psx, out ptr, out size, OctoshockDll.eMemType.DCache);
mmd.Add(MemoryDomain.FromIntPtr("DCache", size, MemoryDomain.Endian.Little, ptr, true, 4)); mmd.Add(new MemoryDomainIntPtr("DCache", MemoryDomain.Endian.Little, ptr, size, true, 4));
MemoryDomains = new MemoryDomainList(mmd); MemoryDomains = new MemoryDomainList(mmd);
(ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(MemoryDomains); (ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(MemoryDomains);

View File

@ -1,31 +1,35 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.WonderSwan namespace BizHawk.Emulation.Cores.WonderSwan
{ {
partial class WonderSwan public partial class WonderSwan
{ {
void InitIMemoryDomains() private void InitIMemoryDomains()
{ {
var mmd = new List<MemoryDomain>(); var mmd = new List<MemoryDomain>();
for (int i = 0; ; i++) for (int i = 0;; i++)
{ {
IntPtr name; IntPtr name;
int size; int size;
IntPtr data; IntPtr data;
if (!BizSwan.bizswan_getmemoryarea(Core, i, out name, out size, out data)) if (!BizSwan.bizswan_getmemoryarea(Core, i, out name, out size, out data))
{
break; break;
}
if (size == 0) if (size == 0)
{
continue; continue;
}
string sname = Marshal.PtrToStringAnsi(name); string sname = Marshal.PtrToStringAnsi(name);
mmd.Add(MemoryDomain.FromIntPtr(sname, size, MemoryDomain.Endian.Little, data)); mmd.Add(new MemoryDomainIntPtr(sname, MemoryDomain.Endian.Little, data, size, true, 1));
} }
(ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(new MemoryDomainList(mmd)); (ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(new MemoryDomainList(mmd));
} }
} }

View File

@ -48,5 +48,6 @@
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SNES/@EntryIndexedValue">SNES</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SNES/@EntryIndexedValue">SNES</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TI/@EntryIndexedValue">TI</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TI/@EntryIndexedValue">TI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TIA/@EntryIndexedValue">TIA</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TIA/@EntryIndexedValue">TIA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VBA/@EntryIndexedValue">VBA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=MethodPropertyEvent/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb_AaBb" /&gt;</s:String></wpf:ResourceDictionary> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=MethodPropertyEvent/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb_AaBb" /&gt;</s:String></wpf:ResourceDictionary>