天天看点

Switch模拟器Ryujinx进步报告2022-6月

作者:YUZU

Switch模拟器Ryujinx进步报告2022-6月

Switch模拟器Ryujinx进步报告2022-6月

2022 年已经过半,当我们有一些好游戏可以玩时,时间肯定过得很快! 说到游戏,本月发布了一些真正的游戏,我们很高兴地说它们中的 大多数 都可以工作,要么开箱即用,要么有一些小的变通办法。 尽管来自 Koei Tecmo(所有模拟器开发者都害怕的名字),火焰纹章无双:风花雪月,无论是演示版还是完整版,在第 1 天都完美运行,只有马里奥前锋抢走了我们的风头!

如果需要一个MOD来绕过介绍,我们尽量不宣传它变成了可玩的游戏,但任何有兴趣的人都可以选择,并且游戏的其余部分运行良好。

这是下半场更精彩的发布,事不宜迟,让我们进入我们的 patreon 目标!

Patreon目标:

Vulkan GPU 后端 - 仍在进行中。

已交付公共测试版本 !

ARB 着色器 - 2021 年 4 月达到的目标。

与 Vulkan 一起工作正在进行中,请稍等片刻,直到我们能够将此更新交付到我们满意的状态。

通过使用 OpenGL API 提高 NVIDIA GPU 上的着色器编译速度,ARB 着色器将进一步减少首次运行时的卡顿。

2000 美元/月 - 纹理包/替换功能 - 快到了!

这将有助于替换游戏中的图形纹理,从而实现自定义纹理增强、备用控制器按钮图形等。

一旦目标得以维持,预计到达时间:~3-4 周

2500 美元/月 - 一名全职开发人员 - 尚未见面。

这笔每月捐款将允许该项目的创始人 gdkchan 全职开发 Ryujinx。 我们所有的贡献者目前只在业余时间从事该项目!

5000 美元/月 - 额外的全职开发人员 - 尚未见面。

这笔每月捐款将允许额外的 Ryujinx 团队开发人员全职从事该项目。

让我们开始吧。

显卡:

Switch 仿真不是任何团体或项目都可以垄断的东西, Skyline 团队肯定会投入他们的工作来证明这一点! 联合首席开发商 Bylaws 对 Ryujinx 进行了一些修复; 第一个 解决了可能的竞争条件 ,第二个解决了上古卷轴 V:天际中长期存在的错误。 虽然可能是有史以来最具弹性的平台移植游戏,但自 2020 年启动以来,它从未打开过菜单,结果证明, Skyrim 使用的计数器类型实际上需要一个信号量 (一种用于帮助的替代数据结构)多线程任务,而不仅仅是要释放的常量零。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

虽然还没有达到完美的状态,但看到一些视觉上更复杂的 Switch 游戏渲染并且实际上表现非常出色总是很酷!

不满足于仅仅修复有史以来最畅销的游戏之一,这一变化实际上也完全解决了 伊苏9:怪人之夜 中极其缓慢的速度,并解决了 吉娜姐妹:扭曲梦境 中的黑屏图形问题。 有一位非常有耐心的用户运行 伊苏9:怪人之夜 花了 5 个小时才进入游戏,呃。。。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

本月继续他使用无尽的 GPU 黑魔法与铲子游戏的战争,gdkchan 完成了最后的润色以完全修复了18+绅士游戏 鲜活的世界 和 限界凸起:萌情水晶。由于 错过了如何处理了多重采样和非多重采样纹理 。 通过允许非多重采样纹理继承与多重采样纹理相同的数据,如果出现这种情况,Ryujinx 将不再读取垃圾数据。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

当然,限界凸起:萌情水晶 看起来也好不了多少。 除非你是这个颜色的忠实粉丝…… 棕褐色皮肤 ? 幸运的是,实际上允许游戏渲染除单一颜色之外的其它内容。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

与索引抽奖相关的后续更改修复了一些使用它们的游戏可能具有的低迷性能。 有时模拟器会为相同的结果绘制多次,这会在帧准备好之前增加大量的渲染时间。 通过将 索引计数仅传递给单个实例 ,多余的抽奖被消除,如下所示(最右边的列是抽奖计数)。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

新发布的 时廻者 中的视频崩溃已通过 将输出矩形限制在定义的表面内 。 以前,如果输入和输出表面之间存在不匹配,则输入范围之外的任何数据在技术上都是“未定义的”,并且会因访问冲突而随机崩溃。

继续我们修复视觉小说的主题,对 AMD 和 Intel GPU 上使用的绘制纹理回退进行了调整,以便某些游戏不会将其视窗颠倒。 由于只有 NVIDIA 支持 NV_draw_texture 扩展, Ryujinx 需要忽略当前的 ClipControl 设置 ,因为它们在非 NVIDIA GPU 上无效。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

好吧,对于那些不关心视觉小说的人来说,这个月也有一些变化和修复给你! 其中第一个影响了今年最受期待(但确实令人失望)的游戏之一:新的马里奥前锋。 由于介绍视频导致尚未修复的崩溃,游戏大部分运行并在动画 3D 人群之外的启动时呈现得相当好。 gdkchan 立即进行救援,增加了对一些新形式的深度模板渲染目标(数组和 3D 纹理)的支持,同时修复了导致 Ryujinx 忽略渲染目标清除的错误。 随着这两个地方的变化,人群现在实际呈现并且游戏玩法并不那么孤独!

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

时光之帽 是另一款在标题屏幕前崩溃的游戏,但奇怪的是,只有当玩家在故事中以某种方式前进时才会崩溃。 当着色器编译由于多种原因发生时,纹理 ID 可能无效,因此通过 在访问描述符之前检查这种情况 ,我们可以避免与此相关的任何未映射的内存崩溃。

Switch模拟器Ryujinx进步报告2022-6月

Shader Cache 2.0 在很大程度上提高了许多臭名昭著的游戏的可玩性,但这并不意味着它没有 一些 缺点。 由于新的着色器专业化支持,需要在每次绘制时检查此属性; 这听起来很麻烦,虽然总体上它并不像最初看起来那么糟糕,但在包括超级马里奥奥德赛和 异度之刃:决定版 在内的多款游戏中都有与之相关的性能打击。 riperiperi 自己承担了 优化纹理绑定和着色器专业化检查 。

Switch模拟器Ryujinx进步报告2022-6月

超级马里奥:奥德赛 和 异度之刃:决定版 的性能恢复到了新的缓存水平,而 塞尔达:荒野之息 的性能受到其它因素的限制,因此几乎相同,但 FIFO 有相当大的下降,这表明模拟的 GPU 负载较少。 一旦游戏体验的其它瓶颈被转移,这应该会在未来看到不错的回报。 随意检查任何在新缓存后感觉变慢的游戏,希望它们恢复正常或至少关闭!

没有什么是免费的,它的代价是在几个小时内破坏分辨率缩放,然后 更新新的纹理绑定方法以考虑缩放 ,并且像 女仆向右跑 这样的某些标题需要 考虑完整的池变化缓存。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

CPU/内核:

本月我们的 CPU 部分从一些 CS:101 开始。 对于不熟悉数据类型,更具体地说,如何 数字 的人,有很多方法可以做到这一点:整数、短、长、浮点等。以前 Ryujinx 使用 无符号 (必须为正) 短 来存储操作数用途计数,最多占用数字 65535。如果您尝试存储一个高于此的值,您将得到所谓的“整数溢出”,所有内容将再次回到 0! 像这样限制自己主要只是最佳实践,因为存储更高值的数据类型通常在内存方面成本更高。 不幸的是,有些游戏确实需要这些额外的数据,所以 类型被切换为一个 无符号整数 ,它的上限是一个相当荒谬的数字 2147483647,所以几乎没有机会需要更高的数据!

太阁立志传V DX 现在是游戏中的首领,也可能是其它游戏中的首领(Switch 有这么多的 gaammmmesss!)。

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

停止模拟目前有点像玩俄罗斯轮盘赌,但需要使用任务管理器。 问题是问题的原因不是单一的,而且随着游戏变得越来越复杂并且正在做不同的事情,许多最近的版本将在关闭时陷入假死。 隔离并解决了两个这样的问题 本月在 CPU/Kernel 空间 当调用“TerminateProcess”函数时,它将尝试杀死所有正在运行的线程。 这里的问题是 TerminateProcess 本身是在它自己的线程上触发的。 有没有人发现这个问题? 这个错误阻止了调用 TerminateProcess 的线程被取消调度,并在无限循环中将自身死锁。

