/*
** Name:      AGA FloodFill Demo
** Author:    Paul Manias
** Copyright: DreamWorld Productions (c) 1996-1997.  Freely distributable.
**
** Doc:       A demo of how you should use the FLOOD raster command.
**            To exit the demo, press the left mouse button.
**
** SAS/C:     1> sc AGAFloodFill.c link startup=LIB:gms.o data=far nostackcheck
** Dice:      1> dcc -l0 -mD gms.o AGAFloodFill.c -o AGAFloodFill
*/

#include <proto/games.h>

extern struct GMSBase *GMSBase;
ULONG PREFSNAME = DEFAULT;

#define AMT_PLANES 7

ULONG Palette[] = {
  0x000000,0xFFFFFF,0xFAF5F2,0xFAE8E7,0xEEDED5,0xE8D4C8,0xDDC0AF,0xD7B5A2,
  0xD1AC96,0xDCA491,0xCBA38B,0xC5997E,0xBD8E74,0xB5846A,0xAD7A5F,0xA57056,
  0x9D674D,0x955D44,0x8C533B,0x844B34,0x7C432D,0x743B26,0x6C3320,0x642D1B,
  0x5C2616,0x532010,0x4A1D0C,0x411A09,0x381606,0x2F1204,0x260F02,0x1D0C00,
  0xAC783A,0xA67139,0xA06C39,0x986638,0x995F36,0x906037,0x8C5C36,0x945733,
  0x865735,0x905030,0x7E5133,0x8D4B2E,0x764B31,0x6E4630,0x8A462D,0x64412B,
  0x5D3D27,0x593A24,0x543822,0x50351F,0x4B341D,0x47301A,0x592218,0x402D17,
  0x382813,0x3B2007,0x302310,0x2B200D,0x331100,0x430907,0x3C0504,0x2E0202,
  0xB48038,0xB7743D,0xAE6350,0xA85D4A,0xA35644,0x9E503E,0x994A39,0x944534,
  0x9F4336,0x8E3F30,0x87412B,0x87382A,0x823628,0x803226,0x792C21,0x72251C,
  0xE1AB98,0xDBA28C,0xD79C89,0xD29582,0xCD8D7A,0xC88672,0xC27E6B,0xBD7764,
  0xB8705D,0xB36A57,0xBB5244,0xAD4A3D,0xC8594A,0x7F7444,0x847D49,0x67271E,
  0x6C2219,0x651D15,0x5E1711,0x57130E,0x500F0B,0x4A0C09,0x350303,0x270000,
  0x89874E,0x8C8E53,0x8C9358,0x8E9D62,0xC6904A,0x9AA467,0xCD9E51,0xAFAE6F,
  0xE3D765,0xD5AE58,0xBCAD78,0xC1AC7C,0xCBAA82,0xD5A588,0xEAA09B,0xECA7A2,
  0xEDADA9,0xEFB5B1,0xF0BBB8,0xF2C2BF,0xF4CBC8,0xF5D1CF,0xF7D9D7,0xFDF7F7
};

ULONG Rasterlist[] = {
  WAITLINE(0),
  FLOOD,
  RASTEND
};

/*=========================================================================*/

void main(void)
{
  int i;
  struct GameScreen *GameScreen;

  if (GameScreen = AddScreenTags(TAGS_GAMESCREEN,NULL,
     GSA_Planes,AMT_PLANES,
     GSA_Palette,Palette,
     GSA_Rasterlist,Rasterlist,
     GSA_ScrWidth,320,
     GSA_ScrHeight,256,
     GSA_ScrType,ILBM,
     TAGEND)) {

     SmartLoad("GMS:demos/data/Yattering128.pak",GameScreen->MemPtr1,0);
     ShowScreen(GameScreen);

     for (i=0; i<256; i++) {
         WaitVBL();
         Rasterlist[0] += 1;
         UpdateRasterlist(GameScreen);
     }

     WaitLMB();

     i = 0;
     do {
        WaitVBL();
        i = PaletteToColour(GameScreen,i,2,0,128,&Palette,0x000000);
     } while (i != 0);

  DeleteScreen(GameScreen);
  }
}

