3ds运行gba的固件,改版open_agb-0426不关机切换游戏 图章 图章 3DS GBA

五级用户 a92126 2022-8-1 114255

入手2ds后想玩gba,找到了这个帖子提到的固件:

3ds硬解gba,爽-资源发布-老男人游戏网配套论坛 (oldmanemu.net)

大喜啊!!,赶紧去gayhub上下最新的回来试试,尼玛主站上的汉化游戏(就是众神三角力量的汉化版)存档失败!

不过刨去存档,显示效果,手感都很棒,而且我的老GBA被同事霍霍坏了,我对GBA有老婆一般的感情啊。毕竟是高中时期自己攒钱买的第一台跟上了时代的游戏机。

确定了可用性后,我就研究了一下开源的代码,发现作者直接把游戏的SHA1作为验证游戏存档的唯一标准,那我们的汉化过的rom就完全被抛弃了。这不能忍啊!我发现我们汉化的rom都带有原版rom的序列号,于是发了个issue询问open_agb_firm的作者,他说以后可能会用序列号作为一个后补选项来查找游戏存档的方式。

那我等不了啊,我要开始玩了,于是我把gayhub上面的2022-4-25的源码包下回来,自己搞了个环境去build,然后自己修改了查询游戏存档方式的代码,如果SHA1查询不到,则使用序列号作为标准,如果序列号也不存在,则使用同一游戏其他区版本的序列号作为标准来查询游戏存档方式,然后build出来了一个兼容广大汉化后的rom的固件,基本上可以愉快的玩耍了,除了某些山寨厂商出的自制游戏(例如主站的古惑狼4忍者神龟)。

当然,我的代码比较暴力,会使得游戏加载时间比原版长出1秒钟左右。有得必有失嘛,还望理解。


---------------8/10更------------

由于被人呛了,我更新了版本,新版本支持中文路径和文件名了,并且把默认的屏幕亮度设置为100方便使用。

使用方法:下载回来压缩包,把压缩包里面的open_agb_firm.firm放到SD卡的luma/payloads目录下,压缩包的3ds/open_agb_firm目录下的两个文件放到SD卡的3ds/open_agb_firm目录下即可,如果不存在就创建这个文件夹。

3ds放回SD卡后,按住start键开机,选择open_agb_firm按A即可进入固件。进入固件后会列出目录和gba后缀的文件,按A选择gba进入游戏,按B返回上一级目录。

---------------8/11更------------

之前觉得金手指功能做不了,做完中文显示以后我去找了一下,发现一个神器叫做GBAATM,就是对GBA的游戏rom引入金手指打patch,然后这个魔改过的rom就拥有了金手指开启的效果。刚好这个神器的源代码也能在gayhub上找到。既然可以在加载游戏前应用金手指,那理论上就是可以在这个固件里面使用的。我打算吃透这个神器的代码,下个版本在open_agb_firm上加上金手指的功能,敬请期待。

---------------10/22更------------

本来准备下个版本加上金手指的功能的,无奈论坛用户反馈的问题积累了不少,所以还是先发一个小版本处理一下对应的问题,主要是ff20th提出的下屏点对点的问题我觉得可以优先做出来,毕竟上屏点对点对于老大三的用户来说可能感受不如下屏点对点那么好。这个版本的无缩放做不到完美居中对齐,在此表示歉意。

这次的版本主要功能是把原版的config.ini的配置进行了简化,增加了配置界面,配置界面的代码本来打算用来制作金手指使用的。在配置界面可以在文件列表的页面使用select键呼出配置界面进行全局参数配置。可以配置屏幕亮度、跳过GBA动画和调整画面输出。另外增加了存档推断的策略,一般游戏用默认的卡带序列号一致即可,

部分中文游戏如果按照序列号一致出现问题,可以选择汉化带SRAM补丁的策略,如果还不行,那就使用自行决定,并逐个进行试验了(用FLASH开头的存档方案比较可行)。

关于回帖中提到的D商的游戏赤之救援队SD高达A,熊组的索尼克战斗、召唤之夜铸剑物语2、洛克人zero4的问题,都可以通过选择存档方案为汉化带SRAM运行。另外czzqj 提到的绿宝石,我还没找到能运行的模拟器,等我有空去翻翻它的汇编研究一下怎么跳过吧。

