/* $Filename: WormWars/Source/system.h
 * $VER:      WormWars 7.21a for Amiga
 *
 * © Copyright 2002 James R. Jacobs. Freely distributable.

#INCLUDES -------------------------------------------------------------- */

#include <exec/exec.h>
#include <exec/memory.h>
#include <pragmas/exec_pragmas.h>
#include <clib/exec_protos.h>
#include <exec/execbase.h>

#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>   /* STRINGA_ReplaceMode */
#include <intuition/intuitionbase.h> /* struct IntuitionBase */
#include <pragmas/intuition_pragmas.h>

// #include <pragmas/asl_pragmas.h>
#include <libraries/asl.h>           /* ASL_FileRequest */

#include <libraries/gadtools.h>      /* struct StringInfo */
#include <pragmas/gadtools_pragmas.h>

#include <devices/audio.h>
#include <devices/gameport.h>        /* struct GamePortTrigger */

// #include <pragmas/dos_pragmas.h>
#include <dos/dosextens.h>           /* struct Process */
#include <dos/dos.h>

#include <graphics/gfxbase.h>
#include <graphics/displayinfo.h>    /* PAL_MONITOR_ID, etc. */
#include <pragmas/graphics_pragmas.h>

#include <libraries/iffparse.h>
#include <pragmas/iffparse_pragmas.h>

#include <utility/date.h>            /* struct DateStamp */
#include <pragmas/utility_pragmas.h>

#include <workbench/workbench.h>     /* struct DiskObject */
#include <pragmas/wb_pragmas.h>

#include <hardware/cia.h>            /* struct CIA */

#include <libraries/lowlevel.h>

// #include <libraries/amigaguide.h>

#include <stdio.h>                   /* FILE, printf() */
#include <stdlib.h>                  /* EXIT_SUCCESS, EXIT_FAILURE */

#include "diff.h"
#include "same.h"
#include "libproto.h"

/* joysticks */

#define JOYUP          1
#define JOYDOWN        2
#define JOYLEFT        4
#define JOYRIGHT       8
#define JOYFIRE1      16
#define JOYFIRE2      32
#define POTGOR         *(UWORD *)0xDFF016     

#define OLD            1
#define NEW            0

/* #DEFINES ---------------------------------------------------------------

Help|About... window */

#define ABOUTLINES     6
#define ABOUTSHADOW    DARKGREY
#define ABOUTSHINE     LIGHTGREY
#define PROJECTX     128
#define PROJECTY      75
#define KICKSTARTX   104
#define KICKSTARTY    91
#define WORKBENCHX   104
#define WORKBENCHY    99

/* fxable/musicable */

#define FAILED         0 // tried and failed
#define SUCCEEDED      1 // tried and succeeded
#define UNTRIED        2 // untried, will try at startup
#define DEFER          3 // untried, will try when needed

/* miscellaneous */

#define ANIMDELAY   1800
#define TSOFFSET     200 // you can adjust y-positions of high scores by adjusting this
#define ENTIREXPIXEL 640
#define ENTIREYPIXEL 512

/* constant strings used more than once */

#define TITLEBAR       "Worm Wars 7.21a"
#define PATTERN        "(#?.fset)"
#define OLDKICKSTART   "Worm Wars: You need Kickstart R2.04+!\n(Can't open intuition.library V37+!)\n"

/* object descriptions (in pixels) */

#define FIRSTDESCX   130
#define SECONDDESCX    (SCREENXPIXEL - FIRSTDESCX)
#define DESCY          3

/* ARRAYS ---------------------------------------------------------------- */

#define CREATUREHELPS 15
struct
{   UBYTE  image;
    STRPTR desc;
    ULONG  score,
           pain;
} creaturehelp[CREATUREHELPS + 1] =
{   {BIRD,      "Bird",      SCORE_BIRD,      PAIN_BIRD},
    {CLOUD,     "Cloud",     SCORE_CLOUD,     PAIN_CLOUD},
    {DOG,       "Dog",       SCORE_DOG,       PAIN_DOG},
    {FIRSTDRIP, "Drip",      SCORE_DRIP,      PAIN_DRIP},
    {FISH,      "Fish",      SCORE_FISH,      PAIN_FISH},
    {GIRAFFE,   "Giraffe",   SCORE_GIRAFFE,   PAIN_GIRAFFE},
    {GOAT,      "Goat",      SCORE_GOAT,      PAIN_GOAT},
    {LION,      "Lion",      SCORE_LION,      PAIN_LION},
    {ORB,       "Orb",       SCORE_ORB,       PAIN_ORB},
    {OCTOPUS,   "Octopus",   SCORE_OCTOPUS,   PAIN_OCTOPUS},
    {OTTER,     "Otter",     SCORE_OTTER,     PAIN_OTTER},
    {PENGUIN,   "Penguin",   SCORE_PENGUIN,   PAIN_PENGUIN},
    {PROTECTOR, "Protector", 0,               PAIN_PROTECTOR},
    {SLIME,     "Slime",     0,               PAIN_SLIME},
    {WHIRLWIND, "Whirlwind", SCORE_WHIRLWIND, PAIN_WHIRLWIND},
    {LASTHEAD,  "Worm",      0,               PAIN_HEAD}
};

STRPTR objectdesc[LASTOBJECT + 1] =
{   "AFFIXER: Stops protectors rotating.",
    "AMMO: 2-6 bullets.",
    "ARMOUR: Immune to most damage.",
    "BIAS: Rules changes in your favour.",
    "BOMB: An explosion.",
    "BONUS: Awards the next number.",
    "BRAKES: Enables very slow speed.",
    "CLOCK: Extra time.",
    "CONVERTER: Fragments to missiles.",
    "CUTTER: Cuts a tunnel through tail.",
    "CYCLONE: Unleashes a whirlwind.",
    "ENCLOSER: Rectangular enclosure.",
    "GLOW: Leaves a glowing tail.",
    "GROWER: Enlarges silver and gold.",
    "HEALER: 100/200 lives.",
    "ICE: Freezes enemies.",
    "LIFE: 2-6 lives.",
    "LIGHTNING: Flashes around tail.",
    "MAGNET: Attracts all objects.",
    "MISSILE: A guided missile.",
    "MULTIPLIER: More points.",
    "POWER: Thicker bullets.",
    "PROTECTOR: An orbiting companion.",
    "PULSE: Fragment explosion.",
    "PUSHER: Lets you push things.",
    "REMNANTS: Bullets leave a trail.",
    "SIDESHOT: Shoot sideways.",
    "SLAYER: Smart bomb.",
    "SLOWER: Slows creatures down.",
    "SWITCHER: Changes tail colours.",
    "TREASURE: Treasure level.",
    "UMBRELLA: Skips 2-3 levels."
};

