Capture visual info into a structure before rendering
[mercenary-reloaded.git] / src / mercenary / main.c
index adc53aa..11eceb1 100644 (file)
@@ -238,7 +238,7 @@ illegal_parameter:
 static void special_event(int event)
 {
        if (render_improved)
-               render_improved_event(event);
+               render_capture_event(event);
 }
 
 static void main_loop(void)
@@ -277,9 +277,9 @@ printf("frame rate: %.6f\n", 1.0 / vbl_duration);
                /* STEP 1: let the CPU render/process the game, also improve rendering via OpenGL, if enabled */
                /* don't render if we still delay */
                if (!render_delay) {
-                       /* start rendering for improved graphics */
+                       /* start capturing for improved graphics */
                        if (render_improved)
-                               render_start(config_fov, config_improve_extend_roads, config_debug_transparent);
+                               render_capture_start(config_fov, config_improve_extend_roads, config_debug_transparent);
 
                        /* execute until the rendered image is ready (wait for VBL) */
                        cycle_count = 0;
@@ -289,6 +289,9 @@ printf("frame rate: %.6f\n", 1.0 / vbl_duration);
                                if (event != STOP_AT_WAIT_VBL)
                                        special_event(event);
                        } while (event != STOP_AT_WAIT_VBL);
+                       /* stop capturing for improved graphics */
+                       if (render_improved)
+                               render_capture_stop();
                        /* copy palette */
                        palette_address = mercenary_palette_view();
                        for (i = 0; i < 16; i++)
@@ -297,6 +300,9 @@ printf("frame rate: %.6f\n", 1.0 / vbl_duration);
                        if (config_amiga_speed)
                                render_delay = (double)cycle_count / CPU_SPEED;
                }
+               /* render improved graphics */
+               if (render_improved)
+                       render_all_items();
 
                /* STEP 2: transfer legacy image (or just benson) in memory to OpenGL texture */
                if (had_first_irq) {
@@ -307,10 +313,8 @@ printf("frame rate: %.6f\n", 1.0 / vbl_duration);
                                emul_video(image, memory, palette, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_DIWSTART, chipreg, 0, BENSON_AT_LINE, double_pixel_size);
                }
                /* render benson on improved rendering, if enabled */
-               if (render_improved) {
-                       render_finish();
+               if (render_improved)
                        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);
-               }
                /* setup viewport for legacy image and render image, if enabled */
                if (render_legacy) {
                        opengl_viewport_legacy(debug_opengl);