1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

fix d2 palette bug

This commit is contained in:
FunkyFr3sh 2018-10-30 12:59:12 +01:00
parent 49c4fe826d
commit 5ea076752b

View File

@ -21,17 +21,17 @@
HRESULT __stdcall ddraw_palette_GetEntries(IDirectDrawPaletteImpl *This, DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries)
{
int i;
int i, x;
printf("DirectDrawPalette::GetEntries(This=%p, dwFlags=%08X, dwBase=%d, dwNumEntries=%d, lpEntries=%p)\n", This, (int)dwFlags, (int)dwBase, (int)dwNumEntries, lpEntries);
for(i=dwBase;i<dwBase+dwNumEntries;i++)
for (i = dwBase, x = 0; i < dwBase + dwNumEntries; i++, x++)
{
if (This->data_rgb)
{
lpEntries[i].peRed = This->data_rgb[i].rgbRed;
lpEntries[i].peGreen = This->data_rgb[i].rgbGreen;
lpEntries[i].peBlue = This->data_rgb[i].rgbBlue;
lpEntries[x].peRed = This->data_rgb[i].rgbRed;
lpEntries[x].peGreen = This->data_rgb[i].rgbGreen;
lpEntries[x].peBlue = This->data_rgb[i].rgbBlue;
}
}
@ -40,26 +40,26 @@ HRESULT __stdcall ddraw_palette_GetEntries(IDirectDrawPaletteImpl *This, DWORD d
HRESULT __stdcall ddraw_palette_SetEntries(IDirectDrawPaletteImpl *This, DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries)
{
int i;
int i, x;
#if _DEBUG_X
printf("DirectDrawPalette::SetEntries(This=%p, dwFlags=%08X, dwStartingEntry=%d, dwCount=%d, lpEntries=%p)\n", This, (int)dwFlags, (int)dwStartingEntry, (int)dwCount, lpEntries);
#endif
for(i=dwStartingEntry;i<dwStartingEntry+dwCount;i++)
for (i = dwStartingEntry, x = 0; i < dwStartingEntry + dwCount; i++, x++)
{
This->data_bgr[i] = (lpEntries[i].peBlue<<16)|(lpEntries[i].peGreen<<8)|lpEntries[i].peRed;
This->data_bgr[i] = (lpEntries[x].peBlue << 16) | (lpEntries[x].peGreen << 8) | lpEntries[x].peRed;
if (This->data_rgb)
{
This->data_rgb[i].rgbRed = lpEntries[i].peRed;
This->data_rgb[i].rgbGreen = lpEntries[i].peGreen;
This->data_rgb[i].rgbBlue = lpEntries[i].peBlue;
This->data_rgb[i].rgbRed = lpEntries[x].peRed;
This->data_rgb[i].rgbGreen = lpEntries[x].peGreen;
This->data_rgb[i].rgbBlue = lpEntries[x].peBlue;
This->data_rgb[i].rgbReserved = 0;
}
}
if(ddraw->primary && ddraw->primary->palette == This && ddraw->render.run)
if (ddraw->primary && ddraw->primary->palette == This && ddraw->render.run)
{
InterlockedExchange(&ddraw->render.paletteUpdated, TRUE);
ReleaseSemaphore(ddraw->render.sem, 1, NULL);