delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/02/04/02:22:36

Message-ID: <19990204071933.10404.qmail@hotmail.com>
X-Originating-IP: [203.2.193.71]
From: "Stephen Gordon" <stephengordon AT hotmail DOT com>
To: djgpp AT delorie DOT com
Subject: Ultra-newbie needs ultra-help
Date: Wed, 03 Feb 1999 23:19:32 PST
Mime-Version: 1.0
Reply-To: djgpp AT delorie DOT com

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019