[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