Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5131 clevermous 1
/*
2
Copyright (C) 1996-1997 Id Software, Inc.
3
 
4
This program is free software; you can redistribute it and/or
5
modify it under the terms of the GNU General Public License
6
as published by the Free Software Foundation; either version 2
7
of the License, or (at your option) any later version.
8
 
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
 
13
See the GNU General Public License for more details.
14
 
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software
17
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
 
19
*/
20
//
21
// vgamodes.h: VGA mode set tables
22
//
23
 
24
#include "vregset.h"
25
 
26
int		VGA_InitMode (viddef_t *vid, vmode_t *pcurrentmode);
27
void	VGA_SwapBuffers (viddef_t *vid, vmode_t *pcurrentmode, vrect_t *rects);
28
void	VGA_SetPalette (viddef_t *vid, vmode_t *pcurrentmode,
29
						unsigned char *pal);
30
 
31
///////////////////////////////////////////////////////////////////////////
32
// the following base mode descriptors plus extra data together provide all
33
// the data needed to do VGA mode sets
34
///////////////////////////////////////////////////////////////////////////
35
 
36
typedef struct {
37
	int		vidbuffer;
38
	int		*pregset;
39
} vextra_t;
40
 
41
int	vrsnull[] = {
42
	VRS_END,
43
};
44
 
45
int vrs320x200x256planar[] = {
46
//
47
// switch to linear, non-chain4 mode
48
//
49
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
50
	VRS_BYTE_OUT, SC_DATA,  1,
51
 
52
	VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE,
53
	VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04,
54
	VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE,
55
	VRS_BYTE_RMW, GC_DATA, ~0x13, 0x00,
56
	VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS,
57
	VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00,
58
 
59
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
60
	VRS_BYTE_OUT, SC_DATA,  3,
61
 
62
//
63
// change the CRTC from doubleword to byte mode
64
//
65
	VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE,
66
	VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00,
67
	VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL,
68
	VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40,
69
 
70
	VRS_END,
71
};
72
 
73
int vrs360x200x256planar[] = {
74
//
75
// switch to linear, non-chain4 mode
76
//
77
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
78
	VRS_BYTE_OUT, SC_DATA,  1,
79
 
80
	VRS_WORD_OUT, SC_INDEX, 0x0604,
81
	VRS_BYTE_OUT, MISC_OUTPUT, 0x67,
82
 
83
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
84
	VRS_BYTE_OUT, SC_DATA,  3,
85
 
86
//
87
// unprotect CRTC0 through CRTC0
88
//
89
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
90
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
91
 
92
//
93
// change the CRTC from doubleword to byte mode
94
//
95
	VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE,
96
	VRS_BYTE_RMW, CRTC_DATA,  ~0x40, 0x00,
97
	VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL,
98
	VRS_BYTE_RMW, CRTC_DATA,  ~0x00, 0x40,
99
 
100
//
101
// set up the CRT Controller
102
//
103
	VRS_WORD_OUT, CRTC_INDEX, 0x6B00,
104
	VRS_WORD_OUT, CRTC_INDEX, 0x5901,
105
	VRS_WORD_OUT, CRTC_INDEX, 0x5A02,
106
	VRS_WORD_OUT, CRTC_INDEX, 0x8E03,
107
	VRS_WORD_OUT, CRTC_INDEX, 0x5E04,
108
	VRS_WORD_OUT, CRTC_INDEX, 0x8A05,
109
	VRS_WORD_OUT, CRTC_INDEX, 0x3013,
110
 
111
	VRS_END,
112
};
113
 
114
int vrs320x240x256planar[] = {
115
//
116
// switch to linear, non-chain4 mode
117
//
118
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
119
	VRS_BYTE_OUT, SC_DATA,  1,
120
 
121
	VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE,
122
	VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04,
123
	VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE,
124
	VRS_BYTE_RMW, GC_DATA, ~0x13, 0x00,
125
	VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS,
126
	VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00,
127
 
128
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
129
	VRS_BYTE_OUT, SC_DATA,  3,
130
 
131
//
132
// unprotect CRTC0 through CRTC0
133
//
134
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
135
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
136
 
137
//
138
// set up the CRT Controller
139
//
140
	VRS_WORD_OUT, CRTC_INDEX, 0x0D06,
141
	VRS_WORD_OUT, CRTC_INDEX, 0x3E07,
142
	VRS_WORD_OUT, CRTC_INDEX, 0x4109,
143
	VRS_WORD_OUT, CRTC_INDEX, 0xEA10,
144
	VRS_WORD_OUT, CRTC_INDEX, 0xAC11,
145
	VRS_WORD_OUT, CRTC_INDEX, 0xDF12,
146
	VRS_WORD_OUT, CRTC_INDEX, 0x0014,
147
	VRS_WORD_OUT, CRTC_INDEX, 0xE715,
148
	VRS_WORD_OUT, CRTC_INDEX, 0x0616,
149
	VRS_WORD_OUT, CRTC_INDEX, 0xE317,
150
 
151
	VRS_END,
152
};
153
 
154
int vrs360x240x256planar[] = {
155
//
156
// switch to linear, non-chain4 mode
157
//
158
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
159
	VRS_BYTE_OUT, SC_DATA,  1,
160
 
161
	VRS_WORD_OUT, SC_INDEX, 0x0604,
162
	VRS_BYTE_OUT, MISC_OUTPUT, 0xE7,
163
 
164
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
165
	VRS_BYTE_OUT, SC_DATA,  3,
166
 
167
//
168
// unprotect CRTC0 through CRTC0
169
//
170
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
171
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
172
 
173
//
174
// set up the CRT Controller
175
//
176
	VRS_WORD_OUT, CRTC_INDEX, 0x6B00,
177
	VRS_WORD_OUT, CRTC_INDEX, 0x5901,
178
	VRS_WORD_OUT, CRTC_INDEX, 0x5A02,
179
	VRS_WORD_OUT, CRTC_INDEX, 0x8E03,
180
	VRS_WORD_OUT, CRTC_INDEX, 0x5E04,
181
	VRS_WORD_OUT, CRTC_INDEX, 0x8A05,
182
	VRS_WORD_OUT, CRTC_INDEX, 0x0D06,
183
	VRS_WORD_OUT, CRTC_INDEX, 0x3E07,
184
	VRS_WORD_OUT, CRTC_INDEX, 0x4109,
185
	VRS_WORD_OUT, CRTC_INDEX, 0xEA10,
186
	VRS_WORD_OUT, CRTC_INDEX, 0xAC11,
187
	VRS_WORD_OUT, CRTC_INDEX, 0xDF12,
188
	VRS_WORD_OUT, CRTC_INDEX, 0x3013,
189
	VRS_WORD_OUT, CRTC_INDEX, 0x0014,
190
	VRS_WORD_OUT, CRTC_INDEX, 0xE715,
191
	VRS_WORD_OUT, CRTC_INDEX, 0x0616,
192
	VRS_WORD_OUT, CRTC_INDEX, 0xE317,
193
 
194
	VRS_END,
195
};
196
 
197
int vrs320x350x256planar[] = {
198
//
199
// switch to linear, non-chain4 mode
200
//
201
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
202
	VRS_BYTE_OUT, SC_DATA,  1,
203
 
204
	VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE,
205
	VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04,
206
	VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE,
207
	VRS_BYTE_RMW, GC_DATA, ~0x10, 0x00,
208
	VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS,
209
	VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00,
210
	VRS_BYTE_OUT, MISC_OUTPUT, 0xA3,	// 350-scan-line scan rate
211
 
212
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
213
	VRS_BYTE_OUT, SC_DATA,  3,
214
 
215
//
216
// unprotect CRTC0 through CRTC0
217
//
218
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
219
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
220
 
221
//
222
// stop scanning each line twice
223
//
224
	VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE,
225
	VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00,
226
 
227
//
228
// change the CRTC from doubleword to byte mode
229
//
230
	VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE,
231
	VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00,
232
	VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL,
233
	VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40,
234
 
235
//
236
// set the vertical counts for 350-scan-line mode
237
//
238
	VRS_WORD_OUT, CRTC_INDEX, 0xBF06,
239
	VRS_WORD_OUT, CRTC_INDEX, 0x1F07,
240
	VRS_WORD_OUT, CRTC_INDEX, 0x8310,
241
	VRS_WORD_OUT, CRTC_INDEX, 0x8511,
242
	VRS_WORD_OUT, CRTC_INDEX, 0x5D12,
243
	VRS_WORD_OUT, CRTC_INDEX, 0x6315,
244
	VRS_WORD_OUT, CRTC_INDEX, 0xBA16,
245
 
246
	VRS_END,
247
};
248
 
