Ticket #8244: simon.2.patch

File simon.2.patch, 5.4 KB (added by Kirben, 16 years ago)

Add supports for nosubtitles command line/config option

  • simon/items.cpp

    RCS file: /cvsroot/scummvm/scummvm/simon/items.cpp,v
    retrieving revision 1.80
    diff -u -r1.80 items.cpp
     
    995995                                if (_game & GF_TALKIE)
    996996                                        d = _array_4[a];
    997997
    998                                 if (d != 0 && !_subtitles) {
     998                                if (d != 0)
    999999                                        talk_with_speech(d, b);
    1000                                 } else if (s != NULL) {
     1000                                if (s != NULL && (d == 0 || _subtitles))
    10011001                                        talk_with_text(b, c, s, tv->a, tv->b, tv->c);
    1002                                 }
    10031002                        }
    10041003                        break;
    10051004
     
    12341233        if (_game == GAME_SIMON1CD32 || _game == GAME_SIMON1TALKIE || _game == GAME_SIMON1WIN) {
    12351234                if (child != NULL && child->avail_props & 0x200) {
    12361235                        uint offs = getOffsetOfChild2Param(child, 0x200);
    1237                         if (!_subtitles)
    1238                                 talk_with_speech(child->array[offs], a);
     1236                        talk_with_speech(child->array[offs], a);
    12391237                } else if (child != NULL && child->avail_props & 0x100) {
    12401238                        uint offs = getOffsetOfChild2Param(child, 0x100);
    1241                         if (!_subtitles)
    1242                                 talk_with_speech(child->array[offs] + 3550, a);
     1239                        talk_with_speech(child->array[offs] + 3550, a);
    12431240                }
    12441241        } else if (_game == GAME_SIMON2TALKIE || _game == GAME_SIMON2WIN) {
    12451242                if (child != NULL && child->avail_props & 0x200) {
     
    12891286                                }
    12901287                        }
    12911288
    1292                         if (!_subtitles)
    1293                                 talk_with_speech(var200, a);
     1289                        talk_with_speech(var200, a);
    12941290                }
    12951291
    12961292        }
  • simon/simon.cpp

    RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
    retrieving revision 1.231
    diff -u -r1.231 simon.cpp
     
    245245        _continous_mainscript = 0;
    246246        _continous_vgascript = 0;
    247247        _draw_images_debug = 0;
    248         _subtitles = 0;
     248        _subtitles = true;
    249249        _mouse_cursor = 0;
    250250        _vga_var9 = 0;
    251251        _script_unk_1 = 0;
     
    430430        _debugMode = detector->_debugMode;
    431431        _debugLevel = detector->_debugLevel;
    432432        _language = detector->_language;
     433        _noSubtitles = detector->_noSubtitles;
    433434}
    434435
    435436SimonEngine::~SimonEngine() {
     
    20372038        case GAME_SIMON1TALKIE:
    20382039        case GAME_SIMON1WIN:
    20392040        case GAME_SIMON1CD32:
    2040                 if (speech_id != 0 && !_subtitles) {
     2041                if (speech_id != 0)
    20412042                        talk_with_speech(speech_id, num_1);
    2042                 } else if (string_ptr != NULL) {
     2043                if (string_ptr != NULL && _subtitles)
    20432044                        talk_with_text(num_1, num_2, (const char *)string_ptr, tv->a, tv->b, tv->c);
    2044                 }
    20452045                break;
    20462046
    20472047        case GAME_SIMON1DEMO:
     
    20542054        case GAME_SIMON2TALKIE:
    20552055        case GAME_SIMON2WIN:
    20562056        case GAME_SIMON2MAC:
    2057                 if (speech_id != 0 && num_1 == 1 && !_subtitles)
     2057                if (speech_id != 0 && num_1 == 1)
    20582058                        talk_with_speech(speech_id, num_1);
    20592059
    20602060                if (speech_id != 0 && !_subtitles)
     
    27292729        _exit_cutscene = false;
    27302730        _skip_speech = false;
    27312731        while (_vga_wait_for != 0) {
    2732                 if (_skip_speech) {
    2733                         if (_game & GF_SIMON2) {
    2734                                 if (_vga_wait_for == 200 && !vc_get_bit(14)) {
    2735                                         skip_speech();
    2736                                         break;
    2737                                 }
     2732                if (_skip_speech && _game & GF_SIMON2) {
     2733                        if (_vga_wait_for == 200 && !vc_get_bit(14)) {
     2734                                skip_speech();
     2735                                break;
    27382736                        }
    27392737                } else if (_exit_cutscene) {
    27402738                        if (vc_get_bit(9)) {
     
    37423740void SimonEngine::talk_with_speech(uint speech_id, uint num_1) {
    37433741        if (!(_game & GF_SIMON2)) {
    37443742                if (speech_id == 9999) {
     3743                        if (_subtitles)
     3744                                return;
    37453745                        if (!(_bit_array[0] & 0x4000) && !(_bit_array[1] & 0x1000)) {
    37463746                                _bit_array[0] |= 0x4000;
    37473747                                _variableArray[100] = 0xF;
     
    37493749                                o_wait_for_vga(0x82);
    37503750                        }
    37513751                        _skip_vga_wait = true;
    3752                         return;
    3753                 }
    3754                 if (num_1 < 100) {
     3752                } else {
     3753                        if (_subtitles && _scriptvar_2) {
     3754                                start_vga_code(4, 2, 204, 0, 0, 0);
     3755                                o_wait_for_vga(204);
     3756                                o_kill_sprite_simon1(204);
     3757                        }
    37553758                        o_kill_sprite_simon1(num_1 + 201);
    3756                 }
    3757 
    3758                 _sound->playVoice(speech_id);
    3759 
    3760                 if (num_1 < 100) {
     3759                        _sound->playVoice(speech_id);
    37613760                        start_vga_code(4, 2, num_1 + 201, 0, 0, 0);
    37623761                }
    37633762        } else {
     
    37793778                        }
    37803779                        o_kill_sprite_simon2(2, num_1 + 2);
    37813780                        _sound->playVoice(speech_id);
    3782 
    37833781                        start_vga_code(4, 2, num_1 + 2, 0, 0, 0);
    37843782                }
    37853783        }
     
    43954393        if (_debugLevel == 4)
    43964394                _start_mainscript = true;
    43974395
    4398         if (_sound->hasVoice()) {
     4396        if (_game & GF_TALKIE)
     4397                if (_noSubtitles)
     4398                        _subtitles = false;
     4399
     4400        if (!(_sound->hasVoice()))
    43994401                _subtitles = false;
    4400         } else {
    4401                 _subtitles = true;
    4402         }
    44034402
    44044403        if (_language == 4 || (_language > 5 && _language < 20))
    44054404                error("Only English, French, German, Hebrew, Italian and Spanish are supported");
    44064405
    4407         //Only English and German voice files were produced
    4408         if  (_language >= 2)
    4409                 _subtitles = true;
    4410 
    44114406        while (1) {
    44124407                hitarea_stuff();
    44134408                handle_verb_clicked(_verb_hitarea);
     
    44824477
    44834478                                case OSystem::EVENT_RBUTTONDOWN:
    44844479                                        if (_game & GF_SIMON2)
    4485                                         _skip_speech = true;
     4480                                                _skip_speech = true;
    44864481                                        else
    4487                                         _exit_cutscene = true;
    4488                                         break;
     4482                                                _exit_cutscene = true;
     4483                                        break;
    44894484                               
    44904485                                default:
    44914486                                        break;
  • simon/simon.h

    RCS file: /cvsroot/scummvm/scummvm/simon/simon.h,v
    retrieving revision 1.73
    diff -u -r1.73 simon.h
     
    186186        uint16 _debugMode;
    187187        uint16 _debugLevel;
    188188        uint16 _language;
     189        bool _noSubtitles;
    189190        bool _start_mainscript;
    190191        bool _continous_mainscript;
    191192        bool _continous_vgascript;