VOGONS


First post, by carlostex

User metadata
Rank l33t
Rank
l33t

Hi there, what is this all about?

Are you a CMS/Game Blaster original card owner? Have you tried using it alongside a Sound Blaster Pro, later or compatible? If you did keep reading and for the ones who did not, or never had that chance let me explain.

THE PROBLEM AND SOLUTIONS

The default address for the CMS/ Game Blaster card is 220h. This is not a huge issue except 220h is also the default address for Sound Blasters and compatibles. In practice, what is the downside of using both cards in the 220h address? Well, firstly you'll notice that the CMSDRV driver for the CMS won't work correctyl due to an hardware conflict, which will prevent you from running CMS original software and demos. Still not a big issue? Try to run a game selecting CMS and while your CMS card will play, you'll also have to listen to annoying noises coming from your Sound Blaster card, crackingling and popping right away as the SB card is confused by what is being written to the CMS chips on the fly. So...a few solutions: a) remove the CMS card, not too many games support it; b) Replace the SB Pro, SB16, clone whatever with a Sound Blaster 1.0, 1.5, 2.0, Sound Machine clone or ATI Stereo F/X; c) Keep both cards in the machine but move the CMS to a different port; d) Keep both cards in the machine but move the SB Pro etc... card to another port; e) get rid of all your hardware and just use DOSBox, why even bother?

ANALIZING THE SOLUTIONS

So option A is clearly the "why should i even bother with CMS" option which in reality would be a choice a lot of people would consider. Let's face it, only a few select games, like Times of Lore for instance, use it really well and AdLib/SB will sound better 99% of the time. But in my case this was not an option, i want my 386 to be a "chiptunes" machine, so taking this option would be giving up, and i don't do that easily. Discarded.

Option B is one good solution for stubborn people who would insist on having CMS sound on their machines. It has indeed some advantages so let's see: you'll save an ISA slot, you'll avoid the crackling/popping noises of a dedicated card setup, you can keep everything standard using default 220h address without any major issues and it would be period correct on a 286/386. Now the disadvantages: In my case i would lose OPL2 capability via the Sound Blaster Pro 1 which i wouldn't want to. There is Ultima Underworld and some Microprose titles that sound great with the OPL2 capability. With a chiptune mentality in mind for this 386, the dual OPL2 just had to be present. If i were to use a SB + CMS on 1 card my choice would be the ATI Stereo F/X.

Option C and D present the same problem which would be inverted in any case. So i decided that changing the port on the CMS was the right solution. Making this change allowed me to use the CMS software without any problems, but a bigger issue had to arrive. Most games with CMS support do not allow the user to select the port so the default value of 220h is hardcoded within the games, so the games need patching. Because there are a LOT less games with CMS than SB support, option C was clearly the most reasonable one. Still, its a taks not easy to pull off, specially if you never programmed in assembly, but still i decided to roll up my sleeves, apply some grease on my elbows and get to work. There was no turning back at this point, so my goal was to patch (or make possible to) every single game with CMS support.

SETTING A NEW STANDARD

Even though the goal of this project is to make it possible for the user to patch his address of choice for his/her original CMS/Game Blaster cards, i had a little thought about this and i would like to push a new default CMS port for everyone. I chose port 210h, for a few reasons. Firstly, the CMS/Game Blaster was the first commercially available audio product for the IBM PC platform. SInce Sound Blasters who came to dominate the market used 220h and were released later, then CMS should get an earlier port. Port 240h was commonly used by GUS cards when setup alongside a SB card, or even 260h which i use exclusively for GUS on all my builds. Port 230h seems to also be a bad idea, since i think SB Pro's use the 220 - 23F range. In the same way it could conflict with an IBM Music Feature card if the latter is set to 2A30. Another choice would be port 250h, but again that might be a bad idea if someone wants to use a card at 240h that might use a 1Fh range. The possibility of something else using port 210h along of a CMS card is pretty low.
So yes, everyone is free to set whatever port they would like, but IMO port 210h should be the way to go.

IS THIS PROJECT COMPLETE?