249
int vrs360x350x256planar[] = {
250
//
251
// switch to linear, non-chain4 mode
252
//
253
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
254
	VRS_BYTE_OUT, SC_DATA,  1,
255
 
256
	VRS_WORD_OUT, SC_INDEX, 0x0604,
257
	VRS_BYTE_OUT, MISC_OUTPUT, 0xA7,	// 350-scan-line scan rate
258
 
259
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
260
	VRS_BYTE_OUT, SC_DATA,  3,
261
 
262
//
263
// unprotect CRTC0 through CRTC0
264
//
265
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
266
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
267
 
268
//
269
// stop scanning each line twice
270
//
271
	VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE,
272
	VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00,
273
 
274
//
275
// change the CRTC from doubleword to byte mode
276
//
277
	VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE,
278
	VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00,
279
	VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL,
280
	VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40,
281
 
282
//
283
// set the vertical counts for 350-scan-line mode and 360 pixels across
284
//
285
	VRS_WORD_OUT, CRTC_INDEX, 0x6B00,
286
	VRS_WORD_OUT, CRTC_INDEX, 0x5901,
287
	VRS_WORD_OUT, CRTC_INDEX, 0x5A02,
288
	VRS_WORD_OUT, CRTC_INDEX, 0x8E03,
289
	VRS_WORD_OUT, CRTC_INDEX, 0x5E04,
290
	VRS_WORD_OUT, CRTC_INDEX, 0x8A05,
291
	VRS_WORD_OUT, CRTC_INDEX, 0xBF06,
292
	VRS_WORD_OUT, CRTC_INDEX, 0x1F07,
293
	VRS_WORD_OUT, CRTC_INDEX, 0x8310,
294
	VRS_WORD_OUT, CRTC_INDEX, 0x8511,
295
	VRS_WORD_OUT, CRTC_INDEX, 0x5D12,
296
	VRS_WORD_OUT, CRTC_INDEX, 0x3013,
297
	VRS_WORD_OUT, CRTC_INDEX, 0x6315,
298
	VRS_WORD_OUT, CRTC_INDEX, 0xBA16,
299
 
300
	VRS_END,
301
};
302
 
303
int vrs320x400x256planar[] = {
304
//
305
// switch to linear, non-chain4 mode
306
//
307
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
308
	VRS_BYTE_OUT, SC_DATA,  1,
309
 
310
 
311
	VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE,
312
	VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04,
313
	VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE,
314
	VRS_BYTE_RMW, GC_DATA, ~0x10, 0x00,
315
	VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS,
316
	VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00,
317
 
318
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
319
	VRS_BYTE_OUT, SC_DATA,  3,
320
 
321
//
322
// stop scanning each line twice
323
//
324
	VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE,
325
	VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00,
326
 
327
//
328
// change the CRTC from doubleword to byte mode
329
//
330
	VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE,
331
	VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00,
332
	VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL,
333
	VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40,
334
 
335
	VRS_END,
336
};
337
 
338
int vrs360x400x256planar[] = {
339
//
340
// switch to linear, non-chain4 mode
341
//
342
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
343
	VRS_BYTE_OUT, SC_DATA,  1,
344
 
345
	VRS_WORD_OUT, SC_INDEX, 0x0604,
346
	VRS_BYTE_OUT, MISC_OUTPUT, 0x67,
347
 
348
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
349
	VRS_BYTE_OUT, SC_DATA,  3,
350
 
351
//
352
// unprotect CRTC0 through CRTC0
353
//
354
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
355
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
356
 
357
//
358
// stop scanning each line twice
359
//
360
	VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE,
361
	VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00,
362
 
363
//
364
// change the CRTC from doubleword to byte mode
365
//
366
	VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE,
367
	VRS_BYTE_RMW, CRTC_DATA,  ~0x40, 0x00,
368
	VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL,
369
	VRS_BYTE_RMW, CRTC_DATA,  ~0x00, 0x40,
370
 
371
//
372
// set up the CRT Controller
373
//
374
	VRS_WORD_OUT, CRTC_INDEX, 0x6B00,
375
	VRS_WORD_OUT, CRTC_INDEX, 0x5901,
376
	VRS_WORD_OUT, CRTC_INDEX, 0x5A02,
377
	VRS_WORD_OUT, CRTC_INDEX, 0x8E03,
378
	VRS_WORD_OUT, CRTC_INDEX, 0x5E04,
379
	VRS_WORD_OUT, CRTC_INDEX, 0x8A05,
380
	VRS_WORD_OUT, CRTC_INDEX, 0x3013,
381
 
382
	VRS_END,
383
};
384
 
