yuzu模拟器吧 关注:176,718贴子:740,637

yuzu 2022年2月进度报告(机翻)

只看楼主收藏回复


2022年2月进度报告
由...所写GoldenX86和洪霍亚2022年3月15日
很高兴有你在这里,yuz-ers!这个月,我们自豪地展示了大量的内核更改,这些更改最终修复了长期存在的错误、大规模的性能改进、UI和输入更改等等!
但首先,我们呈现给你的是:一个被大量要求的功能。不是为了yuzu,而是为了我们的文章。
虽然我们试图只讨论主线构建中当前可用的变更,但由于时间限制或延迟,我们有时会列出进度报告发布后几天内将提前访问的拉式请求。
为了获得准确的状态报告,柳树峪实现了悬浮卡,我们作者可以将它添加到拉取请求的链接中。如果您将鼠标放在虚线超链接上,您将能够看到PR的当前状态、标题、编号和合并日期。尝试这里! .
不同的可能状态有:
红色:拉取请求已关闭,它不会是任何构建的一部分
紫色:合并到master,它已经在主线上了,或者最多24小时内(如果我们的buildbot没有在这个过程中死掉的话!)
绿色:拉请求打开,尚未添加到主线,除非它具有mainline-merge标记,检查拉取请求链接进行确认

还有一些,但这三个是最重要的
从现在起,您可以随时回到文章中来查看某个特性是否已经合并到主线中,因为这些卡片会相应地动态更新。请记住,这不是一个立竿见影的过程。在下一个自动构建中,一个合并的拉请求将被添加到主线中,因此可能需要24小时才能看到此站点上的状态更改。
说完了,让我们开始吧!
图形修复,以及如何提高性能
由于Linux上的RADV驱动程序的问题,使用Vulkan API在AMD的RDNA2显卡上运行时会使yuzu崩溃。最值得注意的是,这个问题影响了Steam Deck,正如那些试图在他们的设备上测试yuzu的用户所报告的那样。
据确定,事故发生的原因是VK_EXT_vertex_input_dynamic_state,一个Vulkan扩展,用于最小化着色器编译过程中所需的管道对象数量。这些结构是巨大的,有时,一个游戏可能只想改变其中的一小部分内容,比如顶点输入状态。使用该扩展允许API通过简单的函数调用动态地改变结构中的这些成员,消除了创建全新对象的需要,从而减少了操作所使用的资源量。
当这个错误在上游被解决时,史诗男孩将公共关系推至将分机列入黑名单在RDNA2设备上运行RADV驱动,这样yuzu就不会彻底崩溃。
但是仍然有一名车手对我们有问题。
Mesa在Linux上的ANV驱动不支持纹理格式VK_FORMAT_B5G6R5_UNORM_PACK16,这导致yuzu在运行使用它的游戏时崩溃,例如Bowser's Fury。为了绕过这个问题,虚空石实现了一个模拟BGR565纹理依据重组RGB565格式相反。
同样地,变体实现了缺少顶点格式,标题所用パワプロクンポケットR(动力Pro坤口袋R)。
阿斯卢迪还实施了失踪帧缓冲格式,这次由使用Yo-kai Watch 4.

原来的名字是技术上的妖怪ウォッチ4 ぼくらは同じ空を見上げている(you kai wot chi bokura wa onaji sora wo miageteiru)
该开发者的另一个修复是添加丢失的信号量操作为MaxwellDMA,使用人Legend of Zelda: Breath of the Wild和Pokémon Legends: Arceus.
内核变化,如何驯服Smash
继续内核方面正在进行的工作,邦内有改进了内核内存管理器以使其与最新的系统更新更加兼容。
伴随这些变化而来的一个巧妙的设置是yuzu支持不同内存布局的能力,例如在开发者单元中使用的“6 GB扩展内存布局”(modding社区要求的一个特性)。
一些mod可以利用比开关所能提供的更多的RAM,主要是高分辨率纹理替换。为了解决这个问题,邦内添加了启用扩展6GB内存布局的开关真正的开发者工具包。这些额外的2GB将允许重模块工作没有问题。您可以在中找到设置Emulation > Configure… > General > Extended memory layout (6GB DRAM).


