public void Write(ushort addr, uint value, int size) { switch (addr) { case 0x3b4: case 0x3d4: crtControlAddress = (byte)value; break; case 0x3b5: case 0x3d5: crtControl[crtControlAddress] = (byte)value; break; case 0x3ba: case 0x3da: featureControl = (byte)value; break; case 0x3c2: miscOutputRegister = (byte)value; break; case 0x3c4: sequencerAddress = (SequenceRegister)value; break; case 0x3c5: sequencer[(int)sequencerAddress] = (byte)value; break; case 0x3c0: if (attributeControlFlipFlop) { attributeControl[attributeControlAddress] = (byte)value; attributeControlFlipFlop = false; } else { attributeControlAddress = (byte)value; attributeControlFlipFlop = true; } break; case 0x3c8: dacAddress = (byte)value; currColor = 0; break; case 0x3c9: dacColour[currColor] = (byte)((value & 0x3f) << 2); if (++currColor == 3) { currColor = 0; dacPalette[dacAddress] = Color.FromArgb(dacColour[0], dacColour[1], dacColour[2]); dacAddress++; } break; default: System.Diagnostics.Debugger.Break(); break; } }
public void Write(ushort addr, uint value, int size) { switch (addr) { case 0x3b4: case 0x3d4: crtControlAddress = (byte)value; break; case 0x3b5: case 0x3d5: crtControl[crtControlAddress] = (byte)value; break; case 0x3ba: case 0x3da: featureControl = (byte)value; break; case 0x3c2: miscOutputRegister = (byte)value; break; case 0x3c4: sequencerAddress = (SequenceRegister)value; break; case 0x3c5: sequencer[(int)sequencerAddress] = (byte)value; break; case 0x3c0: if (attributeControlFlipFlop) { attributeControl[attributeControlAddress] = (byte)value; attributeControlFlipFlop = false; } else { attributeControlAddress = (byte)value; attributeControlFlipFlop = true; } break; case 0x3c8: dacAddress = (byte)value; currColor = 0; break; case 0x3c9: dacColour[currColor] = (byte)((value & 0x3f) << 2); if (++currColor == 3) { currColor = 0; dacPalette[dacAddress] = Color.FromArgb(dacColour[0], dacColour[1], dacColour[2]); dacAddress++; } break; default: System.Diagnostics.Debugger.Break(); break; } }