2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
23 // Render Modes supported by the Windows version
26 #define SM_ORIGINAL -1
37 #define SM_360x360U 10
38 #define SM_376x308U 11
39 #define SM_376x564U 12
40 #define SM_640x400V 13
41 #define SM_640x480V 14
42 #define SM_800x600V 15
43 #define SM_1024x768V 16
44 #define SM_640x480V15 17
45 #define SM_800x600V15 18
49 #define SM95_320x200x8 0
50 #define SM95_320x200x8X 1
51 #define SM95_640x480x8 2
52 #define SM95_320x400x8 3
53 #define SM95_640x400x8 4
54 #define SM95_800x600x8 5
55 #define SM95_1024x768x8 6
56 #define SM95_640x480x8P 7
58 // DDraw interface ------------------------------------------------------------
60 typedef struct DDMODEINFO {
63 int emul :1; // Emulated Display Mode (Double Buffer/Single Page)
64 int dbuf :1; // Double Buffered Duel Page Game Mode
65 int modex :1; // Mode X Duel page mode.
66 int paged :1; // Duel Page Standard Mode
69 typedef struct _dd_grs_canvas {
70 LPDIRECTDRAWSURFACE lpdds;
77 typedef struct _dd_caps {
90 extern LPDIRECTDRAW _lpDD; // Direct Draw Object
91 extern LPDIRECTDRAWSURFACE _lpDDSPrimary; // Primary Display Screen (Page 1)
92 extern LPDIRECTDRAWSURFACE _lpDDSBack; // Page 2 or offscreen canvas
93 extern LPDIRECTDRAWCLIPPER _lpDDClipper; // Window Clipper Object
94 extern LPDIRECTDRAWPALETTE _lpDDPalette; // Direct Draw Palette;
95 extern DDMODEINFO _DDModeList[16]; // Possible display modes
96 extern int _DDNumModes; // Number of Display modes
97 extern BOOL _DDFullScreen; // Full Screen Mode?
98 extern BOOL _DDExclusive; // Is application exclusive?
99 extern int _DDFlags; // Direct Draw Screen Flags
101 extern LPDIRECTDRAWSURFACE _lpDDSMask; // Cockpit Mask!
103 extern int WIN95_GR_current_mode; // WIN95_GR_current mode of render.
104 extern int W95DisplayMode; // Current Display Mode
107 extern BOOL DDInit(int mode);
108 extern void DDKill();
109 extern BOOL DDCreateScreen();
110 extern void DDKillScreen();
111 extern ubyte *DDLockSurface(LPDIRECTDRAWSURFACE lpdds, RECT *rect, int *pitch);
112 extern void DDUnlockSurface(LPDIRECTDRAWSURFACE lpdds, char *data);
113 extern void DDSetDisplayMode(int display_mode,int flags);
114 extern void DDSetPalette(LPDIRECTDRAWPALETTE lpDDPal);
115 extern void DDFlip();
116 extern LPDIRECTDRAWSURFACE DDCreateSurface(int w, int h, int vram);
117 extern LPDIRECTDRAWSURFACE DDCreateSysMemSurface(int width, int height);
118 extern LPDIRECTDRAWPALETTE DDCreatePalette(ubyte *pal);
119 extern LPDIRECTDRAWPALETTE DDGetPalette(LPDIRECTDRAWSURFACE lpdds);
120 extern void DDFreeSurface(LPDIRECTDRAWSURFACE lpdds);
121 extern int DDCheckMode(int mode);
124 // ddgr interface -------------------------------------------------------------
126 #define DDGR_FULLSCREEN 1
127 #define DDGR_EXWINDOW 2
128 #define DDGR_WINDOW 3
129 #define DDGR_SCREEN_PAGING 1
132 extern dd_grs_canvas *dd_grd_screencanv; // Primary Screen Canvas
133 extern dd_grs_canvas *dd_grd_backcanv; // Back Screen Canvas
134 extern dd_grs_canvas *dd_grd_curcanv; // Current Canvas
135 extern dd_caps ddDriverCaps; // Direct Draw Caps
137 extern void dd_gr_init();
138 extern void dd_gr_close();
139 extern void dd_gr_init_screen();
140 extern void dd_gr_screen_lock();
141 extern void dd_gr_screen_unlock();
142 extern void dd_gr_flip();
144 extern dd_grs_canvas *dd_gr_create_canvas(int w, int h);
145 extern dd_grs_canvas *dd_gr_create_sub_canvas(dd_grs_canvas *cvs, int x, int y, int w, int h);
146 extern void dd_gr_init_canvas(dd_grs_canvas *canv, int pixtype, int w, int h);
147 extern void dd_gr_free_sub_canvas(dd_grs_canvas *cvs);
148 extern void dd_gr_free_canvas(dd_grs_canvas *canvas);
149 extern void dd_gr_set_current_canvas(dd_grs_canvas *canvas);
150 extern void dd_gr_disable_current_canvas();
151 extern void dd_gr_init_sub_canvas(dd_grs_canvas *new, dd_grs_canvas *src,
152 int x, int y, int w, int h);
153 extern void dd_gr_clear_canvas(int color);
154 extern void dd_gr_reinit_canvas(dd_grs_canvas *canv);
157 // dd_gr_blt functions
158 extern void dd_gr_blt_notrans(dd_grs_canvas *srccanv,
159 int sx, int sy, int swidth, int sheight,
160 dd_grs_canvas *destcanv,
161 int dx, int dy, int dwidth, int dheight);
162 extern void dd_gr_blt_display(dd_grs_canvas *srccanv,
163 int sx, int sy, int swidth, int sheight,
164 int dx, int dy, int dwidth, int dheight);
165 extern void dd_gr_blt_screen(dd_grs_canvas *srccanv,
166 int sx, int sy, int swidth, int sheight,
167 int dx, int dy, int dwidth, int dheight);
170 extern int dd_gfx_init();
171 extern int dd_gfx_close();
172 extern int dd_gfx_resetbitmap2Dcache();
173 extern unsigned short dd_gfx_createbitmap2D(int w, int h);
174 extern int dd_gfx_loadbitmap2D(unsigned short handle, void *buf, int rleflag);
175 extern int dd_gfx_destroybitmap2D(unsigned short handle);
176 extern void dd_gfx_blt2D(unsigned short handle, int x, int y, int x2, int y2,
177 fix u0, fix v0, fix u1, fix v1);
181 // Macros --------------------------------------------------------------------
185 #define DDSETDISPLAYMODE(c) ( W95DisplayMode = c )
188 #define DDGRLOCK(c) (dd_gr_lock_d(c, __FILE__, __LINE__));
190 #define DDGRLOCK(c) (dd_gr_lock(c));
192 #define DDGRUNLOCK(c) (dd_gr_unlock(c));
193 #define DDGRRESTORE (dd_gr_restore_display());
194 #define DDGRSCREENLOCK ( dd_gr_screen_lock() );
195 #define DDGRSCREENUNLOCK ( dd_gr_screen_unlock());
197 #define GRMODEINFO(c) (_DDModeList[W95DisplayMode].c)