VOGONS


First post, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

The Innovation SSI-2001 is a sound card and a failed an Adlib-competitor. It was a single MOS 6582 SID on an ISA card with a standard gameport and a mono RCA output, and nothing else.

The card can select from the following addresses:
280*, 2A0, 2C0, 2E0

* - default

Now, there are fine SID emulated cores like reSID out there, it should be easy to incorporate one into DOSBox for this purpose. The only question is whether the card had an address & data port or simply exposed the SID registers to the ISA bus directly. As the SID has 32 registers (29 useable) and the I/O selections are exactly 32 bytes apart, the latter is more likely. It would be easy to determine.

The Innovation SSI-2001 is confirmed to be supported in Bad Blood, Lexi-Cross & Ultima VI (where I found out about the I/O ports), and is likely supported in a few other games.

Reply 2 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Very rare, some people even doubt that it ever existed. Some good information here: http://museum.gravisultrasound.net/articles/ssi2001.htm. Looks like the card was never available in retail -- direct order only. No wonder it is so rare.

Reply 3 of 43, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

Rare and virtually unheard of, who does not want to hear genuine SID music from their PC games? It is kind of ironic that certain PC players can hear SID music in Ultima VI when the Commodore 64 players could not because the game took up too many resources for music in the C64 version.

Reply 4 of 43, by evo

User metadata
Rank Newbie
Rank
Newbie

Shouldn't be hard to find out how it is addressed by reverse engineering the drivers that ship e.g. with U6. Did someone already do this? I never programmed a SID nor did I have a C64 (was a little young that time 😀, but I'd surely be interested having Ultima 6 playing SID sounds.

Reply 5 of 43, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

Shouldn't be hard to find out how it is addressed by reverse engineering the drivers that ship e.g. with U6. Did someone already do this? I never programmed a SID nor did I have a C64 (was a little young that time , but I'd surely be interested having Ultima 6 playing SID sounds.

I don't think you even need to do that. None of the other early cards (other than the Covox) that Ultima VI supports supported hardware interrupts or DMA, so I don't believe they are used on the Innovation board. The photos we have of the board show only the SID chip and glue logic, most of that probably for the analog game port and mapping the SID to the appropriate I/O ports. Quick trial and error should determine whether my hypothesis is correct. Innovation stated that they wanted to make it as easy as possible to port sound code from the C-64 to the PC.

Reply 6 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Innovation driver file in U6 is one of the smallest audio drivers there (the only smaller driver is Roland). The file itself is barely 1K binary, should not be that difficult to analyze. Also, the game does not check for the card presense. Just setting that card and watching port 280 (or whatever you pick) may provide sufficient information.

Reply 7 of 43, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

Just setting that card and watching port 280 (or whatever you pick) may provide sufficient information.

As these things go there are really only two simple ways to address the SID chip that Innovation was likely to have used:

1. Use one I/O port to hold the SID register address, use a second I/O port to write data to designated register, or
2. Map each of the 29 SID registers sequentially between I/O ports 280 and 2A0.

You should be able to determine which method the Ultima VI driver uses by watching the default I/O range of addresses from 280-2A0. If placing an emulated SID at the appropriate addresses gives music that sounds something like the tunes as we know them, then it must work.

Reply 8 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Pretty good. Check this:

Write 0280h <- 00h
Write 0281h <- 00h
Write 0282h <- 00h
Write 0283h <- 00h
Write 0284h <- 00h
Write 0285h <- 00h
Write 0286h <- 00h
Write 0287h <- 00h
Write 0288h <- 00h
Write 0289h <- 00h
Write 028ah <- 00h
Write 028bh <- 00h
Write 028ch <- 00h
Write 028dh <- 00h
Write 028eh <- 00h
Write 028fh <- 00h
Write 0290h <- 00h
Write 0291h <- 00h
Write 0292h <- 00h
Write 0293h <- 00h
Write 0294h <- 00h
Write 0295h <- 00h
Write 0296h <- 00h
Write 0297h <- 00h
Write 0298h <- 00h
Write 0285h <- 0ch
Write 0286h <- 01h
Write 0298h <- 0fh
Write 028ch <- 0ch
Write 028dh <- 01h
Write 0298h <- 0fh
Write 0293h <- 0ch
Write 0294h <- 01h
Write 0298h <- 0fh
Write 0284h <- 20h
Write 0280h <- d0h
Write 0281h <- 04h
Write 0284h <- 21h
Write 0280h <- d0h
Write 0281h <- 04h
Write 028bh <- 20h
Write 0287h <- 43h
Write 0288h <- 13h
Write 028bh <- 21h
Write 0287h <- 43h
Write 0288h <- 13h
Write 0287h <- 3bh
Write 0288h <- 13h
Write 0287h <- 43h
Write 0288h <- 13h
Write 0287h <- 4bh
Write 0288h <- 13h
...

I should say, looks like the second case. I never had any experience with SID or SID emulation so I cannot say how easy it is to add it to DOSBox. Let's see if I can hack something.

EDIT: Not difficult at all. Got reSID 0.16 to compile with DOSBox (with only two very minor code changes), added new module, and even got some sound! Did not get correct buffer sizes yet, so there is more stutter than sound but whatever I hear sounds right.

Reply 9 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Here's the very experimental build with Innovation SSI-2001 emulation using reSID. By default, the emulation is disabled. To enable emulation, add this to [speaker] section (temporary location, will be somewhere else in the final patch):

