Switch模拟器Ryujinx进度报告2022-8月

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(1)

又一个月过去了,这意味着来自您最喜欢的任天堂Switch模拟器的另一份进度报告。

我们对 GPU、CPU、内核和服务仿真进行了常规的滚动改进,做了大量的代码清理,最后发布了新的 LDN 版本。

显卡:

使用 OpenGL 驱动程序运行游戏并不陌生,本月也不例外。《数码宝贝物语:网络侦探

》、《热血少女Zero》和《雷顿神秘之旅 卡特莉艾尔与大富豪的阴谋

》等游戏会表现出小的纹理破坏,通常以线条或彩色顶点的形式出现,而这些都不是。这最终是由于Ryujinx用于将纹理数据刷新到CPU的方法效率相当低下并且容易出现自己的错误。虽然单独修复刷新机制中的潜在问题很重要,但为修复这些OpenGL标题而提出的解决方案是为这些纹理数据传输实现一条新的快速路径,从而完全绕过刷新。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(2)

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(3)

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(4)

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(5)

在Vulkan合并后,AMD和英特尔GPU的所有者很快意识到,当选择API时,Mii编辑器小程序有些崩溃。虽然它在OpenGL中工作正常,但尝试在Vulkan中打开Mii编辑器会导致彻底崩溃或表现出图形错误,例如某些视觉元素根本没有显示:

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(6)

这个特殊问题被追踪到一个无效的布尔常量(1字节)的赋值,然后直接分配给一个整数(4个字节)。这导致某些 GPU 供应商出现 SPIR-V 解析失败,因此此处的解决方法是删除这些无效分配。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(7)

关于Vulkan的话题:分娩并非没有出牙疼痛和一些小的倒退。其中一个回归表现为在《集合啦!动物森友会》和《莱莎的炼金工房》中在Vulkan和 OpenGL 图形 API 上的闪烁。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(8)

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(9)

这两个问题都可以追溯到最终Vulkan rebase期间的疏忽,在新添加的采样器池缓存之后,纹理绑定将使用错误的采样器池。这里只需要一行修复即可将正确的采样器池作为参数传递。

撇开“纹理”这个词不谈,本月对定义的格式及其相关的格式表进行了一些更一般的内务处理更改。ETC2纹理格式被添加到Vulkan中,尽管奇怪的翻转,这次实际上是NVIDIA不支持它们的使用。AMD和英特尔的所有者应该看到Vegas Party,辐射岛和任何其他使用上述格式的人都可以玩。

整个格式表也进行了重构,以便为格式提供有意义的名称,而不是使用所谓的“幻数”。编程中的幻数是原始使用的值,并且没有关于其使用的有意义的上下文。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(10)

最佳做法是为这些幻数分配一个常量,以便将来贡献者能够理解其含义。这并不总是那么容易,特别是在逆向工程和仿真中,你可能直到很久以后才确切知道某物是什么。值得庆幸的是,我们对Switch的了解已经成熟多年。英伟达最近也发布了大量文档!即使对于许多阅读这些报告的非编码人员来说,可读性的差异也是天差地别:

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(11)

某些颜色格式(如 RGBX)没有 alpha(透明度),因此,当应用某些需要 alpha 的操作时,理想情况下,这些操作不应接触没有所需组件的颜色格式。不幸的是,这不可能轻易做到,但我们可以让它们表现得好像alpha总是一个静态的1(完全不透明)。这解决了 穆拉纳秘宝 中的一个问题,即地面被渲染为黑色矩形而不是...好吧,不是一个黑色的矩形。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(12)

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(13)

《异度之刃3》是一个有趣的版本。一方面,游戏在图形上似乎在硬件方面表现非常出色。另一方面,稳定性被击中或错过,不是一个,而是三个不同的崩溃,都以菜单为中心。

其中第一个要调查和解决的问题是 OpenGL 独有的,它以 TDR(超时检测和恢复)的形式表示。

OpenGL 不允许指定顶点缓冲区的大小,这可能表示函数有时可能会从缓冲区边界之外调用地址。为了解决此问题,需要创建第二个临时缓冲区来容纳这些越界访问方案。具有讽刺意味的是,这个问题是众所周知的。最明显的次要修复实际上是超级马里奥奥德赛中的瀑布。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(14)

