Cool! I was hoping to see someone do some circuits using older Yamaha chips.
I'd also like to see someone use a YM2612 and SN76489 for some vintage Sega Genesis sounds.
Ha, didn't know about the YM2612 or about the SN76489.
When I started the project I just went digging on wikipedia looking for synth chips, and then I went to see what was available on ebay. In the end I decided for the YM3812 since it was in the AdLib card, and the SAA1099 since it is sorta analog, and simpler.
I tried writing my own routines for driving the bus by software, and I checked all of the signals with my scope, and they are fine, but then I couldn't get anything out of the YM3812 at all.
I took another look to the YM3812 datasheet, and it shows that the CS signals goes out at the same time WR goes out, so I added a bit of glue logic for achieving that, but nothing changed.
I also tried building a proper reset circuit, but nothing changed.
When it happen to work, if I go to adjust the tone register, the tone does change.
I tried doing everything that came to my mind, and I can't figure out what is the issue.
Sometimes it works, sometimes doesn't. If we suppose that the chip is not damaged, what could be wrong?
Any ideas/suggestions?About the SAA1099, I didn't have much luck with him either, I can reed the dack signal being asserted during a write cycle, but that is it. I couldn't find any example data to feed it, so I looked at the datasheet and tried to figure out what registers should I activate, but I guess I messed up something there.
YM3812 code:
olp_wr(0x20,0x01); //Set the modulator's multiple to 1
olp_wr(0x40,0x10); //Set the modulator's level to about 40 dB
olp_wr(0x60,0xF0); //Modulator attack: quick; decay: long
olp_wr(0x80,0x77); //Modulator sustain: medium; release: medium
olp_wr(0xA0,0x98); //Set voice frequency's LSB (it'll be a D#)
olp_wr(0x23,0x01); //Set the carrier's multiple to 1
olp_wr(0x43,0x00); //Set the carrier to maximum volume (about 47 dB)
olp_wr(0x63,0xF0); //Carrier attack: quick; decay: long
olp_wr(0x83,0x77); //Carrier sustain: medium; release: medium
olp_wr(0xB0,0x31); //Turn the voice on; set the octave and freq MSB
SAA1099 code:
saa_wr(0x1C,0);
saa_wr(0,255);
saa_wr(0x18,0);
saa_wr(0x19,0);
saa_wr(0x14,0x11);