// Create the buffer surface static int MakeBufferSurface() { int Ret=0; int UseSys=0; DDSURFACEDESC ddsd; UseSys=AutodetectUseSys(pDD); DispBuff=NULL; memset(&ddsd,0,sizeof(ddsd)); ddsd.dwSize=sizeof(ddsd); ddsd.dwFlags=DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT; ddsd.dwWidth=ScrnWidth; ddsd.dwHeight=ScrnHeight; TryAgain: ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN; if (UseSys) ddsd.ddsCaps.dwCaps|=DDSCAPS_SYSTEMMEMORY; else ddsd.ddsCaps.dwCaps|=DDSCAPS_VIDEOMEMORY; Ret=pDD->CreateSurface(&ddsd,&DispBuff,NULL); if (Ret<0 && UseSys!=1) { UseSys=1; goto TryAgain; } // Try again in system memory if (Ret<0) return 1; if (DispBuff==NULL) return 1; // Find out the color depth GetSurfaceFormat(DispBuff,&DispFormat,&DispBpp); // Clear it SurfaceClear(DispBuff,0); return 0; }
// Create a secondary DD surface for the screen static int BlitFXMakeSurf() { int nRet; DDSURFACEDESC2 ddsd; if (BlitFXDD == NULL) { return 1; } nUseSys = nVidTransferMethod; if (nUseSys < 0) { nUseSys = AutodetectUseSys(); } nDirectAccess = 0; if (nUseSys == 0 && nUseBlitter != 0) { nDirectAccess = (nVidBlitterOpt[nVidSelect] >> 9) & 1 ^ 1; }