UWORD chip LogoData[8968] =
{
  /* Plane 0 */
  15360,480,30,0,2,8,0,0,1,0,32,0,32,0,0,0,0,0,0,
  53120,1660,103,49152,3588,16,0,256,2,0,16,0,35,0,1,32768,0,0,0,
  3456,108,6,49152,12292,16,0,128,2,0,3,65535,65503,59392,1,32768,0,0,0,
  3584,112,7,0,16384,0,0,0,0,64,1,65535,65503,63488,0,0,0,0,6,
  7168,224,14,0,32768,0,0,0,0,0,0,0,64,31744,0,0,0,0,6,
  3328,104,6,32769,8192,0,0,0,0,0,0,21845,21834,7680,0,0,0,0,24,
  3072,96,6,2,24578,43657,0,2,43680,36864,0,0,64,3840,0,0,0,0,24,
  3328,112,14,32770,32832,0,0,0,0,0,1,0,64,1920,0,0,0,0,0,
  7168,224,6,4,33280,0,0,0,0,0,3,36863,65496,896,0,0,0,0,64,
  3328,96,6,32772,33792,14,0,0,1,49152,1,32768,68,896,0,0,0,0,0,
  3072,96,6,4,2112,1,0,0,0,8192,1,40960,9249,16832,0,0,0,0,256,
  3584,96,15,8,4,16,20480,1,2,2560,1,33792,64544,448,0,0,0,0,32,
  7168,224,6,8,4,16,0,0,8194,0,1,49152,16,8352,2,43666,18724,37449,8192,
  3328,96,6,32776,2,8,2056,0,1,256,1,32768,0,128,0,73,9362,9362,160,
  3072,96,6,0,64,0,0,0,0,0,3,40960,0,4672,2,43652,37444,34848,32768,
  7424,96,14,32768,128,0,1040,1,0,144,1,32768,30720,800,0,0,0,0,160,
  3072,224,6,0,256,0,8,0,0,16,1,49153,40704,336,0,0,0,0,64,
  3584,96,7,0,256,0,20,0,0,24,1,32768,6912,256,0,0,0,0,128,
  7168,96,6,0,512,0,0,0,0,10,3,32768,7168,464,0,0,0,0,32,
  3072,96,14,32768,512,0,4,0,0,0,1,32768,14336,432,0,0,0,0,128,
  3072,112,6,0,2560,0,4,0,0,0,1,32768,6656,896,0,0,0,0,64,
  3072,96,6,32768,2560,0,8,0,0,0,1,32768,6144,384,0,0,0,0,128,
  7168,96,14,0,2560,0,0,0,0,0,1,49152,7168,384,0,0,0,0,32,
  3072,224,6,32770,512,0,0,0,0,0,1,32768,6144,448,0,0,0,0,128,
  3072,96,6,2,2560,0,0,0,0,0,1,32768,14336,384,0,0,0,64,64,
  3072,96,7,2,512,0,8,0,0,0,1,49152,6144,896,0,0,0,384,128,
  7168,96,14,2,512,0,0,0,0,0,1,32768,6144,384,0,0,0,384,16416,
  3072,224,6,32770,2560,0,8,0,0,0,3,32768,6144,384,0,0,0,0,128,
  3072,96,6,2,512,0,0,0,0,0,1,32768,14336,384,0,0,0,0,64,
  3072,96,7,0,512,0,0,0,0,0,1,32768,6144,896,0,0,0,0,0,
  7168,96,6,2,2560,0,8,0,0,0,1,49152,6144,384,0,0,0,0,160,
  3072,224,6,32768,512,0,0,0,0,0,1,32768,6144,384,0,0,0,0,16448,
  3072,96,6,2,2560,0,8,0,0,0,3,32768,14336,448,0,0,0,0,128,
  3072,0,15,0,2560,0,0,0,0,0,1,32768,6144,896,0,0,0,0,16416,
  7168,0,6,0,512,0,0,0,0,0,1,32768,6144,384,0,0,0,0,128,
  3072,0,6,32768,0,0,0,0,0,0,1,32768,6144,384,0,0,0,0,64,
  3072,0,14,0,0,0,8,0,0,0,3,32768,14336,384,0,0,0,0,0,
  3072,0,6,32768,0,0,0,64,0,0,1,32768,6144,896,0,0,0,0,128,
  7168,0,6,0,0,0,8,0,32768,0,1,32768,6144,384,0,0,0,0,16384,
  3072,0,15,0,0,0,0,64,0,0,1,32768,6144,384,0,0,0,0,128,
  3072,0,12,32768,0,0,16,0,32768,0,3,32768,14336,384,0,0,0,0,0,
  3072,0,16413,0,16386,10,1024,0,32768,0,1,32768,6144,896,0,0,0,0,128,
  7200,0,33850,0,8196,16,16416,0,32768,0,1,32768,6144,384,0,0,0,0,0,
  3136,0,33008,0,8196,16,0,0,32768,0,1,32768,6144,384,0,0,0,0,0,
  3263,65535,32711,0,4096,0,112,0,32768,0,3,32768,14336,384,0,0,0,0,128,
  3199,65535,32594,0,4096,0,288,0,0,0,1,32768,6144,896,0,0,0,0,0,
  6144,1,262,0,2048,0,2144,0,32768,0,1,32768,6144,384,0,0,0,0,0,
  170,43691,10796,0,1026,43653,21184,0,0,0,1,32768,6144,384,0,0,0,0,128,
  0,1,64,0,768,0,1024,0,0,0,0,0,0,0,0,0,0,0,0,
  0,1,384,0,0,0,6144,0,0,0,0,0,0,0,0,0,0,0,0,
  4095,65535,32256,0,0,15,57344,0,0,0,0,0,0,0,0,0,0,0,16512,
  0,1,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,32768,0,4,16,0,0,0,0,0,0,0,0,0,0,0,0,16512,
  0,0,32768,0,4,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,16384,0,2,8,0,0,0,0,0,0,0,0,0,0,0,0,16512,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16512,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16384,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
  0,0,0,1,0,8,0,0,1,0,0,1,0,0,0,0,0,0,16384,
  15360,480,30,0,0,16,0,256,2,0,0,2,0,0,0,0,0,0,128,
  53120,1660,103,49152,0,16,0,128,2,0,0,98,0,320,0,0,0,0,0,
  3456,108,6,49152,0,0,0,0,0,64,0,5117,65535,64736,0,0,0,0,128,
  3584,112,7,0,0,0,0,0,0,0,0,18429,65535,64224,0,0,0,0,0,
  7168,224,14,0,0,0,0,0,0,0,0,3588,0,480,0,0,0,0,128,
  3328,104,6,32769,21845,21770,32768,2,43680,36864,1,7212,43690,44000,0,0,0,0,0,
  3072,96,6,0,0,0,0,0,0,0,0,6148,0,480,0,0,0,0,128,
  3328,112,14,32768,0,0,0,0,0,0,0,12292,0,992,0,0,0,0,0,
  7168,224,6,0,0,14,0,0,1,49152,0,8205,65535,63712,0,0,0,0,128,
  3328,96,6,32768,0,1,0,0,0,8192,0,24596,0,480,0,0,0,2,0,
  3072,96,6,0,0,16,20480,1,2,2560,0,24898,0,64,0,0,0,0,128,
  3584,96,15,0,0,16,0,0,8194,0,0,16386,0,128,0,0,0,6,0,
  7168,224,6,0,0,8,2056,0,1,256,0,16897,0,0,0,0,0,6,0,
  3328,96,6,32768,0,0,128,0,0,0,0,20480,0,0,0,0,0,0,16536,
  3072,96,6,0,0,0,1160,1,0,144,0,17408,0,0,0,0,0,0,24,
  7424,96,14,32768,0,0,128,0,0,16,5,16384,0,0,0,0,0,6,16512,
  3072,224,6,0,0,0,12,0,0,24,7,49152,0,0,0,0,0,6,8,
  3584,96,7,0,0,0,0,0,0,10,12,24576,0,0,0,0,0,0,152,
  7168,96,6,0,0,0,4,0,0,0,4,24576,0,0,0,0,0,0,16408,
  3072,96,14,32768,0,0,4,0,0,0,4,12288,0,0,0,0,0,0,24,
  3072,112,6,0,0,0,8,0,0,0,12,12288,0,0,0,0,0,0,152,
  3072,96,6,32768,0,0,0,0,0,0,4,14336,0,0,0,0,0,0,24,
  7168,96,14,0,68,0,512,0,0,0,2,7169,4,16384,0,0,0,0,152,
  3072,224,6,32768,8,0,0,0,0,0,0,3842,9,36864,0,0,0,0,24,
  3072,96,6,0,4096,0,520,0,0,0,0,2041,65511,62464,0,0,0,0,16408,
  3072,96,7,0,8192,0,1024,0,0,0,0,1021,65527,64512,0,0,0,0,152,
  7168,96,14,0,16384,0,1024,0,0,0,0,4,20,7808,0,0,0,0,16408,
  3072,224,6,32768,33280,0,1024,0,0,0,0,4,34960,8064,0,0,0,0,128,
  3072,96,6,0,1024,8,1032,0,0,0,0,0,0,1408,0,0,0,0,8,
  3072,96,7,1,2056,32,512,0,0,0,0,2,8,1728,0,0,0,0,152,
  7168,96,6,0,4100,16,0,0,0,0,0,1,4,2752,0,0,0,0,24,
  3072,224,6,32770,0,0,0,0,0,0,0,0,0,864,0,0,0,0,16384,
  3072,96,6,0,0,0,8,0,0,0,0,0,0,864,0,0,0,0,128,
  3072,0,15,0,0,0,0,0,0,0,0,0,0,864,0,0,0,0,16384,
  7168,0,6,0,0,0,8,0,0,0,0,0,0,816,0,0,0,0,128,
  3072,0,6,32768,0,0,0,0,0,0,0,0,0,880,0,0,0,0,0,
  3072,0,14,0,0,0,0,64,0,0,0,0,0,816,0,0,0,0,0,
  3072,0,6,32768,0,0,0,0,32768,0,0,0,0,848,0,0,0,0,0,
  7168,0,6,0,0,0,8,64,0,0,0,0,0,784,0,0,0,0,0,
  3072,0,15,0,0,0,16,0,32768,0,0,0,0,688,0,0,0,0,0,
  3072,0,12,32768,4,10,0,0,32768,0,2,0,8,3600,0,0,0,0,0,
  3072,0,16413,0,8,16,32,0,32768,0,4,0,16,3328,0,0,0,0,0,
  7200,0,33850,0,8,16,0,0,32768,0,4,0,16,6160,0,0,0,0,0,
  3136,0,33008,0,8192,0,112,0,32768,0,15,65535,65519,61952,0,0,0,0,0,
  3263,65535,32711,0,8192,0,288,0,0,0,15,65535,65519,53248,0,0,0,0,0,
  3199,65535,32594,0,4096,0,2144,0,32768,0,8,0,32,17408,0,0,0,0,0,
  6144,1,262,2,2053,21770,41664,0,0,0,10,43690,43685,2048,0,0,0,0,0,
  170,43691,10796,0,1536,0,1024,0,0,0,8,0,32,8192,0,0,0,0,0,
  0,1,64,0,0,0,6144,0,0,0,8,0,35,16384,0,0,0,0,0,
  0,1,384,0,0,15,57344,0,0,0,15,65535,65516,0,0,0,0,0,0,
  4095,65535,32256,0,192,0,0,0,0,0,0,0,33,0,0,0,0,0,0,
  0,1,0,0,8,16,0,0,0,0,0,0,16,0,0,0,0,0,0,
  0,0,32768,0,8,16,0,0,0,0,0,0,16,0,0,0,0,0,0,
  0,0,32768,0,4,8,0,0,0,0,0,0,8,0,0,0,0,0,0,
  /* Plane 1 */
  15360,480,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  3968,124,7,49152,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,
  3456,108,6,49152,0,0,49152,0,0,6144,3,65535,65503,59392,0,0,0,0,0,
  3584,112,7,0,1979,65519,64000,31,65533,65280,1,65535,65503,63488,6,0,0,0,0,
  7168,224,14,0,7419,65519,65024,15,65533,65408,0,0,64,31744,6,0,0,0,0,
  3072,96,6,0,1000,34,7936,0,4,17344,0,0,64,7680,6,0,0,0,0,
  3072,96,6,0,3864,32,1920,0,4,240,0,0,64,3840,6,0,0,0,0,
  3072,112,14,0,3336,32,960,0,4,112,1,0,64,1920,31,65535,65535,65535,65024,
  7168,224,6,0,6152,32,480,8,4,56,3,36863,65472,896,31,65535,65535,65535,65024,
  3072,96,6,0,12299,65504,224,28,32764,28,1,32768,64,896,31,65535,65535,65535,63488,
  3072,96,6,0,24584,32,224,12,4,28,1,32768,0,448,31,65535,65535,65535,63488,
  3584,96,15,0,24576,0,112,12,0,14,1,32768,0,448,24,0,0,0,0,
  7168,224,6,0,24576,0,112,12,0,14,1,49152,0,128,24,0,0,0,0,
  3072,96,6,0,49152,0,32,14,0,4,1,32768,0,128,24,0,0,0,0,
  3072,96,6,0,49152,0,32,12,0,4,3,32768,0,512,24,0,0,0,0,
  7168,96,14,0,49152,0,128,28,0,4,1,32768,30720,768,24,0,0,0,1536,
  3072,224,6,0,49152,0,192,12,0,4,1,49152,7936,256,24,0,0,0,1536,
  3584,96,7,0,49152,0,64,14,0,0,1,32768,6912,256,24,0,0,0,7680,
  7168,96,6,0,49152,0,64,12,0,0,3,32768,7168,448,24,0,0,0,7680,
  3072,96,14,0,49152,0,112,28,0,0,1,32768,14336,384,31,65535,65535,65504,7680,
  3072,112,6,0,49152,0,96,12,0,0,1,32768,6144,896,31,65535,65535,65504,15872,
  3072,96,6,0,49152,0,224,12,0,0,1,32768,6144,384,0,0,0,0,7680,
  7168,96,14,0,49152,0,96,12,0,0,1,49152,7168,384,0,0,0,0,15872,
  3072,224,6,0,49152,0,112,14,0,0,1,32768,6144,448,0,0,0,0,7680,
  3072,96,6,0,49152,0,224,12,0,0,1,32768,14336,384,0,0,0,0,15872,
  3072,96,7,0,57344,0,96,12,0,0,1,49152,6144,896,0,0,0,0,7680,
  7168,96,14,0,49152,0,96,14,0,0,1,32768,6144,384,0,0,0,0,7680,
  3072,224,6,0,49152,0,96,12,0,0,3,32768,6144,384,0,0,0,0,15872,
  3072,96,6,0,49152,0,96,28,0,0,1,32768,14336,384,0,0,0,0,7680,
  3072,96,7,0,49152,0,112,12,0,0,1,32768,6144,896,0,0,0,0,15872,
  7168,96,6,0,49152,0,96,12,0,0,1,49152,6144,384,0,0,0,0,7680,
  3072,224,6,0,49152,0,96,14,0,0,1,32768,6144,384,0,0,0,0,7680,
  3072,96,6,0,49152,0,224,12,0,0,3,32768,14336,448,0,0,0,0,7680,
  3072,0,15,0,49152,0,96,12,0,0,1,32768,6144,896,0,0,0,0,7680,
  7168,0,6,0,49152,0,112,28,0,0,1,32768,6144,384,0,0,0,0,15872,
  3072,0,6,0,49152,0,96,12,0,0,1,32768,6144,384,0,0,0,0,7680,
  3072,0,14,0,16384,0,224,12,0,0,3,32768,14336,384,0,0,0,0,15872,
  3072,0,6,0,16384,0,96,12,0,0,1,32768,6144,896,0,0,0,0,7680,
  7168,0,6,0,28672,0,96,14,0,0,1,32768,6144,384,0,0,0,0,7680,
  3072,0,15,0,8192,0,224,28,0,0,1,32768,6144,384,0,0,0,0,7680,
  3072,0,12,0,12288,0,192,12,0,0,3,32768,14336,384,0,0,0,0,15872,
  3072,0,28,0,6144,0,448,12,0,0,1,32768,6144,896,0,0,0,0,7680,
  7168,0,56,0,3072,0,896,14,0,0,1,32768,6144,384,0,0,0,0,15872,
  3072,0,240,0,1536,0,12032,28,0,0,1,32768,6144,384,0,0,0,0,7680,
  3135,65535,32704,0,1019,65519,64512,12,0,0,3,32768,14336,384,0,0,0,0,15872,
  3199,65535,32576,0,507,65519,61440,12,0,0,1,32768,6144,896,0,0,0,0,7680,
  6144,1,256,0,8,32,0,12,0,0,1,32768,6144,384,0,0,0,0,15872,
  0,3,0,0,24,32,0,14,0,0,1,32768,6144,384,0,0,0,0,7680,
  0,1,0,0,8,32,0,12,0,0,0,0,0,0,0,0,0,0,15872,
  0,1,0,0,248,32,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  4095,65535,0,0,11,65504,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,1,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15872,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15872,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  15360,480,30,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,
  3968,124,7,49154,0,0,49152,0,0,6144,0,96,0,64,0,0,0,0,15872,
  3456,108,6,49159,65535,65519,64000,31,65533,65280,0,1021,65535,64736,0,0,0,0,7680,
  3584,112,7,7,65535,65519,65024,15,65533,65408,0,2045,65535,63712,0,0,0,0,15872,
  7168,224,14,4,0,32,7936,0,4,17344,0,3588,0,480,0,0,0,0,7680,
  3072,96,6,4,0,32,1920,0,4,240,0,7180,0,992,0,0,0,0,15872,
  3072,96,6,4,0,32,960,0,4,112,0,6148,0,480,0,0,0,0,7680,
  3072,112,14,4,0,32,480,8,4,56,0,12292,0,992,0,0,0,0,15872,
  7168,224,6,7,65535,65504,224,28,32764,28,0,8204,0,224,0,0,0,0,7680,
  3072,96,6,0,0,32,224,12,4,28,0,24580,0,480,0,0,0,0,15872,
  3072,96,6,0,0,0,112,12,0,14,0,24576,0,64,0,0,0,0,7680,
  3584,96,15,0,0,0,112,12,0,14,0,16384,0,0,0,0,0,0,15872,
  7168,224,6,0,0,0,32,14,0,4,0,16384,0,0,0,0,0,0,7680,
  3072,96,6,0,0,0,32,12,0,4,0,16384,0,0,0,0,0,0,7680,
  3072,96,6,0,0,0,32,28,0,4,0,16384,0,0,0,0,0,0,7680,
  7168,96,14,0,0,0,0,12,0,4,5,16384,0,0,0,0,0,0,7680,
  3072,224,6,0,0,0,96,14,0,0,7,49152,0,0,0,0,0,0,15872,
  3584,96,7,0,0,0,192,12,0,0,12,24576,0,0,0,0,0,0,7680,
  7168,96,6,0,0,0,112,28,0,0,4,24576,0,0,0,0,0,0,7680,
  3072,96,14,0,0,0,96,12,0,0,4,12288,0,0,0,0,0,0,7680,
  3072,112,6,0,0,0,96,12,0,0,12,12288,0,0,0,0,0,0,15872,
  3072,96,6,0,0,0,96,12,0,0,4,14336,0,0,0,0,0,0,7680,
  7168,96,14,0,0,16,112,28,0,0,0,7168,0,0,0,0,0,0,15872,
  3072,224,6,0,0,56,224,12,0,0,0,3840,1,36864,0,0,0,0,7680,
  3072,96,6,0,231,65400,96,12,0,0,0,2041,65511,62464,0,0,0,0,7680,
  3072,96,7,0,247,65404,96,12,0,0,0,1021,65527,64512,0,0,0,0,7680,
  7168,96,14,0,144,248,112,28,0,0,0,4,20,7808,0,0,0,0,7680,
  3072,224,6,0,16,112,96,12,0,0,0,4,16,8064,0,0,0,0,15872,
  3072,96,6,0,0,64,96,12,0,0,0,0,0,1408,0,0,0,0,7680,
  3072,96,7,0,0,0,96,28,0,0,0,0,0,1728,0,0,0,0,15872,
  7168,96,6,0,0,0,240,12,0,0,0,0,0,704,0,0,0,0,7680,
  3072,224,6,0,8192,0,96,12,0,0,0,0,0,864,0,0,0,0,7680,
  3072,96,6,0,8192,0,96,28,0,0,0,0,0,864,0,0,0,0,7680,
  3072,0,15,4,24576,0,96,12,0,0,0,0,0,864,0,0,0,0,7680,
  7168,0,6,4,24576,0,224,12,0,0,0,0,0,816,0,0,0,0,7680,
  3072,0,6,4,24576,0,96,14,0,0,0,0,0,880,0,0,0,0,0,
  3072,0,14,4,24576,0,112,28,0,0,0,0,0,816,0,0,0,0,0,
  3072,0,6,5,24576,0,96,12,0,0,0,0,0,784,0,0,0,0,0,
  7168,0,6,7,57344,0,224,12,0,0,0,0,0,784,0,0,0,0,0,
  3072,0,15,7,40960,0,192,28,0,0,0,0,0,560,0,0,0,0,0,
  3072,0,12,6,61440,0,448,12,0,0,0,0,0,3600,0,0,0,0,0,
  3072,0,28,4,22528,0,1920,12,0,0,4,0,0,3072,0,0,0,0,0,
  7168,0,56,0,19584,0,7936,12,0,0,4,0,0,6144,0,0,0,0,0,
  3072,0,240,0,2039,65519,64512,28,0,0,15,65535,65519,61440,0,0,0,0,0,
  3135,65535,32704,0,1015,65519,61440,12,0,0,15,65535,65519,53248,0,0,0,0,0,
  3199,65535,32576,0,16,32,0,12,0,0,8,0,32,16384,0,0,0,0,0,
  6144,1,256,0,48,96,0,12,0,0,8,0,32,0,0,0,0,0,0,
  0,3,0,0,16,32,0,12,0,0,8,0,32,0,0,0,0,0,0,
  0,1,0,0,496,32,0,0,0,0,8,0,32,0,0,0,0,0,0,
  0,1,0,0,23,65504,0,0,0,0,15,65535,65504,0,0,0,0,0,0,
  4095,65535,0,0,16,32,0,0,0,0,0,0,32,0,0,0,0,0,0,
  0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  /* Plane 2 */
  32640,1020,63,49152,2044,65523,63488,511,65534,32512,31,65535,65487,30720,0,0,0,0,0,
  8064,2300,143,49152,12793,65511,54784,255,65532,64192,39,65535,65484,58880,0,32767,65535,65535,65534,
  8128,2302,143,57344,4091,65511,14720,319,65532,65328,12,0,32,4864,4,32767,65535,65535,65534,
  16320,5630,159,57344,47108,16,1216,127,65535,65432,20,0,32,1792,7,65535,65535,65535,65528,
  24384,250,47,40961,24836,16,448,175,65535,65528,10,65535,65471,33728,23,65535,65535,65535,65528,
  40512,2802,79,8194,56343,65501,57584,87,65535,65534,33,10922,43701,57792,31,65535,65535,65535,65446,
  16320,254,15,57345,32997,21846,63600,265,21855,28670,10,32768,39,61680,31,65535,65535,65535,65414,
  7744,5626,175,8197,21156,16403,64572,84,23,16383,32774,18724,35121,30768,31,65535,65535,65535,65142,
  24384,4350,15,40971,26021,5268,24076,58,18702,6143,32800,8192,36,48240,31,65535,65535,65535,65062,
  40512,5370,95,8203,19380,17,44828,285,32766,9215,32778,22528,35,15480,31,65535,65535,65535,63958,
  16320,6650,15,57355,6068,18,38686,94,49158,23039,49170,19613,56218,3600,31,65535,65535,65535,63622,
  8000,4346,175,40967,40419,21128,34692,158,25761,4222,32774,31271,916,63016,31,65535,65535,65535,58958,
  24512,6906,15,57350,40226,2089,15754,63,53525,17343,16422,10373,65487,24392,29,21869,46811,28086,50934,
  40512,4346,95,8193,14985,41604,54738,319,17472,37119,16394,30720,14,46968,31,65462,56173,56173,55622,
  24384,6650,47,40964,15792,7,12254,95,49152,58879,16400,18432,1,19880,29,21883,28091,30687,7158,
  7744,4346,143,8192,15616,0,20842,158,16384,2607,16386,26624,34560,46280,25,4144,16,21390,28486,
  24512,6906,15,57354,14848,0,12082,31,16384,1262,16426,14338,8192,16040,24,17733,19082,1056,26534,
  8000,4346,95,40960,14848,0,3242,351,49152,295,16390,18434,9408,21224,26,8208,8257,20617,40822,
  24128,5626,15,57349,14592,0,4542,62,16384,149,16400,26626,25472,20008,25,2698,35368,1059,57286,
  8000,4346,175,8194,15360,0,6538,159,16384,297,16386,26625,1920,22088,31,65535,65535,65518,32630,
  48960,6642,15,40968,13568,0,410,31,16384,669,49194,26628,9344,25704,31,65535,65535,65510,65446,
  8000,4858,79,8193,12288,0,1298,351,16384,382,16390,26625,26496,19048,24,0,0,25,32630,
  24384,6650,47,57348,13312,0,670,63,16384,511,18,2052,8320,25192,25,9288,35108,42268,65478,
  8000,4346,79,8192,15360,0,2186,158,16384,24,6,18437,25728,17928,6,35090,8322,4592,32630,
  48960,6394,31,40968,13312,0,542,62,16384,133,38,26628,1664,26216,14,8772,35368,34218,65454,
  8000,4858,143,57344,7168,0,146,319,16384,0,10,14342,9856,16488,6,34832,8322,9824,32630,
  24384,6650,47,57348,15360,0,2718,95,49152,0,6,26628,42624,27240,6,8837,2600,34405,16326,
  8000,4346,79,8192,13312,0,402,63,16384,0,32,26630,26240,17000,1,51280,41090,8768,32622,
  48960,6394,31,40968,15360,0,1182,287,16384,0,10,18436,1664,22104,5,33284,2596,37013,32694,
  8000,762,79,57345,15360,0,394,94,16384,0,18,26630,9856,16488,0,0,0,0,65526,
  24384,4602,31,40964,13312,0,2450,159,16384,0,6,2052,42624,25192,0,0,0,84,32582,
  8000,1274,175,8192,15360,0,670,62,16384,0,38,22534,26240,19048,0,0,0,1,16294,
  48960,2298,31,57352,13312,0,1042,350,49152,0,0,26628,1664,26120,0,0,0,36,32630,
  8000,666,79,40962,13312,0,158,63,16384,0,18,26630,42624,16472,0,0,0,17,16326,
  24384,5322,271,57349,15360,0,4746,223,16384,0,10,26628,9856,27240,0,0,0,68,32622,
  8000,3060,335,8193,15104,0,7582,95,16384,0,38,26629,26240,16968,0,0,0,17,32694,
  48960,4090,367,40971,48896,0,5138,223,49152,0,0,26628,1664,22120,0,0,0,4,65526,
  8000,232,207,8193,49024,0,3226,63,16384,0,18,26630,9856,16488,0,0,0,80,32550,
  24384,1032,639,57351,3456,0,8850,351,16384,0,10,26628,42624,25192,0,0,0,5,16326,
  8000,8,431,40962,24512,0,4894,31,49152,0,38,26630,26240,19048,0,0,0,32,32534,
  48960,0,3935,8204,53104,0,63278,159,16384,0,0,26628,1664,26216,0,0,0,20,65478,
  8031,62619,40958,40964,42924,65521,64058,63,16384,0,18,26630,9856,16488,0,0,0,66,32534,
  24335,63783,15357,40967,37881,65511,48218,287,16384,0,10,26628,42624,25192,0,0,0,16,65478,
  7967,65535,16383,24585,23033,65511,53490,95,16384,0,38,26629,26240,19048,0,0,0,4,65486,
  48959,65535,65528,16399,11268,16,900,159,16384,0,0,26628,1664,26216,0,0,0,81,32518,
  8063,65535,65517,57346,59908,16,3798,63,49152,0,18,26630,9856,16488,0,0,0,4,65494,
  23551,65535,65528,40965,41975,65503,63370,159,16384,0,6,26628,42624,27240,0,0,0,32,32710,
  5461,21847,54721,16385,50149,21850,44052,63,16384,0,34,26624,26240,616,0,0,0,21,32526,
  41489,1,37045,0,43140,1104,2896,351,16384,0,10,47106,10880,9576,0,0,0,64,65478,
  2180,18773,34378,32769,25860,41242,58536,41,49152,0,19,31749,13952,21288,0,0,0,20,65494,
  53247,65535,33205,0,45652,16,6480,155,49152,0,47,57350,64512,12232,0,0,0,0,16134,
  57344,1,49918,0,22662,16,4000,382,0,0,31,59395,65024,16352,0,0,0,85,32758,
  51882,38024,21856,0,10179,10893,22272,255,0,0,7,4096,12288,768,0,0,0,0,16230,
  32768,16930,18256,0,6642,44,28928,28,0,0,16,24577,17920,4448,0,0,0,37,32742,
  32768,136,45184,0,1793,43654,18432,129,0,0,0,0,0,0,0,0,0,16,16246,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,32758,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16230,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32750,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,32614,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,65414,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,32558,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,16326,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,32534,
  0,0,0,0,65535,65523,63488,511,65534,32512,0,510,32767,65472,0,0,0,18,16326,
  17280,540,33,49155,65535,65519,54784,255,65532,64192,0,4093,65535,65504,0,0,0,4,32526,
  4096,2176,136,7,65535,65511,63872,319,65532,59184,0,8188,65535,65264,0,0,0,86,65478,
  4672,2194,137,8199,65535,65535,65216,96,2,152,0,9215,65535,65504,0,0,0,14,32534,
  12736,5518,152,57351,65535,65535,65472,160,2,120,0,14335,65535,65008,0,0,0,32,65478,
  17216,26,33,40967,65535,65535,65520,87,65531,48190,0,61439,65535,65520,0,0,0,9,32526,
  37440,2706,73,8198,43690,43765,32752,265,21851,28430,0,65503,21845,22520,0,0,0,70,65446,
  13248,158,9,57348,8192,177,65532,84,19,16271,32771,40950,256,2032,0,0,0,22,32518,
  4672,5514,161,8197,2633,8820,24556,50,18698,6087,32770,65478,37961,12280,0,0,0,36,65454,
  17216,4126,9,40967,65535,65521,45052,257,2,9187,32775,15902,0,2032,0,0,0,8,65286,
  37440,5274,89,8196,8192,50,38910,82,49154,23011,49157,65198,0,2032,0,0,0,68,32702,
  13248,6554,9,57346,35156,38028,34804,146,25761,4208,32783,64553,42154,38896,0,0,0,23,32542,
  4416,4250,160,40962,8705,8712,6650,51,53525,17329,16399,62209,2304,9056,0,0,0,40,65510,
  17344,6682,9,57347,34964,18598,34290,305,17472,37115,16398,64628,49738,35264,0,0,0,0,32758,
  37440,4250,89,8192,0,7,11646,83,49152,58875,16399,58936,0,0,0,0,0,87,16230,
  21312,6554,41,40960,0,0,21362,130,16384,2603,16399,61760,0,0,0,0,0,6,32742,
  576,4250,129,8192,0,0,10106,19,16384,1258,16399,63104,0,0,0,0,0,40,16254,
  21440,6682,9,57344,0,0,2546,337,49152,295,16399,60800,0,0,0,0,0,0,32758,
  4416,4250,88,40960,0,0,4858,50,16384,149,16398,64640,0,0,0,0,0,80,65382,
  16960,5530,9,57344,0,0,4346,131,16384,297,16397,61056,0,0,0,0,0,4,16358,
  4928,4250,161,8192,0,0,2810,19,16384,669,49166,32448,0,0,0,0,0,34,32742,
  45888,6530,9,40960,0,0,498,179,16384,382,16398,63408,0,0,0,0,0,16,65382,
  4928,4762,73,8192,34,8720,1278,19,16384,511,14,31708,8737,0,0,0,0,68,65510,
  17216,6554,33,57344,953,65532,506,323,16384,24,12,15870,65531,40960,0,0,0,17,32614,
  4928,4122,73,8192,3891,65532,1790,19,16384,133,3,24444,65523,63488,0,0,0,36,32742,
  45888,6298,25,40960,11007,65534,1266,179,16384,0,7,49151,65535,65024,0,0,0,1,16358,
  4928,4762,136,57344,17151,65534,1022,19,16384,0,0,51199,65535,65408,0,0,0,84,32614,
  17216,6554,33,57344,33791,65534,1023,323,16384,0,2,61446,31,65408,0,0,0,1,16358,
  4928,4122,73,8193,5426,43774,3070,19,16384,0,1,8575,30583,32704,0,0,0,40,32638,
  45888,6298,25,40963,43800,17652,1010,147,16384,0,0,36758,63032,65504,0,0,0,2,65526,
  4928,666,72,57346,38690,8668,1278,67,16384,0,0,1513,23186,32736,0,0,0,80,32614,
  17216,4506,25,40967,9281,5160,762,147,16384,0,0,6660,8193,6128,0,0,0,10,65510,
  4928,1050,169,8196,30879,65520,254,83,16384,0,0,1023,65532,53232,0,0,0,32,16374,
  45888,2202,25,57351,31712,0,2546,259,16384,0,0,0,6,61424,0,0,0,9,32614,
  4928,666,64,40964,26048,0,4858,82,16384,0,0,0,1,29680,0,0,0,68,16366,
  17216,5322,265,57348,25472,0,6386,19,16384,0,0,0,0,58352,0,0,0,17,32614,
  4928,3060,329,8199,25472,0,4350,240,49152,0,0,0,0,47088,0,0,0,68,24678,
  45888,4090,353,40966,64256,0,2810,3,16384,0,0,0,0,14320,0,0,0,17,2798,
  4928,232,201,8199,63232,0,8702,339,16384,0,0,0,0,30640,0,0,0,56,30822,
  17216,1032,633,57351,62848,0,7154,19,49152,0,0,0,0,22512,0,0,0,26,32102,
  4928,8,416,40967,63872,1,63466,131,16384,0,0,0,0,55152,0,0,0,103,65416,
  45888,0,3923,8199,65017,65521,65530,19,16384,0,1,65535,65523,57328,0,0,0,103,65424,
  4959,62619,40930,40967,32307,65511,65498,179,16384,0,7,65535,65510,15920,0,0,0,95,65508,
  17167,63783,15301,40966,57331,65511,65526,19,24576,0,15,65535,65511,65440,0,0,0,31,65506,
  4895,65535,16143,24582,24575,65535,65412,323,16384,0,15,65535,65535,64848,0,0,0,36,31016,
  45824,0,32824,16391,24575,65535,65246,19,49152,0,15,65535,65535,63344,0,0,0,17,30848,
  4864,0,32941,57346,2047,65535,63368,179,16384,0,15,65535,65535,57456,0,0,0,24,33376,
  17407,65534,65272,40960,38906,43765,23572,19,16384,0,13,21845,21882,61920,0,0,0,26,9312,
  5461,21844,54721,16385,12568,34865,7024,179,16384,0,8,17476,17528,56544,0,0,0,0,0,
  41489,0,37045,1,57338,8882,25768,43,49152,0,10,4369,4400,47424,0,0,0,0,0,
  2180,18772,34378,32768,58431,65520,6480,473,16384,0,15,65535,65522,4800,0,0,0,0,0,
  49152,0,33205,0,61720,56,7072,510,0,0,8,0,48,50432,0,0,0,0,0,
  57344,0,49918,0,13189,18733,24192,511,0,0,6,43594,19020,58880,0,0,0,0,0,
  51882,38024,21856,0,3924,4616,30976,56,32768,0,4,272,37002,15360,0,0,0,0,0,
  32768,16930,18256,0,962,16518,18432,131,0,0,2,21572,1045,57344,0,0,0,0,0,
  /* Plane 3 */
  640,20,1,16384,1704,21841,22528,170,43690,11008,21,21845,21834,24576,0,0,0,0,0,
  0,0,0,0,8201,21826,32768,170,43688,20480,5,43690,43651,512,0,10922,43690,43690,43690,
  0,0,0,0,523,27300,49280,45,21844,32784,7,65535,65535,59648,4,21845,21845,21845,21844,
  8320,5380,144,16384,4031,65535,64064,32,2,8,17,65535,65535,64000,7,23210,43690,43690,43688,
  16448,2,32,8192,23803,65535,65152,128,2,16,8,0,64,64832,22,43885,46811,28086,56168,
  32768,2560,64,0,35820,34,16208,64,0,1034,32,0,96,24192,23,27990,43690,43690,43684,
  8384,6,0,24576,3868,48,6048,256,0,516,8,0,66,8048,15,43690,44373,21845,21764,
  0,1280,160,0,3372,16419,2012,64,19,4227,32773,2340,35185,6032,31,65535,65535,65535,65042,
  16448,4102,0,8200,22697,5300,17892,32,18698,5442,32803,36863,65504,43952,31,65535,65535,65535,65028,
  32768,1032,80,8,12719,65505,43756,256,0,833,32777,38912,65,14248,31,65535,65535,65535,63570,
  8384,6410,0,24576,25528,48,5610,64,49154,2433,16401,32920,920,448,31,65535,65535,65535,63492,
  0,8,160,1,24803,21120,1136,128,1184,0,5,38944,4,21440,24,0,0,0,1036,
  16576,6666,0,24576,25600,2088,5360,32,49429,16544,37,49280,43982,22656,24,0,0,0,658,
  32768,8,80,1,49161,41600,21536,288,1088,192,9,38912,6,32912,24,0,0,0,20484,
  64,6410,0,8196,52528,5,548,64,49152,42048,19,32768,0,2560,24,0,0,0,2578,
  0,8,128,0,51200,0,4224,128,0,512,1,34816,32000,34560,25,4144,16,21390,11780,
  16576,6666,0,24586,51200,0,960,0,16384,96,41,53248,7936,9472,24,17733,19082,1056,17922,
  0,8,80,0,49664,0,2112,320,32768,289,5,34816,6976,264,26,8208,8257,20616,7700,
  16448,5386,0,24581,51456,0,326,32,16384,129,19,40962,23936,16832,25,2698,35368,1059,56834,
  256,8,160,0,50176,0,6258,129,0,296,16385,43009,14592,4488,31,65535,65535,65516,7700,
  41280,6402,0,8200,50432,0,96,1,16384,13,49193,40964,6272,26496,31,65535,65535,65506,48642,
  256,512,64,1,49152,0,1506,321,0,308,16389,43009,22912,2472,16,0,0,9,7700,
  16704,6402,32,24580,50176,0,612,33,16384,426,17,49152,7168,24992,9,9288,35108,42252,48642,
  256,0,64,0,53248,0,2162,128,0,8,5,32773,22528,1480,2,35090,8322,4368,7700,
  41280,6146,16,8200,50176,0,740,32,0,4,37,34816,14976,25984,12,8772,35368,33930,48652,
  0,512,128,16384,61440,0,98,288,16384,0,9,63494,6656,904,2,34832,8322,8768,7698,
  16448,6402,32,24580,49152,0,2662,65,49152,0,5,32768,39040,27008,4,8837,2600,33349,7684,
  0,0,64,0,50176,0,352,32,0,0,35,34822,22528,392,0,51280,41090,8768,15884,
  41024,6146,16,8200,49152,0,1126,256,16384,0,9,32768,14976,21912,5,516,2596,37013,7698,
  256,512,64,16385,50176,0,368,64,0,0,17,43014,6656,928,0,0,0,0,48660,
  16704,258,16,8196,49152,0,2402,129,16384,0,5,49152,39552,25000,0,0,0,84,7682,
  256,1024,160,0,50176,0,614,32,0,0,37,38918,23040,2464,0,0,0,1,7684,
  41280,2050,16,24584,50176,0,1248,256,49152,0,3,40960,14976,26056,0,0,0,36,7698,
  256,664,64,2,50176,0,102,33,0,0,17,43014,39424,920,0,0,0,17,7684,
  16704,130,0,24580,50176,0,624,193,16384,0,9,40960,6784,27040,0,0,0,68,15884,
  256,2388,256,1,51200,0,7526,65,0,0,37,43013,23040,392,0,0,0,17,7698,
  41280,3434,96,8203,19456,0,224,129,49152,0,3,32768,14464,21888,0,0,0,4,48660,
  0,104,64,0,50688,0,2146,32,0,0,17,34822,6144,904,0,0,0,80,7714,
  16448,8,112,24582,30720,0,96,257,16384,0,9,32768,39040,24960,0,0,0,5,7746,
  0,8,384,0,8960,0,998,0,0,0,37,34822,22528,2440,0,0,0,32,7700,
  41024,0,0,8204,29248,0,710,128,16384,0,3,32768,14464,25984,0,0,0,20,48706,
  10,45209,1280,32768,47400,21840,23488,33,0,0,17,34822,6144,904,0,0,0,66,7700,
  16394,43010,4608,40965,36009,27298,9090,257,16384,0,9,32768,39040,24960,0,0,0,16,48706,
  11,21867,10240,16384,5648,44450,61184,64,16384,0,37,34821,22528,2440,0,0,0,4,40524,
  41216,0,32768,16398,11263,65519,64512,129,0,0,3,32768,14464,25984,0,0,0,81,15874,
  512,0,5,49152,57855,65535,61524,32,0,0,17,34822,6144,904,0,0,0,4,40532,
  17152,0,32776,8192,41480,32,2,128,16384,0,5,32768,39040,27008,0,0,0,32,15938,
  0,0,0,1,49948,48,0,33,0,0,33,34816,22528,392,0,0,0,21,7692,
  41489,0,36913,0,8332,1120,2896,320,16384,0,10,47106,10880,9568,0,0,0,64,48706,
  2180,18772,576,0,16888,41274,49152,41,49152,0,1,31748,5120,264,0,0,0,20,40532,
  49152,0,32821,0,8271,65520,272,11,32768,0,5,24582,21504,9864,0,0,0,0,7682,
  57344,0,49900,0,4110,32,3712,84,0,0,22,43011,21504,13632,0,0,0,85,7732,
  51882,38024,64,0,1411,10892,768,86,0,0,6,4096,8192,256,0,0,0,0,7746,
  32768,16930,17728,0,4528,44,20480,12,0,0,0,24576,17920,352,0,0,0,37,7714,
  0,136,45056,0,513,43654,16384,0,0,0,0,0,0,0,0,0,0,16,7796,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,7730,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,7748,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15916,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,7746,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,48644,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,7724,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,7746,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,7700,
  0,0,0,0,21845,21841,22528,170,43690,11008,0,170,10922,43712,0,0,0,18,7746,
  16000,500,31,16384,43690,43693,16384,170,43688,20480,0,341,43690,43520,0,0,0,4,7692,
  3968,124,7,49153,46421,21824,128,45,21844,38928,0,512,23381,21520,0,0,0,84,48706,
  3456,108,6,49152,0,16,64,63,65535,65288,0,2,0,0,0,0,0,12,7700,
  11904,5492,151,16384,0,16,128,143,65535,65424,0,8192,0,0,0,0,0,32,48706,
  23616,226,46,8192,0,0,8272,64,4,18378,0,8194,0,16,0,0,0,9,7692,
  35840,2656,70,0,0,16,4128,256,4,756,0,49152,0,8,0,0,0,66,48674,
  11456,102,6,24576,8192,128,33820,64,23,4339,32769,1298,256,0,0,0,0,20,7684,
  3072,1392,174,1,2633,8788,17412,40,18702,5498,32768,17088,37961,10248,0,0,0,36,48684,
  23616,4326,6,8192,0,17,43532,284,32764,861,32769,1026,0,0,0,0,0,8,40450,
  35840,1128,86,0,8192,0,5386,76,49158,2461,16385,34440,0,16,0,0,0,64,15924,
  11456,6506,6,24576,35156,38028,1024,140,1184,14,13,33801,42154,36880,0,0,0,17,7690,
  3584,104,175,2,8705,8704,128,44,49429,16558,3,32768,2304,8192,0,0,0,40,48676,
  23744,6890,6,24579,34964,18598,0,302,1088,196,4,3188,49738,34880,0,0,0,0,7730,
  35840,104,86,0,0,2,8260,76,49152,42052,3,48,0,0,0,0,0,83,7748,
  3136,6506,6,8192,0,0,4864,156,0,516,4,0,0,0,0,0,0,4,7716,
  7168,104,142,0,0,0,768,12,16384,100,2,640,0,0,0,0,0,40,7778,
  19648,6890,6,24576,0,0,256,334,32768,289,0,1408,0,0,0,0,0,0,15876,
  3584,104,87,0,0,0,514,44,16384,129,0,6144,0,0,0,0,0,80,40550,
  23616,5482,6,24576,0,0,4096,157,0,296,16385,1152,0,0,0,0,0,4,7714,
  3328,104,174,0,0,0,2560,13,16384,13,49154,2624,0,0,0,0,0,34,7716,
  44352,6514,6,8192,0,0,258,173,0,308,16386,34192,0,0,0,0,0,16,48706,
  3328,608,70,0,34,8720,1028,13,16384,426,8,348,8737,0,0,0,0,68,40484,
  23872,6498,46,24576,40,43652,258,349,0,8,0,170,21842,8192,0,0,0,17,15942,
  3328,224,70,0,33,21760,1540,13,16384,4,3,16468,27296,0,0,0,0,36,7714,
  44352,6242,22,8192,512,2,2,172,0,0,4,40960,8,0,0,0,0,1,7716,
  3072,608,135,16384,8,2,262,12,16384,0,0,49154,0,128,0,0,0,84,7748,
  23616,6498,46,24576,0,0,263,348,0,0,0,61440,8,0,0,0,0,1,7716,
  3072,224,70,0,290,43520,2310,12,16384,0,0,288,3,0,0,0,0,40,15970,
  44096,6242,22,8194,33280,17408,256,141,0,0,0,1808,8736,49184,0,0,0,2,40452,
  3328,608,71,16384,34338,8576,6,93,16384,0,0,1385,23186,8192,0,0,0,80,15972,
  23872,354,22,8197,1,5128,0,141,0,0,0,2564,8192,4112,0,0,0,10,40484,
  3328,1248,166,4,16394,44368,6,13,16384,0,0,682,43688,51200,0,0,0,32,7730,
  44352,2146,22,24578,23520,0,2304,285,0,0,0,0,4,25600,0,0,0,9,7748,
  3328,664,79,0,192,0,514,12,16384,0,0,0,1,12288,0,0,0,68,7724,
  23872,130,6,24576,768,0,6144,13,0,0,0,0,0,24576,0,0,0,17,7746,
  3328,2388,262,3,384,0,6,174,16384,0,0,0,0,5120,0,0,0,68,24644,
  44352,3434,110,8192,39168,0,512,29,0,0,0,0,0,5120,0,0,0,17,2764,
  3072,104,70,2,1024,0,262,268,16384,0,0,0,0,4096,0,0,0,48,10274,
  23616,8,118,24576,4480,0,6912,12,0,0,0,0,0,5120,0,0,0,10,11588,
  3072,8,399,0,2048,1,33282,156,16384,0,0,0,0,4096,0,0,0,34,43784,
  44096,0,12,8193,296,43680,4096,12,16384,0,0,43690,43681,20480,0,0,0,67,21776,
  3082,45209,1308,32771,17,21826,2058,172,16384,0,2,43701,21828,0,0,0,0,77,27972,
  23562,43010,4664,40960,98,46757,16388,12,24576,0,2,56150,56162,544,0,0,0,21,21922,
  3083,21867,10480,16386,20488,16,260,348,16384,0,0,0,16,1344,0,0,0,36,10536,
  44351,65535,65472,16388,6152,16,94,12,0,0,0,0,0,80,0,0,0,17,20608,
  3711,65535,32581,49152,1024,0,0,172,16384,0,0,0,16,80,0,0,0,16,33312,
  23296,1,33032,8192,5896,16,16,12,0,0,0,0,0,61888,0,0,0,10,9280,
  0,3,0,0,12296,34833,7008,172,16384,0,0,17476,17496,51360,0,0,0,0,0,
  41489,1,36913,0,24066,8834,8224,43,49152,0,2,4369,4352,14336,0,0,0,0,0,
  2180,18773,576,0,8,16,16,456,0,0,0,0,16,64,0,0,0,0,0,
  53247,65535,32821,0,57352,24,6528,490,0,0,0,0,0,0,0,0,0,0,0,
  57344,1,49900,0,385,18732,7296,426,0,0,6,43594,19020,17408,0,0,0,0,0,
  51882,38024,64,0,1876,4608,22784,48,32768,0,0,272,37002,11264,0,0,0,0,0,
  32768,16930,17728,0,832,16518,16384,3,0,0,0,21572,1041,24576,0,0,0,0,0
};

