diff options
author | Willem Jan Palenstijn | 2013-04-18 23:35:23 +0200 |
---|---|---|
committer | Willem Jan Palenstijn | 2013-05-08 20:40:58 +0200 |
commit | 9c2341678ef4984bf92b3878295250faf980b066 (patch) | |
tree | 2fb4805e05e16b9924e80c9947e6bad723b28c4b /engines/agos | |
parent | 8172d679df5148a4a32f46074b20cb6caf91844f (diff) | |
parent | a5f4ff36ffc386d48f2da49387a9655ce9295a4d (diff) | |
download | scummvm-rg350-9c2341678ef4984bf92b3878295250faf980b066.tar.gz scummvm-rg350-9c2341678ef4984bf92b3878295250faf980b066.tar.bz2 scummvm-rg350-9c2341678ef4984bf92b3878295250faf980b066.zip |
Merge branch 'master'
Diffstat (limited to 'engines/agos')
-rw-r--r-- | engines/agos/agos.h | 7 | ||||
-rw-r--r-- | engines/agos/animation.cpp | 14 | ||||
-rw-r--r-- | engines/agos/charset-fontdata.cpp | 573 | ||||
-rw-r--r-- | engines/agos/charset.cpp | 275 | ||||
-rw-r--r-- | engines/agos/detection_tables.h | 102 | ||||
-rw-r--r-- | engines/agos/draw.cpp | 2 | ||||
-rw-r--r-- | engines/agos/installshield_cab.cpp | 13 | ||||
-rw-r--r-- | engines/agos/midi.cpp | 6 | ||||
-rw-r--r-- | engines/agos/res.cpp | 49 | ||||
-rw-r--r-- | engines/agos/res_snd.cpp | 8 | ||||
-rw-r--r-- | engines/agos/saveload.cpp | 13 | ||||
-rw-r--r-- | engines/agos/script_pn.cpp | 8 | ||||
-rw-r--r-- | engines/agos/sound.cpp | 328 | ||||
-rw-r--r-- | engines/agos/sound.h | 2 | ||||
-rw-r--r-- | engines/agos/string.cpp | 2 | ||||
-rw-r--r-- | engines/agos/string_pn.cpp | 2 | ||||
-rw-r--r-- | engines/agos/subroutine.cpp | 5 |
17 files changed, 840 insertions, 569 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h index cf75842cdd..d9f982a0fa 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -197,7 +197,12 @@ public: void registerArchive(const Common::String &filename, int priority); #endif - Common::SeekableReadStream *open(const Common::String &filename); + virtual bool hasFile(const Common::String &name) const; + virtual int listMatchingMembers(Common::ArchiveMemberList &list, const Common::String &pattern) const; + virtual int listMembers(Common::ArchiveMemberList &list) const; + + virtual const Common::ArchiveMemberPtr getMember(const Common::String &name) const; + virtual Common::SeekableReadStream *createReadStreamForMember(const Common::String &filename) const; private: bool _fallBack; diff --git a/engines/agos/animation.cpp b/engines/agos/animation.cpp index d9d6b71a2a..29d1b36e19 100644 --- a/engines/agos/animation.cpp +++ b/engines/agos/animation.cpp @@ -251,7 +251,7 @@ bool MoviePlayerDXA::load() { } Common::String videoName = Common::String::format("%s.dxa", baseName); - Common::SeekableReadStream *videoStream = _vm->_archives.open(videoName); + Common::SeekableReadStream *videoStream = _vm->_archives.createReadStreamForMember(videoName); if (!videoStream) error("Failed to load video file %s", videoName.c_str()); if (!loadStream(videoStream)) @@ -312,7 +312,7 @@ void MoviePlayerDXA::startSound() { _fileStream->seek(size, SEEK_CUR); - in.open((const char *)"audio.wav"); + in.open("audio.wav"); if (!in.isOpen()) { error("Can't read offset file 'audio.wav'"); } @@ -415,7 +415,7 @@ MoviePlayerSMK::MoviePlayerSMK(AGOSEngine_Feeble *vm, const char *name) bool MoviePlayerSMK::load() { Common::String videoName = Common::String::format("%s.smk", baseName); - Common::SeekableReadStream *videoStream = _vm->_archives.open(videoName); + Common::SeekableReadStream *videoStream = _vm->_archives.createReadStreamForMember(videoName); if (!videoStream) error("Failed to load video file %s", videoName.c_str()); if (!loadStream(videoStream)) @@ -525,25 +525,25 @@ MoviePlayer *makeMoviePlayer(AGOSEngine_Feeble *vm, const char *name) { memcpy(shortName, baseName, 6); sprintf(filename, "%s~1.dxa", shortName); - if (Common::File::exists(filename)) { + if (vm->_archives.hasFile(filename)) { memset(baseName, 0, sizeof(baseName)); memcpy(baseName, filename, 8); } sprintf(filename, "%s~1.smk", shortName); - if (Common::File::exists(filename)) { + if (vm->_archives.hasFile(filename)) { memset(baseName, 0, sizeof(baseName)); memcpy(baseName, filename, 8); } } sprintf(filename, "%s.dxa", baseName); - if (Common::File::exists(filename)) { + if (vm->_archives.hasFile(filename)) { return new MoviePlayerDXA(vm, baseName); } sprintf(filename, "%s.smk", baseName); - if (Common::File::exists(filename)) { + if (vm->_archives.hasFile(filename)) { return new MoviePlayerSMK(vm, baseName); } diff --git a/engines/agos/charset-fontdata.cpp b/engines/agos/charset-fontdata.cpp index e6b81f54ee..87f51cfad2 100644 --- a/engines/agos/charset-fontdata.cpp +++ b/engines/agos/charset-fontdata.cpp @@ -20,6 +20,7 @@ * */ +#include "common/endian.h" #include "common/system.h" #include "common/textconsole.h" @@ -680,6 +681,578 @@ static const byte feeble_windowFont[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +static const byte english_simon1AGAFontData[] = { + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x20,0x10,0x40,0x88,0x30,0x40,0x00,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x28,0x08,0x10,0x20,0x44,0x00,0x40,0x00,0xB8,0x30,0x00,0x00,0x48,0x08,0x00,0x00,0x74,0x30,0x00,0x40,0x88,0x20,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xB4,0x00,0x48,0x00,0xB4,0x10,0x00,0x00,0x68,0x00,0x20,0x00,0x58,0x00,0x08,0x40,0xB4,0x08,0x40,0x00,0xB4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x10,0x00,0x40,0xA8,0x18,0x20,0x00,0x44,0x10,0x00,0x00,0x28,0x18,0x20,0x00,0x44,0x10,0x00,0x40,0xAC,0x0C,0x20,0x00,0x52,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x0C,0x00,0x40,0xB2,0x04,0x50,0x00,0xAA,0x44,0x20,0x00,0x9A,0x44,0x00,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x00,0x5A,0x08,0x10,0x00,0x24,0x00,0x20,0x00,0x5C,0x00,0x04,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x00,0x5A,0x00,0x08,0x10,0x24,0x04,0x00,0x00,0x5A,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x14,0x08,0x00,0x10,0x24,0x08,0x00,0x20,0x54,0x08,0x40,0x00,0xB4,0x3C,0x40,0x00,0x82,0x08,0x00,0x00,0x74,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x00,0x40,0x00,0xBC,0x78,0x00,0x00,0x84,0x04,0x00,0x00,0x7A,0x04,0x00,0x00,0x4A,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x08,0x10,0x00,0x24,0x00,0x00,0x20,0x58,0x00,0x40,0x00,0xB8,0x38,0x40,0x00,0x84,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x00,0x04,0x00,0x4A,0x00,0x00,0x08,0x14,0x00,0x10,0x00,0x28,0x00,0x10,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xBA,0x18,0x20,0x00,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xBA,0x1C,0x20,0x00,0x42,0x04,0x00,0x00,0x3A,0x00,0x08,0x00,0x34,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x10,0xAA,0x0C,0x50,0x00,0xA2,0x1C,0x40,0x00,0xA2,0x40,0x00,0x00,0xBC,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x40,0xBA,0x0C,0x70,0x00,0x82,0x04,0x40,0x00,0xBA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x20,0x5A,0x04,0x20,0x00,0x5A,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5A,0x24,0x00,0x00,0x5A,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5A,0x00,0x00,0x40,0xA4,0x00,0x00,0x40,0xA0,0x00,0x40,0x00,0xA4,0x24,0x00,0x00,0x5A,0x18,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x10,0x20,0x40,0x88,0x08,0x20,0x00,0x54,0x04,0x20,0x00,0x5A,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x28,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5A,0x00,0x20,0x00,0x5C,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x5C,0x20,0x04,0x00,0x5A,0x0C,0x30,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5A,0x00,0x20,0x00,0x5C,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5A,0x00,0x40,0x00,0xAC,0x00,0x44,0x08,0xB2,0x44,0x00,0x00,0xAA,0x24,0x00,0x00,0x5A,0x1C,0x00,0x00,0x22,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xBA,0x4C,0x30,0x00,0x82,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x00,0x10,0x00,0x6C,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x6C,0x1C,0x20,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0C,0x00,0x04,0x08,0x12,0x00,0x04,0x00,0x0A,0x04,0x00,0x00,0x0A,0x04,0x00,0x00,0x4A,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x64,0x00,0x24,0x40,0x9A,0x00,0x24,0x00,0x5A,0x20,0x08,0x00,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x24,0x00,0x00,0x5A,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x00,0x30,0x40,0x88,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x54,0x24,0x00,0x00,0x5A,0x1C,0x20,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xAA,0x24,0x40,0x08,0x92,0x04,0x50,0x00,0xAA,0x14,0x40,0x00,0xAA,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x20,0x44,0x00,0x9A,0x14,0x40,0x00,0xAA,0x0C,0x40,0x00,0xB2,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x30,0x40,0x84,0x04,0x20,0x00,0x5A,0x04,0x20,0x00,0x5A,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x44,0x00,0x10,0xAA,0x30,0x08,0x00,0x44,0x04,0x00,0x00,0x3A,0x00,0x00,0x00,0x04,0x07, + 0x00,0x00,0x00,0x78,0x00,0x18,0x60,0x84,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5A,0x24,0x00,0x00,0x5A,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x00,0x40,0x00,0xBC,0x08,0x30,0x00,0x44,0x04,0x00,0x00,0x7A,0x04,0x00,0x40,0xBA,0x08,0x30,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x14,0x40,0x00,0xAA,0x10,0x00,0x00,0x6C,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xAA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xBA,0x3C,0x00,0x00,0x42,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xAA,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x04,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x54,0x00,0x00,0xAA,0x6C,0x00,0x00,0x92,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x04,0x40,0x00,0xAA,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3A,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xBA,0x3C,0x00,0x00,0x42,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x00,0x28,0x00,0x54,0x04,0x20,0x10,0x4A,0x04,0x20,0x00,0x5A,0x04,0x20,0x00,0x5A,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x00,0x40,0x00,0xA4,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0C,0x00,0x04,0x08,0x12,0x08,0x00,0x00,0x34,0x08,0x20,0x00,0x54,0x18,0x40,0x00,0xA4,0x08,0x40,0x00,0xB4,0x08,0x40,0x00,0xB4,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x40,0x00,0xBC,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x08,0x10,0x24,0x04,0x00,0x20,0x5A,0x00,0x20,0x00,0x54,0x10,0x20,0x40,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x30,0x40,0x00,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x04,0x10,0x20,0x4A,0x08,0x00,0x40,0xB4,0x08,0x40,0x00,0xB4,0x38,0x00,0x00,0x44,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x20,0x08,0x00,0x54,0x24,0x00,0x10,0x4A,0x24,0x00,0x00,0x5A,0x24,0x00,0x00,0x5A,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0A,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0A,0x00,0x04,0x00,0x0A,0x04,0x00,0x00,0x0A,0x04,0x00,0x00,0x4A,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x00,0x60,0x90,0x00,0x20,0x00,0x54,0x20,0x04,0x00,0x5A,0x20,0x00,0x08,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xB4,0x24,0x48,0x00,0x92,0x44,0x10,0x00,0xAA,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xAA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xAA,0x44,0x00,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xA4,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x38,0x00,0x00,0x44,0x20,0x00,0x00,0x58,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x14,0x20,0x4A,0x08,0x40,0x00,0xB4,0x48,0x00,0x00,0xB4,0x38,0x00,0x00,0x44,0x08,0x00,0x00,0x34,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1C,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xA4,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x20,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x04,0x18,0x20,0x42,0x00,0x40,0x00,0xBC,0x38,0x00,0x00,0x44,0x04,0x00,0x00,0x7A,0x38,0x00,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x00,0x58,0x08,0x30,0x40,0x84,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x54,0x04,0x20,0x00,0x5A,0x08,0x10,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xB4,0x00,0x48,0x00,0xB4,0x08,0x40,0x00,0xB4,0x48,0x00,0x00,0xB4,0x34,0x00,0x00,0x4A,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xAA,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xBA,0x14,0x40,0x00,0xAA,0x2C,0x40,0x00,0x92,0x48,0x00,0x00,0xB4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x28,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x40,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x10,0x00,0x68,0x00,0x20,0x40,0x90,0x00,0x00,0x00,0x60,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x08,0x40,0x00,0xB4,0x00,0x10,0x00,0x6C,0x04,0x20,0x00,0x5A,0x3C,0x00,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07 +}; + +static const byte german_simon1AGAFontData[] = { + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x20,0x10,0x40,0x88,0x30,0x40,0x00,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x50,0x00,0x00,0x50,0xa8,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x10,0x00,0x40,0xa8,0x18,0x20,0x00,0x44,0x10,0x00,0x00,0x28,0x18,0x20,0x00,0x44,0x10,0x00,0x40,0xac,0x0c,0x20,0x00,0x52,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x30,0x10,0x20,0x00,0x48,0x08,0x00,0x40,0xb4,0x08,0x40,0x00,0xb4,0x50,0x00,0x00,0xa8,0x48,0x00,0x00,0xb4,0x48,0x00,0x00,0xb4,0x50,0x00,0x00,0xa8,0x40,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x0c,0x70,0x00,0x82,0x04,0x40,0x00,0xba,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x0c,0x00,0x40,0xb2,0x04,0x50,0x00,0xaa,0x44,0x20,0x00,0x9a,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x00,0x5a,0x08,0x10,0x00,0x24,0x00,0x20,0x00,0x5c,0x00,0x04,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x00,0x5a,0x00,0x08,0x10,0x24,0x04,0x00,0x00,0x5a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x14,0x08,0x00,0x10,0x24,0x08,0x00,0x20,0x54,0x08,0x40,0x00,0xb4,0x3c,0x40,0x00,0x82,0x08,0x00,0x00,0x74,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x00,0x40,0x00,0xbc,0x78,0x00,0x00,0x84,0x04,0x00,0x00,0x7a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x08,0x10,0x00,0x24,0x00,0x00,0x20,0x58,0x00,0x40,0x00,0xb8,0x38,0x40,0x00,0x84,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x00,0x04,0x00,0x4a,0x00,0x00,0x08,0x14,0x00,0x10,0x00,0x28,0x00,0x10,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x18,0x20,0x00,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x1c,0x20,0x00,0x42,0x04,0x00,0x00,0x3a,0x00,0x08,0x00,0x34,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x00,0x00,0x6c,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xaa,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x50,0x00,0x00,0x50,0xa8,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x20,0x54,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xba,0x04,0x00,0x00,0x4a,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x20,0x50,0x00,0x10,0x40,0xa8,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xba,0x0c,0x70,0x00,0x82,0x04,0x40,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x20,0x5a,0x04,0x20,0x00,0x5a,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5a,0x00,0x00,0x40,0xa4,0x00,0x00,0x40,0xa0,0x00,0x40,0x00,0xa4,0x24,0x00,0x00,0x5a,0x18,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x10,0x20,0x40,0x88,0x08,0x20,0x00,0x54,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x28,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5a,0x00,0x20,0x00,0x5c,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x5c,0x20,0x04,0x00,0x5a,0x0c,0x30,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5a,0x00,0x20,0x00,0x5c,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5a,0x00,0x40,0x00,0xac,0x00,0x44,0x08,0xb2,0x44,0x00,0x00,0xaa,0x24,0x00,0x00,0x5a,0x1c,0x00,0x00,0x22,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xba,0x4c,0x30,0x00,0x82,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x00,0x10,0x00,0x6c,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x6c,0x1c,0x20,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0c,0x00,0x04,0x08,0x12,0x00,0x04,0x00,0x0a,0x04,0x00,0x00,0x0a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x64,0x00,0x24,0x40,0x9a,0x00,0x24,0x00,0x5a,0x20,0x08,0x00,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x00,0x30,0x40,0x88,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x54,0x24,0x00,0x00,0x5a,0x1c,0x20,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xaa,0x24,0x40,0x08,0x92,0x04,0x50,0x00,0xaa,0x14,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x20,0x44,0x00,0x9a,0x14,0x40,0x00,0xaa,0x0c,0x40,0x00,0xb2,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x30,0x40,0x84,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x44,0x00,0x10,0xaa,0x30,0x08,0x00,0x44,0x04,0x00,0x00,0x3a,0x00,0x00,0x00,0x04,0x07, + 0x00,0x00,0x00,0x78,0x00,0x18,0x60,0x84,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xbc,0x08,0x30,0x00,0x44,0x04,0x00,0x00,0x7a,0x04,0x00,0x40,0xba,0x08,0x30,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x14,0x40,0x00,0xaa,0x10,0x00,0x00,0x6c,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x04,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x54,0x00,0x00,0xaa,0x6c,0x00,0x00,0x92,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x10,0x00,0x00,0x68,0x00,0x20,0x00,0x58,0x00,0x08,0x40,0xb4,0x08,0x40,0x00,0xb4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xa0,0x00,0x40,0x00,0xb8,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x06, + 0x00,0x00,0x00,0x50,0x00,0x00,0x50,0xa8,0x00,0x00,0x00,0x50,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x20,0x50,0x00,0x10,0x00,0x28,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x00,0x28,0x00,0x54,0x04,0x20,0x10,0x4a,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xa4,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0c,0x00,0x04,0x08,0x12,0x08,0x00,0x00,0x34,0x08,0x20,0x00,0x54,0x18,0x40,0x00,0xa4,0x08,0x40,0x00,0xb4,0x08,0x40,0x00,0xb4,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x08,0x10,0x24,0x04,0x00,0x20,0x5a,0x00,0x20,0x00,0x54,0x10,0x20,0x40,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x30,0x40,0x00,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x04,0x10,0x20,0x4a,0x08,0x00,0x40,0xb4,0x08,0x40,0x00,0xb4,0x38,0x00,0x00,0x44,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x20,0x08,0x00,0x54,0x24,0x00,0x10,0x4a,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0a,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0a,0x00,0x04,0x00,0x0a,0x04,0x00,0x00,0x0a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x00,0x60,0x90,0x00,0x20,0x00,0x54,0x20,0x04,0x00,0x5a,0x20,0x00,0x08,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x24,0x48,0x00,0x92,0x44,0x10,0x00,0xaa,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xa4,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x38,0x00,0x00,0x44,0x20,0x00,0x00,0x58,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x14,0x20,0x4a,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x38,0x00,0x00,0x44,0x08,0x00,0x00,0x34,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1c,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xa4,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x20,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x04,0x18,0x20,0x42,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x04,0x00,0x00,0x7a,0x38,0x00,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x00,0x58,0x08,0x30,0x40,0x84,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x54,0x04,0x20,0x00,0x5a,0x08,0x10,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xba,0x14,0x40,0x00,0xaa,0x2c,0x40,0x00,0x92,0x48,0x00,0x00,0xb4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x28,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x40,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x10,0x00,0x68,0x00,0x20,0x40,0x90,0x00,0x00,0x00,0x60,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x08,0x40,0x00,0xb4,0x00,0x10,0x00,0x6c,0x04,0x20,0x00,0x5a,0x3c,0x00,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07 +}; + +static const byte french_simon1AGAFontData[] = { + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x20,0x10,0x40,0x88,0x30,0x40,0x00,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x10,0x28,0x00,0x08,0x20,0x54,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x20,0x54,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xa4,0x00,0x40,0x00,0xa0,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x10,0x00,0x40,0xa8,0x18,0x20,0x00,0x44,0x10,0x00,0x00,0x28,0x18,0x20,0x00,0x44,0x10,0x00,0x40,0xac,0x0c,0x20,0x00,0x52,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xa4,0x00,0x40,0x00,0xa0,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x10,0x28,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x0c,0x00,0x40,0xb2,0x04,0x50,0x00,0xaa,0x44,0x20,0x00,0x9a,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x00,0x5a,0x08,0x10,0x00,0x24,0x00,0x20,0x00,0x5c,0x00,0x04,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x00,0x5a,0x00,0x08,0x10,0x24,0x04,0x00,0x00,0x5a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x14,0x08,0x00,0x10,0x24,0x08,0x00,0x20,0x54,0x08,0x40,0x00,0xb4,0x3c,0x40,0x00,0x82,0x08,0x00,0x00,0x74,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x00,0x40,0x00,0xbc,0x78,0x00,0x00,0x84,0x04,0x00,0x00,0x7a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x08,0x10,0x00,0x24,0x00,0x00,0x20,0x58,0x00,0x40,0x00,0xb8,0x38,0x40,0x00,0x84,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x00,0x04,0x00,0x4a,0x00,0x00,0x08,0x14,0x00,0x10,0x00,0x28,0x00,0x10,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x18,0x20,0x00,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x1c,0x20,0x00,0x42,0x04,0x00,0x00,0x3a,0x00,0x08,0x00,0x34,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x10,0x28,0x00,0x08,0x00,0x14,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x20,0x50,0x00,0x10,0x40,0xa8,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x00,0x14,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x20,0x54,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xba,0x04,0x00,0x00,0x4a,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x20,0x50,0x00,0x10,0x40,0xa8,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xba,0x0c,0x70,0x00,0x82,0x04,0x40,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x20,0x5a,0x04,0x20,0x00,0x5a,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5a,0x00,0x00,0x40,0xa4,0x00,0x00,0x40,0xa0,0x00,0x40,0x00,0xa4,0x24,0x00,0x00,0x5a,0x18,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x10,0x20,0x40,0x88,0x08,0x20,0x00,0x54,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x28,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5a,0x00,0x20,0x00,0x5c,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x5c,0x20,0x04,0x00,0x5a,0x0c,0x30,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5a,0x00,0x20,0x00,0x5c,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5a,0x00,0x40,0x00,0xac,0x00,0x44,0x08,0xb2,0x44,0x00,0x00,0xaa,0x24,0x00,0x00,0x5a,0x1c,0x00,0x00,0x22,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xba,0x4c,0x30,0x00,0x82,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x00,0x10,0x00,0x6c,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x6c,0x1c,0x20,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0c,0x00,0x04,0x08,0x12,0x00,0x04,0x00,0x0a,0x04,0x00,0x00,0x0a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x64,0x00,0x24,0x40,0x9a,0x00,0x24,0x00,0x5a,0x20,0x08,0x00,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x00,0x30,0x40,0x88,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x54,0x24,0x00,0x00,0x5a,0x1c,0x20,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xaa,0x24,0x40,0x08,0x92,0x04,0x50,0x00,0xaa,0x14,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x20,0x44,0x00,0x9a,0x14,0x40,0x00,0xaa,0x0c,0x40,0x00,0xb2,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x30,0x40,0x84,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x44,0x00,0x10,0xaa,0x30,0x08,0x00,0x44,0x04,0x00,0x00,0x3a,0x00,0x00,0x00,0x04,0x07, + 0x00,0x00,0x00,0x78,0x00,0x18,0x60,0x84,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xbc,0x08,0x30,0x00,0x44,0x04,0x00,0x00,0x7a,0x04,0x00,0x40,0xba,0x08,0x30,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x14,0x40,0x00,0xaa,0x10,0x00,0x00,0x6c,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x04,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x54,0x00,0x00,0xaa,0x6c,0x00,0x00,0x92,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x10,0x00,0x00,0x68,0x00,0x20,0x00,0x58,0x00,0x08,0x40,0xb4,0x08,0x40,0x00,0xb4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xa0,0x00,0x40,0x00,0xb8,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x06, + 0x00,0x00,0x00,0x50,0x00,0x00,0x50,0xa8,0x00,0x00,0x00,0x50,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x20,0x50,0x00,0x10,0x00,0x28,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x00,0x28,0x00,0x54,0x04,0x20,0x10,0x4a,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xa4,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0c,0x00,0x04,0x08,0x12,0x08,0x00,0x00,0x34,0x08,0x20,0x00,0x54,0x18,0x40,0x00,0xa4,0x08,0x40,0x00,0xb4,0x08,0x40,0x00,0xb4,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x08,0x10,0x24,0x04,0x00,0x20,0x5a,0x00,0x20,0x00,0x54,0x10,0x20,0x40,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x30,0x40,0x00,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x04,0x10,0x20,0x4a,0x08,0x00,0x40,0xb4,0x08,0x40,0x00,0xb4,0x38,0x00,0x00,0x44,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x20,0x08,0x00,0x54,0x24,0x00,0x10,0x4a,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0a,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0a,0x00,0x04,0x00,0x0a,0x04,0x00,0x00,0x0a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x00,0x60,0x90,0x00,0x20,0x00,0x54,0x20,0x04,0x00,0x5a,0x20,0x00,0x08,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x24,0x48,0x00,0x92,0x44,0x10,0x00,0xaa,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xa4,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x38,0x00,0x00,0x44,0x20,0x00,0x00,0x58,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x14,0x20,0x4a,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x38,0x00,0x00,0x44,0x08,0x00,0x00,0x34,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1c,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xa4,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x20,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x04,0x18,0x20,0x42,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x04,0x00,0x00,0x7a,0x38,0x00,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x00,0x58,0x08,0x30,0x40,0x84,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x54,0x04,0x20,0x00,0x5a,0x08,0x10,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xba,0x14,0x40,0x00,0xaa,0x2c,0x40,0x00,0x92,0x48,0x00,0x00,0xb4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x28,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x40,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x10,0x00,0x68,0x00,0x20,0x40,0x90,0x00,0x00,0x00,0x60,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x08,0x40,0x00,0xb4,0x00,0x10,0x00,0x6c,0x04,0x20,0x00,0x5a,0x3c,0x00,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07 +}; + +static const byte italian_simon1AGAFontData[] = { + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x20,0x10,0x40,0x88,0x30,0x40,0x00,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x00,0x14,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x10,0x00,0x40,0xa8,0x18,0x20,0x00,0x44,0x10,0x00,0x00,0x28,0x18,0x20,0x00,0x44,0x10,0x00,0x40,0xac,0x0c,0x20,0x00,0x52,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1c,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x20,0x50,0x00,0x10,0x00,0x28,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x10,0x28,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x0c,0x00,0x40,0xb2,0x04,0x50,0x00,0xaa,0x44,0x20,0x00,0x9a,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x00,0x5a,0x08,0x10,0x00,0x24,0x00,0x20,0x00,0x5c,0x00,0x04,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x00,0x5a,0x00,0x08,0x10,0x24,0x04,0x00,0x00,0x5a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x14,0x08,0x00,0x10,0x24,0x08,0x00,0x20,0x54,0x08,0x40,0x00,0xb4,0x3c,0x40,0x00,0x82,0x08,0x00,0x00,0x74,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x00,0x40,0x00,0xbc,0x78,0x00,0x00,0x84,0x04,0x00,0x00,0x7a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x08,0x10,0x00,0x24,0x00,0x00,0x20,0x58,0x00,0x40,0x00,0xb8,0x38,0x40,0x00,0x84,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x00,0x04,0x00,0x4a,0x00,0x00,0x08,0x14,0x00,0x10,0x00,0x28,0x00,0x10,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x18,0x20,0x00,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xba,0x1c,0x20,0x00,0x42,0x04,0x00,0x00,0x3a,0x00,0x08,0x00,0x34,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, + 0x00,0x00,0x10,0x28,0x00,0x08,0x00,0x14,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x00,0x14,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x00,0x14,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x10,0x28,0x00,0x08,0x20,0x54,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xba,0x04,0x00,0x00,0x4a,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x20,0x50,0x00,0x10,0x40,0xa8,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xba,0x0c,0x70,0x00,0x82,0x04,0x40,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x20,0x5a,0x04,0x20,0x00,0x5a,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5a,0x00,0x00,0x40,0xa4,0x00,0x00,0x40,0xa0,0x00,0x40,0x00,0xa4,0x24,0x00,0x00,0x5a,0x18,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x10,0x20,0x40,0x88,0x08,0x20,0x00,0x54,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x28,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5a,0x00,0x20,0x00,0x5c,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x5c,0x20,0x04,0x00,0x5a,0x0c,0x30,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5a,0x00,0x20,0x00,0x5c,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5a,0x00,0x40,0x00,0xac,0x00,0x44,0x08,0xb2,0x44,0x00,0x00,0xaa,0x24,0x00,0x00,0x5a,0x1c,0x00,0x00,0x22,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xba,0x4c,0x30,0x00,0x82,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x00,0x10,0x00,0x6c,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x6c,0x1c,0x20,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0c,0x00,0x04,0x08,0x12,0x00,0x04,0x00,0x0a,0x04,0x00,0x00,0x0a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x64,0x00,0x24,0x40,0x9a,0x00,0x24,0x00,0x5a,0x20,0x08,0x00,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x70,0x00,0x30,0x40,0x88,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x54,0x24,0x00,0x00,0x5a,0x1c,0x20,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xaa,0x24,0x40,0x08,0x92,0x04,0x50,0x00,0xaa,0x14,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x20,0x44,0x00,0x9a,0x14,0x40,0x00,0xaa,0x0c,0x40,0x00,0xb2,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x78,0x08,0x30,0x40,0x84,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x44,0x00,0x10,0xaa,0x30,0x08,0x00,0x44,0x04,0x00,0x00,0x3a,0x00,0x00,0x00,0x04,0x07, + 0x00,0x00,0x00,0x78,0x00,0x18,0x60,0x84,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xbc,0x08,0x30,0x00,0x44,0x04,0x00,0x00,0x7a,0x04,0x00,0x40,0xba,0x08,0x30,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x18,0x60,0x82,0x14,0x40,0x00,0xaa,0x10,0x00,0x00,0x6c,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x04,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x54,0x00,0x00,0xaa,0x6c,0x00,0x00,0x92,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x44,0x04,0x00,0x40,0xaa,0x04,0x40,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xba,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x10,0x00,0x00,0x68,0x00,0x20,0x00,0x58,0x00,0x08,0x40,0xb4,0x08,0x40,0x00,0xb4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xa0,0x00,0x40,0x00,0xb8,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x06, + 0x00,0x00,0x00,0x50,0x00,0x00,0x50,0xa8,0x00,0x00,0x00,0x50,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x20,0x50,0x00,0x10,0x00,0x28,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3a,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xba,0x3c,0x00,0x00,0x42,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x00,0x28,0x00,0x54,0x04,0x20,0x10,0x4a,0x04,0x20,0x00,0x5a,0x04,0x20,0x00,0x5a,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x00,0x40,0x00,0xa4,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x0c,0x00,0x04,0x08,0x12,0x08,0x00,0x00,0x34,0x08,0x20,0x00,0x54,0x18,0x40,0x00,0xa4,0x08,0x40,0x00,0xb4,0x08,0x40,0x00,0xb4,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xba,0x3c,0x40,0x00,0x82,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x18,0x00,0x08,0x10,0x24,0x04,0x00,0x20,0x5a,0x00,0x20,0x00,0x54,0x10,0x20,0x40,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x30,0x40,0x00,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x04,0x10,0x20,0x4a,0x08,0x00,0x40,0xb4,0x08,0x40,0x00,0xb4,0x38,0x00,0x00,0x44,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x20,0x08,0x00,0x54,0x24,0x00,0x10,0x4a,0x24,0x00,0x00,0x5a,0x24,0x00,0x00,0x5a,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0a,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0a,0x00,0x04,0x00,0x0a,0x04,0x00,0x00,0x0a,0x04,0x00,0x00,0x4a,0x04,0x00,0x40,0xba,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, + 0x00,0x00,0x00,0x60,0x00,0x00,0x60,0x90,0x00,0x20,0x00,0x54,0x20,0x04,0x00,0x5a,0x20,0x00,0x08,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x04,0x20,0x40,0x9a,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x24,0x48,0x00,0x92,0x44,0x10,0x00,0xaa,0x44,0x00,0x00,0xba,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xaa,0x44,0x00,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xba,0x04,0x40,0x00,0xaa,0x44,0x00,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xa4,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x38,0x00,0x00,0x44,0x20,0x00,0x00,0x58,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x14,0x20,0x4a,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x38,0x00,0x00,0x44,0x08,0x00,0x00,0x34,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1c,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xa4,0x04,0x20,0x00,0x5a,0x24,0x00,0x00,0x5a,0x20,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x04,0x18,0x20,0x42,0x00,0x40,0x00,0xbc,0x38,0x00,0x00,0x44,0x04,0x00,0x00,0x7a,0x38,0x00,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x00,0x58,0x08,0x30,0x40,0x84,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x54,0x04,0x20,0x00,0x5a,0x08,0x10,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xb4,0x00,0x48,0x00,0xb4,0x08,0x40,0x00,0xb4,0x48,0x00,0x00,0xb4,0x34,0x00,0x00,0x4a,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xaa,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xba,0x14,0x40,0x00,0xaa,0x2c,0x40,0x00,0x92,0x48,0x00,0x00,0xb4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x28,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x40,0x00,0xaa,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xaa,0x00,0x44,0x00,0xaa,0x04,0x40,0x00,0xba,0x38,0x00,0x00,0x44,0x00,0x10,0x00,0x68,0x00,0x20,0x40,0x90,0x00,0x00,0x00,0x60,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x04,0x38,0x40,0x82,0x08,0x40,0x00,0xb4,0x00,0x10,0x00,0x6c,0x04,0x20,0x00,0x5a,0x3c,0x00,0x40,0x82,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x07 +}; + +void AGOSEngine::renderStringAmiga(uint vgaSpriteId, uint color, uint width, uint height, const char *txt) { + VgaPointersEntry *vpe = &_vgaBufferPointers[2]; + byte *p, *dst, *dst_org, chr; + uint count; + + if (vgaSpriteId >= 100) { + vgaSpriteId -= 100; + vpe++; + } + + dst = vpe->vgaFile2; + + count = 2000; + if (vgaSpriteId == 1) + count *= 2; + + p = dst + vgaSpriteId * 8; + WRITE_BE_UINT16(p + 4, height); + WRITE_BE_UINT16(p + 6, width); + dst += READ_BE_UINT32(p); + + width /= 8; // convert width from pixels to bytes + + const byte *imgSrc = NULL; + switch (_language) { + case Common::IT_ITA: + imgSrc = italian_simon1AGAFontData; + break; + case Common::FR_FRA: + imgSrc = french_simon1AGAFontData; + break; + case Common::DE_DEU: + imgSrc = german_simon1AGAFontData; + break; + case Common::EN_ANY: + imgSrc = english_simon1AGAFontData; + break; + default: + error("renderStringAmiga: Unknown language %d", _language); + } + + + uint charsize = width * height; + memset(dst, 0, count); + dst_org = dst; + int delta = 0; + while ((chr = *txt++) != 0) { + int img_width = 1; + if (chr == 10) { + dst += width * 10; + dst_org = dst; + delta = 0; + } else if ((signed char)(chr -= '!') < 0) { + img_width = 7; + } else { + const byte *img = imgSrc + chr * 41; + img_width = img[40]; + byte *cur_dst = dst_org; + for (int row = 0; row < 10; row++) { + int col = color; + for (int plane = 0; plane < 3; plane++) { + chr = img[plane] >> delta; + if (chr) { + if (col & 1) cur_dst[charsize * 0] |= chr; + if (col & 2) cur_dst[charsize * 1] |= chr; + if (col & 4) cur_dst[charsize * 2] |= chr; + if (col & 8) cur_dst[charsize * 3] |= chr; + } + chr = img[plane] << (8 - delta); + if (((8 - delta) < img_width) && (chr)) { + if (col & 1) cur_dst[charsize * 0 + 1] |= chr; + if (col & 2) cur_dst[charsize * 1 + 1] |= chr; + if (col & 4) cur_dst[charsize * 2 + 1] |= chr; + if (col & 8) cur_dst[charsize * 3 + 1] |= chr; + } + col++; + } + chr = img[3] >> delta; + if (chr) { + cur_dst[charsize * 0] |= chr; + cur_dst[charsize * 1] |= chr; + cur_dst[charsize * 2] |= chr; + cur_dst[charsize * 3] |= chr; + } + chr = img[3] << (8 - delta); + if (((8 - delta) < img_width) && (chr)) { + cur_dst[charsize * 0 + 1] |= chr; + cur_dst[charsize * 1 + 1] |= chr; + cur_dst[charsize * 2 + 1] |= chr; + cur_dst[charsize * 3 + 1] |= chr; + } + cur_dst += width; + img += 4; + } + } + delta += img_width - 1; + if (delta >= 8) { + delta -= 8; + dst_org++; + } + } +} + +void AGOSEngine::renderString(uint vgaSpriteId, uint color, uint width, uint height, const char *txt) { + VgaPointersEntry *vpe = &_vgaBufferPointers[2]; + byte *src, *dst, *p, *dst_org, chr; + const int textHeight = (getGameType() == GType_FF || getGameType() == GType_PP) ? 15: 10; + uint count = 0; + + if (vgaSpriteId >= 100) { + vgaSpriteId -= 100; + vpe++; + } + + src = dst = vpe->vgaFile2; + + if (getGameType() == GType_FF || getGameType() == GType_PP) { + if (vgaSpriteId == 1) + count = 45000; + } else { + count = 4000; + if (vgaSpriteId == 1) + count *= 2; + } + + p = dst + vgaSpriteId * 8; + + if (getGameType() == GType_FF || getGameType() == GType_PP) { + if (vgaSpriteId != 1) + WRITE_LE_UINT32(p, READ_LE_UINT32(p - 8) + READ_LE_UINT16(p - 4) * READ_LE_UINT16(p - 2)); + + WRITE_LE_UINT16(p + 4, height); + WRITE_LE_UINT16(p + 6, width); + } else { + WRITE_BE_UINT16(p + 4, height); + WRITE_BE_UINT16(p + 6, width); + } + dst += readUint32Wrapper(p); + + if (count != 0) + memset(dst, 0, count); + + if (_language == Common::HE_ISR) + dst += width - 1; // For Hebrew, start at the right edge, not the left. + + dst_org = dst; + while ((chr = *txt++) != 0) { + if (chr == 10) { + dst_org += width * textHeight; + dst = dst_org; + } else if ((chr -= ' ') == 0) { + dst += (_language == Common::HE_ISR ? -6 : 6); // Hebrew moves to the left, all others to the right + } else { + byte *img_hdr, *img; + uint i, img_width, img_height; + + if (getGameType() == GType_FF || getGameType() == GType_PP) { + img_hdr = src + 96 + chr * 8; + img_height = READ_LE_UINT16(img_hdr + 4); + img_width = READ_LE_UINT16(img_hdr + 6); + img = src + READ_LE_UINT32(img_hdr); + } else { + img_hdr = src + 48 + chr * 4; + img_height = img_hdr[2]; + img_width = img_hdr[3]; + img = src + READ_LE_UINT16(img_hdr); + } + + if (_language == Common::HE_ISR) + dst -= img_width - 1; // For Hebrew, move from right edge to left edge of image. + byte *cur_dst = dst; + + // Occurs in Amiga and Macintosh ports of The Feeble Files, when + // special characters are used by French/German/Spanish versions. + // Due to the English image data, been used by all languages. + if (img_width == 0 || img_height == 0) + continue; + + assert(img_width < 50 && img_height < 50); + + do { + for (i = 0; i != img_width; i++) { + chr = *img++; + if (chr) { + if (chr == 0xF) + chr = 207; + else + chr += color; + cur_dst[i] = chr; + } + } + cur_dst += width; + } while (--img_height); + + if (_language != Common::HE_ISR) // Hebrew character movement is done higher up + dst += img_width - 1; + } + } +} + void AGOSEngine_Feeble::windowDrawChar(WindowBlock *window, uint x, uint y, byte chr) { const byte *src; byte color, *dst; diff --git a/engines/agos/charset.cpp b/engines/agos/charset.cpp index 54aef99a47..f58f4397b5 100644 --- a/engines/agos/charset.cpp +++ b/engines/agos/charset.cpp @@ -20,7 +20,6 @@ * */ -#include "common/endian.h" #include "common/system.h" #include "agos/agos.h" @@ -99,280 +98,6 @@ void AGOSEngine::tidyIconArray(uint i) { } } -static const byte simon_agaFont[] = { - 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x20,0x10,0x40,0x88,0x30,0x40,0x00,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x05, - 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, - 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x28,0x08,0x10,0x20,0x44,0x00,0x40,0x00,0xB8,0x30,0x00,0x00,0x48,0x08,0x00,0x00,0x74,0x30,0x00,0x40,0x88,0x20,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x06, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xB4,0x00,0x48,0x00,0xB4,0x10,0x00,0x00,0x68,0x00,0x20,0x00,0x58,0x00,0x08,0x40,0xB4,0x08,0x40,0x00,0xB4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x06, - 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x10,0x00,0x40,0xA8,0x18,0x20,0x00,0x44,0x10,0x00,0x00,0x28,0x18,0x20,0x00,0x44,0x10,0x00,0x40,0xAC,0x0C,0x20,0x00,0x52,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, - 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x28,0x00,0x00,0x28,0x54,0x00,0x28,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x1C,0x20,0x40,0x82,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, - 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x0C,0x00,0x40,0xB2,0x04,0x50,0x00,0xAA,0x44,0x20,0x00,0x9A,0x44,0x00,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, - 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x00,0x5A,0x08,0x10,0x00,0x24,0x00,0x20,0x00,0x5C,0x00,0x04,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x00,0x5A,0x00,0x08,0x10,0x24,0x04,0x00,0x00,0x5A,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x14,0x08,0x00,0x10,0x24,0x08,0x00,0x20,0x54,0x08,0x40,0x00,0xB4,0x3C,0x40,0x00,0x82,0x08,0x00,0x00,0x74,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x00,0x40,0x00,0xBC,0x78,0x00,0x00,0x84,0x04,0x00,0x00,0x7A,0x04,0x00,0x00,0x4A,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x18,0x08,0x10,0x00,0x24,0x00,0x00,0x20,0x58,0x00,0x40,0x00,0xB8,0x38,0x40,0x00,0x84,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x00,0x04,0x00,0x4A,0x00,0x00,0x08,0x14,0x00,0x10,0x00,0x28,0x00,0x10,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xBA,0x18,0x20,0x00,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xBA,0x1C,0x20,0x00,0x42,0x04,0x00,0x00,0x3A,0x00,0x08,0x00,0x34,0x00,0x10,0x20,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x10,0x20,0x48,0x10,0x20,0x00,0x48,0x20,0x40,0x00,0x90,0x00,0x00,0x00,0x60,0x05, - 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x40,0x00,0xBA,0x04,0x00,0x00,0x4A,0x08,0x00,0x00,0x14,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x10,0xAA,0x0C,0x50,0x00,0xA2,0x1C,0x40,0x00,0xA2,0x40,0x00,0x00,0xBC,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x40,0xBA,0x0C,0x70,0x00,0x82,0x04,0x40,0x00,0xBA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x20,0x5A,0x04,0x20,0x00,0x5A,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5A,0x24,0x00,0x00,0x5A,0x18,0x20,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5A,0x00,0x00,0x40,0xA4,0x00,0x00,0x40,0xA0,0x00,0x40,0x00,0xA4,0x24,0x00,0x00,0x5A,0x18,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x70,0x10,0x20,0x40,0x88,0x08,0x20,0x00,0x54,0x04,0x20,0x00,0x5A,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x28,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5A,0x00,0x20,0x00,0x5C,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x5C,0x20,0x04,0x00,0x5A,0x0C,0x30,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x04,0x20,0x00,0x5A,0x00,0x20,0x00,0x5C,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x24,0x04,0x00,0x20,0x5A,0x00,0x40,0x00,0xAC,0x00,0x44,0x08,0xB2,0x44,0x00,0x00,0xAA,0x24,0x00,0x00,0x5A,0x1C,0x00,0x00,0x22,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xBA,0x4C,0x30,0x00,0x82,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x00,0x10,0x00,0x6C,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x6C,0x1C,0x20,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x0C,0x00,0x04,0x08,0x12,0x00,0x04,0x00,0x0A,0x04,0x00,0x00,0x0A,0x04,0x00,0x00,0x4A,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x64,0x00,0x24,0x40,0x9A,0x00,0x24,0x00,0x5A,0x20,0x08,0x00,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x24,0x00,0x00,0x5A,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x70,0x00,0x30,0x40,0x88,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x54,0x24,0x00,0x00,0x5A,0x1C,0x20,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xAA,0x24,0x40,0x08,0x92,0x04,0x50,0x00,0xAA,0x14,0x40,0x00,0xAA,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x20,0x44,0x00,0x9A,0x14,0x40,0x00,0xAA,0x0C,0x40,0x00,0xB2,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x78,0x08,0x30,0x40,0x84,0x04,0x20,0x00,0x5A,0x04,0x20,0x00,0x5A,0x28,0x10,0x00,0x44,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x44,0x00,0x10,0xAA,0x30,0x08,0x00,0x44,0x04,0x00,0x00,0x3A,0x00,0x00,0x00,0x04,0x07, - 0x00,0x00,0x00,0x78,0x00,0x18,0x60,0x84,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x28,0x10,0x00,0x44,0x24,0x00,0x00,0x5A,0x24,0x00,0x00,0x5A,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x38,0x00,0x18,0x20,0x44,0x04,0x00,0x40,0xBA,0x00,0x40,0x00,0xBC,0x08,0x30,0x00,0x44,0x04,0x00,0x00,0x7A,0x04,0x00,0x40,0xBA,0x08,0x30,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x18,0x60,0x82,0x14,0x40,0x00,0xAA,0x10,0x00,0x00,0x6C,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xAA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xBA,0x3C,0x00,0x00,0x42,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x00,0x04,0x40,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xAA,0x28,0x00,0x00,0x54,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x04,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x54,0x00,0x00,0xAA,0x6C,0x00,0x00,0x92,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x04,0x40,0x00,0xAA,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x44,0x04,0x00,0x40,0xAA,0x04,0x40,0x00,0xAA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x10,0x00,0x00,0x28,0x10,0x00,0x00,0x28,0x08,0x10,0x20,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x04,0x40,0x00,0xBA,0x08,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x20,0x00,0x54,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x28,0x10,0x44,0x04,0x00,0x00,0x3A,0x04,0x08,0x30,0x42,0x04,0x40,0x00,0xBA,0x3C,0x00,0x00,0x42,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x00,0x28,0x00,0x54,0x04,0x20,0x10,0x4A,0x04,0x20,0x00,0x5A,0x04,0x20,0x00,0x5A,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x00,0x40,0x00,0xA4,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x0C,0x00,0x04,0x08,0x12,0x08,0x00,0x00,0x34,0x08,0x20,0x00,0x54,0x18,0x40,0x00,0xA4,0x08,0x40,0x00,0xB4,0x08,0x40,0x00,0xB4,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x08,0x30,0x44,0x04,0x00,0x40,0xBA,0x3C,0x40,0x00,0x82,0x00,0x40,0x00,0xBC,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x18,0x00,0x08,0x10,0x24,0x04,0x00,0x20,0x5A,0x00,0x20,0x00,0x54,0x10,0x20,0x40,0x88,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x30,0x40,0x00,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x04,0x10,0x20,0x4A,0x08,0x00,0x40,0xB4,0x08,0x40,0x00,0xB4,0x38,0x00,0x00,0x44,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, - 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x58,0x20,0x08,0x00,0x54,0x24,0x00,0x10,0x4A,0x24,0x00,0x00,0x5A,0x24,0x00,0x00,0x5A,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x60,0x00,0x40,0x20,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, - 0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0A,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x0A,0x00,0x04,0x00,0x0A,0x04,0x00,0x00,0x0A,0x04,0x00,0x00,0x4A,0x04,0x00,0x40,0xBA,0x18,0x20,0x00,0x44,0x00,0x00,0x00,0x38,0x07, - 0x00,0x00,0x00,0x60,0x00,0x00,0x60,0x90,0x00,0x20,0x00,0x54,0x20,0x04,0x00,0x5A,0x20,0x00,0x08,0x54,0x20,0x10,0x00,0x48,0x28,0x00,0x00,0x54,0x04,0x20,0x40,0x9A,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x60,0x00,0x20,0x40,0x90,0x00,0x20,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x20,0x00,0x00,0x50,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x05, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xB4,0x24,0x48,0x00,0x92,0x44,0x10,0x00,0xAA,0x44,0x00,0x00,0xBA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x60,0x84,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xAA,0x44,0x00,0x00,0xAA,0x44,0x00,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x10,0x20,0x44,0x04,0x00,0x40,0xBA,0x04,0x40,0x00,0xAA,0x44,0x00,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xA4,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x38,0x00,0x00,0x44,0x20,0x00,0x00,0x58,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x14,0x20,0x4A,0x08,0x40,0x00,0xB4,0x48,0x00,0x00,0xB4,0x38,0x00,0x00,0x44,0x08,0x00,0x00,0x34,0x04,0x08,0x10,0x22,0x00,0x00,0x00,0x1C,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x08,0x50,0xA4,0x04,0x20,0x00,0x5A,0x24,0x00,0x00,0x5A,0x20,0x00,0x00,0x54,0x10,0x20,0x40,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x04,0x18,0x20,0x42,0x00,0x40,0x00,0xBC,0x38,0x00,0x00,0x44,0x04,0x00,0x00,0x7A,0x38,0x00,0x40,0x84,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x50,0x00,0x20,0x00,0x58,0x08,0x30,0x40,0x84,0x20,0x00,0x00,0x58,0x20,0x00,0x00,0x54,0x04,0x20,0x00,0x5A,0x08,0x10,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0xB4,0x00,0x48,0x00,0xB4,0x08,0x40,0x00,0xB4,0x48,0x00,0x00,0xB4,0x34,0x00,0x00,0x4A,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xAA,0x28,0x00,0x00,0x54,0x10,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xBA,0x14,0x40,0x00,0xAA,0x2C,0x40,0x00,0x92,0x48,0x00,0x00,0xB4,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x28,0x00,0x54,0x10,0x00,0x00,0x28,0x08,0x20,0x00,0x54,0x04,0x40,0x00,0xAA,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0xAA,0x00,0x44,0x00,0xAA,0x04,0x40,0x00,0xBA,0x38,0x00,0x00,0x44,0x00,0x10,0x00,0x68,0x00,0x20,0x40,0x90,0x00,0x00,0x00,0x60,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x04,0x38,0x40,0x82,0x08,0x40,0x00,0xB4,0x00,0x10,0x00,0x6C,0x04,0x20,0x00,0x5A,0x3C,0x00,0x40,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x07 -}; - -void AGOSEngine::renderStringAmiga(uint vgaSpriteId, uint color, uint width, uint height, const char *txt) { - VgaPointersEntry *vpe = &_vgaBufferPointers[2]; - byte *p, *dst, *dst_org, chr; - uint count; - - if (vgaSpriteId >= 100) { - vgaSpriteId -= 100; - vpe++; - } - - dst = vpe->vgaFile2; - - count = 2000; - if (vgaSpriteId == 1) - count *= 2; - - p = dst + vgaSpriteId * 8; - WRITE_BE_UINT16(p + 4, height); - WRITE_BE_UINT16(p + 6, width); - dst += READ_BE_UINT32(p); - - width /= 8; // convert width from pixels to bytes - - uint charsize = width * height; - memset(dst, 0, count); - dst_org = dst; - int delta = 0; - while ((chr = *txt++) != 0) { - int img_width = 1; - if (chr == 10) { - dst += width * 10; - dst_org = dst; - delta = 0; - } else if ((signed char)(chr -= '!') < 0) { - img_width = 7; - } else { - const byte *img = simon_agaFont + chr * 41; - img_width = img[40]; - byte *cur_dst = dst_org; - for (int row = 0; row < 10; row++) { - int col = color; - for (int plane = 0; plane < 3; plane++) { - chr = img[plane] >> delta; - if (chr) { - if (col & 1) cur_dst[charsize * 0] |= chr; - if (col & 2) cur_dst[charsize * 1] |= chr; - if (col & 4) cur_dst[charsize * 2] |= chr; - if (col & 8) cur_dst[charsize * 3] |= chr; - } - chr = img[plane] << (8 - delta); - if (((8 - delta) < img_width) && (chr)) { - if (col & 1) cur_dst[charsize * 0 + 1] |= chr; - if (col & 2) cur_dst[charsize * 1 + 1] |= chr; - if (col & 4) cur_dst[charsize * 2 + 1] |= chr; - if (col & 8) cur_dst[charsize * 3 + 1] |= chr; - } - col++; - } - chr = img[3] >> delta; - if (chr) { - cur_dst[charsize * 0] |= chr; - cur_dst[charsize * 1] |= chr; - cur_dst[charsize * 2] |= chr; - cur_dst[charsize * 3] |= chr; - } - chr = img[3] << (8 - delta); - if (((8 - delta) < img_width) && (chr)) { - cur_dst[charsize * 0 + 1] |= chr; - cur_dst[charsize * 1 + 1] |= chr; - cur_dst[charsize * 2 + 1] |= chr; - cur_dst[charsize * 3 + 1] |= chr; - } - cur_dst += width; - img += 4; - } - } - delta += img_width - 1; - if (delta >= 8) { - delta -= 8; - dst_org++; - } - } -} - -void AGOSEngine::renderString(uint vgaSpriteId, uint color, uint width, uint height, const char *txt) { - VgaPointersEntry *vpe = &_vgaBufferPointers[2]; - byte *src, *dst, *p, *dst_org, chr; - const int textHeight = (getGameType() == GType_FF || getGameType() == GType_PP) ? 15: 10; - uint count = 0; - - if (vgaSpriteId >= 100) { - vgaSpriteId -= 100; - vpe++; - } - - src = dst = vpe->vgaFile2; - - if (getGameType() == GType_FF || getGameType() == GType_PP) { - if (vgaSpriteId == 1) - count = 45000; - } else { - count = 4000; - if (vgaSpriteId == 1) - count *= 2; - } - - p = dst + vgaSpriteId * 8; - - if (getGameType() == GType_FF || getGameType() == GType_PP) { - if (vgaSpriteId != 1) - WRITE_LE_UINT32(p, READ_LE_UINT32(p - 8) + READ_LE_UINT16(p - 4) * READ_LE_UINT16(p - 2)); - - WRITE_LE_UINT16(p + 4, height); - WRITE_LE_UINT16(p + 6, width); - } else { - WRITE_BE_UINT16(p + 4, height); - WRITE_BE_UINT16(p + 6, width); - } - dst += readUint32Wrapper(p); - - if (count != 0) - memset(dst, 0, count); - - if (_language == Common::HE_ISR) - dst += width - 1; // For Hebrew, start at the right edge, not the left. - - dst_org = dst; - while ((chr = *txt++) != 0) { - if (chr == 10) { - dst_org += width * textHeight; - dst = dst_org; - } else if ((chr -= ' ') == 0) { - dst += (_language == Common::HE_ISR ? -6 : 6); // Hebrew moves to the left, all others to the right - } else { - byte *img_hdr, *img; - uint i, img_width, img_height; - - if (getGameType() == GType_FF || getGameType() == GType_PP) { - img_hdr = src + 96 + chr * 8; - img_height = READ_LE_UINT16(img_hdr + 4); - img_width = READ_LE_UINT16(img_hdr + 6); - img = src + READ_LE_UINT32(img_hdr); - } else { - img_hdr = src + 48 + chr * 4; - img_height = img_hdr[2]; - img_width = img_hdr[3]; - img = src + READ_LE_UINT16(img_hdr); - } - - if (_language == Common::HE_ISR) - dst -= img_width - 1; // For Hebrew, move from right edge to left edge of image. - byte *cur_dst = dst; - - // Occurs in Amiga and Macintosh ports of The Feeble Files, when - // special characters are used by French/German/Spanish versions. - // Due to the English image data, been used by all languages. - if (img_width == 0 || img_height == 0) - continue; - - assert(img_width < 50 && img_height < 50); - - do { - for (i = 0; i != img_width; i++) { - chr = *img++; - if (chr) { - if (chr == 0xF) - chr = 207; - else - chr += color; - cur_dst[i] = chr; - } - } - cur_dst += width; - } while (--img_height); - - if (_language != Common::HE_ISR) // Hebrew character movement is done higher up - dst += img_width - 1; - } - } -} - void AGOSEngine::showMessageFormat(const char *s, ...) { char buf[STRINGBUFLEN]; char *str; diff --git a/engines/agos/detection_tables.h b/engines/agos/detection_tables.h index 21b9d24c7c..7fe6df5f17 100644 --- a/engines/agos/detection_tables.h +++ b/engines/agos/detection_tables.h @@ -1591,7 +1591,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::RU_RUS, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON1, @@ -1616,7 +1616,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::FR_FRA, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON1, @@ -1666,7 +1666,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::HE_ISR, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON1, @@ -1691,7 +1691,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::IT_ITA, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON1, @@ -1717,7 +1717,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::IT_ITA, Common::kPlatformWindows, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON1, @@ -1742,7 +1742,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::ES_ESP, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON1, @@ -1942,7 +1942,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -1967,7 +1967,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformPC, ADGF_DEMO, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -1992,7 +1992,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformPC, ADGF_DEMO, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2017,7 +2017,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2042,7 +2042,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2067,7 +2067,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::FR_FRA, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2092,7 +2092,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2117,7 +2117,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2142,7 +2142,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::HE_ISR, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2168,7 +2168,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::IT_ITA, Common::kPlatformWindows, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2193,7 +2193,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::ES_ESP, Common::kPlatformPC, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2218,7 +2218,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::CZ_CZE, Common::kPlatformWindows, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2243,7 +2243,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2268,7 +2268,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::FR_FRA, Common::kPlatformWindows, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2293,7 +2293,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformWindows, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2318,7 +2318,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::PL_POL, Common::kPlatformWindows, ADGF_CD, - GUIO1(GUIO_NONE) + GUIO0() }, GType_SIMON2, @@ -2340,7 +2340,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2361,7 +2361,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformPC, ADGF_DEMO, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2385,7 +2385,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2409,7 +2409,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2433,7 +2433,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2457,7 +2457,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::FR_FRA, Common::kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2481,7 +2481,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2505,7 +2505,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::ES_ESP, Common::kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2526,7 +2526,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2549,7 +2549,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2572,7 +2572,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::PL_POL, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2593,7 +2593,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2616,7 +2616,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2639,7 +2639,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::FR_FRA, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2662,7 +2662,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2685,7 +2685,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::IT_ITA, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2708,7 +2708,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::PL_POL, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2731,7 +2731,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::ES_ESP, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_FF, @@ -2752,7 +2752,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_PP, @@ -2773,7 +2773,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOMUSIC) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, GType_PP, @@ -2794,7 +2794,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2815,7 +2815,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2836,7 +2836,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2857,7 +2857,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2878,7 +2878,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2899,7 +2899,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2920,7 +2920,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::DE_DEU, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2941,7 +2941,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::PL_POL, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, @@ -2962,7 +2962,7 @@ static const AGOSGameDescription gameDescriptions[] = { Common::ES_ESP, Common::kPlatformWindows, ADGF_NO_FLAGS, - GUIO1(GUIO_NOSUBTITLES) + GUIO2(GUIO_NOSUBTITLES, GUIO_NOASPECT) }, GType_PP, diff --git a/engines/agos/draw.cpp b/engines/agos/draw.cpp index 9fc5cedbf9..cf3a12ceb8 100644 --- a/engines/agos/draw.cpp +++ b/engines/agos/draw.cpp @@ -776,7 +776,7 @@ void AGOSEngine::setMoveRect(uint16 x, uint16 y, uint16 width, uint16 height) { void AGOSEngine::displayScreen() { if (_fastFadeInFlag == 0 && _paletteFlag == 1) { _paletteFlag = 0; - if (memcmp(_displayPalette, _currentPalette, sizeof(_currentPalette))) { + if (memcmp(_displayPalette, _currentPalette, sizeof(_currentPalette)) != 0) { memcpy(_currentPalette, _displayPalette, sizeof(_displayPalette)); _system->getPaletteManager()->setPalette(_displayPalette, 0, 256); } diff --git a/engines/agos/installshield_cab.cpp b/engines/agos/installshield_cab.cpp index f7b49a64c5..d4e636f7b3 100644 --- a/engines/agos/installshield_cab.cpp +++ b/engines/agos/installshield_cab.cpp @@ -60,9 +60,9 @@ public: ~InstallShieldCabinet(); // Common::Archive API implementation - bool hasFile(const Common::String &name); - int listMembers(Common::ArchiveMemberList &list); - Common::ArchiveMemberPtr getMember(const Common::String &name); + bool hasFile(const Common::String &name) const; + int listMembers(Common::ArchiveMemberList &list) const; + const Common::ArchiveMemberPtr getMember(const Common::String &name) const; Common::SeekableReadStream *createReadStreamForMember(const Common::String &name) const; private: @@ -161,19 +161,18 @@ InstallShieldCabinet::InstallShieldCabinet(const Common::String &filename) : _in delete[] fileTableOffsets; } -bool InstallShieldCabinet::hasFile(const Common::String &name) { - warning("hasFile: Filename %s", name.c_str()); +bool InstallShieldCabinet::hasFile(const Common::String &name) const { return _map.contains(name); } -int InstallShieldCabinet::listMembers(Common::ArchiveMemberList &list) { +int InstallShieldCabinet::listMembers(Common::ArchiveMemberList &list) const { for (FileMap::const_iterator it = _map.begin(); it != _map.end(); it++) list.push_back(getMember(it->_key)); return _map.size(); } -Common::ArchiveMemberPtr InstallShieldCabinet::getMember(const Common::String &name) { +const Common::ArchiveMemberPtr InstallShieldCabinet::getMember(const Common::String &name) const { return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this)); } diff --git a/engines/agos/midi.cpp b/engines/agos/midi.cpp index 431f080bf2..b3ade91107 100644 --- a/engines/agos/midi.cpp +++ b/engines/agos/midi.cpp @@ -478,7 +478,7 @@ void MidiPlayer::loadMultipleSMF(Common::File *in, bool sfx) { // Make sure there's a MThd in->read(buf, 4); - if (memcmp(buf, "MThd", 4)) { + if (memcmp(buf, "MThd", 4) != 0) { warning("Expected MThd but found '%c%c%c%c' instead", buf[0], buf[1], buf[2], buf[3]); return; } @@ -487,7 +487,7 @@ void MidiPlayer::loadMultipleSMF(Common::File *in, bool sfx) { // Now skip all the MTrk blocks while (true) { in->read(buf, 4); - if (memcmp(buf, "MTrk", 4)) + if (memcmp(buf, "MTrk", 4) != 0) break; in->seek(in->readUint32BE(), SEEK_CUR); } @@ -524,7 +524,7 @@ void MidiPlayer::loadXMIDI(Common::File *in, bool sfx) { memcpy(buf, &buf[2], 2); in->read(&buf[2], 2); } - if (memcmp(buf, "CAT ", 4)) { + if (memcmp(buf, "CAT ", 4) != 0) { error("Could not find 'CAT ' tag to determine resource size"); } size += 4 + in->readUint32BE(); diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp index 69447f4b83..0305879390 100644 --- a/engines/agos/res.cpp +++ b/engines/agos/res.cpp @@ -47,12 +47,37 @@ void ArchiveMan::registerArchive(const Common::String &filename, int priority) { } #endif -Common::SeekableReadStream *ArchiveMan::open(const Common::String &filename) { +bool ArchiveMan::hasFile(const Common::String &name) const { + if (_fallBack && SearchMan.hasFile(name)) + return true; + + return Common::SearchSet::hasFile(name); +} + +int ArchiveMan::listMatchingMembers(Common::ArchiveMemberList &list, const Common::String &pattern) const { + const int matches = _fallBack ? SearchMan.listMatchingMembers(list, pattern) : 0; + return matches + Common::SearchSet::listMatchingMembers(list, pattern); +} + +int ArchiveMan::listMembers(Common::ArchiveMemberList &list) const { + const int matches = _fallBack ? SearchMan.listMembers(list) : 0; + return matches + Common::SearchSet::listMembers(list); +} + +const Common::ArchiveMemberPtr ArchiveMan::getMember(const Common::String &name) const { + Common::ArchiveMemberPtr ptr = _fallBack ? SearchMan.getMember(name) : Common::ArchiveMemberPtr(); + if (ptr) + return ptr; + + return Common::SearchSet::getMember(name); +} + +Common::SeekableReadStream *ArchiveMan::createReadStreamForMember(const Common::String &filename) const { if (_fallBack && SearchMan.hasFile(filename)) { return SearchMan.createReadStreamForMember(filename); } - return createReadStreamForMember(filename); + return Common::SearchSet::createReadStreamForMember(filename); } #ifdef ENABLE_AGOS2 @@ -173,7 +198,7 @@ void AGOSEngine_PN::loadGamePcFile() { if (getFileName(GAME_BASEFILE) != NULL) { // Read dataBase - in = _archives.open(getFileName(GAME_BASEFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_BASEFILE)); if (!in) { error("loadGamePcFile: Can't load database file '%s'", getFileName(GAME_BASEFILE)); } @@ -191,7 +216,7 @@ void AGOSEngine_PN::loadGamePcFile() { if (getFileName(GAME_TEXTFILE) != NULL) { // Read textBase - in = _archives.open(getFileName(GAME_TEXTFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_TEXTFILE)); if (!in) { error("loadGamePcFile: Can't load textbase file '%s'", getFileName(GAME_TEXTFILE)); } @@ -214,7 +239,7 @@ void AGOSEngine::loadGamePcFile() { if (getFileName(GAME_BASEFILE) != NULL) { /* Read main gamexx file */ - in = _archives.open(getFileName(GAME_BASEFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_BASEFILE)); if (!in) { error("loadGamePcFile: Can't load gamexx file '%s'", getFileName(GAME_BASEFILE)); } @@ -240,7 +265,7 @@ void AGOSEngine::loadGamePcFile() { if (getFileName(GAME_TBLFILE) != NULL) { /* Read list of TABLE resources */ - in = _archives.open(getFileName(GAME_TBLFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_TBLFILE)); if (!in) { error("loadGamePcFile: Can't load table resources file '%s'", getFileName(GAME_TBLFILE)); } @@ -261,7 +286,7 @@ void AGOSEngine::loadGamePcFile() { if (getFileName(GAME_STRFILE) != NULL) { /* Read list of TEXT resources */ - in = _archives.open(getFileName(GAME_STRFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_STRFILE)); if (!in) error("loadGamePcFile: Can't load text resources file '%s'", getFileName(GAME_STRFILE)); @@ -275,7 +300,7 @@ void AGOSEngine::loadGamePcFile() { if (getFileName(GAME_STATFILE) != NULL) { /* Read list of ROOM STATE resources */ - in = _archives.open(getFileName(GAME_STATFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_STATFILE)); if (!in) { error("loadGamePcFile: Can't load state resources file '%s'", getFileName(GAME_STATFILE)); } @@ -298,7 +323,7 @@ void AGOSEngine::loadGamePcFile() { if (getFileName(GAME_RMSLFILE) != NULL) { /* Read list of ROOM ITEMS resources */ - in = _archives.open(getFileName(GAME_RMSLFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_RMSLFILE)); if (!in) { error("loadGamePcFile: Can't load room resources file '%s'", getFileName(GAME_RMSLFILE)); } @@ -314,7 +339,7 @@ void AGOSEngine::loadGamePcFile() { if (getFileName(GAME_XTBLFILE) != NULL) { /* Read list of XTABLE resources */ - in = _archives.open(getFileName(GAME_XTBLFILE)); + in = _archives.createReadStreamForMember(getFileName(GAME_XTBLFILE)); if (!in) { error("loadGamePcFile: Can't load xtable resources file '%s'", getFileName(GAME_XTBLFILE)); } @@ -815,7 +840,7 @@ void AGOSEngine::loadVGABeardFile(uint16 id) { sprintf(filename, "0%d.VGA", id); } - in = _archives.open(filename); + in = _archives.createReadStreamForMember(filename); if (!in) error("loadSimonVGAFile: Can't load %s", filename); @@ -893,7 +918,7 @@ void AGOSEngine::loadVGAVideoFile(uint16 id, uint8 type, bool useError) { } } - in = _archives.open(filename); + in = _archives.createReadStreamForMember(filename); if (!in) { if (useError) error("loadVGAVideoFile: Can't load %s", filename); diff --git a/engines/agos/res_snd.cpp b/engines/agos/res_snd.cpp index b5612d710d..2777d4f269 100644 --- a/engines/agos/res_snd.cpp +++ b/engines/agos/res_snd.cpp @@ -452,7 +452,7 @@ static const char *const dimpSoundList[32] = { void AGOSEngine::loadSoundFile(const char* filename) { Common::SeekableReadStream *in; - in = _archives.open(filename); + in = _archives.createReadStreamForMember(filename); if (!in) error("loadSound: Can't load %s", filename); @@ -475,7 +475,7 @@ void AGOSEngine::loadSound(uint16 sound, int16 pan, int16 vol, uint16 type) { assert(sound >= 1 && sound <= 32); sprintf(filename, "%s.wav", dimpSoundList[sound - 1]); - in = _archives.open(filename); + in = _archives.createReadStreamForMember(filename); if (!in) error("loadSound: Can't load %s", filename); @@ -495,7 +495,7 @@ void AGOSEngine::loadSound(uint16 sound, int16 pan, int16 vol, uint16 type) { } if (getPlatform() == Common::kPlatformAmiga) - sprintf(filename, "sfx%d.wav", file); + sprintf(filename, "sfx%u.wav", file); else sprintf(filename, "effects.wav"); @@ -606,7 +606,7 @@ void AGOSEngine::loadVoice(uint speechId) { } if (getPlatform() == Common::kPlatformAmiga) - sprintf(filename, "sp%d.wav", file); + sprintf(filename, "sp%u.wav", file); else sprintf(filename, "speech.wav"); diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp index 6779eabdbf..4fbde09ff8 100644 --- a/engines/agos/saveload.cpp +++ b/engines/agos/saveload.cpp @@ -1019,7 +1019,7 @@ bool AGOSEngine::loadGame(const char *filename, bool restartMode) { if (restartMode) { // Load restart state - f = _archives.open(filename); + f = _archives.createReadStreamForMember(filename); } else { f = _saveFileMan->openForLoading(filename); } @@ -1193,7 +1193,7 @@ bool AGOSEngine_Elvira2::loadGame(const char *filename, bool restartMode) { if (restartMode) { // Load restart state - f = _archives.open(filename); + f = _archives.createReadStreamForMember(filename); } else { f = _saveFileMan->openForLoading(filename); } @@ -1390,6 +1390,15 @@ bool AGOSEngine_Elvira2::loadGame(const char *filename, bool restartMode) { _videoLockOut &= ~0x100; + // The floppy disk versions of Simon the Sorcerer 2 block changing + // to scrolling rooms, if the copy protection fails. But the copy + // protection flags are never set in the CD version. + // Setting this copy protection flag, allows saved games to be shared + // between all versions of Simon the Sorcerer 2. + if (getGameType() == GType_SIMON2) { + setBitFlag(135, 1); + } + return true; } diff --git a/engines/agos/script_pn.cpp b/engines/agos/script_pn.cpp index 196350b9bf..60a1376f25 100644 --- a/engines/agos/script_pn.cpp +++ b/engines/agos/script_pn.cpp @@ -466,8 +466,8 @@ void AGOSEngine_PN::opn_opcode35() { void AGOSEngine_PN::opn_opcode36() { for (int i = 0; i < _dataBase[57] + 1; ++i) _wordcp[i] = 0; - if (isspace(static_cast<unsigned char>(*_inpp))) - while ((*_inpp) && (isspace(static_cast<unsigned char>(*_inpp)))) + if (Common::isSpace(*_inpp)) + while ((*_inpp) && (Common::isSpace(*_inpp))) _inpp++; if (*_inpp == 0) { setScriptReturn(false); @@ -481,7 +481,7 @@ void AGOSEngine_PN::opn_opcode36() { } int ct = 1; - while ((*_inpp != '.') && (*_inpp != ',') && (!isspace(static_cast<unsigned char>(*_inpp))) && (*_inpp != '\0') && + while ((*_inpp != '.') && (*_inpp != ',') && (!Common::isSpace(*_inpp)) && (*_inpp != '\0') && (*_inpp!='"')) { if (ct < _dataBase[57]) _wordcp[ct++] = *_inpp; @@ -581,7 +581,7 @@ void AGOSEngine_PN::opn_opcode46() { return; } x++; - while ((*x != '.') && (*x != ',') && (*x != '"') && (!isspace(static_cast<unsigned char>(*x))) && (*x != '\0')) + while ((*x != '.') && (*x != ',') && (*x != '"') && (!Common::isSpace(*x)) && (*x != '\0')) pcf(*x++); setScriptReturn(true); } diff --git a/engines/agos/sound.cpp b/engines/agos/sound.cpp index 11a1cd792e..85c449eafc 100644 --- a/engines/agos/sound.cpp +++ b/engines/agos/sound.cpp @@ -22,9 +22,9 @@ #include "common/file.h" #include "common/memstream.h" -#include "common/ptr.h" #include "common/textconsole.h" #include "common/util.h" +#include "common/substream.h" #include "agos/agos.h" #include "agos/sound.h" @@ -44,34 +44,39 @@ namespace AGOS { class BaseSound : Common::NonCopyable { protected: - Common::DisposablePtr<Common::File> _file; + const Common::String _filename; uint32 *_offsets; Audio::Mixer *_mixer; bool _freeOffsets; + Common::SeekableReadStream *getSoundStream(uint sound) const; public: - BaseSound(Audio::Mixer *mixer, Common::File *file, uint32 base, bool bigEndian, DisposeAfterUse::Flag disposeFileAfterUse = DisposeAfterUse::YES); - BaseSound(Audio::Mixer *mixer, Common::File *file, uint32 *offsets, DisposeAfterUse::Flag disposeFileAfterUse = DisposeAfterUse::YES); + BaseSound(Audio::Mixer *mixer, const Common::String &filename, uint32 base, bool bigEndian); + BaseSound(Audio::Mixer *mixer, const Common::String &filename, uint32 *offsets); virtual ~BaseSound(); void playSound(uint sound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0) { playSound(sound, sound, type, handle, loop, vol); } - virtual void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0) = 0; + virtual void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0); virtual Audio::AudioStream *makeAudioStream(uint sound) = 0; }; -BaseSound::BaseSound(Audio::Mixer *mixer, Common::File *file, uint32 base, bool bigEndian, DisposeAfterUse::Flag disposeFileAfterUse) - : _mixer(mixer), _file(file, disposeFileAfterUse) { +BaseSound::BaseSound(Audio::Mixer *mixer, const Common::String &filename, uint32 base, bool bigEndian) + : _mixer(mixer), _filename(filename), _offsets(NULL) { uint res = 0; uint32 size; - _file->seek(base + sizeof(uint32), SEEK_SET); + Common::File file; + if (!file.open(_filename)) + error("BaseSound: Could not open file \"%s\"", filename.c_str()); + + file.seek(base + sizeof(uint32), SEEK_SET); if (bigEndian) - size = _file->readUint32BE(); + size = file.readUint32BE(); else - size = _file->readUint32LE(); + size = file.readUint32LE(); // The Feeble Files uses set amount of voice offsets if (size == 0) @@ -82,24 +87,20 @@ BaseSound::BaseSound(Audio::Mixer *mixer, Common::File *file, uint32 base, bool _offsets = (uint32 *)malloc(size + sizeof(uint32)); _freeOffsets = true; - _file->seek(base, SEEK_SET); + file.seek(base, SEEK_SET); for (uint i = 0; i < res; i++) { if (bigEndian) - _offsets[i] = base + _file->readUint32BE(); + _offsets[i] = base + file.readUint32BE(); else - _offsets[i] = base + _file->readUint32LE(); + _offsets[i] = base + file.readUint32LE(); } - // only needed for mp3 - _offsets[res] = _file->size(); + _offsets[res] = file.size(); } -BaseSound::BaseSound(Audio::Mixer *mixer, Common::File *file, uint32 *offsets, DisposeAfterUse::Flag disposeFileAfterUse) - : _mixer(mixer), _file(file, disposeFileAfterUse) { - - _offsets = offsets; - _freeOffsets = false; +BaseSound::BaseSound(Audio::Mixer *mixer, const Common::String &filename, uint32 *offsets) + : _mixer(mixer), _filename(filename), _offsets(offsets), _freeOffsets(false) { } BaseSound::~BaseSound() { @@ -107,6 +108,23 @@ BaseSound::~BaseSound() { free(_offsets); } +Common::SeekableReadStream *BaseSound::getSoundStream(uint sound) const { + if (_offsets == NULL) + return NULL; + + Common::File *file = new Common::File(); + if (!file->open(_filename)) { + warning("BaseSound::getSoundStream: Could not open file \"%s\"", _filename.c_str()); + return NULL; + } + + int i = 1; + while (_offsets[sound + i] == _offsets[sound]) + i++; + + return new Common::SeekableSubReadStream(file, _offsets[sound], _offsets[sound + i], DisposeAfterUse::YES); +} + /////////////////////////////////////////////////////////////////////////////// #pragma mark - @@ -218,26 +236,25 @@ static void convertPan(int &pan) { /////////////////////////////////////////////////////////////////////////////// #pragma mark - +// TODO: Move to a better place? +void BaseSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol) { + convertVolume(vol); + _mixer->playStream(type, handle, new LoopingAudioStream(this, sound, loopSound, loop), -1, vol); +} + class WavSound : public BaseSound { public: - WavSound(Audio::Mixer *mixer, Common::File *file, uint32 base = 0, DisposeAfterUse::Flag disposeFileAfterUse = DisposeAfterUse::YES) - : BaseSound(mixer, file, base, false, disposeFileAfterUse) {} - WavSound(Audio::Mixer *mixer, Common::File *file, uint32 *offsets) : BaseSound(mixer, file, offsets) {} + WavSound(Audio::Mixer *mixer, const Common::String &filename, uint32 base = 0) + : BaseSound(mixer, filename, base, false) {} + WavSound(Audio::Mixer *mixer, const Common::String &filename, uint32 *offsets) : BaseSound(mixer, filename, offsets) {} Audio::AudioStream *makeAudioStream(uint sound); - void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0); }; Audio::AudioStream *WavSound::makeAudioStream(uint sound) { - if (_offsets == NULL) + Common::SeekableReadStream *tmp = getSoundStream(sound); + if (!tmp) return NULL; - - _file->seek(_offsets[sound], SEEK_SET); - return Audio::makeWAVStream(_file.get(), DisposeAfterUse::NO); -} - -void WavSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol) { - convertVolume(vol); - _mixer->playStream(type, handle, new LoopingAudioStream(this, sound, loopSound, loop), -1, vol); + return Audio::makeWAVStream(tmp, DisposeAfterUse::YES); } /////////////////////////////////////////////////////////////////////////////// @@ -246,21 +263,16 @@ void WavSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType typ class VocSound : public BaseSound { const byte _flags; public: - VocSound(Audio::Mixer *mixer, Common::File *file, bool isUnsigned, uint32 base = 0, bool bigEndian = false, DisposeAfterUse::Flag disposeFileAfterUse = DisposeAfterUse::YES) - : BaseSound(mixer, file, base, bigEndian, disposeFileAfterUse), _flags(isUnsigned ? Audio::FLAG_UNSIGNED : 0) {} + VocSound(Audio::Mixer *mixer, const Common::String &filename, bool isUnsigned, uint32 base = 0, bool bigEndian = false) + : BaseSound(mixer, filename, base, bigEndian), _flags(isUnsigned ? Audio::FLAG_UNSIGNED : 0) {} Audio::AudioStream *makeAudioStream(uint sound); - void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0); }; Audio::AudioStream *VocSound::makeAudioStream(uint sound) { - assert(_offsets); - _file->seek(_offsets[sound], SEEK_SET); - return Audio::makeVOCStream(_file.get(), _flags); -} - -void VocSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol) { - convertVolume(vol); - _mixer->playStream(type, handle, new LoopingAudioStream(this, sound, loopSound, loop), -1, vol); + Common::SeekableReadStream *tmp = getSoundStream(sound); + if (!tmp) + return NULL; + return Audio::makeVOCStream(tmp, _flags, DisposeAfterUse::YES); } /////////////////////////////////////////////////////////////////////////////// @@ -270,8 +282,8 @@ void VocSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType typ class RawSound : public BaseSound { const byte _flags; public: - RawSound(Audio::Mixer *mixer, Common::File *file, bool isUnsigned) - : BaseSound(mixer, file, 0, SOUND_BIG_ENDIAN), _flags(isUnsigned ? Audio::FLAG_UNSIGNED : 0) {} + RawSound(Audio::Mixer *mixer, const Common::String &filename, bool isUnsigned) + : BaseSound(mixer, filename, 0, SOUND_BIG_ENDIAN), _flags(isUnsigned ? Audio::FLAG_UNSIGNED : 0) {} Audio::AudioStream *makeAudioStream(uint sound); void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0); }; @@ -280,14 +292,15 @@ Audio::AudioStream *RawSound::makeAudioStream(uint sound) { if (_offsets == NULL) return NULL; - _file->seek(_offsets[sound], SEEK_SET); - - uint size = _file->readUint32BE(); - byte *buffer = (byte *)malloc(size); - assert(buffer); - _file->read(buffer, size); - - return Audio::makeRawStream(buffer, size, 22050, _flags); + Common::File *file = new Common::File(); + if (!file->open(_filename)) { + warning("RawSound::makeAudioStream: Could not open file \"%s\"", _filename.c_str()); + return NULL; + } + + file->seek(_offsets[sound], SEEK_SET); + uint size = file->readUint32BE(); + return Audio::makeRawStream(new Common::SeekableSubReadStream(file, _offsets[sound] + 4, _offsets[sound] + 4 + size, DisposeAfterUse::YES), 22050, _flags, DisposeAfterUse::YES); } void RawSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol) { @@ -298,40 +311,15 @@ void RawSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType typ /////////////////////////////////////////////////////////////////////////////// #pragma mark - -class CompressedSound : public BaseSound { -public: - CompressedSound(Audio::Mixer *mixer, Common::File *file, uint32 base) : BaseSound(mixer, file, base, false) {} - - Common::SeekableReadStream *loadStream(uint sound) const { - if (_offsets == NULL) - return NULL; - - _file->seek(_offsets[sound], SEEK_SET); - - int i = 1; - while (_offsets[sound + i] == _offsets[sound]) - i++; - - uint32 size = _offsets[sound + i] - _offsets[sound]; - - return _file->readStream(size); - } - - void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0) { - convertVolume(vol); - _mixer->playStream(type, handle, new LoopingAudioStream(this, sound, loopSound, loop), -1, vol); - } -}; - /////////////////////////////////////////////////////////////////////////////// #pragma mark - #ifdef USE_MAD -class MP3Sound : public CompressedSound { +class MP3Sound : public BaseSound { public: - MP3Sound(Audio::Mixer *mixer, Common::File *file, uint32 base = 0) : CompressedSound(mixer, file, base) {} + MP3Sound(Audio::Mixer *mixer, const Common::String &filename, uint32 base = 0) : BaseSound(mixer, filename, base, false) {} Audio::AudioStream *makeAudioStream(uint sound) { - Common::SeekableReadStream *tmp = loadStream(sound); + Common::SeekableReadStream *tmp = getSoundStream(sound); if (!tmp) return NULL; return Audio::makeMP3Stream(tmp, DisposeAfterUse::YES); @@ -343,11 +331,11 @@ public: #pragma mark - #ifdef USE_VORBIS -class VorbisSound : public CompressedSound { +class VorbisSound : public BaseSound { public: - VorbisSound(Audio::Mixer *mixer, Common::File *file, uint32 base = 0) : CompressedSound(mixer, file, base) {} + VorbisSound(Audio::Mixer *mixer, const Common::String &filename, uint32 base = 0) : BaseSound(mixer, filename, base, false) {} Audio::AudioStream *makeAudioStream(uint sound) { - Common::SeekableReadStream *tmp = loadStream(sound); + Common::SeekableReadStream *tmp = getSoundStream(sound); if (!tmp) return NULL; return Audio::makeVorbisStream(tmp, DisposeAfterUse::YES); @@ -359,11 +347,11 @@ public: #pragma mark - #ifdef USE_FLAC -class FLACSound : public CompressedSound { +class FLACSound : public BaseSound { public: - FLACSound(Audio::Mixer *mixer, Common::File *file, uint32 base = 0) : CompressedSound(mixer, file, base) {} + FLACSound(Audio::Mixer *mixer, const Common::String &filename, uint32 base = 0) : BaseSound(mixer, filename, base, false) {} Audio::AudioStream *makeAudioStream(uint sound) { - Common::SeekableReadStream *tmp = loadStream(sound); + Common::SeekableReadStream *tmp = getSoundStream(sound); if (!tmp) return NULL; return Audio::makeFLACStream(tmp, DisposeAfterUse::YES); @@ -374,25 +362,23 @@ public: /////////////////////////////////////////////////////////////////////////////// #pragma mark - -static CompressedSound *makeCompressedSound(Audio::Mixer *mixer, Common::File *file, const Common::String &basename) { +static BaseSound *makeSound(Audio::Mixer *mixer, const Common::String &basename) { #ifdef USE_FLAC - file->open(basename + ".fla"); - if (file->isOpen()) { - return new FLACSound(mixer, file); - } + if (Common::File::exists(basename + ".fla")) + return new FLACSound(mixer, basename + ".fla"); #endif #ifdef USE_VORBIS - file->open(basename + ".ogg"); - if (file->isOpen()) { - return new VorbisSound(mixer, file); - } + if (Common::File::exists(basename + ".ogg")) + return new VorbisSound(mixer, basename + ".ogg"); #endif #ifdef USE_MAD - file->open(basename + ".mp3"); - if (file->isOpen()) { - return new MP3Sound(mixer, file); - } + if (Common::File::exists(basename + ".mp3")) + return new MP3Sound(mixer, basename + ".mp3"); #endif + if (Common::File::exists(basename + ".wav")) + return new WavSound(mixer, basename + ".wav"); + if (Common::File::exists(basename + ".voc")) + return new VocSound(mixer, basename + ".voc", true); return 0; } @@ -441,90 +427,59 @@ Sound::~Sound() { void Sound::loadVoiceFile(const GameSpecificSettings *gss) { // Game versions which use separate voice files - if (_vm->getGameType() == GType_FF || _vm->getGameId() == GID_SIMON1CD32) + if (_hasVoiceFile || _vm->getGameType() == GType_FF || _vm->getGameId() == GID_SIMON1CD32) return; + _voice = makeSound(_mixer, gss->speech_filename); + _hasVoiceFile = (_voice != 0); - char filename[16]; - Common::File *file = new Common::File(); + if (_hasVoiceFile) + return; - if (!_hasVoiceFile) { - _voice = makeCompressedSound(_mixer, file, gss->speech_filename); - _hasVoiceFile = (_voice != 0); - } - if (!_hasVoiceFile && _vm->getGameType() == GType_SIMON2) { + if (_vm->getGameType() == GType_SIMON2) { // for simon2 mac/amiga, only read index file - file->open("voices.idx"); - if (file->isOpen() == true) { - int end = file->size(); + Common::File file; + if (file.open("voices.idx")) { + int end = file.size(); _filenums = (uint16 *)malloc((end / 6 + 1) * 2); _offsets = (uint32 *)malloc((end / 6 + 1) * 4); for (int i = 1; i <= end / 6; i++) { - _filenums[i] = file->readUint16BE(); - _offsets[i] = file->readUint32BE(); + _filenums[i] = file.readUint16BE(); + _offsets[i] = file.readUint32BE(); } + _hasVoiceFile = true; - } - } - if (!_hasVoiceFile) { - sprintf(filename, "%s.wav", gss->speech_filename); - file->open(filename); - if (file->isOpen()) { - _hasVoiceFile = true; - _voice = new WavSound(_mixer, file); + return; } } const bool dataIsUnsigned = true; - if (!_hasVoiceFile) { - sprintf(filename, "%s.voc", gss->speech_filename); - file->open(filename); - if (file->isOpen()) { - _hasVoiceFile = true; - _voice = new VocSound(_mixer, file, dataIsUnsigned); - } - } - if (!_hasVoiceFile) { - sprintf(filename, "%s", gss->speech_filename); - file->open(filename); - if (file->isOpen()) { - _hasVoiceFile = true; - if (_vm->getGameType() == GType_PP) - _voice = new WavSound(_mixer, file); - else - _voice = new VocSound(_mixer, file, dataIsUnsigned); - } + if (Common::File::exists(gss->speech_filename)) { + _hasVoiceFile = true; + if (_vm->getGameType() == GType_PP) + _voice = new WavSound(_mixer, gss->speech_filename); + else + _voice = new VocSound(_mixer, gss->speech_filename, dataIsUnsigned); } } void Sound::loadSfxFile(const GameSpecificSettings *gss) { - char filename[16]; - Common::File *file = new Common::File(); + if (_hasEffectsFile) + return; - if (!_hasEffectsFile) { - _effects = makeCompressedSound(_mixer, file, gss->effects_filename); - _hasEffectsFile = (_effects != 0); - } + _effects = makeSound(_mixer, gss->effects_filename); + _hasEffectsFile = (_effects != 0); + + if (_hasEffectsFile) + return; const bool dataIsUnsigned = true; - if (!_hasEffectsFile) { - sprintf(filename, "%s.voc", gss->effects_filename); - file->open(filename); - if (file->isOpen()) { - _hasEffectsFile = true; - _effects = new VocSound(_mixer, file, dataIsUnsigned); - } - } - if (!_hasEffectsFile) { - sprintf(filename, "%s", gss->effects_filename); - file->open(filename); - if (file->isOpen()) { - _hasEffectsFile = true; - _effects = new VocSound(_mixer, file, dataIsUnsigned); - } + if (Common::File::exists(gss->effects_filename)) { + _hasEffectsFile = true; + _effects = new VocSound(_mixer, gss->effects_filename, dataIsUnsigned); } } @@ -535,10 +490,7 @@ void Sound::readSfxFile(const Common::String &filename) { _mixer->stopHandle(_effectsHandle); - Common::File *file = new Common::File(); - file->open(filename); - - if (file->isOpen() == false) { + if (!Common::File::exists(filename)) { error("readSfxFile: Can't load sfx file %s", filename.c_str()); } @@ -546,37 +498,34 @@ void Sound::readSfxFile(const Common::String &filename) { delete _effects; if (_vm->getGameId() == GID_SIMON1CD32) { - _effects = new VocSound(_mixer, file, dataIsUnsigned, 0, SOUND_BIG_ENDIAN); + _effects = new VocSound(_mixer, filename, dataIsUnsigned, 0, SOUND_BIG_ENDIAN); } else - _effects = new WavSound(_mixer, file); + _effects = new WavSound(_mixer, filename); } // This method is only used by Simon2 -void Sound::loadSfxTable(Common::File *gameFile, uint32 base) { +void Sound::loadSfxTable(const char *gameFilename, uint32 base) { stopAll(); delete _effects; const bool dataIsUnsigned = true; if (_vm->getPlatform() == Common::kPlatformWindows) - _effects = new WavSound(_mixer, gameFile, base, DisposeAfterUse::NO); + _effects = new WavSound(_mixer, gameFilename, base); else - _effects = new VocSound(_mixer, gameFile, dataIsUnsigned, base, false, DisposeAfterUse::NO); + _effects = new VocSound(_mixer, gameFilename, dataIsUnsigned, base, false); } // This method is only used by Simon1 Amiga CD32 void Sound::readVoiceFile(const Common::String &filename) { _mixer->stopHandle(_voiceHandle); - Common::File *file = new Common::File(); - file->open(filename); - - if (file->isOpen() == false) + if (!Common::File::exists(filename)) error("readVoiceFile: Can't load voice file %s", filename.c_str()); const bool dataIsUnsigned = false; delete _voice; - _voice = new RawSound(_mixer, file, dataIsUnsigned); + _voice = new RawSound(_mixer, filename, dataIsUnsigned); } void Sound::playVoice(uint sound) { @@ -587,13 +536,11 @@ void Sound::playVoice(uint sound) { char filename[16]; _lastVoiceFile = _filenums[sound]; sprintf(filename, "voices%d.dat", _filenums[sound]); - Common::File *file = new Common::File(); - file->open(filename); - if (file->isOpen() == false) + if (!Common::File::exists(filename)) error("playVoice: Can't load voice file %s", filename); delete _voice; - _voice = new WavSound(_mixer, file, _offsets); + _voice = new WavSound(_mixer, filename, _offsets); } } @@ -606,8 +553,6 @@ void Sound::playVoice(uint sound) { _voice->playSound(sound, sound + 1, Audio::Mixer::kMusicSoundType, &_voiceHandle, true, -1500); else _voice->playSound(sound, sound, Audio::Mixer::kMusicSoundType, &_voiceHandle, true); - } else if (_vm->getGameType() == GType_FF || _vm->getGameId() == GID_SIMON1CD32) { - _voice->playSound(sound, Audio::Mixer::kSpeechSoundType, &_voiceHandle, false); } else { _voice->playSound(sound, Audio::Mixer::kSpeechSoundType, &_voiceHandle, false); } @@ -796,22 +741,13 @@ void Sound::switchVoiceFile(const GameSpecificSettings *gss, uint disc) { _lastVoiceFile = disc; char filename[16]; - Common::File *file = new Common::File(); - if (!_hasVoiceFile) { - sprintf(filename, "%s%d", gss->speech_filename, disc); - _voice = makeCompressedSound(_mixer, file, filename); - _hasVoiceFile = (_voice != 0); - } - if (!_hasVoiceFile) { - sprintf(filename, "%s%d.wav", gss->speech_filename, disc); - file->open(filename); - if (file->isOpen() == false) { - error("switchVoiceFile: Can't load voice file %s", filename); - } - _hasVoiceFile = true; - _voice = new WavSound(_mixer, file); - } + sprintf(filename, "%s%u", gss->speech_filename, disc); + _voice = makeSound(_mixer, filename); + _hasVoiceFile = (_voice != 0); + + if (!_hasVoiceFile) + error("switchVoiceFile: Can't load voice file %s", filename); } } // End of namespace AGOS diff --git a/engines/agos/sound.h b/engines/agos/sound.h index ab4a3a963d..8633fe2f70 100644 --- a/engines/agos/sound.h +++ b/engines/agos/sound.h @@ -85,7 +85,7 @@ protected: public: void readSfxFile(const Common::String &filename); - void loadSfxTable(Common::File *gameFile, uint32 base); + void loadSfxTable(const char *gameFilename, uint32 base); void readVoiceFile(const Common::String &filename); void playVoice(uint sound); diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp index 410fd5a1ce..ee1b9df246 100644 --- a/engines/agos/string.cpp +++ b/engines/agos/string.cpp @@ -152,7 +152,7 @@ const byte *AGOSEngine::getStringPtrByID(uint16 stringId, bool upperCase) { } if (upperCase && *dst) { - if (islower(*dst)) + if (Common::isLower(*dst)) *dst = toupper(*dst); } diff --git a/engines/agos/string_pn.cpp b/engines/agos/string_pn.cpp index ac8c263da3..4d4e2be16a 100644 --- a/engines/agos/string_pn.cpp +++ b/engines/agos/string_pn.cpp @@ -137,7 +137,7 @@ void AGOSEngine_PN::pcf(uint8 ch) { if ((ch != 32) || (_bp + _xofs != 50)) _buffer[_bp++] = ch; } - if ((ch != 254) && (!isspace(ch)) && (_bp < 60)) + if ((ch != 254) && (!Common::isSpace(ch)) && (_bp < 60)) return; /* We know have a case of needing to print the text */ if (_bp + _xofs > 50) { diff --git a/engines/agos/subroutine.cpp b/engines/agos/subroutine.cpp index 10c1c1aaf9..f5aad2dcc8 100644 --- a/engines/agos/subroutine.cpp +++ b/engines/agos/subroutine.cpp @@ -266,7 +266,7 @@ Common::SeekableReadStream *AGOSEngine::openTablesFile(const char *filename) { } Common::SeekableReadStream *AGOSEngine::openTablesFile_simon1(const char *filename) { - Common::SeekableReadStream *in = _archives.open(filename); + Common::SeekableReadStream *in = _archives.createReadStreamForMember(filename); if (!in) error("openTablesFile: Can't open '%s'", filename); return in; @@ -369,7 +369,7 @@ bool AGOSEngine_Waxworks::loadTablesIntoMem(uint16 subrId) { readSubroutineBlock(in); closeTablesFile(in); if (getGameType() == GType_SIMON2) { - _sound->loadSfxTable(_gameFile, _gameOffsetsPtr[atoi(filename.c_str() + 6) - 1 + _soundIndexBase]); + _sound->loadSfxTable(getFileName(GAME_GMEFILE), _gameOffsetsPtr[atoi(filename.c_str() + 6) - 1 + _soundIndexBase]); } else if (getGameType() == GType_SIMON1 && getPlatform() == Common::kPlatformWindows) { filename.setChar('S', 0); filename.setChar('F', 1); @@ -558,7 +558,6 @@ restart: while ((byte *)sl != (byte *)sub) { _currentLine = sl; if (checkIfToRunSubroutineLine(sl, sub)) { - result = 0; _codePtr = (byte *)sl; if (sub->id) _codePtr += 2; |