Merge remote branch 'upstream/master' into t7g-ios
Conflicts: audio/decoders/qdm2.h common/util.cpp engines/groovie/music.cpp engines/groovie/resource.h video/qt_decoder.cpp video/qt_decoder.h
This commit is contained in:
commit
a1d41da096
1292 changed files with 16937 additions and 13332 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -24,6 +24,8 @@ lib*.a
|
|||
/.cproject
|
||||
/.settings
|
||||
|
||||
/build
|
||||
|
||||
/backends/platform/dc/gui
|
||||
/backends/platform/dc/graphics
|
||||
/backends/platform/dc/sound
|
||||
|
|
8
AUTHORS
8
AUTHORS
|
@ -183,6 +183,10 @@ ScummVM Team
|
|||
Touche:
|
||||
Gregory Montoir
|
||||
|
||||
TsAGE:
|
||||
Paul Gilbert
|
||||
Arnaud Boutonne
|
||||
|
||||
Tucker:
|
||||
Gregory Montoir
|
||||
|
||||
|
@ -417,7 +421,7 @@ Other contributions
|
|||
David Jensen - SVG logo conversion
|
||||
Jean Marc Gimenez - ScummVM logo
|
||||
Raina - ScummVM forum buttons
|
||||
William Claydon - Skins for doxygen and wiki
|
||||
William Claydon - Skins for doxygen, buildbot and wiki
|
||||
|
||||
Code contributions
|
||||
------------------
|
||||
|
@ -555,7 +559,7 @@ Special thanks to
|
|||
Drascula: The Vampire Strikes Back with us and his generosity with
|
||||
freewaring the game.
|
||||
|
||||
David P. Gray from Gray Design Associate for sharing the source code of
|
||||
David P. Gray from Gray Design Associates for sharing the source code of
|
||||
the Hugo trilogy.
|
||||
|
||||
Broken Sword 2.5 team for providing sources of their engine and their
|
||||
|
|
|
@ -63,14 +63,15 @@ endif
|
|||
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||
ifneq ($(VERBOSE_BUILD),1)
|
||||
ifneq ($(VERBOSE_BUILD),yes)
|
||||
QUIET_CXX = @echo ' ' C++ ' ' $@;
|
||||
QUIET_AS = @echo ' ' AS ' ' $@;
|
||||
QUIET_NASM = @echo ' ' NASM ' ' $@;
|
||||
QUIET_AR = @echo ' ' AR ' ' $@;
|
||||
QUIET_RANLIB = @echo ' ' RANLIB ' ' $@;
|
||||
QUIET_PLUGIN = @echo ' ' PLUGIN ' ' $@;
|
||||
QUIET_LINK = @echo ' ' LINK ' ' $@;
|
||||
QUIET = @
|
||||
QUIET_CXX = @echo ' ' C++ ' ' $@;
|
||||
QUIET_AS = @echo ' ' AS ' ' $@;
|
||||
QUIET_NASM = @echo ' ' NASM ' ' $@;
|
||||
QUIET_AR = @echo ' ' AR ' ' $@;
|
||||
QUIET_RANLIB = @echo ' ' RANLIB ' ' $@;
|
||||
QUIET_PLUGIN = @echo ' ' PLUGIN ' ' $@;
|
||||
QUIET_LINK = @echo ' ' LINK ' ' $@;
|
||||
QUIET_WINDRES = @echo ' ' WINDRES '' $@;
|
||||
QUIET = @
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
@ -154,8 +155,7 @@ endif
|
|||
# Get the current version information
|
||||
######################################################################
|
||||
|
||||
# AmigaOS4's grep has a problem with "./" in pathnames, so use cat.
|
||||
VERSION = $(shell cat "${srcdir}/base/internal_version.h" | grep SCUMMVM_VERSION | cut -d\" -f2)
|
||||
VERSION = $(shell grep SCUMMVM_VERSION "${srcdir}/base/internal_version.h" | cut -d\" -f2)
|
||||
VER_MAJOR = $(shell echo $(VERSION) | cut -d. -f 1)
|
||||
VER_MINOR = $(shell echo $(VERSION) | cut -d. -f 2)
|
||||
VER_PATCH = $(shell echo $(VERSION) | cut -d. -f 3 | cut -c1)
|
||||
|
|
18
NEWS
18
NEWS
|
@ -1,6 +1,10 @@
|
|||
For a more comprehensive changelog of the latest experimental code, see:
|
||||
https://github.com/scummvm/scummvm/commits/
|
||||
|
||||
1.4.0 (????-??-??)
|
||||
SDL ports:
|
||||
- Added support for OpenGL (GSoC Task).
|
||||
|
||||
1.3.0 (????-??-??)
|
||||
New Games:
|
||||
- Added support for Backyard Baseball.
|
||||
|
@ -9,10 +13,17 @@ For a more comprehensive changelog of the latest experimental code, see:
|
|||
- Added support for Playtoons: Bambou le Sauveur de la Jungle.
|
||||
- Added support for Toonstruck.
|
||||
- Added support for Living Books v1 and v2 games.
|
||||
- Added support for Hugo's House of Horrors, Hugo 2: Whodunit?
|
||||
and Hugo 3: Jungle of Doom.
|
||||
- Added support for Amiga SCI games (except Conquests of the Longbow).
|
||||
- Added support for Macintosh SCI1 games.
|
||||
|
||||
New Ports:
|
||||
- Added WebOS port.
|
||||
|
||||
General
|
||||
- Added support for loadable modules on platforms without a dynamic loader.
|
||||
(GSoC Task)
|
||||
- Added support for loadable modules on platforms without a dynamic
|
||||
loader (GSoC Task).
|
||||
- Added Danish translation.
|
||||
- Added Norwegian Bokmaal translation.
|
||||
- Added Norwegian Nynorsk translation.
|
||||
|
@ -91,7 +102,7 @@ For a more comprehensive changelog of the latest experimental code, see:
|
|||
- Improved support for FM-TOWNS versions of games.
|
||||
|
||||
Sky:
|
||||
- Fixed crashes on sequences for several ports (Android, OpenGL, ...)
|
||||
- Fixed crashes on sequences for several ports (Android, OpenGL, ...).
|
||||
|
||||
Teenagent:
|
||||
- Closed memory leaks.
|
||||
|
@ -108,7 +119,6 @@ For a more comprehensive changelog of the latest experimental code, see:
|
|||
- Added workarounds for several issues present in the original game.
|
||||
|
||||
SDL ports:
|
||||
- Added support for OpenGL. (GSoC Task)
|
||||
- Closed memory leaks in Mouse Surfaces.
|
||||
|
||||
Android port:
|
||||
|
|
2
README
2
README
|
@ -885,11 +885,13 @@ Supported platforms include (but are not limited to):
|
|||
Maemo (Nokia Internet tablets 770, N800, N810, N900)
|
||||
Nintendo 64
|
||||
Nintendo DS
|
||||
Nintendo GameCube
|
||||
Nintendo Wii
|
||||
OS/2
|
||||
PlayStation 2
|
||||
PlayStation Portable
|
||||
Symbian
|
||||
WebOS
|
||||
|
||||
The Dreamcast port does not support The Curse of Monkey Island, nor The
|
||||
Dig. The Nintendo DS port does not support Full Throttle, The Dig, or
|
||||
|
|
|
@ -24,14 +24,14 @@
|
|||
*/
|
||||
|
||||
#include "common/debug.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/file.h"
|
||||
#include "common/mutex.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/queue.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/decoders/flac.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "audio/decoders/mp3.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
#include "audio/decoders/vorbis.h"
|
||||
|
|
|
@ -26,16 +26,14 @@
|
|||
#ifndef SOUND_AUDIOSTREAM_H
|
||||
#define SOUND_AUDIOSTREAM_H
|
||||
|
||||
#include "common/util.h"
|
||||
#include "common/scummsys.h"
|
||||
#include "common/str.h"
|
||||
#include "common/types.h"
|
||||
|
||||
#include "audio/timestamp.h"
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class SeekableAudioStream;
|
||||
|
||||
/**
|
||||
* Generic audio input stream. Subclasses of this are used to feed arbitrary
|
||||
* sampled audio data into ScummVM's audio mixer.
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "common/debug.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
|
|
|
@ -23,11 +23,12 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "common/endian.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/decoders/adpcm.h"
|
||||
#include "audio/decoders/adpcm_intern.h"
|
||||
#include "audio/audiostream.h"
|
||||
|
||||
|
||||
namespace Audio {
|
||||
|
@ -201,60 +202,49 @@ int Apple_ADPCMStream::readBuffer(int16 *buffer, const int numSamples) {
|
|||
return samples[0] + samples[1];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
|
||||
int MSIma_ADPCMStream::readBufferMSIMA1(int16 *buffer, const int numSamples) {
|
||||
int samples = 0;
|
||||
byte data;
|
||||
int MSIma_ADPCMStream::readBuffer(int16 *buffer, const int numSamples) {
|
||||
// Need to write at least one sample per channel
|
||||
assert((numSamples % _channels) == 0);
|
||||
|
||||
assert(numSamples % 2 == 0);
|
||||
int samples = 0;
|
||||
|
||||
while (samples < numSamples && !_stream->eos() && _stream->pos() < _endpos) {
|
||||
if (_blockPos[0] == _blockAlign) {
|
||||
// read block header
|
||||
_status.ima_ch[0].last = _stream->readSint16LE();
|
||||
_status.ima_ch[0].stepIndex = _stream->readSint16LE();
|
||||
_blockPos[0] = 4;
|
||||
for (int i = 0; i < _channels; i++) {
|
||||
// read block header
|
||||
_status.ima_ch[i].last = _stream->readSint16LE();
|
||||
_status.ima_ch[i].stepIndex = _stream->readSint16LE();
|
||||
}
|
||||
|
||||
_blockPos[0] = _channels * 4;
|
||||
}
|
||||
|
||||
for (; samples < numSamples && _blockPos[0] < _blockAlign && !_stream->eos() && _stream->pos() < _endpos; samples += 2) {
|
||||
data = _stream->readByte();
|
||||
_blockPos[0]++;
|
||||
buffer[samples] = decodeIMA(_invertSamples ? (data >> 4) & 0x0f : data & 0x0f);
|
||||
buffer[samples + 1] = decodeIMA(_invertSamples ? data & 0x0f : (data >> 4) & 0x0f);
|
||||
}
|
||||
}
|
||||
return samples;
|
||||
}
|
||||
|
||||
|
||||
// Microsoft as usual tries to implement it differently. This method
|
||||
// is used for stereo data.
|
||||
int MSIma_ADPCMStream::readBufferMSIMA2(int16 *buffer, const int numSamples) {
|
||||
int samples;
|
||||
uint32 data;
|
||||
int nibble;
|
||||
byte k;
|
||||
|
||||
// TODO: Currently this implementation only supports
|
||||
// reading a multiple of 16 samples at once. We might
|
||||
// consider changing that so it could read an arbitrary
|
||||
// sample pair count.
|
||||
assert(numSamples % 16 == 0);
|
||||
|
||||
for (samples = 0; samples < numSamples && !_stream->eos() && _stream->pos() < _endpos;) {
|
||||
for (int channel = 0; channel < 2; channel++) {
|
||||
data = _stream->readUint32LE();
|
||||
|
||||
for (nibble = 0; nibble < 8; nibble++) {
|
||||
k = ((data & 0xf0000000) >> 28);
|
||||
buffer[samples + channel + nibble * 2] = decodeIMA(k);
|
||||
data <<= 4;
|
||||
// Decode a set of samples
|
||||
for (int i = 0; i < _channels; i++) {
|
||||
// The stream encodes four bytes per channel at a time
|
||||
for (int j = 0; j < 4; j++) {
|
||||
byte data = _stream->readByte();
|
||||
_blockPos[0]++;
|
||||
_buffer[i][j * 2] = decodeIMA(data & 0x0f, i);
|
||||
_buffer[i][j * 2 + 1] = decodeIMA((data >> 4) & 0x0f, i);
|
||||
_samplesLeft[i] += 2;
|
||||
}
|
||||
}
|
||||
samples += 16;
|
||||
|
||||
while (samples < numSamples && _samplesLeft[0] != 0) {
|
||||
for (int i = 0; i < _channels; i++) {
|
||||
buffer[samples] = _buffer[i][8 - _samplesLeft[i]];
|
||||
_samplesLeft[i]--;
|
||||
}
|
||||
|
||||
samples += _channels;
|
||||
}
|
||||
}
|
||||
|
||||
return samples;
|
||||
}
|
||||
|
||||
|
@ -449,8 +439,6 @@ RewindableAudioStream *makeADPCMStream(Common::SeekableReadStream *stream, Dispo
|
|||
return new Oki_ADPCMStream(stream, disposeAfterUse, size, rate, channels, blockAlign);
|
||||
case kADPCMMSIma:
|
||||
return new MSIma_ADPCMStream(stream, disposeAfterUse, size, rate, channels, blockAlign);
|
||||
case kADPCMMSImaLastExpress:
|
||||
return new MSIma_ADPCMStream(stream, disposeAfterUse, size, rate, channels, blockAlign, true);
|
||||
case kADPCMMS:
|
||||
return new MS_ADPCMStream(stream, disposeAfterUse, size, rate, channels, blockAlign);
|
||||
case kADPCMDVI:
|
||||
|
|
|
@ -40,12 +40,13 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Common { class SeekableReadStream; }
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
class RewindableAudioStream;
|
||||
|
||||
// There are several types of ADPCM encoding, only some are supported here
|
||||
|
@ -56,7 +57,6 @@ class RewindableAudioStream;
|
|||
enum typesADPCM {
|
||||
kADPCMOki, // Dialogic/Oki ADPCM (aka VOX)
|
||||
kADPCMMSIma, // Microsoft IMA ADPCM
|
||||
kADPCMMSImaLastExpress, // Microsoft IMA ADPCM (with inverted samples)
|
||||
kADPCMMS, // Microsoft ADPCM
|
||||
kADPCMDVI, // Intel DVI IMA ADPCM
|
||||
kADPCMApple, // Apple QuickTime IMA ADPCM
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* Internal interfaces to the ADPCM encoders.
|
||||
* Internal interfaces to the ADPCM decoders.
|
||||
*
|
||||
* These can be used to make custom ADPCM decoder subclasses,
|
||||
* or to at least share some common data tables between various
|
||||
|
@ -37,6 +37,7 @@
|
|||
#include "audio/audiostream.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
|
||||
namespace Audio {
|
||||
|
@ -52,7 +53,7 @@ protected:
|
|||
uint32 _blockPos[2];
|
||||
const int _rate;
|
||||
|
||||
struct {
|
||||
struct ADPCMStatus {
|
||||
// OKI/IMA
|
||||
struct {
|
||||
int32 last;
|
||||
|
@ -148,24 +149,30 @@ public:
|
|||
|
||||
class MSIma_ADPCMStream : public Ima_ADPCMStream {
|
||||
public:
|
||||
MSIma_ADPCMStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse, uint32 size, int rate, int channels, uint32 blockAlign, bool invertSamples = false)
|
||||
: Ima_ADPCMStream(stream, disposeAfterUse, size, rate, channels, blockAlign), _invertSamples(invertSamples) {
|
||||
MSIma_ADPCMStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse, uint32 size, int rate, int channels, uint32 blockAlign)
|
||||
: Ima_ADPCMStream(stream, disposeAfterUse, size, rate, channels, blockAlign) {
|
||||
|
||||
if (blockAlign == 0)
|
||||
error("ADPCMStream(): blockAlign isn't specified for MS IMA ADPCM");
|
||||
error("MSIma_ADPCMStream(): blockAlign isn't specified");
|
||||
|
||||
if (blockAlign % (_channels * 4))
|
||||
error("MSIma_ADPCMStream(): invalid blockAlign");
|
||||
|
||||
_samplesLeft[0] = 0;
|
||||
_samplesLeft[1] = 0;
|
||||
}
|
||||
|
||||
virtual int readBuffer(int16 *buffer, const int numSamples) {
|
||||
if (_channels == 1)
|
||||
return readBufferMSIMA1(buffer, numSamples);
|
||||
else
|
||||
return readBufferMSIMA2(buffer, numSamples);
|
||||
}
|
||||
virtual int readBuffer(int16 *buffer, const int numSamples);
|
||||
|
||||
int readBufferMSIMA1(int16 *buffer, const int numSamples);
|
||||
int readBufferMSIMA2(int16 *buffer, const int numSamples);
|
||||
void reset() {
|
||||
Ima_ADPCMStream::reset();
|
||||
_samplesLeft[0] = 0;
|
||||
_samplesLeft[1] = 0;
|
||||
}
|
||||
|
||||
private:
|
||||
bool _invertSamples; // Some implementations invert the way samples are decoded
|
||||
int16 _buffer[2][8];
|
||||
int _samplesLeft[2];
|
||||
};
|
||||
|
||||
class MS_ADPCMStream : public ADPCMStream {
|
||||
|
|
|
@ -32,12 +32,10 @@
|
|||
*/
|
||||
|
||||
#include "common/endian.h"
|
||||
#include "common/util.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#include "audio/decoders/aiff.h"
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
|
||||
namespace Audio {
|
||||
|
|
|
@ -37,7 +37,9 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Common { class SeekableReadStream; }
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "common/debug.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
|
|
|
@ -49,12 +49,11 @@
|
|||
#ifdef USE_FLAC
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
class SeekableAudioStream;
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
|
||||
#include "audio/decoders/iff_sound.h"
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
#include "common/iff_container.h"
|
||||
#include "common/func.h"
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#define SOUND_IFF_H
|
||||
|
||||
namespace Common {
|
||||
class ReadStream;
|
||||
class ReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
|
|
@ -30,11 +30,10 @@
|
|||
* We implement both type 1 and type 2 snd resources, but only those that are sampled
|
||||
*/
|
||||
|
||||
#include "common/util.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/stream.h"
|
||||
|
||||
#include "audio/decoders/mac_snd.h"
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
|
||||
namespace Audio {
|
||||
|
|
|
@ -35,7 +35,9 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Common { class SeekableReadStream; }
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "common/debug.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
|
|
|
@ -50,12 +50,11 @@
|
|||
#ifdef USE_MAD
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
class SeekableAudioStream;
|
||||
|
||||
/**
|
||||
|
|
|
@ -34,8 +34,9 @@
|
|||
#include "audio/decoders/qdm2data.h"
|
||||
|
||||
#include "common/array.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/system.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#define AUDIO_QDM2_H
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "common/util.h"
|
||||
#include "common/memstream.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/decoders/quicktime.h"
|
||||
|
|
|
@ -25,9 +25,10 @@
|
|||
|
||||
#include "common/endian.h"
|
||||
#include "common/memstream.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
|
||||
namespace Audio {
|
||||
|
|
|
@ -32,12 +32,12 @@
|
|||
#include "common/list.h"
|
||||
|
||||
|
||||
namespace Common { class SeekableReadStream; }
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
class SeekableAudioStream;
|
||||
|
||||
/**
|
||||
|
|
|
@ -35,12 +35,11 @@
|
|||
#define SOUND_VAG_H
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
class RewindableAudioStream;
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,9 +27,9 @@
|
|||
#include "common/endian.h"
|
||||
#include "common/util.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
#include "audio/decoders/voc.h"
|
||||
|
||||
|
|
|
@ -41,8 +41,10 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Common { class ReadStream; }
|
||||
namespace Common { class SeekableReadStream; }
|
||||
namespace Common {
|
||||
class ReadStream;
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -32,15 +32,15 @@
|
|||
|
||||
#ifdef USE_VORBIS
|
||||
|
||||
#include "common/debug.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
|
||||
#ifdef USE_TREMOR
|
||||
#if defined(__GP32__) // custom libtremor locations
|
||||
#include <ivorbisfile.h>
|
||||
#ifdef USE_TREMOLO
|
||||
#include <tremolo/ivorbisfile.h>
|
||||
#else
|
||||
#include <tremor/ivorbisfile.h>
|
||||
#endif
|
||||
|
|
|
@ -49,12 +49,11 @@
|
|||
#ifdef USE_VORBIS
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
class SeekableAudioStream;
|
||||
|
||||
/**
|
||||
|
|
|
@ -24,11 +24,10 @@
|
|||
*/
|
||||
|
||||
#include "common/debug.h"
|
||||
#include "common/util.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/stream.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "audio/decoders/wave.h"
|
||||
#include "audio/decoders/adpcm.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
|
|
|
@ -43,7 +43,9 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Common { class SeekableReadStream; }
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "audio/softsynth/opl/mame.h"
|
||||
|
||||
#include "common/config-manager.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/translation.h"
|
||||
|
||||
namespace OPL {
|
||||
|
|
|
@ -23,14 +23,14 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "engines/engine.h"
|
||||
#include "common/config-manager.h"
|
||||
#include "common/error.h"
|
||||
#include "common/str.h"
|
||||
#include "common/system.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
#include "audio/mididrv.h"
|
||||
#include "audio/musicplugin.h"
|
||||
#include "common/translation.h"
|
||||
|
||||
const byte MidiDriver::_mt32ToGm[128] = {
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||
|
|
|
@ -27,15 +27,10 @@
|
|||
#define SOUND_MIDIDRV_H
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "common/str.h"
|
||||
#include "common/timer.h"
|
||||
|
||||
class MidiChannel;
|
||||
class MusicDevice;
|
||||
|
||||
namespace Audio {
|
||||
class Mixer;
|
||||
}
|
||||
namespace Common { class String; }
|
||||
|
||||
/**
|
||||
* Music types that music drivers can implement and engines can rely on.
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "audio/midiparser.h"
|
||||
#include "audio/mididrv.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/endian.h"
|
||||
|
||||
class MidiParser;
|
||||
class MidiDriver_BASE;
|
||||
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
*/
|
||||
|
||||
#include "audio/midiparser.h"
|
||||
#include "audio/mididrv.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
/**
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
*/
|
||||
|
||||
#include "audio/midiparser.h"
|
||||
#include "audio/mididrv.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "common/util.h"
|
||||
#include "common/system.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#include "audio/mixer_intern.h"
|
||||
#include "audio/rate.h"
|
||||
|
@ -162,16 +163,11 @@ private:
|
|||
|
||||
|
||||
MixerImpl::MixerImpl(OSystem *system, uint sampleRate)
|
||||
: _syst(system), _sampleRate(sampleRate), _mixerReady(false), _handleSeed(0) {
|
||||
: _syst(system), _mutex(), _sampleRate(sampleRate), _mixerReady(false), _handleSeed(0), _soundTypeSettings() {
|
||||
|
||||
assert(sampleRate > 0);
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAYSIZE(_volumeForSoundType); i++)
|
||||
_volumeForSoundType[i] = kMaxMixerVolume;
|
||||
|
||||
for (i = 0; i != NUM_CHANNELS; i++)
|
||||
for (int i = 0; i != NUM_CHANNELS; i++)
|
||||
_channels[i] = 0;
|
||||
}
|
||||
|
||||
|
@ -322,6 +318,21 @@ void MixerImpl::stopHandle(SoundHandle handle) {
|
|||
_channels[index] = 0;
|
||||
}
|
||||
|
||||
void MixerImpl::muteSoundType(SoundType type, bool mute) {
|
||||
assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
|
||||
_soundTypeSettings[type].mute = mute;
|
||||
|
||||
for (int i = 0; i != NUM_CHANNELS; ++i) {
|
||||
if (_channels[i] && _channels[i]->getType() == type)
|
||||
_channels[i]->notifyGlobalVolChange();
|
||||
}
|
||||
}
|
||||
|
||||
bool MixerImpl::isSoundTypeMuted(SoundType type) const {
|
||||
assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
|
||||
return _soundTypeSettings[type].mute;
|
||||
}
|
||||
|
||||
void MixerImpl::setChannelVolume(SoundHandle handle, byte volume) {
|
||||
Common::StackLock lock(_mutex);
|
||||
|
||||
|
@ -417,7 +428,7 @@ bool MixerImpl::hasActiveChannelOfType(SoundType type) {
|
|||
}
|
||||
|
||||
void MixerImpl::setVolumeForSoundType(SoundType type, int volume) {
|
||||
assert(0 <= type && type < ARRAYSIZE(_volumeForSoundType));
|
||||
assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
|
||||
|
||||
// Check range
|
||||
if (volume > kMaxMixerVolume)
|
||||
|
@ -429,7 +440,7 @@ void MixerImpl::setVolumeForSoundType(SoundType type, int volume) {
|
|||
// scaling? See also Player_V2::setMasterVolume
|
||||
|
||||
Common::StackLock lock(_mutex);
|
||||
_volumeForSoundType[type] = volume;
|
||||
_soundTypeSettings[type].volume = volume;
|
||||
|
||||
for (int i = 0; i != NUM_CHANNELS; ++i) {
|
||||
if (_channels[i] && _channels[i]->getType() == type)
|
||||
|
@ -438,9 +449,9 @@ void MixerImpl::setVolumeForSoundType(SoundType type, int volume) {
|
|||
}
|
||||
|
||||
int MixerImpl::getVolumeForSoundType(SoundType type) const {
|
||||
assert(0 <= type && type < ARRAYSIZE(_volumeForSoundType));
|
||||
assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
|
||||
|
||||
return _volumeForSoundType[type];
|
||||
return _soundTypeSettings[type].volume;
|
||||
}
|
||||
|
||||
|
||||
|
@ -486,17 +497,21 @@ void Channel::updateChannelVolumes() {
|
|||
// volume is in the range 0 - kMaxMixerVolume.
|
||||
// Hence, the vol_l/vol_r values will be in that range, too
|
||||
|
||||
int vol = _mixer->getVolumeForSoundType(_type) * _volume;
|
||||
if (!_mixer->isSoundTypeMuted(_type)) {
|
||||
int vol = _mixer->getVolumeForSoundType(_type) * _volume;
|
||||
|
||||
if (_balance == 0) {
|
||||
_volL = vol / Mixer::kMaxChannelVolume;
|
||||
_volR = vol / Mixer::kMaxChannelVolume;
|
||||
} else if (_balance < 0) {
|
||||
_volL = vol / Mixer::kMaxChannelVolume;
|
||||
_volR = ((127 + _balance) * vol) / (Mixer::kMaxChannelVolume * 127);
|
||||
if (_balance == 0) {
|
||||
_volL = vol / Mixer::kMaxChannelVolume;
|
||||
_volR = vol / Mixer::kMaxChannelVolume;
|
||||
} else if (_balance < 0) {
|
||||
_volL = vol / Mixer::kMaxChannelVolume;
|
||||
_volR = ((127 + _balance) * vol) / (Mixer::kMaxChannelVolume * 127);
|
||||
} else {
|
||||
_volL = ((127 - _balance) * vol) / (Mixer::kMaxChannelVolume * 127);
|
||||
_volR = vol / Mixer::kMaxChannelVolume;
|
||||
}
|
||||
} else {
|
||||
_volL = ((127 - _balance) * vol) / (Mixer::kMaxChannelVolume * 127);
|
||||
_volR = vol / Mixer::kMaxChannelVolume;
|
||||
_volL = _volR = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,20 +27,13 @@
|
|||
#define SOUND_MIXER_H
|
||||
|
||||
#include "common/types.h"
|
||||
#include "common/mutex.h"
|
||||
#include "common/noncopyable.h"
|
||||
|
||||
#include "audio/timestamp.h"
|
||||
|
||||
class OSystem;
|
||||
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
class Channel;
|
||||
class Mixer;
|
||||
class MixerImpl;
|
||||
class Timestamp;
|
||||
|
||||
/**
|
||||
* A SoundHandle instances corresponds to a specific sound
|
||||
|
@ -197,6 +190,20 @@ public:
|
|||
virtual bool isSoundHandleActive(SoundHandle handle) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Set the mute state for a given sound type.
|
||||
*
|
||||
* @param type the sound type
|
||||
* @param mute Whether to mute (= true) or not (= false).
|
||||
*/
|
||||
virtual void muteSoundType(SoundType type, bool mute) = 0;
|
||||
|
||||
/**
|
||||
* Query the mute state for a given sound type.
|
||||
*
|
||||
* @param type the sound type
|
||||
*/
|
||||
virtual bool isSoundTypeMuted(SoundType type) const = 0;
|
||||
|
||||
/**
|
||||
* Set the channel volume for the given handle.
|
||||
|
|
|
@ -64,7 +64,14 @@ private:
|
|||
bool _mixerReady;
|
||||
uint32 _handleSeed;
|
||||
|
||||
int _volumeForSoundType[4];
|
||||
struct SoundTypeSettings {
|
||||
SoundTypeSettings() : mute(false), volume(kMaxMixerVolume) {}
|
||||
|
||||
bool mute;
|
||||
int volume;
|
||||
};
|
||||
|
||||
SoundTypeSettings _soundTypeSettings[4];
|
||||
Channel *_channels[NUM_CHANNELS];
|
||||
|
||||
|
||||
|
@ -97,6 +104,9 @@ public:
|
|||
|
||||
virtual bool isSoundHandleActive(SoundHandle handle);
|
||||
|
||||
virtual void muteSoundType(SoundType type, bool mute);
|
||||
virtual bool isSoundTypeMuted(SoundType type) const;
|
||||
|
||||
virtual void setChannelVolume(SoundHandle handle, byte volume);
|
||||
virtual void setChannelBalance(SoundHandle handle, int8 balance);
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "common/endian.h"
|
||||
#include "common/file.h"
|
||||
#include "common/memstream.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -33,7 +33,10 @@
|
|||
#define SOUND_MODS_INFOGRAMES_H
|
||||
|
||||
#include "audio/mods/paula.h"
|
||||
#include "common/stream.h"
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -24,10 +24,10 @@
|
|||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/util.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#include "audio/mods/maxtrax.h"
|
||||
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
#include "common/util.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
namespace Modules {
|
||||
|
||||
|
|
|
@ -26,7 +26,11 @@
|
|||
#ifndef SOUND_MODS_MODULE_H
|
||||
#define SOUND_MODS_MODULE_H
|
||||
|
||||
#include "common/stream.h"
|
||||
#include "common/scummsys.h"
|
||||
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Modules {
|
||||
|
||||
|
|
|
@ -29,6 +29,8 @@
|
|||
|
||||
#include "audio/audiostream.h"
|
||||
|
||||
#include "common/textconsole.h"
|
||||
|
||||
namespace Modules {
|
||||
|
||||
class ProtrackerStream : public ::Audio::Paula {
|
||||
|
|
|
@ -33,7 +33,9 @@
|
|||
#ifndef SOUND_MODS_PROTRACKER_H
|
||||
#define SOUND_MODS_PROTRACKER_H
|
||||
|
||||
#include "common/stream.h"
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -25,10 +25,12 @@
|
|||
|
||||
#include "common/debug.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include "audio/mods/paula.h"
|
||||
#include "audio/mods/rjp1.h"
|
||||
#include "audio/audiostream.h"
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -32,7 +32,9 @@
|
|||
#ifndef SOUND_MODS_RJP1_H
|
||||
#define SOUND_MODS_RJP1_H
|
||||
|
||||
#include "common/stream.h"
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -24,10 +24,11 @@
|
|||
*/
|
||||
|
||||
#include "common/endian.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#include "audio/mods/paula.h"
|
||||
#include "audio/mods/soundfx.h"
|
||||
#include "audio/audiostream.h"
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -32,7 +32,9 @@
|
|||
#ifndef SOUND_MODS_SOUNDFX_H
|
||||
#define SOUND_MODS_SOUNDFX_H
|
||||
|
||||
#include "common/stream.h"
|
||||
namespace Common {
|
||||
class SeekableReadStream;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/stream.h"
|
||||
#include "common/util.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
#include "audio/mods/tfmx.h"
|
||||
|
||||
|
|
|
@ -34,8 +34,6 @@
|
|||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
class MidiDriver_MPU401;
|
||||
|
||||
class MidiChannel_MPU401 : public MidiChannel {
|
||||
|
||||
private:
|
||||
|
|
|
@ -29,6 +29,10 @@
|
|||
#include "audio/mididrv.h"
|
||||
#include "common/list.h"
|
||||
|
||||
namespace Common {
|
||||
class Error;
|
||||
}
|
||||
|
||||
class MusicPluginObject;
|
||||
|
||||
/**
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* $Id$
|
||||
*/
|
||||
|
||||
#include "common/error.h"
|
||||
#include "audio/null.h"
|
||||
|
||||
Common::Error NullMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "audio/rate.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "common/frac.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
namespace Audio {
|
||||
|
|
|
@ -27,13 +27,11 @@
|
|||
#define SOUND_RATE_H
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "engines/engine.h"
|
||||
|
||||
class AudioStream;
|
||||
|
||||
|
||||
namespace Audio {
|
||||
|
||||
class AudioStream;
|
||||
|
||||
typedef int16 st_sample_t;
|
||||
typedef uint16 st_volume_t;
|
||||
typedef uint32 st_size_t;
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#include "audio/rate.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "common/util.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
//#define DEBUG_RATECONV
|
||||
|
||||
|
@ -129,13 +130,11 @@ SimpleRateConverter<stereo, reverseStereo>::SimpleRateConverter(st_rate_t inrate
|
|||
sr.inLen = 0;
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
#ifndef IPHONE
|
||||
#define ARM_SimpleRate_M _ARM_SimpleRate_M
|
||||
#define ARM_SimpleRate_S _ARM_SimpleRate_S
|
||||
#define ARM_SimpleRate_R _ARM_SimpleRate_R
|
||||
#endif
|
||||
}
|
||||
|
||||
extern "C" st_sample_t *ARM_SimpleRate_M(
|
||||
AudioStream &input,
|
||||
|
|
|
@ -24,6 +24,11 @@
|
|||
|
||||
#include "audio/softsynth/emumidi.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/error.h"
|
||||
#include "common/scummsys.h"
|
||||
#include "common/system.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/types.h"
|
||||
#include "common/util.h"
|
||||
#include "audio/fmopl.h"
|
||||
#include "audio/musicplugin.h"
|
||||
|
@ -66,8 +71,6 @@ struct AdLibInstrument {
|
|||
byte flags_b;
|
||||
InstrumentExtra extra_b;
|
||||
byte duration;
|
||||
|
||||
AdLibInstrument() { memset(this, 0, sizeof(AdLibInstrument)); }
|
||||
} PACKED_STRUCT;
|
||||
#include "common/pack-end.h"
|
||||
|
||||
|
@ -112,6 +115,8 @@ public:
|
|||
_owner = 0;
|
||||
_allocated = false;
|
||||
_channel = 0;
|
||||
|
||||
memset(&_part_instr, 0, sizeof(_part_instr));
|
||||
}
|
||||
|
||||
MidiDriver *device();
|
||||
|
@ -301,185 +306,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] = {
|
||||
|
@ -611,7 +616,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];
|
||||
}
|
||||
|
@ -622,16 +627,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);
|
||||
};
|
||||
|
@ -671,12 +676,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));
|
||||
}
|
||||
|
@ -785,8 +792,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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -835,7 +841,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) {
|
||||
|
@ -1477,8 +1483,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;
|
||||
|
|
|
@ -30,8 +30,11 @@
|
|||
|
||||
#include "common/debug.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/error.h"
|
||||
#include "common/file.h"
|
||||
#include "common/config-manager.h"
|
||||
#include "common/system.h"
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mpu401.h"
|
||||
#include "audio/musicplugin.h"
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
#ifdef USE_FLUIDSYNTH
|
||||
|
||||
#include "common/config-manager.h"
|
||||
#include "common/error.h"
|
||||
#include "common/system.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "audio/musicplugin.h"
|
||||
#include "audio/mpu401.h"
|
||||
#include "audio/softsynth/emumidi.h"
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "audio/softsynth/fmtowns_pc98/towns_audio.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/util.h"
|
||||
#include "backends/audiocd/audiocd.h"
|
||||
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
|
||||
#include "audio/softsynth/fmtowns_pc98/towns_euphony.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/util.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
TownsEuphonyDriver::TownsEuphonyDriver(Audio::Mixer *mixer) : _activeChannels(0), _sustainChannels(0),
|
||||
_assignedChannels(0), _paraCount(0), _command(0), _tEnable(0), _tMode(0), _tOrdr(0), _tLevel(0),
|
||||
|
@ -40,6 +42,7 @@ TownsEuphonyDriver::~TownsEuphonyDriver() {
|
|||
delete[] _activeChannels;
|
||||
delete[] _sustainChannels;
|
||||
delete[] _assignedChannels;
|
||||
delete[] _eventBuffer;
|
||||
delete[] _tEnable;
|
||||
delete[] _tMode;
|
||||
delete[] _tOrdr;
|
||||
|
@ -51,6 +54,16 @@ bool TownsEuphonyDriver::init() {
|
|||
if (!_intf->init())
|
||||
return false;
|
||||
|
||||
delete[] _activeChannels;
|
||||
delete[] _sustainChannels;
|
||||
delete[] _assignedChannels;
|
||||
delete[] _eventBuffer;
|
||||
delete[] _tEnable;
|
||||
delete[] _tMode;
|
||||
delete[] _tOrdr;
|
||||
delete[] _tLevel;
|
||||
delete[] _tTranspose;
|
||||
|
||||
_activeChannels = new int8[16];
|
||||
_sustainChannels = new int8[16];
|
||||
_assignedChannels = new ActiveChannel[128];
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "audio/softsynth/fmtowns_pc98/towns_pc98_driver.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
class TownsPC98_MusicChannel {
|
||||
public:
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
|
||||
#include "audio/softsynth/fmtowns_pc98/towns_pc98_fmsynth.h"
|
||||
#include "common/endian.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
class TownsPC98_FmSynthOperator {
|
||||
public:
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "common/list.h"
|
||||
#include "common/mutex.h"
|
||||
|
||||
#ifdef __DS__
|
||||
/* This disables the rhythm channel when emulating the PC-98 type 86 sound card.
|
||||
|
|
|
@ -34,15 +34,20 @@
|
|||
|
||||
#include "common/config-manager.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/error.h"
|
||||
#include "common/events.h"
|
||||
#include "common/file.h"
|
||||
#include "common/system.h"
|
||||
#include "common/util.h"
|
||||
#include "common/archive.h"
|
||||
#include "common/textconsole.h"
|
||||
#include "common/translation.h"
|
||||
|
||||
#include "graphics/fontman.h"
|
||||
#include "graphics/surface.h"
|
||||
#include "graphics/pixelformat.h"
|
||||
#include "graphics/palette.h"
|
||||
#include "graphics/font.h"
|
||||
|
||||
class MidiChannel_MT32 : public MidiChannel_MPU401 {
|
||||
void effectLevel(byte value) { }
|
||||
|
@ -346,7 +351,7 @@ void MidiDriver_MT32::send(uint32 b) {
|
|||
|
||||
void MidiDriver_MT32::setPitchBendRange(byte channel, uint range) {
|
||||
if (range > 24) {
|
||||
printf("setPitchBendRange() called with range > 24: %d", range);
|
||||
warning("setPitchBendRange() called with range > 24: %d", range);
|
||||
}
|
||||
byte benderRangeSysex[9];
|
||||
benderRangeSysex[0] = 0x41; // Roland
|
||||
|
|
|
@ -100,7 +100,7 @@ void RhythmPart::setBend(unsigned int midiBend) {
|
|||
}
|
||||
|
||||
void Part::setBend(unsigned int midiBend) {
|
||||
// FIXME:KG: Slightly unbalanced increments, but I wanted min -1.0, centre 0.0 and max 1.0
|
||||
// FIXME:KG: Slightly unbalanced increments, but I wanted min -1.0, center 0.0 and max 1.0
|
||||
if (midiBend <= 0x2000) {
|
||||
bend = ((signed int)midiBend - 0x2000) / (float)0x2000;
|
||||
} else {
|
||||
|
@ -413,7 +413,7 @@ void RhythmPart::setPan(unsigned int midiPan)
|
|||
}
|
||||
|
||||
void Part::setPan(unsigned int midiPan) {
|
||||
// FIXME:KG: Tweaked this a bit so that we have a left 100%, centre and right 100%
|
||||
// FIXME:KG: Tweaked this a bit so that we have a left 100%, center and right 100%
|
||||
// (But this makes the range somewhat skewed)
|
||||
// Check against the real thing
|
||||
// NOTE: Panning is inverted compared to GM.
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
|
||||
namespace MT32Emu {
|
||||
|
||||
class PartialManager;
|
||||
class Synth;
|
||||
|
||||
class Part {
|
||||
|
|
|
@ -19,14 +19,18 @@
|
|||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
// FIXME: Avoid using printf
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_printf
|
||||
|
||||
// FIXME: Avoid using vprintf
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_vprintf
|
||||
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "mt32emu.h"
|
||||
|
||||
#include "common/str.h"
|
||||
|
||||
#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
|
||||
|
|
|
@ -29,7 +29,6 @@ class revmodel;
|
|||
namespace MT32Emu {
|
||||
|
||||
class File;
|
||||
class TableInitialiser;
|
||||
class Partial;
|
||||
class PartialManager;
|
||||
class Part;
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
#include "common/system.h"
|
||||
#include "common/scummsys.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
|
||||
#include "mame.h"
|
||||
|
||||
#include "common/textconsole.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#if defined (_WIN32_WCE) || defined (__SYMBIAN32__) || defined(__GP32__) || defined(GP2X) || defined (__MAEMO__) || defined(__DS__) || defined (__MINT__) || defined(__N64__)
|
||||
#include "common/config-manager.h"
|
||||
#endif
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#define SOUND_SOFTSYNTH_OPL_MAME_H
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "common/util.h"
|
||||
#include "common/random.h"
|
||||
|
||||
#include "audio/fmopl.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
#define SOUND_SOFTSYNTH_PCSPK_H
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "common/mutex.h"
|
||||
|
||||
namespace Audio {
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
|
||||
#include "sid.h"
|
||||
#include "audio/null.h"
|
||||
#include <math.h>
|
||||
|
||||
namespace Resid {
|
||||
|
||||
|
@ -110,7 +109,7 @@ void WaveformGenerator::reset() {
|
|||
msb_rising = false;
|
||||
}
|
||||
|
||||
RESID_INLINE void WaveformGenerator::clock(cycle_count delta_t) {
|
||||
RESID_INLINE void WaveformGenerator::updateClock(cycle_count delta_t) {
|
||||
// No operation if test bit is set.
|
||||
if (test) {
|
||||
return;
|
||||
|
@ -165,10 +164,10 @@ RESID_INLINE void WaveformGenerator::clock(cycle_count delta_t) {
|
|||
|
||||
/**
|
||||
* Synchronize oscillators.
|
||||
* This must be done after all the oscillators have been clock()'ed since the
|
||||
* This must be done after all the oscillators have been updateClock()'ed since the
|
||||
* oscillators operate in parallel.
|
||||
* Note that the oscillators must be clocked exactly on the cycle when the
|
||||
* MSB is set high for hard sync to operate correctly. See SID::clock().
|
||||
* MSB is set high for hard sync to operate correctly. See SID::updateClock().
|
||||
*/
|
||||
RESID_INLINE void WaveformGenerator::synchronize() {
|
||||
// A special case occurs when a sync source is synced itself on the same
|
||||
|
@ -592,7 +591,7 @@ void Filter::set_Q() {
|
|||
_1024_div_Q = static_cast<sound_sample>(1024.0/(0.707 + 1.0*res/0x0f));
|
||||
}
|
||||
|
||||
RESID_INLINE void Filter::clock(cycle_count delta_t,
|
||||
RESID_INLINE void Filter::updateClock(cycle_count delta_t,
|
||||
sound_sample voice1,
|
||||
sound_sample voice2,
|
||||
sound_sample voice3)
|
||||
|
@ -888,7 +887,7 @@ reg8 EnvelopeGenerator::readENV() {
|
|||
return output();
|
||||
}
|
||||
|
||||
RESID_INLINE void EnvelopeGenerator::clock(cycle_count delta_t) {
|
||||
RESID_INLINE void EnvelopeGenerator::updateClock(cycle_count delta_t) {
|
||||
// Check for ADSR delay bug.
|
||||
// If the rate counter comparison value is set below the current value of the
|
||||
// rate counter, the counter will continue counting up until it wraps around
|
||||
|
@ -1027,7 +1026,7 @@ void ExternalFilter::reset() {
|
|||
Vo = 0;
|
||||
}
|
||||
|
||||
RESID_INLINE void ExternalFilter::clock(cycle_count delta_t, sound_sample Vi) {
|
||||
RESID_INLINE void ExternalFilter::updateClock(cycle_count delta_t, sound_sample Vi) {
|
||||
// This is handy for testing.
|
||||
if (!enabled) {
|
||||
// Remove maximum DC level since there is no filter to do it.
|
||||
|
@ -1317,7 +1316,7 @@ bool SID::set_sampling_parameters(double clock_freq,
|
|||
return true;
|
||||
}
|
||||
|
||||
void SID::clock(cycle_count delta_t) {
|
||||
void SID::updateClock(cycle_count delta_t) {
|
||||
int i;
|
||||
|
||||
if (delta_t <= 0) {
|
||||
|
@ -1333,7 +1332,7 @@ void SID::clock(cycle_count delta_t) {
|
|||
|
||||
// Clock amplitude modulators.
|
||||
for (i = 0; i < 3; i++) {
|
||||
voice[i].envelope.clock(delta_t);
|
||||
voice[i].envelope.updateClock(delta_t);
|
||||
}
|
||||
|
||||
// Clock and synchronize oscillators.
|
||||
|
@ -1373,7 +1372,7 @@ void SID::clock(cycle_count delta_t) {
|
|||
|
||||
// Clock oscillators.
|
||||
for (i = 0; i < 3; i++) {
|
||||
voice[i].wave.clock(delta_t_min);
|
||||
voice[i].wave.updateClock(delta_t_min);
|
||||
}
|
||||
|
||||
// Synchronize oscillators.
|
||||
|
@ -1385,11 +1384,11 @@ void SID::clock(cycle_count delta_t) {
|
|||
}
|
||||
|
||||
// Clock filter.
|
||||
filter.clock(delta_t,
|
||||
filter.updateClock(delta_t,
|
||||
voice[0].output(), voice[1].output(), voice[2].output());
|
||||
|
||||
// Clock external filter.
|
||||
extfilt.clock(delta_t, filter.output());
|
||||
extfilt.updateClock(delta_t, filter.output());
|
||||
}
|
||||
|
||||
|
||||
|
@ -1397,7 +1396,7 @@ void SID::clock(cycle_count delta_t) {
|
|||
* SID clocking with audio sampling.
|
||||
* Fixpoint arithmetics is used.
|
||||
*/
|
||||
int SID::clock(cycle_count& delta_t, short* buf, int n, int interleave) {
|
||||
int SID::updateClock(cycle_count& delta_t, short* buf, int n, int interleave) {
|
||||
int s = 0;
|
||||
|
||||
for (;;) {
|
||||
|
@ -1409,13 +1408,13 @@ int SID::clock(cycle_count& delta_t, short* buf, int n, int interleave) {
|
|||
if (s >= n) {
|
||||
return s;
|
||||
}
|
||||
clock(delta_t_sample);
|
||||
updateClock(delta_t_sample);
|
||||
delta_t -= delta_t_sample;
|
||||
sample_offset = (next_sample_offset & FIXP_MASK) - (1 << (FIXP_SHIFT - 1));
|
||||
buf[s++*interleave] = output();
|
||||
}
|
||||
|
||||
clock(delta_t);
|
||||
updateClock(delta_t);
|
||||
sample_offset -= delta_t << FIXP_SHIFT;
|
||||
delta_t = 0;
|
||||
return s;
|
||||
|
|
|
@ -60,7 +60,7 @@ public:
|
|||
|
||||
void set_sync_source(WaveformGenerator*);
|
||||
|
||||
void clock(cycle_count delta_t);
|
||||
void updateClock(cycle_count delta_t);
|
||||
void synchronize();
|
||||
void reset();
|
||||
|
||||
|
@ -133,7 +133,7 @@ public:
|
|||
|
||||
void enable_filter(bool enable);
|
||||
|
||||
void clock(cycle_count delta_t,
|
||||
void updateClock(cycle_count delta_t,
|
||||
sound_sample voice1, sound_sample voice2, sound_sample voice3);
|
||||
void reset();
|
||||
|
||||
|
@ -201,7 +201,7 @@ public:
|
|||
|
||||
enum State { ATTACK, DECAY_SUSTAIN, RELEASE };
|
||||
|
||||
void clock(cycle_count delta_t);
|
||||
void updateClock(cycle_count delta_t);
|
||||
void reset();
|
||||
|
||||
void writeCONTROL_REG(reg8);
|
||||
|
@ -246,7 +246,7 @@ public:
|
|||
void enable_filter(bool enable);
|
||||
void set_sampling_parameter(double pass_freq);
|
||||
|
||||
void clock(cycle_count delta_t, sound_sample Vi);
|
||||
void updateClock(cycle_count delta_t, sound_sample Vi);
|
||||
void reset();
|
||||
|
||||
// Audio output (20 bits).
|
||||
|
@ -312,8 +312,8 @@ public:
|
|||
double sample_freq, double pass_freq = -1,
|
||||
double filter_scale = 0.97);
|
||||
|
||||
void clock(cycle_count delta_t);
|
||||
int clock(cycle_count& delta_t, short* buf, int n, int interleave = 1);
|
||||
void updateClock(cycle_count delta_t);
|
||||
int updateClock(cycle_count& delta_t, short* buf, int n, int interleave = 1);
|
||||
void reset();
|
||||
|
||||
// Read/write registers.
|
||||
|
|
|
@ -27,7 +27,11 @@
|
|||
#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"
|
||||
|
||||
////////////////////////////////////////
|
||||
//
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
#if defined(SDL_BACKEND)
|
||||
|
||||
#include "common/textconsole.h"
|
||||
#include "backends/audiocd/sdl/sdl-audiocd.h"
|
||||
|
||||
SdlAudioCDManager::SdlAudioCDManager()
|
||||
|
|
|
@ -31,10 +31,10 @@
|
|||
|
||||
namespace Common {
|
||||
#ifdef ENABLE_KEYMAPPER
|
||||
class Keymapper;
|
||||
class Keymapper;
|
||||
#endif
|
||||
#ifdef ENABLE_VKEYBD
|
||||
class VirtualKeyboard;
|
||||
class VirtualKeyboard;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "backends/platform/sdl/sdl.h"
|
||||
#include "backends/graphics/graphics.h"
|
||||
#include "common/config-manager.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
// FIXME move joystick defines out and replace with confile file options
|
||||
// we should really allow users to map any key to a joystick button
|
||||
|
@ -65,7 +66,7 @@ SdlEventSource::SdlEventSource()
|
|||
|
||||
// Enable joystick
|
||||
if (SDL_NumJoysticks() > 0) {
|
||||
printf("Using joystick: %s\n", SDL_JoystickName(0));
|
||||
debug("Using joystick: %s", SDL_JoystickName(0));
|
||||
_joystick = SDL_JoystickOpen(joystick_num);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,11 @@
|
|||
|
||||
#ifdef WEBOS
|
||||
|
||||
// Allow use of stuff in <time.h>
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_time_h
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "common/system.h"
|
||||
#include "sys/time.h"
|
||||
#include "time.h"
|
||||
|
||||
|
@ -35,9 +39,6 @@
|
|||
// Inidicates if gesture area is pressed down or not.
|
||||
static bool gestureDown = false;
|
||||
|
||||
// The timestamp when gesture area was pressed down.
|
||||
static int gestureDownTime = 0;
|
||||
|
||||
// The timestamp when screen was pressed down.
|
||||
static int screenDownTime = 0;
|
||||
|
||||
|
@ -91,6 +92,8 @@ void WebOSSdlEventSource::SDLModToOSystemKeyFlags(SDLMod mod,
|
|||
event.kbd.flags |= Common::KBD_SHIFT;
|
||||
if (mod & KMOD_CTRL)
|
||||
event.kbd.flags |= Common::KBD_CTRL;
|
||||
|
||||
// Holding down the gesture area emulates the ALT key
|
||||
if (gestureDown)
|
||||
event.kbd.flags |= Common::KBD_ALT;
|
||||
}
|
||||
|
@ -107,10 +110,17 @@ bool WebOSSdlEventSource::handleKeyDown(SDL_Event &ev, Common::Event &event) {
|
|||
// Handle gesture area tap.
|
||||
if (ev.key.keysym.sym == SDLK_WORLD_71) {
|
||||
gestureDown = true;
|
||||
gestureDownTime = getMillis();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Ensure that ALT key (Gesture down) is ignored when back or forward
|
||||
// gesture is detected. This is needed for WebOS 1 which releases the
|
||||
// gesture tap AFTER the backward gesture event and not BEFORE (Like
|
||||
// WebOS 2).
|
||||
if (ev.key.keysym.sym == 27 || ev.key.keysym.sym == 229) {
|
||||
gestureDown = false;
|
||||
}
|
||||
|
||||
// Call original SDL key handler.
|
||||
return SdlEventSource::handleKeyDown(ev, event);
|
||||
}
|
||||
|
|
|
@ -23,8 +23,9 @@
|
|||
*/
|
||||
|
||||
#if defined(__amigaos4__)
|
||||
|
||||
#include "backends/fs/amigaos4/amigaos4-fs-factory.h"
|
||||
#include "backends/fs/amigaos4/amigaos4-fs.cpp"
|
||||
#include "backends/fs/amigaos4/amigaos4-fs.h"
|
||||
|
||||
AbstractFSNode *AmigaOSFilesystemFactory::makeRootFileNode() const {
|
||||
return new AmigaOSFilesystemNode();
|
||||
|
|
|
@ -23,96 +23,15 @@
|
|||
*/
|
||||
|
||||
#if defined(__amigaos4__)
|
||||
#ifdef __USE_INLINE__
|
||||
#undef __USE_INLINE__
|
||||
#endif
|
||||
|
||||
#include <proto/exec.h>
|
||||
#include <proto/dos.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef USE_NEWLIB
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#include "backends/fs/amigaos4/amigaos4-fs.h"
|
||||
#include "backends/fs/stdiostream.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/util.h"
|
||||
#include "backends/fs/abstract-fs.h"
|
||||
#include "backends/fs/stdiostream.h"
|
||||
|
||||
#define ENTER() /* debug(6, "Enter") */
|
||||
#define LEAVE() /* debug(6, "Leave") */
|
||||
|
||||
/**
|
||||
* Implementation of the ScummVM file system API.
|
||||
*
|
||||
* Parts of this class are documented in the base interface class, AbstractFSNode.
|
||||
*/
|
||||
class AmigaOSFilesystemNode : public AbstractFSNode {
|
||||
protected:
|
||||
BPTR _pFileLock;
|
||||
Common::String _sDisplayName;
|
||||
Common::String _sPath;
|
||||
bool _bIsDirectory;
|
||||
bool _bIsValid;
|
||||
uint32 _nProt;
|
||||
|
||||
/**
|
||||
* Creates a list with all the volumes present in the root node.
|
||||
*/
|
||||
virtual AbstractFSList listVolumes() const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Creates an AmigaOSFilesystemNode with the root node as path.
|
||||
*/
|
||||
AmigaOSFilesystemNode();
|
||||
|
||||
/**
|
||||
* Creates an AmigaOSFilesystemNode for a given path.
|
||||
*
|
||||
* @param path Common::String with the path the new node should point to.
|
||||
*/
|
||||
AmigaOSFilesystemNode(const Common::String &p);
|
||||
|
||||
/**
|
||||
* Creates an AmigaOSFilesystemNode given its lock and display name
|
||||
*
|
||||
* @param pLock BPTR to the lock.
|
||||
* @param pDisplayName name to be used for display, in case not supplied the FilePart() of the filename will be used.
|
||||
*
|
||||
* @note This shouldn't even be public as it's only internally, at best it should have been protected if not private
|
||||
*/
|
||||
AmigaOSFilesystemNode(BPTR pLock, const char *pDisplayName = 0);
|
||||
|
||||
/**
|
||||
* Copy constructor.
|
||||
*
|
||||
* @note Needed because it duplicates the file lock
|
||||
*/
|
||||
AmigaOSFilesystemNode(const AmigaOSFilesystemNode &node);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~AmigaOSFilesystemNode();
|
||||
|
||||
virtual bool exists() const;
|
||||
virtual Common::String getDisplayName() const { return _sDisplayName; };
|
||||
virtual Common::String getName() const { return _sDisplayName; };
|
||||
virtual Common::String getPath() const { return _sPath; };
|
||||
virtual bool isDirectory() const { return _bIsDirectory; };
|
||||
virtual bool isReadable() const;
|
||||
virtual bool isWritable() const;
|
||||
|
||||
virtual AbstractFSNode *getChild(const Common::String &n) const;
|
||||
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
|
||||
virtual AbstractFSNode *getParent() const;
|
||||
|
||||
virtual Common::SeekableReadStream *createReadStream();
|
||||
virtual Common::WriteStream *createWriteStream();
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the last component of a given path.
|
||||
*
|
||||
|
@ -497,11 +416,11 @@ AbstractFSList AmigaOSFilesystemNode::listVolumes() const {
|
|||
}
|
||||
|
||||
Common::SeekableReadStream *AmigaOSFilesystemNode::createReadStream() {
|
||||
return StdioStream::makeFromPath(getPath().c_str(), false);
|
||||
return StdioStream::makeFromPath(getPath(), false);
|
||||
}
|
||||
|
||||
Common::WriteStream *AmigaOSFilesystemNode::createWriteStream() {
|
||||
return StdioStream::makeFromPath(getPath().c_str(), true);
|
||||
return StdioStream::makeFromPath(getPath(), true);
|
||||
}
|
||||
|
||||
#endif //defined(__amigaos4__)
|
||||
|
|
113
backends/fs/amigaos4/amigaos4-fs.h
Normal file
113
backends/fs/amigaos4/amigaos4-fs.h
Normal file
|
@ -0,0 +1,113 @@
|
|||
/* 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 AMIGAOS_FILESYSTEM_H
|
||||
#define AMIGAOS_FILESYSTEM_H
|
||||
|
||||
#ifdef __USE_INLINE__
|
||||
#undef __USE_INLINE__
|
||||
#endif
|
||||
|
||||
#include <proto/exec.h>
|
||||
#include <proto/dos.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef USE_NEWLIB
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#include "backends/fs/abstract-fs.h"
|
||||
|
||||
/**
|
||||
* Implementation of the ScummVM file system API.
|
||||
*
|
||||
* Parts of this class are documented in the base interface class, AbstractFSNode.
|
||||
*/
|
||||
class AmigaOSFilesystemNode : public AbstractFSNode {
|
||||
protected:
|
||||
BPTR _pFileLock;
|
||||
Common::String _sDisplayName;
|
||||
Common::String _sPath;
|
||||
bool _bIsDirectory;
|
||||
bool _bIsValid;
|
||||
uint32 _nProt;
|
||||
|
||||
/**
|
||||
* Creates a list with all the volumes present in the root node.
|
||||
*/
|
||||
virtual AbstractFSList listVolumes() const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Creates an AmigaOSFilesystemNode with the root node as path.
|
||||
*/
|
||||
AmigaOSFilesystemNode();
|
||||
|
||||
/**
|
||||
* Creates an AmigaOSFilesystemNode for a given path.
|
||||
*
|
||||
* @param path Common::String with the path the new node should point to.
|
||||
*/
|
||||
AmigaOSFilesystemNode(const Common::String &p);
|
||||
|
||||
/**
|
||||
* Creates an AmigaOSFilesystemNode given its lock and display name
|
||||
*
|
||||
* @param pLock BPTR to the lock.
|
||||
* @param pDisplayName name to be used for display, in case not supplied the FilePart() of the filename will be used.
|
||||
*
|
||||
* @note This shouldn't even be public as it's only internally, at best it should have been protected if not private
|
||||
*/
|
||||
AmigaOSFilesystemNode(BPTR pLock, const char *pDisplayName = 0);
|
||||
|
||||
/**
|
||||
* Copy constructor.
|
||||
*
|
||||
* @note Needed because it duplicates the file lock
|
||||
*/
|
||||
AmigaOSFilesystemNode(const AmigaOSFilesystemNode &node);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~AmigaOSFilesystemNode();
|
||||
|
||||
virtual bool exists() const;
|
||||
virtual Common::String getDisplayName() const { return _sDisplayName; };
|
||||
virtual Common::String getName() const { return _sDisplayName; };
|
||||
virtual Common::String getPath() const { return _sPath; };
|
||||
virtual bool isDirectory() const { return _bIsDirectory; };
|
||||
virtual bool isReadable() const;
|
||||
virtual bool isWritable() const;
|
||||
|
||||
virtual AbstractFSNode *getChild(const Common::String &n) const;
|
||||
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
|
||||
virtual AbstractFSNode *getParent() const;
|
||||
|
||||
virtual Common::SeekableReadStream *createReadStream();
|
||||
virtual Common::WriteStream *createWriteStream();
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -25,9 +25,10 @@
|
|||
#ifdef __N64__
|
||||
|
||||
#include <n64utils.h>
|
||||
#include <romfs.h>
|
||||
|
||||
#include "backends/fs/n64/n64-fs-factory.h"
|
||||
#include "backends/fs/n64/n64-fs.cpp"
|
||||
#include "backends/fs/n64/n64-fs.h"
|
||||
|
||||
AbstractFSNode *N64FilesystemFactory::makeRootFileNode() const {
|
||||
return new N64FilesystemNode();
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#ifndef N64_FILESYSTEM_FACTORY_H
|
||||
#define N64_FILESYSTEM_FACTORY_H
|
||||
|
||||
#include <romfs.h>
|
||||
#include "backends/fs/fs-factory.h"
|
||||
|
||||
/**
|
||||
|
|
|
@ -22,65 +22,18 @@
|
|||
|
||||
#ifdef __N64__
|
||||
|
||||
#include "backends/fs/abstract-fs.h"
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h
|
||||
|
||||
#include "backends/fs/n64/n64-fs.h"
|
||||
#include "backends/fs/n64/romfsstream.h"
|
||||
|
||||
#include <romfs.h>
|
||||
#include <sys/param.h>
|
||||
#include <unistd.h>
|
||||
#include <n64utils.h>
|
||||
|
||||
#define ROOT_PATH "/"
|
||||
|
||||
/**
|
||||
* Implementation of the ScummVM file system API based on N64 Hkz romfs.
|
||||
*
|
||||
* Parts of this class are documented in the base interface class, AbstractFSNode.
|
||||
*/
|
||||
class N64FilesystemNode : public AbstractFSNode {
|
||||
protected:
|
||||
Common::String _displayName;
|
||||
Common::String _path;
|
||||
bool _isDirectory;
|
||||
bool _isValid;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Creates a N64FilesystemNode with the root node as path.
|
||||
*/
|
||||
N64FilesystemNode();
|
||||
|
||||
/**
|
||||
* Creates a N64FilesystemNode for a given path.
|
||||
*
|
||||
* @param path Common::String with the path the new node should point to.
|
||||
* @param verify true if the isValid and isDirectory flags should be verified during the construction.
|
||||
*/
|
||||
N64FilesystemNode(const Common::String &p, bool verify = true);
|
||||
|
||||
virtual bool exists() const;
|
||||
virtual Common::String getDisplayName() const {
|
||||
return _displayName;
|
||||
}
|
||||
virtual Common::String getName() const {
|
||||
return _displayName;
|
||||
}
|
||||
virtual Common::String getPath() const {
|
||||
return _path;
|
||||
}
|
||||
virtual bool isDirectory() const {
|
||||
return _isDirectory;
|
||||
}
|
||||
virtual bool isReadable() const;
|
||||
virtual bool isWritable() const;
|
||||
|
||||
virtual AbstractFSNode *getChild(const Common::String &n) const;
|
||||
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
|
||||
virtual AbstractFSNode *getParent() const;
|
||||
|
||||
virtual Common::SeekableReadStream *createReadStream();
|
||||
virtual Common::WriteStream *createWriteStream();
|
||||
};
|
||||
|
||||
N64FilesystemNode::N64FilesystemNode() {
|
||||
_isDirectory = true;
|
||||
_displayName = "Root";
|
||||
|
|
80
backends/fs/n64/n64-fs.h
Normal file
80
backends/fs/n64/n64-fs.h
Normal file
|
@ -0,0 +1,80 @@
|
|||
/* 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 N64_FILESYSTEM_H
|
||||
#define N64_FILESYSTEM_H
|
||||
|
||||
#include "backends/fs/abstract-fs.h"
|
||||
|
||||
/**
|
||||
* Implementation of the ScummVM file system API based on N64 Hkz romfs.
|
||||
*
|
||||
* Parts of this class are documented in the base interface class, AbstractFSNode.
|
||||
*/
|
||||
class N64FilesystemNode : public AbstractFSNode {
|
||||
protected:
|
||||
Common::String _displayName;
|
||||
Common::String _path;
|
||||
bool _isDirectory;
|
||||
bool _isValid;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Creates a N64FilesystemNode with the root node as path.
|
||||
*/
|
||||
N64FilesystemNode();
|
||||
|
||||
/**
|
||||
* Creates a N64FilesystemNode for a given path.
|
||||
*
|
||||
* @param path Common::String with the path the new node should point to.
|
||||
* @param verify true if the isValid and isDirectory flags should be verified during the construction.
|
||||
*/
|
||||
N64FilesystemNode(const Common::String &p, bool verify = true);
|
||||
|
||||
virtual bool exists() const;
|
||||
virtual Common::String getDisplayName() const {
|
||||
return _displayName;
|
||||
}
|
||||
virtual Common::String getName() const {
|
||||
return _displayName;
|
||||
}
|
||||
virtual Common::String getPath() const {
|
||||
return _path;
|
||||
}
|
||||
virtual bool isDirectory() const {
|
||||
return _isDirectory;
|
||||
}
|
||||
virtual bool isReadable() const;
|
||||
virtual bool isWritable() const;
|
||||
|
||||
virtual AbstractFSNode *getChild(const Common::String &n) const;
|
||||
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
|
||||
virtual AbstractFSNode *getParent() const;
|
||||
|
||||
virtual Common::SeekableReadStream *createReadStream();
|
||||
virtual Common::WriteStream *createWriteStream();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -23,8 +23,15 @@
|
|||
*/
|
||||
|
||||
#if defined(UNIX)
|
||||
|
||||
// Re-enable some forbidden symbols to avoid clashes with stat.h and unistd.h.
|
||||
// Also with clock() in sys/time.h in some Mac OS X SDKs.
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_time_h
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_mkdir
|
||||
|
||||
#include "backends/fs/posix/posix-fs-factory.h"
|
||||
#include "backends/fs/posix/posix-fs.cpp"
|
||||
#include "backends/fs/posix/posix-fs.h"
|
||||
|
||||
AbstractFSNode *POSIXFilesystemFactory::makeRootFileNode() const {
|
||||
return new POSIXFilesystemNode("/");
|
||||
|
|
|
@ -24,6 +24,12 @@
|
|||
|
||||
#if defined(UNIX)
|
||||
|
||||
// Re-enable some forbidden symbols to avoid clashes with stat.h and unistd.h.
|
||||
// Also with clock() in sys/time.h in some Mac OS X SDKs.
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_time_h
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_mkdir
|
||||
|
||||
#include "backends/fs/posix/posix-fs.h"
|
||||
#include "backends/fs/stdiostream.h"
|
||||
#include "common/algorithm.h"
|
||||
|
@ -238,11 +244,11 @@ AbstractFSNode *POSIXFilesystemNode::getParent() const {
|
|||
}
|
||||
|
||||
Common::SeekableReadStream *POSIXFilesystemNode::createReadStream() {
|
||||
return StdioStream::makeFromPath(getPath().c_str(), false);
|
||||
return StdioStream::makeFromPath(getPath(), false);
|
||||
}
|
||||
|
||||
Common::WriteStream *POSIXFilesystemNode::createWriteStream() {
|
||||
return StdioStream::makeFromPath(getPath().c_str(), true);
|
||||
return StdioStream::makeFromPath(getPath(), true);
|
||||
}
|
||||
|
||||
#endif //#if defined(UNIX)
|
||||
|
|
|
@ -83,4 +83,4 @@ private:
|
|||
virtual void setFlags();
|
||||
};
|
||||
|
||||
#endif /*POSIX_FILESYSTEM_H*/
|
||||
#endif
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#define FORBIDDEN_SYMBOL_ALLOW_ALL
|
||||
|
||||
#include "backends/fs/ps2/ps2-fs-factory.h"
|
||||
#include "backends/fs/ps2/ps2-fs.cpp"
|
||||
#include "backends/fs/ps2/ps2-fs.h"
|
||||
|
||||
DECLARE_SINGLETON(Ps2FilesystemFactory);
|
||||
|
||||
|
@ -43,4 +43,5 @@ AbstractFSNode *Ps2FilesystemFactory::makeCurrentDirectoryFileNode() const {
|
|||
AbstractFSNode *Ps2FilesystemFactory::makeFileNodePath(const Common::String &path) const {
|
||||
return new Ps2FilesystemNode(path, true);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -39,9 +39,6 @@ public:
|
|||
virtual AbstractFSNode *makeCurrentDirectoryFileNode() const;
|
||||
virtual AbstractFSNode *makeFileNodePath(const Common::String &path) const;
|
||||
|
||||
protected:
|
||||
Ps2FilesystemFactory() {};
|
||||
|
||||
private:
|
||||
friend class Common::Singleton<SingletonBaseType>;
|
||||
};
|
||||
|
|
|
@ -22,7 +22,14 @@
|
|||
* $Id$
|
||||
*/
|
||||
|
||||
#include "backends/fs/abstract-fs.h"
|
||||
#if defined(__PLAYSTATION2__)
|
||||
|
||||
// Disable symbol overrides so that we can use system headers.
|
||||
#define FORBIDDEN_SYMBOL_ALLOW_ALL
|
||||
|
||||
|
||||
#include "backends/fs/ps2/ps2-fs.h"
|
||||
|
||||
#include <kernel.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -40,81 +47,6 @@
|
|||
extern AsyncFio fio;
|
||||
extern OSystem_PS2 *g_systemPs2;
|
||||
|
||||
/**
|
||||
* Implementation of the ScummVM file system API based on the Ps2SDK.
|
||||
*
|
||||
* Parts of this class are documented in the base interface class, AbstractFSNode.
|
||||
*/
|
||||
class Ps2FilesystemNode : public AbstractFSNode {
|
||||
|
||||
friend class Ps2FilesystemFactory;
|
||||
|
||||
protected:
|
||||
Common::String _displayName;
|
||||
Common::String _path;
|
||||
bool _isDirectory;
|
||||
bool _isRoot;
|
||||
bool _isHere;
|
||||
bool _verified;
|
||||
|
||||
private:
|
||||
const char *getDeviceDescription() const;
|
||||
void doverify();
|
||||
|
||||
public:
|
||||
/**
|
||||
* Creates a PS2FilesystemNode with the root node as path.
|
||||
*/
|
||||
Ps2FilesystemNode();
|
||||
|
||||
/**
|
||||
* Creates a PS2FilesystemNode for a given path.
|
||||
*
|
||||
* @param path Common::String with the path the new node should point to.
|
||||
*/
|
||||
Ps2FilesystemNode(const Common::String &path);
|
||||
Ps2FilesystemNode(const Common::String &path, bool verify);
|
||||
|
||||
/**
|
||||
* Copy constructor.
|
||||
*/
|
||||
Ps2FilesystemNode(const Ps2FilesystemNode *node);
|
||||
|
||||
virtual Common::String getDisplayName() const { return _displayName; }
|
||||
virtual Common::String getName() const { return _displayName; }
|
||||
virtual Common::String getPath() const { return _path; }
|
||||
|
||||
virtual bool exists() const {
|
||||
// printf("%s : is %d\n", _path.c_str(), _isHere);
|
||||
return _isHere;
|
||||
}
|
||||
|
||||
virtual bool isDirectory() const {
|
||||
// printf("%s : dir %d\n", _path.c_str(), _isDirectory);
|
||||
return _isDirectory;
|
||||
}
|
||||
|
||||
virtual bool isReadable() const {
|
||||
return _isHere;
|
||||
}
|
||||
|
||||
virtual bool isWritable() const {
|
||||
if (strncmp(_path.c_str(), "cdfs", 4)==0)
|
||||
return false;
|
||||
return true; // exists(); // creating ?
|
||||
}
|
||||
|
||||
virtual AbstractFSNode *clone() const { return new Ps2FilesystemNode(this); }
|
||||
virtual AbstractFSNode *getChild(const Common::String &n) const;
|
||||
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
|
||||
virtual AbstractFSNode *getParent() const;
|
||||
|
||||
virtual Common::SeekableReadStream *createReadStream();
|
||||
virtual Common::WriteStream *createWriteStream();
|
||||
|
||||
int getDev() { return 0; };
|
||||
};
|
||||
|
||||
const char *_lastPathComponent(const Common::String &str) {
|
||||
if (str.empty())
|
||||
return "";
|
||||
|
@ -502,10 +434,12 @@ const char *Ps2FilesystemNode::getDeviceDescription() const {
|
|||
}
|
||||
|
||||
Common::SeekableReadStream *Ps2FilesystemNode::createReadStream() {
|
||||
Common::SeekableReadStream *ss = PS2FileStream::makeFromPath(getPath().c_str(), false);
|
||||
Common::SeekableReadStream *ss = PS2FileStream::makeFromPath(getPath(), false);
|
||||
return ss;
|
||||
}
|
||||
|
||||
Common::WriteStream *Ps2FilesystemNode::createWriteStream() {
|
||||
return PS2FileStream::makeFromPath(getPath().c_str(), true);
|
||||
return PS2FileStream::makeFromPath(getPath(), true);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
105
backends/fs/ps2/ps2-fs.h
Normal file
105
backends/fs/ps2/ps2-fs.h
Normal file
|
@ -0,0 +1,105 @@
|
|||
/* 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 PS2_FILESYSTEM_H
|
||||
#define PS2_FILESYSTEM_H
|
||||
|
||||
#include "backends/fs/abstract-fs.h"
|
||||
|
||||
/**
|
||||
* Implementation of the ScummVM file system API based on the Ps2SDK.
|
||||
*
|
||||
* Parts of this class are documented in the base interface class, AbstractFSNode.
|
||||
*/
|
||||
class Ps2FilesystemNode : public AbstractFSNode {
|
||||
|
||||
friend class Ps2FilesystemFactory;
|
||||
|
||||
protected:
|
||||
Common::String _displayName;
|
||||
Common::String _path;
|
||||
bool _isDirectory;
|
||||
bool _isRoot;
|
||||
bool _isHere;
|
||||
bool _verified;
|
||||
|
||||
private:
|
||||
const char *getDeviceDescription() const;
|
||||
void doverify();
|
||||
|
||||
public:
|
||||
/**
|
||||
* Creates a PS2FilesystemNode with the root node as path.
|
||||
*/
|
||||
Ps2FilesystemNode();
|
||||
|
||||
/**
|
||||
* Creates a PS2FilesystemNode for a given path.
|
||||
*
|
||||
* @param path Common::String with the path the new node should point to.
|
||||
*/
|
||||
Ps2FilesystemNode(const Common::String &path);
|
||||
Ps2FilesystemNode(const Common::String &path, bool verify);
|
||||
|
||||
/**
|
||||
* Copy constructor.
|
||||
*/
|
||||
Ps2FilesystemNode(const Ps2FilesystemNode *node);
|
||||
|
||||
virtual Common::String getDisplayName() const { return _displayName; }
|
||||
virtual Common::String getName() const { return _displayName; }
|
||||
virtual Common::String getPath() const { return _path; }
|
||||
|
||||
virtual bool exists() const {
|
||||
// printf("%s : is %d\n", _path.c_str(), _isHere);
|
||||
return _isHere;
|
||||
}
|
||||
|
||||
virtual bool isDirectory() const {
|
||||
// printf("%s : dir %d\n", _path.c_str(), _isDirectory);
|
||||
return _isDirectory;
|
||||
}
|
||||
|
||||
virtual bool isReadable() const {
|
||||
return _isHere;
|
||||
}
|
||||
|
||||
virtual bool isWritable() const {
|
||||
if (strncmp(_path.c_str(), "cdfs", 4)==0)
|
||||
return false;
|
||||
return true; // exists(); // creating ?
|
||||
}
|
||||
|
||||
virtual AbstractFSNode *clone() const { return new Ps2FilesystemNode(this); }
|
||||
virtual AbstractFSNode *getChild(const Common::String &n) const;
|
||||
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
|
||||
virtual AbstractFSNode *getParent() const;
|
||||
|
||||
virtual Common::SeekableReadStream *createReadStream();
|
||||
virtual Common::WriteStream *createWriteStream();
|
||||
|
||||
int getDev() { return 0; };
|
||||
};
|
||||
|
||||
#endif
|
|
@ -23,8 +23,28 @@
|
|||
*/
|
||||
|
||||
#if defined(__PSP__)
|
||||
|
||||
// Disable printf override in common/forbidden.h to avoid
|
||||
// clashes with pspdebug.h from the PSP SDK.
|
||||
// That header file uses
|
||||
// __attribute__((format(printf,1,2)));
|
||||
// which gets messed up by our override mechanism; this could
|
||||
// be avoided by either changing the PSP SDK to use the equally
|
||||
// legal and valid
|
||||
// __attribute__((format(__printf__,1,2)));
|
||||
// or by refining our printf override to use a varadic macro
|
||||
// (which then wouldn't be portable, though).
|
||||
// Anyway, for now we just disable the printf override globally
|
||||
// for the PSP port
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_printf
|
||||
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h
|
||||
|
||||
#include "backends/fs/psp/psp-fs-factory.h"
|
||||
#include "backends/fs/psp/psp-fs.cpp"
|
||||
#include "backends/fs/psp/psp-fs.h"
|
||||
#include "backends/platform/psp/powerman.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
DECLARE_SINGLETON(PSPFilesystemFactory);
|
||||
|
||||
|
@ -34,7 +54,7 @@ AbstractFSNode *PSPFilesystemFactory::makeRootFileNode() const {
|
|||
|
||||
AbstractFSNode *PSPFilesystemFactory::makeCurrentDirectoryFileNode() const {
|
||||
char buf[MAXPATHLEN];
|
||||
char * ret = 0;
|
||||
char *ret = 0;
|
||||
|
||||
PowerMan.beginCriticalSection();
|
||||
ret = getcwd(buf, MAXPATHLEN);
|
||||
|
@ -46,4 +66,5 @@ AbstractFSNode *PSPFilesystemFactory::makeCurrentDirectoryFileNode() const {
|
|||
AbstractFSNode *PSPFilesystemFactory::makeFileNodePath(const Common::String &path) const {
|
||||
return new PSPFilesystemNode(path, true);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
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