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 FamiTracker
Login:
Menu:
Post: Author:
FamiTracker > General > FamiTracker Talk > MMC5 RAW PCM channel? Owner: nicetas_c New post
Page 1 of 2 Sort: Goto Page: [1] [2] Next >>
MMC5 RAW PCM channel? Posted: 2012-02-25 09:57  (Last Edited: 2012-02-25 09:59) Reply | Quote
nicetas_c



Member for: 4583 days
Location: AB, CA
Status: Offline

#30906
[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.

Posted: 2012-02-25 10:30  (Last Edited: 2012-02-25 10:56) Reply | Quote
rainwarrior

Avatar

Member for: 4150 days
Location: Canada
Status: Offline

#30908
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".

So... who knows.

Posted: 2012-02-25 10:38  (Last Edited: 2012-02-25 10:49) Reply | Quote
rainwarrior

Avatar

Member for: 4150 days
Location: Canada
Status: Offline

#30909
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.

RE: MMC5 RAW PCM channel? Posted: 2012-02-25 10:42 Reply | Quote
jrlepage
Moderator

Avatar

Member for: 4982 days
Location: Canada
Status: Offline

#30911
[url=http://dl.dropbox.com/u/34026765/testmmc5.nsf]This is the only NSF I know of that uses the MMC5's PCM channel.

Posted: 2012-02-25 10:48  (Last Edited: 2012-02-25 11:00) Reply | Quote
nicetas_c



Member for: 4583 days
Location: AB, CA
Status: Offline

#30912
.And then nobody further tested its functionality just because it is CPU-intensive or something?

Posted: 2012-02-25 10:49 Reply | Quote
rainwarrior

Avatar

Member for: 4150 days
Location: Canada
Status: Offline

#30913
That NSF appears to be writing $4011 at the same time, which is confusing.

Posted: 2012-02-25 10:58 Reply | Quote
jrlepage
Moderator

Avatar

Member for: 4982 days
Location: Canada
Status: Offline

#30914
It's still the only one that I know of that writes to $5010/$5011. :p

You'd have to talk to ~J-@D!~ for more details. Or maybe he'll see this while lurking and decide to post about it himself? Who knows.

Posted: 2012-02-25 11:13 Reply | Quote
rainwarrior

Avatar

Member for: 4150 days
Location: Canada
Status: Offline

#30915
I can easily write a test NSF that writes $5011. This doesn't seem like a particularly interesting exercise though.

Posted: 2012-02-25 23:46  (Last Edited: 2012-03-09 09:38) Reply | Quote
rainwarrior

Avatar

Member for: 4150 days
Location: Canada
Status: Offline

#30941
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.


Attachments:
mmc5.nsf (16 Kb)
Posted: 2012-02-25 23:56 Reply | Quote
jrlepage
Moderator

Avatar

Member for: 4982 days
Location: Canada
Status: Offline

#30943
That's weird, your NSF sounds fine in VirtuaNSF but WAY distorted in foobar2000! o_O

Posted: 2012-02-26 00:23  (Last Edited: 2012-02-26 00:33) Reply | Quote
rainwarrior

Avatar

Member for: 4150 days
Location: Canada
Status: Offline

#30947
nicetas_c what NSF were you testing with?

Also how do you count 32?

2A03: 5
FDS: 1
MMC5: 3
VRC6: 3
VRC7: 6
5B: 3
N163: 8

29? What extra channels have you got?

Posted: 2012-02-26 00:53 Reply | Quote
jrlepage
Moderator

Avatar

Member for: 4982 days
Location: Canada
Status: Offline

#30948
That's also [url=https://www.facebook.com/hertzdevil/posts/197817996986144]what I got.

Posted: 2012-02-26 04:31 Reply | Quote
ElHuesudoII

Avatar

Member for: 4525 days
Status: Offline

#30961
[quote=rainwarrior]nicetas_c what NSF were you testing with?

Also how do you count 32?

2A03: 5
FDS: 1
MMC5: 3
VRC6: 3
VRC7: 6
5B: 3
N163: 8

29? What extra channels have you got?[/quote]
IIRC, Using SuperNSF, the one DPCM channel for 2A03 turns into a possible 4. Thus, 32.

Posted: 2012-02-26 05:32  (Last Edited: 2012-02-26 05:35) Reply | Quote
TechEmporium

Avatar

Member for: 4485 days
Status: Offline

#30967
Correction; the DPCM channel turns into 4 raw PCM channels (plus such tunes are playable on actual hardware).

Source: [url=http://nesdev.parodius.com/bbs/viewtopic.php?t=7309]http://nesdev.parodius.com/bbs/viewtopic.php?t=7309

_______________________
Technology: the one thing that's hated & cursed at by all engineers, technologists, scientists & technicians!

(Lousy modern technology! )
Posted: 2012-02-26 05:57 Reply | Quote
kinkinkijkin

Avatar

Member for: 4366 days
Location: Not where my face is
Status: Offline

#30968
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.

Page 1 of 2 Sort: Goto Page: [1] [2] Next >>