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. svn-id: r8903
This commit is contained in:
parent
39b37df37a
commit
8b8b964aad
7 changed files with 996 additions and 2279 deletions
|
@ -577,6 +577,7 @@ private:
|
|||
bool _isOpen;
|
||||
bool _game_SmallHeader;
|
||||
|
||||
FM_OPL *_opl;
|
||||
byte *_adlib_reg_cache;
|
||||
SoundMixer *_mixer;
|
||||
|
||||
|
@ -848,8 +849,12 @@ int MidiDriver_ADLIB::open() {
|
|||
_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 @@ void MidiDriver_ADLIB::close() {
|
|||
_mixer->setupPremix (0, 0);
|
||||
|
||||
// Turn off the OPL emulation
|
||||
YM3812Shutdown();
|
||||
// YM3812Shutdown();
|
||||
|
||||
free(_adlib_reg_cache);
|
||||
|
||||
|
@ -986,8 +991,9 @@ void MidiDriver_ADLIB::adlib_write(byte port, byte value) {
|
|||
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 @@ void MidiDriver_ADLIB::generate_samples(int16 *data, int len) {
|
|||
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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue