VOGONS


ASP403 - The Neverending Project

Topic actions

Reply 20 of 178, by ZanQuance

User metadata
Rank Member
Rank
Member

CMSS-3D was "borrowed" from Q-sounds QMSS upmixing code, much like how the current SBX is actually a rebranded THX-TruStudio Pro. A bit of a jab but has Creative ever developed anything of their own "in house" and not recycled tech from prior third party acquisitions? Legitimate question here.

It's not as simple as enabling CMSS-3D, but you can use the AC97codec tweaker (98/ME only) for the Vortex2s with Quad codecs and enable channel cloning, then place the speakers in 3D space using the A3D WinAmp plugin to get the same effect. Video of me playing around with it HERE. XP driver bug wouldn't let me clone the output to the rear speakers, so this is just me panning in Headphone mode. Bandicam recorded the Aureal SuperQuad via line input from CMI8788 soundcard.

With a modern update, there isn't any reason the Vortex2 couldn't clone out the speakers and apply HRTF to each in hardware. I'm not entirely sure but I think this option was planned for the SQ3500 Daughter-boards Dolby AC3 output.

I've decided to start this project off by dissecting the DOS AU30DOS.COM file and get the FM core up to snuff.

Last edited by ZanQuance on 2015-01-08, 02:21. Edited 1 time in total.

Reply 21 of 178, by Stiletto

User metadata
Rank l33t++
Rank
l33t++
swaaye wrote:

Almost any game with A3D support is good. Jedi Knight, Sin, Heretic II, Half Life, Elite Force, FAKK2, Unreal and KISS Psycho Circus come to mind. Even A3D 1.0 is great.

Apparently Daikatana was going to get A3D in a patch but of course they couldn't come through on anything they promised 🤣. The game uses Miles sound system and has the 3D plugins but it seems to only support straight up stereo.

And then there's the infamous MDK: MDK A3D patch!?

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 22 of 178, by swaaye

User metadata
Rank l33t++
Rank
l33t++
mockingbird wrote:

Excellent post, sir. I'll keep it in mind for if whenever I get my K6/2 system built (I've got here a bunch of Live/Audigy cards I've scavenged over the years). I'm familiar with Sensaura/Qsound. I was an early adopter of the Yamaha YMF744 platform for 4 speaker surround. I remember it worked pretty well in Windows 9x/ME, but once I actually managed to find a driver that enabled four speaker surround on XP. Was a decent card, but I often found myself enabling the speaker doubling on the ACS56 rather than the surround.

Qsound and Sensaura both did an excellent job with their DirectSound3D implementations. For Qsound, look up the Philips Acoustic Edge and Seismic Edge which are based on VLSI Thunderbird 128 (or newer Thunderbird Avenger). Excellent 3D audio there.

Sensaura was used by cards like Turtle Beach Santa Cruz (Crystal CS4630), ESS Maestro and later, NVIDIA NVAPU / VAPU / Soundstorm, Cmedia AC97, and Realtek AC97.

Reply 23 of 178, by swaaye

User metadata
Rank l33t++
Rank
l33t++
ZanQuance wrote:

CMSS-3D was "borrowed" from Q-sounds QMSS upmixing code, much like how the current SBX is actually a rebranded THX-TruStudio Pro. A bit of a jab but has Creative ever developed anything of their own "in house" and not recycled tech from prior third party acquisitions? Legitimate question here.

E-Mu basically defined Creative from AWE32 to at least XFi. Ensoniq was a subsidiary for awhile too, and then became E-Mu Ensoniq for awhile in some kind of merger. Old Ensoniq drivers are on E-mu's download page....

Their older ISA stuff was maybe developed by a startup R&D team. But you know companies are always diversifying and acquiring.

Reply 24 of 178, by alexanrs

User metadata
Rank l33t
Rank
l33t
ZanQuance wrote:

CMSS-3D was "borrowed" from Q-sounds QMSS upmixing code, much like how the current SBX is actually a rebranded THX-TruStudio Pro. A bit of a jab but has Creative ever developed anything of their own "in house" and not recycled tech from prior third party acquisitions? Legitimate question here.

Oh... they developed something alright: their drivers. That is why a lot of them suck xD On my then main PC Athlon 64 I eventually had to use kX drivers with my SB Live!, which worked much better but had no EAX support.

Reply 25 of 178, by ZanQuance

