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); }
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); }