Switch 模拟器Ryujinx 进度报告2022 年9 月

2024-10-31 11:49:07 | 作者: 匿名

喷射战士3

今年我们刚刚完成了目标的75%。

本月,《喷射战士3》发布。假期即将来临,这意味着大量游戏将发布,包括即将推出的神奇宝贝游戏!

在我们深入了解Ryujinx 2022 年9 月的旅程之前,让我们花点时间回顾一下我们的赞助人目标和激励措施。提醒一下,这些功能不会付费;无论如何,下面提到的所有功能最终都会实现。但是,如果目标实现,优先级将立即转移到实现该功能。

目标分析:

ARB 着色器- 2021 年4 月实现目标。

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

ARB 着色器将使用OpenGL API 来加速NVIDIA GPU 上的着色器编译,进一步减少首次运行延迟。

2000 美元/月- 材质包/替换功能- 即将推出!

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

Target 持续后,预计到达时间:大约3-4 周

2500 美元/月- 全职开发人员- 尚未达到。

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

5000 美元/月- 其他全职开发人员- 尚未满足。

每月的捐款将允许更多的Ryujinx 团队开发人员全职从事该项目。

3.2.1.开始!

显卡:

不出所料,本月最大的GPU 变化涉及三个项目,这三个项目对于Ryujinx 模拟器来说相对较新:Vulkan、AMD GPU 和Splatoon 3。在发布时,许多人对游戏的渲染和游玩效果感到满意,但这是一种荣耀只有NVIDIA GPU 才能实现。 Vulkan 期望某些顶点属性以特定方式排序,如果游戏向未来的顶点传递未对齐的元素,这可能会导致混乱的连锁反应。通过添加一种在绑定之前更改顶点缓冲区步长的方法,我们可以避免这个问题并使Vulkan 满意。这对于AMD 用户来说是个好消息。

喷射战士3

然而,并不是每个问题都需要破坏游戏才能引起注意,《喷射战士3》本月给我们带来了一个相当有趣的故障,一些在线用户很快注意到评级系统似乎给某些团队一些坦率的令人震惊的分数。

喷射战士3 在线

事实证明,由于Splatoon 中进行评分的独特方式(地图覆盖范围有多大),高于原始分辨率的缩放值实际上会导致游戏认为油漆覆盖的像素比实际覆盖的像素多。这很快演变成在线服务器上的GPU 军备竞赛,看看谁能在“修复”失败之前打破历史世界纪录。 Funnier 仍在向相反方向扩展,其分辨率低于原始分辨率,几乎无法在任何墨水中游泳,从而完全破坏了许多用户的大部分游戏玩法。通过根据分辨率缩放样本计数器,这两个错误都得到解决!

九月有几个错误返回,其中第一个解决了Fate/EXTELLA 中的一个错误,该错误导致所有背景停止渲染并仅呈现黑色空白。将问题范围缩小到纹理类型之间的损坏后,该问题已在OpenGL 中得到修复,并且很快就会针对Vulkan 进行单独修复。

《马里奥派对超级明星》最近也受到了打击,Spotlight 游泳迷你游戏的渲染也受到了打击。特别是红色聚光灯似乎将其表面照明减少了一半。这是一个真正的故障,因为它根本不会影响游戏中的其他两个聚光灯。经过一番挖掘,可以追溯到之前特定于着色器的优化,以及如果添加格式来更改纹理则重新绑定纹理的快速修复。

马里奥派对超级巨星

有些游戏似乎“更喜欢”一种主机图形API 或另一种,以实现渲染准确性、性能或只是传统硬件兼容性。就性能而言,有几款游戏在Vulkan 上的表现比在OpenGL 上差很多。虽然我们将继续重申Vulkan 并不是解决所有问题的方法,也不一定比OpenGL 更快,但这些游戏中的性能下降足以被视为异常现象。与许多最常见的报告问题一样,这一切都始于《神奇宝贝:剑与盾》,在最近的更改之前,使用Vulkan 的性能下降了20%。这对AMD 和Intel 用户造成了沉重负担,他们可能一直徘徊在低于全速20% 的水平,但没有高性能OpenGL 驱动程序来取代它们。

