2A03 Synth

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
2A03 Synth
by on (#7950)
Would it be possible to actually build a hardware synth around the 2A03 sound chip? I'm contemplating ideas for my senior project and since I'm trying to go for my EET degree, I'm just thinking up ideas here and there.

by on (#7953)
midines

by on (#7954)
well, thats all said and good, but i dont want to blatently rip someone else's idea off.

by on (#7955)
The 2A03 is in essence a 6502 CPU with gamepad input, audio output, and two specialized DMA channels. It has 22 registers to manage those features.

Do you want to strip the 2A03 from the NES board, or do you want to leave it in place and make a synthesizer cartridge? Both are possible.

by on (#7962)
Using the NES would let others use your design easier, but I'd like to see (or do it myself eventually when I have time :P) one based around the cpu only (like the SID synths) so you could get a bit better quality from the signal.

by on (#7964)
gannon wrote:
Using the NES would let others use your design easier, but I'd like to see (or do it myself eventually when I have time :P) one based around the cpu only (like the SID synths) so you could get a bit better quality from the signal.


I did this awhile ago using a very simple CPLD and the NES CPU and some other thingies. It's called "HardNES" and pics of it can be found here:

http://tripoint.org/kevtris/Projects/hardnes/index.html

I was thinking some day it'd be nice to make another one with more sound chips and such, but it never happened. These days, I guess I could make it on an FPGA using that NES FPGA core I have designed.

by on (#7967)
What about something more complex, such as x slave CPUs running some kind of interface code, controlled by a main CPU or micro, allowing for multi channel sound....?

by on (#7974)
If you have several 2A03s running in polyphony, then you defeat the purpose of using a 2A03 for its distinctive sound, as they could all just be set to play samples out $4011. You might as well just use a wavetable chip loaded with the stereotypical 2A03 waveforms (12% pulse, 25% pulse, 50% pulse, 75% pulse, and 32-step triangle).

by on (#7998)
But this is for his senior project - it would take some EE talent to arrange such a circuit, depending on the number of 2a03s used. No one says you have to use samples for everthing and not use the 2a03's distinctive sound...

I suppose you may as well toss your toaster out the window and use nintendulator for everything too.

Your post confused me: Am I missing something?

by on (#8155)
tepples wrote:
The 2A03 is in essence a 6502 CPU with gamepad input, audio output, and two specialized DMA channels. It has 22 registers to manage those features.

Do you want to strip the 2A03 from the NES board, or do you want to leave it in place and make a synthesizer cartridge? Both are possible.


Well, personally, I'd like to strip the 2A03 from the NES board and use a keypad input to program in sounds. (is that even possible?)

by on (#8157)
sorry about that, i had forgot to log in.

by on (#8164)
The 2A03 contains the NES CPU and APU. The only way you can write to the APU is through the CPU, so you'll need to provide some memory for the program and have that read some external source for data and write to the APU.

by on (#8170)
Ah, so it would end up something like Kevtris's HardNES. :? I seriously don't want to jack his idea. But it would be cool to make something like that for sure.

by on (#8172)
It would be pretty much like a NES, just without the PPU. :)

by on (#8178)
And you'll still need some sort of display for the instrument builder, so you might as well keep the PPU.

by on (#8184)
Actually, Kevtris' HardNES... would one be able to use a PIC instead of a FPGA? (And not use a display?)

by on (#8192)
NSF has 4 KB bankswitching. You'd need something fast for this, and that means a CPLD or FPGA.

by on (#8195)
It'd be like building any other 6502 computer. Except sound is in the CPU. Check out the various projects on 6502.org if you want to see some stuff people have made.

A PIC can't replace an FPGA, but you could use some discrete logic parts. You'll need address decoding especially. NSF bankswitching is possible with discrete parts too, but you could get by without any bankswitching to play most stuff. (I have a ton that I manually 'unbankswitched' for my SNES NSF player.. lots of them use it simply to optimize the NSF filesize)

by on (#8234)
Memblers wrote:
you could get by without any bankswitching to play most stuff. (I have a ton that I manually 'unbankswitched' for my SNES NSF player.. lots of them use it simply to optimize the NSF filesize)

If an NSF doesn't ever write to the bankswitch registers, instead relying on the initial values from the header, then un-bankswitching an NSF can be done with an automated tool, right?

by on (#8239)
tepples wrote:
If an NSF doesn't ever write to the bankswitch registers, instead relying on the initial values from the header, then un-bankswitching an NSF can be done with an automated tool, right?


Yeah, it could. I used a hex editor for the simple ones (mostly the ones I ripped and optimized myself a while back), and used NESten to make a memory dump of the ones that were a little weirder. That would automate fine. Any NSF smaller than 32kB probably won't be writing the bankswitch registers (unless it's an FDS rip or one like Metroid).

by on (#8242)
Memblers wrote:
Any NSF smaller than 32kB probably won't be writing the bankswitch registers (unless it's an FDS rip or one like Metroid).

Trouble is that too many rips might be "like Metroid", especially on the MMC3 that uses smaller banks. Should we consider reverse engineering common NES music playback engines in order to make a version that uses the same instrument and sequence data but runs properly in a flat 32 KB memory space?

by on (#8260)
tepples wrote:
Trouble is that too many rips might be "like Metroid", especially on the MMC3 that uses smaller banks.


IME, there's really not. I spent way too much time finding that out, heheh. Of course the NSFs I checked didn't include any that use DPCM at all.

I suspected it was because Metroid being an FDS port, but I dunno. Kid Icarus was fine, I dunno how related the sound engine/setup is there though.