开源掌机吧 关注:52,710贴子:743,805

【技术贴】发个帖子介绍一下周哥系统的逻辑

只看楼主收藏回复

格斗机镇楼


IP属地:河北1楼2024-04-22 18:48回复
    格斗机本人非常喜欢,尤其喜欢圆盘方向键,格斗游戏搓招非常好用
    但是有个非常蛋疼的问题,就是格斗机的快捷键设置非常蛋疼,需要按F键触发,用起来非常不方便而且使用retroarch修改快捷键以后,没办法保存。保存出错。所以一旦重启以后,再想使用快捷键,就需要重新设置。
    这个问题问了下客服,客服个半吊子也说解决不了,所以我就干脆自己折腾了。
    本帖用来记录一下周哥系统的逻辑,也方便其他人研究。
    需要注意的是,阅读本帖需要一定的计算机基础。我本人也懒得做太多解释,愿意看就看,不想看就右上角


    IP属地:河北2楼2024-04-22 18:54
    回复
      首先是使用SSH连接。因为格斗机是Linux系统且自带wifi,所以可以很方便的使用SSH连接。
      我个人使用的是WinSCP和PuTTY。前者用来传输文件,后者用来SSH登录执行命令。SSH的账号是root,密码是anbernic,这个在机器的开发者设置上也有写。


      IP属地:河北3楼2024-04-22 18:57
      回复
        接下来说一下机器启动的时候都使用了哪些程序。
        以打开一个GBA游戏为例,机器的启动顺序为:
        anbernic -> EmulationStation -> retroarch
        解释一下这三个东西分别是什么。
        anbernic: 是开源掌机的底层框架。拥有最高的执行顺序。主要负责所有模拟器和控制器手柄的初始化工作。这个框架脱胎于Batocera,因此大部分的设置都通用。Batocera有官方Wiki,同时也包含了详尽的文档,有需要的可以自行查询。
        EmulationStation: 是前端框架。负责前端各种展示,例如主题图啊目录啊这些内容。同时也会接入anbernic框架,唤醒具体的模拟器。
        retroarch:最负盛名的全能模拟器,就不赘述了。


        IP属地:河北4楼2024-04-22 19:09
        回复
          机器的系统根目录在/userdata/system/。
          这个根目录的设置在/usr/lib/python3.9/site-packages/configgen/anbernicFiles.py中。可以见此图,基本上所有需要关注的文件路径都在这个python文件中做出了说明。


          IP属地:河北5楼2024-04-22 19:13
          回复
            /usr/lib/python3.9/site-packages/configgen/是一个非常有趣的python包,这个包应该就是anbernic开机时调用的初始包,基本上所有的初始化操作具体细节都在这个包中有说明。具体包括模拟器初始化、遮罩滤镜初始化、控制器按键初始化等等都在这里。所以说理论上,想要完成修改热键的操作,我们最好的方式就是直接修改这个python包。但是看别人代码太麻烦了,所以楼主就没这么搞,以后有兴趣的小伙伴可以试一试随便放张图展示一下设置功能吧。
            另外,一般来说,我们对retroarch模拟器的设置会直接保存到retroarchcustom.cfg文件中。但是,从这个python包的逻辑可以得知,框架每次重启就会覆写该文件,这也导致我们自行修改retroarchcustom.cfg的操作无法奏效
            在游戏机上直接试图保存retroarchcustom.cfg的操作也会失败,猜测是权限问题,但是没有验证。


            IP属地:河北6楼2024-04-22 19:23
            回复
              不至于不至于,你去设置里面的全能模拟器改快捷键,改完保存配置就行


              IP属地:广东来自Android客户端7楼2024-04-22 19:26
              收起回复
                所以说,为了实现我们设置热键键位的功能,我们需要直接修改/userdata/system/anbernic.conf文件。
                这个文件是anbernic框架的配置文件,可以理解为拥有最高的配置权限。这个文件可以配置的功能也非常多,具体可以看前面提到的wiki,说明了详细的用法。官方在这个文件里配置了所有模拟器运行时使用哪个核心。但是实际上,retroarch的几乎所有高级配置都可以在这个文件中实现。
                为了达成我们的目的,我在这个文件中添加了下面几行:

                具体来说,就是 取消了开机自动更换A键和B键位置;将快捷键的触发键修改为L2;取消了显示fps的快捷键设置;将二倍速的快捷键设置为R2;将a键设置为右下角的按键;将B键设置为下面中间的按键。
                这里的L2对应键位数字为6,R2为7的设置,应该是EmulationStation里面的映射设置。根据文档来看,/userdata/system/configs/emulationstation/es_input.cfg中应该包含了所有模拟器里按键的映射关系。但是我之前尝试直接修改es_input.cfg中的设置并没有生效,可能有其他更复杂的调用关系。这里也希望懂行的哥们说说为什么。


                IP属地:河北8楼2024-04-22 19:32
                回复
                  的确在retroarch中,可以根据每个游戏保存不同的设置,但是这里保存的设置似乎并不包括快捷键或者说,是因为anbernic框架的原因,每次重启以后都会加载他覆写过的配置文件。
                  这样做确实能够防止用户xjb乱按导致配置混乱,但是缺点就是对我这样的玩家不太友好所幸是有配置的地方,自己重新折腾也比较方便。
                  另外,这些内容大部分也适用于周哥家官方系统的其他掌机,可以在有必要的时候迁移一下。


                  IP属地:河北9楼2024-04-22 19:41
                  回复
                    OK了,开水


                    IP属地:河北10楼2024-04-22 19:41
                    回复
                      我也很喜欢这个机器,希望大神深入研究


                      IP属地:北京来自Android客户端11楼2024-04-22 20:52
                      回复
                        因为他家的系统是用batocera魔改的,所以你要让设置生效需要和batocera将修改的设置写入overlay文件,用save-anbernic-overlay这个命令试试


                        IP属地:北京来自iPhone客户端12楼2024-04-22 20:54
                        收起回复
                          可以把core文件夹给调到外置卡目录,另外有一个es的配置文件定义模拟器调用和识别的信息,batocera文件叫es_system.txt,不知道Anbernic有没有魔改掉


                          IP属地:北京来自iPhone客户端13楼2024-04-22 20:57
                          收起回复
                            这种好贴,需要mark一下


                            IP属地:广东来自Android客户端14楼2024-04-22 21:37
                            回复
                              技术好贴,学习!405v的一建前端和独立app的保存项目竟然是分别独立,很烦!


                              IP属地:河南15楼2024-04-22 21:43
                              回复