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

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引擎有较大差别。
format
解包方案:使用来自asmodean的工具exlnk4。具体内容不详,一般不会有问题。视频文件使用WMV格式,一般的播放器可以播放。
exlnk4
如果获取到的游戏使用unpacked/XEX/JTAG格式,那么可以直接看到XEX格式的可执行程序和压缩包,并进行解包。如果是其他格式,还需要将其转换为此格式。
unpacked
如果游戏是使用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文件,可能因重构过程中出现错误而无法转换。如遇到此问题请尝试寻找其他格式的版本。
iso redump
xboxisoext
如果游戏使用无格式的字母、数字字符串文件作为可执行文件,且相邻的data目录下的文件全部为明显类似分卷压缩的同大小无格式文件,那么该游戏版本为GOD格式。可使用工具God2iso转换为重构ISO,再转换为unpacked。此过程可能因重构过程中出现错误而无法转换。已知游戏Dunamis15在网络上流传的GOD格式版本必定有此问题。
GOD
God2Iso

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格式,不需要额外的预处理。
unpacked
命运石之门0 PS3汉化版常见ISO格式的分享,使用了ISO-Decrypted格式,使用7-Zip当作压缩包解压缩即可。
网络上还流传有一些ISO-Redump标准的ISO格式分享,与解密版对应,称为ISO-Encrypted格式,对USDIR目录下的文件进行了加密,与解密版在文件大小上没有区别,甚至也可以直接使用7-Zip解压缩,但解压缩得到的文件无法正常读取。两者只有通过对比文件哈希值或解压缩后查看文件时才能看出区别。两种ISO格式可通过工具PS3Dec转换,并需要密钥。密钥可在redump.org的ISO对应页面得到。
iso
dkey

PS3Dec|Github

MAGES引擎早期版-PS3

主要游戏:秋回6+FD(PS3),秋回7+FD(PS3),混沌之脑LCC(PS3),命运石之门系列(PS3),花咲くまにまに(PS3),机器人笔记(PS3)
特征:图片为无格式无压缩点阵图,音频为ADX格式但没有扩展名,视频使用SFD封装,MPEG-1或MPEG-2编码。lay文件使用BigEndian编码。压缩包内几乎所有文件使用纯数字命名。
c5
解包方案:基本沿用PC版方案。
图片可使用RNE Image Conventer转换为常见格式,或使用我个人维护版本的GARbro,选择文件格式为图片进行预览。音频可添加.adx后缀后使用VGMStream转换为常见格式。SFD视频可使用VGMToolBox解封装,后续处理相同。处理无后缀名的lay文件时请使用单独的PS3版脚本,其中偶数号的文件是图片,奇数号的是lay文件。SG Phenogram的立绘文件似乎有一点问题,无法正确解析,请使用其他平台的版本。
RNEIC

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的全部文件,放置于同一文件夹下。
c8

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已经长时间未更新,且未开源。
视频编码较为古老,部分播放器可能无法播放,请尝试使用功能更强大的播放器。
rUGP
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格式。

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
2
3
4
5
6
7
{
"name_template": "FakeOTA-ProgramOnly-{VERSION}-win-{PLATFORM}",
"type": "FakeOTA",
"configuration": {
"include": ["**/MAA.exe", "**/MaaCore.dll"]
}
}

添加你想要的修改后,来到你的仓库的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。
于是开始搜索,找到了 MajiroToolsmajiro-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 文件的底部,然后找到如下文本:
3114

您应在此处指定您已下载且想要安装的模拟器版本。

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
2
3
4
5
6
7
8
9
10
11
12
13
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2

