/*** * \brief To be called after monitor parameters are set */ public void start() { // FIXME: once moved to netlist this may no longer be necessary. // Only copies constructor init m_last_sync_val = 0.0; m_col = new rgb_t(0, 0, 0); m_last_x = 0; m_last_y = 0; m_last_sync_time = (fixedfreq_monitor_state_time_type)0; m_line_time = (fixedfreq_monitor_state_time_type)0; m_last_hsync_time = (fixedfreq_monitor_state_time_type)0; m_last_vsync_time = (fixedfreq_monitor_state_time_type)0; /* sync separator */ m_vsync_filter = 0.0; m_sig_vsync = 0; m_sig_composite = 0; m_sig_field = 0; // htotal = m_desc.m_hbackporch; // vtotal = m_desc.m_vbackporch; /* sync separator */ //m_vsync_threshold = (exp(- 3.0/(3.0+3.0))) - exp(-1.0); //printf("trigger %f with len %f\n", m_vsync_threshold, 1e6 / m_vsync_filter_timeconst); // Minimum frame period to be passed to video system ? m_fragments.clear(); m_intf.vsync_end_cb(m_desc.clock_period() * m_desc.vtotal() * m_desc.htotal()); }
// device-level overrides protected override void device_config_complete() { if (!m_divideo.has_screen()) { return; } if (m_divideo.screen().refresh_attoseconds() == 0) { m_divideo.screen().set_raw(m_monitor.m_monitor_clock, (u16)m_monitor.htotal(), 0, (u16)m_monitor.htotal(), (u16)m_monitor.vtotal(), 0, (u16)m_monitor.vtotal()); } if (!m_divideo.screen().has_screen_update()) { m_divideo.screen().set_screen_update(screen_update); } LOG("config complete\n"); }