Board logo

标题: [老游杂谈] 有多少MD游戏只能用六键手柄玩? [打印本页]

作者: zhqing    时间: 2012-4-21 10:19     标题: 有多少MD游戏只能用六键手柄玩?

昨天买了个md三键原装手柄,本以为和六键的差不多大,可到了才发现,原来大的多呀,看来是专门针对老外设计的,用了一会觉得手感还不错,就是太大了。忽然想知道有多少游戏只能用六键而不能用三键玩?我印象中只知道幽游白书-魔强统一战是必须用六键玩的,大家还知道哪些游戏?
作者: psykee    时间: 2012-4-21 11:55

幽白不必须用6键吧,换线,疾退都能用防+其他键做出来
作者: zhqing    时间: 2012-4-21 13:22

幽游白书也不用呀,那还有什么游戏呢?
作者: LILIT    时间: 2012-4-21 13:25

玩幽白从来都是三键的路过
街霸等格斗游戏必须六键

三键柄的十字键和六键的手感有差异
作者: 老五    时间: 2012-4-21 13:31

引用:
原帖由 LILIT 于 2012-4-21 13:25 发表
玩幽白从来都是三键的路过
街霸等格斗游戏必须六键

三键柄的十字键和六键的手感有差异
街霸可以用3键的 不是必须 START就当切换拳脚用了 另外无法暂停 和PCE街霸类似

没有必须6键才能玩的游戏 倒是有只能用3键才能玩的 比如世界末日 6键的话会自动GAME OVER 我记得快乐猪头还问过这个问题 我给他解答了
作者: Soviet所谓爱    时间: 2012-4-21 13:42

引用:
原帖由 老五 于 2012-4-21 13:31 发表



街霸可以用3键的 不是必须 START就当切换拳脚用了 另外无法暂停 和PCE街霸类似

没有必须6键才能玩的游戏 倒是有只能用3键才能玩的 比如世界末日 6键的话会自动GAME OVER 我记得快乐猪头还问过这个问题 我给 ...
这个我也讲过,看来能发现这个问题的人很少,握手:D
作者: 有钱    时间: 2012-4-21 13:47

饿狼传说2,三键怎么玩?
作者: 古兰佐    时间: 2012-4-21 14:05

印象里没得,记得当时就是为了保证只有三键手柄的玩家也能玩所有游戏,所以即便是街霸这类6键游戏也一定是支持3键模式的。
作者: LILIT    时间: 2012-4-21 15:04

233,还有这设定,了解了
作者: 快乐猪头    时间: 2012-4-21 16:16

posted by wap, platform: Opera

恩,后来想找这方面的资料,但一直没有找到完整的。只知道6键实际上是依靠3键模式组合映射实现的,似乎是X键映射为上下左右齐按,其他的不详。这样理论上是没有必须6键的游戏的。也许失落的维京人是个特例?
作者: xuyi831103    时间: 2012-4-21 22:16

md的实况足球2代
作者: asdqwe    时间: 2012-4-21 23:14

请看游戏说明书···
作者: hkt3010    时间: 2012-4-22 01:36

除了世界末日,还貌似记得兽王记用六建的话也游戏不能...
作者: SONIC3D    时间: 2012-4-22 02:30

引用:
原帖由 快乐猪头 于 2012-4-21 16:16 发表
posted by wap, platform: Opera

知道6键实际上是依靠3键模式组合映射实现的,似乎是X键映射为上下左右齐按,其他的不详。
不是这样的。咸蛋疼的可以看下去,咸蛋不疼的建议按浏览器后退键。

