Skip to content
This repository was archived by the owner on Jan 5, 2024. It is now read-only.

Commit a952724

Browse files
committed
Add resolution width divisible by 4 check to FrameMan::ValidateResolution - anything not divisible by 4 isn't supported and ends up with a pink screen
1 parent 859c15b commit a952724

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

Managers/FrameMan.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,16 @@ namespace RTE {
112112

113113
void FrameMan::ValidateResolution(unsigned short &resX, unsigned short &resY) {
114114
if (resX * m_ResMultiplier > m_ScreenResX || resY * m_ResMultiplier > m_ScreenResY) {
115-
allegro_message("Resolution too high to fit display, overriding to fit!\nResolution 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;
119118
} else if (resX * m_ResMultiplier == 1366 && resY * m_ResMultiplier == 768) {
120119
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!\nOverriding to closest valid width!");
124+
resX = m_NewResX = std::floor(resX / 4) * 4;
124125
} else {
125126
float currentAspectRatio = static_cast<float>(resX) / static_cast<float>(resY);
126127
if (currentAspectRatio < 1 || currentAspectRatio > 4) {

0 commit comments

Comments
 (0)