那么,是什么导致了性能的巨大差异以及我们如何解决它呢?事实上,这一切都始于Nvidia OpenGL 驱动程序,因为正如整个仿真历史中多次证明的那样,它非常智能。 Nvidia OpenGL 驱动程序有一个内置机制,可以在队列变大时将命令直接刷新到GPU,虽然不一致,但在频繁发生这些刷新的游戏中效果很好。与往常一样,Vulkan 不会从驱动程序中获得这种特殊处理,因此这里选择的解决方案是定期手动刷新命令,以减少GPU CPU 延迟,并使我们等待刷新的时间更短且更一致。

剑与盾的好处是巨大的

以上是一些受益于刷新更改的游戏桌。剑/盾受益最多,但即使是荒野之息也能受益一点。 Sword/Shield的瓶颈是GPU等待主GPU线程所花费的时间;与此同时,《荒野之息》中其他来宾线程等待GPU 的时间也有所减少。

继续讨论Vulkan 改进的主题:R4G4B4A4 格式的某些组件出现故障,导致背景和文本框等各种问题。更正此顺序可以管理《伊苏VIII:达纳安魂曲》和《夜空嚎叫》等游戏中的错误显示。

伊苏八世:达纳的安魂曲

让我们进行一些快速更改以保持Vulkan 运行:

如果禁用混合,则混合状态现在归零。这减少了AMD 和Intel GPU 上的管道卡顿。在这种情况下,Nvidia 驱动程序已经非常宽容地处理管道损失。

四边形现在在Vulkan 中转换为三角形。由于Vulkan 没有本机主机四边形支持,因此我们之前绘制每四个四边形的方法比允许Vulkan 渲染其擅长的内容要慢得多。三角形!

如果主机GPU 不支持,SPIR-V 上将不再输出窗口索引。这使得可能不符合最新Vulkan 规范的旧GPU 可以玩一些以前在启动时会崩溃的游戏,包括《任天堂明星大乱斗特别版》。

至于更明显的变化,即使在Vulkan 长达一年的测试阶段之后,曲面细分仍然存在一些明显的问题。然而,由于最近发布了《英雄传说:零之踪迹》 ,这个话题又回到了每个人的脑海中,更具体地说,是在我们的Discord 频道中。正如您所看到的,这可能不是开发商Japan Falcom 所追求的沉浸式游戏体验。

英雄传说:零之轨迹

然而,这正是我们所怀疑的:镶嵌再次出现。幸运的是,一些游戏中的曲面细分问题已通过修复一堆不正确的假设和其他与SPIR-V 相关的失误得到解决,现在它们应该可以准确渲染。

英雄传说:零之轨迹

英雄传说:零之轨迹

巫师3

既然伊苏游戏在这份报告中似乎很受欢迎,为什么我们不包括另一款呢? 《伊苏VIII》有点令人失望,因为用户看到了各种渲染怪异现象。有时它有效,有时无效,有时它只是渲染文本框。很烦人。值得庆幸的是,游戏总是会被破坏,即使是很小的问题,以至于重现错误并找到原因并不像其他“随机”问题那么痛苦。通过在某些情况下将着色器LDC 转换为恒定缓冲区访问,我们可以允许在这种情况下激活无绑定消除。

是8

9 月还修复了《狙击精英 3》 早期介绍过场动画中的崩溃,因为它允许使用来自具有未绑定缓冲区的句柄的未绑定纹理。如果这是很多话,那么请允许我简化一下:游戏做奇怪的事情=游戏崩溃,游戏仍然做奇怪的事情=现在游戏不会崩溃。在这两个极端之间的某个地方,我们相信每个人都被涵盖了内部垂直同步信号(不,不是您想到的屏幕撕裂信号)也在9 月份更改为精确到16.667 毫秒的信号,而不仅仅是使用Ryujinx 的交换间隔。这修复了Tokyo Mirage 会话#FE Encore 中的一个问题,即当配对同步时间慢慢偏离音频通道时,过场动画中的音频会慢慢不同步。

