diff --git a/polymer/eduke32/build/include/baselayer.h b/polymer/eduke32/build/include/baselayer.h index c7e9b959b..ec52ee76a 100644 --- a/polymer/eduke32/build/include/baselayer.h +++ b/polymer/eduke32/build/include/baselayer.h @@ -188,13 +188,13 @@ void showframe(int32_t); int32_t setpalette(int32_t start, int32_t num); //int32_t getpalette(int32_t start, int32_t num, char *dapal); int32_t setgamma(void); -extern double vid_gamma, vid_contrast, vid_brightness; +extern float vid_gamma, vid_contrast, vid_brightness; -#define DEFAULT_GAMMA 1.0 -#define DEFAULT_CONTRAST 1.0 -#define DEFAULT_BRIGHTNESS 0.0 +#define DEFAULT_GAMMA 1.0f +#define DEFAULT_CONTRAST 1.0f +#define DEFAULT_BRIGHTNESS 0.0f -#define GAMMA_CALC ((int32_t)(min(max((double)((vid_gamma-1.0)*10.0),0),15))) +#define GAMMA_CALC ((int32_t)(min(max((float)((vid_gamma-1.0f)*10.0f),0.f),15.f))) //int32_t switchrendermethod(int32_t,int32_t); // 0 = software, 1 = opengl | bool = reinit diff --git a/polymer/eduke32/build/include/compat.h b/polymer/eduke32/build/include/compat.h index 7cfdb8cbd..f2c3ba02b 100644 --- a/polymer/eduke32/build/include/compat.h +++ b/polymer/eduke32/build/include/compat.h @@ -177,6 +177,14 @@ static inline long lround(double num) #define nearbyintf rintf #endif +#if defined(__arm__) +#define Bsqrt __sqrt +#define Bsqrtf __sqrtf +#else +#define Bsqrt sqrt +#define Bsqrtf sqrtf +#endif + #ifndef NULL # define NULL ((void *)0) #endif diff --git a/polymer/eduke32/build/src/baselayer.c b/polymer/eduke32/build/src/baselayer.c index 494753903..26022f0d3 100644 --- a/polymer/eduke32/build/src/baselayer.c +++ b/polymer/eduke32/build/src/baselayer.c @@ -422,9 +422,9 @@ int32_t baselayer_init(void) { "r_tror_nomaskpass", "enable/disable additional pass in TROR software rendering", (void *)&r_tror_nomaskpass, CVAR_BOOL, 0, 1 }, #endif { "r_windowpositioning", "enable/disable window position memory", (void *) &windowpos, CVAR_BOOL, 0, 1 }, - { "vid_gamma","adjusts gamma component of gamma ramp",(void *) &vid_gamma, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 }, - { "vid_contrast","adjusts contrast component of gamma ramp",(void *) &vid_contrast, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 }, - { "vid_brightness","adjusts brightness component of gamma ramp",(void *) &vid_brightness, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 }, + { "vid_gamma","adjusts gamma component of gamma ramp",(void *) &vid_gamma, CVAR_FLOAT|CVAR_FUNCPTR, 0.f, 10.f }, + { "vid_contrast","adjusts contrast component of gamma ramp",(void *) &vid_contrast, CVAR_FLOAT|CVAR_FUNCPTR, 0.f, 10.f }, + { "vid_brightness","adjusts brightness component of gamma ramp",(void *) &vid_brightness, CVAR_FLOAT|CVAR_FUNCPTR, 0.f, 10.f }, #ifdef DEBUGGINGAIDS { "debug1","debug counter",(void *) &debug1, CVAR_FLOAT, -100000, 100000 }, { "debug2","debug counter",(void *) &debug2, CVAR_FLOAT, -100000, 100000 }, diff --git a/polymer/eduke32/build/src/build.c b/polymer/eduke32/build/src/build.c index 1e9885e86..893070f61 100644 --- a/polymer/eduke32/build/src/build.c +++ b/polymer/eduke32/build/src/build.c @@ -91,7 +91,7 @@ int32_t synctics = 0, lockclock = 0; // those ones save the respective 3d video vars while in 2d mode // so that exiting from mapster32 in 2d mode saves the correct ones -double vid_gamma_3d=-1, vid_contrast_3d=-1, vid_brightness_3d=-1; +float vid_gamma_3d=-1, vid_contrast_3d=-1, vid_brightness_3d=-1; int32_t xdim2d = 640, ydim2d = 480, xdimgame = 640, ydimgame = 480, bppgame = 8; int32_t forcesetup = 1; diff --git a/polymer/eduke32/build/src/engine.c b/polymer/eduke32/build/src/engine.c index dc5f95024..fc96b5a61 100644 --- a/polymer/eduke32/build/src/engine.c +++ b/polymer/eduke32/build/src/engine.c @@ -59,7 +59,10 @@ L_State g_engState; # define CLASSIC_NONPOW2_YSIZE_WALLS #endif +#if !defined(__arm__) && !defined(GEKKO) #define HIGH_PRECISION_SPRITE +#endif + #define MULTI_COLUMN_VLINE //#define DEBUG_TILESIZY_512 //#define DEBUG_TILEOFFSETS @@ -156,9 +159,9 @@ uint32_t r_screenxy = 0; int32_t curbrightness = 0, gammabrightness = 0; -double vid_gamma = DEFAULT_GAMMA; -double vid_contrast = DEFAULT_CONTRAST; -double vid_brightness = DEFAULT_BRIGHTNESS; +float vid_gamma = DEFAULT_GAMMA; +float vid_contrast = DEFAULT_CONTRAST; +float vid_brightness = DEFAULT_BRIGHTNESS; //Textured Map variables static char globalpolytype; @@ -2428,8 +2431,9 @@ static int32_t bakframeplace[4], bakxsiz[4], bakysiz[4]; static int32_t bakwindowx1[4], bakwindowy1[4]; static int32_t bakwindowx2[4], bakwindowy2[4]; #ifdef USE_OPENGL -static int32_t bakrendmode,baktile; +static int32_t bakrendmode; #endif +static int32_t baktile; char apptitle[256] = "Build Engine"; @@ -2512,9 +2516,7 @@ int32_t engine_addtsprite(int16_t z, int16_t sectnum) } } else -#ifdef YAX_ENABLE if (yax_nomaskpass==0) -#endif { sortcnt = &yax_spritesortcnt[yax_globallev]; if (*sortcnt >= MAXSPRITESONSCREEN) @@ -5579,32 +5581,6 @@ static void setup_globals_sprite1(const spritetype *tspr, const sectortype *sec, // // drawsprite (internal) // -static void drawsprite_opengl(int32_t snum) -{ - //============================================================================= //POLYMOST BEGINS -#ifdef USE_OPENGL - if (getrendermode() == REND_POLYMOST) - { - polymost_drawsprite(snum); - bglDisable(GL_POLYGON_OFFSET_FILL); - } -# ifdef POLYMER - else if (getrendermode() == REND_POLYMER) - { - bglEnable(GL_ALPHA_TEST); - bglEnable(GL_BLEND); - - polymer_drawsprite(snum); - - bglDisable(GL_BLEND); - bglDisable(GL_ALPHA_TEST); - } -# endif -#else - UNREFERENCED_PARAMETER(snum); -#endif - //============================================================================= //POLYMOST ENDS -} static uint8_t falpha_to_blend(float alpha, int32_t *cstatptr, int32_t transbit1, int32_t transbit2) @@ -6614,10 +6590,27 @@ draw_as_face_sprite: static void drawsprite(int32_t snum) { - if (getrendermode() >= REND_POLYMOST) - drawsprite_opengl(snum); - else + switch (getrendermode()) + { + case REND_CLASSIC: drawsprite_classic(snum); + return; +#ifdef USE_OPENGL + case REND_POLYMOST: + polymost_drawsprite(snum); + bglDisable(GL_POLYGON_OFFSET_FILL); + return; +# ifdef POLYMER + case REND_POLYMER: + bglEnable(GL_ALPHA_TEST); + bglEnable(GL_BLEND); + polymer_drawsprite(snum); + bglDisable(GL_BLEND); + bglDisable(GL_ALPHA_TEST); + return; +# endif +#endif + } } @@ -7851,8 +7844,8 @@ static void dosetaspect(void) int32_t k, x, xinc; no_radarang2 = 0; - oxdimen = xdimen; oviewingrange = viewingrange; + oxdimen = xdimen; xinc = mulscale32(viewingrange*320,xdimenrecip); x = (640<<16)-mulscale1(xinc,xdimen); @@ -7877,9 +7870,9 @@ static void dosetaspect(void) } { - EDUKE32_STATIC_ASSERT((uint64_t)MAXXDIM*(ARRAY_SIZE(distrecip)-1) <= INT32_MAX); + EDUKE32_STATIC_ASSERT((uint64_t) MAXXDIM*(ARRAY_SIZE(distrecip)-1) <= INT32_MAX); - for (i=1; i<(int32_t)ARRAY_SIZE(distrecip); i++) + for (i=1; i<(int32_t) ARRAY_SIZE(distrecip); i++) distrecip[i] = (xdimen * i)>>20; } @@ -8862,7 +8855,7 @@ int32_t initengine(void) return 1; #ifdef USE_OPENGL - if (!hicfirstinit) hicinit(); + if (!hicinitcounter) hicinit(); if (!mdinited) mdinit(); #endif @@ -9357,10 +9350,10 @@ static inline int32_t sameside(const _equation *eq, const _point2d *p1, if (sign1 > 0) { //OSD_Printf("SAME SIDE !\n"); - return (1); + return 1; } //OSD_Printf("OPPOSITE SIDE !\n"); - return (0); + return 0; } // x1, y1: in/out @@ -9409,6 +9402,7 @@ void drawmasks(void) #ifdef USE_OPENGL const int32_t modelp = (usemodels && tile2model[tspriteptr[i]->picnum].modelid >= 0); #endif + if (yp > (4<<8)) { const int32_t xp = dmulscale6(ys,cosglobalang,-xs,singlobalang); @@ -15265,14 +15259,19 @@ void setviewtotile(int16_t tilenume, int32_t xsiz, int32_t ysiz) bakframeplace[setviewcnt] = frameplace; frameplace = waloff[tilenume]; bakwindowx1[setviewcnt] = windowx1; bakwindowy1[setviewcnt] = windowy1; bakwindowx2[setviewcnt] = windowx2; bakwindowy2[setviewcnt] = windowy2; -#ifdef USE_OPENGL + if (setviewcnt == 0) { +#ifdef USE_OPENGL bakrendmode = rendmode; +#endif baktile = tilenume; } - rendmode = REND_CLASSIC;//2; + +#ifdef USE_OPENGL + rendmode = REND_CLASSIC; #endif + copybufbyte(&startumost[windowx1],&bakumost[windowx1],(windowx2-windowx1+1)*sizeof(bakumost[0])); copybufbyte(&startdmost[windowx1],&bakdmost[windowx1],(windowx2-windowx1+1)*sizeof(bakdmost[0])); setviewcnt++; @@ -17628,7 +17627,7 @@ static inline uint32_t hash_getcode(const char *s) return h; } -void hash_add(hashtable_t *t, const char *s, int32_t key, int32_t replace) +void hash_add(hashtable_t *t, const char *s, intptr_t key, int32_t replace) { hashitem_t *cur, *prev=NULL; int32_t code; @@ -17708,7 +17707,7 @@ void hash_delete(hashtable_t *t, const char *s) while ((cur = cur->next)); } -int32_t hash_find(const hashtable_t *t, const char *s) +intptr_t hash_find(const hashtable_t *t, const char *s) { hashitem_t *cur; @@ -17728,7 +17727,7 @@ int32_t hash_find(const hashtable_t *t, const char *s) return -1; } -int32_t hash_findcase(const hashtable_t *t, const char *s) +intptr_t hash_findcase(const hashtable_t *t, const char *s) { hashitem_t *cur; diff --git a/polymer/eduke32/build/src/engine_priv.h b/polymer/eduke32/build/src/engine_priv.h index fcc9e9966..8e583d5e4 100644 --- a/polymer/eduke32/build/src/engine_priv.h +++ b/polymer/eduke32/build/src/engine_priv.h @@ -72,7 +72,7 @@ extern int16_t numscans, numbunches; #ifdef USE_OPENGL // For GL_EXP2 fog: -#define FOGSCALE 0.0000768 +#define FOGSCALE 0.0000768f extern palette_t palookupfog[MAXPALOOKUPS]; void calc_and_apply_fog(int32_t tile, int32_t shade, int32_t vis, int32_t pal); diff --git a/polymer/eduke32/build/src/sdlayer.c b/polymer/eduke32/build/src/sdlayer.c index 71292720a..c48db7aa1 100644 --- a/polymer/eduke32/build/src/sdlayer.c +++ b/polymer/eduke32/build/src/sdlayer.c @@ -2142,16 +2142,16 @@ int32_t getpalette(int32_t start, int32_t num, char *dapal) // int32_t setgamma(void) { - //return 0; + //return 0; int32_t i; uint16_t gammaTable[768]; - float gamma = max(0.1f,min(4.f,vid_gamma)); - float contrast = max(0.1f,min(3.f,vid_contrast)); - float bright = max(-0.8f,min(0.8f,vid_brightness)); + float gamma = max(0.1f, min(4.f, vid_gamma)); + float contrast = max(0.1f, min(3.f, vid_contrast)); + float bright = max(-0.8f, min(0.8f, vid_brightness)); - double invgamma = 1 / gamma; - double norm = pow(255., invgamma - 1); + float invgamma = 1.f / gamma; + float norm = powf(255.f, invgamma - 1.f); if (novideo) return 0; @@ -2162,21 +2162,23 @@ int32_t setgamma(void) for (i = 0; i < 256; i++) { - double val = i * contrast - (contrast - 1) * 127; - if (gamma != 1) val = pow(val, invgamma) / norm; - val += bright * 128; + float val = i * contrast - (contrast - 1.f) * 127.f; + if (gamma != 1.f) + val = powf(val, invgamma) / norm; - gammaTable[i] = gammaTable[i + 256] = gammaTable[i + 512] = (uint16_t)max(0.f,(double)min(0xffff,val*256)); + val += bright * 128.f; + + gammaTable[i] = gammaTable[i + 256] = gammaTable[i + 512] = (uint16_t) max(0.f, min(65535.f, val*256.f)); } #if SDL_MAJOR_VERSION==1 - i = SDL_SetGammaRamp(&gammaTable[0],&gammaTable[256],&gammaTable[512]); + i = SDL_SetGammaRamp(&gammaTable[0], &gammaTable[256], &gammaTable[512]); if (i != -1) #else i = INT32_MIN; + if (sdl_window) - i = SDL_SetWindowGammaRamp( - sdl_window,&gammaTable[0],&gammaTable[256],&gammaTable[512]); + i = SDL_SetWindowGammaRamp(sdl_window, &gammaTable[0], &gammaTable[256], &gammaTable[512]); if (i < 0) {