Under the hood
Architecture
How Velocity9x is put together, from the 16-bit display driver and 32-bit mini-VDD to the shared render core behind Direct3D, OpenGL, Glide and 3DCIF.
Velocity9x is written against the Windows 98 DDI, DIB Engine, DirectDraw HAL, Direct3D HAL and OpenGL ICD contracts, rather than derived from anyone’s driver sources.
The pieces
Direct3D OpenGL 1.1 ICD Glide 2/3 ATI 3DCIF
(HAL via DD) V9XGL.DLL GLIDE2X/3X.DLL ATI3DCIF.DLL
\ | | /
\____________|_______________|____________/
|
shared render core
(one chip backend per family,
CPU fallback where needed)
|
GDI / DIB Engine --- 16-bit display driver (V9XDISP.DRV)
|
32-bit mini-VDD (V9XMINI.VXD)
|
the card: 2D engine, 3D engine,
command processor, video BIOS
- 16-bit display driver. Owns the Windows display DDI entry points (
Enable,Disable,ReEnable,ValidateModeand the drawing ordinals), works with the DIB Engine, and translates Windows structures into small project-owned contracts. It handles live mode switching at the same colour depth. - 32-bit mini-VDD. Adapter and resource discovery, screen-state transitions, mappings, engine synchronisation, logging and recovery, within the Windows 98 SE mini-VDD contract.
- Portable core. Validation, capability policy, diagnostic record layout and chipset dispatch. It does not include Windows or DDK headers, and code shared with 16-bit components stays C89-compatible.
- Chip backends. One per family. Recognition alone grants no capability: resources, apertures, VRAM and a mode must be validated before anything is enabled.
- Shared render core. Every 3D interface draws through it, so a fix for one API usually reaches the others, and 3DCIF and Glide run on cards their original vendors never supported.
Design rules
- Refuse, don’t guess. Each engine draws only what testing showed it draws correctly. A draw it cannot express is refused (or drawn by the CPU on some chips), never drawn wrong.
- Measure before you advertise. A capability is only offered once it has been measured on hardware.
- Leave a legible failure. Every stage writes to
C:\V9XDIAG\, so a black screen still says how far the driver got.
For the full boundary specification, the family manifest format and the decision records, see the Velocity9x repository.