[新聞] Ymir v0.1.8
Ymir v0.1.8
以下是機翻潤飾
這次的發佈著重於錯誤修復,同時也加入了一些提升使用者體驗的功能、偵錯工具以及一
些雖小但很實用的全方位改進。本版本沒有重大的新功能或改良。
多虧了 @tordona 和 @bsdcode 的貢獻,官方的 ARM 版 Windows 和 FreeBSD 版本已經
發佈。您可以在本發佈中找到 Windows 版本,而 FreeBSD 版本則可在 ports 套件集合
中取得。
這很可能是 0.1.x 系列的最後一個版本,因為我計劃在下一個版本(將命名為 0.2.0)
中重寫 CD Block 和 SMPC 模擬。這些元件一直是 Ymir 模擬精準度的致命弱點,導致了
許多難以調查和解決的疑難問題。因此,預計下一個版本的發佈時間會更長,或者內容會
比最近的幾個版本更少。此外,這些元件的重大變更,有可能會破壞與 0.1.x 版本的存
檔狀態相容性,儘管機率不大。我會盡力避免這種情況,但必要時,精準度和相容性會優
先於便利性。
我們從最顯而易見的難題開始:CD Block 和 SMPC,這兩者現在都有由 @celeriyacon 製
作的測試 ROM。這兩個元件展現了 Ymir 模擬器最嚴重的問題——每個 SMPC 測試都失敗
了,而在兩個可用的 CD Block 測試中,它也只勉強通過一個。我試圖修復這些元件以通
過測試,但結果卻導致相容性惡化,因此為了相容性考量,它們將暫時維持失敗的狀態。
這兩者導致了大量的遊戲凍結、當機、無法啟動以及類似問題,需要進行重大的重製才能
修復。因此,我決定在這個版本中將重點轉向更容易解決的問題,並將這些元件維持在勉
強可用的狀態,直到下一個版本。
這些並非完全沒有修復,儘管如此。測試 ROM 有助於解決 CD Block 模擬的一些小問題
,足以讓《電腦戰機》在贏得一場戰鬥後不會立即當機(儘管它仍然不完全穩定),而
SMPC 測試也幫助修復了《碟形世界》(Discworld)日本和歐洲版本中的輸入問題。此外
,CHD 載入器也獲得足夠的修復,讓我測試的每一個(Last Bronx)遊戲檔案都能正常啟
動,而 CUE 解析器也被重寫,修復了數十個音訊軌道錯位和載入帶有 Unicode 字元檔案
的問題。現在應用程式在任何地方都支援 UTF-8 字元,儘管字型還無法完全正確顯示所
有字元(特別是日文文字)。
內部遊戲資料庫已升級,可以偵測出那些受益(但非必需)於備份記憶卡(Backup RAM
cartridge)的遊戲。Ymir 將會自動為以下遊戲插入記憶卡:
《Dezaemon 2》:儲存遊戲時需要
《Sega Ages - Galaxy Force II》:儲存回放時需要
這些記憶卡將會根據遊戲名稱擁有獨特的名稱,並儲存到
<profile>/backup/games/bup-ext-<title> [<code>].bin
多虧了 @celeriyacon 的新版 SH-2 測試 ROM,SH-2 也獲得了幾個針對邊緣情況的小修
復。
SCU 只有兩個修復,其中一個修復影響了《夢幻之星 4》在 Sega Ages 合輯中無法正常
載入其圖形的問題。說到遊戲,這次的 SCSP 修復比往常更多,這也幫助提高了與《夢幻
之星》合輯中所有遊戲的相容性。現在所有這些遊戲都可以正常遊玩,儘管目前還沒有人
在 Ymir 上將它們玩到通關。這些 SCSP 修復也解決了許多問題,例如:原聲帶只在一個
聲道播放、多個遊戲中缺少音效、刺耳的靜電雜音等。值得注意的是,CroNSF 現在也能
正常播放歌曲了!
在最後,我們來談談圖形部分。就像之前的發行版一樣,這次也修復了大量的 VDP1 和
VDP2 錯誤,但與以往不同的是,Ymir 的 VDP1 渲染器在 Lordus(以 DraStic 聞名)的
幫助下,升級到了像素級完美(pixel-perfect)的程度。
新的渲染器進行了多項最佳化與升級,其中包括:
VBlank 擦除過程的精確計數: 解決了《飛龍騎士》動畫中的字幕閃爍問題(不知為何也
修復了《瘋狂大射擊》中的遊戲卡頓)。
重做的擦除和交換時序: 修復了許多圖形閃爍或消失的狀況。
基於粗略估計的指令計數方法: 解決了《Baroque》動畫中明顯的運行速度變慢問題。
在 0.1.7 版本中,為修復《洛克人 X3》精靈圖而引入的 VDP1 補丁已經被還原,因為它
在許多其他遊戲中造成了問題。這意味著《洛克人 X3》的精靈圖再次出現顯示錯誤,但
好處是至少有九款其他遊戲不再有閃爍或缺失的精靈圖了。
至於 VDP2,由於 @celeriyacon 的又一個測試 ROM,影片訊號時序變得更加精確和改善
了。過去 Ymir 使用的近似值並未完全達到精確的 NTSC 和 PAL 影格率。現在,這兩種
模式都精確鎖定在 59.97 和 50 Hz,並具有非常精準的 VBlank 和 HBlank 時序以及
VCNT 序列。專屬監視器模式(似乎沒有遊戲使用)目前也能部分運作。
此外,RBG 渲染準確性的修復解決了《閃亮銀槍》第 2C 關卡中一個長期存在的問題。
使用者介面改良
Ymir 現在在無法載入磁碟映像檔時會提供稍微更有用的錯誤訊息,這有助於找出問題所
在,例如 .bin 檔案遺失、.cue 檔案中的語法錯誤、.chd 損壞或任何類似問題。同樣關
於錯誤,如果應用程式因某些原因啟動失敗(例如無法初始化音訊或視訊子系統),它會
顯示一個訊息方塊,其中包含一個簡短的問題描述,這比應用程式完全不啟動並讓所有人
(包括我)感到困惑要好得多。此外,macOS 現在擁有一個針對嚴重問題的全域異常處理
器,類似於在 0.1.7 版本中為 Windows 和 Linux 所提供的。
該應用程式現在能夠載入 SDL 遊戲控制器資料庫,並在套件中包含了一個來自社群的資
料庫,這有助於提高與各種控制器的相容性。
在 Windows 11 上,視窗的邊角現在是方形而非圓角。
當您嘗試載入需要 ROM 卡匣的遊戲(如《超人力霸王:光之巨人傳說》及《格鬥天王 '
95》),但其影像檔並不在 <profile>/roms/cart 資料夾中時,將會顯示一個錯誤方塊
。
新增功能與改進
應用程式
- 在 Windows 11 上禁用圓角視窗
- 為 macOS 實作異常處理程式
- 若應用程式初始化失敗,會向使用者提供回饋
- 若使用者缺少遊戲所需的 ROM 卡匣映像檔,會顯示警告對話方塊
備份記憶體
變更了每個遊戲內部備份記憶體檔案的命名方式,從bup-int-[<game code>] <title>.
bin改為bup-int-<title> [<game code>].bin,以便在檔案瀏覽器中按字母順序排列檔案
。 現有檔案會在載入時自動重新命名
建置
- 支援 ARM64 Windows
- 支援 ARM64 系統的 FreeBSD
卡匣
- 對於推薦使用備份記憶體卡匣的遊戲,例如《Dezaemon 2》和《Sega Ages - Galaxy
Force II》,會自動插入備份記憶體卡匣
- 在內部遊戲資料庫中,新增《Vampire Savior - The Lord of Vampire》試玩版為需要
DRAM 卡匣的遊戲。
CD 區塊
- 允許查詢特定幀位址的檔案,並在「系統狀態」視窗中顯示正在讀取的檔案
除錯
- 允許將除錯輸出匯出為檔案
- 將除錯埠寫入移至回呼函式,並從 SCU 追蹤器中移除。 如此一來,除錯追蹤就不需要
使用 Mednafen 的除錯輸出方法
除錯器
- 實作 SH-2 觀察點
輸入
- 新增支援載入外部遊戲控制器資料庫,並在建置中包含一個來自社群的資料庫
- 新增一個用於結束應用程式的快捷鍵,需要組合鍵才能觸發: 至少一個修飾鍵(Ctrl
、Alt、Shift、Option 等)和另一個按鍵(例如 Ctrl+Shift+Q)。
媒體
- 快取 CHD 塊以提升效能,但會增加 RAM 使用量
- 當嘗試載入損壞、毀損或截斷的光碟映像檔時,會提供基本錯誤回饋
SCSP
- 為所有插槽暫存器和部分狀態新增基本除錯器檢視
- 最終輸出示波器檢視
VDP1
- 透過跳過完全超出系統剪裁區域的線條來最佳化線條繪製
- 透過將更新限制在系統剪裁區域來最佳化網格多邊形
- 簡化網格渲染程式碼以略微提升效能
- 各種效能微觀最佳化
VDP2
為 NBG0-3 和 RBG0-1 參數新增基本除錯器檢視
修正項目
- App:全域設定 en-US UTF-8 語言環境。
修正在其名稱中包含 Unicode 字元的檔案,CHD 載入器無法載入的問題
- CD Block(CD 區塊):防止在未啟動磁軌的情況下,
嘗試設定子程式碼傳輸時程式當機。
- CD Block(CD 區塊):軟重設修正
- CD Block(CD 區塊):使用 CD Block 的時鐘比例,而非 SCSP 的,
來進行磁碟機狀態更新事件。
- CD Block(CD 區塊):多種狀態轉換及播放細節修正
- CD Block(CD 區塊):多種 Put/Get/Delete Sector Data
(放置/取得/刪除磁區資料)細節修正
- Input(輸入):當取消輸入綁定或控制器斷線時,重設輸入。
- Media(媒體):讀取有多個資料磁軌的 CHD 映像檔時,調整磁區偏移量。
修正部分《Last Bronx》(USA)CHD 映像檔無法啟動的問題
- Media(媒體):修正載入或儲存最近遊戲光碟清單時,處理 Unicode 字元的問題
- Media(媒體):從 CUE 表單載入映像檔時忽略絕對路徑;改為從與 CUE 表單
相同的目錄載入
- Media(媒體):正確處理引用其他包含 Unicode 字元的檔案的 UTF-8 編碼 CUE 檔案
- Media(媒體):重寫 CUE 分析器,希望能修正一些音訊跳音問題
- SCSP:允許 M68K 從 SCSP 暫存器中擷取指令。修正 CroNSF 音訊播放的問題
- SCSP:修正 KRS=0xF 時,攻擊卡住錯誤的檢查。修正多個遊戲中的問題:
*《DonPachi》標題畫面的播報員語音現在穩定播放
*《Sega Ages - I Love Mickey Mouse - ふしぎのお城大冒険 &
I Love Donald Duck - グルジア王の秘宝》這兩款遊戲現在能正確播放歌曲
*《Sega Ages: 夢幻之星 Collection》中的所有遊戲現在能正確播放歌曲
*《Arcade Gears Vol. 2 - Gun Frontier》啟動時的 "Xing" 語音線
*《夢幻模擬戰III》的角色語音線
*《聖夜物語 - The First Volume》的角色語音線
*《戰慄突擊》中片頭和遊戲中的語音線
- SCSP:當聲音記憶體 (Sound RAM) 中正在播放的樣本 EG 達到靜音閾值時,
不要在這些插槽上使用 SBCTL。
修正《守護者列傳》和《電梯大戰 2~S 致敬精選輯~》中損壞的音訊
- SCSP:當 MVOL=0 時將音訊靜音。修正《Sega Ages - Galaxy Force II》暫停時
聲音/音樂殘留的問題
- SCU:正確處理向暫存器進行 8 位元和 16 位元寫入。
修正《夢幻之星 Collection》中的《夢幻之星IV》圖形問題
- SCU:當設定為觸發 Timer 0(計時器 0)匹配 0x000 時,Timer 1(計時器 1)
從未觸發
- SH2:修正直接快取資料存取的位元組順序
- SH2:修正延遲插槽中 MOVA 偏移量的問題
- SH2:交換 MAC.W 和 MAC.L 運算元的記憶體讀取順序
- SMPC:接收到 INTBACK 中斷請求時,清除 SF(帶有延遲)。
修正《夢幻之星 Collection》在 SEGA 授權畫面後卡在黑畫面的問題。
- SMPC:修正暫存器讀取/寫入
- SMPC:最佳化的 INTBACK 旗標被反轉
- SMPC:如果在 VBlank IN 之前沒有收到繼續或中斷請求,則掛起的 INTBACK 超時。
修正兩版《Discworld》中的輸入問題
- SMPC, VDP:根據垂直解析度,在 VBlank IN 前 1 毫秒左右更一致地觸發最佳化
的 INTBACK。
- System(系統):軟重設系統時,重設時脈速度
- VDP1:清除透明網格層時,將其設為 0,而非清除寫入值。修正當使用透明網格增強
功能時,《雷射超人》關卡載入畫面的渲染亮度減半的問題
- VDP1:計數 VBlank 清除過程的週期。修正《飛龍騎士》FMV 中閃爍的字幕,
以及《瘋狂大射擊》和《性感瘋狂大射擊》中的卡頓問題
- VDP1:當未紋理化的多邊形啟用水平或/和垂直翻轉時,不要交換 gouraud 值。
修正《超級克拉鱷》中糟糕的陰影
- VDP1:使用 RGB 5:5:5 顏色模式時,強制將精靈字元資料位址對齊至 16 位元組。
修正《All-Star Baseball '97 Featuring Frank Thomas》中錯位的球隊標誌
- VDP1:透過在清除過程低解析度模式中避免重複寫入相同像素來提高效能。
同時修正了高解析度下的清除過程週期計數
- VDP1:增加系統剪輯渲染最佳化的填充。修正了《麻雀四姉妹 若草物語》和
《超級克拉鱷》片頭右側和底部邊緣的白色雜點
- VDP1:像素級完美渲染
- VDP1:延遲 PTM=1 繪圖開始,以避開一些遊戲因過早觸發繪圖而導致的時序問題。
修正《格鬥列傳2》片頭動畫中玻璃碎片閃爍的問題
- VDP1:原始週期計數,以解決某些嚴重濫用 VDP1 的遊戲,如《Baroque》、
《Dark Seed II》和《Funky Fantasy》
- VDP1:移除先前為《洛克人 X3》精靈引入的寫入懲罰外掛。修正多個問題:
*《政界立志伝~よい国・よい政治~》和《実戦 パチンコ必勝法! TWIN》中缺少
的精靈
*《鬼屋魔影2》、《Cleaning Kit for Sega Saturn》和《魂斗羅- Legacy of War》
中閃爍的精靈
*《Funky Fantasy》、《世界盃高爾夫:職業版》和《Magic Carpet》中閃爍的 FMV
*《Alien Trilogy》任務簡報畫面中閃爍的字母
- VDP1:重寫縮放精靈渲染,以正確處理未記錄的縮放點設定。
- VDP1:重寫清除/交換時序。修正許多問題:
*《あやかし忍伝くの一番プラス》螢幕閃爍
*《DRIFT KING 首都高バトル土屋圭市&坂東正明》試玩版中閃爍的地圖
*《Virtual Mahjong 2 - My Fair Lady》中每隔一個隔行掃描欄位遺失
- VDP2:調整 RBG 線條顏色插入的線寬。修正《World League Soccer '98》中
一半場地沒有顏色的問題
- VDP2:即使禁用了 NBG,也始終讀取線條螢幕滾動資料。
修正系統設定畫面和《深海驚魂》GUI 元素的一幀偏移
- VDP2:當精靈層旋轉時,不要繪製超出範圍的區域。
修正《Sega Ages - Power Drift》中地面在天空中的錯誤
- VDP2:不要對無法存取的 VRAM 庫中的字元使用補充資料。
修正《Darklight Conflict》中左側出現一列「A」字元
- VDP2:當顯示器處於單密度隔行掃描模式時,將垂直視窗座標加倍。
修正《Pro-Pinball: The Web》螢幕下半部缺失的問題
- VDP2:修正 CRAM 位址位元組混亂。修正《Saturn Bomberman》片頭 FMV 之前
出現意外圖形的問題
- VDP2:修正 RBG 線條顏色的 CRAM 位址計算。修正《World League Soccer '98》中
場地陰影的錯誤顏色
- VDP2:修正獨佔監視器時序和解析度大小,以及超出查找表範圍的讀取
- VDP2:修正隔行掃描模式時序
- VDP2:修正箝制視窗 X 座標時的差一錯誤。修正《英雄聖戰》中顯示對話框時
的一像素錯誤
- VDP2:修正基於調色盤的透明網格無法與 VDP2 層混合的問題
(例如在《Bulk Slash》中)
- VDP2:修正旋轉參數線條顏色資料位址計算
- VDP2:修正涉及非法垂直座標的視窗計算。修正《閃亮銀槍》第 2C 關中的背景錯誤
- VDP2:強制擷取每條掃描線的第一個字元。修正《Athlete Kings》啟動畫面中
螢幕左側的一些垃圾圖塊
- VDP2:處理只啟用 RBG1 的遊戲。修正《放課後恋愛クラブ恋のエチュード》中背景
圖形缺失的問題
- VDP2:手動處理精靈層上的精靈視窗。修正《Metal Black》擊敗第一個頭目時的
圖形效果
- VDP2:選擇線條顏色資料時遵守旋轉參數模式暫存器。修正《飛龍騎士 II Zwei》
第二關糟糕的天空,以及《Savaki》中故障的天空/天花板
- VDP2:在單密度隔行掃描模式中也反轉 TVSTAT.ODD 位元。
修正《Pro-Pinball: The Web》和《紫炎龍》中交換的隔行掃描欄位
- VDP2:將 VCNT 跳過作為專用的垂直階段實施
- VDP2:在畫格開始時鎖存 TVMD.DISP 和 TVMD.BDCLMD。修正:
* 《侍魂 斬紅郎無雙劍》載入畫面後出現的垃圾圖形
* 《あやかし忍伝くの一番プラス》和《Ninpen Manmaru》中的一幀錯誤
- VDP2:將 VCNT 更新移至 HBLANK 切換為零的左邊界水平階段
- VDP2:預先計算每點旋轉係數旗標,而不是每條掃描線匯出兩次。
- VDP2:僅在畫格開始時讀取每螢幕線條/背景顏色。
修正《あやかし忍伝くの一番プラス》SEGA 授權標誌後的紅色螢幕
- VDP2:當 RBG0/1 頁面基礎位址在畫格中間改變時,重新計算。
修正《飛天幽夢》頭目戰中損壞的地表
- VDP2:降低旋轉參數計算精度,以更接近真實系統
- VDP2:將透明網格渲染到單獨的層上,而不是立即將它們混合到精靈層上。
修正使用增強功能時《惡魔城X》中的優先順序問題
- VDP2:由於 VRAM 存取週期配置不良,重寫點陣圖延遲。
修正《Baroque Report - CD Data File》中移位的圖形
- VDP2:分別儲存 RBG 的線條顏色資料。
修正《音速小子合集》Sonic World 模式中跳上彈簧板時的天空盒問題
- VDP2:使用更準確的 NTSC/PAL 時鐘時序進行視訊同步。
消除了刷新率略低於 NTSC/PAL 畫格速率完美倍數時的卡頓
- VDP2:對滾動 RBG 使用正確的字元擷取器。修正《Battle Monsters》中的背景錯誤
https://github.com/StrikerX3/Ymir/releases/tag/v0.1.8
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.128.19 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Emulator/M.1757512338.A.F12.html
Emulator 近期熱門文章
PTT遊戲區 即時熱門文章
12
28
52
78