1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-19 15:49:37 +01:00
cnc-ddraw/inc/dd.h

142 lines
3.3 KiB
C
Raw Normal View History

2020-10-13 09:20:52 +02:00
#ifndef DD_H
#define DD_H
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "ddraw.h"
typedef HRESULT(WINAPI* DIRECTDRAWCREATEPROC)(GUID FAR*, LPDIRECTDRAW FAR*, IUnknown FAR*);
2020-10-13 09:20:52 +02:00
ULONG dd_AddRef();
ULONG dd_Release();
HRESULT dd_EnumDisplayModes(DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback);
HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE h);
2021-06-02 23:07:55 +02:00
HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp, BOOL set_by_game);
2020-10-13 09:20:52 +02:00
HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags);
HRESULT dd_RestoreDisplayMode();
HRESULT dd_GetCaps(LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDEmulCaps);
2020-10-20 16:38:51 +02:00
HRESULT dd_GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc);
2020-10-13 22:55:49 +02:00
HRESULT dd_GetMonitorFrequency(LPDWORD lpdwFreq);
2020-10-13 09:20:52 +02:00
HRESULT dd_GetAvailableVidMem(void* lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree);
HRESULT dd_GetVerticalBlankStatus(LPBOOL lpbIsInVB);
2020-10-15 05:13:37 +02:00
HRESULT dd_CreateEx(GUID* lpGuid, LPVOID* lplpDD, REFIID iid, IUnknown* pUnkOuter);
2020-10-13 09:20:52 +02:00
#define RESLIST_NORMAL 0
#define RESLIST_MINI 1
#define RESLIST_FULL 2
2020-10-13 09:20:52 +02:00
typedef struct speed_limiter
{
DWORD tick_length;
LONGLONG tick_length_ns;
HANDLE htimer;
LARGE_INTEGER due_time;
BOOL use_blt_or_flip;
} speed_limiter;
struct IDirectDrawSurfaceImpl;
extern struct cnc_ddraw *g_ddraw;
typedef struct cnc_ddraw
{
ULONG ref;
DWORD width;
DWORD height;
DWORD bpp;
BOOL windowed;
BOOL border;
BOOL boxing;
DEVMODE mode;
struct IDirectDrawSurfaceImpl *primary;
char title[128];
CRITICAL_SECTION cs;
2020-10-13 09:20:52 +02:00
/* real export from system32\ddraw.dll */
HMODULE real_dll;
DIRECTDRAWCREATEPROC DirectDrawCreate;
2021-05-29 20:52:57 +02:00
LPDIRECTDRAW real_dd;
2020-10-13 09:20:52 +02:00
struct
{
int maxfps;
2020-10-18 02:40:45 +02:00
int minfps;
DWORD minfps_tick_len;
2020-10-13 09:20:52 +02:00
int width;
int height;
int bpp;
HDC hdc;
int *tex;
HANDLE thread;
BOOL run;
HANDLE sem;
DEVMODE mode;
struct { int width; int height; int x; int y; } viewport;
LONG palette_updated;
LONG surface_updated;
float scale_w;
float scale_h;
float unscale_w;
float unscale_h;
} render;
HWND hwnd;
2021-03-02 22:50:06 +01:00
WNDPROC wndproc;
2021-05-10 04:00:45 +02:00
struct { DWORD x; DWORD y; } cursor;
2020-10-13 09:20:52 +02:00
BOOL locked;
BOOL adjmouse;
BOOL devmode;
BOOL vsync;
BOOL vhack;
int upscale_hack_width;
int upscale_hack_height;
2020-10-13 10:53:30 +02:00
BOOL isredalert;
BOOL iscnc1;
BOOL iskkndx;
2021-05-15 02:58:07 +02:00
LONG upscale_hack_active;
2020-10-13 09:20:52 +02:00
DWORD (WINAPI *renderer)(void);
BOOL fullscreen;
BOOL maintas;
BOOL noactivateapp;
BOOL handlemouse;
char shader[MAX_PATH];
BOOL wine;
BOOL altenter;
BOOL hidecursor;
BOOL accurate_timers;
BOOL resizable;
BOOL nonexclusive;
2021-05-23 06:16:58 +02:00
BOOL fixpitch;
BOOL fixchildwindows;
2021-06-02 14:29:25 +02:00
BOOL fixwndprochook;
BOOL d3d9linear;
BOOL gdilinear;
2021-05-04 22:49:22 +02:00
BOOL backbuffer;
BOOL passthrough;
int resolutions;
2021-06-09 07:24:17 +02:00
BOOL armadahack;
2021-02-19 03:24:11 +01:00
int maxgameticks;
BOOL alt_key_down;
2020-10-13 09:20:52 +02:00
BOOL bnet_active;
BOOL bnet_was_fullscreen;
BOOL bnet_was_upscaled;
RECT bnet_win_rect;
POINT bnet_pos;
int mouse_y_adjust;
void* last_freed_palette; // Dungeon Keeper hack
BOOL child_window_exists;
DWORD last_set_window_pos_tick; // WINE hack
BOOL show_driver_warning;
speed_limiter ticks_limiter;
speed_limiter flip_limiter;
} cnc_ddraw;
#endif