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

athrxx noreply at scummvm.org
Fri Dec 17 19:29:56 UTC 2021


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:
a939862cec KYRA: (LoK/Mac) - add support for low quality music


Commit: a939862cec096eb82b65b46bd9c9d34e2cd94043
    https://github.com/scummvm/scummvm/commit/a939862cec096eb82b65b46bd9c9d34e2cd94043
Author: athrxx (athrxx at scummvm.org)
Date: 2021-12-17T20:29:26+01:00

Commit Message:
KYRA: (LoK/Mac) - add support for low quality music

(the driver support was already there, this commit just adds the additional menu setting and the necessary adjustments)

Changed paths:
    devtools/create_kyradat/create_kyradat.cpp
    devtools/create_kyradat/create_kyradat.h
    devtools/create_kyradat/games.cpp
    devtools/create_kyradat/resources.cpp
    devtools/create_kyradat/resources/lok_mac_english.h
    dists/engine-data/kyra.dat
    engines/kyra/engine/kyra_lok.cpp
    engines/kyra/engine/kyra_v1.cpp
    engines/kyra/gui/gui_lok.cpp
    engines/kyra/gui/gui_lok.h
    engines/kyra/resource/resource.h
    engines/kyra/resource/staticres.cpp
    engines/kyra/sound/sound.h
    engines/kyra/sound/sound_intern.h
    engines/kyra/sound/sound_mac_lok.cpp
    engines/kyra/sound/sound_towns_lok.cpp


