[Scummvm-git-logs] scummvm master -> 6a9e2a2cce8696489ab030d9379f910df016f814

athrxx noreply at scummvm.org
Fri Sep 13 20:12:53 UTC 2024


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:
6a9e2a2cce SCI: (PC-98 sound driver) - minor fixes


Commit: 6a9e2a2cce8696489ab030d9379f910df016f814
    https://github.com/scummvm/scummvm/commit/6a9e2a2cce8696489ab030d9379f910df016f814
Author: athrxx (athrxx at scummvm.org)
Date: 2024-09-13T22:12:11+02:00

Commit Message:
SCI: (PC-98 sound driver) - minor fixes

I noticed that in QFG, the sound when entering the magic
shop was very broken. Fortunately I found a couple of
things to fix...

Changed paths:
    engines/sci/sound/drivers/pc9801.cpp


diff --git a/engines/sci/sound/drivers/pc9801.cpp b/engines/sci/sound/drivers/pc9801.cpp
index 7c05c001169..65882b900d1 100644
--- a/engines/sci/sound/drivers/pc9801.cpp
+++ b/engines/sci/sound/drivers/pc9801.cpp
@@ -666,6 +666,8 @@ void SoundChannel_PC9801_FM4OP::programChange(uint8 program) {
 
 void SoundChannel_PC9801_FM4OP::sendSoundOnOff(bool soundOn) {
 	_flags = soundOn ? (_flags | kChanKeyOn) : (_flags & ~kChanKeyOn);
+	if (soundOn && _version == SCI_VERSION_0_LATE)
+		writeReg(0, 0x28, _operatorFlags & 7);
 	writeReg(0, 0x28, soundOn ? _operatorFlags : _operatorFlags & 7);
 }
 
@@ -1016,6 +1018,10 @@ void SoundChannel_PC9801_SSG::sendSoundOnOff(bool soundOn) {
 		_ssgSpeed = _selectedInstrument[18];
 		_note = 0xFF;
 	} else if (_version == SCI_VERSION_0_LATE && soundOn) {
+		_activeChannnelsStatus |= ~_chanEnableMask1;
+		if (_ccngEnabled)
+			_activeChannnelsStatus |= ~_chanEnableMask2;
+		sendActiveChannelsStatus();
 		_activeChannnelsStatus &= _chanEnableMask1;
 		if (_ccngEnabled)
 			_activeChannnelsStatus &= _chanEnableMask2;
@@ -1463,7 +1469,8 @@ void MidiDriver_PC9801::send(uint32 b) {
 	case 0xb0:
 		switch (para1) {
 		case 7:
-			part->controlChangeVolume(para2);
+			if (_internalVersion > 0) // QFG ignores channel volume
+				part->controlChangeVolume(para2);
 			break;
 		case 64:
 			part->controlChangeSustain(para2);
@@ -1489,7 +1496,8 @@ void MidiDriver_PC9801::send(uint32 b) {
 		}
 		break;
 	case 0xc0:
-		part->programChange(para1);
+		if (_internalVersion > 0) // QFG ignores program changes
+			part->programChange(para1);
 		break;
 	case 0xe0:
 		part->pitchBend(para1 | (para2 << 7));




More information about the Scummvm-git-logs mailing list