GBA的D商汉化游戏 细胞分裂实体卡 袁军加密石皮 解研究 2024.12.06补充版本
PS:如果真有人可以尝试dump也可以联系我,反正这卡带我还留着。
本文部分研究成果来自流浪的猎人和Advance汉化组@空调JO太郎,卧看微尘和DS Homebrew群友@BadLuckW所进行的讨论,以及星夜之幻和B站UP主 深空星尘Channel提供的一位GBA卡带Dump相关人士的出处指引,以及GBA开源烧录卡ChisFlash作者林面包做出的一些回答与讨论。
本文仅出于技术讨论为目的进行编写。
流浪的猎人于2024年10月14日进行初次记录,在2024年12月6日进行补充
关于这张卡带,在2018年左右,GBA吧的吧主尝试去使用EZ Flash的烧录器去dump这张卡带,最后没有dump出来。
之后贴吧里面有人成功dump过该卡带,不过未发布ROM。
再之后在老男人论坛里面的这个帖子里也是一样的内容,对方不愿意公开发布ROM,本人一开始觉得对方是在吊胃口+人无我有跑公开平台臭显摆。
直到2024年8月的某一天,我在闲鱼上看见了这张卡带:
当时我还不确定是否要去dump这张卡带,因为我对这个游戏其实没有特别大的兴趣。
然后就是2024年9月末的一天,我发现这人居然还在闲鱼上挂着这张卡带,于是我就决定把他买了,自己给dump了再发出来ROM,然后我连带花掉149RMB,买了一个西蒙匠人的GBA烧录器以防万一。(当时我买这个烧录器的另一个打算,是去烧录那张我之前在淘宝上买的4G合卡)
卖家附赠了两张GBA卡带,一张是龙珠Z的盗版卡,另一张是早就被Dump出来ROM的D商汉化三国志。
EZODE烧录卡和NDS内存拓展卡旁边那两张就是卖家的赠品了。
这张卡带还是2005年卖出去的,都快20年了居然还能读出来,也是奇迹了。
还有一点,这张卡带只有GBA可以正常运行,NDS是不能运行的。(BadLuckW之前说GBA和NDS这两个机型运行GBA的初始化情况并不一致,实际上在GBA+NDS模拟器 No$GBA的开发者马丁·科思(Martin Korth)写的GBA软硬件研究文档里,也提及了GBA和NDS的Bios引导上有一定区别。
实际上这张卡带没那么容易石皮 解,我一开始觉得这张卡带大概率就和我之前买的4G合卡一样,用NDS自制软件都可以把第一个地址的ROM给dump出来,但是这个游戏的ID有一些不同之处。
我在卡带到手后,先后在使用了烧录器和NDS自制软件将卡带给dump之后,提取出来的ROM属于空数据,有一大部分的数据都不见了。
由于该卡带的片头显示为YJencrypted,我们在进行了一定调查之后,可以确定这张卡带使用了袁军加密,并不好 石皮 解 ,该加密几乎无法被任何dump设备所提取。
我这下可以确定为啥GBA吧的吧主不能把这张卡带给dump出来了。
后面我和DS Homebrew群里的几个人,以及Advance汉化组的几个人说了这张卡带的事情,DS homebrew的几位技术人士对此有一些不同的看法:
在软件问题上没有头绪的情况下,BadLuckW让我把卡带拆了把电路板拍照发出来看看。
由于这张卡带的外壳也有一点松,我直接可以用手扣开,看到电路板上面的布局,我把卡带拆了发给了他们几个人看。
卡带正面和一些D卡的结构一致,但是背面有两块芯片,BadLuckW认为可能卡带使用了这两个IC作为加密手段,但是芯片表面被白色的粘稠膏状物给黏住了。
我拿棉签蘸了点酒精擦了一会,卡带背面是两片三菱的芯片,看来并不是负责加密的。
而在 石皮 解 卡带加密上,目前还有一些不同的方案:
1.卧看微尘之前在DS Homebrew群里提到了一个NGC的自制软件,可以用于NGC有线连接GBA,从而去监听卡带数据。
2.参考GBE+模拟器作者Shonumi之前收集任天堂GBA播放君数据的方案,去编写一个Wii自制软件,并把GBA连接到Wii上面,然后让Wii来监听数据。(按照BadLuckW的说法,这本质上是让GBA先读取一个bootloader,然后这个bootloader劫持了一些玩意,这个思路被Shonumi称为“病毒程序”)
(Shonumi自己做的一张图片,来展示这个劫持技术具体的思路)
3:BadLuckW提出的两个思路:
如果有一个通道数足够的逻辑分析仪,那么直接监听GBA和卡带的通信并截获,然后一点点拼回去。
卡带的供电上焊接两个引线,接入可调电源,插入GBA,然后让GBA完成开机初始化,接着可调电源给卡带供电,然后在不关闭GBA的情况下拔出卡带插入GBX Flash烧录器。
但是还有个问题就是这卡带里面还设置了一些陷阱,你访问了这个陷阱卡带又会锁上。
关于目前的情况:
1.卡带使用了袁军加密,不能用正常手段(指使用GBA烧录器和NDS自制软件)将ROM给dump出来。
2.目前已知过去周哥 石皮 解 过一张袁军加密的卡带,但是周哥和卡带加密者袁军是朋友关系,我觉得基本上就是开发者模式了。
PS:周哥放出过部分加密 石皮 解 的ROM,但是格式是GBK,不是常规的GBA文件,只能在K101硬解机运行。
流浪的猎人之前去联系周哥,周哥表示目前没时间搞这个。
而目前暂时不可行的原因,只是笔者暂时没有啥折腾主机的条件(DS Homebrew群里有人愿意给我借一台NGC用,只是我目前实在是不太方便。)
实际上在11月份左右,流浪的猎人看见星夜之幻dump了几张Game Boy卡带并放出了ROM,抱着试一试的形态,想看看能不能星夜之幻帮忙dump,不过星夜之幻也表示对GBA没有咋研究过,主要在研究GB卡带。
不过星夜之幻和B站UP主 深空星尘Channel,都向我提到了一个人,GBC模拟器hhugboy的开发者Taizou。(我看他主页感觉像是 俄罗其斤 人?)
他在个人主页记录了大量dump任天堂GBA+GBC/GB盗1版卡带的记录,其中就有一篇在2020年左右发布的文章,Taizou成功dump了一张带有YJencrypted的口袋妖怪蓝宝石D商英译卡带:
这里我把他 石皮 解 相关的一部分内容,通过deepl翻译贴到这里:
[这是一个非官方的英文译本,是在游戏的日文版和北美版之间完成的。这两个版本之间的间隔只有四个月,这意味着该译本的制作者必须赶在正式英文版上架之前将其推出市场。
不仅如此,他们还采用了与Sintax公司为其数十亿部GBA 平台游戏所使用的 “YJencrypted”系统相同的复制保护措施,大概是为了确保没有其他有心的盗版商可以趁机钻空子。
卡带标签很明显是在美国官方发行材料问世之前制作的--它实际上使用了游戏发行前的封面图,并标有 “RP”(评级待定)的 ESRB 评级。Sintax 的 GBC 策略游戏《口袋妖怪 Saphire》的“New Game Color Advance”版本也使用了同样的封面图。
实际翻译与所谓的 “中国绿宝石 ”有一些共同之处,可能是由同一个人完成的,但很多文字都不一样(而且更奇怪!)。
保护和转储组合
现在,正如我所提到的,这个卡带是受拷贝保护的--但与GBC卡带通常受保护的方式不同,GBC卡带通常可以完全转储游戏,但如果没有该公司的特定映射器就无法运行。哦不:“YJencrypted”卡带有适当的读取保护,是提取数据的大麻烦。
简单总结一下:除非通过GBA启动序列正确初始化,否则你根本无法从卡匣中读取数据(我无法手动复制,只能想办法在不断电的情况下重置),如果你设法绕过了初始化,每个卡匣都有许多“陷阱 ”地址,从这些地址读取数据将被锁定,无法读取任何进一步的数据。而且每个卡匣的“陷阱 ”地址都不一样,所以确定这些地址的唯一方法就是反复试验。
如果你设法从这些卡匣中转存ROM,它大部分都能像标准的GBA ROM一样工作,但它们在32MB ROM地址空间的未使用部分使用了奇怪的寻址/镜像,这也是因卡匣而异的,我不确定它是否有任何模式。
它做的另一件不寻常的事情是,在正常初始化之后,在 ROM 头中替换任天堂标志的几个字节;据我所知,这似乎没有任何与保护相关的用途,但确实可以防止 GBA 在这种状态下以某种方式启动游戏。在本例中,被替换的数据是 “90 AE 17 4E 59 4A”--最后两个字节在ASCII 码中是“YJ”,因此这可能是某种保护的“签名”......
总之,这意味着我无法像往常那样发布 GBC 的“原始转储”,然后尽可能发布“石皮 解”版本--相反,我在这里展示的是从这东西中提取完整可用 ROM 的最佳努力。
该ROM的构建过程如下:
转存了整个32MB ROM区域(实际ROM大小为8MB,与日文版相同)
跳过“陷阱”地址
跳过的数据从相同数据的镜像拷贝补回
ROM保留为完整的32MB,以便在不模拟怪异镜像的情况下进行游戏(因为我还没有完全弄明白它是如何工作的)
用真正的任天堂徽标补回标题中被覆盖的部分任天堂徽标
起初我对最后一点不太确定,因为这意味着要黑掉一些原来转储的数据;但我们知道它实际上在启动时确实显示了正确的任天堂标志,因为游戏启动时确实显示了该标志,所以恢复该标志实质上就是恢复购物车的正常启动状态。我认为这是合理的。
(我确实考虑过发布较少触发的ROM,例如跳过数据仍被跳过,任天堂徽标被部分覆盖的 ROM,但我不认为它比这个转储更“真实”/“完整”,如果我把它放到野外,只会引起混乱,但如果有人有兴趣看看,请告诉我)。
我把它标记为“YJ恢复”转储,这意味着它基本上是用上述技术转储并修补的。这并不是真正的“原始转储”,因为它是经过修补的,而且存在已知的重复/过度转储数据。但这也不是真正的 石皮 解 /黑客行为,因为理论上所有修补过的数据都应该存在于原始磁带盒中。]
根据深空星尘Channel的说法,Taizou使用了一个叫xboo电缆的东西,将GBA连接到PC上面进行操作。
凑巧前几天,流浪的猎人在尝试配置GBA开发库butano,并打算写一些东西(但是我又被配置Windows环境变量和WSL安装Linux给恶心了一次),不过在工程make上面一直存在问题弄不出来,中途我还是又翻了一下Tonc的GBA开发文档,正好Tonc在第3章里面提到了这个xboo电缆的样子:
这就麻烦了,这个电缆需要打印机接口连接,而且需要自己手搓一根出来,这对于不擅长硬件的我而言十分棘手,而且跑这个东西,你得弄一台Windows XP系统的电脑。
笔者最后在这个记录的评论区给Taizou回复了一条评论,不过对方截至2024年12月6日发布本文的时候仍然没有做出回复。
目前暂时没啥头绪了,我暂时不考虑dump这张卡带了。
前段时间热门的GBA开源烧录卡ChisFlash作者林面包,正在开发Bacon开源烧录器,笔者把自己正在写的这篇文章发给了对方,对方表示等他开发设备到了的下一步就是做仿真,Bacon烧录器的设计目标之一就是用于直接执行卡带,能直接执行卡带意味着加密的内容会自动被拖下来。
并且林面包看完本文之后,也提出了一个思路:
大概明白了,我的思路是这样的,也更方便做调试和自动化提取
利用bacon+mgba(或者自己写一个小型的ARM解释器)实现片上执行,模拟真实GBA对卡带的操作,但暗桩确实没办法防,等我开发进度到片上执行的时候,我会试试解密我手头的yj加密卡带, 而且说起来都是袁军加密,说不定每个游戏操作都不一样,最最直接粗暴的方法就是片上执行。
目前流浪的猎人也只能等着Bacon开源烧录器的成品发布之后,再买一个去尝试dump这张卡带了。
最后我再补充两张我拿Analogue Pocket运行这张卡带在BIOS界面报错的照片:
不过我个人对某人dump不发布ROM有一些不同的想法,这里我想问一问站长:
1.当事人既然不愿意放出ROM,那么 石皮 解 者是否是袁军本人?或者是双方存在利益关系不愿意发布?
2.假设他dump了卡带,是否和某些人一样觉得“自己研究这个太辛苦了,不能就这么发了ROM白让你们玩”,我不知道对方是否这么想过。
3.卡带持有者不知道是因为啥原因不想公开ROM
不过至少对方没干另一种行为,石皮 解 了之后搞付费,只能找谁买到ROM才能玩,或者是和某些bilibili众筹汉化的人渣一样,未经允许偷跑ROM再跑到闲鱼上面开个小号当倒卖狗。
补充:
如果有其他人方便dump也可以联系我,我唯一的要求就是dump成功并修复ROM后必须无偿在互联网上公开ROM,要是只有我一个人自嗨的话,那我买这张卡带就没意思了。
如果之前那位 石皮 解 了袁军加密的人,愿意协商并公开ROM我也没问题,不过我还是会想办法去尝试把我手里的这张卡带给dump出来。
参考内容:
A mysterious sapphire
https://hhug.me/?post=90
Tonc: My first GBA demo
https://www.coranac.com/tonc/text/first.htm
GBA D商绝版游戏互助分享计划,站长请进
https://bbs.oldmantvg.net/thread-29248.htm
Edge of Emulation: Nintendo Play-Yan - Part 1
https://shonumi.github.io/articles/art32.html
https://github.com/tzlion/vfdump