A "retro" C game development library, developed with Watcom C targeting MS-DOS and VGA Mode 13h.
Go to file
2018-05-27 13:15:58 -04:00
TEST update key events test to show ascii decimal value for translated chars 2018-05-27 12:55:10 -04:00
.gitignore update gitignore 2018-04-28 12:06:59 -04:00
DGL.C add input device events 2018-05-21 14:50:12 -04:00
DGL.H add input device events 2018-05-21 14:50:12 -04:00
DGLBLIT.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLBLIT.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLBLITA.ASM revert experimental stuff that didn't really work better anyway. oops 2018-04-28 12:06:48 -04:00
DGLCLIP.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLCLIP.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLCMN.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLDRAW.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLDRAW.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLDRAWA.ASM many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLERROR.H add input device events 2018-05-21 14:50:12 -04:00
DGLEVENT.C add input device events 2018-05-21 14:50:12 -04:00
DGLEVENT.H maintain keyboard flags/led states in interrupt handler 2018-05-27 10:36:47 -04:00
DGLFIXP.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLFIXP.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLGFX.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLGFX.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLKBRD.C adding some comments 2018-05-27 13:15:58 -04:00
DGLKBRD.H add key code to character translation helper function 2018-05-27 12:42:28 -04:00
DGLKEYS.H add missing key constants for F11 and F12 2018-05-27 12:53:57 -04:00
DGLMATH.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLMATH.H some small fixes 2018-04-30 20:52:43 -04:00
DGLMOUSE.C add input device events 2018-05-21 14:50:12 -04:00
DGLMOUSE.H add input device events 2018-05-21 14:50:12 -04:00
DGLMTX33.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLPAL.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLPAL.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLPCX.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLPCX.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLRECT.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLUTIL.C many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLUTIL.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
DGLVEC2.H many updates. moved project over to watcom 2018-04-28 11:30:53 -04:00
MAKEFILE add input device events 2018-05-21 14:50:12 -04:00
README.md update README.md 2018-05-21 14:50:59 -04:00

libDGL

libDGL is a "retro coding" C library aimed at MS-DOS VGA Mode 13h game development. It targets 486 DX2 systems as a baseline for performance.

The project is developed with Watcom C 10.0b and Borland Turbo Assembler 4.0.

Why?

Because it's fun.

If you were looking for something for "retro" MS-DOS game development that is fully featured, really performant and bug-tested that's ready right now, have a look at Allegro 3.x or possibly 4.x depending on what hardware you're targetting.

Status

This library is currently under early development and is lacking many things and probably chock-full of bugs.

Done / Mostly Done

  • Primitive drawing support
  • Text rendering
  • Blitting
  • Graphics clipping
  • Keyboard input
  • Mouse input
  • Input device (keyboard/mouse) events
  • PCX loading/saving
  • Math library (general helpers, 2D vector, 3x3 matrix)
  • Fixed point math
  • Basic error handling / results

TODO

  • Scaled/rotated blitting support
  • Blending
  • "Mode 7" like support
  • Custom font loading (BIOS-like format?)
  • Joystick / Gravis GamePad support
  • PC speaker sounds
  • Sound Blaster compatible sound/music
  • Gravis Ultrasound compatible sound/music
  • Sine/cosine lookup table optimizations
  • BMP, LBM, GIF image loading (and saving?)
  • Simple immediate mode GUI

Building

You can use WMAKE to build using the included MAKEFILE.

To build the library:

> wmake target_config=debug build           ; debug build

> wmake target_config=release build         ; release build

Will output DGL.LIB in the project directory.

To build and run the (incomplete) test suite, look under the "TEST" directory. There you will find a separate MAKEFILE which assumes that you are running wmake from that directory and that DGL.LIB has already been built.

> cd test
test> wmake run                                 ; run test suite
test> wmake debug                               ; run through WD debugger