sync with scummvm
This commit is contained in:
parent
634ae21c47
commit
356c9c8c07
498 changed files with 882 additions and 2855 deletions
|
@ -238,4 +238,3 @@ Xanathar "xanathar"
|
|||
Grant Yeager "glo_kidd"
|
||||
Benjamin W. Zale "junior_aepi"
|
||||
Yotam Barnoy "bluddy"
|
||||
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,5 +1,3 @@
|
|||
# $URL$
|
||||
# $Id$
|
||||
|
||||
#######################################################################
|
||||
# Default compilation parameters. Normally don't edit these #
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
# This file is used by Makefile and declares common build rules,
|
||||
# a list of common object files etc.
|
||||
#
|
||||
# $URL$
|
||||
# $Id$
|
||||
|
||||
######################################################################
|
||||
# The default build target: just build the residual executable
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/debug.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_AUDIOSTREAM_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
// Disable symbol overrides for FILE as that is used in FLAC headers
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio/decoders/mp3.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/endian.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_RAW_H
|
||||
|
|
147
audio/decoders/vag.cpp
Normal file
147
audio/decoders/vag.cpp
Normal file
|
@ -0,0 +1,147 @@
|
|||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio/decoders/vag.h"
|
||||
#include "audio/audiostream.h"
|
||||
#include "common/stream.h"
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class VagStream : public Audio::RewindableAudioStream {
|
||||
public:
|
||||
VagStream(Common::SeekableReadStream *stream, int rate);
|
||||
~VagStream();
|
||||
|
||||
bool isStereo() const { return false; }
|
||||
bool endOfData() const { return _stream->pos() == _stream->size(); }
|
||||
int getRate() const { return _rate; }
|
||||
int readBuffer(int16 *buffer, const int numSamples);
|
||||
|
||||
bool rewind();
|
||||
private:
|
||||
Common::SeekableReadStream *_stream;
|
||||
|
||||
byte _predictor;
|
||||
double _samples[28];
|
||||
byte _samplesRemaining;
|
||||
int _rate;
|
||||
double _s1, _s2;
|
||||
};
|
||||
|
||||
VagStream::VagStream(Common::SeekableReadStream *stream, int rate) : _stream(stream) {
|
||||
_samplesRemaining = 0;
|
||||
_predictor = 0;
|
||||
_s1 = _s2 = 0.0;
|
||||
_rate = rate;
|
||||
}
|
||||
|
||||
|
||||
VagStream::~VagStream() {
|
||||
delete _stream;
|
||||
}
|
||||
|
||||
static const double s_vagDataTable[5][2] =
|
||||
{
|
||||
{ 0.0, 0.0 },
|
||||
{ 60.0 / 64.0, 0.0 },
|
||||
{ 115.0 / 64.0, -52.0 / 64.0 },
|
||||
{ 98.0 / 64.0, -55.0 / 64.0 },
|
||||
{ 122.0 / 64.0, -60.0 / 64.0 }
|
||||
};
|
||||
|
||||
int VagStream::readBuffer(int16 *buffer, const int numSamples) {
|
||||
int32 samplesDecoded = 0;
|
||||
|
||||
if (_samplesRemaining) {
|
||||
byte i = 0;
|
||||
|
||||
for (i = 28 - _samplesRemaining; i < 28 && samplesDecoded < numSamples; i++) {
|
||||
_samples[i] = _samples[i] + _s1 * s_vagDataTable[_predictor][0] + _s2 * s_vagDataTable[_predictor][1];
|
||||
_s2 = _s1;
|
||||
_s1 = _samples[i];
|
||||
int16 d = (int) (_samples[i] + 0.5);
|
||||
buffer[samplesDecoded] = d;
|
||||
samplesDecoded++;
|
||||
}
|
||||
|
||||
#if 0
|
||||
assert(i == 28); // We're screwed if this fails :P
|
||||
#endif
|
||||
// This might mean the file is corrupted, or that the stream has
|
||||
// been closed.
|
||||
if (i != 28) return 0;
|
||||
|
||||
_samplesRemaining = 0;
|
||||
}
|
||||
|
||||
while (samplesDecoded < numSamples) {
|
||||
byte i = 0;
|
||||
|
||||
_predictor = _stream->readByte();
|
||||
byte shift = _predictor & 0xf;
|
||||
_predictor >>= 4;
|
||||
|
||||
if (_stream->readByte() == 7)
|
||||
return samplesDecoded;
|
||||
|
||||
for (i = 0; i < 28; i += 2) {
|
||||
byte d = _stream->readByte();
|
||||
int16 s = (d & 0xf) << 12;
|
||||
if (s & 0x8000)
|
||||
s |= 0xffff0000;
|
||||
_samples[i] = (double)(s >> shift);
|
||||
s = (d & 0xf0) << 8;
|
||||
if (s & 0x8000)
|
||||
s |= 0xffff0000;
|
||||
_samples[i + 1] = (double)(s >> shift);
|
||||
}
|
||||
|
||||
for (i = 0; i < 28 && samplesDecoded < numSamples; i++) {
|
||||
_samples[i] = _samples[i] + _s1 * s_vagDataTable[_predictor][0] + _s2 * s_vagDataTable[_predictor][1];
|
||||
_s2 = _s1;
|
||||
_s1 = _samples[i];
|
||||
int16 d = (int) (_samples[i] + 0.5);
|
||||
buffer[samplesDecoded] = d;
|
||||
samplesDecoded++;
|
||||
}
|
||||
|
||||
if (i != 27)
|
||||
_samplesRemaining = 28 - i;
|
||||
}
|
||||
|
||||
return samplesDecoded;
|
||||
}
|
||||
|
||||
bool VagStream::rewind() {
|
||||
_stream->seek(0);
|
||||
_samplesRemaining = 0;
|
||||
_predictor = 0;
|
||||
_s1 = _s2 = 0.0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
RewindableAudioStream *makeVagStream(Common::SeekableReadStream *stream, int rate) {
|
||||
return new VagStream(stream, rate);
|
||||
}
|
||||
|
||||
}
|
56
audio/decoders/vag.h
Normal file
56
audio/decoders/vag.h
Normal file
|
@ -0,0 +1,56 @@
|
|||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Sound decoder used in engines:
|
||||
* - sword1 (PSX port of the game)
|
||||
* - sword2 (PSX port of the game)
|
||||
* - tinsel (PSX port of the game)
|
||||
*/
|
||||
|
||||
#ifndef SOUND_VAG_H
|
||||
#define SOUND_VAG_H
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class RewindableAudioStream;
|
||||
|
||||
/**
|
||||
* Takes an input stream containing Vag sound data and creates
|
||||
* an RewindableAudioStream from that.
|
||||
*
|
||||
* @param stream the SeekableReadStream from which to read the ADPCM data
|
||||
* @param rate the sampling rate
|
||||
* @return a new RewindableAudioStream, or NULL, if an error occurred
|
||||
*/
|
||||
RewindableAudioStream *makeVagStream(
|
||||
Common::SeekableReadStream *stream,
|
||||
int rate = 11025);
|
||||
|
||||
} // End of namespace Sword1
|
||||
|
||||
#endif
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
// Disable symbol overrides for FILE and fseek as those are used in the
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -36,6 +33,7 @@
|
|||
* - scumm
|
||||
* - sword1
|
||||
* - sword2
|
||||
* - sword25
|
||||
* - touche
|
||||
* - tucker
|
||||
*/
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "audio/fmopl.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef SOUND_FMOPL_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/config-manager.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_MIDIDRV_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio/midiparser.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/// \brief Declarations related to the MidiParser class
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/util.h"
|
||||
|
@ -260,6 +257,8 @@ int MixerImpl::mixCallback(byte *samples, uint len) {
|
|||
Common::StackLock lock(_mutex);
|
||||
|
||||
int16 *buf = (int16 *)samples;
|
||||
// we store stereo, 16-bit samples
|
||||
assert(len % 4 == 0);
|
||||
len >>= 2;
|
||||
|
||||
// Since the mixer callback has been called, the mixer must be ready...
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_MIXER_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_MIXER_INTERN_H
|
||||
|
@ -129,6 +126,8 @@ public:
|
|||
* the backend (e.g. from an audio mixing thread). All the actual mixing
|
||||
* work is done from here.
|
||||
*
|
||||
* @param samples Sample buffer, in which stereo 16-bit samples will be stored.
|
||||
* @param len Length of the provided buffer to fill (in bytes, should be divisible by 4).
|
||||
* @return number of sample pairs processed (which can still be silence!)
|
||||
*/
|
||||
int mixCallback(byte *samples, uint len);
|
||||
|
|
|
@ -13,6 +13,7 @@ MODULE_OBJS := \
|
|||
decoders/flac.o \
|
||||
decoders/mp3.o \
|
||||
decoders/raw.o \
|
||||
decoders/vag.o \
|
||||
decoders/vorbis.o \
|
||||
softsynth/adlib.o \
|
||||
softsynth/cms.o \
|
||||
|
@ -20,7 +21,6 @@ MODULE_OBJS := \
|
|||
softsynth/opl/dosbox.o \
|
||||
softsynth/opl/mame.o \
|
||||
softsynth/appleiigs.o \
|
||||
softsynth/ym2612.o \
|
||||
softsynth/fluidsynth.o \
|
||||
softsynth/mt32.o \
|
||||
softsynth/pcspk.o \
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "audio/mpu401.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_MPU401_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio/musicplugin.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef SOUND_MUSICPLUGIN_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "common/error.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef SOUND_NULL_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_RATE_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
@ along with this program@ if not, write to the Free Software
|
||||
@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
@
|
||||
@ $URL$
|
||||
@ $Id$
|
||||
@
|
||||
@ @author Robin Watts (robin@wss.co.uk)
|
||||
@
|
||||
@ This file, together with rate_arm.cpp, provides an ARM optimised version
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "audio/softsynth/emumidi.h"
|
||||
|
@ -71,8 +68,6 @@ struct AdLibInstrument {
|
|||
byte flags_b;
|
||||
InstrumentExtra extra_b;
|
||||
byte duration;
|
||||
|
||||
AdLibInstrument() { memset(this, 0, sizeof(AdLibInstrument)); }
|
||||
} PACKED_STRUCT;
|
||||
#include "common/pack-end.h"
|
||||
|
||||
|
@ -117,6 +112,8 @@ public:
|
|||
_owner = 0;
|
||||
_allocated = false;
|
||||
_channel = 0;
|
||||
|
||||
memset(&_part_instr, 0, sizeof(_part_instr));
|
||||
}
|
||||
|
||||
MidiDriver *device();
|
||||
|
@ -306,185 +303,185 @@ static const byte note_to_f_num[] = {
|
|||
242, 243, 245, 247, 249, 251, 252, 254
|
||||
};
|
||||
|
||||
static const byte map_gm_to_fm[128][30] = {
|
||||
static const AdLibInstrument map_gm_to_fm[128] = {
|
||||
// 0x00
|
||||
{ 0xC2, 0xC5, 0x2B, 0x99, 0x58, 0xC2, 0x1F, 0x1E, 0xC8, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x23 },
|
||||
{ 0x22, 0x53, 0x0E, 0x8A, 0x30, 0x14, 0x06, 0x1D, 0x7A, 0x5C, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x06, 0x00, 0x1C, 0x79, 0x40, 0x02, 0x00, 0x4B, 0x79, 0x58, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC2, 0x89, 0x2A, 0x89, 0x49, 0xC2, 0x16, 0x1C, 0xB8, 0x7C, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x23 },
|
||||
{ 0xC2, 0x17, 0x3D, 0x6A, 0x00, 0xC4, 0x2E, 0x2D, 0xC9, 0x20, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x06, 0x1E, 0x1C, 0x99, 0x00, 0x02, 0x3A, 0x4C, 0x79, 0x00, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x84, 0x40, 0x3B, 0x5A, 0x6F, 0x81, 0x0E, 0x3B, 0x5A, 0x7F, 0x0B, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x84, 0x40, 0x3B, 0x5A, 0x63, 0x81, 0x00, 0x3B, 0x5A, 0x7F, 0x01, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x8C, 0x80, 0x05, 0xEA, 0x59, 0x82, 0x0A, 0x3C, 0xAA, 0x64, 0x07, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x85, 0x40, 0x0D, 0xEC, 0x71, 0x84, 0x58, 0x3E, 0xCB, 0x7C, 0x01, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x8A, 0xC0, 0x0C, 0xDC, 0x50, 0x88, 0x58, 0x3D, 0xDA, 0x7C, 0x01, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC9, 0x40, 0x2B, 0x78, 0x42, 0xC2, 0x04, 0x4C, 0x8A, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x1A },
|
||||
{ 0x2A, 0x0E, 0x17, 0x89, 0x28, 0x22, 0x0C, 0x1B, 0x09, 0x70, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE7, 0x9B, 0x08, 0x08, 0x26, 0xE2, 0x06, 0x0A, 0x08, 0x70, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC5, 0x05, 0x00, 0xFC, 0x40, 0x84, 0x00, 0x00, 0xDC, 0x50, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x86, 0x40, 0x5D, 0x5A, 0x41, 0x81, 0x00, 0x0B, 0x5A, 0x7F, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC2, 0xC5, 0x2B, 0x99, 0x58, 0xC2, 0x1F, 0x1E, 0xC8, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x23 },
|
||||
{ 0x22, 0x53, 0x0E, 0x8A, 0x30, 0x14, 0x06, 0x1D, 0x7A, 0x5C, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x06, 0x00, 0x1C, 0x79, 0x40, 0x02, 0x00, 0x4B, 0x79, 0x58, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC2, 0x89, 0x2A, 0x89, 0x49, 0xC2, 0x16, 0x1C, 0xB8, 0x7C, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x23 },
|
||||
{ 0xC2, 0x17, 0x3D, 0x6A, 0x00, 0xC4, 0x2E, 0x2D, 0xC9, 0x20, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x06, 0x1E, 0x1C, 0x99, 0x00, 0x02, 0x3A, 0x4C, 0x79, 0x00, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x84, 0x40, 0x3B, 0x5A, 0x6F, 0x81, 0x0E, 0x3B, 0x5A, 0x7F, 0x0B, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x84, 0x40, 0x3B, 0x5A, 0x63, 0x81, 0x00, 0x3B, 0x5A, 0x7F, 0x01, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x8C, 0x80, 0x05, 0xEA, 0x59, 0x82, 0x0A, 0x3C, 0xAA, 0x64, 0x07, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x85, 0x40, 0x0D, 0xEC, 0x71, 0x84, 0x58, 0x3E, 0xCB, 0x7C, 0x01, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x8A, 0xC0, 0x0C, 0xDC, 0x50, 0x88, 0x58, 0x3D, 0xDA, 0x7C, 0x01, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC9, 0x40, 0x2B, 0x78, 0x42, 0xC2, 0x04, 0x4C, 0x8A, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x1A },
|
||||
{ 0x2A, 0x0E, 0x17, 0x89, 0x28, 0x22, 0x0C, 0x1B, 0x09, 0x70, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE7, 0x9B, 0x08, 0x08, 0x26, 0xE2, 0x06, 0x0A, 0x08, 0x70, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC5, 0x05, 0x00, 0xFC, 0x40, 0x84, 0x00, 0x00, 0xDC, 0x50, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x86, 0x40, 0x5D, 0x5A, 0x41, 0x81, 0x00, 0x0B, 0x5A, 0x7F, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
// 0x10
|
||||
{ 0xED, 0x00, 0x7B, 0xC8, 0x40, 0xE1, 0x99, 0x4A, 0xE9, 0x7E, 0x07, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE8, 0x4F, 0x3A, 0xD7, 0x7C, 0xE2, 0x97, 0x49, 0xF9, 0x7D, 0x05, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE1, 0x10, 0x2F, 0xF7, 0x7D, 0xF3, 0x45, 0x8F, 0xC7, 0x62, 0x07, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x01, 0x8C, 0x9F, 0xDA, 0x70, 0xE4, 0x50, 0x9F, 0xDA, 0x6A, 0x09, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x08, 0xD5, 0x9D, 0xA5, 0x45, 0xE2, 0x3F, 0x9F, 0xD6, 0x49, 0x07, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE5, 0x0F, 0x7D, 0xB8, 0x2E, 0xA2, 0x0F, 0x7C, 0xC7, 0x61, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xF2, 0x2A, 0x9F, 0xDB, 0x01, 0xE1, 0x04, 0x8F, 0xD7, 0x62, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x88, 0x9C, 0x50, 0x64, 0xE2, 0x18, 0x70, 0xC4, 0x7C, 0x0B, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x02, 0xA3, 0x0D, 0xDA, 0x01, 0xC2, 0x35, 0x5D, 0x58, 0x00, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x18 },
|
||||
{ 0x42, 0x55, 0x3E, 0xEB, 0x24, 0xD4, 0x08, 0x0D, 0xA9, 0x71, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x18 },
|
||||
{ 0xC2, 0x00, 0x2B, 0x17, 0x51, 0xC2, 0x1E, 0x4D, 0x97, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x19 },
|
||||
{ 0xC6, 0x01, 0x2D, 0xA7, 0x44, 0xC2, 0x06, 0x0E, 0xA7, 0x79, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC2, 0x0C, 0x06, 0x06, 0x55, 0xC2, 0x3F, 0x09, 0x86, 0x7D, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x0A },
|
||||
{ 0xC2, 0x2E, 0x4F, 0x77, 0x00, 0xC4, 0x08, 0x0E, 0x98, 0x59, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC2, 0x30, 0x4F, 0xCA, 0x01, 0xC4, 0x0D, 0x0E, 0xB8, 0x7F, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC4, 0x29, 0x4F, 0xCA, 0x03, 0xC8, 0x0D, 0x0C, 0xB7, 0x7D, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x0B },
|
||||
{ 0xED, 0x00, 0x7B, 0xC8, 0x40, 0xE1, 0x99, 0x4A, 0xE9, 0x7E, 0x07, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE8, 0x4F, 0x3A, 0xD7, 0x7C, 0xE2, 0x97, 0x49, 0xF9, 0x7D, 0x05, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE1, 0x10, 0x2F, 0xF7, 0x7D, 0xF3, 0x45, 0x8F, 0xC7, 0x62, 0x07, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x01, 0x8C, 0x9F, 0xDA, 0x70, 0xE4, 0x50, 0x9F, 0xDA, 0x6A, 0x09, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x08, 0xD5, 0x9D, 0xA5, 0x45, 0xE2, 0x3F, 0x9F, 0xD6, 0x49, 0x07, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE5, 0x0F, 0x7D, 0xB8, 0x2E, 0xA2, 0x0F, 0x7C, 0xC7, 0x61, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xF2, 0x2A, 0x9F, 0xDB, 0x01, 0xE1, 0x04, 0x8F, 0xD7, 0x62, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x88, 0x9C, 0x50, 0x64, 0xE2, 0x18, 0x70, 0xC4, 0x7C, 0x0B, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x02, 0xA3, 0x0D, 0xDA, 0x01, 0xC2, 0x35, 0x5D, 0x58, 0x00, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x18 },
|
||||
{ 0x42, 0x55, 0x3E, 0xEB, 0x24, 0xD4, 0x08, 0x0D, 0xA9, 0x71, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x18 },
|
||||
{ 0xC2, 0x00, 0x2B, 0x17, 0x51, 0xC2, 0x1E, 0x4D, 0x97, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x19 },
|
||||
{ 0xC6, 0x01, 0x2D, 0xA7, 0x44, 0xC2, 0x06, 0x0E, 0xA7, 0x79, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC2, 0x0C, 0x06, 0x06, 0x55, 0xC2, 0x3F, 0x09, 0x86, 0x7D, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x0A },
|
||||
{ 0xC2, 0x2E, 0x4F, 0x77, 0x00, 0xC4, 0x08, 0x0E, 0x98, 0x59, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC2, 0x30, 0x4F, 0xCA, 0x01, 0xC4, 0x0D, 0x0E, 0xB8, 0x7F, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC4, 0x29, 0x4F, 0xCA, 0x03, 0xC8, 0x0D, 0x0C, 0xB7, 0x7D, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x0B },
|
||||
// 0x20
|
||||
{ 0xC2, 0x40, 0x3C, 0x96, 0x58, 0xC4, 0xDE, 0x0E, 0xC7, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x20 },
|
||||
{ 0x31, 0x13, 0x2D, 0xD7, 0x3C, 0xE2, 0x18, 0x2E, 0xB8, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x22, 0x86, 0x0D, 0xD7, 0x50, 0xE4, 0x18, 0x5E, 0xB8, 0x7C, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x28 },
|
||||
{ 0xF2, 0x0A, 0x0D, 0xD7, 0x40, 0xE4, 0x1F, 0x5E, 0xB8, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xF2, 0x09, 0x4B, 0xD6, 0x48, 0xE4, 0x1F, 0x1C, 0xB8, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x28 },
|
||||
{ 0x62, 0x11, 0x0C, 0xE6, 0x3C, 0xE4, 0x1F, 0x0C, 0xC8, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x12, 0x3D, 0xE6, 0x34, 0xE4, 0x1F, 0x7D, 0xB8, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x13, 0x3D, 0xE6, 0x34, 0xE4, 0x1F, 0x5D, 0xB8, 0x7D, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xA2, 0x40, 0x5D, 0xBA, 0x3F, 0xE2, 0x00, 0x8F, 0xD8, 0x79, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x40, 0x3D, 0xDA, 0x3B, 0xE1, 0x00, 0x7E, 0xD8, 0x7A, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x62, 0x00, 0x6D, 0xFA, 0x5D, 0xE2, 0x00, 0x8F, 0xC8, 0x79, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE1, 0x00, 0x4E, 0xDB, 0x4A, 0xE3, 0x18, 0x6F, 0xE9, 0x7E, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE1, 0x00, 0x4E, 0xDB, 0x66, 0xE2, 0x00, 0x7F, 0xE9, 0x7E, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x02, 0x0F, 0x66, 0xAA, 0x51, 0x02, 0x64, 0x29, 0xF9, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x04 },
|
||||
{ 0x16, 0x4A, 0x04, 0xBA, 0x39, 0xC2, 0x58, 0x2D, 0xCA, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0x02, 0x00, 0x01, 0x7A, 0x79, 0x02, 0x3F, 0x28, 0xEA, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xC2, 0x40, 0x3C, 0x96, 0x58, 0xC4, 0xDE, 0x0E, 0xC7, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x20 },
|
||||
{ 0x31, 0x13, 0x2D, 0xD7, 0x3C, 0xE2, 0x18, 0x2E, 0xB8, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x22, 0x86, 0x0D, 0xD7, 0x50, 0xE4, 0x18, 0x5E, 0xB8, 0x7C, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x28 },
|
||||
{ 0xF2, 0x0A, 0x0D, 0xD7, 0x40, 0xE4, 0x1F, 0x5E, 0xB8, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xF2, 0x09, 0x4B, 0xD6, 0x48, 0xE4, 0x1F, 0x1C, 0xB8, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x28 },
|
||||
{ 0x62, 0x11, 0x0C, 0xE6, 0x3C, 0xE4, 0x1F, 0x0C, 0xC8, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x12, 0x3D, 0xE6, 0x34, 0xE4, 0x1F, 0x7D, 0xB8, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x13, 0x3D, 0xE6, 0x34, 0xE4, 0x1F, 0x5D, 0xB8, 0x7D, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xA2, 0x40, 0x5D, 0xBA, 0x3F, 0xE2, 0x00, 0x8F, 0xD8, 0x79, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x40, 0x3D, 0xDA, 0x3B, 0xE1, 0x00, 0x7E, 0xD8, 0x7A, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x62, 0x00, 0x6D, 0xFA, 0x5D, 0xE2, 0x00, 0x8F, 0xC8, 0x79, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE1, 0x00, 0x4E, 0xDB, 0x4A, 0xE3, 0x18, 0x6F, 0xE9, 0x7E, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE1, 0x00, 0x4E, 0xDB, 0x66, 0xE2, 0x00, 0x7F, 0xE9, 0x7E, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x02, 0x0F, 0x66, 0xAA, 0x51, 0x02, 0x64, 0x29, 0xF9, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x04 },
|
||||
{ 0x16, 0x4A, 0x04, 0xBA, 0x39, 0xC2, 0x58, 0x2D, 0xCA, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0x02, 0x00, 0x01, 0x7A, 0x79, 0x02, 0x3F, 0x28, 0xEA, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
// 0x30
|
||||
{ 0x62, 0x53, 0x9C, 0xBA, 0x31, 0x62, 0x5B, 0xAD, 0xC9, 0x55, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xF2, 0x40, 0x6E, 0xDA, 0x49, 0xE2, 0x13, 0x8F, 0xF9, 0x7D, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x40, 0x8F, 0xFA, 0x50, 0xF2, 0x04, 0x7F, 0xFA, 0x7D, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0xA0, 0xCE, 0x5B, 0x02, 0xE2, 0x32, 0x7F, 0xFB, 0x3D, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE6, 0x80, 0x9C, 0x99, 0x42, 0xE2, 0x04, 0x7D, 0x78, 0x60, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xEA, 0xA0, 0xAC, 0x67, 0x02, 0xE2, 0x00, 0x7C, 0x7A, 0x7C, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE7, 0x94, 0xAD, 0xB7, 0x03, 0xE2, 0x00, 0x7C, 0xBA, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC3, 0x3F, 0x4B, 0xE9, 0x7E, 0xC1, 0x3F, 0x9B, 0xF9, 0x7F, 0x0B, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x06 },
|
||||
{ 0xB2, 0x20, 0xAD, 0xE9, 0x00, 0x62, 0x05, 0x8F, 0xC8, 0x68, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xF2, 0x00, 0x8F, 0xFB, 0x50, 0xF6, 0x47, 0x8F, 0xE9, 0x68, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xF2, 0x00, 0xAF, 0x88, 0x58, 0xF2, 0x54, 0x6E, 0xC9, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xF2, 0x2A, 0x9F, 0x98, 0x01, 0xE2, 0x84, 0x4E, 0x78, 0x6C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x02, 0x9F, 0xB8, 0x48, 0x22, 0x89, 0x9F, 0xE8, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x2A, 0x7F, 0xB8, 0x01, 0xE4, 0x00, 0x0D, 0xC5, 0x7C, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x28, 0x8E, 0xE8, 0x01, 0xF2, 0x00, 0x4D, 0xD6, 0x7D, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x62, 0x23, 0x8F, 0xEA, 0x00, 0xF2, 0x00, 0x5E, 0xD9, 0x7C, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x62, 0x53, 0x9C, 0xBA, 0x31, 0x62, 0x5B, 0xAD, 0xC9, 0x55, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xF2, 0x40, 0x6E, 0xDA, 0x49, 0xE2, 0x13, 0x8F, 0xF9, 0x7D, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x40, 0x8F, 0xFA, 0x50, 0xF2, 0x04, 0x7F, 0xFA, 0x7D, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0xA0, 0xCE, 0x5B, 0x02, 0xE2, 0x32, 0x7F, 0xFB, 0x3D, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE6, 0x80, 0x9C, 0x99, 0x42, 0xE2, 0x04, 0x7D, 0x78, 0x60, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xEA, 0xA0, 0xAC, 0x67, 0x02, 0xE2, 0x00, 0x7C, 0x7A, 0x7C, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE7, 0x94, 0xAD, 0xB7, 0x03, 0xE2, 0x00, 0x7C, 0xBA, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC3, 0x3F, 0x4B, 0xE9, 0x7E, 0xC1, 0x3F, 0x9B, 0xF9, 0x7F, 0x0B, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x06 },
|
||||
{ 0xB2, 0x20, 0xAD, 0xE9, 0x00, 0x62, 0x05, 0x8F, 0xC8, 0x68, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xF2, 0x00, 0x8F, 0xFB, 0x50, 0xF6, 0x47, 0x8F, 0xE9, 0x68, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xF2, 0x00, 0xAF, 0x88, 0x58, 0xF2, 0x54, 0x6E, 0xC9, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xF2, 0x2A, 0x9F, 0x98, 0x01, 0xE2, 0x84, 0x4E, 0x78, 0x6C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x02, 0x9F, 0xB8, 0x48, 0x22, 0x89, 0x9F, 0xE8, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x2A, 0x7F, 0xB8, 0x01, 0xE4, 0x00, 0x0D, 0xC5, 0x7C, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x28, 0x8E, 0xE8, 0x01, 0xF2, 0x00, 0x4D, 0xD6, 0x7D, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x62, 0x23, 0x8F, 0xEA, 0x00, 0xF2, 0x00, 0x5E, 0xD9, 0x7C, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
// 0x40
|
||||
{ 0xB4, 0x26, 0x6E, 0x98, 0x01, 0x62, 0x00, 0x7D, 0xC8, 0x7D, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x2E, 0x20, 0xD9, 0x01, 0xF2, 0x0F, 0x90, 0xF8, 0x78, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x28, 0x7E, 0xF8, 0x01, 0xE2, 0x23, 0x8E, 0xE8, 0x7D, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xB8, 0x28, 0x9E, 0x98, 0x01, 0x62, 0x00, 0x3D, 0xC8, 0x7D, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x62, 0x00, 0x8E, 0xC9, 0x3D, 0xE6, 0x00, 0x7E, 0xD8, 0x68, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x00, 0x5F, 0xF9, 0x48, 0xE6, 0x98, 0x8F, 0xF8, 0x7D, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x62, 0x0C, 0x6E, 0xD8, 0x3D, 0x2A, 0x06, 0x7D, 0xD8, 0x58, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x00, 0x7E, 0x89, 0x38, 0xE6, 0x84, 0x80, 0xF8, 0x68, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x80, 0x6C, 0xD9, 0x30, 0xE2, 0x00, 0x8D, 0xC8, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x80, 0x88, 0x48, 0x40, 0xE2, 0x0A, 0x7D, 0xA8, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x00, 0x77, 0xC5, 0x54, 0xE2, 0x00, 0x9E, 0xD7, 0x70, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x80, 0x86, 0xB9, 0x64, 0xE2, 0x05, 0x9F, 0xD7, 0x78, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x00, 0x68, 0x68, 0x56, 0xE2, 0x08, 0x9B, 0xB3, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x00, 0xA6, 0x87, 0x41, 0xE2, 0x0A, 0x7E, 0xC9, 0x7C, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x80, 0x9A, 0xB8, 0x48, 0xE2, 0x00, 0x9E, 0xF9, 0x60, 0x09, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x80, 0x8E, 0x64, 0x68, 0xE2, 0x28, 0x6F, 0x73, 0x7C, 0x01, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xB4, 0x26, 0x6E, 0x98, 0x01, 0x62, 0x00, 0x7D, 0xC8, 0x7D, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x2E, 0x20, 0xD9, 0x01, 0xF2, 0x0F, 0x90, 0xF8, 0x78, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x28, 0x7E, 0xF8, 0x01, 0xE2, 0x23, 0x8E, 0xE8, 0x7D, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xB8, 0x28, 0x9E, 0x98, 0x01, 0x62, 0x00, 0x3D, 0xC8, 0x7D, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x62, 0x00, 0x8E, 0xC9, 0x3D, 0xE6, 0x00, 0x7E, 0xD8, 0x68, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x00, 0x5F, 0xF9, 0x48, 0xE6, 0x98, 0x8F, 0xF8, 0x7D, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x62, 0x0C, 0x6E, 0xD8, 0x3D, 0x2A, 0x06, 0x7D, 0xD8, 0x58, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x00, 0x7E, 0x89, 0x38, 0xE6, 0x84, 0x80, 0xF8, 0x68, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x80, 0x6C, 0xD9, 0x30, 0xE2, 0x00, 0x8D, 0xC8, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x80, 0x88, 0x48, 0x40, 0xE2, 0x0A, 0x7D, 0xA8, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x00, 0x77, 0xC5, 0x54, 0xE2, 0x00, 0x9E, 0xD7, 0x70, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x80, 0x86, 0xB9, 0x64, 0xE2, 0x05, 0x9F, 0xD7, 0x78, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x00, 0x68, 0x68, 0x56, 0xE2, 0x08, 0x9B, 0xB3, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x00, 0xA6, 0x87, 0x41, 0xE2, 0x0A, 0x7E, 0xC9, 0x7C, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x80, 0x9A, 0xB8, 0x48, 0xE2, 0x00, 0x9E, 0xF9, 0x60, 0x09, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x80, 0x8E, 0x64, 0x68, 0xE2, 0x28, 0x6F, 0x73, 0x7C, 0x01, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
// 0x50
|
||||
{ 0xE8, 0x00, 0x7D, 0x99, 0x54, 0xE6, 0x80, 0x80, 0xF8, 0x7C, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE6, 0x00, 0x9F, 0xB9, 0x6D, 0xE1, 0x00, 0x8F, 0xC8, 0x7D, 0x02, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x00, 0x09, 0x68, 0x4A, 0xE2, 0x2B, 0x9E, 0xF3, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC4, 0x00, 0x99, 0xE8, 0x3B, 0xE2, 0x25, 0x6F, 0x93, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE6, 0x00, 0x6F, 0xDA, 0x69, 0xE2, 0x05, 0x2F, 0xD8, 0x6A, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xEC, 0x60, 0x9D, 0xC7, 0x00, 0xE2, 0x21, 0x7F, 0xC9, 0x7C, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE3, 0x00, 0x0F, 0xF7, 0x7D, 0xE1, 0x3F, 0x0F, 0xA7, 0x01, 0x0D, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0xA9, 0x0F, 0xA8, 0x02, 0xE2, 0x3C, 0x5F, 0xDA, 0x3C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE8, 0x40, 0x0D, 0x89, 0x7D, 0xE2, 0x17, 0x7E, 0xD9, 0x7C, 0x07, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE1, 0x00, 0xDF, 0x8A, 0x56, 0xE2, 0x5E, 0xCF, 0xBA, 0x7E, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE2, 0x00, 0x0B, 0x68, 0x60, 0xE2, 0x01, 0x9E, 0xB8, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xEA, 0x00, 0xAE, 0xAB, 0x49, 0xE2, 0x00, 0xAE, 0xBA, 0x6C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xEB, 0x80, 0x8C, 0xCB, 0x3A, 0xE2, 0x86, 0xAF, 0xCA, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE5, 0x40, 0xDB, 0x3B, 0x3C, 0xE2, 0x80, 0xBE, 0xCA, 0x71, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE4, 0x00, 0x9E, 0xAA, 0x3D, 0xE1, 0x43, 0x0F, 0xBA, 0x7E, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE7, 0x40, 0xEC, 0xCA, 0x44, 0xE2, 0x03, 0xBF, 0xBA, 0x66, 0x02, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE8, 0x00, 0x7D, 0x99, 0x54, 0xE6, 0x80, 0x80, 0xF8, 0x7C, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE6, 0x00, 0x9F, 0xB9, 0x6D, 0xE1, 0x00, 0x8F, 0xC8, 0x7D, 0x02, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x00, 0x09, 0x68, 0x4A, 0xE2, 0x2B, 0x9E, 0xF3, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC4, 0x00, 0x99, 0xE8, 0x3B, 0xE2, 0x25, 0x6F, 0x93, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE6, 0x00, 0x6F, 0xDA, 0x69, 0xE2, 0x05, 0x2F, 0xD8, 0x6A, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xEC, 0x60, 0x9D, 0xC7, 0x00, 0xE2, 0x21, 0x7F, 0xC9, 0x7C, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE3, 0x00, 0x0F, 0xF7, 0x7D, 0xE1, 0x3F, 0x0F, 0xA7, 0x01, 0x0D, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0xA9, 0x0F, 0xA8, 0x02, 0xE2, 0x3C, 0x5F, 0xDA, 0x3C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE8, 0x40, 0x0D, 0x89, 0x7D, 0xE2, 0x17, 0x7E, 0xD9, 0x7C, 0x07, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE1, 0x00, 0xDF, 0x8A, 0x56, 0xE2, 0x5E, 0xCF, 0xBA, 0x7E, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE2, 0x00, 0x0B, 0x68, 0x60, 0xE2, 0x01, 0x9E, 0xB8, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xEA, 0x00, 0xAE, 0xAB, 0x49, 0xE2, 0x00, 0xAE, 0xBA, 0x6C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xEB, 0x80, 0x8C, 0xCB, 0x3A, 0xE2, 0x86, 0xAF, 0xCA, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE5, 0x40, 0xDB, 0x3B, 0x3C, 0xE2, 0x80, 0xBE, 0xCA, 0x71, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE4, 0x00, 0x9E, 0xAA, 0x3D, 0xE1, 0x43, 0x0F, 0xBA, 0x7E, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE7, 0x40, 0xEC, 0xCA, 0x44, 0xE2, 0x03, 0xBF, 0xBA, 0x66, 0x02, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
// 0x60
|
||||
{ 0xEA, 0x00, 0x68, 0xB8, 0x48, 0xE2, 0x0A, 0x8E, 0xB8, 0x7C, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x61, 0x00, 0xBE, 0x99, 0x7E, 0xE3, 0x40, 0xCF, 0xCA, 0x7D, 0x09, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xCD, 0x00, 0x0B, 0x00, 0x48, 0xC2, 0x58, 0x0C, 0x00, 0x7C, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x1C },
|
||||
{ 0xE2, 0x00, 0x0E, 0x00, 0x52, 0xE2, 0x58, 0x5F, 0xD0, 0x7D, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xCC, 0x00, 0x7D, 0xDA, 0x40, 0xC2, 0x00, 0x5E, 0x9B, 0x58, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE9, 0xC0, 0xEE, 0xD8, 0x43, 0xE2, 0x05, 0xDD, 0xAA, 0x70, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xDA, 0x00, 0x8F, 0xAC, 0x4A, 0x22, 0x05, 0x8D, 0x8A, 0x75, 0x02, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x62, 0x8A, 0xCB, 0x7A, 0x74, 0xE6, 0x56, 0xAF, 0xDB, 0x70, 0x02, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xC2, 0x41, 0xAC, 0x5B, 0x5B, 0xC2, 0x80, 0x0D, 0xCB, 0x7D, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x12 },
|
||||
{ 0x75, 0x00, 0x0E, 0xCB, 0x5A, 0xE2, 0x1E, 0x0A, 0xC9, 0x7D, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x10 },
|
||||
{ 0x41, 0x00, 0x0E, 0xEA, 0x53, 0xC2, 0x00, 0x08, 0xCA, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x07 },
|
||||
{ 0xC1, 0x40, 0x0C, 0x59, 0x6A, 0xC2, 0x80, 0x3C, 0xAB, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x0D },
|
||||
{ 0x4B, 0x00, 0x0A, 0xF5, 0x61, 0xC2, 0x19, 0x0C, 0xE9, 0x7C, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x07 },
|
||||
{ 0x62, 0x00, 0x7F, 0xD8, 0x54, 0xEA, 0x00, 0x8F, 0xD8, 0x7D, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE1, 0x00, 0x7F, 0xD9, 0x56, 0xE1, 0x00, 0x8F, 0xD8, 0x7E, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xE1, 0x00, 0x7F, 0xD9, 0x56, 0xE1, 0x00, 0x8F, 0xD8, 0x7E, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0xEA, 0x00, 0x68, 0xB8, 0x48, 0xE2, 0x0A, 0x8E, 0xB8, 0x7C, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x61, 0x00, 0xBE, 0x99, 0x7E, 0xE3, 0x40, 0xCF, 0xCA, 0x7D, 0x09, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xCD, 0x00, 0x0B, 0x00, 0x48, 0xC2, 0x58, 0x0C, 0x00, 0x7C, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x1C },
|
||||
{ 0xE2, 0x00, 0x0E, 0x00, 0x52, 0xE2, 0x58, 0x5F, 0xD0, 0x7D, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xCC, 0x00, 0x7D, 0xDA, 0x40, 0xC2, 0x00, 0x5E, 0x9B, 0x58, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE9, 0xC0, 0xEE, 0xD8, 0x43, 0xE2, 0x05, 0xDD, 0xAA, 0x70, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xDA, 0x00, 0x8F, 0xAC, 0x4A, 0x22, 0x05, 0x8D, 0x8A, 0x75, 0x02, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x62, 0x8A, 0xCB, 0x7A, 0x74, 0xE6, 0x56, 0xAF, 0xDB, 0x70, 0x02, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xC2, 0x41, 0xAC, 0x5B, 0x5B, 0xC2, 0x80, 0x0D, 0xCB, 0x7D, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x12 },
|
||||
{ 0x75, 0x00, 0x0E, 0xCB, 0x5A, 0xE2, 0x1E, 0x0A, 0xC9, 0x7D, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x10 },
|
||||
{ 0x41, 0x00, 0x0E, 0xEA, 0x53, 0xC2, 0x00, 0x08, 0xCA, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x07 },
|
||||
{ 0xC1, 0x40, 0x0C, 0x59, 0x6A, 0xC2, 0x80, 0x3C, 0xAB, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x0D },
|
||||
{ 0x4B, 0x00, 0x0A, 0xF5, 0x61, 0xC2, 0x19, 0x0C, 0xE9, 0x7C, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x07 },
|
||||
{ 0x62, 0x00, 0x7F, 0xD8, 0x54, 0xEA, 0x00, 0x8F, 0xD8, 0x7D, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE1, 0x00, 0x7F, 0xD9, 0x56, 0xE1, 0x00, 0x8F, 0xD8, 0x7E, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0xE1, 0x00, 0x7F, 0xD9, 0x56, 0xE1, 0x00, 0x8F, 0xD8, 0x7E, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
// 0x70
|
||||
{ 0xCF, 0x40, 0x09, 0xEA, 0x54, 0xC4, 0x00, 0x0C, 0xDB, 0x64, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xCF, 0x40, 0x0C, 0xAA, 0x54, 0xC4, 0x00, 0x18, 0xF9, 0x64, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xC9, 0x0E, 0x88, 0xD9, 0x3E, 0xC2, 0x08, 0x1A, 0xEA, 0x6C, 0x0C, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 },
|
||||
{ 0x03, 0x00, 0x15, 0x00, 0x64, 0x02, 0x00, 0x08, 0x00, 0x7C, 0x09, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x01, 0x00, 0x47, 0xD7, 0x6C, 0x01, 0x3F, 0x0C, 0xFB, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x04 },
|
||||
{ 0x00, 0x00, 0x36, 0x67, 0x7C, 0x01, 0x3F, 0x0E, 0xFA, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 },
|
||||
{ 0x02, 0x00, 0x36, 0x68, 0x7C, 0x01, 0x3F, 0x0E, 0xFA, 0x7C, 0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 },
|
||||
{ 0xCB, 0x00, 0xAF, 0x00, 0x7E, 0xC0, 0x00, 0xC0, 0x06, 0x7F, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x0F },
|
||||
{ 0x05, 0x0D, 0x80, 0xA6, 0x7F, 0x0B, 0x38, 0xA9, 0xD8, 0x00, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x04 },
|
||||
{ 0x0F, 0x00, 0x90, 0xFA, 0x68, 0x06, 0x00, 0xA7, 0x39, 0x54, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x06 },
|
||||
{ 0xC9, 0x15, 0xDD, 0xFF, 0x7C, 0x00, 0x00, 0xE7, 0xFC, 0x6C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x38 },
|
||||
{ 0x48, 0x3C, 0x30, 0xF6, 0x03, 0x0A, 0x38, 0x97, 0xE8, 0x00, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x04 },
|
||||
{ 0x07, 0x80, 0x0B, 0xC8, 0x65, 0x02, 0x3F, 0x0C, 0xEA, 0x7C, 0x0F, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 },
|
||||
{ 0x00, 0x21, 0x66, 0x40, 0x03, 0x00, 0x3F, 0x47, 0x00, 0x00, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x08, 0x00, 0x0B, 0x3C, 0x7C, 0x08, 0x3F, 0x06, 0xF3, 0x00, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x00, 0x3F, 0x4C, 0xFB, 0x00, 0x00, 0x3F, 0x0A, 0xE9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 }
|
||||
{ 0xCF, 0x40, 0x09, 0xEA, 0x54, 0xC4, 0x00, 0x0C, 0xDB, 0x64, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0xCF, 0x40, 0x0C, 0xAA, 0x54, 0xC4, 0x00, 0x18, 0xF9, 0x64, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0xC9, 0x0E, 0x88, 0xD9, 0x3E, 0xC2, 0x08, 0x1A, 0xEA, 0x6C, 0x0C, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 },
|
||||
{ 0x03, 0x00, 0x15, 0x00, 0x64, 0x02, 0x00, 0x08, 0x00, 0x7C, 0x09, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x01, 0x00, 0x47, 0xD7, 0x6C, 0x01, 0x3F, 0x0C, 0xFB, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x04 },
|
||||
{ 0x00, 0x00, 0x36, 0x67, 0x7C, 0x01, 0x3F, 0x0E, 0xFA, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 },
|
||||
{ 0x02, 0x00, 0x36, 0x68, 0x7C, 0x01, 0x3F, 0x0E, 0xFA, 0x7C, 0x00, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 },
|
||||
{ 0xCB, 0x00, 0xAF, 0x00, 0x7E, 0xC0, 0x00, 0xC0, 0x06, 0x7F, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x0F },
|
||||
{ 0x05, 0x0D, 0x80, 0xA6, 0x7F, 0x0B, 0x38, 0xA9, 0xD8, 0x00, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x04 },
|
||||
{ 0x0F, 0x00, 0x90, 0xFA, 0x68, 0x06, 0x00, 0xA7, 0x39, 0x54, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x06 },
|
||||
{ 0xC9, 0x15, 0xDD, 0xFF, 0x7C, 0x00, 0x00, 0xE7, 0xFC, 0x6C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x38 },
|
||||
{ 0x48, 0x3C, 0x30, 0xF6, 0x03, 0x0A, 0x38, 0x97, 0xE8, 0x00, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x04 },
|
||||
{ 0x07, 0x80, 0x0B, 0xC8, 0x65, 0x02, 0x3F, 0x0C, 0xEA, 0x7C, 0x0F, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 },
|
||||
{ 0x00, 0x21, 0x66, 0x40, 0x03, 0x00, 0x3F, 0x47, 0x00, 0x00, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x08, 0x00, 0x0B, 0x3C, 0x7C, 0x08, 0x3F, 0x06, 0xF3, 0x00, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x00, 0x3F, 0x4C, 0xFB, 0x00, 0x00, 0x3F, 0x0A, 0xE9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 }
|
||||
};
|
||||
|
||||
static byte gm_percussion_to_fm[39][30] = {
|
||||
{ 0x1A, 0x3F, 0x15, 0x05, 0x7C, 0x02, 0x21, 0x2B, 0xE4, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x06 },
|
||||
{ 0x11, 0x12, 0x04, 0x07, 0x7C, 0x02, 0x23, 0x0B, 0xE5, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 },
|
||||
{ 0x0A, 0x3F, 0x0B, 0x01, 0x7C, 0x1F, 0x1C, 0x46, 0xD0, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x01 },
|
||||
{ 0x00, 0x3F, 0x0F, 0x00, 0x7C, 0x10, 0x12, 0x07, 0x00, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x0F, 0x3F, 0x0B, 0x00, 0x7C, 0x1F, 0x0F, 0x19, 0xD0, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0x16, 0x07, 0x00, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0x12, 0x3F, 0x05, 0x06, 0x7C, 0x03, 0x1F, 0x4A, 0xD9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0xCF, 0x7F, 0x08, 0xFF, 0x7E, 0x00, 0xC7, 0x2D, 0xF7, 0x73, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x12, 0x3F, 0x05, 0x06, 0x7C, 0x43, 0x21, 0x0C, 0xE9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0xCF, 0x7F, 0x08, 0xCF, 0x7E, 0x00, 0x45, 0x2A, 0xF8, 0x4B, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x0C },
|
||||
{ 0x12, 0x3F, 0x06, 0x17, 0x7C, 0x03, 0x27, 0x0B, 0xE9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0xCF, 0x7F, 0x08, 0xCD, 0x7E, 0x00, 0x40, 0x1A, 0x69, 0x63, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x0C },
|
||||
{ 0x13, 0x3F, 0x05, 0x06, 0x7C, 0x03, 0x17, 0x0A, 0xD9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0x15, 0x3F, 0x05, 0x06, 0x7C, 0x03, 0x21, 0x0C, 0xE9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0xCF, 0x3F, 0x2B, 0xFB, 0x7E, 0xC0, 0x1E, 0x1A, 0xCA, 0x7F, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x10 },
|
||||
{ 0x17, 0x3F, 0x04, 0x09, 0x7C, 0x03, 0x22, 0x0D, 0xE9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0xCF, 0x3F, 0x0F, 0x5E, 0x7C, 0xC6, 0x13, 0x00, 0xCA, 0x7F, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0xCF, 0x3F, 0x7E, 0x9D, 0x7C, 0xC8, 0xC0, 0x0A, 0xBA, 0x74, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x06 },
|
||||
{ 0xCF, 0x3F, 0x4D, 0x9F, 0x7C, 0xC6, 0x00, 0x08, 0xDA, 0x5B, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x04 },
|
||||
{ 0xCF, 0x3F, 0x5D, 0xAA, 0x7A, 0xC0, 0xA4, 0x67, 0x99, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xCF, 0x3F, 0x4A, 0xFD, 0x7C, 0xCF, 0x00, 0x59, 0xEA, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x0F, 0x18, 0x0A, 0xFA, 0x57, 0x06, 0x07, 0x06, 0x39, 0x7C, 0x0A, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xCF, 0x3F, 0x2B, 0xFC, 0x7C, 0xCC, 0xC6, 0x0B, 0xEA, 0x7F, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x10 },
|
||||
{ 0x05, 0x1A, 0x04, 0x00, 0x7C, 0x12, 0x10, 0x0C, 0xEA, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x07 },
|
||||
{ 0x04, 0x19, 0x04, 0x00, 0x7C, 0x12, 0x10, 0x2C, 0xEA, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x04 },
|
||||
{ 0x04, 0x0A, 0x04, 0x00, 0x6C, 0x01, 0x07, 0x0D, 0xFA, 0x74, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x07 },
|
||||
{ 0x15, 0x14, 0x05, 0x00, 0x7D, 0x01, 0x07, 0x5C, 0xE9, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 },
|
||||
{ 0x10, 0x10, 0x05, 0x08, 0x7C, 0x01, 0x08, 0x0D, 0xEA, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x05 },
|
||||
{ 0x11, 0x00, 0x06, 0x87, 0x7F, 0x02, 0x40, 0x09, 0x59, 0x68, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x08 },
|
||||
{ 0x13, 0x26, 0x04, 0x6A, 0x7F, 0x01, 0x00, 0x08, 0x5A, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x08 },
|
||||
{ 0xCF, 0x4E, 0x0C, 0xAA, 0x50, 0xC4, 0x00, 0x18, 0xF9, 0x54, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xCF, 0x4E, 0x0C, 0xAA, 0x50, 0xC3, 0x00, 0x18, 0xF8, 0x54, 0x04, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xCB, 0x3F, 0x8F, 0x00, 0x7E, 0xC5, 0x00, 0x98, 0xD6, 0x5F, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x0D },
|
||||
{ 0x0C, 0x18, 0x87, 0xB3, 0x7F, 0x19, 0x10, 0x55, 0x75, 0x7C, 0x0E, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x05, 0x11, 0x15, 0x00, 0x64, 0x02, 0x08, 0x08, 0x00, 0x5C, 0x09, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0x04, 0x08, 0x15, 0x00, 0x48, 0x01, 0x08, 0x08, 0x00, 0x60, 0x08, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x02 },
|
||||
{ 0xDA, 0x00, 0x53, 0x30, 0x68, 0x07, 0x1E, 0x49, 0xC4, 0x7E, 0x03, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 },
|
||||
{ 0x1C, 0x00, 0x07, 0xBC, 0x6C, 0x0C, 0x14, 0x0B, 0x6A, 0x7E, 0x0B, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x03 },
|
||||
{ 0x0A, 0x0E, 0x7F, 0x00, 0x7D, 0x13, 0x20, 0x28, 0x03, 0x7C, 0x06, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x00 }
|
||||
static AdLibInstrument gm_percussion_to_fm[39] = {
|
||||
{ 0x1A, 0x3F, 0x15, 0x05, 0x7C, 0x02, 0x21, 0x2B, 0xE4, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x06 },
|
||||
{ 0x11, 0x12, 0x04, 0x07, 0x7C, 0x02, 0x23, 0x0B, 0xE5, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 },
|
||||
{ 0x0A, 0x3F, 0x0B, 0x01, 0x7C, 0x1F, 0x1C, 0x46, 0xD0, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x01 },
|
||||
{ 0x00, 0x3F, 0x0F, 0x00, 0x7C, 0x10, 0x12, 0x07, 0x00, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x0F, 0x3F, 0x0B, 0x00, 0x7C, 0x1F, 0x0F, 0x19, 0xD0, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0x16, 0x07, 0x00, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0x12, 0x3F, 0x05, 0x06, 0x7C, 0x03, 0x1F, 0x4A, 0xD9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0xCF, 0x7F, 0x08, 0xFF, 0x7E, 0x00, 0xC7, 0x2D, 0xF7, 0x73, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x12, 0x3F, 0x05, 0x06, 0x7C, 0x43, 0x21, 0x0C, 0xE9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0xCF, 0x7F, 0x08, 0xCF, 0x7E, 0x00, 0x45, 0x2A, 0xF8, 0x4B, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x0C },
|
||||
{ 0x12, 0x3F, 0x06, 0x17, 0x7C, 0x03, 0x27, 0x0B, 0xE9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0xCF, 0x7F, 0x08, 0xCD, 0x7E, 0x00, 0x40, 0x1A, 0x69, 0x63, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x0C },
|
||||
{ 0x13, 0x3F, 0x05, 0x06, 0x7C, 0x03, 0x17, 0x0A, 0xD9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0x15, 0x3F, 0x05, 0x06, 0x7C, 0x03, 0x21, 0x0C, 0xE9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0xCF, 0x3F, 0x2B, 0xFB, 0x7E, 0xC0, 0x1E, 0x1A, 0xCA, 0x7F, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x10 },
|
||||
{ 0x17, 0x3F, 0x04, 0x09, 0x7C, 0x03, 0x22, 0x0D, 0xE9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0xCF, 0x3F, 0x0F, 0x5E, 0x7C, 0xC6, 0x13, 0x00, 0xCA, 0x7F, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0xCF, 0x3F, 0x7E, 0x9D, 0x7C, 0xC8, 0xC0, 0x0A, 0xBA, 0x74, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x06 },
|
||||
{ 0xCF, 0x3F, 0x4D, 0x9F, 0x7C, 0xC6, 0x00, 0x08, 0xDA, 0x5B, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x04 },
|
||||
{ 0xCF, 0x3F, 0x5D, 0xAA, 0x7A, 0xC0, 0xA4, 0x67, 0x99, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0xCF, 0x3F, 0x4A, 0xFD, 0x7C, 0xCF, 0x00, 0x59, 0xEA, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x0F, 0x18, 0x0A, 0xFA, 0x57, 0x06, 0x07, 0x06, 0x39, 0x7C, 0x0A, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0xCF, 0x3F, 0x2B, 0xFC, 0x7C, 0xCC, 0xC6, 0x0B, 0xEA, 0x7F, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x10 },
|
||||
{ 0x05, 0x1A, 0x04, 0x00, 0x7C, 0x12, 0x10, 0x0C, 0xEA, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x07 },
|
||||
{ 0x04, 0x19, 0x04, 0x00, 0x7C, 0x12, 0x10, 0x2C, 0xEA, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x04 },
|
||||
{ 0x04, 0x0A, 0x04, 0x00, 0x6C, 0x01, 0x07, 0x0D, 0xFA, 0x74, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x07 },
|
||||
{ 0x15, 0x14, 0x05, 0x00, 0x7D, 0x01, 0x07, 0x5C, 0xE9, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 },
|
||||
{ 0x10, 0x10, 0x05, 0x08, 0x7C, 0x01, 0x08, 0x0D, 0xEA, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x05 },
|
||||
{ 0x11, 0x00, 0x06, 0x87, 0x7F, 0x02, 0x40, 0x09, 0x59, 0x68, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x08 },
|
||||
{ 0x13, 0x26, 0x04, 0x6A, 0x7F, 0x01, 0x00, 0x08, 0x5A, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x08 },
|
||||
{ 0xCF, 0x4E, 0x0C, 0xAA, 0x50, 0xC4, 0x00, 0x18, 0xF9, 0x54, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0xCF, 0x4E, 0x0C, 0xAA, 0x50, 0xC3, 0x00, 0x18, 0xF8, 0x54, 0x04, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0xCB, 0x3F, 0x8F, 0x00, 0x7E, 0xC5, 0x00, 0x98, 0xD6, 0x5F, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x0D },
|
||||
{ 0x0C, 0x18, 0x87, 0xB3, 0x7F, 0x19, 0x10, 0x55, 0x75, 0x7C, 0x0E, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x05, 0x11, 0x15, 0x00, 0x64, 0x02, 0x08, 0x08, 0x00, 0x5C, 0x09, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0x04, 0x08, 0x15, 0x00, 0x48, 0x01, 0x08, 0x08, 0x00, 0x60, 0x08, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x02 },
|
||||
{ 0xDA, 0x00, 0x53, 0x30, 0x68, 0x07, 0x1E, 0x49, 0xC4, 0x7E, 0x03, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 },
|
||||
{ 0x1C, 0x00, 0x07, 0xBC, 0x6C, 0x0C, 0x14, 0x0B, 0x6A, 0x7E, 0x0B, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x03 },
|
||||
{ 0x0A, 0x0E, 0x7F, 0x00, 0x7D, 0x13, 0x20, 0x28, 0x03, 0x7C, 0x06, 0, { 0,0,0,0,0,0,0,0 }, 0, { 0,0,0,0,0,0,0,0 }, 0x00 }
|
||||
};
|
||||
|
||||
static const byte gm_percussion_lookup[128] = {
|
||||
|
@ -616,7 +613,7 @@ private:
|
|||
void adlib_note_on(int chan, byte note, int mod);
|
||||
void adlib_note_on_ex(int chan, byte note, int mod);
|
||||
int adlib_get_reg_value_param(int chan, byte data);
|
||||
void adlib_setup_channel(int chan, AdLibInstrument * instr, byte vol_1, byte vol_2);
|
||||
void adlib_setup_channel(int chan, AdLibInstrument *instr, byte vol_1, byte vol_2);
|
||||
byte adlib_get_reg_value(byte reg) {
|
||||
return _adlib_reg_cache[reg];
|
||||
}
|
||||
|
@ -627,16 +624,16 @@ private:
|
|||
|
||||
AdLibVoice *allocate_voice(byte pri);
|
||||
|
||||
void mc_off(AdLibVoice * voice);
|
||||
void mc_off(AdLibVoice *voice);
|
||||
|
||||
static void link_mc(AdLibPart *part, AdLibVoice *voice);
|
||||
void mc_inc_stuff(AdLibVoice *voice, Struct10 * s10, Struct11 * s11);
|
||||
void mc_init_stuff(AdLibVoice *voice, Struct10 * s10, Struct11 * s11, byte flags,
|
||||
InstrumentExtra * ie);
|
||||
void mc_inc_stuff(AdLibVoice *voice, Struct10 *s10, Struct11 *s11);
|
||||
void mc_init_stuff(AdLibVoice *voice, Struct10 *s10, Struct11 *s11, byte flags,
|
||||
InstrumentExtra *ie);
|
||||
|
||||
void struct10_init(Struct10 * s10, InstrumentExtra * ie);
|
||||
static byte struct10_ontimer(Struct10 * s10, Struct11 * s11);
|
||||
static void struct10_setup(Struct10 * s10);
|
||||
void struct10_init(Struct10 *s10, InstrumentExtra *ie);
|
||||
static byte struct10_ontimer(Struct10 *s10, Struct11 *s11);
|
||||
static void struct10_setup(Struct10 *s10);
|
||||
static int random_nr(int a);
|
||||
void mc_key_on(AdLibVoice *voice, AdLibInstrument *instr, byte note, byte velocity);
|
||||
};
|
||||
|
@ -676,12 +673,14 @@ void AdLibPart::programChange(byte program) {
|
|||
if (program > 127)
|
||||
return;
|
||||
|
||||
/*
|
||||
uint i;
|
||||
uint count = 0;
|
||||
for (i = 0; i < ARRAYSIZE(map_gm_to_fm[0]); ++i)
|
||||
count += map_gm_to_fm[program][i];
|
||||
if (!count)
|
||||
warning("No AdLib instrument defined for GM program %d", (int) program);
|
||||
warning("No AdLib instrument defined for GM program %d", (int)program);
|
||||
*/
|
||||
_program = program;
|
||||
memcpy(&_part_instr, &map_gm_to_fm[program], sizeof(AdLibInstrument));
|
||||
}
|
||||
|
@ -790,8 +789,7 @@ void AdLibPart::allNotesOff() {
|
|||
|
||||
void AdLibPart::sysEx_customInstrument(uint32 type, const byte *instr) {
|
||||
if (type == 'ADL ') {
|
||||
AdLibInstrument *i = &_part_instr;
|
||||
memcpy(i, instr, sizeof(AdLibInstrument));
|
||||
memcpy(&_part_instr, instr, sizeof(AdLibInstrument));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -840,7 +838,7 @@ void AdLibPercussionChannel::noteOn(byte note, byte velocity) {
|
|||
// Use the default GM to FM mapping as a fallback as a fallback
|
||||
byte key = gm_percussion_lookup[note];
|
||||
if (key != 0xFF)
|
||||
inst = (AdLibInstrument *)&gm_percussion_to_fm[key];
|
||||
inst = &gm_percussion_to_fm[key];
|
||||
}
|
||||
|
||||
if (!inst) {
|
||||
|
@ -1482,8 +1480,8 @@ void MidiDriver_ADLIB::adlib_note_on_ex(int chan, byte note, int mod)
|
|||
adlib_playnote(chan, code);
|
||||
}
|
||||
|
||||
void MidiDriver_ADLIB::mc_init_stuff(AdLibVoice *voice, Struct10 * s10,
|
||||
Struct11 * s11, byte flags, InstrumentExtra * ie) {
|
||||
void MidiDriver_ADLIB::mc_init_stuff(AdLibVoice *voice, Struct10 *s10,
|
||||
Struct11 *s11, byte flags, InstrumentExtra *ie) {
|
||||
AdLibPart *part = voice->_part;
|
||||
s11->modify_val = 0;
|
||||
s11->flag0x40 = flags & 0x40;
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio/null.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "audio/softsynth/cms.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef SOUND_SOFTSYNTH_CMS_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef SOUND_SOFTSYNTH_EMUMIDI_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
// Comb filter implementation
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
// Macro for killing denormalled numbers
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#if defined(MACOSX) || defined(SOLARIS) || defined(__MINGW32__)
|
||||
// Older versions of Mac OS X didn't supply a powf function, so using it
|
||||
// will cause a binary incompatibility when trying to run a binary built
|
||||
// on a newer OS X release on an olderr one. And Solaris 8 doesn't provide
|
||||
// on a newer OS X release on an older one. And Solaris 8 doesn't provide
|
||||
// powf, floorf, fabsf etc. at all.
|
||||
// Cross-compiled MinGW32 toolchains suffer from a cross-compile bug in
|
||||
// libstdc++. math/stubs.o should be empty, but it comes with a symbol for
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#if defined(MACOSX) || defined(SOLARIS) || defined(__MINGW32__)
|
||||
// Older versions of Mac OS X didn't supply a powf function, so using it
|
||||
// will cause a binary incompatibility when trying to run a binary built
|
||||
// on a newer OS X release on an olderr one. And Solaris 8 doesn't provide
|
||||
// on a newer OS X release on an older one. And Solaris 8 doesn't provide
|
||||
// powf, floorf, fabsf etc. at all.
|
||||
// Cross-compiled MinGW32 toolchains suffer from a cross-compile bug in
|
||||
// libstdc++. math/stubs.o should be empty, but it comes with a symbol for
|
||||
|
|
|
@ -19,6 +19,10 @@
|
|||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
// FIXME: Avoid using rand
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_rand
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
@ -28,7 +32,7 @@
|
|||
#if defined(MACOSX) || defined(SOLARIS) || defined(__MINGW32__)
|
||||
// Older versions of Mac OS X didn't supply a powf function, so using it
|
||||
// will cause a binary incompatibility when trying to run a binary built
|
||||
// on a newer OS X release on an olderr one. And Solaris 8 doesn't provide
|
||||
// on a newer OS X release on an older one. And Solaris 8 doesn't provide
|
||||
// powf, floorf, fabsf etc. at all.
|
||||
// Cross-compiled MinGW32 toolchains suffer from a cross-compile bug in
|
||||
// libstdc++. math/stubs.o should be empty, but it comes with a symbol for
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
* LGPL licensed version of MAMEs fmopl (V0.37a modified) by
|
||||
* Tatsuyuki Satoh. Included from LGPL'ed AdPlug.
|
||||
*/
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
* LGPL licensed version of MAMEs fmopl (V0.37a modified) by
|
||||
* Tatsuyuki Satoh. Included from LGPL'ed AdPlug.
|
||||
*/
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio/softsynth/pcspk.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef SOUND_SOFTSYNTH_PCSPK_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,793 +0,0 @@
|
|||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "audio/softsynth/ym2612.h"
|
||||
#include "common/util.h"
|
||||
#include "audio/musicplugin.h"
|
||||
#include "common/error.h"
|
||||
#include "common/system.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/translation.h"
|
||||
#include "common/types.h"
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
// Miscellaneous
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
static int *sintbl = 0;
|
||||
static int *powtbl = 0;
|
||||
static int *frequencyTable = 0;
|
||||
static int *keycodeTable = 0;
|
||||
static int *keyscaleTable = 0;
|
||||
static int *attackOut = 0;
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
// Operator2612 implementation
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
Operator2612::Operator2612 (Voice2612 *owner) :
|
||||
_owner (owner),
|
||||
_state (_s_ready),
|
||||
_currentLevel ((int32)0x7f << 15),
|
||||
_phase (0),
|
||||
_lastOutput (0),
|
||||
_feedbackLevel (0),
|
||||
_detune (0),
|
||||
_multiple (1),
|
||||
_keyScale (0),
|
||||
_specifiedTotalLevel (127),
|
||||
_specifiedAttackRate (0),
|
||||
_specifiedDecayRate (0),
|
||||
_specifiedSustainRate (0),
|
||||
_specifiedReleaseRate (15) {
|
||||
velocity(0);
|
||||
}
|
||||
|
||||
Operator2612::~Operator2612()
|
||||
{ }
|
||||
|
||||
void Operator2612::velocity(int velo) {
|
||||
_velocity = velo;
|
||||
_totalLevel = ((int32)_specifiedTotalLevel << 15) +
|
||||
((int32)(127-_velocity) << 13);
|
||||
_sustainLevel = ((int32)_specifiedSustainLevel << 17);
|
||||
}
|
||||
|
||||
void Operator2612::feedbackLevel(int level) {
|
||||
_feedbackLevel = level;
|
||||
}
|
||||
|
||||
void Operator2612::setInstrument(byte const *instrument) {
|
||||
_detune = (instrument[8] >> 4) & 7;
|
||||
_multiple = instrument[8] & 15;
|
||||
_specifiedTotalLevel = instrument[12] & 127;
|
||||
_keyScale = (instrument[16] >> 6) & 3;
|
||||
_specifiedAttackRate = instrument[16] & 31;
|
||||
_specifiedDecayRate = instrument[20] & 31;
|
||||
_specifiedSustainRate = instrument[24] & 31;
|
||||
_specifiedSustainLevel = (instrument[28] >> 4) & 15;
|
||||
_specifiedReleaseRate = instrument[28] & 15;
|
||||
_state = _s_ready;
|
||||
velocity(_velocity);
|
||||
}
|
||||
|
||||
void Operator2612::keyOn() {
|
||||
_state = _s_attacking;
|
||||
_tickCount = 0;
|
||||
_phase = 0;
|
||||
_currentLevel = ((int32)0x7f << 15);
|
||||
}
|
||||
|
||||
void Operator2612::keyOff() {
|
||||
if (_state != _s_ready)
|
||||
_state = _s_releasing;
|
||||
}
|
||||
|
||||
void Operator2612::frequency(int freq) {
|
||||
double value; // Use for intermediate computations to avoid int64 arithmetic
|
||||
int r;
|
||||
|
||||
_frequency = freq / _owner->_rate;
|
||||
|
||||
r = _specifiedAttackRate;
|
||||
if (r != 0) {
|
||||
r = r * 2 + (keyscaleTable[freq/262205] >> (3-_keyScale));
|
||||
if (r >= 64)
|
||||
r = 63;
|
||||
}
|
||||
|
||||
r = 63 - r;
|
||||
if (_specifiedTotalLevel >= 128)
|
||||
value = 0;
|
||||
else {
|
||||
value = powtbl[(r&3) << 7];
|
||||
value *= 1 << (r >> 2);
|
||||
value *= 41;
|
||||
value /= 1 << (15 + 5);
|
||||
value *= 127 - _specifiedTotalLevel;
|
||||
value /= 127;
|
||||
}
|
||||
_attackTime = (int32) value; // 1 ?? == (1 << 12)
|
||||
if (_attackTime > 0)
|
||||
_attackTime = (1 << (12+10)) / (_owner->_rate * _attackTime);
|
||||
|
||||
r = _specifiedDecayRate;
|
||||
if (r != 0) {
|
||||
r = r * 2 + (keyscaleTable[freq/262205] >> (3-_keyScale));
|
||||
if (r >= 64)
|
||||
r = 63;
|
||||
}
|
||||
value = (double) powtbl[(r&3) << 7] * (0x10 << (r>>2)) / 31;
|
||||
_decayRate = (int32) value / _owner->_rate;
|
||||
|
||||
r = _specifiedSustainRate;
|
||||
if (r != 0) {
|
||||
r = r * 2 + (keyscaleTable[freq/262205] >> (3-_keyScale));
|
||||
if (r >= 64)
|
||||
r = 63;
|
||||
}
|
||||
value = (double) powtbl[(r&3) << 7] * (0x10 << (r>>2)) / 31;
|
||||
_sustainRate = (int32) value / _owner->_rate;
|
||||
|
||||
r = _specifiedReleaseRate;
|
||||
if (r != 0) {
|
||||
r = r * 2 + 1; // (Translated) I cannot know whether the timing is a good choice or not
|
||||
r = r * 2 + (keyscaleTable[freq/262205] >> (3-_keyScale));
|
||||
// KS
|
||||
if (r >= 64)
|
||||
r = 63;
|
||||
}
|
||||
value = (double) powtbl[(r&3) << 7] * (0x10 << (r>>2)) / 31;
|
||||
_releaseRate = (int32) value / _owner->_rate;
|
||||
}
|
||||
|
||||
void Operator2612::nextTick(const int *phasebuf, int *outbuf, int buflen) {
|
||||
if (_state == _s_ready)
|
||||
return;
|
||||
if (_state == _s_attacking && _attackTime <= 0) {
|
||||
_currentLevel = 0;
|
||||
_state = _s_decaying;
|
||||
}
|
||||
|
||||
int32 levelIncrement = 0;
|
||||
int32 target = 0;
|
||||
State next_state = _s_ready;
|
||||
const int32 zero_level = ((int32)0x7f << 15);
|
||||
const int phaseIncrement = (_multiple > 0) ? (_frequency * _multiple) : (_frequency / 2);
|
||||
|
||||
int32 output = _lastOutput;
|
||||
int32 level = _currentLevel + _totalLevel;
|
||||
|
||||
while (buflen) {
|
||||
switch (_state) {
|
||||
case _s_ready:
|
||||
return;
|
||||
case _s_attacking:
|
||||
next_state = _s_attacking;
|
||||
break;
|
||||
case _s_decaying:
|
||||
levelIncrement = _decayRate;
|
||||
target = _sustainLevel + _totalLevel;
|
||||
next_state = _s_sustaining;
|
||||
break;
|
||||
case _s_sustaining:
|
||||
levelIncrement = _sustainRate;
|
||||
target = zero_level + _totalLevel;
|
||||
next_state = _s_ready;
|
||||
break;
|
||||
case _s_releasing:
|
||||
levelIncrement = _releaseRate;
|
||||
target = zero_level + _totalLevel;
|
||||
next_state = _s_ready;
|
||||
break;
|
||||
}
|
||||
|
||||
bool switching = false;
|
||||
do {
|
||||
if (next_state == _s_attacking) {
|
||||
// Attack phase
|
||||
++_tickCount;
|
||||
int i = (int) (_tickCount * _attackTime);
|
||||
if (i >= 1024) {
|
||||
level = _totalLevel;
|
||||
_state = _s_decaying;
|
||||
switching = true;
|
||||
} else {
|
||||
level = (attackOut[i] << (31 - 8 - 16)) + _totalLevel;
|
||||
}
|
||||
} else {
|
||||
// Decay, Sustain and Release phases
|
||||
level += levelIncrement;
|
||||
if (level >= target) {
|
||||
level = target;
|
||||
_state = next_state;
|
||||
switching = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (level < zero_level) {
|
||||
int phaseShift = *phasebuf >> 2;
|
||||
if (_feedbackLevel)
|
||||
phaseShift += (output << (_feedbackLevel - 1)) / 1024;
|
||||
output = sintbl[((_phase >> 7) + phaseShift) & 0x7ff];
|
||||
output >>= (level >> 18);
|
||||
// Here is the original code, which requires 64-bit ints
|
||||
// output *= powtbl[511 - ((level>>25)&511)];
|
||||
// output >>= 16;
|
||||
// output >>= 1;
|
||||
// And here's our 32-bit trick for doing it. (Props to Fingolfin!)
|
||||
// Result varies from original code by max of 1.
|
||||
// int powVal = powtbl[511 - ((level>>9)&511)];
|
||||
// int outputHI = output / 256;
|
||||
// int powHI = powVal / 256;
|
||||
// output = (outputHI * powHI) / 2 + (outputHI * (powVal % 256) + powHI * (output % 256)) / 512;
|
||||
// And here's the even faster code.
|
||||
// Result varies from original code by max of 8.
|
||||
output = ((output >> 4) * (powtbl[511-((level>>9)&511)] >> 3)) / 1024;
|
||||
|
||||
_phase += phaseIncrement;
|
||||
_phase &= 0x3ffff;
|
||||
} else
|
||||
output = 0;
|
||||
|
||||
*outbuf += output;
|
||||
--buflen;
|
||||
++phasebuf;
|
||||
++outbuf;
|
||||
} while (buflen && !switching);
|
||||
}
|
||||
_lastOutput = output;
|
||||
_currentLevel = level - _totalLevel;
|
||||
}
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
// Voice2612 implementation
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
Voice2612::Voice2612() {
|
||||
next = 0;
|
||||
_control7 = 127;
|
||||
_note = 40;
|
||||
_frequency = 440;
|
||||
_frequencyOffs = 0x2000;
|
||||
_algorithm = 7;
|
||||
|
||||
_buffer = 0;
|
||||
_buflen = 0;
|
||||
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_opr); ++i)
|
||||
_opr[i] = new Operator2612 (this);
|
||||
velocity(0);
|
||||
}
|
||||
|
||||
Voice2612::~Voice2612() {
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_opr); ++i)
|
||||
delete _opr[i];
|
||||
free(_buffer);
|
||||
}
|
||||
|
||||
void Voice2612::velocity(int velo) {
|
||||
_velocity = velo;
|
||||
#if 0
|
||||
int v = (velo * _control7) >> 7;
|
||||
#else
|
||||
int v = velo + (_control7 - 127) * 4;
|
||||
#endif
|
||||
bool iscarrier[8][4] = {
|
||||
{ false, false, false, true, }, //0
|
||||
{ false, false, false, true, }, //1
|
||||
{ false, false, false, true, }, //2
|
||||
{ false, false, false, true, }, //3
|
||||
{ false, true, false, true, }, //4
|
||||
{ false, true, true, true, }, //5
|
||||
{ false, true, true, true, }, //6
|
||||
{ true, true, true, true, }, //7
|
||||
};
|
||||
int opr;
|
||||
for (opr = 0; opr < 4; opr++)
|
||||
if (iscarrier[_algorithm][opr])
|
||||
_opr[opr]->velocity(v);
|
||||
else
|
||||
_opr[opr]->velocity(127);
|
||||
}
|
||||
|
||||
void Voice2612::setControlParameter(int control, int value) {
|
||||
switch (control) {
|
||||
case 7:
|
||||
_control7 = value;
|
||||
velocity(_velocity);
|
||||
break;
|
||||
case 123:
|
||||
// All notes off
|
||||
noteOff(_note);
|
||||
};
|
||||
}
|
||||
|
||||
void Voice2612::setInstrument(byte const *instrument) {
|
||||
if (instrument == NULL)
|
||||
return;
|
||||
|
||||
_algorithm = instrument[32] & 7;
|
||||
_opr[0]->feedbackLevel((instrument[32] >> 3) & 7);
|
||||
_opr[1]->feedbackLevel(0);
|
||||
_opr[2]->feedbackLevel(0);
|
||||
_opr[3]->feedbackLevel(0);
|
||||
_opr[0]->setInstrument(instrument + 0);
|
||||
_opr[1]->setInstrument(instrument + 2);
|
||||
_opr[2]->setInstrument(instrument + 1);
|
||||
_opr[3]->setInstrument(instrument + 3);
|
||||
}
|
||||
|
||||
void Voice2612::nextTick(int *outbuf, int buflen) {
|
||||
if (_velocity == 0)
|
||||
return;
|
||||
|
||||
if (_buflen < buflen) {
|
||||
free(_buffer);
|
||||
_buflen = buflen;
|
||||
_buffer = (int *) malloc(sizeof(int) * buflen * 2);
|
||||
}
|
||||
|
||||
int *buf1 = _buffer;
|
||||
int *buf2 = _buffer + buflen;
|
||||
memset(_buffer, 0, sizeof(int) * buflen * 2);
|
||||
|
||||
switch (_algorithm) {
|
||||
case 0:
|
||||
_opr[0]->nextTick(buf1, buf2, buflen);
|
||||
_opr[1]->nextTick(buf2, buf1, buflen);
|
||||
memset (buf2, 0, sizeof (int) * buflen);
|
||||
_opr[2]->nextTick(buf1, buf2, buflen);
|
||||
_opr[3]->nextTick(buf2, outbuf, buflen);
|
||||
break;
|
||||
case 1:
|
||||
_opr[0]->nextTick(buf1, buf2, buflen);
|
||||
_opr[1]->nextTick(buf1, buf2, buflen);
|
||||
_opr[2]->nextTick(buf2, buf1, buflen);
|
||||
_opr[3]->nextTick(buf1, outbuf, buflen);
|
||||
break;
|
||||
case 2:
|
||||
_opr[1]->nextTick(buf1, buf2, buflen);
|
||||
_opr[2]->nextTick(buf2, buf1, buflen);
|
||||
memset(buf2, 0, sizeof(int) * buflen);
|
||||
_opr[0]->nextTick(buf2, buf1, buflen);
|
||||
_opr[3]->nextTick(buf1, outbuf, buflen);
|
||||
break;
|
||||
case 3:
|
||||
_opr[0]->nextTick(buf1, buf2, buflen);
|
||||
_opr[1]->nextTick(buf2, buf1, buflen);
|
||||
memset(buf2, 0, sizeof(int) * buflen);
|
||||
_opr[2]->nextTick(buf2, buf1, buflen);
|
||||
_opr[3]->nextTick(buf1, outbuf, buflen);
|
||||
break;
|
||||
case 4:
|
||||
_opr[0]->nextTick(buf1, buf2, buflen);
|
||||
_opr[1]->nextTick(buf2, outbuf, buflen);
|
||||
_opr[2]->nextTick(buf1, buf1, buflen);
|
||||
_opr[3]->nextTick(buf1, outbuf, buflen);
|
||||
break;
|
||||
case 5:
|
||||
_opr[0]->nextTick(buf1, buf2, buflen);
|
||||
_opr[1]->nextTick(buf2, outbuf, buflen);
|
||||
_opr[2]->nextTick(buf2, outbuf, buflen);
|
||||
_opr[3]->nextTick(buf2, outbuf, buflen);
|
||||
break;
|
||||
case 6:
|
||||
_opr[0]->nextTick(buf1, buf2, buflen);
|
||||
_opr[1]->nextTick(buf2, outbuf, buflen);
|
||||
_opr[2]->nextTick(buf1, outbuf, buflen);
|
||||
_opr[3]->nextTick(buf1, outbuf, buflen);
|
||||
break;
|
||||
case 7:
|
||||
_opr[0]->nextTick(buf1, outbuf, buflen);
|
||||
_opr[1]->nextTick(buf1, outbuf, buflen);
|
||||
_opr[2]->nextTick(buf1, outbuf, buflen);
|
||||
_opr[3]->nextTick(buf1, outbuf, buflen);
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
void Voice2612::noteOn(int n, int onVelo) {
|
||||
_note = n;
|
||||
velocity(onVelo);
|
||||
recalculateFrequency();
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_opr); i++)
|
||||
_opr[i]->keyOn();
|
||||
}
|
||||
|
||||
bool Voice2612::noteOff(int note) {
|
||||
if (_note != note)
|
||||
return false;
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_opr); i++)
|
||||
_opr[i]->keyOff();
|
||||
return true;
|
||||
}
|
||||
|
||||
void Voice2612::pitchBend(int value) {
|
||||
_frequencyOffs = value;
|
||||
recalculateFrequency();
|
||||
}
|
||||
|
||||
void Voice2612::recalculateFrequency() {
|
||||
//
|
||||
//
|
||||
//
|
||||
int32 basefreq = frequencyTable[_note];
|
||||
int cfreq = frequencyTable[_note - (_note % 12)];
|
||||
int oct = _note / 12;
|
||||
int fnum = (int) (((double)basefreq * (1 << 13)) / cfreq);
|
||||
fnum += _frequencyOffs - 0x2000;
|
||||
if (fnum < 0x2000) {
|
||||
fnum += 0x2000;
|
||||
oct--;
|
||||
}
|
||||
if (fnum >= 0x4000) {
|
||||
fnum -= 0x2000;
|
||||
oct++;
|
||||
}
|
||||
|
||||
//
|
||||
_frequency = (int) ((frequencyTable[oct*12] * (double)fnum) / 8);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_opr); i++)
|
||||
_opr[i]->frequency(_frequency);
|
||||
}
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
// MidiChannel_YM2612
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
MidiChannel_YM2612::MidiChannel_YM2612() {
|
||||
_voices = 0;
|
||||
_next_voice = 0;
|
||||
}
|
||||
|
||||
MidiChannel_YM2612::~MidiChannel_YM2612() {
|
||||
removeAllVoices();
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::removeAllVoices() {
|
||||
if (!_voices)
|
||||
return;
|
||||
Voice2612 *last, *voice = _voices;
|
||||
for (; voice; voice = last) {
|
||||
last = voice->next;
|
||||
delete voice;
|
||||
}
|
||||
_voices = _next_voice = 0;
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::noteOn(byte note, byte onVelo) {
|
||||
if (!_voices)
|
||||
return;
|
||||
_next_voice = _next_voice ? _next_voice : _voices;
|
||||
_next_voice->noteOn(note, onVelo);
|
||||
_next_voice = _next_voice->next;
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::noteOff(byte note) {
|
||||
if (!_voices)
|
||||
return;
|
||||
if (_next_voice == _voices)
|
||||
_next_voice = 0;
|
||||
Voice2612 *voice = _next_voice;
|
||||
do {
|
||||
if (!voice)
|
||||
voice = _voices;
|
||||
if (voice->noteOff(note)) {
|
||||
_next_voice = voice;
|
||||
break;
|
||||
}
|
||||
voice = voice->next;
|
||||
} while (voice != _next_voice);
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::controlChange(byte control, byte value) {
|
||||
//
|
||||
if (control == 121) {
|
||||
// Reset controller
|
||||
removeAllVoices();
|
||||
} else {
|
||||
Voice2612 *voice = _voices;
|
||||
for (; voice; voice = voice->next)
|
||||
voice->setControlParameter(control, value);
|
||||
}
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::sysEx_customInstrument(uint32 type, const byte *fmInst) {
|
||||
if (type != 'EUP ')
|
||||
return;
|
||||
Voice2612 *voice = new Voice2612;
|
||||
voice->next = _voices;
|
||||
_voices = voice;
|
||||
voice->_rate = _rate;
|
||||
voice->setInstrument(fmInst);
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::pitchBend(int16 value) {
|
||||
//
|
||||
Voice2612 *voice = _voices;
|
||||
for (; voice; voice = voice->next)
|
||||
voice->pitchBend(value);
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::nextTick(int *outbuf, int buflen) {
|
||||
Voice2612 *voice = _voices;
|
||||
for (; voice; voice = voice->next)
|
||||
voice->nextTick(outbuf, buflen);
|
||||
}
|
||||
|
||||
void MidiChannel_YM2612::rate(uint16 r) {
|
||||
_rate = r;
|
||||
Voice2612 *voice = _voices;
|
||||
for (; voice; voice = voice->next)
|
||||
voice->_rate = r;
|
||||
}
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
// MidiDriver_YM2612
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
MidiDriver_YM2612::MidiDriver_YM2612(Audio::Mixer *mixer)
|
||||
: MidiDriver_Emulated(mixer) {
|
||||
_next_voice = 0;
|
||||
|
||||
createLookupTables();
|
||||
_volume = 256;
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_channel); i++)
|
||||
_channel[i] = new MidiChannel_YM2612;
|
||||
rate(getRate());
|
||||
}
|
||||
|
||||
MidiDriver_YM2612::~MidiDriver_YM2612() {
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_channel); i++)
|
||||
delete _channel[i];
|
||||
removeLookupTables();
|
||||
}
|
||||
|
||||
int MidiDriver_YM2612::open() {
|
||||
if (_isOpen)
|
||||
return MERR_ALREADY_OPEN;
|
||||
|
||||
MidiDriver_Emulated::open();
|
||||
|
||||
_mixer->playStream(Audio::Mixer::kPlainSoundType, &_mixerSoundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::close() {
|
||||
if (!_isOpen)
|
||||
return;
|
||||
_isOpen = false;
|
||||
|
||||
_mixer->stopHandle(_mixerSoundHandle);
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::send(uint32 b) {
|
||||
send(b & 0xF, b & 0xFFFFFFF0);
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::send(byte chan, uint32 b) {
|
||||
//byte param3 = (byte) ((b >> 24) & 0xFF);
|
||||
byte param2 = (byte) ((b >> 16) & 0xFF);
|
||||
byte param1 = (byte) ((b >> 8) & 0xFF);
|
||||
byte cmd = (byte) (b & 0xF0);
|
||||
if (chan > ARRAYSIZE(_channel))
|
||||
return;
|
||||
|
||||
switch (cmd) {
|
||||
case 0x80:// Note Off
|
||||
_channel[chan]->noteOff(param1);
|
||||
break;
|
||||
case 0x90: // Note On
|
||||
_channel[chan]->noteOn(param1, param2);
|
||||
break;
|
||||
case 0xA0: // Aftertouch
|
||||
break; // Not supported.
|
||||
case 0xB0: // Control Change
|
||||
_channel[chan]->controlChange(param1, param2);
|
||||
break;
|
||||
case 0xC0: // Program Change
|
||||
_channel[chan]->programChange(param1);
|
||||
break;
|
||||
case 0xD0: // Channel Pressure
|
||||
break; // Not supported.
|
||||
case 0xE0: // Pitch Bend
|
||||
_channel[chan]->pitchBend((param1 | (param2 << 7)) - 0x2000);
|
||||
break;
|
||||
case 0xF0: // SysEx
|
||||
// We should never get here! SysEx information has to be
|
||||
// sent via high-level semantic methods.
|
||||
warning("MidiDriver_YM2612: Receiving SysEx command on a send() call");
|
||||
break;
|
||||
|
||||
default:
|
||||
warning("MidiDriver_YM2612: Unknown send() command 0x%02X", cmd);
|
||||
}
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::sysEx(const byte *msg, uint16 length) {
|
||||
if (msg[0] != 0x7C || msg[1] >= ARRAYSIZE(_channel))
|
||||
return;
|
||||
_channel[msg[1]]->sysEx_customInstrument('EUP ', &msg[2]);
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::generateSamples(int16 *data, int len) {
|
||||
memset(data, 0, 2 * sizeof(int16) * len);
|
||||
nextTick(data, len);
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::nextTick(int16 *buf1, int buflen) {
|
||||
int *buf0 = (int *)buf1;
|
||||
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_channel); i++)
|
||||
_channel[i]->nextTick(buf0, buflen);
|
||||
|
||||
for (i = 0; i < buflen; ++i)
|
||||
buf1[i*2+1] = buf1[i*2] = ((buf0[i] * volume()) >> 10) & 0xffff;
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::rate(uint16 r)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < ARRAYSIZE(_channel); i++)
|
||||
_channel[i]->rate(r);
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::createLookupTables() {
|
||||
{
|
||||
int i;
|
||||
sintbl = new int [2048];
|
||||
for (i = 0; i < 2048; i++)
|
||||
sintbl[i] = (int)(0xffff * sin(i/2048.0 * 2.0 * M_PI));
|
||||
}
|
||||
|
||||
{
|
||||
int i;
|
||||
powtbl = new int [1025];
|
||||
for (i = 0; i <= 1024; i++)
|
||||
powtbl[i] = (int)(0x10000 * pow(2.0, (i - 512) / 512.0));
|
||||
}
|
||||
|
||||
{
|
||||
int i;
|
||||
int block;
|
||||
|
||||
static int fnum[] = {
|
||||
0x026a, 0x028f, 0x02b6, 0x02df,
|
||||
0x030b, 0x0339, 0x036a, 0x039e,
|
||||
0x03d5, 0x0410, 0x044e, 0x048f,
|
||||
};
|
||||
|
||||
// (int)(880.0 * 256.0 * pow(2.0, (note-0x51)/12.0))
|
||||
//
|
||||
frequencyTable = new int [120];
|
||||
for (block = -1; block < 9; block++) {
|
||||
for (i = 0; i < 12; i++) {
|
||||
double freq = fnum[i] * (166400.0 / 3) * pow(2.0, block-21);
|
||||
frequencyTable[(block+1)*12+i] = (int)(256.0 * freq);
|
||||
}
|
||||
}
|
||||
|
||||
keycodeTable = new int [120];
|
||||
// detune
|
||||
for (block = -1; block < 9; block++) {
|
||||
for (i = 0; i < 12; i++) {
|
||||
// see p.204
|
||||
int f8 = (fnum[i] >> 7) & 1;
|
||||
int f9 = (fnum[i] >> 8) & 1;
|
||||
int f10 = (fnum[i] >> 9) & 1;
|
||||
int f11 = (fnum[i] >> 10) & 1;
|
||||
int n4 = f11;
|
||||
int n3 = (f11&(f10|f9|f8)) | (~f11&f10&f9&f8);
|
||||
int note = n4*2 + n3;
|
||||
// see p.207
|
||||
keycodeTable[(block+1)*12+i] = block*4 + note;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
int freq;
|
||||
keyscaleTable = new int [8192];
|
||||
keyscaleTable[0] = 0;
|
||||
for (freq = 1; freq < 8192; freq++) {
|
||||
keyscaleTable[freq] = (int)(log((double)freq) / 9.03 * 32.0) - 1;
|
||||
// 8368[Hz] (o9c)
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
int i;
|
||||
attackOut = new int [1024];
|
||||
for (i = 0; i < 1024; i++)
|
||||
attackOut[i] = (int)(((0x7fff+0x03a5)*30.0) / (30.0+i)) - 0x03a5;
|
||||
}
|
||||
}
|
||||
|
||||
void MidiDriver_YM2612::removeLookupTables() {
|
||||
delete[] sintbl;
|
||||
delete[] powtbl;
|
||||
delete[] frequencyTable;
|
||||
delete[] keycodeTable;
|
||||
delete[] keyscaleTable;
|
||||
delete[] attackOut;
|
||||
sintbl = powtbl = frequencyTable = keycodeTable = keyscaleTable = attackOut = 0;
|
||||
}
|
||||
|
||||
|
||||
// Plugin interface
|
||||
|
||||
class TownsEmuMusicPlugin : public MusicPluginObject {
|
||||
public:
|
||||
const char *getName() const {
|
||||
return _s("FM Towns Emulator");
|
||||
}
|
||||
|
||||
const char *getId() const {
|
||||
return "towns";
|
||||
}
|
||||
|
||||
MusicDevices getDevices() const;
|
||||
Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
|
||||
};
|
||||
|
||||
MusicDevices TownsEmuMusicPlugin::getDevices() const {
|
||||
MusicDevices devices;
|
||||
devices.push_back(MusicDevice(this, "", MT_TOWNS));
|
||||
return devices;
|
||||
}
|
||||
|
||||
Common::Error TownsEmuMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
|
||||
*mididriver = new MidiDriver_YM2612(g_system->getMixer());
|
||||
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
//#if PLUGIN_ENABLED_DYNAMIC(TOWNS)
|
||||
//REGISTER_PLUGIN_DYNAMIC(TOWNS, PLUGIN_TYPE_MUSIC, TownsEmuMusicPlugin);
|
||||
//#else
|
||||
REGISTER_PLUGIN_STATIC(TOWNS, PLUGIN_TYPE_MUSIC, TownsEmuMusicPlugin);
|
||||
//#endif
|
|
@ -1,179 +0,0 @@
|
|||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef SOUND_SOFTSYNTH_Y2612_H
|
||||
#define SOUND_SOFTSYNTH_Y2612_H
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
||||
#include "audio/softsynth/emumidi.h"
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
// Class declarations
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
class Voice2612;
|
||||
class Operator2612 {
|
||||
protected:
|
||||
Voice2612 *_owner;
|
||||
enum State { _s_ready, _s_attacking, _s_decaying, _s_sustaining, _s_releasing };
|
||||
State _state;
|
||||
int32 _currentLevel;
|
||||
int _frequency;
|
||||
uint32 _phase;
|
||||
int _lastOutput;
|
||||
int _feedbackLevel;
|
||||
int _detune;
|
||||
int _multiple;
|
||||
int32 _totalLevel;
|
||||
int _keyScale;
|
||||
int _velocity;
|
||||
int _specifiedTotalLevel;
|
||||
int _specifiedAttackRate;
|
||||
int _specifiedDecayRate;
|
||||
int _specifiedSustainLevel;
|
||||
int _specifiedSustainRate;
|
||||
int _specifiedReleaseRate;
|
||||
int _tickCount;
|
||||
int _attackTime;
|
||||
int32 _decayRate;
|
||||
int32 _sustainLevel;
|
||||
int32 _sustainRate;
|
||||
int32 _releaseRate;
|
||||
|
||||
public:
|
||||
Operator2612 (Voice2612 *owner);
|
||||
~Operator2612();
|
||||
void feedbackLevel(int level);
|
||||
void setInstrument(byte const *instrument);
|
||||
void velocity(int velo);
|
||||
void keyOn();
|
||||
void keyOff();
|
||||
void frequency(int freq);
|
||||
void nextTick(const int *phaseShift, int *outbuf, int buflen);
|
||||
bool inUse() { return (_state != _s_ready); }
|
||||
};
|
||||
|
||||
class Voice2612 {
|
||||
public:
|
||||
Voice2612 *next;
|
||||
uint16 _rate;
|
||||
|
||||
protected:
|
||||
Operator2612 *_opr[4];
|
||||
int _velocity;
|
||||
int _control7;
|
||||
int _note;
|
||||
int _frequencyOffs;
|
||||
int _frequency;
|
||||
int _algorithm;
|
||||
|
||||
int *_buffer;
|
||||
int _buflen;
|
||||
|
||||
public:
|
||||
Voice2612();
|
||||
~Voice2612();
|
||||
void setControlParameter(int control, int value);
|
||||
void setInstrument(byte const *instrument);
|
||||
void velocity(int velo);
|
||||
void nextTick(int *outbuf, int buflen);
|
||||
void noteOn(int n, int onVelo);
|
||||
bool noteOff(int note);
|
||||
void pitchBend(int value);
|
||||
void recalculateFrequency();
|
||||
};
|
||||
|
||||
class MidiChannel_YM2612 : public MidiChannel {
|
||||
protected:
|
||||
uint16 _rate;
|
||||
Voice2612 *_voices;
|
||||
Voice2612 *_next_voice;
|
||||
|
||||
public:
|
||||
void removeAllVoices();
|
||||
void nextTick(int *outbuf, int buflen);
|
||||
void rate(uint16 r);
|
||||
|
||||
public:
|
||||
MidiChannel_YM2612();
|
||||
virtual ~MidiChannel_YM2612();
|
||||
|
||||
// MidiChannel interface
|
||||
MidiDriver *device() { return 0; }
|
||||
byte getNumber() { return 0; }
|
||||
void release() { }
|
||||
void send(uint32 b) { }
|
||||
void noteOff(byte note);
|
||||
void noteOn(byte note, byte onVelo);
|
||||
void programChange(byte program) { }
|
||||
void pitchBend(int16 value);
|
||||
void controlChange(byte control, byte value);
|
||||
void pitchBendFactor(byte value) { }
|
||||
void sysEx_customInstrument(uint32 type, const byte *instr);
|
||||
};
|
||||
|
||||
class MidiDriver_YM2612 : public MidiDriver_Emulated {
|
||||
protected:
|
||||
MidiChannel_YM2612 *_channel[16];
|
||||
|
||||
int _next_voice;
|
||||
int _volume;
|
||||
|
||||
protected:
|
||||
void nextTick(int16 *buf1, int buflen);
|
||||
int volume(int val = -1) { if (val >= 0) _volume = val; return _volume; }
|
||||
void rate(uint16 r);
|
||||
|
||||
void generateSamples(int16 *buf, int len);
|
||||
|
||||
public:
|
||||
MidiDriver_YM2612(Audio::Mixer *mixer);
|
||||
virtual ~MidiDriver_YM2612();
|
||||
|
||||
static void createLookupTables();
|
||||
static void removeLookupTables();
|
||||
|
||||
int open();
|
||||
void close();
|
||||
void send(uint32 b);
|
||||
void send(byte channel, uint32 b); // Supports higher than channel 15
|
||||
uint32 property(int prop, uint32 param) { return 0; }
|
||||
|
||||
void setPitchBendRange(byte channel, uint range) { }
|
||||
void sysEx(const byte *msg, uint16 length);
|
||||
|
||||
MidiChannel *allocateChannel() { return 0; }
|
||||
MidiChannel *getPercussionChannel() { return 0; }
|
||||
|
||||
|
||||
// AudioStream API
|
||||
bool isStereo() const { return true; }
|
||||
int getRate() const { return _mixer->getOutputRate(); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio/timestamp.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SOUND_TIMESTAMP_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_AUDIOCD_ABSTRACT_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "backends/audiocd/default/default-audiocd.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_AUDIOCD_DEFAULT_H
|
||||
|
|
|
@ -18,16 +18,13 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#if defined(SDL_BACKEND)
|
||||
|
||||
#include "common/textconsole.h"
|
||||
#include "backends/audiocd/sdl/sdl-audiocd.h"
|
||||
|
||||
SdlAudioCDManager::SdlAudioCDManager()
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_AUDIOCD_SDL_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined(BACKEND_EVENTS_DEFAULT_H) && !defined(DISABLE_DEFAULT_EVENTMANAGER)
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined(BACKEND_EVENTS_SDL_H) && !defined(DISABLE_DEFAULT_EVENTMANAGER)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "backends/fs/abstract-fs.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_ABSTRACT_FS_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(__amigaos4__)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef AMIGAOS_FILESYSTEM_FACTORY_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(__amigaos4__)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef AMIGAOS_FILESYSTEM_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef FILESYSTEM_FACTORY_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(UNIX)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef POSIX_FILESYSTEM_FACTORY_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(UNIX)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef POSIX_FILESYSTEM_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
// Disable symbol overrides so that we can use FILE, fopen etc.
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_FS_STDIOSTREAM_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(WIN32)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef WINDOWS_FILESYSTEM_FACTORY_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(WIN32)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef WINDOWS_FILESYSTEM_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_GRAPHICS_ABSTRACT_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_GRAPHICS_SDL_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "backends/keymapper/action.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef COMMON_ACTION_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef COMMON_HARDWARE_KEY_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "backends/keymapper/keymap.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef COMMON_KEYMAP_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "backends/keymapper/keymapper.h"
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef COMMON_KEYMAPPER_H
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "backends/keymapper/remap-dialog.h"
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef REMAP_DIALOG_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef KEYMAPPER_TYPES_H
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "backends/log/log.h"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue