Thursday, January 22, 2009

xmame on ubuntu Q&A

xmame on ubuntu Q&A[转载]

这里有一些常被人问起和不常被人问起的关于xmame的问题...

Q:什么是xmame?
A:xmame是MAME在*nix平台下的移植版本。MAME是一个多机种街机模拟器,在1997年由 Nicola Salmoria创建。MAME可以模拟很多机种,甚至包括一些家用机。MAME是原生win32软件,所以在其他平台上需要作一些源代码的改动才可以使用,xmame是MAME在 *nix下面的 port。

Q:xmame支持GNU/Linux吗?
A:xmame不仅支持GNU/Linux,而且还支持其他很多UNIX平台,如FreeBSD,OpenBSD,NetBSD,Solaris,AIX,BeOS,Openstep,QNX等。

Q:xmame遵循什么协议?
A:xmame遵循MAME协议。请参考$xmame-source$/src/unix/doc/mame/license.txt。

Q:如何得到xmame的源代码?
A:最新的代码在http://x.mame.net发布。

Q:在ubuntu下面怎么得到?
A:ubuntu/Dapper 源里面有xmame 0.101
A:ubuntu/Edgy 源里有xmame 0.106

Q:3个选择?
A:xmame-x 在X11协议的基础之上进行工作。ubuntu软件仓库中的xmame默认提供了三种使用硬件拉伸的渲染方式: DGA,Xv,OpenGL。当然它们都需要X的支持才能进行工作。
A:xmame-sdl 基于SDL库开发。SDL为X程序提供跨平台的二维帧缓冲区图形和音频服务。它支持Linux、Win32和其它一些平台,包括FreeBSD和MacOS。SDL所提供的API可以直接访问硬件,而不需要root权限。
A:xmame-svga基于SVGA开发。SVGA的好处在于不需要X的支持。xmame-svga仅工作在GNU/Linux 平台下面,目前尚没有其他平台的移植版本。xmame-svga需要root权限才能工作。ubuntu已经为xmame-svgalib设置了suid位。

Q:xmame的配置文件在哪里?
A:
/etc/xmame/xmamerc
$HOME/.xmame/xmamerc
/etc/xmame/xmame-$Video_Model$rc
$HOME/.xmame/xmame-$VIdeo_Model$rc
Video_Model :x11, SDL, svgalib
所有版本的xmame都会按上面的顺序读取各自的配置文件

Q:GUI?
A:请到这里下载gxmame 0.35b2。ubuntu源里面的gxmame有问题。
A:Remember:gxmame 0.35b2 is still buggy with xmame0.101.

Q:xmamerc结构?
A:xmamerc使用键名<分割符>键值的方式。分割符可以是一个或者多个空格/Tab。

Q:xmamerc示例?
A:
$cat ~/.xmame/xmamerc

输出可能像这样:
### File I/O-related ###
rompath /media/hdb8/Emulation/mame100/roms #rom的位置
samplepath /media/hdb8/Emulation/mame100/samples #sample声音采样的位置
inipath $HOME/.xmame/ini
cfg_directory $HOME/.xmame/cfg
nvram_directory $HOME/.xmame/nvram
memcard_directory $HOME/.xmame/memcard
input_directory $HOME/.xmame/inp
hiscore_directory $HOME/.xmame/hi
state_directory $HOME/.xmame/sta
artwork_directory /media/hdb8/Emulation/mame100/artwork
snapshot_directory /media/hdb8/Emulation/mame100/snap
diff_directory $HOME/.xmame/diff
ctrlr_directory /media/hdb8/Emulation/mame100/ctrlr
cheat_file /home/kliz/.xmame/cheat.dat
hiscore_file /media/hdb8/Emulation/mame100/hiscore.dat
# record <NULL> (not set)
# playback <NULL> (not set)
log 0
### MAME Related ###
defaultgame dino #默认游戏,如果不指定游戏名称会使用这个
language english
fuzzycmp 1 #模糊游戏名称匹配,会自动载入名字最相近的游戏
cheat 1 #开启作弊
skip_gameinfo 1 #跳过游戏信息
bios default #
# state <NULL> (not set)
autosave 0 #自动存档



$cat ~/.xmame/xmame-x11rc

输出结果也许会像这样:

### xmame running parameters ###

