I want to build out some low level graphics and sound functionality - 2D graphics and your standard low-latency sound mixing stuff. None of the features I have in mind would demand anything from a newer version of Direct X. For maximum end-user compatibility, I'd prefer to use either standard Windows GDI/Sound functionality, or an old version of DirectX (like version 5). i.e. If possible I'd like to support the ~5% of end users still on Win 98. On the graphics side, all I need the code to do is set up the graphics mode. I will compose the screen image using my own functions in system RAM, then blit it all over to the screen/VRAM every frame. A few months ago, I did some windowed-mode stuff using plain old GDI (DIBs, IIRC), and that was as fast as equivalent code running on Direct X. But, is there another limiting factor? (I seem to recall that you need DirectX to set and use full screen modes, correct?) On the sound side, is there anything magical to DirectSound, or could I use the equivalent plain old Windows Sound APIs? And if I DO need Direct X (which is what I suspect), how can I (legally) download/obtain old versions of the SDK? MS's own site only appears to have version 9 (possibly 8) forward. Possibly there is a super-secret site for some level of MSDN membership with the right stuff? My fallback, I suppose, is finding an old 'How to program Direct X' book on Amazon that ships with a CD of the appropriate SDK version. But if there's a legal on-line download source, that'd be groovy. And yes, I know of (and have used), SDL, but for various reasons, I'm interested in rolling my own here.