作者erspicu (.)
看板Emulator
标题[心得] 4/27更新 AprNesAva 新版发布 — .NET 10 / Avalonia
时间Sat Mar 21 17:22:43 2026
https://baxermux.org/myemu/AprNes/index.html
以後一些教学或是心得文会放这边
https://baxermux.org/myemu/AprNes/techbook.html
4/27
https://tinyurl.com/yh7c5anm
aprnesava 新版发布 — .NET 10 / Avalonia
全新主线版本,基於 .NET 10 + Avalonia + SkiaSharp,全面 GPU 加速 CRT pipeline
,并导入 HD_NTSC 12× Fsc 过采样。NES 模拟精度与 NetFx 版完全一致(blargg
184/184 + AccuracyCoin 138/138 双满分),但效能与画面後处理品质全面领先。
可以用看看,直接上gpu保证流畅,接下来可能会再有一两版
针对Mac OS ARM64和 Linux x64/arm的版本发布,整个实作完整後,
AprNes应该会暂停维护更新一段时间.
主要是我想来研究Visual6502
4/20
这会是 .NetFameWork 4.8.1 最後一版
经过不断优化 在我的电脑上 达成类比Ultra 6x 顺畅运作
基本上电脑cpu CPU: AMD Ryzen 7 3700X 8-Core Processor
这等级以上 应该都没问题
下一版会用.NET 10+Avalonia来发布 理论上读显或是内显
应该都可以用GPU顺畅达成 10X
目前 .NET 10+Avalonia还在调整
但发布後保证再烂电脑 只要有基本GPU功能的应该都能顺跑
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://webptt.com/cn.aspx?n=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
1F:→ BadGame: 旧游戏当初就是CRT时期 脑补画面看起来就是那熟悉风味 03/21 18:55
2F:推 a83a83cjcj: 推推 03/21 20:18
※ 编辑: erspicu (182.233.248.16 台湾), 03/22/2026 01:46:45
3F:→ msun: 如果你是在台湾的话是玩FC 不是NES 03/22 09:15
4F:→ msun: S端子一直被用到GC/PS2时代 不会用过的人不多吧 03/22 09:21
5F:→ msun: 而且是NES有AV FC没有AV 盗版FC才有AV 03/22 09:22
对 台湾小时候买到的 很多都是盗版的 但那时候我也分不清楚 没意识到这件事情
然後以前我听FC的简称比较顺耳 毕竟台湾是玩日版的红白机
但模拟器程式.社群 老外习惯用NES简称 所以当初对专案名称也有犹豫
最後西瓜靠大边 决定用NES命名 後来就习惯了 老外都在那边NES来NES去的
反来是FC这日版主机的说法 相对稍微弱势一点了 个人感受 不是客观统计
PS.个人有过听到NES这种说法会不舒服的阶段 到後来习惯甚至取代
※ 编辑: erspicu (182.233.248.16 台湾), 03/22/2026 10:52:02
6F:推 playlive: 建议增加预设值按键,还有全萤幕选项 03/22 15:54
7F:→ playlive: steam有一个免费的复古滤镜ShaderGlass,也可以玩玩看 03/22 16:17
3/23更新
※ 编辑: erspicu (182.233.248.16 台湾), 03/23/2026 23:13:43
※ 编辑: erspicu (182.233.248.16 台湾), 03/23/2026 23:17:15
8F:推 tinyfan: 虽然我不会程式真的看不懂,但还是要推! 03/24 08:21
9F:推 zack867: 我觉得色彩的部份也可以模拟一个色彩decoder 像现在流通 03/24 13:24
10F:→ zack867: 的Sony cxa 2025as us调色盘 其实就是用nes模拟器segali 03/24 13:24
11F:→ zack867: 根据公开的Sony cxa2025as datasheet资料 内建的decoder 03/24 13:24
12F:→ zack867: profile 算出来的颜色 03/24 13:24
13F:推 playlive: CRT在全萤幕有框线,全萤幕会降FPS,xbrz效果能取消吗? 03/24 21:02
一些杂七杂八的问题 我假日再汇整发布好了
※ 编辑: erspicu (182.233.248.16 台湾), 03/26/2026 00:56:54
再用新版试试看 没办法的化 就暂时先没办法了 以後等新专案
※ 编辑: erspicu (182.233.248.16 台湾), 03/30/2026 01:47:18
14F:→ playlive: 只要有选到CRT或NTSC+CRT就会卡,也可能是我CPU太老旧 03/31 16:16
※ 编辑: erspicu (182.233.248.16 台湾), 04/12/2026 23:06:51
※ 编辑: erspicu (182.233.248.16 台湾), 04/12/2026 23:07:54
※ 编辑: erspicu (182.233.248.16 台湾), 04/20/2026 23:18:35
※ 编辑: erspicu (182.233.248.16 台湾), 04/20/2026 23:19:14
※ 编辑: erspicu (182.233.248.16 台湾), 04/20/2026 23:19:42
※ 编辑: erspicu (182.233.248.16 台湾), 04/20/2026 23:25:13
※ 编辑: erspicu (182.233.248.16 台湾), 04/27/2026 23:37:41
※ 编辑: erspicu (182.233.248.16 台湾), 04/27/2026 23:56:17
※ 编辑: erspicu (182.233.248.16 台湾), 04/28/2026 00:26:17