• Please review our updated Terms and Rules here

Gravis Ultrasound Classic vs PnP

eeguru

Veteran Member
Joined
Mar 14, 2011
Messages
1,618
Location
Atlanta, GA, USA
From my understanding the AMD Interwave generally added the following enhancements over the Gravis/Forte GF1:

  1. Ability to address up to 24 bits of RAM/Flash (16 MB) vs 20 bits for the GF1 (1 MB).
  2. Additional DMA on-the-fly transforms such as 16-bit signed conversion and auto-interleaving
  3. Additional mappable general purpose registers with interrupt triggers to better facilitate Adlib, Sound Blaster, and MPU-401 emulation
  4. Full 44.1 KHz @ 32 voices - but this wasn't a functional change; only a qualitative one.
  5. Built-in direct codec to replace the Crystal add-on daughter board for the GUS (built into the GUS MAX as well)
  6. Additional effect channel per voice
  7. Volume and frequency LFOs per voice
  8. Ability to play stereo samples per voice (LR offset regs)
  9. More comprehensive mixer (later ICS)
  10. ISA Plug-n-Play support (a curse - not a feature!)

What software existed that took advantage of the extra features the AMD Interwave added on top of the GF1? And to what degree was it used in the market? And which features?

Were there games with specific Interwave support that sounded better than a GUS Classic?

Were there trackers/players that sounded better with IW support? Or used less CPU? I know from experience voice frequency modulation had to be adjusted manually via the 80 us update timer on the classic. The IW could do it with a LFO but I assume it would only ease CPU load and not sound better.

And I'm not considering emulation. I realize with the IW shadow registers, a soft MIDI emulator, and a rich patch set in the extended memory, Roland MT-32 emulation, for example, would sound much better and work better on the Interwave.

I'm more asking what 'sounded better' on the IW vs GF1 and why?

Thanks.
 
For me, the pnp allows me to disable everything on the board excpet the IW chip so it can co-exist with my awe32 without using all the IRQ's and DMA's. I only use mine in DOS (demos, diskmags, trackers), and they all expect GF1 level hardware.
 
AFAIK the only wide-spread software I can find is the distribution software that came with IW based cards and a few music players like Cubic.

The main enhancement in the IW distribution is ultramid/megaem which is the MIDI emulator. For Interwave cards with ROM, it turns on voices redirected at a larger GM patch set in that ROM for MIDI note playback instead of uploading a smaller patch set to RAM.

Cubic is interesting. I a) has a Dual GUS mode which allows random fade panning (back/front) of voices for a more 3D surround effect. And b) has the ability to turn on some reverb using the IW effects for a virtual 3D mode.

I'm still working on my GF1 emulation and trying to figure out if IW emulation is really a 'needed thing'. It seems 99.999% of all GUS software written only supports vanilla GF1. Since I can support mapping tons of RAM and ROM to the emulator, I figured I would support the extended addressing of the Interwave. But what little software that currently exists to use it will likely try to also use the effects channels that will not be emulated. /shrug. I guess I can always implement the effects channels later.
 
If you can find 10 or more pieces of software that support the effects channels -- and that may require you to dip into Windows drivers or something -- then I'd say it's worth looking into. If Cubic Player is the only thing that supports it, don't bother.
 
I have a vague memory of one thing I did not expect was that the RAM on the IW wraps, when I was probing ram to see how much was there it would go into an infinite loop and I worked out that addresses that exceeded the capacity were wrapped. It was not behaviour I expected!
 
I have a vague memory of one thing I did not expect was that the RAM on the IW wraps, when I was probing ram to see how much was there it would go into an infinite loop and I worked out that addresses that exceeded the capacity were wrapped. It was not behaviour I expected!

I would be surprised if the IW actually polled RAM on init just to mask off upper address bits. Maybe. There was a lot of state in the LMC. But I'm fairly certain the A23-A20 bits in the voice, LMC, and DMA registers didn't enable until you triggered the enhanced mode operation. Maybe it appears to wrap because of that?

I've been struggling to find an accurate register level reference for the GF1. The best sources have been the Interwave Programmer's Manual which rarely calls out differences with the GF1 and sometimes not even with non-vs-enhanced mode, and looking at the DOSBOX and QEMU emulator sources - which have a LOT of small bugs in both. I may try and back patch the later two once my emulator is done.

But thanks for the tip. That's something I'll test.
 
and looking at the DOSBOX and QEMU emulator sources - which have a LOT of small bugs in both.

My mem test code worked on dosbox, but not my real pnp gus.. (I know, dosbox is only supposed to be 'gf1'ish.).

It was a basic loop, write 0x55AA to an address1, write 0xAA55 to address2, read it back the first address, if it matched, add 64kb to the address and keep going.

I wrote another version that I didnt get time to test, that each time I wrote higher in ram, i tested a value in the 0-64kb range that would match where the wrapped value would be. That would tell me if I was correct or not..

I should pull that out on the weekend and try it.
 
So, I was messing with my memory detect routine and I put a trap into the lower 512kb to check if a write wrapped... and suddenly everything was tapping out at 1mb.

I wonder, if the IW chip starts in like a 'default' GF1 mode and wraps all memory read/writes to 1mb.

I need to look at the linux driver and see how it differentiates GF1 vs IW.

It would kinda make sense to me, anything not IW aware would see GF1 behaviour.

(ok. i dig aroundin the amd datasheet pdf and the programming pdf)

"To maintain compatibility with software written for the GUS, the two most significant bits of the synthesizer address in all synthesizer registers (address bits 21–20) and the four most significant bits of the local memory address in all local memory address registers (address bits 23–20) are held Low (0) when the InterWave IC is in GUS-Compatibility mode."

So I see what I am hitting now.
 
since I cant edit my post, once I enabled the Enhanced Mode bit for IW, my code code is detecting 8mb which is correct for my cards ram. Reading the enhanced mode bit back is showing me if its an IW or GF1 card. nice.
 
There is much larger register file with the IW. The LMC configuration register (52h) should tell you the DRAM and ROM configuration of the IW in a few of its bits.

I'm trying to figure out if I need a mode where it totally blacks-out the IW specific registers and bits or if the IW is truely a pure super-set of the GF1; eg will the older SB/MIDI emulation utilities run on the IW unchanged.
 
Back
Top