弹窗内容为某破解站广告。
先是尝试直接搜索弹窗文本,无结果,后查找Toast相关代码找到了此弹窗的代码。
大致逻辑为存储了此文本的base64作为字符串(怪不得搜不到),将解编、弹窗封装为一条函数,在特定操作处加一行调用该函数。
然后就是神秘的问题了,用Apktool.org的jar包进行解包、修改、重新打包后的APK无法安装,显示“找不到外部库”,改用Apktool M在手机上操作就成功了。
没有找到合理的解释。只能建议多准备几个工具。
20251014-arknightsx86
在明日方舟日服 20251014 更新(对应国服20250501更新)后,AVD上会在运行一分钟左右后闪退,暂时推测是更新引擎造成的部分功能转译失败导致。但是更换镜像后似乎可以正常使用,也可能和root有关。
有问题的镜像:
- A16 x86-64 Google APIs (android-36\google_apis\x86_64)
- A15 x86-64 ext15 Google APIs (android-35-ext15\google_apis\x86_64)
暂时没问题的镜像:
- A16 36.1 x86-64 Google Play (android-36.1\google_apis_playstore\x86_64)
遇到类似问题的可以尝试使用此镜像。
游戏更新时,MAA维护者该做的事(海外服)
仅作个人工作记录,不一定完整。
更新前
- 更新MaaRelease的StageActivity,一般为三个蓝材料关和一个搓玉关。国服的材料记录和搓玉关效率一般提前半年写在个人仓库Issue里了,直接照抄即可。复刻活动还会有一个一键复刻。日期复制官网新闻的。故事集不用改这个。新主线在15章以后没法第一时间出导航,所以也不用写了。
- 修改MaaRelease的task.json,同步修改到主仓库。现在主仓库的对应内容在task/Stages/AA.json,一般只需要修改AAChapterToAA和AA-OpenOcr,记得看一下有没有完整的AA-Open到下两项的Next。AAChapterToAA对应常规关,AA-OpenOcr则需要活动名、EX关和S关的名称,然后记得添加“ステージ開放中”,但不要添加“イベント開催中”,因为这个也可能用于其他活动(如果档期重叠的话)。复刻活动可以添加“イベント復刻開催中”。活动名等信息可直接复制官网新闻。如果AAChapterToAA的字数差距太大的话,可以参考官网或官推的图粗测一下roi,提前修改。
- 对于限定活动,记得检查送合成玉的活动的任务信息。(如OrundumActivities)
- 检查多版本追踪,如果有本期会实装的内容记得修改。
- 检查ja-jp.xaml中所有的“待定”、“非公式”类内容,如果可能在此次更新实装可提前修改。
- 尽量提交或清空task.json中所有本地修改,避免更新后阻塞pull。
更新中
- 上游仓库更新后,会在主仓库生成一个提交,查看此提交的所有内容,包括更新了哪些干员/可部署物,检查它们的ocr替换规则是否会有冲突,是否修改了已实装道具的名称,肉鸽拓展的新编队、新事件、新地图,保全派驻新地图的道具及其分支选项。
- 如果当前指定的上游仓库更新了而MAA没有更新,查看工作流状态。如果当前指定的上游仓库迟迟没有更新而其他同类仓库更新了,可先手动查看更新内容。遇到这两种问题记得找其他维护者呼救。
查看解包者提供的后续活动信息,做好准备
更新后
- 先花十几分钟正常进游戏,清理日常任务等,肉眼分析当前有没有提前实装一些修改,截图一些已知的修改,备用。
- 用DEBUG版MAA启动游戏,测试活动关导航是否正常。
- 用新干员和名称相近的干员编队,去OF-1测试能否正常ocr识别新干员。
- 从截图裁取新模板图,测试。
- 跑一把Operator和Depot,这些地方有时候会微调。
暂时想到的就这么多,以后有机会补充。
20251002-MAAGPU
MAA在去年启用了GPU加速功能,其中内置了一套GPU黑名单,这个有报错记录就禁用的黑名单并不严谨,可能有不少是因为没有正确安装显卡驱动导致的,以下结合个人实用经历重新整理了一下黑名单的准确性。
Nvidia
黑名单
- Kepler, GTX600/700 Seires
未知 - Maxwell, GTX700/900 Seires
实测可用,曾使用 511.x 版本驱动,当前建议安装 531.x 及以上版本的驱动。
白名单
- Pascal/Volta, GTX1000 Series/Tesla V Series
当前没有报错记录,当前即将结束驱动支持,可能随MAA的更新出现问题。 - Turing Later, RTX Series
Intel
黑名单
- HD500/HD600/UHD600 Series, Core 6~10th Gen
实测基本不可用,原因未知,总之不建议使用。官方已停止Day0驱动支持。 - Xe, Tiger Lake/Elkhart Lake/Jasper Lake/Rocket Lake/Alder Lake/Raptor Lake, UHD700 Series/Iris Xe, Core 11~14th Gen
实测可用,建议安装 32.0.101.5518 及以上版本的完整驱动。当然,11、12、13代的UHD700系之间还有着一些微小的区别,我只实测了 12600k 附带的12代 UHD770,11代可能会有问题,12/13代的移动端也可能有问题,还请自行尝试。官方已停止Day0驱动支持。 - Xe-LPG, Meteor Lake, Core Ultra 1st Gen
未知,理论可用,推荐使用最新驱动。 - Core 100H/200H/100U/200U Series
理论上是酷睿13代换皮,核显型号为 0xA7AC等,但是最新显卡驱动对其提供支持。 - Bartlett Lake/Core 200E Series
理论上是酷睿12/13代换皮,核显型号为UHD770 0xA780/0xA782等,但是最新显卡驱动对其提供支持。
白名单
- Xe-LPG+, Arrow Lake, Core Ultra 2nd Gen
理论和 Meteor Lake 一样,可能只是没有人报错。 - Xe-HPG, Alchemist, Arc A Series
- Xe2, Battlemage/Lunar Lake, Arc B Series/Core Ultra 200V Series
- Xe3, Celestial/Panther Lake, Core Ultra 300H Series (TBA)
- Core 100 Series (TBA)
理论上是酷睿10代换皮,目前没有其显卡架构的详细信息。
AMD
只用过 Ryzen AI 365/Radeon 880M,一切正常,不清楚具体情况。建议使用最新的稳定的驱动。
MAGES引擎游戏资源提取方法指北v3

原文 待发布
旧版原文发表于 v2|cv22952557 v1|cv10614833,现对原文进行更新和更正。
v3版本主要添加了PS2平台的游戏信息。
Committee of Zero对MAGES引擎进行了较为详细的定义和描述,有兴趣可以阅读原文。
Committee of Zero|gitbooks.io
相关游戏数量越来越多,可能无法在文章中一一列举,可以查看我的在线表格查找相对完整的游戏-引擎对应关系。
OneDrive 网页可能无法直接访问
写在前面
不再赘述版权、软件安全等问题,请自行注意。
本文旨在解析MAGES引擎的多媒体资源格式信息,此外也尽可能提供一些MAGES公司使用的其他引擎的信息。需要您有一定的计算机知识基础和动手能力。
可能用到的一些运行时、通用依赖项:
.Net 5/6/7/8/9, .Net Core
目前推荐安装.Net 6 Desktop Runtime和.Net 8 Desktop Runtime这两个LTS版本。这几个版本之间的代码很容易升级,但软件需求的运行时版本在编译时已经决定,大多数情况下不能相互替代,请根据软件的要求安装对应的版本。
.Net Framework 4.6.1/4.7.2/4.8
完整安装的Win10系统应该自带4.8版本运行时,如没有请自行安装。4.8版本运行时可以运行包括4.5-4.8版本的软件。Win8、Win7系统需要安装一个指定系统更新后才能安装该运行时。注意,.Net Framework 与.Net Desktop是不同的运行时,不能互相替代。
Python3.x
推荐安装Python3.10及以上的版本,建议选择最新版。
pip依赖项
常用的依赖项有pillow,numpy,unrpa等,可在安装python后使用pip install命令安装。如果您需要多个python环境或遇到包版本冲突,请自行配置annaconda等环境工具。
目前pillow 10.1.0版本的改动可能导致一些尝试引入图片格式的python脚本无法运行,如遇到此问题请查找该脚本的更新,或将pillow回滚至10.0.1版本。
Visual C++ Redistributable
建议安装最新的VC Redistributable(2015-2022)。Win10/Win11系统可以直接在Powershell使用指令“winget install Microsoft.VCRedist.2015+.x64”安装。部分C/C++程序可能要求旧版的VCRedist,如2012版,否则无法运行,需要另行安装。
旧系统支持问题
根据一些软件的问题反馈,Github Runner和Visual Studio自2024年6月中的一次更新后所编译生成的程序可能无法在Windows7上运行。如果您仍在使用这个系统,请注意此问题,并根据自身情况选择更新系统或者使用2024年6月前的版本。
通用处理逻辑
由GARbro处理外层的文件封包和图片格式转换,由VGMStream处理音频格式转换,由VGMToolBox处理视频解封装。
以这三个软件作为最通用的工具,处理一般的没有额外加密的游戏就足够了。
目前GARbro主分支虽偶有更新但很久没有发布release,仍能处理大部分MPK和CPK。如有其他需求、遇到问题或想自行编译推荐使用crskycode版本。
GARbro个人维护版本迁移了仓库。我为个人维护版本和crskycode版本添加了自动构建脚本,如果您想要体验最新版的功能但不方便在本地构建,可以在登录Github账号后在对应仓库的 Actions 下找到对应的workflow,下载其中的ci-build版本的程序。根据仓库设置,这些内容会保留1-3个月不等。
VGMStream只提供了命令行工具和网页版工具,且网页版工具有较多问题,如果需要用本地的图形化工具可以安装foobar2000播放器,配合VGMStream的插件版使用。
VGMToolBox已长时间没有更新,目前仍能正确处理多数相关视频文件。
个人维护的版本提供一点对相关游戏的额外支持,可能有bug。
GARbro(不推荐)|Github 需要DotNet Framework 4.6
GARbro-crskycode|Github 需要DotNet Framework 4.6.1
GARbro 个人维护版本|Github 需要DotNet Framework 4.6.2
VGMStream
foobar2000
VGMToolBox|SourceForge 需要DotNet Framework 4.5
VGMToolBox 个人维护版本|Github 需要DotNet Framework 4.8
MAGES引擎-PC端
主要游戏:命运石之门系列(Steam版),混沌之子,Yu-No 2017版,秋回8+FD,SinMemo(DMM版),机器人笔记+FD,秋回1-7(Steam版)
特征:使用MPK或CPK格式进行封包,图片使用常见格式,音频使用OGG、ADX、HCA格式,视频使用USM、BK2等格式封装,立绘图片有一定程度的加密。

解包方案:参考原文。
MPK、CPK解包推荐使用GARbro,一般不会有问题,不需要密钥。
ADX、HCA格式音频推荐使用VGMStream,可直接转换为WAV格式,或使用命令行进一步转换为其他格式。一般不会有问题,不需要密钥。也可以使用GARbro自带的解码功能,另有VGAudio、HCADecoder等工具备用。
USM格式视频推荐使用VGMToolBox的Misc. Tools/Stream Tools/Video Demultiplexer进行解封装,在Format选项选择对应的格式,获得视频流和音频流。音频流一般使用ADX、HCA格式,参考上文处理。视频流大多使用AVC编码,并被VGMToolBox使用m2v扩展名,且可能没有时间信息导致无法正常播放,需要使用MKVToolNix或FFMPEG等工具进行封装,然后可以正常播放。游戏SinMemo的视频使用了古老的MPEG-1编码,部分播放器可能无法播放,请尝试使用功能更强大的播放器,处理过程相同。另有工具WannaCRI可以解封装USM视频格式。
bk2格式视频推荐使用BINKVideo的官方工具RADVideo观看和处理。
加密的立绘分为lay格式和mvl格式两种,早期游戏使用lay格式,推荐使用ChaosChildPCTools处理。GARbro对lay格式的处理存在问题,不建议使用。mvl格式也可以使用ChaosChildPCTools处理,但无法直接得到最终成果,推荐使用mvl-preview处理。另有工具undice可以处理mvl格式,但速度较慢。
有网友重置了此脚本。个人不对其功能和稳定性做保证。




