[Scummvm-git-logs] scummvm master -> 818a60fbfc568fd9cefda62c871ca1af22091f15

dreammaster noreply at scummvm.org
Mon Feb 10 05:04:21 UTC 2025


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

Summary:
a90b87683e M4: RIDDLE: Fix Mei disappearing on loading room 209 savegame
a41b843479 M4: RIDDLE: Mei fixes in room 809
578f7f5baa M4: RIDDLE: Fix direction exit in room 809
818a60fbfc M4: RIDDLE: Added room 861


Commit: a90b87683e23b7fcaa840b43609cb10da86b957d
    https://github.com/scummvm/scummvm/commit/a90b87683e23b7fcaa840b43609cb10da86b957d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-09T19:31:52-08:00

Commit Message:
M4: RIDDLE: Fix Mei disappearing on loading room 209 savegame

Changed paths:
    engines/m4/riddle/rooms/section8/room809.cpp
    engines/m4/riddle/rooms/section8/room809.h


diff --git a/engines/m4/riddle/rooms/section8/room809.cpp b/engines/m4/riddle/rooms/section8/room809.cpp
index 63e119b94d7..903d42b696a 100644
--- a/engines/m4/riddle/rooms/section8/room809.cpp
+++ b/engines/m4/riddle/rooms/section8/room809.cpp
@@ -77,7 +77,8 @@ void Room809::init() {
 		hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN  ", false);
 		hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN   ", false);
 
-		_mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, _mcPosX, 317, _mcFacing, Walker::player_walker_callback, "mc_trek");
+		_mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1,
+			_mcPosX, 317, _mcFacing, Walker::player_walker_callback, "mc_trek");
 		setGlobals3(_mcHandsBehindBackSeries, 1, 17);
 		sendWSMessage_3840000(_mcTrekMach, 38);
 		_enableHotspotName = "MEI CHEN     ";
@@ -903,6 +904,15 @@ void Room809::daemon() {
 	}
 }
 
+void Room809::syncGame(Common::Serializer &s) {
+	s.syncAsSint32LE(_mcPosX);
+	s.syncAsSint32LE(_mcFacing);
+	s.syncAsSint32LE(_mcTrekDestX);
+	s.syncAsSint32LE(_playerDestX);
+	s.syncAsSint32LE(_playerDestY);
+	s.syncAsSint32LE(_playerFacing);
+}
+
 int32 Room809::getMcDestX(int32 val1, bool val2) {
 	int32 _dword194868[3] = {540, 960, 1282};
 	int32 _dword194864[4] = {160, 540, 960, 1282};
diff --git a/engines/m4/riddle/rooms/section8/room809.h b/engines/m4/riddle/rooms/section8/room809.h
index d15d3cfa8ef..a6de1c36199 100644
--- a/engines/m4/riddle/rooms/section8/room809.h
+++ b/engines/m4/riddle/rooms/section8/room809.h
@@ -38,6 +38,7 @@ public:
 	void pre_parser() override;
 	void parser() override;
 	void daemon() override;
+	void syncGame(Common::Serializer &s) override;
 
 private:
 	bool checkSaid();
@@ -51,15 +52,16 @@ private:
 
 	const char *_enableHotspotName = nullptr;
 
-	int32 _809hallSeries = 0;
-	int32 _809MusicFadingVol = 0;
 	int32 _mcFacing = 0;
-	int32 _mcHandsBehindBackSeries = 0;
 	int32 _mcPosX = 0;
 	int32 _mcTrekDestX = 0;
 	int32 _playerDestX = 0;
 	int32 _playerDestY = 0;
 	int32 _playerFacing = 0;
+
+	int32 _809hallSeries = 0;
+	int32 _809MusicFadingVol = 0;
+	int32 _mcHandsBehindBackSeries = 0;
 	int32 _ripTalkerPos5Series = 0;
 	int32 _ripTrekHeadTurnPos5Series = 0;
 


Commit: a41b8434799112efaabcb94be9d9ed5be0d8af94
    https://github.com/scummvm/scummvm/commit/a41b8434799112efaabcb94be9d9ed5be0d8af94
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-09T20:27:35-08:00

Commit Message:
M4: RIDDLE: Mei fixes in room 809

Changed paths:
    engines/m4/riddle/rooms/section8/room809.cpp
    engines/m4/riddle/rooms/section8/room809.h


diff --git a/engines/m4/riddle/rooms/section8/room809.cpp b/engines/m4/riddle/rooms/section8/room809.cpp
index 903d42b696a..8c493bb4d7a 100644
--- a/engines/m4/riddle/rooms/section8/room809.cpp
+++ b/engines/m4/riddle/rooms/section8/room809.cpp
@@ -150,9 +150,7 @@ void Room809::pre_parser() {
 	}
 
 	if (!player_said("spleen") || inv_object_in_scene("two soldiers' shields", 809)) {
-		_G(player).need_to_walk = false;
-		_G(player).ready_to_walk = true;
-		_G(player).waiting_for_walk = false;
+		_G(player).resetWalk();
 	}
 }
 
