用树莓派dump GameBoy卡带记录

很久没写东西了……
最近翻出以前中学时候玩的《口袋怪兽·金》卡带,找出以前玩的黑白GameBoy,插上去,发现十多年前的游戏记录还在,当年跟朋友联机对战,交换过精灵,里面已经收集了245只,现在人老了,虽然手机有模拟器,已经不可能有那时候的激情。于是就想把数据提取出来看能不能到模拟器继续玩。淘宝搜了一下,果然有,叫gbc dump,不仅可以dump记录,连游戏的ROM也行,OK,我这张卡带还是简体中文版,网上还没找到过有简体中文的,刚好把ROM也搞出来……一看价格……208,尼玛,感觉好坑……如下图

这种东西一般都是根据老外的开源项目改的,去bing搜一下gbc dump,果然有类似的东西,用Arduino实现,还要一个SD卡模块用来保存。手头有个树莓派3,加个关键字raspberry一起搜,果然有!github上有个项目就是这个 https://github.com/abrugsch/GBCartSlurp

电路图,程序都有,可以直接把ROM和RAM保存成文件。看电路还是挺简单,用到两块MCP23017把卡带的32个pin转成I2C接到树莓派操作。

搜了一下淘宝,有现成的MCP23017模块卖,GB卡插槽也有,那就很简单了,买了如下两个东西:

插槽的32个pin用杜邦线连上两个I2C模块就ok了,剩下就是跑程序了。不过那32个pin最好做个转接板搞,不然直接焊接会把人搞到放弃,我焊接了一个多小时,主要是电烙铁不好用,期间多次想放弃直接花208元搞一个。

按照电路图连接好之后,像这样,注意看电路图配置一下两个I2C模块的硬件地址,不能一样!

查看安装说明,先启用树莓派的I2C接口,再在树莓派里编译程序,注意需要用到WiringPi,很简单,git一下该项目,make再make install一下就好了。GBCartSlurp程序的编译也很简单,不过这里有个坑,里面写的I2C的两个地址需要修改一下,我在这里耗了两个小时。确认硬件连接OK后打开树莓派,用命令sudo i2cdetect -y 1看一下两个I2C转接板的地址,如图

然后修改源码gbcartslurp.c 405和406行的mcpSetup把0x20和0x21改成上面对应的地址 gcc gbcartslurp.c -std=c99 -lwiringPi编译,没有出错的话会得到a.out可执行文件,直接./a.out运行,按一下4,回车,应该会出来ROM信息

如果没有,或者显示很多?的话,把两个I2C地址对调一下,重新编译运行应该就OK了!

按下1可以把ROM和RAM记录dump出来分别保存成gbc文件和sav文件,导出很慢很慢很慢,一个2MB左右的ROM要超过1个小时才能导出完毕。经过测试可以在模拟器上直接使用!

看到这画面我多激动你知不知道,知不知道……208块居然省下来了!!!!

电脑也可以……如果不能载入记录,需要把后缀名sav改为sa1

成本:i2C板一块12.5,gbc插槽8.00,不算树莓派……手头没有GBA的卡,没做测试,不过需要把5V供电改为3.3V,电路图有标注!

当年是多么有体跟四大天王打了200回……