VGAudio|Github 需要DotNet Framework 4.5.1
HCADecoder|Github
WannaCRI|Github 需要pip依赖 ffmpeg-python、python-json-logger,需要将FFMPEG、FFProbe添加至系统PATH变量
MKVToolNix
FFMPEG
FFMPEG-Builds|Github
RADVideo
ChaosChildPCTools|Github 需要pip依赖 pillow 截至文章更新时,最高测试过 pillow 11.1.0 版本
ChaosChildPCTools-wangyw15|Github 当前版本(53fe761)需要Python3.12,需要pip依赖 pillow >=10.1.0,<=10.3.0 不保证其功能和稳定性
Mvl-Preview|Github 需要DotNet Framework 4.6.1 或 DotNet 6/7/8/9
undice|Github 需要pip依赖 pillow
MAGES引擎次世代版-PC
主要游戏:混沌之脑(Steam、GOG版)(过渡),SinMemo(Steam版)(过渡),Ever17,Never7,秋回9
特征:图片使用webp格式,视频使用webm格式封装,视频流使用VP9编码,音频流使用Vorbis编码。
早期的混沌之脑图片使用WAV作为扩展名。视频使用USM格式,但没有扩展名。立绘使用mvl格式。压缩包内几乎所有文件使用纯数字命名。SinMemo则是图片使用PNG,视频使用webm格式。
解包方案:与原版基本相同。其中使用webp格式的立绘图片在使用GARbro提取时请选择保持原样,由mvl-preview直接处理webp图片,否则可能出现奇怪的错误。
混沌之脑的图片可使用批量重命名工具修改扩展名为webp后打开。如果在使用GARbro,可以尝试选中文件,右键选择文件类型为图片,然后刷新,可以预览图片。
MAGES引擎早期版-xbox360
主要游戏:秋回6+FD(xbox360),秋回7(xbox360/旧PC),code18(xbox360),命运石之门系列(xbox360),混沌之脑LCC(xbox360),11eyes(xbox360)
特征:压缩包命名与MAGES引擎相似,但使用dat扩展名,用HEXEditor类工具打开可看到文件头使用LNK4作为特征格式名。具体格式可能与MAGES引擎有较大差别。
解包方案:使用来自asmodean的工具exlnk4。具体内容不详,一般不会有问题。视频文件使用WMV格式,一般的播放器可以播放。
如果获取到的游戏使用unpacked/XEX/JTAG格式,那么可以直接看到XEX格式的可执行程序和压缩包,并进行解包。如果是其他格式,还需要将其转换为此格式。
如果游戏是使用ISO扩展名的单文件,则是XboxISO格式,应与常见的ISO格式不同,无法在Windows上挂载或使用一般解压缩软件解压缩,需要使用工具Xbox360 ISO Extract解压缩转换为unpacked格式,或使用VGMToolBox的Misc. Tools/Extraction Tools/Generic/ISO-Archive Extractor预览和提取。如果文件大小在7.29GB左右,可以猜测该文件为Redump标准的ISO文件,转换过程不会有问题。关于Redump的具体信息可以在redump.org查询。如果文件明显小于7GB,则可能是重构的ISO文件,可能因重构过程中出现错误而无法转换。如遇到此问题请尝试寻找其他格式的版本。

如果游戏使用无格式的字母、数字字符串文件作为可执行文件,且相邻的data目录下的文件全部为明显类似分卷压缩的同大小无格式文件,那么该游戏版本为GOD格式。可使用工具God2iso转换为重构ISO,再转换为unpacked。此过程可能因重构过程中出现错误而无法转换。已知游戏Dunamis15在网络上流传的GOD格式版本必定有此问题。
exlnk4|asmodean 该工具可能需要使用VCRedist-2012,需要另行安装
[Xbox360 ISO Extract]未找到官方网站
God2Iso|Github 无官方构建版
MAGES引擎-PS3
主要游戏:混沌之子(PS3),命运石之门0(PS3)
特征:与PC版基本相同。lay文件使用BigEndian编码。视频使用USM封装。
解包方案:沿用PC版方案。处理lay文件时请使用ChaosChildPCTools中单独的PS3版脚本。
PS3平台的游戏分享大多使用unpacked形式,即直接暴露所有文件,也称JB-Folder格式,不需要额外的预处理。
命运石之门0 PS3汉化版常见ISO格式的分享,使用了ISO-Decrypted格式,使用7-Zip当作压缩包解压缩即可。
网络上还流传有一些ISO-Redump标准的ISO格式分享,与解密版对应,称为ISO-Encrypted格式,对USDIR目录下的文件进行了加密,与解密版在文件大小上没有区别,甚至也可以直接使用7-Zip解压缩,但解压缩得到的文件无法正常读取。两者只有通过对比文件哈希值或解压缩后查看文件时才能看出区别。两种ISO格式可通过工具PS3Dec转换,并需要密钥。密钥可在redump.org的ISO对应页面得到。
MAGES引擎早期版-PS3
主要游戏:秋回6+FD(PS3),秋回7+FD(PS3),混沌之脑LCC(PS3),命运石之门系列(PS3),花咲くまにまに(PS3),机器人笔记(PS3)
特征:图片为无格式无压缩点阵图,音频为ADX格式但没有扩展名,视频使用SFD封装,MPEG-1或MPEG-2编码。lay文件使用BigEndian编码。压缩包内几乎所有文件使用纯数字命名。
解包方案:基本沿用PC版方案。
图片可使用RNE Image Conventer转换为常见格式,或使用我个人维护版本的GARbro,选择文件格式为图片进行预览。音频可添加.adx后缀后使用VGMStream转换为常见格式。SFD视频可使用VGMToolBox解封装,后续处理相同。处理无后缀名的lay文件时请使用单独的PS3版脚本,其中偶数号的文件是图片,奇数号的是lay文件。SG Phenogram的立绘文件似乎有一点问题,无法正确解析,请使用其他平台的版本。
RNE Image Conventer|Github 需要pip依赖 pillow
MAGES引擎-PSV
主要游戏:命运石之门精英版(PSV),春物续(PSV),混沌之子+LCC(PSV),SG0(PSV),Yu-No 2017版(PSV),秋回8+FD(PSV)
特征:封装与PC版基本相同。图片使用gxt格式,视频使用MP4封装的AVC编码,音频使用索尼自制的at9格式。
解包方案:基本沿用PC版方案。
图片可ChaosChildPCTools中的gxt.py转换为常见格式。音频可使用VGMStream转换为常见格式。立绘使用ChaosChildPCTools处理。
PSV平台的游戏分享有各种格式,常见的有MaiDump,NoNpDrm,VPK,PKG等,其中MaiDump格式在Windows环境下可以直接提取;NoNpDrm格式可以看到文件但无法正常读取;VPK格式为zip格式封装的压缩包,具体情况与提取格式有关;PKG格式可使用配置好的Vita3k模拟器以及PKG配套的密钥提取其内容。
NoNpDrm格式的游戏如果使用zip格式的压缩包,可以尝试使用配置好的Vita3k模拟器导入游戏,在此过程中解密,得到正常的文件。此过程要求该包中没有使用psarc,压缩包格式必须为zip,可能还要求是zip-Deflate,其他压缩格式请尝试解压缩后重新压缩成zip-Deflate,符合以上要求才可能成功。
MAGES引擎早期版-PSV
主要游戏:秋回6+FD(PSV),秋回7+FD(PSV),命运石之门(PSV),SG比翼(PSV),机器人笔记精英版(PSV),SG表征图(PSV),春物(PSV)
特征:与PS3同时期的早期版相似,图片为无格式无压缩点阵图,音乐音频为无格式的索尼自制的ac9格式,且可能使用其他扩展名,语音音频使用hca格式,视频使用usm格式。实际上还可能有一些旧版和标准版混合的情况。
解包方案:图片可ChaosChildPCTools中的gxt.py转换为常见格式。音频可使用VGMStream转换为常见格式。立绘使用ChaosChildPCTools处理,具体是否可用未测试。
此外还有几个游戏的音频所在压缩包使用了类似BGM_AT9.MPK的命名,此类游戏的MPK压缩包使用了不同的索引,无法用旧版GARbro解析,如需要解包可以使用Crskycode版本或我个人维护版本的GARbro,或使用ChaosChildPCTools的mpk.py处理,或直接选择其他平台的版本。
MAGES引擎-PS4
主要游戏:?
特征:?
解包方案:目前PS4的游戏资源还是太少了,不足以支持论证。
常见PKG格式分享,可以使用工具PS4-PKG-Tool解包为unpacked形式。过程需要密钥,官方的PKG密钥常为全0或全1。或者使用shadps4模拟器v0.7.0及以前的版本,选择安装PKG来解包,并且似乎不需要密钥。但是此后版本的shadps4模拟器移除了安装PKG功能。得到的文件可按PC版或Switch版的方案处理。
使用PS4-PKG-Tool时还需要下载PS4-Fake-PKG-Tools的全部文件,放置于同一文件夹下。
PS4-PKG-Tool|Github 旧版需要DotNet Framework 4.7.2,新版需要DotNet 7
PS4-Fake-PKG-Tools|Github
shadps4|Github
MAGES引擎-Switch
主要游戏:命运石之门系列,Yu-No 2017版,秋回系列,机器人笔记+FD,SinMemo(过渡)
特征:与PC版基本相同,图片使用常见格式,音频使用HCA格式,视频使用USM格式封装,立绘图片使用mvl格式。封包使用cpk、mpk格式,但更常见直接使用文件夹,用同名cls文件记录其中的文件名。
解包方案:与PC版基本相同,没有额外的问题。
Switch平台使用NSP、XCI格式存储游戏内容,一般NSP格式来自线上商店,一个NSP文件只能封装一份程序(主程序、更新包),XCI格式来自卡带,可以封装多个NSP文件,甚至可以封装多个游戏。两者之间可以通过工具NSC_Builder转换,可以看作没有区别。有时游戏分享者会使用NSZ、XCZ格式分享游戏,这种格式是民间研究的NSP、XCI格式的压缩版本,可使用NSC_Builder还原为对应格式。
NSP文件下封装的是NCA文件,可使用工具XCI-Explorer查看结构并提取NCA,再用SwitchExplorer打开NCA文件得到PC版类似的cpk等文件……老方法是这样的,对还原修改后的游戏有帮助,但只是提取没必要这么麻烦。
众所周知,Switch现在有两个模拟器yuzu和Ryujinx,只要在配置好的模拟器里右键选择扫描到的NSP、XCI文件,选择Extract,就能得到需要的文件。
以上工具均需要Switch密钥,模拟器除密钥外还需要系统固件,请自行获取。
NSC_Builder|Github
XCI-Explorer|Github 需要DotNet 6,其他分支的版本可以使用DotNet 7/8
SwitchExplorer|Github 需要DotNet Framework 4.6.1
yuzu 需要VCRedist2015+
Ryujinx 最新版需要DotNet 8
MAGES引擎次世代版-Switch
主要游戏:SinMemo(过渡),混沌系列,春物,Ever17,Never7,秋回9
特征:与旧版相比,几乎不再使用cpk、mpk封包而是使用文件夹和cls文件,图片(除SinMemo)使用webp格式,音频使用ns-opus格式,视频使用webm格式封装,视频流使用VP8、VP9编码,音频流使用Vorbis编码。
解包方案:与PC版基本相同。webm格式的视频需要功能较强的播放器播放。ns-opus格式的音频使用.opus作为扩展名,但使用了专有的文件头,与常见的ogg-opus格式不同,无法使用一般的播放器播放。需要使用VGMStream转码。而且使用VGMStream的fb2k插件也无法直接播放,需要将扩展名改为.lopus才能由插件解码。
rUGP引擎
主要游戏:Disorder6(xbox360/PS3),解放少女SIN(PS3/PSV),混沌之脑Noah(PS3/PSV)
特征:游戏内容除视频外,几乎全部文件体积集中在一个RIO格式文件上。PS3版视频使用AVI封装,MPEG-4视频编码、MP3音频编码。
解包方案:没有太好的方案。这个引擎的PC版被称为最难对付的ADV游戏引擎之一,只有几个针对age社PC版游戏的工具。
经测试,工具RioX可以处理游戏Disorder6两个版本和解放少女SIN的PS3版,得到背景图、EVCG和一些文本内容,无法得到音频和角色立绘。PSV版的相关游戏无法正确处理,建议使用其他平台的版本。工具RioX已经长时间未更新,且未开源。
视频编码较为古老,部分播放器可能无法播放,请尝试使用功能更强大的播放器。
RioX|archive 原网页已消失
M2/E-mote/KaledoADV引擎
主要游戏:Dunamis15(xbox360/PS3),Infinite Stratos系列(PS3/PSV),可塑性记忆(PSV),超自然九人组,五等分系列,匿名代码
特征:文件包使用_body.bin+_info.psb.m封包,视频使用对应平台常见格式。
解包方案:来自asmodean的exm2lib给出了早期两个游戏的解包方法,但没有后续更新。
现在推荐使用工具FreeMote。这是一个面向Emote相关各类封包格式的工具,支持KaledoADV引擎的封包。每一个游戏的封包都使用了不同的密钥,PSV版的游戏可用文本编辑器或HexEditor打开eboot.bin,在其中首次出现的”script_info.psb.m”前找到,PC版的在exe文件中同样位置。Switch版密钥位置不固定,请尝试用Ryujinx提取ExeFS,用KaleidoKeyFinderSwitch处理main文件,在所有可能是密钥的字符串中尝试。PSV、PC版也可使用此工具,但效率低下且不如直接查找直观。PS3平台的密钥获取方法稍复杂,您需要安装并配置好RPCS3模拟器,在工具栏选择 Utilities-Decrypt PS3 Binaries,选择对应游戏的 EBOOT.BIN 文件,解密得到一个 EBOOT.elf 文件,然后可以按类似PSV版的方法,在”script_info.psb.m”等一系列文件名前找到。Xbox360平台不适用此方法,但此版本的游戏通常与同时发售的PS3版使用相同的密钥,可以碰碰运气。

