2019年5月15日 星期三

SFC模擬器-漢化遊戲亂碼問題

SFC鼎盛的時期正是日式RPG海噴的那個年代
許多膾炙人口的JRPG皆來自於當年
後來網路資源豐富加速了人們交流的腳步
於是在對岸就有許多漢化組以無償的形式漢化了許多當年的經典JRPG
讓我們可以藉由模擬器還原當年的感動!

不過也有個奇怪的現象
就是當年能夠順利運行諸多漢化Rom的模擬器
在版本的更新之後反而不能正常或正確模擬出漢化後的內文,導致出現亂碼....
這是個讓人不解的情況
因為常理來說,模擬器不應該是越來越完善嗎?
再爬文之後才發現...其實這真的是有原因的.....

若照正常的SFC程式設計來說....
對於漢化後的遊戲,其記憶體所能夠並呈現的文本量是遠遠不夠的!
所以漢化版採用了一項特別的技術「強刷顯存」來支援更多的漢字顯示
雖然SFC硬體本身不支援這種操作
但早期的模擬器們並沒有加入相關限制
全力模擬每一行程式碼的所呈現效果
(大概是出於運行效率的考慮吧?畢竟發行版本的遊戲不太可能加入這種本應無效的操作)
所以早期模擬器也就能夠順利運行各式各樣的漢化Rom
不過隨著電腦性能的提升和SFC模擬水準的進步
精確的再現實體機性能成為了各大SFC模擬器的最終目標
於是這項硬體本身不允許的操作理所當然的被過濾掉了....
這也就是造成我們所看到的亂碼問題最大原因!

時至今日,幾乎所有還在維護的SFC模擬器都引入了這個限制
所幸有些模擬器已經提供了高級選項「 BlockInvalidVRAMAccess」
可以手動關閉這個過濾的選項
因此使用上需要留意一下。

Snex9x 的情況

  1. 在選項中找到[設置]-[系統]
  2. 找到[限制無效的VRAM進程]並將之切換到[關閉]

  1. 以記事本打開snes9x.conf 或 snes9x.cfg
  2. 找出[Settings]
    BlockInvalidVRAMAccess並改成BlockInvalidVRAMAccess=FALSE
  3. 存檔後重啟模擬器即可
RetroArch的情況
  1. 載入該遊戲後呼叫RetroArch選單
  2. 進入[核心選項] > [Emulation Hacks] > [Block Invalid VRAM Access]
  3. 將[Block Invalid VRAM Access]關閉
  4. 返回上一層選單,並進入[管理核心選項](Overrides)
  5. 選擇[儲存為遊戲核心選項保存遊戲複寫],意思是針對這個遊戲保存此項設定
  6. 退出RetroArch模擬器後重啟即可(如果有開啟自動讀取隨時記錄的話,請於載入遊戲後再重開遊戲即可。)


11 則留言:

  1. 謝謝你 Snes9X參照你的方式順利解決!!!

    回覆刪除
  2. 最近也發生這個問題火紋的漢化一直出問題,~~~感謝你,解決我的疑問,想說復古掌機都沒有的問題怎麼新的I7電腦會發生,太棒了

    回覆刪除
  3. 同上我後來又買了一台安卓掌機,也是出現亂碼,也是找到你的方法解決~全網最清楚的解說,RP3+安裝天馬出現的,謝謝你

    回覆刪除
  4. 我一直找不到Block Invalid VRAM Access在RetroArch的哪邊可以貼個圖片給我看嗎

    回覆刪除
    回覆
    1. RetroArch的部分,我已根據最新的版本進行更正,你再看看應該是能夠找到。

      刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 謝謝您的教學.太實用了.特別的感恩!!

    回覆刪除