Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
 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;
     }
 }