[Scummvm-git-logs] scummvm master -> dbc231d6d9347307dd8e9dfea7c80adab18eee93

dreammaster noreply at scummvm.org
Sun Feb 4 23:50:53 UTC 2024


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

Summary:
e7a0adcae2 M4: Clarifying Digi code for loading and playing footsteps
dbc231d6d9 M4: Fixes for playing footstep sounds


Commit: e7a0adcae21f1ca7aaf2b69997380ff5714fefc4
    https://github.com/scummvm/scummvm/commit/e7a0adcae21f1ca7aaf2b69997380ff5714fefc4
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-02-04T14:12:46-08:00

Commit Message:
M4: Clarifying Digi code for loading and playing footsteps

Changed paths:
    engines/m4/burger/burger.cpp
    engines/m4/burger/core/conv.cpp
    engines/m4/burger/flags.h
    engines/m4/burger/rooms/section.cpp
    engines/m4/burger/rooms/section1/room102.cpp
    engines/m4/burger/rooms/section1/room103.cpp
    engines/m4/burger/rooms/section1/room105.cpp
    engines/m4/burger/rooms/section1/room133_136.cpp
    engines/m4/burger/rooms/section1/room143.cpp
    engines/m4/burger/rooms/section1/room171.cpp
    engines/m4/burger/rooms/section1/room172.cpp
    engines/m4/burger/rooms/section4/room402.cpp
    engines/m4/burger/rooms/section4/room407.cpp
    engines/m4/burger/rooms/section7/room702.cpp
    engines/m4/burger/walker.cpp
    engines/m4/platform/sound/digi.cpp
    engines/m4/platform/sound/digi.h


