天天看點

Switch模拟器Ryujinx進步報告2022-6月

作者:YUZU

Switch模拟器Ryujinx進步報告2022-6月

Switch模拟器Ryujinx進步報告2022-6月

2022 年已經過半,當我們有一些好遊戲可以玩時,時間肯定過得很快! 說到遊戲,本月釋出了一些真正的遊戲,我們很高興地說它們中的 大多數 都可以工作,要麼開箱即用,要麼有一些小的變通辦法。 盡管來自 Koei Tecmo(所有模拟器開發者都害怕的名字),火焰紋章無雙:風花雪月,無論是示範版還是完整版,在第 1 天都完美運作,隻有馬裡奧前鋒搶走了我們的風頭!

如果需要一個MOD來繞過介紹,我們盡量不宣傳它變成了可玩的遊戲,但任何有興趣的人都可以選擇,并且遊戲的其餘部分運作良好。

這是下半場更精彩的釋出,事不宜遲,讓我們進入我們的 patreon 目标!

Patreon目标:

Vulkan GPU 後端 - 仍在進行中。

已傳遞公共測試版本 !

ARB 着色器 - 2021 年 4 月達到的目标。

與 Vulkan 一起工作正在進行中,請稍等片刻,直到我們能夠将此更新傳遞到我們滿意的狀态。

通過使用 OpenGL API 提高 NVIDIA GPU 上的着色器編譯速度,ARB 着色器将進一步減少首次運作時的卡頓。

2000 美元/月 - 紋理包/替換功能 - 快到了!

這将有助于替換遊戲中的圖形紋理,進而實作自定義紋理增強、備用控制器按鈕圖形等。

一旦目标得以維持,預計到達時間:~3-4 周

2500 美元/月 - 一名全職開發人員 - 尚未見面。

這筆每月捐款将允許該項目的創始人 gdkchan 全職開發 Ryujinx。 我們所有的貢獻者目前隻在業餘時間從事該項目!

5000 美元/月 - 額外的全職開發人員 - 尚未見面。

這筆每月捐款将允許額外的 Ryujinx 團隊開發人員全職從事該項目。

讓我們開始吧。

顯示卡:

Switch 仿真不是任何團體或項目都可以壟斷的東西, Skyline 團隊肯定會投入他們的工作來證明這一點! 聯合首席開發商 Bylaws 對 Ryujinx 進行了一些修複; 第一個 解決了可能的競争條件 ,第二個解決了上古卷軸 V:天際中長期存在的錯誤。 雖然可能是有史以來最具彈性的平台移植遊戲,但自 2020 年啟動以來,它從未打開過菜單,結果證明, Skyrim 使用的計數器類型實際上需要一個信号量 (一種用于幫助的替代資料結構)多線程任務,而不僅僅是要釋放的常量零。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

雖然還沒有達到完美的狀态,但看到一些視覺上更複雜的 Switch 遊戲渲染并且實際上表現非常出色總是很酷!

不滿足于僅僅修複有史以來最暢銷的遊戲之一,這一變化實際上也完全解決了 伊蘇9:怪人之夜 中極其緩慢的速度,并解決了 吉娜姐妹:扭曲夢境 中的黑屏圖形問題。 有一位非常有耐心的使用者運作 伊蘇9:怪人之夜 花了 5 個小時才進入遊戲,呃。。。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

本月繼續他使用無盡的 GPU 黑魔法與鏟子遊戲的戰争,gdkchan 完成了最後的潤色以完全修複了18+紳士遊戲 鮮活的世界 和 限界凸起:萌情水晶。由于 錯過了如何處理了多重采樣和非多重采樣紋理 。 通過允許非多重采樣紋理繼承與多重采樣紋理相同的資料,如果出現這種情況,Ryujinx 将不再讀取垃圾資料。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

當然,限界凸起:萌情水晶 看起來也好不了多少。 除非你是這個顔色的忠實粉絲…… 棕褐色皮膚 ? 幸運的是,實際上允許遊戲渲染除單一顔色之外的其它内容。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

與索引抽獎相關的後續更改修複了一些使用它們的遊戲可能具有的低迷性能。 有時模拟器會為相同的結果繪制多次,這會在幀準備好之前增加大量的渲染時間。 通過将 索引計數僅傳遞給單個執行個體 ,多餘的抽獎被消除,如下所示(最右邊的列是抽獎計數)。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

新釋出的 時廻者 中的視訊崩潰已認證 将輸出矩形限制在定義的表面内 。 以前,如果輸入和輸出表面之間存在不比對,則輸入範圍之外的任何資料在技術上都是“未定義的”,并且會因通路沖突而随機崩潰。

