Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
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
- Loading branch information
Showing
with
1,200 additions
and 1 deletion.
- +107 −0 README.wscons
- +33 −0 configure.in
- +1 −1 src/video/Makefile.am
- +3 −0 src/video/SDL_sysvideo.h
- +3 −0 src/video/SDL_video.c
- +14 −0 src/video/wscons/Makefile.am
- +236 −0 src/video/wscons/SDL_wsconsevents.c
- +40 −0 src/video/wscons/SDL_wsconsevents_c.h
- +40 −0 src/video/wscons/SDL_wsconsmouse.c
- +30 −0 src/video/wscons/SDL_wsconsmouse_c.h
- +614 −0 src/video/wscons/SDL_wsconsvideo.c
- +79 −0 src/video/wscons/SDL_wsconsvideo.h
@@ -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> |
@@ -0,0 +1,14 @@ | ||
## Makefile.am for SDL using the wscons video driver | ||
|
||
noinst_LTLIBRARIES = libvideo_wscons.la | ||
libvideo_wscons_la_SOURCES = $(WSCONS_SRCS) | ||
|
||
# The SDL wscons video driver sources | ||
WSCONS_SRCS = \ | ||
SDL_wsconsvideo.h \ | ||
SDL_wsconsevents.c \ | ||
SDL_wsconsevents_c.h \ | ||
SDL_wsconsmouse.c \ | ||
SDL_wsconsmouse_c.h \ | ||
SDL_wsconsvideo.c | ||
|
Oops, something went wrong.