Correctly render all-white screen (explosion flickering)
[mercenary-reloaded.git] / src / mercenary / main.c
index 0bd216d..ac1a81e 100644 (file)
@@ -664,6 +664,7 @@ static void main_loop(void)
        double render_delay = 0.0;
        uint32_t palette_address;
        uint16_t palette[16];
+       int all_white = 0;
 #ifdef HAVE_OVR
        int eye;
 #endif
@@ -764,9 +765,15 @@ static void main_loop(void)
                                 * if no item list is available, for legacy rendering
                                 */
 #ifdef HAVE_OVR
-                               rc = render_all_items((config_amiga_speed) ? 1.0 : frame_time, 1);
+                               if (all_white)
+                                       rc = render_all_white(1);
+                               else
+                                       rc = render_all_items((config_amiga_speed) ? 1.0 : frame_time, 1);
 #else
-                               rc = render_all_items((config_amiga_speed) ? 1.0 : frame_time, 0);
+                               if (all_white)
+                                       rc = render_all_white(0);
+                               else
+                                       rc = render_all_items((config_amiga_speed) ? 1.0 : frame_time, 0);
 #endif
                                if (rc)
                                        goto goto_legacy;
@@ -859,7 +866,7 @@ static void main_loop(void)
                                /* transfer benson without game view
                                 * because we only got benson refreshed during VBL IRQ
                                 */
-                               emul_video(image, memory, palette, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_DIWSTART, chipreg, BENSON_AT_LINE, IMAGE_HEIGHT, double_pixel_size);
+                               all_white = emul_video(image, memory, palette, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_DIWSTART, chipreg, BENSON_AT_LINE, IMAGE_HEIGHT, double_pixel_size);
                                /* render sound to sound buffer
                                 * buffer pointer read and write is atomic, so no locking required!
                                 */