VOGONS


Reversing the Disney Sound Source

Topic actions

First post, by shock__

User metadata
Rank Oldbie
Rank
Oldbie

Just a random fiddling I started to get back into Eagle PCB. Posting this here for other's who might be interested in these infos.

Based upon info/scheme from the "programmer's guide" (https://archive.org/details/dss-programmers-guide) and a PCB layout I reversed from an original adapter - this should be a scheme for a simple R2R Covox to Disney Sound Source adapter using off the shelf parts. (Yes, I'm aware there's a software solution for that issue - which requires QEMM and isn't without problems)

EDIT: Outdated schematic and full of bugs, therefore removed - you can find a confirmed working schematic on the second page

EDIT: Outdated and incomplete layout, therefore removed - you can find a semi-finished layout in a later post on this page.

It's intended to be plugged between a covox and the LPT port for now ... once this design is confirmed as working, it will be integrated into a mono/stereo-on-1/stereo-on-2 Covox board I layouted already.
(Buggy Eagle3D) Preview:
gRyakfV.png

Last edited by shock__ on 2015-02-11, 20:39. Edited 3 times in total.

Current Project: new GUS PnP compatible soundcard

[Z?]

Reply 1 of 146, by carlostex

User metadata
Rank l33t
Rank
l33t

Very cool project. If i understand correctly the final intention is to make a device both compatible with the Covox and DSS?

Reply 2 of 146, by keropi

User metadata
Rank l33t++
Rank
l33t++

^ if that is the case then pcbs here we come!!!! a single board solution would be just great! Is that an internal LPT header on the top-right corner?
shock__ I have an original DSS , if you need anything related to it just ask 😀

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 3 of 146, by shock__

User metadata
Rank Oldbie
Rank
Oldbie

@keropi if you could get me the value for the variable resistor inside the dongle that would be largely appreciated - for some reason the value I measured on mine is 10x larger than it should be (measured ~100k, when in reality ~10k are more realistic).
Also yeah, that 2x5 header in the top right is for a second LPT-port, sadly non-standard to conserve PCB space, but press-fitting a connector on one side and soldering 10 connections to a SUB-D connector shouldn't be too bad.

@carlostex: yup, final intention is a single PCB (or having DSS compatibility as an optional daughterboard - rather than a dongle), multistandard, high quality covox. Not sure if I will incorporate the DSS directly into the PCB I have designed because of 2 things, first I don't have too much PCB space left (absolute maximum size is 100x100mm, because above that prices will jump into another category [not super expensive, but a covox is meant to be "cheap"] ... and I'm currently at 80x100mm already) and the DSS being an even more niche product than a covox. Also the required circuits for DSS compatibility seem to be kind of rare these days (paid 8€ per piece [which was the most expensive - but at least the only local offer without 3-4 weeks shipping time] ... with few such chips left on eBay).

Current Project: new GUS PnP compatible soundcard

[Z?]

Reply 5 of 146, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie

What's the type of the 4-bit FIFO chips?

The two FULL output pins should not be tied together, only one push-pull output should drive the transistor.
And, there is no series resistor between FULL output pin and transistor base, it needs one or it might blow up something.
I don't see how the samples are clocked out at 7kHz, I see there is C2/R3 combo but it won't oscillate by itself, is there something missing?

DSS flow control is really used in software. Try Wolf3D. It will try to detect DSS by feeding it 32 samples, and checking if FIFO actually went full. And in the timer interrupt, it will feed data to DSS until FIFO is full.

Reply 7 of 146, by alexanrs

User metadata
Rank l33t
Rank
l33t

I'm amazed at how "hand-made" they look. It is almost like this was made by drawing with a ruler+marking pen and etched with ferric chloride oO

Reply 8 of 146, by shock__

User metadata
Rank Oldbie
Rank
Oldbie
Jepael wrote:

What's the type of the 4-bit FIFO chips?

74ALS232 (16x 4Bit)

Jepael wrote:

The two FULL output pins should not be tied together, only one push-pull output should drive the transistor.

Alright, thought so 😀

Jepael wrote:

And, there is no series resistor between FULL output pin and transistor base, it needs one or it might blow up something.

Gonna check into that - just copied that part 1:1 from the board/scheme (which uses a different transistor [H9014])

Jepael wrote:

I don't see how the samples are clocked out at 7kHz, I see there is C2/R3 combo but it won't oscillate by itself, is there something missing?

Nope, tbh I was kinda puzzled by that part of the schematic as well - just wanted some clearance on that. I guess I'll go with a 555 circuit then.

Jepael wrote:

