switch模拟器吧 关注:11,010贴子:7,142
  • 4回复贴,共1

Yuzu进展报告2023年8月【edge浏览器机翻】

只看楼主收藏回复

图图鲁~余兹人。你觉得上一份报告太短了吗?好吧,八月正在全力以赴!本月提供了重要的图形修复,开发人员解决GPU限制,几个早就应该修复的文件系统修复,Skyline框架支持,一些Android和Apple的喜爱,等等!
永远的柚子炸鸡
还有罗宾。
这是 、 和实现的最后一部分。但在我们开始之前,我们必须解释一些事情。Project Y.F.C.Query Cache RewriteHost Conditional Rendering
为什么我们需要查询缓存?
许多 GPU 公开计数器,这些计数器用于从 GPU 执行的各种命令中收集数据,例如绘制了多少像素或生成了多少三角形。 游戏使用查询在需要使用这些计数器并将其加载到内存中。
Yuzu 的查询缓存负责跟踪 Switch 游戏的 GPU 计数器的值以及来自游戏的服务查询请求。
它的用途是什么?
一些游戏可以利用这些获取的数据来进一步优化其渲染。例如,使用称为遮挡剔除的常用技术优化其渲染的三角形数量。SUPER MARIO ODYSSEY
遮挡剔除是一项功能,当摄像机当前看不到对象时,该功能会禁用对象的渲染,因为它们在屏幕外或被其他对象遮挡(遮挡)。
在 中,游戏首先渲染简单的边界框,这些边界框覆盖将在屏幕上渲染的所有对象。 然后,它查询渲染到每个框的像素数,并且仅渲染其相应框具有任何像素的真实对象。SUPER MARIO ODYSSEY
同样,游戏使用像素计数来检查给定角色触摸的墨水。 游戏同时测试盟友墨水和敌人墨水,如果两个测试都失败,则角色不会站在任何墨水中。Splatoon

中孔(Splatoon 2)
发展与挑战
柚子已经有一个多年前开发的查询缓存。 但是,这种实现并不完美,并且存在许多问题。仅举几例:
它无法保存除像素计数之外的任何查询
它无法以正确的顺序写入内存
它不会使后来被其他查询类型覆盖的查询无效
我们的常驻 GPU 开发人员 Blinkhawk 着手重新设计查询缓存,以解决这些问题并使代码现代化。 但是,正如他后来发现的那样,这并不容易。
回想一下,查询缓存的工作原理是在主机 GPU 上运行查询。 事实证明,弄清楚如何使其在主机GPU上工作实际上是整个重写中最困难的部分,因为Switch GPU的功能与Vulkan等主机图形API公开的内容之间存在显着差异。
在开发过程中,Blinkhawk在Host GPU查询方面遇到了两大挑战。 首先,出于性能原因,我们无法在处理命令后立即向主机 GPU 提交命令。我们需要对它们进行批处理以获得任何合理的速度水平。这就引出了一个问题:我们什么时候需要执行查询并同步内存?
一旦您开始游戏,游戏就会开始进行查询以获取 GPU 计数器。 通常,结果是在计数完成后立即由 Switch 的 GPU 获得的——当渲染完成时。 但是像这样的游戏,它使用遮挡剔除,会进行很多查询。SUPER MARIO ODYSSEY
因此,如果我们尝试运行所有这些查询并以相同的方式在主机(用户)的 GPU 上写入结果,那么在绘制每个场景元素以写回计数器后,它会严重停止 GPU。
为了防止这种情况发生,每当游戏请求 GPU 等待命令完成渲染时,Blinkhawk 都会同步内存。这允许高效的批处理,以及在等待利用计数器值后发生的 GPU 命令。

