|
|
|
@ -243,17 +243,22 @@ static void GetVideoModes(void) {
|
|
|
|
|
memcpy(_resolutions, default_resolutions, sizeof(default_resolutions));
|
|
|
|
|
_num_resolutions = sizeof(default_resolutions) / (sizeof(uint16)*2);
|
|
|
|
|
} else {
|
|
|
|
|
int n = 0, w = 0, h = 0;
|
|
|
|
|
int n = 0;
|
|
|
|
|
for(i = 0; modes[i]; i++) {
|
|
|
|
|
if(w == modes[i]->w && h == modes[i]->h) continue; // don't show same resolutions multiple times
|
|
|
|
|
w = modes[i]->w;
|
|
|
|
|
h = modes[i]->h;
|
|
|
|
|
int w = modes[i]->w;
|
|
|
|
|
int h = modes[i]->h;
|
|
|
|
|
if (IS_INT_INSIDE(w, 640, MAX_SCREEN_WIDTH+1) &&
|
|
|
|
|
IS_INT_INSIDE(h, 480, MAX_SCREEN_HEIGHT+1) &&
|
|
|
|
|
w%8 == 0 && h%8 == 0) { // disable screen resolutions which are not multiples of 8
|
|
|
|
|
_resolutions[n][0] = w;
|
|
|
|
|
_resolutions[n][1] = h;
|
|
|
|
|
if (++n == sizeof(_resolutions) / (sizeof(uint16)*2)) break;
|
|
|
|
|
int j;
|
|
|
|
|
for (j = 0; j < n; ++j)
|
|
|
|
|
if (_resolutions[j][0] == w && _resolutions[j][1] == h)
|
|
|
|
|
break;
|
|
|
|
|
if (j == n) {
|
|
|
|
|
_resolutions[n][0] = w;
|
|
|
|
|
_resolutions[n][1] = h;
|
|
|
|
|
if (++n == sizeof(_resolutions) / (sizeof(uint16)*2)) break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_num_resolutions = n;
|
|
|
|
|