Opened 15 years ago

Closed 13 years ago

#1956 closed defect (fixed)

SIMON1/2: GM System On Required

Reported by: SF/tbcarey Owned by: fingolfin
Priority: normal Component: Engine: AGOS
Keywords: Cc:
Game: Simon the Sorcerer 1


Simon1Demo currently plays music at the incorrect
tempo. It ought to play at 75% the speed it does now. I
found it easy to fix this by changing the value of
setTempo in MidiParser_S1D::loadMusic; however, it
could have also been fixed by multiplying the result of
getBaseTempo by 0.75 in MidiPlayer::loadS1D at
parser->setTimerRate(_driver->getBaseTempo()), and I'm
sure there's even a much better way to do it than
either of those. In any case, I've attached a patch
that changes the setTempo value.

Additionally, all versions of Simon require a GM System
On command to be sent during initialization. The SysEx
message is F0 7E 7F 09 01 F7 and only need be sent once
during start-up, not at every song load. Simon games
don't use SysEx so there's no way to send one right
now. I'm sure it would be easy to set it up to do so,
but I am no coder - so if someone could please just add
that one message, it'd be great. Thanks!

Ticket imported from: #1164263. Ticket imported from: bugs/1956.

Attachments (1)

sim1dtempo.diff (603 bytes ) - added by SF/tbcarey 15 years ago.
Simon1Demo Tempo Fix

Download all attachments as: .zip

Change History (13)

by SF/tbcarey, 15 years ago

Attachment: sim1dtempo.diff added

Simon1Demo Tempo Fix

comment:1 by Kirben, 15 years ago

Owner: set to SF/jamieson630

comment:2 by Kirben, 15 years ago

I added the tempo correction for simon1demo.

comment:3 by fingolfin, 14 years ago

Component: Engine: AGOSEngine: AGI
Game: Simon the Sorcerer 1Space Quest 1

comment:4 by fingolfin, 14 years ago

What is the status of this item?

comment:5 by fingolfin, 14 years ago

Owner: SF/jamieson630 removed

comment:6 by Kirben, 14 years ago

Summary: SIMON1DEMO: Incorrect tempo + GM System On RequiredSIMON1/2: GM System On Required

comment:7 by Kirben, 14 years ago

Unchanged, the GM System On command SysEx message still
needs to be added to the Simon engine.

comment:8 by Kirben, 13 years ago

Component: Engine: AGIEngine: AGOS
Game: Space Quest 1Simon the Sorcerer 1

comment:9 by fingolfin, 13 years ago

So, what's holding up this one?

Personally, I have no idea why Simon requires the GM System On (it would be nice if somebody -- tbcarey? -- could explain this).

But technically, doing it would be rather simple, wouldn't it? Just modify e.g. MidiPlayer::open(), and add the appropriate code, something like this (untested, might not even compile):
const byte gmSystemOn[] = { 0xF0, 0x7E, 0x7F, 0x09, 0x01, 0xF7 };
_driver->sysEx(gmSystemOn, sizeof(gmSystemOn));

Well, of course there is also bug #1231434 to take into account (I'll look into that soon). But other than that... ?

comment:10 by fingolfin, 13 years ago

Looking it up, the SysEx suggested here is called "GM System Enable" (see <>) and meant to ensure that the MIDI device is in General MIDI mode (and not something else). So if Simon always expects to be using a GM device, that's probably a good idea (although not all MIDI devices will handle this sysex), of course.

comment:11 by fingolfin, 13 years ago

Owner: set to fingolfin
Resolution: fixed
Status: newclosed

comment:12 by fingolfin, 13 years ago

Ah well, so I thought, why wait yet another year *g* and just went ahean, implementing this in SVN. If it causes any odd regressions, you know how to find me ;).

Note: See TracTickets for help on using tickets.