国行Switch卡带报错2016-2101的问题

国行Switch卡带报错2016-2101的问题

背景

2020年1月15日,国行版《新 超级马里奥兄弟U 豪华版》实体卡带发售。根据网友的测试,中国地区发售的卡带插入国行以外的Nintendo Switch主机中,会出现如下提示:

错误代码: 2016-2101
在此主机上无法游玩此卡带。
详情查看Nintendo Switch支持网站。
nintendoswitch.com.cn/support

看到网友上传的图片后,产生了一下两点疑惑:

  1. 该信息是出现在中国以外地区的主机上,而错误信息中的支持网站网址是中国版Nintendo switch的支持页面。该错误信息是存储于系统中还是游戏卡带中。
  2. 系统是如何识别游戏卡区域,并拒绝运行软件的。

信息来源

Nintendo Switch Brew是一个讨论研究Nintendo Switch破解、运行自制软件的网站。其包含了大量对于Nintendo Switch软件系统的分析。

系统分析

国行主机发售后,国行机器与其他地区主机同时推送了更新,软件版本号均为9.1.0。

游戏卡带

在卡带镜像文件中,Gamecard Flags字段新增两个字节’DifferentRegionCupToTerraDevice’和’DifferentRegionCupToGlobalDevice’,用以区分游戏卡的区域是中国大陆还是全球。

这里出现了一个新的单词Terra,其原意为“大陆”。在9.0系统中还出现了一个新的服务NGCT service,全称为“Not Good Content for Terra”,该服务模块负责针对中国地区敏感词的处理。由此可以得知在Nintendo Switch的系统中,Terra指代中国大陆。

Gamecard Info字段新增’Compatibility Type’一字节,其值为0时代表‘正常’,值为1时代表‘中国大陆’。

主机系统

与游戏卡带运行有关的系统服务主要有两个,FS(Filesystem Service)和NS(NS Service)。

在FS中,IDeviceOperator下有两个区分游戏卡区域的命令。GetGameCardAttribute会读取游戏卡中Gamecard Flags字段,返回变量GameCardAttribute,以此代表游戏卡属性,并标记是否为中国大陆地区发售。GetGameCardCompatibilityType会读取游戏卡中Gamecard Info字段,返回CompatibilityType变量,值为0时代表‘全球’,值为1时代表‘中国大陆’。

在NS中,IApplicationManagerInterface下有一个命令负责获取游戏卡区域。GetGameCardPlatformRegion命令获取CompatibilityType变量值,并返回到GameCardPlatformRegion变量,值为0表示‘全球’,值为1表示‘中国’。SystemDeliveryInfo字段有一字节值表示平台区域(PlatformRegion),值为0表示‘未知’,1表示‘全球’,2表示‘中国’。

错误代码分析

根据购买国行卡带的网友上传的图片,可以看到,国行卡带在其他区域主机无法运行时系统出现的错误代码为2016-2101。Switch系统错误代码由两个四位数字组成,前四个数字为2000+错误模块代码,后四个数字为描述。通过查阅,16指代的是NS模块,未找到2101对应描述。

根据推测,当用户使用其他地区主机尝试运行国行卡带时,主机系统会读取游戏卡中区域代码及兼容类型(CompatibilityType),并与机器区域进行比对。如果出现中国地区卡带尝试在全球主机上运行的情况,就会报错终止运行,并弹出错误提示。该过程是由NS Service进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值