@@ -213,7 +211,7 @@ void Room809::parser() {
 		break;
 
 	case 1:
-		player_update_info(_mcTrekMach, &_G(player_info));
+		player_update_info();
 		if (_G(player_info).x < 1340 && -_G(game_buff_ptr)->x1 < 1259) {
 			g_engine->camera_shift_xy(1259, 0);
 		}
@@ -226,7 +224,7 @@ void Room809::parser() {
 			eax = 2;
 		else if (player_said("talk to"))
 			eax = 3;
-		else if (player_said_any("walk to", "spleen", "walk"))
+		else if (player_said_any("walk to", "walk", "spleen"))
 			eax = 5;
 		else if (player_said("journal"))
 			eax = 4;
@@ -865,12 +863,13 @@ void Room809::daemon() {
 
 	case 36:
 		player_update_info(_mcTrekMach, &_G(player_info));
+
 		if (-_G(game_buff_ptr)->x1 < _G(player_info).x) {
 			if (639 - _G(game_buff_ptr)->x1 <= _G(player_info).x) {
 				_mcTrekDestX = getMcDestX(_G(player_info).x, true);
 				if (669 - _G(game_buff_ptr)->x1 < _G(player_info).x) {
 					ws_demand_facing(_mcTrekMach, 11);
-					ws_demand_location(669 - _G(game_buff_ptr)->x1, 323);
+					ws_demand_location(_mcTrekMach, 669 - _G(game_buff_ptr)->x1, 323);
 				}
 
 				ws_walk(_mcTrekMach, _mcTrekDestX, 323, nullptr, 37, 11, true);
@@ -879,7 +878,7 @@ void Room809::daemon() {
 			_mcTrekDestX = getMcDestX(_G(player_info).x, false);
 			if (-30 - _G(game_buff_ptr)->x1 > _G(player_info).x) {
 				ws_demand_facing(_mcTrekMach, 1);
-				ws_demand_location(-30 - _G(game_buff_ptr)->x1, 323);
+				ws_demand_location(_mcTrekMach, -30 - _G(game_buff_ptr)->x1, 323);
 			}
 
 			ws_walk(_mcTrekMach, _mcTrekDestX, 323, nullptr, 37, 1, true);
@@ -913,21 +912,22 @@ void Room809::syncGame(Common::Serializer &s) {
 	s.syncAsSint32LE(_playerFacing);
 }
 
-int32 Room809::getMcDestX(int32 val1, bool val2) {
-	int32 _dword194868[3] = {540, 960, 1282};
-	int32 _dword194864[4] = {160, 540, 960, 1282};
+int32 Room809::getMcDestX(int32 xPos, bool facing) {
+	static const uint16 X_THRESHOLDS1[3] = { 540, 960, 1282 };
+	static const uint16 X_THRESHOLDS2[4] = { 0x7fff, 160, 540, 960 };
+	static const uint16 X_DESTS[5] = { 160, 540, 960, 1282 };
 	int32 index;
 
-	if (val2) {
+	if (facing) {
 		index = 0;
 		for (; index < 3; ++index) {
-			if (val1 <= _dword194868[index])
+			if (xPos <= X_THRESHOLDS1[index])
 				break;
 		}
 	} else {
 		index = 3;
 		for (; index > 0; --index) {
-			if (val1 > _dword194864[index])
+			if (xPos > X_THRESHOLDS2[index])
 				break;
 		}
 	}
@@ -940,15 +940,17 @@ int32 Room809::getMcDestX(int32 val1, bool val2) {
 	_enableHotspotName = "MEI CHEN     ";
 	_byte1A1990[index] = 0;
 	_field24_index = index;
-	_mcPosX = _dword194864[index];
-	_mcFacing = (val2 == false) ? 1 : 11;
+	_mcPosX = X_DESTS[index];
+	_mcFacing = facing ? 11 : 1;
 
-	return _dword194864[index];
+	return _mcPosX;
 }
 
 bool Room809::checkSaid() {
-	if (player_said_any("spleen", "west", "mei chen", "mei chen ", "mei chen  ", "mei chen   ", "farmer's shovel", "two soldiers' shields")
-	|| inv_object_in_scene("two soldiers' shields", 809))
+	if (player_said_any("spleen", "west", "mei chen", "mei chen ",
+			"mei chen  ", "mei chen   ", "farmer's shovel",
+			"two soldiers' shields")
+			|| inv_object_in_scene("two soldiers' shields", 809))
 		return false;
 
 	return true;
diff --git a/engines/m4/riddle/rooms/section8/room809.h b/engines/m4/riddle/rooms/section8/room809.h
index a6de1c36199..3ff1520d9ac 100644
--- a/engines/m4/riddle/rooms/section8/room809.h
+++ b/engines/m4/riddle/rooms/section8/room809.h
@@ -42,7 +42,7 @@ public:
 
 private:
 	bool checkSaid();
-	int32 getMcDestX(int32 val1, bool val2);
+	int32 getMcDestX(int32 xPos, bool facing);
 
 	bool _field20Fl = false;
 


Commit: 578f7f5baa681afa727644dc28858512f6a51098
    https://github.com/scummvm/scummvm/commit/578f7f5baa681afa727644dc28858512f6a51098
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-09T20:41:45-08:00

Commit Message:
M4: RIDDLE: Fix direction exit in room 809

Changed paths:
    engines/m4/riddle/rooms/section8/room809.cpp


diff --git a/engines/m4/riddle/rooms/section8/room809.cpp b/engines/m4/riddle/rooms/section8/room809.cpp
index 8c493bb4d7a..8a0c9eb9e26 100644
--- a/engines/m4/riddle/rooms/section8/room809.cpp
+++ b/engines/m4/riddle/rooms/section8/room809.cpp
@@ -317,7 +317,7 @@ void Room809::parser() {
 		case 6:
 			if (player_said("east")) {
 				kernel_trigger_dispatchx(kernel_trigger_create(53));
-			} else if (player_said("east")) {
+			} else if (player_said("west")) {
 				kernel_trigger_dispatchx(kernel_trigger_create(65));
 			}
 


Commit: 818a60fbfc568fd9cefda62c871ca1af22091f15
    https://github.com/scummvm/scummvm/commit/818a60fbfc568fd9cefda62c871ca1af22091f15
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-09T21:04:13-08:00

Commit Message:
M4: RIDDLE: Added room 861

Changed paths:
    engines/m4/riddle/rooms/section8/room861.cpp
    engines/m4/riddle/rooms/section8/room861.h


diff --git a/engines/m4/riddle/rooms/section8/room861.cpp b/engines/m4/riddle/rooms/section8/room861.cpp
index 19500d2cde8..17eaf8d2dbc 100644
--- a/engines/m4/riddle/rooms/section8/room861.cpp
+++ b/engines/m4/riddle/rooms/section8/room861.cpp
@@ -28,9 +28,101 @@ namespace Riddle {
 namespace Rooms {
 
 void Room861::init() {
+	interface_hide();
+	player_set_commands_allowed(false);
+
+	digi_preload("950_s45", 950);
+	digi_play_loop("950_s45", 3, 150, -1, 950);
+	_all1Series = series_load("861all1");
+	_all2Series = series_load("861all2");
+
+	digi_preload("861r03");
+	digi_preload("811_s02");
+	digi_preload("811_s05");
+	digi_preload("861_s01");
+	digi_preload("861_s02");
+	digi_preload("861_s02a");
+
+	_soldrSeries = series_load("861soldr");
+	_soldrMach = series_show("861soldr", 0x400);
+	_all1Mach = series_stream("861all", 4, 0x100, 5);
+	series_stream_break_on_frame(_all1Mach, 9, 2);
 }
 
 void Room861::daemon() {
+	switch (_G(kernel).trigger) {
+	case 2:
+		digi_play("811_s05", 1, 255, -1, 811);
+		series_stream_break_on_frame(_all1Mach, 90, 4);
+		break;
+
+	case 4:
+		digi_play("811_s02", 1, 255, -1, 811);
+		break;
+
+	case 5:
+		_all1Mach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100,
+			0x100, false, triggerMachineByHashCallback, "861all1");
+		sendWSMessage_10000(1, _all1Mach, _all1Series, 1, 24, 10,
+			_all1Series, 24, 24, 0);
+		sendWSMessage_190000(_all1Mach, 12);
+		terminateMachineAndNull(_soldrMach);
+		series_unload(_soldrSeries);
+		_fallMach = series_stream("861_fall", 9, 0x300, 80);
+		series_stream_break_on_frame(_fallMach, 42, 1002);
+		break;
+
+	case 10:
+		digi_play("861_s01", 2, 255, -1, 861);
+		midi_play("tiawa", 180, 1, -1, 949);
+		_all2Mach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0,
+			100, 0x200, false, triggerMachineByHashCallback, "861 all2");
+		sendWSMessage_10000(1, _all2Mach, _all2Series, 1, 20, 20,
+			_all2Series, 20, 20, 0);
+		sendWSMessage_10000(1, _all1Mach, _all1Series, 25, 42, 15,
+			_all1Series, 43, 47, 4);
+		break;
+
+	case 15:
+		sendWSMessage_1a0000(_all1Mach, 10);
+		break;
+
+	case 20:
+		sendWSMessage_10000(1, _all2Mach, _all2Series, 21, 44, 91,
+			_all2Series, 45, 58, 0);
+		digi_play("861r03", 2);
+		break;
+
+	case 91:
+		disable_player_commands_and_fade_init(-1);
+		break;
+
+	case 92:
+		digi_stop(1);
+		adv_kill_digi_between_rooms(false);
+		digi_unload("861r03");
+		digi_unload("811_s02");
+		digi_unload("811_s05");
+		digi_unload("861_s01");
+		digi_unload("861_s02");
+		digi_unload("861_s02a");
+		digi_play_loop("950_s45", 3, 128, -1, 950);
+		_G(game).setRoom(818);
+		break;
+
+	case 1001:
+		digi_play("861_s02", 1, 255, 92);
+		break;
+
+	case 1002:
+		digi_play("861_s02a", 1);
+		series_stream_break_on_frame(_fallMach, 52, 1001);
+		break;
+
+	case 80:
+	default:
+		break;
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section8/room861.h b/engines/m4/riddle/rooms/section8/room861.h
index 5505bedad9d..0df278d9ecc 100644
--- a/engines/m4/riddle/rooms/section8/room861.h
+++ b/engines/m4/riddle/rooms/section8/room861.h
@@ -29,6 +29,15 @@ namespace Riddle {
 namespace Rooms {
 
 class Room861 : public Room {
+private:
+	int _all1Series = 0;
+	int _all2Series = 0;
+	int _soldrSeries = 0;
+	machine *_soldrMach = nullptr;
+	machine *_all1Mach = nullptr;
+	machine *_all2Mach = nullptr;
+	machine *_fallMach = nullptr;
+
 public:
 	Room861() : Room() {}
 	~Room861() override {}




More information about the Scummvm-git-logs mailing list