// About bitmap has 2 blank lines around it in every direction.
UWORD chip AboutData[456] =
{ /* Plane 0 */
  0,0,0,
  0,0,0,
  4352,0,0,
  4704,0,0,
  2688,1024,0,
  9984,1024,0,
  8128,3584,0,
  1824,3584,0,
  2688,3840,0,
  12864,3840,0,
  1090,34688,0,
  3,51072,128,
  7,33728,256,
  7,33728,1024,
  15375,65535,65216,
  15375,65504,1024,
  7711,57584,256,
  2591,61680,1152,
  60,31864,1024,
  60,7800,0,
  1340,1980,0,
  2040,1020,0,
  1008,254,0,
  1008,126,0,
  480,31,0,
  480,15,0,
  0,0,0,
  0,0,0,
  0,0,0,
  3643,37347,34944,
  4388,37412,19584,
  4388,37380,19584,
  7972,37383,51840,
  4388,37476,18816,
  4388,37412,18816,
  4384,37348,18560,
  0,0,0,
  0,0,0,
  /* Plane 1 */
  0,0,0,
  0,0,0,
  4352,14336,0,
  4704,14336,0,
  2688,30720,0,
  9984,30720,0,
  8128,61440,0,
  1824,61440,0,
  2689,57344,0,
  12865,57344,0,
  1089,16384,1024,
  0,0,9216,
  0,0,4096,
  0,0,1024,
  0,0,65216,
  0,0,1024,
  0,0,4352,
  5140,0,8320,
  3900,0,0,
  3900,0,0,
  1980,0,0,
  2040,0,0,
  1008,0,0,
  1008,0,0,
  480,0,0,
  480,0,0,
  0,0,0,
  0,0,0,
  0,0,0,
  3643,37347,34944,
  4388,37412,19584,
  4388,37380,19584,
  7972,37383,51840,
  4388,37476,18816,
  4388,37412,18816,
  4384,37348,18560,
  0,0,0,
  0,0,0,
  /* Plane 2 */
  0,0,0,
  0,0,0,
  4352,0,0,
  4704,0,0,
  2688,0,0,
  9984,0,0,
  8128,0,0,
  1824,0,0,
  2688,0,0,
  12864,0,0,
  1090,32768,1024,
  3,49152,9344,
  7,32768,4352,
  7,32768,1024,
  15375,0,65024,
  15375,0,1024,
  7710,0,256,
  7690,0,1152,
  3840,0,1024,
  3840,0,0,
  1920,0,0,
  1920,0,0,
  768,0,0,
  768,0,0,
  0,0,0,
  0,0,0,
  0,0,0,
  0,0,0,
  0,0,0,
  3643,37347,34944,
  4388,37412,19584,
  4388,37380,19584,
  7972,37383,51840,
  4388,37476,18816,
  4388,37412,18816,
  4384,37348,18560,
  0,0,0,
  0,0,0,
  /* Plane 3 */
  0,0,0,
  0,0,0,
  4352,14336,0,
  4704,14336,0,
  2688,30720,0,
  9984,30720,0,
  8128,61440,0,
  1824,61440,0,
  2689,57344,0,
  12865,57344,0,
  1091,49152,0,
  3,49152,8320,
  7,32768,4352,
  7,32768,1024,
  15,0,65216,
  15,0,1024,
  30,0,4096,
  30,0,8192,
  60,0,0,
  60,0,0,
  60,0,0,
  120,0,0,
  240,0,0,
  240,0,0,
  480,0,0,
  480,0,0,
  0,0,0,
  0,0,0,
  0,0,0,
  3643,37347,34944,
  4388,37412,19584,
  4388,37380,19584,
  7972,37383,51840,
  4388,37476,18816,
  4388,37412,18816,
  4384,37348,18560,
  0,0,0,
  0,0,0
};

