From 8e5e1929b21d0c68f2250e01e4d99f68cdcacb08 Mon Sep 17 00:00:00 2001 From: feos Date: Mon, 4 May 2020 12:49:25 +0300 Subject: [PATCH] mame: reduce copypaste --- .../Arcades/MAME/MAME.cs | 91 ++++++++++--------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs b/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs index b6a9bd20a4..d2184deed0 100644 --- a/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs +++ b/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs @@ -475,6 +475,48 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME #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() { var domains = new List(); @@ -512,59 +554,20 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME domains.Add(new MemoryDomainDelegate(name, lastOffset - firstOffset + 1, endian, delegate (long addr) { - 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; + return _peek(addr, firstOffset, size); }, read == "rom" ? (Action)null : delegate (long addr, byte val) { - 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(); - }, dataWidth)); + _poke(addr, val, firstOffset, size); + }, + dataWidth)); } } domains.Add(new MemoryDomainDelegate("System Bus", size, endian, delegate (long addr) { - if (addr < 0 || addr >= 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; + return _peek(addr, 0, size); }, null, dataWidth));