### Video Related ###
video-mode 0 #以 normal 方式渲染 #1 XVideo 扩展模式渲染 #2 OpenGL 模式渲染
fullscreen 0 #全屏方式启动
arbheight 0 #强制画面以此数值高度显示,宽度不变
widthscale 1 #画面横向缩放比例
heightscale 1 #画面纵向缩放比例
effect 0 #画面应用特效,通常我使用7
#0 = none (default)
#1 = scale2x (smooth scaling effect)
#2 = lq2x (low quality filter)
#3 = hq2x (high quality filter)
#4 = 6tap2x (6-tap filter with h-scanlines)
#5 = scan2 (light scanlines)
#6 = rgbscan (rgb scanlines)
#7 = scan3 (deluxe scanlines)
#8 = fakescan (black scanlines)
autodouble 1 #如果游戏本身是像素点1:2显示的话,置为1则会自动缩放
frameskipper 1 #选择自动跳帧方式,0为经典DOS方式,1为William A. Barath 改进的方式
throttle 1 #限制最高fps=60
frames_to_run 0 #执行游戏的总帧数,到此数值则自动退出
sleepidle 1 #当xmame处于空闲状态时,进程进入sleep
autoframeskip 1 #自动跳帧调整
maxautoframeskip 8 #最大跳帧级别
frameskip 0 #跳帧级别,如果autoframskip设为0,则由这里的数值决定
brightness 1.000000 #亮度百分比,可以在游戏OSD里面调整
pause_brightness 0.650000 #暂停时的亮度百分比
gamma 1.000000 #gamma校正值
norotate 0 #总是不旋转画面,
ror 0 #顺时针旋转画面
rol 0 #逆时针旋转画面
autoror 0 #自动为纵版游戏顺时针旋转画面
autorol 0 #自动为纵版游戏逆时针旋转画面
flipx 0 #总是把画面窗口放在左上角的位置
flipy 0 #总是把画面窗口放在右下角的位置

### Use additional game artwork ###
artwork 1 #使用artwork
use_backdrops 1 #背景图
use_overlays 1 #前景图
use_bezels 1 #外框图
artwork_crop 0 #剪裁artwork
artwork_scale 1 #缩放artwork

### Vector Games Related ###矢量游戏相关
beam 1.000000 #光束宽度
flicker 0.000000 #闪烁
intensity 1.500000 #光源强度
antialias 1 #抗锯齿
translucency 1 #半透明
hardware-vectors 1 #硬件矢量
# mngwrite <NULL> (not set)

### Aspect ratio handling ### #
keepaspect 1 #保持画面缩放比例
perfectaspect 0 #自动缩放
displayaspectratio 1.333333 #保持4:3

### X11 Related ###
geometry 1
xsync 1
root_window_id 0
run-in-root-window 0

### X11-window Related ###
mitshm 1 #使用MIT X 扩展协议共享内存

### DGA Related ###
vsync-pagelimit 2


### Video Mode Selection Related ###

### XV Related ###
force-yuv 0 #指定xmame使用预定yuv模式,如果xv渲染模式颜色不正常请将此值置为 1
perfect-yuv 1 #让xmame自动探测合适的yuv模式

### OpenGL Related ###
gldblbuffer 1
gltexture_size 0
glbilinear 1
glbeam 1.000000
glantialias 0
glantialiasvec 0
cabview 0
cabinet glmamejau

### X11-input related ###
grabmouse 0
grabkeyboard 0
alwaysusemouse 0
cursor 1
winkeys 0




### Input device options ###
joytype 0
#0 No joystick
#1 Standard joystick
#2 FM Towns pad
#3 NetBSD/FreeBSD USB joystick
#4 PS2-Linux native pad
#5 SDL joystick

analogstick 0
ugcicoin 0
steadykey 0
a2d_deadzone 0.300000
# ctrlr <NULL> (not set)
digital none
usbpspad 0
rapidfire 0

### Sound Related ###
samples 1 #是否使用声音采样支持
samplefreq 44100 #采样率<Khz>
bufsize 3.000000 #缓冲区大小
volume -3 #这个是声音大小<db>,也可以在游戏的OSD菜单里面调整
#audiodevice <NULL> (not set)
#mixerdevice <NULL> (not set)

### Digital sound related ###
# dsp-plugin <NULL> (not set)
timer 0

### Sound mixer related ###
# sound-mixer-plugin <NULL> (not set)


不同的xmame视频和音频部分的参数是不一样的,因此有理由相信,把这两部分放在各自的配置文件中是有好处的。

Q:快捷键?
A:通常的游戏快捷键是和MAME相同的。