匿名代码PC Steam版的视频文件使用了mzv格式后缀名,实际上是文件头有问题的MP4文件,修改文件头前四个字节后改为mp4后缀即可正常播放。
目前已经发现其中有至少三种MP4格式,需要修改为不同的值。
文件固定开头为0003位为00,0407位为ftyp,再后面一段到moov或mdat之前是MP4封装格式。例如mormal_end.mzv的封装格式为mp42 (mp42/mp41) ,所以将第03位的00修改为0x18,即可正常播放。对应关系如下,需要严格对应每一个关键字。
- 0x18 mp42 (mp42/mp41)
- 0x1C mp42 (mp42/mp41/isom)
- 0x28 M4V (M4V /M4A /mp42/mp41/isom/avc1)
未出现但可能用到的对应关系
- 0x14 isom (isom)
- 0x1C isom (isom/iso2/mp41)
- 0x1C mp42 (mp42/isom/avc1)
- 0x1C mp42 (mp42/iso2/mp41)
- 0x20 mp42 (mp42/iso2/avc1/mp41)
- 0x20 isom (isom/iso2/avc1/mp41)


PS3平台的视频使用了PAM封装,可用VGMToolBox解封装。另Infinite Stratos系列PS3版的视频的音频轨使用了GENH格式,用VGMToolBox解封装会得到视频轨文件、一个genh文件和一个lpcm文件并报错,此时需要用ShinHayarigamiExt中的GENH_comb.py将genh和lpcm拼装成一个文件或手动拼装,然后用VGMStream播放或转码。(或者使用我编译的VGMToolBox,原开发者在代码上修复了这个问题但没有发布程序)
exm2lib|asmodean 该工具可能需要使用VCRedist-2012,需要另行安装
FreeMote|Github 需要DotNet Framework 4.8
KaleidoKeyFinderSwitch|Github
ShinhayarigamiExt|Github
Unity引擎
主要游戏:この素晴らしい世界に祝福を! ~この欲望の衣装に寵愛を!~(Switch)
特征:Data目录下有Managed、Resources、StreamingAssets文件夹,有boot.config、resources.assets等文件,一般StreamingAssets文件夹体积最大。
解包方案:使用通用工具AssetStudio。不同的Unity游戏、不同平台间的差异可能很大,且可能有加密,请自行研究。
AssetStudio|Github 需要DotNet Framework 4.7.2 或 DotNet 5/6
AssetStudio原版已长时间未更新,推荐两个有少量更新维护的版本。
AssetStudio-zhangjiequan|Github 需要DotNet Framework 4.7.2 或 DotNet 5/6
AssetStudio-aelurum|Github 需要DotNet Framework 4.7.2 或 DotNet 6/8/9
Unity引擎+CRIWare封包
主要游戏:Yuru Camp Have a Nice Day(Switch),Summer Time Render Another Horizon(Switch)
特征:与Unity引擎相同,但StreamingAssets目录下许多文件使用了CRIWare的专有格式,如CPK、USM、AWB、ACB。图片文件没有扩展名,视频使用USM封装,且音频轨道使用了加密文件头的HCA格式。
解包方案:首先使用GARBro打开cpk格式的封包。
此类游戏的AWB、ACB文件更改了索引,VGMtoolBox无法正确处理,请使用VGMStream处理,得到一大堆音频。
USM文件可用VGMToolBox解封装,得到正常的视频轨和bin格式的音频轨。将音频轨的扩展名更改为hca,然后用VGMStream播放或转码。WannaCRI无法正确处理音频轨。
texbg和texeg的没有扩展名的图片文件实际上是DXT1编码的DDS格式图片,但缺少文件头,需要添加正确的文件头后才能打开查看。此时得到的图片是旋转过180度的,还要再旋转回来。这些问题可能是来自于Unity引擎的一些特性。以上处理过程可以使用工具YuruCampHeaderAdder处理。其他几个图片包的图片使用了DXT5编码,在热心网友的帮助下也已经可以处理。
YuruCampHeaderAdder|Github 需要pip依赖 pillow
Unity引擎+未知封包
主要游戏:幻想マネージュ(Switch),心灵判官:无法抉择的幸福(PC)
特征:有Unity引擎的一些特征,前者使用QPK格式封包,后者使用CPK格式封包。
解包方案:幻想マネージュ(Switch):QPK文件似乎可以由最新版的GARbro处理,双击DATA#00002打开,其中的bg按文件夹打开,可以查看其中的图片文件。记得按顺序从上到下打开各个文件,否则有可能报错。 后者与前面的CRIWare封包相同,但内容上有很大差别,将大多数内容放在一个包里,图片没有复杂处理。
PS2平台多引擎汇总
PS2平台游戏很多,引擎种类也很多,不太方便一一列举,此处只有引擎信息,具体游戏请查看在线表格,或自行分析。
主要推荐使用 PS2VNTool 处理这些游戏,该工具需要自行选择游戏名称来选择处理方案。另一些游戏推荐使用Crskycode版本或我个人编译版本的GARbro。在使用GARbro处理此类游戏时,如果遇到全部图片都是半透明的情况或应当透明的部分为黑色,请在 视图-偏好设置-TIM2设置中修改图片透明度格式。
PS2VNTool|Github
PS2平台的视频文件通常有两种,一种是CRIWare的SFD格式,音频轨通常为ADX格式,另一种是PS2原生的PSS格式,音频轨为SS2格式,视频轨均为MPEG-1/2格式。两者均可以使用VGMtoolBox解封装,由VGMStream转码音频。
KID/Regista SPC
SPC格式图片,使用lzss stream压缩,其中的内容为LBG作为标签的图片格式,可以使用GARbro处理。PS2VNTool的处理似乎有问题。音频为ADX格式。
KID/Regista BIP
BIP格式图片,使用lzss stream压缩,其中的内容没有格式标识,已由GARbro支持。但是CHARA没有支持。音频为ADX格式。
KID/Regista BIP 256色
BIP格式图片,使用lzss stream压缩,其中的内容没有格式标识,尝试由GARbro支持,但是效果还是有些奇怪,不确定是否已正确处理。
KID/5pb KLZ
KLZ格式图片,压缩方法不明(被称为lzh),其中的内容为TIM2图片格式。当前由GARbro测试版或PS2VNTool支持。音频为ADX格式。
Princess Soft Zerosystem-PACs
TIM2格式图片。PAC包可由GARbro处理。BGM音频为VGS-Princess Soft Header,可由VGMStream处理,SE和Voice为HBD格式,VGMStream正尝试支持此格式,可能存在问题。
Princess Soft Zerosystem-PACBIN
TIM2格式或LZS压缩的TIM2格式图片,压缩在一个巨大的PAC.BIN中,文件名列表信息在SLPM可执行文件中,PS2VNTool支持。BGM音频为VGS-Princess Soft Header,可由VGMStream处理,SE和Voice为HBD格式,VGMStream正尝试支持此格式,可能存在问题。
KID/5pb MAGESv1
DAT压缩包,使用CPS格式压缩图片,具体格式不确定。其中一些游戏对CPS文件进行了额外加密。PS2VNTool支持。
KID ogdt
音频在AFS压缩包中,ADX格式,图片为ogdt header,目前不能处理。
KID旧作中文PC移植版
由娱乐通、英特、光谱等发行的旧PC版,使用HAC封包、HGP图片格式,个人没研究过,只直接推荐工具,有问题请去问原维护者。
DeHAC 和 HgpViewer 很多年前从某论坛流出的软件,只支持较旧的游戏,没有源代码
CNGALTools|Github 需要 DotNet 6 自行编译
工具维护状态

