亲爱的yuz-ers,我们在6月份取得了惊人的进展!驱动程序错误正在被压缩,内核和CPU改进,UI和输入更改等等!
适用于AMD Radeon用户的PSA(以及NVIDIA标签)
让我们从上个月提到的一个驱动程序错误开始。Vulkan扩展终于到达了AMD硬件,驱动程序版本为22.5.2,但并不稳定。Radeon用户会告诉你,任何游戏在更新后都会在Vulkan中崩溃。为了缓解这种情况,toastUnlimited 为特定 Vulkan 驱动程序版本 AMD 报告 22.5.2(及其等效的 Linux AMDVLK 包)2.0.226 实现了扩展块。VK_KHR_push_descriptor
向前跳过一个月,新的22.6.1驱动程序已修复发布!但是,有一个但是,新驱动程序报告了相同的Vulkan版本2.0.226,这迫使我们的开发人员陷入两难境地。由于扩展块只能与GPU驱动程序报告的内容(在这种情况下是Vulkan驱动程序版本)一起使用,因此我们可以保留块并确保与较旧的损坏驱动程序兼容,或者删除块并强制用户更新到当前(在撰写本文时)22.6.1驱动程序。我们选择做后者,因为它使代码库更干净,并且有一些证据表明这可能会解决使用FreeSync显示器时发现的输入滞后问题。VK_KHR_push_descriptor
具体来说,AMD Radeon用户仍然支持AMD(Polaris及更新版本)的卡,必须更新到最新的视频驱动程序22.6.1或更高版本,才能获得适当的Vulkan支持。使用旧卡的用户(GCN 1到GCN 3)不必担心,硬件已经无法更新到较新的驱动程序(自定义驱动程序也无法更新Vulkan以添加新的扩展),柚子将使用较慢的代码路径,无需支持。VK_KHR_push_descriptor
好的,这涵盖了Radeon用户。让我们谈谈绿色的一面。随着516.XX NVIDIA驱动程序系列的发布,在Vulkan下运行的图灵和安培GPU(即3000,2000和1600系列卡)的性能似乎有所提升。很棒,但它是有代价的。
Maxwell和Pascal用户(1000,900,750和745系列卡)将在Vulkan中运行游戏时遇到设备丢失崩溃几分钟。设备丢失基本上意味着驱动程序由于某种原因拔掉了插头。在我们找到此问题的原因并实施修复或将其报告给NVIDIA之前,Maxwell和Pascal用户应坚持使用512.XX驱动程序。
在一篇文章的开头有一堆警告总是很无聊的,但这是我们为数不多的工具之一,可以接触到尽可能多的受影响用户。
图形更改
我们应该在这里报道Y.F.C.项目第一部分的发布,但由于进度问题,它被移到了下一份报告中。对于给您带来的不便,我们深表歉意,我们将确保在下一篇文章中对此进行介绍。好消息是,除了柚子炸鸡之外,还有其他有趣的GPU改进要报告。
Behunin为我们的gpu_thread进行了一个非常有趣的优化,“一个有界的多生产者多消费者并发队列”。这提供了1或2 FPS性能的小幅提升,但更重要的是,在与负载相关的卡顿峰值之后,恢复时间更长。
心爱的,曾经被认为是开放世界游戏的基准,直到更好的游戏问世,现在就可以启动了!Skyline模拟器开发人员章程找到了这个经典直到现在才拒绝启动的原因:GPU相关信号量的第一个值的假设行为是错误的,它应该执行发布而不是返回常量零。现在,多亏了这个伟大的发现,Dovahkiin终于可以在那辆车里醒来了。The Elder Scrolls V: Skyrim
是的,我们终于醒了(上古卷轴V:天际)
您可以看到我们有一些渲染问题需要解决。
我们最近重要的渲染变化之一是NVFlinger重写,谁会想到编写更接近Switch的实现会带来更流畅的游戏体验?
但是,在发布后,用户报告提到了诸如.比赛时间将越来越慢,在锐龙系统上每分钟延长约一秒,而英特尔 Alder Lake CPU(第 12 代)则加剧了比赛时间。Super Smash Bros. Ultimate
与人们的想法相反,bunnei找到的解决方案是实现一个不太准确的行为。柚子是多线程的,而且非常严重(即使它没有显示在CPU%使用率图表中),并且NVFlinger的100%准确实现对于模拟器的要求来说不够敏感。
撇开奇怪的CPU架构不谈,虽然问题已经解决,但建议英特尔Alder Lake用户运行最新的BIOS和芯片组驱动程序版本。检查您的主板/笔记本电脑支持网站以获取这些更新。
虽然仍然在NVFlinger好东西的话题上,但我们提出了一个高度要求的功能!资深用户会记得,在单线程的日子里,柚子将允许控制游戏速度。随着多核(当时称为Prometheus项目)的到来,此功能仅在单核模式下可用,这让许多人感到懊恼。时光荏苒!
柚子现在可以控制帧时间计算,允许一种新方法来取消帧速率,而不管CPU仿真模式如何!您可以在 中找到该选项。毋庸置疑,如果你想让一个游戏运行得更快,游戏应该允许它,你必须有硬件性能才能达到新的目标速度。Emulation > Configure… > General > Limit Speed Percent
与以前的版本相比,没有视觉变化,但功能完全
调试器
现在,我们将在这里深入探讨一个开发人员天堂。
几个月前,柚子开发者byte[]发现自己试图调试柚子中的一些游戏问题,这些问题涉及某个威尔士猫等。不幸的是,他很快就遇到了更多的麻烦,因为要查看游戏的内部状态并观察或修改它们的行为而不需要广泛地破解柚子是非常困难的。
痛苦的根源在于没有办法将调试器与模拟游戏一起使用。
最初,柚子从Citra继承了一个,但它缺乏许多重要的功能。甚至在Prometheus项目(多核仿真)期间,由于其固有的缺点,也不得不弃用。GDB-compatible debugger interface
它仅适用于单核模式
它很慢 - 有时可能需要30多分钟才能启动游戏,特别是如果您有任何日志记录脚本
它有一些重要的代码质量问题
在Prometheus重写期间被删除后,yuzu在很长一段时间内没有任何调试器接口。
等等,GDB又是什么?
GNU调试器(GDB)是一个可移植的调试器,运行在许多类Unix系统上,适用于许多编程语言,包括Ada,C,C++,Objective-C,Free Pascal,Fortran,Go和部分其他语言。
– 维基百科
借助 GDB,您可以:
逐个指令地逐步执行代码
动态修改内存和寄存器
甚至可以完全动态地替换运行代码的各部分
因此,您可以看到对于开发人员和模组创建者来说,拥有a是多么有用,因为您现在可以调试游戏,自制和游戏模组,而不必每次都摆弄控制台。GDB-compatible debugger interface
一个32位的例子,在这个例子中是超级马里奥银河
挑战
在旧的调试器接口被弃用后,社区的一些成员将其分叉,并继续修补和维护它。一些值得注意的是Hedges和astralsky。正是由于这些分叉,byte[]才能够在柚子中添加对Wii Hagi模拟器的初始支持。
然而,他很快就面临着一个更令人讨厌的问题。最近对柚子CPU仿真的更改导致超级马里奥银河陷入僵局。此问题仅在多核模式下发生,紧随第一个视频过场动画结束之后。他没有想法,需要一个功能调试器来继续调查问题。
由于旧的调试器接口不支持多核模式,因此byte[]必须从头开始。在他解决问题的动力的推动下,byte[]开始为柚子开发一个新的GDB兼容调试器接口,他有非常具体的目标:
它应该工作
它应该很快就会消失,这样他就可以更多地关注根本原因。
俗话说,“第一步永远是最难的”。对于byte[],确实是这样;他最大的挑战是:“不知道从哪里开始”。
byte[]编写了网络代码并正常工作,但最初并不了解如何将其与线程代码绑定。在与其他开发人员进行了一些健康的头脑风暴会议之后,他最终为他所面临的挑战找到了解决方案。
变化
由于他是从头开始的,byte[]借此机会对界面进行了一些急需的改进。
旧的调试器接口基于“步进”模拟的CPU内核。 这里意味着一次执行模拟程序的一条指令。Stepping
这带来了许多问题,因为几乎所有游戏都有多个线程,如果您正在单步执行并且一个线程要求等待,那么另一个线程可以开始在同一CPU内核中的位置运行,并且所有状态都已更改。这会破坏连续性,甚至可能使调试器崩溃。
新的调试器接口通过在线程上执行调试单步执行而不是单步执行模拟的 CPU 内核来克服这一问题。在柚子的上下文中,当线程被步进时,调试器会要求线程进行步进,然后 Dynarmic 接口将检测到这种情况并告诉 Dynarmic 进行步进,当再次调度线程时,它将标记该线程已步进并再次通知调试器。
超级马里奥奥德赛,胡言乱语的形式
有什么好处?
除此之外,我们还有一些更值得注意的生活质量(QoL)补充。调试器接口现在是线程稳定的,现在处理了步进和暂停中的边缘情况,并且它具有大量有用的调试功能,例如:
支持 32 位和 64 位代码
能够随时修改任何存储器和寄存器
读出客户机线程名称
支持无限数量的指令断点
支持多达 4 个内存观察点
用户界面更改
在谈论用户界面和体验时,您始终可以依靠Docteh。
在重复Morph在二月份修复的内容时,Docteh发现在崩溃后,柚子主窗口可能会以某种无边框的全屏重新打开......事情。罪魁祸首是yuzu的qt-config.ini文件中的UILayout\geometry值。一巴掌打脸,问题应该永远消失。哎哟。
为了帮助新用户适应柚子,Docteh将状态栏文本(过去仅更改颜色以反映其状态)重命名为。现在,当前的模拟状态更加清晰,用户在使用深色或浅色主题时不会混淆它。永远不要低估让事情变得更容易理解。汽车制造商应该有一天会尝试一下。DOCKDOCKED/HANDHELD
细节决定成败
翻译错误总是设法溜走。第一次打开柚子时,它会显示一个带有加号图标的大文件夹,要求用户添加其游戏转储的位置。如果用户从 更改界面语言,则无法重新翻译此消息的文本。解决这个问题需要对窗口处理重新翻译的方式进行一些更改。Emulation > Configure… > General > UI > Interface Language
学习另一种语言的好方法!
Docteh还为将来迁移到Qt6偷偷做了一些初步工作。该类现已正式弃用,因此取而代之。QDesktopWidgetQScreen
此外,一些影响Web Applet的类也被弃用,所以一些调整是为了确保未来的兼容性。希望Qt6将意味着默认情况下Web小程序的回归?
一旦我们准备好迁移,这应该可以提供更好的动态DPI缩放,例如,允许4K显示器用户最终了解控制设置窗口中发生的情况。
输入改进
输入是german77的特色,一种“原石中的钻石”,一次一个PR地被打磨,直到永远。
继续使用,german77停止了PerformerSystemButtonPressingIfInFocus服务,解决了在按ZL或ZR时发生的SVC(主管呼叫)崩溃。Ring Fit Adventure
随着固件版本13.2.0的官方Switch更新,任天堂实施了一个新的.虽然german77致力于实施这些更改,但其中一款游戏尤其拒绝工作。当此游戏发送控制器断开连接信号时,它会使用一个值,该值无效,因为 Switch 上只接受无符号值。也许这是某个地方的仿真问题,或者这个游戏只是喜欢这样做,而Switch只是接受无效值。无论如何,我们的解决方案是复制这种特殊行为。最终结果是现在进入游戏!GetVibrationDeviceInfode Blob-1de Blob
de Blob 2
内核和 CPU 更改
可能是柚子代码中最沉默的部分,但也是最关键的部分。内核仿真是使所有部分和谐地协同工作的引擎块,因此您可以预期,即使更改其中的一小部分也会在任何地方产生连锁反应。一个人必须小心地踩,呵呵,小心地穿线。抱歉,不抱歉。
无论如何,byte[]这个月在这个微妙的领域特别忙,螺丝刀在手里,什么都不怕。一些变化包括了解最新的逆向工程发现,但还有更多。
为了帮助暂停和恢复功能,他实现了KProcess暂停,正如拉取请求所解释的那样,“用于此目的的内核机制”。当您必须离开PC做其他事情时,干净的暂停和恢复始终是一种祝福。
在努力简化单核和多核仿真的来宾暂停时,byte[] 发现,如果禁用了异步 GPU 仿真和多核 CPU 仿真(我们强烈建议不要这样做,但对于 CPU 线程匮乏的用户或 FX 用户来说,这是一个有效的选项),则在初始化 CPU 和 GPU 线程时会发生争用情况。几个单线程仍然是多个线程。锤子在手,byte[]实现了一些障碍来修复这个特定的崩溃。
暂停是本周的单词,这一次,它可能会使特定的游戏崩溃。旧的 StallCPU 行为将等待所有线程执行停止。它很慢,但很安全。 使用新方法将进入 GPU 线程争用条件。告诉内核等待所有线程在暂停时停止可避免崩溃。Fire Emblem: Three Houses
如果由于某种原因,柚子跳转到无效地址,仿真将挂起,日志将收到无限数量的垃圾邮件。修复此问题需要在 Dynarmic 和 yuzu 上同时进行,从而导致停止对未映射地址的 ReadCode 回调。Unmapped Reads
exlaunch 是一个用于将 C 或 C++ 代码注入 Switch 应用程序和模块的框架。exlaunch可以在未修补的单元上工作,允许开发人员使用它“去城里”。柚子不支持它,但comex实现了启动和运行它所需的功能。谢谢!
新人DCNick3加入战斗!对于他们的第一次争吵,他们实现了ExitProcess SVC,它允许自制应用程序在关闭时优雅地退出。
第三方防病毒软件的问题
用户最近报告了从主线版本 1075 及更高版本开始的崩溃。原因似乎是第三方防病毒软件,更具体地说是ESET / NOD32。发出 HIPS 误报,对柚子进行沙盒处理并阻止其访问系统页面文件。基本上,如果 fastmem 无法保护 4GB 的页面文件正常工作(如果启用了扩展内存选项,则为 6GB),模拟器将崩溃。
目前有三个选项可以解决这个问题:
用户可以从柚子的设置中禁用fastmem,该设置位于 ,从那里启用底部标记为的选项,然后从CPU选项卡中禁用底部附近的两个选项。这将导致性能损失,在某些游戏中可能会达到30%。Emulation > Configure… > General > DebugEnable CPU DebuggingEnable Host MMU Emulation
将 HIPS 例外添加到两个 yuzu 文件夹和 .使用此方法的用户报告显示的结果好坏参半。%appdata%\yuzu%localappdata%\yuzu
完全卸载 ESET 并改用 Windows Defender。
以下是有关如何访问所需选项的图像示例
未来变化
toastUnlimited一直致力于使柚子兼容,以便在MinGW-w64下与LLVM Clang一起编译。考虑此方法的原因有很多:
我们用于Windows构建的默认编译器MSVC目前在其最新的2022版本上不稳定,迫使我们恢复到2019版本,并使柚子在此过程中丢失了一些编译器优化,损失了一些性能。
GCC 12是柚子使用的默认Linux编译器,具有优化错误和一些警告问题,使其目前不可行。
Clang 允许进行积极的优化,这些优化应该提供良好的性能提升。一个例子是波莉。
与GCC一起,LLVM使生成针对SSE4.2指令集优化的代码变得更加容易。这是正确的Core 2 Duo用户,你是下一个排队的砧板。
默认情况下,我们没有切换到这个新系统的主要原因是,或者,好吧,目前缺乏Gaias。它的一些更改是强制性的,以使Clang构建在Windows上启动并运行。虽然这个拉取请求已经完成,但它的完整实现将被搁置,直到盖亚出来,现在离我们不远了。Project Gaia
拿一个水壶,煮一些沃塔,给自己泡一杯茶,因为有血腥的开始。Project London
这就是所有的人!谢谢你一直呆到最后。下个月见!
适用于AMD Radeon用户的PSA(以及NVIDIA标签)
让我们从上个月提到的一个驱动程序错误开始。Vulkan扩展终于到达了AMD硬件,驱动程序版本为22.5.2,但并不稳定。Radeon用户会告诉你,任何游戏在更新后都会在Vulkan中崩溃。为了缓解这种情况,toastUnlimited 为特定 Vulkan 驱动程序版本 AMD 报告 22.5.2(及其等效的 Linux AMDVLK 包)2.0.226 实现了扩展块。VK_KHR_push_descriptor
向前跳过一个月,新的22.6.1驱动程序已修复发布!但是,有一个但是,新驱动程序报告了相同的Vulkan版本2.0.226,这迫使我们的开发人员陷入两难境地。由于扩展块只能与GPU驱动程序报告的内容(在这种情况下是Vulkan驱动程序版本)一起使用,因此我们可以保留块并确保与较旧的损坏驱动程序兼容,或者删除块并强制用户更新到当前(在撰写本文时)22.6.1驱动程序。我们选择做后者,因为它使代码库更干净,并且有一些证据表明这可能会解决使用FreeSync显示器时发现的输入滞后问题。VK_KHR_push_descriptor
具体来说,AMD Radeon用户仍然支持AMD(Polaris及更新版本)的卡,必须更新到最新的视频驱动程序22.6.1或更高版本,才能获得适当的Vulkan支持。使用旧卡的用户(GCN 1到GCN 3)不必担心,硬件已经无法更新到较新的驱动程序(自定义驱动程序也无法更新Vulkan以添加新的扩展),柚子将使用较慢的代码路径,无需支持。VK_KHR_push_descriptor
好的,这涵盖了Radeon用户。让我们谈谈绿色的一面。随着516.XX NVIDIA驱动程序系列的发布,在Vulkan下运行的图灵和安培GPU(即3000,2000和1600系列卡)的性能似乎有所提升。很棒,但它是有代价的。
Maxwell和Pascal用户(1000,900,750和745系列卡)将在Vulkan中运行游戏时遇到设备丢失崩溃几分钟。设备丢失基本上意味着驱动程序由于某种原因拔掉了插头。在我们找到此问题的原因并实施修复或将其报告给NVIDIA之前,Maxwell和Pascal用户应坚持使用512.XX驱动程序。
在一篇文章的开头有一堆警告总是很无聊的,但这是我们为数不多的工具之一,可以接触到尽可能多的受影响用户。
图形更改
我们应该在这里报道Y.F.C.项目第一部分的发布,但由于进度问题,它被移到了下一份报告中。对于给您带来的不便,我们深表歉意,我们将确保在下一篇文章中对此进行介绍。好消息是,除了柚子炸鸡之外,还有其他有趣的GPU改进要报告。
Behunin为我们的gpu_thread进行了一个非常有趣的优化,“一个有界的多生产者多消费者并发队列”。这提供了1或2 FPS性能的小幅提升,但更重要的是,在与负载相关的卡顿峰值之后,恢复时间更长。
心爱的,曾经被认为是开放世界游戏的基准,直到更好的游戏问世,现在就可以启动了!Skyline模拟器开发人员章程找到了这个经典直到现在才拒绝启动的原因:GPU相关信号量的第一个值的假设行为是错误的,它应该执行发布而不是返回常量零。现在,多亏了这个伟大的发现,Dovahkiin终于可以在那辆车里醒来了。The Elder Scrolls V: Skyrim
是的,我们终于醒了(上古卷轴V:天际)
您可以看到我们有一些渲染问题需要解决。
我们最近重要的渲染变化之一是NVFlinger重写,谁会想到编写更接近Switch的实现会带来更流畅的游戏体验?
但是,在发布后,用户报告提到了诸如.比赛时间将越来越慢,在锐龙系统上每分钟延长约一秒,而英特尔 Alder Lake CPU(第 12 代)则加剧了比赛时间。Super Smash Bros. Ultimate
与人们的想法相反,bunnei找到的解决方案是实现一个不太准确的行为。柚子是多线程的,而且非常严重(即使它没有显示在CPU%使用率图表中),并且NVFlinger的100%准确实现对于模拟器的要求来说不够敏感。
撇开奇怪的CPU架构不谈,虽然问题已经解决,但建议英特尔Alder Lake用户运行最新的BIOS和芯片组驱动程序版本。检查您的主板/笔记本电脑支持网站以获取这些更新。
虽然仍然在NVFlinger好东西的话题上,但我们提出了一个高度要求的功能!资深用户会记得,在单线程的日子里,柚子将允许控制游戏速度。随着多核(当时称为Prometheus项目)的到来,此功能仅在单核模式下可用,这让许多人感到懊恼。时光荏苒!
柚子现在可以控制帧时间计算,允许一种新方法来取消帧速率,而不管CPU仿真模式如何!您可以在 中找到该选项。毋庸置疑,如果你想让一个游戏运行得更快,游戏应该允许它,你必须有硬件性能才能达到新的目标速度。Emulation > Configure… > General > Limit Speed Percent
与以前的版本相比,没有视觉变化,但功能完全
调试器
现在,我们将在这里深入探讨一个开发人员天堂。
几个月前,柚子开发者byte[]发现自己试图调试柚子中的一些游戏问题,这些问题涉及某个威尔士猫等。不幸的是,他很快就遇到了更多的麻烦,因为要查看游戏的内部状态并观察或修改它们的行为而不需要广泛地破解柚子是非常困难的。
痛苦的根源在于没有办法将调试器与模拟游戏一起使用。
最初,柚子从Citra继承了一个,但它缺乏许多重要的功能。甚至在Prometheus项目(多核仿真)期间,由于其固有的缺点,也不得不弃用。GDB-compatible debugger interface
它仅适用于单核模式
它很慢 - 有时可能需要30多分钟才能启动游戏,特别是如果您有任何日志记录脚本
它有一些重要的代码质量问题
在Prometheus重写期间被删除后,yuzu在很长一段时间内没有任何调试器接口。
等等,GDB又是什么?
GNU调试器(GDB)是一个可移植的调试器,运行在许多类Unix系统上,适用于许多编程语言,包括Ada,C,C++,Objective-C,Free Pascal,Fortran,Go和部分其他语言。
– 维基百科
借助 GDB,您可以:
逐个指令地逐步执行代码
动态修改内存和寄存器
甚至可以完全动态地替换运行代码的各部分
因此,您可以看到对于开发人员和模组创建者来说,拥有a是多么有用,因为您现在可以调试游戏,自制和游戏模组,而不必每次都摆弄控制台。GDB-compatible debugger interface
一个32位的例子,在这个例子中是超级马里奥银河
挑战
在旧的调试器接口被弃用后,社区的一些成员将其分叉,并继续修补和维护它。一些值得注意的是Hedges和astralsky。正是由于这些分叉,byte[]才能够在柚子中添加对Wii Hagi模拟器的初始支持。
然而,他很快就面临着一个更令人讨厌的问题。最近对柚子CPU仿真的更改导致超级马里奥银河陷入僵局。此问题仅在多核模式下发生,紧随第一个视频过场动画结束之后。他没有想法,需要一个功能调试器来继续调查问题。
由于旧的调试器接口不支持多核模式,因此byte[]必须从头开始。在他解决问题的动力的推动下,byte[]开始为柚子开发一个新的GDB兼容调试器接口,他有非常具体的目标:
它应该工作
它应该很快就会消失,这样他就可以更多地关注根本原因。
俗话说,“第一步永远是最难的”。对于byte[],确实是这样;他最大的挑战是:“不知道从哪里开始”。
byte[]编写了网络代码并正常工作,但最初并不了解如何将其与线程代码绑定。在与其他开发人员进行了一些健康的头脑风暴会议之后,他最终为他所面临的挑战找到了解决方案。
变化
由于他是从头开始的,byte[]借此机会对界面进行了一些急需的改进。
旧的调试器接口基于“步进”模拟的CPU内核。 这里意味着一次执行模拟程序的一条指令。Stepping
这带来了许多问题,因为几乎所有游戏都有多个线程,如果您正在单步执行并且一个线程要求等待,那么另一个线程可以开始在同一CPU内核中的位置运行,并且所有状态都已更改。这会破坏连续性,甚至可能使调试器崩溃。
新的调试器接口通过在线程上执行调试单步执行而不是单步执行模拟的 CPU 内核来克服这一问题。在柚子的上下文中,当线程被步进时,调试器会要求线程进行步进,然后 Dynarmic 接口将检测到这种情况并告诉 Dynarmic 进行步进,当再次调度线程时,它将标记该线程已步进并再次通知调试器。
超级马里奥奥德赛,胡言乱语的形式
有什么好处?
除此之外,我们还有一些更值得注意的生活质量(QoL)补充。调试器接口现在是线程稳定的,现在处理了步进和暂停中的边缘情况,并且它具有大量有用的调试功能,例如:
支持 32 位和 64 位代码
能够随时修改任何存储器和寄存器
读出客户机线程名称
支持无限数量的指令断点
支持多达 4 个内存观察点
用户界面更改
在谈论用户界面和体验时,您始终可以依靠Docteh。
在重复Morph在二月份修复的内容时,Docteh发现在崩溃后,柚子主窗口可能会以某种无边框的全屏重新打开......事情。罪魁祸首是yuzu的qt-config.ini文件中的UILayout\geometry值。一巴掌打脸,问题应该永远消失。哎哟。
为了帮助新用户适应柚子,Docteh将状态栏文本(过去仅更改颜色以反映其状态)重命名为。现在,当前的模拟状态更加清晰,用户在使用深色或浅色主题时不会混淆它。永远不要低估让事情变得更容易理解。汽车制造商应该有一天会尝试一下。DOCKDOCKED/HANDHELD
细节决定成败
翻译错误总是设法溜走。第一次打开柚子时,它会显示一个带有加号图标的大文件夹,要求用户添加其游戏转储的位置。如果用户从 更改界面语言,则无法重新翻译此消息的文本。解决这个问题需要对窗口处理重新翻译的方式进行一些更改。Emulation > Configure… > General > UI > Interface Language
学习另一种语言的好方法!
Docteh还为将来迁移到Qt6偷偷做了一些初步工作。该类现已正式弃用,因此取而代之。QDesktopWidgetQScreen
此外,一些影响Web Applet的类也被弃用,所以一些调整是为了确保未来的兼容性。希望Qt6将意味着默认情况下Web小程序的回归?
一旦我们准备好迁移,这应该可以提供更好的动态DPI缩放,例如,允许4K显示器用户最终了解控制设置窗口中发生的情况。
输入改进
输入是german77的特色,一种“原石中的钻石”,一次一个PR地被打磨,直到永远。
继续使用,german77停止了PerformerSystemButtonPressingIfInFocus服务,解决了在按ZL或ZR时发生的SVC(主管呼叫)崩溃。Ring Fit Adventure
随着固件版本13.2.0的官方Switch更新,任天堂实施了一个新的.虽然german77致力于实施这些更改,但其中一款游戏尤其拒绝工作。当此游戏发送控制器断开连接信号时,它会使用一个值,该值无效,因为 Switch 上只接受无符号值。也许这是某个地方的仿真问题,或者这个游戏只是喜欢这样做,而Switch只是接受无效值。无论如何,我们的解决方案是复制这种特殊行为。最终结果是现在进入游戏!GetVibrationDeviceInfode Blob-1de Blob
de Blob 2
内核和 CPU 更改
可能是柚子代码中最沉默的部分,但也是最关键的部分。内核仿真是使所有部分和谐地协同工作的引擎块,因此您可以预期,即使更改其中的一小部分也会在任何地方产生连锁反应。一个人必须小心地踩,呵呵,小心地穿线。抱歉,不抱歉。
无论如何,byte[]这个月在这个微妙的领域特别忙,螺丝刀在手里,什么都不怕。一些变化包括了解最新的逆向工程发现,但还有更多。
为了帮助暂停和恢复功能,他实现了KProcess暂停,正如拉取请求所解释的那样,“用于此目的的内核机制”。当您必须离开PC做其他事情时,干净的暂停和恢复始终是一种祝福。
在努力简化单核和多核仿真的来宾暂停时,byte[] 发现,如果禁用了异步 GPU 仿真和多核 CPU 仿真(我们强烈建议不要这样做,但对于 CPU 线程匮乏的用户或 FX 用户来说,这是一个有效的选项),则在初始化 CPU 和 GPU 线程时会发生争用情况。几个单线程仍然是多个线程。锤子在手,byte[]实现了一些障碍来修复这个特定的崩溃。
暂停是本周的单词,这一次,它可能会使特定的游戏崩溃。旧的 StallCPU 行为将等待所有线程执行停止。它很慢,但很安全。 使用新方法将进入 GPU 线程争用条件。告诉内核等待所有线程在暂停时停止可避免崩溃。Fire Emblem: Three Houses
如果由于某种原因,柚子跳转到无效地址,仿真将挂起,日志将收到无限数量的垃圾邮件。修复此问题需要在 Dynarmic 和 yuzu 上同时进行,从而导致停止对未映射地址的 ReadCode 回调。Unmapped Reads
exlaunch 是一个用于将 C 或 C++ 代码注入 Switch 应用程序和模块的框架。exlaunch可以在未修补的单元上工作,允许开发人员使用它“去城里”。柚子不支持它,但comex实现了启动和运行它所需的功能。谢谢!
新人DCNick3加入战斗!对于他们的第一次争吵,他们实现了ExitProcess SVC,它允许自制应用程序在关闭时优雅地退出。
第三方防病毒软件的问题
用户最近报告了从主线版本 1075 及更高版本开始的崩溃。原因似乎是第三方防病毒软件,更具体地说是ESET / NOD32。发出 HIPS 误报,对柚子进行沙盒处理并阻止其访问系统页面文件。基本上,如果 fastmem 无法保护 4GB 的页面文件正常工作(如果启用了扩展内存选项,则为 6GB),模拟器将崩溃。
目前有三个选项可以解决这个问题:
用户可以从柚子的设置中禁用fastmem,该设置位于 ,从那里启用底部标记为的选项,然后从CPU选项卡中禁用底部附近的两个选项。这将导致性能损失,在某些游戏中可能会达到30%。Emulation > Configure… > General > DebugEnable CPU DebuggingEnable Host MMU Emulation
将 HIPS 例外添加到两个 yuzu 文件夹和 .使用此方法的用户报告显示的结果好坏参半。%appdata%\yuzu%localappdata%\yuzu
完全卸载 ESET 并改用 Windows Defender。
以下是有关如何访问所需选项的图像示例
未来变化
toastUnlimited一直致力于使柚子兼容,以便在MinGW-w64下与LLVM Clang一起编译。考虑此方法的原因有很多:
我们用于Windows构建的默认编译器MSVC目前在其最新的2022版本上不稳定,迫使我们恢复到2019版本,并使柚子在此过程中丢失了一些编译器优化,损失了一些性能。
GCC 12是柚子使用的默认Linux编译器,具有优化错误和一些警告问题,使其目前不可行。
Clang 允许进行积极的优化,这些优化应该提供良好的性能提升。一个例子是波莉。
与GCC一起,LLVM使生成针对SSE4.2指令集优化的代码变得更加容易。这是正确的Core 2 Duo用户,你是下一个排队的砧板。
默认情况下,我们没有切换到这个新系统的主要原因是,或者,好吧,目前缺乏Gaias。它的一些更改是强制性的,以使Clang构建在Windows上启动并运行。虽然这个拉取请求已经完成,但它的完整实现将被搁置,直到盖亚出来,现在离我们不远了。Project Gaia
拿一个水壶,煮一些沃塔,给自己泡一杯茶,因为有血腥的开始。Project London
这就是所有的人!谢谢你一直呆到最后。下个月见!