DDSURFACEDESC2 ddsd;
HRESULT hRet;
LPDIRECTDRAW pDD;
hRet = DirectDrawCreate(NULL, &pDD, NULL);
if (hRet != DD_OK)
return
InitFail(hWnd, hRet, "DirectDrawCreate FAILED");
hRet = pDD->QueryInterface(IID_IDirectDraw4, (LPVOID *) & g_pDD);
if (hRet != DD_OK)
return
InitFail(hWnd, hRet, "QueryInterface FAILED");
hRet = pDD->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
if (hRet != DD_OK)
return
InitFail(hWnd, hRet, "SetCooperativeLevel FAILED");
hRet = pDD->SetDisplayMode(640,480,SCREEN_BIT_DEPTH);
if (hRet != DD_OK)
return
InitFail(hWnd, hRet, "SetDisplayMode FAILED");
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSPrimary, NULL);
if (hRet != DD_OK)
return
InitFail(hWnd, hRet, "CreateSurface FAILED");
DDSCAPS2 ddsc;
ddsc.dwCaps = DDSCAPS_BACKBUFFER;
hRet = g_pDDSPrimary->GetAttachedSurface(&ddsc,&g_pDDSOffScreen);
if (hRet != DD_OK)
return
InitFail(hWnd,hRet,"GetAttachedSurface FAILED");
if (SCREEN_BIT_DEPTH > 8){
g_pDDPal=NULL;
}else{
g_pDDPal =
DDLoadPalette(g_pDD, szBitmap);
if (g_pDDPal){
g_pDDSPrimary->SetPalette(g_pDDPal);
g_pDDPal->Release();
g_pDDPal=NULL;
}
}
g_dwEraseColor =
DDColorMatch(g_pDDSPrimary,
(120<<16)
+(120<<8)
+36);
g_pDDSOne =
DDLoadBitmap(g_pDD, szBitmap, 0, 0);
if (g_pDDSOne == NULL)
return
InitFail(hWnd, hRet, "DDLoadBitmap FAILED");
return DD_OK;