Opened 15 years ago

Closed 8 years ago

Last modified 12 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 15 years ago.
Clip of CMS/Gameblaster Monkey Island 1 Intro
pcjr_monkeyisland.ogg (138.9 KB ) - added by SF/tbcarey 15 years ago.
Clip of PCjr/Tandy Sounds Monkey Island 1 Intro

Download all attachments as: .zip

Change History (18)

by SF/tbcarey, 15 years ago

Clip of CMS/Gameblaster Monkey Island 1 Intro

by SF/tbcarey, 15 years ago

Attachment: pcjr_monkeyisland.ogg added

Clip of PCjr/Tandy Sounds Monkey Island 1 Intro

comment:1 by sev-, 15 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, 15 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, 15 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, 15 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, 15 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-, 15 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-, 15 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, 15 years ago

Does that number of games warrant inclusion? Just curious.

comment:9 by sev-, 15 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, 15 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-, 15 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, 12 years ago

Summary: CMS/Gameblaster EmulationAUDIO: CMS/Gameblaster Emulation

comment:14 by lordhoto, 8 years ago

Owner: set to lordhoto
Status: newclosed

comment:15 by lordhoto, 8 years ago

This has been implemented now.

comment:16 by digitall, 12 months ago

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