]> 4ch.mooo.com Git - 16.git/blobdiff - 16/v2/source/MAPED/GUI.C
renamed: ptmp0.pcx -> data/ptmp0.pcx
[16.git] / 16 / v2 / source / MAPED / GUI.C
diff --git a/16/v2/source/MAPED/GUI.C b/16/v2/source/MAPED/GUI.C
deleted file mode 100644 (file)
index d4869d4..0000000
+++ /dev/null
@@ -1,5062 +0,0 @@
-/*\r
-Copyright (C) 1998 BJ Eirich (aka vecna)\r
-This program is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU General Public License\r
-as published by the Free Software Foundation; either version 2\r
-of the License, or (at your option) any later version.\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
-See the GNU General Public Lic\r
-See the GNU General Public License for more details.\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <stdarg.h>\r
-#include <malloc.h>\r
-#include <stdlib.h>\r
-\r
-#include "config.h"\r
-#include "guicomp.h"\r
-#include "maped.h"\r
-#include "mouse.h"\r
-#include "render.h"\r
-#include "timer.h"\r
-#include "vdriver.h"\r
-#include "keyboard.h"\r
-\r
-#include "smalfont.h"\r
-#include "columns.h"\r
-#include "tilesel.h"\r
-\r
-// ================================= Data ====================================\r
-\r
-struct message\r
-{\r
-  char text[44];                     // message text\r
-  int exptime;                       // message expire time\r
-};\r
-\r
-struct message messages[6];          // 5-message buffer\r
-char num_msgs=0;                     // number of active messages\r
-char playingmod[80];                 // currently playing mod.\r
-extern char scrollmode;\r
-\r
-// ================================= Code ====================================\r
-\r
-void CheckMessageExpirations()\r
-{ int i;\r
-\r
-  for (i=0; i<num_msgs; i++)\r
-    if (systemtime>messages[i].exptime)\r
-    {\r
-       memcpy(messages[i].text, messages[i+1].text, (48*(num_msgs-i+1)));\r
-       num_msgs--;\r
-    }\r
-}\r
-\r
-void Message(char *text, int duration)\r
-{\r
-  if (num_msgs<5)\r
-  {\r
-    memcpy(messages[num_msgs].text, text, strlen(text));\r
-    messages[num_msgs].exptime=systemtime+duration;\r
-    num_msgs++;\r
-    return;\r
-  }\r
-\r
-  memcpy(&messages[0].text, &messages[1].text, 192);\r
-  memcpy(messages[4].text, text, strlen(text)+1);\r
-  messages[num_msgs].exptime=systemtime+duration;\r
-}\r
-\r
-void DrawScreenControls()\r
-{ int i;\r
-  byte c;\r
-\r
-  if (el<6)\r
-  {\r
-    if (pasting)\r
-    {\r
-      GotoXY(298-5,tsy-19+13);\r
-      printstring("P");\r
-    }\r
-  }\r
-\r
-  // Put current-tile boxes if applicable.\r
-  if (el<6)\r
-  {\r
-    FilledBox(298,tsy-19,18,18,white);\r
-    FilledBox(317,tsy-19,18,18,white);\r
-    CopySprite(299,tsy-18,16,16,vsp+(256*lt));\r
-    CopySprite(318,tsy-18,16,16,vsp+(256*rt));\r
-  }\r
-\r
-  if (el==7)\r
-  {\r
-    sprintf(strbuf,"Zone %d",curzone);\r
-    GotoXY(280,tsy-16);\r
-    printstring(strbuf);\r
-    GotoXY(280,tsy-10);\r
-    printstring(zones[curzone].name);\r
-\r
-    c=zone[((((ywin*layer[0].pmulty/layer[0].pdivy)+my-16)/16) *\r
-               layer[0].sizex)+(((xwin*layer[0].pmultx/layer[0].pdivx)+mx-16)/16)];\r
-\r
-    if (c)\r
-    {\r
-       sprintf(strbuf,"zone %d",c);\r
-       GotoXY(280,17);\r
-       printstring(strbuf);\r
-       GotoXY(280,23);\r
-       printstring(zones[c].name);\r
-    }\r
-  }\r
-\r
-  if (el==8)\r
-  {\r
-    sprintf(strbuf,"%d entities",entities);\r
-    GotoXY(285,17); printstring(strbuf);\r
-\r
-    if (c=EntityThere((mx+xwin-16)/16,(my+ywin-16)/16))\r
-    {\r
-      c--;\r
-      GotoXY(285,tsy-10);\r
-      printstring(entity[c].desc);\r
-    }\r
-  }\r
-\r
-  // Put the current-tile mouse thingy.\r
-  GotoXY(17,17);\r
-  dec_to_asciiz((xwin+mx-16)/16,strbuf);\r
-  printstring(strbuf); printstring(", ");\r
-  dec_to_asciiz((ywin+my-16)/16,strbuf);\r
-  printstring(strbuf);\r
-\r
-  // Put the layer editor/selector.\r
-\r
-  for (i=0; i<6; i++)\r
-  {\r
-    if (el==i) c=white; else c=darkw;\r
-    FilledBox(17+(i*10),tsy-7,9,7,c);\r
-    if (layertoggle[i]) c=darkred; else c=0;\r
-    FilledBox(18+(i*10),tsy-6,7,6,c);\r
-    GotoXY(20+(i*10),tsy-5); dec_to_asciiz(i+1,strbuf);\r
-    if (i<numlayers) printstring(strbuf);\r
-  }\r
-\r
-  for (i=6; i<10; i++)\r
-  {\r
-    if (el==i) c=white; else c=darkw;\r
-    FilledBox(17+(i*10),tsy-7,9,7,c);\r
-    if (layertoggle[i]) c=darkred; else c=0;\r
-    FilledBox(18+(i*10),tsy-6,7,6,c);\r
-    GotoXY(20+(i*10),tsy-5);\r
-    switch (i)\r
-    {\r
-      case 6: printstring("O"); break;\r
-      case 7: printstring("N"); break;\r
-      case 8: printstring("E"); break;\r
-      case 9: printstring("T"); break;\r
-    }\r
-  }\r
-}\r
-\r
-void RenderMessages()\r
-{ int i;\r
-\r
-  CheckMessageExpirations();\r
-  for (i=0; i<num_msgs; i++)\r
-  {\r
-    GotoXY(17,23+(i*6));\r
-    printstring(messages[i].text);\r
-  }\r
-}\r
-\r
-void RenderGUI()\r
-{\r
-  RenderMessages();\r
-  DrawScreenControls();\r
-  DrawMouse();\r
-}\r
-\r
-// ============================= Dialog Code =================================\r
-\r
-int mmxofs=60, mmyofs=50;\r
-\r
-void DoMainMenu()\r
-{\r
-  key[SCAN_ESC]=0;\r
-  MainMenu(mmxofs, mmyofs);\r
-}\r
-\r
-void MainMenu(int dx, int dy)\r
-{ char done=0;\r
-  //int mxo, myo, cursorblink;\r
-\r
-  mmxofs=dx;\r
-  mmyofs=dy;\r
-  do\r
-  {\r
-    if (dx<16) dx=16;\r
-    if (dy<16) dy=16;\r
-    if (dx+80>335) dx=336-80;\r
-    if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
-    RenderMap();\r
-    RenderGUI();\r
-    stdwindow(dx, dy, dx+80, dy+89);\r
-\r
-    if (mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
-       if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
-       if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
-       if (my>dy+20 && my<dy+26) FilledBox(dx+2, dy+20, 76, 7, darkw);\r
-       if (my>dy+29 && my<dy+36) FilledBox(dx+2, dy+29, 76, 7, darkw);\r
-       if (my>dy+35 && my<dy+42) FilledBox(dx+2, dy+35, 76, 7, darkw);\r
-       if (my>dy+41 && my<dy+48) FilledBox(dx+2, dy+41, 76, 7, darkw);\r
-       if (my>dy+47 && my<dy+54) FilledBox(dx+2, dy+47, 76, 7, darkw);\r
-       if (my>dy+53 && my<dy+60) FilledBox(dx+2, dy+53, 76, 7, darkw);\r
-       if (my>dy+59 && my<dy+66) FilledBox(dx+2, dy+59, 76, 7, darkw);\r
-       if (my>dy+65 && my<dy+72) FilledBox(dx+2, dy+65, 76, 7, darkw);\r
-       if (my>dy+71 && my<dy+78) FilledBox(dx+2, dy+71, 76, 7, darkw);\r
-       if (my>dy+80 && my<dy+87) FilledBox(dx+2, dy+80, 76, 7, darkw);\r
-    }\r
-\r
-    GotoXY(dx+3, dy+3); printstring("New MAP");\r
-    GotoXY(dx+3, dy+9); printstring("Load MAP");\r
-    GotoXY(dx+3, dy+15); printstring("Save MAP");\r
-    GotoXY(dx+3, dy+21); printstring("Load VSP");\r
-    HLine(dx+2, dy+28, 76, white);\r
-    GotoXY(dx+3, dy+30); printstring("MAP Properties");\r
-    GotoXY(dx+3, dy+36); printstring("Layers"); GotoXY(dx+73, dy+36); printstring(">");\r
-    GotoXY(dx+3, dy+42); printstring("Options");\r
-    GotoXY(dx+3, dy+48); printstring("MOD Player");\r
-    GotoXY(dx+3, dy+54); printstring("CD Player");\r
-    GotoXY(dx+3, dy+60); printstring("Columns");\r
-    GotoXY(dx+3, dy+66); printstring("Execute"); GotoXY(dx+73, dy+66); printstring(">");\r
-    GotoXY(dx+3, dy+72); printstring("Exit to DOS");\r
-    HLine(dx+2, dy+79, 76, white);\r
-    GotoXY(dx+3, dy+81); printstring("About MapEd");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    if (mb==1 && mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) { NewMAP(); done=1; WaitRelease(); break; }\r
-       if (my>dy+8 && my<dy+15) { done=1; WaitRelease(); LoadMAPDialog(); break; }\r
-       if (my>dy+14 && my<dy+21) { done=1; WaitRelease(); key[SCAN_F10]=1; break; }\r
-       if (my>dy+20 && my<dy+26) { done=1; WaitRelease(); LoadVSPDialog(); break; }\r
-       if (my>dy+29 && my<dy+36) { done=1; WaitRelease(); MapPropertiesDialog(); break; }\r
-       if (my>dy+35 && my<dy+42) { done=1; WaitRelease(); LayersSubMenu(dx,dy); break; }\r
-       if (my>dy+41 && my<dy+48) { done=1; WaitRelease(); OptionsDialog(); break; }\r
-       if (my>dy+47 && my<dy+54) { done=1; WaitRelease(); MPDialog(); break; }\r
-       if (my>dy+53 && my<dy+60) { done=1; WaitRelease(); CDDialog(); break; }\r
-       if (my>dy+59 && my<dy+66) { done=1; WaitRelease(); Columns(); break; }\r
-       if (my>dy+65 && my<dy+72) { done=1; WaitRelease(); ExecuteSubMenu(0, 0); break; }\r
-       if (my>dy+71 && my<dy+78) { done=1; WaitRelease(); key[SCAN_X]=1; key[SCAN_ALT]=1; break; }\r
-       if (my>dy+80 && my<dy+87) { done=1; About(); break; }\r
-    }\r
-\r
-    if (mb==1)\r
-    {\r
-      WaitRelease();\r
-      done=1;\r
-    }\r
-    if (key[SCAN_ESC]==1) done=1;\r
-  } while (!done);\r
-  key[SCAN_ESC]=0;\r
-}\r
-\r
-// tilesel.c\r
-extern FILE *pcxf;\r
-extern int width, depth;\r
-extern int vidoffset;\r
-extern char *ovsp;\r
-extern char *t;\r
-extern word ontiles;\r
-\r
-static int TileMatch(int a, int b)\r
-  { return !memcmp(ovsp+(a*256), ovsp+(b*256), 256); }\r
-\r
-int ilxsize=145, ilysize=122+10;\r
-int ilxofs=16, ilyofs=16;\r
-\r
-// make this configurable at some point\r
-#define MIN_TILE_X 50\r
-#define MIN_TILE_Y 50\r
-\r
-static int BitToNum(int num)\r
-{\r
-  int i;\r
-\r
-  if (!num)\r
-    return 0;\r
-\r
-  for (i=0; i<32; i++)\r
-  {\r
-    if (num & (1<<i))\r
-      break;\r
-  }\r
-\r
-  return i+1;\r
-}\r
-\r
-//zero\r
-byte TileCmp(byte *one, byte *two)\r
-  { return !memcmp(one,two, 256); }\r
-\r
-void ImageToLayer()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, tt, *str;\r
-  char nstr1[80], nstr2[80];\r
-\r
-  int i,j,k,m;\r
-  FILE *f=0;\r
-  int num_padx=0,num_pady=0; // in tiles\r
-  int minpadx=0,minpady=0; // in tiles\r
-  int tilesx=0,tilesy=0; // in tiles\r
-  int totalx=0,totaly=0; // in tiles\r
-  int excessx=0,excessy=0; // in pixels\r
-  //int chk_1=1,chk_2=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0; // radio control\r
-  int chk_layer=1;\r
-  int chk_grabexcess=0,chk_centerinpad=0,chk_nodup=1; //,chk_padisblank=1;\r
-  char txt_imagename[80];\r
-        // ...\r
-        int ly=0;\r
-        int wide=0,deep=0;\r
-        int lsz=0;\r
-        int matched=0,plot=0; //,mapat=0;\r
-        int tilesripped=0;\r
-        int startx=0,starty=0;\r
-  memset(txt_imagename,0,80);\r
-  bmode=0; // for browser; update map/gui\r
-  width=0; depth=0; // for pcx loading code\r
-\r
-  sprintf(nstr1, "%d", num_padx);\r
-  sprintf(nstr2, "%d", num_pady);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      ilxofs = (mx-mxo);\r
-      ilyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (ilxofs<16) ilxofs = 16;\r
-      if (ilyofs<16) ilyofs = 16;\r
-      if (ilxofs+ilxsize>335) ilxofs = 336-ilxsize;\r
-      if (ilyofs+ilysize>sy+16) ilyofs = (sy+16)-ilysize;\r
-    }\r
-\r
-    Window(ilxofs, ilyofs, ilxofs+ilxsize, ilyofs+ilysize, "Import Image As Layer");\r
-    Button(ilxofs+109, ilyofs+12, "Browse");\r
-    Button(ilxofs+109, ilyofs+30, "OK");\r
-    GotoXY(ilxofs+5, ilyofs+25); printstring("Layer:");\r
-    // layer select radio buttons\r
-    for (i=0; i<6; i++)\r
-    {\r
-      CheckBox(ilxofs+29+(i*10), ilyofs+33, chk_layer & (1<<i));\r
-      GotoXY(ilxofs+31+(i*10), ilyofs+25);\r
-      sprintf(strbuf, "%i", i+1); printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+14); printstring("Image:");\r
-    //TextField(ilxofs+29, ilyofs+12, 75, txt_imagename, ctf == 1 ? cb : 0);\r
-    GotoXY(ilxofs+29, ilyofs+14); printstring(txt_imagename);\r
-    HLine(ilxofs+1, ilyofs+44, 143, white);\r
-    GotoXY(ilxofs+5, ilyofs+49); printstring("Image Dimensions:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Image Dimensions:")+3, ilyofs+49);\r
-      sprintf(strbuf, "%dx%d", width, depth);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+60); printstring("Tiles X:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Tiles X:")+3, ilyofs+60);\r
-      sprintf(strbuf, "%d", tilesx);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+71); printstring("Tiles Y:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Tiles Y:")+3, ilyofs+71);\r
-      sprintf(strbuf, "%d", tilesy);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+51, ilyofs+60); printstring("Pad X:");\r
-    GotoXY(ilxofs+51, ilyofs+71); printstring("Pad Y:");\r
-    TextField(ilxofs+74, ilyofs+58, 12, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(ilxofs+74, ilyofs+69, 12, nstr2, ctf == 2 ? cb : 0);\r
-    GotoXY(ilxofs+95, ilyofs+60); printstring("Total X:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+95+pixels("Total X:")+3, ilyofs+60);\r
-      sprintf(strbuf, "%d", totalx);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+95, ilyofs+71); printstring("Total Y:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+95+pixels("Total Y:")+3, ilyofs+71);\r
-      sprintf(strbuf, "%d", totaly);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+81); printstring("Excess Pixels X:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Excess Pixels X:")+3, ilyofs+81);\r
-      sprintf(strbuf, "%d", excessx);\r
-      printstring(strbuf);\r
-    }\r
-    GotoXY(ilxofs+5, ilyofs+91); printstring("Excess Pixels Y:");\r
-    if (width+depth)\r
-    {\r
-      GotoXY(ilxofs+5+pixels("Excess Pixels Y:")+3, ilyofs+91);\r
-      sprintf(strbuf, "%d", excessy);\r
-      printstring(strbuf);\r
-    }\r
-    CheckBox(ilxofs+5, ilyofs+101, chk_grabexcess);\r
-    GotoXY(ilxofs+17, ilyofs+102); printstring("Grab Excess");\r
-    CheckBox(ilxofs+5, ilyofs+110, chk_centerinpad);\r
-    GotoXY(ilxofs+17, ilyofs+111); printstring("Center Within Padding");\r
-    CheckBox(ilxofs+5, ilyofs+119, chk_nodup);\r
-    GotoXY(ilxofs+17, ilyofs+120); printstring("Eliminate Duplicates");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>ilxofs+109 && mx<ilxofs+30+109 && my>ilyofs+12 && my<ilyofs+10+12 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(ilxofs+109, ilyofs+12, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1, "*.pcx", "", "", "", txt_imagename);\r
-      key[SCAN_ESC]=0; // just in case ESC exited\r
-      f=fopen(txt_imagename, "rb");\r
-      if (f)\r
-      {\r
-        LoadPCXHeaderNP(txt_imagename);\r
-        fclose(pcxf);\r
-\r
-        if (chk_grabexcess) i=15; else i=0;\r
-        tilesx=((width+i)&~15)/16;\r
-        tilesy=((depth+i)&~15)/16;\r
-        excessx=width & 15;\r
-        excessy=depth & 15;\r
-        if (tilesx<MIN_TILE_X) { minpadx=MIN_TILE_X-tilesx; num_padx=minpadx; }\r
-        if (tilesy<MIN_TILE_Y) { minpady=MIN_TILE_Y-tilesy; num_pady=minpady; }\r
-        sprintf(nstr1, "%d", minpadx);\r
-        sprintf(nstr2, "%d", minpady);\r
-        totalx=tilesx+minpadx;\r
-        totaly=tilesy+minpady;\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>ilxofs+109 && mx<ilxofs+30+109 && my>ilyofs+30 && my<ilyofs+10+30 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(ilxofs+109, ilyofs+30, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-\r
-      if (strlen(txt_imagename))\r
-      {\r
-        done=1;\r
-\r
-        ly=BitToNum(chk_layer) -1;\r
-\r
-        startx=0;\r
-        starty=0;\r
-        if (chk_centerinpad)\r
-        {\r
-          startx=(totalx-tilesx)/2;\r
-          starty=(totaly-tilesy)/2;\r
-        }\r
-\r
-        LoadPCXHeaderNP(txt_imagename);\r
-\r
-        wide=width;\r
-        deep=depth;\r
-        if (chk_grabexcess)\r
-        {\r
-          // round up to the nearest multiple of 16 if grabbing excess\r
-          wide=(width+15)&~15;\r
-          deep=(depth+15)&~15;\r
-        }\r
-        // allocate transit image bay, which may have padding ^\r
-        t=(char *) valloc(wide * deep,"img2layer",0);\r
-\r
-        for (i=0; i<depth; i++)\r
-        {\r
-          vidoffset=wide*i;\r
-          ReadPCXLine(t);\r
-        }\r
-        fclose(pcxf);\r
-\r
-        deep=tilesy;\r
-        wide=tilesx;\r
-        ontiles=(wide*deep)+1; // +1 for our empty tile\r
-\r
-        ovsp=(char *) valloc(ontiles*256,"img2layer2",0);\r
-\r
-        layer[ly].pmultx=1;     layer[ly].pmulty=1;\r
-        layer[ly].pdivx=1;      layer[ly].pdivy=1;\r
-        // totalx & totaly are the sum of tilesx/tilesy & num_padx/num_pady\r
-        layer[ly].sizex=totalx; layer[ly].sizey=totaly;\r
-        layer[ly].trans=0;      layer[ly].hline=0;\r
-\r
-        lsz = totalx * totaly;\r
-\r
-        if (layers[ly]) vfree(layers[ly]);\r
-        layers[ly]=(unsigned short *) valloc((lsz*2)+4,"layer data",ly);\r
-\r
-        tilesripped=0;\r
-        memset(ovsp,0,256);\r
-        tilesripped++;\r
-\r
-        for (i=0; i<deep; i++)\r
-        {\r
-          for (j=0; j<wide; j++)\r
-          {\r
-            GrabTileAt((j*16), (i*16), tilesripped, 0);\r
-            plot=tilesripped;\r
-\r
-            // eliminate duplicates?\r
-            if (chk_nodup)\r
-            {\r
-              matched=0;\r
-              for (k=0; k<tilesripped; k++)\r
-              {\r
-                if (TileMatch(tilesripped, k))\r
-                {\r
-                  matched=1;\r
-                  plot=k;\r
-                  break;\r
-                }\r
-              }\r
-                //begin zero\r
-              for(m=0; m<numtiles; m++)\r
-              {\r
-                if(TileCmp(vsp+m*256,ovsp+tilesripped*256))\r
-                {\r
-                  matched=1;\r
-                  plot=m-numtiles;\r
-//                  plot=0;\r
-                  break;\r
-                }\r
-              }\r
-              //end zero!\r
-              if (!matched) tilesripped++;\r
-            }\r
-            // grabbing all; keep it regardless\r
-            else tilesripped++;\r
-\r
-            layers[ly][((i+starty)*totalx)+j+startx]=plot;\r
-          }\r
-        }\r
-\r
-        // adjust indices past current tile amount\r
-        for (i=0; i<(totalx*totaly); i++)\r
-          layers[ly][i]+=numtiles;\r
-\r
-        if (!ly)\r
-        {\r
-          if (obstruct) vfree(obstruct);\r
-          obstruct=(char *) valloc(lsz+4,"obstruct",0);\r
-          if (zone) vfree(zone);\r
-          zone=(char *) valloc(lsz+4,"zone", 0);\r
-        }\r
-\r
-        // reallocate tilebay and patch in ovsp\r
-        str=(char *)valloc((numtiles+tilesripped)*256,"vsp data",0);\r
-        memcpy(str, vsp, (numtiles*256));\r
-        vfree(vsp); vsp=str; str=0;\r
-        memcpy(vsp+(numtiles*256), ovsp, (tilesripped*256));\r
-        numtiles+=tilesripped;\r
-\r
-        // did we make a new layer?\r
-        if (ly+1>numlayers)\r
-        {\r
-          numlayers++;\r
-          sprintf(rstring, "%s%i", rstring, ly+1); // update render-order\r
-        }\r
-\r
-        vfree(t);\r
-        vfree(ovsp);\r
-      }\r
-      // ...\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+29 && mx<ilxofs+8+29 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      chk_layer ^= 1;\r
-      chk_layer &= 1;\r
-      //chk_1 ^= 1;\r
-      //chk_2=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+39 && mx<ilxofs+8+39 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 2)\r
-      {\r
-      chk_layer ^= 2;\r
-      chk_layer &= 2;\r
-      //chk_2 ^= 1;\r
-      //chk_1=0,chk_3=0,chk_4=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+49 && mx<ilxofs+8+49 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 3)\r
-      {\r
-      chk_layer ^= 4;\r
-      chk_layer &= 4;\r
-      //chk_3 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_4=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+59 && mx<ilxofs+8+59 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 4)\r
-      {\r
-      chk_layer ^= 8;\r
-      chk_layer &= 8;\r
-      //chk_4 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_3=0,chk_5=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+69 && mx<ilxofs+8+69 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 5)\r
-      {\r
-      chk_layer ^= 16;\r
-      chk_layer &= 16;\r
-      //chk_5 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_6=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+79 && mx<ilxofs+8+79 && my>ilyofs+33 && my<ilyofs+7+33 && !moving)\r
-    {\r
-      if (numlayers+1 >= 6)\r
-      {\r
-      chk_layer ^= 32;\r
-      chk_layer &= 32;\r
-      //chk_6 ^= 1;\r
-      //chk_1=0,chk_2=0,chk_3=0,chk_4=0,chk_5=0;\r
-      WaitRelease(); continue;\r
-      }\r
-    }\r
-\r
-    // if no checkboxes are marked, mark the first.\r
-    //if (!(chk_1+chk_2+chk_3+chk_4+chk_5+chk_6)) chk_1=1;\r
-    if (!chk_layer) chk_layer=1;\r
-\r
-//    if (mb==1 && mx>ilxofs+29 && mx<ilxofs+75+29 && my>ilyofs+12 && my<ilyofs+9+12 && !moving)\r
-//    {\r
-//      ctf=1; str=txt_imagename; cb=1;\r
-//      cursorblink=systemtime+40; continue;\r
-//    }\r
-\r
-    if (mb==1)\r
-    {\r
-      if (mx>ilxofs+74 && mx<ilxofs+12+74 && my>ilyofs+58 && my<ilyofs+9+58 && !moving)\r
-      {\r
-        if (ctf==2)\r
-        {\r
-          if (atoi(str)<minpady)\r
-            sprintf(str, "%d", minpady);\r
-        }\r
-        ctf=1; str=nstr1; cb=1;\r
-        cursorblink=systemtime+40; continue;\r
-      }\r
-\r
-      if (mx>ilxofs+74 && mx<ilxofs+12+74 && my>ilyofs+69 && my<ilyofs+9+69 && !moving)\r
-      {\r
-        if (ctf==1)\r
-        {\r
-          if (atoi(str)<minpadx)\r
-            sprintf(str, "%d", minpadx);\r
-        }\r
-        ctf=2; str=nstr2; cb=1;\r
-        cursorblink=systemtime+40; continue;\r
-      }\r
-\r
-      switch (ctf)\r
-      {\r
-        case 1: if (atoi(str) < minpadx) sprintf(str, "%d", minpadx); break;\r
-        case 2: if (atoi(str) < minpady) sprintf(str, "%d", minpady); break;\r
-      }\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+101 && my<ilyofs+7+101 && !moving)\r
-    {\r
-      chk_grabexcess ^= 1;\r
-      // <barf>\r
-      if (excessx+excessy)\r
-      {\r
-        if (chk_grabexcess)\r
-        {\r
-          if (excessx) tilesx++;\r
-          if (excessy) tilesy++;\r
-        }\r
-        else\r
-        {\r
-          if (excessx) tilesx--;\r
-          if (excessy) tilesy--;\r
-        }\r
-        if (tilesx<MIN_TILE_X) { minpadx=MIN_TILE_X-tilesx; num_padx=minpadx; }\r
-        if (tilesy<MIN_TILE_Y) { minpady=MIN_TILE_Y-tilesy; num_pady=minpady; }\r
-        sprintf(nstr1, "%d", minpadx);\r
-        sprintf(nstr2, "%d", minpady);\r
-        totalx=tilesx+minpadx;\r
-        totaly=tilesy+minpady;\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+110 && my<ilyofs+7+110 && !moving)\r
-    {\r
-      chk_centerinpad ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs+5 && mx<ilxofs+8+5 && my>ilyofs+119 && my<ilyofs+7+119 && !moving)\r
-    {\r
-      chk_nodup ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(ilxofs+ilxsize-9) && (mx<ilxofs+ilxsize-2)\r
-    && my>(ilyofs+1) && (my<ilyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>ilxofs && mx<ilxofs+ilxsize && my>ilyofs && my<(ilyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-ilxofs;\r
-      myo=my-ilyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-\r
-        // keep minimally required padding\r
-        if (ctf==1)\r
-        {\r
-          if (atoi(str)<minpadx)\r
-            sprintf(str, "%d", minpadx);\r
-        }\r
-        if (ctf==2)\r
-        {\r
-          if (atoi(str)<minpady)\r
-            sprintf(str, "%d", minpady);\r
-        }\r
-\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=0; str=0; break;\r
-          //case 3: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=2; str=nstr2; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          //case 3: ctf=2; str=nstr1; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      tt=strlen(str);\r
-      str[tt]=c;\r
-      str[tt+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-\r
-  //num_padx=atoi(nstr1);\r
-  //num_pady=atoi(nstr2);\r
-}\r
-\r
-int dtxsize=102, dtysize=52;\r
-int dtxofs=100, dtyofs=70;\r
-// aen\r
-void Destroyer()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  int zn_check=0,zd_check=0,ob_check=0,ent_check=0;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      dtxofs = (mx-mxo);\r
-      dtyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (dtxofs<16) dtxofs = 16;\r
-      if (dtyofs<16) dtyofs = 16;\r
-      if (dtxofs+dtxsize>335) dtxofs = 336-dtxsize;\r
-      if (dtyofs+dtysize>sy+16) dtyofs = (sy+16)-dtysize;\r
-    }\r
-\r
-    Window(dtxofs, dtyofs, dtxofs+dtxsize, dtyofs+dtysize, "Destroyer");\r
-    CheckBox(dtxofs+4, dtyofs+11, zn_check);\r
-    CheckBox(dtxofs+4, dtyofs+31, ob_check);\r
-    CheckBox(dtxofs+4, dtyofs+21, zd_check);\r
-    GotoXY(dtxofs+15, dtyofs+12); printstring("Zones");\r
-    GotoXY(dtxofs+15, dtyofs+32); printstring("Obstructions");\r
-    GotoXY(dtxofs+15, dtyofs+22); printstring("Zone Data");\r
-    Button(dtxofs+68, dtyofs+11, "ok");\r
-    Button(dtxofs+68, dtyofs+24, "cancel");\r
-    CheckBox(dtxofs+4, dtyofs+41, ent_check);\r
-    GotoXY(dtxofs+15, dtyofs+42); printstring("Entities");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+11 && my<dtyofs+7+11 && !moving)\r
-    {\r
-      zn_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+21 && my<dtyofs+7+21 && !moving)\r
-    {\r
-      zd_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+31 && my<dtyofs+7+31 && !moving)\r
-    {\r
-      ob_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+4 && mx<dtxofs+8+4 && my>dtyofs+41 && my<dtyofs+7+41 && !moving)\r
-    {\r
-      ent_check ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+68 && mx<dtxofs+30+68 && my>dtyofs+11 && my<dtyofs+10+11 && !moving)\r
-    {\r
-      // insert code for button "ok" here\r
-      ButtonPressed(dtxofs+68, dtyofs+11, "ok");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-\r
-      if (Confirm("Are you sure?"))\r
-      {\r
-        done=1;\r
-        if (ob_check) memset(obstruct, 0, (layer[0].sizex*layer[0].sizey)+4);\r
-        if (zn_check) memset(zone, 0, (layer[0].sizex*layer[0].sizey)+4);\r
-        if (zd_check)\r
-        {\r
-          numzones=0;\r
-          memset(&zones, 0, sizeof zones);\r
-        }\r
-        if (ent_check)\r
-        {\r
-          entities=0;\r
-          nmchr=0;\r
-          nms=0;\r
-          memset(&ms, 0, sizeof ms);\r
-          memset(&entity, 0, sizeof entities);\r
-          memset(&chrlist, 0, sizeof chrlist);\r
-        }\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs+68 && mx<dtxofs+30+68 && my>dtyofs+24 && my<dtyofs+10+24 && !moving)\r
-    {\r
-      done=1;\r
-      // insert code for button "cancel" here\r
-      ButtonPressed(dtxofs+68, dtyofs+24, "cancel");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(dtxofs+dtxsize-9) && (mx<dtxofs+dtxsize-2)\r
-    && my>(dtyofs+1) && (my<dtyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>dtxofs && mx<dtxofs+dtxsize && my>dtyofs && my<(dtyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-dtxofs;\r
-      myo=my-dtyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-void LayersSubMenu(int dx, int dy)\r
-{ char done=0;\r
-  //int mxo, myo, cursorblink;\r
-\r
-  do\r
-  {\r
-    if (dx<16) dx=16;\r
-    if (dy<16) dy=16;\r
-    if (dx+80>335) dx=336-80;\r
-    if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
-    RenderMap();\r
-    RenderGUI();\r
-    stdwindow(dx, dy, dx+80, dy+29);\r
-\r
-    if (mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
-       if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
-       if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
-       if (my>dy+20 && my<dy+26) FilledBox(dx+2, dy+20, 76, 7, darkw);\r
-    }\r
-\r
-    GotoXY(dx+3, dy+3); printstring("Add Layer");\r
-    GotoXY(dx+3, dy+9); printstring("Edit Layer");\r
-    GotoXY(dx+3, dy+15); printstring("Import Image");\r
-    GotoXY(dx+3, dy+21); printstring("Destroyer");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    if (mb==1 && mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) { AddLayer(); NoticeDialog(); done=1; WaitRelease(); break; }\r
-       if (my>dy+8 && my<dy+15) { EditLayerProperties(); done=1; WaitRelease(); break; }\r
-       if (my>dy+14 && my<dy+21) { ImageToLayer(); done=1; WaitRelease(); break; }\r
-       if (my>dy+20 && my<dy+26) { Destroyer(); done=1; WaitRelease(); break; }\r
-    }\r
-\r
-    if (mb==1)\r
-    {\r
-      WaitRelease();\r
-      done=1;\r
-    }\r
-    if (key[SCAN_ESC]==1) done=1;\r
-  } while (!done);\r
-  key[SCAN_ESC]=0;\r
-}\r
-\r
-void ExecuteSubMenu(int dx, int dy)\r
-{ char done=0;\r
-  //int mxo, myo, cursorblink;\r
-\r
-  do\r
-  {\r
-    if (dx<16) dx=16;\r
-    if (dy<16) dy=16;\r
-    if (dx+80>335) dx=336-80;\r
-    if (dy+89>sy+16) dy=(sy+16)-89;\r
-\r
-    RenderMap();\r
-    RenderGUI();\r
-    stdwindow(dx, dy, dx+80, dy+23);\r
-\r
-    if (mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9) FilledBox(dx+2, dy+2, 76, 7, darkw);\r
-       if (my>dy+8 && my<dy+15) FilledBox(dx+2, dy+8, 76, 7, darkw);\r
-       if (my>dy+14 && my<dy+21) FilledBox(dx+2, dy+14, 76, 7, darkw);\r
-    }\r
-\r
-    GotoXY(dx+3, dy+3); printstring("MAP");\r
-    GotoXY(dx+3, dy+9); printstring("VERGE");\r
-    GotoXY(dx+3, dy+15); printstring("DOS");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    if (mb==1 && mx>dx && mx<dx+80)\r
-    {\r
-       if (my>dy+2 && my<dy+9)   { ShellMAP();   done=1; WaitRelease(); break; }\r
-       if (my>dy+8 && my<dy+15)  { ShellVERGE(); done=1; WaitRelease(); break; }\r
-       if (my>dy+14 && my<dy+21) { ShellToDOS(); done=1; WaitRelease(); break; }\r
-    }\r
-\r
-    if (mb==1)\r
-    {\r
-      WaitRelease();\r
-      done=1;\r
-    }\r
-    if (key[SCAN_ESC]==1) done=1;\r
-  } while (!done);\r
-  key[SCAN_ESC]=0;\r
-}\r
-\r
-void AddLayer()\r
-{\r
-  layers[numlayers]=(word *) valloc(layer[0].sizex * layer[0].sizey * 2,"layer data",numlayers);\r
-  //memset(layers[numlayers], 0, layer[0].sizex * layer[0].sizey * 2);\r
-  layer[numlayers].pmultx=1; layer[numlayers].pmulty=1;\r
-  layer[numlayers].pdivx=1;  layer[numlayers].pdivy=1;\r
-  layer[numlayers].sizex=layer[0].sizex;\r
-  layer[numlayers].sizey=layer[0].sizey;\r
-  layer[numlayers].trans=0;\r
-  layer[numlayers].hline=0;\r
-  numlayers++;\r
-}\r
-\r
-int lpxsize=190, lpysize=68;\r
-int lpxofs=40, lpyofs=60;\r
-\r
-void EditLayerProperties()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, i;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80], nstr5[80],nstr6[80];\r
-\r
-  i=el;\r
-  if (i>5) i=0;\r
-  if (i>=numlayers) i=0;\r
-\r
-  sprintf(nstr1, "%d", layer[i].pmultx);\r
-  sprintf(nstr2, "%d", layer[i].pdivx);\r
-  sprintf(nstr3, "%d", layer[i].pmulty);\r
-  sprintf(nstr4, "%d", layer[i].pdivy);\r
-  sprintf(nstr5, "%d", layer[i].trans);\r
-  sprintf(nstr6, "%d", layer[i].hline);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lpxofs = (mx-mxo);\r
-      lpyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lpxofs<16) lpxofs = 16;\r
-      if (lpyofs<16) lpyofs = 16;\r
-      if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize;\r
-      if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize;\r
-    }\r
-\r
-    Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties");\r
-    GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:");\r
-    GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:");\r
-    GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:");\r
-    GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:");\r
-    GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:");\r
-    TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0);\r
-    HLine(lpxofs+1, lpyofs+43, 188, white);\r
-    GotoXY(lpxofs+9, lpyofs+48); printstring("Transparent");\r
-    GotoXY(lpxofs+36, lpyofs+58); printstring("HLine");\r
-    TextField(lpxofs+56, lpyofs+46, 60, nstr5, ctf == 5 ? cb : 0);\r
-    TextField(lpxofs+56, lpyofs+56, 60, nstr6, ctf == 6 ? cb : 0);\r
-    Button(lpxofs+156, lpyofs+55, "OK");\r
-    GotoXY(lpxofs+144, lpyofs+47); printstring("Layer");\r
-    sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=3; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=4; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+60+56 && my>lpyofs+46 && my<lpyofs+9+46 && !moving)\r
-    {\r
-      ctf=5; str=nstr5; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+60+56 && my>lpyofs+56 && my<lpyofs+9+56 && !moving)\r
-    {\r
-      ctf=6; str=nstr6; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lpxofs+156 && mx<lpxofs+30+156 && my>lpyofs+55 && my<lpyofs+10+55 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(lpxofs+156, lpyofs+55, "OK");\r
-      DrawMouse(); done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lpxofs+lpxsize-9) && (mx<lpxofs+lpxsize-2)\r
-    && my>(lpyofs+1) && (my<lpyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs && mx<lpxofs+lpxsize && my>lpyofs && my<(lpyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lpxofs;\r
-      myo=my-lpyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        layer[i].trans=atoi(nstr5);\r
-        layer[i].hline=atoi(nstr6);\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-        if (i) i--; else i=numlayers-1;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-        sprintf(nstr5, "%d", layer[i].trans);\r
-        sprintf(nstr6, "%d", layer[i].hline);\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        layer[i].trans=atoi(nstr5);\r
-        layer[i].hline=atoi(nstr6);\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-        if (i<numlayers-1) i++; else i=0;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-        sprintf(nstr5, "%d", layer[i].trans);\r
-        sprintf(nstr6, "%d", layer[i].hline);\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=3; str=nstr3; break;\r
-          case 3: ctf=4; str=nstr4; break;\r
-          case 4: ctf=5; str=nstr5; break;\r
-          case 5: ctf=6; str=nstr6; break;\r
-          case 6: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=6; str=nstr6; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          case 3: ctf=2; str=nstr2; break;\r
-          case 4: ctf=3; str=nstr3; break;\r
-          case 5: ctf=4; str=nstr4; break;\r
-          case 6: ctf=5; str=nstr5; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  layer[i].pmultx=atoi(nstr1);\r
-  layer[i].pdivx=atoi(nstr2);\r
-  layer[i].pmulty=atoi(nstr3);\r
-  layer[i].pdivy=atoi(nstr4);\r
-  layer[i].trans=atoi(nstr5);\r
-  layer[i].hline=atoi(nstr6);\r
-}\r
-/*\r
-int lpxsize=190, lpysize=68;\r
-int lpxofs=40, lpyofs=60;\r
-\r
-void EditLayerProperties()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, i;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
-  i=el;\r
-  if (i>5) i=0;\r
-  if (i>=numlayers) i=0;\r
-\r
-  sprintf(nstr1, "%d", layer[i].pmultx);\r
-  sprintf(nstr2, "%d", layer[i].pdivx);\r
-  sprintf(nstr3, "%d", layer[i].pmulty);\r
-  sprintf(nstr4, "%d", layer[i].pdivy);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lpxofs = (mx-mxo);\r
-      lpyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lpxofs<16) lpxofs = 16;\r
-      if (lpyofs<16) lpyofs = 16;\r
-      if (lpxofs+lpxsize>335) lpxofs = 336-lpxsize;\r
-      if (lpyofs+lpysize>sy+16) lpyofs = (sy+16)-lpysize;\r
-    }\r
-\r
-    Window(lpxofs, lpyofs, lpxofs+lpxsize, lpyofs+lpysize, "Edit Layer Properties");\r
-    GotoXY(lpxofs+3, lpyofs+10); printstring("Parallax controls:");\r
-    GotoXY(lpxofs+4, lpyofs+21); printstring("MultX:");\r
-    GotoXY(lpxofs+12, lpyofs+31); printstring("DivX:");\r
-    GotoXY(lpxofs+93, lpyofs+21); printstring("MultY:");\r
-    GotoXY(lpxofs+101, lpyofs+31); printstring("DivY:");\r
-    TextField(lpxofs+29, lpyofs+19, 60, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(lpxofs+29, lpyofs+29, 60, nstr2, ctf == 2 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+19, 60, nstr3, ctf == 3 ? cb : 0);\r
-    TextField(lpxofs+118, lpyofs+29, 60, nstr4, ctf == 4 ? cb : 0);\r
-    HLine(lpxofs+1, lpyofs+43, 188, white);\r
-    GotoXY(lpxofs+6, lpyofs+49); printstring("Transparent");\r
-    GotoXY(lpxofs+32, lpyofs+56); printstring("HLine");\r
-    CheckBox(lpxofs+56, lpyofs+48, layer[i].trans);\r
-    CheckBox(lpxofs+56, lpyofs+56, layer[i].hline);\r
-    Button(lpxofs+156, lpyofs+55, "OK");\r
-    GotoXY(lpxofs+144, lpyofs+47); printstring("Layer");\r
-    sprintf(strbuf,"%d",i); GotoXY(lpxofs+168, lpyofs+47); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+29 && mx<lpxofs+60+29 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+19 && my<lpyofs+9+19 && !moving)\r
-    {\r
-      ctf=3; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+118 && mx<lpxofs+60+118 && my>lpyofs+29 && my<lpyofs+9+29 && !moving)\r
-    {\r
-      ctf=4; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+8+56 && my>lpyofs+48 && my<lpyofs+7+48 && !moving)\r
-    {\r
-      layer[i].trans ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs+56 && mx<lpxofs+8+56 && my>lpyofs+56 && my<lpyofs+7+56 && !moving)\r
-    {\r
-      layer[i].hline ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lpxofs+156 && mx<lpxofs+30+156 && my>lpyofs+55 && my<lpyofs+10+55 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(lpxofs+156, lpyofs+55, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lpxofs+lpxsize-9) && (mx<lpxofs+lpxsize-2)\r
-    && my>(lpyofs+1) && (my<lpyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lpxofs && mx<lpxofs+lpxsize && my>lpyofs && my<(lpyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lpxofs;\r
-      myo=my-lpyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-        if (i) i--; else i=numlayers-1;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        layer[i].pmultx=atoi(nstr1);\r
-        layer[i].pdivx=atoi(nstr2);\r
-        layer[i].pmulty=atoi(nstr3);\r
-        layer[i].pdivy=atoi(nstr4);\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-        if (i<numlayers-1) i++; else i=0;\r
-        sprintf(nstr1, "%d", layer[i].pmultx);\r
-        sprintf(nstr2, "%d", layer[i].pdivx);\r
-        sprintf(nstr3, "%d", layer[i].pmulty);\r
-        sprintf(nstr4, "%d", layer[i].pdivy);\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=3; str=nstr3; break;\r
-          case 3: ctf=4; str=nstr4; break;\r
-          case 4: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=4; str=nstr4; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          case 3: ctf=2; str=nstr2; break;\r
-          case 4: ctf=3; str=nstr3; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-\r
-  layer[i].pmultx=atoi(nstr1);\r
-  layer[i].pdivx=atoi(nstr2);\r
-  layer[i].pmulty=atoi(nstr3);\r
-  layer[i].pdivy=atoi(nstr4);\r
-}\r
-   */\r
-void NewMAP()\r
-{ int cursorblink;\r
-\r
-    if (Confirm("Lose existing MAP?"))\r
-    {\r
-      for (cursorblink=0; cursorblink<numlayers; cursorblink++)\r
-        vfree(layers[cursorblink]);\r
-      memcpy(mapname,"UNTITLED.MAP",13);\r
-      memcpy(vspname,"UNTITLED.VSP",13);\r
-      memcpy(musname,"\0",1);\r
-      memcpy(rstring,"1E",2);\r
-      xstart=1; ystart=1;\r
-      numlayers=1;\r
-      wrap=0;\r
-\r
-      // aen: default newmap dimensions set to 100x100\r
-      layer[0].pmultx=1;  layer[0].pmulty=1;\r
-      layer[0].pdivx=1;   layer[0].pdivy=1;\r
-      layer[0].sizex=100; layer[0].sizey=100;\r
-      layer[0].trans=0;   layer[0].hline=0;\r
-\r
-      layers[0] = (unsigned short *)valloc((layer[0].sizex*layer[0].sizey*2)+4,"layer data",0);\r
-      vfree(obstruct);\r
-      obstruct=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"obstruct",0);\r
-      vfree(zone);\r
-      zone=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"zone",0);\r
-      entities=0; // Mordred\r
-\r
-      // aen: default number of tiles set to 100\r
-      numtiles=100;\r
-      vfree(vsp);\r
-      vsp=(char *) valloc(256 * numtiles,"vsp data",0);\r
-\r
-      // zero: was re-allocating same memory so gfx still visible in some places\r
-      memset(vsp,0,256*numtiles);\r
-      // zero: gotta clear that anim stuff man!\r
-      memset(vspanim,0,800);\r
-      InitTileIDX();\r
-\r
-\r
-\r
-      layertoggle[0]=1; layertoggle[1]=0; layertoggle[2]=0; layertoggle[3]=0;\r
-      layertoggle[4]=0; layertoggle[5]=0; layertoggle[6]=0; layertoggle[7]=0;\r
-      xwin=0; ywin=0;\r
-    }\r
-}\r
-\r
-int amxsize=150, amysize=88;\r
-int amxofs=60, amyofs=60;\r
-\r
-void About()\r
-{\r
-  char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      amxofs = (mx-mxo);\r
-      amyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (amxofs<16) amxofs = 16;\r
-      if (amyofs<16) amyofs = 16;\r
-      if (amxofs+amxsize>335) amxofs = 336-amxsize;\r
-      if (amyofs+amysize>sy+16) amyofs = (sy+16)-amysize;\r
-    }\r
-\r
-    sprintf(strbuf, "About MapEd %s", ME2_VERSION);\r
-    Window(amxofs, amyofs, amxofs+amxsize, amyofs+amysize, strbuf);\r
-    sprintf(strbuf, "MapEd v.%s", ME2_VERSION);\r
-    GotoXY(amxofs+52, amyofs+16); printstring(strbuf);\r
-    GotoXY(amxofs+31, amyofs+22); printstring("Copyright (C) 1998 vecna");\r
-    GotoXY(amxofs+40, amyofs+28); printstring("All Rights Reserved");\r
-    GotoXY(amxofs+(75-pixels("Additional code by Ric")/2), amyofs+41);\r
-    printstring("Additional code by Ric");\r
-    GotoXY(amxofs+(75-pixels("Additional code by aen")/2), amyofs+47);\r
-    printstring("Additional code by aen");\r
-    GotoXY(amxofs+(75-pixels("Additional code by zeromus")/2), amyofs+53);\r
-    printstring("Additional code by zeromus");\r
-    Button(amxofs+60, amyofs+68, "OK");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>amxofs+66 && mx<amxofs+30+66 && my>amyofs+68 && my<amyofs+10+68 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(amxofs+60, amyofs+68, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(amxofs+amxsize-9) && (mx<amxofs+amxsize-2) &&\r
-        my>(amyofs+1) && (my<amyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>amxofs && mx<amxofs+amxsize && my>amyofs && my<(amyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-amxofs;\r
-      myo=my-amyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB)\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-}\r
-\r
-int cnxsize=125, cnysize=50;\r
-int cnxofs=114, cnyofs=70;\r
-\r
-int Confirm(char *message)\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  WaitRelease();\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      cnxofs = (mx-mxo);\r
-      cnyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (cnxofs<16) cnxofs = 16;\r
-      if (cnyofs<16) cnyofs = 16;\r
-      if (cnxofs+cnxsize>335) cnxofs = 336-cnxsize;\r
-      if (cnyofs+cnysize>sy+16) cnyofs = (sy+16)-cnysize;\r
-    }\r
-\r
-    Window(cnxofs, cnyofs, cnxofs+cnxsize, cnyofs+cnysize, "Confirm? (Y/N)");\r
-    GotoXY(cnxofs+125/2-(pixels(message)/2), cnyofs+15);  printstring(message);\r
-\r
-    Button(cnxofs+24, cnyofs+30, "Yes");\r
-    Button(cnxofs+69, cnyofs+30, "No");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>cnxofs+24 && mx<cnxofs+30+24 && my>cnyofs+30 && my<cnyofs+10+30 && !moving)\r
-    {\r
-      // insert code for button "Yes" here\r
-      ButtonPressed(cnxofs+24, cnyofs+30, "Yes");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      return 1;\r
-    }\r
-\r
-    if (mb==1 && mx>cnxofs+69 && mx<cnxofs+30+69 && my>cnyofs+30 && my<cnyofs+10+30 && !moving)\r
-    {\r
-      ButtonPressed(cnxofs+69, cnyofs+30, "No");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      return 0;\r
-    }\r
-\r
-    if (mb==1 && mx>(cnxofs+cnxsize-9) && (mx<cnxofs+cnxsize-2)\r
-        && my>(cnyofs+1) && (my<cnyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>cnxofs && mx<cnxofs+cnxsize && my>cnyofs && my<(cnyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-cnxofs;\r
-      myo=my-cnyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (last_pressed==SCAN_N)\r
-      {\r
-        key[SCAN_N]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (last_pressed==SCAN_Y)\r
-      {\r
-        key[SCAN_Y]=0;\r
-        return 1;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB)\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-  return 0;\r
-}\r
-\r
-int lmxsize=145, lmysize=36;\r
-int lmxofs=80, lmyofs=50;\r
-\r
-void LoadMAPDialog()\r
-{ char lmapname[80];\r
-  char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  memset(lmapname, 0, 80);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lmxofs = (mx-mxo);\r
-      lmyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lmxofs<16) lmxofs = 16;\r
-      if (lmyofs<16) lmyofs = 16;\r
-      if (lmxofs+lmxsize>335) lmxofs = 336-lmxsize;\r
-      if (lmyofs+lmysize>sy+16) lmyofs = (sy+16)-lmysize;\r
-    }\r
-\r
-    Window(lmxofs, lmyofs, lmxofs+lmxsize, lmyofs+lmysize, "Load MAP");\r
-    GotoXY(lmxofs+2, lmyofs+13); printstring("Load MAP:");\r
-    TextField(lmxofs+38, lmyofs+11, 70, lmapname, ctf == 1 ? cb : 0);\r
-    Button(lmxofs+79, lmyofs+22, "OK");\r
-    Button(lmxofs+111, lmyofs+22, "Cancel");\r
-    Button(lmxofs+111, lmyofs+11, "Browse");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lmxofs+38 && mx<lmxofs+70+38 && my>lmyofs+11 && my<lmyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=lmapname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lmxofs+79 && mx<lmxofs+30+79 && my>lmyofs+22 && my<lmyofs+10+22 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      if (modified)\r
-         if (!Confirm("Lose unsaved changes?")) { done=1; continue; }\r
-      for (cursorblink=0; cursorblink<numlayers; cursorblink++)\r
-           vfree(layers[cursorblink]);\r
-      vfree(obstruct);\r
-      vfree(zone);\r
-      vfree(vsp);\r
-\r
-      memcpy(mapname, lmapname, strlen(lmapname)+1);\r
-      LoadMAP(mapname);\r
-      InitTileIDX();\r
-      xwin=0; ywin=0; done=1;\r
-\r
-      ButtonPressed(lmxofs+79, lmyofs+22, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lmxofs+111 && mx<lmxofs+30+111 && my>lmyofs+22 && my<lmyofs+10+22 && !moving)\r
-    {\r
-      // insert code for button "Cancel" here\r
-      ButtonPressed(lmxofs+111, lmyofs+22, "Cancel");\r
-      DrawMouse(); done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lmxofs+111 && mx<lmxofs+30+111 && my>lmyofs+11 && my<lmyofs+10+11 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(lmxofs+111, lmyofs+11, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      Browse(1,"*.map","","","",lmapname);\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lmxofs+lmxsize-9) && (mx<lmxofs+lmxsize-2)\r
-    && my>(lmyofs+1) && (my<lmyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lmxofs && mx<lmxofs+lmxsize && my>lmyofs && my<(lmyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lmxofs;\r
-      myo=my-lmyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB)\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=lmapname; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-}\r
-\r
-int lvxsize=145, lvysize=35;\r
-int lvxofs=80, lvyofs=50;\r
-\r
-void LoadVSPDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char lvspname[80];\r
-\r
-  last_pressed=0;\r
-  memset(lvspname,0,80);\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      lvxofs = (mx-mxo);\r
-      lvyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (lvxofs<16) lvxofs = 16;\r
-      if (lvyofs<16) lvyofs = 16;\r
-      if (lvxofs+lvxsize>335) lvxofs = 336-lvxsize;\r
-      if (lvyofs+lvysize>sy+16) lvyofs = (sy+16)-lvysize;\r
-    }\r
-\r
-    Window(lvxofs, lvyofs, lvxofs+lvxsize, lvyofs+lvysize, "Load VSP");\r
-    GotoXY(lvxofs+2, lvyofs+13); printstring("Load VSP:");\r
-    TextField(lvxofs+38, lvyofs+11, 70, lvspname, ctf == 1 ? cb : 0);\r
-    Button(lvxofs+79, lvyofs+21, "OK");\r
-    Button(lvxofs+111, lvyofs+21, "Cancel");\r
-    Button(lvxofs+111, lvyofs+10, "Browse");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>lvxofs+38 && mx<lvxofs+70+38 && my>lvyofs+11 && my<lvyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=lvspname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lvxofs+79 && mx<lvxofs+30+79 && my>lvyofs+21 && my<lvyofs+10+21 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      vfree(vsp);\r
-      memcpy(vspname, lvspname, strlen(lvspname)+1);\r
-      LoadVSP(vspname);\r
-      InitTileIDX();\r
-      ButtonPressed(lvxofs+79, lvyofs+21, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>lvxofs+111 && mx<lvxofs+30+111 && my>lvyofs+21 && my<lvyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Cancel" here\r
-      ButtonPressed(lvxofs+111, lvyofs+21, "Cancel");\r
-      DrawMouse(); done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>lvxofs+111 && mx<lvxofs+30+111 && my>lvyofs+10 && my<lvyofs+10+10 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(lvxofs+111, lvyofs+10, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.vsp","","","",lvspname);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(lvxofs+lvxsize-9) && (mx<lvxofs+lvxsize-2)\r
-    && my>(lvyofs+1) && (my<lvyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>lvxofs && mx<lvxofs+lvxsize && my>lvyofs && my<(lvyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-lvxofs;\r
-      myo=my-lvyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=lvspname; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=lvspname; break;\r
-          case 1: ctf=0; str=lvspname; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-int mpxsize=175, mpysize=37;\r
-int mpxofs=60, mpyofs=60;\r
-\r
-void MPDialog()\r
-{ char done=0, moving=0, playmod[80];\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  memset(playmod, 0, 80);\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      mpxofs = (mx-mxo);\r
-      mpyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (mpxofs<16) mpxofs = 16;\r
-      if (mpyofs<16) mpyofs = 16;\r
-      if (mpxofs+mpxsize>335) mpxofs = 336-mpxsize;\r
-      if (mpyofs+mpysize>sy+16) mpyofs = (sy+16)-mpysize;\r
-    }\r
-\r
-    Window(mpxofs, mpyofs, mpxofs+mpxsize, mpyofs+mpysize, "MOD Player Controls");\r
-    GotoXY(mpxofs+2, mpyofs+15); printstring("MOD Playing:");\r
-    TextField(mpxofs+49, mpyofs+13, 90, playmod, ctf == 1 ? cb : 0);\r
-    Button(mpxofs+110, mpyofs+24, "Play");\r
-    Button(mpxofs+142, mpyofs+24, "Stop");\r
-    Button(mpxofs+78, mpyofs+24, "OK");\r
-    Button(mpxofs+142, mpyofs+12, "Browse");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>mpxofs+49 && mx<mpxofs+90+49 && my>mpyofs+13 && my<mpyofs+9+13 && !moving)\r
-    {\r
-      ctf=1; str=playmod; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>mpxofs+110 && mx<mpxofs+30+110 && my>mpyofs+24 && my<mpyofs+10+24 && !moving)\r
-    {\r
-      // insert code for button "Play" here\r
-      ButtonPressed(mpxofs+110, mpyofs+24, "Play");\r
-      PlayMusic(playmod);\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>mpxofs+142 && mx<mpxofs+30+142 && my>mpyofs+24 && my<mpyofs+10+24 && !moving)\r
-    {\r
-      // insert code for button "Stop" here\r
-      memset(playingmod, 0, 80);\r
-      memset(playmod, 0, 80);\r
-      StopMusic();\r
-      ButtonPressed(mpxofs+142, mpyofs+24, "Stop");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>mpxofs+78 && mx<mpxofs+30+78 && my>mpyofs+24 && my<mpyofs+10+24 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(mpxofs+78, mpyofs+24, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>mpxofs+142 && mx<mpxofs+30+142 && my>mpyofs+12 && my<mpyofs+10+12 && !moving) || (key[SCAN_ALT] && key[SCAN_B]))\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(mpxofs+142, mpyofs+12, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(4,"*.s3m","*.mod","*.xm",".it",playmod);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(mpxofs+mpxsize-9) && (mx<mpxofs+mpxsize-2)\r
-    && my>(mpyofs+1) && (my<mpyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>mpxofs && mx<mpxofs+mpxsize && my>mpyofs && my<(mpyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-mpxofs;\r
-      myo=my-mpyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=playmod; break;\r
-          case 1: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=playmod; break;\r
-          case 1: ctf=0; str=playmod; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int zexsize=135, zeysize=86;\r
-int zexofs=80, zeyofs=40;\r
-\r
-void ZoneEdDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, i=0;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
-  i=curzone;\r
-  sprintf(nstr1, "%d", zones[i].script);\r
-  sprintf(nstr2, "%d", zones[i].percent);\r
-  sprintf(nstr3, "%d", zones[i].delay);\r
-  sprintf(nstr4, "%d", zones[i].entityscript);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      zexofs = (mx-mxo);\r
-      zeyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (zexofs<16) zexofs = 16;\r
-      if (zeyofs<16) zeyofs = 16;\r
-      if (zexofs+zexsize>335) zexofs = 336-zexsize;\r
-      if (zeyofs+zeysize>sy+16) zeyofs = (sy+16)-zeysize;\r
-    }\r
-\r
-    Window(zexofs, zeyofs, zexofs+zexsize, zeyofs+zeysize, "Zone Editor");\r
-    GotoXY(zexofs+8, zeyofs+12); printstring("Name:");\r
-    TextField(zexofs+30, zeyofs+10, 100, zones[i].name, ctf == 1 ? cb : 0);\r
-    GotoXY(zexofs+5, zeyofs+22); printstring("Script:");\r
-    TextField(zexofs+30, zeyofs+20, 100, nstr1, ctf == 2 ? cb : 0);\r
-    GotoXY(zexofs+2, zeyofs+32); printstring("Chance:");\r
-    TextField(zexofs+30, zeyofs+30, 100, nstr2, ctf == 3 ? cb : 0);\r
-    GotoXY(zexofs+7, zeyofs+42); printstring("Delay:");\r
-    TextField(zexofs+30, zeyofs+40, 100, nstr3, ctf == 4 ? cb : 0);\r
-    GotoXY(zexofs+4, zeyofs+52); printstring("Entity:");\r
-    TextField(zexofs+30, zeyofs+50, 100, nstr4, ctf == 5 ? cb : 0);\r
-    CheckBox(zexofs+20, zeyofs+61, zones[i].aaa);\r
-    GotoXY(zexofs+31, zeyofs+62); printstring("Allow Adjacent Activation");\r
-    Button(zexofs+99, zeyofs+71, "OK");\r
-    GotoXY(zexofs+12, zeyofs+73); printstring("Zone");\r
-    GotoXY(zexofs+30, zeyofs+73);\r
-    sprintf(strbuf,"%d",i); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+10 && my<zeyofs+9+10 && !moving)\r
-    {\r
-      ctf=1; str=zones[i].name; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+20 && my<zeyofs+9+20 && !moving)\r
-    {\r
-      ctf=2; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+30 && my<zeyofs+9+30 && !moving)\r
-    {\r
-      ctf=3; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+40 && my<zeyofs+9+40 && !moving)\r
-    {\r
-      ctf=4; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+30 && mx<zexofs+100+30 && my>zeyofs+50 && my<zeyofs+9+50 && !moving)\r
-    {\r
-      ctf=5; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs+20 && mx<zexofs+8+20 && my>zeyofs+61 && my<zeyofs+7+61 && !moving)\r
-    {\r
-      zones[i].aaa ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>zexofs+99 && mx<zexofs+30+99 && my>zeyofs+71 && my<zeyofs+10+71 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(zexofs+99, zeyofs+71, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(zexofs+zexsize-9) && (mx<zexofs+zexsize-2)\r
-    && my>(zeyofs+1) && (my<zeyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>zexofs && mx<zexofs+zexsize && my>zeyofs && my<(zeyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-zexofs;\r
-      myo=my-zeyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        zones[i].script=atoi(nstr1);\r
-        zones[i].percent=atoi(nstr2);\r
-        zones[i].delay=atoi(nstr3);\r
-        zones[i].entityscript=atoi(nstr4);\r
-        if (i<255) i++; else i=0;\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-        sprintf(nstr1, "%d", zones[i].script);\r
-        sprintf(nstr2, "%d", zones[i].percent);\r
-        sprintf(nstr3, "%d", zones[i].delay);\r
-        sprintf(nstr4, "%d", zones[i].entityscript);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        zones[i].script=atoi(nstr1);\r
-        zones[i].percent=atoi(nstr2);\r
-        zones[i].delay=atoi(nstr3);\r
-        zones[i].entityscript=atoi(nstr4);\r
-        if (i) i--; else i=255;\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-        sprintf(nstr1, "%d", zones[i].script);\r
-        sprintf(nstr2, "%d", zones[i].percent);\r
-        sprintf(nstr3, "%d", zones[i].delay);\r
-        sprintf(nstr4, "%d", zones[i].entityscript);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=zones[i].name; break;\r
-          case 1: ctf=2; str=nstr1; break;\r
-          case 2: ctf=3; str=nstr2; break;\r
-          case 3: ctf=4; str=nstr3; break;\r
-          case 4: ctf=5; str=nstr4; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=nstr4; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=zones[i].name; break;\r
-          case 3: ctf=2; str=nstr1; break;\r
-          case 4: ctf=3; str=nstr2; break;\r
-          case 5: ctf=4; str=nstr3; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-  curzone=i;\r
-  zones[i].script=atoi(nstr1);\r
-  zones[i].percent=atoi(nstr2);\r
-  zones[i].delay=atoi(nstr3);\r
-  zones[i].entityscript=atoi(nstr4);\r
-}\r
-\r
-int exsize=180, eysize=175;\r
-int exofs=70, eyofs=30;\r
-\r
-void EntityEditor(int i)\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80], nstr5[80], nstr6[80], nstr7[80], nstr8[80], nstr9[80], nstr10[80], nstr11[80], nstr12[80], nstr13[80];\r
-\r
-  sprintf(nstr1, "%d", entity[i].x);\r
-  sprintf(nstr2, "%d", entity[i].y);\r
-  sprintf(nstr3, "%d", entity[i].chrindex);\r
-  sprintf(nstr4, "%d", entity[i].speed);\r
-  sprintf(nstr5, "%d", entity[i].actscript);\r
-  sprintf(nstr6, "%d", entity[i].movecode);\r
-  sprintf(nstr7, "%d", entity[i].step);\r
-  sprintf(nstr8, "%d", entity[i].data2);\r
-  sprintf(nstr9, "%d", entity[i].data3);\r
-  sprintf(nstr10, "%d", entity[i].delay);\r
-  sprintf(nstr11, "%d", entity[i].data5);\r
-  sprintf(nstr12, "%d", entity[i].data6);\r
-  sprintf(nstr13, "%d", entity[i].movescript);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      exofs = (mx-mxo);\r
-      eyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (exofs<16) exofs = 16;\r
-      if (eyofs<16) eyofs = 16;\r
-      if (exofs+exsize>335) exofs = 336-exsize;\r
-      if (eyofs+eysize>sy+16) eyofs = (sy+16)-eysize;\r
-    }\r
-\r
-    Window(exofs, eyofs, exofs+exsize, eyofs+eysize, "Entity Editor");\r
-    GotoXY(exofs+7, eyofs+13); printstring("Desc:");\r
-    TextField(exofs+26, eyofs+11, 80, entity[i].desc, ctf == 1 ? cb : 0);\r
-    GotoXY(exofs+19, eyofs+23); printstring("X:");\r
-    TextField(exofs+26, eyofs+21, 80, nstr1, ctf == 2 ? cb : 0);\r
-    GotoXY(exofs+19, eyofs+33); printstring("Y:");\r
-    TextField(exofs+26, eyofs+31, 80, nstr2, ctf == 3 ? cb : 0);\r
-    GotoXY(exofs+11, eyofs+43); printstring("CHR:");\r
-    TextField(exofs+26, eyofs+41, 80, nstr3, ctf == 4 ? cb : 0);\r
-\r
-    // ***\r
-    // entity image goes here (just above chr list button)\r
-    // ***\r
-\r
-    BigButton(exofs+116, eyofs+61, "CHR List");\r
-    BigButton(exofs+115, eyofs+153, "Scripts");\r
-    GotoXY(exofs+2, eyofs+155); printstring("Movescript:");\r
-    HLine(exofs+1, eyofs+73, 178, white);\r
-    GotoXY(exofs+3, eyofs+53); printstring("Speed:");\r
-    TextField(exofs+26, eyofs+51, 80, nstr4, ctf == 5 ? cb : 0);\r
-    TextField(exofs+26, eyofs+61, 80, nstr5, ctf == 6 ? cb : 0);\r
-    GotoXY(exofs+107, eyofs+79); printstring("Is Obstruction");\r
-    CheckBox(exofs+161, eyofs+87, entity[i].obsmode1);\r
-    GotoXY(exofs+102, eyofs+88); printstring("Is Obstructable");\r
-    CheckBox(exofs+161, eyofs+78, entity[i].obsmode2);\r
-    GotoXY(exofs+24, eyofs+79); printstring("Auto Face");\r
-    CheckBox(exofs+61, eyofs+78, entity[i].face);\r
-    GotoXY(exofs+10, eyofs+88); printstring("Activ. Method");\r
-    CheckBox(exofs+61, eyofs+87, entity[i].actm);\r
-    HLine(exofs+1, eyofs+98, 178, white);\r
-    GotoXY(exofs+126, eyofs+166); printstring("Entity");\r
-    GotoXY(exofs+6, eyofs+104); printstring("Move Code:");\r
-    TextField(exofs+47, eyofs+103, 80, nstr6, ctf == 7 ? cb : 0);\r
-    TextField(exofs+30, eyofs+115, 40, nstr7, ctf == 8 ? cb : 0);\r
-    TextField(exofs+30, eyofs+125, 40, nstr8, ctf == 9 ? cb : 0);\r
-    TextField(exofs+30, eyofs+135, 40, nstr9, ctf == 10 ? cb : 0);\r
-    TextField(exofs+113, eyofs+115, 40, nstr10, ctf == 11 ? cb : 0);\r
-    TextField(exofs+113, eyofs+125, 40, nstr11, ctf == 12 ? cb : 0);\r
-    TextField(exofs+113, eyofs+135, 40, nstr12, ctf == 13 ? cb : 0);\r
-    HLine(exofs+1, eyofs+148, 178, white);\r
-    TextField(exofs+46, eyofs+153, 60, nstr13, ctf == 14 ? cb : 0);\r
-    GotoXY(exofs+5, eyofs+63); printstring("Activ:");\r
-    GotoXY(exofs+152, eyofs+166);\r
-    sprintf(strbuf, "%d/%d", i, entities-1); printstring(strbuf);\r
-    entity[i].movecode=atoi(nstr6);\r
-    if (ctf!=4) entity[i].chrindex=atoi(nstr3);\r
-\r
-    switch (entity[i].movecode)\r
-    {\r
-      case 0: GotoXY(exofs+131, eyofs+104); printstring("Stopped"); break;\r
-      case 1: GotoXY(exofs+131, eyofs+104); printstring("Wander");\r
-              GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
-              GotoXY(exofs+90, eyofs+116); printstring("Delay:"); break;\r
-      case 2: GotoXY(exofs+131, eyofs+104); printstring("Wander Zone");\r
-              GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
-              GotoXY(exofs+90, eyofs+116); printstring("Delay:");\r
-              GotoXY(exofs+10, eyofs+126); printstring("Zone:"); break;\r
-      case 3: GotoXY(exofs+131, eyofs+104); printstring("Wander Box");\r
-              GotoXY(exofs+11, eyofs+116); printstring("Step:");\r
-              GotoXY(exofs+90, eyofs+116); printstring("Delay:");\r
-              GotoXY(exofs+21, eyofs+126); printstring("X1:");\r
-              GotoXY(exofs+21, eyofs+136); printstring("Y1:");\r
-              GotoXY(exofs+102, eyofs+126); printstring("X2:");\r
-              GotoXY(exofs+102, eyofs+136); printstring("Y2:"); break;\r
-      case 4: GotoXY(exofs+131, eyofs+104); printstring("Scripted"); break;\r
-    }\r
-    switch (entity[i].actm)\r
-    {\r
-      case 0: GotoXY(exofs+72, eyofs+88); printstring("Actv"); break;\r
-      case 1: GotoXY(exofs+72, eyofs+88); printstring("Adjc"); break;\r
-    }\r
-\r
-    if (chrs[entity[i].chrindex].frame)\r
-      TCopySprite(exofs+143-(chrs[entity[i].chrindex].fx/2),\r
-                  eyofs+31-(chrs[entity[i].chrindex].fy/2),\r
-                  chrs[entity[i].chrindex].fx, chrs[entity[i].chrindex].fy,\r
-                  chrs[entity[i].chrindex].frame);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+11 && my<eyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=entity[i].desc; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+21 && my<eyofs+9+21 && !moving)\r
-    {\r
-      ctf=2; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+31 && my<eyofs+9+31 && !moving)\r
-    {\r
-      ctf=3; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+41 && my<eyofs+9+41 && !moving)\r
-    {\r
-      ctf=4; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+116 && mx<exofs+50+116 && my>eyofs+61 && my<eyofs+10+61 && !moving)\r
-    {\r
-      // insert code for button "CHR List" here\r
-      BigButtonPressed(exofs+116, eyofs+61, "CHR List");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      CHRList();\r
-//      DoCHRdealy();\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+51 && my<eyofs+9+51 && !moving)\r
-    {\r
-      ctf=5; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+26 && mx<exofs+80+26 && my>eyofs+61 && my<eyofs+9+61 && !moving)\r
-    {\r
-      ctf=6; str=nstr5; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+115 && mx<exofs+50+115 && my>eyofs+153 && my<eyofs+10+153 && !moving)\r
-    {\r
-      // insert code for button "Scripts..." here\r
-      BigButtonPressed(exofs+115, eyofs+153, "Scripts");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      MoveScriptDialog();\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+161 && mx<exofs+8+161 && my>eyofs+87 && my<eyofs+7+87 && !moving)\r
-    {\r
-      entity[i].obsmode1 ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+161 && mx<exofs+8+161 && my>eyofs+78 && my<eyofs+7+78 && !moving)\r
-    {\r
-      entity[i].obsmode2 ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+61 && mx<exofs+8+61 && my>eyofs+78 && my<eyofs+7+78 && !moving)\r
-    {\r
-      entity[i].face ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+61 && mx<exofs+8+61 && my>eyofs+87 && my<eyofs+7+87 && !moving)\r
-    {\r
-      entity[i].actm ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+47 && mx<exofs+80+47 && my>eyofs+103 && my<eyofs+9+103 && !moving)\r
-    {\r
-      ctf=7; str=nstr6; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+115 && my<eyofs+9+115 && !moving)\r
-    {\r
-      ctf=8; str=nstr7; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+125 && my<eyofs+9+125 && !moving)\r
-    {\r
-      ctf=9; str=nstr8; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+30 && mx<exofs+40+30 && my>eyofs+135 && my<eyofs+9+135 && !moving)\r
-    {\r
-      ctf=10; str=nstr9; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+115 && my<eyofs+9+115 && !moving)\r
-    {\r
-      ctf=11; str=nstr10; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+125 && my<eyofs+9+125 && !moving)\r
-    {\r
-      ctf=12; str=nstr11; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+113 && mx<exofs+40+113 && my>eyofs+135 && my<eyofs+9+135 && !moving)\r
-    {\r
-      ctf=13; str=nstr12; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs+46 && mx<exofs+60+46 && my>eyofs+153 && my<eyofs+9+153 && !moving)\r
-    {\r
-      ctf=14; str=nstr13; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(exofs+exsize-9) && (mx<exofs+exsize-2)\r
-    && my>(eyofs+1) && (my<eyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>exofs && mx<exofs+exsize && my>eyofs && my<(eyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-exofs;\r
-      myo=my-eyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_UP)\r
-      {\r
-        entity[i].x=atoi(nstr1);\r
-        entity[i].y=atoi(nstr2);\r
-        entity[i].chrindex=atoi(nstr3);\r
-        entity[i].speed=atoi(nstr4);\r
-        entity[i].actscript=atoi(nstr5);\r
-        entity[i].movecode=atoi(nstr6);\r
-        entity[i].step=atoi(nstr7);\r
-        entity[i].data2=atoi(nstr8);\r
-        entity[i].data3=atoi(nstr9);\r
-        entity[i].delay=atoi(nstr10);\r
-        entity[i].data5=atoi(nstr11);\r
-        entity[i].data6=atoi(nstr12);\r
-        entity[i].movescript=atoi(nstr13);\r
-\r
-        if (i<entities-1) i++; else i=0;\r
-        last_pressed=0; key[SCAN_UP]=0;\r
-\r
-        sprintf(nstr1, "%d", entity[i].x);\r
-        sprintf(nstr2, "%d", entity[i].y);\r
-        sprintf(nstr3, "%d", entity[i].chrindex);\r
-        sprintf(nstr4, "%d", entity[i].speed);\r
-        sprintf(nstr5, "%d", entity[i].actscript);\r
-        sprintf(nstr6, "%d", entity[i].movecode);\r
-        sprintf(nstr7, "%d", entity[i].step);\r
-        sprintf(nstr8, "%d", entity[i].data2);\r
-        sprintf(nstr9, "%d", entity[i].data3);\r
-        sprintf(nstr10, "%d", entity[i].delay);\r
-        sprintf(nstr11, "%d", entity[i].data5);\r
-        sprintf(nstr12, "%d", entity[i].data6);\r
-        sprintf(nstr13, "%d", entity[i].movescript);\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_DOWN)\r
-      {\r
-        entity[i].x=atoi(nstr1);\r
-        entity[i].y=atoi(nstr2);\r
-        entity[i].chrindex=atoi(nstr3);\r
-        entity[i].speed=atoi(nstr4);\r
-        entity[i].actscript=atoi(nstr5);\r
-        entity[i].movecode=atoi(nstr6);\r
-        entity[i].step=atoi(nstr7);\r
-        entity[i].data2=atoi(nstr8);\r
-        entity[i].data3=atoi(nstr9);\r
-        entity[i].delay=atoi(nstr10);\r
-        entity[i].data5=atoi(nstr11);\r
-        entity[i].data6=atoi(nstr12);\r
-        entity[i].movescript=atoi(nstr13);\r
-\r
-        if (i) i--; else i=entities-1;\r
-        last_pressed=0; key[SCAN_DOWN]=0;\r
-\r
-        sprintf(nstr1, "%d", entity[i].x);\r
-        sprintf(nstr2, "%d", entity[i].y);\r
-        sprintf(nstr3, "%d", entity[i].chrindex);\r
-        sprintf(nstr4, "%d", entity[i].speed);\r
-        sprintf(nstr5, "%d", entity[i].actscript);\r
-        sprintf(nstr6, "%d", entity[i].movecode);\r
-        sprintf(nstr7, "%d", entity[i].step);\r
-        sprintf(nstr8, "%d", entity[i].data2);\r
-        sprintf(nstr9, "%d", entity[i].data3);\r
-        sprintf(nstr10, "%d", entity[i].delay);\r
-        sprintf(nstr11, "%d", entity[i].data5);\r
-        sprintf(nstr12, "%d", entity[i].data6);\r
-        sprintf(nstr13, "%d", entity[i].movescript);\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=entity[i].desc; break;\r
-          case 1: ctf=2; str=nstr1; break;\r
-          case 2: ctf=3; str=nstr2; break;\r
-          case 3: ctf=4; str=nstr3; break;\r
-          case 4: ctf=5; str=nstr4; break;\r
-          case 5: ctf=6; str=nstr5; break;\r
-          case 6: ctf=7; str=nstr6; break;\r
-          case 7: ctf=8; str=nstr7; break;\r
-          case 8: ctf=9; str=nstr8; break;\r
-          case 9: ctf=10; str=nstr9; break;\r
-          case 10: ctf=11; str=nstr10; break;\r
-          case 11: ctf=12; str=nstr11; break;\r
-          case 12: ctf=13; str=nstr12; break;\r
-          case 13: ctf=14; str=nstr13; break;\r
-          case 14: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=13; str=nstr12; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=entity[i].desc; break;\r
-          case 3: ctf=2; str=nstr1; break;\r
-          case 4: ctf=3; str=nstr2; break;\r
-          case 5: ctf=4; str=nstr3; break;\r
-          case 6: ctf=5; str=nstr4; break;\r
-          case 7: ctf=6; str=nstr5; break;\r
-          case 8: ctf=7; str=nstr6; break;\r
-          case 9: ctf=8; str=nstr7; break;\r
-          case 10: ctf=9; str=nstr8; break;\r
-          case 11: ctf=10; str=nstr9; break;\r
-          case 12: ctf=11; str=nstr10; break;\r
-          case 13: ctf=12; str=nstr11; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  entity[i].x=atoi(nstr1);\r
-  entity[i].y=atoi(nstr2);\r
-  entity[i].chrindex=atoi(nstr3);\r
-  entity[i].speed=atoi(nstr4);\r
-  entity[i].actscript=atoi(nstr5);\r
-  entity[i].movecode=atoi(nstr6);\r
-  entity[i].step=atoi(nstr7);\r
-  entity[i].data2=atoi(nstr8);\r
-  entity[i].data3=atoi(nstr9);\r
-  entity[i].delay=atoi(nstr10);\r
-  entity[i].data5=atoi(nstr11);\r
-  entity[i].data6=atoi(nstr12);\r
-  entity[i].movescript=atoi(nstr13);\r
-}\r
-\r
-int clxsize=170, clysize=78;\r
-int clxofs=105, clyofs=80;\r
-char base=0;\r
-\r
-void CHRList()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      clxofs = (mx-mxo);\r
-      clyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (clxofs<16) clxofs = 16;\r
-      if (clyofs<16) clyofs = 16;\r
-      if (clxofs+clxsize>335) clxofs = 336-clxsize;\r
-      if (clyofs+clysize>sy+16) clyofs = (sy+16)-clysize;\r
-    }\r
-\r
-    Window(clxofs, clyofs, clxofs+clxsize, clyofs+clysize, "Entity CHR Reference Index");\r
-    TextField(clxofs+14, clyofs+11, 120, chrlist[base].t, ctf == 1 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+22, 120, chrlist[base+1].t, ctf == 2 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+33, 120, chrlist[base+2].t, ctf == 3 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+44, 120, chrlist[base+3].t, ctf == 4 ? cb : 0);\r
-    TextField(clxofs+14, clyofs+55, 120, chrlist[base+4].t, ctf == 5 ? cb : 0);\r
-    Button(clxofs+137, clyofs+65, "OK");\r
-    Button(clxofs+137, clyofs+10, "Browse");\r
-    Button(clxofs+137, clyofs+21, "Browse");\r
-    Button(clxofs+137, clyofs+32, "Browse");\r
-    Button(clxofs+137, clyofs+43, "Browse");\r
-    Button(clxofs+137, clyofs+54, "Browse");\r
-    GotoXY(clxofs+3, clyofs+11); sprintf(strbuf,"%d:", base); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+22); sprintf(strbuf,"%d:", base+1); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+33); sprintf(strbuf,"%d:", base+2); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+44); sprintf(strbuf,"%d:", base+3); printstring(strbuf);\r
-    GotoXY(clxofs+3, clyofs+55); sprintf(strbuf,"%d:", base+4); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+11 && my<clyofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=chrlist[base].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+22 && my<clyofs+9+22 && !moving)\r
-    {\r
-      ctf=2; str=chrlist[base+1].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+33 && my<clyofs+9+33 && !moving)\r
-    {\r
-      ctf=3; str=chrlist[base+2].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+44 && my<clyofs+9+44 && !moving)\r
-    {\r
-      ctf=4; str=chrlist[base+3].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+14 && mx<clxofs+120+14 && my>clyofs+55 && my<clyofs+9+55 && !moving)\r
-    {\r
-      ctf=5; str=chrlist[base+4].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+65 && my<clyofs+10+65 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(clxofs+137, clyofs+65, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+10 && my<clyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+10, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+21 && my<clyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+21, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+1].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+32 && my<clyofs+10+32 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+32, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+2].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+43 && my<clyofs+10+43 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+43, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+3].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs+137 && mx<clxofs+30+137 && my>clyofs+54 && my<clyofs+10+54 && !moving)\r
-    {\r
-      // insert code for button "Browse" here\r
-      ButtonPressed(clxofs+137, clyofs+54, "Browse");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      Browse(1,"*.chr","","","",chrlist[base+4].t);\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(clxofs+clxsize-9) && (mx<clxofs+clxsize-2)\r
-    && my>(clyofs+1) && (my<clyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>clxofs && mx<clxofs+clxsize && my>clyofs && my<(clyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-clxofs;\r
-      myo=my-clyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (key[SCAN_UP])\r
-      {\r
-        key[SCAN_UP]=0;\r
-        if (base) base--;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (key[SCAN_DOWN])\r
-      {\r
-        key[SCAN_DOWN]=0;\r
-        if (base<95) base++;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=chrlist[base].t; break;\r
-          case 1: ctf=2; str=chrlist[base+1].t; break;\r
-          case 2: ctf=3; str=chrlist[base+2].t; break;\r
-          case 3: ctf=4; str=chrlist[base+3].t; break;\r
-          case 4: ctf=5; str=chrlist[base+4].t; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=chrlist[base].t; break;\r
-          case 1: ctf=0; str=chrlist[base].t; break;\r
-          case 2: ctf=1; str=chrlist[base+1].t; break;\r
-          case 3: ctf=2; str=chrlist[base+2].t; break;\r
-          case 4: ctf=3; str=chrlist[base+3].t; break;\r
-          case 5: ctf=4; str=chrlist[base+4].t; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int msxsize=181, msysize=77;\r
-int msxofs=70, msyofs=50;\r
-char base1=0;\r
-\r
-void MoveScriptDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      msxofs = (mx-mxo);\r
-      msyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (msxofs<16) msxofs = 16;\r
-      if (msyofs<16) msyofs = 16;\r
-      if (msxofs+msxsize>335) msxofs = 336-msxsize;\r
-      if (msyofs+msysize>sy+16) msyofs = (sy+16)-msysize;\r
-    }\r
-\r
-    Window(msxofs, msyofs, msxofs+msxsize, msyofs+msysize, "Movement Script Editor");\r
-    TextField(msxofs+15, msyofs+12, 160, ms[base1].t, ctf == 1 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+22, 160, ms[base1+1].t, ctf == 2 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+32, 160, ms[base1+2].t, ctf == 3 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+42, 160, ms[base1+3].t, ctf == 4 ? cb : 0);\r
-    TextField(msxofs+15, msyofs+52, 160, ms[base1+4].t, ctf == 5 ? cb : 0);\r
-    Button(msxofs+146, msyofs+63, "OK");\r
-    GotoXY(msxofs+3, msyofs+11); sprintf(strbuf,"%d:", base1); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+22); sprintf(strbuf,"%d:", base1+1); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+33); sprintf(strbuf,"%d:", base1+2); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+44); sprintf(strbuf,"%d:", base1+3); printstring(strbuf);\r
-    GotoXY(msxofs+3, msyofs+55); sprintf(strbuf,"%d:", base1+4); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+12 && my<msyofs+10+12 && !moving)\r
-    {\r
-      ctf=1; str=ms[base1].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+22 && my<msyofs+9+22 && !moving)\r
-    {\r
-      ctf=2; str=ms[base1+1].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+32 && my<msyofs+9+32 && !moving)\r
-    {\r
-      ctf=3; str=ms[base1+2].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+42 && my<msyofs+9+42 && !moving)\r
-    {\r
-      ctf=4; str=ms[base1+3].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs+15 && mx<msxofs+160+15 && my>msyofs+52 && my<msyofs+9+52 && !moving)\r
-    {\r
-      ctf=5; str=ms[base1+4].t; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>msxofs+146 && mx<msxofs+30+146 && my>msyofs+63 && my<msyofs+10+63 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      done=1;\r
-      ButtonPressed(msxofs+146, msyofs+63, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(msxofs+msxsize-9) && (mx<msxofs+msxsize-2)\r
-    && my>(msyofs+1) && (my<msyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>msxofs && mx<msxofs+msxsize && my>msyofs && my<(msyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-msxofs;\r
-      myo=my-msyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-      if (key[SCAN_UP])\r
-      {\r
-        key[SCAN_UP]=0;\r
-        if (base1) base1--;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      if (key[SCAN_DOWN])\r
-      {\r
-        key[SCAN_DOWN]=0;\r
-        if (base1<95) base1++;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=ms[base1].t; break;\r
-          case 1: ctf=2; str=ms[base1+1].t; break;\r
-          case 2: ctf=3; str=ms[base1+2].t; break;\r
-          case 3: ctf=4; str=ms[base1+3].t; break;\r
-          case 4: ctf=5; str=ms[base1+4].t; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=ms[base1+4].t; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=ms[base1].t; break;\r
-          case 3: ctf=2; str=ms[base1+1].t; break;\r
-          case 4: ctf=3; str=ms[base1+2].t; break;\r
-          case 5: ctf=4; str=ms[base1+3].t; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int prxsize=150, prysize=80;\r
-int prxofs=50, pryofs=60;\r
-\r
-void MapPropertiesDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      prxofs = (mx-mxo);\r
-      pryofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (prxofs<16) prxofs = 16;\r
-      if (pryofs<16) pryofs = 16;\r
-      if (prxofs+prxsize>335) prxofs = 336-prxsize;\r
-      if (pryofs+prysize>sy+16) pryofs = (sy+16)-prysize;\r
-    }\r
-\r
-    Window(prxofs, pryofs, prxofs+prxsize, pryofs+prysize, "MAP Properties");\r
-    GotoXY(prxofs+10, pryofs+23); printstring("Music:");\r
-    TextField(prxofs+33, pryofs+11, 112, mapname, ctf == 1 ? cb : 0);\r
-    TextField(prxofs+33, pryofs+21, 112, musname, ctf == 2 ? cb : 0);\r
-    GotoXY(prxofs+18, pryofs+33); printstring("VSP:");\r
-    TextField(prxofs+33, pryofs+31, 112, vspname, ctf == 3 ? cb : 0);\r
-    GotoXY(prxofs+3, pryofs+43); printstring("rstring:");\r
-    TextField(prxofs+33, pryofs+41, 112, rstring, ctf == 4 ? cb : 0);\r
-    BigButton(prxofs+97, pryofs+56, "Resize MAP");\r
-    HLine(prxofs+1, pryofs+53, 148, white);\r
-    GotoXY(prxofs+3, pryofs+58); printstring("xsize:");\r
-    sprintf(strbuf,"%d",layer[0].sizex); printstring(strbuf);\r
-    GotoXY(prxofs+49, pryofs+58); printstring("ysize:");\r
-    sprintf(strbuf,"%d",layer[0].sizey); printstring(strbuf);\r
-    Button(prxofs+117, pryofs+67, "OK");\r
-    GotoXY(prxofs+16, pryofs+13); printstring("MAP:");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+11 && my<pryofs+9+11 && !moving)\r
-    {\r
-      ctf=1; str=mapname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+21 && my<pryofs+9+21 && !moving)\r
-    {\r
-      ctf=2; str=musname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+31 && my<pryofs+9+31 && !moving)\r
-    {\r
-      ctf=3; str=vspname; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+33 && mx<prxofs+112+33 && my>pryofs+41 && my<pryofs+9+41 && !moving)\r
-    {\r
-      ctf=4; str=rstring; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs+97 && mx<prxofs+30+97 && my>pryofs+56 && my<pryofs+10+56 && !moving)\r
-    {\r
-      // insert code for button "Resize MAP" here\r
-      BigButtonPressed(prxofs+97, pryofs+56, "Resize MAP");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease();\r
-      ResizeMapDialog();\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>prxofs+117 && mx<prxofs+30+117 && my>pryofs+67 && my<pryofs+10+67 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(prxofs+117, pryofs+67, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(prxofs+prxsize-9) && (mx<prxofs+prxsize-2)\r
-    && my>(pryofs+1) && (my<pryofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>prxofs && mx<prxofs+prxsize && my>pryofs && my<(pryofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-prxofs;\r
-      myo=my-pryofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=mapname; break;\r
-          case 1: ctf=2; str=musname; break;\r
-          case 2: ctf=3; str=vspname; break;\r
-          case 3: ctf=4; str=rstring; break;\r
-          case 4: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=4; str=rstring; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=mapname; break;\r
-          case 3: ctf=2; str=musname; break;\r
-          case 4: ctf=3; str=vspname; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-\r
-  } while (!done);\r
-\r
-}\r
-\r
-int rsxsize=134, rsysize=44;\r
-int rsxofs=20, rsyofs=20;\r
-\r
-static void PutByte(byte *to, byte v, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return;\r
-\r
-  to[(y*w)+x]=v;\r
-}\r
-\r
-static byte GetByte(byte *from, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return 0;\r
-\r
-  return from[(y*w)+x];\r
-}\r
-\r
-static void PutWord(word *to, word v, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return;\r
-\r
-  to[(y*w)+x]=v;\r
-}\r
-\r
-static word GetWord(word *from, int x, int y, int w, int h)\r
-{\r
-  if (x<0 || x>=w || y<0 || y>=h)\r
-    return 0;\r
-\r
-  return from[(y*w)+x];\r
-}\r
-\r
-void ResizeMapDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink, basex, basey, i; //, xl, yl;\r
-  char ctf=0, cb=0, c, t;\r
-  char *str, *tb; //, *s1, *d1;\r
-  char nstr1[80], nstr2[80];\r
-  word *tbw; //, *s=NULL,*d=NULL;\r
-  //int temp_width;\r
-  int a,b;\r
-\r
-  basex=layer[0].sizex;\r
-  basey=layer[0].sizey;\r
-  sprintf(nstr1, "%d", basex);\r
-  sprintf(nstr2, "%d", basey);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      rsxofs = (mx-mxo);\r
-      rsyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (rsxofs<16) rsxofs = 16;\r
-      if (rsyofs<16) rsyofs = 16;\r
-      if (rsxofs+rsxsize>335) rsxofs = 336-rsxsize;\r
-      if (rsyofs+rsysize>sy+16) rsyofs = (sy+16)-rsysize;\r
-    }\r
-\r
-    Window(rsxofs, rsyofs, rsxofs+rsxsize, rsyofs+rsysize, "Resize MAP");\r
-    GotoXY(rsxofs+4, rsyofs+12); printstring("Base X:");\r
-    GotoXY(rsxofs+4, rsyofs+22); printstring("Base Y:");\r
-    TextField(rsxofs+30, rsyofs+10, 100, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(rsxofs+30, rsyofs+20, 100, nstr2, ctf == 2 ? cb : 0);\r
-    Button(rsxofs+69, rsyofs+31, "Resize");\r
-    Button(rsxofs+101, rsyofs+31, "Cancel");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>rsxofs+30 && mx<rsxofs+100+30 && my>rsyofs+10 && my<rsyofs+9+10 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs+30 && mx<rsxofs+100+30 && my>rsyofs+20 && my<rsyofs+9+20 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs+69 && mx<rsxofs+30+69 && my>rsyofs+31 && my<rsyofs+10+31 && !moving)\r
-    {\r
-      printf("&");\r
-      fflush(stdout);\r
-      // insert code for button "Resize" here\r
-      ButtonPressed(rsxofs+69, rsyofs+31, "Resize");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      basex=atoi(nstr1);\r
-      basey=atoi(nstr2);\r
-\r
-      tb = (char *)valloc(basex*basey,"tilebuf",0);\r
-      for (b=0; b<basey; ++b)\r
-        for (a=0; a<basex; ++a)\r
-          PutByte(tb,\r
-            GetByte(obstruct,a,b,layer[0].sizex,layer[0].sizey),\r
-            a,b,basex,basey);\r
-      vfree(obstruct);\r
-      obstruct=tb;\r
-\r
-      tb = (char *)valloc(basex*basey,"tilebuf",0);\r
-      for (b=0; b<basey; ++b)\r
-        for (a=0; a<basex; ++a)\r
-          PutByte(tb,\r
-            GetByte(zone,a,b,layer[0].sizex,layer[0].sizey),\r
-            a,b,basex,basey);\r
-      vfree(zone);\r
-      zone=tb;\r
-\r
-      for (i=0; i<numlayers; i++)\r
-      {\r
-        tbw=(word *)valloc(basex*basey*2,"tilebuf",0);\r
-        //memset(tbw, 0, basex*basey*2);\r
-        for (b=0; b<basey; ++b)\r
-          for (a=0; a<basex; ++a)\r
-            PutWord(tbw,\r
-              GetWord(layers[i],a,b,layer[i].sizex,layer[i].sizey),\r
-              a,b,basex,basey);\r
-\r
-        vfree(layers[i]);\r
-        layers[i]=tbw;\r
-      }\r
-      for (i=0; i<numlayers; ++i)\r
-      {\r
-        layer[i].sizex=basex;\r
-        layer[i].sizey=basey;\r
-      }\r
-      xwin=0; ywin=0;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs+101 && mx<rsxofs+30+101 && my>rsyofs+31 && my<rsyofs+10+31 && !moving)\r
-    {\r
-      // insert code for button "Cancel" here\r
-      done=1;\r
-      ButtonPressed(rsxofs+101, rsyofs+31, "Cancel");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(rsxofs+rsxsize-9) && (mx<rsxofs+rsxsize-2)\r
-    && my>(rsyofs+1) && (my<rsyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>rsxofs && mx<rsxofs+rsxsize && my>rsyofs && my<(rsyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-rsxofs;\r
-      myo=my-rsyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=2; str=nstr2; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  basex=atoi(nstr1);\r
-  basey=atoi(nstr2);\r
-}\r
-\r
-int cdxsize=150, cdysize=45;\r
-int cdxofs=110, cdyofs=70;\r
-char curtrack=1;\r
-\r
-void CDDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      cdxofs = (mx-mxo);\r
-      cdyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (cdxofs<16) cdxofs = 16;\r
-      if (cdyofs<16) cdyofs = 16;\r
-      if (cdxofs+cdxsize>335) cdxofs = 336-cdxsize;\r
-      if (cdyofs+cdysize>sy+16) cdyofs = (sy+16)-cdysize;\r
-    }\r
-\r
-    Window(cdxofs, cdyofs, cdxofs+cdxsize, cdyofs+cdysize, "CD Player");\r
-    Button(cdxofs+53, cdyofs+10, "Play");\r
-    Button(cdxofs+53, cdyofs+21, "Stop");\r
-    Button(cdxofs+85, cdyofs+10, "Eject");\r
-    Button(cdxofs+85, cdyofs+21, "Close");\r
-    Button(cdxofs+117, cdyofs+10, "Next");\r
-    Button(cdxofs+117, cdyofs+21, "Prev");\r
-    Button(cdxofs+117, cdyofs+32, "OK");\r
-    GotoXY(cdxofs+4, cdyofs+18); printstring("Track ");\r
-    sprintf(strbuf,"%d",curtrack); printstring(strbuf);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>cdxofs+53 && mx<cdxofs+30+53 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Play" here\r
-      ButtonPressed(cdxofs+53, cdyofs+10, "Play");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Play(curtrack);\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+53 && mx<cdxofs+30+53 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Stop" here\r
-      ButtonPressed(cdxofs+53, cdyofs+21, "Stop");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Stop();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+85 && mx<cdxofs+30+85 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Eject" here\r
-      ButtonPressed(cdxofs+85, cdyofs+10, "Eject");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Open_Door();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+85 && mx<cdxofs+30+85 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Close" here\r
-      ButtonPressed(cdxofs+85, cdyofs+21, "Close");\r
-      DrawMouse();\r
-      ShowPage();\r
-      //CD_Close_Door();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+10 && my<cdyofs+10+10 && !moving)\r
-    {\r
-      // insert code for button "Next" here\r
-      ButtonPressed(cdxofs+117, cdyofs+10, "Next");\r
-      curtrack++;\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+21 && my<cdyofs+10+21 && !moving)\r
-    {\r
-      // insert code for button "Prev" here\r
-      ButtonPressed(cdxofs+117, cdyofs+21, "Prev");\r
-      DrawMouse();\r
-      if (curtrack>1) curtrack--;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>cdxofs+117 && mx<cdxofs+30+117 && my>cdyofs+32 && my<cdyofs+10+32 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(cdxofs+117, cdyofs+32, "OK");\r
-      DrawMouse();\r
-      done=1;\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(cdxofs+cdxsize-9) && (mx<cdxofs+cdxsize-2)\r
-    && my>(cdyofs+1) && (my<cdyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>cdxofs && mx<cdxofs+cdxsize && my>cdyofs && my<(cdyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-cdxofs;\r
-      myo=my-cdyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int ntxsize=130, nytsize=51;\r
-int ntxofs=110, ntyofs=70;\r
-\r
-void NoticeDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      ntxofs = (mx-mxo);\r
-      ntyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (ntxofs<16) ntxofs = 16;\r
-      if (ntyofs<16) ntyofs = 16;\r
-      if (ntxofs+ntxsize>335) ntxofs = 336-ntxsize;\r
-      if (ntyofs+nytsize>sy+16) ntyofs = (sy+16)-nytsize;\r
-    }\r
-\r
-    Window(ntxofs, ntyofs, ntxofs+ntxsize, ntyofs+nytsize, "Notice!");\r
-    GotoXY(ntxofs+20, ntyofs+20); printstring("Don't forget to add this");\r
-    GotoXY(ntxofs+14, ntyofs+26); printstring("layer to the Render String!");\r
-    Button(ntxofs+50, ntyofs+36, "OK");\r
-    GotoXY(ntxofs+25, ntyofs+14); printstring("Layer has been added.");\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>ntxofs+50 && mx<ntxofs+30+50 && my>ntyofs+36 && my<ntyofs+10+36 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(ntxofs+50, ntyofs+36, "OK");\r
-      done=1;\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(ntxofs+ntxsize-9) && (mx<ntxofs+ntxsize-2)\r
-    && my>(ntyofs+1) && (my<ntyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>ntxofs && mx<ntxofs+ntxsize && my>ntyofs && my<(ntyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-ntxofs;\r
-      myo=my-ntyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r
-\r
-int oxsize=150, oysize=98;\r
-int oxofs=120, oyofs=70;\r
-extern char vcedprog[80];\r
-\r
-void OptionsDialog()\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-  char nstr1[80], nstr2[80], nstr3[80], nstr4[80];\r
-\r
-  sprintf(nstr1, "%d", winbg);\r
-  sprintf(nstr2, "%d", titlebg);\r
-  sprintf(nstr3, "%d", brightw);\r
-  sprintf(nstr4, "%d", darkw);\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      oxofs = (mx-mxo);\r
-      oyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (oxofs<16) oxofs = 16;\r
-      if (oyofs<16) oyofs = 16;\r
-      if (oxofs+oxsize>335) oxofs = 336-oxsize;\r
-      if (oyofs+oysize>sy+16) oyofs = (sy+16)-oysize;\r
-    }\r
-\r
-    Window(oxofs, oyofs, oxofs+oxsize, oyofs+oysize, "MapEd Options");\r
-    GotoXY(oxofs+16, oyofs+12); printstring("Smooth Scroll");\r
-    CheckBox(oxofs+5, oyofs+11, scrollmode);\r
-    GotoXY(oxofs+16, oyofs+20); printstring("Tile Highlight");\r
-    CheckBox(oxofs+5, oyofs+19, mh);\r
-    GotoXY(oxofs+38, oyofs+31); printstring("Window Background");\r
-    TextField(oxofs+5, oyofs+29, 30, nstr1, ctf == 1 ? cb : 0);\r
-    TextField(oxofs+5, oyofs+39, 30, nstr2, ctf == 2 ? cb : 0);\r
-    GotoXY(oxofs+38, oyofs+41); printstring("Titlebar Background");\r
-    CheckBox(oxofs+74, oyofs+11, vm);\r
-    GotoXY(oxofs+84, oyofs+12); printstring("320x240 driver");\r
-    CheckBox(oxofs+74, oyofs+19, mouse_scroll);\r
-    GotoXY(oxofs+84, oyofs+20); printstring("Mouse Scrolling");\r
-    TextField(oxofs+5, oyofs+49, 30, nstr3, ctf == 3 ? cb : 0);\r
-    TextField(oxofs+5, oyofs+59, 30, nstr4, ctf == 4 ? cb : 0);\r
-    GotoXY(oxofs+38, oyofs+51); printstring("White");\r
-    GotoXY(oxofs+38, oyofs+61); printstring("Shadow");\r
-    Button(oxofs+60, oyofs+85, "OK");\r
-    HLine(oxofs+1, oyofs+71, 148, white);\r
-    GotoXY(oxofs+3, oyofs+76); printstring("Editor:");\r
-    TextField(oxofs+28, oyofs+74, 118, vcedprog, ctf == 5 ? cb : 0);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+8+5 && my>oyofs+11 && my<oyofs+7+11 && !moving)\r
-    {\r
-      xwin=xwin>>4; xwin=xwin<<4;\r
-      ywin=ywin>>4; ywin=ywin<<4;\r
-      scrollmode ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+8+5 && my>oyofs+19 && my<oyofs+7+19 && !moving)\r
-    {\r
-      mh ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+29 && my<oyofs+9+29 && !moving)\r
-    {\r
-      ctf=1; str=nstr1; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+39 && my<oyofs+9+39 && !moving)\r
-    {\r
-      ctf=2; str=nstr2; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+74 && mx<oxofs+8+74 && my>oyofs+11 && my<oyofs+7+11 && !moving)\r
-    {\r
-      vm ^= 1; WaitRelease();\r
-      ShutdownVideo();\r
-      InitVideo(vm);\r
-      set_intensity(63);\r
-      InitMouse();\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+74 && mx<oxofs+8+74 && my>oyofs+19 && my<oyofs+7+19 && !moving)\r
-    {\r
-      mouse_scroll ^= 1; WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+49 && my<oyofs+9+49 && !moving)\r
-    {\r
-      ctf=3; str=nstr3; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+5 && mx<oxofs+30+5 && my>oyofs+59 && my<oyofs+9+59 && !moving)\r
-    {\r
-      ctf=4; str=nstr4; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if ((mb==1 && mx>oxofs+60 && mx<oxofs+30+60 && my>oyofs+85 && my<oyofs+10+85 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(oxofs+60, oyofs+85, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs+28 && mx<oxofs+118+28 && my>oyofs+74 && my<oyofs+9+74 && !moving)\r
-    {\r
-      ctf=5; str=vcedprog; cb=1;\r
-      cursorblink=systemtime+40; continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(oxofs+oxsize-9) && (mx<oxofs+oxsize-2)\r
-    && my>(oyofs+1) && (my<oyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>oxofs && mx<oxofs+oxsize && my>oyofs && my<(oyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-oxofs;\r
-      myo=my-oyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && !key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=1; str=nstr1; break;\r
-          case 1: ctf=2; str=nstr2; break;\r
-          case 2: ctf=3; str=nstr3; break;\r
-          case 3: ctf=4; str=nstr4; break;\r
-          case 4: ctf=5; str=vcedprog; break;\r
-          case 5: ctf=0; str=0; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (last_pressed==SCAN_TAB && key[SCAN_LSHIFT])\r
-      {\r
-        switch (ctf)\r
-        {\r
-          case 0: ctf=5; str=vcedprog; break;\r
-          case 1: ctf=0; str=0; break;\r
-          case 2: ctf=1; str=nstr1; break;\r
-          case 3: ctf=2; str=nstr2; break;\r
-          case 4: ctf=3; str=nstr3; break;\r
-          case 5: ctf=4; str=nstr4; break;\r
-        }\r
-        key[SCAN_TAB]=0;\r
-        last_pressed=0;\r
-        cb=1; cursorblink=systemtime+40;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-  winbg=atoi(nstr1);\r
-  titlebg=atoi(nstr2);\r
-  brightw=atoi(nstr3);\r
-  darkw=atoi(nstr4);\r
-}\r
-\r
-int vcexsize=200, vceysize=60;\r
-int vcexofs=76, vceyofs=70;\r
-\r
-void VCNotify(char *msg)\r
-{ char done=0, moving=0;\r
-  int mxo, myo, cursorblink;\r
-  char ctf=0, cb=0, c, t, *str;\r
-\r
-  last_pressed=0;\r
-  do\r
-  {\r
-    RenderMap();\r
-    RenderGUI();\r
-\r
-    if (ctf && systemtime >= cursorblink)\r
-    {\r
-      cb ^= 1;\r
-      cursorblink = systemtime+40;\r
-    }\r
-    if (moving)\r
-    {\r
-      vcexofs = (mx-mxo);\r
-      vceyofs = (my-myo);\r
-      if (!mb) moving=0;\r
-      if (vcexofs<16) vcexofs = 16;\r
-      if (vceyofs<16) vceyofs = 16;\r
-      if (vcexofs+vcexsize>335) vcexofs = 336-vcexsize;\r
-      if (vceyofs+vceysize>sy+16) vceyofs = (sy+16)-vceysize;\r
-    }\r
-\r
-    Window(vcexofs, vceyofs, vcexofs+vcexsize, vceyofs+vceysize, "VergeC Error Report");\r
-    Button(vcexofs+85, vceyofs+41, "OK");\r
-    GotoXY(vcexofs+29, vceyofs+17); printstring("VCC has reported the following error:");\r
-    GotoXY(vcexofs+100-(pixels(msg)/2), vceyofs+23); printstring(msg);\r
-\r
-    DrawMouse();\r
-    ShowPage();\r
-    CheckTimerStuff();\r
-\r
-    // input phase\r
-    if ((mb==1 && mx>vcexofs+85 && mx<vcexofs+30+85 && my>vceyofs+41 && my<vceyofs+10+41 && !moving) || (key[SCAN_ENTER] && !ctf))\r
-    {\r
-      // insert code for button "OK" here\r
-      ButtonPressed(vcexofs+85, vceyofs+41, "OK");\r
-      DrawMouse();\r
-      while (mb)\r
-      {\r
-        ReadMouse();\r
-        ShowPage();\r
-        ReadMouse();\r
-      }\r
-      done=1;\r
-      WaitRelease(); continue;\r
-    }\r
-\r
-    if (mb==1 && mx>(vcexofs+vcexsize-9) && (mx<vcexofs+vcexsize-2)\r
-    && my>(vceyofs+1) && (my<vceyofs+8) && !moving)\r
-    {\r
-      done=1;\r
-      WaitRelease();\r
-      break;\r
-    }\r
-\r
-    if (mb==1 && mx>vcexofs && mx<vcexofs+vcexsize && my>vceyofs && my<(vceyofs+9) && !moving)\r
-    {\r
-      moving=1;\r
-      mxo=mx-vcexofs;\r
-      myo=my-vceyofs;\r
-      continue;\r
-    }\r
-\r
-    if (mb==1 && !moving)\r
-    {\r
-      ctf=0;\r
-      cb=0;\r
-      str=0;\r
-      WaitRelease();\r
-    }\r
-\r
-    if (last_pressed)\r
-    {\r
-      if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed];\r
-      else c=key_ascii_tbl[last_pressed];\r
-\r
-      if (last_pressed==SCAN_ESC)\r
-      {\r
-        key[SCAN_ESC]=0;\r
-        done=1;\r
-        break;\r
-      }\r
-\r
-      if (last_pressed==SCAN_ENTER)\r
-      {\r
-        key[SCAN_ENTER]=0;\r
-        ctf=0;\r
-        str=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      if (!ctf)\r
-        continue;\r
-\r
-      if (last_pressed==SCAN_BACKSP && strlen(str))\r
-      {\r
-        str[strlen(str)-1]=0;\r
-        key[SCAN_BACKSP]=0;\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-      else if (last_pressed==SCAN_BACKSP)\r
-      {\r
-        last_pressed=0;\r
-        continue;\r
-      }\r
-\r
-      t=strlen(str);\r
-      str[t]=c;\r
-      str[t+1]=0;\r
-      last_pressed=0;\r
-    }\r
-  } while (!done);\r
-}\r