rnd-20100316-1-src
authorHolger Schemel <info@artsoft.org>
Tue, 16 Mar 2010 00:23:54 +0000 (01:23 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:58:50 +0000 (10:58 +0200)
62 files changed:
src/conftime.h
src/game_sp/ASM.h
src/game_sp/BugsTerminals.h
src/game_sp/DDScrollBuffer.c
src/game_sp/DDScrollBuffer.h
src/game_sp/DDSpriteBuffer.h
src/game_sp/Demo.c
src/game_sp/Demo.h
src/game_sp/Display.c
src/game_sp/Display.h
src/game_sp/DoGameStuff.h
src/game_sp/Electrons.c
src/game_sp/Electrons.h
src/game_sp/Explosions.c
src/game_sp/Explosions.h
src/game_sp/FakeDeclares.c
src/game_sp/FakeDeclares.h
src/game_sp/Globals.c
src/game_sp/Globals.h
src/game_sp/Infotrons.c
src/game_sp/Infotrons.h
src/game_sp/InitGameConditions.c
src/game_sp/InitGameConditions.h
src/game_sp/Input.c
src/game_sp/Input.h
src/game_sp/MainForm.c
src/game_sp/MainForm.h
src/game_sp/MainGameLoop.c
src/game_sp/MainGameLoop.h
src/game_sp/Makefile
src/game_sp/Murphy.c
src/game_sp/Murphy.h
src/game_sp/OrangeDisk.c
src/game_sp/OrangeDisk.h
src/game_sp/PathTools.c [deleted file]
src/game_sp/PathTools.h [deleted file]
src/game_sp/SettingsObject.c [deleted file]
src/game_sp/SettingsObject.h [deleted file]
src/game_sp/SnikSnaks.c
src/game_sp/SnikSnaks.h
src/game_sp/Sound.c
src/game_sp/Sound.h
src/game_sp/TickCountObject.c [deleted file]
src/game_sp/TickCountObject.h [deleted file]
src/game_sp/TopMost.c [deleted file]
src/game_sp/TopMost.h [deleted file]
src/game_sp/Zonk.c
src/game_sp/Zonk.h
src/game_sp/file.c
src/game_sp/global.h
src/game_sp/init.c
src/game_sp/main.c
src/game_sp/modAnimations.c [deleted file]
src/game_sp/modAnimations.h [deleted file]
src/game_sp/modMPX.c [deleted file]
src/game_sp/modMPX.h [deleted file]
src/game_sp/vb_defs.h [deleted file]
src/game_sp/vb_lib.c
src/game_sp/vb_lib.h
src/game_sp/vb_types.h [deleted file]
src/game_sp/vb_vars.c [deleted file]
src/game_sp/vb_vars.h [deleted file]

index 9fca65af4234c8b5ddda04145b00d3354d14b752..57960484d0ce0385fb4247b9b699514b19560da9 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2010-03-15 19:50"
+#define COMPILE_DATE_STRING "2010-03-16 01:16"
index ae23113d7898eacdef2be4b7e008db1e3bda6b53..a149c808eef40592e1d22611a72b10716d0cef08 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef ASM_H
 #define ASM_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index 1bd008867e36a15a5da7845e7e323e114adba69a..2d3d98a28d66991a7f8a7a0c84ad0500105bb621 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef BUGSTERMINALS_H
 #define BUGSTERMINALS_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index e74e4a7e1716136c1bca704a621530f5579ff28f..816127b4ed9952ddd08104a90bd0c1de08771b1b 100644 (file)
@@ -8,7 +8,6 @@
 
 
 long mWidth, mHeight;
-long mhWnd;
 long mScrollX, mScrollY;
 long mScrollX_last, mScrollY_last;
 long mDestXOff, mDestYOff;
@@ -198,7 +197,7 @@ void UpdatePlayfield(boolean force_redraw)
        printf("::: REDRAW (%d, %d): %d, %d\n", x, y, graphic, sync_frame);
 #endif
 
-       StretchedSprites.BltImg(sx, sy, graphic, sync_frame);
+       DDSpriteBuffer_BltImg(sx, sy, graphic, sync_frame);
 
 #if 1
        num_redrawn++;
@@ -222,15 +221,15 @@ void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
 
   int xsize = SXSIZE;
   int ysize = SYSIZE;
-  int full_xsize = (FieldWidth  - (menBorder.Checked ? 0 : 1)) * TILEX;
-  int full_ysize = (FieldHeight - (menBorder.Checked ? 0 : 1)) * TILEY;
+  int full_xsize = (FieldWidth  - (menBorder ? 0 : 1)) * TILEX;
+  int full_ysize = (FieldHeight - (menBorder ? 0 : 1)) * TILEY;
 
   sxsize = (full_xsize < xsize ? full_xsize : xsize);
   sysize = (full_ysize < ysize ? full_ysize : ysize);
   sx = SX + (full_xsize < xsize ? (xsize - full_xsize) / 2 : 0);
   sy = SY + (full_ysize < ysize ? (ysize - full_ysize) / 2 : 0);
 
-  if (!menBorder.Checked)
+  if (!menBorder)
   {
     px += TILEX / 2;
     py += TILEY / 2;
@@ -365,24 +364,17 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS)
 
   for (T = (double)tStep; T <= (double)1; T += tStep)
   {
-    if (UserDragFlag)
-      goto SoftScrollEH;
-
     mScrollX = oldX + T * dx;
     mScrollY = oldY + T * dY;
     ScrollX = mScrollX;
     ScrollY = mScrollY;
   }
 
-  if (UserDragFlag)
-    goto SoftScrollEH;
-
   mScrollX = X;
   mScrollY = Y;
   ScrollX = mScrollX;
   ScrollY = mScrollY;
 
-SoftScrollEH:
   AlreadyRunning = False;
 
   ScrollPlayfieldIfNeeded();
index 3224d72a0a3892b542aa92b52a5f6baedc81f2f6..b3ac17e52a2955f32e772e739c7ad740588d4896 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef DDSCROLLBUFFER_H
 #define DDSCROLLBUFFER_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index 5840a17592bd0b0e120aa7c3f25d8980a010d832..c9e8747ac7db663bee48d83b09fd447f9383870f 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef DDSPRITEBUFFER_H
 #define DDSPRITEBUFFER_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index 7189f5c0f0f82eed7e07686542c15d673a8aa50f..c9ed391740cad3c4f937c69af0ae7d11b92f3ae9 100644 (file)
@@ -5,92 +5,3 @@
 #include "Demo.h"
 
 
-int RecDemoRandomSeed;
-byte FirstDemoByte;
-char *MySignature;
-
-void subGetNextDemoKey()
-{
-  int ax;
-
-  if (0 < DemoKeyRepeatCounter)
-  {
-    DemoKeyRepeatCounter = DemoKeyRepeatCounter - 1;
-  }
-  else
-  {
-    DemoOffset = DemoOffset + 1;
-    if (DemoOffset <= FileMax)
-    {
-      ax = PlayField8[DemoOffset];
-      if (ax == 0xFF)
-      {
-        demo_stopped = 1;
-        ExitToMenuFlag = 1;
-      }
-      else
-      {
-        DemoKeyCode = ax & 0xF;
-        DemoKeyRepeatCounter = (ax & 0xF0) / 0x10;
-      }
-
-    }
-    else
-    {
-      ExitToMenuFlag = 1;
-    }
-  }
-
-#if 0
-  printf("::: %04d [%03ld, %02d] ----------> %s [%d] [%d, %d] [%d, %d]\n",
-        TimerVar,
-        DemoOffset - DemoPointer, DemoKeyRepeatCounter,
-        (DemoKeyCode == keyNone        ? "(none)"              :
-         DemoKeyCode == keyLeft        ? "left"                :
-         DemoKeyCode == keyRight       ? "right"               :
-         DemoKeyCode == keyUp          ? "up"                  :
-         DemoKeyCode == keyDown        ? "down"                :
-         DemoKeyCode == keySpace       ? "space"               :
-         DemoKeyCode == keySpaceLeft   ? "space + left"        :
-         DemoKeyCode == keySpaceRight  ? "space + right"       :
-         DemoKeyCode == keySpaceUp     ? "space + up"          :
-         DemoKeyCode == keySpaceDown   ? "space + down"        : "(unknown)"),
-        DemoKeyCode,
-        MurphyScreenXPos, MurphyScreenYPos,
-        MurphyPosIndex % 60, MurphyPosIndex / 60);
-#endif
-
-}
-
-currency GetTotalFramesOfDemo()
-{
-  currency GetTotalFramesOfDemo;
-
-  long i;
-  currency nFrames;
-  byte db;
-
-  GetTotalFramesOfDemo = 0;
-  if (! DemoAvailable)
-    return GetTotalFramesOfDemo;
-
-  nFrames = 1;
-  i = DemoPointer + 1;
-
-  // --- On Error GoTo GetTotalFramesOfDemoEH
-  db = PlayField8[i];
-  while (db != 0xFF)
-  {
-    nFrames = nFrames + (db & 0xF0) / 0x10 + 1;
-    i = i + 1;
-    db = PlayField8[i];
-  }
-
-  GetTotalFramesOfDemo = nFrames;
-  return GetTotalFramesOfDemo;
-
-  GetTotalFramesOfDemo = 0;
-  DemoAvailable = False;
-
-  return GetTotalFramesOfDemo;
-}
index a9daa14f925fb30c9a4484ef0528692dbb4f0f78..339a17ddf00c297afd9bfdb57b8585eb86db7ac6 100644 (file)
@@ -5,18 +5,8 @@
 #ifndef DEMO_H
 #define DEMO_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
-extern currency GetTotalFramesOfDemo();
-extern void subGetNextDemoKey();
 
-extern byte FirstDemoByte;
-extern char *MySignature;
-extern int RecDemoRandomSeed;
 
 #endif /* DEMO_H */
index 32923d6340f998538ee3aa0b184d3dce12418c30..156b828de050fca0c9a8b23ff7d670160ce09a09 100644 (file)
@@ -25,67 +25,45 @@ void subDisplayLevel()
 
 void ScrollTo(int X, int Y)
 {
-  long oldX, oldY;
-
-#if 0
-  printf("::: Display.c: ScrollTo(): %d, %d\n", X, Y);
-#endif
-
   if (NoDisplayFlag)
     return;
 
-  oldX = ScrollX;
-  oldY = ScrollY;
   X = ScrollDelta * (X / ScrollDelta);
   X = Max(X, ScrollMinX);
   X = Min(X, ScrollMaxX);
   Y = ScrollDelta * (Y / ScrollDelta);
   Y = Max(Y, ScrollMinY);
   Y = Min(Y, ScrollMaxY);
-  //  ScrollX = X
-  //  ScrollY = Y
 
-  Stage.ScrollTo(X, Y);
+  DDScrollBuffer_ScrollTo(X, Y);
 }
 
 void ScrollTowards(int X, int Y)
 {
-  long oldX, oldY;
-
   if (NoDisplayFlag)
     return;
 
-  oldX = ScrollX;
-  oldY = ScrollY;
   X = ScrollDelta * (X / ScrollDelta);
   X = Max(X, ScrollMinX);
   X = Min(X, ScrollMaxX);
   Y = ScrollDelta * (Y / ScrollDelta);
   Y = Max(Y, ScrollMinY);
   Y = Min(Y, ScrollMaxY);
-  //  ScrollX = X
-  //  ScrollY = Y
 
-  Stage.ScrollTowards(X, Y, 2 * Stretch * ZoomFactor);
+  DDScrollBuffer_ScrollTowards(X, Y, 2 * Stretch * ZoomFactor);
 }
 
 void SoftScrollTo(int X, int Y, long TimeMS, int FPS)
 {
-  long oldX, oldY;
-
   if (NoDisplayFlag)
     return;
 
-  oldX = ScrollX;
-  oldY = ScrollY;
   X = ScrollDelta * (X / ScrollDelta);
   X = Max(X, ScrollMinX);
   X = Min(X, ScrollMaxX);
   Y = ScrollDelta * (Y / ScrollDelta);
   Y = Max(Y, ScrollMinY);
   Y = Min(Y, ScrollMaxY);
-  //  ScrollX = X
-  //  ScrollY = Y
 
-  Stage.SoftScrollTo(X, Y, TimeMS, FPS);
+  DDScrollBuffer_SoftScrollTo(X, Y, TimeMS, FPS);
 }
index d80a07d9f5e01f35cf01c184d0d7f0f0c74714f3..a6bd3683e4afc975b5392746be9727d669ea8211 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef DISPLAY_H
 #define DISPLAY_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index ac822b1a1d148b38172eb74d694e3225438c4256..9051e4d1d2758df8def83a00575696900748d06e 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef DOGAMESTUFF_H
 #define DOGAMESTUFF_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index e618994aad2f8ac5eafc037e1f96de9aaf33d9bc..496e35079c7d3a59abfafae5d36fd88bf8c104bd 100644 (file)
@@ -548,7 +548,7 @@ void subDrawElectronTurnLeft(int si, int bx)
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si);
   Y = GetStretchY(si);
-  StretchedSprites.BltImg(X, Y, aniElectron, bx);
+  DDSpriteBuffer_BltImg(X, Y, aniElectron, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 }
 
@@ -559,7 +559,7 @@ void subDrawElectronTurnRight(int si, int bx)
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si);
   Y = GetStretchY(si);
-  StretchedSprites.BltImg(X, Y, aniElectron, 0x10 - bx);
+  DDSpriteBuffer_BltImg(X, Y, aniElectron, 0x10 - bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 }
 
@@ -572,8 +572,8 @@ void subDrawElectronFromBelow(int si, int bx)
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si);
   Y = GetStretchY(si + FieldWidth);
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X, Y - bx * TwoPixels, aniElectron, bx);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X, Y - bx * TwoPixels, aniElectron, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 }
 
@@ -586,8 +586,8 @@ void subDrawElectronFromRight(int si, int bx)
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si + 1);
   Y = GetStretchY(si);
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X - bx * TwoPixels, Y, aniElectron, bx);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X - bx * TwoPixels, Y, aniElectron, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 }
 
@@ -600,8 +600,8 @@ void subDrawElectronFromAbove(int si, int bx)
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si);
   Y = GetStretchY(si - FieldWidth);
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X, Y + bx * TwoPixels, aniElectron, bx);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X, Y + bx * TwoPixels, aniElectron, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 }
 
@@ -614,7 +614,7 @@ void subDrawElectronFromLeft(int si, int bx)
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si - 1);
   Y = GetStretchY(si);
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X + bx * TwoPixels, Y, aniElectron, bx);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X + bx * TwoPixels, Y, aniElectron, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 }
index 7dec24297a09df1f7ad637ab489e83bab8a620d4..2e12dd37830b5a762c57602fcb773f87463250b4 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef ELECTRONS_H
 #define ELECTRONS_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index ea9368c56b2830ca2d1da260756dd0b8f9584921..ccd75b8f48b99180c1853455f2d8e1382cbe2246 100644 (file)
@@ -301,7 +301,7 @@ void subRedDiskReleaseExplosion()
   // !!! causes flicker -- fix in Murphy.c !!!
   GfxGraphic[GetX(si)][GetY(si)] = aniRedDisk;
 #else
-  StretchedSprites.BltImg(X, Y, aniRedDisk, 0);
+  DDSpriteBuffer_BltImg(X, Y, aniRedDisk, 0);
 #endif
   // +++++++++++++++++++++++++++++++++++++++++
 
index 8cd98ba86517d6d37e70b8e7175a18500ef5482c..b62ea8b3d54a9bcd23d7123093a312dac49f1eff 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef EXPLOSIONS_H
 #define EXPLOSIONS_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index b9e584b42aae27f0a7b295e4dcc982f2d8c7d0db..abb63c46916984cdf7748f3491c9f48105768748 100644 (file)
@@ -13,9 +13,7 @@ long YawnSleepCounter;
 int MurphyVarFaceLeft;
 int ScratchGravity, GravityFlag;
 int RedDiskReleaseFlag, MovingPictureSequencePhase;
-int data_h_DemoDone, LevelStatus;
 
-int data_h_165A;
 int YellowDisksExploded;
 int AllowRedDiskCheat, AllowEatRightRedDiskBug;
 
@@ -24,30 +22,6 @@ int InfotronsNeeded, TotalInfotronsNeeded;
 int RedDiskCount;
 int SnikSnaksElectronsFrozen;
 
-boolean EditFlag;
-int EditMode;
-int edSelect = 2;
-int edMove = 3;
-
-int DemoFlag, data_scr_demo, demo_stopped;
-int WasDemoFlag;
-int EP_GameDemoVar0DAA;
-int RecordDemoFlag; // , DemoRecordingFlag%
-int DemoKeyCode, DemoPointer;
-long DemoOffset;
-int DemoKeyRepeatCounter;
+int DemoKeyCode;
 
 int RedDiskReleasePhase;
-int UpdatedFlag;
-
-int DebugVersionFlag, D_ModeFlag;
-int keyEnter;
-
-int UpdateTimeFlag;
-
-boolean ModifiedFlag;
-
-
-void Let_ModifiedFlag(boolean NewVal)
-{
-}
index 0ccf44d9e1147740ef0fc21efe8274f6228240cb..a3c22a5c7821ad574610b031f58ba21dbd88e742 100644 (file)
@@ -5,28 +5,12 @@
 #ifndef FAKEDECLARES_H
 #define FAKEDECLARES_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
-#define edDraw                         (1)
-
-extern boolean ModifiedFlag;
-extern void Let_ModifiedFlag(boolean NewVal);
-
-extern boolean EditFlag;
 extern int AllowRedDiskCheat, AllowEatRightRedDiskBug;
 extern int Data_SubRest, Data_SubRstFlg;
-extern int DebugVersionFlag, D_ModeFlag;
-extern int DemoFlag, data_scr_demo, demo_stopped;
-extern int DemoKeyCode, DemoPointer;
-extern int DemoKeyRepeatCounter;
-extern int EP_GameDemoVar0DAA;
-extern int EditMode;
+extern int DemoKeyCode;
 extern int GameBusyFlag;
 extern int InfotronsNeeded, TotalInfotronsNeeded;
 extern int KillMurphyFlag, MurphyMoveCounter;
@@ -34,21 +18,12 @@ extern int MurphyExplodePos, SplitMoveFlag, RedDiskReleaseMurphyPos;
 extern int MurphyPosIndex, MurphyXPos, MurphyYPos;
 extern int MurphyScreenXPos, MurphyScreenYPos;
 extern int MurphyVarFaceLeft;
-extern int RecordDemoFlag;
 extern int RedDiskCount;
 extern int RedDiskReleaseFlag, MovingPictureSequencePhase;
 extern int RedDiskReleasePhase;
 extern int ScratchGravity, GravityFlag;
 extern int SnikSnaksElectronsFrozen;
-extern int UpdateTimeFlag;
-extern int UpdatedFlag;
-extern int WasDemoFlag;
 extern int YellowDisksExploded;
-extern int data_h_DemoDone, LevelStatus;
-extern int edMove;
-extern int edSelect;
-extern int keyEnter;
-extern long DemoOffset;
 extern long YawnSleepCounter;
 
 #endif /* FAKEDECLARES_H */
index cca754aa1ac06fba69bac790434da1c0caabef0b..82d3a0146a450d59a72e3da347fc1125b0a414ec 100644 (file)
@@ -4,57 +4,14 @@
 
 #include "Globals.h"
 
-static void ReadDemo();
-void ReadLevel();
 
-// static char *VB_Name = "modGlobals";
-
-// --- Option Explicit
-// --- Option Compare Text
-// --- Option Base 0
-
-// --- const long StretchWidth = 16;
-// --- const long StretchWidth2 = StretchWidth / 2;
-// --- const long BaseWidth = 16;
-// --- const int TwoPixels = 2;
-
-boolean Original;
-boolean Cracked;
-boolean Level_Arg;
-boolean EGA_Arg;
-boolean Record_Fix;
-boolean SpeedKeys;
-boolean Level_Fix;
-boolean Dead_Code;
-boolean Redundant;
-boolean Alignments;
-boolean Ctrl_Alt_Fix;
-boolean Protection;
-boolean EP_ENHANCE;
-boolean EP_DEMO;
-boolean EP_DEBUG;
-boolean EXTRASPEED;
-boolean TIMINGFIX;
-boolean SafeRecord;
-boolean Norm_Time;
-boolean EP_OLD8;
-boolean SAVEGAME;
-boolean HP_DEMO;
-boolean ScreenFix;
-boolean DemoRecordFix;
-boolean DebugSwitch;
-boolean Ver62;
-boolean Ver62test;
-boolean Ver63;
-boolean Ver64;
+void ReadLevel();
 
 int LevelNumber;
-char *CurPath, *OrigPath, *TmpPath;
 boolean LevelLoaded;
-long SignatureDelay;
-boolean bSignatureAvailable;
 
-boolean bCapturePane;
+boolean DemoAvailable;
+boolean menBorder;
 
 int FieldWidth; // = 60
 int FieldHeight; // = 24
@@ -73,16 +30,16 @@ short RandomSeed;
 #else
 int RandomSeed;
 #endif
-currency DeltaT; // Interval between two frames (in ms)
-long DeltaTPlay, DeltaTDemo;
-boolean BlockingSpeed;
-
-// --- const int posFrameCorner = 55;
-// --- const int posFrameVertical = 110;
-// --- const int posFrameHorizontal = 111;
 
 int FreezeZonks;
 
+LevelInfoType LInfo;
+
+float Stretch = 1;     // , StretchWidth%, TwoPixels!
+
+int ScrollMinX, ScrollMaxX, ScrollMinY, ScrollMaxY;
+int ScrollX, ScrollY;
+
 // constants for  Fixed Fields:
 // --- const int fiSpace = 0; // &H00  space(28 = wall space ...)
 // --- const int fiZonk = 1; // &H01  zonk
@@ -146,33 +103,6 @@ int FreezeZonks;
 // --- const int keySpace = 9;
 
 #if 0
-int *aniBug, *aniZonkRollRight, *aniZonkRollLeft;
-int *aniInfotronRollRight, *aniInfotronRollLeft;
-int *aniSnikSnak, *aniElectron, *aniExplosion;
-int *aniTouchBase, *aniTouchInfotron, *aniTouchRedDisk;
-// --- const int aniExplosionInfo = 111;
-// --- const int aniSnikSnakUp = 159;
-// --- const int aniSnikSnakDown = 167;
-// --- const int aniSnikSnakLeft = 239;
-// --- const int aniSnikSnakRight = 247;
-// --- const int aniMurphyYawn = 56;
-// --- const int aniMurphySleepLeft = 71;
-// --- const int aniMurphySleepRight = 68;
-int *aniMurphyExit; // , aniMurphyFaceLeft%, aniMurphyFaceRight%
-int *aniMurphyEatLeft, *aniMurphyEatRight; // , aniMurphyEatRightRedDisk
-int *aniMurphyEatUpLeft, *aniMurphyEatUpRight, *aniSplitUpDown;
-int *aniYellowDisk, *aniOrangeDisk, *aniRedDisk;
-// --- const int aniMurphyTouchUp = 46;
-// --- const int aniMurphyTouchLeft = 95;
-// --- const int aniMurphyTouchDown = 47;
-// --- const int aniMurphyTouchRight = 94;
-int *aniEatInfotronLeft, *aniEatInfotronRight;
-// --- const int aniPushLeft = 45;
-// --- const int aniPushRight = 44;
-// --- const int aniPushUpDown = 79;
-#endif
-
-#if 1
 int aniFramesBug[] = { 74, 75, 76, 77, 78, 77, 76, 77, 78, 77, 76, 75, 74, 25 };
 int aniFramesZonkRollRight[] = { 198, 197, 196, 195, 194, 193, 192, 1, -1 };
 int aniFramesZonkRollLeft[] = { 192, 193, 194, 195, 196, 197, 198, 1, -1 };
@@ -198,8 +128,6 @@ int aniFramesOrangeDisk[] = { 8, 8, 8, 8, 8, 8, 8, 8, -1 };
 int aniFramesRedDisk[] = { 20, -1 };
 #endif
 
-#if 1
-
 int fiGraphic[] =
 {
   aniSpace,
@@ -301,438 +229,46 @@ boolean isSnappingSequence(int sequence)
   }
 }
 
-#endif
-
 void InitGlobals()
 {
-#if 0
-  aniBug = Array(74, 75, 76, 77, 78, 77, 76, 77, 78, 77, 76, 75, 74, 25);
-  aniZonkRollRight = Array(198, 197, 196, 195, 194, 193, 192, 1, -1);
-  aniZonkRollLeft = Array(192, 193, 194, 195, 196, 197, 198, 1, -1);
-  aniInfotronRollRight = Array(206, 205, 204, 203, 202, 201, 200, 4);
-  aniInfotronRollLeft = Array(200, 201, 202, 203, 204, 205, 206, 4);
-  aniSnikSnak = Array(121, 122, 123, 124, 125, 126, 127, 120, 121);
-  aniElectron = Array(144, 145, 146, 147, 148, 149, 150, 151, 144);
-  aniExplosion = Array(3, 103, 104, 105, 106, 107, 108, 109, 0);
-  aniTouchBase = Array(80, 81, 82, 83, 84, 85, 86, 0, -1);
-  aniTouchInfotron = Array(87, 88, 89, 91, 92, 93, 0, -1); // Only seven frames!!!!
-  aniTouchRedDisk = Array(96, 97, 98, 99, 100, 101, 102, 0, -1);
-  aniMurphyExit = Array(46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 0, 0, 0, 0, -1);
-  aniMurphyEatLeft = Array(176, 177, 178, 179, 180, 181, 182, 183, -1);
-  aniMurphyEatRight = Array(184, 185, 186, 187, 188, 189, 190, 191, -1);
-  aniMurphyEatUpLeft = Array(183, 182, 181, 180, 179, 178, 177, 176, -1);
-  aniMurphyEatUpRight = Array(191, 190, 189, 188, 187, 186, 185, 184, -1);
-  // aniMurphyEatRightRedDisk = Array(184, 184, 185, 186, 187, 188, 189, 190, 191, -1) '9 frames!
-  aniEatInfotronLeft = Array(209, 211, 213, 215, 217, 219, 221, 223, -1);
-  aniEatInfotronRight = Array(224, 226, 228, 230, 232, 234, 236, 238, -1);
-  aniSplitUpDown = Array(3, 3, 3, 3, 3, 3, 3, 3, -1);
-  aniYellowDisk = Array(18, 18, 18, 18, 18, 18, 18, 18, -1);
-  aniOrangeDisk = Array(8, 8, 8, 8, 8, 8, 8, 8, -1);
-  aniRedDisk = Array(20, -1);
-#endif
-
-  InitPseudoCompileFlags();
-  UserDragFlag = False;
   AutoScrollFlag = True;
   FreezeZonks = 0;
-  BlockingSpeed = False;
   LevelLoaded = False;
   FieldWidth = 60;
   FieldHeight = 24;
   HeaderSize = 96;
   FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
   LevelMax = (FieldWidth * FieldHeight) - 1;
-  Let_ModifiedFlag(False);
   bPlaying = False;
-  gSignature = "";
-  bSignatureAvailable = False;
-  FirstDemoByte = 0x81;
-  MySignature = "";
-}
-
-void InitPseudoCompileFlags()
-{
-  Cracked = 1;       // If protection Then crack it
-  Level_Arg = 1;     // :number is cmd line option
-  // Level_Arg  = 0     ' Remove Level cmd line option
-  EGA_Arg = 1;       // EGA is command line option
-  Record_Fix = 1;      // Assemble with fixed Demo rec
-  SpeedKeys = 0;     // Remove Speed Keys fix
-  Level_Fix = 1;     // Assemble with Level Fix
-  Dead_Code = 0;     // Remove dead code
-  Redundant = 0;     // Remove redundant code
-  Alignments = 1;      // Assemble with alignments
-  Ctrl_Alt_Fix = 1;      // Assemble with Ctrl/Alt fix
-  Protection = 0;      // Remove protection code,do HP
-  // EP added by EP for version 5.
-  EP_ENHANCE = 1;      // Some more nice things (EP)
-  EP_DEMO = 1;       // Use .SP files for demos (EP)
-  // Including record demo!
-  EP_DEBUG = 0;      // little cmdline debugging
-  EXTRASPEED = 1;      // '@' option, superfast!
-  TIMINGFIX = 1;     // "Fixed" the timing problem..
-  // Inactive If DemoRecordFix Then1
-  SafeRecord = 1;      // skip debug keys in recording
-  Norm_Time = 1;     // force automatic speed test,
-  // save result and then do as
-  // requested from cmd line.
-  EP_OLD8 = 1;       // call old int8 from current.
-  SAVEGAME = 1;      // Allow saving to SUPAPLEX.SAV
-  HP_DEMO = 1;       // Use fixed demo routines 5.5
-  ScreenFix = 1;     // No menu-write to gamy field
-  DemoRecordFix = 1;     // Demo record timing fix on
-  DebugSwitch = 1;     // Allow Ctrl/Alt-ScrollLock
-  Ver62 = 1;       // Version 6.2 stuff
-  Ver62test = 0;     // Version 6.2 test stuff
-  Ver63 = 1;       // Version 6.3 stuff
-  Ver64 = 1;       // Version 6.4 stuff
-
 }
 
 int GetSI(int X, int Y)
 {
-  int GetSI;
-
-  GetSI = Y * FieldWidth + X;
-
-  return GetSI;
+  return Y * FieldWidth + X;
 }
 
 int GetX(int si)
 {
-  int GetX;
-
-  GetX = si % FieldWidth;
-
-  return GetX;
+  return si % FieldWidth;
 }
 
 int GetY(int si)
 {
-  int GetY;
-
-  GetY = si / FieldWidth;
-
-  return GetY;
+  return si / FieldWidth;
 }
 
 int GetStretchX(int si)
 {
-  int GetStretchX;
-
-  GetStretchX = StretchWidth * (si % FieldWidth);
-
-  return GetStretchX;
+  return StretchWidth * (si % FieldWidth);
 }
 
 int GetStretchY(int si)
 {
-  int GetStretchY;
-
-  GetStretchY = StretchWidth * (si / FieldWidth);
-
-  return GetStretchY;
-}
-
-void OLD_ReadLevel()
-{
-#if 1
-  static char CurPathTEST[1024];
-#endif
-
-  // int FNum;
-  FILE *FNum;
-  long i;
-  // byte T;
-
-#if 1
-  // CurPath = "/home/aeglos/projects/rocksndiamonds/levels/TEST_supaplex/supaplex/levels.dat";
-
-#if 0
-  CurPath = "/home/aeglos/projects/rocksndiamonds/supaplex_demo_JENS0001.sp";
-  LevelNumber = 1;
-#else
-
-#if 0
-  // sprintf(CurPathTEST, "/home/aeglos/projects/rocksndiamonds/levels/TEST_supaplex/test_solutions/%03d.sp", level_nr);
-
-  sprintf(CurPathTEST, "/home/aeglos/projects/Level_Stuff/SUPAPLEX/SUPAPLEX_LEVELS/Set77/77S%03d.SP", level_nr);
-#else
-  sprintf(CurPathTEST, "/home/aeglos/projects/Level_Stuff/SUPAPLEX/SUPAPLEX_LEVELS/solve00/JENS%04d.SP", level_nr);
-#endif
-
-  CurPath = CurPathTEST;
-  LevelNumber = level_nr;
-#endif
-
-#endif
-
-  DemoAvailable = False;
-
-  if (STRING_IS_LIKE(CurPath, "*.mpx") ||
-      STRING_IS_LIKE(CurPath, "*.MPX"))
-  {
-    printf("::: reading MPX file ...\n");
-
-    ReadMPX();
-    return;
-  }
-
-  if (STRING_IS_LIKE(CurPath, "*.sp") ||
-      STRING_IS_LIKE(CurPath, "*.SP"))
-  {
-    printf("::: reading SP file ...\n");
-
-    ReadDemo();
-    return;
-  }
-
-  if (DemoFlag != 0)
-  {
-    printf("::: reading demo file ...\n");
-
-    ReadDemo();
-    return;
-  }
-
-  printf("::: reading level file ...\n");
-
-  FileMax = 0;
-  FieldWidth = 60;
-  FieldHeight = 24;
-  HeaderSize = 96;
-
-  FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
-  LevelMax = (FieldWidth * FieldHeight) - 1;
-
-  PlayField8 = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-  DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-
-  // FNum = FreeFile();
-
-  // --- On Error GoTo ReadLevelEH
-
-  printf("::: '%s', %d\n", CurPath, LevelNumber);
-
-  FNum = fopen(CurPath, "rb");
-
-  i = (LevelNumber - 1) * ((long)(FieldMax) + 1) + 1;
-#if 1
-  FILE_GET(FNum, i, PlayField8, FieldMax + 1);
-#else
-  FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
-#endif
-
-  i = (LevelNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
-  FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
-
-  fclose(FNum);
-
-  // --- On Error GoTo 0
-
-  if (FieldMax < FileMax)
-    DemoAvailable = True;
-
-  ReadSignature();
-
-  PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
-
-  for (i = 0; i <= FieldMax; i++)
-  {
-    PlayField16[i]  = PlayField8[i];
-    DisPlayField[i] = PlayField8[i];
-    PlayField8[i] = 0;
-  }
-
-#if 0
- {
-   int x, y;
-
-   for (x = 0; x < 60; x++)
-     printf("%02d.", x);
-   printf("\n");
-
-   for (x = 0; x < 60; x++)
-     printf("...");
-   printf("\n");
-
-   for (y = 0; y < 24; y++)
-   {
-     for (x = 0; x < 60; x++)
-     {
-       printf("%02d.", PlayField16[y * 60 + x]);
-     }
-
-     printf("\n");
-   }
- }
-#endif
-
-  AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 * FieldWidth);
-  AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 * FieldWidth);
-  TerminalState = REDIM_1D(sizeof(byte), FieldWidth, LevelMax - FieldWidth);
-
-  GravityFlag = LInfo.InitialGravity;
-  FreezeZonks = LInfo.InitialFreezeZonks;
-
-  subRandomize();
-
-  LevelLoaded = True;
-
-  return;
-
-#if 0
-ReadLevelEH:
-  Close();
-#endif
-}
-
-static void ReadDemo()
-{
-  // int FNum, i;
-  FILE *FNum;
-  int i;
-  // byte T;
-
-  int RecordNumber = LevelNumber;
-
-#if 1
-  RecordNumber = 1;    // always "1" for "*.sp" style one level/demo files
-#endif
-
-  FieldWidth = 60;
-  FieldHeight = 24;
-  HeaderSize = 96;
-
-  FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
-  LevelMax = (FieldWidth * FieldHeight) - 1;
-
-  // --- On Error GoTo ReadDemoEH
-
-  FileMax = FileLen(CurPath) - 1;
-
-  PlayField8 = REDIM_1D(sizeof(byte), 0, FileMax + 1 - 1);
-  DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-
-  // FNum = FreeFile();
-
-  FNum = fopen(CurPath, "rb");
-
-  i = (RecordNumber - 1) * ((long)(FieldMax) + 1) + 1;
-#if 1
-  FILE_GET(FNum, i, PlayField8, FileMax + 1);
-#else
-  FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
-#endif
-
-  i = (RecordNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
-  FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
-
-  fclose(FNum);
-
-  // --- On Error GoTo 0
-
-  if (FieldMax < FileMax)
-    DemoAvailable = True;
-
-  ReadSignature();
-
-  PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
-
-  for (i = 0; i <= FieldMax; i++)
-  {
-    PlayField16[i] = PlayField8[i];
-    DisPlayField[i] = PlayField8[i];
-    PlayField8[i] = 0;
-  }
-
-  AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 * FieldWidth);
-  AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 * FieldWidth);
-  TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-
-  DemoPointer = FieldMax + 1;
-  DemoOffset = DemoPointer;
-  DemoKeyRepeatCounter = 0;
-
-  // DemoFlag = 1
-  // DemoAvailable = True
-
-  GravityFlag = LInfo.InitialGravity;
-  FreezeZonks = LInfo.InitialFreezeZonks;
-
-#if 0
-  printf("::: Globals.c: ReadDemo(): %d / %d\n", GravityFlag, FreezeZonks);
-#endif
-
-
-
-#if 0
-  /* !!! TESTING BIG / LITTLE ENDIAN STUFF !!! */
-  LInfo.DemoRandomSeed =
-    LowByte(LInfo.DemoRandomSeed) << 8 |
-    HighByte(LInfo.DemoRandomSeed);
-  for (i = 0; i < 10; i++)
-    LInfo.SpecialPort[i].PortLocation =
-      LowByte(LInfo.SpecialPort[i].PortLocation) << 8 |
-      HighByte(LInfo.SpecialPort[i].PortLocation);
-
-  printf("::: swapping file bytes for DemoRandomSeed etc.\n");
-#else
-  printf("::: keeping file bytes in (maybe wrong) 'native' order.\n");
-#endif
-
-#if 1
-  printf("::: LInfo.DemoRandomSeed == %d\n", LInfo.DemoRandomSeed);
-#endif
-
-#if 0
-  printf("::: LInfo.SpecialPortCount == %d\n", LInfo.SpecialPortCount);
-  for (i = 0; i < LInfo.SpecialPortCount; i++)
-  {
-    int port_x = (LInfo.SpecialPort[i].PortLocation / 2) % FieldWidth;
-    int port_y = (LInfo.SpecialPort[i].PortLocation / 2) / FieldWidth;
-
-    printf("::: %d: port_location == %d => (%d, %d)\n",
-          i, LInfo.SpecialPort[i].PortLocation, port_x, port_y);
-  }
-#endif
-
-  RandomSeed = LInfo.DemoRandomSeed;
-
-#if 0
-  printf("::: SpeedByte == %d\n", LInfo.SpeedByte);
-  printf("::: CheckSumByte == %d\n", LInfo.CheckSumByte);
-  printf("::: RandomSeed == %d\n", RandomSeed);
-
-#if 0
-  {
-    int i;
-
-    for (i = 0; i < 10; i++)
-      printf("::: TEST random number: %d\n", subGetRandomNumber());
-  }
-#endif
-
-#endif
-
-  LevelLoaded = True;
-
-  return;
-
-#if 0
-ReadDemoEH:
-  Close();
-#endif
+  return StretchWidth * (si / FieldWidth);
 }
 
 void ReadLevel()
 {
-#if 0
-  OLD_ReadLevel();
-
-  // return;
-#endif
-
   copyInternalEngineVars_SP();
 
 #if 1
@@ -742,11 +278,6 @@ void ReadLevel()
 
   LevelNumber = level_nr;
 
-#if 0
-  if (!DemoFlag || !DemoAvailable)
-    subRandomize();
-#endif
-
   LevelLoaded = True;
 }
 