4年来,用户已经注意到,在水烟效果中可以看到三角形的伪像,在《前进!奇诺比奥队长》中也可以看到。这是由导致 异度之刃3中TDR的完全相同的问题引起的,并展示了为什么您今天应该总是推迟一件事,而明天可能会解决两件事!

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(15)

在游戏过程中和 异度之刃 3 的菜单中,Vulkan 仍然可能会出现 DeviceLoss 崩溃,尽管我们还不确定原因,并且 OpenGL 在这里修复的问题不会影响 NVIDIA Vulkan,正如人们所期望的那样。还有一个与内存相关的最终崩溃,与选定的图形API无关。为什么他们都选择发生在完全相同的菜单上,做完全相同的事情,并且似乎出于完全不同的原因,这暂时超出了我们的理解范围;我们希望在不久的将来为您取得更多进展。

不过,我们还没有完成 异度之刃3,因为本月已经推出了第二个修复程序,这次是专门针对AMD用户的。AMD不满足于让NVIDIA成为本月格式支持缺陷的唯一罪犯,AMD不支持Vulkan上的RGB16顶点格式,因此需要回退格式。如果不支持 RGB16,则使用 RGBA16 顶点格式解决了这些 GPU 在尝试启动游戏时面临的即时崩溃问题。还添加了用于清除渲染目标的 HLE 宏,因为 AMD 驱动程序强烈反对清除单个切片。

如果你希望我们逃离异度之刃的领地,再想一想。最近的一项变化带来了 异度之刃:最终版分辨率缩放的回归,看起来有点不对劲。某些比例值未跨纹理和图像正确更新,导致上述问题。游戏现在再次正确缩放。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(16)

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(17)

结束本月GPU部分的一些小变化包括:

如果支持该功能,则不会再触发几何着色器直通的回退。修复了英伟达上《漫威终极联盟 3》中的回归问题。

更改一些以前未定义的 SPIR-V 值以进行初始化,而不是保留为可能未定义的值,因为 NVIDIA 驱动程序似乎不喜欢这样做。修复了 塞尔达传说:织梦岛 中的倾斜模糊效果,以及使用Vulkan时可能出现的一些闪烁。

新超级马里奥兄弟 U 豪华版中的 OpenGL 独占回归导致零引用异常崩溃。通过在尝试获取纹理的图层计数之前确保帧缓冲区确实存在,回归已得到修复。

OpenGL 着色器重新编译现在再次采用多线程处理。在 Vulkan 合并之后,OpenGL 在启动时用单个线程重新编译着色器,而不是预期的最大值 8 个!

中央处理器:

CPU重新编译器继续改进,本月见证了一堆新指令的添加,这些指令的名称听起来很复杂,这些名称变得有点模糊。

更多 32 位Thumb指令:

LDM/STM

LDAEX/STLEX

LDR/STRLDRD/STRD

更多 32 位指令:

SHA256

MRS Rd

第二批是现在最有趣的,似乎无处不在,这是最新的马里奥卡丁车8 Deluxe更新所要求的:2.1.0。作为直接的Wii U端口,马里奥卡丁车8豪华版是为数不多的在32位指令集上运行的值得注意的Switch游戏之一,因此从一开始我们就对其进行了测试。有了这些新的指令,游戏将恢复到一如既往的辉煌。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(18)

SHA256指令专门接受了硬件加速处理,并添加了检查以确保指令支持vex编码;没有这个,就有可能进行无效分配。

内核/服务:

虽然Ryujinx目前阻止了与任天堂在线服务的连接,但这并不意味着我们不必与一系列网络的问题作斗争。如果某些应用程序“认为”它们已连接到 Internet,则在启动时会有不同的反应:尝试连接到服务器、调用不同的服务或只是通常很烦人。

考虑到这一点,让我们看一下本月最终确定的几个服务实现:

“加载网络服务许可证金同步”是 精灵宝可梦:阿尔宙斯 在启用访客互联网接入时需要的。游戏仍然有点卡住加载,但一次一个路障,对吧?

“结束自由通信”可以防止某些标题(如《喷射战士 3:试玩版》)在第一个初始屏幕之后崩溃。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(19)

“解析器集选项请求”被存根,这允许 危险老鼠 运行游戏。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(20)

网络套接字实现中的两个疏忽不是一个,而是两个疏忽得到了解决,最终结果是 我的世界 在来宾互联网被禁用时可以启动。如果启用此设置,游戏仍将崩溃;如果《我的世界》是一款出于某种原因让你对Switch感兴趣的游戏,请记住这一点。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(21)

