|
|
1.1 ! root 1: /* $Id: vidmodes.c,v 1.5 2005/11/20 20:12:45 deuce Exp $ */ ! 2: ! 3: #include <stdlib.h> ! 4: ! 5: #include "vidmodes.h" ! 6: ! 7: struct video_params vparams[36] = { ! 8: /* BW 40x25 */ ! 9: {BW40, GREYSCALE_PALETTE, 40, 25, 14, 15, 16, 8}, ! 10: /* CO 40x25 */ ! 11: {C40, COLOUR_PALETTE, 40, 25, 14, 15, 16, 8}, ! 12: /* BW 80x25 */ ! 13: {BW80, GREYSCALE_PALETTE, 80, 25, 14, 15, 16, 8}, ! 14: /* CO 80x25 */ ! 15: {C80, COLOUR_PALETTE, 80, 25, 14, 15, 16, 8}, ! 16: /* MONO */ ! 17: {MONO, 0, 80, 25, 14, 15, 16, 8}, ! 18: /* CO 40x14 */ ! 19: {C40X14, COLOUR_PALETTE, 40, 14, 14, 15, 16, 8}, ! 20: /* CO 40x21 */ ! 21: {C40X21, COLOUR_PALETTE, 40, 21, 14, 15, 16, 8}, ! 22: /* CO 40x28 */ ! 23: {C40X28, COLOUR_PALETTE, 40, 28, 12, 13, 14, 8}, ! 24: /* CO 40x43 */ ! 25: {C40X43, COLOUR_PALETTE, 40, 43, 7, 7, 8, 8}, ! 26: /* CO 40x50 */ ! 27: {C40X50, COLOUR_PALETTE, 40, 50, 7, 7, 8, 8}, ! 28: /* CO 40x60 */ ! 29: {C40X60, COLOUR_PALETTE, 40, 60, 7, 7, 8, 8}, ! 30: /* CO 80x14 */ ! 31: {C80X14, COLOUR_PALETTE, 80, 14, 14, 15, 16, 8}, ! 32: /* CO 80x21 */ ! 33: {C80X21, COLOUR_PALETTE, 80, 21, 14, 15, 16, 8}, ! 34: /* CO 80x28 */ ! 35: {C80X28, COLOUR_PALETTE, 80, 28, 12, 13, 14, 8}, ! 36: /* CO 80x43 */ ! 37: {C80X43, COLOUR_PALETTE, 80, 43, 7, 7, 8, 8}, ! 38: /* CO 80x50 */ ! 39: {C80X50, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8}, ! 40: /* CO 80x60 */ ! 41: {C80X60, COLOUR_PALETTE, 80, 60, 7, 7, 8, 8}, ! 42: /* B 40x14 */ ! 43: {BW40X14, GREYSCALE_PALETTE, 40, 14, 14, 15, 16, 8}, ! 44: /* BW 40x21 */ ! 45: {BW40X21, GREYSCALE_PALETTE, 40, 21, 14, 15, 16, 8}, ! 46: /* BW 40x28 */ ! 47: {BW40X28, GREYSCALE_PALETTE, 40, 28, 12, 13, 14, 8}, ! 48: /* BW 40x43 */ ! 49: {BW40X43, GREYSCALE_PALETTE, 40, 43, 7, 7, 8, 8}, ! 50: /* BW 40x50 */ ! 51: {BW40X50, GREYSCALE_PALETTE, 40, 50, 7, 7, 8, 8}, ! 52: /* BW 40x60 */ ! 53: {BW40X60, GREYSCALE_PALETTE, 40, 60, 7, 7, 8, 8}, ! 54: /* BW 80x14 */ ! 55: {BW80X14, GREYSCALE_PALETTE, 80, 14, 14, 15, 16, 8}, ! 56: /* BW 80x21 */ ! 57: {BW80X21, GREYSCALE_PALETTE, 80, 21, 14, 15, 16, 8}, ! 58: /* BW 80x28 */ ! 59: {BW80X28, GREYSCALE_PALETTE, 80, 28, 12, 13, 14, 8}, ! 60: /* BW 80x43 */ ! 61: {BW80X43, GREYSCALE_PALETTE, 80, 43, 7, 7, 8, 8}, ! 62: /* BW 80x50 */ ! 63: {BW80X50, GREYSCALE_PALETTE, 80, 50, 7, 7, 8, 8}, ! 64: /* BW 80x60 */ ! 65: {BW80X60, GREYSCALE_PALETTE, 80, 60, 7, 7, 8, 8}, ! 66: /* MONO 80x14 */ ! 67: {MONO14, MONO_PALETTE, 80, 14, 14, 15, 16, 8}, ! 68: /* MONO 80x21 */ ! 69: {MONO21, MONO_PALETTE, 80, 21, 14, 15, 16, 8}, ! 70: /* MONO 80x28 */ ! 71: {MONO28, MONO_PALETTE, 80, 28, 12, 13, 14, 8}, ! 72: /* MONO 80x43 */ ! 73: {MONO43, MONO_PALETTE, 80, 43, 7, 7, 8, 8}, ! 74: /* MONO 80x50 */ ! 75: {MONO50, MONO_PALETTE, 80, 50, 7, 7, 8, 8}, ! 76: /* MONO 80x60 */ ! 77: {MONO60, MONO_PALETTE, 80, 60, 7, 7, 8, 8}, ! 78: /* Magical C4350 Mode */ ! 79: {C4350, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8}, ! 80: }; ! 81: ! 82: unsigned char palettes[3][16] = { ! 83: /* Mono */ ! 84: { 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, ! 85: 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 ! 86: }, ! 87: /* Black and White */ ! 88: { 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, ! 89: 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f ! 90: }, ! 91: /* Colour */ ! 92: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, ! 93: 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f ! 94: } ! 95: }; ! 96: ! 97: struct dac_colors dac_default16[16] = { ! 98: {0, 0, 0}, {0, 0, 42}, {0, 42, 0}, {0, 42, 42}, ! 99: {42, 0, 0}, {42, 0, 42}, {42, 21, 0}, {42, 42, 42}, ! 100: {21, 21, 21}, {21, 21, 63}, {21, 63, 21}, {21, 63, 63}, ! 101: {63, 21, 21}, {63, 21, 63}, {63, 63, 21}, {63, 63, 63} ! 102: }; ! 103: ! 104: struct dac_colors dac_default256[16] = { ! 105: {0, 0, 0}, {0, 0, 168}, {0, 168, 0}, {0, 168, 168}, ! 106: {168, 0, 0}, {168, 0, 168}, {168, 84, 0}, {168, 168, 168}, ! 107: {84, 84, 84}, {84, 84, 255}, {84, 255, 84}, {84, 255, 255}, ! 108: {255, 84, 84}, {255, 84, 255}, {255, 255, 84}, {255, 255, 255} ! 109: }; ! 110: ! 111: int find_vmode(int mode) ! 112: { ! 113: unsigned i; ! 114: ! 115: for (i = 0; i < NUMMODES; i++) ! 116: if (vparams[i].mode == mode) ! 117: return i; ! 118: ! 119: return -1; ! 120: } ! 121: ! 122: int load_vmode(struct video_stats *vs, int mode) ! 123: { ! 124: int i; ! 125: unsigned short *newvmem; ! 126: ! 127: i=find_vmode(mode); ! 128: if(i==-1) ! 129: return(-1); ! 130: newvmem=(unsigned short *)realloc(vs->vmem, vparams[i].cols*vparams[i].rows*sizeof(unsigned short)); ! 131: if(newvmem==NULL) ! 132: return(-1); ! 133: vs->vmem=newvmem; ! 134: vs->rows=vparams[i].rows; ! 135: vs->cols=vparams[i].cols; ! 136: vs->curs_start=vparams[i].curs_start; ! 137: vs->curs_end=vparams[i].curs_end; ! 138: vs->default_curs_start=vparams[i].curs_start; ! 139: vs->default_curs_end=vparams[i].curs_end; ! 140: if(vs->curs_row < 0) ! 141: vs->curs_row=0; ! 142: if(vs->curs_row >= vparams[i].rows) ! 143: vs->curs_row=vparams[i].rows-1; ! 144: if(vs->curs_col < 0) ! 145: vs->curs_col=0; ! 146: if(vs->curs_col >= vparams[i].cols) ! 147: vs->curs_col=vparams[i].cols-1; ! 148: vs->palette=palettes[vparams[i].palette]; ! 149: vs->charheight=vparams[i].charheight; ! 150: vs->charwidth=vparams[i].charwidth; ! 151: vs->mode=mode; ! 152: return(0); ! 153: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.