Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /storage/content/49/145849/famitracker.com/public_html/forum/classes/dbHandler.php on line 29
[quote=[url=http://wiki.nesdev.com/w/index.php/MMC5_audio]Nesdev wiki]Nintendo's MMC5 mapper provides extra sound output, consisting of two pulse wave channels and a [b]PCM channel[/b]. The pulse wave channels behave almost identically to the native pulse channels in the NES APU.
=====
This functions similarly to the NES APU's register $4011, except that all 8 bits are used.[/quote]
Is this suggesting that there should have [i]already[/i] been an alternate PCM channel which is superior to the RP2A03/RP2A07's (since the 2A03 DPCM can do 7-bit PCM on its own with supernsf)? Both foo_gep.dll and VirtuaNSF seem to have support of it, NSFplay doesn't, not sure if MCK and PPMCK do but they probably do not. Nobody has seen this channel in use of any Famicompo entries either.
Discuss. If this ever becomes real and feasible, the NES sound format will have 32 channels. Thirty-two.
That's one of the most confusing descriptions of anything on the NESDev wiki. Here's what I can gather from the source code and documents I have at hand:
VirtuaNES -> tracks writes to $5010/$5011, seems to output $5011 as raw PCM, not sure what is done with $5010 if anything.
NSFPlug -> ignores writes to $5010/$5011.
NotSoFatso -> ignores writes to $5010, but $5011 is treated like raw PCM.
FamiTracker -> ignores writes to $5010/$5011.
A translation of Goroh's doc calls it "synthetic voice business channel".
There's more info on the boards.
[url=http://nesdev.parodius.com/bbs/viewtopic.php?t=5196]http://nesdev.parodius.com/bbs/viewtopic.php?t=5196
Seems, like regular raw PCM on the 2A03 you can't really do anything else at the same time. If you're doing it manually, there's no point because you could just do the same with $4011 writes, if you're using the IRQ you can do it with very little code but it takes over the CPU still so you can't do anything else, also makes terrible demands on your memory organization (a large portion of it now can only be used for PCM samples).
So... sounds like it's kinda useless, and I don't think would ever be supported by FamiTracker. Seems like the only point is for sound effects in a game where you're okay with halting everything, and you feel like writing slightly less code than you would to just do it via 2A03.
Okay I made a simple test. Song 0 uses the write mode, song 1 uses the read mode. Warning, it doesn't return from the play routine, so it may just crash or hang some NSF players; VirtuaNSF/NES, NotSoFatso, and NSFPlug don't seem to have a problem with it.
VirtuaNSF/VirtuaNES seem to support write mode, NotSoFatso makes sound with it but it sounds broken. It's kinda dumb though, since anything you write to $5011 you could easily ASR and write to $4011 (or just store that stuff at 7bit in the first place).
I can't find any player that supports read mode, though as a feature all it does is save you one write instruction at the expense of not being able to use any code or data in half of your ROM address space while it's being used.
MMC5 seems like the chip they built when they were trying to satisfy every request with little concern for cost or complexity.
EDIT: Created a new version of the test NSF. Song 0 = read mode, 1 = write mode, 2 = 4011 for reference. It should now be properly NSF compliant.
Minus FAMICOM [u]DISK[/u] SYSTEM EXTRA SOUND OUTPUT.
And, I find it mind-boggling that 1 low-quality PCM channel can be turned into 4 average-quality PCM channels, and with MMC5, 5.
I'd actually not like to see the MMC5 PCM output put in famitracker, it would ruin a little of the point of using a LIMITED TRACKER a little if RAW PCM is ever put in.