/[gxemul]/trunk/src/devices/fb_include.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/src/devices/fb_include.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 31 by dpavlin, Mon Oct 8 16:19:37 2007 UTC revision 32 by dpavlin, Mon Oct 8 16:20:58 2007 UTC
# Line 1  Line 1 
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   *   *
# Line 133  void REDRAW(struct vfb_data *d, int addr Line 133  void REDRAW(struct vfb_data *d, int addr
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] +
# Line 290  void REDRAW(struct vfb_data *d, int addr Line 290  void REDRAW(struct vfb_data *d, int 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                                  }                                  }

Legend:
Removed from v.31  
changed lines
  Added in v.32

  ViewVC Help
Powered by ViewVC 1.1.26