[心得] AprNes CRT 電視模擬功能介紹置底

看板Emulator (模擬器)作者 (.)時間4周前 (2026/03/21 17:22), 6天前編輯推噓5(509)
留言14則, 6人參與, 2周前最新討論串1/1
4/12 ◆ 這次更新了什麼 之前的 AprNes 已通過 AccuracyCoin (Commit 62ed684) 136/136 以及 blargg 174/174 測試,當時以為精度已經夠好了。 結果跑 scanline-a1 和 colorwin_ntsc 等測試 ROM 才發現 PPU 渲染還是有明顯瑕疵,根因是 timing 顆粒度不夠精確。 ◆ TriCNES 時序架構移植 最終決定移植 TriCNES 的 timing 架構來提升精度。 TriCNES 是一款非常優秀的 NES 模擬器,偏向作者個人興趣下的 學術研究,以及追求 TAS 執行過程的極致正確性,設計方向一直 在朝真實電路級行為邁進,令人印象深刻。 ● 第一次移植:改善 PPU 測試 ROM 移植前 AprNes 的 AccuracyCoin (Commit 62ed684) 就已經 136/136。 第一次移植主要是修 scanline-a1、colorwin_ntsc 等畫面瑕疵, 同時 blargg 從 174 增加到 184 項全過(含 10 個 PAL APU 測試)。 ● AccuracyCoin 新版的衝擊 AccuracyCoin 更新到新版 (Commit 03385dd),測試從 136 增到 138 項。 之前版本直接被打掉 10 項,成績掉到 128/138。 ● 第二次移植:應對新版 AccuracyCoin 重新移植 timing 架構,成績回到 135/138,修復後達 137/138。 但 $2007 Stress Test 怎麼都過不了,行為層級模擬碰到極限。 最後從 TriCNES 更新版移植了 SR Latch Pipeline 設計 —— 用 5 階段 NOR gate 鏈模擬 $2007 讀寫的時序管線, 基於真實電路描述 (RTL) 的設計理念,相當令人驚嘆。 只選擇性移植了解決最後一個測試所需的部分,最終達成: ★ blargg 184/184 全數通過 ★ AccuracyCoin (Commit 03385dd) 138/138 滿分 ◆ 效能影響 移植後效能受到相當大的衝擊。電路級時序模擬(SR Latch 每個 PPU dot 都要推進、Master Clock 驅動的子週期排程等)運算成本 不可忽視。 傳統的 Catchup 加速技巧在這架構下極難實現,因為: - NMI/IRQ 精確到 Master Clock 層級 - SR Latch pipeline 每個 dot 都必須推進 - APU GET/PUT 半周期交替影響 DMC DMA 時序 - 新版 AccuracyCoin 直接驗證這些微觀行為 已完成的安全優化:位元管線化 SR latch、SWAR 64-bit 批次操作、 managed array 消除、方法 inline、Mode 0 音效取樣 catchup。 相信還有優化空間,需要更多時間。 以現代 CPU 效能來說,基礎模式可以流暢運行,但 AprNes 另外 加了不少影音 DSP 鏈(NTSC 類比模擬、CRT 效果、音效後處理), 開啟類比模式(特別是 Ultra Analog + CRT)處理性能可能吃力。 ◆ Benchmark 工具 附帶三個效能測試批次檔: benchmark_baseline.bat 基準測試。純數位模式(1x、無濾鏡),測量核心純粹效能。 benchmark_full.bat 完整管線。NTSC + 音效 Mode 2 + Analog + Ultra + CRT, 2x/4x/6x/8x 四種解析度分別測試。 benchmark_analog_full.bat 極限壓力。8x 解析度、Ultra Analog、RF 輸出、CRT、 音效 DSP Mode 2,測試硬體極限承受能力。 ◆ 定位與建議 AprNes 偏向概念驗證與個人興趣,不是以大眾需求為最終方向。 如果你在意 Mapper 數量、介面完善度、除錯器等附帶功能, 目前最好的選擇仍然是 Mesen2。 不計代價把模擬正確性推到極致,比較偏向研究或個人挑戰。 如果之前版本用起來比較流暢,也喜歡它的音效畫面處理效果, 電腦效能不夠跑新版的話,沒必要更新。 ◆ 未來發展 - 持續優化,不犧牲精度 - 增加中文常用 Mapper - 最終以 .NET 10 版本發佈(類比/CRT 可能用 GPU 加速) - 轉向研究 Visual6502,設計讓 Gate-level Netlist 模擬 能 real-time 跑遊戲的方案 —— 這才是我真正想做的東西 ◆ 授權 WTFPL 授權,不保留任何著作權。任何設計歡迎自由使用、改善、 移植到你的專案。 程式本身借助 AI 協助實現,我真正的產出只有設計概念本身。 如果有人欣賞這個概念,歡迎完善。特別是影音 DSP 鏈可能 還有學術理論上的錯誤需要修正。 3/30 很多拉哩拉雜的更新 介面也大幅更新 搞到快像別的軟體 不過重點更新大概是下面這東西 AudioPlus的處理 https://tinyurl.com/yswxt6bw 已經盡可能改善效能 可以再用全螢幕試試看跑ultra類比 在我的電腦ok了 如果還是會降fps 可能得之後等我新的獨立專案 改用.net 10版本甚至搭配gpu版本試試看了 https://baxermux.org/myemu/AprNes/index.html 官網下載解壓縮後 會有一些readme文件 有詳細介紹更新項目 3/23 全螢幕試用版 https://tinyurl.com/hs8w7ek7 程式開啟可以在遊戲畫面上按滑鼠右鍵 呼叫出功能選單 有一個 畫面模式 可以選全螢幕 基本上 在我電腦4K已經可以順跑 不過是左右留黑邊維持正常比例的做法 加上在WINDOWS上要*一個縮放比例 所以輸出解析度計算負荷其實在能夠負荷的範圍 之後也來看看 一些其他FILTER效果差異 目前有收到一些國外網友回饋 在學理上有部分說法有問題 畢竟ai輔助coding 也可能會訓練到錯誤規格資訊 目前是希望盡可能朝向效果有依據 有論述的方向走 而不是感覺對感覺爽就好 所以後續應該陸續會修正一些處理方式 至於一般人 非開發者 原則只有一個 相信你自己的感覺 哪個呈現方式讓最符合你印象中的童年 自己開心就好 理論.對錯等等 那都是其次 只是我個人偏好而已 可以試試看全螢幕RF 那個真的很有味 3/22更新 用一堆parallel for和SIMD優化 至少在我電腦 類比模擬功能全開 8X下 可以到60FPS了 但性能弱的 可能4X就好 下載後 啟動程式 設定那邊 類比設定 相關選項都勾一勾 視訊端子選RF最古早味 建議先切類比解析度4X跑看看 需要再改6X 8X 跑超級瑪利歐3 真的超有FU 嫌口味太重可以改S或是AV端子 然後其實隨著電視顯示進步 不一定都爛到那樣 所以進階設定那邊可以改 反正看個人喜好 https://baxermux.org/myemu/AprNes 0322版本 PS.我會建議離螢幕遠一點的距離 就真的很接近CRT了 也可以跟其他模擬器比較看看 那些高運算不是沒道理的 多虧現在在2026年 跑NES模擬效能過剩 才可以這樣搞 古早時代 別說跑這種效果 連master clock都是根本不可能的事情 另外這是ai輔助coding 省了我很大力氣 但說真的 絕對不是啥 嘿..兄弟 幫我寫個模擬器 東西就能生出來.... 中間過程還是有很多技術性的細節要引導要測試 要避免幻覺等等 github https://github.com/erspicu/AprNes/tree/master/MD 目錄裡有紀錄不少過程 另外.NETFRAMEWORK的東西有JIT 第一次開啟跑可能會lag跑一陣子關閉 再重開後效能會正常很多 裡面有很詳細的介紹 https://tinyurl.com/574rehzv 也有提到跟 Blargg 的 nes_ntsc 函式庫的差異性 我的版本比較偏向實驗性質 驗證物理與訊號處理的完整性 搞到現在有效能議題還在調整優化 4X我這邊還OK 6X 8X GG掉了 照理來說應該要調用gpu上場了 但想盡量簡單 盡可能靠基本的CPU和SIMD去解決 看能校調到什麼程度 晚點再打包發佈 PS.除非是7年級生前段班 不然知道RF輸入的人應該不多了 我這邊實作有實作到聲音訊號對畫面的干擾 看起來真的很有味道 因為RF是把音訊一起參入訊號內 解調會有影響 如果音量大啥的 畫面會有波動 不過RF這東西在我比較小時後才有體驗 後來NES好像最少都是AV端子了 至於SVIDEO輸出應該是NES時代末段的新機型才有 用過的人也不多 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.233.248.16 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Emulator/M.1774084976.A.9BD.html ※ 編輯: erspicu (182.233.248.16 臺灣), 03/21/2026 17:28:17 ※ 編輯: erspicu (182.233.248.16 臺灣), 03/21/2026 17:31:19