gdkchan 的大型内存别名更改的回归修复将 通过几个月前导致 Windows 上的内存崩溃 在运行另一个游戏后尝试使用或切换游戏时,这些可能最常触发的。 最后, 整个内核内存分配器都被重写 了,对我们的贡献者和维护者来说更简洁、更易读。 这里没有预期的错误修复或性能改进,但与往常一样,现在可能会有一些 5 美元的 JRPG 启动。 记住孩子,编写干净的代码!

服务:

暗黑破坏神II:复活是一个奇怪的流行标题,自最近的网络大修以来一直处于不确定状态。 在这些更改之后,游戏将在启动时崩溃,因为较新的方法在同一线程上处理所有读取和写入调用,如果同时需要这些调用,则会导致死锁。 通过 允许服务将其线程数增加到 2 ,游戏将再次持续启动。

Switch模拟器Ryujinx进步报告2022-6月

然而,这个修复并不是防止其它问题所需要的全部。 由于允许进程是多线程的,因此您需要处理一个线程正在处理而另一个线程试图响应的情况。 这个确切的问题导致其它使用套接字服务的游戏,如精灵宝可梦 剑/盾,在启动时崩溃。 这里的解决方案是 从这些请求中返回单线程方法 ,但添加一个标志来防止导致暗黑破坏神死锁的阻塞问题。 将来,回到多线程方法将是处理这个问题的更准确的方法,但是为了让所有东西都能很好地运行,所需的更改将是巨大且耗时的。 目前这个解决方案可以满足所有游戏的需求!

系统时间服务中的“TimeZoneRule”本月受到了一些喜爱,因为它在代码库中的使用非常不理想,并且需要在使用它的任何地方使用副本。 通过使这个“blittable” (给它一个通用的表示,不需要在托管和非托管代码之间进行特殊处理),它可以在少数情况下减少 JIT 开销,并潜在地提升任何可能成为性能瓶颈的领域。 随后修复了 小错误 并修复了 时区 在 UI 上的显示方式。

杂项:

每个人最喜欢的速射变化部分!

所有 XAML 文件 都已格式化 ,元素现在应该保持一致和对齐。

终于添加了简体中文翻译 Avalonia 项目

上个月, 该项目的构建脚本终于切换到专门针对 Windows 10。

Vulkan进展:

正如之前的报道中所说,Vulkan 本身的工作已经基本完成,如果您是 NVIDIA GPU 的骄傲拥有者,那将是一次非常棒的体验! 但是,正如偏移量所述,实施 Vulkan 后端的主要目标之一是确保它(在某种程度上)与 AMD 和 Intel 的显卡和驱动程序都能很好地兼容。 这不是一项小任务,并且试图修复某些偶尔仅限于某一代显卡的错误,特别是当所有开发人员他们自己并不拥有某一带显卡时,在这方面取得进展至少很难说。 具有讽刺意味的是,实际上应该是英特尔在这里还不错,因为虽然存在一些错误,但它们在架构中往往是一致的,与 AMD 似乎能够召唤它们的频率相去甚远。

但…。 在我将自己卷入另一个 AMD 仇恨愤怒之前,让我们看看一些已经为你们 AMD 人追踪和修复的东西!

Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月
Switch模拟器Ryujinx进步报告2022-6月

最后三个问题都是 Polaris架构 独有的(任何 RX 400/RX 500 及以下),这真是让人头疼。 事实证明,当使用 'VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT' 标志时,这些卡完全破坏了带有 mipmap 的 2D 阵列纹理。 通过强制复制而不使用此功能,可以以稍微缓慢的立方体贴图创建为代价来解决该问题。 性能影响并不显着,并且在大多数测试游戏中应该相对不明显。 谢谢,AMD!

当然,Team Red™ 拥有大约 2 万个其它错误,但我们希望能够接近尾声。

结束语:

2022年上半年已经过去,很快就离我们而去,但下半年肯定有一些杀手级游戏发布! 一个新的 异度之刃3、尼尔、女神异闻录、一个新的 索尼克 游戏和另一个精灵宝可梦。 应该是几个月的动作,是吗? 再次感谢我们所有的贡献者多年来让我们继续前进! 多亏了你们,我们才有希望在第一天看到上述所有工作。

和往常一样,这是报告的HR招聘时间! 如果您了解一些 C#、.NET、3D 图形或低级工程,您也可以帮助今年尽可能顺利和修复错误。 如果这对您来说都是魔法,那么捐赠给我们的 patreon 或积极参与测试和错误报告确实会帮助很多人。

大家下期见!