-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSDLMAME.txt
250 lines (172 loc) · 10.9 KB
/
SDLMAME.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#
# SDLMAME 0.134u4
# by Olivier Galibert and R. Belmont
# Additional code by Sven Gothel, couriersud, and Vas Crabb.
#
# For Linux/Unix, Mac OS X (both PPC and Intel), FreeBSD, Win32, and OS/2 systems.
# Portable to anything remotely POSIX-y with SDL 1.2.11 or higher available.
#
# Note: the Win32 target is not intended to compete with baseline MAME - it's
# simply a demonstration that SDLMAME works well with that OS.
#
Changes from 0.134u3
====================
1) Up to date with baseline 0.134u4 (RB)
2) More cleanups to the SDL layer (Couriersud)
For PowerPC Macs and the PS3, you must set "BIGENDIAN=1".
For 64-bit processors and OSes you must set "PTR64=1".
NOTE: The makefile should be fully SMP safe, so use make -j3 for dual-core
and -j5 for quad-core to build MAME at speeds never before achieved.
Known problems:
* On Mac OS X you must use SDL 1.2.13 or later to avoid crash problems.
* Do not use -mt (multithreading) on Mac OS X at this time. This affects only
offloading the final blit - you will still get the full benefit of multiple
processors automatically on the heavier/3D games.
* MAME's core has some big-endian problems still - this causes some games to
not work or work improperly on systems with a PowerPC CPU, including older
Macs and the Playstation 3. In the case of Neo-Geo games, when the real
parent set doesn't work often some clone/bootleg sets will. For instance
kof2003 is broken right now, but the 4 bootleg/clone sets all run fine.
Ironically MAME's PowerPC core is not big-endian safe so PPC-based arcade
games won't emulate properly on systems with a PPC CPU. 3
* Neither scale2x nor -prescale are supported for games with video overlays
(currently Dragon's Lair and the American Laser Games games, none of which
are actually playable yet). Use -video soft to see the alg.c games run as
they do on baseline. (This will of course be fixed if/when video is actually
added).
Recommended benchmark switches: -nosound -video none -nothrottle -str 90 -window
But feel free to customize.
Requirements
============
GCC: 4.0 or later (4.1.2 or later is recommended). Older or newer
versions may expose you to compile problems.
SDL: 1.2.13 or later. You can get away with versions as old as 1.2.10 on
Linux/Unix, but I don't recommend it.
Build instructions
==================
Linux: make sure you have SDL and it's development packages installed via
apt-get, yum, emerge, or whatever your distro of choice uses. If you're
not sure, consult the distro cookbook at:
http://www.bannister.org/forums/ubbthreads.php?ubb=showflat&Number=35138
For native 64-bit x86-64, you should build with PTR64=1.
For Linux/PPC (including the PlayStation 3) you should build with
BIGENDIAN=1.
NOTE: you will now need OpenGL headers and libraries as well. If you're
running either ATI or NVIDIA's binary-only drivers you've definitely got them.
Otherwise you may need to install the "MesaGL" and "MesaGL-devel" packages.
NOTE: if you do not have hardware accelerated OpenGL you should not try to
enable it, it'll just go horribly slow.
--
Mac OS X: you'll need Xcode 2.3 or later (a free download from
developer.apple.com) and SDL 1.2.13. Get SDL from www.libsdl.org, click the
"SDL 1.2" download link in the sidebar, then scroll down to "Mac OS X" under
"Runtime Libraries". Download the "SDL-1.2.13.dmg" disk image and open it.
Click 'Macintosh HD' or whatever your Mac's hard disk is named in the left
pane of a Finder window, then open the Library folder and drag the
SDL.framework folder from the SDL disk image into the 'Frameworks' folder.
Next unzip the SDLMAME source in your home directory.
For Intel Macs, type make TARGETOS=macosx
For PowerPC Macs, type make TARGETOS=macosx BIGENDIAN=1
NOTE: if you experience issues with OpenGL mode make sure your OS X is up to
date first, especially for Tiger (10.4.x) on Intel Macs.
--
Win32: First, download SDL 1.2.13. Go to www.libsdl.org and click "SDL 1.2"
under "Downloads". Scroll down to "Development libraries" and open
"SDL-devel-1.2.11-mingw32.tar.gz". Assuming you have WinZip ora compatible
archiver installed it should open automatically. Decompress it into C:\, where
it will create the "SDL-1.2.11" folder. Open that folder. Drag the "bin" and
"lib" folders into your MinGW installation (note: it must be a mame.net style
install, raw MinGW will not work). Finally, create a new folder "SDL" inside
"include" in your MinGW install (e.g. MinGW\include\SDL) and copy the contents
of SDL-1.2.11\include into that folder.
Now type mingw32-make TARGETOS=win32
Unlike normal MAME, you'll need the SDL.dll from the SDL package in order to
run it, so don't try moving it to another machine without that file
accompanying it.
NOTE: MinGW appears to already come with sufficient OpenGL headers and
libraries to build. If problems occur, make sure your video card drivers are
up to date.
--
Other: SDLMAME should work with very little effort on other SDL targets,
especially Unix and Unix-like ones. Start with the Linux target and
modify as necessary. For non-Intel systems, turn off the X86_*_DRCs.
For big-endian systems, use BIGENDIAN=1. If you get SDLMAME
running on other platforms, let us know.
-------------------------------------
Run-time options:
Most of these are the same as for the Win32 version of MAME and so familiarity with that program will
pay off here. The video options behave somewhat differently, however, so they get special coverage.
Please see docs/windows.txt for the baseline windows options - just ignore the stuff about DirectX :-)
If you're not sure about what Windows options SDLMAME supports, run it with the -showusage switch.
-keymap: set to 1 to use a keymap file. These are used to work around non-US keyboards due to limitations
in SDL. Use in conjunction with -keymap_file.
-keymap_file: specify a keymap file to use. Must have -keymap 1 for this to work. Supplied keymaps in the
keymaps/ directory are:
km-ch.txt - Swiss keyboard on Linux
km-de.txt - German keyboard on Linux
km-fr.txt - French keyboard on Linux
km-fr-OSX.txt - French keyboard on Mac OS X
If you have a non-US keyboard which is not one of those types, please refer to this thread for information on
how to make your own:
http://www.bannister.org/forums/ubbthreads.php?ubb=showflat&Number=32956&page=1&fpart=2
Pay close attention to the posts by "couriersud". We hope to translate this into normal text documentation
at some point as well.
-oslog: Turns on logging and shows it in the console/terminal window you started SDLMAME from. For technical
users / developers only.
-mt / -multithreading: Enables limited support for multiple CPUs. This is not a magic speedup and may cause
instability. Do not use at all on Mac OS X or you *will* crash!
-sdlvideofps: Shows performance data on SDLMAME's video code.
-video: "soft" uses software rendering, which is slower but more compatible. "opengl" uses OpenGL and your
graphics accelerator to speed up many aspects of drawing MAME including compositing artwork, overlays, and
bezels, as well as stretching the image to fit your screen. "opengl16" also uses OpenGL, but with a different
texture format that some graphics cards/chips may prefer. "none" does no drawing and is intended for
CPU benchmarking.
If your video card doesn't support OpenGL you can still get hardware scaling with -yuvmode:
-scalemode: "none" (default) no yuv overlay, current "SOFT" rendering, "yuy2": yuy2 overlay, "yuy2x2": yuy2
overlay using x2 prescaling, "yv12": yv12 overlay, "yv12x2": yv12 overlay using x2 prescaling.
When this is enabled, you'll see a status printout "YUV Acceleration:" - if it's "Hardware" you're getting
hardware scaling and can resize the window with no worries about slowdown.
Within SDLMAME you can switch between the modes using
CTRL-F8: previous yuv mode
CTRL-F9: next yuv mode
-window: Enable window mode rather than fullscreen. This is a fully-featured window mode where the
window resizes as necessary to track what the game does, and you can also resize it in the usual way.
-keepaspect / -ka: Forces the correct aspect ratio. This means when you're resizing the window in windowed
mode the actual game image will resize in discrete steps to maintain the proper shape of the game graphics.
If you turn this off you can resize the window to anything you like and get funny squishing and stretching.
The same applies for full-screen.
-numscreens: For future (SDL 1.3) use. Keep set to "1" unless you like crashing.
-extra_layout / -layout: Specify a layout file to use instead of any built-in ones for this game.
-switchres: Affects full screen mode only. Chooses if SDLMAME can try to change the screen resolution
(color depth is normally left alone) when in full-screen mode. If it's off, you always get your desktop
resolution in full-screen mode (which can be useful for LCDs).
-fullstretch / -fs: Allows stretching in non-integer steps. Video purists should stay far, far away from this
option, while everyone else will be happy to know that it lets you fill the screen properly in full-screen
mode.
-screen0 / -screen: For future (SDL 1.3) use. Keep on "auto" for now.
-aspect0 / -screen_aspect: Select the aspect ratio of your monitor, in colon form (e.g. "4:3" or "16:9").
This affects full-screen mode only, so if you have a widescreen monitor you should set it's proper ratio here.
Autodetect will only work if you use the monitor's native resolution, which can get extremely slow in
"soft" mode. It's normally not a problem when using OpenGL.
-resolution0 / -resolution / -r: Select the resolution to use in full-screen mode. "-switchres" must be
enabled for this to work.
-view0 / -view: Select the named view to use.
OpenGL switches (no effect for -video soft):
-gl_notexturerect (set to 0 if you experience corruption in OpenGL mode. Will reduce performance)
-gl_forcepow2texture (set to 1 if you experience corruption in OpenGL mode. Will reduce performance)
-gl_vbo (set to 1 if you have a newer video card for a performance increase, turn off if corruption occurs)
-gl_pbo (set to 1 if you have a newer video card for a performance increase, turn off if corruption occurs)
-gl_glsl (set to 1 to offload some more work to your video card via pixel shaders - requires OpenGL 2.0)
-gl_glsl_filter (set to 0 for no filter, 1 for bilinear, and 2 for Gaussian blur - requires gl_glsl set to 1)
-gl_glsl_vid_attr (set to 1 to have the video card handle brightness/contrast/gamma - can be a good
performance boost on some games)
Joystick switches (Use mame -v to see which joysticks are recognized)
-joy_idx1 <Joystick name>
....
-joy_idx8 <Joystick name>
Default is auto. With these options you can assign a joystick to a
specific index in mame. Even if the kernel will list the joysticks
in a different order on the next boot, mame will still see the joystick
as e.g. "Joystick 2".
Similar options "-mouse_idx[1-8]" and "-keyboard_idx[1-8]" are supported
for SDL1.3 builds.