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_read_byte((uint)addr << _systemBusAddressShift); _memoryAccessComplete.Set(); return(val); }