bool vsync_switchmode(int hz) { int changed_height = changed_prefs.gfx_monitor.gfx_size.height; struct amigadisplay *ad = &adisplays; if (hz >= 55) hz = 60; else hz = 50; if (hz == 50 && currVSyncRate == 60) { // Switch from NTSC -> PAL switch (changed_height) { case 200: changed_height = 240; break; case 216: changed_height = 262; break; case 240: changed_height = 270; break; case 256: changed_height = 270; break; case 262: changed_height = 270; break; case 270: changed_height = 270; break; } } else if (hz == 60 && currVSyncRate == 50) { // Switch from PAL -> NTSC switch (changed_height) { case 200: changed_height = 200; break; case 216: changed_height = 200; break; case 240: changed_height = 200; break; case 256: changed_height = 216; break; case 262: changed_height = 216; break; case 270: changed_height = 240; break; } } if(hz != currVSyncRate) { currVSyncRate = hz; black_screen_now(); fpscounter_reset(); time_per_frame = time_for_host_hz_frames / (hz); } if(!ad->picasso_on && !ad->picasso_requested_on) changed_prefs.gfx_monitor.gfx_size.height = changed_height; return true; }
bool target_graphics_buffer_update(void) { bool rate_changed = false; if (currprefs.gfx_monitor.gfx_size.height != changed_prefs.gfx_monitor.gfx_size.height) { update_display(&changed_prefs); rate_changed = true; } if (rate_changed) { black_screen_now(); fpscounter_reset(); time_per_frame = time_for_host_hz_frames / (currprefs.chipset_refreshrate); } reset_sync(); return true; }
bool target_graphics_buffer_update (void) { bool rate_changed = SetVSyncRate(currprefs.chipset_refreshrate); if(currprefs.gfx_size.height != changed_prefs.gfx_size.height) { update_display(&changed_prefs); rate_changed = true; } if(rate_changed) { black_screen_now(); fpscounter_reset(); time_per_frame = 1000 * 1000 / (currprefs.chipset_refreshrate); } return true; }