@@ -762,24 +293,10 @@ void ReportError(char *Source, char *Message)
 
 int Min(int A, int B)
 {
-  int Min;
-
-  if (A < B)
-    Min = A;
-  else
-    Min = B;
-
-  return Min;
+  return (A < B ? A : B);
 }
 
 int Max(int A, int B)
 {
-  int Max;
-
-  if (A < B)
-    Max = B;
-  else
-    Max = A;
-
-  return Max;
+  return (A < B ? B : A);
 }
index 7e127054607297ce26060818c9efc67256ce6c72..194f1b9dced8c95969514e4c55a9d5e88556bd2e 100644 (file)
@@ -5,38 +5,26 @@
 #ifndef GLOBALS_H
 #define GLOBALS_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
-#if 1
 
-#define ZoomFactor                     (2)
+#ifndef False
+#define False                          0
+#define True                           (!False)
+#endif
 
+#define ScrollDelta                    ((long)1)
+
+#define ZoomFactor                     (2)
 #define BaseWidth                      (ZoomFactor * 16)
 #define StretchWidth                   (ZoomFactor * 16)
-#define StretchWidth2                  (StretchWidth / 2)
 #define TwoPixels                      (ZoomFactor * 2)
 
-#else
-
-#define BaseWidth                      (16)
-#define StretchWidth                   (16)
-#define StretchWidth2                  (StretchWidth / 2)
-#define TwoPixels                      (2)
-
-#endif
-
 
 // ----------------------------------------------------------------------------
 // elements (stored in file and playfield)
 // ----------------------------------------------------------------------------
 
-#if 1
-
 #define fiSpace                                (0)
 #define fiZonk                         (1)
 #define fiBase                         (2)
 
 #define fiExplosion                    (0x1F)
 
-#else
-
-#define fiBase                         (2)
-#define fiBug                          (25)
-#define fiElectron                     (24)
-#define fiExit                         (7)
-#define fiExplosion                    (0x1F)
-#define fiHWFirst                      (28)
-#define fiHWLast                       (37)
-#define fiHWMurphy                     (43)
-#define fiHWTrash1                     (41)
-#define fiHWTrash2                     (42)
-#define fiHardWare                     (6)
-#define fiInfotron                     (4)
-#define fiMurphy                       (3)
-#define fiOrangeDisk                   (8)
-#define fiPortAllDirections            (23)
-#define fiPortDown                     (10)
-#define fiPortLeft                     (11)
-#define fiPortLeftAndRight             (22)
-#define fiPortRight                    (9)
-#define fiPortUp                       (12)
-#define fiPortUpAndDown                        (21)
-#define fiRAM                          (5)
-#define fiRAMBottom                    (39)
-#define fiRAMLeft                      (26)
-#define fiRAMRight                     (27)
-#define fiRAMTop                       (38)
-#define fiRedDisk                      (20)
-#define fiSnikSnak                     (17)
-#define fiSpPortDown                   (14)
-#define fiSpPortLeft                   (15)
-#define fiSpPortRight                  (13)
-#define fiSpPortUp                     (16)
-#define fiSpace                                (0)
-#define fiTerminal                     (19)
-#define fiWallSpace                    (40)
-#define fiYellowDisk                   (18)
-#define fiZonk                         (1)
-
-#endif
-
 
 // ----------------------------------------------------------------------------
 // graphics and animations (used at runtime to display the elements)
 // ----------------------------------------------------------------------------
 
-#if 1
-
 // graphics and animations directly related to file elements
 
 #define aniSpace                       IMG_EMPTY_SPACE
 #define imgFrameHorizontal             IMG_SP_FRAME_HORIZONTAL
 #define imgFrameVertical               IMG_SP_FRAME_VERTICAL
 
-#else
-
-#define aniMurphySleepLeft             (71)
-#define aniMurphySleepRight            (68)
-#define aniMurphyTouchDown             (47)
-#define aniMurphyTouchLeft             (95)
-#define aniMurphyTouchRight            (94)
-#define aniMurphyTouchUp               (46)
-#define aniMurphyYawn                  (56)
-#define aniPushLeft                    (45)
-#define aniPushRight                   (44)
-#define aniPushUpDown                  (79)
-
-#define aniSnikSnakDown                        (167)
-#define aniSnikSnakLeft                        (239)
-#define aniSnikSnakRight               (247)
-#define aniSnikSnakUp                  (159)
-
-#define aniTerminal                    (0x80)
-#define aniTerminalActive              (0x88)
-
-#define aniExplosionInfo               (111)
-
-#define posFrameCorner                 (55)
-#define posFrameHorizontal             (111)
-#define posFrameVertical               (110)
-
-#endif
-
-
-#if 1
 
 extern int aniFramesBug[], aniFramesZonkRollRight[], aniFramesZonkRollLeft[];
 extern int aniFramesEatInfotronLeft[], aniFramesEatInfotronRight[];
@@ -297,27 +210,11 @@ extern int aniFramesSnikSnak[], aniFramesElectron[], aniFramesExplosion[];
 extern int aniFramesTouchBase[], aniFramesTouchInfotron[], aniFramesTouchRedDisk[];
 extern int aniFramesYellowDisk[], aniFramesOrangeDisk[], aniFramesRedDisk[];
 
-#else
-
-extern int *aniBug, *aniZonkRollRight, *aniZonkRollLeft;
-extern int *aniEatInfotronLeft, *aniEatInfotronRight;
-extern int *aniInfotronRollRight, *aniInfotronRollLeft;
-extern int *aniMurphyEatLeft, *aniMurphyEatRight;
-extern int *aniMurphyEatUpLeft, *aniMurphyEatUpRight, *aniSplitUpDown;
-extern int *aniMurphyExit;
-extern int *aniSnikSnak, *aniElectron, *aniExplosion;
-extern int *aniTouchBase, *aniTouchInfotron, *aniTouchRedDisk;
-extern int *aniYellowDisk, *aniOrangeDisk, *aniRedDisk;
-
-#endif
-
 
 // ----------------------------------------------------------------------------
 // input keys
 // ----------------------------------------------------------------------------
 
-#if 1
-
 #define keyNone                                (0)
 #define keyUp                          (1)
 #define keyLeft                                (2)
@@ -329,19 +226,54 @@ extern int *aniYellowDisk, *aniOrangeDisk, *aniRedDisk;
 #define keySpaceRight                  (8)
 #define keySpace                       (9)
 
-#else
 
-#define keyDown                                (3)
-#define keyLeft                                (2)
-#define keyNone                                (0)
-#define keyRight                       (4)
-#define keySpace                       (9)
-#define keySpaceDown                   (7)
-#define keySpaceLeft                   (6)
-#define keySpaceRight                  (8)
-#define keySpaceUp                     (5)
-#define keyUp                          (1)
+// ----------------------------------------------------------------------------
+// data structures
+// ----------------------------------------------------------------------------
+
+#ifndef HAS_LevelDescriptor
+typedef struct
+{
+  int Width;
+  int Height;
+  long OffSet;
+  long Size;
+} LevelDescriptor;
+#define HAS_LevelDescriptor
+#endif
+
+#ifndef HAS_SpecialPortType
+typedef struct
+{
+  short PortLocation; // = 2*(x+(y*60))
+  byte Gravity; // 1 = turn on, anything else (0) = turn off
+  byte FreezeZonks; // 2 = turn on, anything else (0) = turn off  (1=off!)
+  byte FreezeEnemies; // 1 = turn on, anything else (0) = turn off
+  byte UnUsed;
+} SpecialPortType;
+#define HAS_SpecialPortType
+#endif
 
+#ifndef HAS_LevelInfoType
+typedef struct
+{
+  byte UnUsed[4];
+  byte InitialGravity; // 1=on, anything else (0) = off
+  byte Version; // SpeedFixVersion XOR &H20
+  char LevelTitle[23];
+  byte InitialFreezeZonks; // 2=on, anything else (0) = off.  (1=off too!)
+  byte InfotronsNeeded;
+
+  // Number of Infotrons needed. 0 means that Supaplex will count the total
+  // amount of Infotrons in the level, and use the low byte of that number.
+  // (A multiple of 256 Infotrons will then result in 0-to-eat, etc.!)
+  byte SpecialPortCount; // Maximum 10 allowed!
+  SpecialPortType SpecialPort[10];
+  byte SpeedByte; // = Speed XOR Highbyte(RandomSeed)
+  byte CheckSumByte; // = CheckSum XOR SpeedByte
+  short DemoRandomSeed;
+} LevelInfoType;
+#define HAS_LevelInfoType
 #endif
 
 
@@ -351,7 +283,6 @@ extern int GetStretchY(int si);
 extern int GetX(int si);
 extern int GetY(int si);
 extern void InitGlobals();
-extern void InitPseudoCompileFlags();
 
 extern void ReadLevel();
 
@@ -368,43 +299,14 @@ extern int fiGraphic[];
 extern int aniSnikSnakTurningLeft[];
 extern int aniSnikSnakTurningRight[];
 
-extern boolean Alignments;
-extern boolean BlockingSpeed;
-extern boolean Cracked;
-extern boolean Ctrl_Alt_Fix;
-extern boolean Dead_Code;
-extern boolean DebugSwitch;
-extern boolean DemoRecordFix;
-extern boolean EGA_Arg;
-extern boolean EP_DEBUG;
-extern boolean EP_DEMO;
-extern boolean EP_ENHANCE;
-extern boolean EP_OLD8;
-extern boolean EXTRASPEED;
-extern boolean HP_DEMO;
 extern boolean LevelLoaded;
-extern boolean Level_Arg;
-extern boolean Level_Fix;
-extern boolean Norm_Time;
-extern boolean Original;
-extern boolean Protection;
-extern boolean Record_Fix;
-extern boolean Redundant;
-extern boolean SAVEGAME;
-extern boolean SafeRecord;
-extern boolean ScreenFix;
-extern boolean SpeedKeys;
-extern boolean TIMINGFIX;
-extern boolean Ver62;
-extern boolean Ver62test;
-extern boolean Ver63;
-extern boolean Ver64;
-extern boolean bCapturePane;
-extern byte *DisPlayField;
-extern byte *PlayField8;
-extern char *CurPath, *OrigPath, *TmpPath;
-extern currency DeltaT;
+
+extern boolean DemoAvailable;
+extern boolean menBorder;
+
 extern int *PlayField16;
+extern byte *PlayField8;
+extern byte *DisPlayField;
 
 extern int FieldHeight;
 extern int FieldMax, LevelMax;
@@ -414,8 +316,12 @@ extern int HeaderSize;
 extern int LevelNumber;
 extern int TimerVar;
 extern short RandomSeed;
-extern long DeltaTPlay, DeltaTDemo;
+
 extern long FileMax;
-extern long SignatureDelay;
+
+extern LevelInfoType LInfo;
+extern float Stretch;
+extern int ScrollMinX, ScrollMaxX, ScrollMinY, ScrollMaxY;
+extern int ScrollX, ScrollY;
 
 #endif /* GLOBALS_H */
index 08a166620ab22a7f7a1af14b6f92dc76f5f18ebd..c671c606deed2fd314208e532cc3ca8961475c98 100644 (file)
@@ -115,8 +115,8 @@ loc_g_1242: // infotron comes falling from above
   X = GetStretchX(si);
   Y = GetStretchY(si - FieldWidth);
   dx = bl & 0x7;
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X, Y + TwoPixels * (dx + 1), aniInfotron, dx);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X, Y + TwoPixels * (dx + 1), aniInfotron, dx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 
   bl = HighByte(PlayField16[si]) + 1;
@@ -239,8 +239,8 @@ loc_g_138D: // infotron comes rolling from right to left
   X = GetStretchX(si + 1);
   Y = GetStretchY(si);
   dx = (bl & 0x7) + 1;
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X - (TwoPixels * dx), Y, aniInfotronRollLeft, dx - 1);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X - (TwoPixels * dx), Y, aniInfotronRollLeft, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 
   bl = HighByte(PlayField16[si]) + 1; // get and increment sequence#
@@ -270,8 +270,8 @@ loc_g_13E9: // infotron comes rolling from left to right
   X = GetStretchX(si - 1);
   Y = GetStretchY(si);
   dx = (bl & 0x7) + 1;
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X + (TwoPixels * dx), Y, aniInfotronRollRight, dx - 1);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X + (TwoPixels * dx), Y, aniInfotronRollRight, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 
   bl = HighByte(PlayField16[si]) + 1;
@@ -321,8 +321,8 @@ loc_g_1472: // infotron rolls left
   X = GetStretchX(si);
   Y = GetStretchY(si);
   dx = (bl & 0xF) + 1;
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X - (TwoPixels * dx), Y, aniInfotronRollLeft, dx - 1);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X - (TwoPixels * dx), Y, aniInfotronRollLeft, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 
   bl = HighByte(PlayField16[si]) + 1; // retrieve and increment sequence#
@@ -362,8 +362,8 @@ loc_g_14E0: // infotron rolls right
   X = GetStretchX(si);
   Y = GetStretchY(si);
   dx = (bl & 0x7) + 1;
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X + (TwoPixels * dx), Y, aniInfotronRollRight, dx - 1);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X + (TwoPixels * dx), Y, aniInfotronRollRight, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
 
   bl = HighByte(PlayField16[si]) + 1;
index 485f868cfb3b64e7702994b9471261d3e7f04299..a18fedd0fc139498d0a3cd55dad1648abbd73afa 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef INFOTRONS_H
 #define INFOTRONS_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
