I'm not sure. I tried an experiment with sample playing on the MMC3 IRQ on some emulators a while back, and I was getting half the samplerate I was expecting. Either it was only doing an IRQ every 2 scanlines, or my code was messed up, but I didn't explore it much further.
The real trick is in getting the PPU code execute only during hblank. It's a time frame of about 21 cycles per scanline. I need to figure out some way to make an IRQ occur at the same point on every scanline (preferably shortly before hblank begins).
The Maxicart's IRQ is (hopefully) going to do something like this. It would trigger an IRQ when the PPU fetches pattern data from a specific tile.
I could do it with timed code, but then it's not as usable as it could be, with all those delay loops wasting CPU time.