国行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进行。

国行Switch卡带报错2016-2101的问题相关推荐

  1. 国行switch服务器在维护中,国行Switch是否锁区锁服?你关心的问题都将在这里解答...

    国行Nintendo Switch已于今日(12月10日)正式发售,我们已经拿到国行Switch,并对一些备受关注的问题进行了验证,要点如下: • 国行Switch可以玩海外版卡带,海外版游戏也可以正 ...

  2. 鸿蒙系统10月上市,科技六点半 : 鸿蒙系统 10 月上市 / 国行 Switch 在路上

    科技 6 点半,带您快速浏览今天手机行业发生的大事,每天 18 点 30 分准时送出,欢迎关注. 1.郭明錤:华为鸿蒙 OS 系统低端机或 10 月上市 近日,关于华为鸿蒙系统要上线的传闻不断.对此, ...

  3. Linux命令行使用matplotlib,报错_tkinter.TclError: no display name and no $DISPLAY environment variable问题解决

    此文首发于我的个人博客:Linux命令行使用matplotlib,报错_tkinter.TclError no display name and no $DISPLAY environment var ...

  4. anconda安装后命令行中安装tensorflow报错

    现象  anconda安装后命令行中安装tensorflow报错 pip install --upgrade --ignore-installed tensorflow-gpu Building wh ...

  5. 任天堂国行 Switch OLED 版 评测

    任天堂 Switch(OLED版)已正式开卖,主机套装共有"白色"和"电光蓝·电光红"两款配色可供选择,首发到手价2599元. Nintendo Switch( ...

  6. 国行switch商店服务器维护,国行Nintendo Switch e商店商城常见问题解答

    国行Nintendo Switch上购买的数字内容丢失(游戏.新增内容等) 1)首先请进入对应游戏的Nintendo e商店产品详情页,并查看页面右侧的信息. 如果显示的是"已购入" ...

  7. 安装scala之后,命令行中输入scala报错nullpointException

    问题描述 安装scala之后,命令行中输入scala,报错nullpointException 问题原因 环境配置不完全(已经配置了,但是缺少ClassPath) 问题解决 1.新建系统变量.Clas ...

  8. android运行jar文件路径,java命令行执行jar包报错解决

    今天遇到一个问题,在终端doc命令行下,执行java -jar 操作,报错Error: Unable to access jarfile CheckAndroidV2Signature.jar 找了各 ...

  9. open failed: EACCES (Permission denied)权限已加,写入sd卡仍报错的解决办法

    不知道大家有没有碰到过这种情况,在运行虚拟机时,或者使用高版本的安卓手机时,即使是在清单文件中加了权限,向sd卡写入数据时还是会报错:open failed: EACCES (Permission d ...

最新文章

  1. mysql查询每小时数据和上小时数据的差值
  2. matlab非线性回归delta,讲解:Delta-sigma、Matlab、analog-to-digital、MatlabPython|SQ
  3. c语言皮尔森系数程序,按条件选入观测;皮尔森相关系数
  4. FPGA常用总线IIC 与SPI选择策略
  5. 从考勤管理需求说起,聊聊场景的思维“工具”
  6. 因严重缺陷,Rust 撤销所有 Crates 包的 API 令牌
  7. ext2删除文件恢复笔记
  8. 初学XPath,其实很简单
  9. c++_String一些使用记录
  10. 魅族 刷机android 6.0,魅族mx6 flyme6
  11. ubuntu下libfetion问题
  12. 全国哀悼日 网站变灰代码集锦
  13. c语言用switch计算税收,求助。。关于用switch编写简易计算器
  14. 九龙证券|光模块概念股封单资金超3亿元,传媒板块涨停潮来袭
  15. 英语语法 - 可可英语
  16. 第三届云计算大会 - 华为李三琦:云计算发展与华为运战略(转载)
  17. Arista发布容器化、开放EOS版本
  18. java 空clob_CLOB字段在java中操作
  19. 智慧水务,水务自动化无线监控方案
  20. Android开机启动速度优化 app启动速度优化

热门文章

  1. jquery.inArray()和splice()使用小记
  2. 笑到我了!杨超越杯编程大赛中那些脑洞大开的项目!
  3. IOS开发之——网络-服务器搭建(2)
  4. shell命令中if语句的后街分号作用
  5. 课堂笔记typro使用方法
  6. 为何苹果手机都这么贵?终于有了明确的答案(深度解析)
  7. HTC Android 移动网络设置(转)
  8. launchctl mysql_Mac 下利用 Launchctl 自启动 mysql
  9. 在mac上更改文件关联
  10. 手机连得上的wifi,电脑右下方却出现感叹号连不上网??