// PRIVATE STRUCTURES -----------------------------------------------------

struct Image Logo =
{   0, 0,
    304, 118, 4,
    LogoData,
    0x0f, 0x0,
    NULL
};
struct Image About =
{   0, 0,
    44, 38, 4,
    AboutData,
    0x0f, 0x0,
    NULL
};
MODULE struct EasyStruct EasyStruct =
{   sizeof(struct EasyStruct),
    0,
    TITLEBAR,
    "Fieldset/highscores have been modified.",
    "Continue|Cancel"
};
struct
{   WORD x, y;
    STRPTR text;
} about[ABOUTLINES + 1] =
{   {72,  27, "Worm Wars 7.21a for Amiga" },
    {72,  35, "Monday 21 October 2002"    },
    {72,  51, "© 2002 Amigan Software"    },
    {72,  59, "By James R. Jacobs"        },
    {16,  75, "Fieldset size:       bytes"},
    {16,  91, "Kickstart:"                },
    {16,  99, "Workbench:"                }
};
struct
{   UBYTE scancode;
    BYTE  player, deltax, deltay, special;
    BOOL  down;
} key[NUMKEYS + 1] =
{   {Q,               0, -1, -1, MOVE,     FALSE},
    {W,               0,  0, -1, MOVE,     FALSE},
    {E,               0,  1, -1, MOVE,     FALSE},
    {A,               0, -1,  0, MOVE,     FALSE},
    {S,               0,  0,  1, MOVE,     FALSE},
    {D,               0,  1,  0, MOVE,     FALSE},
    {Z,               0, -1,  1, MOVE,     FALSE},
    {KEY_X,           0,  1,  1, MOVE,     FALSE},
    {C,               0,  1,  1, MOVE,     FALSE},
    {NUMERICSEVEN,    1, -1, -1, MOVE,     FALSE},
    {NUMERICEIGHT,    1,  0, -1, MOVE,     FALSE},
    {NUMERICNINE,     1,  1, -1, MOVE,     FALSE},
    {NUMERICFOUR,     1, -1,  0, MOVE,     FALSE},
    {NUMERICFIVE,     1,  0,  1, MOVE,     FALSE},
    {NUMERICSIX,      1,  1,  0, MOVE,     FALSE},
    {NUMERICONE,      1, -1,  1, MOVE,     FALSE},
    {NUMERICTWO,      1,  0,  1, MOVE,     FALSE},
    {NUMERICTHREE,    1,  1,  1, MOVE,     FALSE},
    {UP,              1,  0, -1, ONEHUMAN, FALSE},
    {DOWN,            1,  0,  1, ONEHUMAN, FALSE},
    {RIGHT,           1,  1,  0, ONEHUMAN, FALSE},
    {LEFT,            1, -1,  0, ONEHUMAN, FALSE},
    {SPACEBAR,        0,  0,  0, AMMO,     FALSE},
    {NUMERICZERO,     1,  0,  0, AMMO,     FALSE},
    {ENTER,           1,  0,  0, AMMO,     FALSE},
    {HELP,            0,  0,  0, TRAINER,  FALSE},
    {NUMERICSLASH,    0,  0,  0, TRAINER,  FALSE},
    {NUMERICASTERISK, 0,  0,  0, TRAINER,  FALSE},
    {NUMERICPLUS,     0,  0,  0, TRAINER,  FALSE}
}; /* Never leave unused keys in this structure. */