gdkchan还利用 August 广泛优化了内核查找内存块的方式,从链表迁移到红黑树。如果你没有参加过计算机科学课程,那么这些对你来说意义不大,但请放心,新方法的速度要快得多。对于那些已经参加过CS课程的人来说:链表具有O(n)复杂性,而红黑树是O(log n),这意味着在最坏的情况下,新方法在寻找所需的内存块方面效率要高得多。

图形用户界面/杂项:

贡献者CloneDeath这个月拖了一把拖把到我们的代码库,并决定它需要一个春季清洁在相当...一些....不同...区域,其他贡献者加入组合,删除各种未使用的字符串,重命名函数并减去冗余代码。这不是最迷人的工作,但对于一个如此大的项目,基础知识同样重要。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(22)

我们收到的 WIP Avalonia GUI 的翻译和区域设置更新比我们所能撼动的要多,但我们非常感谢社区在这方面的广泛支持!波兰语和日语区域设置已添加日语(再次是的),中文,德语和土耳其语,所有这些都接收更新以包含最新字符串。翻译列表本身现在排序得更直观,每个翻译都以自己的母语显示。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(23)

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(24)

我们有一个长期存在的谎言,是时候最终承认了。对于大多数人来说,旧的“清除PPTC缓存”按钮将带来巨大的震撼......实际上并未清除 PPTC 缓存。我们知道,这是不可接受的。直到2022年8月18日(这一天将臭名昭著),才终于有人勇敢地解决了这种公然滥用信任的行为。该函数不是清除 PPTC,而是在下次运行时将重建排队。此后,这种严重的错误打印已在UI中进行了更新,以反映真实行为。不久将发布一段道歉视频,其中包括眼泪和从这次经历中成长的承诺。

对于一些更改:您的游戏目录列表现在只有在与列表相关的设置发生更改时才会刷新。考虑添加或删除目录,或者将游戏更新到最新版本。以前,即使更改图形后端或增加分辨率也会导致完全重新加载:对那些拥有大型库或使用网络存储的人是灾难。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(25)

金手指是视频游戏的基本组成部分,所以当一些随机作弊不起作用时,它可能会让人觉得宇宙本身正试图让你走上正确的道路。幸运的是,我们可以忽略宇宙并解决一个小错误,该错误导致一些作弊不起作用。

我们从七月的Vulkan合并中进行了一些清理。数以百万计的Flatpak用户的声音都立即喊叫起来,并迅速被修复,以确保在此版本中提供一些必需的软件包。没有它,即使选择Vulkan也可能导致相当令人讨厌的崩溃。

对于那些不知道的人:Avalonia实际上是一个完全渲染的框架,因此确实利用OpenGL或Vulkan来绘制它自己。随着 Vulkan 的合并,我们面临着一项艰巨的任务,不仅要确保游戏呈现良好,还要确保它不会破坏迄今为止我们 GUI 过渡中投入的所有工作。幸运的是,所需的修复是次要的,并且一下子就解决了。

switch模拟器如何设置会流畅(Switch模拟器Ryujinx进度报告2022-8月)(26)

结束语:

如果你是那些疯狂地按Ctrl-F来刷每个进度报告的人之一:LDN,Mac或Vulkan 2:Electric Boogaloo(只有我?),那么我们在LDN方面有好消息,如果您还没有听说过,我们在 8 月份发布了 LDN 版本 2.5,这使 LDN 内部版本与主版本 1.1.224 保持同步。这意味着更多的游戏是可玩的,更重要的是,对于那些被困在AMD和英特尔GPU上的可怜的灵魂来说,每个游戏都更容易玩。因此,我们看到更多的人在LDN上喜欢 喷射战士 2和马里奥赛车8豪华版(都是着色器繁重的游戏)。有关自 2.4 以来更改内容的下载和更全面的列表,请查看上一篇LDN2.5的文章。

好吧,总之,我们想向所有用他们的时间,知识,金钱或热情支持该项目的人表示感谢。没有他们,我们真的不会还在这里。作为一个开源项目,我们从社区参与和外部贡献中茁壮成长;如果您在计算机图形学,低级系统或任何UI和网页设计方面有一些知识,那么有一个地方适合您。模拟器可能看起来难以接近,但其有真正无穷无尽的潜力。

最后,我们期待下次的相见!

,