385
int vrs320x480x256planar[] = {
386
//
387
// switch to linear, non-chain4 mode
388
//
389
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
390
	VRS_BYTE_OUT, SC_DATA,  1,
391
 
392
	VRS_BYTE_OUT, SC_INDEX, MEMORY_MODE,
393
	VRS_BYTE_RMW, SC_DATA, ~0x08, 0x04,
394
	VRS_BYTE_OUT, GC_INDEX, GRAPHICS_MODE,
395
	VRS_BYTE_RMW, GC_DATA, ~0x10, 0x00,
396
	VRS_BYTE_OUT, GC_INDEX, MISCELLANOUS,
397
	VRS_BYTE_RMW, GC_DATA, ~0x02, 0x00,
398
 
399
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
400
	VRS_BYTE_OUT, SC_DATA,  3,
401
 
402
//
403
// unprotect CRTC0 through CRTC0
404
//
405
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
406
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
407
 
408
//
409
// stop scanning each line twice
410
//
411
	VRS_BYTE_OUT, CRTC_INDEX, MAX_SCAN_LINE,
412
	VRS_BYTE_RMW, CRTC_DATA, ~0x1F, 0x00,
413
 
414
//
415
// change the CRTC from doubleword to byte mode
416
//
417
	VRS_BYTE_OUT, CRTC_INDEX, UNDERLINE,
418
	VRS_BYTE_RMW, CRTC_DATA, ~0x40, 0x00,
419
	VRS_BYTE_OUT, CRTC_INDEX, MODE_CONTROL,
420
	VRS_BYTE_RMW, CRTC_DATA, ~0x00, 0x40,
421
 
422
//
423
// set up the CRT Controller
424
//
425
	VRS_WORD_OUT, CRTC_INDEX, 0x0D06,
426
	VRS_WORD_OUT, CRTC_INDEX, 0x3E07,
427
	VRS_WORD_OUT, CRTC_INDEX, 0xEA10,
428
	VRS_WORD_OUT, CRTC_INDEX, 0xAC11,
429
	VRS_WORD_OUT, CRTC_INDEX, 0xDF12,
430
	VRS_WORD_OUT, CRTC_INDEX, 0xE715,
431
	VRS_WORD_OUT, CRTC_INDEX, 0x0616,
432
 
433
	VRS_END,
434
};
435
 
436
int vrs360x480x256planar[] = {
437
//
438
// switch to linear, non-chain4 mode
439
//
440
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
441
	VRS_BYTE_OUT, SC_DATA,  1,
442
 
443
	VRS_WORD_OUT, SC_INDEX, 0x0604,
444
	VRS_BYTE_OUT, MISC_OUTPUT, 0xE7,
445
 
446
	VRS_BYTE_OUT, SC_INDEX, SYNC_RESET,
447
	VRS_BYTE_OUT, SC_DATA,  3,
448
 
449
//
450
// unprotect CRTC0 through CRTC0
451
//
452
	VRS_BYTE_OUT, CRTC_INDEX, 0x11,
453
	VRS_BYTE_RMW, CRTC_DATA, ~0x80, 0x00,
454
 
455
//
456
// set up the CRT Controller
457
//
458
	VRS_WORD_OUT, CRTC_INDEX, 0x6B00,
459
	VRS_WORD_OUT, CRTC_INDEX, 0x5901,
460
	VRS_WORD_OUT, CRTC_INDEX, 0x5A02,
461
	VRS_WORD_OUT, CRTC_INDEX, 0x8E03,
462
	VRS_WORD_OUT, CRTC_INDEX, 0x5E04,
463
	VRS_WORD_OUT, CRTC_INDEX, 0x8A05,
464
	VRS_WORD_OUT, CRTC_INDEX, 0x0D06,
465
	VRS_WORD_OUT, CRTC_INDEX, 0x3E07,
466
	VRS_WORD_OUT, CRTC_INDEX, 0x4009,
467
	VRS_WORD_OUT, CRTC_INDEX, 0xEA10,
468
	VRS_WORD_OUT, CRTC_INDEX, 0xAC11,
469
	VRS_WORD_OUT, CRTC_INDEX, 0xDF12,
470
	VRS_WORD_OUT, CRTC_INDEX, 0x3013,
471
	VRS_WORD_OUT, CRTC_INDEX, 0x0014,
472
	VRS_WORD_OUT, CRTC_INDEX, 0xE715,
473
	VRS_WORD_OUT, CRTC_INDEX, 0x0616,
474
	VRS_WORD_OUT, CRTC_INDEX, 0xE317,
475
 
476
	VRS_END,
477
};
478
 
