Opened 20 years ago
Closed 18 years ago
#1956 closed defect (fixed)
SIMON1/2: GM System On Required
Reported by: | SF/tbcarey | Owned by: | fingolfin |
---|---|---|---|
Priority: | normal | Component: | Engine: AGOS |
Version: | Keywords: | ||
Cc: | Game: | Simon the Sorcerer 1 |
Description
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)
Change History (13)
by , 20 years ago
Attachment: | sim1dtempo.diff added |
---|
comment:1 by , 20 years ago
Owner: | set to |
---|
comment:3 by , 19 years ago
Component: | Engine: AGOS → Engine: AGI |
---|---|
Game: | Simon the Sorcerer 1 → Space Quest 1 |
comment:5 by , 19 years ago
Owner: | removed |
---|
comment:6 by , 19 years ago
Summary: | SIMON1DEMO: Incorrect tempo + GM System On Required → SIMON1/2: GM System On Required |
---|
comment:7 by , 19 years ago
Unchanged, the GM System On command SysEx message still needs to be added to the Simon engine.
comment:8 by , 18 years ago
Component: | Engine: AGI → Engine: AGOS |
---|---|
Game: | Space Quest 1 → Simon the Sorcerer 1 |
comment:9 by , 18 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 , 18 years ago
Looking it up, the SysEx suggested here is called "GM System Enable" (see <http://www.borg.com/~jglatt/tech/midispec/sysen.htm>) 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 , 18 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:12 by , 18 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 ;).
Simon1Demo Tempo Fix