把配乐塞进自制游戏:NES 声音引擎接入指南
NSF 是"能播",声音引擎是"能集成":它把你的曲子变成可以链接进自制游戏 ROM 的代码与数据,游戏运行时由 6502 汇编驱动播放。NSF 与 ROM 导出用的也是这套引擎——编辑器里听到的,就是真机上会响的。

引擎从哪拿
发布页单独的 Sound Engine 压缩包(与编辑器分开下载),内含四个汇编器版本与 demo 工程:
- CA65 / CC65:cc65 工具链(C 语言开发主流选择);
- NESASM、ASM6、SDAS:三大主流汇编器各一版。
Demo 源码在 DemoSource 目录,四个版本产出二进制一致的 ROM,拿来当集成模板最快。
能力全景
基础能力常驻:前四条 2A03 通道、全 96 音域、四条包络(含循环与释放)、歌曲循环、每次导出最多 64 件乐器与最多 17 首歌。
以下能力按需开关(省 CPU 与内存):
- 扩展芯片(VRC6 / VRC7 / FDS / S5B / MMC5 / EPSM / N163,最多启用一个);
- PAL 支持、DPCM 采样、DPCM 背景切换(bankswitching);
- 扩展乐器数(至 256)、扩展 DPCM 映射数(至 256);
- 音效流(SFX streams,数量可配);
- 滑音、颤音、琶音效果轨道、音量轨道、延迟音符(Tracker 模式)等。
红线:歌曲里用了某特性而引擎没开它,运行时会崩溃(BRK)或行为未定义——开关前核对全工程。
开销预算
零页占用 7 字节(可与游戏自己的零页变量混用)。代码与 RAM 随启用特性增长,压缩包里的对照表给出最省与最全两档的量级——开发早期就按表规划,别到 ROM 塞不下才回头砍特性。
集成流程
- 工程定稿,选好导出的歌曲集合(1-17 首);
- 导出对话框选 Sound Engine 格式,按需勾特性;
- 把生成的数据与引擎源码挂进你的汇编工程;
- 调用引擎的初始化与每帧更新例程(demo 里有标准写法);
- 真机测试。
与 SFX 的配合
音效流让游戏音效与 BGM 并行发声:预设好音效数据,运行时触发。音效本身的编辑也在本软件里完成——用一段 Pattern 写音效,导出时一并打包。