DXPOLY_SaveScreen

This commit is contained in:
krystalgamer 2024-09-10 17:42:25 +02:00
parent 1a14fd6a46
commit e4a79832cc
3 changed files with 49 additions and 4 deletions

View File

@ -32,7 +32,7 @@ EXPORT u32 gDisplayDeviceIndex;
EXPORT LPDIRECTDRAW7 lpDD;
EXPORT DWORD gTotalVideoMemory;
EXPORT LPDIRECTDRAWSURFACE7 g_pDDS_SaveScreen;
LPDIRECTDRAWSURFACE7 g_pDDS_SaveScreen;
EXPORT LPDIRECTDRAWSURFACE7 g_pDDS_Scene;
EXPORT LPDIRECTDRAWCLIPPER g_pClipper;
@ -47,7 +47,7 @@ EXPORT SVideoMode gVideoModes[5] =
};
EXPORT struct tagPOINT Point;
EXPORT RECT gRect;
RECT gRect;
EXPORT LPDIRECT3D7 g_D3D7;

View File

@ -121,6 +121,8 @@ EXPORT extern LPDIRECTSOUND8 g_pDS;
EXPORT extern LPDIRECT3DDEVICE7 g_D3DDevice7;
EXPORT extern i32 gDxOptionRelated;
EXPORT extern LPDIRECTDRAWSURFACE7 g_pDDS_SaveScreen;
EXPORT extern RECT gRect;
void validate_DXContext(void);
void validate_DXContextEntry(void);

View File

@ -5,6 +5,7 @@
#include <cstring>
EXPORT i32 gScreenshotNumber;
EXPORT u32 gCurrentBlendMode;
EXPORT char* gD3DDepthCompareNames[9] =
{
@ -596,10 +597,52 @@ void DXPOLY_Init(u32)
printf("DXPOLY_Init(u32)");
}
// @MEDIUMTODO
// @Ok
// @Matching
void DXPOLY_SaveScreen(void)
{
printf("DXPOLY_SaveScreen(void)");
char v7[32];
sprintf(v7, "scrn%4.4i.bmp", ++gScreenshotNumber);
DDSURFACEDESC2 v6;
memset(&v6, 0, sizeof(v6));
v6.dwSize = sizeof(v6);
if (gDxOptionRelated)
{
u32 width, height;
DXINIT_GetCurrentResolution(&width, &height);
HRESULT hr = g_pDDS_SaveScreen->Lock(&gRect, &v6, 16, 0);
D3D_ERROR_LOG_AND_QUIT(hr);
DXPOLY_SaveSurfaceAsBMP(
v7,
v6.lpSurface,
width,
height,
v6.lPitch,
&v6.ddpfPixelFormat,
false);
g_pDDS_SaveScreen->Unlock(&gRect);
}
else
{
HRESULT hr = g_pDDS_SaveScreen->Lock(0, &v6, 16, 0);
D3D_ERROR_LOG_AND_QUIT(hr);
DXPOLY_SaveSurfaceAsBMP(
v7,
v6.lpSurface,
v6.dwWidth,
v6.dwHeight,
v6.lPitch,
&v6.ddpfPixelFormat,
false);
g_pDDS_SaveScreen->Unlock(0);
}
DXERR_printf("Saved Screenshot %i.\r\n", gScreenshotNumber);
}
// @MEDIUMTODO