Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ex12bit(3)			 Allegro manual 		      ex12bit(3)

NAME
     ex12bit  -  How  to  fake a 12-bit truecolor mode on an 8-bit card. Allegro
     game programming library.

SYNOPSIS
     #include <allegro.h>

     Example ex12bit

DESCRIPTION
     This program sets up a 12-bit mode on any	8-bit  card,  by  setting  up  a
     256-colour  palette  that	will fool the eye into grouping two 8-bit pixels
     into one 12-bit pixel. In order  to  do  this,  you  make	your  256-colour
     palette  with all the combinations of blue and green, assuming green ranges
     from 0-15 and blue from 0-14. This takes up 16x15=240 colours. This  leaves
     16  colours  to  use  as  red  (red  ranges  from 0-15).  Then you put your
     green/blue in one pixel, and your red in the pixel next to it. The eye gets
     fooled into thinking it's all one pixel.

     The example starts setting a normal 256 color mode, and construct a special
     palette for it. But then comes the trick: you need to write to a set of two
     adjacent pixels to form a single 12 bit dot. Two eight bit  pixels  is  the
     same  as one 16 bit pixel, so after setting the video mode you need to hack
     the screen bitmap about, halving the width and changing it to  use  the  16
     bit  drawing code. Then, once you have packed a color into the correct for-
     mat (using the makecol12() function below), any of the normal Allegro draw-
     ing functions can be used with this 12 bit display!

     Things to note:

     The horizontal width is  halved,  so  you	get  resolutions  like	320x480,
     400x600, and 512x768.

     Because  each  dot  is  spread  over two actual pixels, the display will be
     darker than in a normal video mode.

     Any bitmap data will obviously need converting to the correct 12  bit  for-
     mat: regular 15 or 16 bit images won't display correctly...

     Although this works like a truecolor mode, it is actually using a 256 color
     palette, so palette fades are still possible!

     This code only works in linear screen modes (don't try Mode-X).

SEE ALSO
     BITMAP(3), END_OF_MAIN(3), MATRIX(3), PALETTE(3), RGB(3), allegro_error(3),
     allegro_init(3),  allegro_message(3),  apply_matrix(3), blit(3), circle(3),
     clear_bitmap(3), clear_keybuf(3), clear_to_color(3), create_bitmap(3), cre-
     ate_bitmap_ex(3),	destroy_bitmap(3),  ellipsefill(3),  fade_out(3),   fix-
     cos(3),  fixed(3),  fixsin(3),  fixtoi(3), font(3), get_rotation_matrix(3),
     getpixel(3),  install_keyboard(3),   itofix(3),   keypressed(3),	line(3),
     makecol(3),     masked_blit(3),	 putpixel(3),	  rest(3),    screen(3),
     set_clip_rect(3),	  set_color(3),     set_gfx_mode(3),	 set_palette(3),
     text_height(3), text_length(3), textout_ex(3), textprintf_ex(3)

Allegro 			  version 4.4.3 		      ex12bit(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ex12bit&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help