using System; using System.Collections; using System.Linq.Expressions; namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum { /// /// ZXHawk: Core Class /// * Misc Utilities * /// public partial class ZXSpectrum { /// /// Helper method that returns a single INT32 from a BitArray /// /// /// public static int GetIntFromBitArray(BitArray bitArray) { if (bitArray.Length > 32) throw new ArgumentException("Argument length shall be at most 32 bits."); int[] array = new int[1]; bitArray.CopyTo(array, 0); return array[0]; } /// /// POKEs a memory bus address /// /// /// public void PokeMemory(ushort addr, byte value) { _machine.WriteBus(addr, value); } /// /// Called by MainForm so that the core label can display a more detailed tooltip about the emulated spectrum model /// /// public string GetMachineType() { string m = ""; switch (SyncSettings.MachineType) { case MachineType.ZXSpectrum16: m = "(Sinclair) ZX Spectrum 16K"; break; case MachineType.ZXSpectrum48: m = "(Sinclair) ZX Spectrum 48K"; break; case MachineType.ZXSpectrum128: m = "(Sinclair) ZX Spectrum 128K"; break; case MachineType.ZXSpectrum128Plus2: m = "(Amstrad) ZX Spectrum 128K +2"; break; case MachineType.ZXSpectrum128Plus2a: m = "(Amstrad) ZX Spectrum 128K +2a"; break; case MachineType.ZXSpectrum128Plus3: m = "(Amstrad) ZX Spectrum 128K +3"; break; case MachineType.Pentagon128: m = "(Clone) Pentagon 128K"; break; } return m; } /// /// Called by MainForm - dumps a close approximation of the Spectaculator SZX snapshot format /// DEV use only - this is nowhere near accurate /// /// public byte[] GetSZXSnapshot() { return SZX.ExportSZX(_machine); } /// /// Utility method to get MemberName from an object /// /// /// /// /// public static string GetMemberName(Expression> memberAccess) { return ((MemberExpression)memberAccess.Body).Member.Name; } } }