Mail Archives: djgpp/1999/02/04/02:22:36
I am trying to learn how to program in DJGPP. I have only just started.
I have a
P200 with Win95, and have downloaded DJGPP v2.8.1 and Allegro v3.1 (as
well
as RHIDE). My problem is that my program, which is supposed to display
the
Mandelbrot set on screen in 256 colors, only does it in 16. The source
is below as
it's fairly short, and the strange thing is that it works properly on my
other more
powerful computer which also runs Win95.
Any suggestions? (I can't find this in the FAQs)
Stephen Gordon
PS. I don't know any assembler.
Source code below
________________________________________________________________
#include "allegro.h"
int main()
{
PALLETE pallete;
BITMAP *m_map;
RGB temp;
int x, y, c;
float a, b, aa, bb, m, n;
allegro_init();
install_keyboard();
set_gfx_mode(GFX_AUTODETECT, 800, 600, 0, 0);
set_color_depth(8);
m_map = create_bitmap(800,600);
/* first set the pallete to black to hide what we are doing */
for (c=0; c<255; c++){
pallete[c].r=0;
pallete[c].g=0;
pallete[c].b=0;
}
pallete[1].r=255;
pallete[1].g=255;
pallete[1].b=255;
set_pallete(pallete);
/* draw the M-set onto the memory-map */
for (y=0; y<600; y++){
for (x=0; x<800; x++){
a=b=c=aa=bb=0;
m=(2*(x-399.5)/399.5)-.5;
n=(2*(y-299.5)/299.5);
while (((a*a+b*b)<4)&&(c<256)){
aa=a*a-b*b+m;
bb=2*a*b+n;
a=aa;
b=bb;
c++;
}
putpixel (m_map, x, y, c);
if (y==(int)(0.75*x))
putpixel (screen, x, y, 1);
}
}
blit(m_map, screen, 0, 0, 0, 0, 800, 600);
/* fill our pallete with a gradually altering sequence of colors */
for (c=0; c<64; c++) {
pallete[c].r = c;
pallete[c].g = 0;
pallete[c].b = 0;
}
for (c=64; c<128; c++) {
pallete[c].r = 127-c;
pallete[c].g = c-64;
pallete[c].b = 0;
}
for (c=128; c<192; c++) {
pallete[c].r = 0;
pallete[c].g = 191-c;
pallete[c].b = c-128;
}
for (c=192; c<256; c++) {
pallete[c].r = 0;
pallete[c].g = 0;
pallete[c].b = 255-c;
}
/* animate the image by rotating the pallete */
while (!keypressed()) {
temp = pallete[255];
for (c=255; c>0; c--)
pallete[c] = pallete[c-1];
pallete[0] = temp;
set_pallete(pallete);
}
return 0;
}
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
- Raw text -