mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
#51 support GetDisplayMode
This commit is contained in:
parent
f5d794042c
commit
8549494af2
1
inc/dd.h
1
inc/dd.h
@ -14,6 +14,7 @@ HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp);
|
||||
HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags);
|
||||
HRESULT dd_RestoreDisplayMode();
|
||||
HRESULT dd_GetCaps(LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDEmulCaps);
|
||||
HRESULT dd_GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc);
|
||||
HRESULT dd_GetMonitorFrequency(LPDWORD lpdwFreq);
|
||||
HRESULT dd_GetAvailableVidMem(void* lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree);
|
||||
HRESULT dd_GetVerticalBlankStatus(LPBOOL lpbIsInVB);
|
||||
|
@ -176,11 +176,11 @@ HRESULT __stdcall IDirectDraw__GetCaps(IDirectDrawImpl* This, LPDDCAPS lpDDDrive
|
||||
return ret;
|
||||
}
|
||||
|
||||
HRESULT __stdcall IDirectDraw__GetDisplayMode(IDirectDrawImpl* This, LPDDSURFACEDESC a)
|
||||
HRESULT __stdcall IDirectDraw__GetDisplayMode(IDirectDrawImpl* This, LPDDSURFACEDESC lpDDSurfaceDesc)
|
||||
{
|
||||
dprintf("NOT_IMPLEMENTED -> %s(This=%p)\n", __FUNCTION__, This);
|
||||
HRESULT ret = DDERR_UNSUPPORTEDMODE;
|
||||
dprintf("NOT_IMPLEMENTED <- %s\n", __FUNCTION__);
|
||||
dprintf("-> %s(This=%p)\n", __FUNCTION__, This);
|
||||
HRESULT ret = dd_GetDisplayMode(lpDDSurfaceDesc);
|
||||
dprintf("<- %s\n", __FUNCTION__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
31
src/dd.c
31
src/dd.c
@ -180,6 +180,37 @@ HRESULT dd_GetCaps(LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDEmulCaps)
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT dd_GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc)
|
||||
{
|
||||
if (lpDDSurfaceDesc)
|
||||
{
|
||||
memset(lpDDSurfaceDesc, 0, sizeof(DDSURFACEDESC));
|
||||
|
||||
lpDDSurfaceDesc->dwSize = sizeof(DDSURFACEDESC);
|
||||
lpDDSurfaceDesc->dwFlags = DDSD_HEIGHT | DDSD_REFRESHRATE | DDSD_WIDTH | DDSD_PITCH | DDSD_PIXELFORMAT;
|
||||
lpDDSurfaceDesc->dwHeight = g_ddraw->height ? g_ddraw->height : 768;
|
||||
lpDDSurfaceDesc->dwWidth = g_ddraw->width ? g_ddraw->width : 1024;
|
||||
lpDDSurfaceDesc->lPitch = lpDDSurfaceDesc->dwWidth;
|
||||
lpDDSurfaceDesc->dwRefreshRate = 60;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
|
||||
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwFlags = DDPF_PALETTEINDEXED8 | DDPF_RGB;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount = 8;
|
||||
|
||||
if (g_ddraw->bpp != 8)
|
||||
{
|
||||
lpDDSurfaceDesc->lPitch = lpDDSurfaceDesc->dwWidth * 2;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwFlags = DDPF_RGB;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount = 16;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwRBitMask = 0xF800;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwGBitMask = 0x07E0;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat.dwBBitMask = 0x001F;
|
||||
}
|
||||
}
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT dd_GetMonitorFrequency(LPDWORD lpdwFreq)
|
||||
{
|
||||
*lpdwFreq = 60;
|
||||
|
Loading…
x
Reference in New Issue
Block a user