... | ... |
@@ -105,6 +105,22 @@ stdin_handler(void *p) |
105 | 105 |
(void)p; |
106 | 106 |
} |
107 | 107 |
|
108 |
+void |
|
109 |
+set_palette(Uint8 *addr) |
|
110 |
+{ |
|
111 |
+ int i; |
|
112 |
+ for(i = 0; i < 4; ++i) { |
|
113 |
+ Uint8 |
|
114 |
+ r = (*(addr + i / 2) >> (!(i % 2) << 2)) & 0x0f, |
|
115 |
+ g = (*(addr + 2 + i / 2) >> (!(i % 2) << 2)) & 0x0f, |
|
116 |
+ b = (*(addr + 4 + i / 2) >> (!(i % 2) << 2)) & 0x0f; |
|
117 |
+ palette[i] = 0xff000000 | (r << 20) | (r << 16) | (g << 12) | (g << 8) | (b << 4) | b; |
|
118 |
+ } |
|
119 |
+ for(i = 4; i < 16; ++i) |
|
120 |
+ palette[i] = palette[i / 4]; |
|
121 |
+ reqdraw = 1; |
|
122 |
+} |
|
123 |
+ |
|
108 | 124 |
static void |
109 | 125 |
set_inspect(Uint8 flag) |
110 | 126 |
{ |
... | ... |
@@ -336,22 +352,6 @@ doctrl(SDL_Event *event, int z) |
336 | 352 |
devctrl->dat[2] &= ~flag; |
337 | 353 |
} |
338 | 354 |
|
339 |
-void |
|
340 |
-update_palette(Uint8 *addr) |
|
341 |
-{ |
|
342 |
- int i; |
|
343 |
- for(i = 0; i < 4; ++i) { |
|
344 |
- Uint8 |
|
345 |
- r = (*(addr + i / 2) >> (!(i % 2) << 2)) & 0x0f, |
|
346 |
- g = (*(addr + 2 + i / 2) >> (!(i % 2) << 2)) & 0x0f, |
|
347 |
- b = (*(addr + 4 + i / 2) >> (!(i % 2) << 2)) & 0x0f; |
|
348 |
- palette[i] = 0xff000000 | (r << 20) | (r << 16) | (g << 12) | (g << 8) | (b << 4) | b; |
|
349 |
- } |
|
350 |
- for(i = 4; i < 16; ++i) |
|
351 |
- palette[i] = palette[i / 4]; |
|
352 |
- reqdraw = 1; |
|
353 |
-} |
|
354 |
- |
|
355 | 355 |
#pragma mark - Devices |
356 | 356 |
|
357 | 357 |
static int |
... | ... |
@@ -369,7 +369,7 @@ system_talk(Device *d, Uint8 b0, Uint8 w) |
369 | 369 |
case 0xf: return 0; |
370 | 370 |
} |
371 | 371 |
if(b0 > 0x7 && b0 < 0xe) |
372 |
- update_palette(&d->dat[0x8]); |
|
372 |
+ set_palette(&d->dat[0x8]); |
|
373 | 373 |
} |
374 | 374 |
return 1; |
375 | 375 |
} |