基于某街机音乐游戏的Unity游戏修改心得分享
0x00 写在前面
赫赫adx玩家太多了,所以写了这篇。本文基于1.35.00。不要找我要好弟弟、最新最热opt等,不要问我如何启动游戏。
本文章仅供Unity游戏修改相关的学习参考,使用本文章内容所构成的侵权行为与作者无关。
开始本教程前,建议你做以下准备:
下载Visual Studio Code作为文本编辑器,并安装HexEditor插件以修改二进制文件。
了解如何使用命令行工具。

0x01 文件结构
首先这边建议把魔改相关单独放到一个opt文件夹里(如F099)。不知道怎么装opt的可以参考segatools.ini里的提示,指定option文件夹。option文件夹里每个opt文件夹的内容相当于会在运行时覆盖替换原本游戏中A000文件夹中的内容(不会实际修改A000中的文件)。别改A000里的东西了求你了
你的option文件夹应该差不多长这样,放在你指定的option目录下。如果想装自制,序号越大越好。接下来我会分别说明这里的东西怎么加。


0x02 添加一个自制页签
这步不需要每次加一个新谱都做,只是单独划出来一个地方放自制谱。需要添加的文件至少有两个:
musicGenre\MusicGenreSort.xml
musicGenre\musicgenre000107\MusicGenre.xml
把A000里的对应文件复制出来改改。这两个文件的genre id要对上。music文件夹里面那俩不加也无所谓。



0x03 添加谱面
每次加一个新谱,先给曲子随便取一个曲目id,最好在2000~9999之间,我这里曲目id是2001。然后算个固定6位的谱面id,如果是dx谱,谱面id就是10000+曲目id,st谱就是曲目id。后面很多地方填的id都要么是谱面id要么是曲目id,有时还需要在前面补0至6位,自己看着办吧。相关文件至少有两个:
music\music012001\012001_03.ma2
music\music012001\Music.xml
先把你的谱转成ma2格式。simai(majdata)那个txt转ma2的工具嘛我找到的没有一个能用,要不你自己找个能用的吧。
贴俩链接,一个SLL跟SLR转反了,一个我没研究明白。截至本文这俩都暂不支持fes。
https://github.com/Neskol/MaichartConverter
https://github.com/donmai-me/MaiConverter

然后Music.xml随便复制一个出来,填下曲目基础信息。genreName填刚才的genre id。

最后填谱面信息。有些注意事项:
notesData里是所有谱面的列表,按顺序分别对应绿黄红紫白宴谱。某些难度可以没谱,但那个位置一定要填上,按图里绿框填,isEnable改成false就行。level和levelDecimal对应定数,比如图里是14.0。musicLevelID是难度id,1~7对应1~7级,8对应7+级,9对应8级,以此类推直到23对应15级。(不是谱面的框,某些神秘教程给我看的脑溢血)


0x04 添加音频
有个特别牛逼的软件叫ACE。虽然很牛逼但是有bug。这边建议用我魔改的修了bug并且加了maimai支持的版本。
原项目地址:https://github.com/LazyBone152/ACE
舞台酱牌魔改版:https://github.com/iamgqr/XV2-Tools/releases/
随便复制一个acb和一个同名awb文件出来,用ace打开(Load)acb文件。点第一个cue,右键下面的track,点replace,然后选择你的音频。点另存为(Save As),然后输入文件名(我这里是music002001.acb)。注意不能保存之后重命名,必须另存为然后输入对的文件名。把你保存的acb和awb文件放进SoundData就能用了。
这么做生成的acb里,游戏内选取界面的预览还是原本的时间段。如果想改音频的预览时间,用vscode的hexeditor打开你保存生成的acb。算一下想要的预览时间的毫秒数转成16进制(windows计算器-程序员模式),去TrackEvent表附近,改下这俩command的字节。找不到可以文件内搜索16进制“03E704”和“07D104”,他们后面的就是。


0x05 添加bga
不加bga也行,但是你打歌的时候背景就是一只1p熊(らん)的脸,非常难看。
usm编码工具:https://github.com/donmai-me/WannaCRI
先准备个视频,把它转成ivf格式。方法请谷歌或使用万能的ffmpeg。然后用工具转成usm格式,最后重命名成.dat格式放在MovieData就行了。用工具需要你填key参数,你游的cri key是多少请github搜索。(base64:MHg3RjQ1NTE0OTlERjU1RTY4)
只有图懒得搞视频?我教你一招:

0x06 添加封面
(某些神秘教程给我看的脑溢血。jacket_s是选曲和结算界面的封面,jacket才是游戏中准备时和副屏上的封面)
UABEA:https://github.com/nesrak1/UABEA
先复制几个文件出来:
AssetBundleImages\jacket\ui_jacket_002001.ab
AssetBundleImages\jacket_s\ui_jacket_002001_s.ab
AssetBundleImages\AssetBundleImages
假如你原本文件是ui_jacket_000021.ab吧,先给新文件重命名成ui_jacket_002001.ab。uabea打开ui_jacket_002001.ab,如果他叫你解压你就解压到新文件(选file),关掉uabea,把旧文件删了,把解压出来的文件重命名为原文件名,然后uabea打开这个文件就行了。之后都用这个解压出来的文件就行,游戏也能读。
打开ab文件之后,Info,选Texture2D那个,Plugins-Edit texture-OK。里面Load,选个正方形png文件(大小其实无所谓),然后Save,Save,Save,关闭。

vscode启动,hexeditor打开这个.ab文件,把里面000021全都查找替换成002001。然后把文件里“CAB-xxxxxxxx”这坨东西后面的十六进制随便改成一串别的十六进制。保存。
改完ab之后改AssetBundleImages。uabea打开,如果需要解压还是按之前的操作。Info,选那个AssetBundleManifest,Export Dump,找个地方存下。uabea别关,vscode打开那个txt,在这加两行,序号按顺序就行。最后改下数组大小。


保存。uabea Import Dump选这个txt文件,Save,Save,关闭。

0x07 Enjoy
