LinuxSir.cn,穿越时空的Linuxsir!

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

xmame联网指南

[复制链接]
发表于 2003-11-22 00:42:03 | 显示全部楼层 |阅读模式
前阵子看到兄弟的一篇贴子,贴图里有个游戏的画面,很是喜欢。后来知道是xmame模拟的,便迫不及待的当下来玩,以寻找童年的记忆。
然则独乐乐不如众乐乐,一个人玩不多久便腻了,便想到联网玩。看了看xmame的说明,倒还真的支持。由于xmame的安装配置论坛已经有贴讲过了
(http://www.linuxsir.cn/postnuke/ ... order=0&thold=0)
,也就不再多说,只把我玩联网的经验拿出来给大家做个参考,希望能有帮助。

1. 要使xmame支持network,必须要重新编译。说到编译,新手都有点怕怕,其实简单之极,这里假设xmame的路径是xmame-0.77.1:

I) 编辑makefile
$cd xmame-0.77.1
$cp makefile.unix Makefile
$vi Makefile
找到XMAME_NET,把'#'号去掉

II) 编辑xmame-0.77.1/src/unix/network.c
xmame用的联网协议和mame是不一样的,所以对应的文件不是src/network.c,而是src/unix/network.c。我们需要对这个文件做一个小小的改动。

#define PROTOCOL_DEBUG 2
改成
#define PROTOCOL_DEBUG 0

PS: 如果不加修改,联网的时候会有debug信息出来,严重影响联机的速度。

III) 到xmame-0.77.1目录下编译
$make && make install

2. 现在你就可以用xmame来联网了。假设两个人联机,在服务器端运行

$xmame.x11 -master 2 ./rom.zip (rom.zip是你的rom的名字)

在客户端则运行:

$xmame.x11 -slave 服务器IP ./rom.zip

然后一串load信息后就可以玩了。

PS: 我发现如果多于两台机器联网的时候会出现问题,现在正在读代码希望解决,如果有兄弟已经解决的话,请不吝赐教!
发表于 2003-11-22 02:04:44 | 显示全部楼层
fog_proxy兄,辛苦了。模拟器好玩啊~

好文。。加精~。 在学习LINUX同时放松一下也是不错的说。。呵
发表于 2003-11-22 02:05:54 | 显示全部楼层
对了,不介意我把它移到软件版吧?等你的回复。同意话我就移。
 楼主| 发表于 2003-11-22 02:19:33 | 显示全部楼层
当然没意见 :)
写出来就是方便大家的,搬到哪里都无所谓拉。
发表于 2003-11-22 02:22:12 | 显示全部楼层
OK~ 放到软件版比较适合。谢谢~
发表于 2003-11-22 02:28:53 | 显示全部楼层
建议fog_proxy兄装一个GXMAME,这样设置或玩XMAME就方便多了。。
 楼主| 发表于 2003-11-22 03:26:11 | 显示全部楼层
gxmame装过了,不过主要是联网玩,所以用的不多
 楼主| 发表于 2003-11-22 03:44:42 | 显示全部楼层
顺便提一下,gxmame 0.33有一个bug,就是在load rom的时候会有hotrod报错,需要打一个补丁:

http://www.misel.com/gxmame/

如果有兄弟连不上去,这里是补丁的说明及下载:

This patch will fix the xmame 0.74.1 errors regarding Hotrod and Hotrod SE.

You can download the patch file itself and apply with diff, or just replace
your src/options.c with the one provided.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2003-11-23 20:40:06 | 显示全部楼层
今天抓了一天,抓出xmame的一个bug:

文件:path-to-xmame/src/unix/network.c
函数:_parse_hostport
修正:

1)
        _master_info.addr.sin_port =
                    htons((unsigned short)atoi(port_str))
改成
        addr->sin_port =
                    htons((unsigned short)atoi(port_str))

2)
    _master_info.addr.sin_port =
            htons((unsigned short)atoi(DEFAULT_BIND_PORT));
改成
    addr->sin_port =
            htons((unsigned short)atoi(DEFAULT_BIND_PORT));

编译后重新运行,就可以支持多client了。

PS: 似乎仍然不很稳定,有新发现将update给大家。另外,如果有人也在玩,请把测试结果告知。
发表于 2003-11-29 21:08:53 | 显示全部楼层
强,。还可以抓BUG。修改源码~~顶一个表示支持,。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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