那金手指,还是下个版本再发了。

---------------03/09更------------

金手指的功能做好了。目前在配置界面增加了激金手指的选项,其中有关闭金手指、全程激活、组合键单次激活和组合键激活/关闭四个选项。关闭金手指的时候,金手指不可用;其他三个选项,均可以在选择游戏界面通过按x键进入金手指配置界面。代码中的金手指实现方式是游戏过程中覆盖配置好的内存地址,达到修改游戏数据的目的。金手指配置已经内置打好包,不需要再去自行整理。

三个启用选项中,全程激活表示进入游戏后,金手指立即生效,内存数据长期覆盖;组合键单次激活表示,每当按下组合键的时候,覆盖一次内存数据;组合键激活/关闭表示,第一次按下组合键,则开始定期覆盖内存数据,再次按下组合键,则停止覆盖内存数据。进入游戏后,可以通过↓+L+R+select组合键启动金手指,同时,为了方便,我也将组合键绑定到了3DS的HOME键,方便一键启用金手指。

这个金手指的功能,从去年8月11日开始到现在,历经7个月,前期要备考中级注册安全工程师,没花太多时间制作。备考后收集GBA的金手指文件以及整理GBA的编号到序列号花了较多的时间,分析GBAATM的代码也花了一些时间。再加上回家半个月,开放后躺了大半个月,也浪费了一些时间,直到3.6才把patch的代码写完,3.7才真正用上了金手指,当场玩通关了《少年街霸3》和《魂斗罗 异形战争》……

接下来的时间,会把金手指的功能再处理一下,因为许多秘籍都是只有开关两个状态,所以对于一些希望调整为中间据的需求不够友好(例如生命上限100的情况下生命值开老金变成1000),我会在下个版本增加金手指中间数值的配置。另外,也会增加按键映射的配置,因为有时候,L/R的体验不如X/Y方便。

这次分享链接里面附带了源代码,因为原版GPLv3是要求发布的时候带上源码的。下载回来后请先解压,拿到里面的open_agb_firm.7z文件再次解压,把open_agb_firm.firm放置到sd卡的/luma/payloads文件夹下。然后把7z压缩文件中的3ds/open_agb_firm下面的所有文件拷贝到sd卡的3ds/open_agb_firm中(没有则创建)。按住start键开机,即可选中open_agb_firm进入。

今天又弄了几个rom测试了一天,修正了几个小BUG,可以下载21点以后的地址。旧的可能会遇到红屏……

---------------03/12更------------

唉,踩坑了……上次9号发布的版本会在不同条件下红屏(宕机),但是我一开始测试的挺好的啊。这几天把金手指中间取值弄了,测试的挺好,一打包又红屏了。后来发现是debug方式打包就是OK的,release方式打包就完蛋,见鬼了。赶紧逐条编译选项排查,最终找到是原项目的Makefile中的-flto有点问题,开了就会导致malloc后的内存在free的时候跑出异常导致红屏。我也不是很确定,编译器在打开了Link-Time Optimization会在编译的时候做出什么影响。能找到的资料就是说会更激进的优化……总之我把这个编译参数从CFLAGS和ASFLAGS拿掉了。现在红屏已经没有了。这次真是个倒霉蛋了。所以只好来个紧急更新,希望受害者少一点吧。

---------------04/27更------------

这次发晚了点,没办法小孩摔伤手了,陪护住院一个星期。这次带来了配置键位的功能。最多可以配置5个键位,按Y键进入键位配置菜单,然后随便选个位置进去就可以配置按键了。可以配置金手指组合键、键位映射(按下某个键等同于按下另外一个或多个按键,例如可以设置X键映射为L键,也可以映射为A+B这样)、模拟长按(按下某个键松开,可以模拟持续按下另外一个或多个按键,再次按下此键位后取消模拟功能,可以用在洛克人zero中方便操作)。

