102 Patches: Detours to the Rescue
C reference for DttR maintainers and modders.
Loading...
Searching...
No Matches
graphics_com_private.h
Go to the documentation of this file.
1#ifndef DTTR_D3D_COM_H
2#define DTTR_D3D_COM_H
3
4#include <d3d.h>
5#include <ddraw.h>
6#include <stdbool.h>
7#include <stddef.h>
8#include <stdint.h>
9#include <windows.h>
10
11// D3D and DDraw struct sizes used by stub memset and size checks
12// https://learn.microsoft.com/en-us/windows/win32/api/ddraw/ns-ddraw-ddsurfacedesc2
13// https://learn.microsoft.com/en-us/windows/win32/api/ddraw/ns-ddraw-ddpixelformat
14#define DTTR_SIZEOF_D3DDEVICEDESC7 224
15#define DTTR_SIZEOF_D3DMATERIAL7 76
16#define DTTR_SIZEOF_D3DLIGHT7 104
17#define DTTR_SIZEOF_D3DCLIPSTATUS 8
18#define DTTR_SIZEOF_DDPIXELFORMAT 32
19#define DTTR_SIZEOF_DDSCAPS2 16
20#define DTTR_SIZEOF_DDSURFACEDESC 108
21#define DTTR_SIZEOF_DDSURFACEDESC2 124
22#define DTTR_SIZEOF_DDDEVICEIDENTIFIER2 1084
23
24// DirectDraw bit-depth flags (DDBD_*)
25// https://learn.microsoft.com/en-us/windows/win32/api/ddraw/ns-ddraw-ddcaps_dx7
26#define DTTR_DDBD_16 0x00000400
27#define DTTR_DDBD_32 0x00000200
28
29// HRESULT and error codes
30#define DTTR_DDERR_GENERIC 0x887601C2
31
32// D3D Flexible Vertex Format (FVF) masks and flags
33// https://learn.microsoft.com/en-us/windows/win32/direct3d9/d3dfvf
34// https://learn.microsoft.com/en-us/windows/win32/direct3d9/fixed-function-fvf-codes
35#define DTTR_D3DFVF_POSITION_MASK 0x400E
36
37#define DTTR_D3DFVF_XYZ 0x0002
38#define DTTR_D3DFVF_XYZRHW 0x0004
39#define DTTR_D3DFVF_XYZB1 0x0006
40#define DTTR_D3DFVF_XYZB2 0x0008
41#define DTTR_D3DFVF_XYZB3 0x000A
42#define DTTR_D3DFVF_XYZB4 0x000C
43#define DTTR_D3DFVF_XYZB5 0x000E
44#define DTTR_D3DFVF_XYZW 0x4002
45
46#define DTTR_D3DFVF_NORMAL 0x010
47#define DTTR_D3DFVF_PSIZE 0x020
48#define DTTR_D3DFVF_DIFFUSE 0x040
49#define DTTR_D3DFVF_SPECULAR 0x080
50#define DTTR_D3DFVF_TEXCOUNT_MASK 0xF00
51#define DTTR_D3DFVF_TEXCOUNT_SHIFT 8
52#define DTTR_D3DFVF_LASTBETA_UBYTE4 0x1000
53#define DTTR_D3DFVF_LASTBETA_D3DCOLOR 0x8000
54
55// D3D primitive types (D3DPRIMITIVETYPE enum values)
56// https://learn.microsoft.com/en-us/windows/win32/direct3d9/d3dprimitivetype
57#define DTTR_D3DPT_POINTLIST 1
58#define DTTR_D3DPT_LINELIST 2
59#define DTTR_D3DPT_LINESTRIP 3
60#define DTTR_D3DPT_TRIANGLELIST 4
61#define DTTR_D3DPT_TRIANGLESTRIP 5
62#define DTTR_D3DPT_TRIANGLEFAN 6
63
64#define DTTR_COM_NOOP_HRESULT(fn, ...) \
65 static HRESULT __stdcall fn(__VA_ARGS__) { \
66 return S_OK; \
67 }
68
69#define DTTR_COM_ADDREF(fn, type) \
70 static ULONG __stdcall fn(type *self) { \
71 return 1; \
72 }
73
74#define DTTR_COM_RELEASE(fn, type) \
75 static ULONG __stdcall fn(type *self) { \
76 return 0; \
77 }
78
79#define DTTR_COM_QI_SELF(fn, type) \
80 static HRESULT __stdcall fn(type *self, void *riid, void **ppv) { \
81 if (ppv) \
82 *ppv = self; \
83 return S_OK; \
84 }
85
86#define DTTR_COM_STUB_SET(fn, out_type, val, ...) \
87 static HRESULT __stdcall fn(__VA_ARGS__, out_type *out) { \
88 if (out) \
89 *out = val; \
90 return S_OK; \
91 }
92
93#define DTTR_COM_STUB_MEMSET(fn, size, buf_type, ...) \
94 static HRESULT __stdcall fn(__VA_ARGS__, buf_type *buf) { \
95 if (buf) \
96 memset(buf, 0, size); \
97 return S_OK; \
98 }
99
103
107
109 HRESULT(__stdcall *QueryInterface)(
111 void *riid,
112 void **ppv
113 ); // 0x00
114 ULONG(__stdcall *AddRef)(DTTR_Graphics_COM_Direct3DDevice7 *self); // 0x04
115 ULONG(__stdcall *Release)(DTTR_Graphics_COM_Direct3DDevice7 *self); // 0x08
116 HRESULT(__stdcall *GetCaps)(
118 void *caps
119 ); // 0x0C
120 HRESULT(__stdcall *EnumTextureFormats)(
122 void *cb,
123 void *ctx
124 ); // 0x10
125 HRESULT(__stdcall *BeginScene)(DTTR_Graphics_COM_Direct3DDevice7 *self); // 0x14
126 HRESULT(__stdcall *EndScene)(DTTR_Graphics_COM_Direct3DDevice7 *self); // 0x18
127 HRESULT(__stdcall *GetDirect3D)(
129 void **d3d
130 ); // 0x1C
131 HRESULT(__stdcall *SetRenderTarget)(
133 void *surf,
134 DWORD f
135 ); // 0x20
136 HRESULT(__stdcall *GetRenderTarget)(
138 void **surf
139 ); // 0x24
140 HRESULT(__stdcall *Clear)(
142 DWORD n,
143 void *rects,
144 DWORD f,
145 DWORD col,
146 float z,
147 DWORD s
148 ); // 0x28
149 HRESULT(__stdcall *SetTransform)(
151 DWORD type,
152 void *mat
153 ); // 0x2C
154 HRESULT(__stdcall *GetTransform)(
156 DWORD type,
157 void *mat
158 ); // 0x30
159 HRESULT(__stdcall *SetViewport)(
161 void *vp
162 ); // 0x34
163 HRESULT(__stdcall *MultiplyTransform)(
165 DWORD type,
166 void *m
167 ); // 0x38
168 HRESULT(__stdcall *GetViewport)(
170 void *vp
171 ); // 0x3C
172 HRESULT(__stdcall *SetMaterial)(
174 void *mat
175 ); // 0x40
176 HRESULT(__stdcall *GetMaterial)(
178 void *mat
179 ); // 0x44
180 HRESULT(__stdcall *SetLight)(
182 DWORD idx,
183 void *light
184 ); // 0x48
185 HRESULT(__stdcall *GetLight)(
187 DWORD idx,
188 void *light
189 ); // 0x4C
190 HRESULT(__stdcall *SetRenderState)(
192 DWORD state,
193 DWORD val
194 ); // 0x50
195 HRESULT(__stdcall *GetRenderState)(
197 DWORD state,
198 DWORD *v
199 ); // 0x54
201 HRESULT(__stdcall *EndStateBlock)(
203 DWORD *block
204 ); // 0x5C
205 HRESULT(__stdcall *PreLoad)(
207 void *tex
208 ); // 0x60
209 HRESULT(__stdcall *DrawPrimitive)(
211 DWORD prim,
212 DWORD fvf,
213 void *v,
214 DWORD n,
215 DWORD f
216 ); // 0x64
217 HRESULT(__stdcall *DrawIndexedPrimitive)(
219 DWORD prim,
220 DWORD fvf,
221 void *v,
222 DWORD vn,
223 WORD *i,
224 DWORD in,
225 DWORD f
226 ); // 0x68
227 HRESULT(__stdcall *SetClipStatus)(
229 void *status
230 ); // 0x6C
231 HRESULT(__stdcall *GetClipStatus)(
233 void *status
234 ); // 0x70
235 HRESULT(__stdcall *DrawPrimitiveStrided)(
237 DWORD prim,
238 DWORD fvf,
239 void *d,
240 DWORD n,
241 DWORD f
242 ); // 0x74
243 HRESULT(__stdcall *DrawIndexedPrimitiveStrided)(
245 DWORD prim,
246 DWORD fvf,
247 void *d,
248 DWORD vn,
249 WORD *i,
250 DWORD in,
251 DWORD f
252 ); // 0x78
253 HRESULT(__stdcall *DrawPrimitiveVB)(
255 DWORD prim,
256 void *vb,
257 DWORD st,
258 DWORD n,
259 DWORD f
260 ); // 0x7C
261 HRESULT(__stdcall *DrawIndexedPrimitiveVB)(
263 DWORD prim,
264 void *vb,
265 DWORD st,
266 DWORD vn,
267 WORD *i,
268 DWORD in,
269 DWORD f
270 ); // 0x80
271 HRESULT(__stdcall *ComputeSphereVisibility)(
273 void *c,
274 float *r,
275 DWORD n,
276 DWORD f,
277 DWORD *res
278 ); // 0x84
279 HRESULT(__stdcall *GetTexture)(
281 DWORD stage,
282 void **tex
283 ); // 0x88
284 HRESULT(__stdcall *SetTexture)(
286 DWORD stage,
287 void *tex
288 ); // 0x8C
289 HRESULT(__stdcall *GetTextureStageState)(
291 DWORD stg,
292 DWORD t,
293 DWORD *v
294 ); // 0x90
295 HRESULT(__stdcall *SetTextureStageState)(
297 DWORD stg,
298 DWORD t,
299 DWORD v
300 ); // 0x94
301 HRESULT(__stdcall *ValidateDevice)(
303 DWORD *passes
304 ); // 0x98
305 HRESULT(__stdcall *ApplyStateBlock)(
307 DWORD block
308 ); // 0x9C
309 HRESULT(__stdcall *CaptureStateBlock)(
311 DWORD block
312 ); // 0xA0
313 HRESULT(__stdcall *DeleteStateBlock)(
315 DWORD block
316 ); // 0xA4
317 HRESULT(__stdcall *CreateStateBlock)(
319 DWORD t,
320 DWORD *blk
321 ); // 0xA8
322 HRESULT(__stdcall *Load)(
324 void *dst,
325 void *dstPt,
326 void *src,
327 void *srcR,
328 DWORD f
329 ); // 0xAC
330 HRESULT(__stdcall *LightEnable)(
332 DWORD idx,
333 BOOL enable
334 ); // 0xB0
335 HRESULT(__stdcall *GetLightEnable)(
337 DWORD idx,
338 BOOL *en
339 ); // 0xB4
340 HRESULT(__stdcall *SetClipPlane)(
342 DWORD idx,
343 float *plane
344 ); // 0xB8
345 HRESULT(__stdcall *GetClipPlane)(
347 DWORD idx,
348 float *plane
349 ); // 0xBC
350 HRESULT(__stdcall *GetInfo)(
352 DWORD id,
353 void *info,
354 DWORD sz
355 ); // 0xC0
357
361
363 HRESULT(__stdcall *QueryInterface)(
365 void *riid,
366 void **ppv
367 ); // 0x00
368 ULONG(__stdcall *AddRef)(DTTR_Graphics_COM_DirectDraw7 *self); // 0x04
369 ULONG(__stdcall *Release)(DTTR_Graphics_COM_DirectDraw7 *self); // 0x08
370 HRESULT(__stdcall *Compact)(DTTR_Graphics_COM_DirectDraw7 *self); // 0x0C
371 HRESULT(__stdcall *CreateClipper)(
373 DWORD f,
374 void **clip,
375 void *outer
376 ); // 0x10
377 HRESULT(__stdcall *CreatePalette)(
379 DWORD f,
380 void *colors,
381 void **pal,
382 void *outer
383 ); // 0x14
384 HRESULT(__stdcall *CreateSurface)(
386 void *desc,
387 void **surf,
388 void *outer
389 ); // 0x18
390 HRESULT(__stdcall *DuplicateSurface)(
392 void *src,
393 void **dst
394 ); // 0x1C
395 HRESULT(__stdcall *EnumDisplayModes)(
397 DWORD f,
398 void *desc,
399 void *ctx,
400 void *cb
401 ); // 0x20
402 HRESULT(__stdcall *EnumSurfaces)(
404 DWORD f,
405 void *desc,
406 void *ctx,
407 void *cb
408 ); // 0x24
410 HRESULT(__stdcall *GetCaps)(
412 void *drvCaps,
413 void *helCaps
414 ); // 0x2C
415 HRESULT(__stdcall *GetDisplayMode)(
417 void *desc
418 ); // 0x30
419 HRESULT(__stdcall *GetFourCCCodes)(
421 DWORD *num,
422 DWORD *codes
423 ); // 0x34
424 HRESULT(__stdcall *GetGDISurface)(
426 void **surf
427 ); // 0x38
428 HRESULT(__stdcall *GetMonitorFrequency)(
430 DWORD *freq
431 ); // 0x3C
432 HRESULT(__stdcall *GetScanLine)(
434 DWORD *line
435 ); // 0x40
436 HRESULT(__stdcall *GetVerticalBlankStatus)(
438 DWORD *inVB
439 ); // 0x44
440 HRESULT(__stdcall *Initialize)(
442 void *guid
443 ); // 0x48
445 HRESULT(__stdcall *SetCooperativeLevel)(
447 HWND hwnd,
448 DWORD f
449 ); // 0x50
450 HRESULT(__stdcall *SetDisplayMode)(
452 DWORD w,
453 DWORD h,
454 DWORD bpp,
455 DWORD hz,
456 DWORD f
457 ); // 0x54
458 HRESULT(__stdcall *WaitForVerticalBlank)(
460 DWORD f,
461 HANDLE evt
462 ); // 0x58
463 HRESULT(__stdcall *GetAvailableVidMem)(
465 void *caps,
466 DWORD *tot,
467 DWORD *free
468 ); // 0x5C
469 HRESULT(__stdcall *GetSurfaceFromDC)(
471 HDC dc,
472 void **surf
473 ); // 0x60
476 HRESULT(__stdcall *GetDeviceIdentifier)(
478 void *id,
479 DWORD f
480 ); // 0x6C
481 HRESULT(__stdcall *StartModeTest)(
483 void *modes,
484 DWORD n,
485 DWORD f
486 ); // 0x70
487 HRESULT(__stdcall *EvaluateMode)(
489 DWORD f,
490 DWORD *timeout
491 ); // 0x74
493
497
499 HRESULT(__stdcall *QueryInterface)(
501 void *riid,
502 void **ppv
503 );
506 HRESULT(__stdcall *EnumDevices)(
508 void *cb,
509 void *ctx
510 );
511 HRESULT(__stdcall *CreateDevice)(
513 void *guid,
514 void *surf,
515 void **dev
516 );
517 HRESULT(__stdcall *CreateVertexBuffer)(
519 void *desc,
520 void **vb,
521 DWORD f
522 );
523 HRESULT(__stdcall *EnumZBufferFormats)(
525 void *guid,
526 void *cb,
527 void *ctx
528 );
531
535
538
540 HRESULT(__stdcall *QueryInterface)(
542 void *riid,
543 void **ppv
544 );
547 HRESULT(__stdcall *GetHandle)(
549 void *device,
550 DWORD *handle
551 );
552 HRESULT(__stdcall *PaletteChanged)(
554 DWORD start,
556 );
557 HRESULT(__stdcall *Load)(DTTR_Graphics_COM_Direct3DTexture2 *self, void *srcTexture);
559
564
566 HRESULT(__stdcall *QueryInterface)(
568 void *riid,
569 void **ppv
570 );
573 HRESULT(__stdcall *AddAttachedSurface)(
575 void *surf
576 );
577 HRESULT(__stdcall *AddOverlayDirtyRect)(
579 void *rect
580 );
581 HRESULT(__stdcall *Blt)(
583 void *dstRect,
584 void *srcSurf,
585 void *srcRect,
586 DWORD flags,
587 void *bltFx
588 );
589 HRESULT(__stdcall *BltBatch)(
591 void *batch,
592 DWORD count,
594 );
595 HRESULT(__stdcall *BltFast)(
597 DWORD x,
598 DWORD y,
599 void *srcSurf,
600 void *srcRect,
602 );
603 HRESULT(__stdcall *DeleteAttachedSurface)(
605 DWORD flags,
606 void *surf
607 );
608 HRESULT(__stdcall *EnumAttachedSurfaces)(
610 void *ctx,
611 void *cb
612 );
613 HRESULT(__stdcall *EnumOverlayZOrders)(
615 DWORD flags,
616 void *ctx,
617 void *cb
618 );
619 HRESULT(__stdcall *Flip)(
621 void *target,
623 );
624 HRESULT(__stdcall *GetAttachedSurface)(
626 void *caps,
627 void **surf
628 );
629 HRESULT(__stdcall *GetBltStatus)(
632 );
634 HRESULT(__stdcall *GetClipper)(
636 void **clipper
637 );
638 HRESULT(__stdcall *GetColorKey)(
640 DWORD flags,
641 void *colorKey
642 );
643 HRESULT(__stdcall *GetDC)(DTTR_Graphics_COM_DirectDrawSurface7 *self, HDC *dc);
644 HRESULT(__stdcall *GetFlipStatus)(
647 );
648 HRESULT(__stdcall *GetOverlayPosition)(
650 LONG *x,
651 LONG *y
652 );
653 HRESULT(__stdcall *GetPalette)(
655 void **palette
656 );
657 HRESULT(__stdcall *GetPixelFormat)(
659 void *fmt
660 );
661 HRESULT(__stdcall *GetSurfaceDesc)(
663 void *desc
664 );
665 HRESULT(__stdcall *Initialize)(
667 void *dd,
668 void *desc
669 );
671 HRESULT(__stdcall *Lock)(
673 void *rect,
674 void *desc,
675 DWORD flags,
676 HANDLE event
677 );
680 HRESULT(__stdcall *SetClipper)(
682 void *clipper
683 );
684 HRESULT(__stdcall *SetColorKey)(
686 DWORD flags,
687 void *colorKey
688 );
689 HRESULT(__stdcall *SetOverlayPosition)(
691 LONG x,
692 LONG y
693 );
694 HRESULT(__stdcall *SetPalette)(
696 void *palette
697 );
699 HRESULT(__stdcall *UpdateOverlay)(
701 void *srcRect,
702 void *dstSurf,
703 void *dstRect,
704 DWORD flags,
705 void *fx
706 );
707 HRESULT(__stdcall *UpdateOverlayDisplay)(
710 );
711 HRESULT(__stdcall *UpdateOverlayZOrder)(
713 DWORD flags,
714 void *refSurf
715 );
716 HRESULT(__stdcall *GetDDInterface)(
718 void **dd
719 );
721 HRESULT(__stdcall *PageUnlock)(
724 );
725 HRESULT(__stdcall *SetSurfaceDesc)(
727 void *desc,
729 );
730 HRESULT(__stdcall *SetPrivateData)(
732 void *tag,
733 void *data,
734 DWORD size,
736 );
737 HRESULT(__stdcall *GetPrivateData)(
739 void *tag,
740 void *data,
741 DWORD *size
742 );
743 HRESULT(__stdcall *FreePrivateData)(
745 void *tag
746 );
747 HRESULT(__stdcall *GetUniquenessValue)(
749 DWORD *value
750 );
752 HRESULT(__stdcall *SetPriority)(
754 DWORD priority
755 );
756 HRESULT(__stdcall *GetPriority)(
758 DWORD *priority
759 );
763
766 ULONG refcount;
769 uint32_t width, height;
770 uint32_t bpp; // Either 16 or 32.
771 uint32_t pitch; // Bytes per row.
773 void *pixels; // Game-writable pixel buffer in native format.
774 uint32_t dttr_texture; // GPU texture handle, or 0 until created.
775 uint32_t content_width; // Blt content width, or 0 for the full surface.
777 bool locked;
778 bool dirty;
780 uint16_t colorkey; // RGB565 transparent color value.
788
790 uint32_t width,
791 uint32_t height,
792 uint32_t bpp,
793 uint32_t r_mask,
794 uint32_t g_mask,
795 uint32_t b_mask,
796 uint32_t a_mask
797);
798
800 uint32_t width,
801 uint32_t height,
802 uint32_t bpp,
803 uint32_t *out_pitch,
804 size_t *out_pixel_size
805);
806
809);
810
811#endif // DTTR_D3D_COM_H
void * cb
DTTR_Graphics_COM_Direct3DDevice7 void * surface
DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 void void void void * srcR
DTTR_Graphics_COM_Direct3DDevice7 * self
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD DWORD void DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 DWORD void DWORD st
DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 void void * dstPt
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD DWORD void DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 DWORD void DWORD DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 void float * r
DTTR_Graphics_COM_Direct3DDevice7 *self DWORD DWORD fvf
DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 void void void void DWORD f BOOL
DTTR_Graphics_COM_Direct3DDevice7 void DWORD flags DWORD count
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD DWORD void * d
const DTTR_BackendState * state
void void * ctx
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD DWORD void DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 DWORD void DWORD DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 void float DWORD DWORD f DWORD stage
DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 DWORD block DTTR_Graphics_COM_Direct3DDevice7 void * dst
const DTTR_PrimitiveType type
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD DWORD void DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 DWORD void * vb
DTTR_Graphics_COM_Direct3DDevice7 void DWORD flags DWORD void * rects
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD DWORD void DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 DWORD void DWORD DWORD DWORD f DTTR_Graphics_COM_Direct3DDevice7 void * c
DTTR_Graphics_COM_Direct3DDevice7 void DWORD flags DWORD void DWORD DWORD float z
const uint8_t * src
DTTR_Graphics_COM_Direct3DDevice7 void DWORD flags DWORD void DWORD flags
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD prim
DTTR_Graphics_COM_Direct3DDevice7 void *status DTTR_Graphics_COM_Direct3DDevice7 DWORD DWORD void DWORD n
DTTR_Graphics_COM_DirectDraw7 *self DWORD DWORD DWORD bpp
DTTR_Graphics_COM_DirectDraw7 DWORD void void void *cb DTTR_Graphics_COM_DirectDraw7 void * drvCaps
void * caps
void DWORD * tot
DTTR_Graphics_COM_DirectDraw7 *self DWORD DWORD h
DTTR_Graphics_COM_DirectDraw7 DWORD void void void *cb DTTR_Graphics_COM_DirectDraw7 void void *helCaps DWORD * num
DTTR_Graphics_COM_DirectDraw7 DWORD f
DTTR_Graphics_COM_DirectDraw7 *self DWORD DWORD DWORD DWORD hz
DTTR_Graphics_COM_DirectDraw7 DWORD void void void *cb DTTR_Graphics_COM_DirectDraw7 void void *helCaps DWORD DWORD * codes
void DWORD DWORD * free
void * id
DTTR_Graphics_COM_DirectDraw7 *self DWORD w
DTTR_Graphics_COM_DirectDraw7 DWORD void * desc
DTTR_Graphics_COM_DirectDrawSurface7 DWORD flags void DTTR_Graphics_COM_DirectDrawSurface7 *self DTTR_Graphics_COM_DirectDrawSurface7 DWORD flags DTTR_Graphics_COM_DirectDrawSurface7 void * tag
DTTR_Graphics_COM_DirectDrawSurface7 *self DWORD void * colorKey
DTTR_Graphics_COM_DirectDrawSurface7 DWORD DWORD void * srcSurf
const DWORD size
DTTR_Graphics_COM_DirectDrawSurface7 DWORD x
DTTR_Graphics_COM_DirectDrawSurface7 DWORD DWORD void void * srcRect
void * rect
DTTR_Graphics_COM_DirectDrawSurface7 DWORD DWORD y
void void DWORD HANDLE event
DTTR_Graphics_COM_DirectDrawSurface7 DWORD flags void DTTR_Graphics_COM_DirectDrawSurface7 *self DTTR_Graphics_COM_DirectDrawSurface7 DWORD flags DTTR_Graphics_COM_DirectDrawSurface7 void void * data
DTTR_Graphics_COM_DirectDrawSurface7 DWORD DWORD void void DWORD flags DTTR_Graphics_COM_DirectDrawSurface7 void void *cb void * target
DTTR_Graphics_COM_Direct3DDevice7 * dttr_graphics_com_create_direct3ddevice7()
DTTR_Graphics_COM_Direct3D7 * dttr_graphics_com_create_direct3d7()
DTTR_Graphics_COM_DirectDrawSurface7 * dttr_graphics_com_create_directdrawsurface7(uint32_t width, uint32_t height, uint32_t bpp, uint32_t r_mask, uint32_t g_mask, uint32_t b_mask, uint32_t a_mask)
DTTR_Graphics_COM_DirectDraw7 * dttr_graphics_com_create_directdraw7()
DTTR_Graphics_COM_Direct3DTexture2 * dttr_graphics_com_create_direct3d_texture2(DTTR_Graphics_COM_DirectDrawSurface7 *surface)
HRESULT dttr_graphics_com_validate_directdrawsurface7(uint32_t width, uint32_t height, uint32_t bpp, uint32_t *out_pitch, size_t *out_pixel_size)
HRESULT(* QueryInterface)(DTTR_Graphics_COM_Direct3D7 *self, void *riid, void **ppv)
HRESULT(* EvictManagedTextures)(DTTR_Graphics_COM_Direct3D7 *self)
HRESULT(* EnumDevices)(DTTR_Graphics_COM_Direct3D7 *self, void *cb, void *ctx)
HRESULT(* EnumZBufferFormats)(DTTR_Graphics_COM_Direct3D7 *self, void *guid, void *cb, void *ctx)
ULONG(* AddRef)(DTTR_Graphics_COM_Direct3D7 *self)
HRESULT(* CreateVertexBuffer)(DTTR_Graphics_COM_Direct3D7 *self, void *desc, void **vb, DWORD f)
ULONG(* Release)(DTTR_Graphics_COM_Direct3D7 *self)
HRESULT(* CreateDevice)(DTTR_Graphics_COM_Direct3D7 *self, void *guid, void *surf, void **dev)
DTTR_Graphics_COM_Direct3D7_VT * vtbl
HRESULT(* BeginStateBlock)(DTTR_Graphics_COM_Direct3DDevice7 *self)
HRESULT(* BeginScene)(DTTR_Graphics_COM_Direct3DDevice7 *self)
HRESULT(* DrawIndexedPrimitiveStrided)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD prim, DWORD fvf, void *d, DWORD vn, WORD *i, DWORD in, DWORD f)
HRESULT(* SetClipPlane)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD idx, float *plane)
HRESULT(* MultiplyTransform)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD type, void *m)
HRESULT(* CaptureStateBlock)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD block)
HRESULT(* SetTextureStageState)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD stg, DWORD t, DWORD v)
HRESULT(* SetViewport)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *vp)
HRESULT(* Clear)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD n, void *rects, DWORD f, DWORD col, float z, DWORD s)
HRESULT(* SetMaterial)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *mat)
HRESULT(* GetInfo)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD id, void *info, DWORD sz)
HRESULT(* EndStateBlock)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD *block)
HRESULT(* SetTexture)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD stage, void *tex)
HRESULT(* GetLight)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD idx, void *light)
HRESULT(* GetClipPlane)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD idx, float *plane)
HRESULT(* ValidateDevice)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD *passes)
HRESULT(* SetRenderState)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD state, DWORD val)
HRESULT(* ApplyStateBlock)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD block)
HRESULT(* GetClipStatus)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *status)
HRESULT(* GetTexture)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD stage, void **tex)
HRESULT(* ComputeSphereVisibility)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *c, float *r, DWORD n, DWORD f, DWORD *res)
HRESULT(* DrawPrimitiveVB)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD prim, void *vb, DWORD st, DWORD n, DWORD f)
HRESULT(* GetCaps)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *caps)
HRESULT(* SetRenderTarget)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *surf, DWORD f)
HRESULT(* SetTransform)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD type, void *mat)
HRESULT(* DrawPrimitiveStrided)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD prim, DWORD fvf, void *d, DWORD n, DWORD f)
HRESULT(* DrawPrimitive)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD prim, DWORD fvf, void *v, DWORD n, DWORD f)
HRESULT(* PreLoad)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *tex)
HRESULT(* DeleteStateBlock)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD block)
HRESULT(* LightEnable)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD idx, BOOL enable)
HRESULT(* GetTextureStageState)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD stg, DWORD t, DWORD *v)
HRESULT(* GetViewport)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *vp)
HRESULT(* DrawIndexedPrimitiveVB)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD prim, void *vb, DWORD st, DWORD vn, WORD *i, DWORD in, DWORD f)
HRESULT(* QueryInterface)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *riid, void **ppv)
HRESULT(* SetLight)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD idx, void *light)
HRESULT(* EnumTextureFormats)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *cb, void *ctx)
HRESULT(* GetTransform)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD type, void *mat)
HRESULT(* GetDirect3D)(DTTR_Graphics_COM_Direct3DDevice7 *self, void **d3d)
HRESULT(* GetRenderState)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD state, DWORD *v)
HRESULT(* GetRenderTarget)(DTTR_Graphics_COM_Direct3DDevice7 *self, void **surf)
ULONG(* AddRef)(DTTR_Graphics_COM_Direct3DDevice7 *self)
HRESULT(* SetClipStatus)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *status)
HRESULT(* DrawIndexedPrimitive)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD prim, DWORD fvf, void *v, DWORD vn, WORD *i, DWORD in, DWORD f)
HRESULT(* Load)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *dst, void *dstPt, void *src, void *srcR, DWORD f)
HRESULT(* EndScene)(DTTR_Graphics_COM_Direct3DDevice7 *self)
HRESULT(* GetLightEnable)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD idx, BOOL *en)
HRESULT(* GetMaterial)(DTTR_Graphics_COM_Direct3DDevice7 *self, void *mat)
HRESULT(* CreateStateBlock)(DTTR_Graphics_COM_Direct3DDevice7 *self, DWORD t, DWORD *blk)
ULONG(* Release)(DTTR_Graphics_COM_Direct3DDevice7 *self)
DTTR_Graphics_COM_Direct3DDevice7_VT * vtbl
HRESULT(* Load)(DTTR_Graphics_COM_Direct3DTexture2 *self, void *srcTexture)
HRESULT(* GetHandle)(DTTR_Graphics_COM_Direct3DTexture2 *self, void *device, DWORD *handle)
HRESULT(* QueryInterface)(DTTR_Graphics_COM_Direct3DTexture2 *self, void *riid, void **ppv)
ULONG(* Release)(DTTR_Graphics_COM_Direct3DTexture2 *self)
HRESULT(* PaletteChanged)(DTTR_Graphics_COM_Direct3DTexture2 *self, DWORD start, DWORD count)
ULONG(* AddRef)(DTTR_Graphics_COM_Direct3DTexture2 *self)
DTTR_Graphics_COM_DirectDrawSurface7 * surface
DTTR_Graphics_COM_Direct3DTexture2_VT * vtbl
HRESULT(* CreateClipper)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD f, void **clip, void *outer)
HRESULT(* Compact)(DTTR_Graphics_COM_DirectDraw7 *self)
HRESULT(* GetMonitorFrequency)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD *freq)
HRESULT(* GetDeviceIdentifier)(DTTR_Graphics_COM_DirectDraw7 *self, void *id, DWORD f)
HRESULT(* SetCooperativeLevel)(DTTR_Graphics_COM_DirectDraw7 *self, HWND hwnd, DWORD f)
HRESULT(* GetCaps)(DTTR_Graphics_COM_DirectDraw7 *self, void *drvCaps, void *helCaps)
HRESULT(* RestoreDisplayMode)(DTTR_Graphics_COM_DirectDraw7 *self)
HRESULT(* DuplicateSurface)(DTTR_Graphics_COM_DirectDraw7 *self, void *src, void **dst)
HRESULT(* FlipToGDISurface)(DTTR_Graphics_COM_DirectDraw7 *self)
HRESULT(* Initialize)(DTTR_Graphics_COM_DirectDraw7 *self, void *guid)
ULONG(* Release)(DTTR_Graphics_COM_DirectDraw7 *self)
HRESULT(* QueryInterface)(DTTR_Graphics_COM_DirectDraw7 *self, void *riid, void **ppv)
HRESULT(* CreateSurface)(DTTR_Graphics_COM_DirectDraw7 *self, void *desc, void **surf, void *outer)
HRESULT(* GetFourCCCodes)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD *num, DWORD *codes)
HRESULT(* SetDisplayMode)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD w, DWORD h, DWORD bpp, DWORD hz, DWORD f)
HRESULT(* EnumSurfaces)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD f, void *desc, void *ctx, void *cb)
HRESULT(* EnumDisplayModes)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD f, void *desc, void *ctx, void *cb)
HRESULT(* GetScanLine)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD *line)
HRESULT(* GetGDISurface)(DTTR_Graphics_COM_DirectDraw7 *self, void **surf)
HRESULT(* TestCooperativeLevel)(DTTR_Graphics_COM_DirectDraw7 *self)
HRESULT(* GetDisplayMode)(DTTR_Graphics_COM_DirectDraw7 *self, void *desc)
HRESULT(* GetAvailableVidMem)(DTTR_Graphics_COM_DirectDraw7 *self, void *caps, DWORD *tot, DWORD *free)
ULONG(* AddRef)(DTTR_Graphics_COM_DirectDraw7 *self)
HRESULT(* WaitForVerticalBlank)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD f, HANDLE evt)
HRESULT(* GetSurfaceFromDC)(DTTR_Graphics_COM_DirectDraw7 *self, HDC dc, void **surf)
HRESULT(* EvaluateMode)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD f, DWORD *timeout)
HRESULT(* GetVerticalBlankStatus)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD *inVB)
HRESULT(* RestoreAllSurfaces)(DTTR_Graphics_COM_DirectDraw7 *self)
HRESULT(* StartModeTest)(DTTR_Graphics_COM_DirectDraw7 *self, void *modes, DWORD n, DWORD f)
HRESULT(* CreatePalette)(DTTR_Graphics_COM_DirectDraw7 *self, DWORD f, void *colors, void **pal, void *outer)
DTTR_Graphics_COM_DirectDraw7_VT * vtbl
HRESULT(* Initialize)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *dd, void *desc)
HRESULT(* AddAttachedSurface)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *surf)
HRESULT(* PageUnlock)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags)
HRESULT(* SetClipper)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *clipper)
HRESULT(* PageLock)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags)
HRESULT(* UpdateOverlayDisplay)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags)
HRESULT(* SetSurfaceDesc)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *desc, DWORD flags)
HRESULT(* GetBltStatus)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags)
HRESULT(* AddOverlayDirtyRect)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *rect)
HRESULT(* GetDC)(DTTR_Graphics_COM_DirectDrawSurface7 *self, HDC *dc)
HRESULT(* Lock)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *rect, void *desc, DWORD flags, HANDLE event)
HRESULT(* Unlock)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *rect)
HRESULT(* GetPixelFormat)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *fmt)
HRESULT(* BltFast)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD x, DWORD y, void *srcSurf, void *srcRect, DWORD flags)
HRESULT(* FreePrivateData)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *tag)
HRESULT(* SetLOD)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD lod)
HRESULT(* SetColorKey)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags, void *colorKey)
HRESULT(* Restore)(DTTR_Graphics_COM_DirectDrawSurface7 *self)
HRESULT(* UpdateOverlayZOrder)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags, void *refSurf)
HRESULT(* Flip)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *target, DWORD flags)
HRESULT(* DeleteAttachedSurface)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags, void *surf)
HRESULT(* GetDDInterface)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void **dd)
HRESULT(* GetFlipStatus)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags)
HRESULT(* ChangeUniquenessValue)(DTTR_Graphics_COM_DirectDrawSurface7 *self)
HRESULT(* GetColorKey)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags, void *colorKey)
HRESULT(* QueryInterface)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *riid, void **ppv)
HRESULT(* BltBatch)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *batch, DWORD count, DWORD flags)
HRESULT(* GetPalette)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void **palette)
HRESULT(* ReleaseDC)(DTTR_Graphics_COM_DirectDrawSurface7 *self, HDC dc)
HRESULT(* GetAttachedSurface)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *caps, void **surf)
HRESULT(* UpdateOverlay)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *srcRect, void *dstSurf, void *dstRect, DWORD flags, void *fx)
HRESULT(* SetOverlayPosition)(DTTR_Graphics_COM_DirectDrawSurface7 *self, LONG x, LONG y)
HRESULT(* IsLost)(DTTR_Graphics_COM_DirectDrawSurface7 *self)
HRESULT(* GetPrivateData)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *tag, void *data, DWORD *size)
HRESULT(* SetPrivateData)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *tag, void *data, DWORD size, DWORD flags)
HRESULT(* GetSurfaceDesc)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *desc)
HRESULT(* GetUniquenessValue)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD *value)
HRESULT(* Blt)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *dstRect, void *srcSurf, void *srcRect, DWORD flags, void *bltFx)
HRESULT(* GetPriority)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD *priority)
HRESULT(* EnumOverlayZOrders)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD flags, void *ctx, void *cb)
HRESULT(* GetClipper)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void **clipper)
HRESULT(* GetCaps)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *caps)
HRESULT(* EnumAttachedSurfaces)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *ctx, void *cb)
HRESULT(* GetLOD)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD *lod)
ULONG(* AddRef)(DTTR_Graphics_COM_DirectDrawSurface7 *self)
HRESULT(* SetPalette)(DTTR_Graphics_COM_DirectDrawSurface7 *self, void *palette)
ULONG(* Release)(DTTR_Graphics_COM_DirectDrawSurface7 *self)
HRESULT(* GetOverlayPosition)(DTTR_Graphics_COM_DirectDrawSurface7 *self, LONG *x, LONG *y)
HRESULT(* SetPriority)(DTTR_Graphics_COM_DirectDrawSurface7 *self, DWORD priority)
DTTR_Graphics_COM_DirectDrawSurface7 * back_buffer
DTTR_Graphics_COM_DirectDrawSurface7_VT * vtbl
DTTR_Graphics_COM_Direct3DTexture2 * texture