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