479
//
480
// extra VGA-specific data for vgavidmodes
481
//
482
vextra_t	extra320x200x256linear = {
483
	1, vrsnull
484
};
485
vextra_t	extra320x200x256planar = {
486
	1, vrs320x200x256planar
487
};
488
vextra_t	extra360x200x256planar = {
489
	1, vrs360x200x256planar
490
};
491
vextra_t	extra320x240x256planar = {
492
	1, vrs320x240x256planar
493
};
494
vextra_t	extra360x240x256planar = {
495
	1, vrs360x240x256planar
496
};
497
vextra_t	extra320x350x256planar = {
498
	1, vrs320x350x256planar
499
};
500
vextra_t	extra360x350x256planar = {
501
	1, vrs360x350x256planar
502
};
503
vextra_t	extra320x400x256planar = {
504
	1, vrs320x400x256planar
505
};
506
vextra_t	extra360x400x256planar = {
507
	1, vrs360x400x256planar
508
};
509
vextra_t	extra320x480x256planar = {
510
	1, vrs320x480x256planar
511
};
512
vextra_t	extra360x480x256planar = {
513
	1, vrs360x480x256planar
514
};
515
 
516
//
517
// base mode descriptors, in ascending order of number of pixels
518
//
519
 
520
vmode_t	vgavidmodes[] = {
521
{
522
	NULL,
523
	"320x200", "    ***** standard VGA modes *****    ",
524
	320, 200, (200.0/320.0)*(320.0/240.0), 320, 0, 1, &extra320x200x256linear,
525
	VGA_InitMode, VGA_SwapBuffers, VGA_SetPalette,
526
	VGA_BeginDirectRect, VGA_EndDirectRect
527
},
528
{
529
	NULL,
530
	"320x200", "    ***** Mode X-style modes *****    ",
531
	320, 200, (200.0/320.0)*(320.0/240.0), 320, 1, 1, &extra320x200x256planar,
532
	VGA_InitMode, VGA_SwapBuffers, VGA_SetPalette,
533
	VGA_BeginDirectRect, VGA_EndDirectRect
534
},
535
{
536
	NULL,
537
	"360x200", NULL, 360, 200, (200.0/360.0)*(320.0/240.0),
538
	384, 1, 1, &extra360x200x256planar, VGA_InitMode,
539
	VGA_SwapBuffers,
540
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
541
},
542
{
543
	NULL,
544
	"320x240", NULL, 320, 240, (240.0/320.0)*(320.0/240.0),
545
	320, 1, 1, &extra320x240x256planar, VGA_InitMode,
546
	VGA_SwapBuffers,
547
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
548
},
549
{
550
	NULL,
551
	"360x240", NULL, 360, 240, (240.0/360.0)*(320.0/240.0),
552
	384, 1, 1, &extra360x240x256planar,
553
	VGA_InitMode, VGA_SwapBuffers, VGA_SetPalette,
554
	VGA_BeginDirectRect, VGA_EndDirectRect
555
},
556
{
557
	NULL,
558
	"320x350", NULL, 320, 350, (350.0/320.0)*(320.0/240.0),
559
	320, 1, 1, &extra320x350x256planar, VGA_InitMode,
560
	VGA_SwapBuffers,
561
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
562
},
563
{
564
	NULL,
565
	"360x350", NULL, 360, 350, (350.0/360.0)*(320.0/240.0),
566
	384, 1, 1, &extra360x350x256planar, VGA_InitMode,
567
	VGA_SwapBuffers,
568
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
569
},
570
{
571
	NULL,
572
	"320x400", NULL, 320, 400, (400.0/320.0)*(320.0/240.0), 320,
573
	1, 1, &extra320x400x256planar, VGA_InitMode,
574
	VGA_SwapBuffers,
575
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
576
},
577
{
578
	NULL,
579
	"360x400", NULL, 360, 400, (400.0/360.0)*(320.0/240.0),
580
	384, 1, 1, &extra360x400x256planar, VGA_InitMode,
581
	VGA_SwapBuffers,
582
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
583
},
584
{
585
	NULL,
586
	"320x480", NULL, 320, 480, (480.0/320.0)*(320.0/240.0),
587
	320, 1, 1, &extra320x480x256planar, VGA_InitMode,
588
	VGA_SwapBuffers,
589
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
590
},
591
{
592
	NULL,
593
	"360x480", NULL, 360, 480, (480.0/360.0)*(320.0/240.0),
594
	384, 1, 1, &extra360x480x256planar, VGA_InitMode,
595
	VGA_SwapBuffers,
596
	VGA_SetPalette, VGA_BeginDirectRect, VGA_EndDirectRect
597
},
598
};
599