fixed: broken fs0, sram saves
[fceu.git] / drivers / cli / vgatweak.c
CommitLineData
63bd5be0 1/* This file is "#include"d from dos-video.c and svga-video.c */
2
3typedef struct {
4 uint8 p;
5 uint8 i;
6 uint8 v;
7} vgareg;
8
9vgareg v256x224_103[25] =
10{
11 { 0xc2, 0x0, 0xe7},
12 { 0xd4, 0x0, 0x45},
13 { 0xd4, 0x1, 0x3f},
14 { 0xd4, 0x2, 0x40},
15 { 0xd4, 0x3, 0x86},
16 { 0xd4, 0x4, 0x3f},
17 { 0xd4, 0x5, 0x10},
18 { 0xd4, 0x6, 0xcd},
19 { 0xd4, 0x7, 0x1f},
20 { 0xd4, 0x8, 0x0},
21 { 0xd4, 0x9, 0x41},
22 { 0xd4, 0x10, 0xc0},
23 { 0xd4, 0x11, 0xac},
24 { 0xd4, 0x12, 0xbf},
25 { 0xd4, 0x13, 0x20},
26 { 0xd4, 0x14, 0x40}, //
27 { 0xd4, 0x15, 0xe7},
28 { 0xd4, 0x16, 0x06}, //
29 { 0xd4, 0x17, 0xa3},
30 { 0xc4, 0x1, 0x1},
31 { 0xc4, 0x4, 0xe}, //
32 { 0xce, 0x5, 0x40},
33 { 0xce, 0x6, 0x5},
34 { 0xc0, 0x10, 0x41},
35 { 0xc0, 0x13, 0x0},
36};
37
38vgareg v256x240[25] =
39{
40 { 0xc2, 0x0, 0xe3},
41 { 0xd4, 0x0, 0x4f},
42 { 0xd4, 0x1, 0x3f},
43 { 0xd4, 0x2, 0x40},
44 { 0xd4, 0x3, 0x92},
45 { 0xd4, 0x4, 0x44},
46 { 0xd4, 0x5, 0x10},
47 { 0xd4, 0x6, 0x0a},
48 { 0xd4, 0x7, 0x3e},
49 { 0xd4, 0x8, 0x00},
50 { 0xd4, 0x9, 0x41},
51 { 0xd4, 0x10, 0xea},
52 { 0xd4, 0x11, 0xac},
53 { 0xd4, 0x12, 0xdf},
54 { 0xd4, 0x13, 0x20},
55 { 0xd4, 0x14, 0x40},
56 { 0xd4, 0x15, 0xe7},
57 { 0xd4, 0x16, 0x06},
58 { 0xd4, 0x17, 0xa3},
59 { 0xc4, 0x1, 0x1},
60 { 0xc4, 0x4, 0xe},
61 { 0xce, 0x5, 0x40},
62 { 0xce, 0x6, 0x5},
63 { 0xc0, 0x10, 0x41},
64 { 0xc0, 0x13, 0x0}
65};
66
67vgareg v256x224S[25] =
68{
69 { 0xc2, 0x0, 0xe3},
70 { 0xd4, 0x0, 0x5f},
71 { 0xd4, 0x1, 0x3f},
72 { 0xd4, 0x2, 0x40},
73 { 0xd4, 0x3, 0x82},
74 { 0xd4, 0x4, 0x4e},
75 { 0xd4, 0x5, 0x96},
76 { 0xd4, 0x6, 0x5},
77 { 0xd4, 0x7, 0x1},
78 { 0xd4, 0x8, 0x0},
79 { 0xd4, 0x9, 0x40},
80 { 0xd4, 0x10, 0xea},
81 { 0xd4, 0x11, 0xac},
82 { 0xd4, 0x12, 0xdf},
83 { 0xd4, 0x13, 0x20},
84 { 0xd4, 0x14, 0x40},
85 { 0xd4, 0x15, 0xe7},
86 { 0xd4, 0x16, 0x0},
87 { 0xd4, 0x17, 0xe3},
88 { 0xc4, 0x1, 0x1},
89 { 0xc4, 0x4, 0xe},
90 { 0xce, 0x5, 0x40},
91 { 0xce, 0x6, 0x5},
92 { 0xc0, 0x10, 0x41},
93 { 0xc0, 0x13, 0x0}
94};
95
96vgareg v256x256[25] =
97{
98 { 0xc2, 0x0, 0xe7},
99 { 0xd4, 0x0, 0x5f},
100 { 0xd4, 0x1, 0x3f},
101 { 0xd4, 0x2, 0x40},
102 { 0xd4, 0x3, 0x82},
103 { 0xd4, 0x4, 0x4a},
104 { 0xd4, 0x5, 0x9a},
105 { 0xd4, 0x6, 0x23},
106 { 0xd4, 0x7, 0xb2},
107 { 0xd4, 0x8, 0x0},
108 { 0xd4, 0x9, 0x61},
109 { 0xd4, 0x10, 0xa},
110 { 0xd4, 0x11, 0xac},
111 { 0xd4, 0x12, 0xff},
112 { 0xd4, 0x13, 0x20},
113 { 0xd4, 0x14, 0x40},
114 { 0xd4, 0x15, 0x7},
115 { 0xd4, 0x16, 0x1a},
116 { 0xd4, 0x17, 0xa3},
117 { 0xc4, 0x1, 0x1},
118 { 0xc4, 0x4, 0xe},
119 { 0xce, 0x5, 0x40},
120 { 0xce, 0x6, 0x5},
121 { 0xc0, 0x10, 0x41},
122 { 0xc0, 0x13, 0x0}
123};
124
125vgareg v256x256S[25] =
126{
127 { 0xc2, 0x00, 0xe7},{ 0xd4, 0x00, 0x5F},{ 0xd4, 0x01, 0x3f},
128 { 0xd4, 0x02, 0x40},{ 0xd4, 0x03, 0x82},{ 0xd4, 0x04, 0x4a},
129 { 0xd4, 0x05, 0x9a},{ 0xd4, 0x06, 0x25},{ 0xd4, 0x07, 0x15},
130 { 0xd4, 0x08, 0x00},{ 0xd4, 0x09, 0x60},{ 0xd4, 0x10, 0x0a},
131 { 0xd4, 0x11, 0xac},{ 0xd4, 0x12, 0xff},{ 0xd4, 0x13, 0x20},
132 { 0xd4, 0x14, 0x40},{ 0xd4, 0x15, 0x07},{ 0xd4, 0x16, 0x1a},
133 { 0xd4, 0x17, 0xa3},{ 0xc4, 0x01, 0x01},{ 0xc4, 0x04, 0x0e},
134 { 0xce, 0x05, 0x40},{ 0xce, 0x06, 0x05},{ 0xc0, 0x10, 0x41},
135 { 0xc0, 0x13, 0x00}
136};
137
138static void VGAPortSet(vgareg R)
139{
140 int p,i,v;
141
142 p=0x300|R.p;
143 i=R.i;
144 v=R.v;
145
146 switch(p)
147 {
148 case 0x3C0: inportb(0x3DA);
149 outportb(0x3C0,i);
150 outportb(0x3C0,v);
151 break;
152 case 0x3C2:
153 case 0x3C3:
154 default: outportb(p, v);
155 break;
156 case 0x3C4: if(i==1)
157 {
158 outportw(0x3c4,0x100);
159 outportw(0x3c4,(v<<8)|1);
160 outportw(0x3c4,0x300);
161 break;
162 }
163 case 0x3CE:
164 case 0x3D4: outportw(p,i|(v<<8));
165 break;
166 }
167}
168