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