mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-25 01:57:47 +01:00
assign default palette to primary surface
This commit is contained in:
parent
ac19dec2c4
commit
806924f86e
261
inc/ddpalette.h
261
inc/ddpalette.h
@ -11,4 +11,265 @@ HRESULT ddp_GetEntries(IDirectDrawPaletteImpl* This, DWORD dwFlags, DWORD dwBase
|
|||||||
HRESULT ddp_SetEntries(IDirectDrawPaletteImpl* This, DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries);
|
HRESULT ddp_SetEntries(IDirectDrawPaletteImpl* This, DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries);
|
||||||
HRESULT dd_CreatePalette(DWORD dwFlags, LPPALETTEENTRY lpDDColorArray, IDirectDrawPaletteImpl** lpDDPalette, IUnknown FAR* unkOuter);
|
HRESULT dd_CreatePalette(DWORD dwFlags, LPPALETTEENTRY lpDDColorArray, IDirectDrawPaletteImpl** lpDDPalette, IUnknown FAR* unkOuter);
|
||||||
|
|
||||||
|
// Original palette copied from Windows ME
|
||||||
|
static PALETTEENTRY g_ddp_me_palette[] =
|
||||||
|
{
|
||||||
|
{ 0, 0, 0, 0 },
|
||||||
|
{ 128, 0, 0, 0 },
|
||||||
|
{ 0, 128, 0, 0 },
|
||||||
|
{ 128, 128, 0, 0 },
|
||||||
|
{ 0, 0, 128, 0 },
|
||||||
|
{ 128, 0, 128, 0 },
|
||||||
|
{ 0, 128, 128, 0 },
|
||||||
|
{ 192, 192, 192, 0 },
|
||||||
|
{ 192, 220, 192, 0 },
|
||||||
|
{ 166, 202, 240, 0 },
|
||||||
|
{ 95, 63, 63, 0 },
|
||||||
|
{ 127, 63, 63, 0 },
|
||||||
|
{ 159, 63, 63, 0 },
|
||||||
|
{ 191, 63, 63, 0 },
|
||||||
|
{ 223, 63, 63, 0 },
|
||||||
|
{ 255, 63, 63, 0 },
|
||||||
|
{ 63, 95, 63, 0 },
|
||||||
|
{ 95, 95, 63, 0 },
|
||||||
|
{ 127, 95, 63, 0 },
|
||||||
|
{ 159, 95, 63, 0 },
|
||||||
|
{ 191, 95, 63, 0 },
|
||||||
|
{ 223, 95, 63, 0 },
|
||||||
|
{ 255, 95, 63, 0 },
|
||||||
|
{ 63, 127, 63, 0 },
|
||||||
|
{ 95, 127, 63, 0 },
|
||||||
|
{ 127, 127, 63, 0 },
|
||||||
|
{ 159, 127, 63, 0 },
|
||||||
|
{ 191, 127, 63, 0 },
|
||||||
|
{ 223, 127, 63, 0 },
|
||||||
|
{ 255, 127, 63, 0 },
|
||||||
|
{ 63, 159, 63, 0 },
|
||||||
|
{ 95, 159, 63, 0 },
|
||||||
|
{ 127, 159, 63, 0 },
|
||||||
|
{ 159, 159, 63, 0 },
|
||||||
|
{ 191, 159, 63, 0 },
|
||||||
|
{ 223, 159, 63, 0 },
|
||||||
|
{ 255, 159, 63, 0 },
|
||||||
|
{ 63, 191, 63, 0 },
|
||||||
|
{ 95, 191, 63, 0 },
|
||||||
|
{ 127, 191, 63, 0 },
|
||||||
|
{ 159, 191, 63, 0 },
|
||||||
|
{ 191, 191, 63, 0 },
|
||||||
|
{ 223, 191, 63, 0 },
|
||||||
|
{ 255, 191, 63, 0 },
|
||||||
|
{ 63, 223, 63, 0 },
|
||||||
|
{ 95, 223, 63, 0 },
|
||||||
|
{ 127, 223, 63, 0 },
|
||||||
|
{ 159, 223, 63, 0 },
|
||||||
|
{ 191, 223, 63, 0 },
|
||||||
|
{ 223, 223, 63, 0 },
|
||||||
|
{ 255, 223, 63, 0 },
|
||||||
|
{ 63, 255, 63, 0 },
|
||||||
|
{ 95, 255, 63, 0 },
|
||||||
|
{ 127, 255, 63, 0 },
|
||||||
|
{ 159, 255, 63, 0 },
|
||||||
|
{ 191, 255, 63, 0 },
|
||||||
|
{ 223, 255, 63, 0 },
|
||||||
|
{ 255, 255, 63, 0 },
|
||||||
|
{ 63, 63, 95, 0 },
|
||||||
|
{ 95, 63, 95, 0 },
|
||||||
|
{ 127, 63, 95, 0 },
|
||||||
|
{ 159, 63, 95, 0 },
|
||||||
|
{ 191, 63, 95, 0 },
|
||||||
|
{ 223, 63, 95, 0 },
|
||||||
|
{ 255, 63, 95, 0 },
|
||||||
|
{ 63, 95, 95, 0 },
|
||||||
|
{ 95, 95, 95, 0 },
|
||||||
|
{ 127, 95, 95, 0 },
|
||||||
|
{ 159, 95, 95, 0 },
|
||||||
|
{ 191, 95, 95, 0 },
|
||||||
|
{ 223, 95, 95, 0 },
|
||||||
|
{ 255, 95, 95, 0 },
|
||||||
|
{ 63, 127, 95, 0 },
|
||||||
|
{ 95, 127, 95, 0 },
|
||||||
|
{ 127, 127, 95, 0 },
|
||||||
|
{ 159, 127, 95, 0 },
|
||||||
|
{ 191, 127, 95, 0 },
|
||||||
|
{ 223, 127, 95, 0 },
|
||||||
|
{ 255, 127, 95, 0 },
|
||||||
|
{ 63, 159, 95, 0 },
|
||||||
|
{ 95, 159, 95, 0 },
|
||||||
|
{ 127, 159, 95, 0 },
|
||||||
|
{ 159, 159, 95, 0 },
|
||||||
|
{ 191, 159, 95, 0 },
|
||||||
|
{ 223, 159, 95, 0 },
|
||||||
|
{ 255, 159, 95, 0 },
|
||||||
|
{ 63, 191, 95, 0 },
|
||||||
|
{ 95, 191, 95, 0 },
|
||||||
|
{ 127, 191, 95, 0 },
|
||||||
|
{ 159, 191, 95, 0 },
|
||||||
|
{ 191, 191, 95, 0 },
|
||||||
|
{ 223, 191, 95, 0 },
|
||||||
|
{ 255, 191, 95, 0 },
|
||||||
|
{ 63, 223, 95, 0 },
|
||||||
|
{ 95, 223, 95, 0 },
|
||||||
|
{ 127, 223, 95, 0 },
|
||||||
|
{ 159, 223, 95, 0 },
|
||||||
|
{ 191, 223, 95, 0 },
|
||||||
|
{ 223, 223, 95, 0 },
|
||||||
|
{ 255, 223, 95, 0 },
|
||||||
|
{ 63, 255, 95, 0 },
|
||||||
|
{ 95, 255, 95, 0 },
|
||||||
|
{ 127, 255, 95, 0 },
|
||||||
|
{ 159, 255, 95, 0 },
|
||||||
|
{ 191, 255, 95, 0 },
|
||||||
|
{ 223, 255, 95, 0 },
|
||||||
|
{ 255, 255, 95, 0 },
|
||||||
|
{ 63, 63, 127, 0 },
|
||||||
|
{ 95, 63, 127, 0 },
|
||||||
|
{ 127, 63, 127, 0 },
|
||||||
|
{ 159, 63, 127, 0 },
|
||||||
|
{ 191, 63, 127, 0 },
|
||||||
|
{ 223, 63, 127, 0 },
|
||||||
|
{ 255, 63, 127, 0 },
|
||||||
|
{ 63, 95, 127, 0 },
|
||||||
|
{ 95, 95, 127, 0 },
|
||||||
|
{ 127, 95, 127, 0 },
|
||||||
|
{ 159, 95, 127, 0 },
|
||||||
|
{ 191, 95, 127, 0 },
|
||||||
|
{ 223, 95, 127, 0 },
|
||||||
|
{ 255, 95, 127, 0 },
|
||||||
|
{ 63, 127, 127, 0 },
|
||||||
|
{ 95, 127, 127, 0 },
|
||||||
|
{ 127, 127, 127, 0 },
|
||||||
|
{ 159, 127, 127, 0 },
|
||||||
|
{ 191, 127, 127, 0 },
|
||||||
|
{ 223, 127, 127, 0 },
|
||||||
|
{ 255, 127, 127, 0 },
|
||||||
|
{ 63, 159, 127, 0 },
|
||||||
|
{ 95, 159, 127, 0 },
|
||||||
|
{ 127, 159, 127, 0 },
|
||||||
|
{ 159, 159, 127, 0 },
|
||||||
|
{ 191, 159, 127, 0 },
|
||||||
|
{ 223, 159, 127, 0 },
|
||||||
|
{ 255, 159, 127, 0 },
|
||||||
|
{ 63, 191, 127, 0 },
|
||||||
|
{ 95, 191, 127, 0 },
|
||||||
|
{ 127, 191, 127, 0 },
|
||||||
|
{ 159, 191, 127, 0 },
|
||||||
|
{ 191, 191, 127, 0 },
|
||||||
|
{ 223, 191, 127, 0 },
|
||||||
|
{ 255, 191, 127, 0 },
|
||||||
|
{ 63, 223, 127, 0 },
|
||||||
|
{ 95, 223, 127, 0 },
|
||||||
|
{ 127, 223, 127, 0 },
|
||||||
|
{ 159, 223, 127, 0 },
|
||||||
|
{ 191, 223, 127, 0 },
|
||||||
|
{ 223, 223, 127, 0 },
|
||||||
|
{ 255, 223, 127, 0 },
|
||||||
|
{ 63, 255, 127, 0 },
|
||||||
|
{ 95, 255, 127, 0 },
|
||||||
|
{ 127, 255, 127, 0 },
|
||||||
|
{ 159, 255, 127, 0 },
|
||||||
|
{ 191, 255, 127, 0 },
|
||||||
|
{ 223, 255, 127, 0 },
|
||||||
|
{ 255, 255, 127, 0 },
|
||||||
|
{ 63, 63, 159, 0 },
|
||||||
|
{ 95, 63, 159, 0 },
|
||||||
|
{ 127, 63, 159, 0 },
|
||||||
|
{ 159, 63, 159, 0 },
|
||||||
|
{ 191, 63, 159, 0 },
|
||||||
|
{ 223, 63, 159, 0 },
|
||||||
|
{ 255, 63, 159, 0 },
|
||||||
|
{ 63, 95, 159, 0 },
|
||||||
|
{ 95, 95, 159, 0 },
|
||||||
|
{ 127, 95, 159, 0 },
|
||||||
|
{ 159, 95, 159, 0 },
|
||||||
|
{ 191, 95, 159, 0 },
|
||||||
|
{ 223, 95, 159, 0 },
|
||||||
|
{ 255, 95, 159, 0 },
|
||||||
|
{ 63, 127, 159, 0 },
|
||||||
|
{ 95, 127, 159, 0 },
|
||||||
|
{ 127, 127, 159, 0 },
|
||||||
|
{ 159, 127, 159, 0 },
|
||||||
|
{ 191, 127, 159, 0 },
|
||||||
|
{ 223, 127, 159, 0 },
|
||||||
|
{ 255, 127, 159, 0 },
|
||||||
|
{ 63, 159, 159, 0 },
|
||||||
|
{ 95, 159, 159, 0 },
|
||||||
|
{ 127, 159, 159, 0 },
|
||||||
|
{ 159, 159, 159, 0 },
|
||||||
|
{ 191, 159, 159, 0 },
|
||||||
|
{ 223, 159, 159, 0 },
|
||||||
|
{ 255, 159, 159, 0 },
|
||||||
|
{ 63, 191, 159, 0 },
|
||||||
|
{ 95, 191, 159, 0 },
|
||||||
|
{ 127, 191, 159, 0 },
|
||||||
|
{ 159, 191, 159, 0 },
|
||||||
|
{ 191, 191, 159, 0 },
|
||||||
|
{ 223, 191, 159, 0 },
|
||||||
|
{ 255, 191, 159, 0 },
|
||||||
|
{ 63, 223, 159, 0 },
|
||||||
|
{ 95, 223, 159, 0 },
|
||||||
|
{ 127, 223, 159, 0 },
|
||||||
|
{ 159, 223, 159, 0 },
|
||||||
|
{ 191, 223, 159, 0 },
|
||||||
|
{ 223, 223, 159, 0 },
|
||||||
|
{ 255, 223, 159, 0 },
|
||||||
|
{ 63, 255, 159, 0 },
|
||||||
|
{ 95, 255, 159, 0 },
|
||||||
|
{ 127, 255, 159, 0 },
|
||||||
|
{ 159, 255, 159, 0 },
|
||||||
|
{ 191, 255, 159, 0 },
|
||||||
|
{ 223, 255, 159, 0 },
|
||||||
|
{ 255, 255, 159, 0 },
|
||||||
|
{ 63, 63, 191, 0 },
|
||||||
|
{ 95, 63, 191, 0 },
|
||||||
|
{ 127, 63, 191, 0 },
|
||||||
|
{ 159, 63, 191, 0 },
|
||||||
|
{ 191, 63, 191, 0 },
|
||||||
|
{ 223, 63, 191, 0 },
|
||||||
|
{ 255, 63, 191, 0 },
|
||||||
|
{ 63, 95, 191, 0 },
|
||||||
|
{ 95, 95, 191, 0 },
|
||||||
|
{ 127, 95, 191, 0 },
|
||||||
|
{ 159, 95, 191, 0 },
|
||||||
|
{ 191, 95, 191, 0 },
|
||||||
|
{ 223, 95, 191, 0 },
|
||||||
|
{ 255, 95, 191, 0 },
|
||||||
|
{ 63, 127, 191, 0 },
|
||||||
|
{ 95, 127, 191, 0 },
|
||||||
|
{ 127, 127, 191, 0 },
|
||||||
|
{ 159, 127, 191, 0 },
|
||||||
|
{ 191, 127, 191, 0 },
|
||||||
|
{ 223, 127, 191, 0 },
|
||||||
|
{ 255, 127, 191, 0 },
|
||||||
|
{ 63, 159, 191, 0 },
|
||||||
|
{ 95, 159, 191, 0 },
|
||||||
|
{ 127, 159, 191, 0 },
|
||||||
|
{ 159, 159, 191, 0 },
|
||||||
|
{ 191, 159, 191, 0 },
|
||||||
|
{ 223, 159, 191, 0 },
|
||||||
|
{ 255, 159, 191, 0 },
|
||||||
|
{ 63, 191, 191, 0 },
|
||||||
|
{ 95, 191, 191, 0 },
|
||||||
|
{ 127, 191, 191, 0 },
|
||||||
|
{ 159, 191, 191, 0 },
|
||||||
|
{ 191, 191, 191, 0 },
|
||||||
|
{ 223, 191, 191, 0 },
|
||||||
|
{ 255, 191, 191, 0 },
|
||||||
|
{ 63, 223, 191, 0 },
|
||||||
|
{ 95, 223, 191, 0 },
|
||||||
|
{ 127, 223, 191, 0 },
|
||||||
|
{ 159, 223, 191, 0 },
|
||||||
|
{ 191, 223, 191, 0 },
|
||||||
|
{ 223, 223, 191, 0 },
|
||||||
|
{ 255, 251, 240, 0 },
|
||||||
|
{ 58, 109, 165, 0 },
|
||||||
|
{ 128, 128, 128, 0 },
|
||||||
|
{ 255, 0, 0, 0 },
|
||||||
|
{ 0, 255, 0, 0 },
|
||||||
|
{ 255, 255, 0, 0 },
|
||||||
|
{ 0, 0, 255, 0 },
|
||||||
|
{ 255, 0, 255, 0 },
|
||||||
|
{ 0, 255, 255, 0 },
|
||||||
|
{ 255, 255, 255, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -84,7 +84,7 @@ HRESULT dd_CreatePalette(
|
|||||||
|
|
||||||
p->lpVtbl = &g_ddp_vtbl;
|
p->lpVtbl = &g_ddp_vtbl;
|
||||||
p->flags = dwFlags;
|
p->flags = dwFlags;
|
||||||
ddp_SetEntries(p, dwFlags, 0, 256, lpDDColorArray);
|
ddp_SetEntries(p, dwFlags, 0, 256, lpDDColorArray);
|
||||||
IDirectDrawPalette_AddRef(p);
|
IDirectDrawPalette_AddRef(p);
|
||||||
|
|
||||||
*lpDDPalette = p;
|
*lpDDPalette = p;
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "ddclipper.h"
|
#include "ddclipper.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "versionhelpers.h"
|
#include "versionhelpers.h"
|
||||||
|
#include "ddpalette.h"
|
||||||
|
|
||||||
|
|
||||||
LONG g_dds_gdi_handles;
|
LONG g_dds_gdi_handles;
|
||||||
@ -1093,8 +1094,7 @@ HRESULT dds_SetPalette(IDirectDrawSurfaceImpl* This, IDirectDrawPaletteImpl* lpD
|
|||||||
if (lpDDPalette)
|
if (lpDDPalette)
|
||||||
IDirectDrawPalette_AddRef(lpDDPalette);
|
IDirectDrawPalette_AddRef(lpDDPalette);
|
||||||
|
|
||||||
if (This->palette)
|
IDirectDrawPaletteImpl* old_palette = This->palette;
|
||||||
IDirectDrawPalette_Release(This->palette);
|
|
||||||
|
|
||||||
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref)
|
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref)
|
||||||
{
|
{
|
||||||
@ -1113,6 +1113,9 @@ HRESULT dds_SetPalette(IDirectDrawSurfaceImpl* This, IDirectDrawPaletteImpl* lpD
|
|||||||
This->palette = lpDDPalette;
|
This->palette = lpDDPalette;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (old_palette)
|
||||||
|
IDirectDrawPalette_Release(old_palette);
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1574,6 +1577,16 @@ HRESULT dd_CreateSurface(
|
|||||||
{
|
{
|
||||||
g_ddraw.primary = dst_surface;
|
g_ddraw.primary = dst_surface;
|
||||||
FakePrimarySurface = dst_surface->surface;
|
FakePrimarySurface = dst_surface->surface;
|
||||||
|
|
||||||
|
if (dst_surface->bpp == 8)
|
||||||
|
{
|
||||||
|
IDirectDrawPaletteImpl* lpDDPalette;
|
||||||
|
dd_CreatePalette(DDPCAPS_ALLOW256, g_ddp_me_palette, &lpDDPalette, NULL);
|
||||||
|
dds_SetPalette(dst_surface, lpDDPalette);
|
||||||
|
|
||||||
|
// Make sure temp palette will be released once replaced
|
||||||
|
IDirectDrawPalette_Release(lpDDPalette);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user