User metadata
Rank Member
Rank
Member

Turtle Beach replied to my request and stated they no longer have any backup copies of their Montego II board schematics or the documentation Aureal provided for the AU8830 at the time.

I thought most large companies would have kept an archive somewhere...hmm, still waiting for Diamonds response.

Reply 26 of 178, by Stiletto

User metadata
Rank l33t++
Rank
l33t++
ZanQuance wrote:

Turtle Beach replied to my request and stated they no longer have any backup copies of their Montego II board schematics or the documentation Aureal provided for the AU8830 at the time.

I thought most large companies would have kept an archive somewhere...hmm, still waiting for Diamonds response.

Oh, in some cases they do have archives but legally prohibit themselves from being able to share and contribute such a thing.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 27 of 178, by ZanQuance

User metadata
Rank Member
Rank
Member

Understandable, I got the canned response "We don't.share our IP" when I had asked creative for the documents, which was entirely expected.

Turtle Beach was nice and simply said they didn't keep any of the Vortex2 documents after Aureal was shut down.

Last edited by ZanQuance on 2015-07-16, 12:36. Edited 1 time in total.

Reply 28 of 178, by lagonauta

User metadata
Rank Newbie
Rank
Newbie

ZanQuance,
Did you have any progress already? No pressure, just asking 😀
I would gladly help, I am still a noob in programming software but I would donate to a kickstarter-like initiative.
While searching the Internet I found this:

http://www.hardwareheaven.com/community/threa … -au8830.212605/

I do not know if you had found it before, probably did.
Right now I am doing some videos comparing X-Fi Titanium with CMSS3D, MacroFX and Elevation Filter with the old Montego II in HL1. (Hint: A3D wins hands down)
I wonder if the difference is in the implementation or just the HRTF begin used. Next week I will try to program a Minerva-like software for OpenAl, I found out that OpenAl Soft default HRTF (MIT Kemar head) works really well on me, but I am not sure if it has elevation information. I tried to customize my HRTF, but the MIT head was still the best.
Right now the best modern HRTF I found is RealSpace 3D, I believe you already know about it.

Reply 29 of 178, by ZanQuance

User metadata
Rank Member
Rank
Member

Good timing for a post 😀 I just finished up my semesters CSIS courses and now have time again to work on this.
Last night I made great progress mapping out the AU30DOS.com file in IDA. There is about a weekends worth of stuff left to do in the code, and then it should be fully disassembled and ready to be recoded.
That X86 ASM crash course class I took really helped out, I'll post the code once it's legible for the porting project.

@your post, yeah I've come across that topic. Actually there was also one by Mjander who was one of the leading guys on the savannah openVortex2 project back in 02-03', he was looking for a WDM framework to port the AU8830 linux core he wrote into. His team is the one responsible for the Vortex2 ALSA code working today, and is the go to reference for the Vortex2's internal workings, but no OPL3 code 🙁

I wanna see those vids, be sure to link us to them once they are done!
RealSpace3D sounds very clean, there are issues, but it's a good choice for now. In my opinion RAYA is muuuuch further along and better for gaming *they have beamtracing support* 😀
Quake3 RAYA demo

I've also been playing around with my TB:Santa Cruz, Sensauras HRTF works really well in DS3D games, but lacks that A3D clarity to it.

Last edited by ZanQuance on 2015-06-03, 22:49. Edited 1 time in total.

Reply 30 of 178, by ZanQuance

User metadata
Rank Member
Rank
Member

[Weekend Update]
All functions are mapped out and given names (based on my best guess as to what they do)
100% of all variables/flags given functional names
Adding comments to all routines IO address and what the code does in general
Found new and previously unknown Vortex2 addresses for SBFM, SBrouting, I2C, I2S
SBFM is routed through the Vortex2 VDB to reach the CODEC
OPL3 is for sure emulated, SBFM cells are used for write captures.

AU30DOS.com is now completely mapped out. C port in progress...

Last edited by ZanQuance on 2017-05-14, 19:37. Edited 3 times in total.

Reply 33 of 178, by raymangold

User metadata
Rank Member
Rank
Member
raymangold wrote:

There are a *lot* of OPL3 implementations / clones, but I am curious as to how well the Vortex2 emulates OPL3 (like all OPL3 clones, it will have inaccuracies with interpreting custom parameters such as vibrato and ADSR), but that's what makes clones interesting to me. I may hunt down a variant of a vortex 2 to study it.

