Board logo

标题: [硬件改造] 填坑不易!naomi的自制IO终于快搞完了。 [打印本页]

作者: crazyjojo    时间: 2018-7-29 01:23     标题: 填坑不易!naomi的自制IO终于快搞完了。

这几天终于快要填完一个坑。找不到以前的帖子了,新开个。

Naomi的IO板,接线麻烦又大坨,每次想玩的时候都要搞半天,于是发愿做个mini版本的无线IO板。不过真开始搞发现这坑挺深,后来就荒了。

一直到发现有老外根据JVS协议自制了块io板,觉得踩在别人肩膀上可以省不少力气,又开始填坑。

然并卵,他的代码很初步,只是实现了通讯功能,跟我想要的状态有很大差距。大致包括这些方面:
1、485通讯相关的外围电路比较复杂。
2、对游戏的兼容性很差,几乎只能玩几个世嘉体育类游戏。大部分游戏都报错。
3、与输入设备用并行通讯,占端口多,而且只有配合自己diy的摇杆使用。
4、不支持所有的模拟量输入,所以方向盘和射击类都不能玩。
5、最后也是最重要的,用的芯片太贵了。单按照最初的配置一套就得要三十刀成本二百块。

我的理想目标是做套小板子(不超过4x10cm),可以塞进dimm的电池盒里,而且要比较便宜。输入设备使用当下成熟的,如ps3,ps4,xbox30,xboxone等,手感和功能都有所保证。其中ps3是最优选择,因为蓝牙通讯协议开放。

后面是我的工作。
1、首先按照老外的配置搭好了,测试ok。这套东西也很小,如果愿意diy摇杆把芯片塞进去的话,到这里就可以结束了。
2、然后解决最重要的问题,把代码移植到低价芯片上。同时也把485模块和外围电路做了简化和改造,使得485半双工通讯的缺陷不用再由主控芯片去弥补,对应的降低了移植难度。但是具体用哪个小芯片一会儿一个想法,总共试了五六种(stm32,stm8等)最后都可以实现跟原版一样的效果。
3、接下来解决连接主流手柄的问题,这个东西现成的解决方案就只有uno+usb马甲,但是尺寸超出了我的规划,虽然也不是很大。。。再转向自建蓝牙芯片与ps3手柄通讯,只要把usb马甲的库代码抠出来再改改就好了。实际搞起来发现便宜的蓝牙芯片都不支持hid,比如常用的hc05(我开始太自信了买了一堆),支持hid的又贵不少,有种方式是强刷hc05的固件,然后再以hid方式通讯,不过测试了两次没成功,还报废掉几个元件,这个方向就暂停了。


4、退一步,用不了现代高级手柄,用老一点的经典手柄也是挺好。Md和ss的通讯都非常简单,对主控的端口也没要求,之前已经搞过了。于是拿来跟jvs这边杂交了一下,测试通过。
但是md和ss没有摇杆,还是不能玩模拟输入的游戏,于是走到ps2,按键摇杆齐全,是个好选择,Ps2的通讯协议也是现成的,就决定以ps2手柄为输入设备搞通。不过苦逼的是我做的接线总是不稳定,时断时续,测试了几天经常搞不清是程序的问题还是接线的问题,大部分时间都在检查接线,最后烦不胜烦,也放弃了。

5、所以回到之前的方案,对尺寸问题做了妥协,既然不能塞进电池盒了,就另外设计个好看点的盒子放在dimm旁边。使用uno+usb马甲发现,虽然库文件可以支持xbox等手柄,不过spi和uart都被占用,无法直接和485通讯了,只有用第一步的小主控和uno通信,而且能选择的通信方式只剩下dwi,并行和软串行,后两种放弃,dwi测试通过。
到这里为止,功能上是实现了使用有线360或有线无线ps3手柄来玩naomi,不过io是由好几个模块组成的,而且因为元件增多,又得给他们加上电源模块管理。

6、再下一步,深入到库文件中,修改了usb部分的通信,让出了uart,这样再把这部分与之前的小主控的代码杂交,就可以实现所有功能了。体积,功耗,复杂程度都下来一半。后面测试游戏也轻松多了。
7、在这样的硬件上测试了几十个按键类游戏,提高兼容性。
8、加进了模拟量的输入,赛车游戏,用的xbox的左摇杆做方向盘,两个扳机键做        油门和刹车,测试了有反应,但手感不和谐。当然每个游戏的独立设置里面对此也有修正,我需要找出一个平均化的范围和速率作为IO版的原始值。FPS游戏,也是用左摇杆做准星移动,跟前面一样是测试了有反应,但是移动效果不和谐。这个我更难搞,因为压根不打FPS,做多少算多少了。至于其他输入方式稀奇古怪的游戏(体感,音乐,卡牌,赌博等)一律不考虑测试。


剩下要做的。
1、使用uno主控,xbox有线手柄和ps3无线手柄做两种输入设备,继续测试更多游戏,特别是优化针对赛车和fps的反馈,并且提高兼容性。这个步骤最好有更多玩家一起。
2、设计一个naomi风格的小外壳,打印装配。
3、简单的蓝牙芯片连ps3手柄的方案,继续测试。比如八位堂的fc和sfc无线接收器,就都可以实现这个功能,而且成本也不高。搞出来之后,可以将目前测试的最优代码移植进来,就又回到我最初的理想解决方案了。
作者: 成成    时间: 2018-7-29 01:47

