Move Buffer.cs and Util.cs from BizHawk.Emulation to BizHawk.Common, and add 1234832983 usings

This commit is contained in:
adelikat 2013-11-04 00:36:15 +00:00
parent fe7da7c5b5
commit 7b03fc0bc0
155 changed files with 4194 additions and 4062 deletions

View File

@ -2,6 +2,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using BizHawk.Common;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
public class Controller : IController public class Controller : IController

View File

@ -2,6 +2,8 @@
using System.IO; using System.IO;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
//IDEA: put filesizes in DB too. then scans can go real quick by only scanning filesizes that match (and then scanning filesizes that dont match, in case of an emergency) //IDEA: put filesizes in DB too. then scans can go real quick by only scanning filesizes that match (and then scanning filesizes that dont match, in case of an emergency)
//this would be adviseable if we end up with a very large firmware file //this would be adviseable if we end up with a very large firmware file

View File

@ -2,6 +2,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
public static class MnemonicConstants public static class MnemonicConstants

View File

@ -12,6 +12,7 @@ using System.Drawing.Imaging;
//using dx=SlimDX; //using dx=SlimDX;
//using d3d=SlimDX.Direct3D9; //using d3d=SlimDX.Direct3D9;
using BizHawk.Common;
using BizHawk.Client.Common; using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk

View File

@ -6,6 +6,7 @@ using System.Threading;
using SlimDX.DirectInput; using SlimDX.DirectInput;
#endif #endif
using BizHawk.Common;
using BizHawk.Client.Common; using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk

View File

