#include <exec/types.h>
#include <graphics/gfxbase.h>
#include <stdio.h>
#include <intuition/intuition.h>
struct Screen *stdscreen;          /* Used in file requester - same as s*/ 
#include <STDFile.c>

#define  DEPTH    5L       /* number of pixel planes */
#define  NMAP     32       /* 2 to the DEPTH power   */

#define  SH       256      /* screen height */
#define  SW       320      /* screen width  */
#define  WH       (SH-10)  /* window height */
#define  WW       SW       /* window width  */
#define  MAXFILENAME  64  /* maximum number of chars in requester */

struct NewScreen ns = {         /*****************/
   0 ,                     /* LeftEdge      */
   0 ,                     /* TopEdge       */
   SW ,                    /* Width         */
   SH ,                    /* Height        */
   DEPTH ,                 /* Depth         */
   2 ,                     /* DetailPen     */
   1 ,                     /* BlockPen      */
   0 ,                     /* ViewModes     */
   CUSTOMSCREEN,           /* Type          */
   NULL ,                  /* *Font         */
   (UBYTE *)"Let's Get Ziviliced!",/* *DefaultTitle */
   NULL ,                  /* *Gadgets      */
   NULL                    /* *CustomBitMap */
};                              /*****************/

#define NUM_PAIRS 5

SHORT TypePairs[] =
{
   0,  0,
  71,  0,
  71, 11,
   0, 11,
   0,  0
};

struct Border TypeOnBorder =
   { 0,0,1,0,JAM1,NUM_PAIRS,TypePairs,NULL};

struct Border TypeOffBorder =
   { 0,0,0,0,JAM1,NUM_PAIRS,TypePairs,NULL};

SHORT ColPairs[] =
{
   0,  0,
  12,  0,
  12,  6,
   0,  6,
   0,  0
};

struct Border ColBorder =
   { 0,0,2,0,JAM1,NUM_PAIRS,ColPairs,NULL};
 
struct IntuiText ReadyText =
   {3,2,JAM2, 4, 1, NULL,(UBYTE *) "READY", NULL };

SHORT Pairs1[] = {
  0,  0,
 51,  0,
 51, 11,
 0,  11,
 0,  0
 };
  
struct Border ReadyBorder = {
  -1, -1,
  1, 0, JAM1,
  NUM_PAIRS,
  Pairs1,
  NULL
};

struct IntuiText WPDSText[]=
{
   {1,0,JAM2,0,0,NULL,(UBYTE *)"Woods: ",NULL},
   {1,0,JAM2,0,0,NULL,(UBYTE *)"Plains:",NULL},
   {1,0,JAM2,0,0,NULL,(UBYTE *)"Desert:",NULL},
   {1,0,JAM2,0,0,NULL,(UBYTE *)"End Edit",NULL}
};

#define BOOL_GAD1 5

struct Gadget ReadyGadget = {
   NULL,
   260, 10, 
   50, 10, 
   GADGHNONE,
   NULL,
   BOOLGADGET, 
   (APTR)&ReadyBorder,
   NULL,
   &ReadyText, NULL, NULL, BOOL_GAD1, NULL
};

struct IntuiText YesText =
   { 4,1,JAM2,7,4,NULL,(UBYTE *)"Do it!",NULL};

struct IntuiText NoText =
   { 10,1,JAM2,7,4,NULL,(UBYTE *)"Cancel",NULL};

struct IntuiText ClearText =
   { 2,1,JAM2,40,10,NULL,(UBYTE *)"Really clear?",NULL};

struct IntuiText QuitText =
   { 2,1,JAM2,10,10,NULL,(UBYTE *)"Sure you wanna quit?",NULL};

