First post, by LABS
- Rank
- Member
Hello there!
I'm currently working on a Sound Blaster 2.0-compatible ISA card based on Atmega MCU. My goal is to completely implement original SB's playback functionality using modern, available and better sounding parts (like DAC, op-amps, film capacitors, etc). I only keep genuine YM3812 FM synth and its DAC YM3014B. As with SB2.0, the card supports 8-bit mono PCM and ADPCM 1:2/1:3/1:4 playback in all modes (direct, single-cycle DMA, auto-init DMA, high-speed single-cycle and auto-init), OPL2 FM synth on real YM3812 sound chip, ALL playback-related DSP commands (even rarely used ones) to maximize compatibility with software that use the card for playback. However the card does NOT support sound recording and MIDI I/O (who needs that really?).
I chose Sound Blaster 2.0 because it is so much fun to implement it completely (the playback part) in hardware and software with all DSP commands, run the game like Gabriel Knight or Full Throttle and watch how it is detected and hear how it works... 🤣 And SB 8-bit card can be built on Atmega328P MCU which I'm familiar with. SB Pro is 8-bit as well, but the mixer chip is a pain to implement, but without it the playback functionality will not be full. If I will ever take the challenge - then it will be SB16 anyway 😎
The Adlib part is already finished as a prototype (see pics) and is autodetected by software. DOS games on Pentium 166 MMX plays music perfectly.. 😎 but without sound effects yet. OPL2 was an easy part as it replicates Adlib, but the DAC part is more tricky, as there are no schematics available and I do not have a Sound Blaster card for research. The only source of information is SoundBlaster Programmer's Manual, with all DSP commands described. So it took some time to sythesize inner workings of the card based on that manual and some example code. Nevertheless, the hardware part for DAC is already completed on paper, now I'm finishing software and soon will make a prototype. After finishing and debugging the prototype I will order some factory-made PCBs to make everything look good.
But there is one thing left unresolved - IRQ signal from OPL2. Does anybody know if pin 2 of YM3812 in SB card is connected to anything or not? Does it produce interrupt? If yes - what about IRQ sharing between DAC and OPL2? In Adlib the OPL2 does produce an interrupt and this is how the card is detected as Adlib. What with SB? Visually tried to trace SB PCB's photos found on the net, but with no luck. Looks like it is left unconnected, but not sure. Does anybody know exactly, please?
EDIT: Solved by cyclone3d:
Just looked at my CT1320C and CT1350B and pin 2 of the YM3812 is not connected to anything.
And if anyone knows any bugs in SB 1.0/1.5/2.0 - series of cards which are used as programming tricks, please let me know, so I could implement them as well)))
Thank you!