1187
|
1 ==============================================================================
|
|
2 Using the Simple DirectMedia Layer with OpenBSD/wscons
|
|
3 ==============================================================================
|
|
4
|
|
5 The wscons SDL driver can be used to run SDL programs on OpenBSD
|
|
6 without running X. So far, the driver only runs on the Sharp Zaurus,
|
|
7 but the driver is written to be easily extended for other machines.
|
|
8 The main missing pieces are blitting routines for anything but 16 bit
|
|
9 displays, and keycode maps for other keyboards. Also, there is no
|
|
10 support for hardware palettes.
|
|
11
|
|
12 There is currently no mouse support.
|
|
13
|
|
14 To compile SDL with support for wscons, use the
|
|
15 "--enable-video-wscons" option when running configure. I used the
|
|
16 following command line:
|
|
17
|
|
18 ./configure --disable-oss --disable-ltdl --enable-pthread-sem \
|
|
19 --disable-esd --disable-arts --disable-video-aalib \
|
|
20 --enable-openbsdaudio --enable-video-wscons \
|
|
21 --prefix=/usr/local --sysconfdir=/etc
|
|
22
|
|
23
|
|
24 Setting the console device to use
|
|
25 =================================
|
|
26
|
|
27 When starting an SDL program on a wscons console, the driver uses the
|
|
28 current virtual terminal (usually /dev/ttyC0). To force the driver to
|
|
29 use a specific terminal device, set the environment variable
|
|
30 SDL_WSCONSDEV:
|
|
31
|
|
32 bash$ SDL_WSCONSDEV=/dev/ttyC1 ./some-sdl-program
|
|
33
|
|
34 This is especially useful when starting an SDL program from a remote
|
|
35 login prompt (which is great for development). If you do this, and
|
|
36 want to use keyboard input, you should avoid having some other program
|
|
37 reading from the used virtual console (i.e., do not have a getty
|
|
38 running).
|
|
39
|
|
40
|
|
41 Rotating the display
|
|
42 ====================
|
|
43
|
|
44 The display can be rotated by the wscons SDL driver. This is useful
|
|
45 for the Sharp Zaurus, since the display hardware is wired so that it
|
|
46 is correctly rotated only when the display is folded into "PDA mode."
|
|
47 When using the Zaurus in "normal," or "keyboard" mode, the hardware
|
|
48 screen is rotated 90 degrees anti-clockwise.
|
|
49
|
|
50 To let the wscons SDL driver rotate the screen, set the environment
|
|
51 variable SDL_VIDEO_WSCONS_ROTATION to "CW", "CCW", or "UD", for
|
|
52 clockwise, counter clockwise, and upside-down rotation respectively.
|
|
53 "CW" makes the screen appear correct on a Sharp Zaurus SL-C3100.
|
|
54
|
|
55 When using rotation in the driver, a "shadow" frame buffer is used to
|
|
56 hold the intermediary display, before blitting it to the actual
|
|
57 hardware frame buffer. This slows down performance a bit.
|
|
58
|
|
59 For completeness, the rotation "NONE" can be specified to use a shadow
|
|
60 frame buffer without actually rotating. Unsetting
|
|
61 SDL_VIDEO_WSCONS_ROTATION, or setting it to '' turns off the shadow
|
|
62 frame buffer for maximum performance.
|
|
63
|
|
64
|
|
65 Running MAME
|
|
66 ============
|
|
67
|
|
68 Since my main motivation for writing the driver was playing MAME on
|
|
69 the Zaurus, I'll give a few hints:
|
|
70
|
|
71 XMame compiles just fine under OpenBSD.
|
|
72
|
|
73 I'm not sure this is strictly necessary, but set
|
|
74
|
|
75 MY_CPU = arm
|
|
76
|
|
77 in makefile.unix, and
|
|
78
|
|
79 CFLAGS.arm = -DLSB_FIRST -DALIGN_INTS -DALIGN_SHORTS
|
|
80
|
|
81 in src/unix/unix.max
|
|
82
|
|
83 to be sure.
|
|
84
|
|
85 The latest XMame (0.101 at this writing) is a very large program.
|
|
86 Either tinker with the make files to compile a version without support
|
|
87 for all drivers, or, get an older version of XMame. My recommendation
|
|
88 would be 0.37b16.
|
|
89
|
|
90 When running MAME, DO NOT SET SDL_VIDEO_WSCONS_ROTATION! Performace
|
|
91 is MUCH better without this, and it is COMPLETELY UNNECESSARY, since
|
|
92 MAME can rotate the picture itself while drawing, and does so MUCH
|
|
93 FASTER.
|
|
94
|
|
95 Use the Xmame command line option "-ror" to rotate the picture to the
|
|
96 right.
|
|
97
|
|
98
|
|
99 Acknowledgments
|
|
100 ===============
|
|
101
|
|
102 I studied the wsfb driver for XFree86/Xorg quite a bit before writing
|
|
103 this, so there ought to be some similarities.
|
|
104
|
|
105
|
|
106 --
|
|
107 Staffan Ulfberg <staffan@ulfberg.se>
|