限制9 月份的GPU 部分将引导我们巧妙地进入CPU 部分,因为这一最终更改与我们稍后将讨论的其他内容结合使用,以修复多个32 位游戏中的渲染问题。 1D 和缓冲区纹理在着色器上使用完全相同的纹理指令,因此我们需要直接从GPU 状态获取实际纹理,这成为Prinny 的一个问题。和普林尼2: 特攻游戏晓内裤大战。通过解决假设1D 纹理为缓冲区的情况,这些游戏可以正确开始渲染。

普林尼2

显然这不太正确,对吧?让我们解决这个问题。

中央处理器:

并非所有图形错误都与GPU 模拟有关,Ryujinx 本月在CPU 模拟方面取得了巨大进展。如上所述,我们将从一项更改开始,结合后面的GPU 修复,解决32 位游戏中的许多渲染问题。

由于VLDn 和VSTn 的原始CPU 测试中的疏忽,这些指令实际上并未在所有模式下进行准确测试。修复此问题可以发现由不正确的寄存器值引起的多个故障点,从而导致从不正确的寄存器位置获取其他值或将其他值发送到不正确的寄存器位置。解决这个不正确的寄存器增量值可以修复各种32位错误,它需要一个完整的列表。

此处充当锚点的两个普林尼游戏当然已通过此更改修复:

但就像所有最好的改变一样,它的影响要大得多。以下游戏现已渲染或修复了一些主要的图形错误:

不再有英雄:

Switch 模拟器Ryujinx 进度报告2022 年9 月

不再有英雄

英雄不再2:垂死挣扎:

英雄不再2

查理的天线和一系列其他图形效果现在可以在《皮克敏3:豪华版》 中正确渲染。

皮克敏3:豪华版

此更改还解决了以下游戏中音质极差的问题:《二之国》 、《双截龙:霓虹》 和《搏击长空:风暴突击队》 。

如果我们没有列出ARMeilleure 现在可以处理的每条新指令,它会是一个进度报告CPU 部分吗?不,不会的。

如果您还没有猜到,过去几个月我们的重点是32 位,因为大多数Switch 游戏都是64 位的,这使其成为我们重新编译器迄今为止最薄弱的领域。但是,就像任天堂Switch 的所有事情一样,如果你让开发者可以选择做奇怪的事情,他们就会做奇怪的事情。因此,相当多的Switch 游戏(通常是某种移植)选择了32 位选项,如果重新编译器中没有容纳它们所需的指令,这可能会让我们感到头疼。

好的,那么有什么新内容以及它有什么作用?

VRSRA、VRSHRN、VQSHRUN、VQMOVN、VQOVUN、VQADD、VQSUB、VRHADD、VPADDL、VSUBL、VQDMULH 和VMLAL Arm32 NEON 已实现,并允许Nintendo Switch、博德之门、星球大战: 共和国突击队的所有开局都可以玩。

实现了ADD (zx imm12)、NOP、移动视频(rs)、LDL、TBB、TBH、移动(zx imm16) 和CLZ 拇指命令,并允许Vita2HOS 自制程序在其最新版本上再次运行。

实现拇指(32 位)内存(有序)、乘法、扩展和位域指令,并允许在Vita2HOS 下进一步开发一些Vita 应用程序。

实现了T32 Vfp 指令,并允许某些Vita 自制软件在Vita2HOS 下开始渲染。

VRINT(向量)Arm32 NEON 指令已实现,如果您提供保存文件(否则需要Web 小程序),则允许Ni No Kuni 从一开始就可以运行。

二之国

