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

FreeBSD Manual Pages


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

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

       #include	<allegro.h>

       Example ex12bit

       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 pix-
       els into	one  12-bit  pixel.  In	 order	to  do	this,  you  make  your
       256-colour  palette with	all the	combinations of	blue and green,	assum-
       ing 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	chang-
       ing 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).

       BITMAP(3),  END_OF_MAIN(3),  MATRIX(3), PALETTE(3), RGB(3), allegro_er-
       ror(3), allegro_init(3),	allegro_message(3), apply_matrix(3),  blit(3),
       circle(3),  clear_bitmap(3),  clear_keybuf(3),  clear_to_color(3), cre-
       ate_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),
       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),

Allegro				 version 4.4.3			    ex12bit(3)


Want to link to this manual page? Use this URL:

home | help