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

add bpp check to dds blt

This commit is contained in:
FunkyFr3sh 2024-12-26 23:59:05 +01:00
parent ca195bcb3f
commit 1e03e9cec6
2 changed files with 12 additions and 3 deletions

View File

@ -23,9 +23,9 @@ typedef struct IDirectDrawSurfaceImpl
ULONG ref; ULONG ref;
DWORD bpp;
DWORD width; DWORD width;
DWORD height; DWORD height;
DWORD bpp;
DWORD size; DWORD size;
DWORD flags; DWORD flags;
DWORD caps; DWORD caps;

View File

@ -50,6 +50,15 @@ HRESULT dds_Blt(
DWORD dwFlags, DWORD dwFlags,
LPDDBLTFX lpDDBltFx) LPDDBLTFX lpDDBltFx)
{ {
if (lpDDSrcSurface &&
lpDDSrcSurface->bpp != 8 &&
lpDDSrcSurface->bpp != 16 &&
lpDDSrcSurface->bpp != 24 &&
lpDDSrcSurface->bpp != 32)
{
return DDERR_INVALIDPARAMS;
}
dbg_dump_dds_blt_flags(dwFlags); dbg_dump_dds_blt_flags(dwFlags);
dbg_dump_dds_blt_fx_flags((dwFlags & DDBLT_DDFX) && lpDDBltFx ? lpDDBltFx->dwDDFX : 0); dbg_dump_dds_blt_fx_flags((dwFlags & DDBLT_DDFX) && lpDDBltFx ? lpDDBltFx->dwDDFX : 0);
@ -77,13 +86,13 @@ HRESULT dds_Blt(
if (lpSrcRect && src_surface) if (lpSrcRect && src_surface)
{ {
//dbg_print_rect("lpSrcRect", lpSrcRect); dbg_print_rect("lpSrcRect", lpSrcRect);
src_rect = *lpSrcRect; src_rect = *lpSrcRect;
} }
if (lpDestRect) if (lpDestRect)
{ {
//dbg_print_rect("lpDestRect", lpDestRect); dbg_print_rect("lpDestRect", lpDestRect);
dst_rect = *lpDestRect; dst_rect = *lpDestRect;
} }