实现了T32 Asimd 指令,允许Vita 自制软件(例如CHIP-8 模拟器)启动和渲染。这个实际上非常酷,因为最后的场景本质上是一台模拟Nintendo Switch 的PC,它运行着一个运行PS Vita CHIP-8 模拟器的自制翻译层,模拟突破!

PSV

T32 上的PLD 和SUB (imm16),以及A32 和T32 指令上的UADD8、SADD8、USUB8 和SSUB8,再次允许Vita2HOS 更通用的功能运行,尽管有些游戏可能会使用它们。

A32/T32/A64 提示指令(CSDB、SEV、SEVL、WFE、WFI、YIELD)被实现为Nops(无),以避免在《二之国: 白灰女王》等游戏中出现意外行为和崩溃。

几个不同的人投入了大量的工作,在如此短的时间内淘汰了如此多的新指令,以至于它甚至没有带走其他领域的进展,因为我们已经涵盖了GPU 的广泛变化仿真已收到。现在,我们在32 位游戏、自制软件和Switch-PS Vita 翻译层方面处于更有利的位置!最后一个可能看起来小众,但像Vita2HOS 这样的项目确实激发了人们的想象力。

经过近一年的炼狱,rejit 队列的清理工作已被合并,使这部分代码库的维护变得更加容易,并预示着Ryujinx 原始CPU 开发人员之一的浪子回归,如果您喜欢游戏内视频全速打球,他带来了一些出色的进步。 LDj3SNuD 在9 月份的第一个调用端口是实现一些托管方法,以饱和软回退类的ShlReg 区域。您不需要知道这意味着什么,但其效果在视频播放中具有相当大的变革性。

《异界锁链》 在游戏的某些区域实现了巨大的性能改进,因为预先录制的视频与总部大厅等地方的正常游戏渲染共存。我们在i7-10700K上看到了从23FPS-100FPS的介绍,以及从30FPS-43FPS的大厅。

异形链

不满足于此,对Fpsr/Fpcr 指令的处理和隔离进行了一些额外的更改,进一步改进了全动态视频的播放。这些改进在Tony Hawk 的Pro Skater 1+2 等游戏中最为明显,该游戏在低端硬件上引入了极其苛刻的FMV。

图形用户界面:

