#28971 - ayqazi - Tue Nov 09, 2004 1:37 pm
Hi,
I was browsing the Allegro (cross-platform graphics library) and I saw this example (comment taken from it:)
/*
* Example program for the Allegro library, by Richard Mitton.
*
* or "How to get a 12-bit mode on an 8-bit card"
*
* 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.
*
* It's quite simple (sort of). 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.
*
* It's all very simple really. Honest.
*
* To start with, you set a normal 256 color VESA 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!
*
* Note: This code only works in linear screen modes (don't try Mode-X).
*/
I was just wondering if we could put it to some kind of funky use? Yes, the GBA's already got 16-bit mode, but its only single buffered. I was thinking of doing this trick with the 8-bit double-buffered mode and thus providing a 12-bit real colour double-buffered mode.
I don't however think its a useful hack. However, what does everybody else think? Could it be useful in any situations?
Thanks,
Asfand Yar
_________________
--
http://www.it-is-truth.org/
I was browsing the Allegro (cross-platform graphics library) and I saw this example (comment taken from it:)
/*
* Example program for the Allegro library, by Richard Mitton.
*
* or "How to get a 12-bit mode on an 8-bit card"
*
* 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.
*
* It's quite simple (sort of). 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.
*
* It's all very simple really. Honest.
*
* To start with, you set a normal 256 color VESA 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!
*
* Note: This code only works in linear screen modes (don't try Mode-X).
*/
I was just wondering if we could put it to some kind of funky use? Yes, the GBA's already got 16-bit mode, but its only single buffered. I was thinking of doing this trick with the 8-bit double-buffered mode and thus providing a 12-bit real colour double-buffered mode.
I don't however think its a useful hack. However, what does everybody else think? Could it be useful in any situations?
Thanks,
Asfand Yar
_________________
--
http://www.it-is-truth.org/