03/21 18:55, 4周前 , 1F
舊遊戲當初就是CRT時期 腦補畫面看起來就是那熟悉風味
03/21 18:55, 1F

03/21 20:18, 4周前 , 2F
推推
03/21 20:18, 2F
※ 編輯: erspicu (182.233.248.16 臺灣), 03/22/2026 01:46:45

03/22 09:15, 4周前 , 3F
如果你是在台灣的話是玩FC 不是NES
03/22 09:15, 3F

03/22 09:21, 4周前 , 4F
S端子一直被用到GC/PS2時代 不會用過的人不多吧
03/22 09:21, 4F

03/22 09:22, 4周前 , 5F
而且是NES有AV FC沒有AV 盜版FC才有AV
03/22 09:22, 5F
對 台灣小時候買到的 很多都是盜版的 但那時候我也分不清楚 沒意識到這件事情 然後以前我聽FC的簡稱比較順耳 畢竟台灣是玩日版的紅白機 但模擬器程式.社群 老外習慣用NES簡稱 所以當初對專案名稱也有猶豫 最後西瓜靠大邊 決定用NES命名 後來就習慣了 老外都在那邊NES來NES去的 反來是FC這日版主機的說法 相對稍微弱勢一點了 個人感受 不是客觀統計 PS.個人有過聽到NES這種說法會不舒服的階段 到後來習慣甚至取代 ※ 編輯: erspicu (182.233.248.16 臺灣), 03/22/2026 10:52:02

