diff --git a/BizHawk.Common/Bit.cs b/BizHawk.Common/Bit.cs
new file mode 100644
index 0000000000..7d9ffe3619
--- /dev/null
+++ b/BizHawk.Common/Bit.cs
@@ -0,0 +1,88 @@
+using System.Diagnostics;
+
+namespace BizHawk.Common
+{
+ // I think this is a little faster with uint than with byte
+ public struct Bit
+ {
+ private readonly uint _val;
+
+ public Bit(uint val)
+ {
+ _val = val;
+ }
+
+ public static implicit operator Bit(int rhs)
+ {
+ Debug.Assert((rhs & ~1) == 0);
+ return new Bit((uint)rhs);
+ }
+
+ public static implicit operator Bit(uint rhs)
+ {
+ Debug.Assert((rhs & ~1) == 0);
+ return new Bit(rhs);
+ }
+
+ public static implicit operator Bit(byte rhs)
+ {
+ Debug.Assert((rhs & ~1) == 0);
+ return new Bit(rhs);
+ }
+
+ public static implicit operator Bit(bool rhs)
+ {
+ return new Bit(rhs ? (byte)1 : (byte)0);
+ }
+
+ public static implicit operator long(Bit rhs)
+ {
+ return rhs._val;
+ }
+
+ public static implicit operator int(Bit rhs)
+ {
+ return (int)rhs._val;
+ }
+
+ public static implicit operator uint(Bit rhs)
+ {
+ return rhs._val;
+ }
+
+ public static implicit operator byte(Bit rhs)
+ {
+ return (byte)rhs._val;
+ }
+
+ public static implicit operator bool(Bit rhs)
+ {
+ return rhs._val != 0;
+ }
+
+ public override string ToString()
+ {
+ return _val.ToString();
+ }
+
+ public static bool operator ==(Bit lhs, Bit rhs)
+ {
+ return lhs._val == rhs._val;
+ }
+
+ public static bool operator !=(Bit lhs, Bit rhs)
+ {
+ return lhs._val != rhs._val;
+ }
+
+ public override int GetHashCode()
+ {
+ return _val.GetHashCode();
+ }
+
+ public override bool Equals(object obj)
+ {
+ return this == (Bit)obj; // this is probably wrong
+ }
+ }
+}
\ No newline at end of file
diff --git a/BizHawk.Common/BizHawk.Common.csproj b/BizHawk.Common/BizHawk.Common.csproj
index 7d5bcf50a0..848a4819e0 100644
--- a/BizHawk.Common/BizHawk.Common.csproj
+++ b/BizHawk.Common/BizHawk.Common.csproj
@@ -47,6 +47,7 @@
VersionInfo.cs
+
@@ -62,7 +63,6 @@
-
diff --git a/BizHawk.Common/Types.cs b/BizHawk.Common/Types.cs
deleted file mode 100644
index a1a0c7a48d..0000000000
--- a/BizHawk.Common/Types.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System.Diagnostics;
-
-namespace BizHawk.Common
-{
- //I think this is a little faster with uint than with byte
- public struct Bit
- {
- readonly uint val;
-
- Bit(uint val)
- {
- this.val = val;
- }
-
- public static implicit operator Bit(int rhs) { Debug.Assert((rhs & ~1) == 0); return new Bit((uint)(rhs)); }
- public static implicit operator Bit(uint rhs) { Debug.Assert((rhs & ~1) == 0); return new Bit((uint)(rhs)); }
- public static implicit operator Bit(byte rhs) { Debug.Assert((rhs & ~1) == 0); return new Bit((uint)(rhs)); }
- public static implicit operator Bit(bool rhs) { return new Bit(rhs ? (byte)1 : (byte)0); }
- public static implicit operator long(Bit rhs) { return (long)rhs.val; }
- public static implicit operator int(Bit rhs) { return (int)rhs.val; }
- public static implicit operator uint(Bit rhs) { return (uint)rhs.val; }
- public static implicit operator byte(Bit rhs) { return (byte)rhs.val; }
- public static implicit operator bool(Bit rhs) { return rhs.val != 0; }
- public override string ToString() {return val.ToString(); }
- public static bool operator ==(Bit lhs, Bit rhs) { return lhs.val == rhs.val; }
- public static bool operator !=(Bit lhs, Bit rhs) { return lhs.val != rhs.val; }
- public override int GetHashCode() { return val.GetHashCode(); }
- public override bool Equals(object obj) { return this == (Bit)obj; } //this is probably wrong
- }
-
-}
\ No newline at end of file