Almost. Although pretty much every game has now a patching solution this project has a secondary goal. As some of you might know, a real CMS/Game Blaster uses a custom chip for detection, since the Phillips SAA chips can't be detected by software. So some games that rely on the card detection feature will not play CMS sound on a SB card with CMS chips installed. The secondary goal is to make ALL games that require a true CMS/Game Blaster card to also play just as well on a SB+CMS card. A couple of these games have already been patched.

SO MUCH YADA, YADA, YADA WHEN WILL YOU RELEASE THIS?

Later. I just wanted to make the anouncement, but i will release the instruction document in a couple of days, as i have to give credit where credit is due, and i will also upload files for games that need well...patched files. Some games have encrypted files that needed to be decrypted first, patched, and encrypted back again. Some of those files had to be patched while including game cracks, so i won't be uploading these files here on Vogons. However i have green light and some space on the oldskool.org ftp, courtesy of Jim Leonard aka Trixter aka MobyGamer.

With the instruction document you'll be able to patch most of the games yourself. Keep in mind that i worked with some specific game versions, so if you can't patch it yourself that might be the reason. If there is good enough reasons to, i don't see why multiple versions shouldn't be patched too.

SPECIAL THANKS

My special thanks go to Scali, for his incredible patience with this and for having the balls to get out of his comfort zone, all in the sake of science of retro computing. Also special thanks to the guru master NewRisingSun, which i'm sure i managed to annoy, who with his amazing talent and experience pulled off probably the hardest patches of all this project in an instant. Without them, this project wouldn't reach its end, for sure.
My thanks go also to ripsaw8080, who helped me a lot in the Tandy Sound Card patching project, and taught me that anyone can learn, if they wish. You can't just ask for the fish, you need to try and catch it yourself!

INSTRUCTION FILE BELOW:

Filename
CMS Patching documentation.txt
File size
8.57 KiB
Downloads
359 downloads
File license
Fair use/fair dealing exception

Keep in mind, that some of these patches might not work with all game versions. I've made the huge mistake of not documenting which version was patched, so this is info i still need to add.
Also i haven't got Death Knights of Krynn working yet, but i figured just one game shouldn't stop the release.

For games that need files, i will be uploading them soon on the oldskool.org ftp. Some games have patched .EXE's that rely on copy protection, and it's against the rules to upload them here. Stay tuned.

Last edited by carlostex on 2018-03-09, 09:32. Edited 1 time in total.

Reply 1 of 25, by keropi

User metadata
Rank l33t++
Rank
l33t++

What an excellent idea/project Carlos - can't wait for the release! I just used CT1320/1350 for CMS compatibility and I assume this whole project will also be useful for the upcoming LPTCMS device by dreamblaster.
Kudos to you and everyone involved 😀

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

Reply 2 of 25, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie

A neat solution with patching.

FYI, I solved this issue a while ago with a simple switch which requires no patching, so that both Game Blaster/ CMS and Sound Blaster Pro 1 could live together:

"- For the Sound Blaster Pro 1, removing jumper from port 220 disables the card, so that others can work alongside it and use its DMAs and IRQs.

- For the Game Blaster, if all other cards are disabled, it can live on port 220, which is the most compatible. It also needs no DMA, nor IRQs; minimising conflicts. "

WIP 1: Ezra-T slow-down machine, S370 industrial build...

You just need to enable/ disable the SB with a toggle switch.

Reply 4 of 25, by carlostex

User metadata
Rank l33t
Rank
l33t
Plasma wrote:

I guess I'm confused. Yes 220h is the default SB port, but is it hard coded into any games? That's what SET BLASTER is for...

Just for instance, i never got Wing Commander 2 to work with 240h. Now i'm totally brain farted if i forgot to change the SET BLASTER environment. But anyway, do all games look into the SET BLASTER environment? I could swear there were hardcoded SB games. I've gotta look into this.

EDIT: Patching instruction file has now been added to the first post.

Reply 5 of 25, by carlostex

User metadata
Rank l33t
Rank
l33t
keropi wrote:

What an excellent idea/project Carlos - can't wait for the release! I just used CT1320/1350 for CMS compatibility and I assume this whole project will also be useful for the upcoming LPTCMS device by dreamblaster.
Kudos to you and everyone involved 😀

Indeed Leo, if Plasma is right though i wasted mine an others time on this patching project, but at least the LPTCMS will definitely benefit from it.

Reply 7 of 25, by keropi

