diff --git a/ddraw.rc b/ddraw.rc index 382faff..f2c85fb 100644 --- a/ddraw.rc +++ b/ddraw.rc @@ -2,7 +2,7 @@ #define vxstr(a,b,c,d) str(a##.##b##.##c##.##d) #define str(s) #s -#define VERSION 1,1,7,1 +#define VERSION 1,1,7,3 1 VERSIONINFO FILEVERSION VERSION diff --git a/src/render.c b/src/render.c index 5ca55dd..8b122d8 100644 --- a/src/render.c +++ b/src/render.c @@ -418,13 +418,26 @@ DWORD WINAPI render_main(void) #if _DEBUG static DWORD tick_fps = 0; static DWORD frame_count = 0; + static char debugText[512] = { 0 }; + static double frameTime = 0; + RECT debugrc = { 0, 0, ddraw->width, ddraw->height }; tick_start = timeGetTime(); if (tick_start >= tick_fps) { - printf("Frames: %lu - Elapsed: %lu ms\n", frame_count, (tick_start - tick_fps) + 1000); + snprintf( + debugText, sizeof(debugText), + "FPS: %lu | Time: %2.2f ms", + frame_count, frameTime); + frame_count = 0; tick_fps = tick_start + 1000; + + CounterStart(); } + + if (ddraw->primary && ddraw->primary->palette) + DrawText(ddraw->primary->hDC, debugText, -1, &debugrc, DT_NOCLIP); + frame_count++; #endif @@ -595,6 +608,10 @@ DWORD WINAPI render_main(void) SwapBuffers(ddraw->render.hDC); +#if _DEBUG + if (frame_count == 1) frameTime = CounterStop(); +#endif + if (maxfps > 0) { tick_end = timeGetTime(); diff --git a/src/render_soft.c b/src/render_soft.c index f41db15..40b73d0 100644 --- a/src/render_soft.c +++ b/src/render_soft.c @@ -87,13 +87,26 @@ DWORD WINAPI render_soft_main(void) #if _DEBUG static DWORD tick_fps = 0; static DWORD frame_count = 0; + static char debugText[512] = { 0 }; + static double frameTime = 0; + RECT debugrc = { 0, 0, ddraw->width, ddraw->height }; tick_start = timeGetTime(); if (tick_start >= tick_fps) { - printf("Frames: %lu - Elapsed: %lu ms\n", frame_count, (tick_start - tick_fps) + 1000); + snprintf( + debugText, sizeof(debugText), + "FPS: %lu | Time: %2.2f ms", + frame_count, frameTime); + frame_count = 0; tick_fps = tick_start + 1000; + + CounterStart(); } + + if (ddraw->primary && ddraw->primary->palette) + DrawText(ddraw->primary->hDC, debugText, -1, &debugrc, DT_NOCLIP); + frame_count++; #endif @@ -164,6 +177,10 @@ DWORD WINAPI render_soft_main(void) LeaveCriticalSection(&ddraw->cs); +#if _DEBUG + if (frame_count == 1) frameTime = CounterStop(); +#endif + if(maxfps > 0) { tick_end = timeGetTime(); diff --git a/src/surface.c b/src/surface.c index fea4362..78600fb 100644 --- a/src/surface.c +++ b/src/surface.c @@ -508,6 +508,12 @@ HRESULT __stdcall ddraw_CreateSurface(IDirectDrawImpl *This, LPDDSURFACEDESC lpD Surface->bmi->bmiColors[i].rgbReserved = 0; } +#if _DEBUG + Surface->bmi->bmiColors[255].rgbRed = 250; + Surface->bmi->bmiColors[255].rgbGreen = 250; + Surface->bmi->bmiColors[255].rgbBlue = 250; +#endif + Surface->lXPitch = Surface->bpp / 8; Surface->lPitch = Surface->width * Surface->lXPitch;