[Scummvm-git-logs] scummvm master -> 20913b2e1150f1f0822eba3cacdb6fc944b10e41

dreammaster noreply at scummvm.org
Thu Feb 8 05:08:15 UTC 2024


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
20913b2e11 M4: Fix entering townhall after Elmo loses island


Commit: 20913b2e1150f1f0822eba3cacdb6fc944b10e41
    https://github.com/scummvm/scummvm/commit/20913b2e1150f1f0822eba3cacdb6fc944b10e41
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-02-07T21:08:04-08:00

Commit Message:
M4: Fix entering townhall after Elmo loses island

Changed paths:
    engines/m4/burger/burger.cpp
    engines/m4/burger/flags.cpp
    engines/m4/burger/flags.h
    engines/m4/burger/rooms/section1/room101.cpp
    engines/m4/burger/rooms/section1/room105.cpp
    engines/m4/burger/rooms/section1/room139_144.cpp
    engines/m4/burger/rooms/section1/room140_141.cpp
    engines/m4/burger/rooms/section3/room302.cpp
    engines/m4/burger/rooms/section3/room306.cpp
    engines/m4/gui/gui_vmng_core.cpp


diff --git a/engines/m4/burger/burger.cpp b/engines/m4/burger/burger.cpp
index 474408f2869..3205ec50c93 100644
--- a/engines/m4/burger/burger.cpp
+++ b/engines/m4/burger/burger.cpp
@@ -639,7 +639,7 @@ void BurgerEngine::testDone3() {
 	_G(flags)[V109] = 1;
 	_G(flags)[V110] = 1;
 	_G(flags)[kTrufflesInMine] = 1;
-	_G(flags)[V112] = 1;
+	_G(flags)[kPerkinsLostIsland] = 1;
 	_G(flags)[V115] = 5;
 	_G(flags)[V116] = 1;
 	_G(flags)[V117] = 1;
diff --git a/engines/m4/burger/flags.cpp b/engines/m4/burger/flags.cpp
index f8d3559e09a..d7ebdb03153 100644
--- a/engines/m4/burger/flags.cpp
+++ b/engines/m4/burger/flags.cpp
@@ -187,7 +187,7 @@ void Flags::reset1() {
 	inv_move_object("jawz o' life", 137);
 	inv_move_object("keys", 138);
 
-	(*this)[V112] = 0;
+	(*this)[kPerkinsLostIsland] = 0;
 	(*this)[kTourBusAtDiner] = 0;
 	(*this)[kIceBoxOpened] = 0;
 	(*this)[V245] = 10027;
diff --git a/engines/m4/burger/flags.h b/engines/m4/burger/flags.h
index 52a4af9caaf..b685dd83ca8 100644
--- a/engines/m4/burger/flags.h
+++ b/engines/m4/burger/flags.h
@@ -145,7 +145,7 @@ enum {
 	V109 = 109,
 	V110 = 110,
 	kTrufflesInMine = 111,
-	V112 = 112,
+	kPerkinsLostIsland = 112,
 	V113 = 113,
 	V114 = 114,
 	V115 = 115,
diff --git a/engines/m4/burger/rooms/section1/room101.cpp b/engines/m4/burger/rooms/section1/room101.cpp
index 0ddeeaf5868..c6868645f2d 100644
--- a/engines/m4/burger/rooms/section1/room101.cpp
+++ b/engines/m4/burger/rooms/section1/room101.cpp
@@ -388,7 +388,7 @@ void Room101::daemon() {
 		daemon12();
 
 		if (_G(flags)[kSecondTestPassed]) {
-			if (_G(flags)[kThirdTestPassed] || _G(flags)[V112] ||
+			if (_G(flags)[kThirdTestPassed] || _G(flags)[kPerkinsLostIsland] ||
 					_G(flags)[V080] || _G(flags)[V126]) {
 				terminateMachineAndNull(_machine1);
 				terminateMachineAndNull(_machine2);
@@ -809,7 +809,7 @@ void Room101::daemon15() {
 		_G(flags)[V039] = 1;
 		_G(flags)[kRoadOpened] = 1;
 		inv_give_to_player("DEED");
-		_G(flags)[V112] = 1;
+		_G(flags)[kPerkinsLostIsland] = 1;
 	} else {
 		_G(flags)[V000] = 1000;
 		if (_G(flags)[V021] == 10032)
diff --git a/engines/m4/burger/rooms/section1/room105.cpp b/engines/m4/burger/rooms/section1/room105.cpp
index 7b1bfe2dfcf..afb5c6bf7c4 100644
--- a/engines/m4/burger/rooms/section1/room105.cpp
+++ b/engines/m4/burger/rooms/section1/room105.cpp
@@ -275,7 +275,7 @@ void Room105::init() {
 	Common::fill(&_series3[0], &_series3[12], -1);
 	Common::fill(&_series4[0], &_series4[5], -1);
 
-	if (_G(flags)[V112]) {
+	if (_G(flags)[kPerkinsLostIsland]) {
 		series_play("105do01", 0xf00, 0, -1, 600, -1, 100, 0, 0, 0, 0);
 		_elgusShould = 59;
 		_elgusMode = 59;
@@ -962,14 +962,12 @@ void Room105::daemon() {
 			switch (_elgusShould) {
 			case 59:
 				frame = imath_ranged_rand(0, 1);
-				series_play("105ag12", 0xa00, 0, kCHANGE_ELGUS_ANIMATION, 40, 0, 100, 0, 0, frame, frame);
-				series_play("105ag12s", 0xa01, 0, -1, 40, 0, 100, 0, 0, frame, frame);
+				Series::series_play("105ag12", 0xa00, 0, kCHANGE_ELGUS_ANIMATION, 40, 0, 100, 0, 0, frame, frame);
 				break;
 
 			case 60:
 				_elgusMode = 60;
-				series_play("105ag13", 0xa00, 0, kCHANGE_ELGUS_ANIMATION, 4, 0, 100, 0, 0, 0, 0);
-				series_play("105ag13s", 0xa01, 0, -1, 4, 0, 100, 0, 0, 0, 0);
+				Series::series_play("105ag13", 0xa00, 0, kCHANGE_ELGUS_ANIMATION, 4, 0, 100, 0, 0, 0, 0);
 
 				if (_digi1) {
 					_G(kernel).trigger_mode = _savedMode;
@@ -1081,7 +1079,7 @@ void Room105::daemon() {
 	case 15:
 		ws_unhide_walker();
 
-		if (_G(flags)[V112]) {
+		if (_G(flags)[kPerkinsLostIsland]) {
 			_savedMode = KT_DAEMON;
 			_savedTrigger = 21;
 			_digi1 = "105g003";
@@ -1106,7 +1104,7 @@ void Room105::daemon() {
 		break;
 
 	case 17:
-		if (_G(flags)[V112]) {
+		if (_G(flags)[kPerkinsLostIsland]) {
 			_savedMode = KT_DAEMON;
 			_savedTrigger = 21;
 			_digi1 = "105g002";
@@ -1296,7 +1294,7 @@ void Room105::daemon() {
 	case kCHANGE_WILBUR_ANIMATION:
 		switch (_G(wilbur_should)) {
 		case 62:
-			if (_G(flags)[V112] && !_G(flags)[V034]) {
+			if (_G(flags)[kPerkinsLostIsland] && !_G(flags)[V034]) {
 				player_set_commands_allowed(false);
 				_G(flags)[V034] = 1;
 				ws_walk(199, 279, 0, 19, 9);
@@ -1321,7 +1319,7 @@ void Room105::daemon() {
 void Room105::pre_parser() {
 	_G(kernel).trigger_mode = KT_DAEMON;
 
-	if (player_said("gear", "town records") && !_G(flags)[V112])
+	if (player_said("gear", "town records") && !_G(flags)[kPerkinsLostIsland])
 		player_hotspot_walk_override(186, 263, 10);
 
 	if (player_said("gear", "mayor's office"))
@@ -1346,7 +1344,7 @@ void Room105::parser() {
 	} else if (player_said("talk to")) {
 		startConv13();
 	} else if (lookFlag && player_said("town records")) {
-		if (_G(flags)[V112]) {
+		if (_G(flags)[kPerkinsLostIsland]) {
 			switch (_G(kernel).trigger) {
 			case -1:
 				player_set_commands_allowed(false);
@@ -1369,7 +1367,7 @@ void Room105::parser() {
 		}
 	} else if (!_G(walker).wilbur_said(SAID)) {
 		if (player_said("GEAR", "town records")) {
-			if (_G(flags)[V112]) {
+			if (_G(flags)[kPerkinsLostIsland]) {
 				wilbur_speech("105w011");
 			} else {
 				player_set_commands_allowed(false);
@@ -1383,7 +1381,7 @@ void Room105::parser() {
 			ws_hide_walker();
 			series_play_with_breaks(PLAY31, "105wi05", 0x100, 16, 3);
 
-			if (!_G(flags)[V112]) {
+			if (!_G(flags)[kPerkinsLostIsland]) {
 				_G(flags)[kDisableFootsteps] = 1;
 				mayorsDoor();
 			}
@@ -1659,6 +1657,8 @@ void Room105::conv13() {
 		} else if (who == 1) {
 			sendWSMessage(0x150000, 0, _G(my_walker), 0, 0, 1);
 		}
+
+		conv_resume();
 	} else if (conv_sound_to_play()) {
 		if (who <= 0) {
 			_elgusShould = (node == 2) ? 61 : 60;
diff --git a/engines/m4/burger/rooms/section1/room139_144.cpp b/engines/m4/burger/rooms/section1/room139_144.cpp
index 9cb877d7b16..bff462b4c64 100644
--- a/engines/m4/burger/rooms/section1/room139_144.cpp
+++ b/engines/m4/burger/rooms/section1/room139_144.cpp
@@ -147,7 +147,7 @@ void Room139_144::init() {
 		kernel_trigger_dispatch_now(kCHANGE_BURL_ANIMATION);
 	}
 
-	if (_G(flags)[V112]) {
+	if (_G(flags)[kPerkinsLostIsland]) {
 		series_play("144mb01", 0x600, 0, -1, 600, -1, 100, 0, 0, 0, 0);
 	} else {
 		hotspot_set_active("motorboat", false);
@@ -408,7 +408,7 @@ void Room139_144::parser() {
 	if (player_said("talk to")) {
 		conv_load_and_prepare("conv31", 6);
 		conv_export_value_curr(_G(flags)[V052], 0);
-		conv_export_value_curr(_G(flags)[V112], 1);
+		conv_export_value_curr(_G(flags)[kPerkinsLostIsland], 1);
 		conv_play_curr();
 
 	} else if (_G(flags)[V000] == 1002 && _G(walker).wilbur_said(SAID1)) {
@@ -434,7 +434,7 @@ void Room139_144::parser() {
 		wilbur_speech(inv_player_has("deed") ? "139w004" : "139w003");
 
 	} else if (lookFlag && player_said("island") && _G(flags)[V000] == 1002) {
-		wilbur_speech(_G(flags)[V112] ? "144w002" : "144w001");
+		wilbur_speech(_G(flags)[kPerkinsLostIsland] ? "144w002" : "144w001");
 
 	} else if (player_said("enter", "vera's diner") || (lookFlag && player_said("vera's diner"))) {
 		player_set_commands_allowed(false);
diff --git a/engines/m4/burger/rooms/section1/room140_141.cpp b/engines/m4/burger/rooms/section1/room140_141.cpp
index ca8b1fd283d..0103917cffe 100644
--- a/engines/m4/burger/rooms/section1/room140_141.cpp
+++ b/engines/m4/burger/rooms/section1/room140_141.cpp
@@ -129,7 +129,7 @@ static const seriesStreamBreak SERIES3[] = {
 
 static const seriesStreamBreak SERIES4[] = {
 	{  0, "140_002", 2, 255, -1, 0, nullptr, 0 },
-	{ 10, nullptr,   2, 255, 13, 0, &Flags::_flags[V112], 0 },
+	{ 10, nullptr,   2, 255, 13, 0, &Flags::_flags[kPerkinsLostIsland], 0 },
 	{ 25, "140_002", 2, 255, -1, 0, nullptr, 0 },
 	STREAM_BREAK_END
 };
@@ -145,7 +145,7 @@ void Room140_141::init() {
 	if (_G(game).previous_room != KERNEL_RESTORING_GAME)
 		player_set_commands_allowed(false);
 
-	if (!_G(flags)[V112]) {
+	if (!_G(flags)[kPerkinsLostIsland]) {
 		digi_preload("140t001a", 140);
 		digi_preload("140t001b", 140);
 		digi_preload("140t001c", 140);
@@ -170,7 +170,7 @@ void Room140_141::init() {
 	series_load("140tr07");
 	series_load("140tr07s");
 
-	if (!_G(flags)[V112]) {
+	if (!_G(flags)[kPerkinsLostIsland]) {
 		_series1 = series_play(_G(flags)[V000] == 1002 ? "141pboat" : "140pboat",
 			0xf00, 0, -1, 10, -1, 100, 0, 0, 0, 3);
 
@@ -198,7 +198,7 @@ void Room140_141::init() {
 		_wilburMode = 52;
 		_wilburShould = 50;
 
-		if (_G(flags)[V112]) {
+		if (_G(flags)[kPerkinsLostIsland]) {
 			_trufflesMode = 1;
 			_trufflesShould = 8;
 		} else {
@@ -655,7 +655,7 @@ void Room140_141::daemon() {
 				_elmoShould = 49;
 				digi_preload_stream_breaks(SERIES2);
 				series_stream_with_breaks(SERIES2, "141pe26", 6, 0x100, 7);
-				_G(flags)[V112] = 1;
+				_G(flags)[kPerkinsLostIsland] = 1;
 				break;
 
 			case 49:
@@ -686,7 +686,7 @@ void Room140_141::daemon() {
 				_wilburShould = 52;
 				kernel_trigger_dispatch_now(8);
 
-				if (_G(flags)[V112])
+				if (_G(flags)[kPerkinsLostIsland])
 					_G(walker).wilbur_speech("141w001");
 				break;
 
diff --git a/engines/m4/burger/rooms/section3/room302.cpp b/engines/m4/burger/rooms/section3/room302.cpp
index 3d82f190f1f..7f2d59b5dde 100644
--- a/engines/m4/burger/rooms/section3/room302.cpp
+++ b/engines/m4/burger/rooms/section3/room302.cpp
@@ -185,7 +185,7 @@ void Room302::init() {
 
 	if (_G(flags)[kTrufflesInMine]) {
 		hotspot_set_active("TRUFFLES", false);
-	} else if (_G(flags)[V112]) {
+	} else if (_G(flags)[kPerkinsLostIsland]) {
 		series_load("302tr01");
 		series_load("302tr01s");
 		series_load("302tr02");
@@ -224,7 +224,7 @@ void Room302::init() {
 		ws_hide_walker();
 		_state1 = imath_ranged_rand(0, 2);
 
-		if (_G(flags)[V112]) {
+		if (_G(flags)[kPerkinsLostIsland]) {
 			_G(flags)[V113] = 1;
 			_volume = 125;
 			_val4 = 29;
diff --git a/engines/m4/burger/rooms/section3/room306.cpp b/engines/m4/burger/rooms/section3/room306.cpp
index 3233c2db67e..be44c29c7f4 100644
--- a/engines/m4/burger/rooms/section3/room306.cpp
+++ b/engines/m4/burger/rooms/section3/room306.cpp
@@ -68,7 +68,7 @@ void Room306::daemon() {
 		break;
 
 	case 3007:
-		if (!_G(flags)[V112]) {
+		if (!_G(flags)[kPerkinsLostIsland]) {
 			digi_preload_stream_breaks(SERIES2);
 			series_stream_with_breaks(SERIES2, "306burnt", 6, 1, 1);
 		} else if (_G(flags)[V118] == 3003) {
diff --git a/engines/m4/gui/gui_vmng_core.cpp b/engines/m4/gui/gui_vmng_core.cpp
index b31b67f5a2c..35002dd5695 100644
--- a/engines/m4/gui/gui_vmng_core.cpp
+++ b/engines/m4/gui/gui_vmng_core.cpp
@@ -265,6 +265,7 @@ ScreenContext *vmng_screen_find(void *scrnContent, int32 *status) {
 }
 
 void vmng_refresh_video(int32 scrnX, int32 scrnY, int32 x1, int32 y1, int32 x2, int32 y2, Buffer *srcBuffer) {
+	assert(x2 <= srcBuffer->w && y2 <= srcBuffer->h);
 	const byte *srcP = srcBuffer->data + (y1 * srcBuffer->stride) + x1;
 	g_system->copyRectToScreen(srcP, srcBuffer->stride, scrnX, scrnY,
 		x2 - x1 + 1, y2 - y1 + 1);




More information about the Scummvm-git-logs mailing list