X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=mercenary-reloaded.git;a=blobdiff_plain;f=src%2Fmercenary%2Fmain.c;h=cd0bd6a7d10b904347443641d217a433e9f84b48;hp=27935dd569b22969c1616247996e6ca9c15150fe;hb=0ed3707078ad60ad63cb4ce6f88e6c7ba5a78bd6;hpb=f1a737946d0dbfaabb382086c30b7811c81f32d5 diff --git a/src/mercenary/main.c b/src/mercenary/main.c index 27935dd..cd0bd6a 100644 --- a/src/mercenary/main.c +++ b/src/mercenary/main.c @@ -298,6 +298,7 @@ static void main_loop(void) { 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; @@ -337,10 +338,8 @@ static void main_loop(void) /* 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 */ @@ -378,7 +377,9 @@ static void main_loop(void) } /* 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); @@ -394,11 +395,11 @@ static void main_loop(void) /* 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); @@ -409,7 +410,8 @@ static void main_loop(void) } } /* 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)