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

dreammaster paulfgilbert at gmail.com
Sun Sep 6 17:42:13 UTC 2020


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:
d872e3a3b5 NUVIE: Fix crash using queing audio streams for PC speaker


Commit: d872e3a3b5cd0f726713a23a031ff6acbedd910e
    https://github.com/scummvm/scummvm/commit/d872e3a3b5cd0f726713a23a031ff6acbedd910e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-06T10:42:06-07:00

Commit Message:
NUVIE: Fix crash using queing audio streams for PC speaker

The PC Speaker streams are hardcoded at 22Khz, but when the
ScummVM queueing audio streams were created, they were being
set at the mixer rate of 44Khz. Which caused an error,
because the queueing audio stream expected the added streams
to be at the same rate. For now, the best solution seemed to
be to ignore the passed rate, and hardcode the queueing
audio streams to a rate of 22Khz to match.

Changed paths:
    engines/ultima/nuvie/sound/decoder/pc_speaker_stream.cpp


diff --git a/engines/ultima/nuvie/sound/decoder/pc_speaker_stream.cpp b/engines/ultima/nuvie/sound/decoder/pc_speaker_stream.cpp
index 4fd36fb106..a92c5a36a5 100644
--- a/engines/ultima/nuvie/sound/decoder/pc_speaker_stream.cpp
+++ b/engines/ultima/nuvie/sound/decoder/pc_speaker_stream.cpp
@@ -327,8 +327,8 @@ int PCSpeakerStutterStream::readBuffer(sint16 *buffer, const int numSamples) {
 	return s;
 }
 
-Audio::AudioStream *makePCSpeakerSlugDissolveSfxStream(uint rate) {
-	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
+Audio::AudioStream *makePCSpeakerSlugDissolveSfxStream(uint /*rate*/) {
+	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(SPKR_OUTPUT_RATE, false);
 	for (uint16 i = 0; i < 20; i++) {
 		stream->queueAudioStream(new PCSpeakerRandomStream((NUVIE_RAND() % 0x1068) + 0x258, 0x15e, 1), DisposeAfterUse::YES);
 	}
@@ -336,8 +336,8 @@ Audio::AudioStream *makePCSpeakerSlugDissolveSfxStream(uint rate) {
 	return stream;
 }
 
-Audio::AudioStream *makePCSpeakerGlassSfxStream(uint rate) {
-	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
+Audio::AudioStream *makePCSpeakerGlassSfxStream(uint /*rate*/) {
+	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(SPKR_OUTPUT_RATE, false);
 	for (uint16 i = 0x7d0; i < 0x4e20; i += 0x3e8) {
 		stream->queueAudioStream(new PCSpeakerRandomStream(i, 0x78, 0x28), DisposeAfterUse::YES);
 	}
@@ -346,7 +346,7 @@ Audio::AudioStream *makePCSpeakerGlassSfxStream(uint rate) {
 }
 
 
-Audio::AudioStream *makePCSpeakerMagicCastingP1SfxStream(uint rate, uint8 magic_circle) {
+Audio::AudioStream *makePCSpeakerMagicCastingP1SfxStream(uint /*rate*/, uint8 magic_circle) {
 	//Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
 
 	return new PCSpeakerRandomStream(0x2bc, 0x640 * magic_circle + 0x1f40, 0x320);
@@ -354,8 +354,8 @@ Audio::AudioStream *makePCSpeakerMagicCastingP1SfxStream(uint rate, uint8 magic_
 	//return stream;
 }
 
-Audio::AudioStream *makePCSpeakerMagicCastingP2SfxStream(uint rate, uint8 magic_circle) {
-	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
+Audio::AudioStream *makePCSpeakerMagicCastingP2SfxStream(uint /*rate*/, uint8 magic_circle) {
+	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(SPKR_OUTPUT_RATE, false);
 
 	const sint16 word_30188[] = {3, 2, 2, 2, 1, 1, 1, 1, 1};
 
@@ -370,10 +370,10 @@ Audio::AudioStream *makePCSpeakerMagicCastingP2SfxStream(uint rate, uint8 magic_
 	return stream;
 }
 
-Audio::AudioStream *makePCSpeakerAvatarDeathSfxStream(uint rate) {
+Audio::AudioStream *makePCSpeakerAvatarDeathSfxStream(uint /*rate*/) {
 	const uint16 avatar_death_tune[] = {0x12C, 0x119, 0x12C, 0xFA, 0x119, 0xDE, 0xFA, 0xFA};
 
-	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
+	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(SPKR_OUTPUT_RATE, false);
 	for (uint8 i = 0; i < 8; i++) {
 		stream->queueAudioStream(new PCSpeakerStutterStream(3, 1, 0x4e20, 1, avatar_death_tune[i]));
 	}
@@ -381,8 +381,8 @@ Audio::AudioStream *makePCSpeakerAvatarDeathSfxStream(uint rate) {
 	return stream;
 }
 
-Audio::AudioStream *makePCSpeakerKalLorSfxStream(uint rate) {
-	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
+Audio::AudioStream *makePCSpeakerKalLorSfxStream(uint /*rate*/) {
+	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(SPKR_OUTPUT_RATE, false);
 	for (uint8 i = 0; i < 0x32; i++) {
 		stream->queueAudioStream(new PCSpeakerStutterStream((0x32 - i) << 2, 0x2710 - (i << 6), 0x3e8, 1, (i << 4) + 0x320));
 	}
@@ -392,9 +392,11 @@ Audio::AudioStream *makePCSpeakerKalLorSfxStream(uint rate) {
 	return stream;
 }
 
-Audio::AudioStream *makePCSpeakerHailStoneSfxStream(uint rate) {
-	//FIXME This doesn't sound right. It should probably use a single pcspkr object. The original also plays the hailstones individually not all at once like we do. :(
-	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
+Audio::AudioStream *makePCSpeakerHailStoneSfxStream(uint /*rate*/) {
+	//FIXME This doesn't sound right. It should probably use a single
+	// pcspkr object. The original also plays the hailstones
+	// individually, not all at once like we do. :(
+	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(SPKR_OUTPUT_RATE, false);
 
 	for (uint16 i = 0; i < 0x28; i++) {
 		stream->queueAudioStream(new PCSpeakerFreqStream((NUVIE_RAND() % 0x28) + 0x20, 8), DisposeAfterUse::YES);
@@ -414,8 +416,8 @@ Audio::AudioStream *makePCSpeakerHailStoneSfxStream(uint rate) {
 	return stream;
 }
 
-Audio::AudioStream *makePCSpeakerEarthQuakeSfxStream(uint rate) {
-	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(rate, false);
+Audio::AudioStream *makePCSpeakerEarthQuakeSfxStream(uint /*rate*/) {
+	Audio::QueuingAudioStream *stream = Audio::makeQueuingAudioStream(SPKR_OUTPUT_RATE, false);
 
 	for (uint16 i = 0; i < 0x28; i++) {
 		stream->queueAudioStream(new PCSpeakerFreqStream((NUVIE_RAND() % 0xb5) + 0x13, 8), DisposeAfterUse::YES);




More information about the Scummvm-git-logs mailing list