03/22 15:54, 4周前 , 6F
建議增加預設值按鍵,還有全螢幕選項
03/22 15:54, 6F

03/22 16:17, 4周前 , 7F
steam有一個免費的復古濾鏡ShaderGlass,也可以玩玩看
03/22 16:17, 7F
3/23更新 ※ 編輯: erspicu (182.233.248.16 臺灣), 03/23/2026 23:13:43 ※ 編輯: erspicu (182.233.248.16 臺灣), 03/23/2026 23:17:15

03/24 08:21, 3周前 , 8F
雖然我不會程式真的看不懂,但還是要推!
03/24 08:21, 8F

03/24 13:24, 3周前 , 9F
我覺得色彩的部份也可以模擬一個色彩decoder 像現在流通
03/24 13:24, 9F

03/24 13:24, 3周前 , 10F
的Sony cxa 2025as us調色盤 其實就是用nes模擬器segali
03/24 13:24, 10F

03/24 13:24, 3周前 , 11F
根據公開的Sony cxa2025as datasheet資料 內建的decoder
03/24 13:24, 11F

03/24 13:24, 3周前 , 12F
profile 算出來的顏色
03/24 13:24, 12F

03/24 21:02, 3周前 , 13F
CRT在全螢幕有框線,全螢幕會降FPS,xbrz效果能取消嗎?
03/24 21:02, 13F
一些雜七雜八的問題 我假日再彙整發佈好了 ※ 編輯: erspicu (182.233.248.16 臺灣), 03/26/2026 00:56:54 再用新版試試看 沒辦法的化 就暫時先沒辦法了 以後等新專案 ※ 編輯: erspicu (182.233.248.16 臺灣), 03/30/2026 01:47:18

03/31 16:16, 2周前 , 14F
只要有選到CRT或NTSC+CRT就會卡,也可能是我CPU太老舊
03/31 16:16, 14F
※ 編輯: erspicu (182.233.248.16 臺灣), 04/12/2026 23:06:51 ※ 編輯: erspicu (182.233.248.16 臺灣), 04/12/2026 23:07:54
文章代碼(AID): #1flcDmcz (Emulator)
文章代碼(AID): #1flcDmcz (Emulator)