]> git.0x19.co - doomgeneric-snom360/commitdiff
main() from outside
authorozkl <ozkl@users.noreply.github.com>
Fri, 10 Mar 2023 16:29:47 +0000 (19:29 +0300)
committerozkl <ozkl@users.noreply.github.com>
Fri, 10 Mar 2023 16:29:47 +0000 (19:29 +0300)
doomgeneric/d_main.c
doomgeneric/dgmain.c [new file with mode: 0644]
doomgeneric/doomgeneric.c
doomgeneric/doomgeneric.h
doomgeneric/i_main.c

index c7cf977bc9027f5fb761a0b87604684f26a0f385..9012e5f54086cb86aa6f5ab2d0aa7c7d11165ec8 100644 (file)
@@ -402,6 +402,22 @@ boolean D_GrabMouseCallback(void)
     return (gamestate == GS_LEVEL) && !demoplayback && !advancedemo;
 }
 
+void doomgeneric_Tick()
+{
+    // frame syncronous IO operations
+    I_StartFrame ();
+
+    TryRunTics (); // will run at least one tic
+
+    S_UpdateSounds (players[consoleplayer].mo);// move positional sounds
+
+    // Update display, next frame, with current state.
+    if (screenvisible)
+    {
+        D_Display ();
+    }
+}
+
 //
 //  D_DoomLoop
 //
@@ -439,21 +455,7 @@ void D_DoomLoop (void)
         wipegamestate = gamestate;
     }
 
-    while (1)
-    {
-               // frame syncronous IO operations
-               I_StartFrame ();
-
-               TryRunTics (); // will run at least one tic
-
-               S_UpdateSounds (players[consoleplayer].mo);// move positional sounds
-
-               // Update display, next frame, with current state.
-               if (screenvisible)
-               {
-                       D_Display ();
-               }
-    }
+    doomgeneric_Tick();
 }
 
 
@@ -1812,14 +1814,16 @@ void D_DoomMain (void)
     {
                singledemo = true;              // quit after one demo
                G_DeferedPlayDemo (demolumpname);
-               D_DoomLoop ();  // never returns
+               D_DoomLoop ();
+        return;
     }
 
     p = M_CheckParmWithArgs("-timedemo", 1);
     if (p)
     {
                G_TimeDemo (demolumpname);
-               D_DoomLoop ();  // never returns
+               D_DoomLoop ();
+        return;
     }
 
     if (startloadgame >= 0)
@@ -1836,6 +1840,6 @@ void D_DoomMain (void)
                        D_StartTitle ();                // start up intro loop
     }
 
-    D_DoomLoop ();  // never returns
+    D_DoomLoop ();
 }
 
diff --git a/doomgeneric/dgmain.c b/doomgeneric/dgmain.c
new file mode 100644 (file)
index 0000000..8f4283c
--- /dev/null
@@ -0,0 +1,18 @@
+#include <stdio.h>
+
+
+#include "doomgeneric.h"
+
+
+int main(int argc, char **argv)
+{
+    doomgeneric_Create(argc, argv);
+
+    for (int i = 0; ; i++)
+    {
+        doomgeneric_Tick();
+    }
+    
+
+    return 0;
+}
\ No newline at end of file
index 25675abf56b4518d966e4d9547b765d17fcd031e..782a7e716cebca14f3c65a4a43737045a4763192 100644 (file)
@@ -1,12 +1,27 @@
+#include <stdio.h>
+
+#include "m_argv.h"
+
 #include "doomgeneric.h"
 
 uint32_t* DG_ScreenBuffer = 0;
 
+void M_FindResponseFile(void);
+void D_DoomMain (void);
+
 
-void dg_Create()
+void doomgeneric_Create(int argc, char **argv)
 {
+       // save arguments
+    myargc = argc;
+    myargv = argv;
+
+       M_FindResponseFile();
+
        DG_ScreenBuffer = malloc(DOOMGENERIC_RESX * DOOMGENERIC_RESY * 4);
 
        DG_Init();
+
+       D_DoomMain ();
 }
 
index c2dc4b57fe54969a8d4df95483d467e2511c5f6a..091621f2ae075591ced0e923e4dc350007e81ff3 100644 (file)
 
 extern uint32_t* DG_ScreenBuffer;
 
+void doomgeneric_Create(int argc, char **argv);
+void doomgeneric_Tick();
 
+
+//Implement below functions for your platform
 void DG_Init();
 void DG_DrawFrame();
 void DG_SleepMs(uint32_t ms);
index b192227da237a10afc1546dc71924fc08e52b5ac..80a8117107aa632cfba624631609e8e45ab2fccf 100644 (file)
@@ -34,9 +34,7 @@ void D_DoomMain (void);
 
 void M_FindResponseFile(void);
 
-void dg_Create();
-
-
+/*
 int main(int argc, char **argv)
 {
     // save arguments
@@ -48,11 +46,10 @@ int main(int argc, char **argv)
 
     // start doom
     printf("Starting D_DoomMain\r\n");
-    
-       dg_Create();
 
        D_DoomMain ();
 
     return 0;
 }
 
+*/
\ No newline at end of file