本帖最後由 good7 於 2026-6-24 13:44 編輯
2026/06/24 更新
這次更新再修復網路對戰一些問題,應該不會再偶爾有錯誤出現了。
新增一個功能:程式睡眠。
這個功能就是啟用後,你關閉程式後,下次打開時,就接著上次的遊戲狀態,就跟你關閉前的狀態一致,不過,有網路連線對戰時,
不會記錄這個。
就跟windows 作業系統的「休眠」類似,想玩就玩,想關掉就關掉,下次接著玩。
另外,我再加上 reshade 的著色器插件效果,按 home 鍵可叫出設定選單出來,
下面就是著名的 Crt-royale 效果。
註:發帖完才發現,啟用程式睡眠功能,目前跟 reshade 衝突到,要先刪除掉 reshade 的相關檔案,不然設定不會記憶它。
下載:
https://u.pcloud.link/publink/sh ... nLxX1TOq00WLSUhKVq7
2026/06/21 更新
這次更新網路對戰的 netplay 部份,原來在測試到這裡的時候,發現連線有問題,所以修了一下,
先丟上來,讓想測試的人也試看看,我只有一台電腦,也不能測出什麼,硬碟空間也沒有了,虛擬機也裝不下,
所以只能借助各位大大有時間的可以來測一下了,先謝謝了。
在這裡增加這個選項,客戶端按下去就可以連線了(限定在區域網路下面。),如圖,紅框處。
下載:
super-snes9x-16323_beta2.7z.rar
(3.57 MB, 下載次數: 15)
同一電腦可以開兩個程式,一個伺服器端、一個客戶端來連線,當然最好的是,有兩台不同的電腦測試最好的了。
以下,是一台伺服器,開 3 個客戶端,同一台電腦,理論上,區域網路的話應該都能連得到,我總共測 4 台連伺服器在內。
這個檔案是從 github 下載來重新編譯的,已經翻譯成並內建「繁體、簡體、英文」三種了。
https://github.com/shanytc/snes9x/releases
這個分支專案也是很新的,好像是程式員與克萊德ai共同協作開發出來的。
不多說了,這版的中文化還是測試版,不過,基本上已經98%都翻譯好了,有些是受限的因素,所以保留它,比如遊戲畫面中的訊息,
那是 ascii 編碼的,所以不能放中文了。我還想測試其它東西,並且看哪邊還有錯誤,和可不可以再最佳化一下。
有興趣的人可以玩玩,有問題可以丟上來給我,謝謝。
這個我還加了兩個功能,一個是程式進入時「自動載入上次玩的遊戲」和「倒帶時靜音」的功能。
並且也修了一些錯誤。
下載:
https://u.pcloud.link/publink/sh ... 0Xn5dUsIEGYSbnlV2tV
super-snes9x-x64-16323.7z.rar
(3.56 MB, 下載次數: 63)
畫面預讀取(Run-Ahead) 是 Snes9x 的延遲降低功能,目的是讓輸入反應更即時,特別適合需要精準操作的反應型遊戲(格鬥、動作、節奏類)。 原理(單句話)每幀渲染時,先往前預模擬 N 幀並丟棄結果,只用它產生的輸入狀態立即渲染當前幀,等同把輸入延遲從一幀壓到接近零。
為什麼會有延遲
模擬器正常流程是:
[取輸入A] → [模擬1幀] → [畫面輸出]
↑ │
└───── 玩家看到畫面 ──────┘
玩家看到畫面後才按鍵 → 輸入延遲約 1 幀(NTSC 約 16.7 ms,PAL 約 20 ms)。
預讀取的解法
[取輸入B] → [模擬N幀+渲染] → [畫面輸出]
↑ │
└───── 玩家看到畫面 ─────┘
執行時實際做: - 讀取玩家最新輸入
- 把遊戲狀態回捲到上一幀
- 用新輸入重模擬 N 幀
- 只渲染最後一幀到螢幕
對玩家而言:看到畫面 → 按鍵 → 下一幀就反映輸入,沒有 1 幀延遲。
程式碼中的對應- 選單:ID_EMULATION_RUNAHEAD_OFF/1/2/3/4(langutil.cpp:160-164)控制 N 值(0/1/2/3/4 幀)
- i18n 字串:STR_MENU_EMULATION_RUNAHEAD_*
- 翻譯版翻為「Run &Ahead」(「預讀取」/「預先模擬」)
效能代價- CPU 負擔 ×N+1 倍:每顯示 1 幀實際跑 N+1 次模擬
- 不影響遊戲邏輯:丟棄的預模擬幀不寫入存檔、不影響電影重播
- 對慢電腦吃力:CRT 螢幕時代 16.7 ms 不敏感,現代高刷新率螢幕才明顯
適用情境[td]適合 | 不適合 | 格鬥遊戲(出招反應) | 慢速策略遊戲 | 動作平台(精準跳躍) | 效能吃緊的電腦 | 節奏遊戲 | 想要完全還原主機時序的模擬純化派 | 高刷新率螢幕玩家 | 60 Hz 螢幕下差異較小 |
與 netplay 的關係
預讀取不能用於網路對戰——它模擬的幀沒經過網路同步,會破壞 lockstep。Snes9x 會在 netplay 啟用時自動停用。
補註:但是倒帶記憶體的使用量會變多,看使用幾幀預讀取,就乘以倒帶所吃的記憶體(就是多n幀的倍數的意思。) 就是開啟預讀取,使用倒帶功能的記憶體增加的使用量。
|