The next question is how well the card's actual output is (which would depend on the variant used I suppose-- and the variance seems to be huge), the only OPL3 card that went out of its way to implement a professional grade output was the Adlib Gold. And it sounds quite different from everything else as a result.

In terms of usefulness for *modern* things, it makes very little sense to me. I would seriously recommend something like a Roland Quad capture over it (and even over Creative's X-FI and other sound cards since they are plagued with improper output designs, low quality capacitors and terrible drivers-- requiring lots of soldering to fix it all). Another problem is that many computers are abandoning the PCI interface.

bristlehog wrote:

Vortex2 OPL3 implementation is quite inaccurate. I have such a card and it sounds weird in some DOS games, like Codename: Iceman.

I extracted a Diamond 'Monster Sound' Vortex2 card from an old computer someone gave me. I'll give the OPL3 implementation a listen and a stress test to see how it sounds. If it's like CQM it's going in the rubbish bin.

Reply 34 of 178, by PhilsComputerLab

User metadata
Rank l33t++
Rank
l33t++

This is the wrong card for OPL3 purists 😀

Every card has strengths and weaknesses, and should be used accordingly. What this card has going for it is a wavetable port that works fully under DOS.

YouTube, Facebook, Website

Reply 35 of 178, by ZanQuance

User metadata
Rank Member
Rank
Member

The OPL3 emulation is functional but *quite* bad. Same with my TB:Santa Cruz, it's almost like they are using the same EMU base code...
(Speaking of which) I've digressed in the project to look at writing a general 16-bit ASM to pseudo C helper tool, as manually porting all this is a bit tedious for one person.

Reply 36 of 178, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie

Well, I finally managed to get IDA 5 somewhat working under linux, so I was able to open the file.

I am literally blown by this!
The OPL3 emulation (and pretty much everything else like SB) core actually is a piece of software running on the CPU, instead of being a hardware/software core on the sound chip!

So when a game writes to OPL registers, the sound card just captures what was written and initiates an IRQ to execute the emulation core which will read the value back and stores it for sound data generation. The generated sound buffer is then played back by the card with DMA, and my guess is the periodic DMA transfer interrupts are the ones that trigger the core to render some new data to sound buffer and to advance the OPL timers.

Could this be licenced emulation, as the log-sin and exponential tables seem at a glance to match the tables inside a real OPL chip? Also some internal structure like 19-bit phase accumulator.

I am already seeing familiar structures and algorithms, I just need some time to sort this out.

Reply 37 of 178, by ZanQuance

User metadata
Rank Member
Rank
Member

It appears that IDA didn't export out any of the local labels or local variable names properly, so I've updated the file manually and reattached it.
It should be 1:1 progress with where I left off, but I didn't check it 100% to be sure.
Just be aware that if you use the updated version you won't have any notes if you've added any to the old file.

What's interesting is if they had a license from Yamaha for the emulation, why did Aureal file a patent for the emulation as if it were their own?
I'm thinking they might have reversed the chip themselves or wrote the emu based on what was known at the time.

In any case it sounds bad and needs updated 😉

Last edited by ZanQuance on 2015-07-16, 12:46. Edited 1 time in total.

Reply 38 of 178, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

Aureal's driver sounds like hardware-assisted or hardware-customized emulation. The end result appears to be similar to the Windows OPL3 driver developed here : Windows, Doom, Apogee OPL3 Synthesizer., but implemented so that programs can read from and write to the OPL3 directly as if it were really on the bus.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 39 of 178, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie
ZanQuance wrote:

It appears that IDA 6.5 didn't export out any of the local labels or local variable names properly, so I've updated the file manually and reattached it.
It should be 1:1 progress with where I left off, but I didn't check it 100% to be sure.
Just be aware that if you use the updated version you won't have any notes if you've added any to the old file.

Oh, I already had tons of comments and it seems there seems to be no way to merge the files. Not very collaborative tool 😀
I think I'll just use your IDA project as master, export it to text/html/whatever and do my commenting there, so when you update your file, I can re-export it, and do a merge.
Or do you have something better to suggest how to make this work if two people work on same IDA project file?

It seems quite accurate at some points, but I think there are some differences.
For example, I think it does FM instead of PM, the noise generator is definitely different, and feedback calculation is somewhat different.