diff --git a/engines/m4/burger/burger.cpp b/engines/m4/burger/burger.cpp
index 3b265dfee71..aba9c744ddb 100644
--- a/engines/m4/burger/burger.cpp
+++ b/engines/m4/burger/burger.cpp
@@ -233,12 +233,12 @@ void BurgerEngine::global_daemon() {
 			ws_unhide_walker(_G(my_walker));
 			player_set_commands_allowed(true);
 			_G(flags)[V299] = 0;
-			_G(flags)[V298] = 0;
+			_G(flags)[kDisableFootsteps] = 0;
 			_G(wilbur_should) = 10002;
 			break;
 		case 10002:
 			_G(flags)[V299] = 0;
-			_G(flags)[V298] = 0;
+			_G(flags)[kDisableFootsteps] = 0;
 			break;
 		case 10003:
 			player_set_commands_allowed(false);
diff --git a/engines/m4/burger/core/conv.cpp b/engines/m4/burger/core/conv.cpp
index 9f906369515..5c3d2cfda93 100644
--- a/engines/m4/burger/core/conv.cpp
+++ b/engines/m4/burger/core/conv.cpp
@@ -26,13 +26,13 @@ namespace M4 {
 namespace Burger {
 
 void conv_play_curr() {
-	_G(flags)[V298] = 1;
+	_G(flags)[kDisableFootsteps] = 1;
 	_G(flags)[V299] = 1;
 	conv_play(conv_get_handle());
 }
 
 void conv_resume_curr() {
-	_G(flags)[V298] = 1;
+	_G(flags)[kDisableFootsteps] = 1;
 	_G(flags)[V299] = 1;
 	conv_resume(conv_get_handle());
 }
diff --git a/engines/m4/burger/flags.h b/engines/m4/burger/flags.h
index 7ccf1b5a733..0c57311ccc6 100644
--- a/engines/m4/burger/flags.h
+++ b/engines/m4/burger/flags.h
@@ -332,7 +332,7 @@ enum {
 	V295 = 295,
 	V296 = 296,
 	V297 = 297,
-	V298 = 298,
+	kDisableFootsteps = 298,
 	V299 = 299,
 
 	V300 = 300,
diff --git a/engines/m4/burger/rooms/section.cpp b/engines/m4/burger/rooms/section.cpp
index 0c49f35f690..5e1065dab0f 100644
--- a/engines/m4/burger/rooms/section.cpp
+++ b/engines/m4/burger/rooms/section.cpp
@@ -77,7 +77,7 @@ void Section::global_room_init() {
 			static const char *NAMES[] = {
 				"fs_wood1", "fs_wood2", "fs_wood3", "fs_wood4", "fs_wood5", nullptr
 			};
-			_G(digi).preload_sounds(NAMES);
+			_G(digi).loadFootstepSounds(NAMES);
 			break;
 		}
 
@@ -91,7 +91,7 @@ void Section::global_room_init() {
 			static const char *NAMES[] = {
 				"fs_dirt1", "fs_dirt2", "fs_dirt3", "fs_dirt4", "fs_dirt5", nullptr
 			};
-			_G(digi).preload_sounds(NAMES);
+			_G(digi).loadFootstepSounds(NAMES);
 			break;
 		}
 
@@ -108,7 +108,7 @@ void Section::global_room_init() {
 			static const char *NAMES[] = {
 				"fs_mine1", "fs_mine2", "fs_mine3", "fs_mine4", "fs_mine5", nullptr
 			};
-			_G(digi).preload_sounds(NAMES);
+			_G(digi).loadFootstepSounds(NAMES);
 			break;
 		}
 
@@ -116,7 +116,7 @@ void Section::global_room_init() {
 			static const char *NAMES[] = {
 				"fs_hard1", "fs_hard2", "fs_hard3", "fs_hard4", "fs_hard5", nullptr
 			};
-			_G(digi).preload_sounds(NAMES);
+			_G(digi).loadFootstepSounds(NAMES);
 			break;
 		}
 		}
diff --git a/engines/m4/burger/rooms/section1/room102.cpp b/engines/m4/burger/rooms/section1/room102.cpp
index f35aa450065..236d694111b 100644
--- a/engines/m4/burger/rooms/section1/room102.cpp
+++ b/engines/m4/burger/rooms/section1/room102.cpp
@@ -106,7 +106,7 @@ void Room102::init() {
 	_val8 = 0;
 	_val9 = 0;
 	_val10 = 99999;
-	_G(flags)[V298] = 1;
+	_G(flags)[kDisableFootsteps] = 1;
 
 	digi_preload("102_001");
 	digi_preload("102_002");
diff --git a/engines/m4/burger/rooms/section1/room103.cpp b/engines/m4/burger/rooms/section1/room103.cpp
index 0c4ad848d6d..74b069864d6 100644
--- a/engines/m4/burger/rooms/section1/room103.cpp
+++ b/engines/m4/burger/rooms/section1/room103.cpp
@@ -451,7 +451,7 @@ void Room103::daemon() {
 	case 14:
 		_digi1 = imath_ranged_rand(1, 7);
 		preloadDigi1();
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 
 		if (_G(flags)[V024]) {
 			player_set_commands_allowed(true);
@@ -479,12 +479,12 @@ void Room103::daemon() {
 	case 17:
 		_G(flags)[V023] = 0;
 		_G(wilbur_should) = 6;
-		_G(flags)[V298] = 0;
+		_G(flags)[kDisableFootsteps] = 0;
 		ws_walk(325, 173, 0, 10016);
 		break;
 
 	case 19:
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		terminateMachineAndNull(_series2);
 		series_play_with_breaks(PLAY4, "103ha02", 0x100, kCHANGE_HARRY_ANIMATION, 2, 10, 100, 0, 0);
 		_frame = 10;
diff --git a/engines/m4/burger/rooms/section1/room105.cpp b/engines/m4/burger/rooms/section1/room105.cpp
index 282cdb13bba..7b1bfe2dfcf 100644
--- a/engines/m4/burger/rooms/section1/room105.cpp
+++ b/engines/m4/burger/rooms/section1/room105.cpp
@@ -448,7 +448,7 @@ void Room105::daemon() {
 					kernel_timing_trigger(60, 12);
 				} else {
 					player_set_commands_allowed(true);
-					_G(flags)[V298] = 0;
+					_G(flags)[kDisableFootsteps] = 0;
 				}
 				break;
 
@@ -591,7 +591,7 @@ void Room105::daemon() {
 					kernel_timing_trigger(60, 11);
 				} else {
 					player_set_commands_allowed(true);
-					_G(flags)[V298] = 0;
+					_G(flags)[kDisableFootsteps] = 0;
 				}
 				break;
 
@@ -676,7 +676,7 @@ void Room105::daemon() {
 					kernel_timing_trigger(60, 11);
 				} else {
 					player_set_commands_allowed(true);
-					_G(flags)[V298] = 0;
+					_G(flags)[kDisableFootsteps] = 0;
 				}
 				break;
 
@@ -860,7 +860,7 @@ void Room105::daemon() {
 
 				} else {
 					player_set_commands_allowed(true);
-					_G(flags)[V298] = 0;
+					_G(flags)[kDisableFootsteps] = 0;
 				}
 				break;
 
@@ -1373,7 +1373,7 @@ void Room105::parser() {
 				wilbur_speech("105w011");
 			} else {
 				player_set_commands_allowed(false);
-				_G(flags)[V298] = 1;
+				_G(flags)[kDisableFootsteps] = 1;
 				loadAssets4();
 				ws_hide_walker();
 				series_play_with_breaks(PLAY22, "105wi01", 0xa00, 18, 3);
@@ -1384,12 +1384,12 @@ void Room105::parser() {
 			series_play_with_breaks(PLAY31, "105wi05", 0x100, 16, 3);
 
 			if (!_G(flags)[V112]) {
-				_G(flags)[V298] = 1;
+				_G(flags)[kDisableFootsteps] = 1;
 				mayorsDoor();
 			}
 		} else if (player_said("GEAR", "complaints dept.")) {
 			player_set_commands_allowed(false);
-			_G(flags)[V298] = 1;
+			_G(flags)[kDisableFootsteps] = 1;
 			loadAssets3();
 			digi_preload("11n1402");
 			ws_hide_walker();
diff --git a/engines/m4/burger/rooms/section1/room133_136.cpp b/engines/m4/burger/rooms/section1/room133_136.cpp
index 0eda2d0cdf2..16d09ff15e2 100644
--- a/engines/m4/burger/rooms/section1/room133_136.cpp
+++ b/engines/m4/burger/rooms/section1/room133_136.cpp
@@ -121,7 +121,7 @@ void Room133_136::daemon() {
 		break;
 
 	case 2:
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		digi_play("136c001", 1, 255, 5, 136);
 		_val1 = 1;
 		kernel_trigger_dispatch_now(3);
@@ -144,7 +144,7 @@ void Room133_136::daemon() {
 		break;
 
 	case 5:
-		_G(flags)[V298] = 0;
+		_G(flags)[kDisableFootsteps] = 0;
 		_val1 = 2;
 		break;
 
diff --git a/engines/m4/burger/rooms/section1/room143.cpp b/engines/m4/burger/rooms/section1/room143.cpp
index 32a275bc317..1bc7e03131e 100644
--- a/engines/m4/burger/rooms/section1/room143.cpp
+++ b/engines/m4/burger/rooms/section1/room143.cpp
@@ -796,7 +796,7 @@ void Room143::daemon() {
 				break;
 
 			default:
-				_G(flags)[V298] = 0;
+				_G(flags)[kDisableFootsteps] = 0;
 				_burlMode = 20;
 				series_play_with_breaks(PLAY9, "143bu04", 0xa00, kCHANGE_BURL_ANIMATION, 3);
 				break;
@@ -1094,7 +1094,7 @@ void Room143::daemon() {
 			player_update_info();
 			if (_G(player_info).y < 304) {
 				ws_walk(220, 304, 0, -1, 2);
-				_G(flags)[V298] = 1;
+				_G(flags)[kDisableFootsteps] = 1;
 			}
 
 			series_play_with_breaks(PLAY7, "143bu01", 0xe00, 22, 3);
diff --git a/engines/m4/burger/rooms/section1/room171.cpp b/engines/m4/burger/rooms/section1/room171.cpp
index acc7efeefd8..93d7bcaa95e 100644
--- a/engines/m4/burger/rooms/section1/room171.cpp
+++ b/engines/m4/burger/rooms/section1/room171.cpp
@@ -559,7 +559,7 @@ void Room171::daemon() {
 		break;
 
 	case 6:
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		_G(flags)[V299] = 1;
 		_flag1 = true;
 		conv_load_and_prepare("conv40", 7);
@@ -590,7 +590,7 @@ void Room171::daemon() {
 
 	case 7:
 		_val1 = 0;
-		_G(flags)[V298] = 0;
+		_G(flags)[kDisableFootsteps] = 0;
 		_G(flags)[V299] = 0;
 		_flag1 = false;
 		player_set_commands_allowed(true);
diff --git a/engines/m4/burger/rooms/section1/room172.cpp b/engines/m4/burger/rooms/section1/room172.cpp
index 8ce766d82c4..a326d619794 100644
--- a/engines/m4/burger/rooms/section1/room172.cpp
+++ b/engines/m4/burger/rooms/section1/room172.cpp
@@ -208,7 +208,7 @@ void Room172::daemon() {
 
 		case 12:
 			player_set_commands_allowed(false);
-			_G(flags)[V298] = 1;
+			_G(flags)[kDisableFootsteps] = 1;
 			freeSeries7();
 			_series5.terminate();
 			_pollyShould = 15;
@@ -227,7 +227,7 @@ void Room172::daemon() {
 			break;
 
 		case 15:
-			_G(flags)[V298] = 0;
+			_G(flags)[kDisableFootsteps] = 0;
 			player_set_commands_allowed(true);
 			_series5.play("172ap02", 0x400, 0, -1, 8, -1, 100, 0, 0, 28, 30);
 			playDigi3();
@@ -264,7 +264,7 @@ void Room172::daemon() {
 		break;
 
 	case 3:
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		_G(flags)[V299] = 1;
 		conv_load_and_prepare("conv41", 4);
 		conv_export_value_curr(_G(flags)[V088], 0);
@@ -285,7 +285,7 @@ void Room172::daemon() {
 		}
 
 		kernel_trigger_dispatch_now(kCHANGE_POLLY_ANIMATION);
-		_G(flags)[V298] = 0;
+		_G(flags)[kDisableFootsteps] = 0;
 		_G(flags)[V299] = 0;
 		break;
 
diff --git a/engines/m4/burger/rooms/section4/room402.cpp b/engines/m4/burger/rooms/section4/room402.cpp
index b4060b3a3bb..7a26a55799f 100644
--- a/engines/m4/burger/rooms/section4/room402.cpp
+++ b/engines/m4/burger/rooms/section4/room402.cpp
@@ -223,7 +223,7 @@ void Room402::init() {
 			kernel_timing_trigger(120, kCHANGE_WILBUR_ANIMATION);
 		}
 	} else {
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		static const char *NAMES[11] = {
 			"402p903a", "402p903b", "402p903c", "402p903d", "402p903e", "402p903f",
 			"402s010f", "402s010g", "402s010h", "402s010a", "402s010d"
diff --git a/engines/m4/burger/rooms/section4/room407.cpp b/engines/m4/burger/rooms/section4/room407.cpp
index 5e743daf68d..dbd5950e4e6 100644
--- a/engines/m4/burger/rooms/section4/room407.cpp
+++ b/engines/m4/burger/rooms/section4/room407.cpp
@@ -166,7 +166,7 @@ void Room407::init() {
 	pal_cycle_init(112, 127, 6);
 
 	if (!_G(flags)[V181] && _G(flags)[V171] == 4003) {
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		player_set_commands_allowed(false);
 	}
 
@@ -501,7 +501,7 @@ void Room407::daemon() {
 		break;
 
 	case 10:
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		_G(flags)[V299] = 1;
 		conv_load_and_prepare("conv87", 12);
 		conv_export_pointer_curr(&_G(flags)[V180], 0);
@@ -509,7 +509,7 @@ void Room407::daemon() {
 		break;
 
 	case 11:
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		_G(flags)[V299] = 1;
 		player_set_commands_allowed(false);
 		conv_load_and_prepare("conv88", 13);
@@ -517,7 +517,7 @@ void Room407::daemon() {
 		break;
 
 	case 12:
-		_G(flags)[V298] = 0;
+		_G(flags)[kDisableFootsteps] = 0;
 		_G(flags)[V299] = 0;
 		_G(flags)[V180] = 1;
 		terminateMachineAndNull(_rx);
@@ -526,13 +526,13 @@ void Room407::daemon() {
 		break;
 
 	case 13:
-		_G(flags)[V298] = 0;
+		_G(flags)[kDisableFootsteps] = 0;
 		_G(flags)[V299] = 0;
 		player_set_commands_allowed(true);
 		break;
 
 	case 14:
-		_G(flags)[V298] = 0;
+		_G(flags)[kDisableFootsteps] = 0;
 		_drumzShould = 21;
 		_vipeShould = 40;
 		series_play_with_breaks(PLAY18, "407poof", 0x2ff, 4008, 2);
diff --git a/engines/m4/burger/rooms/section7/room702.cpp b/engines/m4/burger/rooms/section7/room702.cpp
index ddbaddb3044..2d177f16b91 100644
--- a/engines/m4/burger/rooms/section7/room702.cpp
+++ b/engines/m4/burger/rooms/section7/room702.cpp
@@ -78,7 +78,7 @@ void Room702::daemon() {
 		kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION);
 		kernel_trigger_dispatch_now(kCHANGE_FLUMIX_ANIMATION);
 		kernel_trigger_dispatch_now(6);
-		_G(flags)[V298] = 1;
+		_G(flags)[kDisableFootsteps] = 1;
 		pal_fade_init(0, 255, 100, 30, -1);
 		break;
 
@@ -224,7 +224,7 @@ void Room702::daemon() {
 			break;
 
 		case 11:
-			_G(flags)[V298] = 0;
+			_G(flags)[kDisableFootsteps] = 0;
 			break;
 
 		default:
diff --git a/engines/m4/burger/walker.cpp b/engines/m4/burger/walker.cpp
index 8948fa18a11..b023a07a058 100644
--- a/engines/m4/burger/walker.cpp
+++ b/engines/m4/burger/walker.cpp
@@ -102,8 +102,8 @@ void Walker::player_walker_callback(frac16 myMessage, machine *sender) {
 		case 21:
 		case 22:
 		case 25:
-			if (!_G(flags)[V298])
-				_G(digi).playRandom();
+			if (!_G(flags)[kDisableFootsteps])
+				_G(digi).playFootsteps();
 			break;
 
 		case 23:
@@ -123,7 +123,7 @@ void Walker::player_walker_callback(frac16 myMessage, machine *sender) {
 			break;
 
 		case 24:
-			if (!_G(flags)[V298])
+			if (!_G(flags)[kDisableFootsteps])
 				digi_play("hmmm", 1, 60, NO_TRIGGER, GLOBAL_SCENE);
 			break;
 
diff --git a/engines/m4/platform/sound/digi.cpp b/engines/m4/platform/sound/digi.cpp
index 7142d6b5d7a..5078edea9f4 100644
--- a/engines/m4/platform/sound/digi.cpp
+++ b/engines/m4/platform/sound/digi.cpp
@@ -35,14 +35,14 @@ Digi::~Digi() {
 	unload_sounds();
 }
 
-void Digi::preload_sounds(const char **names) {
+void Digi::loadFootstepSounds(const char **names) {
 	if (!_sounds.empty())
 		unload_sounds();
 
 	if (names) {
 		for (; *names; ++names) {
 			if (preload(*names, NOWHERE))
-				_sounds[*names]._preloaded = true;
+				_sounds[*names]._walkingSound = true;
 		}
 	}
 }
@@ -138,13 +138,12 @@ int32 Digi::play(const Common::String &name, uint channel, int32 vol, int32 trig
 	return 0;
 }
 
-void Digi::playRandom() {
-	// Get a list of any preloaded sounds, excluding individual sounds
-	// that were directly played
+void Digi::playFootsteps() {
+	// Get a list of the walking sounds
 	Common::Array<Common::String> names;
 
 	for (auto it = _sounds.begin(); it != _sounds.end(); ++it) {
-		if (it->_value._preloaded)
+		if (it->_value._walkingSound)
 			names.push_back(it->_key);
 	}
 
diff --git a/engines/m4/platform/sound/digi.h b/engines/m4/platform/sound/digi.h
index 9a294b3c3a3..09f46c18f62 100644
--- a/engines/m4/platform/sound/digi.h
+++ b/engines/m4/platform/sound/digi.h
@@ -44,7 +44,7 @@ class Digi {
 		Common::String _filename;
 		byte *_data = nullptr;
 		size_t _size = 0;
-		bool _preloaded = false;
+		bool _walkingSound = false;
 		DigiEntry() {}
 		DigiEntry(Common::String &name, byte *data, size_t size) :
 			_filename(name), _data(data), _size(size) {}
@@ -75,7 +75,7 @@ public:
 	 */
 	bool preload(const Common::String &name, int roomNum = -1);
 
-	void preload_sounds(const char **names);
+	void loadFootstepSounds(const char **names);
 	void unload_sounds();
 	void unload(const Common::String &name);
 	void task();
@@ -89,7 +89,7 @@ public:
 
 	int32 play(const Common::String &name, uint channel, int32 vol, int32 trigger, int32 room_num = -1);
 	int32 play_loop(const Common::String &name, uint channel, int32 vol, int32 trigger, int32 room_num = -1);
-	void playRandom();
+	void playFootsteps();
 	void stop(uint channel);
 	void flush_mem();
 


Commit: dbc231d6d9347307dd8e9dfea7c80adab18eee93
    https://github.com/scummvm/scummvm/commit/dbc231d6d9347307dd8e9dfea7c80adab18eee93
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-02-04T15:50:40-08:00

Commit Message:
M4: Fixes for playing footstep sounds

Changed paths:
    engines/m4/platform/sound/digi.cpp
    engines/m4/platform/sound/digi.h


diff --git a/engines/m4/platform/sound/digi.cpp b/engines/m4/platform/sound/digi.cpp
index 5078edea9f4..5eedcad1d59 100644
--- a/engines/m4/platform/sound/digi.cpp
+++ b/engines/m4/platform/sound/digi.cpp
@@ -40,10 +40,8 @@ void Digi::loadFootstepSounds(const char **names) {
 		unload_sounds();
 
 	if (names) {
-		for (; *names; ++names) {
-			if (preload(*names, NOWHERE))
-				_sounds[*names]._walkingSound = true;
-		}
+		for (; *names; ++names)
+			preload(*names, true, NOWHERE);
 	}
 }
 
@@ -56,7 +54,7 @@ void Digi::unload_sounds() {
 	_sounds.clear();
 }
 
-bool Digi::preload(const Common::String &name, int roomNum) {
+bool Digi::preload(const Common::String &name, bool isFootsteps, int roomNum) {
 	MemHandle workHandle;
 	int32 assetSize;
 
@@ -76,6 +74,7 @@ bool Digi::preload(const Common::String &name, int roomNum) {
 	HUnLock(workHandle);
 
 	_sounds[name] = DigiEntry(fileName, pDest, assetSize);
+	_sounds[name]._isFootsteps = isFootsteps;
 	return false;
 }
 
@@ -88,14 +87,14 @@ void Digi::unload(const Common::String &name) {
 		}
 
 		// Remove the underlying resource
-		if (!_sounds[name]._filename.empty()) {
+		if (!_sounds[name]._filename.empty() && !_sounds[name]._isFootsteps) {
 			rtoss(_sounds[name]._filename);
 			_sounds[name]._filename.clear();
-		}
 
-		// Delete the sound entry
-		free(_sounds[name]._data);
-		_sounds.erase(name);
+			// Delete the sound entry
+			free(_sounds[name]._data);
+			_sounds.erase(name);
+		}
 	}
 }
 
@@ -118,7 +117,7 @@ int32 Digi::play(const Common::String &name, uint channel, int32 vol, int32 trig
 	stop(channel);
 
 	// Load in the new sound
-	preload(name, room_num);
+	preload(name, false, room_num);
 	DigiEntry &entry = _sounds[name];
 	Channel &c = _channels[channel];
 
@@ -143,7 +142,7 @@ void Digi::playFootsteps() {
 	Common::Array<Common::String> names;
 
 	for (auto it = _sounds.begin(); it != _sounds.end(); ++it) {
-		if (it->_value._walkingSound)
+		if (it->_value._isFootsteps)
 			names.push_back(it->_key);
 	}
 
@@ -237,7 +236,7 @@ int32 Digi::ticks_to_play(const char *name, int roomNum) {
 } // namespace Sound
 
 bool digi_preload(const Common::String &name, int roomNum) {
-	return _G(digi).preload(name, roomNum);
+	return _G(digi).preload(name, false, roomNum);
 }
 
 void digi_unload(const Common::String &name) {
diff --git a/engines/m4/platform/sound/digi.h b/engines/m4/platform/sound/digi.h
index 09f46c18f62..51d68a5dc55 100644
--- a/engines/m4/platform/sound/digi.h
+++ b/engines/m4/platform/sound/digi.h
@@ -44,7 +44,7 @@ class Digi {
 		Common::String _filename;
 		byte *_data = nullptr;
 		size_t _size = 0;
-		bool _walkingSound = false;
+		bool _isFootsteps = false;
 		DigiEntry() {}
 		DigiEntry(Common::String &name, byte *data, size_t size) :
 			_filename(name), _data(data), _size(size) {}
@@ -73,9 +73,14 @@ public:
 	/**
 	 * Preload a digi sample into memory buffer for play back later.
 	 */
-	bool preload(const Common::String &name, int roomNum = -1);
+	bool preload(const Common::String &name, bool isFootsteps, int roomNum = -1);
 
+	/**
+	 * A room can designate one or more sounds to be randomly played when
+	 * the player walks around
+	 */
 	void loadFootstepSounds(const char **names);
+
 	void unload_sounds();
 	void unload(const Common::String &name);
 	void task();




More information about the Scummvm-git-logs mailing list