mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
#21 fixes Dungeon Keeper 2 color issues
This commit is contained in:
parent
8c0cb61394
commit
4c12ebc077
@ -502,26 +502,31 @@ HRESULT dds_DeleteAttachedSurface(IDirectDrawSurfaceImpl *This, DWORD dwFlags, L
|
|||||||
|
|
||||||
HRESULT dds_GetSurfaceDesc(IDirectDrawSurfaceImpl *This, LPDDSURFACEDESC lpDDSurfaceDesc)
|
HRESULT dds_GetSurfaceDesc(IDirectDrawSurfaceImpl *This, LPDDSURFACEDESC lpDDSurfaceDesc)
|
||||||
{
|
{
|
||||||
lpDDSurfaceDesc->dwSize = sizeof(DDSURFACEDESC);
|
if (lpDDSurfaceDesc)
|
||||||
lpDDSurfaceDesc->dwFlags = DDSD_WIDTH|DDSD_HEIGHT|DDSD_PITCH|DDSD_PIXELFORMAT|DDSD_LPSURFACE;
|
{
|
||||||
lpDDSurfaceDesc->dwWidth = This->width;
|
memset(lpDDSurfaceDesc, 0, sizeof(DDSURFACEDESC));
|
||||||
lpDDSurfaceDesc->dwHeight = This->height;
|
|
||||||
lpDDSurfaceDesc->lPitch = This->l_pitch;
|
|
||||||
lpDDSurfaceDesc->lpSurface = This->surface;
|
|
||||||
lpDDSurfaceDesc->ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
|
|
||||||
lpDDSurfaceDesc->ddpfPixelFormat.dwFlags = DDPF_RGB;
|
|
||||||
lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount = This->bpp;
|
|
||||||
lpDDSurfaceDesc->ddsCaps.dwCaps = This->caps | DDSCAPS_VIDEOMEMORY;
|
|
||||||
|
|
||||||
if (This->bpp == 8)
|
lpDDSurfaceDesc->dwSize = sizeof(DDSURFACEDESC);
|
||||||
{
|
lpDDSurfaceDesc->dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_PITCH | DDSD_PIXELFORMAT | DDSD_LPSURFACE;
|
||||||
lpDDSurfaceDesc->ddpfPixelFormat.dwFlags |= DDPF_PALETTEINDEXED8;
|
lpDDSurfaceDesc->dwWidth = This->width;
|
||||||
}
|
lpDDSurfaceDesc->dwHeight = This->height;
|
||||||
else if (This->bpp == 16)
|
lpDDSurfaceDesc->lPitch = This->l_pitch;
|
||||||
{
|
lpDDSurfaceDesc->lpSurface = This->surface;
|
||||||
lpDDSurfaceDesc->ddpfPixelFormat.dwRBitMask = 0xF800;
|
lpDDSurfaceDesc->ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
|
||||||
lpDDSurfaceDesc->ddpfPixelFormat.dwGBitMask = 0x07E0;
|
lpDDSurfaceDesc->ddpfPixelFormat.dwFlags = DDPF_RGB;
|
||||||
lpDDSurfaceDesc->ddpfPixelFormat.dwBBitMask = 0x001F;
|
lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount = This->bpp;
|
||||||
|
lpDDSurfaceDesc->ddsCaps.dwCaps = This->caps | DDSCAPS_VIDEOMEMORY;
|
||||||
|
|
||||||
|
if (This->bpp == 8)
|
||||||
|
{
|
||||||
|
lpDDSurfaceDesc->ddpfPixelFormat.dwFlags |= DDPF_PALETTEINDEXED8;
|
||||||
|
}
|
||||||
|
else if (This->bpp == 16)
|
||||||
|
{
|
||||||
|
lpDDSurfaceDesc->ddpfPixelFormat.dwRBitMask = 0xF800;
|
||||||
|
lpDDSurfaceDesc->ddpfPixelFormat.dwGBitMask = 0x07E0;
|
||||||
|
lpDDSurfaceDesc->ddpfPixelFormat.dwBBitMask = 0x001F;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
@ -633,13 +638,11 @@ HRESULT dds_GetPalette(IDirectDrawSurfaceImpl *This, LPDIRECTDRAWPALETTE FAR *lp
|
|||||||
|
|
||||||
HRESULT dds_GetPixelFormat(IDirectDrawSurfaceImpl *This, LPDDPIXELFORMAT ddpfPixelFormat)
|
HRESULT dds_GetPixelFormat(IDirectDrawSurfaceImpl *This, LPDDPIXELFORMAT ddpfPixelFormat)
|
||||||
{
|
{
|
||||||
DWORD size = ddpfPixelFormat->dwSize;
|
if (ddpfPixelFormat)
|
||||||
|
|
||||||
if (size == sizeof(DDPIXELFORMAT))
|
|
||||||
{
|
{
|
||||||
memset(ddpfPixelFormat, 0, sizeof(DDPIXELFORMAT));
|
memset(ddpfPixelFormat, 0, sizeof(DDPIXELFORMAT));
|
||||||
|
|
||||||
ddpfPixelFormat->dwSize = size;
|
ddpfPixelFormat->dwSize = sizeof(DDPIXELFORMAT);
|
||||||
ddpfPixelFormat->dwFlags = DDPF_RGB;
|
ddpfPixelFormat->dwFlags = DDPF_RGB;
|
||||||
ddpfPixelFormat->dwRGBBitCount = This->bpp;
|
ddpfPixelFormat->dwRGBBitCount = This->bpp;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user