在Linux上模拟任天堂开关游戏

2020-07-25 00:25:04

是的,信不信由你,这是实实在在的事情。多亏了Yuzu和鲜为人知的仿真器Ryujinx,才有可能模仿任天堂交换机这样的现代游戏机。最好的部分是,这两个仿真器都是开源的,并且可以在Linux上使用。

不幸的是,模拟任天堂交换机并不像下载模拟器并打开游戏文件来玩它那么简单。该过程包括从您的交换机系统转储几个文件,并将这些文件传输到您的PC以解密游戏。

在执行以下任何操作之前,请将开关设置为飞行模式。不知道任天堂是否真的能识别你从现在开始要用你的交换机做什么,也不知道他们是否会为此禁止你的任天堂账户,所以最好是让设备离线。

你的开关,显然,还有你的实体游戏盒,如果你想把它们扔掉的话。

让您的交换机进入恢复模式(RCM)的某种方法。要做到这一点,一个简单的方法是从亚马逊购买这个8美元的RCM Jig。还有其他方法,但它们更棘手。

一台功能强大的PC,具有相当大的RAM;要求列在Yuzu和Ryujinx部分。

带适配器的32 GB大小的microSD卡,以便您可以通过PC传输文件。

用于将交换机连接到PC的USB 3.0端口的USB-C电缆(我说的是3.0,因为很明显,Linux上的有效负载不能通过USB 2.0发送)

通过在DaMota网站上输入序列号,检查您的交换机是否易受有效负载的攻击(我们需要将有效负载发送到我们的交换机,以便转储必要的文件)。您可以在设备底部左侧找到序列号:

很可能,如果你在2019年或更早的某个时候购买了交换机,它可能会被黑客入侵,即使是在最新的固件上也是如此。任天堂后来更新了交换机型号以增加电池续航时间,但很可能他们也在硬件方面实施了一些措施,以防止被利用。

如果检查您的序列号后指示灯为绿灯,则表示您可以出发了:

如果它是黄色的,您可能会有不同的结果。如果是红色的…。嗯,你懂红绿灯,对吧?

现在,我们将确定要使用的仿真器。虽然Yuzu比Ryujinx更成熟,但它需要一个上午,可能还需要一个下午的时间,因为您需要从交换机上转储几个文件,并将它们传输到您正在模拟的PC上。Ryujinx虽然在模拟游戏方面没有那么快,但需要的文件要少得多,因此需要的时间也更少。我将在这里介绍这两个仿真器。这两个模拟器都是试验性的,这意味着您将在某些区域经历随机崩溃和奇怪的图形问题,但它们能够以合理的速度模拟大多数商业游戏。

通常情况下,Windows用户可以按照Yuzu网站上的“快速入门指南”开始使用(不过,它实际上不应该被称为“快速”入门)。然而,该指南的问题在于,该指南提到的一些工具不能在Linux上运行。相信我,我试过用酒来运行这些应用程序,但它们并没有完全完成它们应该做的事情。因为据我所知,他们没有任何关于如何开始使用Linux的指南,所以我决定自己写一本指南。

因此,首先,我们需要确保您的Linux计算机上的硬件至少满足最低要求。根据快速入门指南,最低要求如下:

当然,由于交换机使用的是NVIDIA硬件,因此您将使用NVIDIA显卡获得接近金属的性能。就RAM而言,根据我到目前为止的经验,8 GB是勉强够用的。我肯定会推荐12 GB或更大的内存,特别是如果你正在使用AMD硬件-我注意到超级粉碎兄弟旗舰版在我的RX570上可以吃掉多达16 GB的内存;另一方面,我的GTX 1660的内存消耗一般在8.5 GB左右。

如果您的处理器至少有4个核心,这也会带来很大的好处;这样,您就可以在Yuzu中启用多核性能,从而大幅提升性能(因为交换机有4个CPU核心)。

我们需要下载并运行Yuzu来设置我们的文件夹结构。下载解压后,只需在终端输入./yuzu即可打开Yuzu。如果由于某种原因无法运行,请下载并安装构建依赖项。

当模拟器启动时,您将收到几个错误,指出缺少几个文件;这是故意的。

我们将需要下载几个文件并将它们放到我们的MicroSD卡上;这些文件将是允许我们在交换机上加载自制软件所必需的文件。您可以使用交换机中现有的SD卡,也可以使用格式为FAT的新SD卡。请记住,请确保它的大小至少为32 GB;我们稍后将转储到它的其中一个文件本身几乎是32 GB。

Hekate-交换机的一体式实用程序和启动器。下载Hekate和Joiner脚本的zip文件。Joiner脚本将允许我们将多个文件部分合并到一个文件部分中,这是我们稍后需要做的。将Hekate zip的内容解压到SD卡的根目录中。