当然了,这次更新也调整了亮度范围,因为我看了看文档发现原作的范围实在太小了其实范围是0-1024的,我对亮度范围进行了扩大。还有,金手指的功能中,某些玩友提到的黄金太阳1、恶魔城白夜等出现金手指影响游戏的问题,也修复了。但是对于某些启动后出现动画的游戏,例如马里奥和路易吉RPG,超级大金刚3这种,开启金手指会无法进入游戏。这个问题我有了解决的方案,但比较复杂,还需要试验,所以暂时还不能支持。另外,我更新了一点点金手指数据库,给日文版的恶魔城白夜添加了HP和MP的金手指项目,因为我正在玩,然后原来网上的金手指库没有对应这两项的地址数据,我就用模拟器找出来写进去了。

---------------07/04更------------

花了一些时间研究原作者的gpu的使用方法,然后在此基础上进行改动,修正了无缩放下屏幕居中不到位的问题;同时,下屏开放了双缓冲,修正了屏幕撕裂的问题。另外,原作者的printf不支持浮点数导致按x存盘会丢失带小数的数值的问题也得到了修正。

---------------07/13更------------

本来想攒够一个月的内容再更新的,不过貌似暴露了,就直接放出来吧。这次是修复官方代码遗留的对耳机支持的问题,很久了没修是因为GBATEK没有这部分的详细说明,不过通过Luma3DS那边找到了方案,再经过尝试也把问题解决了。这个项目我也做了快一年了,进度还算理想,不过接下来由于工作原因,以后的开发时间可能会大幅下降,更新时间会拖长,希望坛友能理解。

---------------08/18更------------

前天坛友报了系统菜单按x保存后亮度随机的问题,经过检查是没改原作者的存档位数所致。现已修复。请下载最新版。

---------------10/19更------------

大神profi200发布了新版本20231006。包括以下功能:

    1 修BUG:   耳机插孔不好用、声音失真、小容量rom的镜像设置、截屏卡顿

    2 功能改动:超容量ROM警告、上屏无缩放添加边框、更新gba数据库

    3 新增功能:按键调节亮度、增加工具、按键映射、音量配置在ini文件、自动使用ROM同名IPS/UPS打补丁

大神对代码结构做了一定改动,而且有一部分功能和我过去一年的更新内容有冲突,所以我选择对一部分功能进行跟进:

    1 耳机插孔:这个BUG我修复过了,现在改为使用新版的方案

    2 声音失真:把新版的改动拿来用

    3 小容量 ROM:把新版的改动拿来用

    4 截屏卡顿:我的代码基于原版2022-4-25的,此版本截屏的代码被注释了,我看大家都不怎么吱声,现在还是去掉截屏功能的状态

    5 超32M的ROM警告:把新版改动拿来用

    6 上屏边框:这个功能我跟进了,需要在SD卡的3ds/open_agb_firm目录下面放置一个名字叫做border.bgr的文件才能显示边框。我这里转好了一个:border.bgr,可以拿来先用用。也可以自己转,我在网上发布了转换的工具

    7 更新gba数据库:拿新版的gba_db.bin来用

    8 按键调节亮度:原版是按下X+上下方向键调节,我没采用这个方案,改成了使用3D滑块调节,反正这个滑块在open_agb_firm里面用不上。至于2ds没有3D滑块,那就没有游戏中调节亮度的能力了,可以在进入游戏前调节

    9 工具:这个跟固件没关系,开发者可以自己下回来跑一跑玩一玩

    10 按键映射:这个功能和我做的冲突了,就不加进来了

    11 音量配置:我个人觉得有用音量滑块调节音量的功能了,就没必要弄这些了,就没加进来

    12 自动打IPS/UPS补丁:功能挺不错的,不过国内没多少人用补丁,金手指的话我这里做了,以后再说吧。

另外,金手指的数据进行了少量更新。

---------------04/26更------------

距离上一次更新也接近半年了,半年来我主要的重心在给oaftool网站做工具。然后这个月初我从公司离职了,有了一点私人的时间,于是把大家呼声比较高的需求捋一捋,然后就做了不关机切游戏。这个功能的实现方案不太优秀,因为是通过将3DS机器直接软复位重启来完成的,实际上根据系统的GBA VC,应该是可以从GBA模式退出到3DS模式的。这个方案先摸索摸索再做吧。

