Skip to content
On this page

自制 USB 数据线为内置游戏的山寨 GBASP 更新数据

本文使用的山寨 GBASP 使用了君正 Ingenic JZ4725 处理器,未插入卡带时可以使用模拟器运行内置在 nandflash 中的游戏。

通过在网上查找资料,这种内置游戏的山寨 GBASP 设备可以通过 USB 数据线连接电脑,通过 USB 端口访问设备的 nandflash,从而更新内置游戏。

由于山寨 GBASP 的 USB 数据线使用了模仿原版 GBASP 外观的接口,无法直接使用普通的 USB 数据线连接电脑,而目前网上也已经搜不到带数据的 GBASP 的 USB 数据线,因此需要自制一条 USB 数据线。

引脚定义

通过拆卸主板进行观察,可以看到,联机口(ext1)引脚都是悬空的,并未连接到主板上。而充电口(ext2)刚好有4个引脚与主板相连。

GBASP 主板充电口

山寨 GBASP 可以通过原装的充电器进行充电,说明4个引脚中两端的引脚与原版 GBASP 的充电接口定义一致,分别为 VCC、GND。这样中间另外两端的引脚应该就是 D+、D-。很容易推断出,山寨 GBASP 的充电口4个引脚定义为:VCC、D-、D+、GND。

自制 USB 数据线

拆开一个 GBASP 的充电线连接公头,发现只有两个连接弹片与 GBASP 的母口接触,还需要补充两个触点才能使用 USB 数据线连接电脑。

使用一个薄铜片剪下两条1mm左右宽度的长条,将一段折起一个小突起,然后塞入充电头的中间两个位置。将尾部的铜片固定后与 USB 数据线的 D+、D- 连接,并确保铜片前方的凸起部分可以接触到 GBASP 的母口触点。

接下来只要将一根普通的数据线与这个 GBASP 的公头焊接好,就成了一个可以连接电脑的 USB 数据线。

不过我手里现在没有 USB 数据线,而我刚好有一个 Type-C 转接板,对准 GBASP 的公头的几个引脚焊接到一起,就可以临时测试一下。

焊接好的TypeC转接头

数据传输

将制作好的转接头使用一条 AtoC 的数据线连接电脑,此时并未发现任何 USB 设备。

上网搜索了一些资料,需要按住某些特定的按键开机,才能让山寨 GBASP 进入 USB 模式。

经过尝试,目前发现了这个设备进入 USB 模式的两个特定方式:

  • 按住 SELECT 开机再松开SELECT:进入 USB 磁盘模式
  • 按住 A 开机:进入 Ingenic JZ47xx USB Boot 模式

USB 磁盘模式

处于 USB 磁盘模式时,设备会处于黑屏状态(电源指示灯亮起)。电脑上会识别出一个新的可移动磁盘,此时可以像操作普通 U 盘一样访问山寨 GBASP 内置的 nandflash。

磁盘内文件结构如下:

/
├── System/
│   └── system.cfg
├── GAME/
│   ├── xxx.gba
│   ├── xxx.sav
│   └── ...
├── ...

system.cfg 文件的内容不是普通文本文件,而是二进制文件,尝试解析了一下也没弄清楚格式,此文件暂时不做修改。

GAME/ 目录下存放了内置游戏的 GBA ROM 文件和对应的存档文件,GBA ROM 文件的后缀名为 .gba,存档文件的后缀名为 .sav

尝试将一个 GBA ROM 文件和对应的存档文件拷贝到 GAME/ 目录下,重新开机,发现内置游戏已经更新:可以找到刚才放进去的游戏,游戏打开后也能读取到相应的存档。

新传输进去的游戏也会自动匹配一个错乱的封面,目前经过研究并没找到封面的配置方式。

经过观察无论是删除还是新增 gba 游戏,都会自动更新列表。不过操作后不能马上断开 USB 连接,需要等一会儿,否则操作可能会无效:新增的文件会不见、删除的文件会出现。

USB Boot 模式

处于 USB 磁盘模式时,设备会处于黑屏状态(电源指示灯亮起)。电脑上可以查看到一个新的 USB 设备,信息如下:

JZ4740 USB Boot Device:
  Product ID: 0x4740
  Vendor ID: 0x601a
  Version: 1.00
  Speed: Up to 480 Mb/s
  Manufacturer: Ingenic
  Location ID: 0x01130000 / 3
  Current Available (mA): 500
  Current Required (mA): 2
  Extra Operating Current (mA): 0

此模式是低级 USB 下载/烧写模式,需要专用的工具才可以操作,暂时先不做研究。