Просмотр исходного кода

fixed bug: [SMS][Ratio] ZOOMED and CROPPED ratio modes do not behave as expected, https://github.com/FunKey-Project/picodrive-irixxxx/issues/6

Vincent-FK 3 лет назад
Родитель
Сommit
5ae8e960d1
1 измененных файлов с 9 добавлено и 3 удалено
  1. 9 3
      platform/common/plat_sdl.c

+ 9 - 3
platform/common/plat_sdl.c

@@ -1576,6 +1576,7 @@ void plat_video_flip(void)
 		  prev_aspect_ratio = aspect_ratio;
 		  need_screen_cleared = 0;
 		}
+    uint16_t hres_max;
 
 		switch(aspect_ratio){
 		case ASPECT_RATIOS_TYPE_STRETCHED:
@@ -1595,18 +1596,23 @@ void plat_video_flip(void)
 			}
 			break;
 		case ASPECT_RATIOS_TYPE_MANUAL:
+      hres_max= MIN(RES_HW_SCREEN_VERTICAL, game_surface->h);
 			;uint32_t h_scaled = MIN(game_surface->h*RES_HW_SCREEN_HORIZONTAL/game_surface->w,
 						 RES_HW_SCREEN_VERTICAL);
-			uint32_t h_zoomed = MIN(h_scaled + aspect_ratio_factor_percent*(RES_HW_SCREEN_VERTICAL - h_scaled)/100,
+			uint32_t h_zoomed = MIN(h_scaled + aspect_ratio_factor_percent*(hres_max - h_scaled)/100,
 						RES_HW_SCREEN_VERTICAL);
 			flip_NNOptimized_LeftRightUpDownBilinear_Optimized8(game_surface, virtual_hw_screen,
 									    MAX(game_surface->w*h_zoomed/game_surface->h, RES_HW_SCREEN_HORIZONTAL),
 									    MIN(h_zoomed, RES_HW_SCREEN_VERTICAL));
 			break;
 		case ASPECT_RATIOS_TYPE_CROPPED:
-			flip_NNOptimized_AllowOutOfScreen(game_surface, virtual_hw_screen,
+			/*flip_NNOptimized_AllowOutOfScreen(game_surface, virtual_hw_screen,
 							  MAX(game_surface->w*RES_HW_SCREEN_VERTICAL/game_surface->h, RES_HW_SCREEN_HORIZONTAL),
-							  RES_HW_SCREEN_VERTICAL);
+							  RES_HW_SCREEN_VERTICAL);*/
+        hres_max= MIN(RES_HW_SCREEN_VERTICAL, game_surface->h);
+        flip_NNOptimized_AllowOutOfScreen(game_surface, virtual_hw_screen,
+                MAX(game_surface->w*hres_max/game_surface->h, RES_HW_SCREEN_HORIZONTAL),
+                hres_max);
 			break;
 		case ASPECT_RATIOS_TYPE_SCALED:
 			flip_NNOptimized_LeftRightUpDownBilinear_Optimized8(game_surface, virtual_hw_screen,