winconaa
a *color* ASCII-art SDL video driver
for the Win32 console
by Jeremy Stanley
December 22, 2003
Download
What?
This is an SDL backend that will make SDL applications draw ASCII art
to a console window instead of drawing actual colored pixels.
It's inspired by aalib, but it's in color (but is otherwise nowhere
near as advanced as aalib is--no dithering, no gamma, no portability,
just a quick hack).
Why?
If you have to ask why, you're not part of the intended audience.
Go play your games with your Radeon 9800XT in 1280x1024 with 4xFSAA and
16xAF instead.
To run a program with the winconaa driver:
- Put the modified SDL.DLL somewhere where your program can find it
(such as in the same directory as the executable).
- Tell SDL to use the winconaa driver instead of a real one. (Even
though my modified SDL.DLL supports ASCII art output, it still uses the
boring old directx driver by default.)
set
SDL_VIDEODRIVER=winconaa
- If your program doesn't run in ASCII-art mode, make sure
that it's linking against the correct SDL.dll. Please note that
if an SDL.dll exists in the same directory as the executable, that one
will be linked first.
- It looks best if you change your console font to 8x8 from the
default 8x12. Or, for the full effect, hit Alt+Enter and run in TEXT
MODE!
- When you're done playing with winconaa and you want to
use a real video driver,
set SDL_VIDEODRIVER=directx
.
Software known to work under the winconaa driver
Theoretically, any software rendered (non-GL) SDL app should work, but
I've only personally tested these.
Screen Shots
Before
After
Implementation notes (a.k.a. bugs):
- There is no mouse support (yet). While the console APIs
are surprisingly sufficient for keyboard input (keypresses AND
releases), they're inadequate for the kind of mousing you'd need to do
to play, for example, Quake. It probably wouldn't be too
difficult to put together a hack that would use the real mouse APIs
instead of the console ones, but I'm not planning on doing that unless
there's interest. You're certainly welcome to do so yourself, if
you'd like to, however.
- Any call to SDL_UpdateRects() will update the entire screen, and
ignore the list of rectangles passed in. For what it's worth,
SDL's aalib backend does the same thing.
- It's hard coded to use 80x50 mode for the time being, since I
anticipated its use in text mode.
To build SDL 1.2.6 with the winconaa video driver:
- Download and extract the SDL 1.2.6 source distribution somewhere.
- Switch to the directory where you extracted it.
- Apply the patch (e.g., using Cygwin)
patch -p1 <
SDL-1.2.6-src-winconaa-patch
- Load the appropriate project workspace for your compiler.
- Add the contents of src/winconaa to the project.
- Set up a global preprocessor symbol called ENABLE_WINCONAA.
- Build!
Links to other similarly demented projects
Contact the author
Message Form