innova=true
innovabase=280
innovahq=true

The first line will enable the emulator itself. The second line is not really necessary, it allows to configure the base port. The third line allows to control sound quality. By default it is set to false. Setting it to true produces significantly cleaner output but there will be a few seconds delay on startup, and the emulation is somewhat slower.
I tested this only with U6 so if anybody can test it with something else that would be great.
Comments welcome. I will put a few finishing touches and post a patch on SF.

EDIT: The patch is up. Configuration moved to a separate section, added more options to control output quality. Enjoy!

Attachments

  • Filename
    dosbox-innova.zip
    File size
    576.25 KiB
    Downloads
    837 downloads
    File comment
    DOSBox with Innovation emulation
    File license
    Fair use/fair dealing exception

Reply 10 of 43, by augnober

User metadata
Rank Member
Rank
Member

Here's the very experimental build with Innovation SSI-2001 emulation using reSID.

Wow. Nice work 😀. I was going to try this out.. but it needs zlib1.dll. I copied one into the directory myself, but it exited with "The ordinal 60 could not be located in the dynamic link library zlib1.dll.".

Reply 12 of 43, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

It really works in Ultima VI and Bad Blood! However with 3 channels of the SID vs. the 9 or 11 channels of the Adlib shows that the sound quality had to be sacrificed for support. I hope this patch is added to the other CVS builds, it is great. Regardless of whether the SSI-2001 ever existed or was offered in retail, the music is there and can be heard. In fact, we are probably the first people who have heard it in over a decade.

Reply 13 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Battletech 2 also works great -- apparently, even routes voice through Innovation card. The voice quality is actually better than Adlib.
Red Storm Rising works as well. Makes me think that some other Microprose games of the same time should have support but the only other game listed on Mobygames (F-19) does not have that option. Thinking of it, F-19 does not have any sound options at all. I've double-checked F-19 package and it does not mention Innovation anywhere. Before anybody asks, I've checked F-117 package, Innovation is not listed there either.
The rest of Mobygames list is quite inaccurate. Neither Lexi-Cross nor Asterix have support for Innovation. Asterix just supports Intersound MDO which is a Covox variant. No idea about Airball and Castles though.
Interestingly enough, we still have compatible games from three different companies -- Origin, Activision (Infocom label), and Microprose. At the very least, this proves that the card existed, even if only in engineering samples. I also expect that there were some other unlisted games that supported it.

Reply 14 of 43, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

Neither Lexi-Cross nor Asterix have support for Innovation

Are you sure about Lexi-Cross? On the Lexi-Cross box on MobyGames it mentions Innovation on the list of supported sound cards (partially obscured by the watermark.)

Reply 15 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Odd. It's very readable and says "Innovation," no mistake there. But the only version of Lexi-Cross I could find has only selections NONE, TANDY, ROLAND, ADLIB, SOUND BLASTER (it is not obvious how to access sound setup -- use "lex.exe !"). Either there are multiple versions of the game or the box was wrong.

Reply 16 of 43, by ih8registrations

User metadata
Rank Oldbie
Rank
Oldbie

DLL nightmare. This build wants libpng13d.dll. Renaming libpng13 from your package, the build then complains about not locating SDL_strlcpy in SDL.dll. Probably be best to include the dll's you use next time.

Reply 17 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

It wants "d" library? I'll have to check, this is not entirely right. In any case, my version of the library is attached. I did not want to upload too much stuff to the forum. I hope that ykhwong will pick the patch in a day or two, things will become much easier then.
Just in case, adding zlib1.dll, sdl.dll, and sdl_net.dll -- that should take care of all dependencies.

Attachments

  • Filename
    libpng13d.zip
    File size
    68.88 KiB
    Downloads
    890 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    zlib1.zip
    File size
    33.56 KiB
    Downloads
    804 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    sdl.zip
    File size
    115.93 KiB
    Downloads
    778 downloads
    File license
    Fair use/fair dealing exception

Reply 18 of 43, by ih8registrations

User metadata
Rank Oldbie
Rank
Oldbie

F-19 works. I've attached a sound selection batch file I made awhile back for f-19(rename f19.com to f19sf.com so typing "f19" will run f19.bat) , along with the sound drivers. How do you configure batteltech for innovation output?(scratch that, the copy I had was incomplete, underdogs copy has the setup.exe)

bsound.xxx is the sound driver for innovation in f19 and redstorm. Doing a file search for it on the mps games I have installed show the following have a bsound: f19, redstorm, subwar, jumpjet, greens(David Leadbetter's Greens (a.k.a. MicroProse Golf)), and f1gp. For sure in jumpjet though, bsound stands for beeper sound.

Attachments

  • Filename
    f19sound.rar
    File size
    20.28 KiB
    Downloads
    827 downloads
    File license
    Fair use/fair dealing exception

Reply 19 of 43, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

Ah, just run f19.com with switch /ab (or /aa for Adlib, etc.) I own two copies of F-19 but one of them is the original 5.25" floppy version with copy protection, and the other is "Player's Choice" with that stupid installer that does not work properly with DOSBox yet, and does not offer Innovation as sound choice (has like 10 different selections for Sound Blaster, even if the original game supports Adlib only).
So, do any of the other MPS games actually work with bsound? MPS was quite consistent in the use of libraries and technologies.