@@ -112,15 +112,16 @@ namespace RTE {
112
112
113
113
void FrameMan::ValidateResolution (unsigned short &resX, unsigned short &resY) {
114
114
if (resX * m_ResMultiplier > m_ScreenResX || resY * m_ResMultiplier > m_ScreenResY) {
115
- allegro_message (" Resolution too high to fit display, overriding to fit!\n Resolution multiplier will be disabled!" );
116
- resX = m_NewResX = m_ScreenResX;
117
- resY = m_NewResY = m_ScreenResY;
118
- m_ResMultiplier = m_NewResMultiplier = 1 ;
115
+ allegro_message (" Resolution too high to fit display, overriding to fit!" );
116
+ resX = m_NewResX = m_ScreenResX / m_ResMultiplier;
117
+ resY = m_NewResY = m_ScreenResY / m_ResMultiplier;
119
118
} else if (resX * m_ResMultiplier == 1366 && resY * m_ResMultiplier == 768 ) {
120
119
allegro_message (" Unfortunately, 1366x768 resolution is not supported by Cortex Command's graphics API. 1360x768 will be used instead!" );
121
- resX = m_NewResX = 1360 ;
122
- resY = m_NewResX = 768 ;
123
- m_ResMultiplier = m_NewResMultiplier = 1 ;
120
+ resX = m_NewResX = 1360 / m_ResMultiplier;
121
+ resY = m_NewResY = 768 / m_ResMultiplier;
122
+ } else if ((resX * m_ResMultiplier) % 4 > 0 ) {
123
+ allegro_message (" Resolution width that is not divisible by 4 is not supported!\n Overriding to closest valid width!" );
124
+ resX = m_NewResX = std::floor (resX / 4 ) * 4 ;
124
125
} else {
125
126
float currentAspectRatio = static_cast <float >(resX) / static_cast <float >(resY);
126
127
if (currentAspectRatio < 1 || currentAspectRatio > 4 ) {
0 commit comments