|
|
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.