@ -44,6 +44,7 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Buffer.cs" />
<Compile Include="Extensions.cs" /> <Compile Include="Extensions.cs" />
<Compile Include="HawkFile.cs" /> <Compile Include="HawkFile.cs" />
<Compile Include="MruStack.cs" /> <Compile Include="MruStack.cs" />
@ -51,6 +52,7 @@
<Compile Include="Types.cs" /> <Compile Include="Types.cs" />
<Compile Include="UndoHistory.cs" /> <Compile Include="UndoHistory.cs" />
<Compile Include="Util.cs" /> <Compile Include="Util.cs" />
<Compile Include="Util.String.cs" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@ -1,7 +1,7 @@
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
namespace BizHawk namespace BizHawk.Common
{ {
/// <summary> /// <summary>
/// Implements a data simple data buffer with proper life cycle and no bounds checking /// Implements a data simple data buffer with proper life cycle and no bounds checking

View File

@ -0,0 +1,8 @@
namespace BizHawk.Common
{
//TODO: delete me
public unsafe static partial class Util
{
}
}

View File

@ -1,4 +1,34 @@
public unsafe static class Util using System;
using System.Linq;
using System.Reflection;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;
namespace BizHawk.Common
{
public static class Colors
{
public static int ARGB(byte red, byte green, byte blue)
{
return (int)((uint)((red << 0x10) | (green << 8) | blue | (0xFF << 0x18)));
}
public static int ARGB(byte red, byte green, byte blue, byte alpha)
{
return (int)((uint)((red << 0x10) | (green << 8) | blue | (alpha << 0x18)));
}
public static int Luminosity(byte lum)
{
return (int)((uint)((lum << 0x10) | (lum << 8) | lum | (0xFF << 0x18)));
}
}
public unsafe static partial class Util
{ {
static readonly char[] HexConvArr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; static readonly char[] HexConvArr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
static System.Runtime.InteropServices.GCHandle HexConvHandle; static System.Runtime.InteropServices.GCHandle HexConvHandle;
@ -8,4 +38,882 @@ public unsafe static class Util
HexConvHandle = System.Runtime.InteropServices.GCHandle.Alloc(HexConvArr, System.Runtime.InteropServices.GCHandleType.Pinned); HexConvHandle = System.Runtime.InteropServices.GCHandle.Alloc(HexConvArr, System.Runtime.InteropServices.GCHandleType.Pinned);
HexConvPtr = (char*)HexConvHandle.AddrOfPinnedObject().ToPointer(); HexConvPtr = (char*)HexConvHandle.AddrOfPinnedObject().ToPointer();
} }
public static string Hash_MD5(byte[] data, int offset, int len)
{
using (var md5 = System.Security.Cryptography.MD5.Create())
{
md5.TransformFinalBlock(data, offset, len);
return Util.BytesToHexString(md5.Hash);
}
}
public static string Hash_SHA1(byte[] data, int offset, int len)
{
using (var sha1 = System.Security.Cryptography.SHA1.Create())
{
sha1.TransformFinalBlock(data, offset, len);
return Util.BytesToHexString(sha1.Hash);
}
}
public static bool IsPowerOfTwo(int x)
{
if (x == 0) return true;
if (x == 1) return true;
return (x & (x - 1)) == 0;
}
public static int SaveRamBytesUsed(byte[] SaveRAM)
{
for (int j = SaveRAM.Length - 1; j >= 0; j--)
if (SaveRAM[j] != 0)
return j + 1;
return 0;
}
// Read bytes from a BinaryReader and translate them into the UTF-8 string they represent.
public static string ReadStringFixedAscii(this BinaryReader r, int bytes)
{
byte[] read = new byte[bytes];
for (int b = 0; b < bytes; b++)
read[b] = r.ReadByte();
return System.Text.Encoding.UTF8.GetString(read);
}
public static string ReadStringAsciiZ(this BinaryReader r)
{
StringBuilder sb = new StringBuilder();
for(;;)
{
int b = r.ReadByte();
if(b <= 0) break;
sb.Append((char)b);
}
return sb.ToString();
}
/// <summary>
/// conerts bytes to an uppercase string of hex numbers in upper case without any spacing or anything
/// //could be extension method
/// </summary>
public static string BytesToHexString(byte[] bytes)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in bytes)
sb.AppendFormat("{0:X2}", b);
return sb.ToString();
}
//could be extension method
public static byte[] HexStringToBytes(string str)
{
MemoryStream ms = new MemoryStream();
if (str.Length % 2 != 0) throw new ArgumentException();
int len = str.Length / 2;
for (int i = 0; i < len; i++)
{
int d = 0;
for (int j = 0; j < 2; j++)
{
char c = char.ToLower(str[i * 2 + j]);
if (c >= '0' && c <= '9')
d += (c - '0');
else if (c >= 'a' && c <= 'f')
d += (c - 'a') + 10;
else throw new ArgumentException();
if (j == 0) d <<= 4;
}
ms.WriteByte((byte)d);
}
return ms.ToArray();
}
//could be extension method
public static void WriteByteBuffer(BinaryWriter bw, byte[] data)
{
if (data == null) bw.Write(0);
else
{
bw.Write(data.Length);
bw.Write(data);
}
}
public static short[] ByteBufferToShortBuffer(byte[] buf)
{
int num = buf.Length / 2;
short[] ret = new short[num];
for (int i = 0; i < num; i++)
{
ret[i] = (short)(buf[i * 2] | (buf[i * 2 + 1] << 8));
}
return ret;
}
public static byte[] ShortBufferToByteBuffer(short[] buf)
{
int num = buf.Length;
byte[] ret = new byte[num * 2];
for (int i = 0; i < num; i++)
{
ret[i * 2 + 0] = (byte)(buf[i] & 0xFF);
ret[i * 2 + 1] = (byte)((buf[i] >> 8) & 0xFF);
}
return ret;
}
public static uint[] ByteBufferToUintBuffer(byte[] buf)
{
int num = buf.Length / 4;
uint[] ret = new uint[num];
for (int i = 0; i < num; i++)
{
ret[i] = (uint)(buf[i * 4] | (buf[i * 4 + 1] << 8) | (buf[i * 4 + 2] << 16) | (buf[i * 4 + 3] << 24));
}
return ret;
}
public static byte[] UintBufferToByteBuffer(uint[] buf)
{
int num = buf.Length;
byte[] ret = new byte[num * 4];
for (int i = 0; i < num; i++)
{
ret[i * 4 + 0] = (byte)(buf[i] & 0xFF);
ret[i * 4 + 1] = (byte)((buf[i] >> 8) & 0xFF);
ret[i * 4 + 2] = (byte)((buf[i] >> 16) & 0xFF);
ret[i * 4 + 3] = (byte)((buf[i] >> 24) & 0xFF);
}
return ret;
}
public static int[] ByteBufferToIntBuffer(byte[] buf)
{
int num = buf.Length / 4;
int[] ret = new int[num];
for (int i = 0; i < num; i++)
{
ret[i] = buf[(i * 4) + 3];
ret[i] <<= 8;
ret[i] |= buf[(i * 4) + 2];
ret[i] <<= 8;
ret[i] |= buf[(i * 4) + 1];
ret[i] <<= 8;
ret[i] |= buf[(i * 4)];
}
return ret;
}
public static byte[] IntBufferToByteBuffer(int[] buf)
{
int num = buf.Length;
byte[] ret = new byte[num * 4];
for (int i = 0; i < num; i++)
{
ret[i * 4 + 0] = (byte)(buf[i] & 0xFF);
ret[i * 4 + 1] = (byte)((buf[i] >> 8) & 0xFF);
ret[i * 4 + 2] = (byte)((buf[i] >> 16) & 0xFF);
ret[i * 4 + 3] = (byte)((buf[i] >> 24) & 0xFF);
}
return ret;
}
public static byte[] ReadByteBuffer(BinaryReader br, bool return_null)
{
int len = br.ReadInt32();
if (len == 0 && return_null) return null;
byte[] ret = new byte[len];
int ofs = 0;
while (len > 0)
{
int done = br.Read(ret, ofs, len);
ofs += done;
len -= done;
}
return ret;
}
public static unsafe int memcmp(void* a, string b, int len)
{
fixed (byte* bp = System.Text.Encoding.ASCII.GetBytes(b))
return memcmp(a, bp, len);
}
public static unsafe int memcmp(void* a, void* b, int len)
{
byte* ba = (byte*)a;
byte* bb = (byte*)b;
for (int i = 0; i < len; i++)
{
byte _a = ba[i];
byte _b = bb[i];
int c = _a - _b;
if (c != 0) return c;
}
return 0;
}
public static unsafe void memset(void* ptr, int val, int len)
{
byte* bptr = (byte*)ptr;
for (int i = 0; i < len; i++)
bptr[i] = (byte)val;
}
public static unsafe void memset32(void* ptr, int val, int len)
{
System.Diagnostics.Debug.Assert(len % 4 == 0);
int dwords = len / 4;
int* dwptr = (int*)ptr;
for (int i = 0; i < dwords; i++)
dwptr[i] = val;
}
public static byte[] ReadAllBytes(Stream stream)
{
const int BUFF_SIZE = 4096;
byte[] buffer = new byte[BUFF_SIZE];
int bytesRead = 0;
var inStream = new BufferedStream(stream);
var outStream = new MemoryStream();
while ((bytesRead = inStream.Read(buffer, 0, BUFF_SIZE)) > 0)
{
outStream.Write(buffer, 0, bytesRead);
}
return outStream.ToArray();
}
public static byte BinToBCD(this byte v)
{
return (byte) (((v / 10) * 16) + (v % 10));
}
public static byte BCDtoBin(this byte v)
{
return (byte) (((v / 16) * 10) + (v % 16));
}
public static string FormatFileSize(long filesize)
{
Decimal size = (Decimal)filesize;
Decimal OneKiloByte = 1024M;
Decimal OneMegaByte = OneKiloByte * 1024M;
Decimal OneGigaByte = OneMegaByte * 1024M;
string suffix;
if (size > 1024 * 1024 * 1024)
{
size /= 1024 * 1024 * 1024;
suffix = "GB";
}
else if (size > 1024 * 1024)
{
size /= 1024 * 1024;
suffix = "MB";
}
else if (size > 1024)
{
size /= 1024;
suffix = "KB";
}
else
{
suffix = " B";
}
string precision = "2";
return String.Format("{0:N" + precision + "}{1}", size, suffix);
}
}
public unsafe class Serializer
{
BinaryReader br;
BinaryWriter bw;
TextReader tr;
TextWriter tw;
public BinaryReader BinaryReader { get { return br; } }
public BinaryWriter BinaryWriter { get { return bw; } }
public TextReader TextReader { get { return tr; } }
public TextWriter TextWriter { get { return tw; } }
public Serializer() { }
public Serializer(BinaryWriter _bw) { StartWrite(_bw); }
public Serializer(BinaryReader _br) { StartRead(_br); }
public Serializer(TextWriter _tw) { StartWrite(_tw); }
public Serializer(TextReader _tr) { StartRead(_tr); }
public static Serializer CreateBinaryWriter(BinaryWriter _bw) { return new Serializer(_bw); }
public static Serializer CreateBinaryReader(BinaryReader _br) { return new Serializer(_br); }
public static Serializer CreateTextWriter(TextWriter _tw) { return new Serializer(_tw); }
public static Serializer CreateTextReader(TextReader _tr) { return new Serializer(_tr); }
public void StartWrite(BinaryWriter _bw) { this.bw = _bw; isReader = false; }
public void StartRead(BinaryReader _br) { this.br = _br; isReader = true; }
public void StartWrite(TextWriter _tw) { this.tw = _tw; isReader = false; isText = true; }
public void StartRead(TextReader _tr) {
this.tr = _tr;
isReader = true;
isText = true;
BeginTextBlock();
}
public bool IsReader { get { return isReader; } }
public bool IsWriter { get { return !IsReader; } }
public bool IsText { get { return isText; } }
bool isText;
bool isReader;
Stack<string> sections = new Stack<string>();
class Section : Dictionary<string, Section>
{
public string Name;
public Dictionary<string, string> Items = new Dictionary<string, string>();
}
Section ReaderSection, CurrSection;
Stack<Section> SectionStack = new Stack<Section>();
void BeginTextBlock()
{
if (!IsText) return;
if (IsWriter) return;
ReaderSection = new Section();
ReaderSection.Name = "";
Stack<Section> ss = new Stack<Section>();
ss.Push(ReaderSection);
Section curs = ReaderSection;
var rxEnd = new System.Text.RegularExpressions.Regex(@"\[/(.*?)\]",System.Text.RegularExpressions.RegexOptions.Compiled);
var rxBegin = new System.Text.RegularExpressions.Regex(@"\[(.*?)\]",System.Text.RegularExpressions.RegexOptions.Compiled);
//read the entire file into a data structure for flexi-parsing
string str;
while ((str = tr.ReadLine()) != null)
{
var end = rxEnd.Match(str);
var begin = rxBegin.Match(str);
if (end.Success)
{
string name = end.Groups[1].Value;
if (name != curs.Name) throw new InvalidOperationException("Mis-formed savestate blob");
curs = ss.Pop();
// consume no data past the end of the last proper section
if (curs == ReaderSection)
{
CurrSection = curs;
return;
}
}
else if (begin.Success)
{
string name = begin.Groups[1].Value;
ss.Push(curs);
var news = new Section();
news.Name = name;
if (!curs.ContainsKey(name))
curs[name] = news;
else
throw new Exception(string.Format("Duplicate key \"{0}\" in serializer savestate!", name));
curs = news;
}
else
{
//add to current section
if (str.Trim().Length == 0) continue;
var parts = str.Split(' ');
var key = parts[0];
//UGLY: adds whole string instead of splitting the key. later, split the key, and have the individual Sync methods give up that responsibility
if (!curs.Items.ContainsKey(key))
curs.Items[key] = parts[1];
else
throw new Exception(string.Format("Duplicate key \"{0}\" in serializer savestate!", key));
}
}
CurrSection = ReaderSection;
}
public void BeginSection(string name)
{
sections.Push(name);
if (IsText)
if (IsWriter) { tw.WriteLine("[{0}]", name); }
else
{
SectionStack.Push(CurrSection);
CurrSection = CurrSection[name];
}
}
public void EndSection()
{
string name = sections.Pop();
if (IsText)
if (IsWriter) tw.WriteLine("[/{0}]", name);
else
{
CurrSection = SectionStack.Pop();
}
}
string Item(string key)
{
return CurrSection.Items[key];
}
bool Present(string key)
{
return CurrSection.Items.ContainsKey(key);
}
public void SyncEnum<T>(string name, ref T val) where T : struct
{
if (typeof(T).BaseType != typeof(System.Enum))
throw new InvalidOperationException();
if (isText) SyncEnumText<T>(name, ref val);
else if (IsReader) val = (T)Enum.ToObject(typeof(T), br.ReadInt32());
else bw.Write(Convert.ToInt32(val));
}
public void SyncEnumText<T>(string name, ref T val) where T : struct
{
if (IsReader) { if (Present(name)) val = (T)Enum.Parse(typeof(T), Item(name)); }
else tw.WriteLine("{0} {1}", name, val.ToString());
}
void SyncBuffer(string name, int elemsize, int len, void* ptr)
{
if (IsReader)
{
byte[] temp = null;
Sync(name, ref temp, false);
int todo = Math.Min(temp.Length, len * elemsize);
System.Runtime.InteropServices.Marshal.Copy(temp, 0, new IntPtr(ptr), todo);
}
else
{
int todo = len * elemsize;
byte[] temp = new byte[todo];
System.Runtime.InteropServices.Marshal.Copy(new IntPtr(ptr), temp, 0, todo);
Sync(name, ref temp, false);
}
}
public void Sync(string name, ref ByteBuffer byteBuf)
{
SyncBuffer(name, 1, byteBuf.len, byteBuf.ptr);
}
public void Sync(string name, ref IntBuffer byteBuf)
{
SyncBuffer(name, 4, byteBuf.len, byteBuf.ptr);
}
public void Sync(string name, ref byte[] val, bool use_null)
{
if (IsText) SyncText(name, ref val, use_null);
else if (IsReader) val = Util.ReadByteBuffer(br, use_null);
else Util.WriteByteBuffer(bw, val);
}
public void SyncText(string name, ref byte[] val, bool use_null)
{
if (IsReader)
{
if(Present(name)) val = Util.HexStringToBytes(Item(name));
if (val != null && val.Length == 0 && use_null) val = null;
}
else
{
byte[] temp = val;
if (temp == null) temp = new byte[0];
tw.WriteLine("{0} {1}", name, Util.BytesToHexString(temp));
}
}
public void Sync(string name, ref short[] val, bool use_null)
{
if (IsText) SyncText(name, ref val, use_null);
else if (IsReader)
{
val = Util.ByteBufferToShortBuffer(Util.ReadByteBuffer(br, false));
if (val == null && !use_null) val = new short[0];
}
else Util.WriteByteBuffer(bw, Util.ShortBufferToByteBuffer(val));
}
public void SyncText(string name, ref short[] val, bool use_null)
{
if (IsReader)
{
if (Present(name))
{
byte[] bytes = Util.HexStringToBytes(Item(name));
val = Util.ByteBufferToShortBuffer(bytes);
}
if (val != null && val.Length == 0 && use_null) val = null;
}
else
{
short[] temp = val;
if (temp == null) temp = new short[0];
tw.WriteLine("{0} {1}", name, Util.BytesToHexString(Util.ShortBufferToByteBuffer(temp)));
}
}
public void Sync(string name, ref int[] val, bool use_null)
{
if (IsText) SyncText(name, ref val, use_null);
else if (IsReader)
{
val = Util.ByteBufferToIntBuffer(Util.ReadByteBuffer(br, false));
if (val == null && !use_null) val = new int[0];
}
else Util.WriteByteBuffer(bw, Util.IntBufferToByteBuffer(val));
}
public void SyncText(string name, ref int[] val, bool use_null)
{
if (IsReader)
{
if (Present(name))
{
byte[] bytes = Util.HexStringToBytes(Item(name));
val = Util.ByteBufferToIntBuffer(bytes);
}
if (val != null && val.Length == 0 && use_null) val = null;
}
else
{
int[] temp = val;
if (temp == null) temp = new int[0];
tw.WriteLine("{0} {1}", name, Util.BytesToHexString(Util.IntBufferToByteBuffer(temp)));
}
}
public void Sync(string name, ref uint[] val, bool use_null)
{
if (IsText) SyncText(name, ref val, use_null);
else if (IsReader)
{
val = Util.ByteBufferToUintBuffer(Util.ReadByteBuffer(br, false));
if (val == null && !use_null) val = new uint[0];
}
else Util.WriteByteBuffer(bw, Util.UintBufferToByteBuffer(val));
}
public void SyncText(string name, ref uint[] val, bool use_null)
{
if (IsReader)
{
if(Present(name))
{
byte[] bytes = Util.HexStringToBytes(Item(name));
val = Util.ByteBufferToUintBuffer(bytes);
}
if (val != null && val.Length == 0 && use_null) val = null;
}
else
{
uint[] temp = val;
if (temp == null) temp = new uint[0];
tw.WriteLine("{0} {1}", name, Util.BytesToHexString(Util.UintBufferToByteBuffer(temp)));
}
}
public void Sync(string name, ref Bit val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
public void SyncText(string name, ref Bit val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void Sync(string name, ref byte val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
void SyncText(string name, ref byte val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void Sync(string name, ref ushort val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
void SyncText(string name, ref ushort val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void Sync(string name, ref uint val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
void SyncText(string name, ref uint val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void Sync(string name, ref sbyte val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
void SyncText(string name, ref sbyte val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void Sync(string name, ref short val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
void SyncText(string name, ref short val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void Sync(string name, ref int val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
void SyncText(string name, ref int val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void Sync(string name, ref bool val)
{
if (IsText) SyncText(name, ref val);
else if (IsReader) Read(ref val);
else Write(ref val);
}
void SyncText(string name, ref bool val)
{
if (IsReader) ReadText(name, ref val);
else WriteText(name, ref val);
}
public void SyncFixedString(string name, ref string val, int length)
{
//TODO - this could be made more efficient perhaps just by writing values right out of the string..
if (IsReader)
{
char[] buf = new char[length];
if (isText)
{
tr.Read(buf, 0, length);
}
else
{
br.Read(buf, 0, length);
}
int len = 0;
for (; len < length; len++)
{
if (buf[len] == 0) break;
}
val = new string(buf, 0, len);
}
else
{
if (name.Length > length) throw new InvalidOperationException("SyncFixedString too long");
char[] buf = val.ToCharArray();
char[] remainder = new char[length - buf.Length];
if (IsText)
{
tw.Write(buf);
tw.Write(remainder);
}
else
{
bw.Write(buf);
bw.Write(remainder);
}
}
}
void Read(ref Bit val) { val = br.ReadBit(); }
void Write(ref Bit val) { bw.WriteBit(val); }
void ReadText(string name, ref Bit val) { if(Present(name)) val = (Bit)int.Parse(Item(name)); }
void WriteText(string name, ref Bit val) { tw.WriteLine("{0} {1}", name, (int)val); }
void Read(ref byte val) { val = br.ReadByte(); }
void Write(ref byte val) { bw.Write(val); }
void ReadText(string name, ref byte val) { if (Present(name)) val = byte.Parse(Item(name).Replace("0x", ""), NumberStyles.HexNumber); }
void WriteText(string name, ref byte val) { tw.WriteLine("{0} 0x{1:X2}", name, val); }
void Read(ref ushort val) { val = br.ReadUInt16(); }
void Write(ref ushort val) { bw.Write(val); }
void ReadText(string name, ref ushort val) { if (Present(name)) val = ushort.Parse(Item(name).Replace("0x", ""), NumberStyles.HexNumber); }
void WriteText(string name, ref ushort val) { tw.WriteLine("{0} 0x{1:X4}", name, val); }
void Read(ref uint val) { val = br.ReadUInt32(); }
void Write(ref uint val) { bw.Write(val); }
void ReadText(string name, ref uint val) { if (Present(name)) val = uint.Parse(Item(name).Replace("0x", ""), NumberStyles.HexNumber); }
void WriteText(string name, ref uint val) { tw.WriteLine("{0} 0x{1:X8}", name, val); }
void Read(ref sbyte val) { val = br.ReadSByte(); }
void Write(ref sbyte val) { bw.Write(val); }
void ReadText(string name, ref sbyte val) { if (Present(name)) val = sbyte.Parse(Item(name).Replace("0x", ""), NumberStyles.HexNumber); }
void WriteText(string name, ref sbyte val) { tw.WriteLine("{0} 0x{1:X2}", name, val); }
void Read(ref short val) { val = br.ReadInt16(); }
void Write(ref short val) { bw.Write(val); }
void ReadText(string name, ref short val) { if (Present(name)) val = short.Parse(Item(name).Replace("0x", ""), NumberStyles.HexNumber); }
void WriteText(string name, ref short val) { tw.WriteLine("{0} 0x{1:X4}", name, val); }
void Read(ref int val) { val = br.ReadInt32(); }
void Write(ref int val) { bw.Write(val); }
void ReadText(string name, ref int val) { if (Present(name)) val = int.Parse(Item(name).Replace("0x", ""), NumberStyles.HexNumber); }
void WriteText(string name, ref int val) { tw.WriteLine("{0} 0x{1:X8}", name, val); }
void Read(ref bool val) { val = br.ReadBoolean(); }
void Write(ref bool val) { bw.Write(val); }
void ReadText(string name, ref bool val) { if (Present(name)) val = bool.Parse(Item(name)); }
void WriteText(string name, ref bool val) { tw.WriteLine("{0} {1}", name, val); }
}
public static class BITREV
{
public static byte[] byte_8;
static BITREV()
{
make_byte_8();
}
static void make_byte_8()
{
int bits = 8;
int n = 1 << 8;
byte_8 = new byte[n];
int m = 1;
int a = n >> 1;
int j = 2;
byte_8[0] = 0;
byte_8[1] = (byte)a;
while ((--bits) != 0)
{
m <<= 1;
a >>= 1;
for (int i = 0; i < m; i++)
byte_8[j++] = (byte)(byte_8[i] + a);
}
}
public static uint reverse_32(uint v)
{
return (uint)((byte_8[v & 0xff] << 24) |
(byte_8[(v >> 8) & 0xff] << 16) |
(byte_8[(v >> 16) & 0xff] << 8) |
(byte_8[(v >> 24) & 0xff]));
}
}
/// <summary>
/// a Dictionary-of-lists with key K and values List&lt;V&gt;
/// </summary>
[Serializable]
public class Bag<K, V> : BagBase<K, V, Dictionary<K, List<V>>, List<V>> { }
/// <summary>
/// a Dictionary-of-lists with key K and values List&lt;V&gt;
/// </summary>
[Serializable]
public class SortedBag<K, V> : BagBase<K, V, SortedDictionary<K, List<V>>, List<V>> { }
/// <summary>
/// A dictionary that creates new values on the fly as necessary so that any key you need will be defined.
/// </summary>
/// <typeparam name="K">dictionary keys</typeparam>
/// <typeparam name="V">dictionary values</typeparam>
public class WorkingDictionary<K, V> : Dictionary<K, V> where V : new()
{
public new V this[K key]
{
get
{
V temp;
if (!TryGetValue(key, out temp))
temp = this[key] = new V();
return temp;
}
set { base[key] = value; }
}
}
/// <summary>
/// base class for Bag and SortedBag
/// </summary>
/// <typeparam name="K">dictionary keys</typeparam>
/// <typeparam name="V">list values</typeparam>
/// <typeparam name="D">dictionary type</typeparam>
/// <typeparam name="L">list type</typeparam>
[Serializable]
public class BagBase<K, V, D, L> : IEnumerable<V>
where D : IDictionary<K, L>, new()
where L : IList<V>, IEnumerable<V>, new()
{
D dictionary = new D();
public void Add(K key, V val)
{
this[key].Add(val);
}
public bool ContainsKey(K key) { return dictionary.ContainsKey(key); }
IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
public IEnumerator<V> GetEnumerator()
{
foreach (L lv in dictionary.Values)
foreach (V v in lv)
yield return v;
}
public IEnumerable KeyValuePairEnumerator { get { return dictionary; } }
/// <summary>
/// the list of keys contained herein
/// </summary>
public IList<K> Keys { get { return new List<K>(dictionary.Keys); } }
public L this[K key]
{
get
{
L slot;
if (!dictionary.TryGetValue(key, out slot))
dictionary[key] = slot = new L();
return slot;
}
set
{
dictionary[key] = value;
}
}
}
public class NotTestedException : Exception
{
}
} }

View File

@ -45,7 +45,6 @@
<Compile Include="Blobs\Blob_ECM.cs" /> <Compile Include="Blobs\Blob_ECM.cs" />
<Compile Include="Blobs\Blob_WaveFile.cs" /> <Compile Include="Blobs\Blob_WaveFile.cs" />
<Compile Include="Blobs\RiffMaster.cs" /> <Compile Include="Blobs\RiffMaster.cs" />
<Compile Include="Buffer.cs" />
<Compile Include="CCD_format.cs" /> <Compile Include="CCD_format.cs" />
<Compile Include="cdfs\EndianBitConverter.cs" /> <Compile Include="cdfs\EndianBitConverter.cs" />
<Compile Include="cdfs\ISODirectoryNode.cs" /> <Compile Include="cdfs\ISODirectoryNode.cs" />

View File

@ -1,118 +0,0 @@
using System;
using System.Runtime.InteropServices;
//TODO: quick fix, this is the same file as BizHawk.Emulation, move it to BizHawk.Common
namespace BizHawk.Emulation.DiscSystem
{
/// <summary>
/// Implements a data simple data buffer with proper life cycle and no bounds checking
/// </summary>
public unsafe class CBuffer<T> : IDisposable
{
public GCHandle hnd;
public T[] arr;
public void* ptr;
public byte* byteptr;
public int len;
public int itemsize;
public static CBuffer<T> malloc(int amt, int itemsize)
{
return new CBuffer<T>(amt, itemsize);
}
public void Write08(uint addr, byte val) { byteptr[addr] = val; }
public void Write16(uint addr, ushort val) { *(ushort*)(byteptr + addr) = val; }
public void Write32(uint addr, uint val) { *(uint*)(byteptr + addr) = val; }
public void Write64(uint addr, ulong val) { *(ulong*)(byteptr + addr) = val; }
public byte Read08(uint addr) { return byteptr[addr]; }
public ushort Read16(uint addr) { return *(ushort*)(byteptr + addr); }
public uint Read32(uint addr) { return *(uint*)(byteptr + addr); }
public ulong Read64(uint addr) { return *(ulong*)(byteptr + addr); }
public void Write08(int addr, byte val) { byteptr[addr] = val; }
public void Write16(int addr, ushort val) { *(ushort*)(byteptr + addr) = val; }
public void Write32(int addr, uint val) { *(uint*)(byteptr + addr) = val; }
public void Write64(int addr, ulong val) { *(ulong*)(byteptr + addr) = val; }
public byte Read08(int addr) { return byteptr[addr]; }
public ushort Read16(int addr) { return *(ushort*)(byteptr + addr); }
public uint Read32(int addr) { return *(uint*)(byteptr + addr); }
public ulong Read64(int addr) { return *(ulong*)(byteptr + addr); }
public CBuffer(T[] arr, int itemsize)
{
this.itemsize = itemsize;
len = arr.Length;
this.arr = arr;
hnd = GCHandle.Alloc(arr, GCHandleType.Pinned);
ptr = hnd.AddrOfPinnedObject().ToPointer();
byteptr = (byte*)ptr;
}
public CBuffer(int amt, int itemsize)
{
this.itemsize = itemsize;
len = amt;
arr = new T[amt];
hnd = GCHandle.Alloc(arr, GCHandleType.Pinned);
ptr = hnd.AddrOfPinnedObject().ToPointer();
byteptr = (byte*)ptr;
Util.memset(byteptr, 0, len * itemsize);
}
public void Dispose()
{
if (arr != null)
hnd.Free();
arr = null;
}
~CBuffer() { Dispose(); }
}
public class ByteBuffer : CBuffer<byte>
{
public ByteBuffer(int amt) : base(amt,1) { }
public ByteBuffer(byte[] arr) : base(arr,1) { }
public byte this[int index]
{
#if DEBUG
get { return arr[index]; }
set { arr[index] = value; }
#else
set { Write08(index, value); }
get { return Read08(index);}
#endif
}
}
public class IntBuffer : CBuffer<int>
{
public IntBuffer(int amt) : base(amt, 4) { }
public IntBuffer(int[] arr) : base(arr,4) { }
public int this[int index]
{
#if DEBUG
get { return arr[index]; }
set { arr[index] = value; }
#else
set { Write32(index<<2, (uint) value); }
get { return (int)Read32(index<<2);}
#endif
}
}
public class ShortBuffer : CBuffer<short>
{
public ShortBuffer(int amt) : base(amt, 2) { }
public ShortBuffer(short[] arr) : base(arr, 2) { }
public short this[int index]
{
#if DEBUG
get { return arr[index]; }
set { arr[index] = value; }
#else
set { Write32(index << 1, (uint)value); }
get { return (short)Read16(index << 1); }
#endif
}
}
}

View File

@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
//main apis for emulator core routine use //main apis for emulator core routine use
namespace BizHawk.Emulation.DiscSystem namespace BizHawk.Emulation.DiscSystem

View File

@ -28,6 +28,8 @@
//Corlett's ECM uses our same fundamental approach as well. //Corlett's ECM uses our same fundamental approach as well.
//I can't figure out what winUAE is doing. //I can't figure out what winUAE is doing.
using BizHawk.Common;
namespace BizHawk.Emulation.DiscSystem namespace BizHawk.Emulation.DiscSystem
{ {
static class ECM static class ECM

View File

@ -9,11 +9,11 @@ using System.IO;
using System.Text; using System.Text;
using BizHawk.Common; using BizHawk.Common;
/*
namespace BizHawk.Emulation.DiscSystem namespace BizHawk.Emulation.DiscSystem
{ {
//TODO: QUICK FIX, this is the same file as BizHawk.Emulation, move to BizHawk.Common and get rid of this //TODO: QUICK FIX, this is the same file as BizHawk.Emulation, move to BizHawk.Common and get rid of this
public static class Colors internal static class Colors
{ {
public static int ARGB(byte red, byte green, byte blue) public static int ARGB(byte red, byte green, byte blue)
{ {
@ -31,7 +31,7 @@ namespace BizHawk.Emulation.DiscSystem
} }
} }
public unsafe static class Util internal unsafe static class Util
{ {
static readonly char[] HexConvArr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; static readonly char[] HexConvArr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
static System.Runtime.InteropServices.GCHandle HexConvHandle; static System.Runtime.InteropServices.GCHandle HexConvHandle;
@ -920,3 +920,4 @@ namespace BizHawk.Emulation.DiscSystem
{ {
} }
} }
*/

View File

@ -82,7 +82,6 @@
<Compile Include="..\VersionInfo.cs"> <Compile Include="..\VersionInfo.cs">
<Link>VersionInfo.cs</Link> <Link>VersionInfo.cs</Link>
</Compile> </Compile>
<Compile Include="Buffer.cs" />
<Compile Include="Computers\Commodore64\C64.Core.cs" /> <Compile Include="Computers\Commodore64\C64.Core.cs" />
<Compile Include="Computers\Commodore64\C64.cs" /> <Compile Include="Computers\Commodore64\C64.cs" />
<Compile Include="Computers\Commodore64\C64.Motherboard.cs" /> <Compile Include="Computers\Commodore64\C64.Motherboard.cs" />
@ -507,7 +506,6 @@
<Compile Include="Consoles\Sega\SMS\SMS.cs" /> <Compile Include="Consoles\Sega\SMS\SMS.cs" />
<Compile Include="Consoles\Sega\SMS\VDP.cs" /> <Compile Include="Consoles\Sega\SMS\VDP.cs" />
<Compile Include="Sound\YM2413.cs" /> <Compile Include="Sound\YM2413.cs" />
<Compile Include="Util.cs" />
<Compile Include="Sound\Utilities\Waves.cs" /> <Compile Include="Sound\Utilities\Waves.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,6 +1,8 @@
using System; using System;
using System.IO; using System.IO;
using BizHawk.Common;
namespace BizHawk.Emulation.CPUs.M6502 namespace BizHawk.Emulation.CPUs.M6502
{ {
public sealed partial class MOS6502X public sealed partial class MOS6502X

View File

@ -2,6 +2,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using BizHawk.Common;
namespace BizHawk.Emulation.CPUs.M6502 namespace BizHawk.Emulation.CPUs.M6502
{ {
/// <summary> /// <summary>

View File

@ -1,6 +1,8 @@
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using BizHawk.Common;
namespace BizHawk.Emulation.CPUs.M6502 namespace BizHawk.Emulation.CPUs.M6502
{ {
public static class MOS6502X_DLL public static class MOS6502X_DLL

View File

@ -1,6 +1,8 @@
using BizHawk.Emulation.Computers.Commodore64.MOS; using BizHawk.Emulation.Computers.Commodore64.MOS;
using System.Reflection; using System.Reflection;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64 namespace BizHawk.Emulation.Computers.Commodore64
{ {
/// <summary> /// <summary>

View File

@ -1,5 +1,7 @@
using System.IO; using System.IO;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64 namespace BizHawk.Emulation.Computers.Commodore64
{ {
sealed public partial class C64 : IEmulator sealed public partial class C64 : IEmulator

View File

@ -2,6 +2,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Cartridge namespace BizHawk.Emulation.Computers.Commodore64.Cartridge
{ {
// this is the base cartridge class // this is the base cartridge class

View File

@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Cartridge namespace BizHawk.Emulation.Computers.Commodore64.Cartridge
{ {
public class Mapper0005 : Cart public class Mapper0005 : Cart

View File

@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Cartridge namespace BizHawk.Emulation.Computers.Commodore64.Cartridge
{ {
// This is a mapper used commonly by System 3. It is // This is a mapper used commonly by System 3. It is

View File

@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Cartridge namespace BizHawk.Emulation.Computers.Commodore64.Cartridge
{ {
public class Mapper0012 : Cart public class Mapper0012 : Cart

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Cartridge namespace BizHawk.Emulation.Computers.Commodore64.Cartridge
{ {

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Cartridge namespace BizHawk.Emulation.Computers.Commodore64.Cartridge
{ {

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
public class Cassette public class Cassette

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
sealed public partial class Cia sealed public partial class Cia

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
sealed public partial class Cpu sealed public partial class Cpu

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
public class Expansion public class Expansion

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
public class Joystick public class Joystick

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
public class Keyboard public class Keyboard

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
sealed public class Ram sealed public class Ram

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
public class Rom public class Rom

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
public class Serial public class Serial

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
sealed public partial class Sid sealed public partial class Sid

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{ {
sealed public partial class Vic sealed public partial class Vic

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
#pragma warning disable 649 //adelikat: Disable dumb warnings until this file is complete #pragma warning disable 649 //adelikat: Disable dumb warnings until this file is complete
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals

View File

@ -1,4 +1,6 @@
using System; using System;
using BizHawk.Common;
using BizHawk.Emulation.Computers.Commodore64.Cartridge; using BizHawk.Emulation.Computers.Commodore64.Cartridge;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Computers.Commodore64.MOS using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {
// used as Color RAM in C64 // used as Color RAM in C64

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Computers.Commodore64.MOS using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {
// DRAM for the c64 // DRAM for the c64
// 4164 = 64 kbit // 4164 = 64 kbit

View File

@ -3,6 +3,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {
// an extension of the 6502 processor // an extension of the 6502 processor

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {
sealed public partial class Sid sealed public partial class Sid

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {
sealed public partial class Sid sealed public partial class Sid

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
#pragma warning disable 649 //adelikat: Disable dumb warnings until this file is complete #pragma warning disable 649 //adelikat: Disable dumb warnings until this file is complete
#pragma warning disable 169 //adelikat: Disable dumb warnings until this file is complete #pragma warning disable 169 //adelikat: Disable dumb warnings until this file is complete

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {
sealed public partial class Vic sealed public partial class Vic

View File

@ -4,6 +4,8 @@ using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {
sealed public partial class Vic sealed public partial class Vic

View File

@ -1,4 +1,5 @@
using System.Drawing; using System.Drawing;
using BizHawk.Common;
namespace BizHawk.Emulation.Computers.Commodore64.MOS namespace BizHawk.Emulation.Computers.Commodore64.MOS
{ {

View File

@ -1,7 +1,9 @@
using System; using System;
using BizHawk.Emulation.CPUs.M6502; using BizHawk.Emulation.CPUs.M6502;
using BizHawk.Emulation.Consoles.Atari; using BizHawk.Emulation.Consoles.Atari;
using BizHawk.Emulation.Consoles.Atari._2600; using BizHawk.Emulation.Consoles.Atari._2600;
using BizHawk.Common;
namespace BizHawk namespace BizHawk
{ {

View File

@ -2,6 +2,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using BizHawk.Common;
namespace BizHawk namespace BizHawk
{ {
public partial class Atari2600 : IEmulator public partial class Atari2600 : IEmulator

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari
{ {
// Emulates the M6532 RIOT Chip // Emulates the M6532 RIOT Chip
public class M6532 public class M6532

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
3E (Boulderdash 3E (Boulderdash

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
3F (Tigervision) 3F (Tigervision)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
4A50 (no name) 4A50 (no name)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
This was used by Commavid. It allowed for both ROM and RAM on the cartridge, This was used by Commavid. It allowed for both ROM and RAM on the cartridge,

View File

@ -1,4 +1,6 @@
namespace BizHawk using BizHawk.Common;
namespace BizHawk
{ {
partial class Atari2600 partial class Atari2600
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
E0 (Parker Bros) E0 (Parker Bros)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
E7 (M-Network) E7 (M-Network)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
EF (no name?) EF (no name?)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
F0 (Megaboy) F0 (Megaboy)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
F4 (Atari style 32K) F4 (Atari style 32K)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
F6 (Atari style 16K) F6 (Atari style 16K)

View File

@ -1,4 +1,6 @@
namespace BizHawk using BizHawk.Common;
namespace BizHawk
{ {
partial class Atari2600 partial class Atari2600
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
FA (RAM Plus) FA (RAM Plus)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
UA (UA Ltd) UA (UA Ltd)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Atari._2600 using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari._2600
{ {
/* /*
X07 (Atariage) X07 (Atariage)

View File

@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Atari namespace BizHawk.Emulation.Consoles.Atari
{ {
// Emulates the TIA // Emulates the TIA

View File

@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using BizHawk.Common;
using EMU7800.Core; using EMU7800.Core;
namespace BizHawk.Emulation namespace BizHawk.Emulation

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
using BizHawk.Emulation.Sound; using BizHawk.Emulation.Sound;
//http://wiki.nesdev.com/w/index.php/APU_Mixer_Emulation //http://wiki.nesdev.com/w/index.php/APU_Mixer_Emulation

View File

@ -3,6 +3,8 @@ using System.Xml;
using System.IO; using System.IO;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Common;
//TODO - consider bytebuffer for mirroring //TODO - consider bytebuffer for mirroring
//TODO - could stringpool the bootgod DB for a pedantic optimization //TODO - could stringpool the bootgod DB for a pedantic optimization

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//AKA half of mapper 034 (the other half is BxROM which is entirely different..) //AKA half of mapper 034 (the other half is BxROM which is entirely different..)
public sealed class AVE_NINA_001 : NES.NESBoardBase public sealed class AVE_NINA_001 : NES.NESBoardBase

View File

@ -1,3 +1,5 @@
using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//generally mapper7 //generally mapper7

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
public sealed class BANDAI_74_161_02_74 : NES.NESBoardBase public sealed class BANDAI_74_161_02_74 : NES.NESBoardBase
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
public sealed class BANDAI_74_161_161_32 : NES.NESBoardBase public sealed class BANDAI_74_161_161_32 : NES.NESBoardBase
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//AKA half of mapper 034 (the other half is AVE_NINA_001 which is entirely different..) //AKA half of mapper 034 (the other half is AVE_NINA_001 which is entirely different..)
public sealed class BxROM : NES.NESBoardBase public sealed class BxROM : NES.NESBoardBase

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo namespace BizHawk.Emulation.Consoles.Nintendo
{ {

View File

@ -1,6 +1,7 @@
using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo namespace BizHawk.Emulation.Consoles.Nintendo
{ {
public sealed class CPROM : NES.NESBoardBase public sealed class CPROM : NES.NESBoardBase
{ {
//generally mapper 13 //generally mapper 13
@ -61,7 +62,5 @@ namespace BizHawk.Emulation.Consoles.Nintendo
base.SyncState(ser); base.SyncState(ser);
ser.Sync("chr",ref chr); ser.Sync("chr",ref chr);
} }
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
//simplifications/approximations: //simplifications/approximations:
//* "Note that no commercial games rely on this mirroring -- therefore you can take the easy way out and simply give all MMC5 games 64k PRG-RAM." //* "Note that no commercial games rely on this mirroring -- therefore you can take the easy way out and simply give all MMC5 games 64k PRG-RAM."
@ -12,7 +13,6 @@
//TODO - tweak nametable / chr viewer to be more useful //TODO - tweak nametable / chr viewer to be more useful
//FUTURE - we may need to split this into a separate MMC5 class. but for now it is just a pain. //FUTURE - we may need to split this into a separate MMC5 class. but for now it is just a pain.
namespace BizHawk.Emulation.Consoles.Nintendo namespace BizHawk.Emulation.Consoles.Nintendo
{ {
[NES.INESBoardImplPriority] [NES.INESBoardImplPriority]

View File

@ -1,4 +1,5 @@
using System; using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo namespace BizHawk.Emulation.Consoles.Nintendo
{ {

View File

@ -1,4 +1,5 @@
using System.Diagnostics; using System.Diagnostics;
using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo namespace BizHawk.Emulation.Consoles.Nintendo
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//Mapper 77 //Mapper 77
//Napoleon Senki //Napoleon Senki

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//iNES Mapper 97 //iNES Mapper 97
//Kaiketsu Yanchamaru (Kid Niki 1) //Kaiketsu Yanchamaru (Kid Niki 1)

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//AKA mapper 032 //AKA mapper 032

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//AKA mapper 65 //AKA mapper 65

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//Mapper 86 //Mapper 86

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//iNES Mapper 72 //iNES Mapper 72
//Example Games: //Example Games:

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
public sealed class JALECO_SS8806 : NES.NESBoardBase public sealed class JALECO_SS8806 : NES.NESBoardBase
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
/* /*
* Life Span: October 1986 - April 1987 * Life Span: October 1986 - April 1987

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
public sealed class Mapper012 : MMC3Board_Base public sealed class Mapper012 : MMC3Board_Base
{ {

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
// mmc3 multi, PAL, "Super Mario Bros. / Tetris / Nintendo World Cup" // mmc3 multi, PAL, "Super Mario Bros. / Tetris / Nintendo World Cup"
public sealed class Mapper037 : MMC3Board_Base public sealed class Mapper037 : MMC3Board_Base

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
//http://wiki.nesdev.com/w/index.php/INES_Mapper_044 //http://wiki.nesdev.com/w/index.php/INES_Mapper_044
public class Mapper044 : MMC3Board_Base public class Mapper044 : MMC3Board_Base

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
// Fire Emblem (Ch) // Fire Emblem (Ch)
// mmc3 with mmc2-style chr swapping // mmc3 with mmc2-style chr swapping

View File

@ -1,4 +1,6 @@
namespace BizHawk.Emulation.Consoles.Nintendo using BizHawk.Common;
namespace BizHawk.Emulation.Consoles.Nintendo
{ {
public sealed class Mapper189 : MMC3Board_Base public sealed class Mapper189 : MMC3Board_Base
{ {

Some files were not shown because too many files have changed in this diff Show More