You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The purpose of doomgeneric is to make porting Doom easier.
Of course Doom is already portable but with doomgeneric it is possible with just a few functions.
To try it you will need a WAD file (game data). If you don't own the game, shareware version is freely available (doom1.wad).
porting
Create a file named doomgeneric_yourplatform.c and just implement these functions to suit your platform.
DG_Init
DG_DrawFrame
DG_SleepMs
DG_GetTicksMs
DG_GetKey
Functions
Description
DG_Init
Initialize your platfrom (create window, framebuffer, etc...).
DG_DrawFrame
Frame is ready in DG_ScreenBuffer. Copy it to your platform's screen.
DG_SleepMs
Sleep in milliseconds.
DG_GetTicksMs
The ticks passed since launch in milliseconds.
DG_GetKey
Provide keyboard events.
DG_SetWindowTitle
Not required. This is for setting the window title as Doom sets this from WAD file.
main loop
At start, call doomgeneric_Create().
In a loop, call doomgeneric_Tick().
In simplest form:
int main(int argc, char **argv)
{
doomgeneric_Create(argc, argv);
while (1)
{
doomgeneric_Tick();
}
return 0;
}
sound
Sound is much harder to implement! If you need sound, take a look at SDL port. It fully supports sound and music! Where to start? Define FEATURE_SOUND, assign DG_sound_module and DG_music_module.
platforms
Ported platforms include Windows, X11, SDL, emscripten. Just look at (doomgeneric_win.c, doomgeneric_xlib.c, doomgeneric_sdl.c).
Makefiles provided for each platform.