Doomgeneric: Make Porting Doom Easier

[ comments ]

master
Code

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

This branch is 43 commits ahead, 7 commits behind maximevince:master.

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).

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.

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.

Ported platforms include Windows, X11, SDL, Soso. Just look at (doomgeneric_win.c or doomgeneric_xlib.c).

Windows

X11 - Ubuntu

Ubuntu

X11 - FreeBSD

FreeBSD

SDL

No releases published

Languages

  • C
  • Other 0.7%

[ comments ]


Older Post Newer Post