diff --git a/doomgeneric/Makefile b/doomgeneric/Makefile index ceecc57..503e0dc 100644 --- a/doomgeneric/Makefile +++ b/doomgeneric/Makefile @@ -22,7 +22,7 @@ LIBS+=-lm -lc -lX11 OBJDIR=build OUTPUT=doomgeneric -SRC_DOOM = i_main.o dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_xlib.o +SRC_DOOM = dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_xlib.o OBJS += $(addprefix $(OBJDIR)/, $(SRC_DOOM)) all: $(OUTPUT) diff --git a/doomgeneric/Makefile.freebsd b/doomgeneric/Makefile.freebsd index bc7af9f..13e8bb0 100644 --- a/doomgeneric/Makefile.freebsd +++ b/doomgeneric/Makefile.freebsd @@ -18,7 +18,7 @@ LIBS+=-lm -lc -lX11 OBJDIR=build OUTPUT=doomgeneric -SRC_DOOM = i_main.o dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_xlib.o +SRC_DOOM = dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_xlib.o OBJS += $(addprefix $(OBJDIR)/, $(SRC_DOOM)) all: $(OUTPUT) diff --git a/doomgeneric/Makefile.sdl b/doomgeneric/Makefile.sdl index a7c24a5..0ede336 100644 --- a/doomgeneric/Makefile.sdl +++ b/doomgeneric/Makefile.sdl @@ -26,7 +26,7 @@ LIBS+=-lm -lc -lSDL2 -lSDL2_mixer `sdl2-config --cflags --libs` OBJDIR=build OUTPUT=doomgeneric -SRC_DOOM = i_main.o dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_sdl.o mus2mid.o i_sdlmusic.o i_sdlsound.o +SRC_DOOM = dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_sdl.o mus2mid.o i_sdlmusic.o i_sdlsound.o OBJS += $(addprefix $(OBJDIR)/, $(SRC_DOOM)) all: $(OUTPUT) diff --git a/doomgeneric/Makefile.soso b/doomgeneric/Makefile.soso index cf028fa..27f4de8 100644 --- a/doomgeneric/Makefile.soso +++ b/doomgeneric/Makefile.soso @@ -22,7 +22,7 @@ LIBS+=-lm -lc /usr/lib/llvm-10/lib/clang/10.0.0/lib/linux/libclang_rt.builtins-i OBJDIR=build OUTPUT=fbdoom -SRC_DOOM = i_main.o dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_soso.o +SRC_DOOM = dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_soso.o OBJS += $(addprefix $(OBJDIR)/, $(SRC_DOOM)) all: $(OUTPUT) diff --git a/doomgeneric/Makefile.sosox b/doomgeneric/Makefile.sosox index 0d404a0..975c908 100644 --- a/doomgeneric/Makefile.sosox +++ b/doomgeneric/Makefile.sosox @@ -22,7 +22,7 @@ LIBS+=-lnano-X -lm -lc /usr/lib/llvm-10/lib/clang/10.0.0/lib/linux/libclang_rt.b OBJDIR=build OUTPUT=doom -SRC_DOOM = i_main.o dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_sosox.o +SRC_DOOM = dummy.o am_map.o doomdef.o doomstat.o dstrings.o d_event.o d_items.o d_iwad.o d_loop.o d_main.o d_mode.o d_net.o f_finale.o f_wipe.o g_game.o hu_lib.o hu_stuff.o info.o i_cdmus.o i_endoom.o i_joystick.o i_scale.o i_sound.o i_system.o i_timer.o memio.o m_argv.o m_bbox.o m_cheat.o m_config.o m_controls.o m_fixed.o m_menu.o m_misc.o m_random.o p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_saveg.o p_setup.o p_sight.o p_spec.o p_switch.o p_telept.o p_tick.o p_user.o r_bsp.o r_data.o r_draw.o r_main.o r_plane.o r_segs.o r_sky.o r_things.o sha1.o sounds.o statdump.o st_lib.o st_stuff.o s_sound.o tables.o v_video.o wi_stuff.o w_checksum.o w_file.o w_main.o w_wad.o z_zone.o w_file_stdc.o i_input.o i_video.o doomgeneric.o doomgeneric_sosox.o OBJS += $(addprefix $(OBJDIR)/, $(SRC_DOOM)) all: $(OUTPUT) 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/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/doomgeneric_sdl.c b/doomgeneric/doomgeneric_sdl.c index e2983e6..fd4236a 100644 --- a/doomgeneric/doomgeneric_sdl.c +++ b/doomgeneric/doomgeneric_sdl.c @@ -196,3 +196,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 diff --git a/doomgeneric/i_main.c b/doomgeneric/i_main.c deleted file mode 100644 index b192227..0000000 --- a/doomgeneric/i_main.c +++ /dev/null @@ -1,58 +0,0 @@ -// -// Copyright(C) 1993-1996 Id Software, Inc. -// Copyright(C) 2005-2014 Simon Howard -// -// 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 2 -// 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. -// -// DESCRIPTION: -// Main program, simply calls D_DoomMain high level loop. -// - -//#include "config.h" - -#include - -//#include "doomtype.h" -//#include "i_system.h" -#include "m_argv.h" - -// -// D_DoomMain() -// Not a globally visible function, just included for source reference, -// calls all startup code, parses command line options. -// - -void D_DoomMain (void); - -void M_FindResponseFile(void); - -void dg_Create(); - - -int main(int argc, char **argv) -{ - // save arguments - - myargc = argc; - myargv = argv; - - M_FindResponseFile(); - - // start doom - printf("Starting D_DoomMain\r\n"); - - dg_Create(); - - D_DoomMain (); - - return 0; -} -