[Scummvm-git-logs] scummvm master -> 42ee047df2da9d683db77605e14a3ae619186717

mduggan mgithub at guarana.org
Mon Apr 20 02:42:23 UTC 2020


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:
01f000a809 ULTIMA8: Improve midi transition code
c3b39e1a70 ULTIMA4: Remove unused define
9aa5f4e69b ULTIMA: Correct buffer size for snprintf
42ee047df2 ULTIMA8: Defensive pointer check to make clang happy


Commit: 01f000a80924d358b7601d7713730cc9ee3825e5
    https://github.com/scummvm/scummvm/commit/01f000a80924d358b7601d7713730cc9ee3825e5
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-04-20T11:00:08+09:00

Commit Message:
ULTIMA8: Improve midi transition code

Changed paths:
    engines/ultima/ultima8/audio/midi_player.cpp
    engines/ultima/ultima8/audio/midi_player.h
    engines/ultima/ultima8/audio/music_process.cpp


diff --git a/engines/ultima/ultima8/audio/midi_player.cpp b/engines/ultima/ultima8/audio/midi_player.cpp
index be97fe2a6a..857e19144a 100644
--- a/engines/ultima/ultima8/audio/midi_player.cpp
+++ b/engines/ultima/ultima8/audio/midi_player.cpp
@@ -51,7 +51,7 @@ MidiPlayer::~MidiPlayer() {
 	_driver->close();
 }
 