/* #DEFINES -------------------------------------------------------------- */

#define ID_8SVX   MAKE_ID('8','S','V','X')
#define ID_BODY   MAKE_ID('B','O','D','Y')
#define ID_VHDR   MAKE_ID('V','H','D','R')
#define PALCLOCK  3546895
#define NTSCCLOCK 3579545
#define SOFT      32
#define LOUD      64 /* = Unity */

/* PRIVATE STRUCTURES ---------------------------------------------------- */

#define INDEX_ANIMATIONS  21
#define INDEX_CREATEICONS 22
#define INDEX_THICKTAILS  23

struct NewMenu NewMenu[29 + 1] =
{   { NM_TITLE, "Project",        0 , 0,                    0, 0}, //  0
    {  NM_ITEM, "New",           "N", 0,                    0, 0}, //  1
    {  NM_ITEM, "Open...",       "O", 0,                    0, 0}, //  2
    {  NM_ITEM, "Revert",        "R", 0,                    0, 0}, //  3
    {  NM_ITEM, NM_BARLABEL,      0 , 0,                    0, 0}, //  4
    {  NM_ITEM, "Save",          "S", 0,                    0, 0}, //  5
    {  NM_ITEM, "Save As...",    "A", 0,                    0, 0}, //  6
    {  NM_ITEM, NM_BARLABEL,      0 , 0,                    0, 0}, //  7
    {  NM_ITEM, "Delete...",     "D", 0,                    0, 0}, //  8
    {  NM_ITEM, NM_BARLABEL,      0 , 0,                    0, 0}, //  9
    {  NM_ITEM, "Quit",          "Q", 0,                    0, 0}, // 10
    { NM_TITLE, "Edit",           0 , NM_MENUDISABLED,      0, 0}, // 11
    {  NM_ITEM, "Cut",           "X", 0,                    0, 0}, // 12
    {  NM_ITEM, "Copy",          "C", 0,                    0, 0}, // 13
    {  NM_ITEM, "Paste",         "V", 0,                    0, 0}, // 14
    {  NM_ITEM, NM_BARLABEL,      0 , 0,                    0, 0}, // 15
    {  NM_ITEM, "Erase",         "E", 0,                    0, 0}, // 16
    {  NM_ITEM, "Delete",         0 , 0,                    0, 0}, // 17
    {  NM_ITEM, "Insert",         0 , 0,                    0, 0}, // 18
    {  NM_ITEM, "Append",         0 , 0,                    0, 0}, // 19
    { NM_TITLE, "Settings",       0 , 0,                    0, 0}, // 20
    {  NM_ITEM, "Animations?",   "T", CHECKIT | MENUTOGGLE, 0, 0}, // 21
    {  NM_ITEM, "Create Icons?", "I", CHECKIT | MENUTOGGLE, 0, 0}, // 22
    {  NM_ITEM, "Thick Tails?",  "H", CHECKIT | MENUTOGGLE, 0, 0}, // 23
    { NM_TITLE, "Help",           0 , 0,                    0, 0}, // 24
    {  NM_ITEM, "Creatures...",  "1", 0,                    0, 0}, // 25
    {  NM_ITEM, "Objects...",    "2", 0,                    0, 0}, // 26
    {  NM_ITEM, NM_BARLABEL,      0 , 0,                    0, 0}, // 27
    {  NM_ITEM, "About...",      "?", 0,                    0, 0}, // 30
    {   NM_END, NULL,             0 , 0,                    0, 0}  // 31
};

