本文主要参考和学习大佬时鹏亮的文章(为防止系统莫名其妙删帖,大佬原文链接放在二楼),并在其基础上细化了一些容易忽略的小细节,此外主要是分享修改和自制SS游戏需要用到的一些软件(同样放在二楼),那么废话不多说了,正文开始。PS:以下全文的前提是,你拥有一台破过的switch,未破的就不要看了。
首先是游戏ID(TID)相关规则
TID修改方式:
以示例游戏的TID(0100219921990000)为例,在16进制编辑器里,TID数据顺序为从右往左,字符从左往右;例如00 00 99 21 99 21 00 01,顺序01 00 21 99 21 99 00 00。
TID命名规则:
前6个字符是制造商代码(Makers Code),用于确定游戏的发行商;接下来的两个字符是市场发布代码(Market Release Code),指示游戏在哪个地区发行;第13位(倒数第4位)字符判断游戏性质(偶数为本体、奇数为DLC,0800固定为更新包)。所以TID命名时,不管前面12个字符怎么命名,第13位16进制字符必须是偶数,虽然是奇数也不影响游戏,但在tinfoil等软件里,会把TID相邻的两个游戏的属性判断错误,例如把...3000判定为...2000的DLC。
16进制字符:
0、2、4、6、8、A、C、E是偶数,
1、3、5、7、9、B、D、F是奇数。
其次是正式修改步骤:
第一步
首先使用NSGManager工具分别提取并解包示例游戏文件(分享链接见二楼)的control、program、meta文件;
点击“目录树显示内容类型”按钮后,可以看到.nca文件的类型,建议按control、program、meta顺序将其分别提取并解包。

为了方便修改和打包,建议分别建立control、ExeFS、RomFS、cnmt、logo共5个文件夹,并把解包后的相关数据拷贝到这几个文件夹里;
control文件解压并提取后,里面的section0文件夹下的文件拷贝到control文件夹下;
program文件解压并提取后,里面的section0文件夹下通常是main等文件,把它们放到ExeFS文件夹下;section1文件夹里的文件通常是游戏的主要数据包,里面肯定有Cotton2.cue和Cotton2.bin两个文件,直接删掉,把其它文件放到RomFS文件夹下;
meta文件解压并提取后,里面就只有一个cnmt文件,复制到cnmt文件夹下。
第二步(修改游戏名称、图标)
将control文件夹下的icon_SimplifiedChinese.dat文件改名为jpg后修改图片,然后改回原文件名;修改完成后,复制一份放到logo文件夹下(也可以用windows自带画图板直接打开并修改);
第三步(生成SS游戏bin和cue文件)
利用UltraISO 等工具(本文未提供,请自行寻找相关软件)将游戏文件生成.bin和.cue,把你生成的.cue重命名为Cotton2.cue(.bin无需重命名);然后把cue和bin复制到RomFS目录下。
第四步(修改游戏数据)
使用WinHex工具,分别修改 control.nacp、main.npdm两个文件,
其中,control修改3处(00002A00改名称;00002C00改作者;00003070-30F0改TID)

main修改2处,均为游戏TID(00000460、000004B0)
第五步(打包生成NCA文件)
使用hacPack-GUI工具并设置输出目录、KEY文件(KEY文件需要从自己的switch里提取,提取方法很简单,请自行百度)和TID号后,分别生成control、program两个NCA文件。
第六步(修改cnmt文件)
完成第四步生成control、program文件后,再根据这两个文件属性开始修改cnmt文件