IP属地:中国台湾1楼2022-03-19 12:02回复

    走开!
    不要指望它会对仿真性能产生影响,游戏不会关心仿真主机是否超过4GB,他们只关心是否有足够的空闲内存来进行操作。
    bunnei还通过以下方式提高了页表管理的准确性将锁迁移到使用模拟来宾锁和改进物理内存的映射和取消映射 .
    一如既往,这项工作背后的最大动力是增加我们实现的准确性,同时修复过去几年中可能隐藏的任何错误。
    动态的我们的ARM JIT重新编译器,这个月也进行了一些新的优化和错误修复。
    Blinkhawk修正了Dynarmic中内存存储/加载操作序列化的防护逻辑x64代码发射器,随后更新了子模块将这些变化带入yuzu的代码库。这修复了冻结影响Pokémon Legends: Arceus.
    在研究稳定性问题时Super Smash Bros. Ultimate、邦内和愉快的发现问题是由中的错误引起的SpaceRemaining函数,用于计算缓存块中JITed代码的剩余可用空间。
    Dynarmic将这些代码块分成两个区域,名为near和far。该方案旨在通过保留“热”代码来最小化L1 CPU缓存缺失near随时可以执行,而“冷”代码被推入far地区。由于计算剩余空间的方式存在错误,因此near区域将溢出到far区域,用“热”代码覆盖“冷”代码。然后,CPU将尝试运行先前存在的“冷”代码,并在尝试时可怕地崩溃。
    最终(没有双关语的意思),这被解释为在SSBU,因为这是耗尽空间和溢出缓存所需的时间。经过纠正比较用来计算这个值,开发人员终于能够缓解围绕这个标题的一个长期存在的问题。

    为了测试这些变化,我们进行了多次CPU大战...(超级粉碎兄弟终极版)
    梅里也一直很忙实现对新CPU优化的支持,这使得ARM独占访问指令的模拟通过使用cmpxchg的(比较和交换)说明x64建筑。
    ARM指令集包含可以排除访问内存地址的指令,因此只有一些指令(在本例中是一对指令:一个用于读取值,另一个用于写入值)可以在多核环境中安全运行,而不会受到其他线程指令的干扰,这些线程可能也希望访问内存中的相同值。
    它通过在读取存储器中的值之后将地址标记为“独占访问”来实现这一点,以便“独占”存储指令仅在标记有该标志的情况下写入该地址。另一方面,“正常的”存储指令被设计成总是在写之后清除该标志。因此,排他指令可以使用该信息来知道存储器地址中的值何时被非排他指令改变,并且再次重启整个作业,直到操作成功。
    ARM能够通过一个叫做的硬件来控制这种行为Exclusive Monitor。但是在上面精确地模拟这些指令x64鉴于多线程环境中测试和调试的复杂性,架构可能非常困难。因此,他们以前的实现是相当保守和低效的,以确保并发性。
    但是,可以通过使用来近似原始行为cmpxchg,它将内存地址中的值与一个引用进行比较,如果匹配,它会向其中写入一个新值。因此,可以使用存储器地址中的值作为引用,并且当且仅当存储的值与引用匹配时,稍后将另一个值写入同一地址。依靠这个指令的语义,独占内存读写可以内联到JITed代码中,并加速它们的执行。
    大量使用这些独家说明的标题,例如Pokémon Legends: Arceus,性能应该会略有提高。

    一些英伟达的数字


    IP属地:中国台湾2楼2022-03-19 12:04
    回复
      啥时候像ps3模拟器那么完美就行了


      IP属地:重庆来自Android客户端3楼2022-03-19 12:40
      收起回复

        一些AMD数字
        常规错误修复和用户界面更改
        德国77在用户界面上做了一些工作来增加趣味。
        男性改进的SDL电池电量检测,重新对齐了控件设置中的一些UI元素,给了我们新的,更漂亮的电池符号!


        可爱又简单!
        德国77也增加了新的热键应大众的要求。加入争论的是停靠/取消停靠(对于控制器)、窗口适应滤波器、GPU准确性(在正常和高之间切换)以及静音/取消静音。


        IP属地:中国台湾4楼2022-03-19 13:52
        回复

          一旦你掌握了热键-忍术,没有人能够阻止你
          另一个被高度要求的修复是改进Amiibo支持。我们的旧代码不是很准确,导致几个游戏失败。虽然还有改进的空间,但这个新的实现要精确得多,现在应该允许在大多数游戏中稳定地使用Amiibo转储。
          我们还想宣布,我们正在努力为物理家庭的NFC扫描提供本机支持!随着进展,我们将有更多的信息与大家分享。
          Morph修复了最近出现的一个奇怪的问题。在某些情况下,重新打开yuzu后,窗口将是一个最大化的无边框窗口…东西。事实证明,由于某种原因,配置文件在关闭yuzu后没有重置无框架标志。强制移除旗帜每次启动都解决了这个问题。
          舞出增加了一个非常有用的功能给修改者和任何对游戏内部感兴趣的人。此前,yuzu倾倒了基地exeFS,它只包括来自基本游戏的数据,缺少来自更新或DLC的任何新添加。相反,由转储修补程序exeFS,比如埃利龙 建议在过去,用户将有权更新文件!
          toastUnlimited发现Splatoon 2访问中的清单时崩溃局域网大堂. 踩断IsUsbFullKeyControllerEnabled功能这就是我们所需要的。不受惩罚地拍打你的朋友!

          所有的墨水都蒸发到大气中,下雨一定很棒
          对于复古游戏迷来说,toastUnlimited和german77都修复了任天堂Switch在线服务中包含的SNES和NES模拟器(是的,你也可以离线转储和玩这些模拟器)。存根mnpp:app解决车祸,还有更新流程版本允许官方模拟器在yuzu上正常工作。


          IP属地:中国台湾5楼2022-03-19 13:54
          收起回复



            我们的队员都是忠实的粉丝
            输入改进
            正如每个月发生的那样,德国77主导了这一部分。
            作为测试当前隆隆声设置有多强的一种方法,您现在可以强制控制器振动在“配置振动”窗口打开时按下任何按钮。


            IP属地:中国台湾6楼2022-03-19 15:13
            回复

              Joy-Con去BRRRR
              游戏手柄有漂移,不仅仅是以夸张的时尚游戏著称,每个游戏手柄都有一定程度的漂移。为了隐藏这一点,控制台会自动将操纵杆居中。
              论yuzu的局限性之一安全开发生命周期它只会读取任天堂官方控制器上的工厂校准,跳过任何可能可用的用户校准配置文件。我们通过在启动时自动对中来解决这个问题,但是棍子仍然可以去他们喜欢的任何地方,所以德国77添加手动居中每个轴的选项作为附加选项。只需在我们的控制器设置中右击操纵杆的任何方向。

              只需点击鼠标右键
              支持已添加到允许映射回车键,它之前刚刚重新启动了映射过程。
              toastUnlimited增加了对运动输入的支持到yuzu-cmd,我们的终端版本的可执行文件。终端战士现在也可以享受一些舞蹈了。
              改进仿真以不使用仿真
              xerpi 实现了32位版本……的OutputDebugString, CreateCodeMemory,以及ControlCodeMemory主管来电。谢谢!
              xerpi的帮助有一个更大的目标,不仅仅是帮助一些鲜为人知的开关仿真器。他们在发展vita2hos,要运行的翻译层PlayStation Vita任天堂Switch上的原生应用和游戏!前面的路还很长,因为大多数交换机调试工具都是64位的,而Vita是一个32位的控制台,所以为了让项目继续进行,需要进行几次重写和更改。
              yuzu缺乏一些功能来提供完整的32位执行模式支持,所以PR是为了帮助改进这一领域而开放的,因为xerpi使用开关仿真器来帮助和简化开发。我们迫不及待地想看到这个项目如何发展!
              沃尔坎是未来
              随着工作的进行Project Y.F.C和其他计划中的变化,我们正在慢慢地默认启用Vulkan,并保持OpenGL的长期支持。本节不会列出yuzu中的变化,但是用户可以调整设置来提高他们在yuzu和其他模拟器中的Vulkan性能。
              Vulkan上性能的一个主要问题是当前GPU为了节能而进行的积极频率管理。由于任天堂Switch游戏产生的实际3D负载即使对于现代低端GPU来说也非常低,时钟速度往往会保持在其频谱的节能端。
              显著提高性能的一个简单方法是强制GPU以更高的速度运行持续的时钟速度。GPU可以达到的最高值在这里通常是不相关的,因为大多数GPU都比交换机的Tegra X1快,但持续的时钟速度将保持高帧率,并将断断续续降至最低。
              NVIDIA用户在NVIDIA Control Panel, Prefer maximum performance。您可以在中找到此开关3D Settings > Manage 3D settings > Program Settings tab点击Add并从可用选项中选择yuzu,然后向下滚动到Power management mode并将其设置为Prefer maximum performance.

              可靠的用户界面
              在AMD这边,这需要一点手动工作,并且可能只与基于RDNA的GPU兼容。只有相对较新的镭龙驱动程序添加了选项,以调整包括的最小和最大GPU频率Radeon WattMan。这可能会使您的镭龙产品保修失效。
              需要做的是,以类似于NVIDIA的方式,将yuzu作为配置文件添加到Gaming选项卡,单击Tune Game Performance并将调谐控制设置为Custom。启用GPU调优,您将能够调整Min. Frequency (%).


              IP属地:中国台湾7楼2022-03-19 15:15
              回复
                问下,意思就是妖怪手表白屏解决了?


                IP属地:河南来自Android客户端8楼2022-03-19 15:25
                收起回复

                  虽然这可以在镭龙软件上全局设置,但我们建议使用每个应用程序的配置文件

                  除了GPU之外,提高内存时钟速度总是有助于仿真,尤其是在高分辨率下
                  用一个不起眼的(比平庸的还要差)RX 6500 XT做例子,我们可以看到Pokémon Legends: Arceus将其帧速率提高到73%免费,轻松超越RX 570,只需将最低时钟速度从500MHz提高到2875MHz(提高了475%,如下图所示)。

                  过度省电也可能是一件坏事
                  这里的性能收益可能是巨大的,但超过某个点后,人们会开始看到收益递减。
                  未来项目
                  Project Y.F.C.随着更多以前坏掉的游戏开始变得可玩,继续走向成熟。Blinkhawk告诉我们,他目前正在将注意力转移到性能上。我们迫不及待地想告诉你更多!


                  IP属地:中国台湾9楼2022-03-19 16:40
                  回复
                    .火徽战士
                    墨菲有一个关于进展的消息Project Gaia:

                    波约!
                    德国77一直在玩实现一个Mii编辑器小程序。目前的支持非常简单,但是任何感兴趣的人都可以自由地构建pull请求并进行尝试。

                    甜蜜的家乡阿拉巴马?
                    那都是乡亲们!感谢您抽出时间,我们希望下个月能见到您。人类的荣耀.


                    IP属地:中国台湾10楼2022-03-19 16:42
                    回复
                      不错啊!


                      IP属地:上海来自Android客户端11楼2022-03-19 16:43
                      回复
                        不知道剑盾时不时的0帧啥时候能修复


                        IP属地:广西来自Android客户端12楼2022-03-20 17:19
                        回复


                          IP属地:上海来自Android客户端13楼2022-03-21 10:50
                          回复
                            大哥,专业的东西看都看不懂,你可以来个总结发言不?


                            IP属地:四川14楼2022-03-21 10:52
                            回复
                              🐂🍺


                              IP属地:江苏来自Android客户端15楼2022-03-21 13:15
                              回复