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;
}
}
}