To: sdl@libsdl.org
From: Staffan Ulfberg <staffan@ulfberg.se> Date: 19 Nov 2005 01:00:48 +0100 Subject: [SDL] New driver for OpenBSD/wscons Hello, I've written an SDL driver for OpenBSD/wscons (console mode, somewhat resembling the functionality of the svga driver for Linux). I use it for playing MAME on my Sharp Zaurus. The alternative is to play under X, which is slower. I asked how to submit the driver a few days ago, and posted a link to the patch in a follow-up, so maybe it was missed? Anyway, the patch is on the web at: http://multivac.fatburen.org/SDL-wscons.patch Comments? Staffan --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401190
This commit is contained in:
parent
b744b23500
commit
db57e4884f
12 changed files with 1200 additions and 1 deletions
107
README.wscons
Normal file
107
README.wscons
Normal file
|
@ -0,0 +1,107 @@
|
|||
==============================================================================
|
||||
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>
|
Loading…
Add table
Add a link
Reference in a new issue