mame: reduce copypaste
This commit is contained in:
parent
82dcccf6cd
commit
8e5e1929b2
|
@ -475,6 +475,48 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME
|
||||||
|
|
||||||
#region IMemoryDomains
|
#region IMemoryDomains
|
||||||
|
|
||||||
|
private byte _peek(long addr, int firstOffset, long size)
|
||||||
|
{
|
||||||
|
if (addr < 0 || addr >= size)
|
||||||
|
{
|
||||||
|
throw new ArgumentOutOfRangeException();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_memAccess)
|
||||||
|
{
|
||||||
|
_memAccess = true;
|
||||||
|
_mamePeriodicComplete.WaitOne();
|
||||||
|
}
|
||||||
|
|
||||||
|
addr += firstOffset;
|
||||||
|
|
||||||
|
var val = (byte)LibMAME.mame_lua_get_int($"{ MAMELuaCommand.GetSpace }:read_u8({ addr << _systemBusAddressShift })");
|
||||||
|
|
||||||
|
_memoryAccessComplete.Set();
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void _poke(long addr, byte val, int firstOffset, long size)
|
||||||
|
{
|
||||||
|
if (addr < 0 || addr >= size)
|
||||||
|
{
|
||||||
|
throw new ArgumentOutOfRangeException();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_memAccess)
|
||||||
|
{
|
||||||
|
_memAccess = true;
|
||||||
|
_mamePeriodicComplete.WaitOne();
|
||||||
|
}
|
||||||
|
|
||||||
|
addr += firstOffset;
|
||||||
|
|
||||||
|
LibMAME.mame_lua_execute($"{ MAMELuaCommand.GetSpace }:write_u8({ addr << _systemBusAddressShift }, { val })");
|
||||||
|
|
||||||
|
_memoryAccessComplete.Set();
|
||||||
|
}
|
||||||
|
|
||||||
private void InitMemoryDomains()
|
private void InitMemoryDomains()
|
||||||
{
|
{
|
||||||
var domains = new List<MemoryDomain>();
|
var domains = new List<MemoryDomain>();
|
||||||
|
@ -512,59 +554,20 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME
|
||||||
domains.Add(new MemoryDomainDelegate(name, lastOffset - firstOffset + 1, endian,
|
domains.Add(new MemoryDomainDelegate(name, lastOffset - firstOffset + 1, endian,
|
||||||
delegate (long addr)
|
delegate (long addr)
|
||||||
{
|
{
|
||||||
if (addr < 0 || addr >= size)
|
return _peek(addr, firstOffset, size);
|
||||||
{
|
|
||||||
throw new ArgumentOutOfRangeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_memAccess)
|
|
||||||
{
|
|
||||||
_memAccess = true;
|
|
||||||
_mamePeriodicComplete.WaitOne();
|
|
||||||
}
|
|
||||||
|
|
||||||
addr += firstOffset;
|
|
||||||
var val = (byte)LibMAME.mame_lua_get_int($"{ MAMELuaCommand.GetSpace }:read_u8({ addr << _systemBusAddressShift })");
|
|
||||||
_memoryAccessComplete.Set();
|
|
||||||
return val;
|
|
||||||
},
|
},
|
||||||
read == "rom" ? (Action<long, byte>)null : delegate (long addr, byte val)
|
read == "rom" ? (Action<long, byte>)null : delegate (long addr, byte val)
|
||||||
{
|
{
|
||||||
if (addr < 0 || addr >= size)
|
_poke(addr, val, firstOffset, size);
|
||||||
{
|
},
|
||||||
throw new ArgumentOutOfRangeException();
|
dataWidth));
|
||||||
}
|
|
||||||
|
|
||||||
if (!_memAccess)
|
|
||||||
{
|
|
||||||
_memAccess = true;
|
|
||||||
_mamePeriodicComplete.WaitOne();
|
|
||||||
}
|
|
||||||
|
|
||||||
addr += firstOffset;
|
|
||||||
LibMAME.mame_lua_execute($"{ MAMELuaCommand.GetSpace }:write_u8({ addr << _systemBusAddressShift }, { val })");
|
|
||||||
_memoryAccessComplete.Set();
|
|
||||||
}, dataWidth));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
domains.Add(new MemoryDomainDelegate("System Bus", size, endian,
|
domains.Add(new MemoryDomainDelegate("System Bus", size, endian,
|
||||||
delegate (long addr)
|
delegate (long addr)
|
||||||
{
|
{
|
||||||
if (addr < 0 || addr >= size)
|
return _peek(addr, 0, size);
|
||||||
{
|
|
||||||
throw new ArgumentOutOfRangeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_memAccess)
|
|
||||||
{
|
|
||||||
_memAccess = true;
|
|
||||||
_mamePeriodicComplete.WaitOne();
|
|
||||||
}
|
|
||||||
|
|
||||||
var val = (byte)LibMAME.mame_lua_get_int($"{ MAMELuaCommand.GetSpace }:read_u8({ addr << _systemBusAddressShift })");
|
|
||||||
_memoryAccessComplete.Set();
|
|
||||||
return val;
|
|
||||||
},
|
},
|
||||||
null, dataWidth));
|
null, dataWidth));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue