fixed: broken fs0, sram saves
[fceu.git] / drivers / cli / vgatweak.c
1 /* This file is "#include"d from dos-video.c and svga-video.c */
2
3 typedef struct {
4   uint8 p;
5   uint8 i;
6   uint8 v;
7 } vgareg;
8
9 vgareg 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
38 vgareg 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
67 vgareg 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
96 vgareg 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
125 vgareg 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
138 static 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