index ef5ce12c1a71f18c11a18d9cd6133bbe29359ee1..73c6ec11d23522ef0f3e4894a508bf02ccfd4fc5 100644 (file)
@@ -12,8 +12,6 @@
 
 void subInitGameConditions()
 {
-  bCapturePane = False;
-
   MurphyVarFaceLeft = 0;
   KillMurphyFlag = 0;                  // no "kill Murphy"
   ExitToMenuFlag = 0;
@@ -65,7 +63,7 @@ void InitMurphyPosB(int si)
   MurphyScreenYPos = GetStretchY(si);         // Murphy's screen y-position
 
   // To Do: draw Murphy in location ax
-  StretchedSprites.BltImg(MurphyScreenXPos, MurphyScreenYPos, aniMurphy, 0);
+  DDSpriteBuffer_BltImg(MurphyScreenXPos, MurphyScreenYPos, aniMurphy, 0);
 
   MurphyScreenXPos = MurphyScreenXPos / Stretch;
   MurphyScreenYPos = MurphyScreenYPos / Stretch;
@@ -235,47 +233,18 @@ void ResetInfotronsNeeded(int dx)
 
 void subFetchAndInitLevelB()
 {
-  boolean UpdatePlayTime;
-
-  data_scr_demo = 0;
-  UpdatePlayTime = (0 == demo_stopped ? True : False);
-  demo_stopped = 0;
-
-  subFetchAndInitLevelA(UpdatePlayTime);
+  subFetchAndInitLevelA();
 }
 
-void subFetchAndInitLevelA(boolean UpdatePlayTime)
+void subFetchAndInitLevelA()
 {
-  D_ModeFlag = 0; // 1=debug D pressed (CPU use)
-  if (0 != demo_stopped) // 1=demo, 0=game
-    DemoFlag = 1;
-
   GameBusyFlag = 0; // restore scissors too
 
   subFetchAndInitLevel();   // Fetch and initialize a level
 
   GameBusyFlag = 1; // no free screen write
 
-  if (1 <= demo_stopped)
-  {
-    if (1 == demo_stopped)
-    {
-      DemoFlag = 0; // 1=demo, 0=game
-      demo_stopped = demo_stopped + 1;
-    }
-    else
-    {
-      DemoFlag = 0; // 1=demo, 0=game
-    }
-  }
-
   DemoKeyCode = 0; // delete last demo key!
-  if (DemoFlag != 0) // don't allow during game! only in Demo
-  {
-    DemoOffset = DemoPointer;           // init demo pointer
-    DemoKeyRepeatCounter = 1;
-    subGetNextDemoKey();                 // get next demo byte
-  }
 }
 
 void subFetchAndInitLevel()
@@ -284,12 +253,10 @@ void subFetchAndInitLevel()
 
   ReadLevel();                   // Read LEVELS.DAT
 
-  if (RecordDemoFlag == 1)
-    RecDemoRandomSeed = RandomSeed;
-
   GameBusyFlag = -GameBusyFlag;   // make <>1
 
   InfoCountInLevel = subConvertToEasySymbols(); // Convert to easy symbols
+
   GameBusyFlag = -GameBusyFlag;     // restore
 
   subDisplayLevel();               // Paint (Init) game field
index c78da1281476fb7b5517afc41710200059d05254..eb4249fff9c07877c7b7c50b81bd6a26fd65257e 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef INITGAMECONDITIONS_H
 #define INITGAMECONDITIONS_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
@@ -19,7 +14,7 @@ extern void InitMurphyPos();
 extern void InitMurphyPosB(int);
 extern void ResetInfotronsNeeded(int);
 extern void subFetchAndInitLevel();
-extern void subFetchAndInitLevelA(boolean);
+extern void subFetchAndInitLevelA();
 extern void subFetchAndInitLevelB();
 extern void subInitGameConditions();
 
index 3abfb289adaf5fba354f9e7264195e027763003c..5a469575399886e012048e50e5afee9f0b4e3510 100644 (file)
@@ -5,9 +5,6 @@
 #include "Input.h"
 
 
-DemoBufferObject DemoBuffer;
-boolean KeyState[255 + 1];
-
 int map_key_RND_to_SP(int key)
 {
   if (key & KEY_BUTTON)
index 0183b702d659ce9362d5643d26036021afbe2ed4..55f6aaf9a817bfc1b330fc40c2eadb055e3269dd 100644 (file)
@@ -5,17 +5,9 @@
 #ifndef INPUT_H
 #define INPUT_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
-extern DemoBufferObject DemoBuffer;
-extern boolean KeyState[255 + 1];
-
 extern void subProcessKeyboardInput(byte);
 
 #endif /* INPUT_H */
index 731cd0fb00b72411086898528c6a2564af884a3a..f169bac384a68bedd9412c18e51329cfba56e198 100644 (file)
 
 #include "MainForm.h"
 
-#if 1
-
-static void DrawFrame(int Delta);
-static void ReStretch(float NewStretch);
-static void picPane_Paint();
-static void picViewPort_Resize();
-static void menBorder_Click();
-
-#else
 
-static void CleanTempDir(char *TmpDir);
-static void CountDown(long HalfSeconds, int bDisplayBar);
 static void DrawFrame(int Delta);
-static void DrawPauseLayer(long Layer);
-static void FillFileList(char *Path);
-static void FillLevelList(char *Path, int LevelIndex);
-static void FocusTim_Timer();
-static void Form_KeyDown(int KeyCode, int Shift);
-static void Form_KeyUp(int KeyCode, int Shift);
-static void Form_Paint();
-static int GetFileNameToSave();
-static long GetHwndFromTempFileName(char *TmpFile);
-static char * GetMyTempFileName();
-static void GetSettings();
-static char * GetSpeedDescriptionFPS(currency FrameDelayUS);
-static int GetSpeedIndex(long DelayUS);
-static char * GetValidTempPath();
-static long Get_LastOpenFilter();
-static long Get_LastSaveFilter();
-static int InitSpeeds();
-static boolean InstanceStillRunning(char *TmpFile);
-static void Let_LastOpenFilter(long NewVal);
-static void Let_LastSaveFilter(long NewVal);
-static void LoadKeyIndicators();
-static void LoadMenus();
-static void PanelTim_Timer();
 static void ReStretch(float NewStretch);
-static void RestoreFrame();
-static boolean SaveAs();
-static void SaveSettings();
-static void SetScrollEdges();
-static void UpdateDeltaT();
-static void cmbFile_Click();
-static void cmbFile_KeyDown(int KeyCode, int Shift);
-static void cmbFile_KeyUp(int KeyCode, int Shift);
-static void cmbLevel_Click();
-static void cmbLevel_KeyUp(int KeyCode, int Shift);
-static void cmblevel_KeyDown(int KeyCode, int Shift);
-static void cmdPause_Click();
-static void cmdPause_MouseUp(int Button, int Shift, float X, float Y);
-static void cmdPlayAll_Click();
-static void cmdPlayAll_MouseUp(int Button, int Shift, float X, float Y);
-static void cmdPlayDemo_Click();
-static void cmdPlayDemo_MouseUp(int Button, int Shift, float X, float Y);
-static void cmdPlay_Click();
-static void cmdPlay_MouseUp(int Button, int Shift, float X, float Y);
-static void cmdRecordDemo_Click();
-static void cmdRecordDemo_MouseUp(int Button, int Shift, float X, float Y);
-static void cmdStop_Click();
-static void cmdStop_MouseUp(int Button, int Shift, float X, float Y);
-static void fpsTim_Timer();
-static void menAbout_Click();
-static void menAutoScroll_Click();
-static void menBorder_Click();
-static void menCopy_Click();
-static void menEnOff_Click();
-static void menEnOn_Click();
-static void menExit_Click();
-static void menFaster_Click();
-static void menGravOff_Click();
-static void menGravOn_Click();
-static void menNewStd_Click();
-static void menNew_Click();
-static void menOpen_Click();
-static void menOptions_Click();
-static void menPanel_Click();
-static void menPaste_Click();
-static void menPause_Click();
-static void menPlayAll_Click();
-static void menPlayDemo_Click();
-static void menPlay_Click();
-static void menReRecordDemo_Click();
-static void menRec_Click();
-static void menRemSP_Click();
-static void menRestoreBorder_Click();
-static void menSaveAs_Click();
-static void menSave_Click();
-static void menSelectAll_Click();
-static void menShowLInfo_Click();
-static void menSlower_Click();
-static void menSoundFX_Click();
-static void menStretch_Click(int Index);
-static void menToolTips_Click();
-static void menTrim_Click();
-static void menZonkOff_Click();
-static void menZonkOn_Click();
-static void picKeys_MouseUp(int Button, int Shift, float X, float Y);
-static void picMenu_Click();
-static void picPane_KeyDown(int KeyCode, int Shift);
-static void picPane_KeyUp(int KeyCode, int Shift);
-static void picPane_MouseDown(int Button, int Shift, float X, float Y);
-static void picPane_MouseMove(int Button, int Shift, float X, float Y);
-static void picPane_MouseUp(int Button, int Shift, float X, float Y);
-static void picPane_Paint();
-static void picViewPort_MouseUp(int Button, int Shift, float X, float Y);
-static void picViewPort_Paint();
 static void picViewPort_Resize();
 
-#endif
-
 void DrawField(int X, int Y);
 void DrawFieldAnimated(int X, int Y);
 void DrawFieldNoAnimated(int X, int Y);
 
-// --- VERSION 5.00
-// --- Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
-// --- Begin VB.Form MainForm 
-// ---    AutoRedraw      =   -1  'True  // True
-// ---    Caption         =   "MegaPlex"
-// ---    ClientHeight    =   5850
-// ---    ClientLeft      =   2580
-// ---    ClientTop       =   2205
-// ---    ClientWidth     =   9285
-// ---    Icon            =   "MainForm.frx":0000
-// ---    LinkTopic       =   "Form1"
-// ---    ScaleHeight     =   390
-// ---    ScaleMode       =   3  'Pixel  // Pixel
-// ---    ScaleWidth      =   619
-// ---    Begin VB.Timer fpsTim 
-// ---       Enabled         =   0   'False   // False
-// ---       Interval        =   200
-// ---       Left            =   1380
-// ---       Top             =   2940
-// ---    End
-// ---    Begin VB.Timer FocusTim 
-// ---       Interval        =   50
-// ---       Left            =   1920
-// ---       Top             =   2940
-// ---    End
-// ---    Begin MSComDlg.CommonDialog cmDlg 
-// ---       Left            =   240
-// ---       Top             =   2880
-// ---       _ExtentX        =   847
-// ---       _ExtentY        =   847
-// ---       _Version        =   393216
-// ---       CancelError     =   -1  'True  // True
-// ---    End
-// ---    Begin VB.Timer PanelTim 
-// ---       Enabled         =   0   'False   // False
-// ---       Interval        =   5
-// ---       Left            =   840
-// ---       Top             =   2940
-// ---    End
-// ---    Begin VB.Frame Panel 
-// ---       Height          =   1140
-// ---       Left            =   180
-// ---       TabIndex        =   2
-// ---       Top             =   3540
-// ---       Width           =   9015
-// ---       Begin VB.CommandButton cmdPlay 
-// ---          DisabledPicture =   "MainForm.frx":0442
-// ---          DownPicture     =   "MainForm.frx":058C
-// ---          Height          =   345
-// ---          Left            =   5820
-// ---          Picture         =   "MainForm.frx":06D6
-// ---          Style           =   1  'Graphical  // Graphical
-// ---          TabIndex        =   16
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   240
-// ---          Width           =   495
-// ---       End
-// ---       Begin VB.CommandButton cmdStop 
-// ---          DisabledPicture =   "MainForm.frx":0820
-// ---          DownPicture     =   "MainForm.frx":096A
-// ---          Enabled         =   0   'False   // False
-// ---          Height          =   345
-// ---          Left            =   7020
-// ---          Picture         =   "MainForm.frx":0AB4
-// ---          Style           =   1  'Graphical  // Graphical
-// ---          TabIndex        =   15
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   240
-// ---          Width           =   495
-// ---       End
-// ---       Begin VB.CommandButton cmdPlayDemo 
-// ---          DisabledPicture =   "MainForm.frx":0BFE
-// ---          DownPicture     =   "MainForm.frx":0D48
-// ---          Enabled         =   0   'False   // False
-// ---          Height          =   345
-// ---          Left            =   7740
-// ---          Picture         =   "MainForm.frx":0E92
-// ---          Style           =   1  'Graphical  // Graphical
-// ---          TabIndex        =   14
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   240
-// ---          Width           =   495
-// ---       End
-// ---       Begin VB.CommandButton cmdPause 
-// ---          DisabledPicture =   "MainForm.frx":0FDC
-// ---          DownPicture     =   "MainForm.frx":1126
-// ---          Enabled         =   0   'False   // False
-// ---          Height          =   345
-// ---          Left            =   6420
-// ---          Picture         =   "MainForm.frx":1270
-// ---          Style           =   1  'Graphical  // Graphical
-// ---          TabIndex        =   13
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   240
-// ---          Width           =   495
-// ---       End
-// ---       Begin VB.CommandButton cmdRecordDemo 
-// ---          DisabledPicture =   "MainForm.frx":13BA
-// ---          DownPicture     =   "MainForm.frx":1504
-// ---          Height          =   345
-// ---          Left            =   8340
-// ---          Picture         =   "MainForm.frx":164E
-// ---          Style           =   1  'Graphical  // Graphical
-// ---          TabIndex        =   12
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   240
-// ---          Width           =   495
-// ---       End
-// ---       Begin VB.ComboBox cmbFile 
-// ---          BackColor       =   &H00000000&
-// ---          BeginProperty Font 
-// ---             Name            =   "Fixedsys"
-// ---             Size            =   9
-// ---             Charset         =   0
-// ---             Weight          =   400
-// ---             Underline       =   0   'False   // False
-// ---             Italic          =   0   'False   // False
-// ---             Strikethrough   =   0   'False   // False
-// ---          EndProperty
-// ---          ForeColor       =   &H00FF8080&
-// ---          Height          =   345
-// ---          Left            =   120
-// ---          Sorted          =   -1  'True  // True
-// ---          Style           =   2  'Dropdown List  // Dropdown List
-// ---          TabIndex        =   9
-// ---          Top             =   240
-// ---          Width           =   3015
-// ---       End
-// ---       Begin VB.ComboBox cmbLevel 
-// ---          BackColor       =   &H00000000&
-// ---          BeginProperty Font 
-// ---             Name            =   "Fixedsys"
-// ---             Size            =   9
-// ---             Charset         =   0
-// ---             Weight          =   400
-// ---             Underline       =   0   'False   // False
-// ---             Italic          =   0   'False   // False
-// ---             Strikethrough   =   0   'False   // False
-// ---          EndProperty
-// ---          ForeColor       =   &H00FF8080&
-// ---          Height          =   345
-// ---          Left            =   840
-// ---          Sorted          =   -1  'True  // True
-// ---          Style           =   2  'Dropdown List  // Dropdown List
-// ---          TabIndex        =   5
-// ---          Top             =   660
-// ---          Width           =   4035
-// ---       End
-// ---       Begin VB.PictureBox picKeys 
-// ---          BackColor       =   &H00008080&
-// ---          BorderStyle     =   0  'None  // None
-// ---          Height          =   330
-// ---          Left            =   5400
-// ---          ScaleHeight     =   22
-// ---          ScaleMode       =   3  'Pixel  // Pixel
-// ---          ScaleWidth      =   22
-// ---          TabIndex        =   4
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   240
-// ---          Width           =   330
-// ---          Begin VB.Shape shpKey 
-// ---             FillColor       =   &H00008000&
-// ---             FillStyle       =   0  'Solid  // Solid
-// ---             Height          =   120
-// ---             Index           =   1
-// ---             Left            =   0
-// ---             Shape           =   5  'Rounded Square  // Rounded Square
-// ---             Top             =   0
-// ---             Width           =   120
-// ---          End
-// ---       End
-// ---       Begin VB.CommandButton cmdPlayAll 
-// ---          Caption         =   "Play All Demos"
-// ---          Enabled         =   0   'False   // False
-// ---          Height          =   345
-// ---          Left            =   7380
-// ---          TabIndex        =   3
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   960
-// ---          Visible         =   0   'False   // False
-// ---          Width           =   1395
-// ---       End
-// ---       Begin VB.Shape shpProgress 
-// ---          BackColor       =   &H00800000&
-// ---          BackStyle       =   1  'Opaque  // Opaque
-// ---          Height          =   75
-// ---          Left            =   120
-// ---          Top             =   1020
-// ---          Visible         =   0   'False   // False
-// ---          Width           =   7515
-// ---       End
-// ---       Begin VB.Label lblStatus 
-// ---          Alignment       =   2  'Center  // Center
-// ---          BorderStyle     =   1  'Fixed Single  // Fixed Single
-// ---          Caption         =   "MegaPlex"
-// ---          BeginProperty Font 
-// ---             Name            =   "Fixedsys"
-// ---             Size            =   9
-// ---             Charset         =   0
-// ---             Weight          =   400
-// ---             Underline       =   0   'False   // False
-// ---             Italic          =   0   'False   // False
-// ---             Strikethrough   =   0   'False   // False
-// ---          EndProperty
-// ---          Height          =   345
-// ---          Left            =   3240
-// ---          TabIndex        =   11
-// ---          Top             =   240
-// ---          Width           =   2055
-// ---       End
-// ---       Begin VB.Image Image2 
-// ---          Height          =   240
-// ---          Left            =   6780
-// ---          Picture         =   "MainForm.frx":1BD8
-// ---          Top             =   720
-// ---          Width           =   240
-// ---       End
-// ---       Begin VB.Image Image1 
-// ---          Height          =   240
-// ---          Left            =   5880
-// ---          Picture         =   "MainForm.frx":1D22
-// ---          Top             =   720
-// ---          Width           =   240
-// ---       End
-// ---       Begin VB.Label lblFps 
-// ---          Alignment       =   2  'Center  // Center
-// ---          BackColor       =   &H00000000&
-// ---          BorderStyle     =   1  'Fixed Single  // Fixed Single
-// ---          BeginProperty Font 
-// ---             Name            =   "Fixedsys"
-// ---             Size            =   9
-// ---             Charset         =   0
-// ---             Weight          =   400
-// ---             Underline       =   0   'False   // False
-// ---             Italic          =   0   'False   // False
-// ---             Strikethrough   =   0   'False   // False
-// ---          EndProperty
-// ---          ForeColor       =   &H0000C0C0&
-// ---          Height          =   345
-// ---          Left            =   120
-// ---          TabIndex        =   10
-// ---          Top             =   660
-// ---          Width           =   615
-// ---       End
-// ---       Begin VB.Label lblInfoCount 
-// ---          Alignment       =   2  'Center  // Center
-// ---          BackColor       =   &H00000000&
-// ---          BorderStyle     =   1  'Fixed Single  // Fixed Single
-// ---          BeginProperty Font 
-// ---             Name            =   "Fixedsys"
-// ---             Size            =   9
-// ---             Charset         =   0
-// ---             Weight          =   400
-// ---             Underline       =   0   'False   // False
-// ---             Italic          =   0   'False   // False
-// ---             Strikethrough   =   0   'False   // False
-// ---          EndProperty
-// ---          ForeColor       =   &H00FF8080&
-// ---          Height          =   345
-// ---          Left            =   5040
-// ---          TabIndex        =   8
-// ---          Top             =   660
-// ---          Width           =   795
-// ---       End
-// ---       Begin VB.Label lblRedDiskCount 
-// ---          Alignment       =   2  'Center  // Center
-// ---          BackColor       =   &H00000000&
-// ---          BorderStyle     =   1  'Fixed Single  // Fixed Single
-// ---          BeginProperty Font 
-// ---             Name            =   "Fixedsys"
-// ---             Size            =   9
-// ---             Charset         =   0
-// ---             Weight          =   400
-// ---             Underline       =   0   'False   // False
-// ---             Italic          =   0   'False   // False
-// ---             Strikethrough   =   0   'False   // False
-// ---          EndProperty
-// ---          ForeColor       =   &H000000FF&
-// ---          Height          =   345
-// ---          Left            =   6240
-// ---          TabIndex        =   7
-// ---          Top             =   660
-// ---          Width           =   495
-// ---       End
-// ---       Begin VB.Label lblFrameCount 
-// ---          Alignment       =   2  'Center  // Center
-// ---          BorderStyle     =   1  'Fixed Single  // Fixed Single
-// ---          Caption         =   "0"
-// ---          BeginProperty Font 
-// ---             Name            =   "Fixedsys"
-// ---             Size            =   9
-// ---             Charset         =   0
-// ---             Weight          =   400
-// ---             Underline       =   0   'False   // False
-// ---             Italic          =   0   'False   // False
-// ---             Strikethrough   =   0   'False   // False
-// ---          EndProperty
-// ---          Height          =   345
-// ---          Left            =   7200
-// ---          TabIndex        =   6
-// ---          Top             =   660
-// ---          Width           =   1635
-// ---       End
-// ---    End
-// ---    Begin VB.PictureBox picViewPort 
-// ---       BorderStyle     =   0  'None  // None
-// ---       Height          =   2535
-// ---       Left            =   180
-// ---       ScaleHeight     =   169
-// ---       ScaleMode       =   3  'Pixel  // Pixel
-// ---       ScaleWidth      =   265
-// ---       TabIndex        =   0
-// ---       TabStop         =   0   'False   // False
-// ---       Top             =   180
-// ---       Width           =   3975
-// ---       Begin VB.PictureBox picPane 
-// ---          AutoSize        =   -1  'True  // True
-// ---          BackColor       =   &H00000000&
-// ---          BorderStyle     =   0  'None  // None
-// ---          DrawWidth       =   3
-// ---          Height          =   1635
-// ---          Left            =   240
-// ---          ScaleHeight     =   109
-// ---          ScaleMode       =   3  'Pixel  // Pixel
-// ---          ScaleWidth      =   129
-// ---          TabIndex        =   1
-// ---          Top             =   180
-// ---          Width           =   1935
-// ---       End
-// ---       Begin VB.PictureBox picFrame 
-// ---          Height          =   915
-// ---          Left            =   1320
-// ---          ScaleHeight     =   57
-// ---          ScaleMode       =   3  'Pixel  // Pixel
-// ---          ScaleWidth      =   81
-// ---          TabIndex        =   17
-// ---          TabStop         =   0   'False   // False
-// ---          Top             =   1200
-// ---          Width           =   1275
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menFile 
-// ---       Caption         =   "&File"
-// ---       Begin VB.Menu menNewStd 
-// ---          Caption         =   "New S&tandard Level"
-// ---       End
-// ---       Begin VB.Menu menNew 
-// ---          Caption         =   "&New Level"
-// ---       End
-// ---       Begin VB.Menu menDash5 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menOpen 
-// ---          Caption         =   "&Open"
-// ---       End
-// ---       Begin VB.Menu menSave 
-// ---          Caption         =   "&Save"
-// ---          Shortcut        =   ^S
-// ---       End
-// ---       Begin VB.Menu menSaveAs 
-// ---          Caption         =   "Save &As ..."
-// ---       End
-// ---       Begin VB.Menu menDash4 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menExit 
-// ---          Caption         =   "E&xit"
-// ---          Shortcut        =   ^Q
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menEditMain 
-// ---       Caption         =   "&Edit"
-// ---       Begin VB.Menu menEdit 
-// ---          Caption         =   "&Edit Level"
-// ---       End
-// ---       Begin VB.Menu menDash3 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menCopy 
-// ---          Caption         =   "&Copy"
-// ---          Shortcut        =   ^C
-// ---       End
-// ---       Begin VB.Menu menPaste 
-// ---          Caption         =   "&Paste"
-// ---          Shortcut        =   ^V
-// ---       End
-// ---       Begin VB.Menu menTrim 
-// ---          Caption         =   "&Trim"
-// ---          Shortcut        =   ^T
-// ---       End
-// ---       Begin VB.Menu menDash8 
-// ---          Caption         =   "-"
-// ---          Index           =   1
-// ---       End
-// ---       Begin VB.Menu menSelectAll 
-// ---          Caption         =   "Select &All"
-// ---          Shortcut        =   ^A
-// ---       End
-// ---       Begin VB.Menu menDash6 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menRestoreBorder 
-// ---          Caption         =   "Restore &border"
-// ---          Shortcut        =   ^B
-// ---       End
-// ---       Begin VB.Menu menSp 
-// ---          Caption         =   "Special Port"
-// ---          Begin VB.Menu menGravOn 
-// ---             Caption         =   "&Gravity On"
-// ---          End
-// ---          Begin VB.Menu menZonkOn 
-// ---             Caption         =   "Freeze &Zonks On"
-// ---          End
-// ---          Begin VB.Menu menEnOn 
-// ---             Caption         =   "Freeze &Enemies On"
-// ---          End
-// ---          Begin VB.Menu menDash7 
-// ---             Caption         =   "-"
-// ---          End
-// ---          Begin VB.Menu menGravOff 
-// ---             Caption         =   "Gravity &Off"
-// ---          End
-// ---          Begin VB.Menu menZonkOff 
-// ---             Caption         =   "Freeze Zon&ks Off"
-// ---          End
-// ---          Begin VB.Menu menEnOff 
-// ---             Caption         =   "Freeze E&nemies Off"
-// ---          End
-// ---          Begin VB.Menu menDash10 
-// ---             Caption         =   "-"
-// ---          End
-// ---          Begin VB.Menu menRemSP 
-// ---             Caption         =   "&Remove (Make Normal Port)"
-// ---          End
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menView 
-// ---       Caption         =   "&View"
-// ---       Begin VB.Menu menZoom 
-// ---          Caption         =   "&Zoom"
-// ---          Begin VB.Menu menStretch 
-// ---             Caption         =   "0.25 : 1"
-// ---             Index           =   1
-// ---          End
-// ---       End
-// ---       Begin VB.Menu menBorder 
-// ---          Caption         =   "Show &Border"
-// ---          Checked         =   -1  'True  // True
-// ---       End
-// ---       Begin VB.Menu menPanel 
-// ---          Caption         =   "Show &Panel"
-// ---          Checked         =   -1  'True  // True
-// ---       End
-// ---       Begin VB.Menu menAutoScroll 
-// ---          Caption         =   "&Autoscroll"
-// ---          Checked         =   -1  'True  // True
-// ---       End
-// ---       Begin VB.Menu menDash9 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menShowLInfo 
-// ---          Caption         =   "Show Level &Info"
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menSound 
-// ---       Caption         =   "&Sound"
-// ---       Begin VB.Menu menSoundFX 
-// ---          Caption         =   "&FX"
-// ---       End
-// ---       Begin VB.Menu menMusic 
-// ---          Caption         =   "&Music"
-// ---          Enabled         =   0   'False   // False
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menSpeed 
-// ---       Caption         =   "Speed"
-// ---       Begin VB.Menu menSpeedPlay 
-// ---          Caption         =   "Game play"
-// ---          Index           =   11
-// ---          Begin VB.Menu menPlaySpeed 
-// ---             Caption         =   "1"
-// ---             Index           =   1
-// ---          End
-// ---       End
-// ---       Begin VB.Menu menSpeedDemo 
-// ---          Caption         =   "Demo playback"
-// ---          Begin VB.Menu menDemoSpeed 
-// ---             Caption         =   "1"
-// ---             Index           =   1
-// ---          End
-// ---       End
-// ---       Begin VB.Menu menSpeedDash 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menFaster 
-// ---          Caption         =   "Faster (Pg Up)"
-// ---       End
-// ---       Begin VB.Menu menSlower 
-// ---          Caption         =   "Slower (Pg Down)"
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menRun 
-// ---       Caption         =   "&Play"
-// ---       Begin VB.Menu menPlay 
-// ---          Caption         =   "P&lay Game    (Space)"
-// ---       End
-// ---       Begin VB.Menu menPause 
-// ---          Caption         =   "&Pause    (P)"
-// ---          Enabled         =   0   'False   // False
-// ---       End
-// ---       Begin VB.Menu menStop 
-// ---          Caption         =   "&Stop    (Q)"
-// ---          Enabled         =   0   'False   // False
-// ---       End
-// ---       Begin VB.Menu menDash0 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menRec 
-// ---          Caption         =   "&Record Demo    (Ctrl+R)"
-// ---       End
-// ---       Begin VB.Menu menPlayDemo 
-// ---          Caption         =   "Play &Demo    (Ctrl+Space)"
-// ---       End
-// ---       Begin VB.Menu menPlayAll 
-// ---          Caption         =   "Play &All Demos"
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menOptionsMain 
-// ---       Caption         =   "&Options"
-// ---       Begin VB.Menu menOptions 
-// ---          Caption         =   "&Options ..."
-// ---       End
-// ---    End
-// ---    Begin VB.Menu menHelp 
-// ---       Caption         =   "Help"
-// ---       Begin VB.Menu menToolTips 
-// ---          Caption         =   "Show &ToolTips"
-// ---       End
-// ---       Begin VB.Menu menDash1 
-// ---          Caption         =   "-"
-// ---       End
-// ---       Begin VB.Menu menAbout 
-// ---          Caption         =   "&About MegaPlex"
-// ---       End
-// ---    End
-// --- End
-
-// static char *VB_Name = "MainForm";
-// static boolean VB_GlobalNameSpace = False;
-// static boolean VB_Creatable = False;
-// static boolean VB_PredeclaredId = True;
-// static boolean VB_Exposed = False;
-
-// --- Option Explicit
-// --- Option Compare Text
-
-#if 0
-
-long SetParent(long hWndChild, long hWndNewParent);
-long SetWindowLong(long hWnd, long nIndex, long dwNewLong);
-long GetWindowLong(long hWnd, long nIndex);
-#if 0
-long GetTempPath(long nBufferLength, char *lpBuffer);
-#endif
-long GetWindowText(long hWnd, char *lpString, long cch);
-
-#endif
-
-#if 0
-
-#define GWL_STYLE                      ((-16))
-#define WS_CHILD                       (0x40000000)
-#define WS_POPUP                       (0x80000000)
-
-#endif
-
-// [UNCOMMENTED] Dim StretchWidth2&
-
-char *MpxBmp;
-int OldPointer;
-long OSX, OSY, MDX, MDY;
-int MouseButton;
-
-int PanelSeq;
-
-boolean Loaded, DemosAvailable;
-
-#define nSpeedCount                    (17)
-int SpeedsByDelayUS[nSpeedCount + 1];
-#define DefaultSpeedIndex                      (12)
-
-currency LastTick, LastFrame;
-TickCountObject T;
-
-const char *AppTitle = "MegaPlex";
-
-#if 0
-
-static char *GetSpeedDescriptionFPS(currency FrameDelayUS)
-{
-  static char *GetSpeedDescriptionFPS;
-
-  long FPS;
-
-  if (FrameDelayUS == 0)
-  {
-    GetSpeedDescriptionFPS = "Fastest possible";
-    return GetSpeedDescriptionFPS;
-  }
-
-  if (FrameDelayUS < 0)
-  {
-    GetSpeedDescriptionFPS = "! display (even faster)";
-    return GetSpeedDescriptionFPS;
-  }
-
-  FPS = 1000000 / FrameDelayUS;
-  GetSpeedDescriptionFPS = CAT(INT_TO_STR(FPS), " fps");
-  if (35 == FPS)
-    GetSpeedDescriptionFPS = CAT(GetSpeedDescriptionFPS, "(Default)");
-
-  return GetSpeedDescriptionFPS;
-}
-
-static int InitSpeeds()
-{
-  static int InitSpeeds;
-
-  SpeedsByDelayUS[1] = -1;  // no display
-  SpeedsByDelayUS[2] = 0; // fastest possible
-  SpeedsByDelayUS[3] = 1000000 / 700; // 700 fps
-  SpeedsByDelayUS[4] = 1000000 / 500; // 500 fps
-  SpeedsByDelayUS[5] = 1000000 / 350; // 350 fps
-  SpeedsByDelayUS[6] = 1000000 / 250; // 250 fps
-  SpeedsByDelayUS[7] = 1000000 / 200; // etc.
-  SpeedsByDelayUS[8] = 1000000 / 150;
-  SpeedsByDelayUS[9] = 1000000 / 100;
-  SpeedsByDelayUS[10] = 1000000 / 70;
-  SpeedsByDelayUS[11] = 1000000 / 50;
-  SpeedsByDelayUS[12] = 1000000 / 35; // default
-  SpeedsByDelayUS[13] = 1000000 / 25;
-  SpeedsByDelayUS[14] = 1000000 / 20;
-  SpeedsByDelayUS[15] = 1000000 / 10;
-  SpeedsByDelayUS[16] = 1000000 / 5;
-  SpeedsByDelayUS[17] = 1000000 / 1;
-
-  return InitSpeeds;
-}
-
-static int GetSpeedIndex(long DelayUS)
-{
-  static int GetSpeedIndex;
-
-  int i;
-  long Diff, MinDiff;
-  int MinIdx;
-
-  MinIdx = DefaultSpeedIndex;
-  MinDiff = 1000000;
-  for (i = 1; i <= nSpeedCount; i++)
-  {
-    Diff = Abs(DelayUS - SpeedsByDelayUS[i]);
-    if (Diff < MinDiff)
-    {
-      MinDiff = Diff;
-      MinIdx = i;
-    }
-  }
-
-  GetSpeedIndex = MinIdx;
-
-  return GetSpeedIndex;
-}
-
-static long Get_LastOpenFilter()
-{
-  static long LastOpenFilter;
-
-  SettingsObject s;
-
-  LastOpenFilter = s.Read("LastOpenFilter", 1);
-
-  return LastOpenFilter;
-}
-
-static void Let_LastOpenFilter(long NewVal)
-{
-  SettingsObject s;
-
-  SettingsObject_Save("LastOpenFilter", NewVal);
-}
-
-static long Get_LastSaveFilter()
-{
-  static long LastSaveFilter;
-
-  SettingsObject s;
-
-  LastSaveFilter = s.Read("LastSaveFilter", 1);
-
-  return LastSaveFilter;
-}
-
-static void Let_LastSaveFilter(long NewVal)
-{
-  SettingsObject s;
-
-  SettingsObject_Save("LastSaveFilter", NewVal);
-}
-
-#endif
-
-static void CountDown(long HalfSeconds, int bDisplayBar)
-{
-
-#if 0
-
-  long i;
-  int k;
-  long dT, Delta;
-  long LeftPos, TopPos, RightPos, MaxWidth; // , MaxHeight&
-
-  dT = HalfSeconds * 500;
-  Delta = dT / 200;
-  LeftPos = cmbFile.left;
-  TopPos = cmbFile.top - shpProgress.Height - cmbFile.top / 8;
-  RightPos = lblFrameCount.left + lblFrameCount.Width;
-  MaxWidth = RightPos - LeftPos;
-  // MaxHeight = lblFrameCount.Top - TopPos + lblFrameCount.Height + 4
-  if (bDisplayBar)
-  {
-    shpProgress.Move(LeftPos, TopPos, 0); // , MaxHeight
-    shpProgress.Visible = True;
-  }
-
-  for (i = 1; i <= 200; i++)
-  {
-    // lblFrameCount = i
-    if (bDisplayBar)
-    {
-      if (i < 101)
-      {
-        shpProgress.Width = MaxWidth * i / 100;
-      }
-      else
-      {
-        k = MaxWidth * (i - 100) / 100;
-        shpProgress.Move(k, TopPos, RightPos - k);
-      }
-    }
-
-    T.DelayMS(Delta, False);
-  }
-
-  shpProgress.Visible = False;
-  // lblFrameCount = 0
-
-#endif
-
-}
-
-#if 0
-
-static char *GetValidTempPath()
-{
-  static char *GetValidTempPath;
-
-  char *TP;
-  long nSize, L;
-
-  GetValidTempPath = "";
-  nSize = 255;
-  TP = String(nSize, Chr(32));
-  L = GetTempPath(nSize, TP);
-  if (nSize < L)
-  {
-    // buffer was too small, retry with a properly sized buffer:
-    nSize = L;
-    TP = String(nSize, Chr(32));
-    L = GetTempPath(nSize, TP);
-  }
-
-  TP = SlashLess(left(TP, L));
-  if ((0 == L) || (! IsDir(TP)))
-  {
-    // no valid temp path can be retrieved from the system --> create our own
-    TP = CAT(WithSlash(App.Path), "Temp");
-    if (! IsDir(TP))
-    {
-
-      // --- On Error Resume Next
-      MkDir(TP);
-      if (! IS_NOTHING(&Err, sizeof(Err)))
-      {
-        MESSAGE_BOX("an error occured"); // MsgBox "cannot create directory for temporary files " & TP, vbCritical, "MegaPlex - Error";
-        return GetValidTempPath;
-      }
-
-      // --- On Error GoTo 0
-
-    }
-  }
-
-  if (IsDir(TP))
-    GetValidTempPath = TP;
-
-  return GetValidTempPath;
-}
-
-static char *GetMyTempFileName()
-{
-  static char *GetMyTempFileName;
-
-  char *T;
-
-  (char *)T = Hex(hWnd);
-  while (Len(T) < 8)
-  {
-    T = CAT("0", T);
-  }
-
-  GetMyTempFileName = CAT("tmp0x", CAT((char *)T, ".mpx"));
-
-  return GetMyTempFileName;
-}
-
-static long GetHwndFromTempFileName(char *TmpFile)
-{
-  static long GetHwndFromTempFileName;
-
-  char *FN;
-  long LP;
-  int L;
-  char *NumString;
-
-  GetHwndFromTempFileName = 0;
-  FN = StripFileName(TmpFile);
-  LP = Len("tmp0x");
-  L = Len(TmpFile);
-  if (LP < L)
-    return GetHwndFromTempFileName;
-
-  L = L - LP;
-  NumString = right(FN, L - LP);
-  if (8 < L)
-    NumString = left(NumString, 8);
-
-  NumString = CAT("&H", NumString);
-  GetHwndFromTempFileName = Val(NumString);
-
-  return GetHwndFromTempFileName;
-}
-
-static void CleanTempDir(char *TmpDir)
-{
-  char *FN, *MFN;
-
-  MFN = GetMyTempFileName();
-  MayKill(CAT(WithSlash(TmpDir), MFN));
-  FN = Dir(CAT(WithSlash(TmpDir), "tmp0x*.mpx"));
-  while (FN != "")
-  {
-    if (STRING_IS_LIKE(FN, "tmp0x*.mpx"))
-    {
-      if (! InstanceStillRunning(FN))
-        MayKill(CAT(WithSlash(TmpDir), FN));
-    }
-
-    FN = Dir_Without_Args();
-  }
-}
-
-static boolean InstanceStillRunning(char *TmpFile)
-{
-  static boolean InstanceStillRunning;
-
-  long OtherHwnd, nSize, L;
-  char *Cap;
-
-  InstanceStillRunning = False;
-  OtherHwnd = GetHwndFromTempFileName(TmpFile);
-  nSize = 255;
-  Cap = String(nSize, Chr(32));
-  L = GetWindowText(OtherHwnd, Cap, nSize);
-  if ((L == 0) || (nSize < L))
-    return InstanceStillRunning;
-
-  if (STRING_IS_LIKE(Cap, CAT(AppTitle, "*")))
-    InstanceStillRunning = True;
-
-  return InstanceStillRunning;
-}
-
-#endif
+boolean Loaded;
 
 void DrawFrameIfNeeded()
 {
@@ -1019,7 +21,7 @@ void DrawFrameIfNeeded()
 
   /* !!! CHECK THIS !!! */
 #if 1
-  if (! menBorder.Checked)
+  if (! menBorder)
     DrawFrame(1);
 #endif
 }
@@ -1028,11 +30,6 @@ void DisplayLevel()
 {
   int X, Y;
 
-#if 0
-  printf("::: MainForm.c: DisplayLevel(): %d, %d, %d\n",
-        Loaded, LevelLoaded, bPlaying);
-#endif
-
   if (! Loaded)
     return;
 
@@ -1051,7 +48,7 @@ void DisplayLevel()
 
   /* !!! CHECK THIS !!! */
 #if 1
-  if (! menBorder.Checked)
+  if (! menBorder)
     DrawFrame(1);
 #endif
 
@@ -1086,2104 +83,152 @@ void DisplayLevel()
     {
       for (X = DisplayMinX; X <= DisplayMaxX; X++)
       {
-        DrawField(X, Y);
-      }
-    }
-  }
-}
-
-#if 0
-
-static void cmbFile_Click()
-{
-  CurPath = CAT(StripDir(OrigPath), CAT("/", cmbFile.List(cmbFile.ListIndex)));
-  OrigPath = CurPath;
-  FillLevelList(CurPath, LevelNumber);
-  if (STRING_IS_LIKE(OrigPath, "*.mpx") || STRING_IS_LIKE(OrigPath, "*.sp"))
-  {
-    menSave.Enabled = True;
-  }
-  else
-  {
-    menSave.Enabled = False;
-  }
-}
-
-static void cmbFile_KeyDown(int KeyCode, int Shift)
-{
-  picPane_KeyDown(KeyCode, Shift);
-}
-
-static void cmbFile_KeyUp(int KeyCode, int Shift)
-{
-  picPane_KeyUp(KeyCode, Shift);
-}
-
-static int GetFileNameToSave()
-{
-  static int GetFileNameToSave;
-
-  char *T;
-
-  (char *)T = StripFileName(OrigPath);
-  if (STRING_IS_LIKE(T, "*.dat") || STRING_IS_LIKE(T, "*.d##"))
-  {
-    T = "Level" & Format(LevelNumber, "#000");
-  }
-
-  GetFileNameToSave = T;
-
-  return GetFileNameToSave;
-}
-
-static void cmbLevel_Click()
-{
-  long InfoCount;
-  boolean Oldflag;
-  int Msg;
-  static long LastIndex = 0;
-  static boolean bBlock = False;
-
-  if (bBlock)
-    return;
-
-  // //////////////////////////////////////////////////////////////////
-  if (ModifiedFlag)
-  {
-    VbMsgBoxResult Res;
-
-    Msg = "Save changes to " & GetFileNameToSave() & " ?";
-    Res = MsgBox(Msg, vbYesNoCancel, AppTitle & " - close level");
-    if (Res == vbCancel) // fallback
-    {
-      bBlock = True;
-
-      // --- On Error Resume Next
-      cmbLevel.ListIndex = LastIndex;
-      // --- On Error GoTo 0
-
-      bBlock = False;
-      Debug.Assert cmbLevel.ListIndex = LastIndex;
-      return;
-    }
-
-    if (Res == vbYes)
-    {
-      // Dim oldCurPath$
-      // oldCurPath = CurPath
-      if (FileExists(OrigPath) && menSave.Enabled)
-      {
-        menSave_Click();
-      }
-      else
-      {
-        if (! SaveAs()) // fallback
-        {
-          bBlock = True;
-
-          // --- On Error Resume Next
-          cmbLevel.ListIndex = LastIndex;
-          // --- On Error GoTo 0
-
-          bBlock = False;
-          Debug.Assert cmbLevel.ListIndex = LastIndex;
-          return;
-        }
-      }
-
-      // CurPath = oldCurPath
-    }
-
-    Let_ModifiedFlag(False);
-    CurPath = OrigPath;
-  }
-
-  // //////////////////////////////////////////////////////////////////
-  {
-    LevelNumber = cmbLevel.ListIndex + 1;
-    DemoFlag = False;
-    if (Loaded)
-    {
-      Oldflag = NoDisplayFlag;
-      NoDisplayFlag = False;
-      subFetchAndInitLevel();
-      if ((0 < SignatureDelay) && ! (WindowState == vbMinimized))
-      {
-        Msg = LInfo.LevelTitle & vbNewLine & "(" & FieldWidth & " x " & FieldHeight & ")";
-        if (DemoAvailable && bSignatureAvailable)
-          Msg = Msg & vbNewLine & vbNewLine & gSignature;
-
-        SignatureForm.Signature = Msg;
-        SignatureForm.DelayMS = SignatureDelay;
-        int X, Y;
-
-        X = left + (Width - SignatureForm.Width) / 2;
-        Y = top + (Height - SignatureForm.Height) / 2;
-        SignatureForm.Move X, Y;
-        SignatureForm.Show vbModeless, Me;
-        Me.SetFocus;
-      }
-
-      lblStatus = "MegaPlex";
-      lblFrameCount = GetTotalFramesOfDemo();
-      if (EditFlag)
-        EdAll();
-
-      ReStretch(Stretch);
-      // picPane_Paint
-      Stage.Blt();
-      NoDisplayFlag = Oldflag;
-      LastIndex = cmbLevel.ListIndex;
-    }
-
-  }
-  menPlayDemo.Enabled = DemoAvailable;
-  cmdPlayDemo.Enabled = DemoAvailable;
-}
-
-static void cmblevel_KeyDown(int KeyCode, int Shift)
-{
-  if (GameLoopRunning != 0)
-    return;
-
-  switch (KeyCode)
-  {
-    case vbKeySpace:
-      if (menPlay.Enabled == True)
-        menPlay_Click();
-
-      break;
-
-    default:
-      picPane_KeyDown(KeyCode, Shift);
-      break;
-  }
-}
-
-static void cmbLevel_KeyUp(int KeyCode, int Shift)
-{
-  picPane_KeyUp(KeyCode, Shift);
-}
-
-static void cmdPause_Click()
-{
-  menPause_Click();
-}
-
-static void cmdPause_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void cmdPlay_Click()
-{
-  if (menPlay.Enabled)
-    menPlay_Click();
-}
-
-static void cmdPlay_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void cmdPlayAll_Click()
-{
-  menPlayAll_Click();
-}
-
-static void cmdPlayAll_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void cmdPlayDemo_Click()
-{
-  menPlayDemo_Click();
-}
-
-static void cmdPlayDemo_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void cmdRecordDemo_Click()
-{
-  if (menRec.Enabled)
-    menRec_Click();
-}
-
-static void cmdRecordDemo_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void cmdStop_Click()
-{
-  if (menStop.Enabled)
-    menStop_Click();
-}
-
-static void cmdStop_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void FocusTim_Timer()
-{
-  FocusTim.Enabled = False;
-
-  // --- On Error Resume Next
-  picPane.SetFocus;
-}
-
-static void Form_KeyDown(int KeyCode, int Shift)
-{
-  picPane_KeyDown(KeyCode, Shift);
-}
-
-static void Form_KeyUp(int KeyCode, int Shift)
-{
-  picPane_KeyUp(KeyCode, Shift);
-}
-
-#endif
-
-void Form_Load()
-{
-#if 0
-
-  long i;
-  SettingsObject s;
-
-#endif
-
-  Loaded = False;
-  DemoFlag = 0;
-  PanelSeq = 0;
-  EditFlag = False;
-  EditMode = edMove;
-  // FMark = New MarkerObject; // (handle this later, if needed)
-
-  InitGlobals();
-
-#if 0
-
-  LoadMenus();
-
-  TmpPath = GetValidTempPath();
-  if (TmpPath == "")
-    exit(-1);
-
-  CleanTempDir(TmpPath);
-  TmpPath = CAT(WithSlash(TmpPath), GetMyTempFileName());
-  GetSettings();
-  ShowPanel = 1;
-
-  InitDirectX(hWnd, picPane.hWnd);
-
-  //  AllowRedDiskCheat = 1
-  MpxBmp = CAT(App.Path, "/mpx.bmp");
-  // // Set NormalSprites = New DDSpriteBuffer // (handle this later, if needed)
-  // NormalSprites.CreateFromFile MPXBMP, 16, 16
-
-  Field = REDIM_2D(sizeof(int), 0, 2 + 1 - 1, 0, 2 + 1 - 1);
-
-  picViewPort.ScaleMode = vbPixels;
-
-#endif
-
-  PauseMode = 0;
-  //  BaseWidth = 16
-
-#if 1
-  if (0)
-    menBorder_Click();
-#endif
-
-  Loaded = True;
-
-  ReStretch(Stretch);
-
-#if 0
-
-  LoadKeyIndicators();
-
-  Show();
-
-  FillFileList(CurPath);
-  if (s.Read("ShowSplash", True))
-  {
-    // frmSplash.EnableTimer
-    frmSplash.Show vbModal, Me;
-  }
-
-#endif
-}
-
-#if 0
-
-static void FillLevelList(char *Path, int LevelIndex)
-{
-  long FNum, LevLen, i, iMax;
-  char *TFile;
-
-  cmbLevel.Clear;
-  if (! FileExists(Path))
-    return;
-
-  if ((STRING_IS_LIKE(Path, "*.D??")) || (STRING_IS_LIKE(Path, "*.sp")))
-  {
-    FNum = FreeFile();
-    LevLen = 1536;
-    FNum = fopen(Path, "rb");
-    {
-      i = 0;
-      FILE_GET(FNum, (long)1441 + i * LevLen, &LInfo, sizeof(LInfo));
-      cmbLevel.AddItem Format(i + 1, "#000") & "   " & LInfo.LevelTitle, i;
-      if (STRING_IS_LIKE(Path, "*.D??"))
-      {
-        while (!(EOF(FNum)))
-        {
-          i = i + 1;
-          FILE_GET(FNum, (long)1441 + i * LevLen, &LInfo, sizeof(LInfo));
-          if (EOF(FNum))
-            break;
-
-          cmbLevel.AddItem Format(i + 1, "#000") & "   " & LInfo.LevelTitle, i;
-        }
-      }
-
-      if (LevelIndex <= i && 0 < LevelIndex)
-        i = LevelIndex - 1;
-      else
-        i = 0;
-
-      cmbLevel.ListIndex = i;
-    }
-    fclose(FNum);
-  }
-  else if (STRING_IS_LIKE(Path, "*.mpx"))
-  {
-    FNum = FreeFile();
-    LevLen = 1536;
-    FNum = fopen(Path, "rb");
-    {
-      i = 0;
-      if (MpxOpen(Path))
-      {
-        for (i = 1; i <= LevelCount; i++)
-        {
-          if (! MpxLoadLInfo(CInt(i)))
-            break;
-
-          cmbLevel.AddItem Format(i, "#000") & "   " & LInfo.LevelTitle, i - 1;
-        }
-
-        MpxClose();
-      }
-
-      if (LevelIndex < i && 0 < LevelIndex)
-        i = LevelIndex - 1;
-      else
-        i = 0;
-
-      if (i < cmbLevel.ListCount)
-        cmbLevel.ListIndex = i;
-
-    }
-    fclose(FNum);
-  }
-}
-
-static void FillFileList(char *Path)
-{
-  long FNum, LevLen, i;
-  int nDemoCount;
-  char *TFile, *TPath, *OFile;
-
-  cmbFile.Clear;
-  i = 0;
-  nDemoCount = 0;
-  TPath = WithSlash(StripDir(Path));
-  OFile = StripFileName(Path);
-  TFile = Dir(TPath & "*.D??");
-  while (TFile != "")
-  {
-    if (FileLen(TPath & TFile) == 170496)
-    {
-      cmbFile.AddItem TFile;
-    }
-
-    TFile = Dir;
-  }
-
-  TFile = Dir(TPath & "*.SP");
-  while (TFile != "")
-  {
-    nDemoCount = nDemoCount + 1;
-    cmbFile.AddItem TFile;
-    TFile = Dir;
-  }
-
-  TFile = Dir(TPath & "*.mpx");
-  while (TFile != "")
-  {
-    nDemoCount = nDemoCount + 1;
-    cmbFile.AddItem TFile;
-    TFile = Dir;
-  }
-
-  i = cmbFile.ListCount - 1;
-  if (0 < cmbFile.ListCount)
-  {
-    do
-    {
-      if ((cmbFile.List(i) Like OFile) || i == 0)
-        break;
-
-      i = i - 1;
-    }
-    while (!(i < 1));
-
-    cmbFile.ListIndex = i;
-  }
-
-  DemosAvailable = (1 < nDemoCount);
-  menPlayAll.Enabled = DemosAvailable;
-  cmdPlayAll.Enabled = DemosAvailable;
-}
-
-static void LoadMenus()
-{
-  long i;
-
-  // speeds
-  menFaster.Enabled = False;
-  menSlower.Enabled = False;
-  InitSpeeds();
-  for (i = 1; i <= nSpeedCount; i++)
-  {
-    if (1 < i)
-    {
-      Load menPlaySpeed(i);
-      Load menDemoSpeed(i);
-    }
-
-    menPlaySpeed(i).Caption = GetSpeedDescriptionFPS(SpeedsByDelayUS[i]);
-    menDemoSpeed(i).Caption = GetSpeedDescriptionFPS(SpeedsByDelayUS[i]);
-  }
-
-  // zoom
-  menStretch(1).Caption = Format(0.25, "#0.00") & ";
-  1";
-  if (Stretch == 0.25)
-    menStretch(1).Checked = True;
-
-  for (i = 2; i <= 20; i++)
-  {
-    Load menStretch(i);
-    menStretch(i).Caption = Format(0.25 * i, "#0.00") & ";
-    1";
-    menStretch(i).Checked = ((i * 0.25) == Stretch);
-  }
-
-  menSp.Enabled = False;
-}
-
-//
-// Function DisplayShift&()
-// Dim X&, Y&, A&, B&, iX&, iiX&, LD&
-// Dim Sprite&
-//  DisplayShift = 0
-//    For A = 0 To picPane.ScaleWidth
-//      For Y = DisplayMinY To DisplayMaxY
-//        For X = DisplayMinX To DisplayMaxX
-//          iX = StretchWidth * X + A
-//          Sprite = Field(X, Y).SpritePos
-//          If picPane.ScaleWidth < (iX + 1) Then
-//            iX = iX - picPane.ScaleWidth
-//          Else
-//            If picPane.ScaleWidth < (iX + 1 + BaseWidth) Then
-//              iiX = iX - picPane.ScaleWidth
-//              Sprites.BitBltSprite picPane.hdc, iiX, StretchWidth * Y, Sprite
-//            End If
-//          End If
-//          Sprites.BitBltSprite picPane.hdc, iX, StretchWidth * Y, Sprite
-//        Next X
-//      Next Y
-//      DisplayShift = DisplayShift + 1
-//      'DoEvents
-//    Next A
-// End Function
-
-static void Form_Paint()
-{
-  // Debug.Print "Form_Paint()"
-}
-
-static void Form_Resize()
-{
-  long Space, NW, NH;
-  int Tmp;
-
-  if (WindowState == vbMinimized || ! Loaded)
-    return;
-
-  Space = Panel.left;
-  //  NW = ScaleWidth - 2 * Space: If NW < 0 Then NW = 0
-  //  NH = ScaleHeight - 3 * Space - cmbLevel.Height: If NH < 0 Then NH = 0
-  //  picViewPort.Move Space, Space, NW, NH
-  Tmp = (ShowPanel != 0 ? ScaleHeight - Panel.Height : ScaleHeight);
-  if (Tmp < 0)
-    Tmp = 0;
-
-  picViewPort.Move 0, 0, ScaleWidth, Tmp;
-  //  Tmp = 2 * Space + picViewPort.Height
-  Panel.top = Tmp;
-  Panel.left = (ScaleWidth - Panel.Width) / 2;
-  //  'cmdNormal.Top = 2 * Space + picViewPort.Height
-  //  cmbLevel.Top = Tmp
-  //  lblRedDiskCount.Top = Tmp
-  //  lblInfoCount.Top = Tmp
-  //  picKeys.Top = Tmp
-  //  lblFrameCount.Top = Tmp
-  //  cmdPlayAll.Top = Tmp
-}
-
-#endif
-
-#if 1
-
-static void DrawFrame(int Delta)
-{
-  int i, LX, tY, RX, BY;
-
-  LX = -1 + Delta;
-  tY = -1 + Delta;
-  RX = FieldWidth - Delta;
-  BY = FieldHeight - Delta;
-  DrawImage(LX, tY, imgFrameCorner);
-  DrawImage(LX, BY, imgFrameCorner);
-  DrawImage(RX, tY, imgFrameCorner);
-  DrawImage(RX, BY, imgFrameCorner);
-  for (i = LX + 1; i <= RX - 1; i++)
-  {
-    DrawImage(i, tY, imgFrameHorizontal);
-    DrawImage(i, BY, imgFrameHorizontal);
-  }
-
-  for (i = tY + 1; i <= BY - 1; i++)
-  {
-    DrawImage(LX, i, imgFrameVertical);
-    DrawImage(RX, i, imgFrameVertical);
-  }
-}
-
-#else
-
-static void DrawFrame(int Delta)
-{
-  int i, LX, tY, RX, BY;
-
-  LX = -1 + Delta;
-  tY = -1 + Delta;
-  RX = FieldWidth - Delta;
-  BY = FieldHeight - Delta;
-  DrawSprite(LX, tY, posFrameCorner);
-  DrawSprite(LX, BY, posFrameCorner);
-  DrawSprite(RX, tY, posFrameCorner);
-  DrawSprite(RX, BY, posFrameCorner);
-  for (i = LX + 1; i <= RX - 1; i++)
-  {
-    DrawSprite(i, tY, posFrameHorizontal);
-    DrawSprite(i, BY, posFrameHorizontal);
-  }
-
-  for (i = tY + 1; i <= BY - 1; i++)
-  {
-    DrawSprite(LX, i, posFrameVertical);
-    DrawSprite(RX, i, posFrameVertical);
-  }
-}
-
-#endif
-
-static void RestoreFrame()
-{
-  int i, LX, tY, RX, BY;
-
-  LX = 0;
-  tY = 0;
-  RX = FieldWidth - 1;
-  BY = FieldHeight - 1;
-  for (i = LX; i <= RX; i++)
-  {
-    DrawField(i, tY);
-    DrawField(i, BY);
-  }
-
-  for (i = tY + 1; i <= BY - 1; i++)
-  {
-    DrawField(LX, i);
-    DrawField(RX, i);
-  }
-}
-
-#if 0
-
-static void Form_Unload(int Cancel)
-{
-  EndFlag = True;
-  ExitToMenuFlag = 1;
-  if (cmdPlayAll.STRING_IS_LIKE(Caption, "Quit*"))
-  {
-    cmdPlayAll_Click();
-  }
-
-  if (menEdit.Checked)
-    menEdit_Click();
-
-  if (ModifiedFlag)
-  {
-    char *Msg;
-    VbMsgBoxResult Res;
-
-    Msg = "Save changes to " & GetFileNameToSave() & " ?";
-    Res = MsgBox(Msg, vbYesNoCancel, AppTitle & " - closing");
-    if (Res == vbCancel)
-    {
-      Cancel = -1;
-      return;
-    }
-
-    if (Res == vbYes)
-    {
-      if (FileExists(OrigPath) && menSave.Enabled)
-      {
-        menSave_Click();
-      }
-      else
-      {
-        menSaveAs_Click();
-      }
-    }
-  }
-
-  if (FileExists(TmpPath) || ModifiedFlag)
-  {
-    MayKill(TmpPath);
-    CurPath = OrigPath;
-  }
-
-  ReleaseDirectDraw();
-  SaveSettings();
-  End;
-}
-
-static void fpsTim_Timer()
-{
-  currency TickDiff;
-  static int count5 = 0;
-
-  count5 = count5 + 1;
-  if (4 < count5)
-  {
-    TickDiff = T.TickDiffUS(LastTick);
-    lblFps.Caption = CLng(Round((1000000 * (TimerVar - LastFrame)) / (TickDiff), 0));
-    LastFrame = TimerVar;
-    LastTick = T.TickNow();
-    count5 = 0;
-  }
-
-  // If NoDisplayFlag Then lblFrameCount = TimerVar
-  lblFrameCount = TimerVar;
-}
-
-static void menAbout_Click()
-{
-  frmSplash.Show vbModal, Me;
-}
-
-static void menAutoScroll_Click()
-{
-  {
-    menAutoScroll.Checked = ! menAutoScroll.Checked;
-    AutoScrollFlag = menAutoScroll.Checked;
-  }
-}
-
-#endif
-
-static void menBorder_Click()
-{
-  if (menBorder.Checked)
-  {
-    menBorder.Checked = False;
-    DisplayMinX = 1;
-    DisplayMaxX = FieldWidth - 2;
-    DisplayWidth = FieldWidth;
-    DisplayMinY = 1;
-    DisplayMaxY = FieldHeight - 2;
-    DisplayHeight = FieldHeight;
-
-    if (Loaded && LevelLoaded)
-      DrawFrame(1);
-
-  }
-  else
-  {
-    menBorder.Checked = True;
-    DisplayMinX = 0;
-    DisplayMaxX = FieldWidth - 1;
-    DisplayWidth = FieldWidth + 2;
-    DisplayMinY = 0;
-    DisplayMaxY = FieldHeight - 1;
-    DisplayHeight = FieldHeight + 2;
-
-    if (Loaded && LevelLoaded)
-      RestoreFrame();
-  }
-
-  ReStretch(Stretch);
-  // DisplayLevel True
-}
-
-void SetDisplayRegion()
-{
-  if (! menBorder.Checked)
-  {
-    DisplayMinX = 1;
-    DisplayMaxX = FieldWidth - 2;
-    DisplayWidth = FieldWidth;
-    DisplayMinY = 1;
-    DisplayMaxY = FieldHeight - 2;
-    DisplayHeight = FieldHeight;
-
-    if (LevelLoaded)
-      DrawFrame(1);
-
-  }
-  else
-  {
-    DisplayMinX = 0;
-    DisplayMaxX = FieldWidth - 1;
-    DisplayWidth = FieldWidth + 2;
-    DisplayMinY = 0;
-    DisplayMaxY = FieldHeight - 1;
-    DisplayHeight = FieldHeight + 2;
-
-    if (LevelLoaded)
-      RestoreFrame();
-  }
-}
-
-#if 0
-
-static void menCopy_Click()
-{
-  FMark.Copy;
-}
-
-void menEdit_Click()
-{
-  long L;
-
-  if (menEdit.Checked)
-  {
-    menEdit.Checked = False;
-    // leave edit mode
-    if (EditFlag)
-      Unload ToolBox;
-
-    EditFlag = False;
-    UnEdAll();
-    FMark.ShowMarker False;
-    picViewPort.MousePointer = 0;
-    if (ModifiedFlag)
-    {
-      if (! STRING_IS_LIKE(CurPath, TmpPath))
-      {
-        OrigPath = CurPath;
-        CurPath = TmpPath;
-      }
-
-      SaveMPX(TmpPath);
-    }
-
-    DisplayLevel();
-    Stage.Blt();
-  }
-  else
-  {
-    if (! LevelLoaded)
-    {
-      Beep();
-      return;
-    }
-
-    if (ModifiedFlag)
-    {
-      if (! STRING_IS_LIKE(CurPath, TmpPath))
-      {
-        OrigPath = CurPath;
-        CurPath = TmpPath;
-      }
-
-      SaveMPX(TmpPath);
-    }
-
-    subFetchAndInitLevel();
-    menEdit.Checked = True;
-    // enter edit mode
-    EditFlag = True;
-    // ScaleMode = vbTwips
-    ToolBox.Move (Width - ToolBox.Width) / 2, Height - ToolBox.Height;
-    // ScaleMode = vbPixels
-    //    L = GetWindowLong(ToolBox.hWnd, GWL_STYLE)
-    //    L = L And (Not WS_POPUP)
-    //    L = L Or WS_CHILD
-    //    SetWindowLong ToolBox.hWnd, GWL_STYLE, L
-    //    SetParent ToolBox.hWnd, hWnd
-    ToolBox.Show vbModeless, Me;
-    EdAll();
-    DisplayLevel();
-    Stage.Blt();
-    FMark.ShowMarker True;
-  }
-}
-
-static void menEnOff_Click()
-{
-  menEnOn.Checked = False;
-  menEnOff.Checked = True;
-  SpSaveMenu();
-  SpLoadMenu();
-}
-
-static void menEnOn_Click()
-{
-  menEnOn.Checked = True;
-  menEnOff.Checked = False;
-  SpSaveMenu();
-  SpLoadMenu();
-}
-
-static void menExit_Click()
-{
-  Unload Me;
-}
-
-static void menFaster_Click()
-{
-  int i;
-
-  if (! bPlaying)
-  {
-    Debug.Assert(False);
-    return;
-  }
-
-  if (DemoFlag != 0) // demoplayback
-  {
-    i = GetSpeedIndex(DeltaTDemo);
-    i = i - 1;
-    If i < 2 Then i = 2;
-    menDemoSpeed_Click (i);
-  }
-  else
-  {
-    i = GetSpeedIndex(DeltaTPlay);
-    i = i - 1;
-    If i < 2 Then i = 2;
-    menPlaySpeed_Click (i);
-  }
-}
-
-static void menSlower_Click()
-{
-  int i;
-
-  if (! bPlaying)
-  {
-    Debug.Assert(False);
-    return;
-  }
-
-  if (DemoFlag != 0) // demoplayback
-  {
-    i = GetSpeedIndex(DeltaTDemo);
-    i = i + 1;
-    If nSpeedCount < i Then i = nSpeedCount;
-    menDemoSpeed_Click (i);
-  }
-  else
-  {
-    i = GetSpeedIndex(DeltaTPlay);
-    i = i + 1;
-    If nSpeedCount < i Then i = nSpeedCount;
-    menPlaySpeed_Click (i);
-  }
-}
-
-void menPlaySpeed_Click(int Index)
-{
-  int i;
-
-  //  If NoDisplayFlag And (GameLoopRunning <> 0) Then
-  //    NoDisplayFlag = False
-  //    DisplayLevel
-  //  End If
-  //  NoDisplayFlag = False
-  for (i = menPlaySpeed.LBound; i <= menPlaySpeed.UBound; i++)
-  {
-    {
-      menPlaySpeed(i).Checked = (Index == i);
-    }
-  }
-
-  BlockingSpeed = False;
-  DeltaTPlay = SpeedsByDelayUS[Index];
-  UpdateDeltaT();
-  //  If DeltaTPlay < 0 Then
-  //    Stage.Blt
-  //    DeltaT = 0
-  //    NoDisplayFlag = True
-  //  End If
-}
-
-void menDemoSpeed_Click(int Index)
-{
-  int i;
-
-  //  If NoDisplayFlag And (GameLoopRunning <> 0) Then
-  //    NoDisplayFlag = False
-  //    DisplayLevel
-  //  End If
-  NoDisplayFlag = False;
-  for (i = menDemoSpeed.LBound; i <= menDemoSpeed.UBound; i++)
-  {
-    {
-      menDemoSpeed(i).Checked = (Index == i);
-    }
-  }
-
-  BlockingSpeed = False;
-  DeltaTDemo = SpeedsByDelayUS[Index];
-  UpdateDeltaT();
-  //  If DeltaTPlay < 0 Then
-  //    Stage.Blt
-  //    DeltaT = 0
-  //    NoDisplayFlag = True
-  //  End If
-}
-
-static void UpdateDeltaT()
-{
-  if (! bPlaying)
-    return;
-
-  DeltaT = (DemoFlag != 0 ? DeltaTDemo : DeltaTPlay);
-  if (DeltaT < 0)
-  {
-    Stage.Blt();
-    DeltaT = 0;
-    NoDisplayFlag = True;
-  }
-  else
-  {
-    if (NoDisplayFlag && GameLoopRunning != 0)
-    {
-      NoDisplayFlag = False;
-      DisplayLevel();
-    }
-    else
-    {
-      NoDisplayFlag = False;
-    }
-  }
-}
-
-static void menGravOff_Click()
-{
-  menGravOn.Checked = False;
-  menGravOff.Checked = True;
-  SpSaveMenu();
-  SpLoadMenu();
-}
-
-static void menGravOn_Click()
-{
-  menGravOn.Checked = True;
-  menGravOff.Checked = False;
-  SpSaveMenu();
-  SpLoadMenu();
-}
-
-static void menNew_Click()
-{
-  NewForm.Show vbModal, Me;
-  CreateLevel(FieldWidth, FieldHeight);
-  ReStretch(Stretch);
-}
-
-static void menNewStd_Click()
-{
-  CreateLevel(60, 24);
-  ReStretch(Stretch);
-}
-
-static void menOpen_Click()
-{
-  long LFilt;
-
-  {
-    // cmDlg.DefaultExt = "sp"
-
-    /*
-
-    (prevent compiler warning here due to suspected use of trigraph)
-
-    cmDlg.Filter = "All Levels (*.DAT;*.D??;*.sp;*.mpx)|*.DAT;*.D??;*.sp;*.mpx|MegaPlex Levels (*.mpx)|*.mpx" & "|Supaplex Level Sets (*.DAT;*.D??)|*.DAT;*.D??|SpeedFix Demos (*.sp)|*.sp";
-    */
-
-    LFilt = LastOpenFilter;
-    cmDlg.FilterIndex = (0 < LFilt & LFilt < 5 ? LFilt : 1);
-    if (FileExists(CurPath))
-      cmDlg.InitDir = WithSlash(StripDir(CurPath));
-
-    cmDlg.flags = cdlOFNHideReadOnly | cdlOFNLongNames;
-  }
-
-  // --- On Error GoTo menOpenEH
-  cmDlg.ShowOpen;
-  // --- On Error GoTo 0
-
-  LFilt = cmDlg.FilterIndex;
-  LastOpenFilter = LFilt;
-  CurPath = cmDlg.FileName;
-  OrigPath = CurPath;
-  FillFileList (CurPath);
-
-menOpenEH:
-}
-
-static void menOptions_Click()
-{
-  OptionsForm oFrm;
-
-  oFrm.Show vbModal, Me;
-  SaveSettings();
-  picViewPort_Resize();
-}
-
-static void menPanel_Click()
-{
-  {
-    PanelVisible = ! menPanel.Checked;
-  }
-}
-
-void Let_PanelVisible(boolean NewVal)
-{
-  static boolean HidePanel = False;
-
-  if (HidePanel != NewVal)
-    return;
-
-  HidePanel = ! NewVal;
-  PanelTim.Enabled = True;
-}
-
-static void DrawPauseLayer(long Layer)
-{
-  DirectDrawPalette Pal;
-  PALETTEENTRY *Val;
-  long i;
-
-  // Dim X&, Y&
-  //  For Y = 0 To bmpStage.Height Step BaseWidth
-  //    For X = 0 To bmpStage.Width Step BaseWidth
-  //      Pause.TransparentDraw bmpStageHDC, X, Y, Layer
-  //    Next X
-  //  Next Y
-  //  With Stage.Surface
-  //    Set Pal = .GetPalette
-  //    for i=1 to pal.GetEntries(
-  //  Stage.Surface.SetPalette
-}
-
-static void menPaste_Click()
-{
-  FMark.Paste;
-  DisplayLevel();
-  Stage.Blt();
-}
-
-static void menPause_Click()
-{
-  static StdPicture OldPic;
-  static char *OldText = 0;
-
-  PauseMode = (PauseMode != 0 ? 0 : 1);
-  if (PauseMode != 0)
-  {
-    if (IS_NOTHING(&OldPic, sizeof(OldPic)))
-      OldPic = cmdPause.Picture;
-
-    cmdPause.Picture = cmdPause.DownPicture;
-    OldText = lblStatus.Caption;
-    lblStatus = "Paused ...";
-  }
-  else
-  {
-    cmdPause.Picture = OldPic;
-    lblStatus.Caption = OldText;
-  }
-}
-
-static void menPlayAll_Click()
-{
-  long iMin, iMax, i;
-  int FNum;
-  char *LogPath, *OutStr, *ReRecPath, *SPPath;
-  boolean bEqual;
-  static boolean QuitFlag = False;
-
-  if (cmdPlayAll.STRING_IS_LIKE(Caption, "Play) All Demos")
-  {
-    cmdPlayAll.Caption = "Quit All";
-    menPlayAll.Caption = "Quit All";
-    FocusTim.Enabled = True;
-    QuitFlag = False;
-    iMin = 0;
-    iMax = cmbFile.ListCount - 1;
-    LogPath = StripDir(CurPath) & "/Error.Log";
-    if (Dir(LogPath) != "")
-      Kill(LogPath);
-
-    for (i = iMin; i <= iMax; i++)
-    {
-      cmbFile.ListIndex = i;
-      //      If CurPath Like "*.sp" Or CurPath Like "*.mpx" Then
-      if (DemoAvailable)
-      {
-        SPPath = CurPath;
-        ReRecPath = SPPath & ".ReRec";
-        menPlayDemo_Click();
-        // SaveSP ReRecPath
-        // bEqual = FilesEqual(ReRecPath, SPPath)
-        // If bEqual Then MayKill ReRecPath
-        bEqual = True;
-        OutStr = cmbFile.List(i) & " -> ";
-        //
-        if (Val(lblFrameCount) != GetTotalFramesOfDemo())
-        {
-          OutStr = OutStr & "Error in GetTotalFramesOfDemo()! ";
-          Debug.Assert(False);
-        }
-
-        //
-        if ((LevelStatus == 1) && bEqual)
-        {
-          OutStr = OutStr & "Success";
-        }
-        else if (QuitFlag)
-        {
-          OutStr = OutStr & "All Demos (float)Canceled";
-        }
-        else
-        {
-          if (LevelStatus != 1)
-          {
-            OutStr = OutStr & "### Level Failed ### (TimerVar == " & TimerVar & ")";
-          }
-
-          if (! bEqual)
-          {
-            OutStr = OutStr & "### ReRecording is binary different ###";
-          }
-        }
-
-        FNum = FreeFile();
-        FNum = fopen(LogPath, "ab");
-        Print #FNum, OutStr;
-        fclose(FNum);
-        if (QuitFlag)
-          break;
-      }
-    }
-
-    cmdPlayAll.Caption = "Play All Demos";
-    menPlayAll.Caption = "Play All Demos";
-    SettingsObject Settings;
-
-    MySignature = Settings.Read("MySignature", "");
-    FirstDemoByte = 0x81;
-  }
-  else
-  {
-    QuitFlag = True;
-    if (menStop.Enabled)
-      menStop_Click();
-  }
-}
-
-static void menRemSP_Click()
-{
-  RemoveSP();
-  SpLoadMenu();
-}
-
-static void menRestoreBorder_Click()
-{
-  RestoreBorder();
-}
-
-static void menSave_Click()
-{
-  if (! ModifiedFlag)
-    return;
-
-  if (STRING_IS_LIKE(CurPath, TmpPath))
-    CurPath = OrigPath;
-
-  if (STRING_IS_LIKE(CurPath, "") || STRING_IS_LIKE(CurPath, "*.dat"))
-  {
-    menSaveAs_Click();
-    return;
-  }
-
-  if (STRING_IS_LIKE(CurPath, "*.sp"))
-  {
-    menSaveAs_Click();
-    return;
-  }
-
-  if (! FileExists(CurPath) || STRING_IS_LIKE(CurPath, "Untitled"))
-  {
-    menSaveAs_Click();
-    return;
-  }
-
-  SaveMPX(CurPath);
-  Let_ModifiedFlag(False);
-}
-
-static void menSaveAs_Click()
-{
-  if (SaveAs())
-    FillFileList (CurPath);
-}
-
-static boolean SaveAs()
-{
-  static boolean SaveAs;
-
-  char *FN;
-  SettingsObject s;
-
-  SaveAs = False;
-  {
-    // cmDlg.DefaultExt = "sp"
-    cmDlg.Filter = "MegaPlex Level (*.mpx)|*.mpx|SpeedFix Demo (*.sp)|*.sp";
-    cmDlg.FilterIndex = LastSaveFilter;
-    // If OrigPath Like "*.sp" Then cmDlg.FilterIndex = 1 Else cmDlg.FilterIndex = 0
-    if (FileExists(OrigPath))
-    {
-      cmDlg.InitDir = WithSlash(StripDir(OrigPath));
-      cmDlg.InitDir = s.Read("LastSaveDir", cmDlg.InitDir);
-      cmDlg.FileName = StripExtensionlessFileName(GetFileNameToSave());
-    }
-
-    cmDlg.flags = cdlOFNHideReadOnly | cdlOFNLongNames;
-  }
-
-  // --- On Error GoTo SaveAsEH
-  cmDlg.ShowSave;
-  // --- On Error GoTo 0
-
-  LastSaveFilter = cmDlg.FilterIndex;
-  FN = cmDlg.FileName;
-  SettingsObject_Save("LastSaveDir", WithSlash(StripDir(FN)));
-  if (STRING_IS_LIKE(FN, "*.sp"))
-  {
-    SaveSP(FN);
-  }
-  else if (STRING_IS_LIKE(FN, "*.mpx"))
-  {
-    SaveMPX(FN);
-  }
-
-  Let_ModifiedFlag(False);
-  SaveAs = True;
-
-SaveAsEH:
-
-  return SaveAs;
-}
-
-static void menSelectAll_Click()
-{
-  FMark.SetPoint1 0, 0;
-  FMark.SetPoint2 FieldWidth - 1, FieldHeight - 1;
-}
-
-static void menShowLInfo_Click()
-{
-  char *Msg;
-
-  Msg = LInfo.LevelTitle & vbNewLine & "(" & FieldWidth & " x " & FieldHeight & ")";
-  if (DemoAvailable && bSignatureAvailable)
-    Msg = Msg & vbNewLine & vbNewLine & gSignature;
-
-  SignatureForm.Signature = Msg;
-  SignatureForm.DelayMS = 5000;
-  int X, Y;
-
-  X = left + (Width - SignatureForm.Width) / 2;
-  Y = top + (Height - SignatureForm.Height) / 2;
-  SignatureForm.Move X, Y;
-  SignatureForm.Show vbModeless, Me;
-  Me.SetFocus;
-}
-
-static void menSoundFX_Click()
-{
-  {
-    menSoundFX.Checked = ! menSoundFX.Checked;
-    FXOnFlag = (menSoundFX.Checked ? -1 : 0);
-  }
-}
-
-#endif
-
-// static void menPlay_Click()
-void menPlay_Click()
-{
-#if 0
-
-  boolean OldEditFlag;
-
-  // Trace "MainForm", "--> menPlay_Click()"
-  if (! LevelLoaded)
-  {
-    Beep();
-    return;
-  }
-
-  SignatureForm.DelayMS = 1;
-  menPlay.Enabled = False;
-  menPause.Enabled = True;
-  menStop.Enabled = True;
-  cmdPlay.Enabled = False;
-  cmdPause.Enabled = True;
-  cmdStop.Enabled = True;
-  cmdPlayDemo.Enabled = False;
-  menPlayDemo.Enabled = False;
-  cmdRecordDemo.Enabled = False;
-  menRec.Enabled = False;
-  menFaster.Enabled = True;
-  menSlower.Enabled = True;
-  if (cmdPlayAll.STRING_IS_LIKE(Caption, "Play*"))
-  {
-    cmdPlayAll.Enabled = False;
-    menPlayAll.Enabled = False;
-  }
-
-  cmbFile.Enabled = False;
-  cmbLevel.Enabled = False;
-  OldEditFlag = EditFlag;
-  if (EditFlag)
-    menEdit_Click();
-
-  menEditMain.Enabled = False;
-  if (DemoFlag == 0 && RecordDemoFlag == 0)
-    lblStatus = "Playing";
-
-  lblFrameCount = 0;
-
-#endif
-
-  LastFrame = 0;
-
-#if 0
-  LastTick = T.TickNow();
-#endif
-
-#if 0
-  fpsTim.Enabled = True;
-#endif
-
-  // DimPrimary 100
-  bPlaying = True;
-
-#if 0
-  UpdateDeltaT();
-#endif
-
-#if 1
-#endif
-
-#if 0
-  printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): ...\n");
-#endif
-
-  subFetchAndInitLevelB();
-
-#if 0
-  printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): done\n");
-#endif
-
-  ReStretch(Stretch);
-
-  // Trace "MainForm", "CountDown 1"
-  CountDown(2, (0 == DemoFlag));
-  // Trace "MainForm", "Call GoPlay"
-
-  GoPlay();
-
-  // Trace "MainForm", "GoPlay returned"
-
-#if 0
-
-  if (LevelStatus == 1)
-  {
-    lblStatus = "(float)Success";
-  }
-  else
-  {
-    lblStatus = "Try (float)again";
-  }
-
-#endif
-
-  // Trace "MainForm", "CountDown 1"
-  CountDown(1, False);
-  RecordDemoFlag = 0;
-
-#if 0
-  ShowKey(0);
-#endif
-
-  bPlaying = False;
-  // Trace "MainForm", "Call subFetchAndInitLevel"
-
-  subFetchAndInitLevel();
-
-  // Trace "MainForm", "subFetchAndInitLevel returned"
-
-#if 0
-  Stage.Blt();
-#endif
-
-#if 0
-
-  menEditMain.Enabled = True;
-  if (OldEditFlag)
-    menEdit_Click();
-
-  // Trace "MainForm", "<-- menPlay_Click()"
-
-#endif
-}
-
-#if 1
-
-// static void menPlayDemo_Click()
-void menPlayDemo_Click()
-{
-  DemoFlag = 1;
-  RecordDemoFlag = 0;
-
-#if 0
-  lblStatus = "Demo Playback";
-#endif
-
-  menPlay_Click();
-
-#if 1
-  return;      /* return after initialization phase */
-#endif
-
-#if 0
-  if (LevelStatus != 1)
-    lblStatus = "Demo Failed";
-#endif
-
-  DemoFlag = 0;
-}
-
-#else
-
-// static void menPlayDemo_Click()
-void menPlayDemo_Click()
-{
-  DemoFlag = 1;
-  RecordDemoFlag = 0;
-
-#if 0
-  lblStatus = "Demo Playback";
-#endif
-
-  menPlay_Click();
-
-#if 0
-  if (LevelStatus != 1)
-    lblStatus = "Demo Failed";
-#endif
-
-  DemoFlag = 0;
-}
-
-#endif
-
-#if 0
-
-static void menRec_Click()
-{
-  Trace("MainForm", "--> menRec_Click()");
-  if (! LevelLoaded)
-  {
-    Beep();
-    return;
-  }
-
-  RecordDemoFlag = 1;
-  DemoFlag = 0;
-  lblStatus.ForeColor = vbRed;
-  lblStatus = "Recording Demo";
-  // DemoBuffer = New DemoBufferObject; // (handle this later, if needed)
-  Debug.Assert(! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer)));
-  Trace("MainForm", "Call menPlayClick");
-  menPlay_Click();
-  Trace("MainForm", "menPlayClick returned");
-
-  lblStatus.ForeColor = vbButtonText;
-  RecordDemoFlag = 0;
-  Let_ModifiedFlag(True);
-  if (! STRING_IS_LIKE(CurPath, TmpPath))
-  {
-    OrigPath = CurPath;
-    CurPath = TmpPath;
-  }
-
-  LInfo.DemoRandomSeed = RecDemoRandomSeed;
-  Trace("MainForm", "Call SaveMPX(TmpPath)");
-  SaveMPX(TmpPath);
-  Trace("MainForm", "Set DemoBuffer == Nothing");
-  SET_TO_NOTHING(&DemoBuffer, sizeof(DemoBuffer));
-  Trace("MainForm", "Call subFetchAndInitLevel");
-  subFetchAndInitLevel();
-  cmdPlayDemo.Enabled = DemoAvailable;
-  Trace("MainForm", "<-- menRec_Click()");
-}
-
-static void menReRecordDemo_Click()
-{
-  if (! LevelLoaded)
-  {
-    Beep();
-    return;
-  }
-
-  RecordDemoFlag = 1;
-  DemoFlag = 1;
-  lblStatus.ForeColor = vbRed;
-  lblStatus = "ReRecording Demo";
-  // DemoBuffer = New DemoBufferObject; // (handle this later, if needed)
-  Debug.Assert(! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer)));
-  menPlay_Click();
-  lblStatus.ForeColor = vbButtonText;
-  RecordDemoFlag = 0;
-  Let_ModifiedFlag(True);
-  if (! STRING_IS_LIKE(CurPath, TmpPath))
-  {
-    OrigPath = CurPath;
-    CurPath = TmpPath;
-  }
-
-  LInfo.DemoRandomSeed = RecDemoRandomSeed;
-  SaveMPX(TmpPath);
-  SET_TO_NOTHING(&DemoBuffer, sizeof(DemoBuffer));
-  subFetchAndInitLevel();
-}
-
-void menStop_Click()
-{
-  EndFlag = True;
-  LeadOutCounter = 1;
-  if (PauseMode != 0)
-    menPause_Click();
-
-  fpsTim.Enabled = False;
-  fpsTim_Timer();
-  lblFps.Caption = "";
-  menRec.Enabled = True;
-  menPlay.Enabled = True;
-  menPause.Enabled = False;
-  menStop.Enabled = False;
-  cmdPlay.Enabled = True;
-  cmdPause.Enabled = False;
-  cmdStop.Enabled = False;
-  cmdRecordDemo.Enabled = True;
-  cmdPlayDemo.Enabled = DemoAvailable;
-  cmdPlayAll.Enabled = DemosAvailable;
-  menPlayDemo.Enabled = DemoAvailable;
-  menPlayAll.Enabled = DemosAvailable;
-  menFaster.Enabled = False;
-  menSlower.Enabled = False;
-  cmbFile.Enabled = True;
-  cmbLevel.Enabled = True;
-}
-
-static void menStretch_Click(int Index)
-{
-  ReStretch(0.25 * Index);
-  // DisplayLevel True
-}
-
-static void menToolTips_Click()
-{
-  {
-    menToolTips.Checked = ! menToolTips.Checked;
-    if (menToolTips.Checked)
-    {
-      cmdPlay.ToolTipText = "Play Game (Space)";
-      cmdPause.ToolTipText = "Pause (P)";
-      cmdStop.ToolTipText = "Stop (Q)";
-      cmdPlayDemo.ToolTipText = "Play demo (Ctrl+Space)";
-      cmdRecordDemo.ToolTipText = "Record demo (Ctrl+R)";
-      lblInfoCount.ToolTipText = "Number of infotrons needed";
-      lblRedDiskCount.ToolTipText = "Number of red disks";
-      cmbLevel.ToolTipText = "List of all levels in the file";
-      cmbFile.ToolTipText = "List of files in current directory";
-      lblFps.ToolTipText = "Animation speed in fps";
-      lblFrameCount.ToolTipText = "Game time in frames";
-    }
-    else
-    {
-      cmdPlay.ToolTipText = "";
-      cmdPause.ToolTipText = "";
-      cmdStop.ToolTipText = "";
-      cmdPlayDemo.ToolTipText = "";
-      cmdRecordDemo.ToolTipText = "";
-      lblInfoCount.ToolTipText = "";
-      lblRedDiskCount.ToolTipText = "";
-      cmbLevel.ToolTipText = "";
-      cmbFile.ToolTipText = "";
-      lblFps.ToolTipText = "";
-      lblFrameCount.ToolTipText = "";
-    }
-
-  }
-}
-
-static void menTrim_Click()
-{
-  LevelInfoType Tmp;
-  char *OldOPath;
-
-  OldOPath = OrigPath;
-  Tmp = LInfo;
-  Tmp.SpecialPortCount = 0; // hack: all special ports are deleted
-  menCopy_Click();
-  CreateLevel(FMark.Width, FMark.Height);
-  LInfo = Tmp;
-  OrigPath = OldOPath;
-  CurPath = OldOPath;
-  menSelectAll_Click();
-  menPaste_Click();
-  picViewPort_Resize();
-}
-
-static void menZonkOff_Click()
-{
-  menZonkOn.Checked = False;
-  menZonkOff.Checked = True;
-  SpSaveMenu();
-  SpLoadMenu();
-}
-
-static void menZonkOn_Click()
-{
-  menZonkOn.Checked = True;
-  menZonkOff.Checked = False;
-  SpSaveMenu();
-  SpLoadMenu();
-}
-
-static void PanelTim_Timer()
-{
-  int Tmp;
-
-  Tmp = Panel.Height;
-  if (PanelSeq < Panel.Height && -1 < PanelSeq)
-  {
-    PanelSeq = (ShowPanel != 0 ? PanelSeq + 2 : PanelSeq - 2);
-    Tmp = ScaleHeight - Tmp + PanelSeq;
-    Panel.top = Tmp;
-    picViewPort.Height = Tmp;
-  }
-  else
-  {
-    PanelTim.Enabled = False;
-    PanelSeq = (PanelSeq < 0 ? 0 : PanelSeq - );
-    ShowPanel = (ShowPanel == 0 ? 1 : 0);
-    menPanel.Checked = (ShowPanel != 0);
-  }
-}
-
-static void picKeys_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void picMenu_Click()
-{
-}
-
-static void picPane_KeyDown(int KeyCode, int Shift)
-{
-  if (KeyCode < 0 || 255 < KeyCode)
-    return;
-
-  KeyState[KeyCode] = True;
-  switch (KeyCode)
-  {
-    case vbKeyControl:
-      if (MouseButton == 0 && EditFlag)
-        picPane.MousePointer = 15;
-
-      break;
-
-    case vbKeyUp:
-    case vbKeyLeft:
-    case vbKeyDown:
-    case vbKeyRight:
-    case vbKeySpace:
-      if (DemoFlag != 0)
-      {
-        DemoFlag = 0;
-        UpdateDeltaT();
-      }
-
-      break;
-
-    case vbKeyF12:
-      if (DemoFlag != 0 && 2 == Shift)
-      {
-        DemoFlag = 0;
-        UpdateDeltaT();
-      }
-
-      break;
-
-    case vbKeyF11:
-      bCapturePane = ! bCapturePane;
-      break;
-  }
-}
-
-static void picPane_KeyUp(int KeyCode, int Shift)
-{
-  if (KeyCode < 0 || 255 < KeyCode)
-    return;
-
-  KeyState[KeyCode] = False;
-  switch (KeyCode)
-  {
-    case vbKeyPageUp:
-      if (menFaster.Enabled)
-        menFaster_Click();
-
-      break;
-
-    case vbKeyPageDown:
-      if (menSlower.Enabled)
-        menSlower_Click();
-
-      break;
-
-    case vbKeySpace:
-      if (2 == Shift) // ctrl+space
-      {
-        if (menPlayDemo.Enabled)
-          menPlayDemo_Click();
-
-      }
-      else
-      {
-        if (menPlay.Enabled)
-          menPlay_Click();
-      }
-
-      break;
-
-    case vbKeyQ:
-      if (menStop.Enabled)
-        menStop_Click();
-
-      break;
-
-    case vbKeyR:
-      if (menRec.Enabled)
-        menRec_Click();
+        DrawField(X, Y);
+      }
+    }
+  }
+}
 
-      break;
+void Form_Load()
+{
+  Loaded = False;
 
-    case vbKeyP:
-    case vbKeyPause:
-      if (menPause.Enabled && (Shift == 0))
-        menPause_Click();
+  InitGlobals();
 
-      break;
+  Loaded = True;
 
-    case vbKeyControl:
-      if (MouseButton == 0 && EditFlag)
-        picPane.MousePointer = 0;
-      break;
-  }
+  ReStretch(Stretch);
 }
 
-static void picPane_MouseDown(int Button, int Shift, float X, float Y)
+static void DrawFrame(int Delta)
 {
-  int OldEdMode;
+  int i, LX, tY, RX, BY;
 
-  MouseButton = Button;
-  OldEdMode = EditMode;
-  if (Button != 1)
+  LX = -1 + Delta;
+  tY = -1 + Delta;
+  RX = FieldWidth - Delta;
+  BY = FieldHeight - Delta;
+  DrawImage(LX, tY, imgFrameCorner);
+  DrawImage(LX, BY, imgFrameCorner);
+  DrawImage(RX, tY, imgFrameCorner);
+  DrawImage(RX, BY, imgFrameCorner);
+  for (i = LX + 1; i <= RX - 1; i++)
   {
-    if (Button == 2 && Shift != 2)
-    {
-      EditMode = edSelect;
-    }
-    else
-    {
-      return;
-    }
+    DrawImage(i, tY, imgFrameHorizontal);
+    DrawImage(i, BY, imgFrameHorizontal);
   }
 
-  if (Shift == 2)
-    EditMode = edMove;
-
-  OSX = ScrollX;
-  OSY = ScrollY;
-  MDX = X;
-  MDY = Y;
-  switch (EditMode)
+  for (i = tY + 1; i <= BY - 1; i++)
   {
-    case edMove:
-      picPane.MousePointer = 5; // size
-      UserDragFlag = True;
-      break;
-
-    case edDraw:
-      SetField(X, Y, ToolBox.ASpriteIndex);
-      break;
-
-    case edSelect:
-      FMark.SetPoint1 EdGetX(X), EdGetY(Y);
-      FMark.MoveMarker;
-      break;
+    DrawImage(LX, i, imgFrameVertical);
+    DrawImage(RX, i, imgFrameVertical);
   }
-
-  EditMode = OldEdMode;
 }
 
-static void picPane_MouseMove(int Button, int Shift, float X, float Y)
+static void RestoreFrame()
 {
-  boolean Oldflag;
-  int OldEdMode;
+  int i, LX, tY, RX, BY;
+
+  LX = 0;
+  tY = 0;
+  RX = FieldWidth - 1;
+  BY = FieldHeight - 1;
 
-  OldEdMode = EditMode;
-  if (Button != 1)
+  for (i = LX; i <= RX; i++)
   {
-    if (EditFlag && Button == 2 && Shift != 2)
-    {
-      EditMode = edSelect;
-    }
-    else
-    {
-      return;
-    }
+    DrawField(i, tY);
+    DrawField(i, BY);
   }
 
-  if (Shift == 2)
-    EditMode = edMove;
-
-  switch (EditMode)
+  for (i = tY + 1; i <= BY - 1; i++)
   {
-    case edMove:
-      Oldflag = NoDisplayFlag;
-      NoDisplayFlag = False;
-      ScrollTo(OSX - X + MDX, OSY - Y + MDY);
-      Stage.Blt();
-      NoDisplayFlag = Oldflag;
-      break;
-
-    case edDraw:
-      SetField(X, Y, ToolBox.ASpriteIndex);
-      break;
-
-    case edSelect:
-      FMark.SetPoint2 EdGetX(X), EdGetY(Y);
-      FMark.MoveMarker;
-      break;
+    DrawField(LX, i);
+    DrawField(RX, i);
   }
-
-  EditMode = OldEdMode;
 }
 
-static void picPane_MouseUp(int Button, int Shift, float X, float Y)
+void SetDisplayRegion()
 {
-  MouseButton = MouseButton ^ Button;
-  picPane.MousePointer = 0;
-  UserDragFlag = False;
-  if (menEditMain.Enabled && Button == 2)
+  if (! menBorder)
   {
-    if (MDX == X && MDY == Y)
-      PopupMenu menEditMain;
+    DisplayMinX = 1;
+    DisplayMaxX = FieldWidth - 2;
+    DisplayWidth = FieldWidth;
+    DisplayMinY = 1;
+    DisplayMaxY = FieldHeight - 2;
+    DisplayHeight = FieldHeight;
+
+    if (LevelLoaded)
+      DrawFrame(1);
   }
-}
+  else
+  {
+    DisplayMinX = 0;
+    DisplayMaxX = FieldWidth - 1;
+    DisplayWidth = FieldWidth + 2;
+    DisplayMinY = 0;
+    DisplayMaxY = FieldHeight - 1;
+    DisplayHeight = FieldHeight + 2;
 
-#endif
+    if (LevelLoaded)
+      RestoreFrame();
+  }
+}
 
-static void picPane_Paint()
+void menPlay_Click()
 {
-  boolean Oldflag;
+  bPlaying = True;
 
-  Oldflag = NoDisplayFlag;
-  NoDisplayFlag = False;
+  subFetchAndInitLevelB();
 
-#if 0
-  Stage.Blt();
+  ReStretch(Stretch);
+
+  subMainGameLoop_Init();
+
+#if 1
+  return;
 #endif
 
-  NoDisplayFlag = Oldflag;
+  bPlaying = False;
+
+  subFetchAndInitLevel();
 }
 
 static void ReStretch(float NewStretch)
 {
-#if 1
   long BW2, LW, LH;
-#else
-  long BW2, LW, LH, i;
-#endif
-
-#if 0
-  printf("::: MainForm.c: ReStretch(): %d, %d\n", Loaded, LevelLoaded);
-#endif
 
   if (! Loaded)
   {
-#if 0
-    printf("::: NewStretch == %f\n", NewStretch);
-#endif
-
     Stretch = NewStretch;
+
     return;
   }
 
-#if 0
-  MousePointer = 11;
-  SET_TO_NOTHING(&Stage, sizeof(Stage));
-  SET_TO_NOTHING(&StretchedSprites, sizeof(StretchedSprites));
-  menStretch(Stretch / 0.25).Checked = False;
-#endif
-
   Stretch = NewStretch;
 
-#if 0
-  menStretch(Stretch / 0.25).Checked = True;
-  //  StretchWidth = BaseWidth ' * NewStretch
-  //  StretchWidth2 = StretchWidth \ 2
-  //  TwoPixels = 2 '* Stretch
-  // StretchLoad Sprites, imgMpx.Picture, 16, 16
-#endif
-
   BW2 = StretchWidth / 2;
   LW = (FieldWidth + 2) * BaseWidth; // StretchWidth
   LH = (FieldHeight + 2) * BaseWidth; // StretchWidth
 
-#if 0
-  // i = bmpStage.CreateAtSize(LW, LH)
-  // Stage = New DDScrollBuffer; // (handle this later, if needed)
-  i = Stage.CreateAtSize(LW, LH, picPane.hWnd);
-  // Set StretchedSprites = NormalSprites.GetStretchCopy(Stretch)
-  ReLoadStretchSprites();
-  if (i == 0 || IS_NOTHING(&StretchedSprites, sizeof(StretchedSprites)))
+  if (Loaded && LevelLoaded)
   {
-    // menStretch(Stretch / 0.5).Enabled = False
-    if (0.5 <= Stretch)
-      ReStretch(Stretch - 0.25);
-
+    SetDisplayRegion();
+    picViewPort_Resize();
+    DisplayLevel();
   }
-  else
-#endif
-  {
-    StretchedSprites.DestXOff = 1 * BaseWidth; // StretchWidth
-    StretchedSprites.DestYOff = 1 * BaseWidth; // StretchWidth
-    Stage.DestXOff = 1 * StretchWidth;
-    Stage.DestYOff = 1 * StretchWidth;
-    StretchedSprites.DestinationSurface = Stage.Surface;
-
-#if 0
-    Stage.Cls();
-#endif
-
-    if (Loaded && LevelLoaded)
-    {
-#if 0
-      printf("::: MainForm.c: ReStretch(): ...\n");
-#endif
-
-      SetDisplayRegion();
-      picViewPort_Resize();
-      DisplayLevel();
-    }
-
-    subCalculateScreenScrollPos();
-
-#if 0
-  printf("::: MainForm.c: ReStretch(): %d, %d\n", ScreenScrollXPos, ScreenScrollYPos);
-#endif
 
-    ScrollTo(ScreenScrollXPos, ScreenScrollYPos);
+  subCalculateScreenScrollPos();
 
-#if 0
-    Stage.Blt();
-#endif
-
-    picPane_Paint();
-  }
-
-#if 0
-  MousePointer = 0;
-#endif
+  ScrollTo(ScreenScrollXPos, ScreenScrollYPos);
 }
 