DSS flow control is really used in software. Try Wolf3D. It will try to detect DSS by feeding it 32 samples, and checking if FIFO actually went full. And in the timer interrupt, it will feed data to DSS until FIFO is full.

Yup, I'm aware of that detection routine, but is the flow control actually used ingame when giving out samples (as in will the software stop sending samples when the FIFO is full or will it keep going and excess samples being dropped at the FIFO)? (if it's done the first way one of the FIFOs could be omited and data passed off to the Covox directly)

Current Project: new GUS PnP compatible soundcard

[Z?]

Reply 9 of 146, by SquallStrife

User metadata
Rank l33t
Rank
l33t
alexanrs wrote:

I'm amazed at how "hand-made" they look. It is almost like this was made by drawing with a ruler+marking pen and etched with ferric chloride oO

Not far off, actually.

Typically they'd hand-draw the mask, photocopy it to transparency, and use photo-resist coated PCBs.

VogonsDrivers.com | Link | News Thread

Reply 11 of 146, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie
shock__ wrote:
Jepael wrote:

What's the type of the 4-bit FIFO chips?

74ALS232 (16x 4Bit)

Thanks. Should work. If there exists a "HC" version, it will have more symmetrical output drive for the R2R dac, but I would not worry (the original LPT port had "LS" types as well).

shock__ wrote:
Jepael wrote:

And, there is no series resistor between FULL output pin and transistor base, it needs one or it might blow up something.

Gonna check into that - just copied that part 1:1 from the board/scheme (which uses a different transistor [H9014])

H9014 is also pretty standard general purpose transistor, so it has no built-in base resistor. Maybe there actually is a resistor as the schematic is more like a block diagram instead of full schematics, or then the ICS chip output is designed to drive a transistor directly, so it is not a regular logic level output. Or they did not care, it would still work but it would not be professional 😀

shock__ wrote:
Jepael wrote:

I don't see how the samples are clocked out at 7kHz, I see there is C2/R3 combo but it won't oscillate by itself, is there something missing?

Nope, tbh I was kinda puzzled by that part of the schematic as well - just wanted some clearance on that. I guess I'll go with a 555 circuit then.

OK, 555 would work, I can't really suggest a better hobbyist chip for the task. 74xx4060 can be made to generate clock with RC circuit or crystal, and you can also make an RC oscillator if you have few spare logic gates, but 555 is just as good. I think the ICS chip has internal oscillator circuitry, so that there is an external resistor/capacitor combination to set the frequency. The variable trimmer resistor might be used to fine tune the frequency at factory to 7kHz (+/- 5%) as the specs say.

shock__ wrote:

Yup, I'm aware of that detection routine, but is the flow control actually used ingame when giving out samples (as in will the software stop sending samples when the FIFO is full or will it keep going and excess samples being dropped at the FIFO)? (if it's done the first way one of the FIFOs could be omited and data passed off to the Covox directly)

Well, like I said, it fills FIFO in timer interrupt until it sees it is full. https://github.com/id-Software/wolf3d/blob/ma … D_SD_A.ASM#L444. As the sampling rate is defined by DSS itself, and if continuous data stream is wanted at max sampling rate, there is little point not to poll the FIFO full signal. The only exception is that you want a sampling rate less than what the DSS does, like 6kHz, then you can just feed one sample in a 6kHz timer interrupt or something like that. But it will skip samples if FIFO is full, so you cannot send it samples in a 8kHz timer interrupt for example, the FIFO will work only when average is the 7kHz generated by DSS, and when you send it 7kHz worth of samples in average, in max 16 sample bursts.

Reply 12 of 146, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie
keropi wrote:
Allright, I measured R12. […]
Show full quote

Allright, I measured R12.

I am getting 174K between points A+B
80K between A+C
104K betwwen B+C

is this helpful?

Somewhat, thank you. Basically it is still connected to other circuitry which will affect the reading, so you are not just measuring the R12, and depending on what kind of circuitry it is connected to, the reading might be quite accurate or completely wrong.

But, it could be a 200 Kohm trimmer. Your measurements are very close to 200K, considering it is measured while connected in the circuit.
And I looked at one of the pictures and saw there is a marking on the trimmer that says "200" something, maybe "200K", I could not see too good because of some reflections in the picture. It could also be a letter something else than "K", to mark kilo-ohms or telling something else about the trimmer like if it is linear or logarithmic in resistance.

Maybe you can read it better what it says on the trimmer.

Keropi, if you took these pictures yourself, do you give permission to use them on other websites, like VGMPF? I think they could appreciate fresh DSS photos.

Reply 13 of 146, by keropi

User metadata
Rank l33t++
Rank
l33t++

@Jepael

