diff options
| -rw-r--r-- | engines/hopkins/anim.cpp | 11 | ||||
| -rw-r--r-- | engines/hopkins/graphics.cpp | 5 | ||||
| -rw-r--r-- | engines/hopkins/objects.cpp | 3 | ||||
| -rw-r--r-- | engines/hopkins/script.cpp | 276 | ||||
| -rw-r--r-- | engines/hopkins/talk.cpp | 3 | 
5 files changed, 246 insertions, 52 deletions
| diff --git a/engines/hopkins/anim.cpp b/engines/hopkins/anim.cpp index 1d4e867af5..2a85257d6a 100644 --- a/engines/hopkins/anim.cpp +++ b/engines/hopkins/anim.cpp @@ -50,6 +50,9 @@ void AnimationManager::PLAY_ANM(const Common::String &filename, uint32 rate1, ui  	size_t nbytes;  	Common::File f; +	if (_vm->shouldQuit()) +		return; +  	hasScreenCopy = false;  	while (!_vm->shouldQuit()) {  LABEL_2: @@ -263,8 +266,11 @@ void AnimationManager::PLAY_ANM2(const Common::String &filename, uint32 a2, uint  	char v25;   	Common::File f; +	if (_vm->shouldQuit()) +		return; +  	v8 = 0; -	while (1) { +	while (!_vm->shouldQuit()) {  		v17 = 0;  		v16 = 0;  		v19 = 0; @@ -968,6 +974,9 @@ void AnimationManager::PLAY_SEQ(int a1, const Common::String &a2, uint32 a3, uin  	int buf;   	Common::File f; +	if (_vm->shouldQuit()) +		return; +  	v7 = 0;  	v14 = 0;  	v13 = 0; diff --git a/engines/hopkins/graphics.cpp b/engines/hopkins/graphics.cpp index ea1d44f442..519c193235 100644 --- a/engines/hopkins/graphics.cpp +++ b/engines/hopkins/graphics.cpp @@ -2326,7 +2326,10 @@ void GraphicsManager::OPTI_INI(const Common::String &file, int a2) {  	} else {  		v11 = 0;  		do { -			v6 =  _vm->_scriptManager.Traduction(ptr + 20 * v2); +			v6 = _vm->_scriptManager.Traduction(ptr + 20 * v2); +			if (_vm->shouldQuit()) +				return; +  			if (v6 == 2)  				v2 =  _vm->_scriptManager.Control_Goto((ptr + 20 * v2));  			if (v6 == 3) diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp index df0b311ef1..436996c1e0 100644 --- a/engines/hopkins/objects.cpp +++ b/engines/hopkins/objects.cpp @@ -4204,6 +4204,9 @@ void ObjectsManager::OPTI_OBJET() {  		v7 = 0;  		do {  			v5 = _vm->_scriptManager.Traduction(data + 20 * v0); +			if (_vm->shouldQuit()) +				return; +  			if (v5 == 2)  				v0 = _vm->_scriptManager.Control_Goto(data + 20 * v0);  			if (v5 == 3) diff --git a/engines/hopkins/script.cpp b/engines/hopkins/script.cpp index 7d0ddd5d73..c103261129 100644 --- a/engines/hopkins/script.cpp +++ b/engines/hopkins/script.cpp @@ -202,9 +202,11 @@ int ScriptManager::Traduction(byte *a1) {  					v3 = 636;  			}  			if (!_vm->_soundManager.SOUNDOFF && _vm->_soundManager.SOUND_FLAG == 1) { -				do +				do { +					if (_vm->shouldQuit()) +						return -1; // Exiting game  					_vm->_eventsManager.VBL(); -				while (_vm->_soundManager.SOUND_FLAG); +				} while (_vm->_soundManager.SOUND_FLAG);  			}  			if (!_vm->_soundManager.TEXTOFF) {  				_vm->_fontManager.DOS_TEXT(9, v3, _vm->_globals.FICH_TEXTE, 2 * v67, 2 * v65 + 40, 20, 25, 6, v2, 253); @@ -261,6 +263,9 @@ LABEL_104:  					v4 /= _vm->_globals.vitesse;  				if (v4 > 1) {  					do { +						if (_vm->shouldQuit()) +							return -1; // Exiting game +  						--v4;  						_vm->_eventsManager.VBL();  					} while (v4); @@ -559,6 +564,9 @@ LABEL_1141:  		v10 = 0;  		if (v74 + 1 > 0) {  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				++v10;  			} while (v10 < v74 + 1); @@ -778,14 +786,20 @@ LABEL_1141:  			_vm->_graphicsManager.VISU_ALL();  			v11 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				++v11;  			} while (v11 <= 4);  			_vm->_eventsManager.MOUSE_OFF();  			_vm->_graphicsManager.FADE_INW_LINUX(_vm->_graphicsManager.VESA_BUFFER); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(3) != 100); +			} while (_vm->_objectsManager.BOBPOSI(3) != 100);  			_vm->_graphicsManager.FADE_OUTW_LINUX(_vm->_graphicsManager.VESA_BUFFER);  			_vm->_graphicsManager.FIN_VISU();  			if (!_vm->_globals.CENSURE) { @@ -800,6 +814,9 @@ LABEL_1141:  			_vm->_graphicsManager.VISU_ALL();  			v12 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				++v12;  			} while (v12 <= 4); @@ -863,9 +880,12 @@ LABEL_1141:  			_vm->_talkManager.PARLER_PERSO2("CHERCHE1.pe2");  		if (v76 == 35) {  			if (!_vm->_soundManager.SOUNDOFF) { -				do +				do { +					if (_vm->shouldQuit()) +						return -1; // Exiting game +  					_vm->_eventsManager.VBL(); -				while (_vm->_soundManager.SOUND_FLAG); +				} while (_vm->_soundManager.SOUND_FLAG);  			}  			_vm->_talkManager.PARLER_PERSO("PTLAB.pe2");  		} @@ -877,6 +897,9 @@ LABEL_1141:  			_vm->_globals.chemin = _vm->_linesManager.PARCOURS2(v14, v13, 564, 420);  			_vm->_objectsManager.NUMZONE = -1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -887,6 +910,9 @@ LABEL_1141:  			_vm->_objectsManager.OPTI_BOBON(9, 10, -1, 0, 0, 0, 0);  			v15 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(9) == 4 && !v15) {  					_vm->_soundManager.PLAY_SAMPLE2(1);  					v15 = 1; @@ -948,6 +974,9 @@ LABEL_1141:  			_vm->_globals.chemin = _vm->_linesManager.PARCOURS2(v17, v16, 445, 332);  			_vm->_globals.NOT_VERIF = 1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -957,6 +986,9 @@ LABEL_1141:  			v18 = 0;  			_vm->_soundManager.CHARGE_SAMPLE(1, "SOUND40.WAV");  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(7) == 10 && !v18) {  					_vm->_soundManager.PLAY_SAMPLE2(1);  					v18 = 1; @@ -993,6 +1025,9 @@ LABEL_1141:  				v19 = 41;  			v20 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(9) == 4 && !v20) {  					_vm->_soundManager.PLAY_SOUND2("SOUND44.WAV");  					v20 = 1; @@ -1029,6 +1064,9 @@ LABEL_1141:  			_vm->_soundManager.LOAD_WAV("SOUND44.WAV", 1);  			_vm->_soundManager.LOAD_WAV("SOUND71.WAV", 2);  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(12) == 4 && !v21) {  					_vm->_soundManager.PLAY_WAV(1);  					v21 = 1; @@ -1068,6 +1106,9 @@ LABEL_1141:  			_vm->_globals.chemin = _vm->_linesManager.PARCOURS2(v23, v22, 119, 268);  			_vm->_globals.NOT_VERIF = 1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -1081,6 +1122,9 @@ LABEL_1141:  			_vm->_soundManager.LOAD_WAV("SOUND49.WAV", 3);  			v24 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(11) == 4 && !v24) {  					_vm->_soundManager.PLAY_WAV(1);  					v24 = 1; @@ -1104,9 +1148,12 @@ LABEL_1141:  			_vm->_objectsManager.SET_BOBPOSI(5, 0);  			_vm->_objectsManager.SET_BOBPOSI(6, 0);  			_vm->_soundManager.PLAY_WAV(3); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(5) != 74); +			} while (_vm->_objectsManager.BOBPOSI(5) != 74);  			_vm->_objectsManager.BOBANIM_OFF(5);  			_vm->_objectsManager.BOBANIM_OFF(6);  			_vm->_objectsManager.BOBANIM_ON(9); @@ -1120,15 +1167,21 @@ LABEL_1141:  			_vm->_objectsManager.SET_BOBPOSI(10, 0);  			_vm->_objectsManager.SET_BOBPOSI(12, 0);  			_vm->_objectsManager.SPRITE_OFF(0); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(9) != 15); +			} while (_vm->_objectsManager.BOBPOSI(9) != 15);  			_vm->_objectsManager.BOBANIM_OFF(9);  			_vm->_objectsManager.SPRITE_ON(0);  			_vm->_soundManager.PLAY_SOUND("SOUND50.WAV"); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(12) != 117); +			} while (_vm->_objectsManager.BOBPOSI(12) != 117);  			_vm->_graphicsManager.AFFICHE_SPEED(_vm->_globals.SPRITE_ECRAN, 830, 122, 0);  			_vm->_objectsManager.BOBANIM_OFF(12);  			_vm->_objectsManager.BOBANIM_OFF(10); @@ -1138,9 +1191,12 @@ LABEL_1141:  			_vm->_objectsManager.BOBANIM_OFF(3);  			_vm->_objectsManager.BOBANIM_ON(5);  			_vm->_objectsManager.SET_BOBPOSI(5, 0); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(5) != 6); +			} while (_vm->_objectsManager.BOBPOSI(5) != 6);  			_vm->_objectsManager.BOBANIM_OFF(5);  			_vm->_objectsManager.BOBANIM_ON(6);  			_vm->_objectsManager.OBSSEUL = 1; @@ -1156,6 +1212,9 @@ LABEL_1141:  				_vm->_soundManager.CHARGE_SAMPLE(1, "SOUND40.WAV");  				v25 = 0;  				do { +					if (_vm->shouldQuit()) +						return -1; // Exiting game +  					if (_vm->_objectsManager.BOBPOSI(1) == 1 && !v25) {  						_vm->_soundManager.PLAY_SAMPLE2(1);  						v25 = 1; @@ -1195,6 +1254,9 @@ LABEL_1141:  				_vm->_soundManager.CHARGE_SAMPLE(1, "SOUND40.WAV");  				v26 = 0;  				do { +					if (_vm->shouldQuit()) +						return -1; // Exiting game +  					if (_vm->_objectsManager.BOBPOSI(1) == 1 && !v26) {  						_vm->_soundManager.PLAY_SAMPLE2(1);  						v26 = 1; @@ -1302,6 +1364,9 @@ LABEL_1141:  			}  			_vm->_globals.NOT_VERIF = 1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -1312,6 +1377,9 @@ LABEL_1141:  				_vm->_objectsManager.BOBANIM_ON(4);  				v33 = 0;  				do { +					if (_vm->shouldQuit()) +						return -1; // Exiting game +  					if (_vm->_objectsManager.BOBPOSI(4) == 9 && !v33) {  						_vm->_soundManager.PLAY_SAMPLE2(1);  						v33 = 1; @@ -1338,6 +1406,9 @@ LABEL_1141:  				_vm->_objectsManager.BOBANIM_ON(6);  				v34 = 0;  				do { +					if (_vm->shouldQuit()) +						return -1; // Exiting game +  					if (_vm->_objectsManager.BOBPOSI(6) == 9 && !v34) {  						_vm->_soundManager.PLAY_SAMPLE2(1);  						v34 = 1; @@ -1364,6 +1435,9 @@ LABEL_1141:  				_vm->_objectsManager.BOBANIM_ON(5);  				v35 = 0;  				do { +					if (_vm->shouldQuit()) +						return -1; // Exiting game +  					if (_vm->_objectsManager.BOBPOSI(5) == 9 && !v35) {  						_vm->_soundManager.PLAY_SAMPLE2(1);  						v35 = 1; @@ -1397,21 +1471,33 @@ LABEL_1141:  			_vm->_soundManager.LOAD_WAV("SOUND61.WAV", 1);  			_vm->_soundManager.LOAD_WAV("SOUND62.WAV", 2);  			_vm->_soundManager.LOAD_WAV("SOUND61.WAV", 3); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(4) != 10); +			} while (_vm->_objectsManager.BOBPOSI(4) != 10);  			_vm->_soundManager.PLAY_WAV(1); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(4) != 18); +			} while (_vm->_objectsManager.BOBPOSI(4) != 18);  			_vm->_soundManager.PLAY_WAV(2); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(4) != 62); +			} while (_vm->_objectsManager.BOBPOSI(4) != 62);  			_vm->_soundManager.PLAY_WAV(3); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(4) != 77); +			} while (_vm->_objectsManager.BOBPOSI(4) != 77);  			_vm->_objectsManager.BOBANIM_OFF(4);  			_vm->_objectsManager.SPRITE_ON(0);  		} @@ -1422,21 +1508,33 @@ LABEL_1141:  			_vm->_soundManager.LOAD_WAV("SOUND61.WAV", 1);  			_vm->_soundManager.LOAD_WAV("SOUND62.WAV", 2);  			_vm->_soundManager.LOAD_WAV("SOUND61.WAV", 3); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(5) != 10); +			} while (_vm->_objectsManager.BOBPOSI(5) != 10);  			_vm->_soundManager.PLAY_WAV(1); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(5) != 18); +			} while (_vm->_objectsManager.BOBPOSI(5) != 18);  			_vm->_soundManager.PLAY_WAV(2); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(5) != 38); +			} while (_vm->_objectsManager.BOBPOSI(5) != 38);  			_vm->_soundManager.PLAY_WAV(3); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(5) != 53); +			} while (_vm->_objectsManager.BOBPOSI(5) != 53);  			_vm->_objectsManager.BOBANIM_OFF(5);  			_vm->_objectsManager.SPRITE_ON(0);  		} @@ -1472,6 +1570,9 @@ LABEL_1141:  			_vm->_graphicsManager.FADE_OUTW();  			v36 = 1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				++v36;  			} while (v36 <= 39); @@ -1499,6 +1600,9 @@ LABEL_1141:  			_vm->_globals.NOT_VERIF = 1;  			_vm->_objectsManager.NUMZONE = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -1512,9 +1616,12 @@ LABEL_1141:  			_vm->_objectsManager.SETANISPR(0, 60);  			_vm->_objectsManager.BOBANIM_OFF(4);  			_vm->_objectsManager.BOBANIM_ON(1); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(1) != 9); +			} while (_vm->_objectsManager.BOBPOSI(1) != 9);  			_vm->_objectsManager.BOBANIM_OFF(1);  			_vm->_globals.NO_VISU = 1;  			_vm->_globals.chemin = (int16 *)g_PTRNUL; @@ -1525,23 +1632,32 @@ LABEL_1141:  			_vm->_objectsManager.NUMZONE = 0;  			_vm->_globals.NOT_VERIF = 1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL);  			_vm->_objectsManager.SETANISPR(0, 64);  			_vm->_objectsManager.BOBANIM_ON(2);  			_vm->_soundManager.PLAY_SOUND("SOUND66.WAV"); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(2) != 10); +			} while (_vm->_objectsManager.BOBPOSI(2) != 10);  			_vm->_objectsManager.BOBANIM_OFF(2);  			_vm->_objectsManager.BOBANIM_ON(4);  		}  		if (v76 == 201) {  			_vm->_objectsManager.BOBANIM_ON(3); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(3) != 18); +			} while (_vm->_objectsManager.BOBPOSI(3) != 18);  			_vm->_objectsManager.BOBANIM_OFF(3);  			_vm->_objectsManager.BOBANIM_ON(4);  		} @@ -1550,6 +1666,9 @@ LABEL_1141:  			_vm->_objectsManager.SPRITE_OFF(0);  			_vm->_objectsManager.BOBANIM_ON(4);  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				if (_vm->_objectsManager.BOBPOSI(4) == 18)  					_vm->_graphicsManager.AFFICHE_SPEED(_vm->_globals.SPRITE_ECRAN, 18, 334, 0); @@ -1564,6 +1683,9 @@ LABEL_1141:  			_vm->_soundManager.LOAD_WAV("SOUND67.WAV", 1);  			v41 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(3) == 10 && !v41) {  					_vm->_soundManager.PLAY_WAV(1);  					v41 = 1; @@ -1581,6 +1703,9 @@ LABEL_1141:  			_vm->_soundManager.LOAD_WAV("SOUND69.WAV", 1);  			v42 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(4) == 10 && !v42) {  					_vm->_soundManager.PLAY_WAV(1);  					v42 = 1; @@ -1599,26 +1724,38 @@ LABEL_1141:  			_vm->_objectsManager.BOBANIM_ON(10);  			_vm->_objectsManager.BOB_OFFSET(10, 300);  			_vm->_soundManager.PLAY_SOUND("SOUND44.WAV"); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(10) != 7); +			} while (_vm->_objectsManager.BOBPOSI(10) != 7);  			_vm->_objectsManager.BOBANIM_ON(6);  			_vm->_objectsManager.BOBANIM_OFF(3); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(6) != 10); +			} while (_vm->_objectsManager.BOBPOSI(6) != 10);  			_vm->_soundManager.PLAY_SOUND("SOUND71.WAV");  			_vm->_objectsManager.BOBANIM_ON(7);  			_vm->_objectsManager.BOBANIM_OFF(4); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(7) != 15); +			} while (_vm->_objectsManager.BOBPOSI(7) != 15);  			_vm->_objectsManager.BOBANIM_OFF(5);  			_vm->_objectsManager.BOBANIM_ON(8);  			_vm->_soundManager.PLAY_SOUND("SOUND70.WAV"); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(8) != 76); +			} while (_vm->_objectsManager.BOBPOSI(8) != 76);  			_vm->_objectsManager.BOBANIM_OFF(6);  			_vm->_objectsManager.BOBANIM_OFF(7);  			_vm->_objectsManager.BOBANIM_OFF(8); @@ -1648,6 +1785,9 @@ LABEL_1141:  			_vm->_globals.chemin = _vm->_linesManager.PARCOURS2(v44, v43, 488, 280);  			_vm->_globals.NOT_VERIF = 1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -1655,6 +1795,9 @@ LABEL_1141:  			v45 = 0;  			_vm->_objectsManager.BOBANIM_ON(7);  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(7) == 9 && !v45) {  					v45 = 1;  					_vm->_soundManager.PLAY_SOUND("SOUND81.WAV"); @@ -1675,15 +1818,21 @@ LABEL_1141:  			_vm->_globals.CACHE_OFF();  			_vm->_objectsManager.SPRITE_OFF(0);  			_vm->_objectsManager.BOBANIM_ON(12); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(12) != 6); +			} while (_vm->_objectsManager.BOBPOSI(12) != 6);  			_vm->_globals.NOPARLE = 1;  			_vm->_talkManager.PARLER_PERSO("PRMORT.pe2");  			_vm->_globals.NOPARLE = 0; -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(12) != 12); +			} while (_vm->_objectsManager.BOBPOSI(12) != 12);  			_vm->_objectsManager.SPRITE_ON(0);  			_vm->_objectsManager.BOBANIM_OFF(12);  			_vm->_globals.CACHE_ON(); @@ -1694,6 +1843,9 @@ LABEL_1141:  			_vm->_objectsManager.BOBANIM_ON(11);  			v46 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				if (_vm->_objectsManager.BOBPOSI(11) == 10 && !v46)  					v46 = 1; @@ -1701,9 +1853,12 @@ LABEL_1141:  			_vm->_objectsManager.BOBANIM_OFF(11);  			_vm->_globals.CACHE_ON();  			_vm->_objectsManager.BOBANIM_ON(13); -			do +			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL(); -			while (_vm->_objectsManager.BOBPOSI(13) != 48); +			} while (_vm->_objectsManager.BOBPOSI(13) != 48);  			_vm->_globals.NOPARLE = 1;  			_vm->_talkManager.PARLER_PERSO("HRADIO.PE2");  			_vm->_globals.NOPARLE = 0; @@ -1816,6 +1971,9 @@ LABEL_1141:  			_vm->_objectsManager.BOBANIM_ON(1);  			v50 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				if (_vm->_objectsManager.BOBPOSI(1) == 12 && !v50) {  					_vm->_soundManager.PLAY_SOUND("SOUND86.WAV"); @@ -1841,6 +1999,9 @@ LABEL_1141:  				_vm->_soundManager.VOICE_MIX(617, 4);  			v71 = 0;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_eventsManager.VBL();  				++v71;  			} while (v71 <= 29); @@ -1908,6 +2069,9 @@ LABEL_1141:  			v52 = 0;  			_vm->_soundManager.LOAD_WAV("SOUND46.WAV", 1);  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				if (_vm->_objectsManager.BOBPOSI(12) == 5 && !v52) {  					_vm->_soundManager.PLAY_WAV(1);  					v52 = 1; @@ -2136,6 +2300,9 @@ LABEL_1141:  			_vm->_globals.NOT_VERIF = 1;  			_vm->_objectsManager.NUMZONE = -1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -2157,6 +2324,9 @@ LABEL_1141:  			_vm->_globals.NOT_VERIF = 1;  			_vm->_objectsManager.NUMZONE = -1;  			do { +				if (_vm->shouldQuit()) +					return -1; // Exiting game +  				_vm->_objectsManager.GOHOME();  				_vm->_eventsManager.VBL();  			} while (_vm->_globals.chemin != (int16 *)g_PTRNUL); @@ -2247,6 +2417,9 @@ int ScriptManager::Control_If(const byte *dataP, int a2) {  LABEL_2:  	v3 = v2;  	do { +		if (_vm->shouldQuit()) +			return 0; // Exiting game +  		++v3;  		v4 = Traduction2(dataP + 20 * v3);  		if (v3 > 400) { @@ -2259,6 +2432,9 @@ LABEL_2:  	v6 = v2;  	v7 = 0;  	do { +		if (_vm->shouldQuit()) +			return 0; // Exiting game +  		++v6;  		if (Traduction2(dataP + 20 * v6) == 3)  			v7 = 1; diff --git a/engines/hopkins/talk.cpp b/engines/hopkins/talk.cpp index 6dcebecde2..6b00c12ca1 100644 --- a/engines/hopkins/talk.cpp +++ b/engines/hopkins/talk.cpp @@ -1035,6 +1035,9 @@ LABEL_2:  				v13 = 1;  				do {  					v10 =  _vm->_scriptManager.Traduction(ptr + 20 * v13); +					if (_vm->shouldQuit()) +						return; +  					if (v10 == 2)  						v13 =  _vm->_scriptManager.Control_Goto(ptr + 20 * v13);  					if (v10 == 3) | 
