LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1225|回复: 13

xmame声音问题

[复制链接]
发表于 2007-6-27 23:35:37 | 显示全部楼层 |阅读模式
我用gentoo emerge的xmame有声音,但是自己下载的源码编译的就没有声音。运行了/usr/local/alsa-driver-1.0.14rc2/snddevices后,/dev/下面多了/dev/dsp,/dev/mixler等几个设备后,也有声音了,但是不能调节大小。后者好像是oss设备。请高手指点:)
发表于 2007-6-28 01:46:38 | 显示全部楼层
http://www.gentoo.org/doc/en/alsa-guide.xml
你也要看这个了
最起码一点,/dev/dsp应该是开机自动创建的
不需要执行任何脚本
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-28 07:02:58 | 显示全部楼层
/usr/local/alsa-driver-1.0.14rc2/INSTALL有这么一句话

6) Run the './snddevices' script to create new sound devices in /dev directory.
   Skip this step, if you have already /dev/snd/* files, or if you're
   using a DEVFS or udev.

/dev/dsp是不是老内核的遗留设备文件呀?我没有用emerge装alsa,因为一开始不知道。并且自己源码装alsa也是屡试不爽,呵呵。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-28 07:08:04 | 显示全部楼层
还有一点不明白的是emerge下载的xmame源码和我自己下载的xmame源码是一样的,前者不需要运行snddevices就有声音,我主要是想改一下xmame的映射键,成果如下:

/usr/local/xmame-0.106/input.h中定义了键盘按键
enum
{
    /* digital keyboard codes */
    KEYCODE_A,
    KEYCODE_B,
    KEYCODE_C,
    KEYCODE_D,
    KEYCODE_E,
    KEYCODE_F,
    KEYCODE_G,
    KEYCODE_H,
    KEYCODE_I,
    KEYCODE_J,
    KEYCODE_K,
    KEYCODE_L,
    KEYCODE_M,
    KEYCODE_N,
    KEYCODE_O,
    KEYCODE_P,
    KEYCODE_Q,
    KEYCODE_R,
    KEYCODE_S,
    KEYCODE_T,
    KEYCODE_U,
    KEYCODE_V,
    KEYCODE_W,
    KEYCODE_X,
    KEYCODE_Y,
    KEYCODE_Z,
    KEYCODE_0,
    KEYCODE_1,
    KEYCODE_2,
    KEYCODE_3,
    KEYCODE_4,
    KEYCODE_5,
    KEYCODE_6,
    KEYCODE_7,
    KEYCODE_8,
    KEYCODE_9,
    KEYCODE_F1,
    KEYCODE_F2,
    KEYCODE_F3,
    KEYCODE_F4,
    KEYCODE_F5,
    KEYCODE_F6,
    KEYCODE_F7,
    KEYCODE_F8,
    KEYCODE_F9,
    KEYCODE_F10,
    KEYCODE_F11,
    KEYCODE_F12,
    KEYCODE_F13,
    KEYCODE_F14,
    KEYCODE_F15,
    KEYCODE_ESC,
    KEYCODE_TILDE,
    KEYCODE_MINUS,
    KEYCODE_EQUALS,
    KEYCODE_BACKSPACE,
    KEYCODE_TAB,
    KEYCODE_OPENBRACE,
    KEYCODE_CLOSEBRACE,
    KEYCODE_ENTER,
    KEYCODE_COLON,
    KEYCODE_QUOTE,
    KEYCODE_BACKSLASH,
    KEYCODE_BACKSLASH2,
    KEYCODE_COMMA,
    KEYCODE_STOP,
    KEYCODE_SLASH,
    KEYCODE_SPACE,
    KEYCODE_INSERT,
    KEYCODE_DEL,
    KEYCODE_HOME,
    KEYCODE_END,
    KEYCODE_PGUP,
    KEYCODE_PGDN,
    KEYCODE_LEFT,
    KEYCODE_RIGHT,
    KEYCODE_UP,
    KEYCODE_DOWN,
    KEYCODE_0_PAD,
    KEYCODE_1_PAD,
    KEYCODE_2_PAD,
    KEYCODE_3_PAD,
    KEYCODE_4_PAD,
    KEYCODE_5_PAD,
    KEYCODE_6_PAD,
    KEYCODE_7_PAD,
    KEYCODE_8_PAD,
    KEYCODE_9_PAD,
    KEYCODE_SLASH_PAD,
    KEYCODE_ASTERISK,
    KEYCODE_MINUS_PAD,
    KEYCODE_PLUS_PAD,
    KEYCODE_DEL_PAD,
    KEYCODE_ENTER_PAD,
    KEYCODE_PRTSCR,
    KEYCODE_PAUSE,
    KEYCODE_LSHIFT,
    KEYCODE_RSHIFT,
    KEYCODE_LCONTROL,
    KEYCODE_RCONTROL,
    KEYCODE_LALT,
    KEYCODE_RALT,
    KEYCODE_SCRLOCK,
    KEYCODE_NUMLOCK,
    KEYCODE_CAPSLOCK,
    KEYCODE_LWIN,
    KEYCODE_RWIN,
    KEYCODE_MENU,

    /* digital joystick codes */
    ...
};

