diff --git a/Source/palette.cpp b/Source/palette.cpp index f228dbb80..3f2ebb387 100644 --- a/Source/palette.cpp +++ b/Source/palette.cpp @@ -92,34 +92,34 @@ void __cdecl LoadSysPal() void __fastcall LoadPalette(char *pszFileName) { - int i; // eax - char PalData[256][3]; // [esp+0h] [ebp-304h] - HANDLE pBuf; // [esp+300h] [ebp-4h] + int i; + void *pBuf; + BYTE PalData[256][3]; + + /// ASSERT: assert(pszFileName); WOpenFile(pszFileName, &pBuf, 0); - WReadFile(pBuf, (char *)PalData, 768); + WReadFile(pBuf, (char *)PalData, sizeof(PalData)); WCloseFile(pBuf); - for (i = 0; i < 256; i++) { - orig_palette[i].peFlags = 0; + for(i = 0; i < 256; i++) { orig_palette[i].peRed = PalData[i][0]; orig_palette[i].peGreen = PalData[i][1]; orig_palette[i].peBlue = PalData[i][2]; + orig_palette[i].peFlags = 0; } } void __fastcall LoadRndLvlPal(int l) { - char *pszPal; // ecx - char szTemp[260]; // [esp+4h] [ebp-104h] + char szFileName[MAX_PATH]; - if (l) { - sprintf(szTemp, "Levels\\L%iData\\L%i_%i.PAL", l, l, random(0, 4) + 1); - pszPal = szTemp; + if(l == DTYPE_TOWN) { + LoadPalette("Levels\\TownData\\Town.pal"); } else { - pszPal = "Levels\\TownData\\Town.pal"; + sprintf(szFileName, "Levels\\L%iData\\L%i_%i.PAL", l, l, random(0, 4) + 1); + LoadPalette(szFileName); } - LoadPalette(pszPal); } void __cdecl ResetPal() @@ -165,22 +165,17 @@ void __cdecl palette_update() void __fastcall ApplyGamma(PALETTEENTRY *dst, PALETTEENTRY *src, int n) { - PALETTEENTRY *v3; // edi - PALETTEENTRY *v4; // esi - double v5; // [esp+18h] [ebp-Ch] - - v3 = src; - v4 = dst; - v5 = (double)gamma_correction * 0.01; - if (n > 0) { - do { - v4->peRed = pow(v3->peRed * 0.00390625, v5) * 256.0; - v4->peGreen = pow(v3->peGreen * 0.00390625, v5) * 256.0; - v4->peBlue = pow(v3->peBlue * 0.00390625, v5) * 256.0; - ++v4; - ++v3; - --n; - } while (n); + int i; + double g; + + g = gamma_correction / 100.0; + + for(i = 0; i < n; i++) { + dst->peRed = pow(src->peRed / 256.0, g) * 256.0; + dst->peGreen = pow(src->peGreen / 256.0, g) * 256.0; + dst->peBlue = pow(src->peBlue / 256.0, g) * 256.0; + dst++; + src++; } }