3键手柄靠判断开关方式来判断按键是否按下,总共只需要花2周期时间,其中还用到了74HC157这块4路片选器,接线方式如下表
=======================
手柄____74片选器____手柄口针号
----------------
上------------1
下------------2
左----1B-------3
右----2B-------4
A----3A-------6
B----3B-------6
C----4B-------9
S----4A-------9
=======================
手柄口只有123469这6根针用来传输按键状态,那么怎样在6根针里传输8个键的状态?
手柄口上还有3根线未用,其中两根(5和8)分别是Vcc和Gnd作为供电和参考电平,还余下一根7号线,这根线用来告诉74片选器是输出A路上的信号还是B路上的信号。
这样实际在第一个周期中,7号线先被程序置为高电平,然后,程序可以读到(1,2,3,4,6,9)线上的状态分别对应(上,下,左,右,B,C)这些键的按下或弹起。
而下一个周期,7号线被程序置为低电平,这样程序读到(1,2,3,4,6,9)线上的状态分别对应(上,下,空,空,A,S)这些键的按下或弹起。
这样经过2个周期(注意是2个周期,不是2贞),一个手柄口的按键状态就完全获取到了。


但是6键手柄有了很大不同,这种不同一是因为按键多了不少,二是为了保证手柄可以让以前只支持3键手柄的程序兼容,三是为了订出一套可扩展的协议,为了之后的4分插外设作准备,避免再次出现3键升级到6键时的麻烦(3键的2周期无重置读取以及上下键直接作为输出其实是很草率的缺乏扩展远见的设计)。

6分叉的工作状态比3键的要繁琐很多,具体的可以去http://segaretro.org/Control_Pad_(Mega_Drive)
这里只简单说一下。
首先,实现方式上绝对不是简单地作按键组合来产生新的按键信号,这样做会有很多问题,比如如果有游戏写得逻辑有些问题,判断上和右如果按下,就使角色往前跳起并且不再判断其他按键状态,那么靠上下左右拼合出来的X键一旦按下,可能就会导致这个程序认为前跳这个操作被触发了。。。。这个例子听上去好像是程序员责任,但实际上是程序员和硬件设计人员都有责任,只不过2个SB碰到了一起。
这种奇葩硬件设计人员是不会犯了,他们把MD6键手柄设计成了要求程序每贞读取8次来获取所有按键状态。XYZ还有Mode键状态,只有在第7周期才能读到,前6周期完全是为了兼容那些只支持3键的老游戏。同时8周期后,手柄中的状态强制重置。
这样对于99%的3键老游戏来说,他们依然可以获取他们想获取的状态,只有那1%的游戏,因为每贞读取了手柄数据超过8次,导致状态出错,引发Bug,比如前面帖子里各位提到的个别游戏。

另外,6键手柄如果在供电初始时,自己监测到Mode键按下,手柄硬件本身就会工作在兼容模式,不再以8周期重置模式工作,而是2周期重置,这样就和3键手柄完全一样了,这种变化是手柄内芯片自己完成,即手柄硬件级的切换,和主机还有游戏程序无关了。

[ 本帖最后由 SONIC3D 于 2012-4-22 02:33 编辑 ]
作者: 孙大师    时间: 2012-4-22 07:35

3键手柄按住mode按键,然后再插入手柄,就是3键模式,这个问题我在vgdiy早已说过。
作者: zhqing    时间: 2012-4-22 10:25

引用:
原帖由 SONIC3D 于 2012-4-22 02:30 发表

不是这样的。咸蛋疼的可以看下去,咸蛋不疼的建议按浏览器后退键。

3键手柄靠判断开关方式来判断按键是否按下,总共只需要花2周期时间,其中还用到了74HC157这块4路片选器,接线方式如下表
======= ...
那就是说理论上是有只能六键玩而不能三键玩的游戏,而相反则不应该有,只是游戏编写者比较遵守协议才使得只有六键才能玩的游戏很少啦。
作者: 快乐猪头    时间: 2012-4-22 11:19     标题: 回复 14# 的帖子

蛋疼的表示针脚电平之类完全看不懂,也不想看懂。

理解下来貌似是MD的按键输入方式一开始就预留了拓展的余地,或者,说的难听些就是没有物尽其用?
作者: SONIC3D    时间: 2012-4-22 14:16

引用:
原帖由 快乐猪头 于 2012-4-22 11:19 发表
蛋疼的表示针脚电平之类完全看不懂,也不想看懂。

