mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
#309 Fix for Nancy Draw: Last Train to Blue Moon Canyon "SetSurfaceDesc() error"
This commit is contained in:
parent
32f508cba3
commit
fdcf9a7d1a
@ -1225,9 +1225,7 @@ HRESULT dds_SetSurfaceDesc(IDirectDrawSurfaceImpl* This, LPDDSURFACEDESC2 lpDDSD
|
|||||||
dbg_dump_dds_flags(lpDDSD->dwFlags);
|
dbg_dump_dds_flags(lpDDSD->dwFlags);
|
||||||
dbg_dump_dds_caps(lpDDSD->ddsCaps.dwCaps);
|
dbg_dump_dds_caps(lpDDSD->ddsCaps.dwCaps);
|
||||||
|
|
||||||
DWORD req_flags = DDSD_LPSURFACE | DDSD_PITCH | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;
|
if ((lpDDSD->dwFlags & DDSD_LPSURFACE) == 0)
|
||||||
|
|
||||||
if (((lpDDSD->dwFlags & req_flags) != req_flags) && (lpDDSD->dwFlags & DDSD_ALL) == 0)
|
|
||||||
return DDERR_UNSUPPORTED;
|
return DDERR_UNSUPPORTED;
|
||||||
|
|
||||||
|
|
||||||
@ -1262,32 +1260,51 @@ HRESULT dds_SetSurfaceDesc(IDirectDrawSurfaceImpl* This, LPDDSURFACEDESC2 lpDDSD
|
|||||||
This->mapping = NULL;
|
This->mapping = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lpDDSD->dwFlags & DDSD_PIXELFORMAT)
|
||||||
switch (lpDDSD->ddpfPixelFormat.dwRGBBitCount)
|
|
||||||
{
|
{
|
||||||
case 8:
|
switch (lpDDSD->ddpfPixelFormat.dwRGBBitCount)
|
||||||
This->bpp = 8;
|
{
|
||||||
break;
|
case 0:
|
||||||
case 15:
|
break;
|
||||||
TRACE(" NOT_IMPLEMENTED bpp=%u\n", lpDDSD->ddpfPixelFormat.dwRGBBitCount);
|
case 8:
|
||||||
case 16:
|
This->bpp = 8;
|
||||||
This->bpp = 16;
|
break;
|
||||||
break;
|
case 15:
|
||||||
case 24:
|
TRACE(" NOT_IMPLEMENTED bpp=%u\n", lpDDSD->ddpfPixelFormat.dwRGBBitCount);
|
||||||
TRACE(" NOT_IMPLEMENTED bpp=%u\n", lpDDSD->ddpfPixelFormat.dwRGBBitCount);
|
case 16:
|
||||||
case 32:
|
This->bpp = 16;
|
||||||
This->bpp = 32;
|
break;
|
||||||
break;
|
case 24:
|
||||||
default:
|
TRACE(" NOT_IMPLEMENTED bpp=%u\n", lpDDSD->ddpfPixelFormat.dwRGBBitCount);
|
||||||
This->bpp = 8;
|
case 32:
|
||||||
TRACE(" NOT_IMPLEMENTED bpp=%u\n", lpDDSD->ddpfPixelFormat.dwRGBBitCount);
|
This->bpp = 32;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
TRACE(" NOT_IMPLEMENTED bpp=%u\n", lpDDSD->ddpfPixelFormat.dwRGBBitCount);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lpDDSD->dwFlags & DDSD_WIDTH)
|
||||||
|
{
|
||||||
|
This->width = lpDDSD->dwWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lpDDSD->dwFlags & DDSD_HEIGHT)
|
||||||
|
{
|
||||||
|
This->height = lpDDSD->dwHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lpDDSD->dwFlags & DDSD_PITCH)
|
||||||
|
{
|
||||||
|
This->pitch = lpDDSD->lPitch;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lpDDSD->dwFlags & DDSD_LPSURFACE)
|
||||||
|
{
|
||||||
|
This->surface = lpDDSD->lpSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
This->width = lpDDSD->dwWidth;
|
|
||||||
This->height = lpDDSD->dwHeight;
|
|
||||||
This->surface = lpDDSD->lpSurface;
|
|
||||||
This->pitch = lpDDSD->lPitch;
|
|
||||||
This->bytes_pp = This->bpp / 8;
|
This->bytes_pp = This->bpp / 8;
|
||||||
This->size = This->pitch * This->height;
|
This->size = This->pitch * This->height;
|
||||||
This->custom_buf = TRUE;
|
This->custom_buf = TRUE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user