I have been working with the guys at the
www.benheck.com forums on this topic too, so go there and check it out, I will edit and add a link later.
edit: here is the link to my thread at that forum
http://www.benheck.com/phpBB/viewtopic.php?t=13232
I am working on an idea for making extended audio work on the NES. The famicom had something like this, where the carts could have their own sysnthesizer in addition to the one already in the console, and then it would mix the audio. I am working on a dongle idea that would allow the famicom cartridge adaptor (custom built, of course
) to rout the special audio through the expansion port pin on the 72-pin cart slot and then a dongle would run it into the audio input on the nes. This dongle goes in the expansion port on the bottom of the system. I was also thinking that a audio in for things like, say, a cd player or mp3 player would be cool, so then games where you can turn off the normal backround music, like Tetris, could get some cooler music mixed in. Also, I am looking for the possibility of stadardizing this method, so that, in theory anyway, all future famicom to NES cartridge adaptors can have this extended audio feature, all dongles will have the same format, and then homebrew mappers, like Squeedo, could make use of this audio pin as well. It could potentially open up a lot of posibilities for future projects, and might even be marketable. (don't ask me, maybe Messiah of Generation NEX? he is on the Benheck forums) What think?
Edit: Oh yes, one other thing that would be good is to add a lockout chip into the dongle. Then, you could just rout the lockout chip data through the expansion port pins as well. This would make custom carts much easyer and more compatible, so all you would have to do is plug in the dongle. No more clipping pin 4 on your lockout chip inside the NES anymore!
and you also would not have to put a lockout chip inside of every custom made cart.
I happen to live a couple miles away from Jameco so I could drop by with a NES and see if the plug you think will work would actually fit. Just let me know the part number.
well, the deal is it has the right pich and number of pins can be customize, but you would need to clip off the corners to make it fit in the slot. Probably with a dremel. I know, bummer, but what can you do? I think it would be very hard to find exactly perfectly what you would need for that expansion port. If you think about it, it is just a card edge, but made a little different- have a look some time.
I don't have my caliper on me otherwise I'd check mine out. Good luck finding a connector that will even accept that thickness.
Yes, I did discover that it will just barely not fit. I did find something else that might work when I can figure out the pitch. Here is an idea of what I found: it is not a normal card edge connector, it looks almost like a card edge connector but with much less plastic around the pins. more fragile, but for prototypes it would probably be fine. Imagine a keyed header, but with two rows of card edge contacts. I still need to assure myself of the pitch before I order it. Oh, does anyone know the pitch for famicom cartridges? Is it any different from NES carts? Is the PCB thicker or thinner or the same?
FC is slightly thinner since NES is thicker than "normal" (47 mils? I haven't a caliper)
I've actually been working on much the same project and have run into the same roadblock of expansion port plug problems.
pin 16 on the 72 pin connector is going to be used in the next copynes update, so you won't want to use that for your adaptor.
Cool project. I've always hoped someone would make this, but I guess the expansion port on the bottom has always been an issue. If someone could mass produce these connectors alone it would open up a whole new chapter of NES dev.
But the dongle idea sounds awesome. If people can figure out just how the lockout chip works from those microscope diagrams, and then could mass-produce them, I think NES development would go to a whole new level.
-Rob
Adding audio chips to a game would be so complicated that I doubt the homebrew community would be interested. Especially with so few large scale homebrew games making it to completion anyway.
The more I think about the audio in, the more I think that it's unnecessary complication. I would much rather play a CD in my CD player while I play tetris rather than turn the sound to mono and route it through the nes.
I really feel the sound adaptor is more useful to famicom games on the nes with a famicom to nes adaptor. Then you would just put the CIC on the famicom to the nes adaptor so you wouldn't need to complicate things further. The expansion port plug is basically one wire connectiong unless you want to add fc 4 player or other device support through the expansion port.
I don't mean to tear up you ideas, but I'd like to open up more serious discussion. How is your audio-in useful when you'd have to have some audio player to play the sound and then there is no way for the nes to control the audio player? Also, are you thinking of mixing stereo sound into mono, or would you only send the right channel through the nes and have the left channel go directly to your speaker system or TV?
Also, how will you then use the CIC when it's in the expansion port? Unless you modify the nes, you would always have to use some sort of adaptor even for pirate nes games, correct?
I think the only way building this device would be worth while would be for it to have a FC expansion port ($4017-D1..4 are available on the expansion port?) I would only do FC-> NES, certainly wouldn't add some proprietary NES pin for audio in... if you're going to do line level audio input, consider headphone level output too.
OK, OK, just to clarify things here. The main idea of this dongle is to make it so that a games like Akumajo Densetsu can have its extened audio when you play it on the NES. The idea of puting the CIC data through the expansion port is so that you only need to pillage ONE nes cart and you can use the CIC chip from that cart with any homebrew cart you build. Do you understand? I am thinking of ripping the CIC chip from a normal cartridge and putting it on the dongle and then running the nececary lines for the CIC into the cartridge that is in the slot, which presumably will not have a CIC sinve it is a hack / homebrew. You know, like Sqeedo (sp?), and instead of having lockout chip in the cart it goes in the dongle instead. It would hog up a few of the cart slot to expansion slot pins, but it would be useful for people who want to mass produce different kinds of homebrew carts. And besides, if people can make totally custom mappers like Squeedo, who's to say nobody will want to integrate a audio chip?
In short, this dongle could make some nice things possible, and could be easily expanded. If you made it with alot of features, even if they all don't get used right away, someone might make a cart that utilizes it. That is why I want to hear anyone and everyone's ideas on how to standardize this and what features should go into this. Also, I beleive that if some people could check the pitch and other meausrements of the expansion port that it would not be too challenging to get a similar part and then a little dremel modding would take care of the rest. Anyone with calipers want to do this, please?
In order to play FC audio to the NES you need to add one resitor, one capacitor in your NES and one wire in your FC2NES adapatator. I don't remember where this is proprely doccumented. It works fine with my Just Breed card.
Yes, sounds like a relatively simple filter. I would like to see how this had been done. BTW, I was not aware that Just Breed had exteneded audio, I thought it was just a normal MMC5. I know Castlevania 3 is an MMC5 in america, but it is a special Konami mapper in Japan, and thats where the extended audio comes in.
sevast wrote:
The more I think about the audio in, the more I think that it's unnecessary complication. I would much rather play a CD in my CD player while I play tetris rather than turn the sound to mono and route it through the nes.
But if I were going to add CD music to Tetramino, then I would need some sort of ATAPI interface to control the CD player, right?
Quote:
Also, are you thinking of mixing stereo sound into mono, or would you only send the right channel through the nes and have the left channel go directly to your speaker system or TV?
It depends. If the NES's low-pass filter is capable of passing
MTS signals...
An expansion port add-on was kind of like what I had in mind when designing Squeedo. But I put it all on cart, since it seems more practical since it's a devcart with FlashROM anyways. I think it's really best to only have memory + address decoding on cart.
So what I think would be cool would be a (fast) microcontroller and a USB interface. Would add somehthing like $12 to the build cost though. I like the sound idea too. Squeedo currently just sends the audio to the NES digitally (doesn't cost too much CPU time, really). If I was gonna put a DAC on Squeedo for sound, I'd do it as a Famicom cart. Unless these dongles would be cheap enough to include with Squeedo. But that's no good for a top-loader.
An FC expansion port like kyuusaku suggested is a good addition also. Would only need a place to solder wires from a DB15 cable to it, I think.
Just Breed has extanded audio, because the MMC5 has, and it can be freely used in Famicom territory. CV3 stuck with normal audio because the NES doesn't support external audio unless you do the modifications explained
here.
Sounds good. So lets review here, people want this dongle to need/contain these things:
audio re-routing from the cart
a famicom-style DB15 expansion port
a cartidge lockout chip that get rerouted through a homebrew cart to save on the number of real NES carts that need to get smashed to make said carts work
an audio input and possibly an audio output
an NMI based freeze / pause function
anything else? I think all of this is quite do-able and could possibly be mass produced (not by me, remember!) once a source for the custom conector can be found.
NMI based pause function?! Now you're talking a large CPLD, SRAM and ROM opposed to <10 passive components.
Actually, it probably would not be too hard, I am just talking about pausing, not about saving states or things like that.
There's no /NMI access on the expansion port. There is /IRQ though. But the idea seems to fall apart considering that games can and do disable both NMIs and IRQs (despite NMI meaning non-maskable interrupt, it is maskable, heheh). And if IRQs were enabled, holding it low would probably have severe side-effects depending on the game's code. Doing a hardware pause this way is an uphill battle.
Saving states a la GAR is the only way it's possible.
Memblers wrote:
(despite NMI meaning non-maskable interrupt, it is maskable, heheh).
The interrupt itself isn't maskable (sei has no effect on NMIs), but the internal PPU logic that generate the interrupt is.
I read in a document somewhere that it was possible to freeze games through the NMI on the expansion port. Maybe I read it wrond or the document itself was wrong, but it sounded like it would not be too hard. Oh well, I guess that one can be put to rest for now. I suppose the first thing is designing/finding a connector for that pesky port.
I heard that in other projects pin 18 (am I correct?) on the cartridge port has been used in the past for audio expansion with converters, so I think that I could do that just for the sake of consistency.