-void MidiPlayer::play(byte *data, size_t size, int seqNo) {
+void MidiPlayer::play(byte *data, size_t size, int seqNo, int trackNo, bool speedHack) {
 	if (!_driver)
 		return;
 
@@ -71,9 +71,11 @@ void MidiPlayer::play(byte *data, size_t size, int seqNo) {
 		if (!_parser->loadMusic(data, size))
 			error("play() wrong music resource");
 
-		_parser->setTrack(0);
+		_parser->setTrack(trackNo);
 		_parser->setMidiDriver(this);
 		_parser->setTimerRate(_driver->getBaseTempo());
+		if (speedHack)
+			_parser->setTempo(_driver->getBaseTempo() * 2);
 		_parser->property(MidiParser::mpCenterPitchWheelOnUnload, 1);
 		_parser->property(MidiParser::mpSendSustainOffOnNotesOff, 1);
 
diff --git a/engines/ultima/ultima8/audio/midi_player.h b/engines/ultima/ultima8/audio/midi_player.h
index 87c3c733b3..9f2dccb33e 100644
--- a/engines/ultima/ultima8/audio/midi_player.h
+++ b/engines/ultima/ultima8/audio/midi_player.h
@@ -37,7 +37,7 @@ public:
 	/**
 	 * Play the specified music
 	 */
-	void play(byte *data, size_t size, int seqNo);
+	void play(byte *data, size_t size, int seqNo, int trackNo, bool speedHack);
 
 	/**
 	 * Sets whether the music should loop
diff --git a/engines/ultima/ultima8/audio/music_process.cpp b/engines/ultima/ultima8/audio/music_process.cpp
index 053c82ad89..f87645dadc 100644
--- a/engines/ultima/ultima8/audio/music_process.cpp
+++ b/engines/ultima/ultima8/audio/music_process.cpp
@@ -147,18 +147,14 @@ void MusicProcess::playMusic_internal(int track) {
 		}
 
 		// Now get the transition midi
-		byte *data = nullptr;
 		uint32 size = 0;
 		int xmidi_index = _midiPlayer->isFMSynth() ? 260 : 258;
-		data = GameData::get_instance()->getMusic()->getRawObject(xmidi_index, &size);
+		byte *data = GameData::get_instance()->getMusic()->getRawObject(xmidi_index, &size);
 
 		//warning("Doing a MIDI transition! trans: %d xmidi: %d speedhack: %d", trans, xmidi_index, speed_hack);
 
 		if (data) {
-			_midiPlayer->play(data, size, 1);
-			// TODO: Handle speed hack under scummvm
-			//if (speed_hack)
-			//	_midiPlayer->setSequenceSpeed(1, 200);
+			_midiPlayer->play(data, size, 1, trans, speed_hack);
 		} else {
 			_midiPlayer->stop();
 		}
@@ -204,10 +200,20 @@ void MusicProcess::run() {
 		}
 
 		if (data) {
+#ifdef TODO
+			// TODO: support branches in tracks.
+			// Not clear how to do this with the scummvm xmidi parser..
+			if (song_branches[wanted_track] != -1)
+			 {
+				 XMidiEvent *event = list->findBranchEvent(song_branches[wanted_track]);
+				 if (!event) song_branches[wanted_track] = 0;
+			 }
+#endif
+
 			if (_midiPlayer) {
 				// if there's a track queued, only play this one once
 				bool repeat = (_trackState._queued == 0);
-				_midiPlayer->play(data, size, 0);
+				_midiPlayer->play(data, size, 0, 0, false);
 				_midiPlayer->setLooping(repeat);
 			}
 


Commit: c3b39e1a70ee162e1fe695abc21ec21dfcdbbcd2
    https://github.com/scummvm/scummvm/commit/c3b39e1a70ee162e1fe695abc21ec21dfcdbbcd2
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-04-20T11:39:29+09:00

Commit Message:
ULTIMA4: Remove unused define

Conflicts with a system header definition in OSX and was unused anyway.

Changed paths:
    engines/ultima/ultima4/core/config.h


diff --git a/engines/ultima/ultima4/core/config.h b/engines/ultima/ultima4/core/config.h
index 1ab90a79e5..5db684d6af 100644
--- a/engines/ultima/ultima4/core/config.h
+++ b/engines/ultima/ultima4/core/config.h
@@ -30,9 +30,6 @@
 namespace Ultima {
 namespace Ultima4 {
 
-
-#define CLOCKS_PER_SEC 50
-
 /* info for loading city data from *.ult and *.tlk */
 #define CITY_HEIGHT 32
 #define CITY_WIDTH 32


Commit: 9aa5f4e69baef3f9d37faa3f1f994860830478bf
    https://github.com/scummvm/scummvm/commit/9aa5f4e69baef3f9d37faa3f1f994860830478bf
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-04-20T11:41:17+09:00

Commit Message:
ULTIMA: Correct buffer size for snprintf

Changed paths:
    engines/ultima/detection.cpp


diff --git a/engines/ultima/detection.cpp b/engines/ultima/detection.cpp
index 712170abd5..6d782362d1 100644
--- a/engines/ultima/detection.cpp
+++ b/engines/ultima/detection.cpp
@@ -95,14 +95,14 @@ int UltimaMetaEngine::getMaximumSaveSlot() const {
 
 const char *UltimaMetaEngine::getSavegamePattern(const char *target) const {
 	static char buffer[100];
-	snprintf(buffer, 200, "%s.###", target == nullptr ? getEngineId() : target);
+	snprintf(buffer, 100, "%s.###", target == nullptr ? getEngineId() : target);
 
 	return buffer;
 }
 
 const char *UltimaMetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
 	static char buffer[100];
-	snprintf(buffer, 200, "%s.%.3d", target == nullptr ? getEngineId() : target, saveGameIdx);
+	snprintf(buffer, 100, "%s.%.3d", target == nullptr ? getEngineId() : target, saveGameIdx);
 
 	return buffer;
 }


Commit: 42ee047df2da9d683db77605e14a3ae619186717
    https://github.com/scummvm/scummvm/commit/42ee047df2da9d683db77605e14a3ae619186717
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-04-20T11:42:01+09:00

Commit Message:
ULTIMA8: Defensive pointer check to make clang happy

Changed paths:
    engines/ultima/ultima8/world/actors/actor.cpp


diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index 1cd96d184c..6de4cf479d 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -592,7 +592,7 @@ void Actor::receiveHit(uint16 other, int dir, int damage, uint16 damage_type) {
 		damage_type = hitter->getDamageType();
 	}
 
-	if (other == 1 && attacker->getLastAnim() != Animation::kick) {
+	if (other == 1 && attacker && attacker->getLastAnim() != Animation::kick) {
 		// _strength for kicks is accumulated in AvatarMoverProcess
 		MainActor *av = getMainActor();
 		av->accumulateStr(damage / 4);




More information about the Scummvm-git-logs mailing list