[Scummvm-cvs-logs] CVS: scummvm/backends/midi adlib.cpp,1.32,1.33

Jamieson Christian jamieson630 at users.sourceforge.net
Fri Jul 11 00:14:12 CEST 2003


Update of /cvsroot/scummvm/scummvm/backends/midi
In directory sc8-pr-cvs1:/tmp/cvs-serv31282/backends/midi

Modified Files:
	adlib.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: adlib.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/midi/adlib.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- adlib.cpp	11 Jul 2003 06:25:37 -0000	1.32
+++ adlib.cpp	11 Jul 2003 07:13:55 -0000	1.33
@@ -577,6 +577,7 @@
 	bool _isOpen;
 	bool _game_SmallHeader;
 
+	FM_OPL *_opl;
 	byte *_adlib_reg_cache;
 	SoundMixer *_mixer;
 
@@ -848,8 +849,12 @@
 	_adlib_reg_cache = (byte *)calloc(256, 1);
 
 	// We need to emulate one YM3812 chip
-	if (0 != YM3812Init(1, 3579545, g_system->property(OSystem::PROP_GET_SAMPLE_RATE, 0)))
-		error("Error initialising YM3812 sound chip emulation");
+//	if (0 != YM3812Init(1, 3579545, g_system->property(OSystem::PROP_GET_SAMPLE_RATE, 0)))
+//		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));
 
 	adlib_write(1, 0x20);
 	adlib_write(8, 0x40);
@@ -876,7 +881,7 @@
 	_mixer->setupPremix (0, 0);
 	
 	// Turn off the OPL emulation
-	YM3812Shutdown();
+//	YM3812Shutdown();
 	
 	free(_adlib_reg_cache);
 
@@ -986,8 +991,9 @@
 		return;
 	_adlib_reg_cache[port] = value;
 
-	YM3812Write(0, 0, port);
-	YM3812Write(0, 1, value);
+//	YM3812Write(0, 0, port);
+//	YM3812Write(0, 1, value);
+	OPLWriteReg (_opl, port, value);
 }
 
 void MidiDriver_ADLIB::generate_samples(int16 *data, int len) {
@@ -997,7 +1003,8 @@
 		step = len;
 		if (step > _next_tick)
 			step = _next_tick;
-		YM3812UpdateOne(0, data, step);
+//		YM3812UpdateOne(0, data, step);
+		YM3812UpdateOne (_opl, data, step);
 
 		_next_tick -= step;
 		if (!_next_tick) {





More information about the Scummvm-git-logs mailing list