struct NewWindow nw = {         /*****************/
   0 ,                     /* LeftEdge      */
   10 ,                    /* TopEdge       */
   WW ,                    /* Width         */
   WH ,                    /* Height        */
   -1 ,                    /* DetailPen     */
   -1 ,                    /* BlockPen      */
   CLOSEWINDOW             /* IDCMP---Flags */
        | MENUPICK
        | MOUSEBUTTONS
        | GADGETDOWN
        | MOUSEMOVE,
   WINDOWCLOSE             /*   F           */
   | BACKDROP              /*     l         */
   | BORDERLESS            /*       a       */
   | NOCAREREFRESH         /*         g     */
   | ACTIVATE ,            /*           s   */
   &ReadyGadget,           /* *FirstGadget  */
   NULL ,                  /* *CheckMark    */
   (UBYTE *)"The Map",     /* *Title        */
   NULL ,                  /* *Screen       */ /* to be filled in */
   NULL ,                  /* *BitMap       */
   0 ,                     /* MinWidth      */
   0 ,                     /* MinHeight     */
   0 ,                     /* MaxWidth      */
   0 ,                     /* MaxHeight     */
   CUSTOMSCREEN            /* Type          */
};                              /*****phew!!!*****/

/*******************************************************/
/* Menu structures Copyrighted by Custom Services 1986 */
/* Made with the Menubuilder program - a good help     */
/*******************************************************/

struct IntuiText IText[] =
  {
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Clear"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Open"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Save"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"About"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Quit"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Pixels"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Sink"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Lift"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Compress"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Scroll"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Up"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Down"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Left"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Right"},
    { 0, 1, JAM2, CHECKWIDTH, 0, NULL, (UBYTE *)"Grow      "},
    { 0, 1, JAM2, CHECKWIDTH, 0, NULL, (UBYTE *)"Vegetation"},
    { 0, 1, JAM2, CHECKWIDTH, 0, NULL, (UBYTE *)"Parameters"},
    { 0, 1, JAM2, CHECKWIDTH, 0, NULL, (UBYTE *)"Levelling"},
    { 0, 1, JAM2, CHECKWIDTH, 0, NULL, (UBYTE *)"3D-Map"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Terrain"}, /* These */
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Growth"},  /* Out!! */
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Both"}, 
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Height"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Growth"}, 
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Written by Lars Clausen."},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Intuition assistance:"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"     Henrik Clausen."},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Scenery generator for"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"     Let's Get Ziviliced,"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"Play-by-Mail game by:"},
    { 0, 1, JAM2, 0, 0, NULL, (UBYTE *)"     Malik Hyldtoft."}
  };

#define EXTRA 20
#define FLAGSA ITEMTEXT | ITEMENABLED | HIGHBOX
#define FLAGSB ITEMTEXT | ITEMENABLED | COMMSEQ | HIGHBOX
#define FLAGSC CHECKIT  | ITEMTEXT    | MENUTOGGLE | ITEMENABLED | CHECKED | HIGHBOX
#define FLAGSD ITEMTEXT | HIGHBOX
#define FLAGSAU ITEMTEXT | HIGHBOX
#define FLAGSBU ITEMTEXT | COMMSEQ | HIGHBOX
#define FLAGSCU CHECKIT  | ITEMTEXT    | MENUTOGGLE | CHECKED | HIGHBOX

struct MenuItem M1I7[] =
  {
    {&M1I7[ 1], 64,  2, 194, 10,FLAGSA,0,(APTR)&IText[24],NULL,NULL},
    {&M1I7[ 2], 64, 12, 194, 10,FLAGSA,0,(APTR)&IText[25],NULL,NULL},
    {&M1I7[ 3], 64, 22, 194, 10,FLAGSA,0,(APTR)&IText[26],NULL,NULL},
    {&M1I7[ 4], 64, 32, 194, 10,FLAGSA,0,(APTR)&IText[27],NULL,NULL},
    {&M1I7[ 5], 64, 42, 194, 10,FLAGSA,0,(APTR)&IText[28],NULL,NULL},
    {&M1I7[ 6], 64, 52, 194, 10,FLAGSA,0,(APTR)&IText[29],NULL,NULL},
    {NULL     , 64, 62, 194, 10,FLAGSA,0,(APTR)&IText[30],NULL,NULL},
};