Yes, the resistor does say 200K , engraved on the metal on top. Didn't notice it before, thanks for pointing it out.
Just to be sure, you measure points A+B for this variable resistor, right?
Is that resistor value super important so a really exact value is needed?

and yes, these are my pics (quick ones too!) and you can upload/use them to your heart's desire 😀

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 14 of 146, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie
keropi wrote:

Just to be sure, you measure points A+B for this variable resistor, right?
Is that resistor value super important so a really exact value is needed?

and yes, these are my pics (quick ones too!) and you can upload/use them to your heart's desire 😀

Thanks for the pictures!

Yes, A+B is the total resistance printed on trimmer, A+C or B+C is the trimmed value it is set to.
The exact value is of course not needed, as it is a trimmer so it can be set to whatever required (I think it might control the DSS sampling rate for fine tuning it to 7kHz +/- 5%).

But of course its value (range) is important, because one step smaller value (100K?) trimmer might not be enough so you can't tune it and one step larger trimmer (330K?/470K?) might have very small usable range so it is hard to tune. And of course the decade, if it is 200 ohm, 200 kilo-ohm or 200 mega-ohm trimmer.

Reply 15 of 146, by shock__

User metadata
Rank Oldbie
Rank
Oldbie
Jepael wrote:

Thanks. Should work. If there exists a "HC" version, it will have more symmetrical output drive for the R2R dac, but I would not worry (the original LPT port had "LS" types as well).

To my knowledge the ALS variant is the only one in existance (I tried checking for pretty much anything (HCT/HC/F) to possibly get a better quote), no luck. But according to the datasheet it supports rate of up to 40MHz, so no need to worry there indeed 😀

Jepael wrote:

OK, 555 would work, I can't really suggest a better hobbyist chip for the task. 74xx4060 can be made to generate clock with RC circuit or crystal, and you can also make an RC oscillator if you have few spare logic gates, but 555 is just as good. I think the ICS chip has internal oscillator circuitry, so that there is an external resistor/capacitor combination to set the frequency. The variable trimmer resistor might be used to fine tune the frequency at factory to 7kHz (+/- 5%) as the specs say.

No spare gates 🙁 But hey, the 555 has such a tiny footprint, even with it's passive components, it's perfect for the task.

Jepael wrote:

Well, like I said, it fills FIFO in timer interrupt until it sees it is full. https://github.com/id-Software/wolf3d/blob/ma … D_SD_A.ASM#L444. As the sampling rate is defined by DSS itself, and if continuous data stream is wanted at max sampling rate, there is little point not to poll the FIFO full signal. The only exception is that you want a sampling rate less than what the DSS does, like 6kHz, then you can just feed one sample in a 6kHz timer interrupt or something like that. But it will skip samples if FIFO is full, so you cannot send it samples in a 8kHz timer interrupt for example, the FIFO will work only when average is the 7kHz generated by DSS, and when you send it 7kHz worth of samples in average, in max 16 sample bursts.

Thanks for clearing that up - learning ASM to understand that would probably have been a little too much for me 😀

We'll see .. my trusty R2R Covox is lying right next to me and the ICs should arrive within the next 2 days.

Current Project: new GUS PnP compatible soundcard

[Z?]

Reply 16 of 146, by shock__

User metadata
Rank Oldbie
Rank
Oldbie

Oudated - and doublepost, please delete/ignore.

Last edited by shock__ on 2015-02-11, 20:31. Edited 1 time in total.

Current Project: new GUS PnP compatible soundcard

[Z?]

Reply 17 of 146, by shock__

User metadata
Rank Oldbie
Rank
Oldbie

Ok, just double-checked my reversed scheme based upon photos I took - no base resistor there either.

Not being familiar with that concept, maybe you should push me into a direction Jepael ... my googled knowledge has led me to anything between 1k and 1M being a suitable value.

Current Project: new GUS PnP compatible soundcard

[Z?]

Reply 18 of 146, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie

Start with 4.7 kohm, but anything between 1k and 10k should work without hassle. 1M can be too weak.

As long as it is there, you can change/tweak later.

Reply 19 of 146, by shock__

User metadata
Rank Oldbie
Rank
Oldbie

Breaking news! Another PCB update (aka still waiting for the ICs to arrive).

VmO6cAR.png
Adapted the single input NOT-gate to a dual input NAND-gate for the FULL signal.
Cut down most jumper wires to sane lenghts.
Added pre-resistor for finetuning the output rate, while maintaining sane rates (whoever has tried to hit an exact value on a variable resistor might appreciate this).
Added credits and thanks.

Current Project: new GUS PnP compatible soundcard

[Z?]