I've done it, I've achieved the dream of every NESmaker audio nerd and implemented 7bit PCM sample playback into my NESmaker project. Oh and I guess a character selection screen too.
For a little background on NES audio and sample playback...
The NES's Delta Modulation Channel (DMC) is meant for 1bit DPCM encoded samples, which can be played back without additional resources from the CPU. However, the DMC's load counter can be loaded directly with raw PCM data (7 bits at once), which can allow for higher quality samples and the benefit of storing these samples in any ROM bank.
The downside to raw PCM playback is that the CPU has to manually stream every 7 bits to the DMC's load counter at precise intervals, which means that there is little to no CPU cycles left to do any game logic (outside of screen drawing). The game essentially freezes while PCM data is being streamed. The other downside is that higher quality samples take up much more ROM space than DPCM.
Half of the ROM banks for Project DART are filled with 8bit unsigned PCM data (though remember the DMC's load counter can only hold 7 bits at a time). The samples are recorded and played back at a full 44.1 kHz, which means every 16K PRG bank can hold ~0.37 seconds of audio. Across all of my free banks that gives me ~7.4 seconds of total audio data. Of course I could extend that time if I recorded / played back my samples at a lower sample rate, but I didn't feel the need to do so for this project.
Oh yeah and the Character Select screen. You can chose from 4 playable characters. (Which also have their own PCM voice lines when you select them!)
Ещё видео!