转动镜头,整个城市神奇地消失了(超级马里奥奥德赛)
其次,在来宾(交换机)的GPU中,计数器可以随时重置,也可以根本不重置。 但是这种行为并没有在OpenGL和Vulkan等图形API中公开。 相反,这些 API 具有仅计算较小部分(例如单次绘制或多次绘制)的查询。 这意味着我们需要获取所有查询结果并汇总它们,尤其是在游戏从未重置计数器的情况下。
在旧的查询缓存中,我们习惯于在单个 GPU 线程上汇总所有查询结果,这无法跟上繁重的工作负载。 随着查询结果数量的增加,对它们求和所花费的时间也在增加。 这对于大约 50 或 80 个查询来说很好,但有些游戏可以轻松地在单个帧内进行数千个查询。
Blinkhawk尝试了几种不同的算法,最终确定了基于Hillis Steele扫描算法的实现。
结果呢?好吧,让以下列表不言自明:
里面的灯笼是固定的。Luigi’s Mansion 3

没有闪光弹(路易吉的豪宅3)
使用高 GPU 精度时,细节级别是固定的。不再有树木闪烁。Pokémon Scarlet & Violet
在某些Koei Tecmo游戏中渲染是固定的,当使用高GPU精度时。Marvel Ultimate Alliance 3: The Black Order
使用高 GPU 精度和禁用异步着色器构建时,会修复发光粒子。Xenoblade Chronicles 2 & 3
正确填充火焰时钟(异度之刃编年史3)
中的阴影是固定的。Metroid Prime Remastered

不是黑暗萨穆斯(银河战士总理重制版)
在使用主机条件渲染的游戏中,低端和/或功耗受限硬件的性能有所提高,例如、、、大多数Koei Tecmo游戏等。Pokémon Scarlet & VioletLuigi’s Mansion 3SUPER MARIO ODYSSEY
还有更多!
更多 GPU 更改
GPU 的变化并不止于此;还有很多内容要介绍。
让我们从一个令人惊讶的端口开始:本月登陆Switch和其他游戏机,随之而来的是专有RAGE引擎的新版本,为我们的开发人员提供了一些需要解决的怪癖。 你知道,新版本通常也是如此。Red Dead Redemption
动态GPU二人组(Blinkhawk和Maide)分析了游戏,并得出结论,最初渲染中断的原因是由于Vulkan上缺乏对蒙版深度模板清除的支持。
深度模具或深度和模板缓冲区的组合是一种将深度缓冲区和模具缓冲区组合到内存中的单个图像中的图像类型,从而加快 GPU 的测试以确定是否将绘制任何给定像素。
进一步详细说明:
深度缓冲区存储相机与当前最接近它的像素之间的距离,允许 GPU 确定哪些像素将被其他对象覆盖,因此不应绘制。
模板缓冲区更专业:它为每个像素存储一个字节,开发人员通常使用它来标记某些类型的对象。例如,可以为地面分配值 1,为树木和树叶分配值 2,为玩家分配值 17,依此类推。了解哪些像素属于哪些对象以应用各种效果非常有用。这是一个很棒的视频,展示了如何在 中使用模板缓冲区的示例。此视频中提到的材质遮罩缓冲区是模板缓冲区,用于防止效果应用于不需要的材质。The Legend of Zelda: Breath of the Wild
这些缓冲区的主要用途是正确渲染具有阴影、反射和透明度的场景。如视频示例所示,通过标记每个像素,许多类型的图形效果变得更加容易,因为这允许 GPU 根据像素的材质类型有条件地应用效果。
那么,为什么明确的操作在Vulkan上是一个问题呢? 在图形编程中,清除用于将缓冲区的所有数据重置为指定值。 Switch的NVN和OpenGL等图形API支持应用掩码来清除操作。 应用清除时,遮罩会更改图像的哪些位将受到影响:设置为 1 的位位置受清除的影响,设置为 0 的位位置将单独保留。 例如,如果游戏需要 4 位模具的上 8 位进行后续绘制,则它可以将掩码设置为 二进制 ,并清除值为 0 的模具。 这将导致仅清除较低的 4 位,而根据需要保留较高的 4 位。00001111
OpenGL 支持所有清除操作的遮罩,包括颜色、深度和模板缓冲区。 但是,Vulkan 旨在支持移动 GPU,而在移动 GPU 上,最有效的实现可能是在清除旧缓冲区时完全丢弃它。 这样可以避免从内存中读回缓冲区,而这种读取可能很昂贵。 因此,Vulkan 没有直接等同于蒙版清除,并且需要一次清除图像的整个“方面”(颜色、深度或模板)。
Red Dead Redemption在其模板缓冲区上使用遮罩清除。这就是为什么这个错误只影响草和灌木丛:游戏试图用面具保持这些值不变。 但是由于我们直接从游戏中将清除转换为 Vulkan 清除,我们只是擦除了整个模板缓冲区,在此过程中破坏了灌木和草的渲染。
我们为Vulkan提出的解决方案类似于我们之前为《女神异闻录5 Royal》使用的技巧:使用常规抽奖,而不是透明抽奖。 通过常规绘制,我们能够使用内置的硬件支持来应用模板蒙版,并产生与 OpenGL 相同的结果。
现有的新系统通过绘制全屏三角形来工作,这允许常规模板硬件处理屏蔽和缓冲区写入。多亏了这一点,Red Dead Redemption中草丛和灌木丛的渲染问题现在得到了解决。你好!您可以直接正确渲染到您的脸部,无论喜欢与否。

