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 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(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), create_bitmap_ex(3),
       destroy_bitmap(3), ellipsefill(3), fade_out(3), fixcos(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), 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.2.3                      ex12bit(3)