# Build libwebp
- name: Checkout libwebp
shell: cmd
run: |
mkdir libwebp\\${{ matrix.msbuild_target }}build
git clone -b 1.4.0 https://github.com/webmproject/libwebp.git libwebp-140
cd libwebp-140
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.crossbuild_target }}
nmake /f Makefile.vc CFG=release-dynamic RTLIBCFG=dynamic ARCH=${{ matrix.lowercase_target }} OBJDIR=output
cp output/release-dynamic/${{ matrix.lowercase_target }}/bin/*.dll ../libwebp/${{ matrix.msbuild_target }}build/

解析:
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字幕工具失效,改为手动获取。

准备

  1. Edge浏览器,Firefox的搜索功能不知道为什么搜不到
  2. 安装TamperMonkey
  3. 安装脚本解除B站区域限制Bilibili CC字幕工具(虽然没法直接使用,但需要挂载这个脚本才能刷出字幕链接)
  4. 安装Python,下载bcc2ass

开始

  1. 浏览器登录账号,配置解除区域限制的脚本
  2. 打开该集番剧页面,按F12打开开发工具
  3. 点击下侧菜单栏中“控制台”按钮右侧的加号,添加并使用此处的“搜索”
  4. 搜索aisubtitle.hsubtitle_url,找到图中类似结果的一处链接,复制aisubtitle.hdslb.com后边这一串链接至结尾引号,至新标签页打开
  5. 保存该json文件至本地,或复制该页json的全部内容至本地文件
  6. 运行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的配置文件。

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

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引擎有较大差别。
format
解包方案:使用来自asmodean的工具exlnk4。具体内容不详,一般不会有问题。视频文件使用WMV格式,一般的播放器可以播放。
exlnk4
如果获取到的游戏使用unpacked/XEX/JTAG格式,那么可以直接看到XEX格式的可执行程序和压缩包,并进行解包。如果是其他格式,还需要将其转换为此格式。
unpacked
如果游戏是使用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文件,可能因重构过程中出现错误而无法转换。如遇到此问题请尝试寻找其他格式的版本。
iso redump
xboxisoext
如果游戏使用无格式的字母、数字字符串文件作为可执行文件,且相邻的data目录下的文件全部为明显类似分卷压缩的同大小无格式文件,那么该游戏版本为GOD格式。可使用工具God2iso转换为重构ISO,再转换为unpacked。此过程可能因重构过程中出现错误而无法转换。已知游戏Dunamis15在网络上流传的GOD格式版本必定有此问题。
GOD
God2Iso

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格式,不需要额外的预处理。
unpacked
命运石之门0 PS3汉化版常见ISO格式的分享,使用了ISO-Decrypted格式,使用7-Zip当作压缩包解压缩即可。
网络上还流传有一些ISO-Redump标准的ISO格式分享,与解密版对应,称为ISO-Encrypted格式,对USDIR目录下的文件进行了加密,与解密版在文件大小上没有区别,甚至也可以直接使用7-Zip解压缩,但解压缩得到的文件无法正常读取。两者只有通过对比文件哈希值或解压缩后查看文件时才能看出区别。两种ISO格式可通过工具PS3Dec转换,并需要密钥。密钥可在redump.org的ISO对应页面得到。
iso
dkey

PS3Dec|Github

MAGES引擎早期版-PS3

主要游戏:秋回6+FD(PS3),秋回7+FD(PS3),混沌之脑LCC(PS3),命运石之门系列(PS3),花咲くまにまに(PS3),机器人笔记(PS3)
特征:图片为无格式无压缩点阵图,音频为ADX格式但没有扩展名,视频使用SFD封装,MPEG-1或MPEG-2编码。lay文件使用BigEndian编码。压缩包内几乎所有文件使用纯数字命名。
c5
解包方案:基本沿用PC版方案。
图片可使用RNE Image Conventer转换为常见格式,或使用我个人维护版本的GARbro,选择文件格式为图片进行预览。音频可添加.adx后缀后使用VGMStream转换为常见格式。SFD视频可使用VGMToolBox解封装,后续处理相同。处理无后缀名的lay文件时请使用单独的PS3版脚本,其中偶数号的文件是图片,奇数号的是lay文件。SG Phenogram的立绘文件似乎有一点问题,无法正确解析,请使用其他平台的版本。
RNEIC

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的全部文件,放置于同一文件夹下。
c8

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已经长时间未更新,且未开源。
视频编码较为古老,部分播放器可能无法播放,请尝试使用功能更强大的播放器。
rUGP
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 脱离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
2
3
4
5
6
"crop": {
"h": 1232,
"w": 677,
"x": 1022,
"y": 648
}

w,h分别为立绘主体的宽和高。x,y的用处在下文。

1
2
3
4
5
6
7
"imageList": [{
"height": 1232,
"label": "08_マルオ_27e6147c28dbd66fd3e2956483c2200a",
"texture"......
......
"width": 925
}]

此字段下的width,height为底图的宽和高,label为文件名,其他字段没有用。

1
2
3
4
5
6
"eyediff": {
"h": 38.0,
"w": 183.0,
"x": 1265.0,
"y": 822.0
}

这一字段描述眼部分支的情况,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
2
3
4
5
6
7
8
"eyemap": {
"目真剣": null,
"目真剣1": 0,
"目真剣2": 1,
"目通常": 2,
"目通常1": 3,
"目通常2": 4
}

描述每一个眼部分支的名称和排列顺序。null为在底图上,0为从eyediffbase起第一个,1,2,3依次向下移一个高度。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"lipdiff": {
"h": 21.0,
"w": 59.0,
"x": 1328.0,
"y": 946.0
},
"lipdiffbase": 864,
"lipmap": {
"口哀しみ": 0,
"口哀しみ1": 1,
"口哀しみ2": 2,
"口真剣": 3,
"口真剣1": 4,
"口真剣2": 5,
"口通常": null,
"口通常1": 6,
"口通常2": 7
}

口部分支,与眼部分支相同。

1
2
3
4
5
6
"h": 1880,
"id": "image",
"label": "",
"spec": "nx",
"version": 1.0,
"w": 2720

不知道有什么用。
已知有没有眼部分支的立绘,需要判断。而且在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提取该文件。
但其在文件中的位置很不固定,密钥的内容也很随机,没有什么好方法去找它。
在以上三个游戏中,密钥的共同点只有:

  1. 13个字符长。尽管其他平台的游戏有特殊情况。
  2. 该字符串前一字节为\x00。
  3. 总是既有数字又有字母,且不含数字和大小写字母以外的字符。
  4. 总是没有任何含义,无法提取出单词。

此段代码用穷举的方法,列举出所有\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)