==============================================================================
Using the Simple DirectMedia Layer with OpenBSD/wscons
==============================================================================

The wscons SDL driver can be used to run SDL programs on OpenBSD
without running X.  So far, the driver only runs on the Sharp Zaurus,
but the driver is written to be easily extended for other machines.
The main missing pieces are blitting routines for anything but 16 bit
displays, and keycode maps for other keyboards.  Also, there is no
support for hardware palettes.

There is currently no mouse support.

To compile SDL with support for wscons, use the
"--enable-video-wscons" option when running configure.  I used the
following command line:

./configure --disable-oss --disable-ltdl --enable-pthread-sem \
	    --disable-esd --disable-arts --disable-video-aalib  \
	    --enable-openbsdaudio --enable-video-wscons \
	    --prefix=/usr/local --sysconfdir=/etc


Setting the console device to use
=================================

When starting an SDL program on a wscons console, the driver uses the
current virtual terminal (usually /dev/ttyC0).  To force the driver to
use a specific terminal device, set the environment variable
SDL_WSCONSDEV:

bash$ SDL_WSCONSDEV=/dev/ttyC1 ./some-sdl-program

This is especially useful when starting an SDL program from a remote
login prompt (which is great for development).  If you do this, and
want to use keyboard input, you should avoid having some other program
reading from the used virtual console (i.e., do not have a getty
running).


Rotating the display
====================

The display can be rotated by the wscons SDL driver.  This is useful
for the Sharp Zaurus, since the display hardware is wired so that it
is correctly rotated only when the display is folded into "PDA mode."
When using the Zaurus in "normal," or "keyboard" mode, the hardware
screen is rotated 90 degrees anti-clockwise.

To let the wscons SDL driver rotate the screen, set the environment
variable SDL_VIDEO_WSCONS_ROTATION to "CW", "CCW", or "UD", for
clockwise, counter clockwise, and upside-down rotation respectively.
"CW" makes the screen appear correct on a Sharp Zaurus SL-C3100.

When using rotation in the driver, a "shadow" frame buffer is used to
hold the intermediary display, before blitting it to the actual
hardware frame buffer.  This slows down performance a bit.

For completeness, the rotation "NONE" can be specified to use a shadow
frame buffer without actually rotating.  Unsetting
SDL_VIDEO_WSCONS_ROTATION, or setting it to '' turns off the shadow
frame buffer for maximum performance.


Running MAME
============

Since my main motivation for writing the driver was playing MAME on
the Zaurus, I'll give a few hints:

XMame compiles just fine under OpenBSD.

I'm not sure this is strictly necessary, but set

MY_CPU = arm

in makefile.unix, and

CFLAGS.arm = -DLSB_FIRST -DALIGN_INTS -DALIGN_SHORTS

in src/unix/unix.max

to be sure.

The latest XMame (0.101 at this writing) is a very large program.
Either tinker with the make files to compile a version without support
for all drivers, or, get an older version of XMame.  My recommendation
would be 0.37b16.

When running MAME, DO NOT SET SDL_VIDEO_WSCONS_ROTATION!  Performace
is MUCH better without this, and it is COMPLETELY UNNECESSARY, since
MAME can rotate the picture itself while drawing, and does so MUCH
FASTER.

Use the Xmame command line option "-ror" to rotate the picture to the
right.


Acknowledgments
===============

I studied the wsfb driver for XFree86/Xorg quite a bit before writing
this, so there ought to be some similarities.


--
Staffan Ulfberg <staffan@ulfberg.se>
