Switch模拟器Ryujinx进度报告2023-10月

Switch模拟器Ryujinx进度报告2023-10月

首页模拟经营真实学校模拟器2023更新时间:2024-04-30

Switch模拟器Ryujinx进度报告2023-10月

超级马里奥:惊奇

你有没有吃过糖果、糖果,或者任何本地的“实际上对你来说很糟糕但味道很好的可食用物品”?我们希望如此,因为一个月的结束不仅标志着下一个月的开始,而且也标志着你们的另一份进展报告。

在很可能是有史以来最令人毛骨悚然的游戏发布中,《超级马里奥惊奇》在完全相同的日期为我们的 Switch 和 PC 增光添彩......很好奇这是如何发生的。

无论哪种方式,让我们在十月的礼包里再多吃几杯甜食吧!

议程上的第一个项目以 Luigi's Mansion 3 路易吉洋馆3 的形式以适当的主题标题开始。作为 Switch 的视觉大师之一,LM3 喜欢在很多地方有点卡顿:渲染大厅交错并使用极其激进的动态分辨率模式只是我们多年来不得不面对的几个烦恼。上个月,我们谈到了AMD GPU对某些物体和阴影的一些修复,但仍然有一个案例,每个人都可以很容易地注意到Luigi玩得不开心。

我们可以在这里为他保留一些尊严,并确认他很好地控制了自己的膀胱。问题出在纹理格式上。LM3 将此阴影渲染为 R16Unorm(颜色格式),但随后继续将其采样为 D16Unorm(深度格式)。 添加对这些格式之间的复制依赖关系的支持可将阴影恢复到其适当的形状和寿命。

在检查 Cocoon 时,我们在 GPU 上隔离了我们还不支持的更多着色器指令。虽然这通常没什么大不了的(只是控制台日志中的警告),但这个特定的指令正在主动生成无效代码,而不仅仅是优雅地失败。 在多重采样纹理上实现对查询样本量的适当支持,可以一举两得。着色器指令实现,垃圾输出消失!

从像Cocoon这样简单的名字的背后,我们的下一个目标是更简洁的:Neptunia GameMaker R:Evolution。超次元海王星游戏制作者R:进化

就像冲马桶一样,GPU 需要一种方法在游戏不再使用内存 (VRAM) 后从内存 (VRAM) 中删除数据。然而,关于刷新纹理的核心规则之一是,一旦纹理本身变得未映射,就不应该尝试这样做。这是因为一旦取消映射,GPU 就不知道现在实际存储在其内存位置的内容,CPU 可能已经在那里放置了其他东西。如果有人猜测如果 GPU 试图刷新实际上不是它所认为的数据会发生什么......好吧,这就是数据损坏的方式!

就我们上面的GameMaker朋友而言,这正是发生的情况。不幸的是,对于这款游戏来说,由此产生的数据损坏只导致了硬崩溃,而不是任何漂亮的数字艺术。 跳过这些无效的刷新可以使游戏以良好的方式进行。

AMD通过发布其23.2.x系列Radeon驱动程序为我们提供了新鲜而热气腾腾的挫败感。想象一下很恐怖,醒来,更新你的GPU驱动程序,然后......

在我们的 SPIR-V 后端中,我们之前尝试在对同一函数的多次调用中重用函数参数。无论出于何种原因,这现在完全使 AMD SPIR-V 编译器感到困惑,导致您可以在上面看到的抽象线条艺术。

为每个函数提供自己的一组临时值似乎可以解决问题。

