[Scummvm-cvs-logs] CVS: scummvm/sky/music adlibmusic.cpp,1.5,1.6 adlibchannel.h,1.3,1.4 adlibchannel.cpp,1.3,1.4

Jamieson Christian jamieson630 at users.sourceforge.net
Fri Jul 11 00:15:09 CEST 2003


Update of /cvsroot/scummvm/scummvm/sky/music
In directory sc8-pr-cvs1:/tmp/cvs-serv31381/sky/music

Modified Files:
	adlibmusic.cpp adlibchannel.h adlibchannel.cpp 
Log Message:
Reverted to "old" YM3812 (FMOPL) emulator code.
Until specific information regarding the benefits
of migrating to the new emulator can be made
available, the "old" code will remain in effect
for the benefit of slower hardware platforms such
as some WinCE-based devices.

Index: adlibmusic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/music/adlibmusic.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- adlibmusic.cpp	9 Jul 2003 17:22:45 -0000	1.5
+++ adlibmusic.cpp	11 Jul 2003 07:14:21 -0000	1.6
@@ -33,15 +33,20 @@
 	_driverFileBase = 60202;
     _mixer = pMixer;
 	_sampleRate = g_system->property(OSystem::PROP_GET_SAMPLE_RATE, 0);
-	if (0 != YM3812Init(1, 3579545, _sampleRate))
-		error("Error initialising YM3812 sound chip emulation");
+//	if (0 != YM3812Init(1, 3579545, _sampleRate))
+//		error("Error initialising YM3812 sound chip emulation");
+	int env_bits = g_system->property(OSystem::PROP_GET_FMOPL_ENV_BITS, NULL);   
+	int eg_ent = g_system->property(OSystem::PROP_GET_FMOPL_EG_ENT, NULL);   
+	OPLBuildTables((env_bits ? env_bits : FMOPL_ENV_BITS_HQ), (eg_ent ? eg_ent : FMOPL_EG_ENT_HQ));
+	_opl = OPLCreate(OPL_TYPE_YM3812, 3579545, g_system->property(OSystem::PROP_GET_SAMPLE_RATE, 0));
+  
 	_mixer->setupPremix(this, passMixerFunc);
 }
 
 SkyAdlibMusic::~SkyAdlibMusic(void) {
 
 	_mixer->setupPremix(NULL, NULL);
-	YM3812Shutdown();
+//	YM3812Shutdown();
 }
 
 void SkyAdlibMusic::setVolume(uint8 volume) {
@@ -70,7 +75,7 @@
 		render = (len > _nextMusicPoll) ? (_nextMusicPoll) : (len);
 		len -= render;
 		_nextMusicPoll -= render;
-		YM3812UpdateOne(0, buf, render);
+		YM3812UpdateOne (_opl, buf, render);
 		buf += render;
 		if (_nextMusicPoll == 0) {
 			pollMusic();
@@ -98,7 +103,7 @@
 	channelData++;
 	for (uint8 cnt = 0; cnt < _numberOfChannels; cnt++) {
 		uint16 chDataStart = ((channelData[(cnt << 1) | 1] << 8) | channelData[cnt << 1]) + _musicDataLoc;
-		_channels[cnt] = new SkyAdlibChannel(_musicData, chDataStart);
+		_channels[cnt] = new SkyAdlibChannel(_opl, _musicData, chDataStart);
 		_channels[cnt]->updateVolume(_musicVolume | 128);
 	}
 }
@@ -107,8 +112,9 @@
 
 	uint16 cnt = 0;
 	while (_initSequence[cnt] || _initSequence[cnt+1]) {
-		YM3812Write(0, 0, _initSequence[cnt]);
-		YM3812Write(0, 1, _initSequence[cnt+1]);
+//		YM3812Write(0, 0, _initSequence[cnt]);
+//		YM3812Write(0, 1, _initSequence[cnt+1]);
+		OPLWriteReg (_opl, _initSequence[cnt], _initSequence[cnt+1]);
 		cnt += 2;
 	}
 	_allowedCommands = 0xD;

Index: adlibchannel.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/music/adlibchannel.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- adlibchannel.h	7 Jul 2003 16:40:27 -0000	1.3
+++ adlibchannel.h	11 Jul 2003 07:14:21 -0000	1.4
@@ -26,6 +26,7 @@
 #include "common/engine.h"
 #include "sky/sky.h"
 #include "sky/music/musicbase.h"
+#include "sound/fmopl.h"
 
 typedef struct {
 	uint8 ad_Op1, ad_Op2;
@@ -60,12 +61,13 @@
 
 class SkyAdlibChannel : public SkyChannelBase {
 public:
-	SkyAdlibChannel(uint8 *pMusicData, uint16 startOfData);
+	SkyAdlibChannel (FM_OPL *opl, uint8 *pMusicData, uint16 startOfData);
 	virtual void stopNote(void);
 	virtual uint8 process(uint16 aktTime);
 	virtual void updateVolume(uint16 pVolume);
 	virtual bool isActive(void);
 private:
+	FM_OPL *_opl;
 	uint8 *_musicData;
 	uint16 _musicVolume;
 	AdlibChannelType _channelData;

Index: adlibchannel.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/music/adlibchannel.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- adlibchannel.cpp	7 Jul 2003 16:40:27 -0000	1.3
+++ adlibchannel.cpp	11 Jul 2003 07:14:21 -0000	1.4
@@ -22,8 +22,9 @@
 #include "adlibchannel.h"
 #include "sound/fmopl.h"
 
-SkyAdlibChannel::SkyAdlibChannel(uint8 *pMusicData, uint16 startOfData)
+SkyAdlibChannel::SkyAdlibChannel(FM_OPL *opl, uint8 *pMusicData, uint16 startOfData)
 {
+	_opl = opl;
 	_musicData = pMusicData;
 	_channelData.startOfData = startOfData;
 	_channelData.eventDataPtr = startOfData;
@@ -78,8 +79,9 @@
 void SkyAdlibChannel::setRegister(uint8 regNum, uint8 value) {
 
 	if (_adlibRegMirror[regNum] != value) {
-		YM3812Write(0, 0, regNum);
-		YM3812Write(0, 1, value);
+//		YM3812Write(0, 0, regNum);
+//		YM3812Write(0, 1, value);
+		OPLWriteReg (_opl, regNum, value);
 		_adlibRegMirror[regNum] = value;
 	}
 }





More information about the Scummvm-git-logs mailing list