Add work around for bug in French version of Simon the Sorcerer 1

svn-id: r12068
This commit is contained in:
Travis Howell 2004-01-01 10:42:10 +00:00
parent dcbbb04d3c
commit f845008972
2 changed files with 10 additions and 8 deletions

View File

@ -2579,6 +2579,16 @@ void SimonEngine::vc_resume_sprite(byte *code_ptr, uint16 cur_file, uint16 cur_s
void SimonEngine::add_vga_timer(uint num, byte *code_ptr, uint cur_sprite, uint cur_file) {
VgaTimerEntry *vte;
// When Simon talks to the Golum about stew in French version of
// Simon the Sorcerer 1 the code_ptr is at wrong location for
// sprite 200. This was a bug in the original game, which
// caused several glitches in this scene.
// We work around the problem by correcting the code_ptr for sprite
// 200 in this scene, if it is wrong.
if (!(_game & GF_SIMON2) && (_language == 2) &&
(code_ptr - _vga_buffer_pointers[cur_file].vgaFile1 == 4) && (cur_sprite == 200) && (cur_file == 2))
code_ptr += 0x66;
_lock_word |= 1;
for (vte = _vga_timer_list; vte->delay; vte++) {

View File

@ -128,14 +128,6 @@ void SimonEngine::run_vga_script() {
opcode = *_vc_ptr++;
}
// HACK Stop ScummVM error when Simon talks to Golum about Stew
// in French version of Simon the Sorcerer 1. This was a bug in
// the original game, which just ignored the invalid opcodes.
// Unfortunately causes no subtitles and a stack of wait timeouts,
// which also occured in original game.
if (!(_game & GF_SIMON2) && (_language == 2) && opcode == 207)
return;
if (opcode >= NUM_VIDEO_OP_CODES)
error("Invalid VGA opcode '%d' encountered", opcode);