Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sndsys.com is not compatible with all WSS implementations #7

Open
CarlosTex opened this issue Dec 26, 2024 · 2 comments
Open

sndsys.com is not compatible with all WSS implementations #7

CarlosTex opened this issue Dec 26, 2024 · 2 comments

Comments

@CarlosTex
Copy link

There's something going on with the detection and hardware initialization on the sndsys.com wss driver where it will only work with the original AD WSS codec. Most WSS implementations, via Crystal chipsets or even Yamaha YMF OPL3-SAx will fail. I tried patching the driver to force initialization but it crashes the system as it tries to play any sound.

Seems like the initialization or detection is really strict, possibly too tied to the original Analog Devices AD1848 codec chip.

@volkertb
Copy link
Collaborator

volkertb commented Dec 26, 2024

Interesting research! Thanks for sharing!

Anyway, among the DIGPAK sources, the initialization and codec code for the WSS driver is apparently only available in binary blob form. Those blob files are called WSSINIT.OBJ and CODEC.OBJ, and they probably come from an MS-DOS game developers kit that Microsoft used to make available for free, to allow DOS game developers to add support for WSS cards to DOS games. (See one of the links all the way at the bottom of this message for more details about this.)

I've done some searching on-line, but so far, I haven't been able to find a copy of this developer kit anywhere. If we had such a copy, then perhaps we could ascertain whether only blobs specifically for the AD1848 chip existed, or whether the kit also offered blobs for other WSS implementations. Maybe all the WSS cards on the market at the time were based on the AD1848, so either Microsoft's developers kit only targeted that chip, or John Ratcliff was only able to develop for that particular chip at the time, because maybe there were no other WSS chips then.

What is your experience with WSS compatibility with these other chipsets in other games, notably in games that didn't use the DIGPAK drivers?

Perhaps we can try running the blobs (object files) through a disassembler such as Ghidra, to see whether they were indeed exclusively intended for the AD1848.

When did the Chrystal and Yamaha chips come out? Where they released on the market after the AD1848?

See also my answer to your post about this on Vogons: https://www.vogons.org/viewtopic.php?p=1198129#p1198129

And see also these relevant comments in PR #6:

@CarlosTex
Copy link
Author

CarlosTex commented Dec 26, 2024

I imagined it would be something like that (seems like your post on Vogons somehow went way over my head). I was looking into the DIGPAK code trying to figure out where the initialization code was but... yeah it is referencing external functions. There has been an interesting development around Vogons. User !640enough has patched the WSS driver from Impulse Tracker to support the Orpheus. Apparently that driver relied on the original Microsoft code too, check this thread out:

Vogons thread

The Gravis Ultrasound MAX did use a Crystal CS4231, as did the GUS addon daughterboard, which as far as i am aware it came out at least 1 year later after the AD1848, which seems to be as early as 1992 and the Crystal chip was around 1994. Yamaha OPL3-SAx came out much later, 1995 or 1996.

Not related, but i've also been looking into find the Ensoniq Soundscape programming documentation, as i wanted very much to try and develop a driver for AIL 2, and possibly DIGPAK too. On the other hand i wanted to develop a Adlib Gold Digital driver for AIL3 (MDI, DIG) but i can't find any sources for AIL3. Some russian dudes (Tronix, and Bristlehog) did managed to develop AIL3 MDI drivers for the CMS and Innovation SSI cards. I have no idea how they did it considering source code does not seem to be available. Source code for the lastest version (before Miles Sound System was sold to RAD)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants