From eed7c27708d10e86427fe4902aaabcd74c8b2b46 Mon Sep 17 00:00:00 2001 From: ozkl Date: Fri, 10 Mar 2023 19:29:47 +0300 Subject: [PATCH 1/2] main() from outside --- doomgeneric/d_main.c | 40 +++++++++++++++++++++------------------ doomgeneric/dgmain.c | 18 ++++++++++++++++++ doomgeneric/doomgeneric.c | 17 ++++++++++++++++- doomgeneric/doomgeneric.h | 4 ++++ doomgeneric/i_main.c | 7 ++----- 5 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 doomgeneric/dgmain.c diff --git a/doomgeneric/d_main.c b/doomgeneric/d_main.c index c7cf977..9012e5f 100644 --- a/doomgeneric/d_main.c +++ b/doomgeneric/d_main.c @@ -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 index 0000000..8f4283c --- /dev/null +++ b/doomgeneric/dgmain.c @@ -0,0 +1,18 @@ +#include + + +#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 diff --git a/doomgeneric/doomgeneric.c b/doomgeneric/doomgeneric.c index 25675ab..782a7e7 100644 --- a/doomgeneric/doomgeneric.c +++ b/doomgeneric/doomgeneric.c @@ -1,12 +1,27 @@ +#include + +#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 (); } diff --git a/doomgeneric/doomgeneric.h b/doomgeneric/doomgeneric.h index c2dc4b5..091621f 100644 --- a/doomgeneric/doomgeneric.h +++ b/doomgeneric/doomgeneric.h @@ -10,7 +10,11 @@ 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); diff --git a/doomgeneric/i_main.c b/doomgeneric/i_main.c index b192227..80a8117 100644 --- a/doomgeneric/i_main.c +++ b/doomgeneric/i_main.c @@ -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 From ec96a8a5e94ae774d1c839fe5f047ff0fb22a0d0 Mon Sep 17 00:00:00 2001 From: ozkl Date: Mon, 13 Mar 2023 23:47:19 +0300 Subject: [PATCH 2/2] main outside --- doomgeneric/dgmain.c | 18 ------------------ doomgeneric/doomgeneric_sdl.c | 13 +++++++++++++ doomgeneric/doomgeneric_soso.c | 13 +++++++++++++ doomgeneric/doomgeneric_sosox.c | 13 +++++++++++++ doomgeneric/doomgeneric_win.c | 13 +++++++++++++ doomgeneric/doomgeneric_xlib.c | 13 +++++++++++++ 6 files changed, 65 insertions(+), 18 deletions(-) delete mode 100644 doomgeneric/dgmain.c diff --git a/doomgeneric/dgmain.c b/doomgeneric/dgmain.c deleted file mode 100644 index 8f4283c..0000000 --- a/doomgeneric/dgmain.c +++ /dev/null @@ -1,18 +0,0 @@ -#include - - -#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 diff --git a/doomgeneric/doomgeneric_sdl.c b/doomgeneric/doomgeneric_sdl.c index 10a3d1a..43d14f6 100644 --- a/doomgeneric/doomgeneric_sdl.c +++ b/doomgeneric/doomgeneric_sdl.c @@ -155,3 +155,16 @@ void DG_SetWindowTitle(const char * title) SDL_SetWindowTitle(window, title); } } + +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 diff --git a/doomgeneric/doomgeneric_soso.c b/doomgeneric/doomgeneric_soso.c index cd4d5fa..15ce4de 100644 --- a/doomgeneric/doomgeneric_soso.c +++ b/doomgeneric/doomgeneric_soso.c @@ -258,3 +258,16 @@ int DG_GetKey(int* pressed, unsigned char* doomKey) void DG_SetWindowTitle(const char * title) { } + +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 diff --git a/doomgeneric/doomgeneric_sosox.c b/doomgeneric/doomgeneric_sosox.c index ff527d0..f988446 100644 --- a/doomgeneric/doomgeneric_sosox.c +++ b/doomgeneric/doomgeneric_sosox.c @@ -257,3 +257,16 @@ void DG_SetWindowTitle(const char * title) { GrSetWindowTitle(wid, title); } + +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 diff --git a/doomgeneric/doomgeneric_win.c b/doomgeneric/doomgeneric_win.c index 271cabd..4c156b4 100644 --- a/doomgeneric/doomgeneric_win.c +++ b/doomgeneric/doomgeneric_win.c @@ -194,4 +194,17 @@ void DG_SetWindowTitle(const char * title) { SetWindowTextA(s_Hwnd, title); } +} + +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 diff --git a/doomgeneric/doomgeneric_xlib.c b/doomgeneric/doomgeneric_xlib.c index d7e3e25..96d35aa 100644 --- a/doomgeneric/doomgeneric_xlib.c +++ b/doomgeneric/doomgeneric_xlib.c @@ -198,3 +198,16 @@ void DG_SetWindowTitle(const char * title) XChangeProperty(s_Display, s_Window, XA_WM_NAME, XA_STRING, 8, PropModeReplace, title, strlen(title)); } } + +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