你有一些龙舌兰酒,然后胡安决定他是一个冒险家(荒野大镖客救赎)
Blinkhawk和Maide还发现了间接计算调度模拟方式的旧回归。 对于外行,间接调度是一种技术,用于允许 GPU 从另一个计算着色器或 GPU 操作生成的结果中获取需要执行的工作量,而不是在记录时由 CPU 传递。通过让 GPU 像这样独立地工作来避免较慢的 CPU 路径可以提高性能。 如此独立而强大的Tegra X1 GPU。看着它成长。
由于这种后期的干预,、、 现在渲染得更好了:Rabbids 系列中的阴影具有适当的阴影水平,现在可以看到《孤独之海》中的环境。Mario + Rabbids Kingdom BattleMario + Rabbids Sparks of HopeSea of Solitude

这个花了一段时间,嗯(马里奥+兔子王国之战和孤独之海)
《孤海》中的水需要模仿Tegra X1的其他非常棘手的方面,所以这是以后的功课。
正如麦德现在也了解到的那样,快速路径是一个古怪的女士。 她负责直接从 GPU 上传和下载图像数据,转换 CPU 和系统内存上的图像数据。 但是,它只有在满足适当条件时才能起作用。 如果你不小心翼翼地靠近她,你会在错误的地方、错误的时刻得到错误的数据。 这就是幸运,一个在Vulkan上崩溃的游戏,并在OpenGL上完全崩溃。Accelerated DMASid Meier's Civilization VI
罪魁祸首?未将目标缓冲区和/或映像标记为已修改,导致任何将来的读取都不会触发相应的下载。这导致游戏读取了错误的数据。快速路径的这一怪癖现已得到解决,并且添加了用于地址对给定图像格式无效的情况的 CPU 回退路径。策略迷现在可以尽情地互相攻击。 甘地说,和平从来都不是一种选择。

再转一圈(席德梅尔的文明VI)
对于我们有文化的玩家来说,Blinkhawk 和 byte[] 为我们带来了期待已久的修复。 它们涉及模拟交换机的 GPU 驱动程序如何模拟硬件不支持的功能。是的。Bayonetta 3
这个故事围绕着 OpenGL 函数展开,该函数根据提供的角度在多个 mipmap 级别上进行纹理查找,并返回单个纹素。textureGrad
好吧,Switch 的 Tegra X1 上基于 Maxwell 的 GPU 无法原生地为 3D 纹理执行此操作,因此它使用 SAM 和 RAM 指令进入和离开一种特殊模式,我们对此知之甚少——但我们知道它用于计算纹理获取的导数。
通过寻找这种指令模式,Blinkhawk 实现了对 中雾和云的初步支持。 byte[]后来修复了该实现,使其按照Blink最初的意图运行,并避免在Mesa和基于RDNA3的GPU(AMD Radeon RX 7000系列)上崩溃。Bayonetta 3

神秘迷雾(巴约内塔3)
Blinkhawk 不打算就此止步,还改进了在缓冲区缓存中丢弃不必要写入的逻辑,并改进了索引缓冲区(存储形成网格的顶点索引)大小的估计方式。 结果呢?中 的性能提升 69% 或更高,具体取决于系统规格。好。Bayonetta 3

阿拉,阿拉(巴约内塔3)
byte[] 发现 Yuzu 对 NVNflinger 的实现(负责呈现到屏幕的服务)缺少缩放模式选项“保留纵横比”。实现它可以解决其基本版本中的渲染问题。Gunvolt Chronicles Luminous Avenger iX

地狱是的,精灵!(Gunvolt Chronicles Luminous Avenger iX)
一位用户报告说,很久以前的未知更改导致不断崩溃。 byte[] 发现罪魁祸首隐藏在分配期间映射的对齐方式而不是释放,这是前 Skyline 模拟器开发人员章程最初发现的错误。回归解决,游戏稳定,案件结束。AI: THE SOMNIUM FILES

初级,我亲爱的用户(AI:SOMNIUM FILES)
最后,为了结束本节,与其说是图形代码更改,不如说是构建过程更改,vonchenplus 将 MoltenVK 作为外部依赖项添加到 yuzu 的 CMake 设置中,允许 Apple 用户在他们的 Vulkan 饥饿机器上构建 yuzu 时自动获取此翻译库的最新版本。(AGXV,有人吗?

让我们从简单的东西开始(勇者斗恶龙III救赎的种子)
正确跟上MoltenVK更新可以让macOS版本运行一些基本游戏,但要让禁果公司的设备跟上速度,还有很多工作要做。
OpenGL特定的改进,这也改进了Vulkan
没错,Mesa和NVIDIA Fermi/Kepler用户,轮到你得到一些爱了。Epicboy 回来了,它对启动这一切的旧经典 API OpenGL 进行了一些重大更改。
首先是针对OpenGL和Vulkan API的GPU ASTC解码的重大改革。基于计算着色器的解码器多个领域的代码优化将 Vulkan ASTC 解码性能提高了 60%,但它使 NVIDIA 上的 OpenGL 快了 15 倍,使其现在在解码 ASTC 纹理方面比 Vulkan 略快。

微妙的跳跃
留在 Vulkan 支持上的 GPU 现在可以在 、、 等游戏中享受更流畅的性能。The Legend of Zelda: Tears of the KingdomBayonetta 3Luigi’s Mansion 3
若要充分利用此更改,必须将该方法设置为 ,并且如果您使用的是 Vulkan,则应启用该方法。 这两个选项都可以在中找到。ASTC recompressionUncompressedEnable asynchronous presentationEmulation > Configure… > Graphics > Advanced
toastUnlimited后来阻止了Mesa的本机ASTC解码器,因为它现在比我们的实现慢得多。
最后,Epicboy 解决了在我们将 Vulkan 作为默认 API 之前玩家非常普遍的问题。 坐下吧,孩子们,故事时间到了。Pokémon Legends: Arceus
在不那么遥远的美好时光里,柚子只是在试验一个不完整和不成熟的 Vulkan 后端,没有 LDN/LAN 支持,Android 版本被认为是一个发烧的梦想。 当时我们默认使用 OpenGL API,在着色器后端的三个选项中,GLASM 是首选的着色器后端,因为它不会影响不兼容的驱动程序——它是 NVIDIA 独有的“功能”,任何其他驱动程序都会自动恢复到与供应商无关的 GLSL。 这为 NVIDIA 用户提供了当时最好的体验,以及最短的着色器构建时间,直到 Vulkan 改进到足以成为今天的完全替代品。
在这些迁移日子里,一个非常常见的报告是角色阴影是错误的——它要么给角色引入了奇怪的微尘,要么它们看起来完全没有任何形式的照明。 这个问题很快就被发现源于GLASM。Pokémon Legends: Arceus
由于GLASM过去和现在都几乎不可能工作,因为它完全缺乏调试和辅助开发的工具,因此在Rodrigo引入它之后,没有开发人员愿意接触它。当他后来离开去更绿色的牧场时,这导致我们的 GLASM 着色器后端变得完全无法维护。
好吧,进入 2023 年,Epicboy 卷起袖子开始工作。他发现问题在于GLASM如何处理转换反馈。通过实现对多个转换反馈缓冲区的支持,他不仅解决了 Switch 中唯一好的主 Pokémon 版本中的问题(作者的观点,你不能证明我错了),而且很可能是许多其他依赖转换反馈来渲染的现代 Switch 游戏。

对于Gamecube来说仍然不错的图形(神奇宝贝传奇:阿尔宙斯)
我们希望我们的勇士仍在摇摆永不消亡的GTX 400至700系列GPU从这些变化中受益。
天际线框架:第 3 部分
经过漫长的等待,对天际线框架的支持,随之而来的是对 ARCropolis 模组框架的支持终于落地了! 但我们正在超越自己。让我们看看 byte[] 是如何使这成为可能的。Super Smash Bros. Ultimate
作为实施称为 ASLR(地址空间布局随机化)的安全技术的一部分,可以在交换机上加载程序代码的大范围地址。 事实上,即使 Switch 只有 4 GB 的物理内存,可以虚拟映射程序代码的区域大小也可以高达 512GB。 程序不应假设它们在地址空间内的加载位置,因为它们可以在控制台上此范围内的任何位置移动。 事实证明,Skyline 框架要求程序不在区域一开始就加载,但 yuzu 总是在那里加载它,导致它可靠地崩溃。 byte[] 通过将代码加载地址进一步移动到 ASLR 区域,为其运行留出空间,从而解决了 Skyline 的这一限制。
柚子负责处理来自访客代码的服务呼叫的代码并不完全处于理想状态。 模拟器早期的一个特别烦人的问题是锁,它阻止服务对象接收来自不同会话的并发请求。 由于实现不正确(锁根本不应该存在),但许多现有的 yuzu 代码依赖于它,byte[] 反而避免只在对套接字接口的调用周围锁定,避免在 Skyline 的 TCP 记录器处于活动状态时出现死锁。 要一劳永逸地消除此服务锁,还有更多工作要做。
通过这些更改,Skyline框架可以运行,但是需要做更多的工作才能使ARCropolis启动并运行,并且Smash模组社区感到满意。 值得庆幸的是,byte[] 并没有止步于此,而是继续实现所需的更改。
ARCropolis 曾经在连接到 SSL/TLS 套接字时错误地启动握手,而没有先设置主机名。 这已经在 ARCropolis 的依赖项中得到了修复,但大多数用户还没有更新到更正后的版本,所以 yuzu 必须支持这种行为。
最后,yuzu 缺少对 HTML 手动模组的支持,所以 byte[] 也实现了对它的支持。
经过这几次修复后的最终结果是,Super Smash Bros. Ultimate的大多数模组现在都可以工作了!


IP属地:湖北1楼2023-09-15 13:44回复

    让模组开始吧!(超级粉碎兄弟终极版)

    博奇酱VS梅利亚,世纪之战(超级粉碎兄弟终极版)
    祝您模组愉快!这是为感兴趣的人准备的教程。
    泰拉计划?
    是的,byte[] 要求重命名。从现在开始,Project Terra将成为修复当前虚拟文件系统仿真实现的工作的名称,而Project Gaia正在进行中。
    为什么要重命名?因为我们有很多修复程序要告诉您。 首先,柚子现在支持稀疏和压缩的NCA游戏!这意味着一长串以前无法启动的 eShop 版本现在要么正在运行,要么完全可以播放,并且它们的 RomFS 可以完全转储。
    以下是现在可用的电子商店标题的近乎完整的列表:
    Splatoon 3
    Bayonetta 3
    Atelier Ryza 3: Alchemist of the End & the Secret Key
    Double Dragon Gaiden: Rise of the Dragons
    OneShot: World Machine Edition
    Skullgirls: 2nd Encore
    Everdream Valley
    Magical Drop VI
    Hatsune Miku - The Planet Of Wonder And Fragments Of Wishes
    MLB The Show 23
    Sports Story
    Front Mission 1st: Remake
    Cursed to Golf
    Ruined King: A League of Legends Story
    Mega Man Battle Network Legacy Collection
    还有更多!
    还添加了对带有预置密钥区域的游戏卡转储的支持,这要归功于 byte[]。这允许使用转储,并启用转储密钥区域的选项。

    漂亮的自行车(Fuuraiki 4)
    为多程序应用程序(例如包含多个游戏的游戏启动器)安装更新和 DLC 在 yuzu 上无法正常工作。 这意味着无论用户做什么,这样的游戏只会启动基础游戏版本。 当前的虚拟文件系统实现无法正确支持这一点,这是Project Gaia准备修复的众多领域之一。 为了绕过这个限制,byte[] 在 yuzu 中创建合成更新元数据,允许更新/DLC 正确传递和加载。Super Mario 3D All-Stars
    FearlessTobi 修复了一个旧的回归,在使用使用过时方法转储的游戏时,会影响游戏大小在游戏列表中的显示方式。 回归有多老?嗯,现在已经5岁了。
    FearlessTobi还修复了当游戏尝试将文件重命名为已存在的名称时如何处理错误的错误。 这导致启动时崩溃。GRID Autosport

    90年代的跑步(GRID Autosport)


    IP属地:湖北2楼2023-09-15 13:48
    收起回复
      FearlessTobi还修复了yuzu的命令行参数,以便在启动游戏时正确加载更新和DLC,例如,使用脚本时。
      用户报告说,一些来自游戏的 RomFS 转储并不总是包含所有游戏资产,一个例子是 . byte[] 的调查显示,RomFS 转储代码的几个区域是......质量低下。适度重写后,多标题游戏的 RomFS 转储现在应该包括所有资产。KLONOA Phantasy Reverie Series
      音频、输入和核心更改
      让我们从此进度报告的唯一输入更改开始。德国77几乎打破了他的连胜!
      将 SDL 更新到版本 2.28.2 修复了程序在后台运行时影响 Xbox 控制器触发运动事件及其隆隆声的问题。 在 XInput 模式下的 8BitDo 游戏手柄映射已针对 Linux 进行了修复。 初始化某些非官方 PS4 控制器时发生的控制器锁定现已修复。
      externals: Update SDL to 2.28.2 #11406
      17天前合并。
      某些用户的机器的音频设备配置不正确,这可能导致游戏在启动时锁定。 这种可爱的行为迫使 Maide 在启动过程的早期进行测试,以查看哪个音频后端可以正确启动音频设备。如果设备无法使用 cubeb 和 SDL 进行初始化,则选择空后端并继续游戏,只是没有任何音频输出。
      如果您发现游戏没有音频但可以正常工作,则应检查驱动程序,检查任何中间程序(如均衡器),并检查操作系统设置是否存在问题。
      Opus 是一种有损开源且免版税(一如既往)的音频格式,被多个游戏使用。 与VP9视频格式一样,它在柚子中的实现并不像播放文件那么简单。通过实施和服务方法(Opus多流支持),FearlessTobi确保了现在可以玩的游戏。OpenHardwareOpusDecoderForMultiStreamExDecodeInterleavedForMultiStreamMLB The Show 22
      另一方面,实现服务方法允许启动。GetWorkBufferSizeExExSea of Stars

      没有什么能比得上经典RPG(星海)的外观
      如果有人在游戏中遇到与音频相关的崩溃(特别是与音频效果相关的崩溃),例如,在ChiefGokhlayeh的帮助下,Maide找到了导致问题的损坏的节点Id索引。The Legend of Zelda: Tears of the KingdomSUPER MARIO ODYSSEY
      byte[] 仍在以合理的方式进行关闭柚子的战争,它更改了关闭超时以更接近 Switch 的行为。现在大多数游戏都在一秒钟内退出。
      关闭改进的另一个领域(这次与 Skyline 框架相关)是取消由 TCP 记录器引起的挂起套接字操作。 其中一个操作可以继续等待主机被接受。 一旦触发了关闭事件,这将永远不会完成,因此现在发出快速终止。
      安卓增强
      除了之前报告的所有更改外,Android 还获得了特定错误修复和 UI 更改的份额,这要归功于 t895:
      其他设置调整,包括在列表视图中显示设置值、降低不可编辑设置的不透明度、删除滑块对话框中一些不必要的默认按钮以及其他一些小更改。

      运行游戏时无法更改这些设置
      显示家庭设置的关联值。
      更改初始设置,显示步骤是否已完成,并在完成后自动移动到下一页。

      设置更轻松!
      在横向和反向横向之间自动旋转屏幕。
      搜索最多 3 个子文件夹深的程序。
      使用 appCategory 将柚子报告为游戏。这应该可以改善游戏启动器的检测,但令人惊讶的是,这还不足以让三星的游戏启动器检测到柚子。
      设置返工,包括更好的材质动画、隐藏配对选项、添加设置搜索功能以及正确改进对话框的恢复状态。

      更清洁、更实用


      IP属地:湖北3楼2023-09-15 13:51
      回复
        修复了一些活动问题,例如更改方向时表面出现拉伸,或者以横向模式启动游戏,然后切换到纵向。
        添加新的加载和关闭动画。

        显示进度
        支持模拟活动的意图,因此用户可以从其他应用程序(如大治所)启动游戏。

        对于那些喜欢它的人
        添加创建动态应用快捷方式的功能,以便用户可以制作每个游戏的图标。

        更快进入游戏的方式!
        修复了游戏内容安装程序中可能导致在尝试安装更新或 DLC 时崩溃的错误。
        还有更多!
        byte[] 也加入了 Android 的努力,修复了一个虚拟文件系统错误,该错误使得任何安装了更新的游戏在合并他早期的更改以支持压缩和稀疏的 NCA 后都无法启动。
        桌面 UI 改进
        桌面方面也得到了开发人员的喜爱。
        新手mdmrk为我们带来了一个非常需要的功能:每场比赛的游戏时间跟踪!它在游戏列表中显示为新列。 谢谢!

        功率电平读数
        自从引入屏幕截图功能以来,无论在图形设置中选择的纵横比如何,柚子都只以 16:9 的纵横比保存了捕获。 此外,捕获的分辨率始终基于所选的分辨率乘数值;如果使用 2x,则在停靠模式下播放时的任何捕获大小均为 3840x2160。
        出于最近一些模组的动机,这些模组绕过我们的缩放器并直接以 1K 以 4 倍分辨率渲染游戏,ToastUnlimited 添加了屏幕截图分辨率的配置选项,并考虑了用户选择的纵横比。 现在用户可以在 中设置屏幕截图分辨率。“自动”将使用前面使用分辨率乘数值的逻辑,但可以选择许多其他分辨率选项。 此外,用户选择的内容将决定屏幕截图的纵横比和最终分辨率。 随意尝试,并保存您最好的游戏时刻!Emulation > Configure… > General > UI > ResolutionEmulation > Configure… > Graphics > Aspect Ratio

        一张图片胜过千言万语
        每个游戏的设置是自定义每个游戏的设置和模组的好方法。 一个奇怪的地方的一个选择是——游戏是在停靠模式还是手持模式下玩。 旧的实现依赖于控制器配置文件:用户将设置一些控制器映射、控制器类型、控制台模式,将所有这些另存为配置文件,然后将每个游戏设置为使用首选控制器配置文件。 这种方法的问题在于,它强制用户保存不同的控制器配置文件,而在大多数情况下使用单个控制器配置文件,例如,使用索尼双重感应的Pro控制器配置文件。 为了简化此特定情况,ToastUnlimited 在每个游戏的系统属性中添加了控制台模式。容易多了,对吧?Console mode

        实现更多定制
        硬件部分
        这一部分最近很平静。在大多数情况下,驱动程序最近一直在表现并且没有引入关键的回归,而Adreno Android播放器的Mesa Turnip驱动程序一直在健康地发展。它还没有完全稳定,但渲染和性能处于一个很好的位置。 这次只有一个供应商要讨论,它是...
        AMD和D24的情况
        我们将继续研究如何处理红队硬件上缺乏对 D24 深度格式的硬件支持的问题。
        一些有趣且完全不邪恶的实验(假装缺乏对RTX 3060 Ti的支持)证明,虽然D24故障很容易通过注释掉一些行在兼容硬件上重现,但我们也确认了影响其DLC和主游戏的顶点爆炸不是由AMD卡上缺少D24引起的。 任何其他禁用 D24 支持的 GPU 供应商都可以完美地呈现这些部分,让我们再次不知道 Radeon GPU 对这款特定游戏的讨厌之处。Xenoblade Chronicles 3Future RedeemedPentelas region
        在Windows上,OpenGL仍然是红队用户目前的唯一选择。 另一方面,Mesa似乎已经用他们的最新版本解决了这个问题(至少在Polaris硬件上),所以“只使用Linux”似乎是再次解决AMD特定问题的一种方法。
        但这并不全是坏消息!一个新的 Vulkan 扩展,目前仅在 Linux Mesa RADV 驱动程序上可用,允许 yuzu 正确伪造 D24 支持,修复 、 和 等游戏的渲染问题。VK_EXT_depth_bias_controlPokémon Sword & ShieldSuper Smash Bros. UltimateMario Tennis Aces
        Blinkhawk增加了一个初步的实现,支持柚子进行测试。 我们希望AMD在其Windows驱动程序中添加对它的支持,因为众所周知,他们在OpenGL内部使用该功能。VK_EXT_depth_bias_control

        对正确格式的硬件支持很重要(神奇宝贝剑)
        作为一个小小的轶事,我们必须硬编码一个值,以允许AMD卡在我们的Vulkan API引入后不久渲染这个游戏。 D24的故事从一开始就伴随着我们。Super Smash Bros. Ultimate
        三星日食 920
        从技术上讲,它是同一个供应商,对吧?
        最近更改了Vulkan扩展是强制性的,并且是可选的,这使得这款基于AMD RDNA2的GPU与Android版本配合使用,为足够体面的SoC GPU组添加了另一个兼容供应商,以及Adreno和Mali。 Exynos 2200 用户现在可以在他们的安卓设备上享受他们的 Switch 游戏了!
        未来项目
        Blinkhawk又回到了提出如此疯狂的想法,我们永远无法在这里正确解释它们。 byte[] 和 Morph 都在为完成当前挑战后烹饪有趣的项目。
        这就是所有人!感谢您抽出宝贵时间阅读到最后。我们希望下次见到你!


        IP属地:湖北4楼2023-09-15 13:52
        回复