Switch模拟器YUZU进度报告2023-9月
嗨,你们好!上个月很有趣,我们很高兴地报告我们一直在做什么。Miis出来玩,GPU变化,安卓改进等等!让我们进入它。
Miis 和小程序很长一段时间以来,在柚子上支持的游戏中加载默认的 Miis 已经成为可能。然而,柚子对Mii服务的实现缺乏对Mii数据库的必要支持。
Mii数据库是保存在交换机上的文件,最多可容纳100 Mii。如果没有 Mii 服务中对此数据库的适当支持,就无法加载自定义 Miis。
我们的内部输入仿真专家 German77 踏上了测试 MiiEdit 小程序的冒险之旅,这是他不断追求使系统小程序在柚子上平稳运行的一部分。最初,事情进展顺利,但是当启动小程序时软锁成为一个反复出现的问题时,他的努力遇到了障碍。
由于怀疑来自Mii服务的错误数据可能是这些软锁的根本原因,German77决定承担对Mii服务进行完全逆向工程的任务。他的不懈努力使Mii服务几乎完全实现,唯一缺少的部分是能够从附近用户发送和接收Miis。这个全面的实现包括纠正一些旧代码,*数据结构,并最终为热切期待的Mii数据库提供支持。喜欢冒险的用户可以通过将其控制台的数据库文件放在 %appdata%/yuzu/nand/system/save/8000000000000030/MiiDatabase.dat 来在任何游戏中加载自己的 Mii 角色。
随着Mii服务的完成,Narr迅速回到了使MiiEdit小程序在柚子上无缝运行的任务中。感谢 byte[] 的一些故障排除帮助,他最终设法使其工作。 最后一个难题是完成对小程序的Mii数据库支持,有了这个关键的补充,yuzu的Mii功能现在比以往任何时候都更加强大。用户现在可以通过 Tools > Open Mii Editor 使用新的 MiiEdit 小程序无缝创建、编辑和存储他们的 Mii,游戏可以为玩家自动生成随机 Mii,而不会崩溃。
在MiiEdit小程序成功的基础上,Narr通过全面实现对Cabinet小程序的支持,继续他的生产力。 如果您还不熟悉,Cabinet 小程序就是 amiibo 管理器小程序。通过这些最近的更改,用户可以通过 Tools > Amiibo 注册、重命名、删除和恢复其 amiibo 数据。
切换到图形部门,让我们从Khronos小组的一些有趣的决定开始,这些决定影响了Linux Mesa驱动程序。
在 Linux 上运行 Pikmin 4 时收到崩溃的报告后,byte[] 发现 Khronos 从最新版本的 SPIR-V 规范中删除了为缓冲区纹理声明 OpTypeSampledImage 的功能,SPIR-V 规范是 yuzu 用于支持 Vulkan 的着色器后端。
这是非常不寻常的 - 通常首选弃用(不影响旧代码)。Mesa作为遵循规范的教科书示例,遵循此更改,迫使我们跳过缓冲区纹理的采样器。 随着这些奇怪的 Vulkan 决策得到妥善处理, Pikmin 4 再次可供那些运行 Mesa 驱动程序的人玩。
说到 Pikmin 4 皮克敏4和 Master Detective Archives: RAIN CODE 超侦探事件簿:雾雨谜宫,byte[]也分别发现了影响前者和后者的照明问题和错误面孔渲染的原因。
byte[] 注意到 Mesa在调试采样缓冲区问题时提供的额外验证错误。柚子的SPIR-V发射器在无类型图像上生成原子操作,这是SPIR-V规范从未允许的。在试图避免无类型图像的错误开始之后,他发现了真正的罪魁祸首:用于生成SPIR-V原子的代码错误地使用了图像的数组索引,而不是其指定的描述符。
更正此着色器行为修复了 Pikmin 4 的特定黑暗部分所需的前照灯照明和 Master Detective Archives: RAIN CODE 中角色的面部表情。
GPUCode本月也加入了竞争,增加了几个代码。
首先,一些轻松的东西,让我们介绍单独的命令缓冲区上传! 这提供了由于减少渲染通道中断而导致的性能略有提升的好处,这极大地帮助了移动 GPU。渲染通道越大,移动 GPU 将数据保存在平铺内存中的时间就越长,因此破坏它是一项成本高昂的操作。专用 GPU 从这一变化中受益,但受益要少得多。
我们测得,在某些使用 5800X3D 的游戏中,性能提高了 8%。低端系统可能会看到更大的收益。
GPU 还针对使用 Vulkan 时影响 Mortal Kombat 1 真人快打1和 Sonic Forces 索尼克:力量 的渲染问题进行了斗争。对于那些深入了解柚子传说的人来说,这是MSAA图像副本的计算着色器实现,类似于epicboy在二月份所做的。正如当时所说,与OpenGL相比,Vulkan需要更多的工作。
此更改还改进了原始着色器,允许像 Pinball FX3 三维弹球 这样的游戏现在可以渲染和正常工作,而不管使用何种图形 API,同时还改进了 Fate/EXTELLA: The Umbral Star 命运 新世界:暗影之星 等游戏的渲染。
The Legend of Nayuta: Boundless Trails 那由多之轨迹改 和其他 Falcom 游戏(如 The Legend of Heroes 系列)的玩家报告说,文本呈现不正确,显示出奇怪的颜色高光。GPU 对此进行了调查,发现我们对 A4B4G4R4_UNORM 纹理格式使用了错误的颜色分量顺序(例如 BGR 与 RGB)。相反, A4B4G4R4_UNORM_PACK16_EXT 具有游戏期望的顺序,提供正确的呈现。
继续这种纹理修复的趋势,GPUCode 还发现了如何处理 sRGB 纹理的错误。
问题是 sRGB 纹理不能用作着色器中的存储图像。解决方案是将纹理创建为线性纹理,这是另一个没有伽马校正的颜色空间,然后使用 sRGB 视图访问它。这样,纹理可以用作存储图像,并且仍然具有正确的颜色。
但是,此解决方案具有意想不到的副作用。当在没有视图的情况下直接使用纹理时(例如,通过将其复制到另一个图像进行解析时),颜色是错误的,因为颜色空间已更改。
为了解决此问题,拉取请求确保仅在转码时不允许创建 sRGB,这意味着它始终适用,除非在 GPU 上将压缩格式转换为未压缩格式。这样,纹理将创建为 sRGB,并且在两种情况下都具有正确的颜色。
多亏了这一点, Momotaro Dentetsu 和 Star Ocean First Departure R 现在可以用开发人员想要的颜色和伽玛进行渲染。它的玩法,正如某位专注于奢侈品的显卡供应商所说。
现在轮到我们的经典关键视觉小说粉丝了,包括你的作家。用户报告说游戏有一些可怕的闪烁。正如Maide所发现的那样,原因是由于这些经典游戏的渲染非常特殊。大多数游戏在单个地址(1080p 或 720p)上创建单个呈现目标。相反,Key的视觉小说使用相同的地址来创建720p和1080p渲染目标,首先创建1080p渲染目标,但从未使用过。默认情况下,柚子总是选择第一个渲染目标。
通过更改柚子的行为以查找最近修改的图像来呈现,该问题已完全解决,用户现在可以整夜哭泣阅读这些游戏了。
为了结束本节,Blinkhawk修复了最近查询缓存重写引起的一些内存泄漏。
Android additions 安卓新增功能我们的常驻终结者和尼尔:自动机享受者t895以及团队的其他成员继续努力改善Android版本的体验:
解决了 Y.F.C. 项目中缓冲区缓存重写暴露的硬件限制。 此更改由 GPU code 完成。
修复了在仿真启动时重置某些临时设置(例如,“限制仿真速度”)的错误。
修复了游戏快捷方式在某些设备上显示为裁剪的问题。
着色器编译的线程工作线程数量减少到一个。这是为了减少内存消耗。
修复了更多屏幕方向和宽高比不当行为。
修复了在某些设备上输入叠加层会绘制到屏幕外的问题。
修复了使用 3 按钮导航时在横向模式下设置活动显示为暗淡的问题。
在加载动画期间,游戏内菜单可能会无意中打开。 此问题现已修复。
与初始设置、仿真活动和仿真片段相关的几个崩溃现已修复。
模拟器现在将在重置所有设置后正确重新加载设置文件。
最后,新的设置菜单将所有内容安装统一到一个位置。用户现在可以访问 Manage yuzu data 菜单来导入/导出固件、保存、用户数据以及安装游戏内容、控制台和 Amiibo 密钥。新的用户数据选项允许用户备份和还原所有应用数据。例如,在迁移到其他版本(例如从 GitHub 版本迁移到 Play 商店版本)时很有用。
Maide 在这里大放异彩,它为我们重写了硬件 Opus 服务,负责处理游戏中 Opus 格式音频的解压缩。旧的实现缺少逆向工程社区记录的几个功能,这是这次重写最关注的。
现在,硬件 Opus 实现与当前可用信息相匹配。Maide 还借此机会将 Opus 的处理转移到仿真的 ADSP(Switch 音频协处理器的仿真实现)上。
这项工作的最终结果是允许以前在尝试解码 Opus 音频时面临崩溃的游戏,如 MLB The Show 22 & 23 、 Touhou 系列游戏、 Pokemon Quest 、 Pokemon Let's Go Eevee!/Pikachu! 和 Sea of Stars 正确播放音频而不会崩溃。
Maide 还修复了音频命令处理,避免某些命令列表在正确完成之前提前返回。中断后,以前的实现将从头开始重新处理列表,而不是从中断的位置继续。这会使音频渲染停滞不前,直到它正确完成。纠正此行为解决了音频引擎运行速度过慢的情况,从而提高了性能。
另一个需要大量调查的问题导致 Xenoblade Chronicles 2 异度之刃2中的背景声音随机中断。发现原因在循环期间的数据源命令中。更改不同版本之间的行为为这款出色的游戏和其他一些游戏恢复了适当的环境噪音。
为了结束这一部分,Maide还发现了导致 New Super Mario Bros. U Deluxe 最终关卡中音乐和声音下降的原因。音频命令缓冲区的处理时间有时比估计的要长,这会导致呈现器中的语音被丢弃。游戏在某种程度上依赖于这种行为,但柚子对估计的计算有点不正确,导致几乎所有东西都被丢弃了。
改进时间估计算法解决了这个问题。让我们听听这些声音!
Miscellaneous changes 杂项更改有时,我们会忽略对不符合标准硬件建议的设备进行测试。随着新的Vulkan VSync选项的添加,我们做出了一个错误的假设。事实证明,用户并不总是安装Vulkan驱动程序!令人震惊,对吧?
虽然大多数时候用户确实支持 Vulkan,但对于 NVIDIA Fermi 用户(被承诺提供 Vulkan 驱动程序但从未得到它的人)或不打包 GPU 固件文件的 Linux 发行版用户(如 Trisquel)来说,情况肯定并非如此。这导致 VSync 组合框在未检测到 Vulkan 驱动程序和设备时拒绝提供任何选项,从而阻止仅 OpenGL 用户切换 VSync。
虽然要求用户升级到更新的硬件和/或使用功能更强大的发行版很容易,但这并不能改变行为不正确的事实。
输入 ToastUnlimited,他修复了 UI,并借此机会改进了损坏的 Vulkan 检测,确保在需要时选择 OpenGL 作为默认 API。
byte[] 修复了在多程序应用程序中忽略语言选择的问题,这影响了 Super Mario 3D All-Stars 、 Grandia HD Collection 等游戏。正确的本地化对我们来说非常重要!毕竟,不是每个人都能通过学习英语来腐蚀自己的思想。
新人 rkfg 发现了其中一个错误,让你质疑它以前是如何工作的。yuzu 对 PFS 文件格式的解析将尝试从标头中读取文件名作为 C 字符串。C 字符串在定义上以空字节结尾,但这未能解释下一个空字节有时可能远远超过标头末尾的事实,并且解析具有这种特定结构的文件会导致 yuzu 无法在存档中找到文件和/或崩溃。通过在标头数据后无条件插入空字节,rkfg 解决了这个问题。现在,像 Luigi’s Mansion 3 路易吉洋馆3 这样的游戏不会遇到奇怪的崩溃。
在致力于更多的文件系统改进的同时,byte[]实现了一个简单的NCA(任天堂内容存档)验证系统,该系统检查NCA文件的名称是否与其内容匹配,以防止文件系统损坏。现在,用户可以通过右键单击游戏列表中的游戏并选择 Verify Integrity 来检查其游戏转储的完整性。计划实施适当的签名和基于哈希的验证,但相比之下预计会非常慢。
通过存根 GetSaveDataSizeMax 文件系统服务方法,FearlessTobi 使 Minecraft Legends Deluxe Edition 能够显示其启动屏幕。可悲的是,游戏在那之后崩溃了,猜猜还有更多的工作要做!
继续执行存根过程,修复购买信息调用允许 The Settlers: New Allies 工人物语:新兴同盟 正常启动。
如您所见,需要做更多的工作才能使此游戏正确渲染。作为一款在 AMD 上呈现比 NVIDIA 更好的游戏,加分。
但是新服务呢? byte[] 为 ngc 服务添加了一个存根,允许 Baten Kaitos HD 拔天海拓史1&2HD重制 集合工作。
同样,添加 GetFileSystemAttribute 服务方法可使 Tiny Thor 小雷神 可播放;在初始加载屏幕期间,它不再卡住。来吧,不用谷歌搜索,正确拼写雷神锤子的名字。
再次得到良好修复的是Squall-Leonhart,他现在专注于Windows文件系统的错误处理。例如,如果您断开了包含加载到 yuzu 列表中的游戏的可移动存储、网络 SMB 共享或受 Bitlocker 保护的位置不可用,则 yuzu 只会崩溃。
但现在不行了!通过向这些文件系统异常情况添加适当的错误处理,模拟器现在可以避免此处崩溃。
为了应对正确的关机行为,byte[] 设法发现了一个优化,应该在高端 CPU 上节省大约一秒钟的时间。这是否意味着战斗已经结束?不,一些边缘情况仍然存在,但现在在正常情况下,关闭游戏应该几乎是瞬间的。我们已经为byte[]准备了一枚奖牌。
Hardware section 硬件部分NVIDIA:VRAM修复,并专注于最新的硬件最新的驱动程序版本已被证明对图灵和较新的产品是稳定的,但我们收到了影响Pascal和Maxwell用户的小回归的报告。如果您仍在运行较旧的 750、900 和 1000 系列产品,并且在游戏中遇到新问题,请尝试恢复到 52X 系列等较旧的驱动程序版本。
不过,值得一提的是,驱动程序版本 545.84 似乎已经解决了过度使用VRAM引起的不稳定性,例如在使用任何架构的2GB / 4GB GPU在深度中运行 The Legend of Zelda: Tears of the Kingdom 塞尔达传说:王国之泪 时。对于努力运行这款特别重 ASTC 的游戏的低端用户来说,这是个好消息。
AMD:常规修复、AutoHDR、VSync 问题和帧插值首先,好消息是,在撰写本文时,最新的Windows驱动程序版本 23.10.2 已经解决了影响Vulkan上的AMD卡的D24问题。那些被剪切线条和纹理困扰的人应该升级以获得适当的图形体验。请记住,这并不能解决影响Pentelas区域和DLC的顶点爆炸 Xenoblade Chronicles 3 异度之刃3,我们设法确认这是一个影响AMD卡的不同问题,因为它与架构,操作系统和驱动程序无关。
另一个好的一点是,最近的驱动程序似乎也引入了DXGI交换链支持,允许AMD卡开箱即用地与AutoHDR配合使用。不过,似乎没有驱动程序切换。有兴趣为柚子启用AutoHDR的用户可以使用此软件为他们完成注册表工作。
现在说一点坏消息。Windows 驱动程序版本 23.9.3 及更高版本会导致忽略 VSync 选项,从而导致在游戏过程中撕裂。如果受此影响,请暂时恢复到驱动程序 23.9.2 。遵循了标准程序:我们已经就此问题向 AMD 开了一张票,并提供了一个通用测试用例。
ED:驱动程序 23.10.2 似乎已经完全解决了这个问题,我们建议更新到它。
切换到更有趣的东西,我们听到了你的声音!尽管我们之前对帧生成咆哮,但我们认为像 FSR3 这样的与供应商无关的帧生成对于使神奇宝贝游戏可玩来说很酷,但阻止我们使用 FSR2 甚至 DLSS/XeSS 的相同要求在这里适用。游戏不会向控制台报告其运动矢量数据,因为它们从未被开发为支持 DLSS。
有一些方法可以实现这一点,例如添加一帧延迟和推断数据。这里的缺点是 33 FPS 游戏延迟 30 毫秒将是一种糟糕的体验。我们可以猜测以前帧的运动,但这可能会产生非常高的性能成本,并且可能会产生不稳定的结果,旧帧无法读取未来。或者我们可以涉足人工智能,这在过去给我们带来了不令人满意的结果。虽然编写一种通用方法来提取运动矢量数据可能是可能的,但这是一项巨大的努力,因此预计目前它的优先级非常低。毕竟,我们有更大的火要先扑灭。
可以工作的是 AFMF ,如果AMD将来添加Vulkan支持它。
“但是作家,AFMF不是与供应商无关的!这是AMD Windows驱动程序的独家功能!“你说。啊,但这就是你错的地方。它在台式 PC 上与供应商无关!
您唯一需要做的就是将 RX 6400(或更高版本)作为台式 PC 中的辅助 GPU,将显示器连接到它,即使在使用主英特尔或 NVIDIA GPU 进行渲染时,也可以享受强制执行帧插值的乐趣!遗憾的是,这还不适用于柚子,因为在撰写本文时,AFMF 的当前测试版驱动程序仅支持 Direct3D 11 和 12 API。
让我们希望我们得到 Vulkan 的支持,我们可能最终能够看到 Tears of the Kingdom 达到超过 100 FPS,或者 Pokémon Scarlet 模型动画达到流畅的电影 30 FPS。同时,尝试在使用路径跟踪时享受将 20 FPS 转换为 40 的乐趣。至少你不必为此支付500 美元。
Intel… 英特尔。。。可悲的是,蓝队还有另一个车手级的问题要报告。这一次,问题出在几何着色器中。SPIR-V 着色器编译器由于空指针取消引用而导致 Vulkan Arc 驱动程序崩溃。这会影响许多游戏,甚至是流行的游戏,例如 Xenoblade Chronicles 3 和 The Legend of Zelda: Tears of the Kingdom .
错误报告已提交。这次手指交叉的分辨率比七个月快,结果比第14代产品更令人满意。
Turnip, steadily progressing 萝卜,稳步发展在撰写本文时,Adreno 700系列的最新版本的萝卜驱动程序R7似乎大大减少了开销,从而减少了高通Android用户的过热。由于该驱动程序还与Adreno 600系列GPU兼容,因此我们建议用户尝试一下。
不过要警告一下!萝卜驱动程序目前不支持Adreno 725和Adreno 730 GPU。可以在这些设备上使用像 R5 这样的旧版本。
官方的高通驱动程序得到了一些更新,但它仍然绝对糟糕,因此如果可能的话,我们不建议使用它。
Future projects 未来项目尼斯项目,ARM设备的本机代码执行(NCE)的实现正在启动其第一款游戏!
在我们进入内部测试阶段之前,还需要做更多的工作。有许多崩溃和软锁需要先解决,所以请耐心等待,Android团伙。
随着专辑小程序的进展如此顺利,German77也在进一步发展其他有趣的小程序。敬请关注。
这就是所有人!希望您喜欢本月的报告。下次见!
,