繼續我們修複視覺小說的主題,對 AMD 和 Intel GPU 上使用的繪制紋理回退進行了調整,以便某些遊戲不會将其視窗颠倒。 由于隻有 NVIDIA 支援 NV_draw_texture 擴充, Ryujinx 需要忽略目前的 ClipControl 設定 ,因為它們在非 NVIDIA GPU 上無效。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

好吧,對于那些不關心視覺小說的人來說,這個月也有一些變化和修複給你! 其中第一個影響了今年最受期待(但确實令人失望)的遊戲之一:新的馬裡奧前鋒。 由于介紹視訊導緻尚未修複的崩潰,遊戲大部分運作并在動畫 3D 人群之外的啟動時呈現得相當好。 gdkchan 立即進行救援,增加了對一些新形式的深度模闆渲染目标(數組和 3D 紋理)的支援,同時修複了導緻 Ryujinx 忽略渲染目标清除的錯誤。 随着這兩個地方的變化,人群現在實際呈現并且遊戲玩法并不那麼孤獨!

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

時光之帽 是另一款在标題螢幕前崩潰的遊戲,但奇怪的是,隻有當玩家在故事中以某種方式前進時才會崩潰。 當着色器編譯由于多種原因發生時,紋理 ID 可能無效,是以通過 在通路描述符之前檢查這種情況 ,我們可以避免與此相關的任何未映射的記憶體崩潰。

Switch模拟器Ryujinx進步報告2022-6月

Shader Cache 2.0 在很大程度上提高了許多臭名昭著的遊戲的可玩性,但這并不意味着它沒有 一些 缺點。 由于新的着色器專業化支援,需要在每次繪制時檢查此屬性; 這聽起來很麻煩,雖然總體上它并不像最初看起來那麼糟糕,但在包括超級馬裡奧奧德賽和 異度之刃:決定版 在内的多款遊戲中都有與之相關的性能打擊。 riperiperi 自己承擔了 優化紋理綁定和着色器專業化檢查 。

Switch模拟器Ryujinx進步報告2022-6月

超級馬裡奧:奧德賽 和 異度之刃:決定版 的性能恢複到了新的緩存水準,而 塞爾達:荒野之息 的性能受到其它因素的限制,是以幾乎相同,但 FIFO 有相當大的下降,這表明模拟的 GPU 負載較少。 一旦遊戲體驗的其它瓶頸被轉移,這應該會在未來看到不錯的回報。 随意檢查任何在新緩存後感覺變慢的遊戲,希望它們恢複正常或至少關閉!

沒有什麼是免費的,它的代價是在幾個小時内破壞分辨率縮放,然後 更新新的紋理綁定方法以考慮縮放 ,并且像 女仆向右跑 這樣的某些标題需要 考慮完整的池變化緩存。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

CPU/核心:

本月我們的 CPU 部分從一些 CS:101 開始。 對于不熟悉資料類型,更具體地說,如何 數字 的人,有很多方法可以做到這一點:整數、短、長、浮點等。以前 Ryujinx 使用 無符号 (必須為正) 短 來存儲操作數用途計數,最多占用數字 65535。如果您嘗試存儲一個高于此的值,您将得到所謂的“整數溢出”,所有内容将再次回到 0! 像這樣限制自己主要隻是最佳實踐,因為存儲更高值的資料類型通常在記憶體方面成本更高。 不幸的是,有些遊戲确實需要這些額外的資料,是以 類型被切換為一個 無符号整數 ,它的上限是一個相當荒謬的數字 2147483647,是以幾乎沒有機會需要更高的資料!

太閣立志傳V DX 現在是遊戲中的首領,也可能是其它遊戲中的首領(Switch 有這麼多的 gaammmmesss!)。

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

停止模拟目前有點像玩俄羅斯輪盤賭,但需要使用任務管理器。 問題是問題的原因不是單一的,而且随着遊戲變得越來越複雜并且正在做不同的事情,許多最近的版本将在關閉時陷入假死。 隔離并解決了兩個這樣的問題 本月在 CPU/Kernel 空間 當調用“TerminateProcess”函數時,它将嘗試殺死所有正在運作的線程。 這裡的問題是 TerminateProcess 本身是在它自己的線程上觸發的。 有沒有人發現這個問題? 這個錯誤阻止了調用 TerminateProcess 的線程被取消排程,并在無限循環中将自身死鎖。

