cmp棒球服(Switch模拟器YUZU进度报告2022-2月)

Switch模仿器YUZU进度报告2022-2月

Switch模仿器YUZU进度报告2022-2月

本月,我们很自大地展现了多量内核变动,这些变动终极修复了长时存在的错误、大范围的功能改良、UI 和输入变动等等!

图形修复,以及怎样提高功能

由于 Linux 上的 RADV 驱动步骤存在成绩,在 AMD 的 RDNA2 显卡上运转时,使用 Vulkan API 会使 yuzu 崩溃。 最值得注意的是,这个成绩影响了 Steam 平台,正如实验在其装备上测试yuzu的用户所报告的那样。

确定崩溃成绩是由于 VK_EXT_vertex_input_dynamic_state,一个 Vulkan 扩展,用于最小化着色器编译历程中所需的管道目标数目。 这些布局十分巨大,偶尔,游戏约莫只想变动此中的一小部老实容,比如极点输入形态。 使用此扩展,API 可以经过简便的函数调用动态变动布局中的这些成员,无需创建全新的目标,从而变小利用使用的资源量。

固然这个错误正在处理, epicboy 推送了一个 PR 将扩展列入黑名单 在运转 RADV 驱动步骤的 RDNA2 装备上,因此 yuzu 不会彻底崩溃。

但是另有一个驱动给我们带来了成绩。

Linux 上 Mesa 的 ANV 驱动步骤不支持纹理格式 VK_FORMAT_B5G6R5_UNORM_PACK16,这招致yuzu在运利用用它的游戏时崩溃,比如 酷霸王之怒. 为了绕过这个成绩, voidanix 完成了一个模仿的处理方案 BGR565纹理 殽杂 RGB565,以此处理。

相似地, Morph 完成了 缺失的极点格式 , 如游戏使用口袋力气棒球R asLody 还完成了短少的 帧缓冲区格式 , 这次用于 妖怪手表4.

妖怪手表4

该开发职员的另一个修复是 添加短少的信号量利用 为了 MaxwellDMA, 被使用 塞尔达传说:原野之息 和 宝可梦传说:阿尔宙斯

内核厘革,以及怎样征服 Smash

持续在内核上举行的事情, 改良 bunnei 内核内存办理器 使其与最新的体系更新更兼容。

伴随这些厘革而来的一个奇妙设置是yuzu可以支持不同的内存布局,比如在开发职员单位中使用的“6 GB 扩展内存布局”(MOD社区要求的一项功效)。

一些模组可以使用比 Switch 提供的更多的 RAM,主要是高区分率纹理交换。 为了处理这个成绩,bunnei 添加了一个开关来启用扩展的 6GB 内存布局 真正的开发职员东西包将可用。 那些分外的 2GB 将允许重型模块正常事情。 您可以在中找到设置 模仿 > 设置… > 通用 > 扩展的内存布局 (6GB DRAM).

扩展的内存布局 (6GB DRAM)

不要指望它会对模仿功能产生影响,游戏不会体贴模仿控制台对否凌驾 4GB,它们只体贴对否有充足的空闲内存用于利用。

bunnei 还经过 将锁迁徙到使用模仿客户锁来 以及 改良物理内存的映射息争映射 .

与往常一样,这项事情眼前的最大动力是提高我们完成的准确性,同时还修复了已往几年约莫隐蔽在那边的任何错误。

Dynarmic 是我们的 ARM JIT 重新编译器,本月也举行了很多新的优化和错误修复。

Blinkhawk 改正了 Dynarmic 中内存存储/加载利用序列化的屏蔽逻辑 x64代码发射器,并随后 更新了子模块 将这些变动带入 yuzu 的代码库。 这修复了影响的卡死 宝可梦传说:阿尔宙斯.

在观察安定性成绩时 任天国明星大乱斗, bunnei 和 Merry 发觉成绩是由于在 SpaceRemaining函数,用于盘算缓存块中 JITed 代码可用的剩余空间。

Dynarmic 将这些代码块分红两个地区,定名为 near和 far. 该方案旨在经过将“热”代码保存在 near随时可供实行,而“冷”代码被推入 far地区。 由于盘算剩余空间的办法存在错误, near地区会溢出到 far地区,用“热”代码掩盖“冷”代码。 然后,CPU 将实验运转之前存在的“冷”代码,并在实验时严峻崩溃。

终极,在几场比赛后崩溃 SSBU,由于那是耗尽空间并溢出缓存所破费的时间。 经过 纠恰比力 用于盘算这个值,开发职员终于可以缓得救绕这个游戏的最长时存在的成绩之一。

任天国明星大乱斗

Merry 也不休忙于 完成对新 CPU 优化的支持 ,这使得经过使用 ARM 独占拜候指令的仿真 cmpxchg(比力和互换)指令 x64修建学。

ARM 指令集包含可以扫除对内存地点的拜候的指令,因此仅有一些指令——在这种情况下是一对:一个用于读取值,另一个用于写入它们——可以在多核情况中宁静运转,而不会遭到干扰来自别的线程的指令,这些线程约莫也想拜候内存中的相反值。

它经过在读取内存中的值后将地点标志为“用于独占拜候”来完成这一点,因此“独占”存储指令仅有在使用此标志标志时才会写入该地点。 另一方面,“正常”存储指令旨在一直在写入后扫除该标志。 因此,独占指令可以使用该信息晓得内存地点中的值何时被非独占指令改动,兼顾新启动整个作业,直到利用告捷。

ARM 可以经过称为 Exclusive Monitor. 但是在 x64思索到多线程情况中测试和调试的繁复性,架构约岂十分困难。 因此,它们之前的完成相当保守且听从低下,以确保并发性。

但是,可以经过使用 cmpxchg,它将内存地点中的值与引用举行比力,假如婚配,则将新值写入此中。 因此,可以将内存地点中的值用作引用,然后当且仅当存储的值与引用婚配时,将另一个值写入同一地点。 依托该指令的语义,可以将独占内存读取和写入内联到 JITed 代码中并增速它们的实行速率。

广泛使用这些专有分析的游戏,比如 宝可梦传说:阿尔宙斯,应该会看到功能略有提高。

Nvidia2080

AMD RX570

寻常错误修正和 UI 变动

German77 在 UI 上做了一些事情来增长兴趣性。

他改良了 SDL 电池电量检测 ,重新调停了控制设置中的一些 UI 元素, 并为我们提供了新的、更标致的电池标记!

旧的电量图标

新的电量图标

German77 还 添加了新的热键 应群众要求。 到场战役的是停靠/取消停靠(用于控制器)、窗口自顺应过滤器、GPU 精度(在正常和高之间切换)和静音/取消静音。

愈加便捷的热键设置

另一个高度要求的修复是 改良 Amiibo 支持 . 我们的旧代码不是很准确,招致一些游戏失败。 固然另有改良的余地,但这个新完成要准确得多,如今应该可以在大大多游戏中安定使用 Amiibo 转储。

我们还想公布,对实体 Amiibos 的 NFC 扫描的原生支持正在开发中! 随着历程,我们将分享更多信息。

Morph 修复了迩来显现的一个奇异成绩。 在某些情况下,重新掀开柚子后,窗口会是一个最大化的无边框形态。 内幕证实,由于某种缘故,设置文件在关闭 yuzu 后没有重置无框标志。 欺压移除标志 在每次启动时处理成绩。

Maide 为模组制造者和任何对游戏内里布局感兴致的人添加了一个十分有效的功效。 此前,yuzu倾销基地 exeFS,此中仅包含来自基本游戏的数据,短少更新或 DLC 中的任何新增内容。 相反,经过 转储补丁 exeFS,就像 EliEron 已往发起的那样 ,用户将有权拜候更新文件!

toastUnlimited 发觉 放射兵士 2中的库存时崩溃 LAN 大厅 。 存根 IsUsbFullKeyControllerEnabled功效 这就是我们所必要的。 肆无忌惮地打你的伙伴!

放射兵士2

关于复古游戏迷来说,toastUnlimited 和 German77 都修复了 Nintendo Switch Online 办事中包含的 SNES 和 NES 模仿器(是的,您也可以转储和离线播放这些模仿器)。 存根 mnpp:app处理崩溃,并 更新流程修订 我们的音频仿真允许官方仿真器在 yuzu 上正常事情。

输入改良

正如每个月都市产生的那样,german77 在这个局部中占主导位置。

作为测试如今震动设置强度的一种办法,您如今可以 欺压控制器振动 在设置振动窗口掀开时按随意按钮都可以了解到震动强度。

此窗口中按键可以了解震动强度了

游戏手柄有漂移,不仅是 Joy-Cons 所熟知的俊逸成绩,并且每个游戏手柄都有一定水平的漂移。 为了隐蔽这一点,控制台会主动居中其摇杆。

限定之一 SDL 是它只能读取 Nintendo 官方控制器上的工场校准,跳过任何约莫可用的用户校准设置文件。 我们经过在启动时主动居中来处理这个成绩,但是摇杆仍旧可以去任何它们喜好的场合,以是 German77 添加了一个选项来手动居中每个轴 作为附加选项。 只需在我们的控制器设置中右键单击摇杆的任何朝向。

只必要右键单机

添加了支持以 允许映射 Enter 键 ,之前只是重新启动了映射历程。

toastUnlimited 添加了对体感输入的支持 至 yuzu-cmd,我们的可实行文件的终端版本。 终端用户如今也可以享用一些舞力全开。

改良模仿以不使用模仿

xerpi 完成了 32 位版本 的 OutputDebugString, CreateCodeMemory, 和 ControlCodeMemory的办理步骤调入。 谢谢!

xerpi 的协助有一个更大的目标,而不仅仅是协助一些不为人知的 Switch 模仿器。 他们正在开发 vita2hos ,一个可以运转的翻译层 PlayStation VitaNintendo Switch 原生使用和游戏! 前方的路很长,由于大大多 Switch 调试东西都是 64 位的,而 Vita 是一个 32 位的控制台,以是为了让项目持续举行多次重写和变动。

yuzu 短少一些功效来提供完备的 32 位实行形式支持,因此掀开了 PR 以协助改良该范畴,由于 xerpi 正在使用 Switch 模仿器来帮助和简化开发。 我们刻不容缓地想看看这个项目怎样提高!

Vulkan 是将来

随着事情 Project Y.F.C以及别的方案的变动,我们正在徐徐地努力于默许启用 Vulkan,并坚持 OpenGL 的长时支持。 本节不会列出 yuzu 中的变动,但用户可以调停设置以提高他们在 yuzu 和别的模仿器中的 Vulkan 功能。

Vulkan 功能的主要成绩之一是如今 GPU 将接纳积极的频率办理来节流电力。 由于即使是古代低端 GPU,Nintendo Switch 游戏产生的实践 3D 负载也会十分低,因此时钟速率屡屡会坚持在其频率的省电方面。

一个明显提高功能的简一办法是欺压 GPU 以更高的时钟频率来运转模仿器。 GPU 可以到达的最高值在这里通常是不关紧急的,由于大大多 GPU 将比 Switch 的 Tegra X1 更快,但更高的时钟速率将使帧速率坚持在较高水平并将卡顿降至最低。

NVIDIA 用户在 NVIDIA 控制面板, Prefer maximum performance. 您可以在 3D Settings > Manage 3D settings > Program Settings tab点击 Add并从可用选项中选择 yuzu,然后向下转动到 电源办理 并将其设置为 最高功能优先 .

nvidia控制面板

在 AMD 方面,这必要一些手开事情,并且约莫仅与基于 RDNA 的 GPU 兼容。 仅有相对较新的 Radeon 驱动步骤添加了调停所包含的最小和最大 GPU 频率的选项 Radeon WattMan.。

必要做的是,以与 NVIDIA 相似的办法,将 yuzu 作为设置文件添加到 Gaming选项卡,点击 Tune Game Performance并将调谐控制设置为 Custom. 启用 GPU 调停,您将可以调停 Min. Frequency (%).

固然这可以在 Radeon Software 上全局设置,但我们发起使用每个使用步骤的设置文件

除了 GPU,提高内存时钟速率总是有助于仿真,尤其是在高区分率下 AMD

以一个RX 6500 XT 为例,我们可以看到 宝可梦传说:阿尔宙斯 将其帧速率提高到 73% 时 ,轻松凌驾 RX 570,只需将最低时钟速率从 500MHz 提高到 2875MHz(如下图所示,提高了 475%)。

太省电也并不是什么功德

这里的功能提升约莫是宏大的,但在某个点之后,功能将不再见有太大的提升,以是这里可以本人一点点拉高来调治测试。

将来项目

Project Y.F.C.随着提高,更多从前被毁坏的游戏开头变得可玩,它持续成熟。 Blinkhawk 报告我们,他现在正在将重点转移到功能上。 我们刻不容缓地想报告你更多!

火焰纹章兵士

German77 不休在玩 完成一个 Mii 编纂器小步骤 . 现在的支持十分简便,但任何有兴致的人都可以无偿构建拉取哀求并实验它。

Mii编纂器小步骤

这就是本月一切的内容! 感激您抽出名贵时间阅读,我们渴望下个月再见。 感激点赞、眷注、批评、转发 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享