内容目录
背景
自己一直研究nes apu声音,初步研究一些东西,记录下来,帮助以后自己理解
心得
- 方波是最重要的,这个主要用于背景声音,可以不用管混音,不用管rc过滤,直接推进出来
- 声音验证可以通过现有nes 模拟器,设置声音关闭其他波形,只留一个方波就可以了,这样子可以对比区别
- 波形模拟无非几个定时器(通过cpu cycle 或者apu cycle)推进波形的变化,具体变化就根据nes 文档写,不明白可以反复跟AI交流,慢慢也就能明白
- 公式推理,文档也没有具体说明,反正通过分频器,产生不同定时器,为了得到指定频率的波,具体逻辑,我写自己笔记文档里面
- 难点就是自己模拟波,播放会出现卡断或者杂音,我后面发现是采集有问题,我目前的代码通过cpu cycle推进apu cycle(本质是一样,只是2 cpu cycle = apu cycle)推动,同时计算多少cyle 进行采集,因为代码波动,无法稳定达到44100采集(我播放代码是通过44100播放),导致太慢出现卡的感觉,这个可能好多人会遇到跟我一样的问题,我后面分析virtualnes 的代码,他通过批量生成采集点(通过记录更新声音点数据事件和数据记录),这样子稳定产生对应频率的声音
- virtualnes 模拟代码思路通过 画面frame 为单位,转换到nes cycle,这个我开始都没有明白这一点,我还是通过AI的出来的结论,我自己实现通过 指令得到cycle, 然后cycle 驱动ppu cycle,我控制画面的fps 来决定代码执行速度,所以思路是完全不一样的
其他
挺好奇,以前开发模拟器怎么开发出来,那个时候资料那么少,很多东西只能自己推测出来,真不容易