NativeAOT 是 .NET 的一个相当新的功能,我们之前在这些报告中已经提到过几次。它有效地试图弥合完全JITed运行时(如通常的C#或Java)与完全编译的语言(如C/C )之间的差距。提前 (AOT) 将 C# 直接编译为机器代码在启动时间和可移植性方面具有一些极好的好处,在这些平台上,您可能无法访问完整的 .NET 运行时和 JIT。

但是,执行此操作时,您确实会丢失 .NET 的一些功能,即在程序运行时生成代码的能力。Ryujinx 目前对某些 Switch GPU 宏使用 JIT,它试图直接发出 .NET IL(中间语言)以避免通过较慢的解释器路由。只需启用 NativeAOT 并强制解释器,即可将《超级马里奥奥德赛》的性能从 90FPS 降低到 75FPS,大幅下降 17%。

解决此问题的方法是实现 HLE 宏,这些宏尝试直接匹配较低级别的 NVN 宏,而不是将其留给发出的 IL。在 NAoT 下,这使 SMO 备份的性能达到 85FPS。仍然低于前面提到的 90,但 5FPS 的差距是由与这些 NVN 宏无关的其他因素弥补的。

在其他新闻中,为不支持 'textureGatherOffsets' 的 OpenGL 等效项的 GPU 驱动程序添加了回退。MoltenVK 在技术上报告说它确实支持这样的扩展,但是在最初的 macOS1 版本和今天之间的某个时候,对 SPIRV-cross(MVK 用于将 Vulkan 着色器转换为 Metal 着色器的库)的更新使其尝试使用上述功能......这会使 metal 编译器崩溃,因为 metal 不支持它!

这种回退再次允许 Xenoblade Chronicles: Definitive Edition 渲染(尽管仍然存在一系列其他问题,尤其是在较新版本的 MoltenVK 上)。

Sifu 师傅是一款名字很短的 roguelike,自从几个月前发布以来,在 Ryujinx 上玩一直很沮丧。虽然在视觉和机械上都很好,但我们听说与时间相关的随机崩溃并不是许多用户最喜欢处理的问题。

原因是游戏调用了一个函数,该函数替换了表面 flinger 中的缓冲区(这基本上是从许多较小的缓冲区中生成一个大数据缓冲区的服务)。虽然大量连锁反应的最终结果是内存取消映射崩溃,但根源是单个基本计数器中的一个小问题,未正确递减。通过确保如果击中这些有问题的案例,这个计数器会减少,师傅玩家不再需要屏住呼吸。

撇开所有图形化的东西,让我们来谈谈多人游戏!

对于那些不知道的人,虽然在macOS更改中已经完成了一项上游工作,但另一项工作也开始了。将我们在过去 3 年中一直在开发的所有 LDN 功能纳入我们的主要版本终于成为焦点,因为已经有更多时间用于服务的清理和逆向工程方面。

上个月,我们增加了对实际服务实现的支持,但需要注意的是,虽然现在很多“Switch”端的东西已经到位,但我们仍然需要一些方法来使其有用。目前,在我们的 LDN 构建中,这可以通过两种方式完成:

1.通过互联网自定义,通过我们自己的服务器实现,称为“RyuLDN”。这允许 Ryujinx 用户从世界各地相互连接,但缺点仅限于 Ryujinx 用户。

2.Ldn_mitm 是一种替代方案,可将任何具有 LDN 功能的游戏的功能转换为具有 LAN 功能的游戏。这意味着任何带有 ldn_mitm sysmodule 的真实 Switch 都可以连接到任何其他等效的 Switch,此外还可以连接到 Ryujinx。缺点是,要使这种方法起作用,所有系统都必须位于同一网络上,无论是真实的还是虚拟的。

由于第二种方法目前最终更简单,因此它是第一个在我们的主要版本中可用的方法。

许多使用集成和低功耗系统的用户(或任何盯着他们的功耗而不是玩游戏的人!)可能会喜欢的一个变化是调整我们如何发出信号,将会话添加到给定的 ServerBase。过去,我们只是轮询 1 毫秒,这导致了相当多的“假”CPU 使用率。虽然它是假的,因为如果任何其他任务需要它,线程就会屈服,但它不是假的,因为它迫使线程不断实际使用,在分析时夸大了它的存在,并对功耗造成很大影响。

通过调整此逻辑以在会话添加而不是轮询时发出事件信号,一般 CPU 使用率(尤其是在仿真暂停时)会大幅降低。然而,真正的收益可以在电池供电的设备(如 Steam Deck)上看到。《马里奥赛车 8 豪华版》虽然只是坐在角色选择屏幕上,但其功耗从 15.8W 一路降低到 9.1W。

我们想重申,我们预计这不会对原始性能产生太大影响(如上所述,使用率不是“真实的”),但在瓦数减少 42% 的情况下实现相同的性能在我们的书中无疑是一场胜利。并非每场比赛都如此,但未来我们执行亚毫秒级等待的方式仍有进一步的改进。

至于本月添加的其他一些体验质量功能,长期以来通过简单的点击将游戏快捷方式添加到桌面的功能终于实现了。右键单击任何标题并查看上下文菜单的最底部,从那里所需的游戏将在当前活动桌面上创建自己的快捷方式(带有游戏图标)。

Windows

Linux

macOS

其次,如果您使用我们的 Avalonia 前端,现在可以从底部栏更改纵横比。无论出于何种原因,如果 16:9 在会话中途没有削减它,这允许它们之间的热交换,而您只需要游戏是 4:3。

最后但并非最不重要的一点是,我们用来模拟大多数文件系统服务的库 - LibHac,已更新到 0.19.0 版本,并延续了开源开发人员讨厌命名任何版本 1.x.x 的趋势!

新版本,新东西。固件 16.0.0 中添加的新文件系统服务“IFileSystem.GetFileSystemAttribute”现已完全受支持,允许 Tiny Thor、Cassette Beats 和 DeepOne 等较新的游戏在游戏中出现。

DeepOne

Cassette Beasts

Tiny Thor

最后一个显然还需要一些工作!

结束语

如果你在这些报告中做到了这一点,那么你应该得到一颗金星,或者一块饼干,或者更普遍地触发多巴胺的东西。

我们要再次感谢每个月在 Patreon 上支持我们、在 GitHub 上为我们贡献代码的每个人,以及在我们的 Discord 中帮助其他用户进行故障排除和错误报告的人!没有你,我们做不到,我们希望下个月再见到你。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved