{
double frame_step, frame_time = 0.0, frame_render = 1;
int had_first_irq = 0;
+ int render_improved_rc;
static uint32_t current_time, last_time = 0, diff;
int i, rc;
int space, length;
/* be sure to clean all capture history, so we don't get glichtes when turning on improved rendering again */
render_capture_reset();
}
- if (render_improved) {
+ if (render_improved)
opengl_viewport_improved(debug_opengl, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, benson_size);
- opengl_copy_last();
- }
/* STEP 1: let the CPU render/process the game, also improve rendering via OpenGL, if enabled */
/* amgia speed: don't render if we still delay */
/* non amiga speed: render if we need a new frame */
}
/* render improved graphics, interpolate, if required */
if (render_improved)
- render_all_items((config_amiga_speed) ? 1.0 : frame_time);
+ render_improved_rc = render_all_items((config_amiga_speed) ? 1.0 : frame_time);
+ else
+ render_improved_rc = -1;
/* advance frame time, if we are not in help view */
if (!(had_first_irq && help_view)) {
//printf("frame rate: %.6f, frame-step=%.5f frame-time=%.5f\n", 1.0 / vbl_duration, frame_step,frame_time);
/* render game view without benson
* because benson is not updated before VBL IRQ, we don't want old image from double buffer
*/
- if (render_legacy)
+ if (render_legacy || render_improved_rc)
emul_video(image, memory, palette, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_DIWSTART, chipreg, 0, BENSON_AT_LINE, double_pixel_size);
}
/* render benson + osd ontop of improved opengl rendering, if enabled */
- if (render_improved) {
+ if (render_improved && render_improved_rc == 0) {
opengl_blit_benson(image, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, benson_size, (double_pixel_size) ? 2 : 1);
if (help_view)
opengl_blit_osd(0, help_osd, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, benson_size, 1.0, 1.0, 0.0, 0.0);
}
}
/* setup viewport for legacy image and render image, if enabled */
- if (render_legacy) {
+ /* also render legacy, if render_improved failed due to not (yet) available items */
+ if (render_legacy || (render_improved && render_improved_rc)) {
opengl_viewport_legacy(debug_opengl);
opengl_blit_legacy(image, config_video_filter);
if (help_view)