struct GamePortTrigger Trigger =
{   GPTF_DOWNKEYS,
    65535,
    1, 1
};

// gadgets
struct NewGadget StringGadget =
{   235, 0,
    181, 12,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};
struct NewGadget PlayGadget =
{   256, TSOFFSET + 124,
    128, 12,
    "Play Game",
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};
struct NewGadget FEGadget =
{   256, TSOFFSET + 140,
    128, 12,
    "Field Editor",
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};
struct NewGadget RandomGadget =
{   370, TSOFFSET + 170,
    0, 0,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};
struct NewGadget CycleGadget =
{   288, 0,
    128, 13,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};

struct
{   STRPTR filename;
    BYTE   volume;
    ULONG  length[2], size, speed, bank;
    UBYTE* base;
} samp[SAMPLES + 1] =
{   {   "PROGDIR:fx/dogawakens.8svx", SOFT}, /* FXBORN_DOG */
    {     "PROGDIR:fx/dripborn.8svx", SOFT}, /* FXBORN_DRIP */
    {     "PROGDIR:fx/goatborn.8svx", SOFT}, /* FXBORN_GOAT */
    {"PROGDIR:fx/missileactive.8svx", LOUD}, /* FXBORN_MISSILE */
    {      "PROGDIR:fx/orbborn.8svx", SOFT}, /* FXBORN_ORB */
    {  "PROGDIR:fx/penguinborn.8svx", SOFT}, /* FXBORN_PENGUIN */
    {"PROGDIR:fx/protectorborn.8svx", SOFT}, /* FXBORN_PROTECTOR */
    {         "PROGDIR:fx/thud.8svx", SOFT}, /* FXDEATH_FRAGMENT (thud) */
    {    "PROGDIR:fx/wormdeath.8svx", LOUD}, /* FXDEATH_WORM */
    { "PROGDIR:fx/timebombtick.8svx", LOUD}, /* FXDO_BOMB (tick) */
    {    "PROGDIR:fx/enclosure.8svx", LOUD}, /* FXDO_ENCLOSE */
    {     "PROGDIR:fx/goatfire.8svx", SOFT}, /* FXDO_GOAT (fire) */
    {         "PROGDIR:fx/jump.8svx", SOFT}, /* FXDO_JUMP */
    {     "PROGDIR:fx/orbsplit.8svx", SOFT}, /* FXDO_ORB (split) */
    {      "PROGDIR:fx/getammo.8svx", LOUD}, /* FXGET_AMMO */
    {      "PROGDIR:fx/cyclone.8svx", LOUD}, /* FXGET_CYCLONE */
    {           "PROGDIR:fx/fx.8svx", SOFT}, /* FXGET_DRIP */
    {    "PROGDIR:fx/getgrower.8svx", SOFT}, /* FXGET_GROWER */
    {    "PROGDIR:fx/getobject.8svx", SOFT}, /* FXGET_OBJECT */
    {   "PROGDIR:fx/getpowerup.8svx", LOUD}, /* FXGET_POWERUP */
    {      "PROGDIR:fx/explode.8svx", SOFT}, /* FXGET_PULSE (explode) */
    {     "PROGDIR:fx/getskull.8svx", SOFT}, /* FXGET_SKULL */
    {       "PROGDIR:fx/amigan.8svx", SOFT}, /* FXHELP */
    {        "PROGDIR:fx/shoot.8svx", SOFT}, /* FXUSE_AMMO */
    {    "PROGDIR:fx/usearmour.8svx", SOFT}, /* FXUSE_ARMOUR */
    {    "PROGDIR:fx/bombblast.8svx", SOFT}, /* FXUSE_BOMB */
    {  "PROGDIR:fx/useteleport.8svx", SOFT}, /* FXUSE_TELEPORT */
    {    "PROGDIR:fx/usetongue.8svx", SOFT}, /* FXBORN_BIRD */
    {        "PROGDIR:fx/green.8svx", SOFT}, /* FXPAIN */
    {          "PROGDIR:fx/red.8svx", SOFT},
    {         "PROGDIR:fx/blue.8svx", SOFT},
    {       "PROGDIR:fx/yellow.8svx", SOFT},
    {    "PROGDIR:fx/highscore.8svx", SOFT}, /* FXAPPLAUSE (after each new hiscore) */
    {       "PROGDIR:fx/defeat.8svx", LOUD}, /* FXGAMEOVER (if all worms are dead) */
    {      "PROGDIR:fx/victory.8svx", SOFT}, /* FXCELEBRATE (if game succeeded) */
    {        "PROGDIR:fx/click.8svx", SOFT}, /* FXCLICK (rundown, keypresses) */
    {  "PROGDIR:fx/titlescreen.8svx", SOFT}, /* FXLAUNCH (title screen) */
    {   "PROGDIR:fx/endoflevel.8svx", LOUD}, /* FXRIFF (after each rundown) */
    {    "PROGDIR:fx/timealert.8svx", SOFT}  /* FXSIREN (out of time) */
};

