Exemple #1
0
        public TVCVideo(TVComputer in_tvc)
        {
            m_tvc = in_tvc;

            BlackAndWhite = false;

            m_context = SynchronizationContext.Current;

            // color tables init
            m_current_graphics16_colors     = new uint[128];
            m_current_graphics16_dim_colors = new uint[128];
            m_current_colors = new uint[TVCColors.Length];
            FillColorCache();


            m_6845_registers = new byte[MC6845RegisterCount];
            m_port_palette   = new byte[PaletterColorCount];

            m_tvc.Ports.AddPortWriter(0x00, PortWrite00H);

            m_tvc.Ports.AddPortWriter(0x06, PortWrite06H);

            m_tvc.Ports.AddPortWriter(0x60, PortWrite60H);
            m_tvc.Ports.AddPortWriter(0x61, PortWrite61H);
            m_tvc.Ports.AddPortWriter(0x62, PortWrite62H);
            m_tvc.Ports.AddPortWriter(0x63, PortWrite63H);

            m_tvc.Ports.AddPortWriter(0x70, PortWrite70H);
            m_tvc.Ports.AddPortWriter(0x71, PortWrite71H);

            m_frame_ready_event_param = new FrameReadyEventparam();

            AllocateFrameBuffer(640, 576);
        }
Exemple #2
0
        public TVCVideo(TVComputer in_tvc)
        {
            m_tvc = in_tvc;

            m_context = SynchronizationContext.Current;

            // fill color cache
            m_graphics16_colors = new uint[128];
            int graphics16_color_index;
            int index;

            m_colors = new uint[TVCColors.Length];
            for (int i = 0; i < TVCColors.Length; i++)
            {
                m_colors[i] = 0xff000000u | ((uint)TVCColors[i].R << 16) | ((uint)TVCColors[i].G << 8) | (TVCColors[i].B);

                graphics16_color_index = 0;
                index = i;
                for (int j = 0; j < 4; j++)
                {
                    graphics16_color_index <<= 2;

                    if ((index & 0x08) != 0)
                    {
                        graphics16_color_index |= 0x01;
                    }

                    index <<= 1;
                }

                m_graphics16_colors[graphics16_color_index] = m_colors[i];
            }

            m_6845_registers = new byte[MC6845RegisterCount];
            m_port_palette   = new byte[PaletterColorCount];

            m_tvc.Ports.AddPortWriter(0x00, PortWrite00H);

            m_tvc.Ports.AddPortWriter(0x06, PortWrite06H);

            m_tvc.Ports.AddPortWriter(0x60, PortWrite60H);
            m_tvc.Ports.AddPortWriter(0x61, PortWrite61H);
            m_tvc.Ports.AddPortWriter(0x62, PortWrite62H);
            m_tvc.Ports.AddPortWriter(0x63, PortWrite63H);

            m_tvc.Ports.AddPortWriter(0x70, PortWrite70H);
            m_tvc.Ports.AddPortWriter(0x71, PortWrite71H);

            m_frame_ready_event_param = new FrameReadyEventparam();

            AllocateFrameBuffer(640, 576);
        }