diff --git a/glide3x/h5/glide3/src/distate.c b/glide3x/h5/glide3/src/distate.c index d612b41..342f553 100644 --- a/glide3x/h5/glide3/src/distate.c +++ b/glide3x/h5/glide3/src/distate.c @@ -2040,22 +2040,14 @@ _grValidateState() /* Check for alpha test optimization */ if (NOTVALID(alphaMode) || NOTVALID(fbzMode) || NOTVALID(stencilMode)) { updateAlphaMode = FXTRUE; - // KoolSmoky - need to recheck this. - /*if((LOADARG(grAlphaBlendFunction, rgb_sf) == GR_BLEND_SRC_ALPHA) && + if((LOADARG(grAlphaBlendFunction, rgb_sf) == GR_BLEND_SRC_ALPHA) && (LOADARG(grAlphaBlendFunction, rgb_df) == GR_BLEND_ONE_MINUS_SRC_ALPHA) && (LOADARG(grAlphaBlendFunction, rgb_op) == GR_BLEND_OP_ADD) && (LOADARG(grDepthMask, enable) == FXFALSE) && ((LOADARG(grStencilMask, value) == 0x00) || - (gc->state.grEnableArgs.stencil_mode == FXFALSE))) {*/ - if(LOADARG(grDepthMask, enable) == FXFALSE) { - if((LOADARG(grAlphaBlendFunction, rgb_df) == GR_BLEND_ONE_MINUS_SRC_ALPHA) && - (LOADARG(grAlphaBlendFunction, rgb_op) == GR_BLEND_OP_ADD) && - (LOADARG(grDepthMask, enable) == FXFALSE) && - ((LOADARG(grStencilMask, value) == 0x00) || - (gc->state.grEnableArgs.stencil_mode == FXFALSE))) { - //GDBG_PRINTF("Alpha test optimization enabled.\n"); - alphaTestOptimization = FXTRUE; - } + (gc->state.grEnableArgs.stencil_mode == FXFALSE))) { + //GDBG_PRINTF("Alpha test optimization enabled.\n"); + alphaTestOptimization = FXTRUE; } else { //GDBG_PRINTF("Alpha test optimization disabled.\n"); } diff --git a/glide3x/h5/glide3/src/fxglide.h b/glide3x/h5/glide3/src/fxglide.h index 12d4edd..c7873b7 100644 --- a/glide3x/h5/glide3/src/fxglide.h +++ b/glide3x/h5/glide3/src/fxglide.h @@ -2157,12 +2157,13 @@ struct _GlideRoot_s { } deviceArchProcs; #if (GLIDE_PLATFORM & GLIDE_OS_WIN32) -#define OS_WIN32_95 0 -#define OS_WIN32_98 1 -#define OS_WIN32_ME 2 -#define OS_WIN32_NT4 3 -#define OS_WIN32_2K 4 -#define OS_WIN32_XP 5 +#define OS_UNKNOWN 0 +#define OS_WIN32_95 1 +#define OS_WIN32_98 2 +#define OS_WIN32_ME 3 +#define OS_WIN32_NT4 4 +#define OS_WIN32_2K 5 +#define OS_WIN32_XP 6 FxI32 OS; #endif diff --git a/glide3x/h5/glide3/src/gpci.c b/glide3x/h5/glide3/src/gpci.c index cfaa90b..49bd03a 100644 --- a/glide3x/h5/glide3/src/gpci.c +++ b/glide3x/h5/glide3/src/gpci.c @@ -1300,12 +1300,72 @@ _GlideInitEnvironment(void) } #endif -#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) - _GlideRoot.OS = hwcGetOS(); -#endif - /* dBorca - play safe */ grErrorSetCallback(_grErrorDefaultCallback); + +#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) + /* Detect Windows OS before we detect glide devices */ + { + OSVERSIONINFO ovi; + + ovi.dwOSVersionInfoSize = sizeof ( ovi ); + GetVersionEx ( &ovi ); + + /*XXX: [koolsmoky] I'm too lazy, set default as winxp */ + _GlideRoot.OS = OS_WIN32_XP/*OS_UNKNOWN*/; + + if (ovi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { + if(ovi.dwMajorVersion == 4) { + if (ovi.dwMinorVersion >= 90) { + _GlideRoot.OS = OS_WIN32_ME; + } else if (ovi.dwMinorVersion >= 10) { + _GlideRoot.OS = OS_WIN32_98; + } else { + _GlideRoot.OS = OS_WIN32_95; + } + } + } else if (ovi.dwPlatformId == VER_PLATFORM_WIN32_NT) { + if(ovi.dwMajorVersion == 4) { + _GlideRoot.OS = OS_WIN32_NT4; + } else if(ovi.dwMajorVersion == 5) { + if (ovi.dwMinorVersion >= 1) { + _GlideRoot.OS = OS_WIN32_XP; + } else { + _GlideRoot.OS = OS_WIN32_2K; + } + } else { + _GlideRoot.OS = OS_WIN32_XP; + } + } + + switch(_GlideRoot.OS) { + case OS_WIN32_95: + GDBG_INFO(80, "Detected Windows 95\n"); + break; + case OS_WIN32_98: + GDBG_INFO(80, "Detected Windows 98\n"); + break; + case OS_WIN32_ME: + GDBG_INFO(80, "Detected Windows Me\n"); + break; + case OS_WIN32_NT4: + GDBG_INFO(80, "Detected Windows NT 4.0\n"); + break; + case OS_WIN32_2K: + GDBG_INFO(80, "Detected Windows 2000\n"); + break; + case OS_WIN32_XP: + GDBG_INFO(80, "Detected Windows XP\n"); + break; + default: + GDBG_INFO(80, "Unknown Windows\n"); + break; + } + + /* Pass retrieved OS info into minihwc */ + hwcSetOSInfo(&_GlideRoot.OS); + } +#endif /* KoolSmoky - detect glide devices before we check for user ** environment tweaks. @@ -1336,6 +1396,22 @@ _GlideInitEnvironment(void) /* Get CPU Info */ _cpuid (&_GlideRoot.CPUType); + /* Check for vendor specific optimization cases */ + GDBG_INFO( 0," CPU Vendor: %s\n", _GlideRoot.CPUType.v_name); + GDBG_INFO(80," MMX Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_MMX ? 'Y' : 'N'); + GDBG_INFO(80," SSE Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_SSE ? 'Y' : 'N'); + GDBG_INFO(80," SSE2 Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_SSE2 ? 'Y' : 'N'); + GDBG_INFO(80," 3DNow Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_3DNOW ? 'Y' : 'N'); + GDBG_INFO(80," MMX+ Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_MMXPLUS ? 'Y' : 'N'); + GDBG_INFO(80,"3DNow+ Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_3DNOWPLUS ? 'Y' : 'N'); + + /* No CPU Extensions Allowed */ + if (GLIDE_GETENV("FX_GLIDE_NO_CPU_EXTENSIONS", 0L)) + { + _GlideRoot.CPUType.feature = _GlideRoot.CPUType.os_support = 0; + GDBG_INFO(0,"CPU Extensions disabled\n"); + } + #if !DRI_BUILD /* Pass retrieved CPU Info into minihwc */ hwcSetCPUInfo(&_GlideRoot.CPUType); @@ -1356,22 +1432,6 @@ _GlideInitEnvironment(void) _GlideRoot.deviceArchProcs.nullVertexListProcs = _vertexListProcs[ARRAY_LAST(_vertexListProcs)]; _GlideRoot.deviceArchProcs.nullTexProcs = _texDownloadProcs + ARRAY_LAST(_texDownloadProcs); #undef ARRAY_LAST - - /* Check for vendor specific optimization cases */ - GDBG_INFO( 0," CPU Vendor: %s\n", _GlideRoot.CPUType.v_name); - GDBG_INFO(80," MMX Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_MMX ? 'Y' : 'N'); - GDBG_INFO(80," SSE Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_SSE ? 'Y' : 'N'); - GDBG_INFO(80," SSE2 Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_SSE2 ? 'Y' : 'N'); - GDBG_INFO(80," 3DNow Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_3DNOW ? 'Y' : 'N'); - GDBG_INFO(80," MMX+ Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_MMXPLUS ? 'Y' : 'N'); - GDBG_INFO(80,"3DNow+ Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_3DNOWPLUS ? 'Y' : 'N'); - - /* No CPU Extensions Allowed */ - if (GLIDE_GETENV("FX_GLIDE_NO_CPU_EXTENSIONS", 0L)) - { - _GlideRoot.CPUType.feature = _GlideRoot.CPUType.os_support = 0; - GDBG_INFO(0,"CPU Extensions disabled\n"); - } #if GL_MMX if (_GlideRoot.CPUType.os_support & _CPU_FEATURE_MMX) { /* check for MMX feature */ diff --git a/glide3x/h5/glide3/src/gsfc.c b/glide3x/h5/glide3/src/gsfc.c index 81f61fc..ac9638f 100644 --- a/glide3x/h5/glide3/src/gsfc.c +++ b/glide3x/h5/glide3/src/gsfc.c @@ -419,8 +419,8 @@ GR_EXT_ENTRY(grSurfaceReleaseContext, void , (GrContext_t ctx) ) */ #if (GLIDE_OS & GLIDE_OS_WIN32) if ((_GlideRoot.OS == OS_WIN32_95) || - (_GlideRoot.OS == OS_WIN32_98) || - (_GlideRoot.OS == OS_WIN32_ME)) + (_GlideRoot.OS == OS_WIN32_98) || + (_GlideRoot.OS == OS_WIN32_ME)) hwcUnmapMemory9x ( gc->bInfo ); #endif diff --git a/glide3x/h5/minihwc/minihwc.c b/glide3x/h5/minihwc/minihwc.c index 0d3da2d..793de52 100644 --- a/glide3x/h5/minihwc/minihwc.c +++ b/glide3x/h5/minihwc/minihwc.c @@ -982,6 +982,10 @@ static __inline int min (int x, int y) static hwcInfo hInfo; static _p_info *CPUInfo = NULL; +#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) +static FxI32 *OSInfo = NULL; +#endif + #define MAX_ERROR_SIZE 1024 static char errorString[MAX_ERROR_SIZE]; static FxU32 fenceVar; @@ -1090,9 +1094,7 @@ static hwcBoardInfo *curBI = NULL; static void getRegPath(char *regpath) { - FxI32 OS = hwcGetOS(); - - if (OS == OS_WIN32_NT4) { + if ((FxI32)OSInfo == OS_WIN32_NT4) { HKEY hKey; DWORD type ; char strval[256]; @@ -1120,7 +1122,7 @@ getRegPath(char *regpath) } RegCloseKey(hKey); } - } else if ((OS == OS_WIN32_2K) || (OS == OS_WIN32_XP)) { + } else if (((FxI32)OSInfo == OS_WIN32_2K) || ((FxI32)OSInfo == OS_WIN32_XP)) { HKEY hKey; GDBG_INFO(80, "getRegPath: get registry path on 2K/XP\n"); @@ -1198,7 +1200,6 @@ hwcInit(FxU32 vID, FxU32 dID) EnumDisplayDevicesProc enumDisplayDevicesProc; int monitor; int num_monitor = 0; /* number of 3Dfx devices */ - FxI32 OS = hwcGetOS(); GDBG_INFO(80, "%s\n", FN_NAME); errorString[0] = '\0'; @@ -1365,7 +1366,7 @@ hwcInit(FxU32 vID, FxU32 dID) data[num_monitor].dc = hdc; strcpy(data[num_monitor].DeviceName, DispDev.DeviceName); - if ( (OS == OS_WIN32_98) || (OS == OS_WIN32_ME) ) { + if ( ((FxI32)OSInfo == OS_WIN32_98) || ((FxI32)OSInfo == OS_WIN32_ME) ) { strcpy(data[num_monitor].RegPath, DispDev.DeviceKey); } else { char *pdest; @@ -4232,9 +4233,9 @@ hwcInitVideo(hwcBoardInfo *bInfo, FxBool tiled, FxVideoTimingInfo *vidTiming, #ifdef HWC_EXT_INIT hwcExtRequest_t ctxReq; hwcExtResult_t ctxRes; - FxI32 OS = hwcGetOS(); #endif FxI32 useV56KdacFix = 2; + FxI32 overlaymode; { FxU32 refresh; @@ -4532,69 +4533,56 @@ hwcInitVideo(hwcBoardInfo *bInfo, FxBool tiled, FxVideoTimingInfo *vidTiming, } #endif - /* NOTE: This may over 'blur' the output, but we enable filtering if in fsaa even for 32bit color. */ - if (NULL == GETENV("SSTH3_OVERLAYMODE")) { - /* We are in optimal mode by default */ + overlaymode = 1; /* We are in optimal mode by default */ + if (GETENV("SSTH3_OVERLAYMODE")) { + overlaymode = atoi(GETENV("SSTH3_OVERLAYMODE")); + } + /* NOTE: Not sure if the hw handles this, but we enable filtering if in fsaa even for 32bit color. */ + switch(overlaymode) { + default: + case 1: /* Optimal */ if(bpp == 32 && !((useV56KdacFix != 0) && IS_NAPALM(bInfo->pciInfo.deviceID) && (bInfo->h3pixelSample > 1))) { /* 32bpp and not fsaa */ vidProcCfg |= SST_OVERLAY_FILTER_POINT; + } else + /* make sure that if 2x video mode or SLI mode is enabled, we use the 4x1 filter. */ + if((bInfo->vidInfo.xRes >= 1024) || /* can't tell the difference for resolutions larger than 1024*768 */ + (vidProcCfg & SST_VIDEO_2X_MODE_EN) || + (IS_NAPALM(bInfo->pciInfo.deviceID) && (bInfo->h3nwaySli > 1))) { + vidProcCfg |= SST_OVERLAY_FILTER_4X4; } else { - /* make sure that if 2x video mode or SLI mode is enabled, we use the 4x1 filter. */ - if((bInfo->vidInfo.xRes >= 1024) || /* can't tell the difference for resolutions larger than 1024*768 */ - (vidProcCfg & SST_VIDEO_2X_MODE_EN) || - (IS_NAPALM(bInfo->pciInfo.deviceID) && (bInfo->h3nwaySli > 1))) { - vidProcCfg |= SST_OVERLAY_FILTER_4X4; - } else { - vidProcCfg |= SST_OVERLAY_FILTER_2X2; - } + vidProcCfg |= SST_OVERLAY_FILTER_2X2; } - } else { - switch(atoi(GETENV("SSTH3_OVERLAYMODE"))) { - default: - case 1: /* Optimal */ - if(bpp == 32 && - !((useV56KdacFix != 0) && IS_NAPALM(bInfo->pciInfo.deviceID) && (bInfo->h3pixelSample > 1))) { - vidProcCfg |= SST_OVERLAY_FILTER_POINT; - } else { - if((bInfo->vidInfo.xRes >= 1024) || - (vidProcCfg & SST_VIDEO_2X_MODE_EN) || - (IS_NAPALM(bInfo->pciInfo.deviceID) && (bInfo->h3nwaySli > 1))) { - vidProcCfg |= SST_OVERLAY_FILTER_4X4; - } else { - vidProcCfg |= SST_OVERLAY_FILTER_2X2; - } - } - break; - case 2: /* Normal */ - if(bpp == 32) { - vidProcCfg |= SST_OVERLAY_FILTER_POINT; - } else { - vidProcCfg |= SST_OVERLAY_FILTER_4X4; - } - break; - case 3: /* High */ - if(bpp == 32) { - vidProcCfg |= SST_OVERLAY_FILTER_POINT; - } else - if((vidProcCfg & SST_VIDEO_2X_MODE_EN) || - (IS_NAPALM(bInfo->pciInfo.deviceID) && (bInfo->h3nwaySli > 1))) { - vidProcCfg |= SST_OVERLAY_FILTER_4X4; - } else { - vidProcCfg |= SST_OVERLAY_FILTER_2X2; - } - break; - case 4: /* Very High */ - if(bpp == 32) { - vidProcCfg |= SST_OVERLAY_FILTER_POINT; - } else { - vidProcCfg |= SST_OVERLAY_FILTER_BILINEAR; - } - break; - case -1: /* Disabled */ - /* use this just in case */ + break; + case 2: /* Normal */ + if(bpp == 32) { vidProcCfg |= SST_OVERLAY_FILTER_POINT; - break; + } else { + vidProcCfg |= SST_OVERLAY_FILTER_4X4; } + break; + case 3: /* High */ + if(bpp == 32) { + vidProcCfg |= SST_OVERLAY_FILTER_POINT; + } else + if((vidProcCfg & SST_VIDEO_2X_MODE_EN) || + (IS_NAPALM(bInfo->pciInfo.deviceID) && (bInfo->h3nwaySli > 1))) { + vidProcCfg |= SST_OVERLAY_FILTER_4X4; + } else { + vidProcCfg |= SST_OVERLAY_FILTER_2X2; + } + break; + case 4: /* Very High */ + if(bpp == 32) { + vidProcCfg |= SST_OVERLAY_FILTER_POINT; + } else { + vidProcCfg |= SST_OVERLAY_FILTER_BILINEAR; + } + break; + case -1: /* Disabled */ + /* use this just in case */ + vidProcCfg |= SST_OVERLAY_FILTER_POINT; + break; } if (bInfo->h3pixelSample < 2) @@ -4621,7 +4609,8 @@ hwcInitVideo(hwcBoardInfo *bInfo, FxBool tiled, FxVideoTimingInfo *vidTiming, /* set up desktop pixel format */ /* Also turn off all filtering, as it seems to screw up multi-chip configs. */ - vidProcCfg &= ~(SST_DESKTOP_PIXEL_FORMAT|SST_OVERLAY_FILTER_MODE); + /* [koolsmoky] Hmm, there seem to be no screw ups... */ + vidProcCfg &= ~(SST_DESKTOP_PIXEL_FORMAT/*|SST_OVERLAY_FILTER_MODE*/); switch(vidProcCfg & SST_OVERLAY_PIXEL_FORMAT) { case SST_OVERLAY_PIXEL_RGB32U: vidProcCfg |= SST_DESKTOP_PIXEL_RGB32; @@ -4774,9 +4763,9 @@ hwcInitVideo(hwcBoardInfo *bInfo, FxBool tiled, FxVideoTimingInfo *vidTiming, GDBG_INFO(80, FN_NAME ": HWC_MINIVDD_HACK\n"); - if ((OS == OS_WIN32_NT4) || - (OS == OS_WIN32_2K) || - (OS == OS_WIN32_XP)) + if (((FxI32)OSInfo == OS_WIN32_NT4) || + ((FxI32)OSInfo == OS_WIN32_2K) || + ((FxI32)OSInfo == OS_WIN32_XP)) { FxU32 retVal = FXTRUE; ctxReq.which = HWCEXT_SLI_AA_REQUEST ; @@ -5439,10 +5428,6 @@ hwcRestoreVideo(hwcBoardInfo *bInfo) { #define FN_NAME "hwcRestoreVideo" -#ifdef HWC_EXT_INIT - FxI32 OS = hwcGetOS(); -#endif - #if 1 hwcIdleHardwareWithTimeout(bInfo); @@ -5467,9 +5452,9 @@ hwcRestoreVideo(hwcBoardInfo *bInfo) GDBG_INFO(80, FN_NAME ": HWC_MINIVDD_HACK\n"); - if ((OS == OS_WIN32_NT4) || - (OS == OS_WIN32_2K) || - (OS == OS_WIN32_XP)) + if (((FxI32)OSInfo == OS_WIN32_NT4) || + ((FxI32)OSInfo == OS_WIN32_2K) || + ((FxI32)OSInfo == OS_WIN32_XP)) { hwcExtRequest_t ctxReq ; hwcExtResult_t ctxRes ; @@ -8961,7 +8946,6 @@ hwcShareContextData(hwcBoardInfo *bInfo, FxU32 **data) #if HWC_EXT_INIT hwcExtRequest_t ctxReq; hwcExtResult_t ctxRes; - FxI32 OS = hwcGetOS(); GDBG_INFO(80, FN_NAME "\n"); @@ -8969,9 +8953,9 @@ hwcShareContextData(hwcBoardInfo *bInfo, FxU32 **data) if( HWCEXT_PROTOCOL( bInfo->boardNum ) ) { - if ((OS == OS_WIN32_NT4) || - (OS == OS_WIN32_2K) || - (OS == OS_WIN32_XP)) + if (((FxI32)OSInfo == OS_WIN32_NT4) || + ((FxI32)OSInfo == OS_WIN32_2K) || + ((FxI32)OSInfo == OS_WIN32_XP)) { hwcExtRequest_t ctxReq; @@ -9139,12 +9123,11 @@ hwcUnmapMemory() FxU32 i; hwcExtRequest_t ctxReq; hwcExtResult_t ctxRes; - FxI32 OS = hwcGetOS(); if ( curBI ) { - if ((OS == OS_WIN32_NT4) || - (OS == OS_WIN32_2K) || - (OS == OS_WIN32_XP)) + if (((FxI32)OSInfo == OS_WIN32_NT4) || + ((FxI32)OSInfo == OS_WIN32_2K) || + ((FxI32)OSInfo == OS_WIN32_XP)) { hwcExtRequest_t ctxReq; @@ -9677,70 +9660,15 @@ static FxI32 valarray[SST_SIPROCESS_OSC_CNTR + 1]; // is this how you do an } void -hwcSetCPUInfo(_p_info *CPUInfo_) +hwcSetCPUInfo(_p_info *cpuInfo) { - CPUInfo = CPUInfo_; + CPUInfo = cpuInfo; } /* hwcSetCPUInfo */ -#ifdef __WIN32__ -FxI32 -hwcGetOS() +#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) +void +hwcSetOSInfo(FxI32 *osInfo) { - static FxI32 OS = -1; - OSVERSIONINFO ovi; - - if ( OS != -1 ) return OS; - - ovi.dwOSVersionInfoSize = sizeof ( ovi ); - GetVersionEx ( &ovi ); - - if (ovi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { - if(ovi.dwMajorVersion == 4) { - if (ovi.dwMinorVersion >= 90) { - OS = OS_WIN32_ME; - } else if (ovi.dwMinorVersion >= 10) { - OS = OS_WIN32_98; - } else { - OS = OS_WIN32_95; - } - } - } else if (ovi.dwPlatformId == VER_PLATFORM_WIN32_NT) { - if(ovi.dwMajorVersion == 4) { - OS = OS_WIN32_NT4; - } else if(ovi.dwMajorVersion >= 5) { - if (ovi.dwMinorVersion >= 1) { - OS = OS_WIN32_XP; - } else { - OS = OS_WIN32_2K; - } - } - } - - switch(OS) { - case OS_WIN32_95: - GDBG_INFO(80, "hwcGetOS: OS = win95\n"); - break; - case OS_WIN32_98: - GDBG_INFO(80, "hwcGetOS: OS = win98\n"); - break; - case OS_WIN32_ME: - GDBG_INFO(80, "hwcGetOS: OS = winme\n"); - break; - case OS_WIN32_NT4: - GDBG_INFO(80, "hwcGetOS: OS = winnt4.0\n"); - break; - case OS_WIN32_2K: - GDBG_INFO(80, "hwcGetOS: OS = win2k\n"); - break; - case OS_WIN32_XP: - GDBG_INFO(80, "hwcGetOS: OS = winxp\n"); - break; - default: - GDBG_INFO(80, "hwcGetOS: OS = unknown\n"); - break; - } - - return OS; -#undef FN_NAME -} /* hwcGetOS */ -#endif /* __WIN32__ */ + OSInfo = osInfo; +} /* hwcSetOSInfo */ +#endif diff --git a/glide3x/h5/minihwc/minihwc.h b/glide3x/h5/minihwc/minihwc.h index 1eb8dde..1ad0d93 100644 --- a/glide3x/h5/minihwc/minihwc.h +++ b/glide3x/h5/minihwc/minihwc.h @@ -617,16 +617,6 @@ hwcCheckMemSize(hwcBoardInfo *bInfo, FxU32 xres, FxU32 yres, FxU32 nColBuffers, FxU32 nAuxBuffers, FxBool tiled); #ifdef __WIN32__ - -#define OS_WIN32_95 0 -#define OS_WIN32_98 1 -#define OS_WIN32_ME 2 -#define OS_WIN32_NT4 3 -#define OS_WIN32_2K 4 -#define OS_WIN32_XP 5 -FxI32 -hwcGetOS(); - FxU32 hwcAllocWinContext(hwcBoardInfo* bInfo); @@ -765,6 +755,18 @@ extern void hwcAAReadRegion(hwcBoardInfo *bInfo, FxU32 colBufNum, void hwcCalcSipValue(hwcBoardInfo *bInfo, FxU32 chipNum, FxU32 *nandChain, FxU32 *norChain); -void hwcSetCPUInfo (_p_info *CPUInfo_); +void hwcSetCPUInfo (_p_info *cpuInfo); + +#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) +/* values must be in sync with fxglide.h */ +#define OS_UNKNOWN 0 +#define OS_WIN32_95 1 +#define OS_WIN32_98 2 +#define OS_WIN32_ME 3 +#define OS_WIN32_NT4 4 +#define OS_WIN32_2K 5 +#define OS_WIN32_XP 6 +void hwcSetOSInfo(FxI32 *osInfo); +#endif #endif /* MINIHWC_H not defined */ diff --git a/glide3x/h5/minihwc/win_mode.c b/glide3x/h5/minihwc/win_mode.c index 88ba489..7368651 100644 --- a/glide3x/h5/minihwc/win_mode.c +++ b/glide3x/h5/minihwc/win_mode.c @@ -229,16 +229,16 @@ setVideoMode( void *hwnd, int xRes, int yRes, int h3pixelSize, int refresh, void /* KoolSmoky - Hack for win95. make a disp struct if we don't get anything * from EnumDisplaySettings. */ - if ((devMode.dmBitsPerPel < 8UL) || (devMode.dmBitsPerPel > 32UL) || (hwcGetOS() == OS_WIN32_95)) { + if ((devMode.dmBitsPerPel < 8UL) || (devMode.dmBitsPerPel > 32UL)) { devMode.dmSize = sizeof(DEVMODE); devMode.dmPelsWidth = GetSystemMetrics(SM_CXSCREEN); devMode.dmPelsHeight = GetSystemMetrics(SM_CYSCREEN); devMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; - { + { HDC hdc = GetDC(NULL); /* grab DC of desktop */ devMode.dmBitsPerPel = (DWORD)GetDeviceCaps(hdc, BITSPIXEL) ; ReleaseDC(NULL, hdc); - } + } } GDBG_INFO(80, "DeviceName: %s Display mode: %dx%dx%dbpp!\n", devicename, devMode.dmPelsWidth, devMode.dmPelsHeight, devMode.dmBitsPerPel);