想要启用这个功能,需要下载新版本的压缩包,把文件对应放好,然后进入open_agb_firm并按下select键进入配置界面,在”游戏中按住电源键“项目选择”终止游戏返回菜单“,按X保存退出,即可启用。在这个情况下,游戏中按下电源键,会回到游戏目录选项,再次按下电源键才能关机。如果出现红屏死机,记得拍个照回帖,我看看哪里出问题了。

另外,金手指编辑加入了好狗狗星系的入口,需要的话自己加金手指吧,我就先不做打包了。


链接:https://oaftool.anod.cc/


上一篇:分享几个网友制作的SimUI游戏合集
下一篇:风之杖HD ACG汉化版,wua格式
热门回复
  • 五级用户 a92126 2022-8-1
    6
    Linux_YL 主要是这个怎么用啊

    原帖视频有的。
    里面有用的就两个文件,一个open_agb_firm.firm文件,是固件文件,放在sd卡luma/payloads里面,另一个是3ds/open_agb_firm/gba_db.bin文件,放置位置是sd卡3ds/open_agb_firm/gba_db.bin下面。
    使用的时候,按住start+电源键开机,选择对应的固件,然后选择rom所在的文件夹,就能找到rom并启动游戏了。

  • 三级用户 kelvinxan 2022-8-2
    4

    昨天用上了 感动还原度很高 (不知不觉弄到了半夜1点多 今天一天犯困)
    题外话 用这个看B站/github教程要升B9/B9S luma要上10.2的样子 太久没升级 折腾死了

    另附:B站看到个小技巧 open_agb_firm.firm 这个文件放payload里的 可以改名 改为 b_open_agb_firm.firm

    开机的时候按住B键 自动进入gba模式 非常方便(new3ds已测)

    • 老男人游戏网配套论坛
      1194
        立即登录 立即注册
最新回复 (1192)
  • 三级用户 kelvinxan 2022-8-1
    1 2
    感谢分享
  • 三级用户 leigh 2022-8-1
    0 3
    感谢分享
  • 四级用户 三级怪兽 2022-8-1
    0 4
    代码大佬就是不一样66666
  • 四级用户 tianmoaoyi 2022-8-1
    1 5
    感谢分享
  • 四级用户 pmmce 2022-8-1
    0 6
    谢谢分享
  • 受限用户 uuuu8888uuuu8888 2022-8-1
    0 7
  • 二级用户 fjswxl 2022-8-1
    0 8
    非常不错 要了
  • 六级用户 Linux_YL 2022-8-1
    0 9
    感谢分享
  • 六级用户 Linux_YL 2022-8-1
    0 10
    主要是这个怎么用啊
  • 四级用户 addman 2022-8-1
    0 11
    感谢分享
  • 四级用户 sat0shii 2022-8-1
    0 12
    感谢分享
  • 五级用户 a92126 2022-8-1
    6 13
    Linux_YL 主要是这个怎么用啊

    原帖视频有的。
    里面有用的就两个文件,一个open_agb_firm.firm文件,是固件文件,放在sd卡luma/payloads里面,另一个是3ds/open_agb_firm/gba_db.bin文件,放置位置是sd卡3ds/open_agb_firm/gba_db.bin下面。
    使用的时候,按住start+电源键开机,选择对应的固件,然后选择rom所在的文件夹,就能找到rom并启动游戏了。

  • 五级用户 czzqj 2022-8-1
    0 14
    感谢分享
  • 二级用户 25126774 2022-8-1
    0 15
    谢谢分享
  • 四级用户 pmmce 2022-8-1
    0 16
    请问一下,您的这个编译版本支持中文文件名吗?
  • 五级用户 a92126 2022-8-1
    0 17
    pmmce 请问一下,您的这个编译版本支持中文文件名吗?
    原版不支持当然这个也不支持。我改的地方就一个用来查找rom存档方案的。
  • 四级用户 pmmce 2022-8-1
    0 18
    收到,谢谢回复!
  • 四级用户 无敌管子 2022-8-1
    0 19
    实在是太6了
  • 五级用户 yr53723 2022-8-1
    0 20
    感谢分享
    • 老男人游戏网配套论坛
      1194
        立即登录 立即注册
发新帖
本论坛禁止发布SWITCH和PS4相关资源,若有其他侵权内容,请致邮3360342659#qq.com(#替换成@)删除。