diff --git a/source/engine.cpp b/source/engine.cpp index d845451..59dc28d 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -74,7 +74,16 @@ bool Engine::initialize(int width, int height, int zoom, bool fullscreen, AppMod // VALIDACIÓN 2: Calcular max_zoom y ajustar si es necesario int max_zoom = std::min(screen_w / logical_width, screen_h / logical_height); - if (window_zoom > max_zoom) { + if (max_zoom < 1) { + // Resolució lògica no cap en pantalla ni a zoom=1: escalar-la per fer-la càpida + float scale = std::min(static_cast(screen_w) / logical_width, + static_cast(screen_h) / logical_height); + logical_width = std::max(320, static_cast(logical_width * scale)); + logical_height = std::max(240, static_cast(logical_height * scale)); + window_zoom = 1; + std::cout << "Advertencia: Resolución no cabe en pantalla. Ajustando a " + << logical_width << "x" << logical_height << "\n"; + } else if (window_zoom > max_zoom) { std::cout << "Advertencia: Zoom " << window_zoom << " excede máximo " << max_zoom << " para " << logical_width << "x" << logical_height << ". Ajustando a " << max_zoom << "\n"; window_zoom = max_zoom;