User metadata
Rank l33t++
Rank
l33t++

^ yeah - personally I like the patching way better so still excited to have this released

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

Reply 8 of 25, by Plasma

User metadata
Rank Member
Rank
Member
j^aws wrote:

I'm pretty sure SET BLASTER doesn't force port usage in all cases.

I didn't say it did. But I don't think there are any games with SB hard coded to use port 220, since even SB 1.0 had base I/O jumpers. If BLASTER isn't used directly there will be a setup program, config file, or switch to set the port. If you want to keep your SB at port 220 because you're OCD or whatever, that's cool...but I think the notion that it HAS to be at 220 is misconceived.

Reply 9 of 25, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie
Plasma wrote:
j^aws wrote:

I'm pretty sure SET BLASTER doesn't force port usage in all cases.

I didn't say it did. But I don't think there are any games with SB hard coded to use port 220, since even SB 1.0 had base I/O jumpers. If BLASTER isn't used directly there will be a setup program, config file, or switch to set the port. If you want to keep your SB at port 220 because you're OCD or whatever, that's cool...but I think the notion that it HAS to be at 220 is misconceived.

I messed around with this years ago with multiple sound cards, and 240 wasn't compatible with everything. Didn't note what games/ demos didn't work, but 220, 5,1 and 220, 7, 1 were the most compatible. If you can keep your settings to those, then there is no point in using 240.

Reply 10 of 25, by Plasma

User metadata
Rank Member
Rank
Member

The "point" would be to avoid having to patch all your CMS games. I'm willing to bet the list of games hard coded to use a SB at 220 only is much smaller than the list of CMS games. But to each his own.

Reply 11 of 25, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie
Plasma wrote:

The "point" would be to avoid having to patch all your CMS games. I'm willing to bet the list of games hard coded to use a SB at 220 only is much smaller than the list of CMS games. But to each his own.

I did this without patching CMS games, so no point. However, more options aren't a bad thing.

Reply 13 of 25, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie
Plasma wrote:

Did what? Had a SB and CMS coexist?

Six sound cards coexist with default settings:

WIP 1: Ezra-T slow-down machine, S370 industrial build...

The main four:

AWE32
SB Pro 1
CMS
GUS MAX

Just those cover a very large ground.

Reply 15 of 25, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie
Plasma wrote:

In your post you said you had to disable all the other cards for the CMS to work on port 220. I wouldn't call that coexisting.

I'm not going to argue semantics, but these cards are simply enabled/ disabled with simple batch files or switches. They all live in the same motherboard together and coexist. You only need one card enabled for an application/ game / demo anyway. It's simpler than it sounds when setup correctly.

Reply 17 of 25, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie
Plasma wrote:

What if you want to use one card for music and another for sound? That's why I don't call it coexisting.

I have an extensive range of external MIDI models: Roland, Yamaha, EMU, Ensoniq and Korg for music, and my sound card of choice for sound. Really flexible.

Reply 18 of 25, by Scali

User metadata
Rank l33t
Rank
l33t
Plasma wrote:

I didn't say it did. But I don't think there are any games with SB hard coded to use port 220, since even SB 1.0 had base I/O jumpers.

Even the Game Blaster had base I/O jumpers... In fact, it has the most of any card I've ever seen, ranging from 210h-260h.
But most Game Blaster software is hardcoded to 220h.
It's not as bad with Sound Blaster, but still, there is a significant amount of software that is hardcoded.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 19 of 25, by Scali

User metadata
Rank l33t
Rank
l33t
j^aws wrote:

You just need to enable/ disable the SB with a toggle switch.

I did something like that with my SB Pro 2/GUS MAX setup as well...
Except I used a slightly fancier toggle switch:
I flipped address 220h and 240h around between SB Pro 2 and GUS.
My default was SB Pro 2 at 220h, and GUS at 240h.
But there was some software that only worked with the GUS at 220h, so I could flip them around, and still keep the SB Pro 2 available at 240h.
I rarely ever used the SB Pro 2 at that address though, so I don't know how compatible it was with software.

I had a companion .bat file which set up the correct BLASTER and ULTRASND variables, and re-ran the GUS init program, so both cards were correctly reconfigured after you changed the switch.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/