- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-08-20 15:52:26
新手上路
- 积分
- 36
|
前阵子研究过拿251跑全功能全速NES模拟的问题.....
6502+PPU+APU模拟
这三部分里6502及PPU都需要高速高时序模拟,因此要把8052跑在几乎极限频率附近(如40~44*1.79Mhz)以尽可能降低CPU占用来实现调度流程.
模拟6502CPU时需要对其所有汇编进行精细优化,对不同机器周期的6502汇编使用不同的延时,以节省251定时器中断的开销,
模拟PPU还需要占用DMA实现刷屏(推荐使用320*240的屏),否则如果对常见视频总线进行数据输出对cpu的开销可能更大.
模拟APU需要占用掉绝大部分定时器(用来模拟APU的5通道合成器,每个合成器通道需要最少2个定时器),虽然APU优化后开销不大,但很占用资源
然后是最致命的是可变的mapper和搬运游戏code问题,有以下难点:
①norfalsh寻指时间太慢,对cpu开销太大完全不可使用,tf卡更是想都不要想;
②只有很小的游戏code才能放在mcuflash里跑,nes后期的常见游戏动辄256K-1M根本放不进MCU里更别提模拟了;
③51核原生很难从RAM区跑代码,可变的mapper搭建起来难度相当高.
感觉最优的解法是挂个实体卡带,数据走并口提升读取速率降低CPU的开销.....但现在实体卡带不便宜就是了.....不过哪怕用了实体卡,在stc上模拟NES依然绝对是件挑战平台极限的事,极其难以实现.
|
|