1 |
/* |
/* |
2 |
* $Id: fb_include.c,v 1.2 2005/11/30 21:20:42 debug Exp $ |
* $Id: fb_include.c,v 1.3 2006/10/17 07:55:53 debug Exp $ |
3 |
* |
* |
4 |
* Included from dev_fb.c. |
* Included from dev_fb.c. |
5 |
* |
* |
133 |
fb_addr >>= 3; |
fb_addr >>= 3; |
134 |
switch (d->bit_depth) { |
switch (d->bit_depth) { |
135 |
case 24: |
case 24: |
136 |
|
case 32: |
137 |
r = d->framebuffer[fb_addr]; |
r = d->framebuffer[fb_addr]; |
138 |
g = d->framebuffer[fb_addr + 1]; |
g = d->framebuffer[fb_addr + 1]; |
139 |
b = d->framebuffer[fb_addr + 2]; |
b = d->framebuffer[fb_addr + 2]; |
140 |
break; |
break; |
|
/* TODO: copy to the scaledown code below */ |
|
141 |
case 16: |
case 16: |
142 |
if (d->vfb_type == VFB_HPC) { |
if (d->vfb_type == VFB_HPC) { |
143 |
b = d->framebuffer[fb_addr] + |
b = d->framebuffer[fb_addr] + |
290 |
/* > 8 bits color. */ |
/* > 8 bits color. */ |
291 |
switch (d->bit_depth) { |
switch (d->bit_depth) { |
292 |
case 24: |
case 24: |
293 |
|
case 32: |
294 |
r = d->framebuffer[fb_addr]; |
r = d->framebuffer[fb_addr]; |
295 |
g = d->framebuffer[fb_addr + 1]; |
g = d->framebuffer[fb_addr + 1]; |
296 |
b = d->framebuffer[fb_addr + 2]; |
b = d->framebuffer[fb_addr + 2]; |
297 |
break; |
break; |
298 |
|
case 16: |
299 |
|
if (d->vfb_type == VFB_HPC) { |
300 |
|
b = d->framebuffer[fb_addr] + |
301 |
|
(d->framebuffer[fb_addr+1] << 8); |
302 |
|
|
303 |
|
if (d->color32k) { |
304 |
|
r = b >> 11; |
305 |
|
g = b >> 5; |
306 |
|
r = r & 31; |
307 |
|
g = (g & 31) * 2; |
308 |
|
b = b & 31; |
309 |
|
} else if (d->psp_15bit) { |
310 |
|
int tmp; |
311 |
|
r = (b >> 10) & 0x1f; |
312 |
|
g = (b >> 5) & 0x1f; |
313 |
|
b = b & 0x1f; |
314 |
|
g <<= 1; |
315 |
|
tmp = r; r = b; b = tmp; |
316 |
|
} else { |
317 |
|
r = (b >> 11) & 0x1f; |
318 |
|
g = (b >> 5) & 0x3f; |
319 |
|
b = b & 0x1f; |
320 |
|
} |
321 |
|
} else { |
322 |
|
r = d->framebuffer[fb_addr] >> 3; |
323 |
|
/* HUH? TODO: */ |
324 |
|
g = (d->framebuffer[fb_addr] << 5) + |
325 |
|
(d->framebuffer[fb_addr + 1] >>5); |
326 |
|
b = d->framebuffer[fb_addr + 1]&31; |
327 |
|
} |
328 |
|
|
329 |
|
r *= 8; |
330 |
|
g *= 4; |
331 |
|
b *= 8; |
332 |
|
break; |
333 |
default: |
default: |
334 |
r = g = b = random() & 255; |
r = g = b = random() & 255; |
335 |
} |
} |