【实践记录】手动挖掘甜心宝贝2的全CG宝藏
我这人玩游戏,最烦的就是重复劳动。这《可爱甜心宝贝2》是好游戏,但那隐藏CG和支线剧情的解锁机制,简直就是折磨人。我上次为了看一个只有十分钟的番外,生生把同一条线快进重打了六七遍,当时我就火了。我玩游戏是为了享受,不是给程序猿打工的。我必须搞定它。
我一开始是想着走捷径,去找个现成的存档文件一劳永逸。我翻遍了国内外的几个老司机聚集地,什么贴、论坛、甚至远方的神秘网站,到处问“有没有100%全CG、隐藏剧情旗子全触发的完美存档?”
结果一言难尽。
- 有人给了,但解压包里带了全家福病毒。
- 有人给了,但进去一看,CG画廊只显示了90%,剩下的十张关键图全黑着。
- 最坑的是那种显示100%的,但隐藏剧情的入口按钮还是灰的,说明关键的触发旗子(Flag)在存档里压根就没被激活。
靠别人是没戏了,我这人就是越难搞越来劲。我决定自己动手,丰衣足食。
定位存档:从地毯式搜索到柳暗花明
我第一步就是要找到这个游戏把我的进度信息藏在哪儿了。我先在游戏安装目录里翻了个底朝天,从`data`文件夹到`assets`文件夹,统统看了一遍,结果除了素材和配置信息,屁都没有。这游戏用的是常见的小作坊引擎,存档一般不会放在那么明显的地方。
我琢磨了一下,这种单机小黄油通常喜欢把进度文件藏在系统用户文件夹里。我直接在资源管理器的地址栏里输入了`%appdata%`,然后开始大海捞针。果然,在那个乱七八糟的本地文件夹里,我找到了一个用字母和数字组成的文件夹,里面躺着一个名为`shb_config_*`的文件。文件名越是不像存档,越有可能是存档。
我用记事本打开,里面果然是密密麻麻的乱码。我知道,这肯定是被程序简单加密了,直接修改是不可能的。但是我又懒得去学什么复杂的反编译,太浪费时间了。
笨办法出奇迹:对比找旗子
我决定用最土、最耗时但最直接的办法:对比文件变化。
我先是备份了这个乱码文件,然后重新进入游戏,什么都不干,马上存了一个“零进度”的存档。然后,我拿出我很久以前用来改《仙剑奇侠传》存档的那个老旧的Hex编辑器(就是那种能把所有数据都显示成十六进制的工具),打开这个零进度存档。
然后我做了两件事:
- 我进游戏,快速点完第一段新手剧情,解锁一张CG图,立刻存一个“一图进度”的档。
- 我用Hex编辑器打开“零进度”和“一图进度”两个文件,开始左右对比。
这一对比,关键点就浮现出来了。我发现文件靠中间的位置,有一长串数字,其中大部分都是`00 00`,代表未解锁状态。而在“一图进度”的存档里,这一串序列中,有三个字节从`00 00`变成了`01 01`。这就是解锁旗子!每张CG,每段隐藏剧情,都对应着这一长串数据中的一个或几个地址位。
最终实践:一键爆破
既然找到了这个规律,剩下的就简单粗暴了。
我直接把那一大长串负责记录进度的 Hex 数据(从我标记的起始点开始往后数几百个字节),统统从`00 00`改成了`FF FF`。我甚至没去细究哪个是哪个CG,直接全部拉满。FF代表十六进制的最大值,肯定能覆盖所有可能的解锁状态。
修改,保存,替换原文件,启动游戏!
我心跳加速地点开游戏主界面,进入CG画廊,那感觉简直了!所有的缩略图,包括那张老王跟我炫耀了半天的隐藏图,全都亮了!隐藏剧情的入口按钮也从灰色变成了可点击的橙色。前前后后折腾了我三个小时,但省下的时间足够我玩十个新游戏了。这个笨方法虽然不太高级,但绝对是解锁所有内容的终极秘籍。从此以后,再也不用看程序猿的脸色了。
我就是喜欢把这些自己实践出来的小东西记下来,分享出来,让大家都能轻松一把。