Opened 16 years ago

Closed 16 years ago

Last modified 13 months ago

#8292 closed patch (wontfix)

Voice & subtitles in Simon2

Reported by: SF/jellby Owned by: Kirben
Priority: normal Component: Engine: AGOS
Keywords: Cc:
Game: Simon the Sorcerer 2


Many people, myself included, would like to have both voices and
subtitles in Simon2. Since this was not supported in the original
interpreter, it will probably never be a feature in ScummVM. Anyway,
I've been hacking around with the files and I think I've reached the
point where the hack "sort of" works.

It's an ugly hack (just commenting out some lines), but it's the best I
could do. Sometimes the subtitles disappear too quickly to be
properly read, but it's better than nothing, most of the time it seems
to work quite fine. Please understand that this is by no means official
and I'm not an expert programmer, so... you know.

To apply the patch you need the sources, of course. After unzipping,
run (under linux)

# patch -p0 < simon.cpp
# patch -p0 < items.cpp

It should be fine, the changed lines are labelled "ifg".

Ticket imported from: #829785. Ticket imported from: patches/397.

Attachments (1) (1.4 KB ) - added by SF/jellby 16 years ago.
Ugly patch for simon.cpp and items.cpp

Download all attachments as: .zip

Change History (9)

by SF/jellby, 16 years ago

Attachment: added

Ugly patch for simon.cpp and items.cpp

comment:1 by Kirben, 16 years ago

Owner: set to Kirben

comment:2 by SF/jellby, 16 years ago

I was playing a bit more and found some hang-ups in the game, where a
text line disappeared too quickly, before the character was finished talking..

I've been able to solve it with this change in simon.cpp (around line 3990):

if (speech_id == 0xFFFF) {
// if (_subtitles)
// return;
if (!(_bit_array[0] & 0x4000) && !(_bit_array[1] & 0x100
0)) {
_bit_array[0] |= 0x4000;
_variableArray[100] = 5;
start_vga_code(4, 1, 0x1e, 0, 0, 0);
// next line added
_skip_vga_wait = true;
// _skip_vga_wait = true;

But, still, there are some times where "_skip_vga_wait" is not needed, but I
don't know how to catch them. For example:

- When talking to the man tied to the rock in the island, "I'm being tortured"
doesn't even appear". The skip is not needed.

- When the two yellow beasts appear in Calypso's shop, the skip is needed,
otherwise the game hangs.

comment:3 by Kirben, 16 years ago

Resolution: wontfix
Status: newclosed

comment:4 by Kirben, 16 years ago

I found out recently that the Amiga and Macintosh ports of
Simon the Sorcerer 2 actually offered the option of combined
speech and subtitles. The 't' key switched between speech
and subtitles, while the 'v' key switched between subtitles
only and combined speech/subtitles. These ports got around
the timing problem by playing speech but just using the timing
of the subtitles. I have added support to ScummVM using
that trick, subtitles should always be shown on screen for
long enough now but speech gets a bit cut off at end
Currently combined speech and subtitles is enabled by
default, subtitles can be disabled by the usual nosubtitles
option from command line or config file. If anyone is still
interested in having a subtitles only option, than I can make
combined speech and subtitles optional via 'v' key like

comment:5 by SF/jellby, 16 years ago

I guess it's not possible to use whichever timing is longer (subtitles or
voice), right?

comment:6 by SF/jellby, 16 years ago

Hmmm... Subtitles can be forced to stay longer, so that the voice is not cut,
with F3, but then the game hangs in the island, when Simon finds the
"weirdo" kid, after he says "It's him again".

Should we talk about this here? In the bugs section? In the forums? By

comment:7 by Kirben, 16 years ago

That is actually an unrelated bug, it occurs in simon2dos
under ScummVM and even in original simon2dos.
Best to just post issues to forums for now, so I can double
check against originals. My email is a bit unreliable at the
moment, it can delay messages up to a few days lately.

comment:8 by digitall, 13 months ago

Component: Engine: AGOS
Game: Simon the Sorcerer 2
Note: See TracTickets for help on using tickets.