\r
// Create the backbuffer surface\r
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;\r
- ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE;\r
+ ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;\r
ddsd.dwWidth = EmuWidth;\r
ddsd.dwHeight = EmuHeight;\r
\r
ret = m_pddsBackBuffer->Lock(NULL, &sd, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WAIT|DDLOCK_WRITEONLY, NULL);\r
if (ret) { LOGFAIL(); return 1; }\r
\r
- //dprintf2("w: %i h: %i pi: %i pf: %i\n", sd.dwWidth, sd.dwHeight, sd.lPitch, sd.ddpfPixelFormat.dwRGBBitCount);\r
+ //lprintf("w: %i h: %i pi: %i pf: %i\n", sd.dwWidth, sd.dwHeight, sd.lPitch, sd.ddpfPixelFormat.dwRGBBitCount);\r
\r
if (sd.ddpfPixelFormat.dwRGBBitCount == 32)\r
{\r
dst = (int *)((char *)dst + sd.lPitch);\r
}\r
}\r
+ else if (sd.ddpfPixelFormat.dwRGBBitCount == 24) /* wine uses this for me */\r
+ {\r
+ void *dst = sd.lpSurface;\r
+ for (y = 0; y < EmuHeight; y++)\r
+ {\r
+ unsigned char *dst1 = (unsigned char *) dst;\r
+ for (x = 0; x < EmuWidth; x++, dst1 += 3)\r
+ {\r
+ int s = *ps++;\r
+ dst1[2] = (s&0xf800)>>8; dst1[1] = (s&0x07e0)>>3; dst1[0] = s<<3; // BGR\r
+ }\r
+ dst = (void *)((char *)dst + sd.lPitch);\r
+ }\r
+ }\r
else if (sd.ddpfPixelFormat.dwRGBBitCount == 16)\r
{\r
unsigned short *dst = (unsigned short *)sd.lpSurface;\r
\r
static int DirectPresentDDraw()\r
{\r
- int ret = m_pddsFrontBuffer->Blt(&FrameRectMy, m_pddsBackBuffer, &EmuScreenRect, DDBLT_WAIT, NULL);\r
+ int ret = 0;\r
+ if (FrameRectMy.right - FrameRectMy.left > 0 && FrameRectMy.bottom - FrameRectMy.top > 0)\r
+ ret = m_pddsFrontBuffer->Blt(&FrameRectMy, m_pddsBackBuffer, &EmuScreenRect, DDBLT_WAIT, NULL);\r
if (ret) { LOGFAIL(); return 1; }\r
return 0;\r
}\r
}\r
\r
#ifdef USE_D3D\r
+#define PI 3.14159265f\r
+\r
static int MakeVertexList()\r
{\r
struct CustomVertex *vert=NULL,*pv=NULL;\r
TexScreenSwizzle();\r
#else\r
ret=TexScreenLinear();\r
- if (ret) dprintf2("TexScreenLinear failed\n");\r
+ if (ret) lprintf("TexScreenLinear failed\n");\r
#endif\r
\r
SetupMatrices();\r
\r
// Copy vertices in:\r
VertexBuffer->Lock(0,sizeof(VertexList),&lock,0);\r
- if (lock==NULL) { dprintf2("VertexBuffer->Lock failed\n"); return 1; }\r
+ if (lock==NULL) { lprintf("VertexBuffer->Lock failed\n"); return 1; }\r
memcpy(lock,VertexList,sizeof(VertexList));\r
VertexBuffer->Unlock();\r
\r