cnmt文件修改内容较多,分四部分,
红色是TID,这个不多说了;
蓝色是program的NCA文件名,直接把第四步生成的NCA文件名复制并替换即可;
淡蓝色是program的NCA文件的MD5值;
绿色是control的NCA文件名,直接把第四步生成的NCA文件名复制并替换即可;
淡绿色是control的NCA件的MD5值;
灰色是这两个文件的字节数,注意读取和写法都是从右往左,字符从左往右,比如00 40 5E 20,正确读法是205E4000,转换为十进制就是543047680字节。
关于文件的MD5值,可以通过DOS命令获取,也可以用软件实现,我分享的工具包里附带了QuickHashGUIPortable这个软件。
第七步(打包生成NSP文件)
cnmt文件修改完成后,打包为cnmt的NCA文件,然后将control、program和meta共3个NCA合并形成NSP。
那么以上就是自制SS游戏的教程,实际上,同时也是修改switch游戏TID、标题、图标封面的教程。
妈妈再也不用担心我想玩的SS游戏不能在switch上运行了!
首先是游戏ID(TID)相关规则
TID修改方式:
以示例游戏的TID(0100219921990000)为例,在16进制编辑器里,TID数据顺序为从右往左,字符从左往右;例如00 00 99 21 99 21 00 01,顺序01 00 21 99 21 99 00 00。
TID命名规则:
前6个字符是制造商代码(Makers Code),用于确定游戏的发行商;接下来的两个字符是市场发布代码(Market Release Code),指示游戏在哪个地区发行;第13位(倒数第4位)字符判断游戏性质(偶数为本体、奇数为DLC,0800固定为更新包)。所以TID命名时,不管前面12个字符怎么命名,第13位16进制字符必须是偶数,虽然是奇数也不影响游戏,但在tinfoil等软件里,会把TID相邻的两个游戏的属性判断错误,例如把...3000判定为...2000的DLC。
16进制字符:
0、2、4、6、8、A、C、E是偶数,
1、3、5、7、9、B、D、F是奇数。
其次是正式修改步骤:
第一步
首先使用NSGManager工具分别提取并解包示例游戏文件(分享链接见二楼)的control、program、meta文件;
点击“目录树显示内容类型”按钮后,可以看到.nca文件的类型,建议按control、program、meta顺序将其分别提取并解包。

为了方便修改和打包,建议分别建立control、ExeFS、RomFS、cnmt、logo共5个文件夹,并把解包后的相关数据拷贝到这几个文件夹里;
control文件解压并提取后,里面的section0文件夹下的文件拷贝到control文件夹下;
program文件解压并提取后,里面的section0文件夹下通常是main等文件,把它们放到ExeFS文件夹下;section1文件夹里的文件通常是游戏的主要数据包,里面肯定有Cotton2.cue和Cotton2.bin两个文件,直接删掉,把其它文件放到RomFS文件夹下;
meta文件解压并提取后,里面就只有一个cnmt文件,复制到cnmt文件夹下。
第二步(修改游戏名称、图标)
将control文件夹下的icon_SimplifiedChinese.dat文件改名为jpg后修改图片,然后改回原文件名;修改完成后,复制一份放到logo文件夹下(也可以用windows自带画图板直接打开并修改);
第三步(生成SS游戏bin和cue文件)
利用UltraISO 等工具(本文未提供,请自行寻找相关软件)将游戏文件生成.bin和.cue,把你生成的.cue重命名为Cotton2.cue(.bin无需重命名);然后把cue和bin复制到RomFS目录下。
第四步(修改游戏数据)
使用WinHex工具,分别修改 control.nacp、main.npdm两个文件,
其中,control修改3处(00002A00改名称;00002C00改作者;00003070-30F0改TID)

main修改2处,均为游戏TID(00000460、000004B0)

第五步(打包生成NCA文件)
使用hacPack-GUI工具并设置输出目录、KEY文件(KEY文件需要从自己的switch里提取,提取方法很简单,请自行百度)和TID号后,分别生成control、program两个NCA文件。
第六步(修改cnmt文件)
完成第四步生成control、program文件后,再根据这两个文件属性开始修改cnmt文件

cnmt文件修改内容较多,分四部分,
红色是TID,这个不多说了;
蓝色是program的NCA文件名,直接把第四步生成的NCA文件名复制并替换即可;
淡蓝色是program的NCA文件的MD5值;
绿色是control的NCA文件名,直接把第四步生成的NCA文件名复制并替换即可;
淡绿色是control的NCA件的MD5值;
灰色是这两个文件的字节数,注意读取和写法都是从右往左,字符从左往右,比如00 40 5E 20,正确读法是205E4000,转换为十进制就是543047680字节。
关于文件的MD5值,可以通过DOS命令获取,也可以用软件实现,我分享的工具包里附带了QuickHashGUIPortable这个软件。
第七步(打包生成NSP文件)
cnmt文件修改完成后,打包为cnmt的NCA文件,然后将control、program和meta共3个NCA合并形成NSP。
那么以上就是自制SS游戏的教程,实际上,同时也是修改switch游戏TID、标题、图标封面的教程。
妈妈再也不用担心我想玩的SS游戏不能在switch上运行了!