-#if 0
-static void SetScrollEdges()
-#else
 void SetScrollEdges()
-#endif
 {
-#if 0
-  printf("::: MainForm.c: SetScrollEdges() ... [%ld, %ld, %ld, %ld] [%f, %d] [%d, %d, %d, %d]\n",
-        DisplayMinX, DisplayMinY, DisplayMaxX, DisplayMaxY,
-        Stretch, BaseWidth,
-        ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY);
-#endif
-
   ScrollMinX = (int)(DisplayMinX - 0.5) * Stretch * BaseWidth;
   ScrollMinY = (int)(DisplayMinY - 0.5) * Stretch * BaseWidth;
-  ScrollMaxX = (int)(DisplayMaxX + 1.5) * Stretch * BaseWidth - picPane.Width;
-  ScrollMaxY = (int)(DisplayMaxY + 1.5) * Stretch * BaseWidth - picPane.Height;
-
-#if 0
-  printf("::: MainForm.c: SetScrollEdges() done [%d, %d, %d, %d]\n",
-        ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY);
-#endif
+  ScrollMaxX = (int)(DisplayMaxX + 1.5) * Stretch * BaseWidth - SXSIZE;
+  ScrollMaxY = (int)(DisplayMaxY + 1.5) * Stretch * BaseWidth - SYSIZE;
 }
 
 void DrawField(int X, int Y)
@@ -3201,12 +246,6 @@ void DrawField(int X, int Y)
   if (Tmp == fiBug || Tmp == 40)
     Tmp = DisPlayField[tsi];
 
-  if (EditFlag)
-  {
-    if (Tmp > fiOrangeDisk && Tmp < fiSnikSnak)
-      Tmp = DisPlayField[tsi];
-  }
-
 #if 1
   if (Tmp >= 0 && Tmp <= 40)
   {
@@ -3218,7 +257,7 @@ void DrawField(int X, int Y)
 #endif
   }
 #else
-  StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, Tmp);
+  DDSpriteBuffer_BltEx(StretchWidth * X, StretchWidth * Y, Tmp);
 #endif
 }
 
@@ -3245,7 +284,7 @@ void DrawFieldAnimated(int X, int Y)
       //      If EditFlag Then
       //        If fiOrangeDisk < Tmp And Tmp < fiSnikSnak Then Tmp = DisPlayField(tsi)
       //      End If
-      //      StretchedSprites.BltEx StretchWidth * X, StretchWidth * Y, Tmp
+      //      DDSpriteBuffer_BltEx StretchWidth * X, StretchWidth * Y, Tmp
       break;
   }
 }
@@ -3259,19 +298,11 @@ void DrawFieldNoAnimated(int X, int Y)
   switch (Tmp)
   {
     case fiSnikSnak:
-#if 1
       subCopyImageToScreen(tsi, aniSpace);
-#else
-      StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, fiSpace);
-#endif
       break;
 
     case fiElectron:
-#if 1
       subCopyImageToScreen(tsi, aniSpace);
-#else
-      StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, fiSpace);
-#endif
       break;
 
     default:
@@ -3284,12 +315,6 @@ void DrawFieldNoAnimated(int X, int Y)
       if (Tmp == fiBug || Tmp == 40)
         Tmp = DisPlayField[tsi];
 
-      if (EditFlag)
-      {
-        if (Tmp > fiOrangeDisk && Tmp < fiSnikSnak)
-          Tmp = DisPlayField[tsi];
-      }
-
 #if 1
       if (Tmp >= 0 && Tmp <= 40)
       {
@@ -3301,335 +326,21 @@ void DrawFieldNoAnimated(int X, int Y)
 #endif
       }
 #else
-      StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, Tmp);
+      DDSpriteBuffer_BltEx(StretchWidth * X, StretchWidth * Y, Tmp);
 #endif
 
       break;
   }
 }
 
-#if 1
-
 void DrawImage(int X, int Y, int graphic)
 {
-  StretchedSprites.BltImg(StretchWidth * X, StretchWidth * Y, graphic, 0);
-}
-
-#else
-
-void DrawSprite(int X, int Y, int SpritePos)
-{
-  StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, SpritePos);
-}
-
-#endif
-
-#if 0
-
-void InvalidateRect(long XMin, long YMin, long XMax, long YMax)
-{
-  long X, Y;
-
-  //  For Y = YMin To YMax
-  //    For X = XMin To XMax
-  //      Field(X, Y).GraphicsValid = 0
-  //    Next X
-  //  Next Y
-}
-
-static void picViewPort_MouseUp(int Button, int Shift, float X, float Y)
-{
-  FocusTim.Enabled = True;
-}
-
-static void picViewPort_Paint()
-{
-  // Debug.Print "picViewPort_Paint()"
+  DDSpriteBuffer_BltImg(StretchWidth * X, StretchWidth * Y, graphic, 0);
 }
 
-#endif
-
 static void picViewPort_Resize()
 {
-#if 0
-  long bdX, bdY, PanelVisibility;
-  long X, Y, dx, dY;
-  SettingsObject s;
-  boolean B;
-
-  bdX = picFrame.Width - picFrame.ScaleWidth;
-  bdY = picFrame.Height - picFrame.ScaleHeight;
-  dx = Min(picViewPort.ScaleWidth - bdX, (DisplayWidth - 1) * Stretch * BaseWidth);
-  dx = Max(dx, 0);
-  dY = Min(picViewPort.ScaleHeight - bdX, (DisplayHeight - 1) * Stretch * BaseWidth);
-  dY = Max(dY, 0);
-  B = s.Read("LimitToOriginalFieldSize", False);
-  PanelVisibility = 24 * (Panel.Height - PanelSeq - (float)1) / Panel.Height;
-  if (B)
-  {
-    dx = Min(320 * Stretch, dx);
-    dY = Min((200 - PanelVisibility) * Stretch, dY);
-  }
-
-  X = Max((picViewPort.ScaleWidth - dx) / 2, 0);
-  Y = Max((picViewPort.ScaleHeight - dY) / 2, 0);
-  picPane.Move X, Y, dx, dY;
-  picFrame.Move X - bdX / 2, Y - bdY / 2, dx + bdX, dY + bdY;
-#endif
-
   SetScrollEdges();
 
-#if 0
-  printf("::: MainForm.c: picViewPort_Resize(): %d, %d\n", ScrollX, ScrollY);
-#endif
-
   ScrollTo(ScrollX, ScrollY);
-
-  //  SizeTim.Interval = 1
-}
-
-#if 0
-
-//
-// Private Sub SizeTim_Timer()
-// Dim wdX&, wdY&
-//  SizeTim.Interval = 0
-//  wdX = Max(0, picViewPort.ScaleWidth - picPane.Width) * Screen.TwipsPerPixelX
-//  wdY = Max(0, picViewPort.ScaleHeight - picPane.Height) * Screen.TwipsPerPixelY
-//  If (0 < wdX) Or (0 < wdY) Then
-//    Move Left, Top, Width - wdX, Height - wdY
-//  End If
-// End Sub
-
-static void LoadKeyIndicators()
-{
-  int i;
-
-  picKeys.BackColor = vbButtonFace;
-  for (i = 2; i <= 5; i++)
-  {
-    Load shpKey(i);
-  }
-
-  for (i = 1; i <= 5; i++)
-  {
-    shpKey(i).FillColor = vbButtonFace;
-    shpKey(i).Visible = True;
-  }
-
-  shpKey(1).Move 7, 0;
-  shpKey(2).Move 0, 7;
-  shpKey(3).Move 7, 14;
-  shpKey(4).Move 14, 7;
-  shpKey(5).Move 7, 7;
-}
-
-void ShowKey(int KeyVar)
-{
-  boolean State[5 + 1];
-  int i;
-  boolean Tmp;
-  long Col;
-  static boolean LastState[5 + 1];
-
-  //  For i = 1 To 5
-  //    State(i) = False
-  //  Next i
-  switch (KeyVar)
-  {
-    case 0:
-      // do nothing
-      break;
-
-    case Is < 5:
-      State[KeyVar] = True;
-      break;
-
-    default:
-      State[5] = True;
-      if (KeyVar < 9)
-        State[KeyVar - 4] = True;
-      break;
-  }
-
-  for (i = 1; i <= 5; i++)
-  {
-    Tmp = State[i];
-    if (Tmp ^ LastState[i])
-    {
-      Col = (i == 5 ? vbRed : vbGreen);
-      shpKey(i).FillColor = (Tmp ? Col : vbButtonFace);
-      shpKey(i).Refresh;
-      LastState[i] = Tmp;
-    }
-  }
-}
-
-static void GetSettings()
-{
-  SettingsObject s;
-  char *APath;
-  long X, Y;
-  int i;
-  boolean Flag;
-
-  {
-    // last file info
-    APath = WithSlash(App.Path);
-    CurPath = s.Read("LastPath", APath);
-    OrigPath = CurPath;
-    // window width and height
-    X = s.Read("Width", Width);
-    Y = s.Read("Height", Height);
-    if (X < 0 Then X == 0: If Y < 0)
-      Y = 0;
-
-    if (Screen.Width < X)
-      X = Screen.Width;
-
-    if (Screen.Height < Y)
-      Y = Screen.Height;
-
-    Width = X;
-    Height = Y;
-    // window position and state
-    X = s.Read("Left", left);
-    Y = s.Read("Top", top);
-    if (X < 0 Then X == 0: If Y < 0)
-      Y = 0;
-
-    if (Screen.Width < (X + Width))
-      X = Screen.Width - Width;
-
-    if (Screen.Height < (Y + Height))
-      Y = Screen.Height - Height;
-
-    left = X;
-    top = Y;
-    WindowState = s.Read("WinState", vbNormal);
-    // flags/options
-    Flag = s.Read("ShowToolTips", True);
-    if (Flag)
-      menToolTips_Click();
-
-    menBorder.Checked = ! CBool(s.Read("ShowBorder", False));
-    Flag = CBool(s.Read("AutoScroll", True));
-    if (! Flag)
-    {
-      AutoScrollFlag = False;
-      menAutoScroll.Checked = False;
-    }
-
-    Flag = CBool(s.Read("SoundFX", True));
-    FXOnFlag = (Flag ? -1 : 0);
-    menSoundFX.Checked = Flag;
-    SignatureDelay = CLng(s.Read("SignatureDelay", 3000));
-    AllowRedDiskCheat = CInt(s.Read("AllowRedDiskCheat", 1));
-    AllowEatRightRedDiskBug = CInt(s.Read("AllowEatRightRedDiskBug", 1));
-    MySignature = s.Read("MySignature", "");
-    // speed
-    X = s.Read("FrameDelayPlay", 1000000 / 35);
-    i = GetSpeedIndex(X);
-    menPlaySpeed_Click(i);
-    X = s.Read("FrameDelayDemo", 1000000 / 35);
-    i = GetSpeedIndex(X);
-    menDemoSpeed_Click(i);
-    // Zoom
-    i = s.Read("Stretch", 4);
-    if (i < menStretch.LBound || menStretch.UBound < i)
-      i = 4;
-
-    menStretch_Click (i);
-  }
-}
-
-static void SaveSettings()
-{
-  SettingsObject s;
-  int i;
-
-  {
-    s.Save "LastPath", (ModifiedFlag ? OrigPath : CurPath);
-    if (WindowState != vbMinimized)
-    {
-      s.Save "Width", Width;
-      s.Save "Height", Height;
-      s.Save "Left", left;
-      s.Save "Top", top;
-      s.Save "WinState", WindowState;
-    }
-
-    s.Save "ShowToolTips", menToolTips.Checked;
-    s.Save "ShowBorder", menBorder.Checked;
-    s.Save "AutoScroll", menAutoScroll.Checked;
-    s.Save "SoundFX", menSoundFX.Checked;
-    s.Save "SignatureDelay", SignatureDelay;
-    s.Save "AllowRedDiskCheat", AllowRedDiskCheat;
-    s.Save "AllowEatRightRedDiskBug", AllowEatRightRedDiskBug;
-    s.Save "MySignature", MySignature;
-    // speeds
-    s.Save "FrameDelayPlay", DeltaTPlay;
-    s.Save "FrameDelayDemo", DeltaTDemo;
-    // zoom
-    for (i = menStretch.LBound; i <= menStretch.UBound; i++)
-    {
-      if (menStretch(i).Checked)
-        break;
-    }
-
-    s.Save "Stretch", i;
-    //    s.Save "",
-  }
-}
-
-void ReLoadStretchSprites()
-{
-  long Tmp;
-  BitMapObject NBMP, SBMP;
-  char *tmpMpxBmp;
-
-  //  If Stretch = 1 Then
-  MpxBmp = App.Path & "/Mpx.bmp";
-  //  Else
-  //    MpxBmp = App.Path & "\Mpx" & Stretch & ".bmp"
-  //    tmpMpxBmp = App.Path & "\Mpx.bmp"
-  //    If FileExists(MpxBmp) And FileExists(tmpMpxBmp) Then
-  //      If FileDateTime(MpxBmp) < FileDateTime(tmpMpxBmp) Then
-  //        MayKill MpxBmp
-  //      End If
-  //    End If
-  //    If Not FileExists(MpxBmp) Then
-  //      MousePointer = 11
-  // //      Set NBMP = New BitMapObject // (handle this later, if needed)
-  //      tmpMpxBmp = App.Path & "\Mpx.bmp"
-  //      If Not FileExists(tmpMpxBmp) Then
-  //        ReportError "ReLoadStretchSprites", "File not found: " & tmpMpxBmp
-  //        MESSAGE_BOX("an error occured"); // MsgBox "File not found: " & tmpMpxBmp, vbCritical, "MegaPlex - Error"
-  //        End
-  //      End If
-  //      NBMP.CreateFromFile tmpMpxBmp
-  //      Set SBMP = NBMP.GetStretchCopy(Stretch)
-  //      SBMP.SaveToFile MpxBmp
-  //      Set NBMP = Nothing
-  //      Set SBMP = Nothing
-  //      MousePointer = 0
-  //    End If
-  //  End If
-  // StretchedSprites = New DDSpriteBuffer; // (handle this later, if needed)
-  if (! StretchedSprites.CreateFromFile(MpxBmp, 16, 16))
-    SET_TO_NOTHING(&StretchedSprites, sizeof(StretchedSprites));
-}
-
-void SaveSnapshot(currency Number)
-{
-  char *Path;
-
-  Path = CAT(WithSlash(App.Path), "Capture");
-  if (! IsDir(Path))
-    MkDir(Path);
-
-  Path = Path & "\" & Format(Number, "00000000") & ".bmp";
-  SavePicture CaptureWindow(picPane.hWnd, True, 0, 0, picPane.ScaleWidth, picPane.ScaleHeight), Path;
 }
-
-#endif
index 8265e8217c696fa7c2ac3f91b03824d23e5b707f..24cbd46ee37c4bdcc22a42bd266668909e47270f 100644 (file)
@@ -5,13 +5,9 @@
 #ifndef MAINFORM_H
 #define MAINFORM_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
+
 extern void DrawFrameIfNeeded();
 
 extern void DisplayLevel();
@@ -20,21 +16,12 @@ extern void DrawFieldAnimated(int X, int Y);
 extern void DrawFieldNoAnimated(int X, int Y);
 extern void DrawSprite(int X, int Y, int SpritePos);
 extern void DrawImage(int X, int Y, int graphic);
-#if 0
-extern void InvalidateRect(long XMin, long YMin, long XMax, long YMax);
-#endif
-extern void Let_PanelVisible(boolean NewVal);
-extern void ReLoadStretchSprites();
-extern void SaveSnapshot(currency Number);
+
 extern void SetDisplayRegion();
 extern void SetScrollEdges();
-extern void ShowKey(int KeyVar);
-extern void menDemoSpeed_Click(int Index);
-extern void menEdit_Click();
-extern void menPlaySpeed_Click(int Index);
-extern void menStop_Click();
+
 extern void menPlay_Click();
-extern void menPlayDemo_Click();
+
 extern void Form_Load();
 
 #endif /* MAINFORM_H */
index ee955cb68218c1902780abfd89904424c0d3f42d..a82c8732f4846393e958441d10db97067b2a1528 100644 (file)
@@ -5,13 +5,9 @@
 #include "MainGameLoop.h"
 
 
-int GameLoopRunning;
 boolean bPlaying;
 int LeadOutCounter, EnterRepeatCounter;
-int ForcedExitFlag;
 int ExitToMenuFlag;
-int SavedGameFlag;
-boolean UserDragFlag;
 boolean AutoScrollFlag;
 
 
@@ -22,27 +18,11 @@ boolean AutoScrollFlag;
 
 void subMainGameLoop_Init()
 {
-  if (DemoFlag != 0)
-  {
-    // EP set level success byte: demo, not game
-    WasDemoFlag = 1;
-    EP_GameDemoVar0DAA = 0; // demo
-  }
-  else // loc_g_1836:
-  {
-    // EP set level success byte: game, not demo
-    WasDemoFlag = 0;
-    EP_GameDemoVar0DAA = 1; // game
-  }
-
   // This was a bug in the original Supaplex: sometimes red disks could not
   // be released.  This happened if Murphy was killed DURING a red disk release
   // and the next try started.
 
   RedDiskReleasePhase = 0; // (re-)enable red disk release
-  UpdatedFlag = 0;
-  GameLoopRunning = 1;
-  LevelStatus = 0;
 }
 
 void subMainGameLoop_Main(byte action, boolean warp_mode)
@@ -51,15 +31,6 @@ void subMainGameLoop_Main(byte action, boolean warp_mode)
   // --------------------- START OF GAME-BUSY LOOP -----------------------------
   // ---------------------------------------------------------------------------
 
-  if (EndFlag)
-  {
-    // (should never happen)
-
-    // printf("::: EndFlag == True\n");
-
-    goto locExitMainGameLoop;
-  }
-
   subProcessKeyboardInput(action);     // check keyboard, act on keys
 
   // ---------------------------------------------------------------------------
@@ -75,18 +46,9 @@ void subMainGameLoop_Main(byte action, boolean warp_mode)
 
   subCalculateScreenScrollPos();       // calculate screen start addrs
 
-  if ((! UserDragFlag) && AutoScrollFlag)
+  if (AutoScrollFlag)
     ScrollTowards(ScreenScrollXPos, ScreenScrollYPos);
 
-  if (ForcedExitFlag != 0)             // Forced Exit?' yes--exit!
-  {
-    // (should never happen)
-
-    // printf("::: ForcedExitFlag == True\n");
-
-    goto locExitMainGameLoop;
-  }
-
   TimerVar = TimerVar + 1;
 
 #if 1
@@ -118,7 +80,9 @@ void subMainGameLoop_Main(byte action, boolean warp_mode)
   // lead-out done: exit now
   // ---------------------- END OF GAME-BUSY LOOP (including lead-out) ---------
 
+#if 0
 locExitMainGameLoop:
+#endif
 
 #if 1
   printf("::: locExitMainGameLoop reached [%d]\n", LeadOutCounter);
@@ -159,8 +123,8 @@ void subCalculateScreenScrollPos()
   }
 
   {
-    ax = MainForm.picPane.Width / 2;
-    Ay = MainForm.picPane.Height / 2;
+    ax = SXSIZE / 2;
+    Ay = SYSIZE / 2;
   }
 
   ScreenScrollXPos = Stretch * (MurphyScreenXPos + TILEX / 2) - ax;
index a0d7e5d1c6f5a7ecc03ffb5eaebeaf8210412c40..ee7c4de4e291aab1d5819a087a77603430351b0e 100644 (file)
@@ -5,22 +5,13 @@
 #ifndef MAINGAMELOOP_H
 #define MAINGAMELOOP_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
 extern boolean AutoScrollFlag;
-extern boolean UserDragFlag;
 extern boolean bPlaying;
 extern int ExitToMenuFlag;
-extern int ForcedExitFlag;
-extern int GameLoopRunning;
 extern int LeadOutCounter, EnterRepeatCounter;
-extern int SavedGameFlag;
 
 extern void subMainGameLoop_Init();
 extern void subMainGameLoop_Main(byte, boolean);
index 75e97e9f28cc4112779f7ee5c588d25edd09a25d..9837aef7486922a9165b809e469cd7507f2b56e7 100644 (file)
@@ -16,13 +16,11 @@ SRCS =      init.c                  \
        file.c                  \
        main.c                  \
        vb_lib.c                \
-       vb_vars.c               \
                                \
        ASM.c                   \
        BugsTerminals.c         \
        DDScrollBuffer.c        \
        DDSpriteBuffer.c        \
-       Demo.c                  \
        Display.c               \
        DoGameStuff.c           \
        Electrons.c             \
@@ -36,27 +34,19 @@ SRCS =      init.c                  \
        MainGameLoop.c          \
        Murphy.c                \
        OrangeDisk.c            \
-       PathTools.c             \
-       SettingsObject.c        \
        SnikSnaks.c             \
        Sound.c                 \
-       TickCountObject.c       \
-       TopMost.c               \
-       Zonk.c                  \
-       modAnimations.c         \
-       modMPX.c
+       Zonk.c
 
 OBJS = init.o                  \
        file.o                  \
        main.o                  \
        vb_lib.o                \
-       vb_vars.o               \
                                \
        ASM.o                   \
        BugsTerminals.o         \
        DDScrollBuffer.o        \
        DDSpriteBuffer.o        \
-       Demo.o                  \
        Display.o               \
        DoGameStuff.o           \
        Electrons.o             \
@@ -70,15 +60,9 @@ OBJS =       init.o                  \
        MainGameLoop.o          \
        Murphy.o                \
        OrangeDisk.o            \
-       PathTools.o             \
-       SettingsObject.o        \
        SnikSnaks.o             \
        Sound.o                 \
-       TickCountObject.o       \
-       TopMost.o               \
-       Zonk.o                  \
-       modAnimations.o         \
-       modMPX.o
+       Zonk.o
 
 GAME_SP = game_sp.a
 
index 0bc114ff869a72c15d55aa7342bdbe396a824a78..2d939a3197f88004d628d7076ad2fc3010118307 100644 (file)
@@ -32,7 +32,9 @@ void subAnimateMurphy(int *si)
   int tDeltaX, tDeltaY, tPos, Tmp;
 
   // Variables that hold information about the animation sequence
+#if 0
   static int *dx = 0; // an array of image positions in moving.mpx, finalized with -1
+#endif
   static int dx1 = 0; // same as "*dx" above, but as image/animation token
   static int dx2 = 0; // an additional image position of a second sprite, for instance: yellow disk if pushed
   static int MurphyDX = 0, MurphyDY = 0; // murphys move steps
@@ -667,8 +669,11 @@ loc_g_62E2:
 
   MovHighByte(&PlayField16[*si], 0x2A);
   MovingPictureSequencePhase = 0x40; // init picture move sequence
+#if 0
   dx = aniFramesRedDisk;
+#else
   dx1 = aniRedDisk;
+#endif
   MovLowByte(&RedDiskReleasePhase, 1);
   RedDiskReleaseMurphyPos = *si;             // remember Murphy's location
   goto loc_Split;
@@ -678,8 +683,11 @@ loc_g_62E2:
   // ==========================================================================
 
 loc_g_6312:
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyMoveUpRight : aniMurphyMoveUpLeft);
+#endif
   PlayField16[*si - FieldWidth] = 0x103;
   PlayField16[*si] = 0x300;
   *si = *si - FieldWidth;
@@ -690,8 +698,11 @@ loc_g_6312:
   // ==========================================================================
 
 loc_g_6341:
+#if 0
   dx = aniFramesMurphyEatLeft;
+#else
   dx1 = aniMurphyMoveLeft;
+#endif
   PlayField16[*si - 1] = 0x203;
   PlayField16[*si] = 0x300;
   *si = *si - 1;
@@ -702,8 +713,11 @@ loc_g_6341:
   // ==========================================================================
 
 loc_g_6364:
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyMoveUpRight : aniMurphyMoveUpLeft);
+#endif
   PlayField16[*si + FieldWidth] = 0x303;
   PlayField16[*si] = 0x300;
   *si = *si + FieldWidth;
@@ -714,8 +728,11 @@ loc_g_6364:
   // ==========================================================================
 
 loc_g_6399:
+#if 0
   dx = aniFramesMurphyEatRight;
+#else
   dx1 = aniMurphyMoveRight;
+#endif
   PlayField16[*si + 1] = 0x403;
   PlayField16[*si] = 0x300;
   *si = *si + 1;
@@ -745,8 +762,11 @@ loc_g_63D3:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyDigUpRight : aniMurphyDigUpLeft);
+#endif
   PlayField16[*si - FieldWidth] = 0x503;
   PlayField16[*si] = 0x300;
   *si = *si - FieldWidth;
@@ -776,8 +796,11 @@ loc_g_641C:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = aniFramesMurphyEatLeft;
+#else
   dx1 = aniMurphyDigLeft;
+#endif
   PlayField16[*si - 1] = 0x203;
   PlayField16[*si] = 0x300;
   *si = *si - 1;
@@ -807,8 +830,11 @@ loc_g_6459:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyDigUpRight : aniMurphyDigUpLeft);
+#endif
   PlayField16[*si + FieldWidth] = 0x703;
   PlayField16[*si] = 0x300;
   *si = *si + FieldWidth;
@@ -838,8 +864,11 @@ loc_g_64A2:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = aniFramesMurphyEatRight;
+#else
   dx1 = aniMurphyDigRight;
+#endif
   PlayField16[*si + 1] = 0x803;
   PlayField16[*si] = 0x300;
   *si = *si + 1;
@@ -870,8 +899,11 @@ loc_g_64DF:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = aniFramesTouchBase;
+#else
   dx1 = aniTouchBase;
+#endif
   dxPos = *si - FieldWidth;
   MovHighByte(&PlayField16[*si], 0x10);
   goto loc_StopNoSplit;
@@ -901,8 +933,11 @@ loc_g_651D:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = aniFramesTouchBase;
+#else
   dx1 = aniTouchBase;
+#endif
   dxPos = *si - 1;
   MovHighByte(&PlayField16[*si], 0x11);
   goto loc_StopNoSplit;
@@ -932,8 +967,11 @@ loc_g_655B:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = aniFramesTouchBase;
+#else
   dx1 = aniTouchBase;
+#endif
   dxPos = *si + FieldWidth;
   MovHighByte(&PlayField16[*si], 0x12);
   goto loc_StopNoSplit;
@@ -963,8 +1001,11 @@ loc_g_6599:
   subSoundFXBase();
 #endif
 
+#if 0
   dx = aniFramesTouchBase;
+#else
   dx1 = aniTouchBase;
+#endif
   dxPos = *si + 1;
   MovHighByte(&PlayField16[*si], 0x13);
   goto loc_StopNoSplit;
@@ -980,8 +1021,11 @@ loc_g_65C6:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft);
+#endif
   PlayField16[*si - FieldWidth] = 0x903;
   PlayField16[*si] = 0x300;
   *si = *si - FieldWidth;
@@ -998,8 +1042,11 @@ loc_g_65FE:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = aniFramesEatInfotronLeft;
+#else
   dx1 = aniEatInfotronLeft;
+#endif
 #if 0
   dx2 = fiInfotron;
   dx2Step = -1;
@@ -1021,8 +1068,11 @@ loc_g_662A:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft);
+#endif
   PlayField16[*si + FieldWidth] = 0xB03;
   PlayField16[*si] = 0x300;
   *si = *si + FieldWidth;
@@ -1039,8 +1089,11 @@ loc_g_6662:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = aniFramesEatInfotronRight;
+#else
   dx1 = aniEatInfotronRight;
+#endif
 #if 0
   dx2 = fiInfotron;
   dx2Step = 1;
@@ -1063,8 +1116,11 @@ loc_g_668E:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = aniFramesTouchInfotron;
+#else
   dx1 = aniTouchInfotron;
+#endif
   MovHighByte(&PlayField16[*si], 0x14);
   MovHighByte(&PlayField16[*si - FieldWidth], 0xFF);
   goto loc_StopNoSplit;
@@ -1081,8 +1137,11 @@ loc_g_66C0:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = aniFramesTouchInfotron;
+#else
   dx1 = aniTouchInfotron;
+#endif
   MovHighByte(&PlayField16[*si], 0x15);
   MovHighByte(&PlayField16[*si - 1], 0xFF);
   goto loc_StopNoSplit;
@@ -1099,8 +1158,11 @@ loc_g_66F2:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = aniFramesTouchInfotron;
+#else
   dx1 = aniTouchInfotron;
+#endif
   MovHighByte(&PlayField16[*si], 0x16);
   MovHighByte(&PlayField16[*si + FieldWidth], 0xFF);
   goto loc_StopNoSplit;
@@ -1117,8 +1179,11 @@ loc_g_6724:
   subSoundFXInfotron();
 #endif
 
+#if 0
   dx = aniFramesTouchInfotron;
+#else
   dx1 = aniTouchInfotron;
+#endif
   MovHighByte(&PlayField16[*si], 0x17);
   MovHighByte(&PlayField16[*si + 1], 0xFF);
   goto loc_StopNoSplit;
@@ -1151,24 +1216,12 @@ loc_g_6756:
   subSoundFXExit();
 #endif
 
-  data_h_DemoDone = 1; // EP set level success bytes
-  LevelStatus = 1; // set Level Status DONE
-  EP_GameDemoVar0DAA = 0; // force demo for lead-out
-  if (SavedGameFlag == 0) // saved game running?
-  {
-    if (UpdateTimeFlag != 0)    // update time?
-    {
-      UpdatedFlag = 1; // prevent double update
-    }
-  }
-
-#if 0
-  subUpdateHallOfFame(); // update time + Hall-Of-Fame
-#endif
-
   LeadOutCounter = 0x40;          // quit: start lead-out
+#if 0
   dx = aniFramesMurphyExit;
+#else
   dx1 = aniMurphyExit;
+#endif
   MovHighByte(&PlayField16[*si], 0xD);
   goto loc_StopNoSplit;
 
@@ -1183,8 +1236,11 @@ loc_g_679B:
 
   MovHighByte(&PlayField16[*si - 2], 1);
   subCopyImageToScreen(*si, aniPushLeft); // draw pushing murphy
+#if 0
   dx = aniFramesZonkRollLeft;
+#else
   dx1 = aniZonkRollLeft;
+#endif
   dxPos = *si - 1;
   dx2 = aniPushLeft;
   dx2Step = 1;
@@ -1206,8 +1262,11 @@ loc_g_67D4:
 
   MovHighByte(&PlayField16[*si + 2], 1);
   subCopyImageToScreen(*si, aniPushRight); // draw pushing murphy
+#if 0
   dx = aniFramesZonkRollRight;
+#else
   dx1 = aniZonkRollRight;
+#endif
   dxPos = *si + 1;
   dx2 = aniPushRight;
   dx2Step = -1;
@@ -1339,8 +1398,11 @@ loc_g_6916:
   if (PlayField16[*si - 2 * FieldWidth] != 0)
     return;
 
+#if 0
   dx = aniFramesSplitUpDown;
+#else
   dx1 = aniSplitUpDown;
+#endif
   dx2Step = -FieldWidth;
   PlayField16[*si] = 0x1803;
   PlayField16[*si - 2 * FieldWidth] = 0x300;
@@ -1354,8 +1416,11 @@ loc_g_693A:
   if (PlayField16[*si - 2] != 0)
     return;
 
+#if 0
   dx = aniFramesMurphyEatLeft;
+#else
   dx1 = aniMurphyMoveLeft;
+#endif
   dx2Step = -1;
   PlayField16[*si] = 0x1903;
   PlayField16[*si - 2] = 0x300;
@@ -1369,8 +1434,11 @@ loc_g_695E:
   if (PlayField16[*si + 2 * FieldWidth] != 0)
     return;
 
+#if 0
   dx = aniFramesSplitUpDown;
+#else
   dx1 = aniSplitUpDown;
+#endif
   dx2Step = FieldWidth;
   PlayField16[*si] = 0x1A03;
   PlayField16[*si + 2 * FieldWidth] = 0x300;
@@ -1384,8 +1452,11 @@ loc_g_6982:
   if (PlayField16[*si + 2] != 0)
     return;
 
+#if 0
   dx = aniFramesMurphyEatRight;
+#else
   dx1 = aniMurphyMoveRight;
+#endif
   dx2Step = 1;
   PlayField16[*si] = 0x1B03;
   PlayField16[*si + 2] = 0x300;
@@ -1400,8 +1471,11 @@ loc_StopSplit:
   // ==========================================================================
 
 loc_g_69A6:
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft);
+#endif
   PlayField16[*si] = 0x1C03;
   PlayField16[*si - FieldWidth] = 0x300;
   goto loc_StopNoSplit;
@@ -1411,8 +1485,11 @@ loc_g_69A6:
   // ==========================================================================
 
 loc_g_69CE:
+#if 0
   dx = aniFramesMurphyEatLeft;
+#else
   dx1 = aniMurphyEatLeft;
+#endif
   PlayField16[*si] = 0x300; // !!!!!! this time we move murphy at sequence-start!
   PlayField16[*si - 1] = 0x1D03;
   *si = *si - 1;
@@ -1423,8 +1500,11 @@ loc_g_69CE:
   // ==========================================================================
 
 loc_g_69F7:
+#if 0
   dx = (MurphyVarFaceLeft == 0 ? aniFramesMurphyEatUpRight : aniFramesMurphyEatUpLeft);
+#else
   dx1 = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft);
+#endif
   PlayField16[*si] = 0x1E03;
   PlayField16[*si + FieldWidth] = 0x300;
   goto loc_StopNoSplit;
@@ -1434,9 +1514,12 @@ loc_g_69F7:
   // ==========================================================================
 
 loc_g_6A1F:
+#if 0
   //  dx = aniFramesMurphyEatRightRedDisk 'this sequence is 9 steps long!
   dx = aniFramesMurphyEatRight;
+#else
   dx1 = aniMurphyEatRight;
+#endif
   // --------------------------------------------------------------------------
   // BugFix
   // Table data_h_145A, pointed to by table data_h_105E, has a severe bug:
@@ -1448,13 +1531,8 @@ loc_g_6A1F:
   // Remember that this is not the real bug-fix, but we must live with
   // this existing bug and correct for the consequences of it.
 
-#if 1
-  if (0 == AllowEatRightRedDiskBug) // Murphy's screen x-position
+  if (AllowEatRightRedDiskBug == 0) // Murphy's screen x-position
     MurphyScreenXPos = MurphyScreenXPos - 2 * MurphyZoomFactor;
-#else
-  if (0 == AllowEatRightRedDiskBug) // Murphy's screen x-position
-    MurphyScreenXPos = MurphyScreenXPos - 2;
-#endif
 
   SeqPos = -1;
   // FS: for me this means to blit the first animation frame twice
@@ -1470,8 +1548,11 @@ loc_g_6A1F:
   // ==========================================================================
 
 loc_g_6A48:
+#if 0
   dx = aniFramesTouchRedDisk;
+#else
   dx1 = aniTouchRedDisk;
+#endif
   MovHighByte(&PlayField16[*si], 0x20);
   MovHighByte(&PlayField16[*si - FieldWidth], 3);
   goto loc_StopNoSplit;
@@ -1481,8 +1562,11 @@ loc_g_6A48:
   // ==========================================================================
 
 loc_g_6A64:
+#if 0
   dx = aniFramesTouchRedDisk;
+#else
   dx1 = aniTouchRedDisk;
+#endif
   MovHighByte(&PlayField16[*si], 0x21);
   MovHighByte(&PlayField16[*si - 1], 3);
   goto loc_StopNoSplit;
@@ -1492,8 +1576,11 @@ loc_g_6A64:
   // ==========================================================================
 
 loc_g_6A80:
+#if 0
   dx = aniFramesTouchRedDisk;
+#else
   dx1 = aniTouchRedDisk;
+#endif
   MovHighByte(&PlayField16[*si], 0x22);
   MovHighByte(&PlayField16[*si + FieldWidth], 3);
   goto loc_StopNoSplit;
@@ -1503,8 +1590,11 @@ loc_g_6A80:
   // ==========================================================================
 
 loc_g_6A9C:
+#if 0
   dx = aniFramesTouchRedDisk;
+#else
   dx1 = aniTouchRedDisk;
+#endif
   MovHighByte(&PlayField16[*si], 0x23);
   MovHighByte(&PlayField16[*si + 1], 3);
 
@@ -1524,8 +1614,11 @@ loc_g_6AB8:
 #if 0
   subCopyImageToScreen(*si, aniPushRight);
 #endif
+#if 0
   dx = aniFramesYellowDisk;