大气-我们交换机的自定义固件。下载zip文件和fusee-primiy.bin。将zip解压到SD卡的根目录中,并将.bin文件放在bootloader/payloads/中。

LOCKPICK_RCM-这将转储解密游戏所需的密钥文件。下载.bin文件,将其放在SD卡的bootloader/payloads/中,就像使用fusee-primiy.bin一样。

(可选)NXDumpTool-这将允许我们将游戏卡带作为文件转储到SD卡。如果您已经从任天堂eShop将游戏安装在SD卡或系统内部存储上,并且不需要转储物理游戏,则此工具是可选的。下载.nro文件。在SD卡的Switch文件夹中创建一个名为nxdumptool的文件夹,并将.nro文件放入其中。

将所有文件复制过来并将其放入交换机后,从PC中弹出SD卡。

在本指南中,我假设您正在使用RCM夹具进入恢复模式。如果没有,您仍然可以继续操作;您只需做您正在做的任何事情来使开关进入RCM即可。

如果你的开关还没有关的话就把它关掉。取出右侧的Joycon。将RCM夹具一直插入底部,以确保设备底部的PIN接地。将USB-C电缆从交换机插入PC上的USB 3.0端口。现在按住电源和Vol+按钮。如果您看到空白屏幕,恭喜您,您的交换机处于RCM模式。如果开关正常打开,请不要担心;USB线很可能是导致开关自动打开的原因。只要把开关关掉,然后再试一次。我的设置如下所示:

现在,我们需要一种将有效负载发送到交换机的方法。我们将在本指南中使用引信发射器。

Yuzu Quickstart Guide希望我们使用TegraRcmGUI来发送有效负载-不幸的是,这只在Windows上有效。幸运的是,我们有一个称为FUSE-Launcher的Linux替代方案。这个工具完全是基于命令行的,但不是这样,它非常容易使用。

我们希望让Biskeydump转储我们的内置存储(BIS)密钥。从Rajkosto的网站下载适当的zip文件。将.bin文件解压缩到克隆fusee-Launcher的同一文件夹中。在您的交换机仍连接到RCM中的PC的情况下,打开与fusee-Launcher.py位于同一文件夹中的终端,然后运行(需要sudo权限):

现在看到交换机上的二维码和一串钥匙了吗?您已成功将有效负载发送到您的交换机!

抓起智能手机或其他设备上的二维码扫描仪应用程序,扫描二维码-将密钥保存到SD卡实际上并不会保存适当的密钥,所以我们需要使用二维码。在您的手机上,将密钥保存在某个位置,然后将文件作为console.key传输到您的PC。如果%yuzu_DIR%中还没有密钥文件夹,请在其中创建一个密钥文件夹,然后将console.key放入该文件夹中,如下所示:

我们还需要两个密钥文件:prod.key和title.key。要获得这些,我们需要向交换机发送另一个有效负载。关闭开关,然后按住Power/Vol+将其放回RCM。如果您仍然有Hekate的压缩下载,请将.bin文件解压到fusee-Launcher所在的同一文件夹中。现在,让我们使用以下命令在交换机上启动Hekate(如果您使用的Hekate版本号不同,只需将.bin文件的名称更改为适当的名称):

单击Hekate中的Payload按钮。从有效负载列表中选择lockPick_RCM.bin。LockPick_RCM现在将启动。要丢弃我们的钥匙,只需按一次电源按钮。一旦完成,就关掉你的开关。

从交换机上卸下SD卡,然后将其放入您的PC。复制sd:switch/prod.keys和sd:switch/title.keys并将其粘贴到%yuzu_DIR%/keys中。

到目前为止和我在一起吗?要是那样就好了。我们现在需要转储交换机的系统文件。

将SD卡放回交换机并再次启动Hekate有效负载。单击工具,然后单击备份eMMC。选择eMMC BOOT0&;BOOT1。请稍等片刻。BOOT0&;BOOT1现在已转储到您的SD卡上。

点击关闭,然后选择eMMC原始GPP。这会转储系统的NAND,并且需要大约半小时或更长时间,因为NAND的大小约为30 GB。如果您的SD卡空间不足,Hekate将提示您取出SD卡,将文件的一部分放入PC,再将其插入交换机,然后继续循环,直到整个NAND被转储。否则,就坐下来放松一下,直到倾倒完毕。

转储完成后,关闭开关,取出SD卡,并将其放入PC。您的系统文件应该在SD:BACKUP/(一些字符序列)/中。您的NAND可能被分成几个部分,可以是1 GB部分,也可以是2 GB部分。

