| ... | ... |
@@ -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 |
} |