diff --git a/2xSAI.cpp b/2xSAI.cpp deleted file mode 100644 index 43211894..00000000 --- a/2xSAI.cpp +++ /dev/null @@ -1,647 +0,0 @@ -#include "Types.h" -#include "GBI.h" - -static inline s16 GetResult1( u32 A, u32 B, u32 C, u32 D, u32 E ) -{ - s16 x = 0; - s16 y = 0; - s16 r = 0; - - if (A == C) x += 1; else if (B == C) y += 1; - if (A == D) x += 1; else if (B == D) y += 1; - if (x <= 1) r += 1; - if (y <= 1) r -= 1; - - return r; -} - -static inline s16 GetResult2( u32 A, u32 B, u32 C, u32 D, u32 E) -{ - s16 x = 0; - s16 y = 0; - s16 r = 0; - - if (A == C) x += 1; else if (B == C) y += 1; - if (A == D) x += 1; else if (B == D) y += 1; - if (x <= 1) r -= 1; - if (y <= 1) r += 1; - - return r; -} - - -static inline s16 GetResult( u32 A, u32 B, u32 C, u32 D ) -{ - s16 x = 0; - s16 y = 0; - s16 r = 0; - - if (A == C) x += 1; else if (B == C) y += 1; - if (A == D) x += 1; else if (B == D) y += 1; - if (x <= 1) r += 1; - if (y <= 1) r -= 1; - - return r; -} - -static inline u16 INTERPOLATE4444( u16 A, u16 B) -{ - if (A != B) - return ((A & 0xEEEE) >> 1) + - ((B & 0xEEEE) >> 1) | - (A & B & 0x1111); - else - return A; -} - -static inline u16 INTERPOLATE5551( u16 A, u16 B) -{ - if (A != B) - return ((A & 0xF7BC) >> 1) + - ((B & 0xF7BC) >> 1) | - (A & B & 0x0843); - else - return A; -} - -static inline u32 INTERPOLATE8888( u32 A, u32 B) -{ - if (A != B) - return ((A & 0xFEFEFEFE) >> 1) + - ((B & 0xFEFEFEFE) >> 1) | - (A & B & 0x01010101); - else - return A; -} - -static inline u16 Q_INTERPOLATE4444( u16 A, u16 B, u16 C, u16 D) -{ - u16 x = ((A & 0xCCCC) >> 2) + - ((B & 0xCCCC) >> 2) + - ((C & 0xCCCC) >> 2) + - ((D & 0xCCCC) >> 2); - u16 y = (((A & 0x3333) + - (B & 0x3333) + - (C & 0x3333) + - (D & 0x3333)) >> 2) & 0x3333; - return x | y; -} - -static inline u16 Q_INTERPOLATE5551( u16 A, u16 B, u16 C, u16 D) -{ - u16 x = ((A & 0xE738) >> 2) + - ((B & 0xE738) >> 2) + - ((C & 0xE738) >> 2) + - ((D & 0xE738) >> 2); - u16 y = (((A & 0x18C6) + - (B & 0x18C6) + - (C & 0x18C6) + - (D & 0x18C6)) >> 2) & 0x18C6; - u16 z = ((A & 0x0001) + - (B & 0x0001) + - (C & 0x0001) + - (D & 0x0001)) > 2 ? 1 : 0; - return x | y | z; -} - -static inline u32 Q_INTERPOLATE8888( u32 A, u32 B, u32 C, u32 D) -{ - u32 x = ((A & 0xFCFCFCFC) >> 2) + - ((B & 0xFCFCFCFC) >> 2) + - ((C & 0xFCFCFCFC) >> 2) + - ((D & 0xFCFCFCFC) >> 2); - u32 y = (((A & 0x03030303) + - (B & 0x03030303) + - (C & 0x03030303) + - (D & 0x03030303)) >> 2) & 0x03030303; - return x | y; -} - -void _2xSaI4444( u16 *srcPtr, u16 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ) -{ - u16 destWidth = width << 1; - u16 destHeight = height << 1; - - u32 colorA, colorB, colorC, colorD, - colorE, colorF, colorG, colorH, - colorI, colorJ, colorK, colorL, - colorM, colorN, colorO, colorP; - u32 product, product1, product2; - - s16 row0, row1, row2, row3; - s16 col0, col1, col2, col3; - - for (u16 y = 0; y < height; y++) - { - if (y > 0) - row0 = -width; - else - row0 = clampT ? 0 : (height - 1) * width; - - row1 = 0; - - if (y < height - 1) - { - row2 = width; - - if (y < height - 2) - row3 = width << 1; - else - row3 = clampT ? width : -y * width; - } - else - { - row2 = clampT ? 0 : -y * width; - row3 = clampT ? 0 : (1 - y) * width; - } - - for (u16 x = 0; x < width; x++) - { - if (x > 0) - col0 = -1; - else - col0 = clampS ? 0 : width - 1; - - col1 = 0; - - if (x < width - 1) - { - col2 = 1; - - if (x < width - 2) - col3 = 2; - else - col3 = clampS ? 1 : -x; - } - else - { - col2 = clampS ? 0 : -x; - col3 = clampS ? 0 : 1 - x; - } - -//--------------------------------------- -// Map of the pixels: I|E F|J -// G|A B|K -// H|C D|L -// M|N O|P - colorI = *(srcPtr + col0 + row0); - colorE = *(srcPtr + col1 + row0); - colorF = *(srcPtr + col2 + row0); - colorJ = *(srcPtr + col3 + row0); - - colorG = *(srcPtr + col0 + row1); - colorA = *(srcPtr + col1 + row1); - colorB = *(srcPtr + col2 + row1); - colorK = *(srcPtr + col3 + row1); - - colorH = *(srcPtr + col0 + row2); - colorC = *(srcPtr + col1 + row2); - colorD = *(srcPtr + col2 + row2); - colorL = *(srcPtr + col3 + row2); - - colorM = *(srcPtr + col0 + row3); - colorN = *(srcPtr + col1 + row3); - colorO = *(srcPtr + col2 + row3); - colorP = *(srcPtr + col3 + row3); - - if ((colorA == colorD) && (colorB != colorC)) - { - if ( ((colorA == colorE) && (colorB == colorL)) || - ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) ) - product = colorA; - else - product = INTERPOLATE4444(colorA, colorB); - - if (((colorA == colorG) && (colorC == colorO)) || - ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) ) - product1 = colorA; - else - product1 = INTERPOLATE4444(colorA, colorC); - - product2 = colorA; - } - else if ((colorB == colorC) && (colorA != colorD)) - { - if (((colorB == colorF) && (colorA == colorH)) || - ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) ) - product = colorB; - else - product = INTERPOLATE4444(colorA, colorB); - - if (((colorC == colorH) && (colorA == colorF)) || - ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) ) - product1 = colorC; - else - product1 = INTERPOLATE4444(colorA, colorC); - product2 = colorB; - } - else if ((colorA == colorD) && (colorB == colorC)) - { - if (colorA == colorB) - { - product = colorA; - product1 = colorA; - product2 = colorA; - } - else - { - s16 r = 0; - product1 = INTERPOLATE4444(colorA, colorC); - product = INTERPOLATE4444(colorA, colorB); - - r += GetResult1 (colorA, colorB, colorG, colorE, colorI); - r += GetResult2 (colorB, colorA, colorK, colorF, colorJ); - r += GetResult2 (colorB, colorA, colorH, colorN, colorM); - r += GetResult1 (colorA, colorB, colorL, colorO, colorP); - - if (r > 0) - product2 = colorA; - else if (r < 0) - product2 = colorB; - else - product2 = Q_INTERPOLATE4444(colorA, colorB, colorC, colorD); - } - } - else - { - product2 = Q_INTERPOLATE4444(colorA, colorB, colorC, colorD); - - if ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) - product = colorA; - else if ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) - product = colorB; - else - product = INTERPOLATE4444(colorA, colorB); - - if ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) - product1 = colorA; - else if ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) - product1 = colorC; - else - product1 = INTERPOLATE4444(colorA, colorC); - } - - destPtr[0] = colorA; - destPtr[1] = product; - destPtr[destWidth] = product1; - destPtr[destWidth + 1] = product2; - - srcPtr++; - destPtr += 2; - } - destPtr += destWidth; - } -} - -void _2xSaI5551( u16 *srcPtr, u16 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ) -{ - u16 destWidth = width << 1; - u16 destHeight = height << 1; - - u32 colorA, colorB, colorC, colorD, - colorE, colorF, colorG, colorH, - colorI, colorJ, colorK, colorL, - colorM, colorN, colorO, colorP; - u32 product, product1, product2; - - s16 row0, row1, row2, row3; - s16 col0, col1, col2, col3; - - for (u16 y = 0; y < height; y++) - { - if (y > 0) - row0 = -width; - else - row0 = clampT ? 0 : (height - 1) * width; - - row1 = 0; - - if (y < height - 1) - { - row2 = width; - - if (y < height - 2) - row3 = width << 1; - else - row3 = clampT ? width : -y * width; - } - else - { - row2 = clampT ? 0 : -y * width; - row3 = clampT ? 0 : (1 - y) * width; - } - - for (u16 x = 0; x < width; x++) - { - if (x > 0) - col0 = -1; - else - col0 = clampS ? 0 : width - 1; - - col1 = 0; - - if (x < width - 1) - { - col2 = 1; - - if (x < width - 2) - col3 = 2; - else - col3 = clampS ? 1 : -x; - } - else - { - col2 = clampS ? 0 : -x; - col3 = clampS ? 0 : 1 - x; - } - -//--------------------------------------- -// Map of the pixels: I|E F|J -// G|A B|K -// H|C D|L -// M|N O|P - colorI = *(srcPtr + col0 + row0); - colorE = *(srcPtr + col1 + row0); - colorF = *(srcPtr + col2 + row0); - colorJ = *(srcPtr + col3 + row0); - - colorG = *(srcPtr + col0 + row1); - colorA = *(srcPtr + col1 + row1); - colorB = *(srcPtr + col2 + row1); - colorK = *(srcPtr + col3 + row1); - - colorH = *(srcPtr + col0 + row2); - colorC = *(srcPtr + col1 + row2); - colorD = *(srcPtr + col2 + row2); - colorL = *(srcPtr + col3 + row2); - - colorM = *(srcPtr + col0 + row3); - colorN = *(srcPtr + col1 + row3); - colorO = *(srcPtr + col2 + row3); - colorP = *(srcPtr + col3 + row3); - - if ((colorA == colorD) && (colorB != colorC)) - { - if ( ((colorA == colorE) && (colorB == colorL)) || - ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) ) - product = colorA; - else - product = INTERPOLATE5551(colorA, colorB); - - if (((colorA == colorG) && (colorC == colorO)) || - ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) ) - product1 = colorA; - else - product1 = INTERPOLATE5551(colorA, colorC); - - product2 = colorA; - } - else if ((colorB == colorC) && (colorA != colorD)) - { - if (((colorB == colorF) && (colorA == colorH)) || - ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) ) - product = colorB; - else - product = INTERPOLATE5551(colorA, colorB); - - if (((colorC == colorH) && (colorA == colorF)) || - ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) ) - product1 = colorC; - else - product1 = INTERPOLATE5551(colorA, colorC); - product2 = colorB; - } - else if ((colorA == colorD) && (colorB == colorC)) - { - if (colorA == colorB) - { - product = colorA; - product1 = colorA; - product2 = colorA; - } - else - { - s16 r = 0; - product1 = INTERPOLATE5551(colorA, colorC); - product = INTERPOLATE5551(colorA, colorB); - - r += GetResult1 (colorA, colorB, colorG, colorE, colorI); - r += GetResult2 (colorB, colorA, colorK, colorF, colorJ); - r += GetResult2 (colorB, colorA, colorH, colorN, colorM); - r += GetResult1 (colorA, colorB, colorL, colorO, colorP); - - if (r > 0) - product2 = colorA; - else if (r < 0) - product2 = colorB; - else - product2 = Q_INTERPOLATE5551(colorA, colorB, colorC, colorD); - } - } - else - { - product2 = Q_INTERPOLATE5551(colorA, colorB, colorC, colorD); - - if ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) - product = colorA; - else if ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) - product = colorB; - else - product = INTERPOLATE5551(colorA, colorB); - - if ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) - product1 = colorA; - else if ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) - product1 = colorC; - else - product1 = INTERPOLATE5551(colorA, colorC); - } - - destPtr[0] = colorA; - destPtr[1] = product; - destPtr[destWidth] = product1; - destPtr[destWidth + 1] = product2; - - srcPtr++; - destPtr += 2; - } - destPtr += destWidth; - } -} - -void _2xSaI8888( u32 *srcPtr, u32 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ) -{ - u16 destWidth = width << 1; - u16 destHeight = height << 1; - - u32 colorA, colorB, colorC, colorD, - colorE, colorF, colorG, colorH, - colorI, colorJ, colorK, colorL, - colorM, colorN, colorO, colorP; - u32 product, product1, product2; - - s16 row0, row1, row2, row3; - s16 col0, col1, col2, col3; - - for (u16 y = 0; y < height; y++) - { - if (y > 0) - row0 = -width; - else - row0 = clampT ? 0 : (height - 1) * width; - - row1 = 0; - - if (y < height - 1) - { - row2 = width; - - if (y < height - 2) - row3 = width << 1; - else - row3 = clampT ? width : -y * width; - } - else - { - row2 = clampT ? 0 : -y * width; - row3 = clampT ? 0 : (1 - y) * width; - } - - for (u16 x = 0; x < width; x++) - { - if (x > 0) - col0 = -1; - else - col0 = clampS ? 0 : width - 1; - - col1 = 0; - - if (x < width - 1) - { - col2 = 1; - - if (x < width - 2) - col3 = 2; - else - col3 = clampS ? 1 : -x; - } - else - { - col2 = clampS ? 0 : -x; - col3 = clampS ? 0 : 1 - x; - } - -//--------------------------------------- -// Map of the pixels: I|E F|J -// G|A B|K -// H|C D|L -// M|N O|P - colorI = *(srcPtr + col0 + row0); - colorE = *(srcPtr + col1 + row0); - colorF = *(srcPtr + col2 + row0); - colorJ = *(srcPtr + col3 + row0); - - colorG = *(srcPtr + col0 + row1); - colorA = *(srcPtr + col1 + row1); - colorB = *(srcPtr + col2 + row1); - colorK = *(srcPtr + col3 + row1); - - colorH = *(srcPtr + col0 + row2); - colorC = *(srcPtr + col1 + row2); - colorD = *(srcPtr + col2 + row2); - colorL = *(srcPtr + col3 + row2); - - colorM = *(srcPtr + col0 + row3); - colorN = *(srcPtr + col1 + row3); - colorO = *(srcPtr + col2 + row3); - colorP = *(srcPtr + col3 + row3); - - if ((colorA == colorD) && (colorB != colorC)) - { - if ( ((colorA == colorE) && (colorB == colorL)) || - ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) ) - product = colorA; - else - product = INTERPOLATE8888(colorA, colorB); - - if (((colorA == colorG) && (colorC == colorO)) || - ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) ) - product1 = colorA; - else - product1 = INTERPOLATE8888(colorA, colorC); - - product2 = colorA; - } - else if ((colorB == colorC) && (colorA != colorD)) - { - if (((colorB == colorF) && (colorA == colorH)) || - ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) ) - product = colorB; - else - product = INTERPOLATE8888(colorA, colorB); - - if (((colorC == colorH) && (colorA == colorF)) || - ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) ) - product1 = colorC; - else - product1 = INTERPOLATE8888(colorA, colorC); - product2 = colorB; - } - else if ((colorA == colorD) && (colorB == colorC)) - { - if (colorA == colorB) - { - product = colorA; - product1 = colorA; - product2 = colorA; - } - else - { - s16 r = 0; - product1 = INTERPOLATE8888(colorA, colorC); - product = INTERPOLATE8888(colorA, colorB); - - r += GetResult1 (colorA, colorB, colorG, colorE, colorI); - r += GetResult2 (colorB, colorA, colorK, colorF, colorJ); - r += GetResult2 (colorB, colorA, colorH, colorN, colorM); - r += GetResult1 (colorA, colorB, colorL, colorO, colorP); - - if (r > 0) - product2 = colorA; - else if (r < 0) - product2 = colorB; - else - product2 = Q_INTERPOLATE8888(colorA, colorB, colorC, colorD); - } - } - else - { - product2 = Q_INTERPOLATE8888(colorA, colorB, colorC, colorD); - - if ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) - product = colorA; - else if ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) - product = colorB; - else - product = INTERPOLATE8888(colorA, colorB); - - if ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) - product1 = colorA; - else if ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) - product1 = colorC; - else - product1 = INTERPOLATE8888(colorA, colorC); - } - - destPtr[0] = colorA; - destPtr[1] = product; - destPtr[destWidth] = product1; - destPtr[destWidth + 1] = product2; - - srcPtr++; - destPtr += 2; - } - destPtr += destWidth; - } -} - diff --git a/2xSAI.h b/2xSAI.h deleted file mode 100644 index 1b47cc93..00000000 --- a/2xSAI.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _2XSAI_H -#define _2XSAI_H -#include "Types.h" - -void _2xSaI8888( u32 *srcPtr, u32 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ); -void _2xSaI4444( u16 *srcPtr, u16 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ); -void _2xSaI5551( u16 *srcPtr, u16 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ); -#endif - diff --git a/CMakeLists.txt b/CMakeLists.txt index f54c5c16..84799095 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,7 @@ cmake_minimum_required(VERSION 2.6) project( GLideN64 ) -set(GLideN64_SOURCES - 2xSAI.cpp +set(GLideN64_SOURCES 3DMath.cpp Combiner.cpp CRC.cpp diff --git a/Config.cpp b/Config.cpp index e45cd709..af2437de 100644 --- a/Config.cpp +++ b/Config.cpp @@ -73,8 +73,8 @@ void Config_LoadConfig() RegQueryValueEx( hKey, "Force Bilinear", 0, NULL, (BYTE*)&value, &size ); config.texture.forceBilinear = value ? TRUE : FALSE; - RegQueryValueEx( hKey, "Enable 2xSaI", 0, NULL, (BYTE*)&value, &size ); - config.texture.enable2xSaI = value ? TRUE : FALSE; + RegQueryValueEx( hKey, "Write depth", 0, NULL, (BYTE*)&value, &size ); + config.frameBufferEmulation.copyDepthToRDRAM = value ? TRUE : FALSE; RegQueryValueEx( hKey, "Enable Fog", 0, NULL, (BYTE*)&value, &size ); config.enableFog = value ? TRUE : FALSE; @@ -105,14 +105,13 @@ void Config_LoadConfig() config.texture.forceBilinear = FALSE; cache.maxBytes = 32 * 1048576; config.frameBufferEmulation.enable = FALSE; - config.texture.enable2xSaI = FALSE; + config.frameBufferEmulation.copyDepthToRDRAM = FALSE; config.texture.textureBitDepth = 1; config.enableHWLighting = FALSE; } // manually set frame bufer emulation options config.frameBufferEmulation.copyToRDRAM = FALSE; - config.frameBufferEmulation.copyDepthToRDRAM = FALSE; config.frameBufferEmulation.copyFromRDRAM = FALSE; config.frameBufferEmulation.ignoreCFB = TRUE; config.frameBufferEmulation.N64DepthCompare = FALSE; @@ -136,8 +135,8 @@ void Config_SaveConfig() value = config.texture.forceBilinear ? 1 : 0; RegSetValueEx( hKey, "Force Bilinear", 0, REG_DWORD, (BYTE*)&value, 4 ); - value = config.texture.enable2xSaI ? 1 : 0; - RegSetValueEx( hKey, "Enable 2xSaI", 0, REG_DWORD, (BYTE*)&value, 4 ); + value = config.frameBufferEmulation.copyDepthToRDRAM ? 1 : 0; + RegSetValueEx( hKey, "Write depth", 0, REG_DWORD, (BYTE*)&value, 4 ); value = config.enableFog ? 1 : 0; RegSetValueEx( hKey, "Enable Fog", 0, REG_DWORD, (BYTE*)&value, 4 ); @@ -166,9 +165,8 @@ void Config_ApplyDlgConfig( HWND hWndDlg ) cache.maxBytes = atol( text ) * 1048576; config.texture.forceBilinear = (SendDlgItemMessage( hWndDlg, IDC_FORCEBILINEAR, BM_GETCHECK, NULL, NULL ) == BST_CHECKED); - config.texture.enable2xSaI = (SendDlgItemMessage( hWndDlg, IDC_ENABLE2XSAI, BM_GETCHECK, NULL, NULL ) == BST_CHECKED); + config.frameBufferEmulation.copyDepthToRDRAM = (SendDlgItemMessage( hWndDlg, IDC_ENABLEDEPTHWRITE, BM_GETCHECK, NULL, NULL ) == BST_CHECKED); config.enableFog = (SendDlgItemMessage( hWndDlg, IDC_FOG, BM_GETCHECK, NULL, NULL ) == BST_CHECKED); - //OGL.originAdjust = (OGL.enable2xSaI ? 0.25f : 0.50f); config.video.fullscreenBits = fullscreen.bitDepth[SendDlgItemMessage( hWndDlg, IDC_FULLSCREENBITDEPTH, CB_GETCURSEL, 0, 0 )]; i = SendDlgItemMessage( hWndDlg, IDC_FULLSCREENRES, CB_GETCURSEL, 0, 0 ); @@ -328,7 +326,7 @@ BOOL CALLBACK ConfigDlgProc( HWND hWndDlg, UINT message, WPARAM wParam, LPARAM l SendDlgItemMessage( hWndDlg, IDC_WINDOWEDRES, CB_SETCURSEL, i, 0 ); } } - SendDlgItemMessage( hWndDlg, IDC_ENABLE2XSAI, BM_SETCHECK, config.texture.enable2xSaI ? (LPARAM)BST_CHECKED : (LPARAM)BST_UNCHECKED, NULL ); + SendDlgItemMessage( hWndDlg, IDC_ENABLEDEPTHWRITE, BM_SETCHECK, config.frameBufferEmulation.copyDepthToRDRAM ? (LPARAM)BST_CHECKED : (LPARAM)BST_UNCHECKED, NULL ); // Set forced bilinear check box SendDlgItemMessage( hWndDlg, IDC_FORCEBILINEAR, BM_SETCHECK, config.texture.forceBilinear ? (LPARAM)BST_CHECKED : (LPARAM)BST_UNCHECKED, NULL ); SendDlgItemMessage( hWndDlg, IDC_TEXTUREBPP, CB_ADDSTRING, 0, (LPARAM)"16-bit only (faster)" ); diff --git a/Config.h b/Config.h index 56bf8042..d91ed6d9 100644 --- a/Config.h +++ b/Config.h @@ -18,7 +18,6 @@ struct Config u32 maxAnisotropy; u32 textureBitDepth; u32 forceBilinear; - u32 enable2xSaI; u32 pow2; } texture; diff --git a/Config_mupen.cpp b/Config_mupen.cpp index 0150c5c4..6eba4e63 100644 --- a/Config_mupen.cpp +++ b/Config_mupen.cpp @@ -28,7 +28,6 @@ Option configOptions[] = {"window height", &config.video.windowedHeight, 480}, {"#Texture Settings:", NULL, 0}, {"force bilinear", &config.texture.forceBilinear, 0}, - {"enable 2xSAI", &config.texture.enable2xSaI, 0}, {"cache size", &cache.maxBytes, 64*1048576}, {"texture bit depth", &config.texture.textureBitDepth, 1}, {"#Emulation Settings:", NULL, 0}, diff --git a/GLideN64.vcxproj b/GLideN64.vcxproj index 022b3aa8..d4f70066 100644 --- a/GLideN64.vcxproj +++ b/GLideN64.vcxproj @@ -234,7 +234,6 @@ - @@ -273,7 +272,6 @@ - diff --git a/GLideN64.vcxproj.filters b/GLideN64.vcxproj.filters index 15d60301..c9850bab 100644 --- a/GLideN64.vcxproj.filters +++ b/GLideN64.vcxproj.filters @@ -27,9 +27,6 @@ - - Source Files - Source Files @@ -122,9 +119,6 @@ - - Header Files - Header Files diff --git a/Resource.aps b/Resource.aps index c9d580d8..290731f7 100644 Binary files a/Resource.aps and b/Resource.aps differ diff --git a/Resource.rc b/Resource.rc index 3dba7ba6..9b06e34a 100644 --- a/Resource.rc +++ b/Resource.rc @@ -13,13 +13,11 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources +// English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) -#endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// @@ -113,7 +111,7 @@ BEGIN LTEXT "Resolution:",IDC_STATIC,136,18,37,8 LTEXT "Refresh Rate:",IDC_STATIC,187,18,46,8 COMBOBOX IDC_FULLSCREENBITDEPTH,80,31,39,111,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Enable 2xSaI texture scaling",IDC_ENABLE2XSAI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,66,107,10 + CONTROL "Enable depth buffer write",IDC_ENABLEDEPTHWRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,66,98,10 CONTROL "Enable Fog",IDC_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,81,51,10 CONTROL "Hardware Frame Buffer Textures (Experimental)",IDC_FRAMEBUFFER, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,154,171,10 @@ -143,7 +141,7 @@ END // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO +GUIDELINES DESIGNINFO BEGIN IDD_DEBUGDLG, DIALOG BEGIN @@ -195,7 +193,7 @@ BEGIN 0 END -#endif // English (U.S.) resources +#endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Textures.cpp b/Textures.cpp index 5c1b7b0b..fe8245dd 100644 --- a/Textures.cpp +++ b/Textures.cpp @@ -9,7 +9,6 @@ #include "N64.h" #include "CRC.h" #include "convert.h" -#include "2xSAI.h" #include "FrameBuffer.h" #include "Config.h" #include @@ -230,7 +229,6 @@ void TextureCache_Init() cache.bottom = NULL; cache.numCached = 0; cache.cachedBytes = 0; - cache.enable2xSaI = config.texture.enable2xSaI; cache.bitDepth = config.texture.textureBitDepth; glGenTextures( 32, cache.glNoiseNames ); @@ -515,29 +513,8 @@ void TextureCache_LoadBackground( CachedTexture *texInfo ) } } - if (cache.enable2xSaI) - { - texInfo->textureBytes <<= 2; - - scaledDest = (u32*)malloc( texInfo->textureBytes ); - - if (glInternalFormat == GL_RGBA) - _2xSaI8888( (u32*)dest, (u32*)scaledDest, texInfo->realWidth, texInfo->realHeight, texInfo->clampS, texInfo->clampT ); - else if (glInternalFormat == GL_RGBA4) - _2xSaI4444( (u16*)dest, (u16*)scaledDest, texInfo->realWidth, texInfo->realHeight, texInfo->clampS, texInfo->clampT ); - else - _2xSaI5551( (u16*)dest, (u16*)scaledDest, texInfo->realWidth, texInfo->realHeight, texInfo->clampS, texInfo->clampT ); - - glTexImage2D( GL_TEXTURE_2D, 0, glInternalFormat, texInfo->realWidth << 1, texInfo->realHeight << 1, 0, GL_RGBA, glType, scaledDest ); - - free( dest ); - free( scaledDest ); - } - else - { - glTexImage2D( GL_TEXTURE_2D, 0, glInternalFormat, texInfo->realWidth, texInfo->realHeight, 0, GL_RGBA, glType, dest ); - free( dest ); - } + glTexImage2D( GL_TEXTURE_2D, 0, glInternalFormat, texInfo->realWidth, texInfo->realHeight, 0, GL_RGBA, glType, dest ); + free( dest ); } void TextureCache_Load( CachedTexture *texInfo ) @@ -656,29 +633,8 @@ void TextureCache_Load( CachedTexture *texInfo ) } } - if (cache.enable2xSaI) - { - texInfo->textureBytes <<= 2; - - scaledDest = (u32*)malloc( texInfo->textureBytes ); - - if (glInternalFormat == GL_RGBA) - _2xSaI8888( (u32*)dest, (u32*)scaledDest, texInfo->realWidth, texInfo->realHeight, 1, 1 );//texInfo->clampS, texInfo->clampT ); - else if (glInternalFormat == GL_RGBA4) - _2xSaI4444( (u16*)dest, (u16*)scaledDest, texInfo->realWidth, texInfo->realHeight, 1, 1 );//texInfo->clampS, texInfo->clampT ); - else - _2xSaI5551( (u16*)dest, (u16*)scaledDest, texInfo->realWidth, texInfo->realHeight, 1, 1 );//texInfo->clampS, texInfo->clampT ); - - glTexImage2D( GL_TEXTURE_2D, 0, glInternalFormat, texInfo->realWidth << 1, texInfo->realHeight << 1, 0, GL_RGBA, glType, scaledDest ); - - free( dest ); - free( scaledDest ); - } - else - { - glTexImage2D( GL_TEXTURE_2D, 0, glInternalFormat, texInfo->realWidth, texInfo->realHeight, 0, GL_RGBA, glType, dest ); - free( dest ); - } + glTexImage2D( GL_TEXTURE_2D, 0, glInternalFormat, texInfo->realWidth, texInfo->realHeight, 0, GL_RGBA, glType, dest ); + free( dest ); } struct TextureParams @@ -859,12 +815,6 @@ void TextureCache_Update( u32 t ) u32 tileWidth, maskWidth, loadWidth, lineWidth, clampWidth, height; u32 tileHeight, maskHeight, loadHeight, lineHeight, clampHeight, width; - if (cache.enable2xSaI != config.texture.enable2xSaI) - { - TextureCache_Destroy(); - TextureCache_Init(); - } - if (cache.bitDepth != config.texture.textureBitDepth) { TextureCache_Destroy(); @@ -1114,8 +1064,8 @@ void TextureCache_Update( u32 t ) cache.current[t]->shiftScaleS = 1.0f; cache.current[t]->shiftScaleT = 1.0f; - cache.current[t]->offsetS = config.texture.enable2xSaI ? 0.25f : 0.5f; - cache.current[t]->offsetT = config.texture.enable2xSaI ? 0.25f : 0.5f; + cache.current[t]->offsetS = 0.5f; + cache.current[t]->offsetT = 0.5f; if (gSP.textureTile[t]->shifts > 10) cache.current[t]->shiftScaleS = (f32)(1 << (16 - gSP.textureTile[t]->shifts)); diff --git a/Textures.h b/Textures.h index 94ecc3d6..f2d90f1c 100644 --- a/Textures.h +++ b/Textures.h @@ -50,7 +50,7 @@ struct TextureCache GLuint glNoiseNames[32]; //GLuint glDummyName; CachedTexture *dummy; - u32 enable2xSaI, bitDepth; + u32 bitDepth; }; extern TextureCache cache; diff --git a/resource.h b/resource.h index 7c1e307a..92c901c3 100644 --- a/resource.h +++ b/resource.h @@ -25,7 +25,7 @@ #define IDC_WIREFRAME 1053 #define IDC_FULLSCREENBITDEPTH 1054 #define IDC_ALPHATESTSHARPNESS 1055 -#define IDC_ENABLE2XSAI 1061 +#define IDC_ENABLEDEPTHWRITE 1061 #define IDC_COMBO1 1064 #define IDC_COMBINER 1064 #define IDC_TEXTUREBPP 1064