diff --git a/BizHawk.Emulation/BizHawk.Emulation.csproj b/BizHawk.Emulation/BizHawk.Emulation.csproj
index 3533a8fd22..dcbcd9e577 100644
--- a/BizHawk.Emulation/BizHawk.Emulation.csproj
+++ b/BizHawk.Emulation/BizHawk.Emulation.csproj
@@ -105,10 +105,14 @@
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/BizHawk.Emulation/Computers/Commodore64/Vic.cs b/BizHawk.Emulation/Computers/Commodore64/Vic.cs
new file mode 100644
index 0000000000..54d10549c1
--- /dev/null
+++ b/BizHawk.Emulation/Computers/Commodore64/Vic.cs
@@ -0,0 +1,180 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Emulation.Computers.Commodore64
+{
+ public partial class VicII
+ {
+ private uint cyclesTotal;
+ private uint linesTotal;
+ private Region region;
+
+ private Action Execute;
+
+ public VicII(Region vicRegion)
+ {
+ region = vicRegion;
+
+ switch (region)
+ {
+ case Region.NTSC:
+ cyclesTotal = 65;
+ linesTotal = 263;
+ Execute = ExecuteNTSC;
+ break;
+ case Region.PAL:
+ cyclesTotal = 63;
+ linesTotal = 312;
+ Execute = ExecutePAL;
+ break;
+ }
+ }
+
+ private void ExecuteNTSC()
+ {
+ switch (rasterCycle)
+ {
+ case 0: break;
+ case 1: break;
+ case 2: break;
+ case 3: break;
+ case 4: break;
+ case 5: break;
+ case 6: break;
+ case 7: break;
+ case 8: break;
+ case 9: break;
+ case 10: break;
+ case 11: break;
+ case 12: break;
+ case 13: break;
+ case 14: break;
+ case 15: break;
+ case 16: break;
+ case 17: break;
+ case 18: break;
+ case 19: break;
+ case 20: break;
+ case 21: break;
+ case 22: break;
+ case 23: break;
+ case 24: break;
+ case 25: break;
+ case 26: break;
+ case 27: break;
+ case 28: break;
+ case 29: break;
+ case 30: break;
+ case 31: break;
+ case 32: break;
+ case 33: break;
+ case 34: break;
+ case 35: break;
+ case 36: break;
+ case 37: break;
+ case 38: break;
+ case 39: break;
+ case 40: break;
+ case 41: break;
+ case 42: break;
+ case 43: break;
+ case 44: break;
+ case 45: break;
+ case 46: break;
+ case 47: break;
+ case 48: break;
+ case 49: break;
+ case 50: break;
+ case 51: break;
+ case 52: break;
+ case 53: break;
+ case 54: break;
+ case 55: break;
+ case 56: break;
+ case 57: break;
+ case 58: break;
+ case 59: break;
+ case 60: break;
+ case 61: break;
+ case 62: break;
+ case 63: break;
+ case 64: break;
+ }
+ }
+
+ private void ExecutePAL()
+ {
+ switch (rasterCycle)
+ {
+ case 0: break;
+ case 1: break;
+ case 2: break;
+ case 3: break;
+ case 4: break;
+ case 5: break;
+ case 6: break;
+ case 7: break;
+ case 8: break;
+ case 9: break;
+ case 10: break;
+ case 11: break;
+ case 12: break;
+ case 13: break;
+ case 14: break;
+ case 15: break;
+ case 16: break;
+ case 17: break;
+ case 18: break;
+ case 19: break;
+ case 20: break;
+ case 21: break;
+ case 22: break;
+ case 23: break;
+ case 24: break;
+ case 25: break;
+ case 26: break;
+ case 27: break;
+ case 28: break;
+ case 29: break;
+ case 30: break;
+ case 31: break;
+ case 32: break;
+ case 33: break;
+ case 34: break;
+ case 35: break;
+ case 36: break;
+ case 37: break;
+ case 38: break;
+ case 39: break;
+ case 40: break;
+ case 41: break;
+ case 42: break;
+ case 43: break;
+ case 44: break;
+ case 45: break;
+ case 46: break;
+ case 47: break;
+ case 48: break;
+ case 49: break;
+ case 50: break;
+ case 51: break;
+ case 52: break;
+ case 53: break;
+ case 54: break;
+ case 55: break;
+ case 56: break;
+ case 57: break;
+ case 58: break;
+ case 59: break;
+ case 60: break;
+ case 61: break;
+ case 62: break;
+ }
+ }
+
+
+
+ }
+}
diff --git a/BizHawk.Emulation/Computers/Commodore64/VicFunction.cs b/BizHawk.Emulation/Computers/Commodore64/VicFunction.cs
new file mode 100644
index 0000000000..24beec7698
--- /dev/null
+++ b/BizHawk.Emulation/Computers/Commodore64/VicFunction.cs
@@ -0,0 +1,110 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Emulation.Computers.Commodore64
+{
+ public partial class VicII
+ {
+ private void BASprite(uint index0)
+ {
+ }
+
+ private void BASprite(uint index0, uint index1)
+ {
+ }
+
+ private void BASprite(uint index0, uint index1, uint index2)
+ {
+ }
+
+ private void CheckBorderLeft0()
+ {
+ }
+
+ private void CheckBorderLeft1()
+ {
+ }
+
+ private void CheckBorderRight0()
+ {
+ }
+
+ private void CheckBorderRight1()
+ {
+ }
+
+ private void CheckSpriteCrunch()
+ {
+ }
+
+ private void CheckSpriteDisplay()
+ {
+ }
+
+ private void CheckSpriteDma()
+ {
+ }
+
+ private void CheckSpriteExpansion()
+ {
+ }
+
+ private void FetchC()
+ {
+ }
+
+ private void FetchG()
+ {
+ }
+
+ private void Idle()
+ {
+ }
+
+ private void Phase0()
+ {
+ }
+
+ private void Phase1()
+ {
+ }
+
+ private void Refresh()
+ {
+ }
+
+ private void SpritePointer()
+ {
+ }
+
+ private void SpriteDma0()
+ {
+ }
+
+ private void SpriteDma1()
+ {
+ }
+
+ private void SpriteDma2()
+ {
+ }
+
+ private void UpdateMCBASE()
+ {
+ }
+
+ private void UpdateRC()
+ {
+ }
+
+ private void UpdateVC()
+ {
+ }
+
+ private void Vis(uint index)
+ {
+ }
+ }
+}
diff --git a/BizHawk.Emulation/Computers/Commodore64/VicMem.cs b/BizHawk.Emulation/Computers/Commodore64/VicMem.cs
new file mode 100644
index 0000000000..c9f78acb9b
--- /dev/null
+++ b/BizHawk.Emulation/Computers/Commodore64/VicMem.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Emulation.Computers.Commodore64
+{
+ public partial class VicII
+ {
+ public byte Peek(int addr)
+ {
+ addr &= 0x3F;
+ return this[(uint)addr];
+ }
+
+ public void Poke(int addr, byte val)
+ {
+ addr &= 0x3F;
+ this[(uint)addr] = val;
+ }
+
+ public byte Read(ushort addr)
+ {
+ byte result = 0xFF;
+
+ addr &= 0x3F;
+ switch (addr)
+ {
+ default:
+ result = this[addr];
+ break;
+ }
+
+ return result;
+ }
+
+ public void Write(ushort addr, byte val)
+ {
+ addr &= 0x3F;
+ switch (addr)
+ {
+ default:
+ this[addr] = val;
+ break;
+ }
+ }
+ }
+}
diff --git a/BizHawk.Emulation/Computers/Commodore64/VicRegs.cs b/BizHawk.Emulation/Computers/Commodore64/VicRegs.cs
new file mode 100644
index 0000000000..b43231004a
--- /dev/null
+++ b/BizHawk.Emulation/Computers/Commodore64/VicRegs.cs
@@ -0,0 +1,604 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Emulation.Computers.Commodore64
+{
+ public partial class VicII
+ {
+ private struct Sprite
+ {
+ public uint color;
+ public bool dataCollision;
+ public bool dma;
+ public bool enable;
+ public bool exp;
+ public uint mc;
+ public uint mcBase;
+ public bool mcChange;
+ public bool multicolor;
+ public bool priority;
+ public uint ptr;
+ public uint ptrinc;
+ public bool spriteCollision;
+ public uint x;
+ public uint xShift;
+ public uint xShiftSum;
+ public bool xExpand;
+ public uint y;
+ public bool yExpand;
+ }
+
+ private uint backgroundColor0;
+ private uint backgroundColor1;
+ private uint backgroundColor2;
+ private uint backgroundColor3;
+ private bool bitmapMode;
+ private uint bitmapRam;
+ private uint borderColor;
+ private bool columnSelect;
+ private bool displayEnable;
+ private bool enableIrqDataCollision;
+ private bool enableIrqLightPen;
+ private bool enableIrqRaster;
+ private bool enableIrqSpriteCollision;
+ private bool extraColorMode;
+ private bool idle;
+ private bool irq;
+ private bool irqDataCollision;
+ private bool irqLightPen;
+ private bool irqRaster;
+ private bool irqSpriteCollision;
+ private uint lightPenX;
+ private uint lightPenY;
+ private bool multiColorMode;
+ private uint phaseRead;
+ private uint rasterCycle;
+ private uint rasterIrqLine;
+ private uint rasterLine;
+ private uint rc;
+ private bool reset;
+ private bool rowSelect;
+ private uint spriteMultiColor0;
+ private uint spriteMultiColor1;
+ private Sprite[] sprites;
+ private uint vc;
+ private uint vcbase;
+ private uint videoRam;
+ private uint vmli;
+ private uint xScroll;
+ private uint yScroll;
+
+ private byte this[uint addr]
+ {
+ get
+ {
+ byte result;
+
+ switch (addr & 0x3F)
+ {
+ case 0x00: result = Reg00; break;
+ case 0x01: result = Reg01; break;
+ case 0x02: result = Reg02; break;
+ case 0x03: result = Reg03; break;
+ case 0x04: result = Reg04; break;
+ case 0x05: result = Reg05; break;
+ case 0x06: result = Reg06; break;
+ case 0x07: result = Reg07; break;
+ case 0x08: result = Reg08; break;
+ case 0x09: result = Reg09; break;
+ case 0x0A: result = Reg0A; break;
+ case 0x0B: result = Reg0B; break;
+ case 0x0C: result = Reg0C; break;
+ case 0x0D: result = Reg0D; break;
+ case 0x0E: result = Reg0E; break;
+ case 0x0F: result = Reg0F; break;
+ case 0x10: result = Reg10; break;
+ case 0x11: result = Reg11; break;
+ case 0x12: result = Reg12; break;
+ case 0x13: result = Reg13; break;
+ case 0x14: result = Reg14; break;
+ case 0x15: result = Reg15; break;
+ case 0x16: result = Reg16; break;
+ case 0x17: result = Reg17; break;
+ case 0x18: result = Reg18; break;
+ case 0x19: result = Reg19; break;
+ case 0x1A: result = Reg1A; break;
+ case 0x1B: result = Reg1B; break;
+ case 0x1C: result = Reg1C; break;
+ case 0x1D: result = Reg1D; break;
+ case 0x1E: result = Reg1E; break;
+ case 0x1F: result = Reg1F; break;
+ case 0x20: result = Reg20; break;
+ case 0x21: result = Reg21; break;
+ case 0x22: result = Reg22; break;
+ case 0x23: result = Reg23; break;
+ case 0x24: result = Reg24; break;
+ case 0x25: result = Reg25; break;
+ case 0x26: result = Reg26; break;
+ case 0x27: result = Reg27; break;
+ case 0x28: result = Reg28; break;
+ case 0x29: result = Reg29; break;
+ case 0x2A: result = Reg2A; break;
+ case 0x2B: result = Reg2B; break;
+ case 0x2C: result = Reg2C; break;
+ case 0x2D: result = Reg2D; break;
+ case 0x2E: result = Reg2E; break;
+ default: result = 0xFF; break;
+ }
+ return result;
+ }
+ set
+ {
+ switch (addr & 0x3F)
+ {
+ case 0x00: Reg00 = value; break;
+ case 0x01: Reg01 = value; break;
+ case 0x02: Reg02 = value; break;
+ case 0x03: Reg03 = value; break;
+ case 0x04: Reg04 = value; break;
+ case 0x05: Reg05 = value; break;
+ case 0x06: Reg06 = value; break;
+ case 0x07: Reg07 = value; break;
+ case 0x08: Reg08 = value; break;
+ case 0x09: Reg09 = value; break;
+ case 0x0A: Reg0A = value; break;
+ case 0x0B: Reg0B = value; break;
+ case 0x0C: Reg0C = value; break;
+ case 0x0D: Reg0D = value; break;
+ case 0x0E: Reg0E = value; break;
+ case 0x0F: Reg0F = value; break;
+ case 0x10: Reg10 = value; break;
+ case 0x11: Reg11 = value; break;
+ case 0x12: Reg12 = value; break;
+ case 0x15: Reg15 = value; break;
+ case 0x16: Reg16 = value; break;
+ case 0x17: Reg17 = value; break;
+ case 0x18: Reg18 = value; break;
+ case 0x19: Reg19 = value; break;
+ case 0x1A: Reg1A = value; break;
+ case 0x1B: Reg1B = value; break;
+ case 0x1C: Reg1C = value; break;
+ case 0x1D: Reg1D = value; break;
+ case 0x1E: Reg1E = value; break;
+ case 0x1F: Reg1F = value; break;
+ case 0x20: Reg20 = value; break;
+ case 0x21: Reg21 = value; break;
+ case 0x22: Reg22 = value; break;
+ case 0x23: Reg23 = value; break;
+ case 0x24: Reg24 = value; break;
+ case 0x25: Reg25 = value; break;
+ case 0x26: Reg26 = value; break;
+ case 0x27: Reg27 = value; break;
+ case 0x28: Reg28 = value; break;
+ case 0x29: Reg29 = value; break;
+ case 0x2A: Reg2A = value; break;
+ case 0x2B: Reg2B = value; break;
+ case 0x2C: Reg2C = value; break;
+ case 0x2D: Reg2D = value; break;
+ case 0x2E: Reg2E = value; break;
+ default: break;
+ }
+ }
+ }
+
+ private byte Reg00 {
+ get { return (byte)(sprites[0].x & 0xFF); }
+ set { sprites[0].x &= 0x100; sprites[0].x |= value; }
+ }
+ private byte Reg01 {
+ get { return (byte)(sprites[0].y); }
+ set { sprites[0].y = value; }
+ }
+ private byte Reg02 {
+ get { return (byte)(sprites[1].x & 0xFF); }
+ set { sprites[1].x &= 0x100; sprites[1].x |= value; }
+ }
+ private byte Reg03 {
+ get { return (byte)(sprites[1].y); }
+ set { sprites[1].y = value; }
+ }
+ private byte Reg04 {
+ get { return (byte)(sprites[2].x & 0xFF); }
+ set { sprites[2].x &= 0x100; sprites[2].x |= value; }
+ }
+ private byte Reg05 {
+ get { return (byte)(sprites[2].y); }
+ set { sprites[2].y = value; }
+ }
+ private byte Reg06 {
+ get { return (byte)(sprites[3].x & 0xFF); }
+ set { sprites[3].x &= 0x100; sprites[3].x |= value; }
+ }
+ private byte Reg07 {
+ get { return (byte)(sprites[3].y); }
+ set { sprites[3].y = value; }
+ }
+ private byte Reg08 {
+ get { return (byte)(sprites[4].x & 0xFF); }
+ set { sprites[4].x &= 0x100; sprites[4].x |= value; }
+ }
+ private byte Reg09 {
+ get { return (byte)(sprites[4].y); }
+ set { sprites[4].y = value; }
+ }
+ private byte Reg0A {
+ get { return (byte)(sprites[5].x & 0xFF); }
+ set { sprites[5].x &= 0x100; sprites[5].x |= value; }
+ }
+ private byte Reg0B {
+ get { return (byte)(sprites[5].y); }
+ set { sprites[5].y = value; }
+ }
+ private byte Reg0C {
+ get { return (byte)(sprites[6].x & 0xFF); }
+ set { sprites[6].x &= 0x100; sprites[6].x |= value; }
+ }
+ private byte Reg0D {
+ get { return (byte)(sprites[6].y); }
+ set { sprites[6].y = value; }
+ }
+ private byte Reg0E {
+ get { return (byte)(sprites[7].x & 0xFF); }
+ set { sprites[7].x &= 0x100; sprites[7].x |= value; }
+ }
+ private byte Reg0F {
+ get { return (byte)(sprites[7].y); }
+ set { sprites[7].y = value; }
+ }
+ private byte Reg10 {
+ get
+ {
+ return (byte)(
+ ((sprites[0].x & 0x100) >> 8) |
+ ((sprites[1].x & 0x100) >> 7) |
+ ((sprites[2].x & 0x100) >> 6) |
+ ((sprites[3].x & 0x100) >> 5) |
+ ((sprites[4].x & 0x100) >> 4) |
+ ((sprites[5].x & 0x100) >> 3) |
+ ((sprites[6].x & 0x100) >> 2) |
+ ((sprites[7].x & 0x100) >> 1));
+ }
+ set
+ {
+ uint val = value;
+ sprites[0].x = (sprites[0].x & 0xFF) | ((val & 0x01) << 8);
+ sprites[1].x = (sprites[1].x & 0xFF) | ((val & 0x02) << 7);
+ sprites[2].x = (sprites[2].x & 0xFF) | ((val & 0x04) << 6);
+ sprites[3].x = (sprites[3].x & 0xFF) | ((val & 0x08) << 5);
+ sprites[4].x = (sprites[4].x & 0xFF) | ((val & 0x10) << 4);
+ sprites[5].x = (sprites[5].x & 0xFF) | ((val & 0x20) << 3);
+ sprites[6].x = (sprites[6].x & 0xFF) | ((val & 0x40) << 2);
+ sprites[7].x = (sprites[7].x & 0xFF) | ((val & 0x80) << 1);
+ }
+ }
+ private byte Reg11 {
+ get
+ {
+ return (byte)(
+ (yScroll & 0x07) |
+ (columnSelect ? (uint)0x08 : (uint)0x00) |
+ (displayEnable ? (uint)0x10 : (uint)0x00) |
+ (bitmapMode ? (uint)0x20 : (uint)0x00) |
+ (extraColorMode ? (uint)0x40 : (uint)0x00) |
+ ((rasterLine & 0x100) >> 1));
+ }
+ set
+ {
+ yScroll = (uint)value & 0x07;
+ columnSelect = ((value & 0x08) != 0);
+ displayEnable = ((value & 0x10) != 0);
+ bitmapMode = ((value & 0x20) != 0);
+ extraColorMode = ((value & 0x40) != 0);
+ rasterIrqLine &= 0x100;
+ rasterIrqLine |= (uint)(value & 0x80) << 1;
+ }
+ }
+ private byte Reg12 {
+ get { return (byte)(rasterLine & 0xFF); }
+ set { rasterIrqLine &= 0x100; rasterIrqLine |= value; }
+ }
+ private byte Reg13 {
+ get { return (byte)((lightPenX >> 1) & 0xFF); }
+ }
+ private byte Reg14 {
+ get { return (byte)(lightPenY & 0xFF); }
+ }
+ private byte Reg15 {
+ get
+ {
+ return (byte)(
+ (sprites[0].enable ? 0x01 : 0x00) |
+ (sprites[1].enable ? 0x02 : 0x00) |
+ (sprites[2].enable ? 0x04 : 0x00) |
+ (sprites[3].enable ? 0x08 : 0x00) |
+ (sprites[4].enable ? 0x10 : 0x00) |
+ (sprites[5].enable ? 0x20 : 0x00) |
+ (sprites[6].enable ? 0x40 : 0x00) |
+ (sprites[7].enable ? 0x80 : 0x00));
+ }
+ set
+ {
+ sprites[0].enable = ((value & 0x01) != 0);
+ sprites[1].enable = ((value & 0x02) != 0);
+ sprites[2].enable = ((value & 0x04) != 0);
+ sprites[3].enable = ((value & 0x08) != 0);
+ sprites[4].enable = ((value & 0x10) != 0);
+ sprites[5].enable = ((value & 0x20) != 0);
+ sprites[6].enable = ((value & 0x40) != 0);
+ sprites[7].enable = ((value & 0x80) != 0);
+ }
+ }
+ private byte Reg16 {
+ get
+ {
+ return (byte)(
+ (xScroll & 0x07) |
+ (columnSelect ? (uint)0x08 : (uint)0x00) |
+ (multiColorMode ? (uint)0x10 : (uint)0x00) |
+ (reset ? (uint)0x20 : (uint)0x00) |
+ (0xC0));
+ }
+ set
+ {
+ xScroll = (uint)value & 0x07;
+ columnSelect = ((value & 0x08) != 0);
+ multiColorMode = ((value & 0x10) != 0);
+ reset = ((value & 0x20) != 0);
+ }
+ }
+ private byte Reg17 {
+ get
+ {
+ return (byte)(
+ (sprites[0].yExpand ? 0x01 : 0x00) |
+ (sprites[1].yExpand ? 0x02 : 0x00) |
+ (sprites[2].yExpand ? 0x04 : 0x00) |
+ (sprites[3].yExpand ? 0x08 : 0x00) |
+ (sprites[4].yExpand ? 0x10 : 0x00) |
+ (sprites[5].yExpand ? 0x20 : 0x00) |
+ (sprites[6].yExpand ? 0x40 : 0x00) |
+ (sprites[7].yExpand ? 0x80 : 0x00));
+ }
+ set
+ {
+ sprites[0].yExpand = ((value & 0x01) != 0);
+ sprites[1].yExpand = ((value & 0x02) != 0);
+ sprites[2].yExpand = ((value & 0x04) != 0);
+ sprites[3].yExpand = ((value & 0x08) != 0);
+ sprites[4].yExpand = ((value & 0x10) != 0);
+ sprites[5].yExpand = ((value & 0x20) != 0);
+ sprites[6].yExpand = ((value & 0x40) != 0);
+ sprites[7].yExpand = ((value & 0x80) != 0);
+ }
+ }
+ private byte Reg18 {
+ get { return (byte)((videoRam << 4) | (bitmapRam << 1)); }
+ set { videoRam = ((uint)(value & 0xF0)) >> 4; bitmapRam = ((uint)(value & 0x0E)) >> 1; }
+ }
+ private byte Reg19 {
+ get
+ {
+ return (byte)(
+ (irqRaster ? (uint)0x01 : (uint)0x00) |
+ (irqDataCollision ? (uint)0x02 : (uint)0x00) |
+ (irqSpriteCollision ? (uint)0x04 : (uint)0x00) |
+ (irqLightPen ? 0x08 : (uint)0x00) |
+ (irq ? (uint)0x80 : (uint)0x00) |
+ (0x70));
+ }
+ set
+ {
+ irqRaster = ((value & 0x01) != 0);
+ irqDataCollision = ((value & 0x02) != 0);
+ irqSpriteCollision = ((value & 0x04) != 0);
+ irqLightPen = ((value & 0x08) != 0);
+ }
+ }
+ private byte Reg1A {
+ get
+ {
+ return (byte)(
+ (enableIrqRaster ? (uint)0x01 : (uint)0x00) |
+ (enableIrqDataCollision ? (uint)0x02 : (uint)0x00) |
+ (enableIrqSpriteCollision ? (uint)0x04 : (uint)0x00) |
+ (enableIrqLightPen ? 0x08 : (uint)0x00) |
+ (0xF0));
+ }
+ set
+ {
+ enableIrqRaster = ((value & 0x01) != 0);
+ enableIrqDataCollision = ((value & 0x02) != 0);
+ enableIrqSpriteCollision = ((value & 0x04) != 0);
+ enableIrqLightPen = ((value & 0x08) != 0);
+ }
+ }
+ private byte Reg1B {
+ get
+ {
+ return (byte)(
+ (sprites[0].priority ? 0x01 : 0x00) |
+ (sprites[1].priority ? 0x02 : 0x00) |
+ (sprites[2].priority ? 0x04 : 0x00) |
+ (sprites[3].priority ? 0x08 : 0x00) |
+ (sprites[4].priority ? 0x10 : 0x00) |
+ (sprites[5].priority ? 0x20 : 0x00) |
+ (sprites[6].priority ? 0x40 : 0x00) |
+ (sprites[7].priority ? 0x80 : 0x00));
+ }
+ set
+ {
+ sprites[0].priority = ((value & 0x01) != 0);
+ sprites[1].priority = ((value & 0x02) != 0);
+ sprites[2].priority = ((value & 0x04) != 0);
+ sprites[3].priority = ((value & 0x08) != 0);
+ sprites[4].priority = ((value & 0x10) != 0);
+ sprites[5].priority = ((value & 0x20) != 0);
+ sprites[6].priority = ((value & 0x40) != 0);
+ sprites[7].priority = ((value & 0x80) != 0);
+ }
+ }
+ private byte Reg1C {
+ get
+ {
+ return (byte)(
+ (sprites[0].multicolor ? 0x01 : 0x00) |
+ (sprites[1].multicolor ? 0x02 : 0x00) |
+ (sprites[2].multicolor ? 0x04 : 0x00) |
+ (sprites[3].multicolor ? 0x08 : 0x00) |
+ (sprites[4].multicolor ? 0x10 : 0x00) |
+ (sprites[5].multicolor ? 0x20 : 0x00) |
+ (sprites[6].multicolor ? 0x40 : 0x00) |
+ (sprites[7].multicolor ? 0x80 : 0x00));
+ }
+ set
+ {
+ sprites[0].multicolor = ((value & 0x01) != 0);
+ sprites[1].multicolor = ((value & 0x02) != 0);
+ sprites[2].multicolor = ((value & 0x04) != 0);
+ sprites[3].multicolor = ((value & 0x08) != 0);
+ sprites[4].multicolor = ((value & 0x10) != 0);
+ sprites[5].multicolor = ((value & 0x20) != 0);
+ sprites[6].multicolor = ((value & 0x40) != 0);
+ sprites[7].multicolor = ((value & 0x80) != 0);
+ }
+ }
+ private byte Reg1D {
+ get
+ {
+ return (byte)(
+ (sprites[0].xExpand ? 0x01 : 0x00) |
+ (sprites[1].xExpand ? 0x02 : 0x00) |
+ (sprites[2].xExpand ? 0x04 : 0x00) |
+ (sprites[3].xExpand ? 0x08 : 0x00) |
+ (sprites[4].xExpand ? 0x10 : 0x00) |
+ (sprites[5].xExpand ? 0x20 : 0x00) |
+ (sprites[6].xExpand ? 0x40 : 0x00) |
+ (sprites[7].xExpand ? 0x80 : 0x00));
+ }
+ set
+ {
+ sprites[0].xExpand = ((value & 0x01) != 0);
+ sprites[1].xExpand = ((value & 0x02) != 0);
+ sprites[2].xExpand = ((value & 0x04) != 0);
+ sprites[3].xExpand = ((value & 0x08) != 0);
+ sprites[4].xExpand = ((value & 0x10) != 0);
+ sprites[5].xExpand = ((value & 0x20) != 0);
+ sprites[6].xExpand = ((value & 0x40) != 0);
+ sprites[7].xExpand = ((value & 0x80) != 0);
+ }
+ }
+ private byte Reg1E {
+ get
+ {
+ return (byte)(
+ (sprites[0].spriteCollision ? 0x01 : 0x00) |
+ (sprites[1].spriteCollision ? 0x02 : 0x00) |
+ (sprites[2].spriteCollision ? 0x04 : 0x00) |
+ (sprites[3].spriteCollision ? 0x08 : 0x00) |
+ (sprites[4].spriteCollision ? 0x10 : 0x00) |
+ (sprites[5].spriteCollision ? 0x20 : 0x00) |
+ (sprites[6].spriteCollision ? 0x40 : 0x00) |
+ (sprites[7].spriteCollision ? 0x80 : 0x00));
+ }
+ set
+ {
+ sprites[0].spriteCollision = ((value & 0x01) != 0);
+ sprites[1].spriteCollision = ((value & 0x02) != 0);
+ sprites[2].spriteCollision = ((value & 0x04) != 0);
+ sprites[3].spriteCollision = ((value & 0x08) != 0);
+ sprites[4].spriteCollision = ((value & 0x10) != 0);
+ sprites[5].spriteCollision = ((value & 0x20) != 0);
+ sprites[6].spriteCollision = ((value & 0x40) != 0);
+ sprites[7].spriteCollision = ((value & 0x80) != 0);
+ }
+ }
+ private byte Reg1F {
+ get
+ {
+ return (byte)(
+ (sprites[0].dataCollision ? 0x01 : 0x00) |
+ (sprites[1].dataCollision ? 0x02 : 0x00) |
+ (sprites[2].dataCollision ? 0x04 : 0x00) |
+ (sprites[3].dataCollision ? 0x08 : 0x00) |
+ (sprites[4].dataCollision ? 0x10 : 0x00) |
+ (sprites[5].dataCollision ? 0x20 : 0x00) |
+ (sprites[6].dataCollision ? 0x40 : 0x00) |
+ (sprites[7].dataCollision ? 0x80 : 0x00));
+ }
+ set
+ {
+ sprites[0].dataCollision = ((value & 0x01) != 0);
+ sprites[1].dataCollision = ((value & 0x02) != 0);
+ sprites[2].dataCollision = ((value & 0x04) != 0);
+ sprites[3].dataCollision = ((value & 0x08) != 0);
+ sprites[4].dataCollision = ((value & 0x10) != 0);
+ sprites[5].dataCollision = ((value & 0x20) != 0);
+ sprites[6].dataCollision = ((value & 0x40) != 0);
+ sprites[7].dataCollision = ((value & 0x80) != 0);
+ }
+ }
+ private byte Reg20 {
+ get { return (byte)borderColor; }
+ set { borderColor = value; }
+ }
+ private byte Reg21 {
+ get { return (byte)backgroundColor0; }
+ set { backgroundColor0 = value; }
+ }
+ private byte Reg22 {
+ get { return (byte)backgroundColor1; }
+ set { backgroundColor1 = value; }
+ }
+ private byte Reg23 {
+ get { return (byte)backgroundColor2; }
+ set { backgroundColor2 = value; }
+ }
+ private byte Reg24 {
+ get { return (byte)backgroundColor3; }
+ set { backgroundColor3 = value; }
+ }
+ private byte Reg25 {
+ get { return (byte)spriteMultiColor0; }
+ set { spriteMultiColor0 = value; }
+ }
+ private byte Reg26 {
+ get { return (byte)spriteMultiColor1; }
+ set { spriteMultiColor1 = value; }
+ }
+ private byte Reg27 {
+ get { return (byte)sprites[0].color; }
+ set { sprites[0].color = value; }
+ }
+ private byte Reg28 {
+ get { return (byte)sprites[1].color; }
+ set { sprites[1].color = value; }
+ }
+ private byte Reg29 {
+ get { return (byte)sprites[2].color; }
+ set { sprites[2].color = value; }
+ }
+ private byte Reg2A {
+ get { return (byte)sprites[3].color; }
+ set { sprites[3].color = value; }
+ }
+ private byte Reg2B {
+ get { return (byte)sprites[4].color; }
+ set { sprites[4].color = value; }
+ }
+ private byte Reg2C {
+ get { return (byte)sprites[5].color; }
+ set { sprites[5].color = value; }
+ }
+ private byte Reg2D {
+ get { return (byte)sprites[6].color; }
+ set { sprites[6].color = value; }
+ }
+ private byte Reg2E {
+ get { return (byte)sprites[7].color; }
+ set { sprites[7].color = value; }
+ }
+ }
+
+}
diff --git a/BizHawk.Emulation/Computers/Commodore64/VicIINew.cs b/BizHawk.Emulation/Computers/Commodore64/_VicIINew.cs
similarity index 100%
rename from BizHawk.Emulation/Computers/Commodore64/VicIINew.cs
rename to BizHawk.Emulation/Computers/Commodore64/_VicIINew.cs
diff --git a/BizHawk.Emulation/Computers/Commodore64/VicIINewPipeline.cs b/BizHawk.Emulation/Computers/Commodore64/_VicIINewPipeline.cs
similarity index 100%
rename from BizHawk.Emulation/Computers/Commodore64/VicIINewPipeline.cs
rename to BizHawk.Emulation/Computers/Commodore64/_VicIINewPipeline.cs
diff --git a/BizHawk.Emulation/Computers/Commodore64/VicIINewVideoProvider.cs b/BizHawk.Emulation/Computers/Commodore64/_VicIINewVideoProvider.cs
similarity index 100%
rename from BizHawk.Emulation/Computers/Commodore64/VicIINewVideoProvider.cs
rename to BizHawk.Emulation/Computers/Commodore64/_VicIINewVideoProvider.cs
diff --git a/BizHawk.Emulation/Computers/Commodore64/VicIIRegs.cs b/BizHawk.Emulation/Computers/Commodore64/_VicIIRegs.cs
similarity index 100%
rename from BizHawk.Emulation/Computers/Commodore64/VicIIRegs.cs
rename to BizHawk.Emulation/Computers/Commodore64/_VicIIRegs.cs