本月关于GUI 开发的内容相对较少,但有一件重要的事情值得本节讨论。如果您已经关注这些进度报告一段时间了,您就会知道我们正在尝试从GTK3(通过C# 绑定)切换到名为Avalonia 的本机C# UI 框架。这段旅程开始已经有一段时间了,有时感觉就像向前迈了两步,又朝随机的方向迈出了一步。其中之一是所谓的“渲染窗口”;这是GUI 的一部分,包含OpenGL 或Vulkan 渲染器,并实际向您呈现正在运行的游戏、应用程序或自制软件。

塞尔达:荒野之息

红色突出显示的区域已经引起了不止一次头痛,并且今年已经进行了多次修订。 GTK 目前将此区域作为嵌入式窗口处理,这意味着实际上有第二个“子”窗口,它直接嵌入到容纳GUI 其余部分的单独窗口中。这允许对渲染进行完全细粒度的控制,并且意味着渲染窗口不直接与GUI 相同的更新周期绑定,这对于调整窗口大小和拖动窗口等任务来说是一件好事。

我们Avalonia 实施的第一次迭代也做到了这一点。但我们很快注意到Windows 上的一些奇怪的现象,包括“子”渲染窗口与GUI“父”窗口具有不同的焦点。例如,如果您单击游戏,它将取消选择主窗口并破坏热键和特定于焦点的操作等内容。不理想。因此,在2021 年和2022 年期间探索了其他选项,最终实现了渲染窗口而不是渲染层,作为主窗口的一部分出现。这似乎是解决方案,因为它解决了焦点问题,并允许GUI 和游戏在热键和键盘导航等关键区域完全同步。然而,这会带来一些巨大的成本。

1. 由于渲染现在是父窗口的一部分,这意味着整个GUI 必须由硬件渲染。这使得在不重新启动整个应用程序的情况下无法切换GPU 或图形后端。

2.由于上述限制,现在游戏和GUI之间没有区别。这对覆盖、记录软件和其他连接到图形API 的基准测试工具造成了严重破坏。大多数将提供GUI 本身的日志记录或性能统计数据,而不是游戏,因为没有办法区分。

塞尔达:荒野之息

3.由于UI现在由Avalonia层渲染,我们实际上失去了对核心渲染和渲染过程的一些控制。帧节奏在许多游戏中都受到了重大影响,在这个问题得到解决之前,许多用户对新的Avalonia 用户界面感到担忧,这是可以理解的。

塞尔达:荒野之息

关于如何最好地解决这个问题已经有很多来回了。建议的解决方案范围从简单地使用弹出窗口(类似于Dolphin)一直到可能在Avalona 项目框架本身内针对我们的特定用例实现某些内容。这些似乎都不切实际,也没有我们的用户对所谓的“升级”感到满意的解决方案。

所以。我们回到原点了吗?是的!这个月我们看到了第二次裂缝,我们用凹进的窗户回到了我们的根源,我们很高兴地说这是一个巨大的成功。这次父子窗口之间的交互不会引起焦点问题,并且随着完全渲染控件的回归,带来了更好的覆盖支持和与GTK 相当的演示体验。我没有提到它还删除了3500 多行代码,只需要添加800 行代码,简化且更好。

本月对错误进行了全面整理,并进行了用户体验改进,包括一些字体更改、边框添加和对齐修复,这有望使事情不再居中或浮动。

更改了一些UI,使其更加美观

虽然这在技术上是10 月份的更改,但我们很高兴地注意到,更新程序现在可以在Avalonia 版本上正常工作,这意味着任何希望“测试”新UI 的人都可以自己使用较新的版本来执行此操作。如果您想给您的操作系统带来旋风,请前往我们的GitHub 版本页面并为您的操作系统选择“test-ava”版本。

内核/服务:

为了结束一个最富有成效的九月,让我们沿着为我们带来内核和服务模拟的道路走下去。

主要目标是继续致力于我们的网络和BSD 服务,因为它们影响大量游戏,即使我们没有直接连接到任何真正的任天堂服务器。修复了在启用访客互联网的情况下启动Victor Vran Overkill 构建时的空引用异常,并解决了导致套接字返回错误结果代码的小疏忽。此后,socket的轮询方法得到了改进,并且为了完整性,SendMMsg/ReceiveMmsg都在bsd服务中实现。

将多个游戏打包到一个可执行文件中的游戏(例如《超级马里奥3D 全明星》或其他一些游戏集合)在捆绑的应用程序之间移动时会发生一些非常奇怪的事情。其中一个标题是Pliny Presents NIS Classics Volume 3: Lapselle: Ragnarok/Rhapsody: A Musical Adventure,当它转换为实际游戏时,它需要当前用户的列表。以前,执行此操作所需的服务已被存根,因此返回空列表,从而导致崩溃。通过正确实现列出开放上下文存储用户服务并存根LoadOpenContext,该游戏以及可能存在类似问题的其他游戏将出现在游戏中。

Rapselle:诸神黄昏/狂想曲

本月对占位符管理器树查找的优化已经实现,主要目的是允许执行大量内存映射的游戏更快地关闭。以前像《女神转生V》 这样的游戏需要相当长的时间才能完成:

又一轮快速射击,直到我们完成:

现在为音频渲染器分配了一个工作缓冲区,而不是使用来宾提供的内存。这修复了《搞怪特技摩托》 和《突变元年:伊甸园之路》 中的崩溃,在处理音频渲染器之前,所需的内存将被取消映射。

修复了sfdnres 套接字服务中的字节顺序,以防止端口序列化期间出现问题。

解决了部分取消映射保护中的回归问题,该问题导致《任天堂明星大乱斗终极版》 中的文本无法正确呈现。

修复了当证书ID 设置为“全部”时SSL 获取证书调用中的错误。这允许《奇异人生:重制版》 启动。

奇异人生:重制版

结论:

这次就这样了!我们即将迎来2022 年底,这意味着我们距离另一款神奇宝贝的发布也越来越近了;我们所有人的噩梦燃料。然而,在相关主题上,我们计划比预期更早发布新的LDN 版本,这要归功于本报告中列出的一些Splatoon 3 错误,这些错误对于良好的LDN 游戏至关重要;特别是对于那些使用AMD显卡的用户。我们还无法提供预计到达时间,但请放心,它不会像我们在上一个版本中看到的那样延迟数月。

用户评论

孤城暮雨

看了这个进度报告,真是兴奋不已!Ryujinx 的进步真的很大,感觉离完美模拟不远了。

    有10位网友表示赞同!

墨城烟柳

期待Ryujinx的更新,我已经迫不及待想要玩上那些我Switch上还没玩的游戏了。

    有20位网友表示赞同!

掉眼泪

每次看到Ryujinx的进度,我都觉得Switch模拟器市场又多了一个强有力的竞争者。

    有8位网友表示赞同!

青墨断笺み

2022年9月的进度报告,感觉Ryujinx的开发者真的在默默努力,希望他们能坚持下去。

    有8位网友表示赞同!

反正是我

虽然Ryujinx还在开发中,但2022年9月的进度报告显示,它已经能玩不少游戏了,期待后续发展。

    有20位网友表示赞同!

话扎心

看了Ryujinx的进度报告,有点失望,感觉进步没有想象中的大。

    有6位网友表示赞同!

棃海

2022年9月,Ryujinx的模拟效果还是不够完美,希望开发者能解决兼容性问题。

    有14位网友表示赞同!

你身上有刺,别扎我

我对Ryujinx的兼容性有点担心,2022年9月的报告里好像没有看到太多改善。

    有7位网友表示赞同!

惯例

每次看到Ryujinx的进度,都让我想起了当年红白机的模拟器,那个年代的感觉又回来了。

    有9位网友表示赞同!

。婞褔vīp

虽然Ryujinx还有提升空间,但2022年9月的报告让我相信,它将来一定会成为Switch模拟器的佼佼者。

    有20位网友表示赞同!

柠栀

2022年9月的进度报告,Ryujinx的运行速度让我印象深刻,期待它能够在更多游戏上表现出色。

    有17位网友表示赞同!

(り。薆情海

看到Ryujinx的进度,我有点纠结,一方面想支持开发者,另一方面又担心版权问题。

    有6位网友表示赞同!

眼角有泪°

2022年9月的Ryujinx报告,感觉开发者们真的很努力,希望他们能继续保持。

    有20位网友表示赞同!

一笑傾城゛

Ryujinx的2022年9月进度报告,让我看到了希望,希望它能够解决卡顿问题。

    有17位网友表示赞同!

有阳光还感觉冷

对于Ryujinx的2022年9月进度报告,我只想说,加油,开发者们!

    有6位网友表示赞同!

予之欢颜

虽然Ryujinx还在开发中,但2022年9月的报告让我看到了希望,期待它能够成为Switch模拟器的最佳选择。

    有6位网友表示赞同!

爱到伤肺i

看了Ryujinx的进度报告,我觉得它已经具备了相当高的可玩性,值得期待。

    有17位网友表示赞同!

素衣青丝

2022年9月的Ryujinx,虽然还有不足,但已经让我看到了成为经典模拟器的潜力。

    有19位网友表示赞同!

孤廖

每次看到Ryujinx的更新,我都期待着能够在Switch上玩到更多游戏,希望它能够实现。

    有20位网友表示赞同!

龙吟凤

对于Ryujinx的2022年9月进度报告,我觉得它已经让我看到了未来,期待它能够带来更多惊喜。

    有12位网友表示赞同!