理解下来貌似是MD的按键输入方式一开始就预留了拓展的余地,或者,说的难听些就是没有物尽其用?
高低电平说白了就是那个对应的二进制Bit位的0和1。。

一开始预留得不好,可以说是根本没有想过之后的扩展,使得游戏软件在开发的时候要兼容6键和4分插的扩展协议时就有一些限制(一帧内不允许8次以上读取手柄状态)。
进而导致不得不以多6个周期的串行通信代价来弥补大多数游戏兼容性上的不足(本来多了这XYZM四个键,理论上只要多1-2周期就足够传输了)。

其实把这个过程想象成发摩尔斯电码的过程可能比较好理解
3键手柄的协议就是:
[主机发一个信号,手柄收到这个信号后回馈6个信号给主机,主机收到回馈后再发下一个信号,手柄收到后回馈另外6个信号给主机,通信完毕]
手柄2次回馈的6个信号就分别代表了(上、下、无意义、无意义、A键、Start键)(上、下、左、右、B键、C键)的按下或弹起状态。

这个协议缺点有2个
1、浪费了2个传输机会给(上、下)键,在上面加粗的部分可以看到,上、下方向键的状态被重复传了2次,占每次传输的1/3数据量,天大的浪费,直接导致之后6键手柄为了兼容该协议不得不每周期也跟着浪费。
2、没有制定一个协议结束周期,或者没有在软件开发包中制定每帧读取手柄状态的次数。使得之后6键手柄和4分插协议不得以扩展2倍以上周期来作为协议结束以兼容以前的软件。但遇上奇葩游戏程序员(比如世界末日的那位),还是会死得不明不白。。。

其实MD手柄口是双向数据口,完全可以做成要游戏程序在获取手柄状态前,传输一个期望获得的手柄按键数据结构的版本号给手柄,如果手柄不支持,返回一个错误码,然后游戏尝试发一个更低的版本号给手柄,如果手柄支持了返回一个正确的状态码,然后游戏程序就以这个手柄支持的最高版本按键数据结构来和手柄进行进一步通信。而手柄端新硬件要实现老硬件所有的信号模式。这样一个软硬件组合设计,即使以后有60键手柄,老游戏都不会遇到不兼容,因为游戏发给了手柄的是一个以前的按键数据结构版本号,手柄自然会工作在老手柄应该工作的模式下。完全不需要用户作什么按住Mode键开机或者插手柄这样的蠢事来解决兼容性。

可惜Sega没有这么干,而且绝对不是因为成本问题,而是因为初始的按键协议设计就已经断送了今后这样修改的可能。。。
作者: Soviet所谓爱    时间: 2012-4-22 14:34

引用:
原帖由 SONIC3D 于 2012-4-22 14:16 发表



高低电平说白了就是那个对应的二进制Bit位的0和1。。

一开始预留得不好,可以说是根本没有想过之后的扩展,使得游戏软件在开发的时候要兼容6键和4分插的扩展协议时就有一些限制(一帧内不允许8次以上读取手柄 ...
其实接MDCD的那个扩展端子,预先也不是想接MDCD得。那个端子最早是预设接官方磁碟机的,后来磁碟机、手写板、键盘三大早期周边一同夭折了。后来这个端子用来扩展MDCD,很好。

不过,这三大周边最终也是存在了,山寨的子子宝、拦截者磁碟机继承了夭折的官方磁碟;手写板在SEGA PICO机上得到了发展和延续;而键盘则在TERADRIVE上出现了...可以说世嘉的东西永远不会死

[ 本帖最后由 Soviet所谓爱 于 2012-8-13 10:59 编辑 ]
作者: bentiancai    时间: 2012-4-24 01:49

街霸,真人快打,实况足球
这几个游戏最好用小手柄玩
作者: 妫掓纭お閮    时间: 2012-4-25 12:34

街霸真人快打还得小饼啊




欢迎光临 TGFC Lifestyle (http://club.tgfcer.com/) Powered by Discuz! 6.0.0