posted by wap, platform: 红米Note2
虽然看不懂,不过我精神上支持你
作者: sonic910623    时间: 2018-7-29 03:01

支持!那么几时有得卖或者能否开源?
不过我主要是想攒一个GPIO转JVS规格的RS485板子方案内置在摇杆里自用…不知道老外方案有什么坑需要避开的?
作者: yangjuniori    时间: 2018-7-29 13:18

用USB走485...
作者: crazyjojo    时间: 2018-7-29 22:10

引用:
原帖由 sonic910623 于 2018-7-29 03:01 发表
支持!那么几时有得卖或者能否开源?
不过我主要是想攒一个GPIO转JVS规格的RS485板子方案内置在摇杆里自用…不知道老外方案有什么坑需要避开的?
做完了我传上github,现在感觉就这样了。今天下午继续测试了赛车游戏,方向打的太快,没法正常玩的,估计是没有好的解决方案,毕竟这也不是io板该处理的问题。不考虑赛车和fps的话,一般按键游戏最后还有点东西再测试一下,就可以收摊了。
老外的东西没啥毛病,你去搜openjvs,就是很初步,估计是后面懒得啃日文的协议了。
给你比较一下,按你的要求,现在的东西就满足了。跟fc卡对比下你就知道大概尺寸了。
[attach]1015071[/attach]
这是照着原版的,用的teensy3.x,留15个数字针和6个模拟针,自己diy外设肯定是够用了。就是芯片贵。
[attach]1015070[/attach]
这是移植之后的,空白部分都可以抠掉。简化了485外围后,小芯片都可以带的起来,照片里是nano,留11个数字针和6个模拟针,凑合也够用了,或者用其他针脚比较多的芯片,不过体积上去了。
[attach]1015072[/attach]
这是现在的状态,走线压缩一下体积也还能接受。直接用xbox等手柄(摇杆)就可以玩了。方向盘和光枪的问题,我不准备继续用手柄来折腾了,后面做一个wii遥控器的版本,应该可以适用。
[attach]1015073[/attach]

[ 本帖最后由 crazyjojo 于 2018-7-29 22:31 编辑 ]
作者: s2    时间: 2018-7-30 01:43

posted by wap, platform: GOOGLE Nexus 5
对楼主这种勇于花时间经理研究复古主机的,必须激骚!
作者: s2    时间: 2018-7-30 01:43

posted by wap, platform: GOOGLE Nexus 5
对楼主这种勇于花时间经理研究复古主机的,必须激骚!
作者: xiaodd    时间: 2018-7-30 09:33

为什么不用dc手柄呢?有模拟摇杆呀。有一批游戏直接支持dc手柄呀
作者: crazyjojo    时间: 2018-7-30 09:51

引用:
原帖由 xiaodd 于 2018-7-30 09:33 发表
为什么不用dc手柄呢?有模拟摇杆呀。有一批游戏直接支持dc手柄呀
dc手柄可以直接接naomi的扩展端口,不过支持的游戏大约是十分之一。而且这种方式也不能免除io板,比较累赘。

如果改造dc手柄来用的话,坑更深,因为dc的通讯协议有四层,自己去搞,软硬件的问题都一大堆。之前我准备做dc的无线手柄就弃坑了。
这些街机游戏大部分得适合摇杆操作,而且dc手柄,现在来看并不适合玩这些游戏,特别是六键的。
我搞这个东西的初衷是因为,jvs和jamma都得特制一个摇杆,现成的家用机摇杆却用不上。改造成360usb之后,就可以直接用现成的摇杆了。走dc的话,就算做出来也没好的摇杆用。

[ 本帖最后由 crazyjojo 于 2018-7-30 10:04 编辑 ]
作者: dejisae    时间: 2018-7-31 00:14

看不懂,不过感觉好牛逼!
作者: nikkuyu    时间: 2018-8-1 08:43

posted by wap, platform: iPhone
虽然看不懂,但是我支持jojo
作者: 干八爹    时间: 2018-8-1 12:04

Posted by: Xiaomi Mi Note 3
一个stm32 几块钱那个blue pill就行吧

或者试试加上esp32就带蓝牙和wifi了

uno太弱了
作者: crazyjojo    时间: 2018-8-3 10:28

引用:
原帖由 干八爹 于 2018-8-1 12:04 发表
Posted by: Xiaomi Mi Note 3
一个stm32 几块钱那个blue pill就行吧

或者试试加上esp32就带蓝牙和wifi了

uno太弱了
uno是弱,我想把几种手柄的库都集成进去都超容量了。不过除此之外没有便宜而且成熟的手柄方案。如果是自己用其他芯片+usb模块或者带usb模块的小板子来做,价格先不说,自己得做套完整的xbox驱动。
bp很好用,ps2和md这种不限针脚的手柄现在j就是这个来做。




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