/* ARRAYS -------------------------------------------------------------- */

MODULE UBYTE* CycleOptions[4][6] =
{ { (UBYTE *) "None",
    (UBYTE *) "Amiga",
    (UBYTE *) "Joystick 3",
    (UBYTE *) "Gamepad 3",
    (UBYTE *) "Lt. Kybd",
    NULL
  },
  { (UBYTE *) "None",
    (UBYTE *) "Amiga",
    (UBYTE *) "Joystick 4",
    (UBYTE *) "Gamepad 4",
    (UBYTE *) "Rt. Kybd",
    NULL
  },
  { (UBYTE *) "None",
    (UBYTE *) "Amiga",
    (UBYTE *) "Joystick 2",
    (UBYTE *) "Gamepad 2",
    NULL,
    NULL
  },
  { (UBYTE *) "None",
    (UBYTE *) "Amiga",
    (UBYTE *) "Joystick 1",
    (UBYTE *) "Gamepad 1",
    NULL,
    NULL
} };

MODULE STRPTR sfxerror[] =
{   "No errors.",
    "Can't open file!",
    "Can't read file!",
    "Not an IFF 8SVX; too short!",
    "Not an IFF FORM!",
    "No memory for read!",
    "Read error!",
    "Malformed IFF; too short!",
    "Not an IFF 8SVX!",
    "No chip memory!"
};

/* PUBLIC STRUCTURES ----------------------------------------------------- */

struct Chunk
{   LONG          ckID;
    LONG          ckSize;
    LONG          ckType;
    void*         ckData;
    struct Chunk* ckNext;
};

/* TYPEDEFS --------------------------------------------------------------- */

typedef LONG Fixed;          /* A fixed-point value, 16 bits to the left
                                of the point and 16 to the right. A Fixed
                                is a number of 2**16ths, ie. 65536ths. */
typedef struct
{   ULONG oneShotHiSamples,  /* # samples in the high octave 1-shot part */
          repeatHiSamples,   /* # samples in the high octave repeat part */
          samplesPerHiCycle; /* # samples/cycle in high octave, else 0 */
    UWORD samplesPerSec;     /* data sampling rate */
    UBYTE ctOctave,          /* # of octaves of waveforms */
          sCompression;      /* data compression technique used */
    Fixed volume;            /* playback nominal volume from 0 to Unity
                                (full volume). Map this value into the
                                output hardware's dynamic range (0-64). */
} Voice8Header;

/* Must have blank line at EOF. */