Xmame/xmess uses the same key bindings as the Windows
version of MAME: The following keys work in all emulators:

` or ~ Enter On screen display to change volume, brightness etc.#OSD菜单
Tab Enter configuration menu. Press Tab or Esc to get back to the emulation.#显示/隐藏游戏主菜单
P Pause #暂停
F3 Reset #重置游戏
F4 Show the game graphics. Use cursor keys to change set/color, F4 or Esc to return to the emulation.#显示调色板
F8 Reduce frame skip #减少跳帧
F9 Increase frameskip #增加调帧
F10 Toggle speed throttling #速度限制60fps
F10 + shift Toggle idle sleeping
F11 Toggle speed display #显示当前帧数
F11 + shift Toggle profiler display
F12 Save a screen snapshot #保存游戏快照
ESC Exit emulator #我不知道这个是干什么用的

Xmame's X11 display target allows you to switch between different modes and to toggle full-screen display using the following key combos:#编译时没有编译相应的渲染模式,快捷键则无效

Key combo: Switches to:

left-alt + insert Normal X11

left-alt + home Xv

left-alt + page up OpenGL

left-alt + delete Glide

left-alt + end XIL

left-alt + page down Toggle between windowed and full-screen modes#在全屏和窗口之间切换

You can also change certain settings in the X11 target:

left-ctrl + delete Toggle mouse grabbing #置鼠标焦点于当前窗口
left-ctrl + end Toggle keyboard grabbing #
left-ctrl + left-alt + insert Toggle bilinear filtering #
(OpenGL and Glide only)
left-ctrl + left-alt + home Toggle cabinet view
(OpenGL only)
left-ctrl + left-alt + page up Increase vector beam size
(OpenGL only)
left-ctrl + left-alt + page down Decrease vector beam size
(OpenGL only)
left-ctrl + left-alt + end Toggle antialiasing
(OpenGL only)


Xmame has 2 different auto frame skipping algorithms.
These can be selected with the -frameskipper option and
with key combos:

Key combo: Gives you the:
left-ctrl + insert Standard DOS frame skipper #DOS跳帧模式
left-ctrl + home William Barath's frame skipper #WB增强跳帧模式

Xmame's display scaling can be controlled on the fly with the following key combos:

Key combo: Result:
left-shift + insert Increase width scale #增加宽度比例
left-shift + delete Decrease width scale #减小宽度比例
left-shift + home Increase height scale#增加高度比例
left-shift + end Decrease height scale#减小高度比例
left-shift + page up Increase scale #增大窗口大小比例
left-shift + page down Decrease scale #减小窗口大小比例

Video effects can also be altered on the fly:

left-ctrl + page up Select next display effect #上一个画面特效(扫描线)
left-ctrl + page down Select previous display effect #下一个画面特效(扫描线)

Under SDL, xmame can switch to and from different modes during runtime:

Key combo: Result:
left-alt + enter Toggles between windowed and full-screen modes.
#left-alt + page up also works


Q:为什么退出xmame.svgalib时显示器总是提示超出刷新范围?
A:sudo vim /etc/vga/libvga.config
# uncomment line401:VesaText and line404:VesaSave 14

Q:xmame-svga使用什么作为显卡驱动
A:VESA

Q:如何查看显卡支持硬件加速与否?
A:glxinfo | grep 'direct rendering'

Q:为什么xmame-x11切换到opengl模式速度很慢?
A:请确认显卡驱动打开了硬件加速
A:请确认xorg.conf里面,module段里面有load dri 和 load glx

Q:为什么xmame-x11切换到opengl模式显示器上总有东西在闪烁?
A:这是确认的xmame的已知bug
A:请用其他模式
A:如果驱动是xserver-xorg-driver-ati,请安装xorg-driver-fglrx

Q:xorg-driver-fglrx好处大于坏处?
A:相反。如果并非必要,请不要用xorg-driver-fglrx。很有可能第一次配置后不工作。
A:xorg-driver-fglrx。xmame-x11在load libGL.so 和 libGLU.so时会自动全屏,不管xmame-x11要做什么。
A:Be careful

Q:什么人需要自己编译xmame?
A:需要多个版本同时工作的人。通过apt-get只能安装一种,它们之间的依赖关系是冲突的。
A:很不幸,通过apt-get安装的xmame不工作的情况也是有的。
A:纯粹个人意愿。

Q:xmame源码不使用auto工具?
A:是,xmame只使用了Make来管理。


来源: xmame on ubuntu Q&A - By kliz

No comments: