Provided by: allegro4-doc_4.4.2-10_all bug

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 format (using the makecol12() function below), any of the normal  Allegro
       drawing 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 format: 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(3alleg4),     END_OF_MAIN(3alleg4),     MATRIX(3alleg4),      PALETTE(3alleg4),      RGB(3alleg4),
       allegro_error(3alleg4),     allegro_init(3alleg4),    allegro_message(3alleg4),    apply_matrix(3alleg4),
       blit(3alleg4), circle(3alleg4),  clear_bitmap(3alleg4),  clear_keybuf(3alleg4),  clear_to_color(3alleg4),
       create_bitmap(3alleg4),    create_bitmap_ex(3alleg4),    destroy_bitmap(3alleg4),   ellipsefill(3alleg4),
       fade_out(3alleg4),  fixcos(3alleg4),  fixed(3alleg4),  fixsin(3alleg4),  fixtoi(3alleg4),  font(3alleg4),
       get_rotation_matrix(3alleg4),      getpixel(3alleg4),     install_keyboard(3alleg4),     itofix(3alleg4),
       keypressed(3alleg4),   line(3alleg4),    makecol(3alleg4),    masked_blit(3alleg4),    putpixel(3alleg4),
       screen(3alleg4), set_clip_rect(3alleg4), set_color(3alleg4), set_gfx_mode(3alleg4), set_palette(3alleg4),
       text_height(3alleg4), text_length(3alleg4), textout_ex(3alleg4), textprintf_ex(3alleg4)