还记得我前面提到的那个细木工脚本吗?现在正是我们需要它的时候。将NAND的各部分复制到与脚本相同的文件夹中。根据NAND部件的大小运行适当的脚本。因此,如果每个部分的大小约为2 GB,则应运行:

这需要一段时间。如果一切正常,您应该有一个名为rawnand.bin的NAND文件,大小约为31或32 GB:

同样,“快速入门指南”在此处提到的程序(Hacdiskmount)仅适用于Windows。在我们的例子中,我们将使用ninfs。

您可能需要重新启动Linux计算机。键入并输入mount_nandhac。如果你得到这样的东西:

通过终端导航到保存rawnand.bin的位置。我们将在这里创建一个虚拟装载,因此可以为您想要的任何名称创建一个文件夹。在我的案例中,我称它为MNT:

复制您之前转储的prod.key文件,并将其粘贴到与rawnand.bin相同的文件夹中。现在运行:

最后一个参数是您刚才创建的文件夹的名称。现在,您的系统中应该有一个虚拟挂载。导航到该文件夹,并将以下文件复制到与rawnand.bin相同的文件夹中:

这需要一段时间。完成后,将BCPKG2-1-Normal-Main.img和PRODINFO.img的文件扩展名重命名为.bin,并将这些文件复制到%yuzu_DIR%/sysdata。如果sysdata不存在,请创建它。

将虚拟驱动器中的所有内容(Contents、PRF2SAFE.RCV、save、saveMeta)复制到%yuzu_DIR%/nand/system。合并任何现有文件。

仅复制内容并将文件夹保存到%YUZU_DIR/NAND/USER。完成后,使用上面相同的umount命令再次卸载驱动器。

是的,按照副标题说的做。您现在应该不会收到任何错误,并且安装到系统内部存储的任何游戏现在都应该显示在游戏列表中:

如果您的SD卡上保存了游戏,只需将其插入电脑并将任天堂文件夹复制到%YUZU_DIR/SDMC即可。如有必要,覆盖现有文件。关闭Yuzu,然后再次启动以查看您的SD书目:

如果您想玩游戏卡盘,首先需要用nxdumptool转储它们。将SD卡插入交换机后,将交换机连接到您的PC并在恢复模式下启动。用引信发射器发送赫凯特有效载荷。单击Payload(有效负载),然后单击fusee-primary y.bin(fusee-primary y.bin)。交换机现在将使用自定义固件重新启动。一切都会看起来很正常。进入主菜单后,点击相册。这是自制菜单,包含您复制到SD卡的几个应用程序。

启动nxdumptool。选择转储游戏卡内容,然后选择墨盒图像(XCI)转储。将证书与墨盒一起转储。一旦要转储的游戏被转储,请关闭开关并取出SD卡。将SD卡放入计算机。找出游戏文件被丢弃的地方。它们可能已被分成多个部分;如果是这样,则将它们与以下内容组合:

显然,超级马里奥·奥德赛在这里只是一个例子;用您要组合的游戏的名称替换它。

将组合的XCI文件放在PC上的任何位置。要在Yuzu上启动游戏,请转到文件->;加载文件…。。选择XCI文件,您就可以开始了。

将保存的文件从您的交换机系统导入到Yuzu相对容易。从GitHub下载Checkpoint.nro文件,并在sd:switch内创建名为checkpoint的文件夹。将.nro文件放入检查点文件夹。从PC中取出SD卡,然后将其插入交换机。

在Hekate中,点击Payload->;fusee-primiy.bin,类似于您转储游戏盒时所做的操作。点击相册并启动检查点。

要转储游戏保存文件,请使用Y按钮选择一个游戏并保持选择,直到获得所有要转储的保存文件,然后按L。等待该过程完成,然后关闭开关。将SD卡取出并放入PC。保存的文件转储在SD:Switch/Checkpoint中。

您可以右键单击Yuzu中的一个游戏,然后选择“打开保存数据位置”,但问题是它实际上打开了错误的目录。Yuzu的正确保存目录为:

所以我将以Smash Bros.Ultimate为例。导航到保存的位置-它将是标题ID,后跟游戏名称。所以Smash旗舰版应该是:

进入Yuzu的保存目录,如果那里没有标题ID的文件夹,则创建一个。Smash旗舰的标题ID是01006A800016E000。现在将SAVE_DATA从SD卡上的存储复制到此文件夹。如果您到目前为止都同意我的观点,那么您的保存结构应该如下所示:

好了。只需在Yuzu中启动游戏,它应该会自动拾取保存的文件。

哟。最困难的部分已经过去了。现在我们可以真正享受到模仿你的开关游戏的乐趣了。

