[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