diff --git a/devtools/create_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index aee219936a..c13aeebae8 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -39,7 +39,7 @@
 
 
 enum {
-	kKyraDatVersion = 115
+	kKyraDatVersion = 116
 };
 
 const ExtractFilename extractFilenames[] = {
@@ -89,6 +89,7 @@ const ExtractFilename extractFilenames[] = {
 	// GUI strings table
 	{ k1GUIStrings, kStringList, true },
 	{ k1ConfigStrings, kStringList, true },
+	{ k1ConfigStrings2, kStringList, true },
 
 	// ROOM table/filenames
 	{ k1RoomList, kRoomList, false },
diff --git a/devtools/create_kyradat/create_kyradat.h b/devtools/create_kyradat/create_kyradat.h
index 9825f62b2b..a07bfaebda 100644
--- a/devtools/create_kyradat/create_kyradat.h
+++ b/devtools/create_kyradat/create_kyradat.h
@@ -129,6 +129,7 @@ enum kExtractID {
 
 	k1GUIStrings,
 	k1ConfigStrings,
+	k1ConfigStrings2,
 
 	k1AudioTracks,
 	k1AudioTracksIntro,
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index c10447477c..310f4272ba 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -794,6 +794,7 @@ const int kyra1MacNeed[] = {
 	k1GUIStrings,
 	k1NewGameString,
 	k1ConfigStrings,
+	k1ConfigStrings2,
 	k1CreditsStrings,
 	-1
 };
diff --git a/devtools/create_kyradat/resources.cpp b/devtools/create_kyradat/resources.cpp
index 49e0956f3c..0c5b87f85e 100644
--- a/devtools/create_kyradat/resources.cpp
+++ b/devtools/create_kyradat/resources.cpp
@@ -1038,6 +1038,7 @@ static const ResourceProvider resourceProviders[] = {
 	{ k1GUIStrings, kKyra1, kPlatformMacintosh, kNoSpecial, EN_ANY, &k1GUIStringsMacEnglishProvider },
 	{ k1NewGameString, kKyra1, kPlatformMacintosh, kNoSpecial, EN_ANY, &k1NewGameStringMacEnglishProvider },
 	{ k1ConfigStrings, kKyra1, kPlatformMacintosh, kNoSpecial, EN_ANY, &k1ConfigStringsMacEnglishProvider },
+	{ k1ConfigStrings2, kKyra1, kPlatformMacintosh, kNoSpecial, EN_ANY, &k1ConfigStrings2MacEnglishProvider },
 	{ k1CreditsStrings, kKyra1, kPlatformMacintosh, kNoSpecial, EN_ANY, &k1CreditsStringsMacEnglishProvider },
 
 	{ k2SeqplayPakFiles, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplayPakFilesDOSDemoProvider },
diff --git a/devtools/create_kyradat/resources/lok_mac_english.h b/devtools/create_kyradat/resources/lok_mac_english.h
index 7e5bb5a3fb..c491e25b02 100644
--- a/devtools/create_kyradat/resources/lok_mac_english.h
+++ b/devtools/create_kyradat/resources/lok_mac_english.h
@@ -333,6 +333,14 @@ static const char *const k1ConfigStringsMacEnglish[9] = {
 
 static const StringListProvider k1ConfigStringsMacEnglishProvider = { ARRAYSIZE(k1ConfigStringsMacEnglish), k1ConfigStringsMacEnglish };
 
+static const char *const k1ConfigStrings2MacEnglish[3] = {
+	"None",
+	"High Quality",
+	"Low Impact"
+};
+
+static const StringListProvider k1ConfigStrings2MacEnglishProvider = { ARRAYSIZE(k1ConfigStrings2MacEnglish), k1ConfigStrings2MacEnglish };
+
 static const uint8 k1CreditsStringsMacEnglish[] = {
 	0x0a, 0x02, 0x54, 0x48, 0x45, 0x20, 0x45, 0x4e,
 	0x44, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 2f6de7b3b5..97901b0e88 100644
Binary files a/dists/engine-data/kyra.dat and b/dists/engine-data/kyra.dat differ
diff --git a/engines/kyra/engine/kyra_lok.cpp b/engines/kyra/engine/kyra_lok.cpp
index 156a5644a9..d5b213de95 100644
--- a/engines/kyra/engine/kyra_lok.cpp
+++ b/engines/kyra/engine/kyra_lok.cpp
@@ -196,8 +196,8 @@ Common::Error KyraEngine_LoK::init() {
 		_trackMap = _amigaTrackMap;
 		_trackMapSize = _amigaTrackMapSize;
 	} else if (_flags.platform == Common::kPlatformMacintosh) {
-		_trackMap = _macHQTrackMap;
-		_trackMapSize = _macHQTrackMapSize;
+		_trackMap = (_configMusic == 1) ? _macHQTrackMap : _macLQTrackMap;
+		_trackMapSize = (_configMusic == 1) ? _macHQTrackMapSize : _macLQTrackMapSize;
 	} else {
 		_trackMap = _dosTrackMap;
 		_trackMapSize = _dosTrackMapSize;
@@ -976,6 +976,11 @@ void KyraEngine_LoK::readSettings() {
 		_configTextspeed = 2;   // Fast
 
 	KyraEngine_v1::readSettings();
+
+	if (_flags.platform == Common::kPlatformMacintosh) {
+		_trackMap = (_configMusic == 1) ? _macHQTrackMap : _macLQTrackMap;
+		_trackMapSize = (_configMusic == 1) ? _macHQTrackMapSize : _macLQTrackMapSize;
+	}
 }
 
 void KyraEngine_LoK::writeSettings() {
@@ -997,6 +1002,11 @@ void KyraEngine_LoK::writeSettings() {
 
 	ConfMan.setInt("talkspeed", talkspeed);
 
+	if (_flags.platform == Common::kPlatformMacintosh) {
+		_trackMap = (_configMusic == 1) ? _macHQTrackMap : _macLQTrackMap;
+		_trackMapSize = (_configMusic == 1) ? _macHQTrackMapSize : _macLQTrackMapSize;
+	}
+
 	KyraEngine_v1::writeSettings();
 }
 
diff --git a/engines/kyra/engine/kyra_v1.cpp b/engines/kyra/engine/kyra_v1.cpp
index cc285457f0..fe614913ee 100644
--- a/engines/kyra/engine/kyra_v1.cpp
+++ b/engines/kyra/engine/kyra_v1.cpp
@@ -549,6 +549,8 @@ void KyraEngine_v1::delayWithTicks(int ticks) {
 void KyraEngine_v1::registerDefaultSettings() {
 	if (_flags.platform == Common::kPlatformFMTowns)
 		ConfMan.registerDefault("cdaudio", true);
+	else if (_flags.platform == Common::kPlatformMacintosh)
+		ConfMan.registerDefault("hqmusic", true);
 	if (_flags.fanLang != Common::UNK_LANG) {
 		// HACK/WORKAROUND: Since we can't use registerDefault here to overwrite
 		// the global subtitles settings, we're using this hack to enable subtitles
@@ -566,6 +568,8 @@ void KyraEngine_v1::readSettings() {
 	if (!ConfMan.getBool("music_mute")) {
 		if (_flags.platform == Common::kPlatformFMTowns)
 			_configMusic = ConfMan.getBool("cdaudio") ? 2 : 1;
+		else if (_flags.platform == Common::kPlatformMacintosh)
+			_configMusic = ConfMan.getBool("hqmusic") ? 1 : 2;
 		else
 			_configMusic = 1;
 	}
@@ -596,6 +600,8 @@ void KyraEngine_v1::writeSettings() {
 	ConfMan.setBool("music_mute", _configMusic == 0);
 	if (_flags.platform == Common::kPlatformFMTowns)
 		ConfMan.setBool("cdaudio", _configMusic == 2);
+	else if (_flags.platform == Common::kPlatformMacintosh)
+		ConfMan.setBool("hqmusic", _configMusic == 1);
 	ConfMan.setBool("sfx_mute", _configSounds == 0);
 
 	switch (_configVoice) {
diff --git a/engines/kyra/gui/gui_lok.cpp b/engines/kyra/gui/gui_lok.cpp
index 81aea9e0dc..f067a20592 100644
--- a/engines/kyra/gui/gui_lok.cpp
+++ b/engines/kyra/gui/gui_lok.cpp
@@ -26,6 +26,7 @@
 #include "kyra/text/text.h"
 #include "kyra/engine/timer.h"
 #include "kyra/engine/util.h"
+#include "kyra/resource/resource.h"
 
 #include "common/savefile.h"
 #include "common/system.h"
@@ -186,6 +187,7 @@ GUI_LoK::GUI_LoK(KyraEngine_LoK *vm, Screen_LoK *screen) : GUI_v1(vm), _vm(vm),
 	_scrollUpFunctor = BUTTON_FUNCTOR(GUI_LoK, this, &GUI_LoK::scrollUp);
 	_scrollDownFunctor = BUTTON_FUNCTOR(GUI_LoK, this, &GUI_LoK::scrollDown);
 	_saveLoadNumSlots = (vm->gameFlags().lang == Common::ZH_TWN) ? 4 : 5;
+	_confMusicMenuMod = (_vm->gameFlags().platform == Common::kPlatformFMTowns || _vm->gameFlags().platform == Common::kPlatformMacintosh) ? 3 : 2;
 }
 
 GUI_LoK::~GUI_LoK() {
@@ -454,7 +456,17 @@ void GUI_LoK::setGUILabels() {
 	_textSpeedString = _vm->_guiStrings[25 + offsetOptions];
 	_onString =  _vm->_guiStrings[20 + offsetOn];
 	_offString =  _vm->_guiStrings[21 + offset];
-	_onCDString = _vm->_guiStrings[21];
+
+	if (_vm->gameFlags().platform == Common::kPlatformMacintosh) {
+		int temp;
+		const char *const *musicMenuStr = _vm->staticres()->loadStrings(k1ConfigStrings2, temp);
+		for (int i = 0; i < temp; ++i)
+			_confMusicMenuStrings[i] = musicMenuStr[i];
+	} else {
+		_confMusicMenuStrings[0] = _offString;
+		_confMusicMenuStrings[1] = _onString;
+		_confMusicMenuStrings[2] = _vm->_guiStrings[21]; // FM-Towns: "On +CD"
+	}
 }
 
 int GUI_LoK::buttonMenuCallback(Button *caller) {
@@ -899,6 +911,8 @@ int GUI_LoK::gameControlsMenu(Button *button) {
 	_displaySubMenu = true;
 	_cancelSubMenu = false;
 
+	int confMus = _vm->_configMusic;
+
 	while (_displaySubMenu && !_vm->shouldQuit()) {
 		processHighlights(_menu[5]);
 		getInput();
@@ -911,19 +925,23 @@ int GUI_LoK::gameControlsMenu(Button *button) {
 		initMenu(_menu[_toplevelMenu]);
 		updateAllMenuButtons();
 	}
+
+	if (_vm->_configMusic && _vm->_configMusic != confMus && _vm->_lastMusicCommand != -1)
+		_vm->snd_playWanderScoreViaMap(_vm->_lastMusicCommand, 1);
+
 	return 0;
 }
 
 void GUI_LoK::setupControls(Menu &menu) {
 	switch (_vm->_configMusic) {
 	case 0:
-		menu.item[0].itemString = _offString; //"Off"
+		menu.item[0].itemString = _confMusicMenuStrings[0]; //"Off" (Mac: "None")
 		break;
 	case 1:
-		menu.item[0].itemString = _onString; //"On"
+		menu.item[0].itemString = _confMusicMenuStrings[1]; //"On" (Mac: "High Quality")
 		break;
 	case 2:
-		menu.item[0].itemString = _onCDString; //"On + CD"
+		menu.item[0].itemString = _confMusicMenuStrings[2]; //"On + CD" (Mac: "Low Impact")
 		break;
 	default:
 		break;
@@ -934,7 +952,6 @@ void GUI_LoK::setupControls(Menu &menu) {
 	else
 		menu.item[1].itemString = _offString; //"Off"
 
-
 	switch (_vm->_configWalkspeed) {
 	case 0:
 		menu.item[2].itemString = _vm->_configStrings[0]; //"Slowest"
@@ -1017,7 +1034,7 @@ void GUI_LoK::setupControls(Menu &menu) {
 int GUI_LoK::controlsChangeMusic(Button *button) {
 	updateMenuButton(button);
 
-	_vm->_configMusic = (_vm->_configMusic + 1) % ((_vm->gameFlags().platform == Common::kPlatformFMTowns) ? 3 : 2);
+	_vm->_configMusic = (_vm->_configMusic + 1) % _confMusicMenuMod;
 	setupControls(_menu[5]);
 	return 0;
 }
diff --git a/engines/kyra/gui/gui_lok.h b/engines/kyra/gui/gui_lok.h
index b48919753d..06a27db73f 100644
--- a/engines/kyra/gui/gui_lok.h
+++ b/engines/kyra/gui/gui_lok.h
@@ -178,7 +178,8 @@ private:
 	const char *_textSpeedString;
 	const char *_onString;
 	const char *_offString;
-	const char *_onCDString;
+	const char *_confMusicMenuStrings[3];
+	uint8 _confMusicMenuMod;
 };
 
 } // End of namespace Kyra
diff --git a/engines/kyra/resource/resource.h b/engines/kyra/resource/resource.h
index 77d08a4ee1..5c4dad4841 100644
--- a/engines/kyra/resource/resource.h
+++ b/engines/kyra/resource/resource.h
@@ -217,6 +217,7 @@ enum KyraResources {
 
 	k1GUIStrings,
 	k1ConfigStrings,
+	k1ConfigStrings2,
 
 	k1AudioTracks,
 	k1AudioTracksIntro,
diff --git a/engines/kyra/resource/staticres.cpp b/engines/kyra/resource/staticres.cpp
index ed5d291589..0ae626be44 100644
--- a/engines/kyra/resource/staticres.cpp
+++ b/engines/kyra/resource/staticres.cpp
@@ -39,7 +39,7 @@
 
 namespace Kyra {
 
-#define RESFILE_VERSION 115
+#define RESFILE_VERSION 116
 
 namespace {
 bool checkKyraDat(Common::SeekableReadStream *file) {
diff --git a/engines/kyra/sound/sound.h b/engines/kyra/sound/sound.h
index caeacb0e37..8804b607f7 100644
--- a/engines/kyra/sound/sound.h
+++ b/engines/kyra/sound/sound.h
@@ -227,7 +227,7 @@ public:
 	*/
 	virtual void pause(bool paused) {}
 
-	void enableMusic(int enable) { _musicEnabled = enable; }
+	virtual void enableMusic(int enable) { _musicEnabled = enable; }
 	int musicEnabled() const { return _musicEnabled; }
 	void enableSFX(bool enable) { _sfxEnabled = enable; }
 	bool sfxEnabled() const { return _sfxEnabled; }
diff --git a/engines/kyra/sound/sound_intern.h b/engines/kyra/sound/sound_intern.h
index dbae8e5a67..4fabffce61 100644
--- a/engines/kyra/sound/sound_intern.h
+++ b/engines/kyra/sound/sound_intern.h
@@ -140,6 +140,7 @@ public:
 	void beginFadeOut() override;
 
 	void updateVolumeSettings() override;
+	void enableMusic(int enable) override;
 
 private:
 	bool loadInstruments();
@@ -363,7 +364,7 @@ public:
 
 	kType getMusicType() const override;
 
-	bool init() override { return init(true); }
+	bool init() override { return init(musicEnabled() == 1); }
 	bool init(bool hiQuality);
 	void initAudioResourceInfo(int, void*) override {}
 	void selectAudioResourceSet(int set) override;
@@ -376,6 +377,7 @@ public:
 	bool isPlaying() const override;
 	void beginFadeOut() override;
 	void updateVolumeSettings() override;
+	void enableMusic(int enable) override;
 
 private:
 	void setQuality(bool hi);
diff --git a/engines/kyra/sound/sound_mac_lok.cpp b/engines/kyra/sound/sound_mac_lok.cpp
index 91f6922847..04f1dcacfc 100644
--- a/engines/kyra/sound/sound_mac_lok.cpp
+++ b/engines/kyra/sound/sound_mac_lok.cpp
@@ -244,6 +244,12 @@ void SoundMac::updateVolumeSettings() {
 	_driver->setSoundEffectVolume(CLIP<int>(mute ? 0 : ConfMan.getInt("sfx_volume"), 0, Audio::Mixer::kMaxMixerVolume));
 }
 
+void SoundMac::enableMusic(int enable) {
+	if (enable && enable != _musicEnabled)
+		setQuality(enable == 1);
+	_musicEnabled = enable;
+}
+
 void SoundMac::setQuality(bool hi) {
 	static const uint16 resIds[] = {
 		0x1b5b, 0x1b5c, 0x1b5e, 0x1b62, 0x1b63, 0x1b6b, 0x1b6c, 0x1b6d,
diff --git a/engines/kyra/sound/sound_towns_lok.cpp b/engines/kyra/sound/sound_towns_lok.cpp
index 83d5b88b4a..4bd95f60f8 100644
--- a/engines/kyra/sound/sound_towns_lok.cpp
+++ b/engines/kyra/sound/sound_towns_lok.cpp
@@ -244,6 +244,12 @@ void SoundTowns_LoK::updateVolumeSettings() {
 	_player->driver()->setSoundEffectVolume((mute ? 0 : ConfMan.getInt("sfx_volume")));
 }
 
+void SoundTowns_LoK::enableMusic(int enable) {
+	if (enable && enable != _musicEnabled && _lastTrack != -1)
+		haltTrack();
+	_musicEnabled = enable;
+}
+
 void SoundTowns_LoK::stopAllSoundEffects() {
 	_player->driver()->channelVolume(0x46, 0);
 	_player->driver()->channelVolume(0x47, 0);




More information about the Scummvm-git-logs mailing list