gdkchan 的大型記憶體别名更改的回歸修複将 通過幾個月前導緻 Windows 上的記憶體崩潰 在運作另一個遊戲後嘗試使用或切換遊戲時,這些可能最常觸發的。 最後, 整個核心記憶體配置設定器都被重寫 了,對我們的貢獻者和維護者來說更簡潔、更易讀。 這裡沒有預期的錯誤修複或性能改進,但與往常一樣,現在可能會有一些 5 美元的 JRPG 啟動。 記住孩子,編寫幹淨的代碼!

服務:

暗黑破壞神II:複活是一個奇怪的流行标題,自最近的網絡大修以來一直處于不确定狀态。 在這些更改之後,遊戲将在啟動時崩潰,因為較新的方法在同一線程上處理所有讀取和寫入調用,如果同時需要這些調用,則會導緻死鎖。 通過 允許服務将其線程數增加到 2 ,遊戲将再次持續啟動。

Switch模拟器Ryujinx進步報告2022-6月

然而,這個修複并不是防止其它問題所需要的全部。 由于允許程序是多線程的,是以您需要處理一個線程正在處理而另一個線程試圖響應的情況。 這個确切的問題導緻其它使用套接字服務的遊戲,如精靈寶可夢 劍/盾,在啟動時崩潰。 這裡的解決方案是 從這些請求中傳回單線程方法 ,但添加一個标志來防止導緻暗黑破壞神死鎖的阻塞問題。 将來,回到多線程方法将是處理這個問題的更準确的方法,但是為了讓所有東西都能很好地運作,所需的更改将是巨大且耗時的。 目前這個解決方案可以滿足所有遊戲的需求!

系統時間服務中的“TimeZoneRule”本月受到了一些喜愛,因為它在代碼庫中的使用非常不理想,并且需要在使用它的任何地方使用副本。 通過使這個“blittable” (給它一個通用的表示,不需要在托管和非托管代碼之間進行特殊處理),它可以在少數情況下減少 JIT 開銷,并潛在地提升任何可能成為性能瓶頸的領域。 随後修複了 小錯誤 并修複了 時區 在 UI 上的顯示方式。

雜項:

每個人最喜歡的速射變化部分!

所有 XAML 檔案 都已格式化 ,元素現在應該保持一緻和對齊。

終于添加了簡體中文翻譯 Avalonia 項目

上個月, 該項目的建構腳本終于切換到專門針對 Windows 10。

Vulkan進展:

正如之前的報道中所說,Vulkan 本身的工作已經基本完成,如果您是 NVIDIA GPU 的驕傲擁有者,那将是一次非常棒的體驗! 但是,正如偏移量所述,實施 Vulkan 後端的主要目标之一是確定它(在某種程度上)與 AMD 和 Intel 的顯示卡和驅動程式都能很好地相容。 這不是一項小任務,并且試圖修複某些偶爾僅限于某一代顯示卡的錯誤,特别是當所有開發人員他們自己并不擁有某一帶顯示卡時,在這方面取得進展至少很難說。 具有諷刺意味的是,實際上應該是英特爾在這裡還不錯,因為雖然存在一些錯誤,但它們在架構中往往是一緻的,與 AMD 似乎能夠召喚它們的頻率相去甚遠。

但…。 在我将自己卷入另一個 AMD 仇恨憤怒之前,讓我們看看一些已經為你們 AMD 人追蹤和修複的東西!

Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月
Switch模拟器Ryujinx進步報告2022-6月

最後三個問題都是 Polaris架構 獨有的(任何 RX 400/RX 500 及以下),這真是讓人頭疼。 事實證明,當使用 'VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT' 标志時,這些卡完全破壞了帶有 mipmap 的 2D 陣列紋理。 通過強制複制而不使用此功能,可以以稍微緩慢的立方體貼圖建立為代價來解決該問題。 性能影響并不顯着,并且在大多數測試遊戲中應該相對不明顯。 謝謝,AMD!

當然,Team Red™ 擁有大約 2 萬個其它錯誤,但我們希望能夠接近尾聲。

結束語:

2022年上半年已經過去,很快就離我們而去,但下半年肯定有一些殺手級遊戲釋出! 一個新的 異度之刃3、尼爾、女神異聞錄、一個新的 索尼克 遊戲和另一個精靈寶可夢。 應該是幾個月的動作,是嗎? 再次感謝我們所有的貢獻者多年來讓我們繼續前進! 多虧了你們,我們才有希望在第一天看到上述所有工作。

和往常一樣,這是報告的HR招聘時間! 如果您了解一些 C#、.NET、3D 圖形或低級工程,您也可以幫助今年盡可能順利和修複錯誤。 如果這對您來說都是魔法,那麼捐贈給我們的 patreon 或積極參與測試和錯誤報告确實會幫助很多人。

大家下期見!