+#else
   dx1 = aniYellowDisk;
+#endif
   dxPos = *si - FieldWidth;
 #if 1
   dx2 = (MurphyVarFaceLeft == 0 ? aniPushRight : aniPushLeft);
@@ -1549,8 +1642,11 @@ loc_g_6AF1:
 
   PlayField16[*si - 2] = 0x1200;
   subCopyImageToScreen(*si, aniPushLeft);
+#if 0
   dx = aniFramesYellowDisk;
+#else
   dx1 = aniYellowDisk;
+#endif
   dxPos = *si - 1;
   dx2 = aniPushLeft;
   dx2Step = 1;
@@ -1569,8 +1665,11 @@ loc_g_6B2A:
 #if 0
   subCopyImageToScreen(*si, aniPushRight);
 #endif
+#if 0
   dx = aniFramesYellowDisk;
+#else
   dx1 = aniYellowDisk;
+#endif
   dxPos = *si + FieldWidth;
 #if 1
   dx2 = (MurphyVarFaceLeft == 0 ? aniPushRight : aniPushLeft);
@@ -1594,8 +1693,11 @@ loc_g_6B63:
 
   PlayField16[*si + 2] = 0x1200;
   subCopyImageToScreen(*si, aniPushRight);
+#if 0
   dx = aniFramesYellowDisk;
+#else
   dx1 = aniYellowDisk;
+#endif
   dxPos = *si + 1;
   dx2 = aniPushRight;
   dx2Step = -1;
@@ -1612,8 +1714,11 @@ loc_g_6B9B:
 
   PlayField16[*si - 2] = 0x800;
   subCopyImageToScreen(*si, aniPushLeft);
+#if 0
   dx = aniFramesOrangeDisk;
+#else
   dx1 = aniOrangeDisk;
+#endif
   dxPos = *si - 1;
   dx2 = aniPushLeft;
   dx2Step = 1;
@@ -1633,8 +1738,11 @@ loc_g_6BD3:
 
   PlayField16[*si + 2] = 0x100;
   subCopyImageToScreen(*si, aniPushRight);
+#if 0
   dx = aniFramesOrangeDisk;
+#else
   dx1 = aniOrangeDisk;
+#endif
   dxPos = *si + 1;
   dx2 = aniPushRight;
   dx2Step = -1;
@@ -1741,51 +1849,11 @@ loc_g_6C8F:
   {
     // ++++++++++++++++++++++++++
     // Begin of normal movement
-#if 1
     MurphyScreenXPos = MurphyScreenXPos + MurphyDX * MurphyZoomFactor;
     MurphyScreenYPos = MurphyScreenYPos + MurphyDY * MurphyZoomFactor;
-#else
-    MurphyScreenXPos = MurphyScreenXPos + MurphyDX;
-    MurphyScreenYPos = MurphyScreenYPos + MurphyDY;
-#endif
-
-
-#if 0
-  printf("::: %04d [%03ld, %02d] ----------> %s [%d] [%d, %d] [%d, %d] [%d]\n",
-        TimerVar,
-        DemoOffset - DemoPointer, DemoKeyRepeatCounter,
-        (DemoKeyCode == keyNone        ? "(none)"              :
-         DemoKeyCode == keyLeft        ? "left"                :
-         DemoKeyCode == keyRight       ? "right"               :
-         DemoKeyCode == keyUp          ? "up"                  :
-         DemoKeyCode == keyDown        ? "down"                :
-         DemoKeyCode == keySpace       ? "space"               :
-         DemoKeyCode == keySpaceLeft   ? "space + left"        :
-         DemoKeyCode == keySpaceRight  ? "space + right"       :
-         DemoKeyCode == keySpaceUp     ? "space + up"          :
-         DemoKeyCode == keySpaceDown   ? "space + down"        : "(unknown)"),
-        DemoKeyCode,
-        MurphyScreenXPos, MurphyScreenYPos,
-        MurphyPosIndex % 60, MurphyPosIndex / 60,
-        ClearPos);
-#endif
-
-#if 0
-  Delay(500);
-#endif
 
-#if 1
     if (!(ClearPos < 0)) // clear field that murphy is leaving
       subCopyImageToScreen(ClearPos, aniSpace);
-#else
-    if (! ClearPos < 0) // clear field that murphy is leaving
-      subCopyFieldToScreen(ClearPos, 0);
-#endif
-
-#if 0
-    printf("::: ---------------> %d, %d [%d, %d]\n",
-          MurphyScreenXPos, MurphyScreenYPos, MurphyDX, MurphyDY);
-#endif
 
 #if 0
     // !!! special two-tile animation currently not used !!!
@@ -1811,7 +1879,7 @@ loc_g_6C8F:
 #endif
 
 #if 1
-    StretchedSprites.BltImg(X, Y, dx1, Tmp);
+    DDSpriteBuffer_BltImg(X, Y, dx1, Tmp);
     GfxGraphic[GetX(*si)][GetY(*si)] = -1;     // (Murphy's position)
     GfxGraphic[GetX(dxPos)][GetY(dxPos)] = -1; // (snapping position)
     // printf("::: Tmp: %d\n", Tmp);
@@ -1837,13 +1905,8 @@ loc_g_6C8F:
       else // pushing something
 #endif
       {
-#if 1
        // (SeqPos iterates from 0 to 7 while pushing)
-        StretchedSprites.BltImg(X + tDeltaX, Y + tDeltaY, dx2, SeqPos);
-       // printf("::: SeqPos: %d\n", SeqPos);
-#else
-        StretchedSprites.BltEx(X + tDeltaX, Y + tDeltaY, dx2);
-#endif
+        DDSpriteBuffer_BltImg(X + tDeltaX, Y + tDeltaY, dx2, SeqPos);
       }
     }
 
@@ -1854,33 +1917,20 @@ loc_g_6C8F:
   {
     // ++++++++++++++++++++++++++++++++
     // Begin of split movement (port)
-#if 1
     MurphyScreenXPos = MurphyScreenXPos + 2 * MurphyDX * MurphyZoomFactor;
     MurphyScreenYPos = MurphyScreenYPos + 2 * MurphyDY * MurphyZoomFactor;
-#else
-    MurphyScreenXPos = MurphyScreenXPos + 2 * MurphyDX;
-    MurphyScreenYPos = MurphyScreenYPos + 2 * MurphyDY;
-#endif
     subCopyImageToScreen(ClearPos, aniSpace); // clear the field that murphy leaves
     tDeltaX = MurphyDX * LocalStretch * (SeqPos + 1);
     tDeltaY = MurphyDY * LocalStretch * (SeqPos + 1);
     X = GetStretchX(dxPos) + tDeltaX;
     Y = GetStretchY(dxPos) + tDeltaY;
-#if 1
-    StretchedSprites.BltImg(X, Y, dx1, SeqPos); // plot first murphy
-#else
-    StretchedSprites.BltEx(X, Y, dx[SeqPos]); // plot first murphy
-#endif
+    DDSpriteBuffer_BltImg(X, Y, dx1, SeqPos); // plot first murphy
+
     tPos = dxPos + dx2Step;
     X = GetStretchX(tPos);
     Y = GetStretchY(tPos);
-#if 1
-    StretchedSprites.BltImg(X + tDeltaX, Y + tDeltaY, dx1, SeqPos); // plot second murphy
-    StretchedSprites.BltImg(X, Y, fiGraphic[LowByte(PlayField16[tPos])], 0); // replot the port on top
-#else
-    StretchedSprites.BltEx(X + tDeltaX, Y + tDeltaY, dx[SeqPos]); // plot second murphy
-    StretchedSprites.BltEx(X, Y, LowByte(PlayField16[tPos])); // replot the port on top
-#endif
+    DDSpriteBuffer_BltImg(X + tDeltaX, Y + tDeltaY, dx1, SeqPos); // plot second murphy
+    DDSpriteBuffer_BltImg(X, Y, fiGraphic[LowByte(PlayField16[tPos])], 0); // replot the port on top
     // End of split movement (port)
     // ------------------------------
   } // loc_g_6D1E:'loc_g_6D28:
@@ -2797,7 +2847,7 @@ void subCopyAnimToScreen(int si, int graphic, int sync_frame)
   // +++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si);
   Y = GetStretchY(si);
-  StretchedSprites.BltImg(X, Y, graphic, sync_frame);
+  DDSpriteBuffer_BltImg(X, Y, graphic, sync_frame);
   // +++++++++++++++++++++++++++++++++++++++++
 }
 
index 8a2b3f6442cd1f7fab7dc986acb4e2402073efdf..ece70c444f888fa30d783fecc59b4334d5cebcf2 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef MURPHY_H
 #define MURPHY_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 extern void subAdjustZonksInfotronsAboveMurphy(int si);
index 0e741395a9634b0f61a28cb3200c20c5b04ffce0..dc83e9eae849e783f211798c38255a5fdfd9632b 100644 (file)
@@ -56,8 +56,8 @@ loc_g_2804: // disk is falling
   dx = HighByte(PlayField16[si]) & 0x7;
   X = GetStretchX(si);
   Y = GetStretchY(si);
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X, Y + TwoPixels * (dx + 1), aniOrangeDisk, dx);
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X, Y + TwoPixels * (dx + 1), aniOrangeDisk, dx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
   bl = HighByte(PlayField16[si]) + 1;
index cc1e1f26a32fc57a44c20e219e587ee713f4548f..410aab4d3b15685ec0c79c85a4cc1dd9273ac771 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef ORANGEDISK_H
 #define ORANGEDISK_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 
diff --git a/src/game_sp/PathTools.c b/src/game_sp/PathTools.c
deleted file mode 100644 (file)
index e66dfb8..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-// ----------------------------------------------------------------------------
-// PathTools.c
-// ----------------------------------------------------------------------------
-
-#include "PathTools.h"
-
-// static char *VB_Name = "PathTools_Module";
-
-// --- Option Explicit
-// --- Option Compare Text
-
-// ###########  Quote & UnQuote ##################################################
-
-void UnQuote(char *ST)
-{
-  long L;
-
-  L = strlen(ST);
-  while (STRING_IS_LIKE(ST, "\"*"))
-  {
-    ST = Right(ST, L - 1);
-    L = L - 1;
-  }
-
-  while (STRING_IS_LIKE(ST, "*\""))
-  {
-    ST = Left(ST, L - 1);
-  }
-}
-
-void Quote(char *ST)
-{
-  if (! STRING_IS_LIKE(ST, "\"*"))
-    ST = CAT("\"", ST);
-
-  if (! STRING_IS_LIKE(ST, "*\""))
-    ST = CAT(ST, "\"");
-}
-
-char *UnQuoted(char *STRG)
-{
-  char *UnQuoted;
-
-  long L;
-  char *ST;
-
-  ST = STRG;
-  L = strlen(ST);
-  while (STRING_IS_LIKE(ST, "\"*"))
-  {
-    ST = Right(ST, L - 1);
-    L = L - 1;
-  }
-
-  while (STRING_IS_LIKE(ST, "*\""))
-  {
-    ST = Left(ST, L - 1);
-  }
-
-  UnQuoted = ST;
-
-  return UnQuoted;
-}
-
-char *Quoted(char *STRG)
-{
-  char *Quoted;
-
-  char *ST;
-
-  ST = STRG;
-  if (! STRING_IS_LIKE(ST, "\"*"))
-    ST = CAT("\"", ST);
-
-  if (! STRING_IS_LIKE(ST, "*\""))
-    ST = CAT(ST, "\"");
-
-  Quoted = ST;
-
-  return Quoted;
-}
-
-// ############ Path-/FileName-Extraction and concatanation ######################
-
-char *StripDir(char *Path)
-{
-  char *StripDir;
-
-  char *T;
-  long i;
-
-  T = StrReverse(Path);
-  i = InStr(1, T, "/");
-  if (i == 0)
-    StripDir = "";
-  else
-    StripDir = StrReverse(Right(T, strlen(T) - i));
-
-  return StripDir;
-}
-
-char *StripFileName(char *Path)
-{
-  char *StripFileName;
-
-  char *T;
-  long i;
-
-  T = StrReverse(Path);
-  if (STRING_IS_LIKE(T, "/*"))
-    T = Right(T, strlen(T) - 1);
-
-  i = InStr(1, T, "/");
-  if (i == 0)
-    i = strlen(T) + 1;
-
-  if (i < 2)
-    StripFileName = "";
-  else
-    StripFileName = StrReverse(Left(T, i - 1));
-
-  return StripFileName;
-}
-
-char *StripExtension(char *Path)
-{
-  char *StripExtension;
-
-  char *T;
-  long i, iSlash;
-
-  T = StrReverse(Path);
-  iSlash = InStr(1, T, "/");
-  i = InStr(1, T, ".");
-  if ((i < 2) || (iSlash < i))
-    StripExtension = "";
-  else
-    StripExtension = StrReverse(Left(T, i - 1));
-
-  return StripExtension;
-}
-
-char *NewExtension(char *Path, char *NewExt)
-{
-  char *NewExtension;
-
-  // NewExtension("C:\MyPath\MyFile.Old","New") returns "C:\MyPath\MyFile.New"
-  // NewExtension("C:\MyPath.dir\MyFile","New") returns "C:\MyPath\MyFile.New"
-  char *T;
-  long i, iSlash, ELen;
-
-  T = StrReverse(Path);
-  iSlash = InStr(1, T, "/");
-  i = InStr(1, T, ".");
-  if ((i < 1) || (iSlash < i))
-    ELen = 0;
-  else
-    ELen = i;
-
-  NewExtension = CAT(Left(StrReverse(T), strlen(T) - i), ".", NewExt);
-
-  return NewExtension;
-}
-
-char *StripExtensionlessFileName(char *Path)
-{
-  char *StripExtensionlessFileName;
-
-  char *T, *T2;
-  // long i, iSlash;
-
-  T = StripFileName(Path);
-  T2 = StripExtension(Path);
-  StripExtensionlessFileName = Left(T, strlen(T) - strlen(T2) - (0 < strlen(T2) ? 1 : 0));
-
-  return StripExtensionlessFileName;
-}
-
-char *WithSlash(char *Path)
-{
-  char *WithSlash;
-
-  if (STRING_IS_LIKE(Path, "*/"))
-  {
-    WithSlash = Path;
-  }
-  else
-  {
-    WithSlash = CAT(Path, "/");
-  }
-
-  return WithSlash;
-}
-
-char *SlashLess(char *Path)
-{
-  char *SlashLess;
-
-  SlashLess = Path;
-  while (STRING_IS_LIKE(SlashLess, "*/"))
-  {
-    SlashLess = Left(Path, strlen(Path) - 1);
-  }
-
-  return SlashLess;
-}
-
-// ############ File-/Diresctory-Operations ######################################
-
-boolean FileExists(char *Path)
-{
-  boolean FileExists;
-
-  if ((STRING_IS_LIKE(Dir(Path), "")) || (STRING_IS_LIKE(Path, "")))
-    FileExists = False;
-  else
-    FileExists = True;
-
-  return FileExists;
-}
-
-void MayKill(char *Path)
-{
-
-  // --- On Error GoTo MayKillEH
-  Kill(Path);
-  // MayKillEH:
-}
-
-boolean IsDir(char *Path)
-{
-  boolean IsDir;
-
-
-  // --- On Error Resume Next
-  IsDir = (vbDirectory == (GetAttr(Path) & vbDirectory));
-  if (Err.Number != 0)
-    IsDir = False;
-
-  return IsDir;
-}
-
-// ######### binary comparison of files ##########################################
-
-boolean FilesEqual(char *Path1, char *Path2)
-{
-  boolean FilesEqual;
-
-  FILE *FNum1, *FNum2;
-  long nSize, i;
-  boolean b1Open, b2Open;
-  byte *bin1, *bin2;
-
-  FilesEqual = False;
-  // Debug.Assert(FileExists(Path1));
-  // Debug.Assert(FileExists(Path2));
-  if (! (FileExists(Path1) && FileExists(Path2)))
-    return FilesEqual;
-
-  nSize = FileLen(Path1);
-  if (nSize != FileLen(Path2))
-    return FilesEqual;
-
-  bin1 = REDIM_1D(sizeof(byte), 0, nSize + 1 - 1);
-  bin2 = REDIM_1D(sizeof(byte), 0, nSize + 1 - 1);
-  b1Open = False;
-  b2Open = False;
-
-  // --- On Error GoTo FilesEqualEH
-  // FNum1 = FreeFile();
-  FNum1 = fopen(Path1, "rb");
-  b1Open = True;
-  FILE_GET(FNum1, -1, &bin1, sizeof(bin1));
-  fclose(FNum1);
-  b1Open = False;
-  // FNum2 = FreeFile();
-  FNum2 = fopen(Path2, "rb");
-  b2Open = True;
-  FILE_GET(FNum2, -1, &bin2, sizeof(bin2));
-  fclose(FNum2);
-  b2Open = False;
-  // --- On Error GoTo 0
-
-  for (i = 1; i <= nSize; i++)
-  {
-    if (bin1[i] != bin2[i]) // return false
-      return FilesEqual;
-  }
-
-  FilesEqual = True;
-  return FilesEqual;
-
-#if 0
-FilesEqualEH:
-  if (b1Open)
-    fclose(FNum1);
-
-  if (b2Open)
-    fclose(FNum2);
-
-  return FilesEqual;
-#endif
-
-}
diff --git a/src/game_sp/PathTools.h b/src/game_sp/PathTools.h
deleted file mode 100644 (file)
index ce8fda4..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// ----------------------------------------------------------------------------
-// PathTools.h
-// ----------------------------------------------------------------------------
-
-#ifndef PATHTOOLS_H
-#define PATHTOOLS_H
-
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
-#include "global.h"
-
-extern boolean FileExists(char *Path);
-extern boolean FilesEqual(char *Path1, char *Path2);
-extern boolean IsDir(char *Path);
-extern void MayKill(char *Path);
-extern char *NewExtension(char *Path, char *NewExt);
-extern void Quote(char *ST);
-extern char *Quoted(char *STRG);
-extern char *SlashLess(char *Path);
-extern char *StripDir(char *Path);
-extern char *StripExtension(char *Path);
-extern char *StripExtensionlessFileName(char *Path);
-extern char *StripFileName(char *Path);
-extern void UnQuote(char *ST);
-extern char *UnQuoted(char *STRG);
-extern char *WithSlash(char *Path);
-
-#endif /* PATHTOOLS_H */
diff --git a/src/game_sp/SettingsObject.c b/src/game_sp/SettingsObject.c
deleted file mode 100644 (file)
index a241fe5..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-// ----------------------------------------------------------------------------
-// SettingsObject.c
-// ----------------------------------------------------------------------------
-
-#include "SettingsObject.h"
-
-// --- VERSION 1.0 CLASS
-// --- BEGIN
-// ---   MultiUse = -1  'True  // True
-// ---   Persistable = 0  'NotPersistable  // NotPersistable
-// ---   DataBindingBehavior = 0  'vbNone  // vbNone
-// ---   DataSourceBehavior  = 0  'vbNone  // vbNone
-// ---   MTSTransactionMode  = 0  'NotAnMTSObject  // NotAnMTSObject
-// --- END
-
-// static char *VB_Name = "SettingsObject";
-// static boolean VB_GlobalNameSpace = False;
-// static boolean VB_Creatable = True;
-// static boolean VB_PredeclaredId = False;
-// static boolean VB_Exposed = False;
-
-// --- Option Explicit
-// --- Option Compare Text
-
-#if 0
-
-const char *AppName = "MegaPlex";
-const char *Config = "Config";
-
-void SettingsObject_Save(char *ValName, int Val)
-{
-  SaveSetting(AppName, Config, ValName, Val);
-}
-
-int SettingsObject_Read(char *ValName, int Default)
-{
-  int Read;
-
-  Read = GetSetting(AppName, Config, ValName, Default);
-
-  return Read;
-}
-
-#endif
diff --git a/src/game_sp/SettingsObject.h b/src/game_sp/SettingsObject.h
deleted file mode 100644 (file)
index a25e4f2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// ----------------------------------------------------------------------------
-// SettingsObject.h
-// ----------------------------------------------------------------------------
-
-#ifndef SETTINGSOBJECT_H
-#define SETTINGSOBJECT_H
-
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
-#include "global.h"
-
-extern int SettingsObject_Read(char *ValName, int Default);
-extern void SettingsObject_Save(char *ValName, int Val);
-
-#endif /* SETTINGSOBJECT_H */
index 5053b3639d6caffdef62664f32056ae2af6edb10..e23dc9021eafdf4d793d473802882d9262c68445 100644 (file)
@@ -4,18 +4,19 @@
 
 #include "SnikSnaks.h"
 
-static int subDrawSnikSnakFromAbove(int si, int bx);
-static int subDrawSnikSnakFromBelow(int si, int bx);
-static int subDrawSnikSnakFromLeft(int si, int bx);
-static int subDrawSnikSnakFromRight(int si, int bx);
-static int subDrawSnikSnakTurnLeft(int si, int bx);
-static int subDrawSnikSnakTurnRight(int si, int bx);
-static int subSnikSnakFromAbove(int si, int bx);
-static int subSnikSnakFromBelow(int si, int bx);
-static int subSnikSnakFromLeft(int si, int bx);
-static int subSnikSnakFromRight(int si, int bx);
-static int subSnikSnakTurnLeft(int si, int bx);
-static int subSnikSnakTurnRight(int si, int bx);
+
+static void subDrawSnikSnakFromAbove(int, int);
+static void subDrawSnikSnakFromBelow(int, int);
+static void subDrawSnikSnakFromLeft(int, int);
+static void subDrawSnikSnakFromRight(int, int);
+static void subDrawSnikSnakTurnLeft(int, int);
+static void subDrawSnikSnakTurnRight(int, int);
+static void subSnikSnakFromAbove(int, int);
+static void subSnikSnakFromBelow(int, int);
+static void subSnikSnakFromLeft(int, int);
+static void subSnikSnakFromRight(int, int);
+static void subSnikSnakTurnLeft(int, int);
+static void subSnikSnakTurnRight(int, int);
 
 // static char *VB_Name = "modSnikSnak";
 
@@ -25,23 +26,22 @@ static int subSnikSnakTurnRight(int si, int bx);
 // Animate/move Snik-Snaks
 // ==========================================================================
 
-int subAnimateSnikSnaks(int si)
+void subAnimateSnikSnaks(int si)
 {
-  int subAnimateSnikSnaks;
-
   int bx, Tmp;
 
   if (SnikSnaksElectronsFrozen == 1)
-    return subAnimateSnikSnaks;
+    return;
 
 #if 1
   /* (not sure why this was removed -- this broke several level solutions) */
   if (LowByte(PlayField16[si]) != fiSnikSnak)
-    return subAnimateSnikSnaks;
+    return;
 #endif
 
-  //  If LowByte(PlayField16(si)) <> fiSnikSnak Then Exit Function
+  // If LowByte(PlayField16(si)) <> fiSnikSnak Then Exit Function
   // Debug.Assert (LowByte(PlayField16[si]) == fiSnikSnak);
+
   bx = HighByte(PlayField16[si]);
   Tmp = bx / 8;
   switch (Tmp)
@@ -74,19 +74,16 @@ int subAnimateSnikSnaks(int si)
       // Debug.Assert(False);
       break;
   }
+}
 
-  return subAnimateSnikSnaks;
-} // subAnimateSnikSnaks
-
-int subDrawAnimatedSnikSnaks(int si)
+void subDrawAnimatedSnikSnaks(int si)
 {
-  int subDrawAnimatedSnikSnaks;
-
   int bx, Tmp;
 
   // If SnikSnaksElectronsFrozen = 1 Then Exit Function
+
   if (LowByte(PlayField16[si]) != fiSnikSnak)
-    return subDrawAnimatedSnikSnaks;
+    return;
 
   bx = HighByte(PlayField16[si]);
   Tmp = bx / 8;
@@ -116,15 +113,10 @@ int subDrawAnimatedSnikSnaks(int si)
       subDrawSnikSnakFromLeft(si, bx); // access si from left
       break;
   }
+}
 
-  return subDrawAnimatedSnikSnaks;
-} // subAnimateSnikSnaks
-
-static int subSnikSnakTurnLeft(int si, int bx)
+static void subSnikSnakTurnLeft(int si, int bx)
 {
-  static int subSnikSnakTurnLeft;
-
-  // int ax, ah, bl, dx, X, Y;
   int ax, ah, bl;
 
   ax = (TimerVar & 3);
@@ -133,39 +125,35 @@ static int subSnikSnakTurnLeft(int si, int bx)
     if (ax == 3)
       goto loc_g_7622;
 
-    return subSnikSnakTurnLeft;
+    return;
   } // loc_g_75E0:
 
-#if 1
-  subDrawSnikSnakTurnLeft(si, bx);
-#else
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si);
-  Y = GetStretchY(si);
-  StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[bx]);
+  subDrawSnikSnakTurnLeft(si, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
 
   bx = (bx + 1) & 0x7;
   MovHighByte(&PlayField16[si], bx);
-  return subSnikSnakTurnLeft;
+
+  return;
 
 locMayExplode760A:
   ah = HighByte(ax);
   if (ah == 0x1B)
-    return subSnikSnakTurnLeft;
+    return;
 
   if (ah == 0x19)
-    return subSnikSnakTurnLeft;
+    return;
 
   if (ah == 0x18)
-    return subSnikSnakTurnLeft;
+    return;
 
   if (ah == 0x1A)
-    return subSnikSnakTurnLeft;
+    return;
 
   ExplodeFieldSP(si); // Explode
-  return subSnikSnakTurnLeft;
+
+  return;
 
 loc_g_7622:
   bl = HighByte(PlayField16[si]);
@@ -181,7 +169,7 @@ loc_g_7622:
   if (bl == 6)
     goto loc_g_76A7;
 
-  return subSnikSnakTurnLeft;
+  return;
 
 loc_g_763B: // pointing up
   ax = PlayField16[si - FieldWidth];
@@ -191,13 +179,14 @@ loc_g_763B: // pointing up
   if (LowByte(ax) == fiMurphy) // above is murphy -> explode
     goto locMayExplode760A;
 
-  return subSnikSnakTurnLeft;
+  return;
 
 loc_g_764E: // above is empty -> go up
   PlayField16[si] = 0x1BB;
   si = si - FieldWidth;
   PlayField16[si] = 0x1011;
-  return subSnikSnakTurnLeft;
+
+  return;
 
 loc_g_765E: // pointing left
   ax = PlayField16[si - 1];
@@ -207,13 +196,14 @@ loc_g_765E: // pointing left
   if (LowByte(ax) == fiMurphy) // left is murphy -> explode
     goto locMayExplode760A;
 
-  return subSnikSnakTurnLeft;
+  return;
 
 loc_g_7671: // left is empty -> go there
   PlayField16[si] = 0x2BB;
   si = si - 1;
   PlayField16[si] = 0x1811;
-  return subSnikSnakTurnLeft;
+
+  return;
 
 loc_g_7681: // pointing down
   ax = PlayField16[si + FieldWidth];
@@ -223,13 +213,14 @@ loc_g_7681: // pointing down
   if (LowByte(ax) == fiMurphy) // below is murphy -> explode
     goto locMayExplode760A;
 
-  return subSnikSnakTurnLeft;
+  return;
 
 loc_g_7697: // below is empty -> go down
   PlayField16[si] = 0x3BB;
   si = si + FieldWidth;
   PlayField16[si] = 0x2011;
-  return subSnikSnakTurnLeft;
+
+  return;
 
 loc_g_76A7: // pointing Right
   ax = PlayField16[si + 1];
@@ -239,21 +230,16 @@ loc_g_76A7: // pointing Right
   if (LowByte(ax) == fiMurphy) // right is murphy -> explode
     goto locMayExplode760A;
 
-  return subSnikSnakTurnLeft;
+  return;
 
 loc_g_76BD: // right is empty -> go there
   PlayField16[si] = 0x4BB;
   si = si + 1;
   PlayField16[si] = 0x2811;
+}
 
-  return subSnikSnakTurnLeft;
-} // subSnikSnakTurnLeft
-
-static int subSnikSnakTurnRight(int si, int bx)
+static void subSnikSnakTurnRight(int si, int bx)
 {
-  static int subSnikSnakTurnRight;
-
-  // int ax, ah, bl, dx, X, Y;
   int ax, ah, bl;
 
   ax = (TimerVar & 3);
@@ -262,39 +248,35 @@ static int subSnikSnakTurnRight(int si, int bx)
     if (ax == 3)
       goto loc_g_771F;
 
-    return subSnikSnakTurnRight;
+    return;
   } // loc_g_76DB:
 
-#if 1
-  subDrawSnikSnakTurnRight(si, bx);
-#else
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si);
-  Y = GetStretchY(si);
-  StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[0x10 - bx]);
+  subDrawSnikSnakTurnRight(si, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
 
   bx = ((bx + 1) & 0x7) | 8;
   MovHighByte(&PlayField16[si], bx);
-  return subSnikSnakTurnRight;
+
+  return;
 
 locMayExplode7707:
   ah = HighByte(ax);
   if (ah == 0x1B)
-    return subSnikSnakTurnRight;
+    return;
 
   if (ah == 0x19)
-    return subSnikSnakTurnRight;
+    return;
 
   if (ah == 0x18)
-    return subSnikSnakTurnRight;
+    return;
 
   if (ah == 0x1A)
-    return subSnikSnakTurnRight;
+    return;
 
   ExplodeFieldSP(si); // Explode
-  return subSnikSnakTurnRight;
+
+  return;
 
 loc_g_771F:
   bl = HighByte(PlayField16[si]);
@@ -310,7 +292,7 @@ loc_g_771F:
   if (bl == 0xE)
     goto loc_g_775B;
 
-  return subSnikSnakTurnRight;
+  return;
 
 loc_g_7738: // pointing up
   ax = PlayField16[si - FieldWidth];
@@ -320,13 +302,14 @@ loc_g_7738: // pointing up
   if (LowByte(ax) == fiMurphy) // above is murphy -> explode
     goto locMayExplode7707;
 
-  return subSnikSnakTurnRight;
+  return;
 
 loc_g_774B: // above is empty -> go up
   PlayField16[si] = 0x1BB;
   si = si - FieldWidth;
   PlayField16[si] = 0x1011;
-  return subSnikSnakTurnRight;
+
+  return;
 
 loc_g_775B: // pointing left
   ax = PlayField16[si - 1];
@@ -336,13 +319,14 @@ loc_g_775B: // pointing left
   if (LowByte(ax) == fiMurphy) // left is murphy -> explode
     goto locMayExplode7707;
 
-  return subSnikSnakTurnRight;
+  return;
 
 loc_g_776E: // left is empty -> go there
   PlayField16[si] = 0x2BB;
   si = si - 1;
   PlayField16[si] = 0x1811;
-  return subSnikSnakTurnRight;
+
+  return;
 
 loc_g_777E: // pointing down
   ax = PlayField16[si + FieldWidth];
@@ -352,13 +336,14 @@ loc_g_777E: // pointing down
   if (LowByte(ax) == fiMurphy) // below is murphy -> explode
     goto locMayExplode7707;
 
-  return subSnikSnakTurnRight;
+  return;
 
 loc_g_7794: // below is empty -> go down
   PlayField16[si] = 0x3BB;
   si = si + FieldWidth;
   PlayField16[si] = 0x2011;
-  return subSnikSnakTurnRight;
+
+  return;
 
 loc_g_77A4: // pointing Right
   ax = PlayField16[si + 1];
@@ -368,35 +353,22 @@ loc_g_77A4: // pointing Right
   if (LowByte(ax) == fiMurphy) // right is murphy -> explode
     goto locMayExplode7707;
 
-  return subSnikSnakTurnRight;
+  return;
 
 loc_g_77BA: // right is empty -> go there
   PlayField16[si] = 0x4BB;
   si = si + 1;
   PlayField16[si] = 0x2811;
+}
 
-  return subSnikSnakTurnRight;
-} // subSnikSnakTurnRight
-
-static int subSnikSnakFromBelow(int si, int bx)
+static void subSnikSnakFromBelow(int si, int bx)
 {
-  static int subSnikSnakFromBelow;
-
-  // int ax, ah, bl, dx, X, Y;
   int ax, bl;
 
-#if 1
-  subDrawSnikSnakFromBelow(si, bx);
-  bx = bx - 0xF;  // get and increment sequence#
-#else
-  bx = bx - 0xF;  // get and increment sequence#
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si);
-  Y = GetStretchY(si + FieldWidth);
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X, Y - bx * TwoPixels, aniSnikSnakUp + bx);
+  subDrawSnikSnakFromBelow(si, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
+  bx = bx - 0xF;  // get and increment sequence#
 
   bl = LowByte(bx);
   if (bl == 7 && LowByte(PlayField16[si + FieldWidth]) != fiExplosion)
@@ -408,7 +380,8 @@ static int subSnikSnakFromBelow(int si, int bx)
   {
     bl = bl + 0x10;
     MovHighByte(&PlayField16[si], bl);
-    return subSnikSnakFromBelow;
+
+    return;
   } // loc_g_7813
 
   PlayField16[si] = 0x11; // sequence#=8 -> arrived at the new field
@@ -416,7 +389,8 @@ static int subSnikSnakFromBelow(int si, int bx)
   if (ax == 0 || LowByte(ax) == fiMurphy) // check for empty or murphy
   {
     MovHighByte(&PlayField16[si], 1); // start to turn left
-    return subSnikSnakFromBelow;
+
+    return;
   } // loc_g_7826: and 'loc_g_7833:
 
   ax = PlayField16[si - FieldWidth]; // cannot turn left -> check above
@@ -425,47 +399,37 @@ static int subSnikSnakFromBelow(int si, int bx)
     PlayField16[si] = 0x1BB; // mark as "sniksnak leaving"
     si = si - FieldWidth; // go up!
     PlayField16[si] = 0x1011;
-    return subSnikSnakFromBelow;
+
+    return;
   } // loc_g_784A:
 
   if (LowByte(ax) == fiMurphy) // check for murphy above
   {
     ExplodeFieldSP(si); // Explode
-    return subSnikSnakFromBelow;
+
+    return;
   } // loc_g_7855:
 
   ax = PlayField16[si + 1]; // check right field
   if (ax == 0 || LowByte(ax) == fiMurphy) // check for empty or murphy
   {
     MovHighByte(&PlayField16[si], 9); // start to turn right
-    return subSnikSnakFromBelow;
+
+    return;
   } // loc_g_7862: and 'loc_g_786F:
 
   // else: no way to go, start turning around
   MovHighByte(&PlayField16[si], 1);
+}
 
-  return subSnikSnakFromBelow;
-} // subSnikSnakFromBelow
-
-static int subSnikSnakFromRight(int si, int bx)
+static void subSnikSnakFromRight(int si, int bx)
 {
-  static int subSnikSnakFromRight;
-
-  // int ax, ah, bl, dx, X, Y;
   int ax, bl;
 
-#if 1
-  subDrawSnikSnakFromRight(si, bx);
-  bx = bx - 0x17;  // get and increment sequence#
-#else
-  bx = bx - 0x17;  // get and increment sequence#
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si + 1);
-  Y = GetStretchY(si);
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X - bx * TwoPixels, Y, aniSnikSnakLeft + bx);
+  subDrawSnikSnakFromRight(si, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
+  bx = bx - 0x17;  // get and increment sequence#
 
   bl = LowByte(bx);
   if (bl == 7 && LowByte(PlayField16[si + 1]) != fiExplosion)
@@ -477,7 +441,8 @@ static int subSnikSnakFromRight(int si, int bx)
   {
     bl = bl + 0x18;
     MovHighByte(&PlayField16[si], bl);
-    return subSnikSnakFromRight;
+
+    return;
   } // loc_g_78B9:
 
   PlayField16[si] = 0x11; // sequence#=8 -> arrived at the new field
@@ -485,7 +450,8 @@ static int subSnikSnakFromRight(int si, int bx)
   if (ax == 0 || LowByte(ax) == fiMurphy) // empty or murphy?
   {
     MovHighByte(&PlayField16[si], 3); // yes -> turn left down
-    return subSnikSnakFromRight;
+
+    return;
   } // loc_g_78CC: and 'loc_g_78D9:
 
   ax = PlayField16[si - 1]; // check left, etc ... see the comments on subSnikSnakFromBelow()
@@ -494,46 +460,36 @@ static int subSnikSnakFromRight(int si, int bx)
     PlayField16[si] = 0x2BB;
     si = si - 1;                // 1 field left
     PlayField16[si] = 0x1811;
-    return subSnikSnakFromRight;
+
+    return;
   } // loc_g_78F0:
 
   if (LowByte(ax) == fiMurphy)
   {
     ExplodeFieldSP(si);      // Explode
-    return subSnikSnakFromRight;
+
+    return;
   } // loc_g_78FB:
 
   ax = PlayField16[si - FieldWidth]; // check above
   if (ax == 0 || LowByte(ax) == fiMurphy)
   {
     MovHighByte(&PlayField16[si], 0xF);
-    return subSnikSnakFromRight;
+
+    return;
   } // loc_g_7908:loc_g_7915:
 
   MovHighByte(&PlayField16[si], 3);
+}
 
