DEADSOFTWARE

added d_mem command
[d2df-sdl.git] / src / game / Doom2DF.dpr
index 8b2ec19d63b1b45171056b45cf53aa07d2fd5556..7f0afecda37322d78a9b6cea05b136f8eb76db40 100644 (file)
@@ -1,6 +1,24 @@
+(* Copyright (C)  DooM 2D:Forever Developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *)
+{$INCLUDE ../shared/a_modes.inc}
 program Doom2DF;
-{$IFDEF WIN32}
-  {$APPTYPE GUI}
+{$IFNDEF HEADLESS}
+  {$IFDEF WINDOWS}
+    {$APPTYPE GUI}
+  {$ENDIF}
 {$ENDIF}
 {$HINTS OFF}
 
@@ -21,6 +39,8 @@ program Doom2DF;
 {$ENDIF}
 
 uses
+  conbuf in '../shared/conbuf.pas',
+  math,
   GL,
   GLExt,
   SDL2 in '../lib/sdl2/sdl2.pas',
@@ -28,22 +48,18 @@ uses
   SDL2_mixer in '../lib/sdl2/SDL2_mixer.pas',
 {$ENDIF}
   ENet in '../lib/enet/enet.pp',
-  ENetTypes in '../lib/enet/enettypes.pp',
-  ENetList in '../lib/enet/enetlist.pp',
-  ENetTime in '../lib/enet/enettime.pp',
-  ENetProtocol in '../lib/enet/enetprotocol.pp',
-  ENetCallbacks in '../lib/enet/enetcallbacks.pp',
-  ENetPlatform in '../lib/enet/enetplatform.pp',
   e_graphics in '../engine/e_graphics.pas',
   e_input in '../engine/e_input.pas',
   e_log in '../engine/e_log.pas',
   e_sound in '../engine/e_sound.pas',
-  e_textures in '../engine/e_textures.pas',
-  e_fixedbuffer in '../engine/e_fixedbuffer.pas',
-  WADEDITOR in '../shared/WADEDITOR.pas',
-  WADSTRUCT in '../shared/WADSTRUCT.pas',
-  MAPSTRUCT in '../shared/MAPSTRUCT.pas',
-  MAPREADER in '../shared/MAPREADER.pas',
+  e_texture in '../engine/e_texture.pas',
+  e_msg in '../engine/e_msg.pas',
+  utils in '../shared/utils.pas',
+  xstreams in '../shared/xstreams.pas',
+  sfs in '../sfs/sfs.pas',
+  sfsPlainFS in '../sfs/sfsPlainFS.pas',
+  sfsZipFS in '../sfs/sfsZipFS.pas',
+  wadreader in '../shared/wadreader.pas',
   MAPDEF in '../shared/MAPDEF.pas',
   CONFIG in '../shared/CONFIG.pas',
   g_basic in 'g_basic.pas',
@@ -53,6 +69,7 @@ uses
   g_nethandler in 'g_nethandler.pas',
   g_netmaster in 'g_netmaster.pas',
   g_res_downloader in 'g_res_downloader.pas',
+  g_grid in 'g_grid.pas',
   g_game in 'g_game.pas',
   g_gfx in 'g_gfx.pas',
   g_gui in 'g_gui.pas',
@@ -71,30 +88,74 @@ uses
   g_triggers in 'g_triggers.pas',
   g_weapons in 'g_weapons.pas',
   g_window in 'g_window.pas',
-  sysutils,
+  g_holmes in 'g_holmes.pas',
+  SysUtils,
 {$IFDEF USE_FMOD}
   fmod in '../lib/FMOD/fmod.pas',
   fmoderrors in '../lib/FMOD/fmoderrors.pas',
   fmodpresets in '../lib/FMOD/fmodpresets.pas',
   fmodtypes in '../lib/FMOD/fmodtypes.pas',
 {$ENDIF}
+  xprofiler in '../shared/xprofiler.pas',
+  binheap in '../shared/binheap.pas',
+  hashtable in '../shared/hashtable.pas',
+  idpool in '../shared/idpool.pas',
+  xparser in '../shared/xparser.pas',
+  xdynrec in '../shared/xdynrec.pas',
+  exoma in '../shared/exoma.pas',
   BinEditor in '../shared/BinEditor.pas',
+  envvars in '../shared/envvars.pas',
   g_panel in 'g_panel.pas',
-  g_language in 'g_language.pas';
+  g_language in 'g_language.pas',
+  ImagingTypes,
+  Imaging,
+  ImagingUtility;
 
-{$IFDEF WIN32}
+{$IFDEF WINDOWS}
   {$R *.res}
   {$R CustomRes.res}
 {$ENDIF}
 
+var
+  f: Integer;
+  noct: Boolean = false;
+  //tfo: Text;
 begin
-  try
-    Main();
-    e_WriteLog('Shutdown with no errors.', MSG_NOTIFY);
-  except
-    on E: Exception do
-      e_WriteLog(Format(_lc[I_SYSTEM_ERROR_MSG], [E.Message]), MSG_FATALERROR);
-    else
-      e_WriteLog(Format(_lc[I_SYSTEM_ERROR_UNKNOWN], [LongWord(ExceptAddr())]), MSG_FATALERROR);
+  SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide, exOverflow, exUnderflow, exPrecision]); //k8: fuck off, that's why
+  for f := 1 to ParamCount do
+  begin
+         if ParamStr(f) = '--gdb' then noct := true
+    else if ParamStr(f) = '--log' then conbufDumpToStdOut := true
+    else if ParamStr(f) = '--safe-log' then e_SetSafeSlowLog(true);
   end;
+  if noct then
+  begin
+    Main()
+  end
+  else
+  begin
+    try
+      Main();
+      e_WriteLog('Shutdown with no errors.', MSG_NOTIFY);
+    except
+      on e: Exception do
+        begin
+          e_WriteStackTrace(e.message);
+          //e_WriteLog(Format(_lc[I_SYSTEM_ERROR_MSG], [E.Message]), MSG_FATALERROR);
+          (*
+          AssignFile(tfo, GameDir+'/trace.log');
+          {$I-}
+          Append(tfo);
+          if (IOResult <> 0) then Rewrite(tfo);
+          if (IOResult = 0) then begin writeln(tfo, '====================='); DumpExceptionBackTrace(tfo); CloseFile(tfo); end;
+          *)
+        end
+      else
+        begin
+          //e_WriteLog(Format(_lc[I_SYSTEM_ERROR_UNKNOWN], [NativeUInt(ExceptAddr())]), MSG_FATALERROR);
+          e_WriteStackTrace('FATAL ERROR');
+        end;
+    end;
+  end;
+  e_DeinitLog();
 end.