[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