Opened 16 years ago

Closed 9 years ago

Last modified 21 months ago

#7388 closed enhancement

AUDIO: CMS/Gameblaster Emulation

Reported by: SF/tbcarey Owned by: lordhoto
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Monkey Island 1

Description

I don't know if this has been discussed before, but I thought I'd make the request anyway.

In both Monkey Island 1 PC Floppy [EGA/VGA versions] and Loom PC Floppy [EGA], CMS/Gameblaster support is not available. I don't know whether this applies to more games that pre-date them, although obviously they were the last two games to support it.

I realize that PCjr/Tandy Sounds emulation is active, and the Gameblaster/CMS' "overall sound" is fairly similar to it, but the way both are utilized in Loom and MI1 is fairly different. The original PCjr soundtrack is extremely like the PC Speaker one, whereas the Gameblaster soundtrack is far more melodic [I believe it uses almost all of the Gameblaster's 12 channels, as opposed to the PCjr's 3, but I could be wrong]. I have included samples of both to highlight the distinction.

Gameblaster support has been added to DOSBox, where it was originally taken from MAME's source, I believe. I don't think it would be a very difficult task to implement support for it since it's probably extremely similar to PCjr/Tandy sounds emulation, just with 9 more operators.

Ticket imported from: #1040167. Ticket imported from: feature-requests/204.

Attachments (2)

gameblaster_monkeyisland.ogg (212.9 KB ) - added by SF/tbcarey 16 years ago.
Clip of CMS/Gameblaster Monkey Island 1 Intro
pcjr_monkeyisland.ogg (138.9 KB ) - added by SF/tbcarey 16 years ago.
Clip of PCjr/Tandy Sounds Monkey Island 1 Intro

Download all attachments as: .zip

Change History (18)

by SF/tbcarey, 16 years ago

Clip of CMS/Gameblaster Monkey Island 1 Intro

by SF/tbcarey, 16 years ago

Attachment: pcjr_monkeyisland.ogg added

Clip of PCjr/Tandy Sounds Monkey Island 1 Intro

comment:1 by sev-, 16 years ago

What about OPL2 aka Adlib emulation which is also present in ScummVM? Is there advantages of Gameblaster except stereo over Adlib? (I mean in case of ScummVM)

comment:2 by SF/tbcarey, 16 years ago

There are no 'advantages' over OPL/2 emulation -- CMS came out around the same time and was inferior to OPL/2 [Adlib].. it rests somewhere between PCjr and Adlib. However, it was definitely a 'unique' sounding device that's worth emulating for nostalgic reasons.

Additionally, many of the songs are skipped when using PCjr/Tandy Sounds -- I believe it only plays the same songs as the Internal Speaker, which are few and far between. The Gameblaster, however, plays all songs that Adlib/OPL2 and Roland/MT-32 do.

It's definitely a worthy addition, if not only to reproduce an element of several early Lucasfilm games that is currently missing. Also, I'm just a big fan of that old-school sine/tri/square-wave sound :)

comment:3 by SF/tbcarey, 16 years ago

Just to clarify, OPL/2 or Adlib is FM synthesis, while CMS/Gameblaster is simply sinewave and noise generation, nothing more. As you mention, CMS/Gameblaster was stereo while OPL/2 was mono, but that has little bearing on the overall comparison considering they utilize two totally different types of sound generation.

According to one FAQ author, "...the GameBlaster chips are really easy to program (due to the fact that it can't do anything)". Apparently it's only a matter of producing 12 sine waves of specific frequencies and magnitudes, and a simple noise channel. The FAQ is here if it can be of any help in implementing CMS/Gameblaster support:

http://www.arl.wustl.edu/~lockwood/class/cse306-s04/resources/gpe/gameblst.txt.html

One of the main reasons I can see for implementing it is that it is technically different from both the PCjr and Adlib, so merits inclusion due to its variance, but also because PCjr music on almost all Lucasfilm/Lucasarts games is practically identical to the internal speaker music, making it an inadequate substitute.

I hope this gets implemented, anyway!

comment:4 by SF/tbcarey, 16 years ago

Sorry to keep adding more comments. I just thought I'd add that after some research, I found out that two additional LucasArts titles supported CMS/Gameblaster -- 'Indiana Jones and the Last Crusade' and 'Night Shift', though I suppose the latter doesn't apply since it's not a SCUMM game.

That brings the total number of SCUMM games supporting CMS/Gameblaster to 3: 'Indiana Jones and the Last Crusade', 'Loom', and 'The Secret of Monkey Island'.

Again, hope that helps is some way and isn't a bother.

comment:5 by SF/kaminari, 16 years ago

I think it's the same sound device that Nagi or Sarien uses by default instead of PCjr in the early AGI games, and you can tell it definitely sounds better than the latter (which is merely a three-voice speaker). I agree that it's unique PSG rendering has a real appeal, especially in Space Quest 3. I'd love to hear it in CMS-enabled Scumm games :)

comment:6 by sev-, 16 years ago

hmm. according to mobygames that's Indiana Jones and the last Crusade: Graphic Adventure which has CMS support. That means that only 2 titles are supported. Neither one of other engine games do use CMS.

comment:7 by sev-, 16 years ago

oops. DIdn't check the screenshots and now I see that that is complete game name. Never thought about it. There are three games which do use CMS:

monkey1 loom indy3

comment:8 by SF/tbcarey, 16 years ago

Does that number of games warrant inclusion? Just curious.

comment:9 by sev-, 16 years ago

I took a look on how to implement it. Unfortunately it appeared to be much more difficult task than I thought before. CMS is port-driven, i.e. it works by writing some simple instructions to ports 0x220-0x223. It has its own set of command, so support of it will require another parser and in original they're quite complicated.

Though I still would like to see it implemented someday.

comment:10 by SF/tbcarey, 16 years ago

DOSBox has CMS emulation built-in. Since DOSBox is open source, I'm assuming it'd be easy to implement the emulation code into ScummVM after speaking with/crediting the developers, right?

comment:11 by sev-, 16 years ago

No, that's the point. Dosbox emulates processor/interrupts/ports. Original SCUMM engine parsed music data and fed CMS ports with instructions. That means that we have to implemet same parser for ScummVM. After that there will be an easy part: incorporate dosbox's Gameblaster implementation.

Parser there is not that simple, though I didn't compare it with our already implemented PC speaker parser, maybe they're similiar enough and major parts of it may be reused, but there is not manpower to perform the task now.

comment:12 by Kirben, 15 years ago

Just a note for reference: VAR(VAR_SOUNDCARD) should be set to 2 for CMS/Gameblaster sound.

There is a check against VAR(VAR_SOUNDCARD) in script (room 2 script 209) of Loom[EGA], which alters soundtrack credits based on its value.

comment:13 by fingolfin, 13 years ago

Summary: CMS/Gameblaster EmulationAUDIO: CMS/Gameblaster Emulation

comment:14 by lordhoto, 9 years ago

Owner: set to lordhoto
Status: newclosed

comment:15 by lordhoto, 9 years ago

This has been implemented now.

comment:16 by digitall, 21 months ago

Component: Engine: SCUMM
Game: Monkey Island 1
Note: See TracTickets for help on using tickets.