本段内容待更新
左侧为工具名称,第一列表示是否开源,第二列表示是否可在本地直接编译(包含是否可获取依赖项、是否兼容最新开发环境,python不计入),第三列表示是否有人在维护(黄色为我在尝试维护)。星号代表是,X代表否,绿色和红色代表已确认,白底和空白代表未确认。
对于三红了的工具,意味着完全无法维护,遇到了新问题只能问神仙了。
图片链接待更新
20250306-Never7PCSteam
测试了 Never7 和 Ever17 的 Steam 版本。MAGES v5引擎,webp图片,webm/vp9/vorbis视频。mvl文件也正常,没有改动。
但是发现了一个奇怪的bug:如果将chara的webp格式由Garbro转换为png,似乎会导致后续处理不正常,所以建议在提取时选择保持原样,由MvlView处理webp格式。
20250223-Gameinfolist
整理的MAGES原作游戏、PS2游戏引擎信息,不定期更新
https://1drv.ms/x/c/9b6ad7621ed2a4c0/EWhbExaTYg5Mk7zfboxqcakBEfUjW698YIjWbivFidvxWQ?e=bdT1Ei
20250121-PS2info
重新整理PS2平台各个游戏的信息。
KID/Regista SPC
SPC格式图片,使用lzss stream压缩,其中的内容为LBG作为标签的图片格式,可以使用GARbro处理。PS2VNTool的处理似乎有问题。音频为ADX格式。
KID/Regista BIP
BIP格式图片,使用lzss stream压缩,其中的内容没有格式标识,已由GARbro支持。但是CHARA没有支持。音频为ADX格式。
KID/5pb KLZ
KLZ格式图片,压缩方法不明(被称为lzh),其中的内容为TIM2图片格式。当前由GARbro测试版或PS2VNTool支持。音频为ADX格式。
Princess Soft Zerosystem-PACs
TIM2格式图片。PAC包可由GARbro处理。BGM音频为VGS-Princess Soft Header,可由VGMStream处理,SE和Voice为HBD格式,VGMStream正尝试支持此格式,可能存在问题。
Princess Soft Zerosystem-PACBIN
TIM2格式或LZS压缩的TIM2格式图片,压缩在一个巨大的PAC.BIN中,文件名列表信息在SLPM可执行文件中,PS2VNTool支持。BGM音频为VGS-Princess Soft Header,可由VGMStream处理,SE和Voice为HBD格式,VGMStream正尝试支持此格式,可能存在问题。
KID/5pb MAGESv1
仍然不能处理。
KID ogdt
音频在AFS压缩包中,ADX格式,图片为ogdt header,目前不能处理。
DDS DXT 格式简析
工具:GIMP,NVIDIA Texture Tools
待补充
DXT1
4bpp,DXT1
最经典的格式,由于其像素数一半的体积比较容易认出
DXT3/BC2
8bpp,DXT3
无透明度的图片左半边都是FF,应该比较明显,没见过实际使用
DXT5/BC3
8bpp,DXT5
无透明度的图片左半边是FFFF开头,有些是FFFF0000-00000000,有些则不是零,但从上到下一样,应该比较明显
BC3n
8bpp,DX10
包含那个非整行的文件头的话,0D和0F列会有明显的纵向规律,普遍是F9FD之间,0003列隔一段就会有00000000,没见过
BC5/ATI2
8bpp,ATI2
无明显特征,没见过
BC5u
8bpp,DX10
无明显特征,似乎隔一段内容就会出现8行明显含0的区域,没见过
BC6Hs
8bpp,DX10
无明显特征,似乎隔一段内容就会出现8行明显含0的区域,有比较明显的重复行,没见过
BC7
8bpp,DX10
包含那个非整行的文件头的话,0A0B列会经常蹦出FFFF或FEFF
自行发版MAA指北
写在前面
MAA是开源软件,原则上任何人都可以在遵守相应开源协议的前提下自行改动、分发。
但是,出于对您的账号与数据安全,不建议您使用任何非官方的发行版。除非您了解自行制作的发行版有哪些新功能、哪些漏洞,也不建议尝试使用自行制作的发行版。
如果您认为MAA有哪些需要改进的、添加的功能,建议前往主仓库与维护者讨论。
基本状况
当前,基本所有的MAA相关代码和素材都储存在github仓库,发版过程也依赖github actions的运行,进行后续步骤需要一个github账号。
如果只是修改和替换资源、素材,可以不用自行发版,直接在本地进行素材替换即可。只有C++、C#代码的修改才需要通过自行发版获得一个发行版。其实自己在本地使用Visual Studio生成的dirty版本也可以正常使用,是否需要自行发版请自行斟酌。
在发版时,如果使用一个官方版本中存在的版本号,那么在官方版本推出新的版本号时,您的MAA客户端可以通过自动更新变为官方最新版本,但添加的额外文件不会被自动移除。如果您不希望发生这种自动更新,请禁用自动更新功能。如果您使用了符合规则但不存在的版本号,那么自动更新时会下载完整包并替换,添加的额外文件很可能也不会自动移除。如果您使用了一个远超当前版本的版本号,我不确定会发生什么,不建议这样做。
具体方法
首先,克隆主仓库至自己的github账号下。在自己的仓库的actions页面,此时应当触发一个“ci”workflow,大约12~20分钟左右生成完毕,在workflow详情页面最下面的Artifacts中会有几个CI-build版本的压缩包,页面左侧最后一项release没有运行。这个生成流程将是我们需要的工作流,但是我们还需要给它添加一个“正式”的版本号,并且推送到release。
回到自己的仓库的主界面,点击分支,生成一个新分支,我们对源代码的修改和对ci工作流的修改都将在这个分支进行,避免影响主线。
在新的分支下,打开 /.github/workflow/ci.yml 文件,这就是ci工作流的内容。接下来要进行一些修改。
- 删除76-86行的changelog生成,479行的移动changelog,488行的输出changelog。
- 删除101-102行的生成ARM版。
- 删除185-466行的ubuntu版和macos版的生成工作,并删除469行release步骤对ubuntu版和macos版的依赖,和480行的移除macos-build。
- 将491行的prerelease设置改为
prerelease: true。 - 删除493行以后的生成OTA工作。
然后为了方便自行使用,我们在仓库根目录的 package-definition.json 添加一个伪OTA包,仅包括程序文件即可。
1 | { |
添加你想要的修改后,来到你的仓库的release页面,点击 Draft a new release,生成的新tag处输入一个当前的版本号,如果是内测版的版本号就直接输入 v5.4.2-alpha.1.d104.g2428a4610 这样的版本号,而不是主仓库下使用的alpha/*,因为我们不打算区分版本,全部将发行版放在此仓库。Target branch选择刚才添加修改的分支。然后勾选Set as a pre-release,随意填写title和description,点击发版。然后等待CI执行完毕,生成的发行版包和FakeOTA就会出现在这条release下。
操作解释
- 删除changelog
印象里是出过错误才删掉的,其实可以保留,不过也没人看,有需求建议手写。 - 删除ubuntu版和macos版,删除arm版
你不需要那个,对吧
不需要的东西会消耗更多的时间。尽管它们会并行执行,还是有可能会消耗更久。
而且linux和macos使用的编译器对代码要求更严格,如果有未使用的变量会报错误而不是警告等等,可能卡死工作流。 - 删除OTA生成
这个工作需要你再克隆MaaRelease仓库、添加拥有写入权限的token,反正我们也不需要将自己的版本的OTA推送给谁,删掉它、把这些工作留在主仓库就好。 - prerelease设置
避免仓库被设置最新发行版,也避免误导其他人 - 479,480行
删除没有的东西会报错,所以相应改动后记得删掉这里。
参考代码
最后发现懒得截图了,请自行参考仓库代码。
2024年5月版本
2024年11月版本
release效果
Majiro引擎解包经历
屑游戏: ノスフェラトゥのオモチャ
先是简单使用Garbro查看,音频没问题,rc8格式的图片也能看,rct格式图片说需要密码,无法打开,列表里记录的密钥也没有对应的。查看压缩包格式显示是Majiro archive。
于是开始搜索,找到了 MajiroTools 和 majiro-py 。看了半天介绍后,弄明白了做法。
折腾过程:
garbro解arc,找到start.mjo
git clone https://github.com/trigger-segfault/majiro-py.git
cd majiro-py
cd src
python -m mjotool -d d:\Decripted\Majiro\start.mjo
ldstr before pic_key_set
python 3.12 可用。考虑到脚本开发时间,3.10 应该也可以。
Steam Emu 简易使用分析
参考:Goldberg_Lan_Steam_Emu_master–475342f0 - 20230509
Chaos Head Noah Steam版海鲜版应当是使用了goldberg的steamapi64.dll,可能也是因此无法使用汉化补丁。
然后在一次手贱中,海鲜版在steam客户端开启时启动,导致此后海鲜版无法直接启动,显示需要从steam才能启动。
个人推测steam客户端有办法追踪各个可执行文件,记录在自身的数据中或注册表中(没找到)。
于是……一番折腾后,发现可以使用goldberg的experiment_steamclient脱离客户端启动游戏,顺便还能正常启用汉化补丁。
仅此记录。
建议以后不要尝试直接运行未破解的游戏,已破解的游戏也不要在有steam客户端的环境下使用。
MAGES引擎游戏资源提取方法指北v2.3
基于v2.2进行少量更新,此处只写更新的部分。
写在前面
根据一些软件的问题反馈,Github Runner和Visual Studio自2024年6月中的一次更新后所编译生成的程序可能无法在Windows7上运行。如果您仍在使用这个系统,请注意此问题,并根据自身情况选择更新系统或者使用2024年6月前的版本。
通用处理逻辑
GARbro个人维护版本迁移仓库。我为个人维护版本和crskycode版本添加了自动构建脚本,如果您想要体验最新版的功能但不方便在本地构建,可以在登录Github账号后在对应仓库的 Actions 下找到对应的workflow,下载其中的ci-build版本的程序。根据仓库设置,这些内容会保留1-3个月不等。
GARbro 个人维护版本|Github 需要DotNet Framework 4.6.2
MAGES引擎-PC端
有网友重置了此脚本。个人不对其功能和稳定性做保证。
ChaosChildPCTools-wangyw15|Github 当前版本(53fe761)需要Python3.12,需要pip依赖 pillow >=10.1.0,<=10.3.0
MAGES引擎早期版-PSV
使用了类似BGM_AT9.MPK命名的MPK文件可以用最新版的GARbro打开。
M2/E-mote/KaledoADV引擎
PS3平台的密钥现在有办法获取,您需要安装并配置好RPCS3模拟器,在工具栏选择 Utilities-Decrypt PS3 Binaries,选择对应游戏的 EBOOT.BIN 文件,解密得到一个 EBOOT.elf 文件,然后可以按类似PSV版的方法,在”script_info.psb.m”等一系列文件名前找到。
Unity引擎
AssetStudio原版已长时间未更新,推荐两个有少量更新维护的版本。
AssetStudio-zhangjiequan|Github 需要DotNet Framework 4.7.2 或 DotNet 5/6
AssetStudio-aelurum|Github 需要DotNet Framework 4.7.2 或 DotNet 6/8
Unity引擎+CRIWare封包
YuruCampHeaderAdder 在热心网友的帮助下已经可以处理其他几个图片包。
Unity引擎+未知封包
幻想マネージュ(Switch):QPK文件似乎可以由最新版的GARbro处理,双击DATA#00002打开,其中的bg按文件夹打开,可以查看其中的图片文件。记得按顺序从上到下打开各个文件,否则有可能报错。
AVD 游戏异常 终
经测试,此问题已在 Android 模拟器 (35.1.18) Beta 版 修复,也可能更早。
34.2.16 稳定版 仍存在此问题。未测试 35.2.* Canary 版。
总之结束了。
手动改变AVD版本-续
如何手动安装指定版本的模拟器
如需在 Studio 上手动安装指定版本的模拟器,您需要将所需的模拟器软件包内容粘贴到 SDK 安装目录中,然后更改 package.xml 文件中指定的模拟器版本。具体而言,请按以下步骤操作:
找到您的 SDK 安装目录。此目录的默认位置因平台而异:
在 Windows 上,该目录为 %LocalAppData%\Android\Sdk。这通常可以扩展为 C:\Users<username>\AppData\Local\Android\Sdk,不过可能会因系统而异。
在 macOS 上,该目录为 $HOME/Library/Android/sdk。
在 Linux 上,该目录为 $HOME/Android/Sdk。
您可以打开 Studio 并依次点击 Android Studio > Preferences > Appearances & Behavior > System Settings > Android SDK,查看 SDK 安装目录的位置。Android SDK Location 文件路径即是 SDK 安装目录的位置。
如果您使用的是 macOS,并使用“访达”浏览内容,则默认情况下,Library 文件夹可能不会显示。如需转到该文件夹,请打开“访达”,然后依次点击“前往”>“前往文件夹”并搜索“资源库”。
重命名 SDK 安装目录中现有的 emulator 目录,因为下一步需要在这里解压缩新下载的 emulator 目录。例如,将其命名为 emulator_original。
解压缩下载的模拟器 ZIP 文件。将内容移到 SDK 安装目录中。
在 macOS 上:解压缩模拟器 ZIP 文件后,请通过运行以下命令清除模拟器软件包上的“quarantine”属性:
xattr -dr com.apple.quarantine emulator/
这样应该可以减少关于应检查还是屏蔽该软件包的消息。
将 emulator_original 目录中的 package.xml 文件粘贴到新的 emulator 目录中。
将 package.xml 文件中指定的模拟器版本更改为您已下载的要使用的版本。如需执行此操作,请滚动到 package.xml 文件的底部,然后找到如下文本:
您应在此处指定您已下载且想要安装的模拟器版本。
Kaleido ADV Workshop PS3版
终于PS3版也可以操作了。
不知哪个版本的RPCS3加了个解密可执行文件的功能,在 Utilities - Decrypt PS3 Binary,选择 EBOOT.BIN 直接解密即可,得到 eboot.elf。对于 Kaleido ADV Workshop 的游戏来说,又可以操作了。还是以文本打开 eboot.elf,搜索script,这次似乎是在它前面稍远一点的位置。直接用 switchkeyfinder 大概会报上百个可疑,不建议这样用。
然后就是愉快的按密钥用FreeMote解密psb了。
这次折腾的 Beyond The Future Fix The Time Arrows [BLJM60408] 是个早期版本,独有一个 RGBX8_SW 图片格式,FreeMote 3.8版本暂时无法处理,可以自行在 FreeMoteExtension.cs 第329行后加上 case "RGBX8_SW": 将其与 RGBA8_SW 并列处理,以暂时解决。
立绘文件的差分直接用了diff关键字描述,没分lipdiff和eyediff,而且还把一部分内容没放在json里,分到了imginfo.m.json里,而且缺少diffmap,总之mvlview可能不会支持这个格式。
音频文件也不能正确处理,建议加上 --raw 参数直接输出raw文件,自行修改为lpcm之类的后缀名由VGMStream处理。格式为ATRAC3+。
Refer: FreeMote#130
将Bilibili番剧页面变回旧版
小陈又一大恶行😈
新版番剧页面无法与“解除B站区域限制”同时工作,需要将其切换回旧版。然后返回按钮又被藏起来了,所以需要复杂操作。
首先打开一个B站页面(其实什么都可以,最好是需要转换的番剧页面),按F12进入调试模式,Edge在最上面一栏的工具栏里选“应用程序”(或点加号里找到它),选择“存储”-“Coockie”-“https://www.bilibili.com”,Firefox选择“存储”-“Coockie”-“https"//www.bilibili.com”,新建项目,名称为“i-wanna-go-back”,数值为2,然后删除名称为“buvid”开头的几个coockie条目(据说至少要删除“buvid3”),刷新页面即可。修改这些coockie不会丢失登录状态。如果有需求,可以将新建的条目的过期时间手动超级延后。
相关的,还有几个coockie条目也被建议修改,但没有修改似乎也没什么影响:“i-wanna-go-feeds”,数值为-1;“go-back-dyn”:1;“go_old_video”:1;“nostalgia_conf”:1。
以上方法基于旧播放页面仍然存在,仅向用户隐藏为前提,如果这个旧页面被彻底删除,则会失效。
2024-07-26:已失效
在 github action 中使用 nmake
在 github action 中使用 nmake
1 | - name: Add msbuild to PATH |
解析:
nmake 是VS提供的一个构建工具,在本地只能在“Developer Command Prompt for VS 2022”中调用。
如果想要在 github action 中调用,需要先启用这个工具。必须在cmd环境下,用call调用。
位置是由 microsoft/setup-msbuild@v2 展示的路径,目前是写死的,将来可能会变动,应当改进。
然后在bat调用时传入一个架构信息,可以使nmake进行跨平台构建。
然后就是比较正常的nmake指令。
手动改变AVD版本
书 接 上 回
其实 35.1.4 也不是不能用,但是需要把指定设备的 Emulated Performance - Graphics 改成 software,然后CPU占用爆炸,总之和不能用没区别。
手动替换AVD版本的方法如下:
androiddevtools.cn 手动安装配置Android Studio - 博客园
大概就是这个原理,手动下载一个指定版本,替换掉%ANDROID_HOME%\emulator文件夹内Android Studio安装的版本(这个文件夹只有程序不含数据,不用担心)。缺点是此后Android Studio就会认为你没有安装AVD,想再次回到自动更新需要手动删掉emulator文件夹(否则会安装到emulator-2文件夹)。
androiddevtools.cn 似乎主要提供一些RC版本和Canary版本,没有给此前的 35.1.4 和当前卸载后自动安装的 34.2.14 。另外,此网站可信度未知,如果您不信任此下载站点,可以将提供的链接中 https://redirector.gvt1.com/edgedl/android/repository/ 替换为 https://dl.google.com/android/repository/ ,也能下载到相同的文件。这两个站点的连接可用性都比较迷惑,可能需要关掉科学工具再访问。
当然,折腾一圈后黑屏问题仍然没有得到解决。
AVD 35.1.4 版本异常
一直用AVD打游戏,遭到制裁了。
前一个版本 34.* 运行时会强行缩放窗口到一个非常小的状态,其他功能方面倒是一切正常。
当前 35.1.4 版本,首次启动时会报“找不到 android-emu-base-logging.dll”,但实际上 libandroid-emu-base-logging.dll 就在 emulator/lib64 下面躺着呢,报的目标少个lib。同样找不到的还有 libglib2_windows_msvc-x86_64.dll 。
然后最抽象的是,运行游戏是可以运行的,甚至启动时还能正常几个画面,后面就黑屏了,但是似乎还在正常运行……就十分抽象。估计短时间内根本找不到这个bug,没救了。
再战libwebp
如果安装 Visual Studio 时没有勾选C++ ARM相关组件,后续再安装时不会生成Tools Command Prompt的快捷方式,需要手动制作一个。
安装C++ ARM相关组件后, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build 目录下会有 vcvarsamd64_arm64.bat 文件,即是需要用到的快捷方式。
在任意目录下新建快捷方式,目标填 %comspec% /k "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" ,起始位置填 "C:\Program Files\Microsoft Visual Studio\2022\Community\" ,和其他Tools Command Prompt一样,文件名为 x64_arm64 Cross Tools Command Prompt for VS 2022 。然后将其移动至 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools\VC 目录下,和其他Cross Build快捷方式一起。
相应的,打开此窗口,运行以下命令,即可编译ARM64版的libwebp。
1 | nmake /f Makefile.vc CFG=release-dynamic RTLIBCFG=dynamic ARCH=arm64 OBJDIR=output |
修复win10画图
MSPaint莫名其妙消失了,复制单个文件也没法用,Microsoft Store里只有Win11版本。
折腾半天最后用的命令行:
1 | DISM /Online /Add-Capability /CapabilityName:Microsoft.Windows.MSPaint~~~~0.0.1.0 |
莫名其妙的。用DISM的checkhealth那几个指令也查不出来。
好消息是能用了,坏消息是Microsoft Store里原来有的一个更新版本拿不到了。
Bilibili港澳台番剧字幕获取
近期CC字幕工具失效,改为手动获取。
准备
- Edge浏览器,Firefox的搜索功能不知道为什么搜不到
- 安装TamperMonkey
- 安装脚本解除B站区域限制,Bilibili CC字幕工具(虽然没法直接使用,但需要挂载这个脚本才能刷出字幕链接)
- 安装Python,下载bcc2ass
开始
- 浏览器登录账号,配置解除区域限制的脚本
- 打开该集番剧页面,按F12打开开发工具
- 点击下侧菜单栏中“控制台”按钮右侧的加号,添加并使用此处的“搜索”
- 搜索
aisubtitle.h或subtitle_url,找到图中类似结果的一处链接,复制aisubtitle.hdslb.com后边这一串链接至结尾引号,至新标签页打开
- 保存该json文件至本地,或复制该页json的全部内容至本地文件
- 运行bcc2ass脚本,将json文件转换为srt字幕(转换为ass字幕似乎需要更多参数),指令:
bcc2ass.py -i input.json -o out
Github ping不通、无法使用git pull
可能又是什么奇葩操作,github.com 默认响应的ip 20.205.243.166 无法连接。
如果在使用tcppioneer,请将github.com的响应ip改为其他响应地址。
获取其他响应地址的方法:访问 itdog.cn 或同类网站,ping指定网站网址,选择其中能够响应的ip,写入tcppioneer的配置文件。
PS2ImageFormat
前文
没想到第一个突破口竟然是SPC。
和预想的一样,PS2平台上不太可能上复杂图片编码,最后果然只是用了LZSS压缩文件流。
工具 GARbro-Mod-1.0.1.2E14
MAGES引擎游戏资源提取方法指北v2.2

原文 cv22952557
旧版原文发表于 cv10614833,现对原文进行更新和更正。
Committee of Zero对MAGES引擎进行了较为详细的定义和描述,有兴趣可以阅读原文。
Committee of Zero|gitbooks.io
写在前面
不再赘述版权、软件安全等问题,请自行注意。
本文旨在解析MAGES引擎的多媒体资源格式信息,此外也尽可能提供一些MAGES公司使用的其他引擎的信息。需要您有一定的计算机知识基础和动手能力。
可能用到的一些运行时、通用依赖项:
.Net 5/6/7/8, .Net Core
目前推荐安装.Net 6 Desktop Runtime和.Net 8 Desktop Runtime这两个LTS版本。这几个版本之间的代码很容易升级,但软件需求的运行时版本在编译时已经决定,大多数情况下不能相互替代,请根据软件的要求安装对应的版本。
.Net Framework 4.6.1/4.7.2/4.8
完整安装的Win10系统应该自带4.8版本运行时,如没有请自行安装。4.8版本运行时可以运行包括4.5-4.8版本的软件。Win8、Win7系统需要安装一个指定系统更新后才能安装该运行时。注意,.Net Framework 与.Net Desktop是不同的运行时,不能互相替代。
Python3.x
推荐安装Python3.8及以上的版本,建议选择最新版。
pip依赖项
常用的依赖项有pillow,numpy,unrpa等,可在安装python后使用pip install命令安装。如果您需要多个python环境或遇到包版本冲突,请自行配置annaconda等环境工具。
目前pillow 10.1.0版本的改动可能导致一些尝试引入图片格式的python脚本无法运行,如遇到此问题请查找该脚本的更新,或将pillow回滚至10.0.1版本。
Visual C++ Redistributable
建议安装最新的VC Redistributable(2015-2022)。Win10/Win11系统可以直接在Powershell使用指令“winget install Microsoft.VCRedist.2015+.x64”安装。部分C/C++程序可能要求旧版的VCRedist,否则无法运行,需要另行安装。
通用处理逻辑
由GARbro处理外层的文件封包和图片格式转换,由VGMStream处理音频格式转换,由VGMToolBox处理视频解封装。
以这三个软件作为最通用的工具,处理一般的没有额外加密的游戏就足够了。
目前GARbro主分支虽偶有更新但很久没有发布release,仍能处理大部分MPK和CPK。如有其他需求、遇到问题或想自行编译推荐使用crskycode版本。
VGMStream只提供了命令行工具和网页版工具,且网页版工具有较多问题,如果需要用本地的图形化工具可以安装foobar2000播放器,配合VGMStream的插件版使用。
VGMToolBox已长时间没有更新,目前仍能正确处理多数相关视频文件。
个人维护的版本提供一点对相关游戏的额外支持,可能有bug。
GARbro|Github 需要DotNet Framework 4.6
GARbro-crskycode|Github 需要DotNet Framework 4.6.1
GARbro 个人维护版本|Github 需要DotNet Framework 4.6.1
VGMStream
foobar2000
VGMToolBox|SourceForge 需要DotNet Framework 4.5
VGMToolBox 个人维护版本|Github 需要DotNet Framework 4.8
MAGES引擎-PC端
主要游戏:命运石之门系列(Steam版),混沌之子,Yu-No 2017版,秋回8+FD,SinMemo,机器人笔记+FD
特征:使用MPK或CPK格式进行封包,图片使用常见格式,音频使用OGG、ADX、HCA格式,视频使用USM、BK2等格式封装,立绘图片有一定程度的加密。

解包方案:参考原文。
MPK、CPK解包推荐使用GARbro,一般不会有问题,不需要密钥。
ADX、HCA格式音频推荐使用VGMStream,可直接转换为WAV格式,或使用命令行进一步转换为其他格式。一般不会有问题,不需要密钥。也可以使用GARbro自带的解码功能,另有VGAudio、HCADecoder等工具备用。
USM格式视频推荐使用VGMToolBox的Misc. Tools/Stream Tools/Video Demultiplexer进行解封装,在Format选项选择对应的格式,获得视频流和音频流。音频流一般使用ADX、HCA格式,参考上文处理。视频流大多使用AVC编码,并被VGMToolBox使用m2v扩展名,且可能没有时间信息导致无法正常播放,需要使用MKVToolNix或FFMPEG等工具进行封装,然后可以正常播放。游戏SinMemo的视频使用了古老的MPEG-1编码,部分播放器可能无法播放,请尝试使用功能更强大的播放器,处理过程相同。另有工具WannaCRI可以解封装USM视频格式。
bk2格式视频推荐使用BINKVideo的官方工具RADVideo观看和处理。
加密的立绘分为lay格式和mvl格式两种,早期游戏使用lay格式,推荐使用ChaosChildPCTools处理。GARbro对lay格式的处理存在问题,不建议使用。mvl格式也可以使用ChaosChildPCTools处理,但无法直接得到最终成果,推荐使用mvl-preview处理。另有工具undice可以处理mvl格式,但速度较慢。




VGAudio|Github 需要DotNet Framework 4.5.1
HCADecoder|Github
WannaCRI|Github 需要pip依赖 ffmpeg-python、python-json-logger,需要将FFMPEG、FFProbe添加至系统PATH变量
MKVToolNix
FFMPEG
FFMPEG-Builds|Github
RADVideo
ChaosChildPCTools|Github 需要pip依赖 pillow
Mvl-Preview|Github 需要DotNet Framework 4.6.1 或 DotNet 6/7/8
undice|Github 需要pip依赖 pillow
MAGES引擎次世代版-PC
主要游戏:混沌之脑(Steam、GOG版)
特征:图片使用webp格式,且使用WAV作为扩展名。视频使用USM格式,但没有扩展名。立绘使用mvl格式。压缩包内几乎所有文件使用纯数字命名。
解包方案:与原版基本相同,但需要自行猜测文件内容。
图片可使用批量重命名工具修改扩展名为webp后打开。如果在使用GARbro,可以尝试选中文件,右键选择文件类型为图片,然后刷新,可以预览图片。

立绘可使用ChaosChildPCTools或mvl-preview处理。
MAGES引擎早期版-xbox360
主要游戏:秋回6+FD(xbox360),秋回7(xbox360/PC),code18(xbox360),命运石之门系列(xbox360),混沌之脑LCC(xbox360),11eyes(xbox360)
特征:压缩包命名与MAGES引擎相似,但使用dat扩展名,用HEXEditor类工具打开可看到文件头使用LNK4作为特征格式名。具体格式可能与MAGES引擎有较大差别。
解包方案:使用来自asmodean的工具exlnk4。具体内容不详,一般不会有问题。视频文件使用WMV格式,一般的播放器可以播放。
如果获取到的游戏使用unpacked/XEX/JTAG格式,那么可以直接看到XEX格式的可执行程序和压缩包,并进行解包。如果是其他格式,还需要将其转换为此格式。
如果游戏是使用ISO扩展名的单文件,则是XboxISO格式,应与常见的ISO格式不同,无法在Windows上挂载或使用一般解压缩软件解压缩,需要使用工具Xbox360 ISO Extract解压缩转换为unpacked格式,或使用VGMToolBox的Misc. Tools/Extraction Tools/Generic/ISO-Archive Extractor预览和提取。如果文件大小在7.29GB左右,可以猜测该文件为Redump标准的ISO文件,转换过程不会有问题。关于Redump的具体信息可以在redump.org查询。如果文件明显小于7GB,则可能是重构的ISO文件,可能因重构过程中出现错误而无法转换。如遇到此问题请尝试寻找其他格式的版本。

如果游戏使用无格式的字母、数字字符串文件作为可执行文件,且相邻的data目录下的文件全部为明显类似分卷压缩的同大小无格式文件,那么该游戏版本为GOD格式。可使用工具God2iso转换为重构ISO,再转换为unpacked。此过程可能因重构过程中出现错误而无法转换。已知游戏Dunamis15在网络上流传的GOD格式版本必定有此问题。
exlnk4|asmodean 该工具可能需要使用VCRedist-2012,需要另行安装
[Xbox360 ISO Extract]未找到官方网站
God2Iso|Github 无官方构建版
MAGES引擎-PS3
主要游戏:混沌之子(PS3),命运石之门0(PS3)
特征:与PC版基本相同。lay文件使用BigEndian编码。视频使用USM封装。
解包方案:沿用PC版方案。处理lay文件时请使用ChaosChildPCTools中单独的PS3版脚本。
PS3平台的游戏分享大多使用unpacked形式,即直接暴露所有文件,也称JB-Folder格式,不需要额外的预处理。
命运石之门0 PS3汉化版常见ISO格式的分享,使用了ISO-Decrypted格式,使用7-Zip当作压缩包解压缩即可。
网络上还流传有一些ISO-Redump标准的ISO格式分享,与解密版对应,称为ISO-Encrypted格式,对USDIR目录下的文件进行了加密,与解密版在文件大小上没有区别,甚至也可以直接使用7-Zip解压缩,但解压缩得到的文件无法正常读取。两者只有通过对比文件哈希值或解压缩后查看文件时才能看出区别。两种ISO格式可通过工具PS3Dec转换,并需要密钥。密钥可在redump.org的ISO对应页面得到。
MAGES引擎早期版-PS3
主要游戏:秋回6+FD(PS3),秋回7+FD(PS3),混沌之脑LCC(PS3),命运石之门系列(PS3),花咲くまにまに(PS3),机器人笔记(PS3)
特征:图片为无格式无压缩点阵图,音频为ADX格式但没有扩展名,视频使用SFD封装,MPEG-1或MPEG-2编码。lay文件使用BigEndian编码。压缩包内几乎所有文件使用纯数字命名。
解包方案:基本沿用PC版方案。
图片可使用RNE Image Conventer转换为常见格式,或使用我个人维护版本的GARbro,选择文件格式为图片进行预览。音频可添加.adx后缀后使用VGMStream转换为常见格式。SFD视频可使用VGMToolBox解封装,后续处理相同。处理无后缀名的lay文件时请使用单独的PS3版脚本,其中偶数号的文件是图片,奇数号的是lay文件。SG Phenogram的立绘文件似乎有一点问题,无法正确解析,请使用其他平台的版本。
RNE Image Conventer|Github 需要pip依赖 pillow
MAGES引擎-PSV
主要游戏:命运石之门精英版(PSV),春物续(PSV),混沌之子+LCC(PSV),SG0(PSV),Yu-No 2017版(PSV),秋回8+FD(PSV)
特征:封装与PC版基本相同。图片使用gxt格式,视频使用MP4封装的AVC编码,音频使用索尼自制的at9格式。
解包方案:基本沿用PC版方案。
图片可ChaosChildPCTools中的gxt.py转换为常见格式。音频可使用VGMStream转换为常见格式。立绘使用ChaosChildPCTools处理。
PSV平台的游戏分享有各种格式,常见的有MaiDump,NoNpDrm,VPK,PKG等,其中MaiDump格式在Windows环境下可以直接提取;NoNpDrm格式可以看到文件但无法正常读取;VPK格式为zip格式封装的压缩包,具体情况与提取格式有关;PKG格式可使用配置好的Vita3k模拟器以及PKG配套的密钥提取其内容。
NoNpDrm格式的游戏如果使用zip格式的压缩包,可以尝试使用配置好的Vita3k模拟器导入游戏,在此过程中解密,得到正常的文件。此过程要求该包中没有使用psarc,压缩包格式必须为zip,可能还要求是zip-Deflate,其他压缩格式请尝试解压缩后重新压缩成zip-Deflate,符合以上要求才可能成功。
MAGES引擎早期版-PSV
主要游戏:秋回6+FD(PSV),秋回7+FD(PSV),命运石之门(PSV),SG比翼(PSV),机器人笔记精英版(PSV),SG表征图(PSV),春物(PSV)
特征:与PS3同时期的早期版相似,图片为无格式无压缩点阵图,音乐音频为无格式的索尼自制的ac9格式,且可能使用其他扩展名,语音音频使用hca格式,视频使用usm格式。实际上还可能有一些旧版和标准版混合的情况。
解包方案:图片可ChaosChildPCTools中的gxt.py转换为常见格式。音频可使用VGMStream转换为常见格式。立绘使用ChaosChildPCTools处理,具体是否可用未测试。
此外还有几个游戏的音频所在压缩包使用了类似BGM_AT9.MPK的命名,此类游戏的MPK压缩包使用了不同的索引,无法用目前版本的GARbro解析,如需要解包可以使用我个人维护版本的GARbro,或使用ChaosChildPCTools的mpk.py处理,或直接选择其他平台的版本。
MAGES引擎-PS4
主要游戏:?
特征:?
解包方案:目前PS4的游戏资源还是太少了,不足以支持论证。
常见PKG格式分享,可以使用工具PS4-PKG-Tool解包为unpacked形式。过程需要密钥,官方的PKG密钥常为全0或全1。得到的文件可按PC版或Switch版的方案处理。
使用PS4-PKG-Tool时还需要下载PS4-Fake-PKG-Tools的全部文件,放置于同一文件夹下。
PS4-PKG-Tool|Github 旧版需要DotNet Framework 4.7.2,新版需要DotNet 7
PS4-Fake-PKG-Tools|Github
MAGES引擎-Switch
主要游戏:命运石之门系列,Yu-No 2017版,秋回系列,机器人笔记+FD,SinMemo(过渡)
特征:与PC版基本相同,图片使用常见格式,音频使用HCA格式,视频使用USM格式封装,立绘图片使用mvl格式。封包使用cpk、mpk格式,但更常见直接使用文件夹,用同名cls文件记录其中的文件名。
解包方案:与PC版基本相同,没有额外的问题。
Switch平台使用NSP、XCI格式存储游戏内容,一般NSP格式来自线上商店,一个NSP文件只能封装一份程序(主程序、更新包),XCI格式来自卡带,可以封装多个NSP文件,甚至可以封装多个游戏。两者之间可以通过工具NSC_Builder转换,可以看作没有区别。有时游戏分享者会使用NSZ、XCZ格式分享游戏,这种格式是民间研究的NSP、XCI格式的压缩版本,可使用NSC_Builder还原为对应格式。
NSP文件下封装的是NCA文件,可使用工具XCI-Explorer查看结构并提取NCA,再用SwitchExplorer打开NCA文件得到PC版类似的cpk等文件……老方法是这样的,对还原修改后的游戏有帮助,但只是提取没必要这么麻烦。
众所周知,Switch现在有两个模拟器yuzu和Ryujinx,只要在配置好的模拟器里右键选择扫描到的NSP、XCI文件,选择Extract,就能得到需要的文件。
以上工具均需要Switch密钥,模拟器除密钥外还需要系统固件,请自行获取。
NSC_Builder|Github
XCI-Explorer|Github 需要DotNet 6,其他分支的版本可以使用DotNet 7/8
SwitchExplorer|Github 需要DotNet Framework 4.6.1
yuzu 需要VCRedist2015+
Ryujinx 最新版需要DotNet 8
MAGES引擎次世代版-Switch
主要游戏:SinMemo(过渡),混沌系列,春物
特征:与旧版相比,几乎不再使用cpk、mpk封包而是使用文件夹和cls文件,图片(除SinMemo)使用webp格式,音频使用ns-opus格式,视频使用webm格式封装,视频流使用VP8、VP9编码,音频流使用Vorbis编码。
解包方案:与PC版基本相同。webm格式的视频需要功能较强的播放器播放。ns-opus格式的音频使用.opus作为扩展名,但使用了专有的文件头,与常见的ogg-opus格式不同,无法使用一般的播放器播放。需要使用VGMStream转码。而且使用VGMStream的fb2k插件也无法直接播放,需要将扩展名改为.lopus才能由插件解码。
rUGP引擎
主要游戏:Disorder6(xbox360/PS3),解放少女SIN(PS3/PSV),混沌之脑Noah(PS3/PSV)
特征:游戏内容除视频外,几乎全部文件体积集中在一个RIO格式文件上。PS3版视频使用AVI封装,MPEG-4视频编码、MP3音频编码。
解包方案:没有太好的方案。这个引擎的PC版被称为最难对付的ADV游戏引擎之一,只有几个针对age社PC版游戏的工具。
经测试,工具RioX可以处理游戏Disorder6两个版本和解放少女SIN的PS3版,得到背景图、EVCG和一些文本内容,无法得到音频和角色立绘。PSV版的相关游戏无法正确处理,建议使用其他平台的版本。工具RioX已经长时间未更新,且未开源。
视频编码较为古老,部分播放器可能无法播放,请尝试使用功能更强大的播放器。
RioX|archive 原网页已消失
M2/E-mote/KaledoADV引擎
主要游戏:Dunamis15(xbox360/PS3),Infinite Stratos系列(PS3/PSV),可塑性记忆(PSV),超自然九人组,五等分系列,匿名代码
特征:文件包使用_body.bin+_info.psb.m封包,视频使用对应平台常见格式。
解包方案:来自asmodean的exm2lib给出了早期两个游戏的解包方法,但没有后续更新。
现在推荐使用工具FreeMote。这是一个面向Emote相关各类封包格式的工具,支持KaledoADV引擎的封包。每一个游戏的封包都使用了不同的密钥,PSV版的游戏可用文本编辑器或HexEditor打开eboot.bin,在其中首次出现的”script_info.psb.m”前找到,PC版的在exe文件中同样位置。Switch版密钥位置不固定,请尝试用Ryujinx提取ExeFS,用KaleidoKeyFinderSwitch处理main文件,在所有可能是密钥的字符串中尝试。PSV、PC版也可使用此工具,但效率低下且不如直接查找直观。其他平台(PS3、Xbox360)不适用此方法。

匿名代码PC Steam版的视频文件使用了mzv格式后缀名,实际上是文件头有问题的MP4文件,修改文件头前四个字节后改为mp4后缀即可正常播放。
目前已经发现其中有至少三种MP4格式,需要修改为不同的值。
文件固定开头为0003位为00,0407位为ftyp,再后面一段到moov或mdat之前是MP4封装格式。例如mormal_end.mzv的封装格式为mp42 (mp42/mp41) ,所以将第03位的00修改为0x18,即可正常播放。对应关系如下,需要严格对应每一个关键字。
- 0x18 mp42 (mp42/mp41)
- 0x1C mp42 (mp42/mp41/isom)
- 0x28 M4V (M4V /M4A /mp42/mp41/isom/avc1)
未出现但可能用到的对应关系
- 0x14 isom (isom)
- 0x1C isom (isom/iso2/mp41)
- 0x1C mp42 (mp42/isom/avc1)
- 0x1C mp42 (mp42/iso2/mp41)
- 0x20 mp42 (mp42/iso2/avc1/mp41)
- 0x20 isom (isom/iso2/avc1/mp41)


PS3平台的视频使用了PAM封装,可用VGMToolBox解封装。另Infinite Stratos系列PS3版的视频的音频轨使用了GENH格式,用VGMToolBox解封装会得到视频轨文件、一个genh文件和一个lpcm文件并报错,此时需要用ShinHayarigamiExt中的GENH_comb.py将genh和lpcm拼装成一个文件或手动拼装,然后用VGMStream播放或转码。
exm2lib|asmodean 该工具可能需要使用VCRedist-2012,需要另行安装
FreeMote|Github 需要DotNet Framework 4.8
KaleidoKeyFinderSwitch|Github
ShinhayarigamiExt|Github
Unity引擎
主要游戏:この素晴らしい世界に祝福を! ~この欲望の衣装に寵愛を!~(Switch)
特征:Data目录下有Managed、Resources、StreamingAssets文件夹,有boot.config、resources.assets等文件,一般StreamingAssets文件夹体积最大。
解包方案:使用通用工具AssetStudio。不同的Unity游戏、不同平台间的差异可能很大,且可能有加密,请自行研究。
AssetStudio|Github 需要DotNet Framework 4.7.2 或 DotNet 5/6
Unity引擎+CRIWare封包
主要游戏:Yuru Camp Have a Nice Day(Switch),Summer Time Render Another Horizon(Switch)
特征:与Unity引擎相同,但StreamingAssets目录下许多文件使用了CRIWare的专有格式,如CPK、USM、AWB、ACB。图片文件没有扩展名,视频使用USM封装,且音频轨道使用了一定程度加密的HCA格式。
解包方案:首先使用GARBro打开cpk格式的封包。
此类游戏的AWB、ACB文件更改了索引,VGMtoolBox无法正确处理,请使用VGMStream处理,得到一大堆音频。
USM文件可用VGMToolBox解封装,得到正常的视频轨和bin格式的音频轨。将音频轨的扩展名更改为hca,然后用VGMStream播放或转码。WannaCRI无法正确处理音频轨。
没有扩展名的图片文件实际上是DXT1编码的DDS格式图片,但缺少文件头,需要添加正确的文件头后才能打开查看。此时得到的图片是旋转过180度的,还要再旋转回来。这些问题可能是来自于Unity引擎的一些特性。以上处理过程可以使用工具YuruCampHeaderAdder处理。texbg和texeg的图片可以这样处理得到正常的内容,但其他的包内的图片处理后却仍有问题。
YuruCampHeaderAdder|Github 需要pip依赖 pillow
Unity引擎+未知封包
主要游戏:幻想マネージュ(Switch),心灵判官:无法抉择的幸福(PC)
特征:有Unity引擎的一些特征,前者使用QPK格式封包,后者使用CPK格式封包。
解包方案:QPK格式不能用手头的工具打开,没有进一步研究。后者与前面的CRIWare封包相同,但内容上有很大差别,将大多数内容放在一个包里,图片没有复杂处理。
工具维护状态

左侧为工具名称,第一列表示是否开源,第二列表示是否可在本地直接编译(包含是否可获取依赖项、是否兼容最新开发环境,python不计入),第三列表示是否有人在维护(黄色为我在尝试维护)。星号代表是,X代表否,绿色和红色代表已确认,白底和空白代表未确认。
对于三红了的工具,意味着完全无法维护,遇到了新问题只能问神仙了。
20231101-PS2CRI
整理PS2平台KID、5pb、regista游戏所用引擎、图片格式信息。
SPC
GARBro标记了支持这一格式,但实际上应为基于Xbox360版Phantom of Inferno制作,部分兼容Xbox360版Root Double的spc文件,不支持PS2版本。
| Game | Archive Name | Archive Format | Picture Format |
|---|---|---|---|
| Iris | BG.AFS, BGL.AFS | AFS | spc |
| Memories Off Mix | BG.AFS | AFS | spc |
| Myself;Yourself | BG.AFS, BGS.AFS | AFS | spc |
| Myself;Yourself Sorezore no Finale | BG.AFS, BGS.AFS | AFS | spc |
BIP-T2P
GARBro标记了支持这一格式,但实际上是基于PC版Remember11制作,不支持PS2版本。经测试,PS2版Remember11的T2P文件与PC版同名文件相同,但BIP文件完全不同,且体积较小。
| Game | Archive Name | Archive Format | Picture Format |
|---|---|---|---|
| Aria - The Natural | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Aria - The Origination | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Ever 17 | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Ever 17 Premium Edition | BG.AFS, EV.AFS | AFS | BIP-T2P |
| IO | BG.AFS, EV.AFS | AFS | BIP-T2P |
| I’’s Pure | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Memories Off - After Rain Vol. 1-3 | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Memories Off - Sorekara | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Memories Off Duet | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Omoi no Kakera | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Omoide ni Kawaru Kimi - Memories Off | BG.AFS, EV.AFS | AFS | BIP-T2P |
| Remember 11 | BG.AFS, EV.AFS | AFS | BIP-T2P |
KLZ
无信息。Skip Beat有两张图片标记为BG_KURO.KLZ和BG_SIRO.KLZ,应为纯黑和纯白,文件头有TIM2字样。
| Game | Archive Name | Archive Format | Picture Format |
|---|---|---|---|
| 12-Riven | BGL Folder, BGS Folder | AFS | KLZ |
| Gokujou Seitokai | BGL Folder, BGS Folder | AFS | KLZ |
| Hakushaku to Yousei | BGL Folder, BGS Folder | AFS | KLZ |
| Hyakko - Yorozuya Jikenbo | BGL Folder, BGS Folder | AFS | KLZ |
| L no Kisetsu 2 | BGL Folder, BGS Folder | AFS | KLZ |
| Lucian Bee’s Evil Violet | BGL Folder, BGS Folder | AFS | KLZ |
| Lucian Bee’s Justice Yellow | BGL Folder, BGS Folder | AFS | KLZ |
| Mabino Style | BGL Folder, BGS Folder | AFS | KLZ |
| Memories Off - Sorekara Again | BGL Folder, BGS Folder | AFS | KLZ |
| Memories Off 5 - Togireta Film | BGL Folder, BGS Folder | AFS | KLZ |
| Memories Off 5 Encore | BGL Folder, BGS Folder | AFS | KLZ |
| Memories Off 6 - Next Relation | BGL Folder, BGS Folder | AFS | KLZ |
| Memories Off 6 - T-Wave | BGL Folder, BGS Folder | AFS | KLZ |
| Mizu no Senritsu | BGL Folder, BGS Folder | AFS | KLZ |
| Mizu no Senritsu 2 | BGL Folder, BGS Folder | AFS | KLZ |
| Monochrome | BGL Folder, BGS Folder | AFS | KLZ |
| Monochrome Factor | BGL Folder, BGS Folder | AFS | KLZ |
| My Merry May with be | BGL Folder, BGS Folder | AFS | KLZ |
| My Merry Maybe | BG Folder, CH Folder, IMAGES Folder | AFS | KLZ |
| Pizzicato Polka | BGL Folder, BGS Folder | AFS | KLZ |
| Ryuukoku | BGL Folder, BGS Folder | AFS | KLZ |
| Separate Heart | BGL Folder, BGS Folder | AFS | KLZ |
| Skip Beat | BGL Folder, BGS Folder | AFS | KLZ |
| Tentama 1st | BGL00.AFS, BGS00.AFS | AFS | KLZ |
| Tentama 2wins | BGL Folder, BGS Folder | AFS | KLZ |
| We Are | BGL Folder, BGS Folder | AFS | KLZ |
| Your Memories Off | BGL Folder, BGS Folder | AFS | KLZ |
MAGESv1
根据Committee of Zero的记录,这些游戏使用了SC3、SCX脚本,可以认为是MAGES引擎。其中Kanokon - Esuii由Asmodean-Reverse编写了解包程序。但是其中的CPS文件所需密钥并不通用,所以仍没有通用工具。
| Game | Archive Name | Archive Format | Picture Format |
|---|---|---|---|
| Ai yori Aoshi | BG.DAT | MAGES v1 | |
| Erde | BG.DAT | MAGES v1 | CPS-BMP-Failed |
| Kaiketsu Osabakiina | BG.DAT, BG2.DAT | MAGES v1 | |
| Kanokon - Esuii | BG.DAT, BG2.DAT | MAGES v1 | cps? asmodean |
| Night Wizard the Video Game | BG.DAT, BG2.DAT, CHARA.DAT | MAGES v1 | |
| Nurse Witch Komugi-Chan Magical te | BG.DAT, CHARA.DAT | MAGES v1 | |
| Umisho | BG.DAT, BG2.DAT | MAGES v1 | CPS-BMP-Failed |
Obfuscated
此类游戏在镜像内的文件进行了文件名混淆,还可能切分了文件头和文件体,总之无法进一步识别。
| Game | Archive Header |
|---|---|
| Memories Off CH | ogdt |
| My Merry May | ogdt |
| Natsuyume Yawa | ogdt |
| Never 7 | ogdt |
Unknown-CRIWare
| Game | Archive Name | Archive Format | Picture Format | Video Format | Audio Format |
|---|---|---|---|---|---|
| Futakoi Alternative | BK.AFS, BU.AFS | AFS | OBJ-Failed | SFD | ADX |
| Lucian Bee’s: Resurrection Supernova | GAMEDT.AFS | AFS | Broken-Unknown | PSS | CRI-adx? |
| Prism Ark Awake | PA_CG.DAT | AFS without filename list | ZZZ_header | SFD | ADX |
Unknown-non-CRIWare
| Game | Archive Name | Archive Format | Picture Format | Video Format | Audio Format |
|---|---|---|---|---|---|
| F Fanatic | VIS.PAC | Failed | PSS | VGS-Princess Soft | |
| Futakoi | NBGT.NFP | Failed | MLH-NBP | PSS | VAS |
| Futakoi-jima | NBGT.NFP | Failed | MLH-NBP | PSS | VAS |
| Missing Blue | AQCHAR.PFW | PFW3-Failed | PSS | ? | |
| Natsu-iro no Sunadokei | VIS Folder PAC.PAC | Failed | PSS | VGS-Princess Soft | |
| Que Ancient Leaf no Yousei | DATA.BIN | BIN-Failed-? | PSS | ||
| Rune Princess | IMAGE.BIN | ARC20 | TM2-TIM2 Readable | PSS | ADS Playstation-ADPCM |
| W Wish | PAC.BIN | BIN-Failed-? | LZS-TIM2 | PSS |
rootAVD 为AVD添加root
主角 rootAVD - github
AVD可以说是非常强大的模拟器,唯一缺点是没有自带root,尤其是近几个安卓版本都没有给没有Google-APIs的系统包,所以很需要这个。
只测试了Android 14 (API34),其他版本没有测试,应该能用。
准备
- 已安装Android Studio,并安装了Virtual Device Manager。
- 使用 ‘git clone’ 或下载rootAVD的源码至本地。
- 在系统环境变量添加“ANDROID_HOME”。
- 下载最新版Magisk,或者是需要的版本。
开始
如果需要,将下载的最新版Magisk的apk重命名为Magisk.zip,替换rootAVD目录下的同名文件。
然后启动需要root的AVD。
根据rootAVD的说明,在对应平台运行指定的指令。如Android 14 (API34)应使用
1 | .\rootAVD.bat system-images\android-34\google_apis\x86_64\ramdisk.img FAKEBOOTIMG |
此时AVD应当被安装Magisk并唤起,根据提示在AVD的Magisk选择”安装–修补一个文件”,选择主目录下的”Download”文件夹内的fakeboot.img,修补。
切回rootAVD指令行窗口,回车,然后应该就安装好了。
CRIWare AWB 新版文件问题
在游戏”Summertime Render Another Horizon” (Switch) 中,awb格式文件有所改动,其中一些原先使用两字节ushort存储的数据改为使用四字节uint,导致老旧处理工具无法使用。如有处理需求请使用foobar2000+VGMStream。
屡战屡败的libwebp构建
始终弄不明白这个构建到底怎么用。
官方文档给的方案
1 | nmake /f Makefile.vc CFG=release-static RTLIBCFG=static OBJDIR=output |
只生成静态的lib。
网上找到的攻略
1 | nmake /f Makefile.vc CFG=release-dynamic RTLIBCFG=dynamic ARCH=x86 OBJDIR=output |
这下似乎对了,生成了dll动态链接库。但是架构似乎对不上,而且Command Prompt有5个,我也不确定该用哪个,挨个试一试。
逐个测试
Developer Command Prompt, ARCH=x86
32bit only
Developer Command Prompt, ARCH=x64
32bit only
x64 Native Tools Command Prompt, ARCH=x86
与目标计算机不兼容,没有两个exe,但是有dll,64bit only
x64 Native Tools Command Prompt, ARCH=x64
64bit only
x86 Native Tools Command Prompt, ARCH=x86
32bit only
x86 Native Tools Command Prompt, ARCH=x64
32bit only
x64_x86 Cross Tools Command Prompt, ARCH=x86
32bit only
x64_x86 Cross Tools Command Prompt, ARCH=x64
32bit only
x86_x64 Cross Tools Command Prompt, ARCH=x86
与目标计算机不兼容,没有两个exe,但是有dll,64bit only
x86_x64 Cross Tools Command Prompt, ARCH=x64
64bit only
总之就是Native只能生成Native,Cross只能生成后面那个的。
然后是其他一些参数的测试,x64 Native ARCH=x64
RTLIBCFG=static
只是文件体积很大,不清楚发生了什么
<target> all
额外生成了一些exe
USM build,与FFmpeg
WannaCRI
被网友问了怎么重新封装成USM文件,简单搜了一下,找到了这个。
donmai-me/WannaCRI
根据其信息,可以封装只有视频轨的USM文件,或者用于提取USM文件的视频轨和音频轨。但不能封装完整的双轨道视频文件。
学到了用pip从本地安装whl文件,直接 ‘pip install *.whl’ 即可。
但是安装过程并不能安装其附带的requirements.txt,需要手动安装。
FFmpeg, FFprobe
用这个WannaCRI的时候第一次见到要求用FFprobe的程序,才发现我没安这个。
BtbN/FFmpeg-Builds
懒得自己编译就直接下这个。
到现在还是不明白FFprobe和FFplay是干什么用的。
完整性:nonfree>gpl>lgpl shared指FFmpeg和FFprobe,FFplay共用avutil.dll等DLL,如果只用FFmpeg的话非shared更简洁,三个都要用的话选shared,体积小。
steamworkshopdownloader 更正和更新
‘workshop_download_item [appid] [pageid]‘ 的规律并不总是有效。
例如更全面的灾厄体验1.4.4直接使用SteamCMD执行’workshop_download_item 1281930 301320984’会报错,在steamworkshopdownloader.io解析会得到一大堆创意工坊页面的链接。此种页面应为“组合包”,无法直接全部下载。
steamworkshopdownloader 脱离Steam账号获取创意工坊内容
一个其实大部分情况下没屁用的攻略。其目的在于:不使用Steam账号,不使用加速器或科学网络工具,在拥有该游戏的情况下获取特定免费游戏的创意工坊文件。
接下来以已经安装了GOG版的Terraria,获取tModLoader可用的Calamity(灾厄)模组创意工坊文件。
首先在tmodLoader的Github发布页下载tModLoader的可执行文件,根据安装提示放在与Terraria安装目录同级的目录下。
接下来访问steamworkshopdownloader.io,这是个第三方网站,并不直接提供下载,您也可以越过这段。根据其提示,访问developer.valvesoftware.com,下载SteamCMD,并安装。


接下来回到steamworkshopdownloader.io的输入框,根据其要求输入创意工坊页面链接。假设我们只知道模组名称,不知道具体页面链接,而我们的网络状况又不允许打开Steam搜索,需要用搜索引擎搜索。考虑到某度极其辣鸡,bing也开始对国区特殊对待,目前可以使用yandex搜索。关键字包括游戏名,模组名,steamcommunity。
搜索得到创意工坊页面链接,粘贴回steamworkshopdownloader.io的输入框,获取到SteamCMD要用的指令。根据指令内容和模组链接逆推得到命令为’workshop_download_item’,第一个参数为Steam app id(1281930对应tModLoader),第二个参数对应模组页面id。找到此规律后可不使用此网站。
最后打开SteamCMD,输入”login anonymous”登录,粘贴刚才得到的下载命令,执行,下载得到模组文件。
然后关于游戏本身,就是打开SteamCMD下的\steamapps\workshop\content\{appid}\{modid}\目录,把.tmod文件复制到Documents\My Games\Terraria\tModLoader\Mods目录下,启动tModLoader了。
Kaleido ADV Workshop Key Finder
Kaleido ADV Workshop Key Finder|Github
拿着三个游戏的案例搓出来的东西在第二次试验时就爆炸了(悲)
很遗憾,此段代码在针对 ANONYMOUS;CODE(ENG) 测试时无法找到密钥,因为密钥的最后一位字符似乎与后续数据重合而变成了数字、字母以外的字符。幸好该密钥和Steam版相同才得以定位这个问题。代码修改为了只寻找连续的12个字符,但输出时仍尝试输出13个字符。
现在以 ANONYMOUS;CODE(JP) 为例,最终可提取出71个可能符合规则的字符串,并优先标记了其中的8个。
现在出现了一个完全没救的问题,数据冲突,密钥最后一位有概率被吞导致完全没办法,要不是有个一样的能去照搬,那就只能暴力测试62次了。
想降低检出词条数的方法还剩一个,写个词典,把干扰项常见的单词记进去,再在筛选时检出指定词汇就抛弃。但是这个方法实现太麻烦,而且密钥里大概率没有也只是大概率,要再见着一个特例我要疯了。
以下是关于Kaleido ADV Workshop的密钥的一些说法。
- 总是13位长——假。PS3/X360上的Dunamis15只有10位,尽管反例似乎只有这一个。
- 出现在script_info.psb前——不能说假,但只在PSV和PC版有效。
- 首位为数字——假。Switch版AC日文版为字母开头。
- 同时有数字、大小写字母——假。有概率只有数字和小写字母。好在还没有只有数字或只有字母的。
- 总是全文出现在可执行文件中——基本上是真的,这回翻车了,最后一位可能冲突。
- 前一位为\x00——暂时没有反例,求求您别再翻车了。
Kaleido ADV Workshop Chara Tool
尝试分析了 映画 五等分の花嫁~君と過ごした五つの思い出~ 的角色立绘。
1 | "crop": { |
w,h分别为立绘主体的宽和高。x,y的用处在下文。
1 | "imageList": [{ |
此字段下的width,height为底图的宽和高,label为文件名,其他字段没有用。
1 | "eyediff": { |
这一字段描述眼部分支的情况,w,h分别是这一片的宽和高,但比实际数值少2,而且使用了float/double类型。
x,y用于描述将该分支图片粘贴回立绘主体的位置,具体用法为 “target w=eyediff.x-crop.x-1, h=eyediff.y-crop.y-1” ,是否需要减一还需要确认。使用了float/double类型。
1 | "eyediffbase": 678 |
从底图上取眼部分支片的起始横坐标。纵坐标为0。
1 | "eyemap": { |
描述每一个眼部分支的名称和排列顺序。null为在底图上,0为从eyediffbase起第一个,1,2,3依次向下移一个高度。
1 | "lipdiff": { |
口部分支,与眼部分支相同。
1 | "h": 1880, |
不知道有什么用。
已知有没有眼部分支的立绘,需要判断。而且在map里给了三个眼部分支的名称,值却全是null。同时,口部分支是012,没有null。
最终的代码过段时间摸出来。
Kaleido ADV Workshop Key Finder
Kaleido ADV Workshop Key Finder|Github
此工具用于寻找Switch平台的Kaleido ADV Workshop引擎的游戏的密钥。
测试时使用了 ANONYMOUS;CODE(JP),五等分の花嫁∬~夏の思い出も五等分~,映画 五等分の花嫁~君と過ごした五つの思い出~ 三个游戏。
Switch平台的Kaleido ADV Workshop引擎的游戏的密钥存储在exefs/main文件中,可以用Ryujinx提取该文件。
但其在文件中的位置很不固定,密钥的内容也很随机,没有什么好方法去找它。
在以上三个游戏中,密钥的共同点只有:
- 13个字符长。尽管其他平台的游戏有特殊情况。
- 该字符串前一字节为\x00。
- 总是既有数字又有字母,且不含数字和大小写字母以外的字符。
- 总是没有任何含义,无法提取出单词。
此段代码用穷举的方法,列举出所有\x00后紧跟13个数字或字母的字符串,并优先标记出其中同时包含数字和字母的组合,再由用户手动筛选或逐个测试。
以 ANONYMOUS;CODE(JP) 为例,最终可提取出53个符合规则的字符串,并优先标记了其中的8个。
Anonymous Code PC Steam版 视频文件说明
Anonymous Code PC Steam版的视频文件使用了mzv格式后缀名,实际上是文件头有问题的MP4文件,修改文件头前四个字节后改为mp4后缀即可正常播放。
目前已经发现其中有至少三种MP4格式,需要修改为不同的值。
文件固定开头为0003位为00,0407位为ftyp,再后面一段到moov或mdat之前是MP4封装格式。例如mormal_end.mzv的封装格式为mp42 (mp42/mp41) ,所以将第03位的00修改为0x18,即可正常播放。对应关系如下,需要严格对应每一个关键字。
- 0x18 mp42 (mp42/mp41)
- 0x1C mp42 (mp42/mp41/isom)
- 0x28 M4V (M4V /M4A /mp42/mp41/isom/avc1)
未出现但可能用到的对应关系 - 0x14 isom (isom)
- 0x1C isom (isom/iso2/mp41)
- 0x1C mp42 (mp42/isom/avc1)
- 0x1C mp42 (mp42/iso2/mp41)
- 0x20 mp42 (mp42/iso2/avc1/mp41)
- 0x20 isom (isom/iso2/avc1/mp41)