修改文件/usr/local/xmame-0.106/inptport.c,下面是已经修改过的。将小键盘的方向键映射该为W,S,A,D, 等等
static const input_port_default_entry default_ports_builtin[] =
{
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    JOYSTICK_UP,        "1 Up",                SEQ_DEF_3(KEYCODE_W, CODE_OR, JOYCODE_1_UP) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    JOYSTICK_DOWN,      "1 Down",                SEQ_DEF_3(KEYCODE_S, CODE_OR, JOYCODE_1_DOWN) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    JOYSTICK_LEFT,      "1 Left",                SEQ_DEF_3(KEYCODE_A, CODE_OR, JOYCODE_1_LEFT) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    JOYSTICK_RIGHT,     "1 Right",               SEQ_DEF_3(KEYCODE_D, CODE_OR, JOYCODE_1_RIGHT) )
    ...
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    BUTTON1,            "1 Button 1",            SEQ_DEF_5(KEYCODE_M, CODE_OR, JOYCODE_1_BUTTON1, CODE_OR, MOUSECODE_1_BUTTON1) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    BUTTON2,            "1 Button 2",            SEQ_DEF_5(KEYCODE_COMMA, CODE_OR, JOYCODE_1_BUTTON2, CODE_OR, MOUSECODE_1_BUTTON3) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    BUTTON3,            "1 Button 3",            SEQ_DEF_5(KEYCODE_STOP, CODE_OR, JOYCODE_1_BUTTON3, CODE_OR, MOUSECODE_1_BUTTON2) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    BUTTON4,            "1 Button 4",            SEQ_DEF_3(KEYCODE_K, CODE_OR, JOYCODE_1_BUTTON4) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    BUTTON5,            "1 Button 5",            SEQ_DEF_3(KEYCODE_L, CODE_OR, JOYCODE_1_BUTTON5) )
    INPUT_PORT_DIGITAL_DEF( 1, IPG_PLAYER1,    BUTTON6,            "1 Button 6",            SEQ_DEF_3(KEYCODE_COLON, CODE_OR, JOYCODE_1_BUTTON6) )
    ...
}
回复 支持 反对

使用道具 举报

发表于 2007-6-28 07:08:13 | 显示全部楼层
Skip this step, if you have already /dev/snd/* files, or if you're
using a DEVFS or udev.
everybody has udev today.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-28 07:14:12 | 显示全部楼层
版主是不是有点矛盾了,呵呵,一开始说/dev/dsp是应该一开机就有的,但是INSTALL中说,有了udev就不需要运行snddevices,但是/dev/dsp又是由snddevices得到的,那只有一种可能就是不运行snddevices就能得到/dev/dsp设备文件了。
回复 支持 反对

使用道具 举报

发表于 2007-6-28 07:19:30 | 显示全部楼层
Post by mishuang
那只有一种可能就是不运行snddevices就能得到/dev/dsp设备文件了。

that is exactly what udev is supposed to do
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-28 07:25:47 | 显示全部楼层
The following is the output of getoo-emerged xmame:

info: set to 16bit linear stereo 44100Hz
info: sysdep_dsp: using alsa plugin
error: /dev/mixer: No such file or directory
info: sysdep_mixer: using alsa plugin
SDL: Using a mode with a resolution of: 768x448x32
Initialized no effect: bitmap depth = 16, color format = RGB 888 (32bpp)
Average FPS: 48.791292 (89 frames)

The following is the output of xmame I installed by hand

error: /dev/dsp: No such file or directory
MIT-SHM Extension Available. trying to use... Success.
Using Shared Memory Features to speed up
Initialized no effect: bitmap depth = 16, color format = RGB 888 (32bpp)
Average FPS: 46.845642 (175 frames)

# df
文件系统              容量  已用 可用 已用% 挂载点
/dev/hda6              16G   15G  467M  97% /
udev                  570M  232K  569M   1% /dev
/dev/hda3              99M   12M   83M  13% /boot
none                  570M     0  570M   0% /dev/shm
/dev/hda2              30G   24G  5.7G  81% /mnt/d
回复 支持 反对

使用道具 举报

发表于 2007-6-28 09:43:03 | 显示全部楼层
paste your kernel .config
回复 支持 反对

使用道具 举报

发表于 2007-6-28 10:13:27 | 显示全部楼层
Post by mishuang
那只有一种可能就是不运行snddevices就能得到/dev/dsp设备文件了。

rc-config start alsasound
你看看这个服务是干啥用的。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表