-  return subSnikSnakFromRight;
-} // subSnikSnakFromRight
-
-static int subSnikSnakFromAbove(int si, int bx)
+static void subSnikSnakFromAbove(int si, int bx)
 {
-  static int subSnikSnakFromAbove;
-
-  // int ax, ah, bl, dx, X, Y;
   int ax, bl;
 
-#if 1
-  subDrawSnikSnakFromAbove(si, bx);
-  bx = bx - 0x1F;  // get and increment sequence#
-#else
-  bx = bx - 0x1F;  // get and increment sequence#
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si);
-  Y = GetStretchY(si - FieldWidth);
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X, Y + bx * TwoPixels, aniSnikSnakDown + bx);
+  subDrawSnikSnakFromAbove(si, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
+  bx = bx - 0x1F;  // get and increment sequence#
 
   bl = LowByte(bx);
   if (bl == 7 && LowByte(PlayField16[si - FieldWidth]) != fiExplosion)
@@ -545,7 +501,8 @@ static int subSnikSnakFromAbove(int si, int bx)
   {
     bl = bl + 0x20;
     MovHighByte(&PlayField16[si], bl);
-    return subSnikSnakFromAbove;
+
+    return;
   } // loc_g_7813
 
   PlayField16[si] = 0x11; // sequence#=8 -> arrived at the new field
@@ -553,7 +510,8 @@ static int subSnikSnakFromAbove(int si, int bx)
   if (ax == 0 || LowByte(ax) == fiMurphy)
   {
     MovHighByte(&PlayField16[si], 5);
-    return subSnikSnakFromAbove;
+
+    return;
   } // loc_g_7986:
 
   ax = PlayField16[si + FieldWidth]; // check below
@@ -562,46 +520,36 @@ static int subSnikSnakFromAbove(int si, int bx)
     PlayField16[si] = 0x3BB;
     si = si + FieldWidth;                 // 1 field down
     PlayField16[si] = 0x2011;
-    return subSnikSnakFromAbove;
+
+    return;
   } // loc_g_799D:
 
   if (LowByte(ax) == fiMurphy)
   {
     ExplodeFieldSP(si);        // Explode
-    return subSnikSnakFromAbove;
+
+    return;
   } // loc_g_79A8:
 
   ax = PlayField16[si - 1]; // check left
   if (ax == 0 || LowByte(ax) == fiMurphy)
   {
     MovHighByte(&PlayField16[si], 0xD);
-    return subSnikSnakFromAbove;
+
+    return;
   } // loc_g_79C2:
 
   MovHighByte(&PlayField16[si], 5);
+}
 
-  return subSnikSnakFromAbove;
-} // subSnikSnakFromAbove
-
-static int subSnikSnakFromLeft(int si, int bx)
+static void subSnikSnakFromLeft(int si, int bx)
 {
-  static int subSnikSnakFromLeft;
-
-  // int ax, ah, bl, dx, X, Y;
   int ax, bl;
 
-#if 1
-  subDrawSnikSnakFromLeft(si, bx);
-  bx = bx - 0x27;  // get and increment sequence#
-#else
-  bx = bx - 0x27;  // get and increment sequence#
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si - 1);
-  Y = GetStretchY(si);
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X + bx * TwoPixels, Y, aniSnikSnakRight + bx);
+  subDrawSnikSnakFromLeft(si, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
+  bx = bx - 0x27;  // get and increment sequence#
 
   bl = LowByte(bx);
   if (bl == 7 && LowByte(PlayField16[si - 1]) != fiExplosion)
@@ -613,7 +561,8 @@ static int subSnikSnakFromLeft(int si, int bx)
   {
     bl = bl + 0x28;
     MovHighByte(&PlayField16[si], bl);
-    return subSnikSnakFromLeft;
+
+    return;
   } // loc_g_78B9:
 
   PlayField16[si] = 0x11; // sequence#=8 -> arrived at the new field
@@ -621,7 +570,8 @@ static int subSnikSnakFromLeft(int si, int bx)
   if (ax == 0 || LowByte(ax) == fiMurphy)
   {
     MovHighByte(&PlayField16[si], 7);
-    return subSnikSnakFromLeft;
+
+    return;
   } // loc_g_7A2D:
 
   ax = PlayField16[si + 1]; // check right(straight on)
@@ -630,155 +580,98 @@ static int subSnikSnakFromLeft(int si, int bx)
     PlayField16[si] = 0x4BB;
     si = si + 1;                   // 1 field right
     PlayField16[si] = 0x2811;
-    return subSnikSnakFromLeft;
+
+    return;
   } // loc_g_7A44:
 
   if (LowByte(ax) == fiMurphy)
   {
     ExplodeFieldSP(si);    // Explode
-    return subSnikSnakFromLeft;
+
+    return;
   } // loc_g_7A4F:
 
   ax = PlayField16[si + FieldWidth]; // check below
   if (ax == 0 || LowByte(ax) == fiMurphy)
   {
     MovHighByte(&PlayField16[si], 0xB);
-    return subSnikSnakFromLeft;
+
+    return;
   } // loc_g_7A69:
 
   MovHighByte(&PlayField16[si], 7);
+}
 
-  return subSnikSnakFromLeft;
-} // subSnikSnakFromLeft
-
-static int subDrawSnikSnakTurnLeft(int si, int bx)
+static void subDrawSnikSnakTurnLeft(int si, int bx)
 {
-  static int subDrawSnikSnakTurnLeft;
-
-#if 1
-  // int pos = bx / 2;
   int pos = ((bx + 7) % 8) / 2;
 
-  GfxGraphic[GetX(si)][GetY(si)] = aniSnikSnakTurningLeft[pos];
-#else
-  int X, Y;
-
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si);
-  Y = GetStretchY(si);
-  StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[bx]);
+  GfxGraphic[GetX(si)][GetY(si)] = aniSnikSnakTurningLeft[pos];
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
-
-  return subDrawSnikSnakTurnLeft;
 }
 
-static int subDrawSnikSnakTurnRight(int si, int bx)
+static void subDrawSnikSnakTurnRight(int si, int bx)
 {
-  static int subDrawSnikSnakTurnRight;
-
-#if 1
-  // int pos = (bx - 8) / 2;
   int pos = ((bx - 1) % 8) / 2;
 
-  GfxGraphic[GetX(si)][GetY(si)] = aniSnikSnakTurningRight[pos];
-#else
-  int X, Y;
-
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-  X = GetStretchX(si);
-  Y = GetStretchY(si);
-  StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[0x10 - bx]);
+  GfxGraphic[GetX(si)][GetY(si)] = aniSnikSnakTurningRight[pos];
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-#endif
-
-  return subDrawSnikSnakTurnRight;
 }
 
-static int subDrawSnikSnakFromBelow(int si, int bx)
+static void subDrawSnikSnakFromBelow(int si, int bx)
 {
-  static int subDrawSnikSnakFromBelow;
-
   int X, Y;
 
   bx = bx - 0xF; // get and anti-increment sequence#
+
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si);
   Y = GetStretchY(si + FieldWidth);
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X, Y - bx * TwoPixels, aniSnikSnakUp, bx);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X, Y - bx * TwoPixels, aniSnikSnakUp + bx);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X, Y - bx * TwoPixels, aniSnikSnakUp, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-  return subDrawSnikSnakFromBelow;
 }
 
-static int subDrawSnikSnakFromRight(int si, int bx)
+static void subDrawSnikSnakFromRight(int si, int bx)
 {
-  static int subDrawSnikSnakFromRight;
-
   int X, Y;
 
   bx = bx - 0x17; // get and increment sequence#
+
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si + 1);
   Y = GetStretchY(si);
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X - bx * TwoPixels, Y, aniSnikSnakLeft, bx);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X - bx * TwoPixels, Y, aniSnikSnakLeft + bx);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X - bx * TwoPixels, Y, aniSnikSnakLeft, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-  return subDrawSnikSnakFromRight;
 }
 
-static int subDrawSnikSnakFromAbove(int si, int bx)
+static void subDrawSnikSnakFromAbove(int si, int bx)
 {
-  static int subDrawSnikSnakFromAbove;
-
   int X, Y;
 
   bx = bx - 0x1F; // get and increment sequence#
+
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si);
   Y = GetStretchY(si - FieldWidth);
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X, Y + bx * TwoPixels, aniSnikSnakDown, bx);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X, Y + bx * TwoPixels, aniSnikSnakDown + bx);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X, Y + bx * TwoPixels, aniSnikSnakDown, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-  return subDrawSnikSnakFromAbove;
 }
 
-static int subDrawSnikSnakFromLeft(int si, int bx)
+static void subDrawSnikSnakFromLeft(int si, int bx)
 {
-  static int subDrawSnikSnakFromLeft;
-
   int X, Y;
 
   bx = bx - 0x27; // get and increment sequence#
+
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
   X = GetStretchX(si - 1);
   Y = GetStretchY(si);
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X + bx * TwoPixels, Y, aniSnikSnakRight, bx);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X + bx * TwoPixels, Y, aniSnikSnakRight + bx);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X + bx * TwoPixels, Y, aniSnikSnakRight, bx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-  return subDrawSnikSnakFromLeft;
 }
index ddebccfe3ced3ea2db76cc59c67e26f10fb3cf39..fd5f9ffe185afdcd27613aec883f73865f8f7b4d 100644 (file)
@@ -5,14 +5,10 @@
 #ifndef SNIKSNAKS_H
 #define SNIKSNAKS_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
-extern int subAnimateSnikSnaks(int si);
-extern int subDrawAnimatedSnikSnaks(int si);
+
+extern void subAnimateSnikSnaks(int);
+extern void subDrawAnimatedSnikSnaks(int);
 
 #endif /* SNIKSNAKS_H */
index 1284e58c30988017e6e0a98e72ee4867d5bd301b..4a79925e1603ecd943b1d88f1114eb2bc552b1a8 100644 (file)
@@ -4,209 +4,6 @@
 
 #include "Sound.h"
 
-// static char *VB_Name = "modSound";
-
-// --- Option Explicit
-
-int MusicOnFlag;
-int FXOnFlag;
-
-#if 0
-
-DirectSoundBuffer ZonkFX[1 + 1];
-DirectSoundBuffer InfotronFX[1 + 1];
-DirectSoundBuffer BugFX[1 + 1];
-DirectSoundBuffer ExplosionFX[1 + 1];
-DirectSoundBuffer PushFX;
-DirectSoundBuffer ExitFX;
-DirectSoundBuffer BaseFX;
-
-#endif
-
-void LoadSoundFX()
-{
-
-#if 0
-
-  DSBUFFERDESC bufferDesc;
-  WAVEFORMATEX waveFormat;
-  char *FName;
-  int i;
-
-  bufferDesc.lFlags = DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_STATIC;
-  waveFormat.nFormatTag = WAVE_FORMAT_PCM;
-  waveFormat.nChannels = 1;
-  waveFormat.lSamplesPerSec = 8000;
-  waveFormat.nBitsPerSample = 8;
-  waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels;
-  waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign;
-  FName = CAT(App.Path, "/Sound/");
-  for (i = 0; i <= 1; i++)
-  {
-    ZonkFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Zonk.wav"), bufferDesc, waveFormat);
-    InfotronFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Infotron.wav"), bufferDesc, waveFormat);
-    BugFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Bug.wav"), bufferDesc, waveFormat);
-    ExplosionFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Explosion.wav"), bufferDesc, waveFormat);
-  }
-
-  BaseFX = DSound.CreateSoundBufferFromFile(CAT(FName, "Base.wav"), bufferDesc, waveFormat);
-  ExitFX = DSound.CreateSoundBufferFromFile(CAT(FName, "Exit.wav"), bufferDesc, waveFormat);
-  PushFX = DSound.CreateSoundBufferFromFile(CAT(FName, "Push.wav"), bufferDesc, waveFormat);
-  //  FXOnFlag = 0
-
-#endif
-
-}
-
-void subSoundFXZonk()
-{
-#if 0
-
-  int i;
-
-  if (FXOnFlag == 0)
-    return;
-
-  for (i = 0; i <= 1; i++)
-  {
-    if (! IS_NOTHING(&ZonkFX[i], sizeof(ZonkFX[i])))
-    {
-      if (ZonkFX[i].GetStatus() != DSBSTATUS_PLAYING)
-      {
-        ZonkFX[i].Play DSBPLAY_DEFAULT;
-        break;
-      }
-    }
-  }
-
-#endif
-}
-
-void subSoundFXBug()
-{
-#if 0
-
-  int i;
-
-  if (FXOnFlag == 0)
-    return;
-
-  for (i = 0; i <= 1; i++)
-  {
-    if (! IS_NOTHING(&BugFX[i], sizeof(BugFX[i])))
-    {
-      if (BugFX[i].GetStatus() != DSBSTATUS_PLAYING)
-      {
-        BugFX[i].Play DSBPLAY_DEFAULT;
-        break;
-      }
-    }
-  }
-
-#endif
-}
-
-void subSoundFXInfotron()
-{
-#if 0
-
-  int i;
-
-  if (FXOnFlag == 0)
-    return;
-
-  for (i = 0; i <= 1; i++)
-  {
-    if (! IS_NOTHING(&InfotronFX[i], sizeof(InfotronFX[i])))
-    {
-      if (InfotronFX[i].GetStatus() != DSBSTATUS_PLAYING)
-      {
-        InfotronFX[i].Play DSBPLAY_DEFAULT;
-        break;
-      }
-    }
-  }
-
-#endif
-}
-
-void subSoundFXExplosion()
-{
-#if 0
-
-  int i;
-
-  if (FXOnFlag == 0)
-    return;
-
-  for (i = 0; i <= 1; i++)
-  {
-    if (! IS_NOTHING(&ExplosionFX[i], sizeof(ExplosionFX[i])))
-    {
-      if (ExplosionFX[i].GetStatus() != DSBSTATUS_PLAYING)
-      {
-        ExplosionFX[i].Play DSBPLAY_DEFAULT;
-        break;
-      }
-    }
-  }
-
-#endif
-}
-
-void subSoundFXBase()
-{
-#if 0
-
-  if (FXOnFlag == 0)
-    return;
-
-  if (IS_NOTHING(&BaseFX, sizeof(BaseFX)))
-    return;
-
-  if (BaseFX.GetStatus() != DSBSTATUS_PLAYING)
-  {
-    BaseFX.Play DSBPLAY_DEFAULT;
-  }
-
-#endif
-}
-
-void subSoundFXPush()
-{
-#if 0
-
-  if (FXOnFlag == 0)
-    return;
-
-  if (IS_NOTHING(&PushFX, sizeof(PushFX)))
-    return;
-
-  if (PushFX.GetStatus() != DSBSTATUS_PLAYING)
-  {
-    PushFX.Play DSBPLAY_DEFAULT;
-  }
-
-#endif
-}
-
-void subSoundFXExit()
-{
-#if 0
-
-  if (FXOnFlag == 0)
-    return;
-
-  if (IS_NOTHING(&ExitFX, sizeof(ExitFX)))
-    return;
-
-  if (ExitFX.GetStatus() != DSBSTATUS_PLAYING)
-  {
-    ExitFX.Play DSBPLAY_DEFAULT;
-  }
-
-#endif
-}
 
 void subSoundFX(int si, int element, int action)
 {
@@ -215,7 +12,3 @@ void subSoundFX(int si, int element, int action)
 
   PlayLevelSound_SP(x, y, element, action);
 }
-
-void subMusicInit()
-{
-}
index 445a4348cd6fb803bccedfd5206bafa706a927ee..f4ca0f4b106bc9566245aa728d81fd4ce04ecce7 100644 (file)
@@ -5,26 +5,9 @@
 #ifndef GAME_SP_SOUND_H
 #define GAME_SP_SOUND_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
-extern void LoadSoundFX();
-extern void subMusicInit();
-extern void subSoundFXBase();
-extern void subSoundFXBug();
-extern void subSoundFXExit();
-extern void subSoundFXExplosion();
-extern void subSoundFXInfotron();
-extern void subSoundFXPush();
-extern void subSoundFXZonk();
 
 extern void subSoundFX(int, int, int);
 
-extern int FXOnFlag;
-extern int MusicOnFlag;
-
 #endif /* GAME_SP_SOUND_H */
diff --git a/src/game_sp/TickCountObject.c b/src/game_sp/TickCountObject.c
deleted file mode 100644 (file)
index fae698c..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-// ----------------------------------------------------------------------------
-// TickCountObject.c
-// ----------------------------------------------------------------------------
-
-#include "TickCountObject.h"
-
-// --- VERSION 1.0 CLASS
-// --- BEGIN
-// ---   MultiUse = -1  'True  // True
-// ---   Persistable = 0  'NotPersistable  // NotPersistable
-// ---   DataBindingBehavior = 0  'vbNone  // vbNone
-// ---   DataSourceBehavior  = 0  'vbNone  // vbNone
-// ---   MTSTransactionMode  = 0  'NotAnMTSObject  // NotAnMTSObject
-// --- END
-
-// static char *VB_Name = "TickCountObject";
-// static boolean VB_GlobalNameSpace = False;
-// static boolean VB_Creatable = True;
-// static boolean VB_PredeclaredId = False;
-// static boolean VB_Exposed = False;
-// --- Option Explicit
-
-#define LongMin                        (-(double)2147483648UL) // the "#" sign is a bug of the VB environment AutoFormat function but causes no real problems; don't  worry 'bout it!
-#define LongMax                        (2147483647UL)
-
-#if 0
-
-long MyGetTickCount();
-long QueryPerformanceCounter(currency lpPerformanceCount);
-long QueryPerformanceFrequency(currency lpFrequency);
-
-#endif
-
-boolean DelayLoopActive;
-
-boolean MPause, bHighPerf;
-currency PFreq; // LARGE_INTEGER
-double sFactor, msFactor, usFactor;
-
-#if 0
-
-boolean TickCountObject_Get_Active()
-{
-  boolean Active;
-
-  Active = DelayLoopActive;
-
-  return Active;
-}
-
-boolean TickCountObject_Get_Pause()
-{
-  boolean Pause;
-
-  Pause = MPause;
-
-  return Pause;
-}
-
-void TickCountObject_Let_Pause(boolean NewVal)
-{
-  MPause = NewVal;
-}
-
-currency TickCountObject_Get_TickNow()
-{
-  currency TickNow;
-
-  if (bHighPerf)
-  {
-    QueryPerformanceCounter(TickNow);
-  }
-  else
-  {
-    TickNow = MyGetTickCount();
-  }
-
-  return TickNow;
-}
-
-long TickCountObject_TickDiffS(currency TickStart)
-{
-  long TickDiffS;
-
-  currency NewTick, TD;
-
-  if (bHighPerf)
-  {
-    QueryPerformanceCounter(NewTick);
-    TD = (NewTick - TickStart);
-    TickDiffS = sFactor * TD;
-  }
-  else
-  {
-    NewTick = MyGetTickCount();
-    if (NewTick < TickStart)
-    {
-      // Overflow occured and needs to be handled
-      TickDiffS = (LongMax - TickStart) + (NewTick - LongMin) + 1;
-    }
-    else
-    {
-      TickDiffS = NewTick - TickStart;
-    }
-
-    TickDiffS = (int)(TickDiffS / 1000);
-  }
-
-  return TickDiffS;
-}
-
-long TickCountObject_TickDiffMS(currency TickStart)
-{
-  long TickDiffMS;
-
-  currency NewTick, TD;
-
-  if (bHighPerf)
-  {
-    QueryPerformanceCounter(NewTick);
-    TD = (NewTick - TickStart);
-    TickDiffMS = msFactor * TD;
-  }
-  else
-  {
-    NewTick = MyGetTickCount();
-    if (NewTick < TickStart)
-    {
-      // Overflow occured and needs to be handled
-      TickDiffMS = (LongMax - TickStart) + (NewTick - LongMin) + 1;
-    }
-    else
-    {
-      TickDiffMS = NewTick - TickStart;
-    }
-  }
-
-  return TickDiffMS;
-}
-
-currency TickCountObject_TickDiffUS(currency TickStart)
-{
-  currency TickDiffUS;
-
-  currency NewTick, TD;
-
-  if (bHighPerf)
-  {
-    QueryPerformanceCounter(NewTick);
-    TD = (NewTick - TickStart);
-    TickDiffUS = usFactor * TD;
-  }
-  else
-  {
-    NewTick = MyGetTickCount();
-    if (NewTick < TickStart)
-    {
-      // Overflow occured and needs to be handled
-      TickDiffUS = ((LongMax - TickStart) + (NewTick - LongMin) + 1) * (currency)1000;
-    }
-    else
-    {
-      TickDiffUS = (NewTick - TickStart) * (currency)1000;
-    }
-  }
-
-  return TickDiffUS;
-}
-
-#endif
-
-#if 0
-
-static void Class_Initialize()
-{
-  long L;
-
-  bHighPerf = (0 != QueryPerformanceFrequency(PFreq));
-  if (bHighPerf)
-  {
-    sFactor = (double)1 / PFreq;
-    msFactor = (double)1000 / PFreq;
-    usFactor = (double)1000000 / PFreq;
-  }
-
-  DelayLoopActive = False;
-  TickCountObject_Let_Pause(False);
-}
-
-#endif
diff --git a/src/game_sp/TickCountObject.h b/src/game_sp/TickCountObject.h
deleted file mode 100644 (file)
index fc88b88..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// ----------------------------------------------------------------------------
-// TickCountObject.h
-// ----------------------------------------------------------------------------
-
-#ifndef TICKCOUNTOBJECT_H
-#define TICKCOUNTOBJECT_H
-
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
-#include "global.h"
-
-extern boolean TickCountObject_Get_Active();
-extern boolean TickCountObject_Get_Pause();
-extern currency TickCountObject_Get_TickNow();
-extern void TickCountObject_Let_Pause(boolean NewVal);
-extern long TickCountObject_TickDiffMS(currency TickStart);
-extern long TickCountObject_TickDiffS(currency TickStart);
-extern currency TickCountObject_TickDiffUS(currency TickStart);
-
-#endif /* TICKCOUNTOBJECT_H */
diff --git a/src/game_sp/TopMost.c b/src/game_sp/TopMost.c
deleted file mode 100644 (file)
index 82b7cf5..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// ----------------------------------------------------------------------------
-// TopMost.c
-// ----------------------------------------------------------------------------
-
-#include "TopMost.h"
-
-#if 0
-
-// static char *VB_Name = "TopMost_Module";
-// --- Option Explicit
-// --- const int SWP_FRAMECHANGED = 0x20;
-// --- const int SWP_HIDEWINDOW = 0x80;
-// --- const int SWP_NOACTIVATE = 0x10;
-// --- const int SWP_NOCOPYBITS = 0x100;
-// --- const int SWP_NOMOVE = 0x2;
-// --- const int SWP_NOOWNERZORDER = 0x200;
-// --- const int SWP_NOREDRAW = 0x8;
-// --- const int SWP_NOSIZE = 0x1;
-// --- const int SWP_NOZORDER = 0x4;
-// --- const int SWP_SHOWWINDOW = 0x40;
-// --- const int SWP_DRAWFRAME = SWP_FRAMECHANGED;
-// --- const int SWP_NOREPOSITION = SWP_NOOWNERZORDER;
-
-// --- const int HWND_BOTTOM = 1;
-// --- const int HWND_BROADCAST = 0xFFFF;
-// --- const int HWND_DESKTOP = 0;
-// --- const int HWND_NOTOPMOST = - 2;
-// --- const int HWND_TOP = 0;
-// --- const int HWND_TOPMOST = - 1;
-
-int SetWindowPos(long h, long hb, int X, int Y, int cx, int cy, int f);
-
-void TopMost(Object obj)
-{
-  int i;
-
-  i = SetWindowPos(obj.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOMOVE);
-}
-
-void UnTopMost(Object obj)
-{
-  int i;
-
-  i = SetWindowPos(obj.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOMOVE);
-}
-
-void HideWindow(long hWnd)
-{
-  int i;
-
-  i = SetWindowPos(hWnd, HWND_BOTTOM, 100, 100, 200, 200, SWP_HIDEWINDOW);
-}
-
-#endif
diff --git a/src/game_sp/TopMost.h b/src/game_sp/TopMost.h
deleted file mode 100644 (file)
index 4eb6f24..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// ----------------------------------------------------------------------------
-// TopMost.h
-// ----------------------------------------------------------------------------
-
-#ifndef TOPMOST_H
-#define TOPMOST_H
-
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
-#include "global.h"
-
-#if 0
-
-#define HWND_BOTTOM                    (1)
-#define HWND_BROADCAST                         (0xFFFF)
-#define HWND_DESKTOP                   (0)
-#define HWND_NOTOPMOST                         (- 2)
-#define HWND_TOP                       (0)
-#define HWND_TOPMOST                   (- 1)
-#define SWP_DRAWFRAME                  (SWP_FRAMECHANGED)
-#define SWP_FRAMECHANGED                       (0x20)
-#define SWP_HIDEWINDOW                         (0x80)
-#define SWP_NOACTIVATE                         (0x10)
-#define SWP_NOCOPYBITS                         (0x100)
-#define SWP_NOMOVE                     (0x2)
-#define SWP_NOOWNERZORDER                      (0x200)
-#define SWP_NOREDRAW                   (0x8)
-#define SWP_NOREPOSITION                       (SWP_NOOWNERZORDER)
-#define SWP_NOSIZE                     (0x1)
-#define SWP_NOZORDER                   (0x4)
-#define SWP_SHOWWINDOW                         (0x40)
-
-extern void HideWindow(long hWnd);
-extern void TopMost(Object obj);
-extern void UnTopMost(Object obj);
-
-#endif
-
-#endif /* TOPMOST_H */
index b14af7eac5845d37788bf8f03c359b0fc07703d8..8656bdc85afa883fcd8673159037782ec891f2b8 100644 (file)
@@ -131,14 +131,10 @@ loc_g_0DE8: // zonk comes falling from above
   X = GetStretchX(si);
   Y = GetStretchY(si - FieldWidth);
   dx = bl & 0x7;
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X, Y + TwoPixels * (dx + 1), aniZonk, dx);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X, Y + TwoPixels * (dx + 1), fiZonk);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X, Y + TwoPixels * (dx + 1), aniZonk, dx);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
+
   bl = HighByte(PlayField16[si]) + 1;
   if (bl == 0x16)
   {
@@ -272,14 +268,10 @@ loc_g_0F83: // zonk comes rolling from right to left
   X = GetStretchX(si + 1);
   Y = GetStretchY(si);
   dx = (bl & 0x7) + 1;
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X - (TwoPixels * dx), Y, aniZonkRollLeft, dx - 1);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X - (TwoPixels * dx), Y, aniFramesZonkRollLeft[dx - 1]);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X - (TwoPixels * dx), Y, aniZonkRollLeft, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
+
   bl = HighByte(PlayField16[si]) + 1; // get and increment sequence#
   if (bl == 0x24)
     PlayField16[si + 1] = 0xAAAA;
@@ -309,14 +301,10 @@ loc_g_0FE8: // zonk comes rolling from left to right
   X = GetStretchX(si - 1);
   Y = GetStretchY(si);
   dx = (bl & 0x7) + 1;
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X + (TwoPixels * dx), Y, aniZonkRollRight, dx - 1);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X + (TwoPixels * dx), Y, aniFramesZonkRollRight[dx - 1]);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X + (TwoPixels * dx), Y, aniZonkRollRight, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
+
   bl = HighByte(PlayField16[si]) + 1;
   if (bl == 0x34)
     PlayField16[si - 1] = 0xAAAA;
@@ -366,14 +354,10 @@ loc_g_107B: // zonk rolls left
   X = GetStretchX(si);
   Y = GetStretchY(si);
   dx = (bl & 0xF) + 1;
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X - (TwoPixels * dx), Y, aniZonkRollLeft, dx - 1);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X - (TwoPixels * dx), Y, aniFramesZonkRollLeft[dx - 1]);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X - (TwoPixels * dx), Y, aniZonkRollLeft, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
+
   bl = HighByte(PlayField16[si]) + 1; // retrieve and increment sequence#
   if (bl < 0x52)
   {
@@ -408,14 +392,10 @@ loc_g_10E9: // zonk rolls right
   X = GetStretchX(si);
   Y = GetStretchY(si);
   dx = (bl & 0x7) + 1;
-#if 1
-  StretchedSprites.BltImg(X, Y, aniSpace, 0);
-  StretchedSprites.BltImg(X + (TwoPixels * dx), Y, aniZonkRollRight, dx - 1);
-#else
-  StretchedSprites.BltEx(X, Y, 0);
-  StretchedSprites.BltEx(X + (TwoPixels * dx), Y, aniFramesZonkRollRight[dx - 1]);
-#endif
+  DDSpriteBuffer_BltImg(X, Y, aniSpace, 0);
+  DDSpriteBuffer_BltImg(X + (TwoPixels * dx), Y, aniZonkRollRight, dx - 1);
   // +++++++++++++++++++++++++++++++++++++++++++++++++++++
+
   bl = HighByte(PlayField16[si]) + 1;
   if (bl < 0x62)
   {
index 7e6022f84bbaf0f3ea20a6078522dd0050b27ee9..9bd3f770099d18f74c545df39c447aef00afe982 100644 (file)
@@ -5,11 +5,6 @@
 #ifndef ZONK_H
 #define ZONK_H
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "global.h"
 
 extern int subAnimateZonks(int si);
index f7b833c10474fd26003d51b86b67c49a8599ff20..a998cfdf2fef43442dfdb9b7a672ccaba4879fa1 100644 (file)
@@ -248,10 +248,6 @@ void copyInternalEngineVars_SP()
   AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 * FieldWidth);
   TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
 
-  DemoPointer = FieldMax + 1;
-  DemoOffset = DemoPointer;
-  DemoKeyRepeatCounter = 0;
-
   GravityFlag = LInfo.InitialGravity;
   FreezeZonks = LInfo.InitialFreezeZonks;
 
index 027f286355934809ded139afade9a10fb3199f73..b459a837d7e823ceabe32b6aa3ce35cfdfe6654d 100644 (file)
@@ -7,11 +7,12 @@
 
 #include "main_sp.h"
 
+#include "vb_lib.h"
+
 #include "ASM.h"
 #include "BugsTerminals.h"
 #include "DDScrollBuffer.h"
 #include "DDSpriteBuffer.h"
-#include "Demo.h"
 #include "Display.h"
 #include "DoGameStuff.h"
 #include "Electrons.h"
 #include "MainGameLoop.h"
 #include "Murphy.h"
 #include "OrangeDisk.h"
-#include "PathTools.h"
-#include "SettingsObject.h"
 #include "SnikSnaks.h"
 #include "Sound.h"
-#include "TickCountObject.h"
-#include "TopMost.h"
 #include "Zonk.h"
-#include "modAnimations.h"
-#include "modMPX.h"
 
 #endif /* GAME_SP_GLOBAL_H */
index f79e20b0684034bddf3d0d8f2711de3c96ac5b85..a1312caccfcf98bd1bf5d462c90195ee0838495e 100644 (file)
@@ -7,30 +7,13 @@ Bitmap *screenBitmap;
 
 struct EngineSnapshotInfo_SP engine_snapshot_sp;
 
-static void init_struct_functions()
-{
-  Stage.Blt           = &DDScrollBuffer_Blt;
-  Stage.ScrollTo      = &DDScrollBuffer_ScrollTo;
-  Stage.ScrollTowards = &DDScrollBuffer_ScrollTowards;
-  Stage.SoftScrollTo  = &DDScrollBuffer_SoftScrollTo;
-
-  // StretchedSprites.BltEx  = &DDSpriteBuffer_BltEx;
-  StretchedSprites.BltImg = &DDSpriteBuffer_BltImg;
-}
-
 static void init_global_values()
 {
-  menBorder.Checked = False;
-  menPanel.Checked = True;
-  menAutoScroll.Checked = True;
-
-  MainForm.picPane.Width  = picPane.Width  = SCR_FIELDX * TILEX;
-  MainForm.picPane.Height = picPane.Height = SCR_FIELDY * TILEY;
+  menBorder = False;
 }
 
 void sp_open_all()
 {
-  init_struct_functions();
   init_global_values();
 
   Form_Load();
@@ -49,10 +32,6 @@ unsigned int InitEngineRandom_SP(long seed)
 {
   if (seed == NEW_RANDOMIZE)
   {
-#if 0
-  printf("::: init.c: InitEngineRandom_SP(): subRandomize()\n");
-#endif
-
     subRandomize();
 
     seed = (long)RandomSeed;
@@ -60,10 +39,6 @@ unsigned int InitEngineRandom_SP(long seed)
 
   RandomSeed = (short)seed;
 
-#if 0
-  printf("::: init.c: InitEngineRandom_SP(): RandomSeed == %d\n", RandomSeed);
-#endif
-
   return (unsigned int) seed;
 }
 
@@ -140,8 +115,6 @@ void SaveEngineSnapshotValues_SP()
   SaveEngineSnapshotBuffer(ARGS_ADDRESS_AND_SIZEOF(ScratchGravity));
   SaveEngineSnapshotBuffer(ARGS_ADDRESS_AND_SIZEOF(GravityFlag));
   SaveEngineSnapshotBuffer(ARGS_ADDRESS_AND_SIZEOF(SnikSnaksElectronsFrozen));
-  SaveEngineSnapshotBuffer(ARGS_ADDRESS_AND_SIZEOF(UpdateTimeFlag));
-  SaveEngineSnapshotBuffer(ARGS_ADDRESS_AND_SIZEOF(UpdatedFlag));
   SaveEngineSnapshotBuffer(ARGS_ADDRESS_AND_SIZEOF(YellowDisksExploded));
   SaveEngineSnapshotBuffer(ARGS_ADDRESS_AND_SIZEOF(YawnSleepCounter));
 
index a5ca525e4dd8a79ff062fcbfe4ccf287dadd0330..42f5f753a814de980dd2eb9f06a5060e8f1b329e 100644 (file)
@@ -26,7 +26,7 @@ void InitGameEngine_SP()
   game_sp.red_disk_count = 0;
   game_sp.score = 0;
 
-  menBorder.Checked = setup.sp_show_border_elements;
+  menBorder = setup.sp_show_border_elements;
 
   for (x = 0; x < SP_MAX_PLAYFIELD_WIDTH; x++)
   {
diff --git a/src/game_sp/modAnimations.c b/src/game_sp/modAnimations.c
deleted file mode 100644 (file)
index 7cd0123..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-// ----------------------------------------------------------------------------
-// modAnimations.c
-// ----------------------------------------------------------------------------
-
-#include "modAnimations.h"
-
-// static char *VB_Name = "modAnimations";
-// --- Option Explicit
-
-// ::: #ifndef HAS_SpecialPortType
-// ::: typedef struct
-// ::: {
-// :::   int PortLocation; // = 2*(x+(y*60))
-// :::   byte Gravity; // 1 = turn on, anything else (0) = turn off
-// :::   byte FreezeZonks; // 2 = turn on, anything else (0) = turn off  (1=off!)
-// :::   byte FreezeEnemies; // 1 = turn on, anything else (0) = turn off
-// :::   byte UnUsed;
-// ::: } SpecialPortType;
-// ::: #define HAS_SpecialPortType
-// ::: #endif
-
-// ::: #ifndef HAS_LevelInfoType
-// ::: typedef struct
-// ::: {
-// :::   byte UnUsed[4 + 1];
-// :::   byte InitialGravity; // 1=on, anything else (0) = off
-// :::   byte Version; // SpeedFixVersion XOR &H20
-// :::   char LevelTitle[23];
-// :::   byte InitialFreezeZonks; // 2=on, anything else (0) = off.  (1=off too!)
-// :::   byte InfotronsNeeded;
-
-// :::   // Number of Infotrons needed. 0 means that Supaplex will count the total
-// :::   // amount of Infotrons in the level, and use the low byte of that number.
-// :::   // (A multiple of 256 Infotrons will then result in 0-to-eat, etc.!)
-// :::   byte SpecialPortCount; // Maximum 10 allowed!
-// :::   SpecialPortType SpecialPort[10 + 1];
-// :::   byte SpeedByte; // = Speed XOR Highbyte(RandomSeed)
-// :::   byte CheckSumByte; // = CheckSum XOR SpeedByte
-// :::   int DemoRandomSeed;
-// ::: } LevelInfoType;
-// ::: #define HAS_LevelInfoType
-// ::: #endif
-
-DDSpriteBuffer NormalSprites;
-DDSpriteBuffer StretchedSprites;
-DDScrollBuffer Stage;
-
-byte LData[59 + 1][23 + 1];
-LevelInfoType LInfo;
-
-#if 1
-float Stretch = 1; // , StretchWidth%, TwoPixels!
-#else
-float Stretch; // , StretchWidth%, TwoPixels!
-#endif
-
-int ScrollMinX, ScrollMaxX, ScrollMinY, ScrollMaxY;
-int ScrollX, ScrollY;
-// --- const long ScrollDelta = 1&;
-
-// Public FieldWidth&, FieldHeight&
-boolean EndFlag;
-long PauseMode;
-
-TickCountObject Clock;
-long MurphyX, MurphyY;
-
-void GoPlay()
-{
-  //  Call subFetchAndInitLevelB
-  EndFlag = False;
-
-#if 1
-  subMainGameLoop_Init();
-#else
-  subMainGameLoop();
-#endif
-}
diff --git a/src/game_sp/modAnimations.h b/src/game_sp/modAnimations.h
deleted file mode 100644 (file)
index 38325dc..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-// ----------------------------------------------------------------------------
-// modAnimations.h
-// ----------------------------------------------------------------------------
-
-#ifndef MODANIMATIONS_H
-#define MODANIMATIONS_H
-
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
-#include "global.h"
-
-#ifndef HAS_SpecialPortType
-typedef struct
-{
-#if 1
-  short PortLocation; // = 2*(x+(y*60))
-#else
-  int PortLocation; // = 2*(x+(y*60))
-#endif
-  byte Gravity; // 1 = turn on, anything else (0) = turn off
-  byte FreezeZonks; // 2 = turn on, anything else (0) = turn off  (1=off!)
-  byte FreezeEnemies; // 1 = turn on, anything else (0) = turn off
-  byte UnUsed;
-} SpecialPortType;
-#define HAS_SpecialPortType
-#endif
-
-#ifndef HAS_LevelInfoType
-typedef struct
-{
-  byte UnUsed[4];
-  byte InitialGravity; // 1=on, anything else (0) = off
-  byte Version; // SpeedFixVersion XOR &H20
-  char LevelTitle[23];
-  byte InitialFreezeZonks; // 2=on, anything else (0) = off.  (1=off too!)
-  byte InfotronsNeeded;
-
-  // Number of Infotrons needed. 0 means that Supaplex will count the total
-  // amount of Infotrons in the level, and use the low byte of that number.
-  // (A multiple of 256 Infotrons will then result in 0-to-eat, etc.!)
-  byte SpecialPortCount; // Maximum 10 allowed!
-  SpecialPortType SpecialPort[10];
-  byte SpeedByte; // = Speed XOR Highbyte(RandomSeed)
-  byte CheckSumByte; // = CheckSum XOR SpeedByte
-#if 1
-  short DemoRandomSeed;
-#else
-  int DemoRandomSeed;
-#endif
-} LevelInfoType;
-#define HAS_LevelInfoType
-#endif
-
-#define ScrollDelta                    ((long)1)
-
-extern void GoPlay();
-
-extern DDScrollBuffer Stage;
-extern DDSpriteBuffer NormalSprites;
-extern DDSpriteBuffer StretchedSprites;
-extern LevelInfoType LInfo;
-extern boolean EndFlag;
-extern byte LData[59 + 1][23 + 1];
-extern float Stretch;
-extern int ScrollMinX, ScrollMaxX, ScrollMinY, ScrollMaxY;
-extern int ScrollX, ScrollY;
-extern long PauseMode;
-
-#endif /* MODANIMATIONS_H */
diff --git a/src/game_sp/modMPX.c b/src/game_sp/modMPX.c
deleted file mode 100644 (file)
index b2c2602..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-// ----------------------------------------------------------------------------
-// modMPX.c
-// ----------------------------------------------------------------------------
-
-#include "modMPX.h"
-
-void ReadMPX();
-#if 0
-static void SaveMPX(char *Path);
-static void SaveSP(char *Path);
-#endif
-
-// static char *VB_Name = "modMPX";
-// --- Option Explicit
-
-char *gSignature;
-boolean bSignatureAvailable;
-
-const char MPX_ID[4] = "MPX ";
-
-// ::: #ifndef HAS_LevelDescriptor
-// ::: typedef struct
-// ::: {
-// :::   int Width;
-// :::   int Height;
-// :::   long OffSet;
-// :::   long Size;
-// ::: } LevelDescriptor;
-// ::: #define HAS_LevelDescriptor
-// ::: #endif
-
-int MPXVersion;
-int LevelCount;
-boolean DemoAvailable;
-LevelDescriptor *LDesc;
-// int OFile;
-FILE *OFile;
-
-boolean MpxOpen(char *Path)
-{
-  boolean MpxOpen;
-
-  // int i;
-  // byte T;
-  char readID[4];
-
-  MpxOpen = False;
-
-  // --- On Error GoTo OpenMPXEH
-  // OFile = FreeFile();
-  OFile = fopen(CurPath, "rb");
-  FILE_GET(OFile, -1, &readID, sizeof(readID));
-  if (readID != MPX_ID)
-    goto OpenMPXEH;
-
-  FILE_GET(OFile, -1, &MPXVersion, sizeof(MPXVersion));
-  FILE_GET(OFile, -1, &LevelCount, sizeof(LevelCount));
-  LDesc = REDIM_1D(sizeof(LevelDescriptor), 0, LevelCount + 1 - 1);
-  FILE_GET(OFile, -1, &LDesc, sizeof(LDesc));
-  MpxOpen = True;
-  return MpxOpen;
-
-OpenMPXEH:
-  fclose(OFile);
-  OFile = 0;
-
-  return MpxOpen;
-}
-
-boolean MpxLoadLInfo(int i)
-{
-  boolean MpxLoadLInfo;
-
-  long Off;
-
-  MpxLoadLInfo = False;
-  // if (OFile < 1)
-  if (OFile == 0)
-    return MpxLoadLInfo;
-
-  Off = LDesc[i].OffSet;
-  Off = Off + LDesc[i].Width * LDesc[i].Height;
-
-  // --- On Error GoTo MpxLoadLInfoEH
-  FILE_GET(OFile, Off, &LInfo, sizeof(LInfo));
-  MpxLoadLInfo = True;
-  return MpxLoadLInfo;
-
-  // MpxLoadLInfoEH:
-  fclose(OFile);
-  OFile = 0;
-
-  return MpxLoadLInfo;
-}
-
-void MpxClose()
-{
-  if (0 < OFile)
-  {
-    fclose(OFile);
-    OFile = 0;
-  }
-}
-
-void ReadMPX()
-{
-  // int FNum, i;
-  FILE *FNum;
-  int i;
-  // byte T;
-  char readID[4];
-
-  Trace("modMPX", "--> ReadMPX");
-
-  // --- On Error GoTo ReadMPXEH
-  // FNum = FreeFile();
-  Trace("modMPX", "open file");
-  FNum = fopen(CurPath, "rb");
-  FILE_GET(FNum, -1, &readID, sizeof(readID));
-  if (readID != MPX_ID)
-    goto ReadMPXEH;
-
-  FILE_GET(FNum, -1, &MPXVersion, sizeof(MPXVersion));
-  if (MPXVersion != 1)
-    goto ReadMPXEH;
-
-  FILE_GET(FNum, -1, &LevelCount, sizeof(LevelCount));
-  if (LevelCount < 1)
-    goto ReadMPXEH;
-
-  LDesc = REDIM_1D(sizeof(LevelDescriptor), 0, LevelCount + 1 - 1);
-  Trace("modMPX", "--> read LevelDescriptor");
-  FILE_GET(FNum, -1, &LDesc, sizeof(LDesc));
-  FieldWidth = LDesc[LevelNumber].Width;
-  FieldHeight = LDesc[LevelNumber].Height;
-  HeaderSize = 96;
-  FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
-  LevelMax = (FieldWidth * FieldHeight) - 1;
-  FileMax = LDesc[LevelNumber].Size - 1;
-  if (FileMax < FieldMax)
-    FileMax = FieldMax;
-
-  Trace("modMPX", "ReDim PlayField8");
-  PlayField8 = REDIM_1D(sizeof(byte), 0, FileMax + 1 - 1);
-  DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-  i = LDesc[LevelNumber].OffSet;
-#if 1
-  FILE_GET(FNum, i, PlayField8, FileMax + 1);
-#else
-  FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
-#endif
-  i = i + LevelMax + 1;
-  FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
-  fclose(FNum);
-  // --- On Error GoTo 0
-
-  Trace("modMPX", "file closed");
-  if (FieldMax < FileMax)
-    DemoAvailable = True;
-
-  Trace("modMPX", "read signature");
-  ReadSignature();
-  Trace("modMPX", "ReDim PlayField16");
-  PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
-  for (i = 0; i <= FieldMax; i++)
-  {
-    PlayField16[i] = PlayField8[i];
-    DisPlayField[i] = PlayField8[i];
-    PlayField8[i] = 0;
-  }
-
-  AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 *FieldWidth);
-  AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 *FieldWidth);
-  TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-  GravityFlag = LInfo.InitialGravity;
-  FreezeZonks = LInfo.InitialFreezeZonks;
-  DemoPointer = FieldMax + 1;
-  DemoOffset = DemoPointer;
-  DemoKeyRepeatCounter = 0;
-  if (DemoFlag != 0)
-  {
-    // Debug.Print "ReadMPX: " & Hex(LInfo.DemoRandomSeed)
-    RandomSeed = LInfo.DemoRandomSeed;
-    DemoFlag = 1;
-  }
-  else
-  {
-    subRandomize();
-  }
-
-  MainForm.SetDisplayRegion();
-  LevelLoaded = True;
-  if (CurPath != TmpPath)
-    Let_ModifiedFlag(False);
-
-  Trace("modMPX", "--> ReadMPX");
-  return;
-
-ReadMPXEH:
-  // Close();
-  fclose(FNum);
-  ReportError("modMPX", CAT("Error reading MPX file ", CurPath));
-  Trace("modMPX", "Error reading MPX file");
-  Trace("modMPX", "--> ReadMPX");
-}
-
-#if 0
-
-static void SaveMPX(char *Path)
-{
-  // int FNum, i;
-  FILE *FNum;
-  int i;
-  // byte T;
-  byte FF;
-
-  FF = 0xFF;
-  LevelNumber = 1;
-  LevelCount = 1;
-  MPXVersion = 1;
-  if ((FileMax < FieldMax) || ! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer)))
-    FileMax = FieldMax;
-
-  LDesc = REDIM_1D(sizeof(LevelDescriptor), 0, LevelCount + 1 - 1);
-  {
-    LDesc[LevelNumber].Width = FieldWidth;
-    LDesc[LevelNumber].Height = FieldHeight;
-    LDesc[LevelNumber].OffSet = 4 + 2 * strlen(INT_TO_STR(LevelCount)) +
-      LevelCount * sizeof(LDesc[1]) + 1;
-    LDesc[LevelNumber].Size = FileMax + 1;
-    if (! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer)))
-    {
-      LDesc[LevelNumber].Size = LDesc[LevelNumber].Size + DemoBuffer.Size + 2;
-      if (0 < strlen(MySignature))
-        LDesc[LevelNumber].Size = LDesc[LevelNumber].Size + strlen(MySignature) + 1;
-    }
-
-  }
-
-  // UnEdAll();
-
-  // --- On Error GoTo SaveMPXEH
-  // FNum = FreeFile();
-  if (FileExists(Path))
-    MayKill(Path);
-
-  FNum = fopen(Path, "wb");
-  FILE_PUT(FNum, -1, &MPX_ID, sizeof(MPX_ID));
-  FILE_PUT(FNum, -1, &MPXVersion, sizeof(MPXVersion));
-  FILE_PUT(FNum, -1, &LevelCount, sizeof(LevelCount));
-  FILE_PUT(FNum, -1, &LDesc, sizeof(LDesc));
-  i = LDesc[LevelNumber].OffSet;
-  FILE_PUT(FNum, i, &PlayField8, sizeof(PlayField8));
-  FILE_PUT(FNum, i, &DisPlayField, sizeof(DisPlayField));
-  i = i + LevelMax + 1;
-  FILE_PUT(FNum, i, &LInfo, sizeof(LInfo)); // store level info
-  if (! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer))) // demo was recorded
-  {
-    // Debug.Print "SaveMPX: " & Hex(LInfo.DemoRandomSeed)
-    FILE_PUT(FNum, -1, &FirstDemoByte, sizeof(FirstDemoByte));
-    if (! DemoBuffer.Serialize(FNum))
-      goto SaveMPXEH;
-
-    FILE_PUT(FNum, -1, &FF, sizeof(FF));
-    if (0 < strlen(MySignature))
-    {
-      FILE_PUT(FNum, -1, &MySignature, sizeof(MySignature));
-      FILE_PUT(FNum, -1, &FF, sizeof(FF));
-    }
-  }
-
-  fclose(FNum);
-  // --- On Error GoTo 0
-
-  CurPath = Path;
-
-  // EdAll();
-
-  if (Path != TmpPath)
-    Let_ModifiedFlag(False);
-
-  return;
-
-SaveMPXEH:
-  // Close();
-  fclose(FNum);
-}
-
-#endif
-
-#if 0
-
-static void SaveSP(char *Path)
-{
-  // int FNum, i;
-  FILE *FNum;
-  int i;
-  // byte T;
-
-  LevelNumber = 1;
-  LevelCount = 1;
-  if (! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer)))
-    LInfo.CheckSumByte = DemoBuffer.CheckSumByte;
-
-  if ((FileMax < FieldMax) || ! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer)))
-    FileMax = FieldMax;
-
-  // UnEdAll();
-
-  // --- On Error GoTo SaveSPEH
-  // FNum = FreeFile();
-  FNum = fopen(Path, "wb");
-  FILE_PUT(FNum, 1, &PlayField8, sizeof(PlayField8));
-  FILE_PUT(FNum, 1, &DisPlayField, sizeof(DisPlayField));
-  i = LevelMax + 2;
-  FILE_PUT(FNum, i, &LInfo, sizeof(LInfo)); // store level info
-  if (! IS_NOTHING(&DemoBuffer, sizeof(DemoBuffer))) // demo was recorded
-  {
-    // Debug.Print "SaveMPX: " & Hex(LInfo.DemoRandomSeed)
-    // If Not DemoBuffer.Serialize(FNum) Then GoTo SaveSPEH
-
-    // Debug.Assert(False);
-  }
-
-  fclose(FNum);
-  // --- On Error GoTo 0
-
-  CurPath = Path;
-
-  // EdAll();
-
-  if (Path != TmpPath)
-    Let_ModifiedFlag(False);
-
-  return;
-
-  // SaveSPEH:
-  // Close();
-}
-
-#endif
-
-void CreateLevel(int LWidth, int LHeight)
-{
-  long Tmp, i;
-  // byte T;
-
-  CurPath = "Untitled";
-  OrigPath = CurPath;
-  LevelNumber = 1;
-  FieldWidth = LWidth;
-  FieldHeight = LHeight;
-  HeaderSize = 96;
-  FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
-  LevelMax = (FieldWidth * FieldHeight) - 1;
-  FileMax = FieldMax;
-  PlayField8 = REDIM_1D(sizeof(byte), 0, FileMax + 1 - 1);
-  DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-  Tmp = FieldWidth * (FieldHeight - 1);
-  for (i = 0; i <= FieldWidth - 1; i++)
-  {
-    PlayField8[i] = fiHardWare;
-    PlayField8[Tmp + i] = fiHardWare;
-  }
-
-  Tmp = Tmp;
-  for (i = FieldWidth; i <= Tmp; i += FieldWidth)
-  {
-    PlayField8[i] = fiHardWare;
-    PlayField8[i - 1] = fiHardWare;
-  }
-
-  {
-    LInfo.DemoRandomSeed = 0;
-    LInfo.InfotronsNeeded = 0;
-    LInfo.InitialFreezeZonks = 0;
-    LInfo.InitialGravity = 0;
-    strcpy(LInfo.LevelTitle, "------ New Level ------");;
-    LInfo.SpecialPortCount = 0;
-    LInfo.Version = 0x74; // immitate speedfix version 5.4
-  }
-  PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
-  for (i = 0; i <= FieldMax; i++)
-  {
-    PlayField16[i] = PlayField8[i];
-    DisPlayField[i] = PlayField8[i];
-    PlayField8[i] = 0;
-  }
-
-  AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 *FieldWidth);
-  AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 *FieldWidth);
-  TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-  GravityFlag = LInfo.InitialGravity;
-  FreezeZonks = LInfo.InitialFreezeZonks;
-  RandomSeed = LInfo.DemoRandomSeed;
-  DemoAvailable = False;
-  SET_TO_NOTHING(&DemoBuffer, sizeof(DemoBuffer));
-  LevelLoaded = True;
-  Let_ModifiedFlag(True);
-}
-
-void ReadSignature()
-{
-  long i, iMin, iMax;
-
-  Trace("modMPX", "--> ReadSignature");
-  bSignatureAvailable = False;
-  gSignature = "";
-
-  // ##################################################### ReRecording-Test
-  if ((DemoFlag == 1) && (RecordDemoFlag == 1))
-  {
-    FirstDemoByte = PlayField8[DemoPointer];
-    MySignature = gSignature;
-  }
-
-  // ##################################################### ReRecording-Test
-
-  // gSignature = String(511, "A"): bSignatureAvailable = False: Exit Sub 'test
-  if (! (FieldMax < FileMax))
-    return;
-
-  // !!! Debug.Assert PlayField8(FileMax) = &HFF
-  Trace("modMPX", "settin iMin/Max");
-  iMin = FileMax - 512;
-  if (iMin < (FieldMax + 2))
-    iMin = FieldMax + 2;
-
-  iMax = FileMax - 1;
-  Trace("modMPX", "  For i == iMax To iMin Step -1");
-  for (i = iMax; i <= iMin; i += -1)
-  {
-    if (PlayField8[i] == 0xFF)
-      break;
-  }
-
-  if (i < iMin)
-    return;
-
-  for (i = i + 1; i <= iMax; i++)
-  {
-    gSignature = CAT(gSignature, (char)(PlayField8[i]));
-  }
-
-  // ##################################################### ReRecording-Test
-  if ((DemoFlag == 1) && (RecordDemoFlag == 1))
-    MySignature = gSignature;
-
-  // ##################################################### ReRecording-Test
-
-  if (iMin <= iMax)
-    bSignatureAvailable = True;
-
-  Trace("modMPX", "<-- ReadSignature");
-}
diff --git a/src/game_sp/modMPX.h b/src/game_sp/modMPX.h
deleted file mode 100644 (file)
index bd707e2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// ----------------------------------------------------------------------------
-// modMPX.h
-// ----------------------------------------------------------------------------
-
-#ifndef MODMPX_H
-#define MODMPX_H
-
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
-#include "global.h"
-
-#ifndef HAS_LevelDescriptor
-typedef struct
-{
-  int Width;
-  int Height;
-  long OffSet;
-  long Size;
-} LevelDescriptor;
-#define HAS_LevelDescriptor
-#endif
-
-extern void CreateLevel(int LWidth, int LHeight);
-extern void MpxClose();
-extern boolean MpxLoadLInfo(int i);
-extern boolean MpxOpen(char *Path);
-extern void ReadSignature();
-
-extern void ReadMPX();
-
-extern LevelDescriptor *LDesc;
-extern boolean DemoAvailable;
-extern boolean bSignatureAvailable;
-extern char *gSignature;
-extern int LevelCount;
-
-#endif /* MODMPX_H */
diff --git a/src/game_sp/vb_defs.h b/src/game_sp/vb_defs.h
deleted file mode 100644 (file)
index b25d157..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-// ----------------------------------------------------------------------------
-// vb_defs.h
-// ----------------------------------------------------------------------------
-
-#ifndef VB_DEFS_H
-#define VB_DEFS_H
-
-#define Win16                  1
-
-#ifndef False
-#define False                  0
-#define True                   (!False)
-#endif
-
-#ifndef NULL
-#define NULL                   ((void *)0)
-#endif
-
-/* these are just dummy values to prevent the compiler from complaining */
-#define VALUE_START_VB         100
-#define VALUE_START_VB_KEY     200
-#define VALUE_START_DD         300
-#define VALUE_START_DD_ERR     400
-#define VALUE_START_DS         500
-
-#define vbPicTypeBitmap                (VALUE_START_VB + 1)
-#define vbSrcCopy              (VALUE_START_VB + 2)
-#define vbTwips                        (VALUE_START_VB + 3)
-#define vbPixels               (VALUE_START_VB + 4)
-#define vbPRORPortrait         (VALUE_START_VB + 5)
-#define vbPRORLandscape                (VALUE_START_VB + 6)
-#define vbDirectory            (VALUE_START_VB + 7)
-
-#define vbKeySpace             (VALUE_START_VB_KEY + 1)
-#define vbKeyLeft              (VALUE_START_VB_KEY + 2)
-#define vbKeyRight             (VALUE_START_VB_KEY + 3)
-#define vbKeyUp                        (VALUE_START_VB_KEY + 4)
-#define vbKeyDown              (VALUE_START_VB_KEY + 5)
-#define vbKeyEscape            (VALUE_START_VB_KEY + 6)
-#define vbKeyR                 (VALUE_START_VB_KEY + 7)
-#define vbKeyReturn            (VALUE_START_VB_KEY + 8)
-#define vbKeyShift             (VALUE_START_VB_KEY + 9)
-
-#define DD_OK                  (VALUE_START_DD + 0)
-
-#define DDSD_CAPS              (VALUE_START_DD + 1)
-#define DDSD_WIDTH             (VALUE_START_DD + 2)
-#define DDSD_HEIGHT            (VALUE_START_DD + 3)
-#define DDSCL_NORMAL           (VALUE_START_DD + 4)
-#define DDBLT_WAIT             (VALUE_START_DD + 5)
-#define DDSCAPS_VIDEOMEMORY    (VALUE_START_DD + 6)
-#define DDSCAPS_OFFSCREENPLAIN (VALUE_START_DD + 7)
-#define DDSCAPS_PRIMARYSURFACE (VALUE_START_DD + 8)
-
-#define DDERR_GENERIC          (VALUE_START_DD_ERR + 1)
-#define DDERR_INVALIDCLIPLIST  (VALUE_START_DD_ERR + 2)
-#define DDERR_INVALIDOBJECT    (VALUE_START_DD_ERR + 3)
-#define DDERR_INVALIDPARAMS    (VALUE_START_DD_ERR + 4)
-#define DDERR_INVALIDRECT      (VALUE_START_DD_ERR + 5)
-#define DDERR_NOALPHAHW                (VALUE_START_DD_ERR + 6)
-#define DDERR_NOBLTHW          (VALUE_START_DD_ERR + 7)
-#define DDERR_NOCLIPLIST       (VALUE_START_DD_ERR + 8)
-#define DDERR_NODDROPSHW       (VALUE_START_DD_ERR + 9)
-#define DDERR_NOMIRRORHW       (VALUE_START_DD_ERR + 10)
-#define DDERR_NORASTEROPHW     (VALUE_START_DD_ERR + 11)
-#define DDERR_NOROTATIONHW     (VALUE_START_DD_ERR + 12)
-#define DDERR_NOSTRETCHHW      (VALUE_START_DD_ERR + 13)
-#define DDERR_NOZBUFFERHW      (VALUE_START_DD_ERR + 14)
-#define DDERR_SURFACEBUSY      (VALUE_START_DD_ERR + 15)
-#define DDERR_SURFACELOST      (VALUE_START_DD_ERR + 16)
-#define DDERR_UNSUPPORTED      (VALUE_START_DD_ERR + 17)
-#define DDERR_WASSTILLDRAWING  (VALUE_START_DD_ERR + 18)
-
-#if 0
-
-#define DSSCL_PRIORITY         (VALUE_START_DS + 1)
-#define DSBCAPS_CTRLFREQUENCY  (VALUE_START_DS + 2)
-#define DSBCAPS_CTRLPAN                (VALUE_START_DS + 3)
-#define DSBCAPS_CTRLVOLUME     (VALUE_START_DS + 4)
-#define DSBCAPS_STATIC         (VALUE_START_DS + 5)
-#define WAVE_FORMAT_PCM                (VALUE_START_DS + 6)
-#define DSBSTATUS_PLAYING      (VALUE_START_DS + 7)
-#define DSBPLAY_DEFAULT                (VALUE_START_DS + 8)
-
-#endif
-
-#endif /* VB_DEFS_H */
index f9372a1ae10774b7e664f78cb32d7fa686f75587..f48ca3898f9f96ce7776677e3233e3b5658be3f3 100644 (file)
@@ -2,20 +2,13 @@
 // vb_lib.c
 // ----------------------------------------------------------------------------
 
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
 #include "main_sp.h"
 
-#include <sys/stat.h>
+#include "vb_lib.h"
 
 
 /* helper functions for constructs not supported by C */
 
-#if 1
-
 void *REDIM_1D(int data_size, int first_data_pos, int last_data_pos)
 {
   /* for a buffer of n elements, first_data_pos is 0 and last_data_pos is n-1 */
@@ -28,195 +21,7 @@ void *REDIM_1D(int data_size, int first_data_pos, int last_data_pos)
   return (checked_calloc(buffer_size) - buffer_start);
 }
 
-#else
-
-void *REDIM_1D(int a, int b, int c)
-{
-  return checked_calloc(a * (c - b + 1));
-}
-
-#endif
-
-void *REDIM_2D(int a, int b, int c, int d, int e)
-{
-  return 0;
-}
-
-boolean IS_NOTHING(void *a, int b)
-{
-  return 0;
-}
-
-void SET_TO_NOTHING(void *a, int b)
-{
-  return;
-}
-
-void MESSAGE_BOX(char *a)
-{
-  return;
-}
-
-
-char *CAT(const char *a, ...)
-{
-  return 0;
-}
-
-char *GET_PATH(char *a, ...)
-{
-  return 0;
-}
-
-char *INT_TO_STR(int a)
-{
-  return 0;
-}
-
-
-boolean STRING_IS_LIKE(char *a, char *b)
-{
-  if (*b == '*')               // something like "*.sp"
-  {
-    return (strSuffix(a, &b[1]));
-  }
-  else
-  {
-    // more sophisticated patterns currently not supported
-
-    return 0;
-  }
-}
-
-
-void FILE_GET(FILE *file, int offset, void *buffer, int num_bytes)
-{
-  if (offset != -1)
-    fseek(file, offset - 1, SEEK_SET);
-
-  while (num_bytes--)
-    *(byte *)buffer++ = fgetc(file);
-}
-
-int FILE_PUT(FILE *a, int b, void *c, int d)
-{
-  return 0;
-}
-
-
-/* this is just a workaround -- handle array definitions later */
-void *Array(int a, ...)
-{
-  return 0;
-}
-
-
-/* VB functions that do not return "int" (and would cause compiler errors) */
-double Val(char *a)
-{
-  return 0;
-}
-
-char *Left(char *a, int b)
-{
-  return 0;
-}
-
-char *left(char *a, int b)
-{
-  return 0;
-}
-
-char *Right(char *a, int b)
-{
-  return 0;
-}
-
-char *right(char *a, int b)
-{
-  return 0;
-}
-
-char *StrReverse(char *a)
-{
-  return 0;
-}
-
-int InStr(int a, char *b, char *c)
-{
-  return 0;
-}
-
-char *Dir(char *a)
-{
-  return 0;
-}
-
-char *Dir_Without_Args()
-{
-  return 0;
-}
-
-void Kill(char *a)
-{
-  return;
-}
-
-char *Chr(int a)
-{
-  return 0;
-}
-
-char *String(int a, char *b)
-{
-  return 0;
-}
-
-void MkDir(char *a)
-{
-  return;
-}
-
-char *Hex(int a)
-{
-  return 0;
-}
-
-
-int FileLen(char *a)
-{
-  struct stat buffer;
-
-  if (stat(a, &buffer) == 0)
-  {
-    return buffer.st_size;
-  }
-  else
-  {
-    return 0;
-  }
-}
-
 long MyGetTickCount()
 {
   return random_linux_libc(RANDOM_SIMPLE);
 }
-
-int GetAttr(char *a)
-{
-  return 0;
-}
-
-void SaveSetting(const char * a, const char *b, char *c, int d)
-{
-  return;
-}
-
-#if 0
-
-long GetTempPath(long a, char *b)
-{
-  return 0;
-}
-
-#endif
index 51af0f02fc8f6ac8996adce40a34952eb67088de..e3325749b63e42cbcacb30f77ff4eb8acbf50378 100644 (file)
 
 /* helper functions for constructs not supported by C */
 extern void *REDIM_1D(int, int, int);
-extern void *REDIM_2D(int, int, int, int, int);
-
-extern boolean IS_NOTHING(void *, int);
-
-extern void SET_TO_NOTHING(void *, int);
-
-extern void MESSAGE_BOX(char *);
-
-extern char *CAT(const char *, ...);
-extern char *GET_PATH(char *, ...);
-extern char *INT_TO_STR(int);
-
-extern boolean STRING_IS_LIKE(char *, char *);
-
-extern void FILE_GET(FILE *, int, void *, int);
-extern int FILE_PUT(FILE *, int, void *, int);
-
-/* this is just a workaround -- handle array definitions later */
-extern void *Array(int, ...);
-
-/* VB functions that do not return "int" (and would cause compiler errors) */
-extern double Val(char *);
-extern char *Left(char *, int);
-extern char *left(char *, int);
-extern char *Right(char *, int);
-extern char *right(char *, int);
-extern char *StrReverse(char *);
-extern int InStr(int, char *, char *);
-extern char *Dir(char *);
-extern char *Dir_Without_Args();
-extern void Kill(char *);
-extern char *Chr(int);
-extern char *String(int, char *);
-extern void MkDir(char *);
-extern char *SlashLess(char *);
-extern char *Hex(int);
-
-extern int FileLen(char *);
 
 extern long MyGetTickCount();
 
-extern int GetAttr(char *);
-
-extern void SaveSetting(const char *, const char *, char *, int);
-
-#if 0
-extern long GetTempPath(long, char *);
-#endif
-
 #endif /* VB_LIB_H */
diff --git a/src/game_sp/vb_types.h b/src/game_sp/vb_types.h
deleted file mode 100644 (file)
index 030e179..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-// ----------------------------------------------------------------------------
-// vb_types.h
-// ----------------------------------------------------------------------------
-
-#ifndef VB_TYPES_H
-#define VB_TYPES_H
-
-#include "../libgame/types.h"
-
-
-#if 0
-typedef unsigned char boolean;
-#endif
-
-typedef double currency;
-
-#if 0
-#if !defined(PLATFORM_WIN32)
-typedef unsigned char byte;
-#endif
-#endif
-
-typedef int Variant;
-
-typedef struct
-{
-  int hWnd;
-} Object;
-
-#ifndef HAS_RECT
-typedef struct
-{
-  int left;
-  int top;
-  int right;
-  int bottom;
-} MyRECT;
-#define HAS_RECT
-#endif
-
-typedef struct
-{
-  char *Path;
-} vb_App;
-
-typedef struct
-{
-  void (*Assert)(boolean);
-  void (*Print)(char *);
-} vb_Debug;
-
-typedef struct
-{
-  int Number;
-  void (*Raise)(int, char *, char *);
-} vb_Err;
-
-typedef struct
-{
-  int Width;
-  int Height;
-
-  int ScaleWidth;
-  int ScaleHeight;
-  int ScaleMode;
-
-  int Orientation;
-
-  int TwipsPerPixelX;
-  int TwipsPerPixelY;
-
-  int hWnd;
-
-  int (*ScaleX)(int, int, int);
-  int (*ScaleY)(int, int, int);
-} vb_Generic_Device;
-
-typedef vb_Generic_Device vb_Screen;
-
-typedef vb_Generic_Device Form;
-typedef vb_Generic_Device Picture;
-typedef vb_Generic_Device IPicture;
-typedef vb_Generic_Device Printer;
-
-typedef struct
-{
-  int lCaps;
-} vb_Caps;
-
-typedef struct
-{
-  int LWidth;
-  int LHeight;
-  int lFlags;
-  vb_Caps ddsCaps;
-} DDSURFACEDESC2;
-
-typedef struct
-{
-  void (*SetHWnd)(long);
-} DirectDrawClipper;
-
-typedef struct
-{
-  boolean (*isLost)(void);
-  void (*GetSurfaceDesc)(DDSURFACEDESC2);
-  void (*SetClipper)(DirectDrawClipper);
-  // long (*Blt)(MyRECT, DirectDrawSurface7, MyRECT, int);
-  long (*Blt)(MyRECT, void *, MyRECT, int);
-  void (*BltColorFill)(MyRECT, int);
-} DirectDrawSurface7;
-
-typedef struct
-{
-  DirectDrawSurface7 (*CreateSurface)(DDSURFACEDESC2);
-  DirectDrawSurface7 (*CreateSurfaceFromFile)(char *, DDSURFACEDESC2);
-  void (*SetCooperativeLevel)(int, int);
-  DirectDrawClipper (*CreateClipper)(int);
-  void (*RestoreAllSurfaces)(void);
-} DirectDraw7;
-
-typedef struct
-{
-  int lFlags;
-} DSBUFFERDESC;
-
-#if 0
-
-typedef struct
-{
-  int nFormatTag;
-  int nChannels;
-  int lSamplesPerSec;
-  int nBitsPerSample;
-  int nBlockAlign;
-  int lAvgBytesPerSec;
-} WAVEFORMATEX;
-
-typedef struct
-{
-  int (*GetStatus)(void);
-  void (*Play)(int);
-} DirectSoundBuffer;
-
-typedef struct
-{
-  void (*SetCooperativeLevel)(long, int);
-  DirectSoundBuffer (*CreateSoundBufferFromFile)(char *, DSBUFFERDESC, WAVEFORMATEX);
-} DirectSound;
-
-typedef struct
-{
-  DirectDraw7 (*DirectDrawCreate)(char *);
-  DirectSound (*DirectSoundCreate)(char *);
-  void (*GetWindowRect)(long, MyRECT);
-} DirectX7;
-
-#endif
-
-typedef struct
-{
-  int Left;
-  int Top;
-  void (*RefreshMarker)(void);
-} MarkerObject;
-
-typedef struct
-{
-  void (*DelayMS)(long, boolean);
-  double (*TickDiffUS)(double);
-  double (*TickNow)();
-} TickCountObject;
-
-typedef struct
-{
-  int Caption;
-  void (*Refresh)(void);
-} MainForm_lblCount;
-
-typedef struct
-{
-  boolean Checked;
-  boolean Enabled;
-} MainForm_men;
-
-typedef struct
-{
-  int Width;
-  int Height;
-  void (*Line)(int, int, int, int, int, int);
-} MainForm_picPane;
-
-typedef struct
-{
-  MainForm_lblCount lblInfoCount;
-  MainForm_lblCount lblRedDiskCount;
-  void (*DisplayLevel)(void);
-  void (*DrawField)(int, int);
-  MainForm_men menGravOn;
-  MainForm_men menZonkOn;
-  MainForm_men menEnOn;
-  MainForm_men menGravOff;
-  MainForm_men menZonkOff;
-  MainForm_men menEnOff;
-  MainForm_men menRemSP;
-  MainForm_men menSP;
-  char *Caption;
-  boolean PanelVisible;
-  void (*ShowKey)(int);
-  void (*SaveSnapshot)(int);
-  void (*menStop_Click)(void);
-  MainForm_picPane picPane;
-  char *lblFrameCount;
-  void (*SetDisplayRegion)(void);
-} MainFormObject;
-
-typedef struct
-{
-  int DestXOff;
-  int DestYOff;
-  void *Surface;
-
-  void (*Cls)();
-  void (*Blt)();
-  void (*ScrollTo)(int, int);
-  void (*ScrollTowards)(int, int, double);
-  void (*SoftScrollTo)(int, int, long, int);
-
-} DDScrollBuffer;
-
-typedef struct
-{
-  int DestXOff;
-  int DestYOff;
-  void *DestinationSurface;
-  void *Surface;
-
-  void (*Cls)();
-  // void (*BltEx)(int, int, int);
-  void (*BltImg)(int, int, int, int);
-} DDSpriteBuffer;
-
-typedef struct
-{
-  void (*CreateAtSize)(long, long, long);
-  void (*Let_Palette)(long, long);
-  void (*Let_ColorIndex)(long, long, long);
-} BitMapObject;
-
-struct DemoBufferObject
-{
-  int Size;
-  byte CheckSumByte;
-  void (*SetSubBuffer)(struct DemoBufferObject *);
-  void (*AddDemoKey)(int);
-  boolean (*Serialize)(FILE *);
-};
-typedef struct DemoBufferObject DemoBufferObject;
-
-typedef struct
-{
-  int (*Read)(char *ValName, int Default);
-  void (*Save)(char *ValName, int Val);
-} SettingsObject;
-
-typedef struct
-{
-  int left;
-  int top;
-  int ListIndex;
-  char (*List)(int);
-} cmbFileObject;
-
-typedef struct
-{
-  int Width;
-  int Height;
-  boolean Visible;
-  void (*Move)(int, int, int);
-} shpProgressObject;
-
-typedef struct
-{
-  int left;
-  int Top;
-  int Width;
-  int Height;
-} lblFrameCountObject;
-
-typedef struct
-{
-  boolean Checked;
-} menBorderObject;
-
-typedef struct
-{
-  boolean Checked;
-} menPanelObject;
-
-typedef struct
-{
-  boolean Checked;
-} menAutoScrollObject;
-
-#endif /* VB_TYPES_H */
diff --git a/src/game_sp/vb_vars.c b/src/game_sp/vb_vars.c
deleted file mode 100644 (file)
index 437ba02..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// ----------------------------------------------------------------------------
-// vb_vars.c
-// ----------------------------------------------------------------------------
-
-#include "vb_types.h"
-#include "vb_defs.h"
-#include "vb_vars.h"
-#include "vb_lib.h"
-
-vb_App App;
-vb_Err Err;
-MainFormObject MainForm;
-lblFrameCountObject lblFrameCount;
-cmbFileObject cmbFile;
-shpProgressObject shpProgress;
-menBorderObject menBorder;
-menPanelObject menPanel;
-menAutoScrollObject menAutoScroll;
-
-MainForm_picPane picPane;
diff --git a/src/game_sp/vb_vars.h b/src/game_sp/vb_vars.h
deleted file mode 100644 (file)
index 9569068..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// ----------------------------------------------------------------------------
-// vb_vars.h
-// ----------------------------------------------------------------------------
-
-#ifndef VB_VARS_H
-#define VB_VARS_H
-
-extern vb_Screen Screen;
-extern vb_Debug Debug;
-extern vb_Err Err;
-extern vb_App App;
-
-extern DemoBufferObject VB_OBJECT_SELF;
-
-extern MainFormObject MainForm;
-extern cmbFileObject cmbFile;
-extern shpProgressObject shpProgress;
-extern lblFrameCountObject lblFrameCount;
-extern menBorderObject menBorder;
-extern menPanelObject menPanel;
-extern menAutoScrollObject menAutoScroll;
-
-extern MainForm_picPane picPane;
-
-extern int hWnd;
-
-#endif /* VB_VARS_H */