在写这篇文章时,我使用的是Yuzu版本315。当您阅读这篇文章时,很可能会有一个较新的版本,因为几乎每天都有新的构建被上传。我不希望您的设置与我的设置有很大的不同;但是界面看起来可能会有点不同。无论哪种方式,都没有什么好担心的;您应该能够很好地找到正确的选择。

有很多设置我们可以随意修改,但是现在我们想要我们能得到的最好的性能。因此,首先,在配置菜单中启用多核CPU仿真,以充分利用处理器中的多线程-但这只是一个提醒,默认情况下没有启用的原因是因为它是一个巨大的内存泄漏者。这就是为什么我建议您的系统中至少有16 GB的RAM。

另一个您可能想要勾选的复选框是在不活动时隐藏鼠标。照它说的做;当你玩的时候,鼠标光标不会挡住你的去路。

您可能需要对图形设置稍加修改。在大多数情况下,您会希望使用Vulkan作为API,特别是如果您使用的是AMD显卡。说到AMD,AMD用户将不得不使用一种名为AMDVLK的特殊图形驱动程序。这样做的原因,是因为相当多的时候,Yuzu会与当地的台地司机相撞。即使您有足够的RAM,终端输出也将如下所示:

因此,您需要下载并安装AMDVLK。不要担心,这根本不会扰乱您的系统。只需关闭Yuzu,重新打开它,现在您应该会在API设置下面列出一个新设备。选择没有显示RADV的那个;它应该只是您的显卡的名称。玉树现在应该不会那么频繁地坠机了。

在某些情况下,您可能希望使用OpenGL作为API。例如,你可能不能和Vulkan一起玩马里奥网球王牌(Mario Tennis Aces)。OpenGL的缺点是,启动游戏时很可能需要等待一段时间才能编译着色器,并且性能会略有下降。因此,这将是您需要进行实验以获得最佳结果的东西。

当您在图形子菜单中时,启用异步GPU仿真。如果将NVIDIA硬件与OpenGL一起使用,也可以选择启用vsync明暗器和集合明暗器。

最后,让我们配置我们的控件。在大多数情况下,您应该可以在停靠模式下模拟双操纵杆。单击Configure(配置)并使用所需的游戏手柄设置控件。

现在开始玩吧!好好享受吧!检查兼容性列表以查看您的游戏玩得如何,以及可能需要采取哪些解决方法。

您可以在游戏中添加MOD来增强整体体验。MOD放置在以下位置:

添加MOD时会自动启用MOD。要禁用它们,请在Yuzu->;Properties->;中右键单击游戏,取消选中mod的复选框。

到目前为止,我试过的大多数游戏都运行得很好。由于Yuzu正在尝试处理着色器,因此在某些区域会出现速度减慢的情况,但在那之后,游戏的运行效果与游戏机本身一样好。我还没有遇到任何图形问题。音频在很大程度上工作得很好。一般RAM消耗约为12-13 GB,CPU负载为50%,GPU负载约为40%。有时模拟器会随机崩溃,游戏的某些区域或菜单会导致黑屏。最近出版的“纸马里奥:折纸之王”工作得很好,但由于我使用的是主线版本(不是早期访问版本),出于某种原因没有音乐。

我录制了一些游戏镜头--只要记住录制会稍微降低帧率,所以有些游戏看起来会很糟糕;塞尔达:尤其是BOTW。

坦率地说,我不喜欢Yuzu的一点是,要想获得他们早期访问版本的副本,需要每月向他们的Patreon订阅5美元,这实际上是为了更好的功能而创建了这种付费墙。另一方面,Ryujinx将他们所有的构建都公开提供。

Ryujinx使用的内存比Yuzu少,所以您应该可以使用8 GB的RAM。与Yuzu不同的是,它最近才有能力播放游戏中的视频。这里的缺点是,它没有Yuzu那么优化,所以你需要一个相当结实的显卡才能让游戏流畅地运行。有多强壮?可能是GTX 1060或RX 580/590;任何地方都没有详细的系统需求页面。这里也没有Vulkan渲染器;目前只能使用OpenGL。

龙津不需要像育津那样多的倾倒。但是,您仍然需要先前在Yuzu部分中转储的密钥文件。如果您尚未执行此操作,请按照上述部分中的步骤4进行操作。从我看过的教程来看,您似乎只需要prod.key,但为了安全起见,我会复制所有三个密钥文件。将它们复制到~/config/ryujinx/system。如果这些文件夹不存在,只需第一次运行Ryujinx,系统将为您创建这些文件夹。现在您需要安装系统固件。

您可以转储固件,也可以直接下载。打开Ryujinx,转到Tools->;Install Firmware->;Install Firmware from XCI或ZIP,然后选择您下载的固件zip/XCI文件。如果您转储了它,只需选择Install a Firmware from a directory from a directory as the dump

.