11 set_paletteX(BYTE *pal, FLAG downgrade)
\r
16 memcpy(Xpal, pal, 768);
\r
22 *buf++ = (*buf >> 2);
\r
26 outp(0x03c8, 0); // Start with color 0
\r
30 outp(0x03c9, *buf++);
\r
31 outp(0x03c9, *buf++);
\r
32 outp(0x03c9, *buf++);
\r
38 get_paletteX(BYTE *pal, FLAG upgrade)
\r
42 memcpy(pal, Xpal, 768);
\r
47 *pal++ = (*pal << 2);
\r
54 get_BIOSpaletteX(BYTE *pal, FLAG upgrade)
\r
62 r.x.edx = (unsigned long) pal;
\r
64 int386(0x10, &r, &r);
\r
69 *pal++ = (*pal << 2);
\r
76 photo_negativeX(void)
\r
82 get_paletteX(temp_pal, 0);
\r
85 for (i=0; i < 256; i++) {
\r
86 *temp++ = (64 - (*temp));
\r
87 *temp++ = (64 - (*temp));
\r
88 *temp++ = (64 - (*temp));
\r
91 set_paletteX(temp_pal, 0);
\r
98 smooth64_paletteX(1, 1, 1);
\r
106 BYTE temp_pal[768];
\r
111 for (r=0; r < 8; r++) {
\r
112 for (g=0; g < 8; g++) {
\r
113 for (b=0; b < 4; b++) {
\r
114 *temp++ = (r << 3);
\r
115 *temp++ = (g << 3);
\r
116 *temp++ = (b << 4);
\r
121 set_paletteX(temp_pal, 0);
\r
126 smooth64_paletteX(BYTE r, BYTE g, BYTE b)
\r
129 BYTE temp_pal[768];
\r
132 memset(temp_pal, 0, 768);
\r
137 for (i=0; i < 64; i++) {
\r
144 temp = temp_pal + 1;
\r
145 for (i=0; i < 64; i++) {
\r
152 temp = temp_pal + 2;
\r
153 for (i=0; i < 64; i++) {
\r
159 set_paletteX(temp_pal, 0);
\r
164 brighten_paletteX(SBYTE r, SBYTE g, SBYTE b)
\r
166 short int i, j, scratch;
\r
167 BYTE temp_pal[768];
\r
171 get_paletteX(temp_pal, 0);
\r
178 for (i=0; i < 256; i++) {
\r
179 for (j=0; j < 3; j++) {
\r
180 scratch = *temp + dummy[j];
\r
181 if (scratch <= 0) {
\r
183 } else if (scratch >= 63) {
\r
191 set_paletteX(temp_pal, 0);
\r
196 stretch_paletteX(BYTE r, BYTE g, BYTE b)
\r
198 short int i, j, scratch;
\r
199 BYTE temp_pal[768];
\r
203 get_paletteX(temp_pal, 0);
\r
210 for (i=0; i < 256; i++) {
\r
211 for (j=0; j < 3; j++) {
\r
212 scratch = ((((*temp - 32) * dummy[j]) + 8) >> 4) + 32;
\r
213 if (scratch <= 0) {
\r
215 } else if (scratch >= 63) {
\r
223 set_paletteX(temp_pal, 0);
\r
228 rot_palette(BYTE dist)
\r
231 BYTE temp_pal[768];
\r
233 shift = (dist * 3);
\r
234 memcpy(temp_pal, Xpal + shift, 768 - shift);
\r
235 memcpy(temp_pal + (768 - shift), Xpal, shift);
\r
237 set_paletteX(temp_pal, 0);
\r
242 find_RGB(BYTE r, BYTE g, BYTE b)
\r
244 long shortest_dist, temp_dist;
\r
245 short int i, shortest_pal;
\r
248 shortest_dist = (r - Xpal[0]) * (r - Xpal[0]) +
\r
249 (g - Xpal[1]) * (g - Xpal[1]) +
\r
250 (b - Xpal[2]) * (b - Xpal[2]);
\r
252 for (i=1; i < 256; i++) {
\r
253 temp_dist = (r - Xpal[(i * 3) + 0]) * (r - Xpal[(i * 3) + 0]) +
\r
254 (g - Xpal[(i * 3) + 1]) * (g - Xpal[(i * 3) + 1]) +
\r
255 (b - Xpal[(i * 3) + 2]) * (b - Xpal[(i * 3) + 2]);
\r
257 if (temp_dist < shortest_dist) {
\r
258 shortest_dist = temp_dist;
\r