如何给 3DS 存档上一道保险?JKSM 备份与恢复上手全记录
【免费下载链接】JKSMJK's Save Manager for 3DS项目地址: https://gitcode.com/gh_mirrors/jk/JKSM
我的 3DS 里躺着两百多个小时的《精灵宝可梦 太阳》,却在一次"手滑删除"之后变成了空白存档。那晚之后,我彻底用上了 JKSM(JK's Save Manager for 3DS)——一款专为任天堂 3DS 设计的开源存档备份与恢复工具。今天我把自己的完整经历整理出来,从编译到日常备份,一次性讲透。
先从一场"删错档"的惨案说起
事情发生在换机之后。我把旧机器的 SD 卡拔出来,插进新机器,想看看游戏进度还在不在。结果系统提示存档损坏,我手一抖按了"格式化",两百多小时的冒险瞬间清零。
那一刻我意识到一个残酷的事实:3DS 自带的存档管理功能,只能"删除",不能"备份",更不能"恢复"。任何一次误操作、一次存档损坏、一次设备更替,都可能让你的游戏进度永久蒸发。
如果你也经历过这种心碎,接下来的内容应该能帮到你。
JKSM 是什么?一句话说清楚
JKSM 的全名是JK's Save Manager for 3DS,你可以把它理解成"3DS 的存档保险柜":它能把游戏存档从机器里读出来,打包存到 SD 卡上;需要的时候,再原样写回去。它支持的范围比想象中广:
- 3DS 卡带游戏(Game Card)
- eShop 数字版游戏(SD Card)
- 装在机身 NAND 里的内容
- GB/GBC 虚拟控制台、DSiWare 等各类标题
更关键的是,它不只管"用户存档"这一种数据。只要你按下 L/R 肩键,就能在五种存档类型之间来回切换,见下文的详细说明。
开工之前,先备齐这三样
在动手之前,请确认你的设备满足这些条件:
- 已安装自定义固件(CFW)——homebrew 应用能跑起来的前提;
- SD 卡为 FAT32 格式——文件系统兼容性最稳;
- 操作全程保证电量——备份恢复中途断电,后果比你想的严重。
顺便提醒一句:JKSM 目前还处在重写(rewrite)阶段,README 里开发者自己都写了"WIP,可能有 bug 和崩溃"。介意的话可以先观望,愿意尝鲜的话,继续往下看。
编译实录:从 clone 到 .3dsx
JKSM 并不提供现成的打包下载,需要你自己编译。整个过程分三步,我先给你看命令,再讲细节。
第一步,拉取源码:
git clone https://gitcode.com/gh_mirrors/jk/JKSM cd JKSM第二步,准备编译环境。你需要安装 DevkitPro,并确保以下库都已就位:
3ds-sdl3ds-libpng3ds-freetype3ds-libjson-c3ds-curl3ds-libzstd3ds-zlib3ds-minizip
第三步,编译:
make -j等编译结束,你会在JKSM子目录下看到三个关键文件:
JKSM.3dsx——Homebrew 菜单用的入口文件;JKSM.cia——CFW 直接安装的格式(需要额外执行make cia);JKSM.smdh——应用的图标与元数据。
小提示:这个项目用的是 C++23,对编译器版本有要求,建议把 devkitARM 更新到最新再动手。
装进机器后,我的第一次实操
把JKSM.3dsx放进 SD 卡的3ds/JKSM目录,从 Homebrew 菜单启动。下面是控制方式的总览,我按自己的使用习惯重新排了序:
- L / R 肩键:切换当前操作的存档类型,或进入设置菜单;
- 十字键:在图标或文本列表里移动光标;
- A 键:打开选中的游戏,进入备份界面;
- X 键:呼出附加菜单(擦除存档、导入/导出 Secure Value);
- Start:退出 JKSM;
- Select:直接设置你的 Play Coins(游戏金币)数量。
进入某个游戏的备份菜单后,逻辑非常直接:
- 选中New Backup按 A,会弹出键盘,让你给备份命名;
- 在已有备份上按 A,是用当前存档覆盖这个备份;
- 按Y则是从这个备份恢复存档;
- 按X可以删除这个备份;
- 按B退回上一个界面。
这里有个细节我很喜欢:恢复、覆盖、删除这类危险操作,默认要求长按 A 三秒才能触发,屏幕上会依次提示 "Hold [A]" → "Keep Holding [A]" → "Almost there!"。防呆设计做得相当到位。
五种存档类型,别再傻傻分不清
很多新手的第一个困惑是:为什么同一个游戏有多个存档条目?因为 3DS 的"存档数据"远不止一种。用 L/R 切换时,你会依次看到这几种类型:
- User Save Data(用户存档)——最常见的主存档;
- Extra Data(扩展数据)——游戏在 SD 卡/NAND 上保存的补充数据;
- Shared Extra Data(共享扩展数据)——多款游戏共用的数据;
- BOSS Extra Data——SpotPass/推送服务相关数据;
- System Save Data(系统存档)——部分游戏放在 NAND 里的存档。
每个游戏支持哪几种,JKSM 会事先检测并在界面上标出来。完整枚举定义在JKSM/include/Data/SaveDataType.hpp,想深入了解可以去翻一翻。
备份文件存放的位置也很有条理,全部在sdmc:/JKSM/下分目录管理:
User Saves——用户存档备份;Extra Data——扩展数据备份;Shared Extra Data——共享扩展数据备份;BOSS Extra Data——BOSS 数据备份;System Saves——系统存档备份;Secure Values——Secure Value 的导入导出中转目录。
设置菜单逐项拆解
按 L/R 切到 Settings 页,你会看到下面这些开关。我逐个测过,给你翻译成大白话:
| 设置项 | 它到底管什么 |
|---|---|
| Refresh Title List | 重新扫描游戏并重建缓存,让以后启动秒开 |
| Text Menus | 把图标网格切换成纯文本列表,老机器跑起来更轻快 |
| Use ZIP | 备份时打包成 ZIP 而不是散文件夹,官方建议 New 3DS 用户开启 |
| Force English | 无视系统语言,强制英文界面 |
| Preserve Secure Values | 备份时尽量保留 Secure Value,而不是顺手删掉 |
| Hold to confirm overwrite / restore / deletion | 是否要求长按 A 三秒来确认危险操作 |
这些配置会以 JSON 形式保存在sdmc:/config/JKSM/JKSM.json,配置文件读取和写入的逻辑在JKSM/source/Config.cpp,想改默认值直接看那里就行。
三个容易被忽略的彩蛋玩法
彩蛋一:自由设定 Play Coins。按 Select 就能把游戏金币改成任意数值。手头缺金币解锁 Mii Plaza 内容的玩家,应该会喜欢这个功能。相关代码在JKSM/source/JKSM.cpp的SetPlayCoins()。
彩蛋二:Secure Value 的导入导出。在游戏上按 X 打开附加菜单,你可以把 Secure Value 导出到 SD 卡,再在另一台机器上导入——这招对"多机同步存档"特别有用,前提是开启设置里的 Preserve Secure Values。
彩蛋三:老用户无缝迁移。如果你之前用的是 JKSV,JKSM 首次启动时会自动把sdmc:/JKSV下的旧备份目录重命名迁移到新的sdmc:/JKSM/结构里,省得你手动搬文件。迁移逻辑在JKSM/source/FS/FS.cpp里,实测有效。
另外,sdmc:/JKSM/cache.bin是标题扫描缓存,遇到"游戏列表没更新"的怪问题,可以回设置菜单点一下 Refresh Title List,它会自动重建。
新手最容易踩的坑
根据我的使用经历,这几个坑最值得提前避开:
- 别在老款 3DS 上开 ZIP 导出——压缩对老机器的 CPU 压力很大,慢到怀疑人生;
- 恢复存档前确认版本兼容——不同版本游戏的存档不一定能互相通用;
- 操作进行中别拔 SD 卡、别强制关机——这是备份失败的头号原因;
- 首次启动出现游戏列表为空别慌——先执行一次 Refresh Title List 再等等看;
- 出问题先看日志——运行日志写在
sdmc:/JKSM/JKSM.log,比瞎猜靠谱得多。
如果你打算换字体,项目里自带的fontcompressor子工程就是干这个的:编译后用它压缩字体文件,替换JKSM/romfs/里的NotoSansJP-ExtraBold.ttf再重新编译即可。
写在最后
从那次惨痛的删档事故到现在,我的存档已经有了一整套双份备份的习惯:SD 卡一份、电脑一份。JKSM 把"备份"这个动作从"不可能"变成了"三秒钟的事",这就是它对我最大的价值。
最后留一个问题给你:你现在还有哪台游戏机的存档是裸奔的?如果手头正好有 3DS,不妨今晚就试试给它上一道保险——把玩机心得回来分享给我。
【免费下载链接】JKSMJK's Save Manager for 3DS项目地址: https://gitcode.com/gh_mirrors/jk/JKSM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考