Mappers provide three services: bank switching, IRQs, and expansion audio. I tried to make the music data format small enough that a typical NES game soundtrack could fit in a single 16 KiB bank. (Look at the size of the NSF that I linked above.) I can see where IRQs would be used for $4011 writes (as in blargg's sawtooth wave hack) but not much else, and that hack not only doesn't work in NSFs but also can cause audible artifacts when an ongoing OAM DMA blocks IRQ handler execution, as
Dwedit pointed out.
I chose not to support expansion audio for three reasons:
- I don't own a Famicom and a T-cart to test on.
- Using expansion audio in homebrew involves either an expensive PowerPak, donor carts, or an old PC with a parallel port capable of running DOS and the FDS loader, making it difficult to distribute a game that uses expansion audio.
- It'd increase the RAM footprint, which might not be so bad because most of these include built-in PRG RAM decoding.
But I do plan to distribute it as free software so that you can write your own patch adding VRC6, MMC5 or 5B support.
As I get various parts of the compiler done, I'll start to give lessons on the syntax for some features that I'm working on, such as building drums out of sound effects, playing phrases with transpositions, and adding swing to a phrase.