struct MenuItem M1I4[] = 
  {
    {&M1I4[ 1], 64,  2, 84, 10,FLAGSB,0,(APTR)&IText[10],NULL,'U',NULL},
    {&M1I4[ 2], 64, 12, 84, 10,FLAGSB,0,(APTR)&IText[11],NULL,'D',NULL},
    {&M1I4[ 3], 64, 22, 84, 10,FLAGSB,0,(APTR)&IText[12],NULL,'L',NULL},
    {NULL   , 64, 32, 84, 10,FLAGSB,0,(APTR)&IText[13],NULL,'R',NULL} 
  };

/* struct MenuItem M2I2[] = 
  { /* These out 
    {&M2I2[ 1],84,2,60,10,FLAGSA,0,(APTR)&IText[19],NULL,NULL,NULL},
    {NULL   , 84,12,60,10,FLAGSA,0,(APTR)&IText[20],NULL,NULL,NULL} 
  };
*/

struct MenuItem M3I3[] =
  {
    {&M3I3[ 1],80,2,80,10,FLAGSB,0,(APTR)&IText[21],NULL,'B',NULL},
    {&M3I3[ 2],80,12,80,10,FLAGSB,0,(APTR)&IText[22],NULL,'H',NULL},
    {NULL     ,80,22,80,10,FLAGSB,0,(APTR)&IText[23],NULL,'G',NULL};

struct MenuItem M0[] = 
  {
    {&M0[ 1],  0,  0, 80, 10,FLAGSB,0,(APTR)&IText[ 0],NULL,'C',NULL},
    {&M0[ 2],  0, 12, 80, 10,FLAGSB,0,(APTR)&IText[ 1],NULL,'O',NULL},
    {&M0[ 3],  0, 24, 80, 10,FLAGSB,0,(APTR)&IText[ 2],NULL,'S',NULL},
    {&M0[ 4],  0, 36, 80, 10,FLAGSA,0,(APTR)&IText[ 3],NULL,NULL,&M1I7[0]},
    {NULL   ,  0, 48, 80, 10,FLAGSB,0,(APTR)&IText[ 4],NULL,'Q',NULL} 
  };

struct MenuItem M1[] = 
  {
    {&M1[ 1],  0,  0, 74, 10,FLAGSB,0,(APTR)&IText[ 5],NULL,'E',NULL},
    {&M1[ 2],  0, 12, 74, 10,FLAGSA,0,(APTR)&IText[ 6],NULL,NULL,NULL},
    {&M1[ 3],  0, 24, 74, 10,FLAGSA,0,(APTR)&IText[ 7],NULL,NULL,NULL},
    {&M1[ 4],  0, 36, 74, 10,FLAGSA,0,(APTR)&IText[ 8],NULL,NULL,NULL},
    {NULL,  0, 46, 74, 10,FLAGSA,0,(APTR)&IText[ 9],NULL,NULL,&M1I4[0]},
  };

struct MenuItem M2[] = 
  {
    {&M2[ 1],  0,  0, 110+EXTRA, 10,FLAGSA,0,(APTR)&IText[14],NULL,NULL,&M3I3[0]},
    {&M2[ 2],  0, 12, 110+EXTRA, 10,FLAGSC | COMMSEQ,0,(APTR)&IText[15],NULL,'V',NULL},
    {&M2[ 3],  0, 24, 110+EXTRA, 10,FLAGSA,0,(APTR)&IText[16],NULL,NULL,NULL}, 
    {&M2[ 4],  0, 36, 110+EXTRA, 10,FLAGSD,0,(APTR)&IText[17],NULL,NULL,NULL}, 
    {NULL   ,  0, 48, 110+EXTRA, 10,FLAGSD,0,(APTR)&IText[18],NULL,NULL,NULL} 
  };

struct Menu TheMenu[] =
  {
    {&TheMenu[ 1],  2,  0, 80, 10,MENUENABLED," Project               ",&M0[0]},
    {&TheMenu[ 2], 80,  0, 64, 10,MENUENABLED," Edit                  ",&M1[0]},
    { NULL,       150,  0,100, 10,MENUENABLED," New Map               ",&M2[0]} 
  };

struct Menu *MyMenu = &TheMenu[0];

USHORT ExitData[] = { 
0xffff,0x8000, 0xffff,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000, 0xc000,0x8000,
0x8000,0x8000, 0xffff,0x8000,
0x0,0x0, 0x0,0x8000, 0x1,0x8000, 0x1,0x8000, 0x1,0x8000, 0xfe1,0x8000,
0x661,0x8000, 0x601,0x8000, 0x781,0x8000, 0x601,0x8000, 0x661,0x8000,
0xfe1,0x8000, 0x1,0x8000, 0x1,0x8000, 0x1,0x8000, 0x1,0x8000, 0x1,0x8000,
0x631,0x8000, 0x361,0x8000, 0x1c1,0x8000, 0x361,0x8000, 0x631,0x8000,
0x1,0x8000, 0x1,0x8000, 0x1,0x8000, 0x181,0x8000, 0x1,0x8000, 0x381,0x8000,
0x181,0x8000, 0x181,0x8000, 0x181,0x8000, 0x3c1,0x8000, 0x1,0x8000, 0x1,0x8000,
0x1,0x8000, 0x81,0x8000, 0x181,0x8000, 0x3e1,0x8000, 0x181,0x8000,
0x181,0x8000, 0x1a1,0x8000, 0xc1,0x8000, 0x1,0x8000, 0x1,0x8000, 0x1,0x8000,
0x7fff,0x8000, 0xffff,0x8000,
0x0,0x0, 0x0,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000,
0x301e,0x8000, 0x399e,0x8000, 0x39fe,0x8000, 0x387e,0x8000, 0x39fe,0x8000,
0x399e,0x8000, 0x301e,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000,
0x3ffe,0x8000, 0x3ffe,0x8000, 0x39ce,0x8000, 0x3c9e,0x8000, 0x3e3e,0x8000,
0x3c9e,0x8000, 0x39ce,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000,
0x3e7e,0x8000, 0x3ffe,0x8000, 0x3c7e,0x8000, 0x3e7e,0x8000, 0x3e7e,0x8000,
0x3e7e,0x8000, 0x3c3e,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000,
0x3f7e,0x8000, 0x3e7e,0x8000, 0x3c1e,0x8000, 0x3e7e,0x8000, 0x3e7e,0x8000,
0x3e5e,0x8000, 0x3f3e,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000, 0x3ffe,0x8000,
0x0,0x8000, 0xffff,0x8000,
0xffff,0x8000, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0,
0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0,
0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0,
0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0,
0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0,
0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0,
0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0,
0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x8000,0x0, 0x0,0x0,
0xffff,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000, 0x8000,0x8000,
0x8000,0x8000, 0xffff,0x8000};

struct Image ExitImage = 
{ 0, 0, 25, 47, 5, (USHORT *)&ExitData[0], 0x1f, 0x0, NULL };

struct Gadget ExitGadget =
{ NULL, 296, 120, 25, 47, GADGHNONE | GADGIMAGE, GADGIMMEDIATE,
  BOOLGADGET, (APTR)&ExitImage, NULL, NULL, 0x0, 0x0, 0, 0x4 };

USHORT DesertData[] = { 
0xffff,0x8000,0x8000,0x8000,0x8000,0x8780,0x8780,0x8780,0x8000,0x8000,
0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,
0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,
0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,
0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,
0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,
0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,
0x8000,0x0,
0x0,0x1,0x1,0x1,0x1,0x301,0x301,0x301,0x1,0x1,0x1,0xf81,0x6c1,0x661,0x661,
0x661,0x6c1,0xf81,0x1,0x1,0x1,0x1,0x1,0x3c1,0x661,0x7e1,0x601,0x3c1,0x1,
0x1,0x1,0x1,0x1,0x3e1,0x601,0x3c1,0x61,0x7c1,0x1,0x1,0x1,0x1,0x1,0x3c1,
0x661,0x7e1,0x601,0x3c1,0x1,0x1,0x1,0x1,0x1,0xec1,0x761,0x661,0x601,0xf01,
0x1,0x1,0x1,0x81,0x181,0x3e1,0x181,0x181,0x1a1,0xc1,0x1,0x1,0x1,0xffff,
0x0, 0x0, 0x0, 0x0, 0x0, 0x780, 0x780, 0x780, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe,
0x7ffe, 0x707e, 0x793e, 0x799e, 0x799e, 0x799e, 0x793e, 0x707e, 0x7ffe, 0x7ffe,
0x7ffe, 0x7ffe, 0x7ffe, 0x7c3e, 0x799e, 0x781e, 0x79fe, 0x7c3e, 0x7ffe, 0x7ffe,
0x7ffe, 0x7ffe, 0x7ffe, 0x7c1e, 0x79fe, 0x7c3e, 0x7f9e, 0x783e, 0x7ffe, 0x7ffe,
0x7ffe, 0x7ffe, 0x7ffe, 0x7c3e, 0x799e, 0x781e, 0x79fe, 0x7c3e, 0x7ffe, 0x7ffe,
0x7ffe, 0x7ffe, 0x7ffe, 0x713e, 0x789e, 0x799e, 0x79fe, 0x70fe, 0x7ffe, 0x7ffe,
0x7ffe, 0x7f7e, 0x7e7e, 0x7c1e, 0x7e7e, 0x7e7e, 0x7e5e, 0x7f3e, 0x7ffe, 0x7ffe,
0x7ffe, 0x0};

struct Image DesertImage = 
{ 0, 0, 16, 72, 4, (USHORT *)&DesertData[0], 0x0F, 0x0, NULL };

struct Gadget DesertGadget =
{ NULL, 296, 29, 16, 72, GADGHCOMP | GADGIMAGE, RELVERIFY | GADGIMMEDIATE | 
  TOGGLESELECT, BOOLGADGET, (APTR)&DesertImage,
 NULL, NULL, 0x0, 0x0, 0, 0x3 };

USHORT PlainsData[] = {
0xfffc, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8,
0xe078, 0xf338, 0xf338, 0xf078, 0xf3f8, 0xf3f8, 0xe1f8, 0xfff8, 0xfff8, 0xfff8,
0xf8f8, 0xfcf8, 0xfcf8, 0xfcf8, 0xfcf8, 0xfcf8, 0xf878, 0xfff8, 0xfff8, 0xfff8,
0xfff8, 0xfff8, 0xf878, 0xff38, 0xfc38, 0xf338, 0xf898, 0xfff8, 0xfff8, 0xfff8,
0xfcf8, 0xfff8, 0xf8f8, 0xfcf8, 0xfcf8, 0xfcf8, 0xf878, 0xfff8, 0xfff8, 0xfff8,
0xfff8, 0xfff8, 0xf078, 0xf338, 0xf338, 0xf338, 0xf338, 0xfff8, 0xfff8, 0xfff8,
0xfff8, 0xfff8, 0xf838, 0xf3f8, 0xf878, 0xff38, 0xf078, 0xfff8, 0xfff8, 0xfff8,
0xfff8, 0xfff8, 0x0,
0x0, 0x4, 0x4, 0x4, 0x4, 0x304, 0x4, 0x4, 0x4, 0x4, 0x1f84, 0xcc4, 0xcc4,
0xf84, 0xc04, 0xc04, 0x1e04, 0x4, 0x4, 0x4, 0x704, 0x304, 0x304, 0x304, 0x304,
0x304, 0x784, 0x4, 0x4, 0x4, 0x4, 0x4, 0x784, 0xc4, 0x3c4, 0xcc4, 0x764, 0x4,
0x4, 0x4, 0x304, 0x4, 0x704, 0x304, 0x304, 0x304, 0x784, 0x4, 0x4, 0x4, 0x4,
0x4, 0xf84, 0xcc4, 0xcc4, 0xcc4, 0xcc4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x7c4, 0xc04,
0x784, 0xc4, 0xf84, 0x4, 0x4, 0x4, 0x4, 0x4, 0xfffc,
0x0, 0x0, 0x0, 0x0, 0x780, 0x780, 0x780, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8,
0x6078, 0x7338, 0x7338, 0x7078, 0x73f8, 0x73f8, 0x61f8, 0x7ff8, 0x7ff8, 0x7ff8,
0x78f8, 0x7cf8, 0x7cf8, 0x7cf8, 0x7cf8, 0x7cf8, 0x7878, 0x7ff8, 0x7ff8, 0x7ff8,
0x7ff8, 0x7ff8, 0x7878, 0x7f38, 0x7c38, 0x7338, 0x7898, 0x7ff8, 0x7ff8, 0x7ff8,
0x7cf8, 0x7ff8, 0x78f8, 0x7cf8, 0x7cf8, 0x7cf8, 0x7878, 0x7ff8, 0x7ff8, 0x7ff8,
0x7ff8, 0x7ff8, 0x7078, 0x7338, 0x7338, 0x7338, 0x7338, 0x7ff8, 0x7ff8, 0x7ff8,
0x7ff8, 0x7ff8, 0x7838, 0x73f8, 0x7878, 0x7f38, 0x7078, 0x7ff8, 0x7ff8, 0x7ff8,
0x7ff8, 0x7ff8, 0x0};

struct Image PlainsImage = 
{ 0, 0, 14, 73, 4, (USHORT *)&PlainsData[0], 0x0F, 0x0, NULL };

struct Gadget PlainsGadget =
{ NULL, 259, 100, 14, 73, GADGHCOMP | GADGIMAGE, RELVERIFY | GADGIMMEDIATE | 
  TOGGLESELECT, BOOLGADGET, (APTR)&PlainsImage, NULL, NULL, 0x0, 0x0, 0, 0x2 };

USHORT WoodsData[] = {
0xfffc, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xf878, 0xf878, 0xf878, 0xfff8,
0xfff8, 0xfff8, 0xe738, 0xe738, 0xe738, 0xe538, 0xe038, 0xe238, 0xe738, 0xfff8,
0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xf878, 0xf338, 0xf338, 0xf338, 0xf878, 0xfff8,
0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xf878, 0xf338, 0xf338, 0xf338, 0xf878, 0xfff8,
0xfff8, 0xfff8, 0xfe38, 0xff38, 0xf938, 0xf238, 0xf338, 0xf338, 0xf898, 0xfff8,
0xfff8, 0xfff8, 0xfff8, 0xfff8, 0xf838, 0xf3f8, 0xf878, 0xff38, 0xf078, 0xfff8,
0xfff8, 0xfff8, 0x0,
0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x18c4, 0x18c4,
0x18c4, 0x1ac4, 0x1fc4, 0x1dc4, 0x18c4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x784, 0xcc4,
0xcc4, 0xcc4, 0x784, 0x4, 0x4, 0x4, 0x4, 0x4, 0x784, 0xcc4, 0xcc4, 0xcc4,
0x784, 0x4, 0x4, 0x4, 0x1c4, 0xc4, 0x6c4, 0xdc4, 0xcc4, 0xcc4, 0x764, 0x4, 0x4,
0x4, 0x4, 0x4, 0x7c4, 0xc04, 0x784, 0xc4, 0xf84, 0x4, 0x4, 0x4, 0xfffc,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x780, 0x780, 0x780, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0,
0x0, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8,
0x7ff8, 0x7ff8, 0x6738, 0x6738, 0x6738, 0x6538, 0x6038, 0x6238, 0x6738, 0x7ff8,
0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7878, 0x7338, 0x7338, 0x7338, 0x7878, 0x7ff8,
0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7878, 0x7338, 0x7338, 0x7338, 0x7878, 0x7ff8,
0x7ff8, 0x7ff8, 0x7e38, 0x7f38, 0x7938, 0x7238, 0x7338, 0x7338, 0x7898, 0x7ff8,
0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8, 0x7838, 0x73f8, 0x7878, 0x7f38, 0x7078, 0x7ff8,
0x7ff8, 0x7ff8, 0x0};

struct Image WoodsImage = 
{ 0, 0, 14, 63, 4, (USHORT *)&WoodsData[0], 0x0F, 0x0, NULL };

struct Gadget WoodsGadget =
{ NULL, 259, 29, 14, 63, GADGHCOMP | GADGIMAGE, RELVERIFY | GADGIMMEDIATE | 
  TOGGLESELECT, BOOLGADGET, (APTR)&WoodsImage, NULL, NULL, 0x0, 0x0, 0, 0x1 };

struct Gadget MapGad =
{ NULL, 0, 10, 256, 190, GADGHNONE, RELVERIFY | GADGIMMEDIATE | FOLLOWMOUSE,
  BOOLGADGET, NULL, NULL, NULL, 0x0, 0x0, 0, 0x5};


/* Gadgets and other data for the DMRequester for the parameters */

SHORT DMCancelPairs[] = {0,0, 69,0, 69,11, 0,11, 0,0};
  
struct Border DMCancelBorder = {-2,-2,2,0,JAM1,NUM_PAIRS,(SHORT *)&DMCancelPairs,NULL};

struct IntuiText DMCancelText =
   {2,2,JAM1, 4, 1, NULL,(UBYTE *) "Cancel!", NULL };

struct Gadget DMCancel =
{   NULL,   /* NextGadget */
    78, 118, 70, 10, /* Position,size */
    GADGHCOMP,
    GADGIMMEDIATE | ENDGADGET,
    REQGADGET | BOOLGADGET,
    (APTR)&DMCancelBorder,NULL,
    &DMCancelText,
    0,
    NULL,
    0, /* GadgetID */
    NULL
};

SHORT DMOKPairs[] = {0,0, 39,0, 39,11, 0,11, 0,0};
  
struct Border DMOKBorder = {-2,-2,2,0,JAM1,NUM_PAIRS,(SHORT *)&DMOKPairs,NULL};

struct IntuiText DMOKText =
   {2,2,JAM1, 4, 1, NULL,(UBYTE *) "USE", NULL };

struct Gadget DMOK =
{   &DMCancel,      /* NextGadget */
    18, 118, 40, 10, /* Position,size */
    GADGHCOMP,
    GADGIMMEDIATE | ENDGADGET,
    REQGADGET | BOOLGADGET,
    (APTR)&DMOKBorder,NULL,
    &DMOKText,
    0,  NULL,  0, /* GadgetID */
    NULL
};

SHORT IntPairs[] = {0,0, 35,0, 35,11, 0,11, 0,0};
  
struct Border IntBorder = {-2,-2,2,0,JAM1,NUM_PAIRS,(SHORT *)&IntPairs,NULL};

/* These are the initial values of parameters */
char DMBuffer[12][6] = {"64","32","16","6","3","1","64","32","16","6","3","1"};

char UndoBuffer[6];

/* We'll need a lot of these: */
struct StringInfo IntGadgetStuff[12] = {
	{  (UBYTE *)DMBuffer[0],(UBYTE *)UndoBuffer,0,5,0,/* Bufferpos,MaxChars,DispCount */
	   NULL,NULL,NULL,NULL,NULL,NULL,   /* Kept by Intuition (nice fellow!) */
	   64,            /* LongInt, to be initialized */
	   NULL
	},
	{  (UBYTE *)DMBuffer[1],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 32, NULL
	},
	{  (UBYTE *)DMBuffer[2],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 16, NULL
	},
	{  (UBYTE *)DMBuffer[3],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 6, NULL
	},
	{  (UBYTE *)DMBuffer[4],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 3, NULL
	},
	{  (UBYTE *)DMBuffer[5],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 1, NULL
	},
	{  (UBYTE *)DMBuffer[6],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 64, NULL
	},
	{  (UBYTE *)DMBuffer[7],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 32, NULL
	},
	{  (UBYTE *)DMBuffer[8],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 16, NULL
	},
	{  (UBYTE *)DMBuffer[9],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 6, NULL
	},
	{  (UBYTE *)DMBuffer[10],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 3, NULL
	},
	{  (UBYTE *)DMBuffer[11],(UBYTE *)UndoBuffer,  0,5,0,
	   NULL,NULL,NULL,NULL,NULL,NULL, 1, NULL
	}
};

/* And, of course, these: */
struct Gadget DMIntGadget[12] = {
	{  &DMOK,		/* &NextGadget */
	   20,30,40,10,		/* Position,size */
	   GADGHCOMP, NULL,	/* Highlight,Activation */
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT, /* Flags */
	   (APTR)&IntBorder,	/* Rendering */
	   NULL, NULL, 0,	/* */
	   (APTR)&IntGadgetStuff[0],/* &SpecialInfo */
	   0, NULL		/* GadgetId,UserInfo */
	},
	{  &DMIntGadget[0], 20,44,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[1], 0, NULL
	},
	{  &DMIntGadget[1], 20,58,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[2], 0, NULL
	},
	{  &DMIntGadget[2], 20,72,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[3], 0, NULL
	},
	{  &DMIntGadget[3], 20,86,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[4], 0, NULL
	},
	{  &DMIntGadget[4], 20,100,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0,  (APTR)&IntGadgetStuff[5], 0, NULL
   },
	{  &DMIntGadget[5], 95,30,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[6], 0, NULL
	},
	{  &DMIntGadget[6], 95,44,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[7], 0, NULL
	},
	{  &DMIntGadget[7], 95,58,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[8], 0, NULL
	},
	{  &DMIntGadget[8], 95,72,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[9], 0, NULL
	},
	{  &DMIntGadget[9], 95,86,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0, (APTR)&IntGadgetStuff[10], 0, NULL
	},
	{  &DMIntGadget[10], 95,100,40,10, GADGHCOMP, NULL,
	   REQGADGET | STRGADGET | LONGINT | STRINGRIGHT,
	   (APTR)&IntBorder, NULL, NULL, 0,  (APTR)&IntGadgetStuff[11], 0, NULL
   }
};

SHORT DMReqPairs[] = {0,0, 149,0, 149,129, 0,129, 0,0, 0,12, 149,12};
struct Border DMReqBorder = {0,0,2,0,JAM1,7,(SHORT *)&DMReqPairs,NULL};

struct IntuiText MoreDMReqText =
{ 2, 1, JAM1, 12, 17, NULL, (UBYTE *)"Heigth:  Growth:",NULL};

struct IntuiText DMReqText =
{ 2, 1, JAM1, 3, 4, NULL, (UBYTE *)"Current Parameters",&MoreDMReqText};

/* The following is probably wiped out by InitReq... */
struct Requester DMReq = {
   NULL,            /* &OldRequest */
   20,20,           /* leftedge, topedge */
   200,100,         /* Width, Height */
   1,1,             /* Pointer offset */
   &DMIntGadget[11],/* &GadgetList */
   &DMReqBorder,    /* Rendering */
   &DMReqText,      /* 'Current Parameters' */
   POINTREL,        /* Flags */
   16,              /* Pen for backfill */
   NULL,            /* ReqLayer */
   /* Some more initializers live here, but we're not interested */
};