diff --git a/polymer/eduke32/build/src/palette.c b/polymer/eduke32/build/src/palette.c index 121de7365..68d9fb6a8 100644 --- a/polymer/eduke32/build/src/palette.c +++ b/polymer/eduke32/build/src/palette.c @@ -596,7 +596,7 @@ void removebasepal(int32_t const id) // 16: don't reset palfade* void setbrightness(char dabrightness, uint8_t dapalid, uint8_t flags) { - int32_t i, j, nohwgamma; + int32_t i, j; const uint8_t *dapal; #ifdef USE_OPENGL @@ -624,8 +624,8 @@ void setbrightness(char dabrightness, uint8_t dapalid, uint8_t flags) // vid_gamma = 1.0 + ((float)curbrightness / 10.0); } - nohwgamma = setgamma(); - j = nohwgamma ? curbrightness : 0; + setgamma(); + j = !gammabrightness ? curbrightness : 0; for (i=0; i<256; i++) { @@ -669,7 +669,7 @@ void setbrightness(char dabrightness, uint8_t dapalid, uint8_t flags) // XXX: no-HW-gamma OpenGL platforms will exhibit bad performance with // simultaneous basepal and tint changes? - const int32_t doinvalidate = (paldidchange || (palsumdidchange && nohwgamma)); + const int32_t doinvalidate = (paldidchange || (palsumdidchange && !gammabrightness)); if (!(flags&2) && doinvalidate) gltexinvalidatetype(INVALIDATE_ALL); @@ -693,9 +693,8 @@ palette_t getpal(int32_t col) { if (!gammabrightness) { - palette_t p ={ britable[curbrightness][curpalette[col].b], - britable[curbrightness][curpalette[col].g], - britable[curbrightness][curpalette[col].r], 0 }; + palette_t const p = { britable[curbrightness][curpalette[col].r], britable[curbrightness][curpalette[col].g], + britable[curbrightness][curpalette[col].b], 0 }; return p; } diff --git a/polymer/eduke32/build/src/sdlayer.c b/polymer/eduke32/build/src/sdlayer.c index ae3dc289b..1c8f6c8d0 100644 --- a/polymer/eduke32/build/src/sdlayer.c +++ b/polymer/eduke32/build/src/sdlayer.c @@ -1877,8 +1877,18 @@ int32_t setgamma(void) if (i < 0) { #ifndef __ANDROID__ // Don't do this check, it is really supported, TODO +/* if (i != INT32_MIN) initprintf("Unable to set gamma: SDL_SetWindowGammaRamp failed: %s\n", SDL_GetError()); +*/ + +#if SDL_MAJOR_VERSION == 1 + SDL_SetGammaRamp(&sysgamma[0][0], &sysgamma[1][0], &sysgamma[2][0]); +#else + if (sdl_window) + SDL_SetWindowGammaRamp(sdl_window, &sysgamma[0][0], &sysgamma[1][0], &sysgamma[2][0]); +#endif + gammabrightness = 0; #endif } else @@ -1887,6 +1897,8 @@ int32_t setgamma(void) lastvidgcb[0] = gamma; lastvidgcb[1] = contrast; lastvidgcb[2] = bright; + + gammabrightness = 1; } return i; diff --git a/polymer/eduke32/source/menus.c b/polymer/eduke32/source/menus.c index def89cefe..3a6e8702a 100644 --- a/polymer/eduke32/source/menus.c +++ b/polymer/eduke32/source/menus.c @@ -471,6 +471,8 @@ static MenuEntry_t ME_VIDEOSETUP_APPLY = MAKE_MENUENTRY( "Apply Changes", &MF_Re static MenuLink_t MEO_DISPLAYSETUP_COLORCORR = { MENU_COLCORR, MA_Advance, }; static MenuEntry_t ME_DISPLAYSETUP_COLORCORR = MAKE_MENUENTRY( "Color Correction", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_COLORCORR, Link ); + + static MenuOption_t MEO_DISPLAYSETUP_PIXELDOUBLING = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OnOff, &ud.detail ); static MenuEntry_t ME_DISPLAYSETUP_PIXELDOUBLING = MAKE_MENUENTRY( "Pixel Doubling:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_PIXELDOUBLING, Option ); @@ -976,7 +978,7 @@ static MenuEntry_t *MEL_RENDERERSETUP_POLYMER [] ={ #ifdef DROIDMENU static MenuRangeFloat_t MEO_COLCORR_GAMMA = MAKE_MENURANGE( &vid_gamma, &MF_Bluefont, 1.f, 2.5f, 0.f, 39, 1 ); #else -static MenuRangeFloat_t MEO_COLCORR_GAMMA = MAKE_MENURANGE( &vid_gamma, &MF_Bluefont, 0.2f, 4.f, 0.f, 39, 1 ); +static MenuRangeFloat_t MEO_COLCORR_GAMMA = MAKE_MENURANGE( &vid_gamma, &MF_Bluefont, 0.3f, 4.f, 0.f, 38, 1 ); #endif static MenuEntry_t ME_COLCORR_GAMMA = MAKE_MENUENTRY( "Gamma:", &MF_Redfont, &MEF_ColorCorrect, &MEO_COLCORR_GAMMA, RangeFloat ); static MenuRangeFloat_t MEO_COLCORR_CONTRAST = MAKE_MENURANGE( &vid_contrast, &MF_Bluefont, 0.1f, 2.7f, 0.f, 53, 1 ); @@ -1772,6 +1774,12 @@ static void M_PreMenu(MenuID_t cm) MEO_SAVE[i].font = (g_oldverSavegame[i] && MEO_SAVE[i].editfield == NULL) ? &MF_MinifontDarkGray : &MF_MinifontRed; break; + case MENU_COLCORR: + case MENU_COLCORR_INGAME: + MenuEntry_DisableOnCondition(&ME_COLCORR_CONTRAST, !gammabrightness); + MenuEntry_DisableOnCondition(&ME_COLCORR_BRIGHTNESS, !gammabrightness); + break; + case MENU_CHEATS: case MENU_CHEATENTRY: case MENU_CHEAT_WARP: