Posted August 22, 2025 by Novus Idea
This is my retro 3D software renderer for MS-DOS, running in glorious VGA Mode 13h (320x200, 256 colors).
The goal of CyberVGA is to bring back the raw feel of early demoscene graphics programming — with clean C code, no dependencies, and running straight on DOS hardware or inside DOSBox.
Core VGA driver
Switches between text and graphics mode, manages framebuffers, and exposes palette functions (cv_set_vga_mode
, cv_make_default_palette
).
Palette tricks
CyberVGA includes APIs for palette animation and manipulation. With nothing but palette changes you can achieve fades, color cycling, pseudo-lighting, and instant texture recolors — just like in the old demo effects.
3D math & transforms
A lightweight math library with trig lookup tables, perspective projection, and rotation in 3 axes.
Mesh loading
Simple OBJ parser (cv_mesh_load
) that loads vertices and triangles into a CV_Mesh
struct.
Software rasterizer
Pixel plotting, Bresenham lines, wireframe triangles, and filled triangles. Even a depth buffer path is stubbed in for future work.
Interactive demo
main.c
runs a rotating cube or sphere mesh, with arrow keys to rotate and ESC to quit. Wireframe + filled rendering are combined for that oldschool “tech demo” vibe.
Texture mapping (PCX/Deluxe Paint import is planned)
Palette-based scene fades & cycling demos
More shapes and mesh experiments
Input expansion (keyboard/mouse menus, FPS counter overlay)
CyberVGA is my love letter to the early days of PC graphics programming. No GPUs, no shaders, just raw pixel pushing on the CPU. Yet even with these limits, clever tricks like palette cycling or fake lighting let you achieve surprisingly modern effects.
If you’re into DOS coding, graphics programming, or demoscene nostalgia, I’d love for you to check it out and share feedback.