[Scummvm-git-logs] scummvm master -> aa563f0c818e20645bdedd3728b4b4da590a4145
sev-
sev at scummvm.org
Sat Aug 1 13:37:40 UTC 2020
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
432383a667 ALL: Remove Tizen port
23e213574b GRAPHICS: Fix warning
eaa86f9333 ALL: Remove WebOS port
583281eb51 ALL: Remove remnants of Bada port
aa563f0c81 ALL: Remove PS2 port
Commit: 432383a667d5c6a03d3d406968bd122b9224125b
https://github.com/scummvm/scummvm/commit/432383a667d5c6a03d3d406968bd122b9224125b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-01T14:42:45+02:00
Commit Message:
ALL: Remove Tizen port
Changed paths:
R backends/platform/tizen/README.TXT
R backends/platform/tizen/application.cpp
R backends/platform/tizen/application.h
R backends/platform/tizen/audio.cpp
R backends/platform/tizen/audio.h
R backends/platform/tizen/form.cpp
R backends/platform/tizen/form.h
R backends/platform/tizen/fs.cpp
R backends/platform/tizen/fs.h
R backends/platform/tizen/graphics.cpp
R backends/platform/tizen/graphics.h
R backends/platform/tizen/main.cpp
R backends/platform/tizen/missing.cpp
R backends/platform/tizen/portdefs.h
R backends/platform/tizen/sscanf.cpp
R backends/platform/tizen/system.cpp
R backends/platform/tizen/system.h
R backends/platform/tizen/tizen.mk
R backends/timer/tizen/timer.cpp
R backends/timer/tizen/timer.h
Makefile
README.md
backends/graphics/opengl/opengl-sys.h
backends/module.mk
configure
doc/cz/PrectiMe
doc/de/LIESMICH
po/POTFILES
diff --git a/Makefile b/Makefile
index 055581e9ff..65c4f14f10 100644
--- a/Makefile
+++ b/Makefile
@@ -32,11 +32,8 @@ ifeq "$(HAVE_GCC)" "1"
# being helpful.
#CXXFLAGS+= -Wmissing-format-attribute
-ifneq "$(BACKEND)" "tizen"
- # Disable exceptions. This setting causes tizen apps to crash
- # TODO: Does this still apply after enabling RTTI again?
+ # Disable exceptions.
CXXFLAGS+= -fno-exceptions
-endif
ifneq "$(HAVE_CLANG)" "1"
# enable checking of pointers returned by "new", but only when we do not
diff --git a/README.md b/README.md
index 351c3e0a56..b586d65a61 100644
--- a/README.md
+++ b/README.md
@@ -2760,8 +2760,8 @@ Lands of Lore: The Throne of Chaos adds the following non-standard keywords:
Maniac Mansion NES adds the following non-standard keyword:
- mm_nes_classic_palette bool If true, use a more natural palette that
- closely resembles the Nintendo NES Classic
+ mm_nes_classic_palette bool If true, use a more natural palette that
+ closely resembles the Nintendo NES Classic
instead of the default NTSC palette
Space Quest IV CD adds the following non-standard keyword:
@@ -2930,11 +2930,6 @@ debug messages (see
- Please refer to:
<https://wiki.scummvm.org/index.php/Compiling_ScummVM/Atari/FreeMiNT>
- - Bada/Tizen:
-
- - Please refer to:
- <https://wiki.scummvm.org/index.php/Compiling_ScummVM/Bada/Tizen>
-
- BeOS/ZETA/Haiku:
- Please refer to:
diff --git a/backends/graphics/opengl/opengl-sys.h b/backends/graphics/opengl/opengl-sys.h
index 9fecc17393..5e754bb328 100644
--- a/backends/graphics/opengl/opengl-sys.h
+++ b/backends/graphics/opengl/opengl-sys.h
@@ -58,18 +58,7 @@
#define USE_FORCED_GLES2 0
#endif
-// On Tizen we include the toolchain's OpenGL file. This is something we
-// actually want to avoid. However, since Tizen uses eglGetProcAddress which
-// is not required to return valid function pointers to non OpenGL extension
-// functions, we need the system's definitions to resolve all OpenGL
-// functions.
-// TODO: See if there is an alternative which allows us to avoid including
-// Tizen's OpenGL header here.
-#if defined(TIZEN)
- #include <FGraphicsOpengl.h>
- using namespace Tizen::Graphics::Opengl;
- #define USE_BUILTIN_OPENGL
-#elif defined(__ANDROID__)
+#ifdef __ANDROID__
#include <GLES/gl.h>
#define USE_BUILTIN_OPENGL
#else
diff --git a/backends/module.mk b/backends/module.mk
index f2e5d0f97b..8b1e9b7410 100644
--- a/backends/module.mk
+++ b/backends/module.mk
@@ -256,11 +256,6 @@ MODULE_OBJS += \
audiocd/linux/linux-audiocd.o
endif
-ifeq ($(BACKEND),tizen)
-MODULE_OBJS += \
- timer/tizen/timer.o
-endif
-
ifeq ($(BACKEND),3ds)
MODULE_OBJS += \
plugins/3ds/3ds-provider.o
diff --git a/backends/platform/tizen/README.TXT b/backends/platform/tizen/README.TXT
deleted file mode 100644
index 0af4c33895..0000000000
--- a/backends/platform/tizen/README.TXT
+++ /dev/null
@@ -1,108 +0,0 @@
-Build instructions (using linux)
-
-1. Install the Tizen SDK
-
-http://www.tizen.org
-
-To use an alternative Java SDK to run the Tizen IDE (eclipse), edit ~/.profile
-
-export JAVA_HOME=/opt/jdk1.6.0_45
-export PATH=${PATH}:${JAVA_HOME}/bin
-
-2. Add the following to your ~/.bashrc file
-
-export TIZEN_SDK=${HOME}/tizen-sdk
-export TIZEN_ROOTSTRAP=${TIZEN_SDK}/platforms/tizen2.1/rootstraps/tizen-device-2.1.native
-export TIZEN_BIN=${TIZEN_SDK}/tools/arm-linux-gnueabi-gcc-4.5/bin
-export TIZEN_LIBS=${HOME}/tizen-lib
-export PATH=${PATH}:${TIZEN_BIN}:~/bin
-export CHOST=arm-linux-gnueabi
-export LDFLAGS="--sysroot=${TIZEN_ROOTSTRAP} -L${TIZEN_LIBS}/lib"
-export CPPFLAGS="--sysroot=${TIZEN_ROOTSTRAP} -fmessage-length=0 -fPIC\
- -I${TIZEN_ROOTSTRAP}/usr/include -I${TIZEN_LIBS}/include"
-export CFLAGS=${CPPFLAGS}
-
-3. Build dependencies
-
- See: "Building the libraries" under:
- https://wiki.scummvm.org/index.php/Compiling_ScummVM/MinGW#Building_the_libraries
- for instructions on how to obtain these modules
-
- 3.1 zlib
-
- $ ./configure --static --prefix=${TIZEN_LIBS}
- $ make && make install
-
- 3.2 freetype, libtheora, libogg, libvorbis, libmad, FLAC
-
- $ ./configure --host=arm-linux-gnueabi --prefix=${TIZEN_LIBS} --disable-shared
- $ make && make install
-
- Note: you can ignore the ranlib errors when doing make install.
-
- Modify the resulting ~/tizen-lib/bin/freetype-config file to include -lz when printing libs
-
- 3.3 Linker ordering: scummvm, freetype, theoradec, vorbis, vorbisfile, mad, FLAC, ogg, z
-
-4. Build the ScummVM base library:
-
- ./configure --host=tizen --enable-release --with-freetype2-prefix=${TIZEN_LIBS}/bin
-
- For development:
-
- ./configure --host=tizen --enable-verbose-build --enable-debug
-
-5. Build the front end application using Tizen IDE
-
- Copy the scummvm/dists/bada folder into a clean directory
- outside of the scummvm package. Start the BADA IDE then
- choose this folder as the eclipse workspace. Click
- Project / Build.
-
-Links:
-
-A short turorial on implementing OpenGL ES 1.1 in BADA:
- http://forums.badadev.com/viewtopic.php?f=7&t=208
-
-HelvB14 font files:
- http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html
- http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz
-
- Then run the following command:
- $ ./ucs2any.pl 100dpi/helvB14.bdf MAPPINGS/8859-1.TXT iso8859-1 \
- MAPPINGS/8859-2.TXT iso8859-2 MAPPINGS/8859-3.TXT iso8859-3
-
-=====================================================================
-Archived build instruction for BADA/cygwin
-
-1. Install BADA SDK (requires free registration):
-
- http://developer.bada.com/apis/index.do
-
-2. Install Cygwin:
-
- http://www.cygwin.com/
-
- Add the following to your cygwin .bash_profile:
-
- alias mmake=/cygdrive/c/MinGW/bin/mingw32-make.exe
- export BADA_SDK=/cygdrive/c/bada/1.2.1
- export ARM_BIN=c:/bada/1.2.1/Tools/Toolchains/ARM/bin
- export CPPFLAGS="-fpic -fshort-wchar -mcpu=cortex-a8 -mfpu=vfpv3 \
- -mfloat-abi=hard -mlittle-endian -mthumb-interwork -Wno-psabi \
- -fno-strict-aliasing -fno-short-enums"
- export LDFLAGS="-nostdlib -lc-newlib -lm-newlib -LC:/bada/1.2.1/Model/Wave_LP1/Target"
- #export PATH=${BADA_SDK}/Tools/Toolchains/Win32/bin:${PATH}
- export PATH=${BADA_SDK}/Tools/Toolchains/ARM/bin:~/utils:${PATH}
- alias gcc=${ARM_BIN}/arm-samsung-nucleuseabi-gcc.exe
- alias ar=${ARM_BIN}/arm-samsung-nucleuseabi-ar.exe
-
- The following were added to ~/utils for zlib:
-
- ar:
- #!/bin/sh
- ${ARM_BIN}/arm-samsung-nucleuseabi-ar.exe $*
-
- gcc:
- #!/bin/sh
- ${ARM_BIN}/arm-samsung-nucleuseabi-gcc.exe $*
diff --git a/backends/platform/tizen/application.cpp b/backends/platform/tizen/application.cpp
deleted file mode 100644
index d7832ca1da..0000000000
--- a/backends/platform/tizen/application.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "engines/engine.h"
-
-#include "backends/platform/tizen/form.h"
-#include "backends/platform/tizen/system.h"
-#include "backends/platform/tizen/application.h"
-
-Application *TizenScummVM::createInstance() {
- logEntered();
- return new TizenScummVM();
-}
-
-TizenScummVM::TizenScummVM() : _appForm(NULL) {
- logEntered();
-}
-
-TizenScummVM::~TizenScummVM() {
- logEntered();
- if (g_system) {
- TizenSystem *system = (TizenSystem *)g_system;
- system->destroyBackend();
- delete system;
- g_system = NULL;
- }
-}
-
-bool TizenScummVM::OnAppInitialized(void) {
- logEntered();
- _appForm->SetOrientation(Tizen::Ui::ORIENTATION_LANDSCAPE);
- return true;
-}
-
-bool TizenScummVM::OnAppWillTerminate(void) {
- logEntered();
- return true;
-}
-
-bool TizenScummVM::OnAppInitializing(AppRegistry &appRegistry) {
- logEntered();
- _appForm = systemStart(this);
- return (_appForm != NULL);
-}
-
-bool TizenScummVM::OnAppTerminating(AppRegistry &appRegistry, bool forcedTermination) {
- logEntered();
- return true;
-}
-
-void TizenScummVM::OnUserEventReceivedN(RequestId requestId, IList *args) {
- logEntered();
- MessageBox messageBox;
- int modalResult;
- String *message;
-
- switch (requestId) {
- case USER_MESSAGE_EXIT:
- // normal program termination
- Terminate();
- break;
-
- case USER_MESSAGE_EXIT_ERR:
- // assertion failure termination
- if (args) {
- message = (String *)args->GetAt(0);
- }
- if (!message) {
- message = new String("Unknown error");
- }
- messageBox.Construct(L"Oops...", *message, MSGBOX_STYLE_OK);
- messageBox.ShowAndWait(modalResult);
- Terminate();
- break;
-
- case USER_MESSAGE_EXIT_ERR_CONFIG:
- // the config file was corrupted
- messageBox.Construct(L"Config file corrupted",
- L"Settings have been reverted, please restart.", MSGBOX_STYLE_OK);
- messageBox.ShowAndWait(modalResult);
- Terminate();
- break;
- }
-}
-
-void TizenScummVM::OnForeground(void) {
- logEntered();
- pauseGame(false);
-}
-
-void TizenScummVM::OnBackground(void) {
- logEntered();
- pauseGame(true);
-}
-
-void TizenScummVM::OnBatteryLevelChanged(BatteryLevel batteryLevel) {
- logEntered();
-}
-
-void TizenScummVM::OnLowMemory(void) {
- logEntered();
-}
-
-void TizenScummVM::OnScreenOn(void) {
- logEntered();
-}
-
-void TizenScummVM::OnScreenOff(void) {
- logEntered();
-}
-
-void TizenScummVM::OnScreenBrightnessChanged(int brightness) {
- logEntered();
-}
-
-void TizenScummVM::pauseGame(bool pause) {
- if (_appForm) {
- if (pause && g_engine && !g_engine->isPaused()) {
- _appForm->pushKey(Common::KEYCODE_SPACE);
- }
- if (g_system) {
- ((TizenSystem *)g_system)->setMute(pause);
- }
- }
-}
diff --git a/backends/platform/tizen/application.h b/backends/platform/tizen/application.h
deleted file mode 100644
index c46684eafb..0000000000
--- a/backends/platform/tizen/application.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIZEN_APPLICATION_H
-#define TIZEN_APPLICATION_H
-
-#include <FBase.h>
-#include <FApp.h>
-#include <FGraphics.h>
-#include <FUi.h>
-#include <FSystem.h>
-
-#include "backends/platform/tizen/system.h"
-#include "backends/platform/tizen/form.h"
-
-using namespace Tizen::App;
-using namespace Tizen::System;
-using namespace Tizen::Ui;
-using namespace Tizen::Ui::Controls;
-using namespace Tizen::Base::Collection;
-
-class TizenScummVM :
- public UiApp,
- public IScreenEventListener {
-
-public:
- TizenScummVM();
- virtual ~TizenScummVM();
-
- static UiApp *createInstance(void);
-
- virtual bool OnAppInitializing(AppRegistry &appRegistry);
- virtual bool OnAppInitialized(void);
- virtual bool OnAppWillTerminate(void);
- virtual bool OnAppTerminating(AppRegistry &appRegistry, bool forcedTermination = false);
- virtual void OnLowMemory(void);
- virtual void OnBatteryLevelChanged(BatteryLevel batteryLevel);
- virtual void OnUserEventReceivedN(RequestId requestId, IList *pArgs);
- virtual void OnForeground(void);
- virtual void OnBackground(void);
- virtual void OnScreenOn(void);
- virtual void OnScreenOff(void);
- virtual void OnScreenBrightnessChanged(int brightness);
-
-private:
- void pauseGame(bool pause);
- TizenAppForm *_appForm;
-};
-
-#endif
diff --git a/backends/platform/tizen/audio.cpp b/backends/platform/tizen/audio.cpp
deleted file mode 100644
index bedac2de61..0000000000
--- a/backends/platform/tizen/audio.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <FSysSettingInfo.h>
-#include <FAppAppRegistry.h>
-
-#include "backends/platform/tizen/audio.h"
-#include "backends/platform/tizen/system.h"
-
-#define TIMER_INTERVAL 10
-#define VOLUME 96
-#define MIN_TIMER_INTERVAL 5
-
-AudioThread::AudioThread() :
- _mixer(0),
- _timer(0),
- _audioOut(0),
- _head(0),
- _tail(0),
- _ready(0),
- _interval(TIMER_INTERVAL),
- _playing(-1),
- _size(0),
- _muted(true) {
-}
-
-Audio::MixerImpl *AudioThread::Construct() {
- logEntered();
-
- if (IsFailed(EventDrivenThread::Construct(DEFAULT_STACK_SIZE, THREAD_PRIORITY_HIGH))) {
- AppLog("Failed to create AudioThread");
- return NULL;
- }
-
- _mixer = new Audio::MixerImpl(44100);
- return _mixer;
-}
-
-AudioThread::~AudioThread() {
- logEntered();
-}
-
-bool AudioThread::isSilentMode() {
- bool silentMode;
- String key(L"SilentMode");
- Tizen::System::SettingInfo::GetValue(key, silentMode);
- return silentMode;
-}
-
-void AudioThread::setMute(bool on) {
- if (_audioOut && _timer) {
- _muted = on;
- if (on) {
- _timer->Cancel();
- } else {
- _timer->Start(_interval);
- }
- }
-}
-
-bool AudioThread::OnStart(void) {
- logEntered();
-
- _audioOut = new Tizen::Media::AudioOut();
- if (!_audioOut || IsFailed(_audioOut->Construct(*this))) {
- AppLog("Failed to create AudioOut");
- return false;
- }
-
- int sampleRate = _mixer->getOutputRate();
-
- // ideally we would update _mixer with GetOptimizedSampleRate here
- if (_audioOut->GetOptimizedSampleRate() != sampleRate) {
- AppLog("Non optimal sample rate %d", _audioOut->GetOptimizedSampleRate());
- }
-
- if (IsFailed(_audioOut->Prepare(AUDIO_TYPE_PCM_S16_LE,
- AUDIO_CHANNEL_TYPE_STEREO, sampleRate))) {
- AppLog("Failed to prepare AudioOut %d", sampleRate);
- return false;
- }
-
- int bufferSize = _audioOut->GetMinBufferSize();
- for (int i = 0; i < NUM_AUDIO_BUFFERS; i++) {
- if (IsFailed(_audioBuffer[i].Construct(bufferSize))) {
- AppLog("Failed to create audio buffer");
- return false;
- }
- }
-
- _size = _audioBuffer[0].GetCapacity();
- _timer = new Timer();
- if (!_timer || IsFailed(_timer->Construct(*this))) {
- AppLog("Failed to create audio timer");
- return false;
- }
-
- if (IsFailed(_timer->Start(_interval))) {
- AppLog("failed to start audio timer");
- return false;
- }
-
- _muted = false;
- _mixer->setReady(true);
- _audioOut->SetVolume(isSilentMode() ? 0 : VOLUME);
- _audioOut->Start();
- return true;
-}
-
-void AudioThread::OnStop(void) {
- logEntered();
-
- _mixer->setReady(false);
-
- if (_timer) {
- if (!_muted) {
- _timer->Cancel();
- }
- delete _timer;
- }
-
- if (_audioOut) {
- _audioOut->Reset();
- _audioOut->Unprepare();
- delete _audioOut;
- }
-}
-
-void AudioThread::OnAudioOutErrorOccurred(Tizen::Media::AudioOut &src, result r) {
- logEntered();
-}
-
-void AudioThread::OnAudioOutInterrupted(Tizen::Media::AudioOut &src) {
- logEntered();
-}
-
-void AudioThread::OnAudioOutReleased(Tizen::Media::AudioOut &src) {
- logEntered();
- _audioOut->Start();
-}
-
-void AudioThread::OnAudioOutBufferEndReached(Tizen::Media::AudioOut &src) {
- if (_ready > 0) {
- _playing = _tail;
- _audioOut->WriteBuffer(_audioBuffer[_tail]);
- _tail = (_tail + 1) % NUM_AUDIO_BUFFERS;
- _ready--;
- } else {
- // audio buffer empty: decrease timer interval
- _playing = -1;
- _interval -= 1;
- if (_interval < MIN_TIMER_INTERVAL) {
- _interval = MIN_TIMER_INTERVAL;
- }
- }
-
-}
-
-void AudioThread::OnTimerExpired(Timer &timer) {
- if (_ready < NUM_AUDIO_BUFFERS) {
- if (_playing != _head) {
- if (_mixer->mixCallback((byte *)_audioBuffer[_head].GetPointer(), _size)) {
- _head = (_head + 1) % NUM_AUDIO_BUFFERS;
- _ready++;
- }
- }
- } else {
- // audio buffer full: restore timer interval
- _interval = TIMER_INTERVAL;
- }
-
- if (_ready && _playing == -1) {
- OnAudioOutBufferEndReached(*_audioOut);
- }
-
- _timer->Start(_interval);
-}
-
diff --git a/backends/platform/tizen/audio.h b/backends/platform/tizen/audio.h
deleted file mode 100644
index db87d78123..0000000000
--- a/backends/platform/tizen/audio.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIZEN_AUDIO_H
-#define TIZEN_AUDIO_H
-
-#include <FBase.h>
-#include <FMedia.h>
-#include <FIo.h>
-#include <FBaseByteBuffer.h>
-
-#include "config.h"
-#include "common/scummsys.h"
-#include "common/system.h"
-#include "audio/mixer_intern.h"
-
-using namespace Tizen::Base;
-using namespace Tizen::Base::Collection;
-using namespace Tizen::Base::Runtime;
-using namespace Tizen::Media;
-using namespace Tizen::Io;
-
-#define NUM_AUDIO_BUFFERS 2
-
-class AudioThread:
- public Tizen::Media::IAudioOutEventListener,
- public Tizen::Base::Runtime::ITimerEventListener,
- public Tizen::Base::Runtime::EventDrivenThread {
-
-public:
- AudioThread(void);
- ~AudioThread(void);
-
- Audio::MixerImpl *Construct();
- bool isSilentMode();
- void setMute(bool on);
-
-private:
- bool OnStart(void);
- void OnStop(void);
- void OnAudioOutErrorOccurred(Tizen::Media::AudioOut &src, result r);
- void OnAudioOutInterrupted(Tizen::Media::AudioOut &src);
- void OnAudioOutReleased(Tizen::Media::AudioOut &src);
- void OnAudioOutBufferEndReached(Tizen::Media::AudioOut &src);
- void OnTimerExpired(Timer &timer);
-
- Audio::MixerImpl *_mixer;
- Tizen::Base::Runtime::Timer *_timer;
- Tizen::Media::AudioOut *_audioOut;
- Tizen::Base::ByteBuffer _audioBuffer[NUM_AUDIO_BUFFERS];
- int _head, _tail, _ready, _interval, _playing, _size;
- bool _muted;
-};
-
-#endif
diff --git a/backends/platform/tizen/form.cpp b/backends/platform/tizen/form.cpp
deleted file mode 100644
index 22e15f61c4..0000000000
--- a/backends/platform/tizen/form.cpp
+++ /dev/null
@@ -1,438 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <FApp.h>
-#include <FSysSystemTime.h>
-
-#include "common/translation.h"
-#include "base/main.h"
-
-#include "backends/platform/tizen/form.h"
-#include "backends/platform/tizen/system.h"
-
-using namespace Tizen::Base::Collection;
-using namespace Tizen::Base::Runtime;
-using namespace Tizen::Ui::Controls;
-
-// round down small Y touch values to 1 to allow the
-// cursor to be positioned at the top of the screen
-#define MIN_TOUCH_Y 20
-
-// block for up to 2.5 seconds during shutdown to
-// allow the game thread to exit gracefully.
-#define EXIT_SLEEP_STEP 10
-#define EXIT_SLEEP 250
-
-//
-// TizenAppForm
-//
-TizenAppForm::TizenAppForm() :
- _gestureMode(false),
- _osdMessage(NULL),
- _gameThread(NULL),
- _eventQueueLock(NULL),
- _state(kInitState),
- _buttonState(kLeftButton),
- _shortcut(kEscapeKey) {
-}
-
-result TizenAppForm::Construct() {
- TizenSystem *tizenSystem = NULL;
- result r = Form::Construct(FORM_STYLE_NORMAL);
- if (!IsFailed(r)) {
- tizenSystem = new TizenSystem(this);
- r = tizenSystem != NULL ? E_SUCCESS : E_OUT_OF_MEMORY;
- }
- if (!IsFailed(r)) {
- r = tizenSystem->Construct();
- }
- if (!IsFailed(r)) {
- _gameThread = new Thread();
- r = _gameThread != NULL ? E_SUCCESS : E_OUT_OF_MEMORY;
- }
- if (!IsFailed(r)) {
- r = _gameThread->Construct(*this);
- }
- if (!IsFailed(r)) {
- _eventQueueLock = new Mutex();
- r = _eventQueueLock != NULL ? E_SUCCESS : E_OUT_OF_MEMORY;
- }
- if (!IsFailed(r)) {
- r = _eventQueueLock->Create();
- }
-
- if (!IsFailed(r)) {
- g_system = tizenSystem;
- } else {
- AppLog("Form startup failed");
- delete tizenSystem;
- delete _gameThread;
- _gameThread = NULL;
- }
- return r;
-}
-
-TizenAppForm::~TizenAppForm() {
- logEntered();
-
- if (_gameThread && _state != kErrorState) {
- terminate();
-
- _gameThread->Stop();
- if (_state != kErrorState) {
- _gameThread->Join();
- }
-
- delete _gameThread;
- _gameThread = NULL;
- }
-
- delete _eventQueueLock;
- _eventQueueLock = NULL;
-
- logLeaving();
-}
-
-//
-// abort the game thread
-//
-void TizenAppForm::terminate() {
- if (_state == kActiveState) {
- ((TizenSystem *)g_system)->setMute(true);
-
- _eventQueueLock->Acquire();
-
- Common::Event e;
- e.type = Common::EVENT_QUIT;
- _eventQueue.push(e);
- _state = kClosingState;
-
- _eventQueueLock->Release();
-
- // block while thread ends
- AppLog("waiting for shutdown");
- for (int i = 0; i < EXIT_SLEEP_STEP && _state == kClosingState; i++) {
- Thread::Sleep(EXIT_SLEEP);
- }
-
- if (_state == kClosingState) {
- // failed to terminate - Join() will freeze
- _state = kErrorState;
- }
- }
-}
-
-void TizenAppForm::exitSystem() {
- _state = kErrorState;
-
- if (_gameThread) {
- _gameThread->Stop();
- delete _gameThread;
- _gameThread = NULL;
- }
-}
-
-result TizenAppForm::OnInitializing(void) {
- logEntered();
-
- AddOrientationEventListener(*this);
- AddTouchEventListener(*this);
- SetMultipointTouchEnabled(true);
- SetFormBackEventListener(this);
- SetFormMenuEventListener(this);
-
- // set focus to enable receiving key events
- SetEnabled(true);
- SetFocusable(true);
- SetFocus();
-
- return E_SUCCESS;
-}
-
-result TizenAppForm::OnDraw(void) {
- logEntered();
- return E_SUCCESS;
-}
-
-void TizenAppForm::OnOrientationChanged(const Control &source, OrientationStatus orientationStatus) {
- logEntered();
- if (_state == kInitState) {
- _state = kActiveState;
- _gameThread->Start();
- }
-}
-
-Tizen::Base::Object *TizenAppForm::Run() {
- logEntered();
-
- scummvm_main(0, 0);
- if (_state == kActiveState) {
- Tizen::App::Application::GetInstance()->SendUserEvent(USER_MESSAGE_EXIT, NULL);
- }
- _state = kDoneState;
- return NULL;
-}
-
-bool TizenAppForm::pollEvent(Common::Event &event) {
- bool result = false;
-
- _eventQueueLock->Acquire();
- if (!_eventQueue.empty()) {
- event = _eventQueue.pop();
- result = true;
- }
- if (_osdMessage) {
- TizenSystem *system = (TizenSystem *)g_system;
- TizenGraphicsManager *graphics = system->getGraphics();
- if (graphics) {
- graphics->displayMessageOnOSD(_osdMessage);
- _osdMessage = NULL;
- }
- }
- _eventQueueLock->Release();
-
- return result;
-}
-
-void TizenAppForm::pushEvent(Common::EventType type, const Point ¤tPosition) {
- TizenSystem *system = (TizenSystem *)g_system;
- TizenGraphicsManager *graphics = system->getGraphics();
- if (graphics) {
- // graphics could be NULL at startup or when
- // displaying the system error screen
- Common::Event e;
- e.type = type;
- e.mouse.x = currentPosition.x;
- e.mouse.y = currentPosition.y > MIN_TOUCH_Y ? currentPosition.y : 1;
-
- bool moved = graphics->moveMouse(e.mouse.x, e.mouse.y);
-
- _eventQueueLock->Acquire();
-
- if (moved && type != Common::EVENT_MOUSEMOVE) {
- Common::Event moveEvent;
- moveEvent.type = Common::EVENT_MOUSEMOVE;
- moveEvent.mouse = e.mouse;
- _eventQueue.push(moveEvent);
- }
-
- _eventQueue.push(e);
- _eventQueueLock->Release();
- }
-}
-
-void TizenAppForm::pushKey(Common::KeyCode keycode) {
- if (_eventQueueLock) {
- Common::Event e;
- e.kbd.keycode = keycode;
- e.kbd.ascii = keycode;
- e.kbd.flags = 0;
-
- _eventQueueLock->Acquire();
- e.type = Common::EVENT_KEYDOWN;
- _eventQueue.push(e);
- e.type = Common::EVENT_KEYUP;
- _eventQueue.push(e);
- _eventQueueLock->Release();
- }
-}
-
-void TizenAppForm::setButtonShortcut() {
- switch (_buttonState) {
- case kLeftButton:
- setMessage(_s("Right Click Once"));
- _buttonState = kRightButtonOnce;
- break;
- case kRightButtonOnce:
- setMessage(_s("Right Click"));
- _buttonState = kRightButton;
- break;
- case kRightButton:
- setMessage(_s("Move Only"));
- _buttonState = kMoveOnly;
- break;
- case kMoveOnly:
- setMessage(_s("Left Click"));
- _buttonState = kLeftButton;
- break;
- }
-}
-
-void TizenAppForm::setMessage(const char *message) {
- if (_eventQueueLock) {
- _eventQueueLock->Acquire();
- _osdMessage = message;
- _eventQueueLock->Release();
- }
-}
-
-void TizenAppForm::setShortcut() {
- logEntered();
- // cycle to the next shortcut
- switch (_shortcut) {
- case kControlMouse:
- setMessage(_s("Escape Key"));
- _shortcut = kEscapeKey;
- break;
-
- case kEscapeKey:
- setMessage(_s("Game Menu"));
- _shortcut = kGameMenu;
- break;
-
- case kGameMenu:
- setMessage(_s("Show Keypad"));
- _shortcut = kShowKeypad;
- break;
-
- case kShowKeypad:
- setMessage(_s("Control Mouse"));
- _shortcut = kControlMouse;
- break;
- }
-}
-
-void TizenAppForm::invokeShortcut() {
- logEntered();
- switch (_shortcut) {
- case kControlMouse:
- setButtonShortcut();
- break;
-
- case kEscapeKey:
- pushKey(Common::KEYCODE_ESCAPE);
- break;
-
- case kGameMenu:
- _buttonState = kLeftButton;
- pushKey(Common::KEYCODE_F5);
- break;
-
- case kShowKeypad:
- showKeypad();
- break;
- }
-}
-
-void TizenAppForm::showKeypad() {
- // display the soft keyboard
- if (_state == kActiveState) {
- _buttonState = kLeftButton;
-
- Common::Event e;
- e.type = Common::EVENT_VIRTUAL_KEYBOARD;
- if (_eventQueueLock) {
- _eventQueueLock->Acquire();
- _eventQueue.push(e);
- _eventQueueLock->Release();
- }
- }
-}
-
-int TizenAppForm::getTouchCount() {
- Tizen::Ui::TouchEventManager *touch = Tizen::Ui::TouchEventManager::GetInstance();
- IListT<TouchEventInfo *> *touchList = touch->GetTouchInfoListN();
- int touchCount = touchList->GetCount();
- touchList->RemoveAll();
- delete touchList;
- return touchCount;
-}
-
-void TizenAppForm::OnTouchDoublePressed(const Control &source,
- const Point ¤tPosition, const TouchEventInfo &touchInfo) {
- if (_buttonState != kMoveOnly) {
- pushEvent(_buttonState == kLeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN,
- currentPosition);
- }
-}
-
-void TizenAppForm::OnTouchFocusIn(const Control &source,
- const Point ¤tPosition, const TouchEventInfo &touchInfo) {
-}
-
-void TizenAppForm::OnTouchFocusOut(const Control &source,
- const Point ¤tPosition, const TouchEventInfo &touchInfo) {
-}
-
-void TizenAppForm::OnTouchLongPressed(const Control &source,
- const Point ¤tPosition, const TouchEventInfo &touchInfo) {
- logEntered();
- if (_buttonState != kLeftButton) {
- pushKey(Common::KEYCODE_RETURN);
- }
-}
-
-void TizenAppForm::OnTouchMoved(const Control &source,
- const Point ¤tPosition, const TouchEventInfo &touchInfo) {
- if (!_gestureMode) {
- pushEvent(Common::EVENT_MOUSEMOVE, currentPosition);
- }
-}
-
-void TizenAppForm::OnTouchPressed(const Control &source,
- const Point ¤tPosition, const TouchEventInfo &touchInfo) {
- if (getTouchCount() > 1) {
- _gestureMode = true;
- } else if (_buttonState != kMoveOnly) {
- pushEvent(_buttonState == kLeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN,
- currentPosition);
- }
-}
-
-void TizenAppForm::OnTouchReleased(const Control &source,
- const Point ¤tPosition, const TouchEventInfo &touchInfo) {
- if (_gestureMode) {
- int touchCount = getTouchCount();
- if (touchCount == 1) {
- setShortcut();
- } else {
- if (touchCount == 2) {
- invokeShortcut();
- }
- _gestureMode = false;
- }
- } else if (_buttonState != kMoveOnly) {
- pushEvent(_buttonState == kLeftButton ? Common::EVENT_LBUTTONUP : Common::EVENT_RBUTTONUP,
- currentPosition);
- if (_buttonState == kRightButtonOnce) {
- _buttonState = kLeftButton;
- }
- // flick to skip dialog
- if (touchInfo.IsFlicked()) {
- pushKey(Common::KEYCODE_PERIOD);
- }
- }
-}
-
-void TizenAppForm::OnFormBackRequested(Form &source) {
- logEntered();
- if (_state == kActiveState) {
- invokeShortcut();
- }
-}
-
-void TizenAppForm::OnFormMenuRequested(Form &source) {
- logEntered();
- if (_state == kActiveState) {
- setShortcut();
- }
-}
diff --git a/backends/platform/tizen/form.h b/backends/platform/tizen/form.h
deleted file mode 100644
index 3e34b8989e..0000000000
--- a/backends/platform/tizen/form.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIZEN_FORM_H
-#define TIZEN_FORM_H
-
-#include <FApp.h>
-#include <FUi.h>
-#include <FSystem.h>
-#include <FBase.h>
-#include <FUiITouchEventListener.h>
-#include <FUiITextEventListener.h>
-#include <FUiCtrlIFormBackEventListener.h>
-#include <FUiCtrlIFormMenuEventListener.h>
-
-#include "config.h"
-#include "common/scummsys.h"
-#include "common/events.h"
-#include "common/queue.h"
-#include "common/mutex.h"
-#include "engines/engine.h"
-
-using namespace Tizen::Ui;
-using namespace Tizen::Graphics;
-using namespace Tizen::Base::Runtime;
-using namespace Tizen::Ui::Controls;
-
-//
-// TizenAppForm
-//
-class TizenAppForm :
- public Controls::Form,
- public IRunnable,
- public IOrientationEventListener,
- public ITouchEventListener,
- public IFormBackEventListener,
- public IFormMenuEventListener {
-
-public:
- TizenAppForm();
- virtual ~TizenAppForm();
-
- result Construct();
- bool pollEvent(Common::Event &event);
- bool isClosing() { return _state == kClosingState; }
- bool isStarting() { return _state == kInitState; }
- void pushKey(Common::KeyCode keycode);
- void exitSystem();
- void showKeypad();
-
-private:
- Tizen::Base::Object *Run();
- result OnInitializing(void);
- result OnDraw(void);
- void OnOrientationChanged(const Control &source,
- OrientationStatus orientationStatus);
- void OnTouchDoublePressed(const Control &source,
- const Point ¤tPosition,
- const TouchEventInfo &touchInfo);
- void OnTouchFocusIn(const Control &source,
- const Point ¤tPosition,
- const TouchEventInfo &touchInfo);
- void OnTouchFocusOut(const Control &source,
- const Point ¤tPosition,
- const TouchEventInfo &touchInfo);
- void OnTouchLongPressed(const Control &source,
- const Point ¤tPosition,
- const TouchEventInfo &touchInfo);
- void OnTouchMoved(const Control &source,
- const Point ¤tPosition,
- const TouchEventInfo &touchInfo);
- void OnTouchPressed(const Control &source,
- const Point ¤tPosition,
- const TouchEventInfo &touchInfo);
- void OnTouchReleased(const Control &source,
- const Point ¤tPosition,
- const TouchEventInfo &touchInfo);
- void OnFormBackRequested(Form &source);
- void OnFormMenuRequested(Form &source);
-
- void pushEvent(Common::EventType type, const Point ¤tPosition);
- void terminate();
- void setButtonShortcut();
- void setMessage(const char *message);
- void setShortcut();
- void invokeShortcut();
- int getTouchCount();
- bool gameActive() { return _state == kActiveState && g_engine != NULL && !g_engine->isPaused(); }
-
- // event handling
- bool _gestureMode;
- const char *_osdMessage;
- Tizen::Base::Runtime::Thread *_gameThread;
- Tizen::Base::Runtime::Mutex *_eventQueueLock;
- Common::Queue<Common::Event> _eventQueue;
- enum { kInitState, kActiveState, kClosingState, kDoneState, kErrorState } _state;
- enum { kLeftButton, kRightButtonOnce, kRightButton, kMoveOnly } _buttonState;
- enum { kControlMouse, kEscapeKey, kGameMenu, kShowKeypad } _shortcut;
-};
-
-#endif
diff --git a/backends/platform/tizen/fs.cpp b/backends/platform/tizen/fs.cpp
deleted file mode 100644
index 1827b7d4c1..0000000000
--- a/backends/platform/tizen/fs.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "config.h"
-#include "common/translation.h"
-#include "backends/platform/tizen/system.h"
-#include "backends/platform/tizen/fs.h"
-
-#include <FAppApp.h>
-
-#define BUFFER_SIZE 1024
-
-using namespace Tizen::App;
-
-//
-// converts a Tizen (wchar) String into a scummVM (char) string
-//
-Common::String fromString(const Tizen::Base::String &in) {
- ByteBuffer *buf = StringUtil::StringToUtf8N(in);
- Common::String result((const char*)buf->GetPointer());
- delete buf;
- return result;
-}
-
-//
-// TizenFileStream
-//
-class TizenFileStream :
- public Common::SeekableReadStream,
- public Common::WriteStream,
- public Common::NonCopyable {
-public:
- static TizenFileStream *makeFromPath(const String &path, bool writeMode);
-
- TizenFileStream(File *file, bool writeMode);
- ~TizenFileStream();
-
- bool err() const;
- void clearErr();
- bool eos() const;
-
- uint32 write(const void *dataPtr, uint32 dataSize);
- bool flush();
-
- int32 pos() const;
- int32 size() const;
- bool seek(int32 offs, int whence = SEEK_SET);
- uint32 read(void *dataPtr, uint32 dataSize);
-
-private:
- byte _buffer[BUFFER_SIZE];
- uint32 _bufferIndex;
- uint32 _bufferLength;
- bool _writeMode;
- File *_file;
-};
-
-TizenFileStream::TizenFileStream(File *ioFile, bool writeMode) :
- _bufferIndex(0),
- _bufferLength(0),
- _writeMode(writeMode),
- _file(ioFile) {
- AppAssert(ioFile != 0);
-}
-
-TizenFileStream::~TizenFileStream() {
- if (_file) {
- if (_writeMode) {
- flush();
- }
- delete _file;
- }
-}
-
-bool TizenFileStream::err() const {
- result r = GetLastResult();
- return (r != E_SUCCESS && r != E_END_OF_FILE);
-}
-
-void TizenFileStream::clearErr() {
- SetLastResult(E_SUCCESS);
-}
-
-bool TizenFileStream::eos() const {
- return (_bufferLength - _bufferIndex == 0) && (GetLastResult() == E_END_OF_FILE);
-}
-
-int32 TizenFileStream::pos() const {
- return _file->Tell() - (_bufferLength - _bufferIndex);
-}
-
-int32 TizenFileStream::size() const {
- int32 oldPos = _file->Tell();
- _file->Seek(FILESEEKPOSITION_END, 0);
-
- int32 length = _file->Tell();
- SetLastResult(_file->Seek(FILESEEKPOSITION_BEGIN, oldPos));
-
- return length;
-}
-
-bool TizenFileStream::seek(int32 offs, int whence) {
- bool result = false;
- switch (whence) {
- case SEEK_SET:
- // set from start of file
- SetLastResult(_file->Seek(FILESEEKPOSITION_BEGIN, offs));
- result = (E_SUCCESS == GetLastResult());
- break;
-
- case SEEK_CUR:
- // set relative to offs
- if (_bufferIndex < _bufferLength && _bufferIndex > (uint32)-offs) {
- // re-position within the buffer
- SetLastResult(E_SUCCESS);
- _bufferIndex += offs;
- return true;
- } else {
- offs -= (_bufferLength - _bufferIndex);
- if (offs < 0 && _file->Tell() + offs < 0) {
- // avoid negative positioning
- offs = 0;
- }
- if (offs != 0) {
- SetLastResult(_file->Seek(FILESEEKPOSITION_CURRENT, offs));
- result = (E_SUCCESS == GetLastResult());
- } else {
- result = true;
- }
- }
- break;
-
- case SEEK_END:
- // set relative to end - positive will increase the file size
- SetLastResult(_file->Seek(FILESEEKPOSITION_END, offs));
- result = (E_SUCCESS == GetLastResult());
- break;
-
- default:
- AppLog("Invalid whence %d", whence);
- return false;
- }
-
- if (!result) {
- AppLog("seek failed");
- }
-
- _bufferIndex = _bufferLength = 0;
- return result;
-}
-
-uint32 TizenFileStream::read(void *ptr, uint32 len) {
- uint32 result = 0;
- if (!eos()) {
- if (_bufferIndex < _bufferLength) {
- // use existing buffer
- uint32 available = _bufferLength - _bufferIndex;
- if (len <= available) {
- // use allocation
- memcpy((byte *)ptr, &_buffer[_bufferIndex], len);
- _bufferIndex += len;
- result = len;
- } else {
- // use remaining allocation
- memcpy((byte *)ptr, &_buffer[_bufferIndex], available);
- uint32 remaining = len - available;
- result = available;
-
- if (remaining) {
- result += _file->Read(((byte *)ptr) + available, remaining);
- }
- _bufferIndex = _bufferLength = 0;
- }
- } else if (len < BUFFER_SIZE) {
- // allocate and use buffer
- _bufferIndex = 0;
- _bufferLength = _file->Read(_buffer, BUFFER_SIZE);
- if (_bufferLength) {
- if (_bufferLength < len) {
- len = _bufferLength;
- }
- memcpy((byte *)ptr, _buffer, len);
- result = _bufferIndex = len;
- }
- } else {
- result = _file->Read((byte *)ptr, len);
- _bufferIndex = _bufferLength = 0;
- }
- } else {
- AppLog("Attempted to read past EOS");
- }
- return result;
-}
-
-uint32 TizenFileStream::write(const void *ptr, uint32 len) {
- result r = _file->Write(ptr, len);
- SetLastResult(r);
- return (r == E_SUCCESS ? len : 0);
-}
-
-bool TizenFileStream::flush() {
- logEntered();
- SetLastResult(_file->Flush());
- return (E_SUCCESS == GetLastResult());
-}
-
-TizenFileStream *TizenFileStream::makeFromPath(const String &path, bool writeMode) {
- File *ioFile = new File();
-
- String filePath = path;
- if (writeMode && (path[0] != '.' && path[0] != '/')) {
- filePath.Insert(App::GetInstance()->GetAppDataPath() + L"/", 0);
- }
-
- AppLog("Open file %S", filePath.GetPointer());
- TizenFileStream *stream;
- result r = ioFile->Construct(filePath, writeMode ? L"w" : L"r", writeMode);
- if (r == E_SUCCESS) {
- stream = new TizenFileStream(ioFile, writeMode);
- } else {
- AppLog("Failed to open file");
- delete ioFile;
- stream = NULL;
- }
- return stream;
-}
-
-//
-// TizenFilesystemNode
-//
-TizenFilesystemNode::TizenFilesystemNode(const Common::String &nodePath) {
- AppAssert(nodePath.size() > 0);
- init(nodePath);
-}
-
-TizenFilesystemNode::TizenFilesystemNode(SystemPath systemPath) {
- switch (systemPath) {
- case kData:
- _unicodePath = App::GetInstance()->GetAppDataPath();
- _displayName = _s("[ Data ]");
- break;
- case kResource:
- _unicodePath = App::GetInstance()->GetAppResourcePath();
- _displayName = _s("[ Resources ]");
- break;
- case kSdCard:
- _unicodePath = Tizen::System::Environment::GetExternalStoragePath();
- _displayName = _s("[ SDCard ]");
- break;
- case kMedia:
- _unicodePath = Tizen::System::Environment::GetMediaPath();
- _displayName = _s("[ Media ]");
- break;
- case kShared:
- _unicodePath = App::GetInstance()->GetAppSharedPath();
- _displayName = _s("[ Shared ]");
- break;
- }
- _path = ::fromString(_unicodePath);
- _isValid = _isVirtualDir = !IsFailed(File::GetAttributes(_unicodePath, _attr));
-}
-
-TizenFilesystemNode::TizenFilesystemNode(const Common::String &root, const Common::String &nodePath) {
- AppLog("TizenFilesystemNode '%s' '%s'", root.c_str(), nodePath.c_str());
-
- // Make sure the string contains no slashes
- AppAssert(!nodePath.contains('/'));
-
- // We assume here that path is already normalized (hence don't bother to
- // call Common::normalizePath on the final path).
- Common::String newPath(root);
- if (root.lastChar() != '/') {
- newPath += '/';
- }
- newPath += nodePath;
-
- init(newPath);
-}
-
-void TizenFilesystemNode::init(const Common::String &nodePath) {
- // Normalize the path (that is, remove unneeded slashes etc.)
- _path = Common::normalizePath(nodePath, '/');
- _displayName = Common::lastPathComponent(_path, '/');
-
- StringUtil::Utf8ToString(_path.c_str(), _unicodePath);
- _isVirtualDir = (_path == "/");
- _isValid = _isVirtualDir || !IsFailed(File::GetAttributes(_unicodePath, _attr));
-}
-
-bool TizenFilesystemNode::exists() const {
- return _isValid;
-}
-
-bool TizenFilesystemNode::isReadable() const {
- return _isVirtualDir || _isValid;
-}
-
-bool TizenFilesystemNode::isDirectory() const {
- return _isVirtualDir || (_isValid && _attr.IsDirectory());
-}
-
-bool TizenFilesystemNode::isWritable() const {
- bool result = (_isValid && !_attr.IsReadOnly());
- if (_unicodePath == App::GetInstance()->GetAppResourcePath()) {
- result = false;
- }
- return result;
-}
-
-AbstractFSNode *TizenFilesystemNode::getChild(const Common::String &n) const {
- AppAssert(!_path.empty());
- AppAssert(isDirectory());
- return new TizenFilesystemNode(_path, n);
-}
-
-bool TizenFilesystemNode::getChildren(AbstractFSList &myList, ListMode mode, bool hidden) const {
- AppAssert(isDirectory());
-
- bool result = false;
-
- if (_isVirtualDir && mode != Common::FSNode::kListFilesOnly && _path == "/") {
- // present well known TIZEN file system areas
- myList.push_back(new TizenFilesystemNode(kData));
- myList.push_back(new TizenFilesystemNode(kSdCard));
- myList.push_back(new TizenFilesystemNode(kMedia));
- myList.push_back(new TizenFilesystemNode(kShared));
- }
-
- if (!result) {
- DirEnumerator *pDirEnum = 0;
- Directory *pDir = new Directory();
-
- // open directory
- if (IsFailed(pDir->Construct(_unicodePath))) {
- AppLog("Failed to open directory: %S", _unicodePath.GetPointer());
- } else {
- // read all directory entries
- pDirEnum = pDir->ReadN();
- if (pDirEnum) {
- result = true;
- }
-
- // loop through all directory entries
- while (pDirEnum && pDirEnum->MoveNext() == E_SUCCESS) {
- DirEntry dirEntry = pDirEnum->GetCurrentDirEntry();
-
- // skip 'invisible' files if necessary
- Tizen::Base::String fileName = dirEntry.GetName();
-
- if (fileName[0] == '.' && !hidden) {
- continue;
- }
-
- // skip '.' and '..' to avoid cycles
- if (fileName == L"." || fileName == L"..") {
- continue;
- }
-
- // Honor the chosen mode
- if ((mode == Common::FSNode::kListFilesOnly && dirEntry.IsDirectory()) ||
- (mode == Common::FSNode::kListDirectoriesOnly && !dirEntry.IsDirectory())) {
- continue;
- }
- myList.push_back(new TizenFilesystemNode(_path, ::fromString(fileName)));
- }
- }
-
- // cleanup
- if (pDirEnum) {
- delete pDirEnum;
- }
-
- // close the opened directory
- if (pDir) {
- delete pDir;
- }
- }
-
- return result;
-}
-
-AbstractFSNode *TizenFilesystemNode::getParent() const {
- logEntered();
- if (_path == "/") {
- return 0; // The filesystem root has no parent
- }
-
- const char *start = _path.c_str();
- const char *end = start + _path.size();
-
- // Strip of the last component. We make use of the fact that at this
- // point, path is guaranteed to be normalized
- while (end > start && *(end-1) != '/') {
- end--;
- }
-
- if (end == start) {
- // This only happens if we were called with a relative path, for which
- // there simply is no parent.
- // TODO: We could also resolve this by assuming that the parent is the
- // current working directory, and returning a node referring to that.
- return NULL;
- }
-
- return new TizenFilesystemNode(Common::String(start, end));
-}
-
-Common::SeekableReadStream *TizenFilesystemNode::createReadStream() {
- Common::SeekableReadStream *result = TizenFileStream::makeFromPath(_unicodePath, false);
- if (result != NULL) {
- _isValid = !IsFailed(File::GetAttributes(_unicodePath, _attr));
- }
- return result;
-}
-
-Common::WriteStream *TizenFilesystemNode::createWriteStream() {
- Common::WriteStream *result = TizenFileStream::makeFromPath(_unicodePath, true);
- if (result != NULL) {
- _isValid = !IsFailed(File::GetAttributes(_unicodePath, _attr));
- }
- return result;
-}
-
-bool TizenFilesystemNode::createDirectory() {
- warning("TizenFilesystemNode::createDirectory(): Not supported");
- return _isValid && isDirectory();
-}
diff --git a/backends/platform/tizen/fs.h b/backends/platform/tizen/fs.h
deleted file mode 100644
index 1da226b1a6..0000000000
--- a/backends/platform/tizen/fs.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIZEN_FILESYSTEM_H
-#define TIZEN_FILESYSTEM_H
-
-#include <FBaseString.h>
-#include <FBaseUtilStringUtil.h>
-#include <FIoDirectory.h>
-#include <FIoFile.h>
-
-#include "config.h"
-#include "common/scummsys.h"
-#include "common/stream.h"
-#include "backends/fs/abstract-fs.h"
-
-using namespace Tizen::Io;
-using namespace Tizen::Base;
-using namespace Tizen::Base::Utility;
-
-//
-// converts a Tizen (wchar) String into a scummVM (char) string
-//
-Common::String fromString(const Tizen::Base::String &in);
-
-//
-// Enumerates the possible system paths
-//
-enum SystemPath { kData, kResource, kSdCard, kMedia, kShared };
-
-/**
- * Implementation of the ScummVM file system API based on TIZEN.
- *
- * Parts of this class are documented in the base interface class, AbstractFSNode.
- */
-class TizenFilesystemNode : public AbstractFSNode {
-public:
- /**
- * Creates a TizenFilesystemNode for a given path.
- *
- * @param path the path the new node should point to.
- */
- TizenFilesystemNode(const Common::String &path);
-
- /**
- * Creates a TizenFilesystemNode from the given Tizen internal path
- *
- * @param path the path the new node should point to.
- */
- TizenFilesystemNode(SystemPath systemPath);
-
- Common::String getDisplayName() const { return _displayName; }
- Common::String getName() const { return _displayName; }
- Common::String getPath() const { return _path; }
-
- bool exists() const;
- bool isDirectory() const;
- bool isReadable() const;
- bool isWritable() const;
-
- AbstractFSNode *getChild(const Common::String &n) const;
- bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
- AbstractFSNode *getParent() const;
-
- Common::SeekableReadStream *createReadStream();
- Common::WriteStream *createWriteStream();
- bool createDirectory();
-
-protected:
- TizenFilesystemNode(const Common::String &root, const Common::String &p);
- void init(const Common::String &nodePath);
-
- Common::String _displayName;
- Common::String _path;
- String _unicodePath;
- bool _isValid;
- bool _isVirtualDir;
- FileAttributes _attr;
-};
-
-#endif
diff --git a/backends/platform/tizen/graphics.cpp b/backends/platform/tizen/graphics.cpp
deleted file mode 100644
index 85dbbd2c08..0000000000
--- a/backends/platform/tizen/graphics.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "graphics/fontman.h"
-
-#include "backends/platform/tizen/form.h"
-#include "backends/platform/tizen/system.h"
-#include "backends/platform/tizen/graphics.h"
-
-//
-// TizenGraphicsManager
-//
-TizenGraphicsManager::TizenGraphicsManager(TizenAppForm *appForm) :
- _appForm(appForm),
- _eglDisplay(EGL_DEFAULT_DISPLAY),
- _eglSurface(EGL_NO_SURFACE),
- _eglConfig(NULL),
- _eglContext(EGL_NO_CONTEXT),
- _initState(true) {
- assert(appForm != NULL);
-}
-
-TizenGraphicsManager::~TizenGraphicsManager() {
- logEntered();
-
- if (_eglDisplay != EGL_NO_DISPLAY) {
- notifyContextDestroy();
- eglMakeCurrent(_eglDisplay, NULL, NULL, NULL);
- if (_eglContext != EGL_NO_CONTEXT) {
- eglDestroyContext(_eglDisplay, _eglContext);
- }
- }
-}
-
-result TizenGraphicsManager::Construct() {
- // Initialize our OpenGL ES context.
- loadEgl();
-
- // Notify the OpenGL code about our context.
- setContextType(OpenGL::kContextGLES);
-
- // We default to RGB565 and RGBA5551 which is closest to the actual output
- // mode we setup.
- notifyContextCreate(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0), Graphics::PixelFormat(2, 5, 5, 5, 1, 11, 6, 1, 0));
-
- // Tell our size.
- int x, y, width, height;
- _appForm->GetBounds(x, y, width, height);
- AppLog("screen size: %dx%d", width, height);
- setActualScreenSize(width, height);
- return E_SUCCESS;
-}
-
-const Graphics::Font *TizenGraphicsManager::getFontOSD() {
- return FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont);
-}
-
-bool TizenGraphicsManager::moveMouse(int16 &x, int16 &y) {
- int16 currentX, currentY;
- getMousePosition(currentX, currentY);
-
- // save the current hardware coordinates
- setMousePosition(x, y);
-
- // return x/y as game coordinates
- adjustMousePosition(x, y);
-
- // convert current x/y to game coordinates
- adjustMousePosition(currentX, currentY);
-
- // return whether game coordinates have changed
- return (currentX != x || currentY != y);
-}
-
-Common::List<Graphics::PixelFormat> TizenGraphicsManager::getSupportedFormats() const {
- logEntered();
-
- Common::List<Graphics::PixelFormat> res;
- res.push_back(Graphics::PixelFormat(2, 4, 4, 4, 4, 12, 8, 4, 0));
- res.push_back(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0));
- res.push_back(Graphics::PixelFormat(2, 5, 5, 5, 1, 11, 6, 1, 0));
- res.push_back(Graphics::PixelFormat::createFormatCLUT8());
- return res;
-}
-
-bool TizenGraphicsManager::hasFeature(OSystem::Feature f) {
- bool result =
- (f == OSystem::kFeatureVirtualKeyboard ||
- OpenGLGraphicsManager::hasFeature(f));
- return result;
-}
-
-void TizenGraphicsManager::setFeatureState(OSystem::Feature f, bool enable) {
- if (f == OSystem::kFeatureVirtualKeyboard) {
- if (enable) {
- _appForm->showKeypad();
- }
- } else {
- OpenGLGraphicsManager::setFeatureState(f, enable);
- }
-}
-
-void TizenGraphicsManager::setReady() {
- logEntered();
- _appForm->GetVisualElement()->SetShowState(true);
- _initState = false;
-}
-
-void TizenGraphicsManager::updateScreen() {
- if (!_initState) {
- OpenGLGraphicsManager::updateScreen();
- }
-}
-
-bool TizenGraphicsManager::loadEgl() {
- logEntered();
-
- EGLint numConfigs = 1;
- EGLint eglConfigList[] = {
- EGL_RED_SIZE, 5,
- EGL_GREEN_SIZE, 6,
- EGL_BLUE_SIZE, 5,
- EGL_ALPHA_SIZE, 0,
- EGL_DEPTH_SIZE, 8,
- EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT,
- EGL_NONE
- };
-
- EGLint eglContextList[] = {
- EGL_CONTEXT_CLIENT_VERSION, 1,
- EGL_NONE
- };
-
- eglBindAPI(EGL_OPENGL_ES_API);
-
- _eglDisplay = eglGetDisplay((EGLNativeDisplayType) EGL_DEFAULT_DISPLAY);
- if (EGL_NO_DISPLAY == _eglDisplay) {
- systemError("eglGetDisplay() failed");
- return false;
- }
-
- if (EGL_FALSE == eglInitialize(_eglDisplay, NULL, NULL) ||
- EGL_SUCCESS != eglGetError()) {
- systemError("eglInitialize() failed");
- return false;
- }
-
- if (EGL_FALSE == eglChooseConfig(_eglDisplay, eglConfigList, &_eglConfig, 1, &numConfigs) ||
- EGL_SUCCESS != eglGetError()) {
- systemError("eglChooseConfig() failed");
- return false;
- }
-
- if (!numConfigs) {
- systemError("eglChooseConfig() failed. Matching config does not exist \n");
- return false;
- }
-
- _eglSurface = eglCreateWindowSurface(_eglDisplay, _eglConfig, (EGLNativeWindowType)_appForm, NULL);
- if (EGL_NO_SURFACE == _eglSurface || EGL_SUCCESS != eglGetError()) {
- systemError("eglCreateWindowSurface() failed. EGL_NO_SURFACE");
- return false;
- }
-
- _eglContext = eglCreateContext(_eglDisplay, _eglConfig, EGL_NO_CONTEXT, eglContextList);
- if (EGL_NO_CONTEXT == _eglContext ||
- EGL_SUCCESS != eglGetError()) {
- systemError("eglCreateContext() failed");
- return false;
- }
-
- if (false == eglMakeCurrent(_eglDisplay, _eglSurface, _eglSurface, _eglContext) ||
- EGL_SUCCESS != eglGetError()) {
- systemError("eglMakeCurrent() failed");
- return false;
- }
- logLeaving();
- return true;
-}
-
-bool TizenGraphicsManager::loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format) {
- // We get this whenever a new resolution is requested. Since Tizen is
- // using a fixed output size we do nothing like that here.
- return true;
-}
-
-void TizenGraphicsManager::refreshScreen() {
- eglSwapBuffers(_eglDisplay, _eglSurface);
-}
-
-void *TizenGraphicsManager::getProcAddress(const char *name) const {
- return eglGetProcAddress(name);
-}
diff --git a/backends/platform/tizen/graphics.h b/backends/platform/tizen/graphics.h
deleted file mode 100644
index 1798b078d8..0000000000
--- a/backends/platform/tizen/graphics.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIZEN_GRAPHICS_H
-#define TIZEN_GRAPHICS_H
-
-#include <FBase.h>
-#include <FGraphics.h>
-#include <FApp.h>
-#include <FGraphicsOpengl.h>
-#include <FSystem.h>
-#include <FUi.h>
-
-#include "config.h"
-#include "backends/graphics/opengl/opengl-graphics.h"
-#include "graphics/font.h"
-#include "backends/platform/tizen/form.h"
-
-using namespace Tizen::Graphics;
-using namespace Tizen::Graphics::Opengl;
-using namespace Tizen::App;
-
-class TizenGraphicsManager : public OpenGL::OpenGLGraphicsManager {
-public:
- TizenGraphicsManager(TizenAppForm *appForm);
- virtual ~TizenGraphicsManager();
-
- result Construct();
-
- Common::List<Graphics::PixelFormat> getSupportedFormats() const;
- bool hasFeature(OSystem::Feature f);
- void setFeatureState(OSystem::Feature f, bool enable);
- void updateScreen();
-
- void setReady();
- bool isReady() { return !_initState; }
-
- bool moveMouse(int16 &x, int16 &y);
-
-protected:
- void setInternalMousePosition(int x, int y) {}
-
- bool loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format);
-
- void refreshScreen();
-
- void *getProcAddress(const char *name) const;
-
- const Graphics::Font *getFontOSD();
-
-private:
- bool loadEgl();
- TizenAppForm *_appForm;
- EGLDisplay _eglDisplay;
- EGLSurface _eglSurface;
- EGLConfig _eglConfig;
- EGLContext _eglContext;
- bool _initState;
-};
-
-#endif
diff --git a/backends/platform/tizen/main.cpp b/backends/platform/tizen/main.cpp
deleted file mode 100644
index 50baa5b977..0000000000
--- a/backends/platform/tizen/main.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <FBase.h>
-#include <FApp.h>
-#include <FSystem.h>
-
-#include "backends/platform/tizen/application.h"
-
-using namespace Tizen::Base;
-using namespace Tizen::Base::Collection;
-
-/**
- * The entry function of tizen application called by the operating system.
- */
-extern "C" _EXPORT_ int OspMain(int argc, char *pArgv[]) {
- result r = E_SUCCESS;
-
- AppLog("Application started.");
- ArrayList args(SingleObjectDeleter);
- args.Construct();
- for (int i = 0; i < argc; i++) {
- args.Add(new (std::nothrow) String(pArgv[i]));
- }
-
- r = Tizen::App::UiApp::Execute(TizenScummVM::createInstance, &args);
- TryLog(r == E_SUCCESS, "[%s] Application execution failed", GetErrorMessage(r));
- AppLog("Application finished.");
-
- return static_cast<int>(r);
-}
-
diff --git a/backends/platform/tizen/missing.cpp b/backends/platform/tizen/missing.cpp
deleted file mode 100644
index f24ba5655c..0000000000
--- a/backends/platform/tizen/missing.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <FApp.h>
-#include <FGraphics.h>
-#include <FUi.h>
-#include <FSystem.h>
-#include <FBase.h>
-
-#include "backends/platform/tizen/portdefs.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <ctype.h>
-
-#define BUF_SIZE 255
-
-void systemError(const char *message);
-
-C_LINKAGE_BEGIN
-
-int __errno; // for overridden method in saves/default/default-saves.cpp
-
-void __assert_func(const char *file, int line,
- const char *func, const char *err) {
- char buffer[BUF_SIZE];
- snprintf(buffer, sizeof(buffer), "%s %d %s %s", file, line, func, err);
- systemError(buffer);
-}
-
-void stderr_fprintf(void *, const char *format, ...) {
- va_list ap;
- char buffer[BUF_SIZE];
-
- va_start(ap, format);
- vsnprintf(buffer, sizeof(buffer), format, ap);
- va_end(ap);
-
- AppLog(buffer);
-}
-
-void stderr_vfprintf(void *, const char *format, va_list ap) {
- char buffer[BUF_SIZE];
- vsnprintf(buffer, sizeof(buffer), format, ap);
- AppLog(buffer);
-}
-
-int printf(const char *format, ...) {
- int result = 0;
- va_list ap;
- char buffer[BUF_SIZE];
-
- va_start(ap, format);
- result = vsnprintf(buffer, sizeof(buffer), format, ap);
- va_end(ap);
-
- AppLog(buffer);
-
- return result;
-}
-
-C_LINKAGE_END
diff --git a/backends/platform/tizen/portdefs.h b/backends/platform/tizen/portdefs.h
deleted file mode 100644
index f5efe85f92..0000000000
--- a/backends/platform/tizen/portdefs.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef PORT_DEFS_H
-#define PORT_DEFS_H
-
-#include <assert.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <math.h>
-#include <new>
-
-#define M_PI 3.14159265358979323846
-
-#ifdef __cplusplus
- #include <ctype.h> // causes a link error when building c programs
- #define C_LINKAGE_BEGIN extern "C" {
- #define C_LINKAGE_END }
-#else
- #define C_LINKAGE_BEGIN
- #define C_LINKAGE_END
-#endif
-
-// value missing from osp gl headers
-#define GL_UNSIGNED_INT_8_8_8_8 0x8035
-
-C_LINKAGE_BEGIN
-
-// for libFLAC
-#undef fseeko
-#undef ftello
-#define fseeko fseek
-#define ftello ftell
-
-// overcome use of fprintf since newlib (1.2) does not
-// support stderr/stdout (undefined reference to `_impure_ptr').
-
-void stderr_fprintf(void *, const char *format, ...);
-void stderr_vfprintf(void *, const char *format, va_list ap);
-
-#undef fprintf
-#undef vfprintf
-#undef stderr
-#undef stdout
-#undef stdin
-#undef fputs
-#undef fflush
-
-#define stderr (void *)0
-#define stdout (void *)1
-#define stdin (void *)2
-#define fputs(str, file)
-#define fflush(file)
-#define sscanf simple_sscanf
-#define fprintf stderr_fprintf
-#define vfprintf stderr_vfprintf
-
-int printf(const char *format, ...);
-int simple_sscanf(const char *buffer, const char *format, ...);
-
-C_LINKAGE_END
-
-#endif
diff --git a/backends/platform/tizen/sscanf.cpp b/backends/platform/tizen/sscanf.cpp
deleted file mode 100644
index b52389c91c..0000000000
--- a/backends/platform/tizen/sscanf.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-
-//
-// simple sscanf replacement to match scummvm usage patterns
-//
-
-bool scanInt(const char **in, va_list *ap, int max) {
- // skip leading space characters
- while (**in && **in == ' ') {
- (*in)++;
- }
-
- // number optionally preceeded with a + or - sign.
- bool negate = false;
- if (**in == '-') {
- (*in)++;
- negate = true;
- }
-
- if (**in == '+') {
- (*in)++;
- }
-
- int *arg = va_arg(*ap, int*);
- char *end;
- long n = strtol(*in, &end, 10);
- if (negate) {
- n = -n;
- }
-
- bool err = false;
- if (end == *in || (max > 0 && (end - *in) > max)) {
- err = true;
- } else {
- *arg = (int)n;
- *in = end;
- }
- return err;
-}
-
-bool scanHex(const char **in, va_list *ap) {
- unsigned *arg = va_arg(*ap, unsigned*);
- char *end;
- long n = strtol(*in, &end, 16);
- if (end == *in) {
- return true;
- }
-
- *in = end;
- *arg = (unsigned) n;
- return false;
-}
-
-bool scanString(const char **in, va_list *ap) {
- char *arg = va_arg(*ap, char*);
- while (**in && **in != ' ' && **in != '\n' && **in != '\t') {
- *arg = **in;
- arg++;
- (*in)++;
- }
- *arg = '\0';
- (*in)++;
- return false;
-}
-
-bool scanStringUntil(const char **in, va_list *ap, char c_end) {
- char *arg = va_arg(*ap, char*);
- while (**in && **in != c_end) {
- *arg = **in;
- arg++;
- (*in)++;
- }
- *arg = 0;
- (*in)++;
- return false;
-}
-
-bool scanChar(const char **in, va_list *ap) {
- char *arg = va_arg(*ap, char*);
- if (**in) {
- *arg = **in;
- (*in)++;
- }
- return false;
-}
-
-extern "C" int simple_sscanf(const char *input, const char *format, ...) {
- va_list ap;
- int result = 0;
- const char *next = input;
-
- va_start(ap, format);
-
- while (*format) {
- if (*format == '%') {
- format++;
- int max = 0;
- while (isdigit(*format)) {
- max = (max * 10) + (*format - '0');
- format++;
- }
-
- bool err = false;
- switch (*format++) {
- case 'c':
- err = scanChar(&next, &ap);
- break;
- case 'd':
- case 'u':
- err = scanInt(&next, &ap, max);
- break;
- case 'x':
- err = scanHex(&next, &ap);
- break;
- case 's':
- err = scanString(&next, &ap);
- break;
- case '[':
- // assume %[^c]
- if ('^' != *format) {
- err = true;
- } else {
- format++;
- if (*format && *(format+1) == ']') {
- err = scanStringUntil(&next, &ap, *format);
- format += 2;
- } else {
- err = true;
- }
- }
- break;
- default:
- err = true;
- break;
- }
-
- if (err) {
- break;
- } else {
- result++;
- }
- } else if (*format++ != *next++) {
- // match input
- break;
- }
- }
-
- va_end(ap);
- return result;
-}
-
-#if defined(TEST)
-int main(int argc, char *pArgv[]) {
- int x,y,xx,yy,h;
- char buffer[100];
- unsigned u;
- char c;
- strcpy(buffer, "hello");
- char *b = buffer;
-
- if (simple_sscanf("BBX 00009 -1 +10 000",
- "BBX %d %d %d %d",
- &x, &y, &xx, &yy) != 4) {
- printf("Failed\n");
- } else {
- printf("Success %d %d %d %d\n", x, y, xx, yy);
- }
-
- if (simple_sscanf("CAT 123x-10 0x100h 123456.AUD $ ",
- "CAT %dx%d %xh %06u.AUD %c",
- &x, &y, &h, &u, &c) != 5) {
- printf("Failed\n");
- } else {
- printf("Success %d %d %d %d '%c' \n", x, y, h, u, c);
- }
-
- if (simple_sscanf("COPYRIGHT \"Copyright (c) 1984, 1987 Foo Systems Incorporated",
- "COPYRIGHT \"%[^\"]",
- b) != 1) {
- printf("Failed\n");
- } else {
- printf("Success %s\n", buffer);
- }
-
- return 0;
-}
-#endif
diff --git a/backends/platform/tizen/system.cpp b/backends/platform/tizen/system.cpp
deleted file mode 100644
index 7fe45f574e..0000000000
--- a/backends/platform/tizen/system.cpp
+++ /dev/null
@@ -1,560 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#define FORBIDDEN_SYMBOL_EXCEPTION_exit
-
-#include <FUiCtrlMessageBox.h>
-#include <FLocales.h>
-
-#include "common/config-manager.h"
-#include "common/file.h"
-#include "engines/engine.h"
-#include "graphics/font.h"
-#include "graphics/fontman.h"
-#include "graphics/fonts/bdf.h"
-#include "backends/saves/default/default-saves.h"
-#include "backends/events/default/default-events.h"
-#include "backends/audiocd/default/default-audiocd.h"
-#include "backends/mutex/mutex.h"
-#include "backends/fs/fs-factory.h"
-#include "backends/timer/tizen/timer.h"
-
-#include "backends/platform/tizen/form.h"
-#include "backends/platform/tizen/system.h"
-#include "backends/platform/tizen/graphics.h"
-#include "backends/platform/tizen/audio.h"
-
-using namespace Tizen::Base;
-using namespace Tizen::Base::Runtime;
-using namespace Tizen::Locales;
-using namespace Tizen::Ui;
-using namespace Tizen::Ui::Controls;
-using namespace Tizen::System;
-
-#define DEFAULT_CONFIG_FILE "scummvm.ini"
-#define MUTEX_BUFFER_SIZE 5
-
-//
-// TizenFilesystemFactory
-//
-class TizenFilesystemFactory : public FilesystemFactory {
- AbstractFSNode *makeRootFileNode() const;
- AbstractFSNode *makeCurrentDirectoryFileNode() const;
- AbstractFSNode *makeFileNodePath(const Common::String &path) const;
-};
-
-AbstractFSNode *TizenFilesystemFactory::makeRootFileNode() const {
- return new TizenFilesystemNode("/");
-}
-
-AbstractFSNode *TizenFilesystemFactory::makeCurrentDirectoryFileNode() const {
- return new TizenFilesystemNode("/");
-}
-
-AbstractFSNode *TizenFilesystemFactory::makeFileNodePath(const Common::String &path) const {
- AppAssert(!path.empty());
- return new TizenFilesystemNode(path);
-}
-
-//
-// TizenSaveFileManager
-//
-struct TizenSaveFileManager : public DefaultSaveFileManager {
- bool removeSavefile(const Common::String &filename);
-};
-
-bool TizenSaveFileManager::removeSavefile(const Common::String &filename) {
- // Assure the savefile name cache is up-to-date.
- assureCached(getSavePath());
- if (getError().getCode() != Common::kNoError)
- return false;
-
- // Obtain node if exists.
- SaveFileCache::const_iterator file = _saveFileCache.find(filename);
- if (file == _saveFileCache.end()) {
- return false;
- } else {
- const Common::FSNode fileNode = file->_value;
- // Remove from cache, this invalidates the 'file' iterator.
- _saveFileCache.erase(file);
- file = _saveFileCache.end();
-
- String unicodeFileName;
- StringUtil::Utf8ToString(fileNode.getPath().c_str(), unicodeFileName);
-
- switch (Tizen::Io::File::Remove(unicodeFileName)) {
- case E_SUCCESS:
- return true;
-
- case E_ILLEGAL_ACCESS:
- setError(Common::kWritePermissionDenied, "Search or write permission denied: " +
- file.getName());
- break;
-
- default:
- setError(Common::kPathDoesNotExist, "removeSavefile: '" + file.getName() +
- "' does not exist or path is invalid");
- break;
- }
-
- return false;
- }
-}
-
-//
-// TizenMutexManager
-//
-struct TizenMutexManager : public MutexManager {
- TizenMutexManager();
- ~TizenMutexManager();
- OSystem::MutexRef createMutex();
- void lockMutex(OSystem::MutexRef mutex);
- void unlockMutex(OSystem::MutexRef mutex);
- void deleteMutex(OSystem::MutexRef mutex);
-private:
- Mutex *_buffer[MUTEX_BUFFER_SIZE];
-};
-
-TizenMutexManager::TizenMutexManager() {
- for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) {
- _buffer[i] = NULL;
- }
-}
-
-TizenMutexManager::~TizenMutexManager() {
- for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) {
- if (_buffer[i] != NULL) {
- delete _buffer[i];
- }
- }
-}
-
-OSystem::MutexRef TizenMutexManager::createMutex() {
- Mutex *mutex = new Mutex();
- mutex->Create();
-
- for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) {
- if (_buffer[i] == NULL) {
- _buffer[i] = mutex;
- break;
- }
- }
-
- return (OSystem::MutexRef) mutex;
-}
-
-void TizenMutexManager::lockMutex(OSystem::MutexRef mutex) {
- Mutex *m = (Mutex *)mutex;
- m->Acquire();
-}
-
-void TizenMutexManager::unlockMutex(OSystem::MutexRef mutex) {
- Mutex *m = (Mutex *)mutex;
- m->Release();
-}
-
-void TizenMutexManager::deleteMutex(OSystem::MutexRef mutex) {
- Mutex *m = (Mutex *)mutex;
-
- for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) {
- if (_buffer[i] == m) {
- _buffer[i] = NULL;
- }
- }
-
- delete m;
-}
-
-//
-// TizenEventManager
-//
-struct TizenEventManager : public DefaultEventManager {
- TizenEventManager(Common::EventSource *boss);
- void init();
- int shouldQuit() const;
-};
-
-TizenEventManager::TizenEventManager(Common::EventSource *boss) :
- DefaultEventManager(boss) {
-}
-
-void TizenEventManager::init() {
- DefaultEventManager::init();
-
- // theme and vkbd should have now loaded - clear the splash screen
- TizenSystem *system = (TizenSystem *)g_system;
- TizenGraphicsManager *graphics = system->getGraphics();
- if (graphics) {
- graphics->setReady();
- }
-}
-
-int TizenEventManager::shouldQuit() const {
- TizenSystem *system = (TizenSystem *)g_system;
- return DefaultEventManager::shouldQuit() || system->isClosing();
-}
-
-//
-// TizenAppFrame - avoid drawing the misplaced UiTheme at startup
-//
-struct TizenAppFrame : Frame {
- result OnDraw(void) {
- logEntered();
- TizenAppForm *form = (TizenAppForm *)GetCurrentForm();
- if (form->isStarting()) {
- Canvas *canvas = GetCanvasN();
- canvas->SetBackgroundColor(Color::GetColor(COLOR_ID_BLACK));
- canvas->Clear();
- delete canvas;
- }
- return E_SUCCESS;
- }
-};
-
-//
-// TizenSystem
-//
-TizenSystem::TizenSystem(TizenAppForm *appForm) :
- _appForm(appForm),
- _audioThread(0),
- _epoch(0) {
-}
-
-result TizenSystem::Construct(void) {
- logEntered();
-
- _fsFactory = new TizenFilesystemFactory();
- if (!_fsFactory) {
- return E_OUT_OF_MEMORY;
- }
-
- _resourcePath = fromString(App::GetInstance()->GetAppResourcePath());
- return E_SUCCESS;
-}
-
-TizenSystem::~TizenSystem() {
- logEntered();
-}
-
-result TizenSystem::initModules() {
- logEntered();
-
- _mutexManager = new TizenMutexManager();
- if (!_mutexManager) {
- return E_OUT_OF_MEMORY;
- }
-
- _timerManager = new TizenTimerManager();
- if (!_timerManager) {
- return E_OUT_OF_MEMORY;
- }
-
- _savefileManager = new TizenSaveFileManager();
- if (!_savefileManager) {
- return E_OUT_OF_MEMORY;
- }
-
- _graphicsManager = new TizenGraphicsManager(_appForm);
- if (!_graphicsManager || getGraphics()->Construct() != E_SUCCESS) {
- return E_OUT_OF_MEMORY;
- }
-
- // depends on _graphicsManager when ENABLE_VKEYBD enabled
- _eventManager = new TizenEventManager(this);
- if (!_eventManager) {
- return E_OUT_OF_MEMORY;
- }
-
- _audioThread = new AudioThread();
- if (!_audioThread) {
- return E_OUT_OF_MEMORY;
- }
-
- _mixer = _audioThread->Construct();
- if (!_mixer) {
- return E_OUT_OF_MEMORY;
- }
-
- _audiocdManager = (AudioCDManager *)new DefaultAudioCDManager();
- if (!_audiocdManager) {
- return E_OUT_OF_MEMORY;
- }
-
- if (IsFailed(_audioThread->Start())) {
- AppLog("Failed to start audio thread");
- return E_OUT_OF_MEMORY;
- }
-
- logLeaving();
- return E_SUCCESS;
-}
-
-void TizenSystem::initBackend() {
- logEntered();
-
- Common::String dataPath = fromString(App::GetInstance()->GetAppDataPath());
-
- // use the mobile device theme
- ConfMan.set("gui_theme", _resourcePath + "scummremastered");
-
- // allow tizen virtual keypad pack to be found
- ConfMan.set("vkeybdpath", _resourcePath + "vkeybd_bada");
- ConfMan.set("vkeybd_pack_name", "vkeybd_bada");
-
- // set default save path to writable area
- if (!ConfMan.hasKey("savepath")) {
- ConfMan.set("savepath", dataPath);
- }
-
- // default to no auto-save
- if (!ConfMan.hasKey("autosave_period")) {
- ConfMan.setInt("autosave_period", 0);
- }
-
- ConfMan.registerDefault("fullscreen", true);
- ConfMan.registerDefault("aspect_ratio", false);
- ConfMan.setBool("confirm_exit", false);
-
- SystemTime::GetTicks(_epoch);
-
- if (E_SUCCESS != initModules()) {
- AppLog("initModules failed");
- } else {
- OSystem::initBackend();
-
- // replace kBigGUIFont for the vkbd and on-screen messages
- Common::String fontCacheFile = dataPath + "helvR24.fcc";
- TizenFilesystemNode file(fontCacheFile);
- if (!file.exists()) {
- Common::String bdfFile = _resourcePath + "fonts/helvR24.bdf";
- TizenFilesystemNode file(bdfFile);
- if (file.exists()) {
- Common::SeekableReadStream *stream = file.createReadStream();
- Common::File fontFile;
- if (stream && fontFile.open(stream, bdfFile)) {
- Graphics::BdfFont *font = Graphics::BdfFont::loadFont(fontFile);
- Graphics::BdfFont::cacheFontData(*font, fontCacheFile);
- FontMan.setFont(Graphics::FontManager::kBigGUIFont, font);
- }
- }
- } else {
- Common::SeekableReadStream *stream = file.createReadStream();
- Common::File fontFile;
- if (stream && fontFile.open(stream, fontCacheFile)) {
- Graphics::BdfFont *font = Graphics::BdfFont::loadFromCache(fontFile);
- if (font) {
- FontMan.setFont(Graphics::FontManager::kBigGUIFont, font);
- }
- }
- }
- }
- logLeaving();
-}
-
-void TizenSystem::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
- // allow translations.dat and game .DAT files to be found
- s.addDirectory(_resourcePath, _resourcePath, priority);
-}
-
-void TizenSystem::destroyBackend() {
- closeAudio();
-
- delete _graphicsManager;
- _graphicsManager = NULL;
-
- delete _savefileManager;
- _savefileManager = NULL;
-
- delete _fsFactory;
- _fsFactory = NULL;
-
- delete _mixer;
- _mixer = NULL;
-
- delete _audiocdManager;
- _audiocdManager = NULL;
-
- delete _timerManager;
- _timerManager = NULL;
-
- delete _eventManager;
- _eventManager = NULL;
-
- delete _mutexManager;
- _mutexManager = NULL;
-}
-
-bool TizenSystem::pollEvent(Common::Event &event) {
- return _appForm->pollEvent(event);
-}
-
-uint32 TizenSystem::getMillis(bool skipRecord) {
- long long result, ticks = 0;
- SystemTime::GetTicks(ticks);
- result = ticks - _epoch;
- return result;
-}
-
-void TizenSystem::delayMillis(uint msecs) {
- if (!_appForm->isClosing()) {
- Thread::Sleep(msecs);
- }
-}
-
-void TizenSystem::updateScreen() {
- if (_graphicsManager != NULL) {
- _graphicsManager->updateScreen();
- }
-}
-
-void TizenSystem::getTimeAndDate(TimeDate &td) const {
- DateTime currentTime;
-
- if (E_SUCCESS == SystemTime::GetCurrentTime(WALL_TIME, currentTime)) {
- td.tm_sec = currentTime.GetSecond();
- td.tm_min = currentTime.GetMinute();
- td.tm_hour = currentTime.GetHour();
- td.tm_mday = currentTime.GetDay();
- td.tm_mon = currentTime.GetMonth();
- td.tm_year = currentTime.GetYear();
-
- Calendar *calendar = Calendar::CreateInstanceN(CALENDAR_GREGORIAN);
- calendar->SetTime(currentTime);
- td.tm_wday = calendar->GetTimeField(TIME_FIELD_DAY_OF_WEEK) - 1;
- delete calendar;
- }
-}
-
-void TizenSystem::fatalError() {
- systemError("ScummVM: Fatal internal error.");
-}
-
-void TizenSystem::exitSystem() {
- if (_appForm) {
- closeAudio();
- closeGraphics();
- _appForm->exitSystem();
- }
-}
-
-void TizenSystem::quit() {
- exit(0);
-}
-
-void TizenSystem::logMessage(LogMessageType::Type type, const char *message) {
- if (type == LogMessageType::kError) {
- systemError(message);
- } else {
- AppLog(message);
- }
-}
-
-Common::SeekableReadStream *TizenSystem::createConfigReadStream() {
- TizenFilesystemNode file(fromString(App::GetInstance()->GetAppDataPath()) + DEFAULT_CONFIG_FILE);
- return file.createReadStream();
-}
-
-Common::WriteStream *TizenSystem::createConfigWriteStream() {
- TizenFilesystemNode file(fromString(App::GetInstance()->GetAppDataPath()) + DEFAULT_CONFIG_FILE);
- return file.createWriteStream();
-}
-
-void TizenSystem::closeAudio() {
- if (_audioThread) {
- _audioThread->Quit();
- _audioThread->Join();
- delete _audioThread;
- _audioThread = NULL;
- }
-}
-
-void TizenSystem::closeGraphics() {
- if (_graphicsManager) {
- delete _graphicsManager;
- _graphicsManager = NULL;
- }
-}
-
-void TizenSystem::setMute(bool on) {
- // only change mute after eventManager init() has completed
- if (_audioThread) {
- TizenGraphicsManager *graphics = getGraphics();
- if (graphics && graphics->isReady()) {
- _audioThread->setMute(on);
- }
- }
-}
-
-//
-// create the ScummVM system
-//
-TizenAppForm *systemStart(Tizen::App::Application *app) {
- logEntered();
-
- Frame *appFrame = new (std::nothrow) TizenAppFrame();
- if (!appFrame || appFrame->Construct() == E_FAILURE) {
- AppLog("Failed to create appFrame");
- return NULL;
- }
- app->AddFrame(*appFrame);
-
- TizenAppForm *appForm = new TizenAppForm();
- if (!appForm) {
- AppLog("Failed to create appForm");
- return NULL;
- }
-
- if (E_SUCCESS != appForm->Construct() ||
- E_SUCCESS != appFrame->AddControl(appForm)) {
- delete appForm;
- AppLog("Failed to construct appForm");
- return NULL;
- }
-
- appFrame->SetCurrentForm(appForm);
- appForm->GetVisualElement()->SetShowState(false);
-
- logLeaving();
- return appForm;
-}
-
-//
-// display a fatal error notification
-//
-void systemError(const char *message) {
- AppLog("Fatal system error: %s", message);
-
- if (strspn(message, "Config file buggy:") > 0) {
- Tizen::Io::File::Remove(App::GetInstance()->GetAppDataPath() + DEFAULT_CONFIG_FILE);
- Application::GetInstance()->SendUserEvent(USER_MESSAGE_EXIT_ERR_CONFIG, NULL);
- } else {
- ArrayList *args = new ArrayList();
- args->Construct();
- args->Add(*(new String(message)));
- Application::GetInstance()->SendUserEvent(USER_MESSAGE_EXIT_ERR, args);
- }
-
- if (g_system) {
- TizenSystem *system = (TizenSystem *)g_system;
- system->exitSystem();
- }
-}
diff --git a/backends/platform/tizen/system.h b/backends/platform/tizen/system.h
deleted file mode 100644
index f788280ba4..0000000000
--- a/backends/platform/tizen/system.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIZEN_SYSTEM_H
-#define TIZEN_SYSTEM_H
-
-#include <FApp.h>
-#include <FGraphics.h>
-#include <FUi.h>
-#include <FSystem.h>
-#include <FBase.h>
-#include <FIoFile.h>
-
-#include "config.h"
-#include "common/scummsys.h"
-#include "backends/modular-backend.h"
-
-#include "backends/platform/tizen/fs.h"
-#include "backends/platform/tizen/form.h"
-#include "backends/platform/tizen/audio.h"
-#include "backends/platform/tizen/graphics.h"
-
-#if defined(_DEBUG)
-#define logEntered() AppLog("%s entered (%s %d)", __FUNCTION__, __FILE__, __LINE__);
-#define logLeaving() AppLog("%s leaving (%s %d)", __FUNCTION__, __FILE__, __LINE__);
-#else
-#define logEntered()
-#define logLeaving()
-#endif
-
-TizenAppForm *systemStart(Tizen::App::Application *app);
-void systemError(const char *message);
-
-#define USER_MESSAGE_EXIT 1000
-#define USER_MESSAGE_EXIT_ERR 1001
-#define USER_MESSAGE_EXIT_ERR_CONFIG 1002
-
-//
-// TizenSystem
-//
-class TizenSystem :
- public ModularBackend,
- Common::EventSource {
-public:
- TizenSystem(TizenAppForm *appForm);
- ~TizenSystem();
-
- result Construct();
- void closeAudio();
- void closeGraphics();
- void destroyBackend();
- void setMute(bool on);
- void exitSystem();
- bool isClosing() { return _appForm->isClosing(); }
-
- TizenGraphicsManager *getGraphics() {
- return dynamic_cast<TizenGraphicsManager *>(_graphicsManager);
- }
-
-private:
- void initBackend();
- result initModules();
-
- void updateScreen();
- bool pollEvent(Common::Event &event);
- uint32 getMillis(bool skipRecord = false);
- void delayMillis(uint msecs);
- void getTimeAndDate(TimeDate &t) const;
- void fatalError();
- void quit();
- void logMessage(LogMessageType::Type type, const char *message);
- void addSysArchivesToSearchSet(Common::SearchSet &s, int priority);
-
- Common::EventSource *getDefaultEventSource() { return this; }
- Common::SeekableReadStream *createConfigReadStream();
- Common::WriteStream *createConfigWriteStream();
-
- TizenAppForm *_appForm;
- AudioThread *_audioThread;
- long long _epoch;
- Common::String _resourcePath;
-};
-
-#endif
diff --git a/backends/platform/tizen/tizen.mk b/backends/platform/tizen/tizen.mk
deleted file mode 100644
index d8925b62dc..0000000000
--- a/backends/platform/tizen/tizen.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-# port files built under eclipse
-
-MODULE := backends/platform/tizen
-
-$(EXECUTABLE): $(OBJS)
- rm -f $@
- arm-linux-gnueabi-ar Tru $@ $(OBJS)
diff --git a/backends/timer/tizen/timer.cpp b/backends/timer/tizen/timer.cpp
deleted file mode 100644
index dfa558615a..0000000000
--- a/backends/timer/tizen/timer.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#if defined(TIZEN)
-
-#include "backends/timer/tizen/timer.h"
-
-//
-// TimerSlot - an event driven thread
-//
-TimerSlot::TimerSlot(Common::TimerManager::TimerProc callback, uint32 interval, void *refCon) :
- _timer(0),
- _callback(callback),
- _interval(interval),
- _refCon(refCon) {
-}
-
-TimerSlot::~TimerSlot() {
- delete _timer;
-}
-
-bool TimerSlot::OnStart() {
- _timer = new Tizen::Base::Runtime::Timer();
- if (!_timer || IsFailed(_timer->Construct(*this))) {
- AppLog("Failed to create timer");
- return false;
- }
-
- if (IsFailed(_timer->StartAsRepeatable(_interval))) {
- AppLog("failed to start timer");
- return false;
- }
-
- AppLog("started timer %d", _interval);
- return true;
-}
-
-void TimerSlot::OnStop() {
- AppLog("timer stopped");
- if (_timer) {
- _timer->Cancel();
- delete _timer;
- _timer = NULL;
- }
-}
-
-void TimerSlot::OnTimerExpired(Timer &timer) {
- _callback(_refCon);
-}
-
-//
-// TizenTimerManager
-//
-TizenTimerManager::TizenTimerManager() {
-}
-
-TizenTimerManager::~TizenTimerManager() {
- for (Common::List<TimerSlot *>::iterator it = _timers.begin(); it != _timers.end(); ) {
- TimerSlot *slot = (*it);
- slot->Quit();
- slot->Join();
- delete slot;
- it = _timers.erase(it);
- }
-}
-
-bool TizenTimerManager::installTimerProc(TimerProc proc, int32 interval, void *refCon, const Common::String &id) {
- TimerSlot *slot = new TimerSlot(proc, interval / 1000, refCon);
-
- if (IsFailed(slot->Construct())) {
- AppLog("Failed to create timer thread");
- delete slot;
- return false;
- }
-
- if (IsFailed(slot->Start())) {
- delete slot;
- AppLog("Failed to start timer thread");
- return false;
- }
-
- _timers.push_back(slot);
- return true;
-}
-
-void TizenTimerManager::removeTimerProc(TimerProc proc) {
- for (Common::List<TimerSlot *>::iterator it = _timers.begin(); it != _timers.end(); ++it) {
- TimerSlot *slot = (*it);
- if (slot->_callback == proc) {
- slot->Quit();
- slot->Join();
- delete slot;
- it = _timers.erase(it);
- }
- }
-}
-
-#endif
diff --git a/backends/timer/tizen/timer.h b/backends/timer/tizen/timer.h
deleted file mode 100644
index ff5ea1a35f..0000000000
--- a/backends/timer/tizen/timer.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIZEN_TIMER_H
-#define TIZEN_TIMER_H
-
-#include <FBase.h>
-
-#include "common/timer.h"
-#include "common/list.h"
-
-using namespace Tizen::Base::Runtime;
-
-struct TimerSlot: public EventDrivenThread, public ITimerEventListener {
- TimerSlot(Common::TimerManager::TimerProc callback, uint32 interval, void *refCon);
- ~TimerSlot();
-
- bool OnStart(void);
- void OnStop(void);
- void OnTimerExpired(Timer &timer);
-
- Timer *_timer;
- Common::TimerManager::TimerProc _callback;
- uint32 _interval; // in microseconds
- void *_refCon;
-};
-
-class TizenTimerManager : public Common::TimerManager {
-public:
- TizenTimerManager();
- ~TizenTimerManager();
-
- bool installTimerProc(TimerProc proc, int32 interval, void *refCon, const Common::String &id);
- void removeTimerProc(TimerProc proc);
-
-private:
- Common::List<TimerSlot *> _timers;
-};
-
-#endif
diff --git a/configure b/configure
index b4852af733..ea97aed857 100755
--- a/configure
+++ b/configure
@@ -946,7 +946,7 @@ Configuration:
-h, --help display this help and exit
--backend=BACKEND backend to build (3ds, android, dc, dingux, ds, gcw0,
gph, iphone, ios7, maemo, n64, null, openpandora,
- ps2, psp, psp2, samsungtv, sdl, switch, tizen, webos, wii) [sdl]
+ ps2, psp, psp2, samsungtv, sdl, switch, webos, wii) [sdl]
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
@@ -999,7 +999,6 @@ Special configuration feature:
psp for PlayStation Portable
samsungtv for Samsung TV
switch for Nintendo Switch
- tizen for Samsung Tizen
webos for HP Palm WebOS
wii for Nintendo Wii
@@ -1789,11 +1788,6 @@ switch)
# Switch SDK has C++11 constructs so we must enable it
_use_cxx11=yes
;;
-tizen)
- _host_os=tizen
- _host_cpu=arm
- _host_alias=arm-linux-gnueabi
- ;;
webos)
_host_os=webos
_host_cpu=arm
@@ -1962,12 +1956,6 @@ riscos)
add_line_to_config_mk "BINDHELP := bindhelp"
fi
;;
-tizen)
- if test -z "$TIZEN_ROOTSTRAP"; then
- echo "Please set TIZEN_ROOTSTRAP in your environment. export TIZEN_ROOTSTRAP=<path to Tizen SDK device profile>"
- exit 1
- fi
- ;;
webos)
if test -z "$WEBOS_SDK"; then
echo "Please set WEBOS_SDK in your environment. export WEBOS_SDK=<path to WebOS SDK>"
@@ -1985,7 +1973,7 @@ esac
# Toolchain for Android is in NDK and is using different naming convention
if test "$_host_os" = android; then
-
+
# Check that we have the correct NDK version
echo_n "Checking NDK version... "
_ndk_gradle=$(grep "^[[:space:]]*ndkVersion" $_srcdir/dists/android/build.gradle | sed 's/[^0-9\.]//g')
@@ -1998,8 +1986,8 @@ if test "$_host_os" = android; then
fi
# Try to use a known to work toolchain
- android_toolchains="windows-x86_64 darwin-x86_64 linux-x86_64"
- for toolchain in $android_toolchains; do
+ android_toolchains="windows-x86_64 darwin-x86_64 linux-x86_64"
+ for toolchain in $android_toolchains; do
_android_toolchain="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$toolchain"
if test -d "$_android_toolchain"; then
@@ -2279,7 +2267,7 @@ if test "$have_gcc" = yes ; then
case $_host_os in
# newlib-based system include files suppress non-C89 function
# declarations under __STRICT_ANSI__, undefine it
- 3ds | amigaos* | android | androidsdl | dreamcast | ds | gamecube | mingw* | mint* | n64 | psp | ps2 | ps3 | psp2 | switch | tizen | wii )
+ 3ds | amigaos* | android | androidsdl | dreamcast | ds | gamecube | mingw* | mint* | n64 | psp | ps2 | ps3 | psp2 | switch | wii )
append_var CXXFLAGS "-U__STRICT_ANSI__"
;;
*)
@@ -2353,7 +2341,7 @@ fi
# However, some platforms use GNU extensions in system header files, so
# for these we must not use -pedantic.
case $_host_os in
-3ds | android | androidsdl | gamecube | ps2 | psp | switch | tizen | wii | webos)
+3ds | android | androidsdl | gamecube | ps2 | psp | switch | wii | webos)
;;
*)
# ICC does not support pedantic, while GCC and clang do.
@@ -2593,7 +2581,7 @@ case $_host_cpu in
openpandora)
define_in_config_if_yes yes 'USE_ARM_NEON_ASPECT_CORRECTOR'
;;
- androidsdl-armeabi | arm-*riscos | caanoo | ds | gp2x | gp2xwiz | maemo | tizen)
+ androidsdl-armeabi | arm-*riscos | caanoo | ds | gp2x | gp2xwiz | maemo )
define_in_config_if_yes yes 'USE_ARM_SCALER_ASM'
# FIXME: The following feature exhibits a bug. It produces distorted
# sound since 9003ce517ff9906b0288f9f7c02197fd091d4554. The ARM
@@ -3142,12 +3130,6 @@ EOF
_optimization_level=-O3
fi
;;
- tizen)
- add_line_to_config_mk "TIZEN_ROOTSTRAP = $TIZEN_ROOTSTRAP"
- append_var LDFLAGS "--sysroot=${TIZEN_ROOTSTRAP}"
- append_var LDFLAGS "-L${TIZEN_LIBS}/lib"
- append_var CXXFLAGS "-I${TIZEN_LIBS}/include"
- ;;
webos)
append_var CXXFLAGS "--sysroot=$WEBOS_PDK/arm-gcc/sysroot"
append_var CXXFLAGS "-I$WEBOS_PDK/include"
@@ -3601,18 +3583,6 @@ if test -n "$_host"; then
_vkeybd=yes
_port_mk="backends/platform/sdl/switch/switch.mk"
;;
- tizen)
- _unix=yes
- _backend="tizen"
- _port_mk="backends/platform/tizen/tizen.mk"
- _build_scalers=no
- _seq_midi=no
- _mt32emu=no
- _timidity=no
- _vkeybd=yes
- # Tizen relies on the OpenGL ES output thus we always enable it.
- _opengl_mode=gles
- ;;
webos)
_backend="webos"
_port_mk="backends/platform/webos/webos.mk"
@@ -3799,25 +3769,6 @@ case $_backend in
_sdl=auto
append_var MODULES "backends/platform/sdl"
;;
- tizen)
- # dirent.h not available. NONSTANDARD_PORT==ensure portdefs.h is included
- append_var DEFINES "-DTIZEN -DDISABLE_STDIO_FILESTREAM -DNONSTANDARD_PORT"
- append_var DEFINES "-DNO_STDERR_STDOUT"
- append_var DEFINES "-DDISABLE_COMMAND_LINE"
- append_var INCLUDES '-I$(srcdir)/backends/platform/tizen'
- append_var INCLUDES '-I$(TIZEN_ROOTSTRAP)/usr/include'
- append_var INCLUDES '-I$(TIZEN_ROOTSTRAP)/usr/include/osp'
- if test "$_debug_build" = yes; then
- append_var CXXFLAGS "-D_DEBUG -DBUILD_DLL -O0 -g3"
- fi
- # created a shared library for inclusion via the eclipse build
- append_var CXXFLAGS "-Wno-psabi"
- append_var CXXFLAGS "--sysroot=${TIZEN_ROOTSTRAP}"
- append_var CXXFLAGS "-fmessage-length=0"
- append_var CXXFLAGS "-fPIC"
- HOSTEXEPRE=lib
- HOSTEXEEXT=.a
- ;;
webos)
# There is no sdl-config in the WebOS PDK so we don't use find_sdlconfig here.
# The PDL library acts as the WebOS device toolchain, and is required to control the virtual keyboard among other OS-level events.
@@ -3970,7 +3921,7 @@ fi
# Enable 16bit support only for backends which support it
#
case $_backend in
- 3ds | android | androidsdl | dingux | dc | gph | iphone | ios7 | maemo | null | openpandora | psp | psp2 | samsungtv | sdl | switch | tizen | webos | wii)
+ 3ds | android | androidsdl | dingux | dc | gph | iphone | ios7 | maemo | null | openpandora | psp | psp2 | samsungtv | sdl | switch | webos | wii)
if test "$_16bit" = auto ; then
_16bit=yes
else
@@ -5341,11 +5292,6 @@ if test "$_opengl_mode" = auto ; then
esac
;;
- tizen)
- # Tizen always runs in GLES mode
- _opengl_mode=gles
- ;;
-
*)
_opengl_mode=none
;;
diff --git a/doc/cz/PrectiMe b/doc/cz/PrectiMe
index b0e0a66363..3bf2f24991 100644
--- a/doc/cz/PrectiMe
+++ b/doc/cz/PrectiMe
@@ -2052,10 +2052,6 @@ Na Windows můžete urÄit USE_WINDBG a pÅipojit WinDbg pro procházenà ladÃc
PÅeÄtÄte si prosÃm:
<https://wiki.scummvm.org/index.php/Compiling_ScummVM/Atari/FreeMiNT>
- Bada/Tizen:
- PÅeÄtÄte si prosÃm:
- <https://wiki.scummvm.org/index.php/Compiling_ScummVM/Bada/Tizen>
-
BeOS/ZETA/Haiku:
PÅeÄtÄte si prosÃm:
<https://wiki.scummvm.org/index.php/Compiling_ScummVM/BeOS/ZETA/Haiku>
diff --git a/doc/de/LIESMICH b/doc/de/LIESMICH
index 158653cdbe..cca30191da 100644
--- a/doc/de/LIESMICH
+++ b/doc/de/LIESMICH
@@ -3111,10 +3111,6 @@ Debug-Nachrichten zu durchsuchen
Weiterführende Informationen finden Sie unter:
https://wiki.scummvm.org/index.php/Compiling_ScummVM/Atari/FreeMiNT
- Bada/Tizen:
- Weiterführende Informationen finden Sie unter:
- https://wiki.scummvm.org/index.php/Compiling_ScummVM/Bada/Tizen
-
BeOS/ZETA/Haiku:
Weiterführende Informationen finden Sie unter:
https://wiki.scummvm.org/index.php/Compiling_ScummVM/BeOS/ZETA/Haiku
diff --git a/po/POTFILES b/po/POTFILES
index 2a4f57c78f..58a442dc69 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -86,7 +86,5 @@ backends/platform/maemo/maemo.cpp
backends/platform/sdl/macosx/appmenu_osx.mm
backends/platform/sdl/ps3/ps3.cpp
backends/platform/symbian/src/SymbianActions.cpp
-backends/platform/tizen/form.cpp
-backends/platform/tizen/fs.cpp
backends/platform/wii/options.cpp
backends/updates/macosx/macosx-updates.mm
Commit: 23e213574bc51c540dbd8e84ec062b0a21cba52f
https://github.com/scummvm/scummvm/commit/23e213574bc51c540dbd8e84ec062b0a21cba52f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-01T14:43:15+02:00
Commit Message:
GRAPHICS: Fix warning
Changed paths:
graphics/nine_patch.h
diff --git a/graphics/nine_patch.h b/graphics/nine_patch.h
index b45c92f09e..c79c66b711 100644
--- a/graphics/nine_patch.h
+++ b/graphics/nine_patch.h
@@ -54,7 +54,7 @@ namespace Graphics {
struct TransparentSurface;
struct Surface;
-struct MacWindowManager;
+class MacWindowManager;
struct NinePatchMark {
int offset;
Commit: eaa86f933349b8fe3384b13da0803b02657154c5
https://github.com/scummvm/scummvm/commit/eaa86f933349b8fe3384b13da0803b02657154c5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-01T14:56:16+02:00
Commit Message:
ALL: Remove WebOS port
Changed paths:
R backends/events/webossdl/webossdl-events.cpp
R backends/events/webossdl/webossdl-events.h
R backends/platform/webos/main.cpp
R backends/platform/webos/module.mk
R backends/platform/webos/webos.cpp
R backends/platform/webos/webos.h
R backends/platform/webos/webos.mk
R dists/webos/README.WebOS
R dists/webos/mojo/appinfo.json
R dists/webos/mojo/icon.png
R dists/webos/mojo/package.properties
R dists/webos/mojo/scummvmrc-default
R dists/webos/mojo/start
backends/module.mk
backends/platform/sdl/posix/posix-main.cpp
configure
engines/lure/menu.cpp
po/POTFILES
diff --git a/backends/events/webossdl/webossdl-events.cpp b/backends/events/webossdl/webossdl-events.cpp
deleted file mode 100644
index ad94891c6a..0000000000
--- a/backends/events/webossdl/webossdl-events.cpp
+++ /dev/null
@@ -1,434 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifdef WEBOS
-
-#include "common/scummsys.h"
-#include "common/system.h"
-#include "common/str.h"
-#include "common/translation.h"
-
-#include "backends/events/webossdl/webossdl-events.h"
-#include "gui/message.h"
-#include "engines/engine.h"
-
-// PDL.h provided by the official Palm WebOS PDK.
-#include <PDL.h>
-
-/**
- * WebOS devices only have a Shift key and a CTRL key. There is also an Alt
- * key (the orange key) but this is already processed by WebOS to change the
- * mode of the keys so ScummVM must not use this key as a modifier. Instead
- * pressing down the gesture area is used as Alt key.
- *
- * @param mod The pressed key modifier as detected by SDL.
- * @param event The ScummVM event to setup.
- */
-void WebOSSdlEventSource::SDLModToOSystemKeyFlags(SDL_Keymod mod,
- Common::Event &event) {
- event.kbd.flags = 0;
-
- if (mod & KMOD_SHIFT)
- event.kbd.flags |= Common::KBD_SHIFT;
- if (mod & KMOD_CTRL)
- event.kbd.flags |= Common::KBD_CTRL;
-
- // Holding down the gesture area emulates the ALT key
- if (_gestureDown)
- event.kbd.flags |= Common::KBD_ALT;
-}
-
-/**
- * Before calling the original SDL implementation this method checks if the
- * gesture area is pressed down.
- *
- * @param ev The SDL event
- * @param event The ScummVM event.
- * @return True if event was processed, false if not.
- */
-bool WebOSSdlEventSource::handleKeyDown(SDL_Event &ev, Common::Event &event) {
- // Handle gesture area tap.
- if (ev.key.keysym.sym == SDLK_WORLD_71) {
- _gestureDown = true;
- return true;
- }
-
- // Ensure that ALT key (Gesture down) is ignored when back or forward
- // gesture is detected. This is needed for WebOS 1 which releases the
- // gesture tap AFTER the backward gesture event and not BEFORE (Like
- // WebOS 2).
- if (ev.key.keysym.sym == 27 || ev.key.keysym.sym == 229) {
- _gestureDown = false;
- }
-
- // handle virtual keyboard dismiss key
- if (ev.key.keysym.sym == 24) {
- int gblPDKVersion = PDL_GetPDKVersion();
- // check for correct PDK Version, as this determines whether an
- // OS-supplied virtual keyboard is available on this device.
- if (gblPDKVersion >= 300) {
- PDL_SetKeyboardState(PDL_FALSE);
- return true;
- }
- }
-
- // Call original SDL key handler.
- return SdlEventSource::handleKeyDown(ev, event);
-}
-
-/**
- * Before calling the original SDL implementation this method checks if the
- * gesture area has been released.
- *
- * @param ev The SDL event
- * @param event The ScummVM event.
- * @return True if event was processed, false if not.
- */
-bool WebOSSdlEventSource::handleKeyUp(SDL_Event &ev, Common::Event &event) {
- // Handle gesture area tap.
- if (ev.key.keysym.sym == SDLK_WORLD_71) {
- _gestureDown = false;
- return true;
- }
-
- // handle virtual keyboard dismiss key
- if (ev.key.keysym.sym == 24) {
- int gblPDKVersion = PDL_GetPDKVersion();
- // check for correct PDK Version, as this determines whether an
- // OS-supplied virtual keyboard is available on this device.
- if (gblPDKVersion >= 300) {
- PDL_SetKeyboardState(PDL_FALSE);
- return true;
- }
- }
-
- // Call original SDL key handler.
- return SdlEventSource::handleKeyUp(ev, event);
-}
-
-/**
- * Handles mouse button press.
- *
- * @param ev The SDL event
- * @param event The ScummVM event.
- * @return True if event was processed, false if not.
- */
-bool WebOSSdlEventSource::handleMouseButtonDown(SDL_Event &ev,
- Common::Event &event) {
- _dragDiffX[ev.button.which] = 0;
- _dragDiffY[ev.button.which] = 0;
- _fingerDown[ev.button.which] = true;
- _screenDownTime[ev.button.which] = g_system->getMillis();
-
- if (ev.button.which == 0) {
- // Do a click when the finger lifts unless we leave the range
- _doClick = true;
- // Queue up dragging if auto-drag mode is on
- if (_autoDragMode)
- _queuedDragTime = g_system->getMillis() + QUEUED_DRAG_DELAY;
- // Turn drag mode on instantly for a double-tap
- else if (g_system->getMillis() - _dragStartTime < DOUBLETAP_LIMIT) {
- _dragging = true;
- event.type = Common::EVENT_LBUTTONDOWN;
- processMouseEvent(event, _curX, _curY);
- }
- // If we're not in trackpad mode, move the cursor to the tap
- if (!_trackpadMode) {
- _curX = MIN(_screenX, MAX(0, 0 + ev.motion.x));
- _curY = MIN(_screenY, MAX(0, 0 + ev.motion.y));
- // If we're already clicking, hold it until after the move.
- if (event.type == Common::EVENT_LBUTTONDOWN) {
- processMouseEvent(event, _curX, _curY);
- g_system->getEventManager()->pushEvent(event);
- }
- // Move the mouse
- event.type = Common::EVENT_MOUSEMOVE;
- processMouseEvent(event, _curX, _curY);
- }
- // Watch for a double-tap-triggered drag
- _dragStartTime = g_system->getMillis();
- } else if (ev.button.which == 1) {
- // Kill any queued drag event if a second finger goes down
- if (_queuedDragTime > 0)
- _queuedDragTime = 0;
- _doClick = false;
- }
- return true;
-}
-
-/**
- * Handles mouse button release.
- *
- * @param ev The SDL event
- * @param event The ScummVM event.
- * @return True if event was processed, false if not.
- */
-bool WebOSSdlEventSource::handleMouseButtonUp(SDL_Event &ev,
- Common::Event &event) {
- // Only react if the finger hasn't been virtually lifted already
- if (_fingerDown[ev.button.which]) {
- // No matter what, if it's the first finger that's lifted when
- // we're dragging, just lift the mouse button.
- if (ev.button.which == 0 && _dragging) {
- event.type = Common::EVENT_LBUTTONUP;
- processMouseEvent(event, _curX, _curY);
- _dragging = false;
- } else {
- // If it was the first finger and the click hasn't been
- // canceled, it's a click.
- if (ev.button.which == 0 && _doClick &&
- !_fingerDown[1] && !_fingerDown[2]) {
- event.type = Common::EVENT_LBUTTONUP;
- processMouseEvent(event, _curX, _curY);
- g_system->getEventManager()->pushEvent(event);
- event.type = Common::EVENT_LBUTTONDOWN;
- if (_queuedDragTime > 0)
- _queuedDragTime = 0;
- } else if (ev.button.which == 1 &&
- _fingerDown[0] && _fingerDown[1] && !_fingerDown[2]) {
- // If the first finger's down and the second taps, it's a
- // right mouse click.
- event.type = Common::EVENT_RBUTTONDOWN;
- processMouseEvent(event, _curX, _curY);
- _queuedRUpTime = g_system->getMillis() + QUEUED_RUP_DELAY;
- } else if (ev.button.which == 2 &&
- _fingerDown[0] && _fingerDown[1]) {
- // If two fingers are down and a third taps, it's a middle
- // click -- but lift the second finger so it doesn't register
- // as a right click.
- event.type = Common::EVENT_MBUTTONUP;
- processMouseEvent(event, _curX, _curY);
- g_system->getEventManager()->pushEvent(event);
- event.type = Common::EVENT_MBUTTONDOWN;
- _fingerDown[1] = false;
- }
- }
- // Officially lift the finger that was raised.
- _fingerDown[ev.button.which] = false;
- }
- return true;
-}
-
-/**
- * Handles mouse motion.
- *
- * @param ev The SDL event
- * @param event The ScummVM event.
- * @return True if event was processed, false if not.
- */
-bool WebOSSdlEventSource::handleMouseMotion(SDL_Event &ev,
- Common::Event &event) {
- if (_fingerDown[ev.motion.which]) {
- _dragDiffX[ev.motion.which] += ev.motion.xrel;
- _dragDiffY[ev.motion.which] += ev.motion.yrel;
-
- switch (ev.motion.which) {
- case 0:
- // If our dragDiff goes too many pixels in either direction,
- // kill the future click and any queued drag event.
- if (_doClick && (ABS(_dragDiffX[0]) > MOUSE_DEADZONE_PIXELS ||
- ABS(_dragDiffY[0]) > MOUSE_DEADZONE_PIXELS)) {
- _doClick = false;
- if (_queuedDragTime > 0)
- _queuedDragTime = 0;
- }
- // If only one finger is on the screen and moving, that's
- // the mouse pointer.
- if (!_fingerDown[1] && !_fingerDown[2]) {
- if (_trackpadMode) {
- _curX = MIN(_screenX, MAX(0, _curX + ev.motion.xrel));
- _curY = MIN(_screenY, MAX(0, _curY + ev.motion.yrel));
- } else {
- _curX = MIN(_screenX, MAX(0, 0 + ev.motion.x));
- _curY = MIN(_screenY, MAX(0, 0 + ev.motion.y));
- }
- event.type = Common::EVENT_MOUSEMOVE;
- processMouseEvent(event, _curX, _curY);
- }
- break;
- case 1:
- // Check for a two-finger swipe
- if (_fingerDown[0] && !_fingerDown[2]) {
- // Check for a vertical swipe
- if (ABS(_dragDiffY[0]) > _swipeDistY &&
- ABS(_dragDiffY[1]) > _swipeDistY) {
- // Virtually lift fingers to prevent repeat triggers
- _fingerDown[0] = _fingerDown[1] = false;
- if (_dragDiffY[0] < 0 && _dragDiffY[1] < 0) {
- // A swipe up triggers the keyboard, if it exists. We
- // test for existance of a virtual OS keyboard by
- // checking for the version of the linked PDK libs.
- int gblPDKVersion = PDL_GetPDKVersion();
- if (gblPDKVersion >= 300)
- PDL_SetKeyboardState(PDL_TRUE);
- } else if (_dragDiffY[0] > 0 && _dragDiffY[1] > 0) {
- // A swipe down triggers the menu
- if (g_engine && !g_engine->isPaused())
- g_engine->openMainMenuDialog();
- }
- return true;
- }
- // Check for a horizontal swipe
- if (ABS(_dragDiffX[0]) > _swipeDistX &&
- ABS(_dragDiffX[1]) > _swipeDistX) {
- // Virtually lift fingers to prevent repeat triggers
- _fingerDown[0] = _fingerDown[1] = false;
- if (_dragDiffX[0] < 0 && _dragDiffX[1] < 0) {
- // A swipe left presses escape
- event.type = Common::EVENT_KEYDOWN;
- event.kbd.flags = 0;
- event.kbd.keycode = Common::KEYCODE_ESCAPE;
- event.kbd.ascii = Common::ASCII_ESCAPE;
- _queuedEscapeUpTime = g_system->getMillis() +
- QUEUED_KEY_DELAY;
- } else if (_dragDiffX[0] > 0 && _dragDiffX[1] > 0) {
- // A swipe right toggles trackpad mode
- _trackpadMode = !_trackpadMode;
- g_system->showMouse(_trackpadMode);
- // I18N: Trackpad mode toggle status.
- Common::String dialogMsg(_("Trackpad mode is now"));
- dialogMsg += " ";
- // I18N: Trackpad mode on or off.
- dialogMsg += (_trackpadMode ? _("ON") : _("OFF"));
- dialogMsg += ".\n";
- // I18N: Instructions to toggle Trackpad mode.
- dialogMsg +=
- _("Swipe two fingers to the right to toggle.");
- GUI::TimedMessageDialog dialog(dialogMsg, 1500);
- dialog.runModal();
- }
- return true;
- }
- }
- break;
- case 2:
- // Check for a three-finger swipe
- if (_fingerDown[0] && _fingerDown[1]) {
- // Swipe to the right toggles Auto-drag
- if (_dragDiffX[0] > _swipeDistX &&
- _dragDiffX[1] > _swipeDistX &&
- _dragDiffX[2] > _swipeDistX) {
- // Virtually lift fingers to prevent repeat triggers
- _fingerDown[0] = _fingerDown[1] = _fingerDown[2] = false;
- // Toggle Auto-drag mode
- _autoDragMode = !_autoDragMode;
- // I18N: Auto-drag toggle status.
- Common::String dialogMsg(_("Auto-drag mode is now"));
- dialogMsg += " ";
- // I18N: Auto-drag on or off.
- dialogMsg += (_autoDragMode ? _("ON") : _("OFF"));
- dialogMsg += ".\n";
- // I18N: Instructions to toggle auto-drag.
- dialogMsg += _(
- "Swipe three fingers to the right to toggle.");
- GUI::TimedMessageDialog dialog(dialogMsg, 1500);
- dialog.runModal();
- return true;
- } else if (_dragDiffY[0] > _swipeDistY &&
- _dragDiffY[1] > _swipeDistY &&
- _dragDiffY[2] > _swipeDistY ) {
- // Swipe down to emulate spacebar (pause)
- // Virtually lift fingers to prevent repeat triggers
- _fingerDown[0] = _fingerDown[1] = _fingerDown[2] = false;
- // Press space
- event.type = Common::EVENT_KEYDOWN;
- event.kbd.flags = 0;
- event.kbd.keycode = Common::KEYCODE_SPACE;
- event.kbd.ascii = Common::ASCII_SPACE;
- _queuedSpaceUpTime = g_system->getMillis() +
- QUEUED_KEY_DELAY;
- }
- }
- }
- }
- return true;
-}
-
-/**
- * Before calling the original SDL implementation, this method loads in
- * queued events.
- *
- * @param event The ScummVM event
- */
-bool WebOSSdlEventSource::pollEvent(Common::Event &event) {
- uint32 curTime = g_system->getMillis();
-
- // Event-dependent nitializations for when SDL runs its first poll.
- if (_firstPoll) {
- // Set the initial dimensions
- calculateDimensions();
-
- // Having a mouse pointer on screen when not in Trackpad mode is poor
- // interface design, because the user won't know whether to tap buttons
- // or drag the pointer to them. On the first poll, set the appropriate
- // pointer visibility.
- g_system->showMouse(_trackpadMode);
- _firstPoll = false;
- }
-
- // Run down the priority list for queued events. The built-in
- // event queue runs events on the next poll, which causes many
- // WebOS devices (and a few game engines) to ignore certain inputs.
- // Allowing keys and clicks to stay "down" longer is enough to register
- // the press.
- if (_queuedEscapeUpTime != 0 && curTime >= _queuedEscapeUpTime) {
- event.type = Common::EVENT_KEYUP;
- event.kbd.flags = 0;
- event.kbd.keycode = Common::KEYCODE_ESCAPE;
- event.kbd.ascii = Common::ASCII_ESCAPE;
- _queuedEscapeUpTime = 0;
- return true;
- } else if (_queuedSpaceUpTime != 0 && curTime >= _queuedSpaceUpTime) {
- event.type = Common::EVENT_KEYUP;
- event.kbd.flags = 0;
- event.kbd.keycode = Common::KEYCODE_SPACE;
- event.kbd.ascii = Common::ASCII_SPACE;
- _queuedSpaceUpTime = 0;
- return true;
- } else if (_queuedRUpTime != 0 && curTime >= _queuedRUpTime) {
- event.type = Common::EVENT_RBUTTONUP;
- processMouseEvent(event, _curX, _curY);
- _queuedRUpTime = 0;
- return true;
- } else if (_queuedDragTime != 0 && curTime >= _queuedDragTime) {
- event.type = Common::EVENT_LBUTTONDOWN;
- _dragging = true;
- processMouseEvent(event, _curX, _curY);
- _queuedDragTime = 0;
- return true;
- }
-
- return SdlEventSource::pollEvent(event);
-}
-
-/**
- * Sets the _screenX and _screenY variables to the effective screen dimensions,
- * and alters _swipeDistX and _swipeDistY to the correct relative values.
- */
-void WebOSSdlEventSource::calculateDimensions() {
- _screenX = g_system->getOverlayWidth();
- _screenY = g_system->getOverlayHeight();
- _swipeDistX = _screenX * SWIPE_PERCENT_HORIZ / 100;
- _swipeDistY = _screenY * SWIPE_PERCENT_VERT / 100;
-}
-
-#endif
diff --git a/backends/events/webossdl/webossdl-events.h b/backends/events/webossdl/webossdl-events.h
deleted file mode 100644
index f0f76804d2..0000000000
--- a/backends/events/webossdl/webossdl-events.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#if !defined(BACKEND_EVENTS_SDL_WEBOS_H) && !defined(DISABLE_DEFAULT_EVENTMANAGER)
-#define BACKEND_EVENTS_SDL_WEBOS_H
-
-#include "backends/events/sdl/sdl-events.h"
-
-/**
- * SDL events manager for WebOS
- */
-class WebOSSdlEventSource : public SdlEventSource {
-public:
- enum {
- DOUBLETAP_LIMIT = 400,
- MAX_FINGERS = 3,
- MOUSE_DEADZONE_PIXELS = 5,
- QUEUED_DRAG_DELAY = 500,
- QUEUED_KEY_DELAY = 250,
- QUEUED_RUP_DELAY = 50,
- SWIPE_PERCENT_HORIZ = 15,
- SWIPE_PERCENT_VERT = 20
- };
- WebOSSdlEventSource() :
- _gestureDown(false),
- _dragStartTime(0), _dragging(false),
- _curX(0), _curY(0),
- _screenX(0), _screenY(0),
- _trackpadMode(false), _autoDragMode(true),
- _doClick(true),
- _queuedDragTime(0), _queuedEscapeUpTime(0), _queuedSpaceUpTime(0),
- _queuedRUpTime(0),
- _firstPoll(true) {
- for (int i = 0; i < MAX_FINGERS; i++) {
- _fingerDown[i] = false;
- _screenDownTime[i] = _dragDiffX[i] = _dragDiffY[i] = 0;
- }
- };
-protected:
- // Inidicates if gesture area is pressed down or not.
- bool _gestureDown;
-
- // The timestamp when screen was pressed down for each finger.
- uint32 _screenDownTime[MAX_FINGERS];
-
- // The timestamp when a possible drag operation was triggered.
- uint32 _dragStartTime;
-
- // The distance each finger traveled from touch to release.
- int _dragDiffX[MAX_FINGERS], _dragDiffY[MAX_FINGERS];
-
- // Indicates if we are in drag mode.
- bool _dragging;
-
- // The current mouse position on the screen.
- int _curX, _curY;
-
- // The current screen dimensions
- int _screenX, _screenY;
-
- // The drag distance for linear gestures
- int _swipeDistX, _swipeDistY;
-
- // Indicates if we're in trackpad mode or tap-to-move mode.
- bool _trackpadMode;
-
- // Indicates if we're in automatic drag mode.
- bool _autoDragMode;
-
- // Tracks which fingers are currently touching the screen.
- bool _fingerDown[MAX_FINGERS];
-
- // Indicates if a click should be executed when the first finger is lifted
- bool _doClick;
-
- // Indicates whether the event poll has been run before
- bool _firstPoll;
-
- // Event queues
- uint32 _queuedDragTime, _queuedEscapeUpTime, _queuedSpaceUpTime,
- _queuedRUpTime;
-
- // SDL overrides
- virtual void SDLModToOSystemKeyFlags(SDL_Keymod mod, Common::Event &event);
- virtual bool handleKeyDown(SDL_Event &ev, Common::Event &event);
- virtual bool handleKeyUp(SDL_Event &ev, Common::Event &event);
- virtual bool handleMouseButtonDown(SDL_Event &ev, Common::Event &event);
- virtual bool handleMouseButtonUp(SDL_Event &ev, Common::Event &event);
- virtual bool handleMouseMotion(SDL_Event &ev, Common::Event &event);
- virtual bool pollEvent(Common::Event &event);
-
- // Utility functions
- void calculateDimensions();
-};
-
-#endif
diff --git a/backends/module.mk b/backends/module.mk
index 8b1e9b7410..4918fe2353 100644
--- a/backends/module.mk
+++ b/backends/module.mk
@@ -331,11 +331,6 @@ MODULE_OBJS += \
events/samsungtvsdl/samsungtvsdl-events.o
endif
-ifeq ($(BACKEND),webos)
-MODULE_OBJS += \
- events/webossdl/webossdl-events.o
-endif
-
ifeq ($(BACKEND),wii)
MODULE_OBJS += \
fs/wii/wii-fs.o \
diff --git a/backends/platform/sdl/posix/posix-main.cpp b/backends/platform/sdl/posix/posix-main.cpp
index 736af75b8e..92e4acae15 100644
--- a/backends/platform/sdl/posix/posix-main.cpp
+++ b/backends/platform/sdl/posix/posix-main.cpp
@@ -22,7 +22,7 @@
#include "common/scummsys.h"
-#if defined(POSIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(MAEMO) && !defined(WEBOS) && !defined(GPH_DEVICE) && !defined(GP2X) && !defined(DINGUX) && !defined(OPENPANDORA) && !defined(PLAYSTATION3) && !defined(PSP2) && !defined(ANDROIDSDL) && !defined(NINTENDO_SWITCH)
+#if defined(POSIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(MAEMO) && !defined(GPH_DEVICE) && !defined(GP2X) && !defined(DINGUX) && !defined(OPENPANDORA) && !defined(PLAYSTATION3) && !defined(PSP2) && !defined(ANDROIDSDL) && !defined(NINTENDO_SWITCH)
#include "backends/platform/sdl/posix/posix.h"
#include "backends/plugins/sdl/sdl-provider.h"
diff --git a/backends/platform/webos/main.cpp b/backends/platform/webos/main.cpp
deleted file mode 100644
index 48a265ca9f..0000000000
--- a/backends/platform/webos/main.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h
-
-#include "backends/platform/webos/webos.h"
-#include "backends/plugins/sdl/sdl-provider.h"
-#include "base/main.h"
-
-#if defined(WEBOS)
-
-#include <unistd.h>
-
-int main(int argc, char* argv[]) {
- g_system = new OSystem_SDL_WebOS();
- assert(g_system);
-
- ((OSystem_SDL_WebOS *)g_system)->init();
-
-#ifdef DYNAMIC_MODULES
- PluginManager::instance().addPluginProvider(new SDLPluginProvider());
-#endif
-
- // Invoke the actual ScummVM main entry point:
- int res = scummvm_main(argc, argv);
-
- // Free OSystem
- g_system->destroy();
-
- return res;
-}
-
-#endif
diff --git a/backends/platform/webos/module.mk b/backends/platform/webos/module.mk
deleted file mode 100644
index fe4ec1e079..0000000000
--- a/backends/platform/webos/module.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-MODULE := backends/platform/webos
-
-MODULE_OBJS := \
- main.o \
- webos.o
-
-# We don't use rules.mk but rather manually update OBJS and MODULE_DIRS.
-MODULE_OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS))
-OBJS := $(MODULE_OBJS) $(OBJS)
-MODULE_DIRS += $(sort $(dir $(MODULE_OBJS)))
diff --git a/backends/platform/webos/webos.cpp b/backends/platform/webos/webos.cpp
deleted file mode 100644
index da60b27713..0000000000
--- a/backends/platform/webos/webos.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "backends/platform/webos/webos.h"
-#include "backends/events/webossdl/webossdl-events.h"
-#include "backends/keymapper/keymapper.h"
-
-#if defined(WEBOS)
-
-using namespace Common;
-
-OSystem_SDL_WebOS::OSystem_SDL_WebOS()
- :
- OSystem_POSIX() {
-}
-
-/**
- * Initializes the backend.
- */
-void OSystem_SDL_WebOS::initBackend() {
- // Create the events manager
- if (_eventSource == 0)
- _eventSource = new WebOSSdlEventSource();
-
- // Call parent implementation of this method
- OSystem_SDL::initBackend();
-}
-
-#endif
diff --git a/backends/platform/webos/webos.h b/backends/platform/webos/webos.h
deleted file mode 100644
index a2535ddc08..0000000000
--- a/backends/platform/webos/webos.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef PLATFORM_SDL_WEBOS_H
-#define PLATFORM_SDL_WEBOS_H
-
-#include "common/system.h"
-#include "backends/platform/sdl/posix/posix.h"
-
-class OSystem_SDL_WebOS : public OSystem_POSIX {
-public:
- OSystem_SDL_WebOS();
-
- virtual void initBackend();
-};
-
-#endif
diff --git a/backends/platform/webos/webos.mk b/backends/platform/webos/webos.mk
deleted file mode 100644
index 07d8aab917..0000000000
--- a/backends/platform/webos/webos.mk
+++ /dev/null
@@ -1,105 +0,0 @@
-# WebOS specific build targets
-# ============================================================================
-#
-# Build instructions:
-#
-# 1. Install the WebOS SDK and PDK and setup the environment variables
-# WEBOS_SDK and WEBOS_PDK accordingly.
-#
-# 2. Cross-compile zlib, flac, mad and tremor and install it into the PDK.
-#
-# 3. Prepare the ScummVM source for a webOS build:
-# $ ./configure --host=webos --enable-plugins --default-dynamic \
-# --enable-release
-#
-# 4. Create the package:
-# $ make package
-#
-# The package is now in the "portdist" folder.
-#
-# See https://wiki.scummvm.org/index.php/Compiling_ScummVM/WebOS for
-# more detailed build instructions.
-#
-#
-# Palm App catalog instructions:
-#
-# VER_PACKAGE must be set to a number which is higher than the currently
-# used package version in the app catalog. So when creating an updated
-# package for ScummVM 1.3.9 and the current ScummVM package in the app
-# catalog is version 1.3.0902 then you must specify VER_PACKAGE=3 to create
-# the ScummVM package with version 1.3.0903. Yeah, I know that's ugly but
-# WebOS package version numbers are restricted to three numeric components.
-#
-# As long as Palm doesn't support Team-maintained apps the uploaded packages
-# MUST NOT be packaged with the default "org.scummvm" base id. Instead apps
-# must be uploaded with a user-specific base id. A good practice is using
-# the github user as base id: com.github.<username>. It is also necessary
-# to use a user-specific app name when submitting the created package to the
-# Palm app catalog. Use "ScummVM (<username>)" instead of "ScummVM" and
-# "ScummVM Beta (<username>)" instead of "ScummVM Beta".
-#
-# The app id is automatically parsed from the installation prefix. So add a
-# configure parameter like this to prepare a build of a package for the Palm
-# App Catalog:
-#
-# --prefix=/media/cryptofs/apps/usr/palm/applications/com.github.kayahr.scummvm
-#
-# To build a package for the Palm Beta App Catalog add "-beta" to the prefix:
-#
-# --prefix=/media/cryptofs/apps/usr/palm/applications/com.github.kayahr.scummvm-beta
-# ============================================================================
-
-# Increment this number when the packaging of the app has been changed while
-# ScummVM itself has the same version as before. The number can be reset to
-# 0 when the ScummVM version is increased.
-VER_PACKAGE = 0
-
-PATH_DIST = $(srcdir)/dists/webos
-PATH_MOJO = $(PATH_DIST)/mojo
-APP_ID = $(shell basename $(prefix))
-APP_VERSION = $(shell printf "%d.%d.%02d%02d" $(VER_MAJOR) $(VER_MINOR) $(VER_PATCH) $(VER_PACKAGE))
-DESTDIR ?= staging
-PORTDISTDIR ?= portdist
-ifeq ($(HOST_COMPILER),Darwin)
- SED_DASH_I = "-i \"\""
-else
- SED_DASH_I = "-i"
-endif
-
-install: all
- $(QUIET)$(INSTALL) -d "$(DESTDIR)$(prefix)"
-ifeq ($(HOST_COMPILER),Darwin)
- $(QUIET)$(INSTALL) -m 0644 "$(PATH_MOJO)/"* "$(DESTDIR)$(prefix)/"
-else
- $(QUIET)$(INSTALL) -m 0644 -t "$(DESTDIR)$(prefix)/" "$(PATH_MOJO)/"*
-endif
- $(QUIET)$(INSTALL) -m 0755 "$(PATH_MOJO)/start" "$(DESTDIR)$(prefix)/"
- $(QUIET)$(INSTALL) -d "$(DESTDIR)$(bindir)"
- $(QUIET)$(INSTALL) -c -m 755 "./$(EXECUTABLE)" "$(DESTDIR)$(bindir)/$(EXECUTABLE)"
- $(QUIET)$(STRIP) "$(DESTDIR)$(bindir)/$(EXECUTABLE)"
- $(QUIET)$(INSTALL) -d "$(DESTDIR)$(docdir)"
- $(QUIET)$(INSTALL) -c -m 644 $(DIST_FILES_DOCS) "$(DESTDIR)$(docdir)"
- $(QUIET)$(INSTALL) -d "$(DESTDIR)$(datadir)"
- $(QUIET)$(INSTALL) -c -m 644 $(DIST_FILES_THEMES) $(DIST_FILES_NETWORKING) $(DIST_FILES_VKEYBD) $(DIST_FILES_ENGINEDATA) "$(DESTDIR)$(datadir)/"
-ifdef DYNAMIC_MODULES
- $(QUIET)$(INSTALL) -d "$(DESTDIR)$(libdir)/"
- $(QUIET)$(INSTALL) -c -m 644 $(PLUGINS) "$(DESTDIR)$(libdir)/"
- $(QUIET)$(STRIP) "$(DESTDIR)$(libdir)/"*
-endif
- $(QUIET)sed $(SED_DASH_I) s/'APP_VERSION'/'$(APP_VERSION)'/ "$(DESTDIR)$(prefix)/appinfo.json"
- $(QUIET)sed $(SED_DASH_I) s/'APP_ID'/'$(APP_ID)'/ "$(DESTDIR)$(prefix)/appinfo.json"
-ifneq (,$(findstring -beta,$(APP_ID)))
- $(QUIET)sed $(SED_DASH_I) s/'APP_TITLE'/'ScummVM Beta'/ "$(DESTDIR)$(prefix)/appinfo.json"
-else
- $(QUIET)sed $(SED_DASH_I) s/'APP_TITLE'/'ScummVM'/ "$(DESTDIR)$(prefix)/appinfo.json"
-endif
-
-uninstall:
- $(QUIET)$(RM_REC) "$(DESTDIR)$(prefix)"
-
-package: uninstall install
- $(QUIET)$(RM_REC) "$(PORTDISTDIR)"
- $(QUIET)$(MKDIR) "$(PORTDISTDIR)"
- $(QUIET)$(WEBOS_SDK)/bin/palm-package --use-v1-format "$(DESTDIR)$(prefix)" -o "$(PORTDISTDIR)"
-
-.PHONY: install uninstall package
diff --git a/configure b/configure
index ea97aed857..19342eb839 100755
--- a/configure
+++ b/configure
@@ -946,7 +946,7 @@ Configuration:
-h, --help display this help and exit
--backend=BACKEND backend to build (3ds, android, dc, dingux, ds, gcw0,
gph, iphone, ios7, maemo, n64, null, openpandora,
- ps2, psp, psp2, samsungtv, sdl, switch, webos, wii) [sdl]
+ ps2, psp, psp2, samsungtv, sdl, switch, wii) [sdl]
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
@@ -999,7 +999,6 @@ Special configuration feature:
psp for PlayStation Portable
samsungtv for Samsung TV
switch for Nintendo Switch
- webos for HP Palm WebOS
wii for Nintendo Wii
Game engines:
@@ -1788,21 +1787,6 @@ switch)
# Switch SDK has C++11 constructs so we must enable it
_use_cxx11=yes
;;
-webos)
- _host_os=webos
- _host_cpu=arm
- _host_alias=arm-none-linux-gnueabi
- # The prefix is always the same on WebOS so we hardcode the default
- # here. It is still possible to define a custom prefix which is
- # needed when packaging the app with a user-specific app ID.
- test "x$prefix" = xNONE && prefix=/media/cryptofs/apps/usr/palm/applications/org.scummvm.scummvm
- # WebOS apps are installed into app-specific directories. The
- # default directory structure of ScummVM makes no sense here so we
- # hardcode WebOS specific directories here.
- datarootdir='${prefix}/data'
- datadir='${datarootdir}'
- docdir='${prefix}/doc'
- ;;
wii)
_host_os=wii
_host_cpu=powerpc
@@ -1956,16 +1940,6 @@ riscos)
add_line_to_config_mk "BINDHELP := bindhelp"
fi
;;
-webos)
- if test -z "$WEBOS_SDK"; then
- echo "Please set WEBOS_SDK in your environment. export WEBOS_SDK=<path to WebOS SDK>"
- exit 1
- fi
- if test -z "$WEBOS_PDK"; then
- echo "Please set WEBOS_PDK in your environment. export WEBOS_PDK=<path to WebOS PDK>"
- exit 1
- fi
- ;;
*)
;;
esac
@@ -2341,7 +2315,7 @@ fi
# However, some platforms use GNU extensions in system header files, so
# for these we must not use -pedantic.
case $_host_os in
-3ds | android | androidsdl | gamecube | ps2 | psp | switch | wii | webos)
+3ds | android | androidsdl | gamecube | ps2 | psp | switch | wii)
;;
*)
# ICC does not support pedantic, while GCC and clang do.
@@ -3130,22 +3104,6 @@ EOF
_optimization_level=-O3
fi
;;
- webos)
- append_var CXXFLAGS "--sysroot=$WEBOS_PDK/arm-gcc/sysroot"
- append_var CXXFLAGS "-I$WEBOS_PDK/include"
- append_var CXXFLAGS "-I$WEBOS_PDK/include/SDL"
- append_var CXXFLAGS "-I$WEBOS_PDK/device/usr/include"
- # These compiler options are needed to support the Palm Pixi
- append_var CXXFLAGS "-mcpu=arm1136jf-s"
- append_var CXXFLAGS "-mfpu=vfp "
- append_var CXXFLAGS "-mfloat-abi=softfp"
- append_var LDFLAGS "-L$WEBOS_PDK/device/lib"
- append_var LDFLAGS "-L$WEBOS_PDK/device/usr/lib"
- append_var LDFLAGS "-Wl,--allow-shlib-undefined"
- append_var LDFLAGS "--sysroot=$WEBOS_PDK/arm-gcc/sysroot"
- add_line_to_config_mk "WEBOS_SDK = $WEBOS_SDK"
- _seq_midi=no
- ;;
wii)
_optimization_level=-Os
append_var CXXFLAGS "-mrvl"
@@ -3583,17 +3541,6 @@ if test -n "$_host"; then
_vkeybd=yes
_port_mk="backends/platform/sdl/switch/switch.mk"
;;
- webos)
- _backend="webos"
- _port_mk="backends/platform/webos/webos.mk"
- _build_scalers=yes
- _build_hq_scalers=no
- _timidity=no
- _mt32emu=no
- _seq_midi=no
- _vkeybd=no
- add_line_to_config_mk "HOST_COMPILER = `uname`"
- ;;
wii)
_backend="wii"
_build_scalers=no
@@ -3769,15 +3716,6 @@ case $_backend in
_sdl=auto
append_var MODULES "backends/platform/sdl"
;;
- webos)
- # There is no sdl-config in the WebOS PDK so we don't use find_sdlconfig here.
- # The PDL library acts as the WebOS device toolchain, and is required to control the virtual keyboard among other OS-level events.
- append_var LIBS "-lSDL -lpdl"
- append_var DEFINES "-DWEBOS"
- append_var MODULES "backends/platform/sdl"
- _sdl=yes
- _sdlversion=1.2.0
- ;;
wii)
append_var DEFINES "-D__WII__"
append_var DEFINES "-DGEKKO"
@@ -3921,7 +3859,7 @@ fi
# Enable 16bit support only for backends which support it
#
case $_backend in
- 3ds | android | androidsdl | dingux | dc | gph | iphone | ios7 | maemo | null | openpandora | psp | psp2 | samsungtv | sdl | switch | webos | wii)
+ 3ds | android | androidsdl | dingux | dc | gph | iphone | ios7 | maemo | null | openpandora | psp | psp2 | samsungtv | sdl | switch | wii)
if test "$_16bit" = auto ; then
_16bit=yes
else
@@ -3997,7 +3935,7 @@ case $_host_os in
amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | ps3 | psp2 | psp | riscos | wii)
_posix=no
;;
- 3ds | android | androidsdl | beos* | bsd* | darwin* | freebsd* | gnu* | gph-linux | haiku* | hpux* | iphone | ios7 | irix*| k*bsd*-gnu* | linux* | maemo | mint* | netbsd* | openbsd* | solaris* | sunos* | switch | uclinux* | webos)
+ 3ds | android | androidsdl | beos* | bsd* | darwin* | freebsd* | gnu* | gph-linux | haiku* | hpux* | iphone | ios7 | irix*| k*bsd*-gnu* | linux* | maemo | mint* | netbsd* | openbsd* | solaris* | sunos* | switch | uclinux*)
_posix=yes
;;
os2-emx*)
@@ -4219,18 +4157,6 @@ PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backend
_mak_plugins='
LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/main_prog.ld
PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/plugin.ld -lstdc++ -lc
-'
- ;;
- webos)
- _plugin_prefix="lib"
- _plugin_suffix=".so"
- append_var CXXFLAGS "-fpic"
- append_var LIBS "-ldl"
-_mak_plugins='
-PLUGIN_EXTRA_DEPS =
-PLUGIN_LDFLAGS += -shared $(LDFLAGS)
-PRE_OBJS_FLAGS := -Wl,-export-dynamic -Wl,-whole-archive
-POST_OBJS_FLAGS := -Wl,-no-whole-archive
'
;;
*)
@@ -5735,8 +5661,8 @@ case $_backend in
# Add ../plugins as a path so plugins can be found when running from a .PND.
append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"../plugins\\\""
;;
- maemo | webos)
- # The WebOS and Maemo apps want the plugins in the "lib" directory
+ maemo)
+ # The Maemo apps want the plugins in the "lib" directory
# without a scummvm sub directory.
append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"$libdir\\\""
;;
diff --git a/dists/webos/README.WebOS b/dists/webos/README.WebOS
deleted file mode 100644
index 5947d86f20..0000000000
--- a/dists/webos/README.WebOS
+++ /dev/null
@@ -1,37 +0,0 @@
-README for the WebOS port of ScummVM
-------------------------------------
-
-INSTALLATION
-
- When starting ScummVM the first time on a WebOS device it creates the
- following directory structure on the flash drive:
-
- ScummVM/
- Extras/
- Games/
- Plugins/
- Saves/
- Screenshots/
- Themes/
-
- To install the games switch your WebOS device to USB drive mode and copy
- the game folders into the ScummVM/Games directory. Then start ScummVM,
- click "Add game" and select the game folder.
-
-CONTROLS
-
- Touchscreen
-
- The touchscreen operates like a touchpad. The mouse cursor is independent
- of the touched point, it is moved relative to its current position.
-
- Tap + movement: Mouse movement
- Tap without movement: Left mouse button click
- Tap held for >0.5s without movement: Right mouse button click
- Tap held for >1s without movement: Middle mouse button click
- Double Tap + movement: Drag and drop
-
- Gesture area
-
- Back gesture: Escape
- Forward gesture: ScummVM menu
diff --git a/dists/webos/mojo/appinfo.json b/dists/webos/mojo/appinfo.json
deleted file mode 100644
index b3163a4e95..0000000000
--- a/dists/webos/mojo/appinfo.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "id": "APP_ID",
- "version": "APP_VERSION",
- "vendor": "ScummVM Team",
- "type": "pdk",
- "main": "start",
- "title": "APP_TITLE",
- "icon": "icon.png",
- "requiredMemory": 64
-}
diff --git a/dists/webos/mojo/icon.png b/dists/webos/mojo/icon.png
deleted file mode 100644
index 5f7e9e5960..0000000000
Binary files a/dists/webos/mojo/icon.png and /dev/null differ
diff --git a/dists/webos/mojo/package.properties b/dists/webos/mojo/package.properties
deleted file mode 100644
index 962e809ec6..0000000000
--- a/dists/webos/mojo/package.properties
+++ /dev/null
@@ -1 +0,0 @@
-filemode.755=start,bin/scummvm
diff --git a/dists/webos/mojo/scummvmrc-default b/dists/webos/mojo/scummvmrc-default
deleted file mode 100644
index 907898a8fe..0000000000
--- a/dists/webos/mojo/scummvmrc-default
+++ /dev/null
@@ -1,32 +0,0 @@
-[scummvm]
-gui_theme=scummremastered
-mute=false
-speech_volume=192
-native_mt32=false
-midi_gain=100
-talkspeed=60
-subtitles=true
-multi_midi=false
-fullscreen=true
-sfx_volume=192
-music_volume=192
-autosave_period=300
-music_driver=auto
-opl_driver=auto
-aspect_ratio=false
-speech_mute=false
-enable_gs=false
-browser_lastpath=/media/internal/ScummVM/Games
-savepath=/media/internal/ScummVM/Saves
-
-[keymapper]
-keymap_global_MEN=FORWARD
-keymap_gui_VIR=C+k
-keymap_global_SKL=PERIOD
-keymap_global_SKC=ESCAPE
-keymap_gui_REM=AT
-keymap_global_PAU=SPACE
-keymap_gui_CLO=ESCAPE
-keymap_gui_CLI=RETURN
-keymap_global_VIR=C+k
-keymap_global_REM=AT
diff --git a/dists/webos/mojo/start b/dists/webos/mojo/start
deleted file mode 100755
index 446ce83f1d..0000000000
--- a/dists/webos/mojo/start
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-# Setup directories
-APPDIR=$(readlink -f $(dirname $0))
-SCUMMVMDIR=/media/internal/ScummVM
-
-# Create the initial ScummVM directory structure
-mkdir -p $SCUMMVMDIR/Games
-mkdir -p $SCUMMVMDIR/Saves
-mkdir -p $SCUMMVMDIR/Screenshots
-
-# Install default configuration file if not already present
-if [ ! -f $SCUMMVMDIR/scummvmrc ]
-then
- cp $APPDIR/scummvmrc-default $SCUMMVMDIR/scummvmrc
-fi
-
-# Change into the screenshots directory so screenshots are saved there
-cd $SCUMMVMDIR/Screenshots
-
-# Run the game
-exec $APPDIR/bin/scummvm -c $SCUMMVMDIR/scummvmrc
diff --git a/engines/lure/menu.cpp b/engines/lure/menu.cpp
index 4983088f89..ea4d3b4f20 100644
--- a/engines/lure/menu.cpp
+++ b/engines/lure/menu.cpp
@@ -31,7 +31,7 @@
#include "lure/events.h"
#include "lure/lure.h"
-#if defined(__SYMBIAN32__) || defined(WEBOS) || defined(__ANDROID__) || defined(__WII__)
+#if defined(__SYMBIAN32__) || defined(__ANDROID__) || defined(__WII__)
#define LURE_CLICKABLE_MENUS
#endif
diff --git a/po/POTFILES b/po/POTFILES
index 58a442dc69..c7ef315863 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -59,7 +59,6 @@ backends/events/gph/gph-events.cpp
backends/events/maemosdl/maemosdl-events.cpp
backends/events/openpandora/op-events.cpp
backends/events/symbiansdl/symbiansdl-events.cpp
-backends/events/webossdl/webossdl-events.cpp
backends/graphics/opengl/opengl-graphics.cpp
backends/graphics/openglsdl/openglsdl-graphics.cpp
backends/graphics/surfacesdl/surfacesdl-graphics.cpp
Commit: 583281eb51085a22d164abb96d7ceb733547d361
https://github.com/scummvm/scummvm/commit/583281eb51085a22d164abb96d7ceb733547d361
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-01T14:57:01+02:00
Commit Message:
ALL: Remove remnants of Bada port
Changed paths:
R dists/bada/Icons/mainMenu1.png
R dists/bada/Icons/mainMenu2.png
R dists/bada/Icons/splash1.png
R dists/bada/Icons/splash2.png
R dists/bada/Res/scummmobile/THEMERC
R dists/bada/Res/scummmobile/checkbox.bmp
R dists/bada/Res/scummmobile/checkbox_empty.bmp
R dists/bada/Res/scummmobile/clR6x12-iso-8859-2.fcc
R dists/bada/Res/scummmobile/clR6x12-iso-8859-5.fcc
R dists/bada/Res/scummmobile/cursor.bmp
R dists/bada/Res/scummmobile/cursor_small.bmp
R dists/bada/Res/scummmobile/fixed5x8-iso-8859-2.fcc
R dists/bada/Res/scummmobile/fixed5x8-iso-8859-5.fcc
R dists/bada/Res/scummmobile/helvB14-ASCII.fcc
R dists/bada/Res/scummmobile/helvB14.bdf
R dists/bada/Res/scummmobile/helvB18-ASCII.fcc
R dists/bada/Res/scummmobile/helvB18.bdf
R dists/bada/Res/scummmobile/helvB24-ASCII.fcc
R dists/bada/Res/scummmobile/helvB24.bdf
R dists/bada/Res/scummmobile/helvb12-iso-8859-1.fcc
R dists/bada/Res/scummmobile/helvb12-iso-8859-2.fcc
R dists/bada/Res/scummmobile/helvb12-iso-8859-5.fcc
R dists/bada/Res/scummmobile/logo.bmp
R dists/bada/Res/scummmobile/logo_small.bmp
R dists/bada/Res/scummmobile/radiobutton.bmp
R dists/bada/Res/scummmobile/radiobutton_empty.bmp
R dists/bada/Res/scummmobile/scummmobile_gfx.stx
R dists/bada/Res/scummmobile/scummmobile_layout.stx
R dists/bada/Res/scummmobile/search.bmp
R dists/bada/Res/vkeybd_bada/lowercase-symbols800x399.bmp
R dists/bada/Res/vkeybd_bada/lowercase800x399.bmp
R dists/bada/Res/vkeybd_bada/uppercase-symbols800x399.bmp
R dists/bada/Res/vkeybd_bada/uppercase800x399.bmp
R dists/bada/Res/vkeybd_bada/vkeybd_bada.xml
diff --git a/dists/bada/Icons/mainMenu1.png b/dists/bada/Icons/mainMenu1.png
deleted file mode 100644
index fe016776ca..0000000000
Binary files a/dists/bada/Icons/mainMenu1.png and /dev/null differ
diff --git a/dists/bada/Icons/mainMenu2.png b/dists/bada/Icons/mainMenu2.png
deleted file mode 100644
index 1b6c99027b..0000000000
Binary files a/dists/bada/Icons/mainMenu2.png and /dev/null differ
diff --git a/dists/bada/Icons/splash1.png b/dists/bada/Icons/splash1.png
deleted file mode 100644
index 02c0596270..0000000000
Binary files a/dists/bada/Icons/splash1.png and /dev/null differ
diff --git a/dists/bada/Icons/splash2.png b/dists/bada/Icons/splash2.png
deleted file mode 100644
index 550dd9fb22..0000000000
Binary files a/dists/bada/Icons/splash2.png and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/THEMERC b/dists/bada/Res/scummmobile/THEMERC
deleted file mode 100644
index 1d607086b8..0000000000
--- a/dists/bada/Res/scummmobile/THEMERC
+++ /dev/null
@@ -1 +0,0 @@
-[SCUMMVM_STX0.8.9:ScummVM Mobile Theme:No Author]
diff --git a/dists/bada/Res/scummmobile/checkbox.bmp b/dists/bada/Res/scummmobile/checkbox.bmp
deleted file mode 100644
index c9e2be2b38..0000000000
Binary files a/dists/bada/Res/scummmobile/checkbox.bmp and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/checkbox_empty.bmp b/dists/bada/Res/scummmobile/checkbox_empty.bmp
deleted file mode 100644
index 89ebdcbf41..0000000000
Binary files a/dists/bada/Res/scummmobile/checkbox_empty.bmp and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/clR6x12-iso-8859-2.fcc b/dists/bada/Res/scummmobile/clR6x12-iso-8859-2.fcc
deleted file mode 100644
index 042bc5b24d..0000000000
Binary files a/dists/bada/Res/scummmobile/clR6x12-iso-8859-2.fcc and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/clR6x12-iso-8859-5.fcc b/dists/bada/Res/scummmobile/clR6x12-iso-8859-5.fcc
deleted file mode 100644
index d8e614211d..0000000000
Binary files a/dists/bada/Res/scummmobile/clR6x12-iso-8859-5.fcc and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/cursor.bmp b/dists/bada/Res/scummmobile/cursor.bmp
deleted file mode 100644
index e7bdb60cad..0000000000
Binary files a/dists/bada/Res/scummmobile/cursor.bmp and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/cursor_small.bmp b/dists/bada/Res/scummmobile/cursor_small.bmp
deleted file mode 100644
index 024a6d0b9b..0000000000
Binary files a/dists/bada/Res/scummmobile/cursor_small.bmp and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/fixed5x8-iso-8859-2.fcc b/dists/bada/Res/scummmobile/fixed5x8-iso-8859-2.fcc
deleted file mode 100644
index 73bb5fff2d..0000000000
Binary files a/dists/bada/Res/scummmobile/fixed5x8-iso-8859-2.fcc and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/fixed5x8-iso-8859-5.fcc b/dists/bada/Res/scummmobile/fixed5x8-iso-8859-5.fcc
deleted file mode 100644
index e70388dd93..0000000000
Binary files a/dists/bada/Res/scummmobile/fixed5x8-iso-8859-5.fcc and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/helvB14-ASCII.fcc b/dists/bada/Res/scummmobile/helvB14-ASCII.fcc
deleted file mode 100644
index 9e9c97f0a8..0000000000
Binary files a/dists/bada/Res/scummmobile/helvB14-ASCII.fcc and /dev/null differ
diff --git a/dists/bada/Res/scummmobile/helvB14.bdf b/dists/bada/Res/scummmobile/helvB14.bdf
deleted file mode 100644
index 1374758bcc..0000000000
--- a/dists/bada/Res/scummmobile/helvB14.bdf
+++ /dev/null
@@ -1,16308 +0,0 @@
-STARTFONT 2.1
-FONT -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1
-SIZE 14 100 100
-FONTBOUNDINGBOX 22 29 -2 -7
-COMMENT ISO10646-1 extension by Markus Kuhn <mkuhn at acm.org>, 2001-03-20
-COMMENT
-COMMENT +
-COMMENT Copyright 1984-1989, 1994 Adobe Systems Incorporated.
-COMMENT Copyright 1988, 1994 Digital Equipment Corporation.
-COMMENT
-COMMENT Adobe is a trademark of Adobe Systems Incorporated which may be
-COMMENT registered in certain jurisdictions.
-COMMENT Permission to use these trademarks is hereby granted only in
-COMMENT association with the images described in this file.
-COMMENT
-COMMENT Permission to use, copy, modify, distribute and sell this software
-COMMENT and its documentation for any purpose and without fee is hereby
-COMMENT granted, provided that the above copyright notices appear in all
-COMMENT copies and that both those copyright notices and this permission
-COMMENT notice appear in supporting documentation, and that the names of
-COMMENT Adobe Systems and Digital Equipment Corporation not be used in
-COMMENT advertising or publicity pertaining to distribution of the software
-COMMENT without specific, written prior permission. Adobe Systems and
-COMMENT Digital Equipment Corporation make no representations about the
-COMMENT suitability of this software for any purpose. It is provided "as
-COMMENT is" without express or implied warranty.
-COMMENT -
-STARTPROPERTIES 26
-FOUNDRY "Adobe"
-FAMILY_NAME "Helvetica"
-WEIGHT_NAME "Bold"
-SLANT "R"
-SETWIDTH_NAME "Normal"
-ADD_STYLE_NAME ""
-PIXEL_SIZE 20
-POINT_SIZE 140
-RESOLUTION_X 100
-RESOLUTION_Y 100
-SPACING "P"
-AVERAGE_WIDTH 105
-CHARSET_REGISTRY "ISO10646"
-CHARSET_ENCODING "1"
-CAP_HEIGHT 14
-X_HEIGHT 10
-FONT_ASCENT 16
-FONT_DESCENT 5
-FACE_NAME "Helvetica Bold"
-COPYRIGHT "Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved."
-NOTICE "Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. "
-_DEC_DEVICE_FONTNAMES "PS=Helvetica-Bold"
-DEFAULT_CHAR 0
-RELATIVE_SETWIDTH 50
-RELATIVE_WEIGHT 70
-FULL_NAME "Helvetica Bold"
-ENDPROPERTIES
-CHARS 756
-STARTCHAR char0
-ENCODING 0
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 11 13 1 0
-BITMAP
-AAA0
-0000
-8020
-0000
-8020
-0000
-8020
-0000
-8020
-0000
-8020
-0000
-AAA0
-ENDCHAR
-STARTCHAR space
-ENCODING 32
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 1 1 0 0
-BITMAP
-00
-ENDCHAR
-STARTCHAR exclam
-ENCODING 33
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 3 14 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-C0
-C0
-00
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR quotedbl
-ENCODING 34
-SWIDTH 474 0
-DWIDTH 7 0
-BBX 5 5 1 9
-BITMAP
-D8
-D8
-D8
-D8
-90
-ENDCHAR
-STARTCHAR numbersign
-ENCODING 35
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 11 13 0 0
-BITMAP
-0D80
-0D80
-0D80
-7FE0
-7FE0
-1B00
-1B00
-1B00
-FFC0
-FFC0
-3600
-3600
-3600
-ENDCHAR
-STARTCHAR dollar
-ENCODING 36
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 10 16 0 -2
-BITMAP
-0400
-3F00
-7F80
-E580
-E400
-E400
-7C00
-3F00
-0F80
-09C0
-E9C0
-E9C0
-7F80
-3F00
-0800
-0800
-ENDCHAR
-STARTCHAR percent
-ENCODING 37
-SWIDTH 889 0
-DWIDTH 16 0
-BBX 13 13 1 0
-BITMAP
-7860
-FC60
-CCC0
-CC80
-FD80
-7B00
-0200
-06F0
-0DF8
-0998
-1998
-31F8
-30F0
-ENDCHAR
-STARTCHAR ampersand
-ENCODING 38
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 13 14 1 0
-BITMAP
-1E00
-3F00
-7380
-6180
-7300
-3E00
-1C60
-7E60
-E7E0
-C3C0
-C1C0
-E3E0
-7F70
-3E38
-ENDCHAR
-STARTCHAR quotesingle
-ENCODING 39
-SWIDTH 238 0
-DWIDTH 4 0
-BBX 2 5 1 9
-BITMAP
-C0
-C0
-C0
-C0
-80
-ENDCHAR
-STARTCHAR parenleft
-ENCODING 40
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 6 18 1 -4
-BITMAP
-1C
-38
-30
-70
-60
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-60
-70
-30
-38
-1C
-ENDCHAR
-STARTCHAR parenright
-ENCODING 41
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 6 18 0 -4
-BITMAP
-E0
-70
-30
-38
-18
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-18
-38
-30
-70
-E0
-ENDCHAR
-STARTCHAR asterisk
-ENCODING 42
-SWIDTH 389 0
-DWIDTH 9 0
-BBX 7 6 1 8
-BITMAP
-10
-D6
-7C
-38
-6C
-44
-ENDCHAR
-STARTCHAR plus
-ENCODING 43
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 8 8 1 1
-BITMAP
-18
-18
-18
-FF
-FF
-18
-18
-18
-ENDCHAR
-STARTCHAR comma
-ENCODING 44
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 6 1 -3
-BITMAP
-E0
-E0
-E0
-60
-C0
-80
-ENDCHAR
-STARTCHAR hyphen
-ENCODING 45
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 5 3 0 4
-BITMAP
-F8
-F8
-F8
-ENDCHAR
-STARTCHAR period
-ENCODING 46
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 3 1 0
-BITMAP
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR slash
-ENCODING 47
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 14 0 0
-BITMAP
-18
-18
-18
-38
-30
-30
-30
-70
-60
-60
-E0
-C0
-C0
-C0
-ENDCHAR
-STARTCHAR zero
-ENCODING 48
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-1C00
-7F00
-7700
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-7700
-7F00
-1C00
-ENDCHAR
-STARTCHAR one
-ENCODING 49
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 6 13 1 0
-BITMAP
-1C
-3C
-FC
-FC
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-ENDCHAR
-STARTCHAR two
-ENCODING 50
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-3E00
-7F00
-E380
-E380
-0380
-0700
-1F00
-3E00
-7800
-7000
-E000
-FF80
-FF80
-ENDCHAR
-STARTCHAR three
-ENCODING 51
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-3E00
-7F00
-E700
-E300
-0700
-1E00
-1F00
-0780
-0380
-E380
-E780
-7F00
-3E00
-ENDCHAR
-STARTCHAR four
-ENCODING 52
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-0700
-0F00
-1F00
-3F00
-3700
-7700
-6700
-E700
-FF80
-FF80
-0700
-0700
-0700
-ENDCHAR
-STARTCHAR five
-ENCODING 53
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-FF00
-FF00
-E000
-E000
-FE00
-FF00
-E780
-0380
-0380
-E380
-E780
-FF00
-7E00
-ENDCHAR
-STARTCHAR six
-ENCODING 54
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-3F00
-7F80
-7180
-E000
-EE00
-FF00
-F380
-E180
-E180
-E180
-F380
-7F00
-3E00
-ENDCHAR
-STARTCHAR seven
-ENCODING 55
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-FF80
-FF80
-0380
-0700
-0E00
-0E00
-1C00
-1C00
-3800
-3800
-7000
-7000
-7000
-ENDCHAR
-STARTCHAR eight
-ENCODING 56
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-3E00
-7F00
-E380
-E380
-E380
-7F00
-3E00
-7700
-E380
-E380
-E380
-7F00
-3E00
-ENDCHAR
-STARTCHAR nine
-ENCODING 57
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-3E00
-7F00
-E780
-C380
-C380
-C380
-E780
-7F80
-3B80
-0380
-C700
-FF00
-7E00
-ENDCHAR
-STARTCHAR colon
-ENCODING 58
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 3 10 1 0
-BITMAP
-E0
-E0
-E0
-00
-00
-00
-00
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR semicolon
-ENCODING 59
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 3 13 1 -3
-BITMAP
-E0
-E0
-E0
-00
-00
-00
-00
-E0
-E0
-E0
-60
-C0
-80
-ENDCHAR
-STARTCHAR less
-ENCODING 60
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 9 1 0
-BITMAP
-0380
-0F80
-3E00
-7800
-E000
-7800
-3E00
-0F80
-0380
-ENDCHAR
-STARTCHAR equal
-ENCODING 61
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 5 1 3
-BITMAP
-FF80
-FF80
-0000
-FF80
-FF80
-ENDCHAR
-STARTCHAR greater
-ENCODING 62
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 9 1 0
-BITMAP
-E000
-F800
-3E00
-0F00
-0380
-0F00
-3E00
-F800
-E000
-ENDCHAR
-STARTCHAR question
-ENCODING 63
-SWIDTH 611 0
-DWIDTH 10 0
-BBX 8 14 1 0
-BITMAP
-7E
-FF
-E7
-E7
-0E
-1E
-1C
-38
-38
-38
-00
-38
-38
-38
-ENDCHAR
-STARTCHAR at
-ENCODING 64
-SWIDTH 975 0
-DWIDTH 18 0
-BBX 16 17 1 -3
-BITMAP
-07F0
-1FFC
-3C1E
-7006
-63B7
-E7F3
-C663
-CC63
-CCC3
-CCC6
-CCC6
-EFFC
-E7B8
-7000
-3C00
-1FF0
-07F0
-ENDCHAR
-STARTCHAR A
-ENCODING 65
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR B
-ENCODING 66
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 11 14 2 0
-BITMAP
-FE00
-FF80
-E3C0
-E1C0
-E1C0
-E380
-FF80
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF00
-ENDCHAR
-STARTCHAR C
-ENCODING 67
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E000
-E000
-F070
-7070
-78E0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR D
-ENCODING 68
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-FF00
-FFC0
-E1E0
-E0E0
-E070
-E070
-E070
-E070
-E070
-E070
-E0E0
-E1E0
-FFC0
-FF00
-ENDCHAR
-STARTCHAR E
-ENCODING 69
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 14 2 0
-BITMAP
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR F
-ENCODING 70
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-E000
-E000
-ENDCHAR
-STARTCHAR G
-ENCODING 71
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 14 1 0
-BITMAP
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-ENDCHAR
-STARTCHAR H
-ENCODING 72
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-E070
-E070
-E070
-E070
-E070
-E070
-FFF0
-FFF0
-E070
-E070
-E070
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR I
-ENCODING 73
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 14 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR J
-ENCODING 74
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 14 0 0
-BITMAP
-0380
-0380
-0380
-0380
-0380
-0380
-0380
-0380
-0380
-E380
-E380
-F780
-7F00
-3E00
-ENDCHAR
-STARTCHAR K
-ENCODING 75
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 13 14 1 0
-BITMAP
-E0F0
-E1E0
-E3C0
-E780
-EF00
-FE00
-FC00
-FE00
-EF00
-E780
-E3C0
-E1E0
-E0F0
-E078
-ENDCHAR
-STARTCHAR L
-ENCODING 76
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-FF80
-FF80
-ENDCHAR
-STARTCHAR M
-ENCODING 77
-SWIDTH 833 0
-DWIDTH 16 0
-BBX 14 14 1 0
-BITMAP
-E01C
-E01C
-F03C
-F03C
-F87C
-F87C
-F87C
-ECDC
-ECDC
-ECDC
-E79C
-E79C
-E31C
-E31C
-ENDCHAR
-STARTCHAR N
-ENCODING 78
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-E070
-F070
-F070
-F870
-FC70
-EC70
-EE70
-E670
-E770
-E370
-E1F0
-E1F0
-E0F0
-E070
-ENDCHAR
-STARTCHAR O
-ENCODING 79
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 14 1 0
-BITMAP
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR P
-ENCODING 80
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 14 1 0
-BITMAP
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF00
-E000
-E000
-E000
-E000
-E000
-ENDCHAR
-STARTCHAR Q
-ENCODING 81
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 15 1 -1
-BITMAP
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F378
-73F0
-79F0
-3FE0
-0FF0
-0030
-ENDCHAR
-STARTCHAR R
-ENCODING 82
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF80
-E1C0
-E0E0
-E0E0
-E0E0
-E0E0
-E0F0
-ENDCHAR
-STARTCHAR S
-ENCODING 83
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 14 1 0
-BITMAP
-3F80
-7FC0
-F1E0
-E0E0
-F000
-7E00
-3F80
-0FC0
-01E0
-E0E0
-E0E0
-F1E0
-7FC0
-3F80
-ENDCHAR
-STARTCHAR T
-ENCODING 84
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 11 14 0 0
-BITMAP
-FFE0
-FFE0
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-ENDCHAR
-STARTCHAR U
-ENCODING 85
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR V
-ENCODING 86
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 13 14 0 0
-BITMAP
-E038
-E038
-7070
-7070
-3060
-38E0
-38E0
-1DC0
-1DC0
-0D80
-0F80
-0F80
-0700
-0700
-ENDCHAR
-STARTCHAR W
-ENCODING 87
-SWIDTH 944 0
-DWIDTH 17 0
-BBX 15 14 1 0
-BITMAP
-E38E
-E38E
-E38E
-E38E
-739C
-739C
-739C
-76DC
-36D8
-36D8
-3EF8
-1C70
-1C70
-1C70
-ENDCHAR
-STARTCHAR X
-ENCODING 88
-SWIDTH 667 0
-DWIDTH 12 0
-BBX 12 14 0 0
-BITMAP
-E070
-E070
-70E0
-79E0
-1980
-1F80
-0F00
-1F80
-1980
-39C0
-70E0
-70E0
-E070
-E070
-ENDCHAR
-STARTCHAR Y
-ENCODING 89
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 13 14 0 0
-BITMAP
-E038
-E038
-7070
-38E0
-38E0
-1DC0
-1DC0
-0F80
-0700
-0700
-0700
-0700
-0700
-0700
-ENDCHAR
-STARTCHAR Z
-ENCODING 90
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-FFC0
-FFC0
-01C0
-0380
-0700
-0700
-0E00
-1C00
-3800
-3800
-7000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR bracketleft
-ENCODING 91
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 5 18 1 -4
-BITMAP
-F8
-F8
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-F8
-F8
-ENDCHAR
-STARTCHAR backslash
-ENCODING 92
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 14 0 0
-BITMAP
-C0
-C0
-C0
-E0
-60
-60
-60
-70
-30
-30
-38
-18
-18
-18
-ENDCHAR
-STARTCHAR bracketright
-ENCODING 93
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 5 18 0 -4
-BITMAP
-F8
-F8
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-F8
-F8
-ENDCHAR
-STARTCHAR asciicircum
-ENCODING 94
-SWIDTH 584 0
-DWIDTH 10 0
-BBX 10 7 0 6
-BITMAP
-0C00
-1E00
-1E00
-3300
-7380
-6180
-E1C0
-ENDCHAR
-STARTCHAR underscore
-ENCODING 95
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 10 2 0 -4
-BITMAP
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR grave
-ENCODING 96
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 5 3 0 11
-BITMAP
-E0
-70
-38
-ENDCHAR
-STARTCHAR a
-ENCODING 97
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 10 1 0
-BITMAP
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR b
-ENCODING 98
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-E000
-E000
-E000
-E000
-EF00
-FF80
-F380
-E1C0
-E1C0
-E1C0
-E1C0
-F380
-FF80
-EF00
-ENDCHAR
-STARTCHAR c
-ENCODING 99
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-1E00
-7F80
-7380
-E000
-E000
-E000
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR d
-ENCODING 100
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-01C0
-01C0
-01C0
-01C0
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-ENDCHAR
-STARTCHAR e
-ENCODING 101
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR f
-ENCODING 102
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 7 14 0 0
-BITMAP
-1E
-3E
-38
-38
-FE
-FE
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR g
-ENCODING 103
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 -4
-BITMAP
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR h
-ENCODING 104
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-E000
-E000
-E000
-E000
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR i
-ENCODING 105
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 14 1 0
-BITMAP
-E0
-E0
-E0
-00
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR j
-ENCODING 106
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 18 -1 -4
-BITMAP
-38
-38
-38
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-F8
-F0
-ENDCHAR
-STARTCHAR k
-ENCODING 107
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 14 1 0
-BITMAP
-E000
-E000
-E000
-E000
-E700
-EE00
-FC00
-F800
-F800
-FC00
-EE00
-E700
-E780
-E380
-ENDCHAR
-STARTCHAR l
-ENCODING 108
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 14 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR m
-ENCODING 109
-SWIDTH 889 0
-DWIDTH 17 0
-BBX 15 10 1 0
-BITMAP
-EF3C
-FFFE
-F3CE
-E38E
-E38E
-E38E
-E38E
-E38E
-E38E
-E38E
-ENDCHAR
-STARTCHAR n
-ENCODING 110
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR o
-ENCODING 111
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 10 1 0
-BITMAP
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR p
-ENCODING 112
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 -4
-BITMAP
-EF00
-FF80
-F380
-E1C0
-E1C0
-E1C0
-E1C0
-F380
-FF80
-EF00
-E000
-E000
-E000
-E000
-ENDCHAR
-STARTCHAR q
-ENCODING 113
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 -4
-BITMAP
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-01C0
-01C0
-01C0
-ENDCHAR
-STARTCHAR r
-ENCODING 114
-SWIDTH 389 0
-DWIDTH 7 0
-BBX 6 10 1 0
-BITMAP
-EC
-FC
-FC
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR s
-ENCODING 115
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-3F00
-7F80
-E380
-E000
-FF00
-3F80
-0380
-E380
-FF00
-7E00
-ENDCHAR
-STARTCHAR t
-ENCODING 116
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 13 0 0
-BITMAP
-70
-70
-70
-FC
-FC
-70
-70
-70
-70
-70
-70
-7C
-3C
-ENDCHAR
-STARTCHAR u
-ENCODING 117
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR v
-ENCODING 118
-SWIDTH 556 0
-DWIDTH 9 0
-BBX 9 10 0 0
-BITMAP
-E380
-E380
-E380
-7700
-7700
-7700
-3E00
-3E00
-1C00
-1C00
-ENDCHAR
-STARTCHAR w
-ENCODING 119
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 15 10 0 0
-BITMAP
-E38E
-E38E
-E38E
-739C
-77DC
-76DC
-3EF8
-3C78
-1C70
-1C70
-ENDCHAR
-STARTCHAR x
-ENCODING 120
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-E380
-E380
-7700
-3E00
-1C00
-3E00
-7700
-7700
-E380
-E380
-ENDCHAR
-STARTCHAR y
-ENCODING 121
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 -4
-BITMAP
-E380
-E380
-E380
-7700
-7700
-7700
-3E00
-3E00
-1C00
-1C00
-1C00
-1800
-7800
-7000
-ENDCHAR
-STARTCHAR z
-ENCODING 122
-SWIDTH 500 0
-DWIDTH 10 0
-BBX 8 10 1 0
-BITMAP
-FF
-FF
-07
-0E
-1C
-38
-70
-E0
-FF
-FF
-ENDCHAR
-STARTCHAR braceleft
-ENCODING 123
-SWIDTH 389 0
-DWIDTH 8 0
-BBX 7 18 1 -4
-BITMAP
-0E
-1C
-38
-38
-38
-38
-38
-70
-E0
-70
-38
-38
-38
-38
-38
-38
-1C
-0E
-ENDCHAR
-STARTCHAR bar
-ENCODING 124
-SWIDTH 280 0
-DWIDTH 5 0
-BBX 2 18 1 -4
-BITMAP
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-ENDCHAR
-STARTCHAR braceright
-ENCODING 125
-SWIDTH 389 0
-DWIDTH 8 0
-BBX 7 18 0 -4
-BITMAP
-E0
-70
-38
-38
-38
-38
-38
-1C
-0E
-1C
-38
-38
-38
-38
-38
-38
-70
-E0
-ENDCHAR
-STARTCHAR asciitilde
-ENCODING 126
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 3 1 4
-BITMAP
-7980
-FF80
-CF00
-ENDCHAR
-STARTCHAR space
-ENCODING 160
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 1 1 0 0
-BITMAP
-00
-ENDCHAR
-STARTCHAR exclamdown
-ENCODING 161
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 3 14 2 -4
-BITMAP
-E0
-E0
-E0
-00
-60
-60
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR cent
-ENCODING 162
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 8 14 1 -2
-BITMAP
-02
-02
-3E
-7F
-E7
-C8
-C8
-D0
-D0
-E3
-7F
-7E
-40
-40
-ENDCHAR
-STARTCHAR sterling
-ENCODING 163
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 13 0 0
-BITMAP
-1F00
-3FC0
-71C0
-7000
-7000
-3800
-7F00
-1C00
-1C00
-3800
-70C0
-FFC0
-EF80
-ENDCHAR
-STARTCHAR currency
-ENCODING 164
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 8 1 2
-BITMAP
-C180
-FF80
-7700
-6300
-6300
-7700
-FF80
-C180
-ENDCHAR
-STARTCHAR yen
-ENCODING 165
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-E380
-E380
-E380
-7700
-7700
-3E00
-FF80
-1C00
-FF80
-1C00
-1C00
-1C00
-1C00
-ENDCHAR
-STARTCHAR brokenbar
-ENCODING 166
-SWIDTH 280 0
-DWIDTH 5 0
-BBX 2 18 1 -4
-BITMAP
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-00
-00
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-ENDCHAR
-STARTCHAR section
-ENCODING 167
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 18 0 -4
-BITMAP
-3E00
-7F00
-E380
-E380
-F000
-7C00
-FE00
-C700
-C380
-E180
-7180
-3F80
-0F00
-0780
-E380
-E380
-7F00
-3E00
-ENDCHAR
-STARTCHAR dieresis
-ENCODING 168
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 5 2 1 12
-BITMAP
-D8
-D8
-ENDCHAR
-STARTCHAR copyright
-ENCODING 169
-SWIDTH 737 0
-DWIDTH 15 0
-BBX 14 14 1 0
-BITMAP
-0FC0
-3870
-6018
-C78C
-CFCC
-98C4
-9804
-9804
-9844
-CFCC
-C78C
-6018
-3870
-0FC0
-ENDCHAR
-STARTCHAR ordfeminine
-ENCODING 170
-SWIDTH 370 0
-DWIDTH 8 0
-BBX 6 9 1 5
-BITMAP
-78
-8C
-7C
-CC
-CC
-74
-00
-FC
-FC
-ENDCHAR
-STARTCHAR guillemotleft
-ENCODING 171
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 8 0 1
-BITMAP
-1DC0
-3B80
-7700
-EE00
-EE00
-7700
-3B80
-1DC0
-ENDCHAR
-STARTCHAR logicalnot
-ENCODING 172
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 5 1 3
-BITMAP
-FF80
-FF80
-0180
-0180
-0180
-ENDCHAR
-STARTCHAR hyphen
-ENCODING 173
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 5 3 0 4
-BITMAP
-F8
-F8
-F8
-ENDCHAR
-STARTCHAR registered
-ENCODING 174
-SWIDTH 737 0
-DWIDTH 15 0
-BBX 13 14 1 0
-BITMAP
-0F80
-3060
-6010
-5F90
-99C8
-98C8
-99C8
-9F08
-9988
-9988
-58D0
-6030
-38E0
-0F80
-ENDCHAR
-STARTCHAR macron
-ENCODING 175
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 5 2 1 12
-BITMAP
-F8
-F8
-ENDCHAR
-STARTCHAR degree
-ENCODING 176
-SWIDTH 400 0
-DWIDTH 7 0
-BBX 6 6 0 7
-BITMAP
-78
-FC
-CC
-CC
-FC
-78
-ENDCHAR
-STARTCHAR plusminus
-ENCODING 177
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 9 1 0
-BITMAP
-1C00
-1C00
-FF80
-FF80
-1C00
-1C00
-0000
-FF80
-FF80
-ENDCHAR
-STARTCHAR twosuperior
-ENCODING 178
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 8 0 5
-BITMAP
-78
-FC
-CC
-1C
-78
-E0
-FC
-FC
-ENDCHAR
-STARTCHAR threesuperior
-ENCODING 179
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 8 0 5
-BITMAP
-78
-FC
-CC
-38
-3C
-CC
-FC
-78
-ENDCHAR
-STARTCHAR acute
-ENCODING 180
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 5 3 0 11
-BITMAP
-38
-70
-E0
-ENDCHAR
-STARTCHAR mu
-ENCODING 181
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 -4
-BITMAP
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-FB80
-E000
-E000
-E000
-E000
-ENDCHAR
-STARTCHAR paragraph
-ENCODING 182
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 18 0 -4
-BITMAP
-3F80
-7B00
-FB00
-FB00
-FB00
-FB00
-FB00
-7B00
-3B00
-1B00
-1B00
-1B00
-1B00
-1B00
-1B00
-1B00
-1B00
-1B00
-ENDCHAR
-STARTCHAR periodcentered
-ENCODING 183
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 2 2 1 6
-BITMAP
-C0
-C0
-ENDCHAR
-STARTCHAR cedilla
-ENCODING 184
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 5 5 1 -5
-BITMAP
-60
-70
-18
-F8
-F0
-ENDCHAR
-STARTCHAR onesuperior
-ENCODING 185
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 4 8 0 5
-BITMAP
-30
-F0
-F0
-30
-30
-30
-30
-30
-ENDCHAR
-STARTCHAR ordmasculine
-ENCODING 186
-SWIDTH 365 0
-DWIDTH 8 0
-BBX 6 9 1 5
-BITMAP
-78
-CC
-CC
-CC
-CC
-78
-00
-FC
-FC
-ENDCHAR
-STARTCHAR guillemotright
-ENCODING 187
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 8 0 1
-BITMAP
-EE00
-7700
-3B80
-1DC0
-1DC0
-3B80
-7700
-EE00
-ENDCHAR
-STARTCHAR onequarter
-ENCODING 188
-SWIDTH 834 0
-DWIDTH 15 0
-BBX 14 13 0 0
-BITMAP
-3060
-F060
-F0C0
-30C0
-3180
-3198
-3338
-3638
-0678
-0CD8
-0CFC
-1818
-1818
-ENDCHAR
-STARTCHAR onehalf
-ENCODING 189
-SWIDTH 834 0
-DWIDTH 15 0
-BBX 15 13 0 0
-BITMAP
-3060
-F060
-F0C0
-30C0
-3180
-31BC
-337E
-3666
-060E
-0C3C
-0C70
-187E
-187E
-ENDCHAR
-STARTCHAR threequarters
-ENCODING 190
-SWIDTH 834 0
-DWIDTH 15 0
-BBX 14 13 0 0
-BITMAP
-7830
-FC30
-CC60
-3860
-3CC0
-CCD8
-FDB8
-7B38
-0378
-06D8
-06FC
-0C18
-0C18
-ENDCHAR
-STARTCHAR questiondown
-ENCODING 191
-SWIDTH 611 0
-DWIDTH 10 0
-BBX 8 14 1 -4
-BITMAP
-1C
-1C
-1C
-00
-1C
-1C
-1C
-38
-78
-70
-E7
-E7
-FF
-7E
-ENDCHAR
-STARTCHAR Agrave
-ENCODING 192
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-3800
-1C00
-0600
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR Aacute
-ENCODING 193
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-01C0
-0380
-0600
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR Acircumflex
-ENCODING 194
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR Atilde
-ENCODING 195
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0E20
-1FC0
-2380
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR Adieresis
-ENCODING 196
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1980
-1980
-1980
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR Aring
-ENCODING 197
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0F00
-1980
-1980
-0F00
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR AE
-ENCODING 198
-SWIDTH 1000 0
-DWIDTH 18 0
-BBX 16 14 1 0
-BITMAP
-0FFF
-0FFF
-1F80
-1B80
-3B80
-3B80
-33FE
-73FE
-7380
-7F80
-FF80
-E380
-E3FF
-E3FF
-ENDCHAR
-STARTCHAR Ccedilla
-ENCODING 199
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 19 1 -5
-BITMAP
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E000
-E000
-F070
-7070
-78E0
-3FE0
-0F80
-0C00
-0E00
-0300
-1F00
-1E00
-ENDCHAR
-STARTCHAR Egrave
-ENCODING 200
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-3800
-1C00
-0600
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR Eacute
-ENCODING 201
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-0380
-0700
-0C00
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR Ecircumflex
-ENCODING 202
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-0E00
-1F00
-3B80
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR Edieresis
-ENCODING 203
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-3300
-3300
-3300
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR Igrave
-ENCODING 204
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 18 -1 0
-BITMAP
-E0
-70
-18
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR Iacute
-ENCODING 205
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 18 1 0
-BITMAP
-38
-70
-C0
-00
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR Icircumflex
-ENCODING 206
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -1 0
-BITMAP
-38
-7C
-EE
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR Idieresis
-ENCODING 207
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 6 18 0 0
-BITMAP
-CC
-CC
-CC
-00
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR Eth
-ENCODING 208
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 14 14 -1 0
-BITMAP
-3FC0
-3FF0
-3878
-3838
-381C
-381C
-FF1C
-FF1C
-381C
-381C
-3838
-3878
-3FF0
-3FC0
-ENDCHAR
-STARTCHAR Ntilde
-ENCODING 209
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0E20
-1FC0
-2380
-0000
-E070
-F070
-F070
-F870
-FC70
-EC70
-EE70
-E670
-E770
-E370
-E1F0
-E1F0
-E0F0
-E070
-ENDCHAR
-STARTCHAR Ograve
-ENCODING 210
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-1C00
-0E00
-0300
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR Oacute
-ENCODING 211
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-01C0
-0380
-0600
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR Ocircumflex
-ENCODING 212
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR Otilde
-ENCODING 213
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-0710
-0FE0
-11C0
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR Odieresis
-ENCODING 214
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-0CC0
-0CC0
-0CC0
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR multiply
-ENCODING 215
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 10 8 0 1
-BITMAP
-E1C0
-7380
-3F00
-1E00
-1E00
-3F00
-7380
-E1C0
-ENDCHAR
-STARTCHAR Oslash
-ENCODING 216
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 15 14 0 0
-BITMAP
-07C6
-1FFC
-3C38
-3878
-78DC
-719C
-711C
-731C
-761C
-7C3C
-3838
-3C78
-7FF0
-C7C0
-ENDCHAR
-STARTCHAR Ugrave
-ENCODING 217
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1C00
-0E00
-0300
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR Uacute
-ENCODING 218
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-01C0
-0380
-0600
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR Ucircumflex
-ENCODING 219
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR Udieresis
-ENCODING 220
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1980
-1980
-1980
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR Yacute
-ENCODING 221
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 13 18 0 0
-BITMAP
-01C0
-0380
-0600
-0000
-E038
-E038
-7070
-38E0
-38E0
-1DC0
-1DC0
-0F80
-0700
-0700
-0700
-0700
-0700
-0700
-ENDCHAR
-STARTCHAR Thorn
-ENCODING 222
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 14 1 0
-BITMAP
-E000
-E000
-E000
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF00
-E000
-E000
-E000
-ENDCHAR
-STARTCHAR germandbls
-ENCODING 223
-SWIDTH 611 0
-DWIDTH 10 0
-BBX 8 14 1 0
-BITMAP
-3C
-7E
-E7
-E7
-E7
-E7
-EE
-EE
-E7
-E7
-E7
-E7
-EF
-EE
-ENDCHAR
-STARTCHAR agrave
-ENCODING 224
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-7000
-3800
-0C00
-0000
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR aacute
-ENCODING 225
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-0380
-0700
-0C00
-0000
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR acircumflex
-ENCODING 226
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-1C00
-3E00
-7700
-0000
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR atilde
-ENCODING 227
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-3B00
-7F00
-6E00
-0000
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR adieresis
-ENCODING 228
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-3300
-3300
-3300
-0000
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR aring
-ENCODING 229
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-3C00
-6600
-6600
-3C00
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR ae
-ENCODING 230
-SWIDTH 889 0
-DWIDTH 16 0
-BBX 14 10 1 0
-BITMAP
-3DF0
-7FF8
-671C
-0F1C
-3FFC
-7700
-E700
-EF9C
-FFFC
-79F0
-ENDCHAR
-STARTCHAR ccedilla
-ENCODING 231
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 15 1 -5
-BITMAP
-1E00
-7F80
-7380
-E000
-E000
-E000
-E000
-7380
-7F80
-1E00
-1800
-1C00
-0600
-3E00
-3C00
-ENDCHAR
-STARTCHAR egrave
-ENCODING 232
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-7000
-3800
-0C00
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR eacute
-ENCODING 233
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-0380
-0700
-0C00
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR ecircumflex
-ENCODING 234
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-1C00
-3E00
-7700
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR edieresis
-ENCODING 235
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-3300
-3300
-3300
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR igrave
-ENCODING 236
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 14 -1 0
-BITMAP
-E0
-70
-18
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR iacute
-ENCODING 237
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 14 1 0
-BITMAP
-38
-70
-C0
-00
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR icircumflex
-ENCODING 238
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 14 -1 0
-BITMAP
-38
-7C
-EE
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR idieresis
-ENCODING 239
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 14 0 0
-BITMAP
-D8
-D8
-D8
-00
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR eth
-ENCODING 240
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-6000
-3700
-3C00
-6600
-1F00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR ntilde
-ENCODING 241
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-3B00
-7F00
-6E00
-0000
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR ograve
-ENCODING 242
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-7000
-3800
-0C00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR oacute
-ENCODING 243
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-0380
-0700
-0C00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR ocircumflex
-ENCODING 244
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-1C00
-3E00
-7700
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR otilde
-ENCODING 245
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-3B00
-7F00
-6E00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR odieresis
-ENCODING 246
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-3300
-3300
-3300
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR divide
-ENCODING 247
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 8 1 1
-BITMAP
-1C00
-1C00
-0000
-FF80
-FF80
-0000
-1C00
-1C00
-ENDCHAR
-STARTCHAR oslash
-ENCODING 248
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 12 10 0 0
-BITMAP
-0F30
-3FE0
-39C0
-73E0
-77E0
-7EE0
-7CE0
-39C0
-7FC0
-CF00
-ENDCHAR
-STARTCHAR ugrave
-ENCODING 249
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-7000
-3800
-0C00
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uacute
-ENCODING 250
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-0380
-0700
-0C00
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR ucircumflex
-ENCODING 251
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-1C00
-3E00
-7700
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR udieresis
-ENCODING 252
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-3300
-3300
-3300
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR yacute
-ENCODING 253
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 18 1 -4
-BITMAP
-0700
-0E00
-1800
-0000
-E380
-E380
-E380
-7700
-7700
-7700
-3E00
-3E00
-1C00
-1C00
-1C00
-1800
-7800
-7000
-ENDCHAR
-STARTCHAR thorn
-ENCODING 254
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 18 1 -4
-BITMAP
-E000
-E000
-E000
-E000
-EF00
-FF80
-F380
-E1C0
-E1C0
-E1C0
-E1C0
-F380
-FF80
-EF00
-E000
-E000
-E000
-E000
-ENDCHAR
-STARTCHAR ydieresis
-ENCODING 255
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 18 1 -4
-BITMAP
-3300
-3300
-3300
-0000
-E380
-E380
-E380
-7700
-7700
-7700
-3E00
-3E00
-1C00
-1C00
-1C00
-1800
-7800
-7000
-ENDCHAR
-STARTCHAR Amacron
-ENCODING 256
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 17 1 0
-BITMAP
-0F80
-0F80
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR amacron
-ENCODING 257
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 13 1 0
-BITMAP
-3E00
-3E00
-0000
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR Abreve
-ENCODING 258
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-18C0
-1DC0
-0F80
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR abreve
-ENCODING 259
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-6300
-7700
-3E00
-0000
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR Aogonek
-ENCODING 260
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 19 1 -5
-BITMAP
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-0700
-0E00
-1C00
-1F80
-0F00
-ENDCHAR
-STARTCHAR aogonek
-ENCODING 261
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 15 1 -5
-BITMAP
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-0E00
-1C00
-3800
-3F00
-1E00
-ENDCHAR
-STARTCHAR Cacute
-ENCODING 262
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E000
-E000
-F070
-7070
-78E0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR cacute
-ENCODING 263
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-0700
-0E00
-1C00
-0000
-1E00
-7F80
-7380
-E000
-E000
-E000
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Ccircumflex
-ENCODING 264
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E000
-E000
-F070
-7070
-78E0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR ccircumflex
-ENCODING 265
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-1C00
-3E00
-7700
-0000
-1E00
-7F80
-7380
-E000
-E000
-E000
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Cdotaccent
-ENCODING 266
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 17 1 0
-BITMAP
-0600
-0600
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E000
-E000
-F070
-7070
-78E0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR cdotaccent
-ENCODING 267
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 13 1 0
-BITMAP
-0C00
-0C00
-0000
-1E00
-7F80
-7380
-E000
-E000
-E000
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Ccaron
-ENCODING 268
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1DC0
-0F80
-0700
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E000
-E000
-F070
-7070
-78E0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR ccaron
-ENCODING 269
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-7700
-3E00
-1C00
-0000
-1E00
-7F80
-7380
-E000
-E000
-E000
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Dcaron
-ENCODING 270
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-3B80
-1F00
-0E00
-0000
-FF00
-FFC0
-E1E0
-E0E0
-E070
-E070
-E070
-E070
-E070
-E070
-E0E0
-E1E0
-FFC0
-FF00
-ENDCHAR
-STARTCHAR dcaron
-ENCODING 271
-SWIDTH 858 0
-DWIDTH 16 0
-BBX 14 14 1 0
-BITMAP
-01DC
-01DC
-01CC
-01CC
-3DD8
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-ENDCHAR
-STARTCHAR Dcroat
-ENCODING 272
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 14 14 -1 0
-BITMAP
-3FC0
-3FF0
-3878
-3838
-381C
-381C
-FF1C
-FF1C
-381C
-381C
-3838
-3878
-3FF0
-3FC0
-ENDCHAR
-STARTCHAR dcroat
-ENCODING 273
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-01C0
-01C0
-03C0
-03C0
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-ENDCHAR
-STARTCHAR Emacron
-ENCODING 274
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 17 2 0
-BITMAP
-3E00
-3E00
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR emacron
-ENCODING 275
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 13 1 0
-BITMAP
-3E00
-3E00
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Ebreve
-ENCODING 276
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-6300
-7700
-3E00
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR ebreve
-ENCODING 277
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-6300
-7700
-3E00
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Edotaccent
-ENCODING 278
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 17 2 0
-BITMAP
-1800
-1800
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR edotaccent
-ENCODING 279
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 13 1 0
-BITMAP
-0C00
-0C00
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Eogonek
-ENCODING 280
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 19 2 -5
-BITMAP
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-1C00
-3800
-7000
-7E00
-3C00
-ENDCHAR
-STARTCHAR eogonek
-ENCODING 281
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 15 1 -5
-BITMAP
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-0E00
-1C00
-3800
-3F00
-1E00
-ENDCHAR
-STARTCHAR Ecaron
-ENCODING 282
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-7700
-3E00
-1C00
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR ecaron
-ENCODING 283
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-7700
-3E00
-1C00
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Gcircumflex
-ENCODING 284
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 18 1 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-ENDCHAR
-STARTCHAR gcircumflex
-ENCODING 285
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 18 1 -4
-BITMAP
-0E00
-1F00
-3B80
-0000
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Gbreve
-ENCODING 286
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 18 1 0
-BITMAP
-18C0
-1DC0
-0F80
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-ENDCHAR
-STARTCHAR gbreve
-ENCODING 287
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 18 1 -4
-BITMAP
-3180
-3B80
-1F00
-0000
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Gdotaccent
-ENCODING 288
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 17 1 0
-BITMAP
-0600
-0600
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-ENDCHAR
-STARTCHAR gdotaccent
-ENCODING 289
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 17 1 -4
-BITMAP
-0C00
-0C00
-0000
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Gcommaaccent
-ENCODING 290
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 21 1 -7
-BITMAP
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-0000
-0700
-0700
-0700
-0300
-0600
-0400
-ENDCHAR
-STARTCHAR gcommaaccent
-ENCODING 291
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 20 1 -4
-BITMAP
-0600
-0C00
-0C00
-0E00
-0E00
-0000
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Hcircumflex
-ENCODING 292
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-FFF0
-FFF0
-E070
-E070
-E070
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR hcircumflex
-ENCODING 293
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 10 18 0 0
-BITMAP
-3800
-7C00
-EE00
-0000
-7000
-7000
-7000
-7000
-7780
-7FC0
-79C0
-71C0
-71C0
-71C0
-71C0
-71C0
-71C0
-71C0
-ENDCHAR
-STARTCHAR Hbar
-ENCODING 294
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-E070
-E070
-E070
-FFF0
-FFF0
-E070
-FFF0
-FFF0
-E070
-E070
-E070
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR hbar
-ENCODING 295
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-E000
-E000
-F000
-F000
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR Itilde
-ENCODING 296
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -1 0
-BITMAP
-76
-FE
-DC
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR itilde
-ENCODING 297
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 14 -1 0
-BITMAP
-76
-FE
-DC
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR Imacron
-ENCODING 298
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 17 0 0
-BITMAP
-F8
-F8
-00
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR imacron
-ENCODING 299
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 13 0 0
-BITMAP
-F8
-F8
-00
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR Ibreve
-ENCODING 300
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -1 0
-BITMAP
-C6
-EE
-7C
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR ibreve
-ENCODING 301
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 14 -1 0
-BITMAP
-C6
-EE
-7C
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR Iogonek
-ENCODING 302
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 6 19 0 -5
-BITMAP
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-38
-70
-E0
-FC
-78
-ENDCHAR
-STARTCHAR iogonek
-ENCODING 303
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 6 19 0 -5
-BITMAP
-70
-70
-70
-00
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-38
-70
-E0
-FC
-78
-ENDCHAR
-STARTCHAR Idotaccent
-ENCODING 304
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 17 1 0
-BITMAP
-60
-60
-00
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR dotlessi
-ENCODING 305
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 10 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR IJ
-ENCODING 306
-SWIDTH 820 0
-DWIDTH 15 0
-BBX 13 14 1 0
-BITMAP
-E038
-E038
-E038
-E038
-E038
-E038
-E038
-E038
-E038
-EE38
-EE38
-EF78
-E7F0
-E3E0
-ENDCHAR
-STARTCHAR ij
-ENCODING 307
-SWIDTH 542 0
-DWIDTH 10 0
-BBX 8 18 1 -4
-BITMAP
-E7
-E7
-E7
-00
-E7
-E7
-E7
-E7
-E7
-E7
-E7
-E7
-E7
-E7
-07
-07
-1F
-1E
-ENDCHAR
-STARTCHAR Jcircumflex
-ENCODING 308
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 10 18 0 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-0380
-0380
-0380
-0380
-0380
-0380
-0380
-0380
-0380
-E380
-E380
-F780
-7F00
-3E00
-ENDCHAR
-STARTCHAR jcircumflex
-ENCODING 309
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -1 -4
-BITMAP
-38
-7C
-EE
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-F8
-F0
-ENDCHAR
-STARTCHAR Kcommaaccent
-ENCODING 310
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 13 21 1 -7
-BITMAP
-E0F0
-E1E0
-E3C0
-E780
-EF00
-FE00
-FC00
-FE00
-EF00
-E780
-E3C0
-E1E0
-E0F0
-E078
-0000
-0700
-0700
-0700
-0300
-0600
-0400
-ENDCHAR
-STARTCHAR kcommaaccent
-ENCODING 311
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 21 1 -7
-BITMAP
-E000
-E000
-E000
-E000
-E700
-EE00
-FC00
-F800
-F800
-FC00
-EE00
-E700
-E780
-E380
-0000
-1C00
-1C00
-1C00
-0C00
-1800
-1000
-ENDCHAR
-STARTCHAR kgreenlandic
-ENCODING 312
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 10 1 0
-BITMAP
-E700
-EE00
-FC00
-F800
-F800
-FC00
-EE00
-E700
-E780
-E380
-ENDCHAR
-STARTCHAR Lacute
-ENCODING 313
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 18 1 0
-BITMAP
-1C00
-3800
-7000
-0000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-FF80
-FF80
-ENDCHAR
-STARTCHAR lacute
-ENCODING 314
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 18 1 0
-BITMAP
-38
-70
-E0
-00
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR Lcommaaccent
-ENCODING 315
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 21 1 -7
-BITMAP
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-FF80
-FF80
-0000
-1C00
-1C00
-1C00
-0C00
-1800
-1000
-ENDCHAR
-STARTCHAR lcommaaccent
-ENCODING 316
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 21 1 -7
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-00
-E0
-E0
-E0
-60
-C0
-80
-ENDCHAR
-STARTCHAR Lcaron
-ENCODING 317
-SWIDTH 858 0
-DWIDTH 15 0
-BBX 13 14 1 0
-BITMAP
-E038
-E038
-E018
-E018
-E030
-E000
-E000
-E000
-E000
-E000
-E000
-E000
-FF80
-FF80
-ENDCHAR
-STARTCHAR lcaron
-ENCODING 318
-SWIDTH 542 0
-DWIDTH 10 0
-BBX 8 14 1 0
-BITMAP
-E7
-E7
-E3
-E3
-E6
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR Ldot
-ENCODING 319
-SWIDTH 858 0
-DWIDTH 15 0
-BBX 12 14 1 0
-BITMAP
-E000
-E000
-E000
-E000
-E000
-E000
-E030
-E030
-E000
-E000
-E000
-E000
-FF80
-FF80
-ENDCHAR
-STARTCHAR ldot
-ENCODING 320
-SWIDTH 542 0
-DWIDTH 10 0
-BBX 7 14 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E6
-E6
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR Lslash
-ENCODING 321
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 10 14 0 0
-BITMAP
-7000
-7000
-7000
-7000
-7600
-7E00
-F800
-F000
-7000
-7000
-7000
-7000
-7FC0
-7FC0
-ENDCHAR
-STARTCHAR lslash
-ENCODING 322
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 5 14 0 0
-BITMAP
-70
-70
-70
-70
-70
-78
-F8
-F0
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR Nacute
-ENCODING 323
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-E070
-F070
-F070
-F870
-FC70
-EC70
-EE70
-E670
-E770
-E370
-E1F0
-E1F0
-E0F0
-E070
-ENDCHAR
-STARTCHAR nacute
-ENCODING 324
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-0700
-0E00
-1C00
-0000
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR Ncommaaccent
-ENCODING 325
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 21 1 -7
-BITMAP
-E070
-F070
-F070
-F870
-FC70
-EC70
-EE70
-E670
-E770
-E370
-E1F0
-E1F0
-E0F0
-E070
-0000
-0700
-0700
-0700
-0300
-0600
-0400
-ENDCHAR
-STARTCHAR ncommaaccent
-ENCODING 326
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 17 1 -7
-BITMAP
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-0000
-1C00
-1C00
-1C00
-0C00
-1800
-1000
-ENDCHAR
-STARTCHAR Ncaron
-ENCODING 327
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-3B80
-1F00
-0E00
-0000
-E070
-F070
-F070
-F870
-FC70
-EC70
-EE70
-E670
-E770
-E370
-E1F0
-E1F0
-E0F0
-E070
-ENDCHAR
-STARTCHAR ncaron
-ENCODING 328
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-7700
-3E00
-1C00
-0000
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR napostrophe
-ENCODING 329
-SWIDTH 875 0
-DWIDTH 16 0
-BBX 14 14 1 0
-BITMAP
-E000
-E000
-6000
-6000
-C778
-07FC
-079C
-071C
-071C
-071C
-071C
-071C
-071C
-071C
-ENDCHAR
-STARTCHAR Eng
-ENCODING 330
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 -4
-BITMAP
-E070
-F070
-F070
-F870
-FC70
-EC70
-EE70
-E670
-E770
-E370
-E1F0
-E1F0
-E0F0
-E070
-0070
-0070
-01F0
-01E0
-ENDCHAR
-STARTCHAR eng
-ENCODING 331
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 -4
-BITMAP
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-0380
-0380
-0F80
-0F00
-ENDCHAR
-STARTCHAR Omacron
-ENCODING 332
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 17 1 0
-BITMAP
-0F80
-0F80
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR omacron
-ENCODING 333
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 13 1 0
-BITMAP
-1F00
-1F00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Obreve
-ENCODING 334
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-18C0
-1DC0
-0F80
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR obreve
-ENCODING 335
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-3180
-3B80
-1F00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Ohungarumlaut
-ENCODING 336
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-0360
-06C0
-0D80
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR ohungarumlaut
-ENCODING 337
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-0D80
-1B00
-3600
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR OE
-ENCODING 338
-SWIDTH 1000 0
-DWIDTH 19 0
-BBX 17 14 1 0
-BITMAP
-0FFF80
-3FFF80
-79E000
-70E000
-F0E000
-E0E000
-E0FF00
-E0FF00
-E0E000
-F0E000
-70E000
-79E000
-3FFF80
-0FFF80
-ENDCHAR
-STARTCHAR oe
-ENCODING 339
-SWIDTH 944 0
-DWIDTH 18 0
-BBX 16 10 1 0
-BITMAP
-3F7C
-7FFE
-73C7
-E1C7
-E1FF
-E1C0
-E1C0
-73E7
-7FFF
-3F7C
-ENDCHAR
-STARTCHAR Racute
-ENCODING 340
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF80
-E1C0
-E0E0
-E0E0
-E0E0
-E0E0
-E0F0
-ENDCHAR
-STARTCHAR racute
-ENCODING 341
-SWIDTH 389 0
-DWIDTH 7 0
-BBX 6 14 1 0
-BITMAP
-1C
-38
-70
-00
-EC
-FC
-FC
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR Rcommaaccent
-ENCODING 342
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 21 1 -7
-BITMAP
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF80
-E1C0
-E0E0
-E0E0
-E0E0
-E0E0
-E0F0
-0000
-0E00
-0E00
-0E00
-0600
-0C00
-0800
-ENDCHAR
-STARTCHAR rcommaaccent
-ENCODING 343
-SWIDTH 389 0
-DWIDTH 7 0
-BBX 6 17 1 -7
-BITMAP
-EC
-FC
-FC
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-00
-70
-70
-70
-30
-60
-40
-ENDCHAR
-STARTCHAR Rcaron
-ENCODING 344
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-3B80
-1F00
-0E00
-0000
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF80
-E1C0
-E0E0
-E0E0
-E0E0
-E0E0
-E0F0
-ENDCHAR
-STARTCHAR rcaron
-ENCODING 345
-SWIDTH 389 0
-DWIDTH 7 0
-BBX 7 14 0 0
-BITMAP
-EE
-7C
-38
-00
-76
-7E
-7E
-70
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR Sacute
-ENCODING 346
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 18 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-3F80
-7FC0
-F1E0
-E0E0
-F000
-7E00
-3F80
-0FC0
-01E0
-E0E0
-E0E0
-F1E0
-7FC0
-3F80
-ENDCHAR
-STARTCHAR sacute
-ENCODING 347
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-0700
-0E00
-1C00
-0000
-3F00
-7F80
-E380
-E000
-FF00
-3F80
-0380
-E380
-FF00
-7E00
-ENDCHAR
-STARTCHAR Scircumflex
-ENCODING 348
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 18 1 0
-BITMAP
-0E00
-1F00
-3B80
-0000
-3F80
-7FC0
-F1E0
-E0E0
-F000
-7E00
-3F80
-0FC0
-01E0
-E0E0
-E0E0
-F1E0
-7FC0
-3F80
-ENDCHAR
-STARTCHAR scircumflex
-ENCODING 349
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-1C00
-3E00
-7700
-0000
-3F00
-7F80
-E380
-E000
-FF00
-3F80
-0380
-E380
-FF00
-7E00
-ENDCHAR
-STARTCHAR Scedilla
-ENCODING 350
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 19 1 -5
-BITMAP
-3F80
-7FC0
-F1E0
-E0E0
-F000
-7E00
-3F80
-0FC0
-01E0
-E0E0
-E0E0
-F1E0
-7FC0
-3F80
-0C00
-0E00
-0300
-1F00
-1E00
-ENDCHAR
-STARTCHAR scedilla
-ENCODING 351
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 15 1 -5
-BITMAP
-3F00
-7F80
-E380
-E000
-FF00
-3F80
-0380
-E380
-FF00
-7E00
-1800
-1C00
-0600
-3E00
-3C00
-ENDCHAR
-STARTCHAR Scaron
-ENCODING 352
-SWIDTH 667 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-7700
-3E00
-1C00
-0000
-3F00
-7F80
-E380
-F800
-7E00
-1F80
-E3C0
-F3C0
-7F80
-3F00
-ENDCHAR
-STARTCHAR scaron
-ENCODING 353
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 8 14 1 0
-BITMAP
-77
-3E
-1C
-00
-1E
-7F
-E7
-E0
-FE
-3F
-07
-E7
-FE
-78
-ENDCHAR
-STARTCHAR Tcommaaccent
-ENCODING 354
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 11 19 0 -5
-BITMAP
-FFE0
-FFE0
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0C00
-0E00
-0300
-1F00
-1E00
-ENDCHAR
-STARTCHAR tcommaaccent
-ENCODING 355
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 18 0 -5
-BITMAP
-70
-70
-70
-FC
-FC
-70
-70
-70
-70
-70
-70
-7C
-3C
-30
-38
-0C
-7C
-78
-ENDCHAR
-STARTCHAR Tcaron
-ENCODING 356
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 11 18 0 0
-BITMAP
-3B80
-1F00
-0E00
-0000
-FFE0
-FFE0
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-ENDCHAR
-STARTCHAR tcaron
-ENCODING 357
-SWIDTH 594 0
-DWIDTH 11 0
-BBX 10 14 0 0
-BITMAP
-01C0
-71C0
-70C0
-70C0
-FD80
-FC00
-7000
-7000
-7000
-7000
-7000
-7000
-7C00
-3C00
-ENDCHAR
-STARTCHAR Tbar
-ENCODING 358
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 11 14 0 0
-BITMAP
-FFE0
-FFE0
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-ENDCHAR
-STARTCHAR tbar
-ENCODING 359
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 13 0 0
-BITMAP
-70
-70
-70
-FC
-FC
-70
-70
-78
-78
-70
-70
-7C
-3C
-ENDCHAR
-STARTCHAR Utilde
-ENCODING 360
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0EC0
-1FC0
-1B80
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR utilde
-ENCODING 361
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-3B00
-7F00
-6E00
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR Umacron
-ENCODING 362
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 17 1 0
-BITMAP
-0F80
-0F80
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR umacron
-ENCODING 363
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 13 1 0
-BITMAP
-3E00
-3E00
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR Ubreve
-ENCODING 364
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-18C0
-1DC0
-0F80
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR ubreve
-ENCODING 365
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-6300
-7700
-3E00
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR Uring
-ENCODING 366
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 19 1 0
-BITMAP
-0F00
-1980
-1980
-0F00
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uring
-ENCODING 367
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 15 1 0
-BITMAP
-1E00
-3300
-3300
-1E00
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR Uhungarumlaut
-ENCODING 368
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-06C0
-0D80
-1B00
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uhungarumlaut
-ENCODING 369
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-0D80
-1B00
-3600
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR Uogonek
-ENCODING 370
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 19 1 -5
-BITMAP
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-0700
-0E00
-1C00
-1F80
-0F00
-ENDCHAR
-STARTCHAR uogonek
-ENCODING 371
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 15 1 -5
-BITMAP
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-0E00
-1C00
-3800
-3F00
-1E00
-ENDCHAR
-STARTCHAR Wcircumflex
-ENCODING 372
-SWIDTH 944 0
-DWIDTH 17 0
-BBX 15 18 1 0
-BITMAP
-0380
-07C0
-0EE0
-0000
-E38E
-E38E
-E38E
-E38E
-739C
-739C
-739C
-76DC
-36D8
-36D8
-3EF8
-1C70
-1C70
-1C70
-ENDCHAR
-STARTCHAR wcircumflex
-ENCODING 373
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 15 14 0 0
-BITMAP
-0380
-07C0
-0EE0
-0000
-E38E
-E38E
-E38E
-739C
-77DC
-76DC
-3EF8
-3C78
-1C70
-1C70
-ENDCHAR
-STARTCHAR Ycircumflex
-ENCODING 374
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 13 18 0 0
-BITMAP
-0700
-0F80
-1DC0
-0000
-E038
-E038
-7070
-38E0
-38E0
-1DC0
-1DC0
-0F80
-0700
-0700
-0700
-0700
-0700
-0700
-ENDCHAR
-STARTCHAR ycircumflex
-ENCODING 375
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 18 1 -4
-BITMAP
-1C00
-3E00
-7700
-0000
-E380
-E380
-E380
-7700
-7700
-7700
-3E00
-3E00
-1C00
-1C00
-1C00
-1800
-7800
-7000
-ENDCHAR
-STARTCHAR Ydieresis
-ENCODING 376
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 13 1 0
-BITMAP
-1B00
-1B00
-0000
-E0E0
-60C0
-71C0
-3180
-1B00
-1F00
-0E00
-0E00
-0E00
-0E00
-ENDCHAR
-STARTCHAR Zacute
-ENCODING 377
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 18 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-FFC0
-FFC0
-01C0
-0380
-0700
-0700
-0E00
-1C00
-3800
-3800
-7000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR zacute
-ENCODING 378
-SWIDTH 500 0
-DWIDTH 10 0
-BBX 8 14 1 0
-BITMAP
-0E
-1C
-38
-00
-FF
-FF
-07
-0E
-1C
-38
-70
-E0
-FF
-FF
-ENDCHAR
-STARTCHAR Zdotaccent
-ENCODING 379
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 17 1 0
-BITMAP
-0C00
-0C00
-0000
-FFC0
-FFC0
-01C0
-0380
-0700
-0700
-0E00
-1C00
-3800
-3800
-7000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR zdotaccent
-ENCODING 380
-SWIDTH 500 0
-DWIDTH 10 0
-BBX 8 13 1 0
-BITMAP
-18
-18
-00
-FF
-FF
-07
-0E
-1C
-38
-70
-E0
-FF
-FF
-ENDCHAR
-STARTCHAR Zcaron
-ENCODING 381
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 10 14 0 0
-BITMAP
-7700
-3E00
-1C00
-0000
-FF80
-FF80
-0700
-0E00
-1C00
-3800
-7000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR zcaron
-ENCODING 382
-SWIDTH 500 0
-DWIDTH 10 0
-BBX 8 14 1 0
-BITMAP
-EE
-7C
-38
-00
-FF
-FF
-07
-0E
-1C
-38
-70
-E0
-FF
-FF
-ENDCHAR
-STARTCHAR uni0186
-ENCODING 390
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 14 1 0
-BITMAP
-1F00
-7FC0
-71E0
-E0E0
-E0F0
-0070
-0070
-0070
-0070
-E0F0
-E0E0
-71E0
-7FC0
-1F00
-ENDCHAR
-STARTCHAR uni0189
-ENCODING 393
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 14 14 -1 0
-BITMAP
-3FC0
-3FF0
-3878
-3838
-381C
-381C
-FF1C
-FF1C
-381C
-381C
-3838
-3878
-3FF0
-3FC0
-ENDCHAR
-STARTCHAR uni018E
-ENCODING 398
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 14 2 0
-BITMAP
-FFC0
-FFC0
-01C0
-01C0
-01C0
-01C0
-7FC0
-7FC0
-01C0
-01C0
-01C0
-01C0
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR florin
-ENCODING 402
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 10 17 -1 -4
-BITMAP
-03C0
-07C0
-0E00
-0E00
-7F80
-7F80
-1C00
-1C00
-1C00
-1C00
-1C00
-3800
-3800
-3800
-3800
-F000
-E000
-ENDCHAR
-STARTCHAR uni0197
-ENCODING 407
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 14 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR uni019A
-ENCODING 410
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 14 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR uni019D
-ENCODING 413
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 14 18 -1 -4
-BITMAP
-381C
-3C1C
-3C1C
-3E1C
-3F1C
-3B1C
-3B9C
-399C
-39DC
-38DC
-387C
-387C
-383C
-381C
-3800
-3800
-F800
-F000
-ENDCHAR
-STARTCHAR uni019F
-ENCODING 415
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 14 1 0
-BITMAP
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-FFF8
-FFF8
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR Ohorn
-ENCODING 416
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 15 14 1 0
-BITMAP
-0F8E
-3FEE
-78F6
-7076
-F07C
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR ohorn
-ENCODING 417
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 12 10 1 0
-BITMAP
-1E70
-7FF0
-73B0
-E1F0
-E1E0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni01A7
-ENCODING 423
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 14 1 0
-BITMAP
-3F80
-7FC0
-F1E0
-E0E0
-01E0
-0FC0
-3F80
-7E00
-F000
-E0E0
-E0E0
-F1E0
-7FC0
-3F80
-ENDCHAR
-STARTCHAR uni01A8
-ENCODING 424
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-7E00
-FF00
-E380
-0380
-7F80
-FE00
-E000
-E380
-7F80
-3F00
-ENDCHAR
-STARTCHAR uni01AE
-ENCODING 430
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 11 18 0 -4
-BITMAP
-FFE0
-FFE0
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0F80
-0780
-ENDCHAR
-STARTCHAR Uhorn
-ENCODING 431
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 14 14 1 0
-BITMAP
-E07C
-E07C
-E07C
-E07C
-E078
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uhorn
-ENCODING 432
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 11 10 1 0
-BITMAP
-E3E0
-E3E0
-E3E0
-E3E0
-E3C0
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni01B5
-ENCODING 437
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-FFC0
-FFC0
-01C0
-0380
-0700
-0700
-0E00
-1E00
-3800
-3800
-7000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR uni01B6
-ENCODING 438
-SWIDTH 500 0
-DWIDTH 10 0
-BBX 8 10 1 0
-BITMAP
-FF
-FF
-07
-0E
-1C
-3C
-70
-E0
-FF
-FF
-ENDCHAR
-STARTCHAR uni01BB
-ENCODING 443
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-3E00
-7F00
-E380
-E380
-0380
-FF80
-FF80
-3E00
-7800
-7000
-E000
-FF80
-FF80
-ENDCHAR
-STARTCHAR uni01BC
-ENCODING 444
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 13 0 0
-BITMAP
-FF00
-FF00
-E000
-E000
-FE00
-FF00
-E780
-0380
-0380
-E380
-E780
-FF00
-7E00
-ENDCHAR
-STARTCHAR uni01C0
-ENCODING 448
-SWIDTH 280 0
-DWIDTH 5 0
-BBX 2 18 1 -4
-BITMAP
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-C0
-ENDCHAR
-STARTCHAR uni01C2
-ENCODING 450
-SWIDTH 584 0
-DWIDTH 11 0
-BBX 9 18 1 -3
-BITMAP
-0C00
-0C00
-0C00
-0C00
-0C00
-0C00
-0C00
-FF80
-FF80
-0C00
-FF80
-FF80
-0C00
-0C00
-0C00
-0C00
-0C00
-0C00
-ENDCHAR
-STARTCHAR uni01C3
-ENCODING 451
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 3 14 1 0
-BITMAP
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-E0
-C0
-C0
-00
-E0
-E0
-E0
-ENDCHAR
-STARTCHAR uni01CD
-ENCODING 461
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1DC0
-0F80
-0700
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR uni01CE
-ENCODING 462
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-7700
-3E00
-1C00
-0000
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR uni01CF
-ENCODING 463
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -1 0
-BITMAP
-EE
-7C
-38
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR uni01D0
-ENCODING 464
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 14 -1 0
-BITMAP
-EE
-7C
-38
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR uni01D1
-ENCODING 465
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-1DC0
-0F80
-0700
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR uni01D2
-ENCODING 466
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-3B80
-1F00
-0E00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni01D3
-ENCODING 467
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1DC0
-0F80
-0700
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uni01D4
-ENCODING 468
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-7700
-3E00
-1C00
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni01D5
-ENCODING 469
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 21 1 0
-BITMAP
-0F80
-0F80
-0000
-1980
-1980
-1980
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uni01D6
-ENCODING 470
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 17 1 0
-BITMAP
-3E00
-3E00
-0000
-3300
-3300
-3300
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni01D7
-ENCODING 471
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 22 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-1980
-1980
-1980
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uni01D8
-ENCODING 472
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 18 1 0
-BITMAP
-0700
-0E00
-1C00
-0000
-3300
-3300
-3300
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni01D9
-ENCODING 473
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 22 1 0
-BITMAP
-1DC0
-0F80
-0700
-0000
-1980
-1980
-1980
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uni01DA
-ENCODING 474
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 18 1 0
-BITMAP
-7700
-3E00
-1C00
-0000
-3300
-3300
-3300
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni01DB
-ENCODING 475
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 22 1 0
-BITMAP
-1C00
-0E00
-0700
-0000
-1980
-1980
-1980
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uni01DC
-ENCODING 476
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 18 1 0
-BITMAP
-3800
-1C00
-0E00
-0000
-3300
-3300
-3300
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni01DD
-ENCODING 477
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-3C00
-FF00
-E700
-0380
-FF80
-FF80
-C380
-E700
-7F00
-3C00
-ENDCHAR
-STARTCHAR uni01DE
-ENCODING 478
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 21 1 0
-BITMAP
-0F80
-0F80
-0000
-1980
-1980
-1980
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR uni01DF
-ENCODING 479
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 17 1 0
-BITMAP
-1F00
-1F00
-0000
-3300
-3300
-3300
-0000
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR uni01E0
-ENCODING 480
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 20 1 0
-BITMAP
-0F80
-0F80
-0000
-0600
-0600
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR uni01E1
-ENCODING 481
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 16 1 0
-BITMAP
-3E00
-3E00
-0000
-0C00
-0C00
-0000
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR uni01E2
-ENCODING 482
-SWIDTH 1000 0
-DWIDTH 18 0
-BBX 16 17 1 0
-BITMAP
-03E0
-03E0
-0000
-0FFF
-0FFF
-1F80
-1B80
-3B80
-3B80
-33FE
-73FE
-7380
-7F80
-FF80
-E380
-E3FF
-E3FF
-ENDCHAR
-STARTCHAR uni01E3
-ENCODING 483
-SWIDTH 889 0
-DWIDTH 16 0
-BBX 14 13 1 0
-BITMAP
-07C0
-07C0
-0000
-3DF0
-7FF8
-671C
-0F1C
-3FFC
-7700
-E700
-EF9C
-FFFC
-79F0
-ENDCHAR
-STARTCHAR uni01E4
-ENCODING 484
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 14 1 0
-BITMAP
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-ENDCHAR
-STARTCHAR uni01E5
-ENCODING 485
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 -4
-BITMAP
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-FFC0
-FFC0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR Gcaron
-ENCODING 486
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 18 1 0
-BITMAP
-1DC0
-0F80
-0700
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-ENDCHAR
-STARTCHAR gcaron
-ENCODING 487
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 18 1 -4
-BITMAP
-3B80
-1F00
-0E00
-0000
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni01E8
-ENCODING 488
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 13 18 1 0
-BITMAP
-3B80
-1F00
-0E00
-0000
-E0F0
-E1E0
-E3C0
-E780
-EF00
-FE00
-FC00
-FE00
-EF00
-E780
-E3C0
-E1E0
-E0F0
-E078
-ENDCHAR
-STARTCHAR uni01E9
-ENCODING 489
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 10 18 0 0
-BITMAP
-EE00
-7C00
-3800
-0000
-7000
-7000
-7000
-7000
-7380
-7700
-7E00
-7C00
-7C00
-7E00
-7700
-7380
-73C0
-71C0
-ENDCHAR
-STARTCHAR uni01EA
-ENCODING 490
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 19 1 -5
-BITMAP
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-0380
-0700
-0E00
-0FC0
-0780
-ENDCHAR
-STARTCHAR uni01EB
-ENCODING 491
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 15 1 -5
-BITMAP
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-0E00
-1C00
-3800
-3F00
-1E00
-ENDCHAR
-STARTCHAR uni01EC
-ENCODING 492
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 22 1 -5
-BITMAP
-0F80
-0F80
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-0380
-0700
-0E00
-0FC0
-0780
-ENDCHAR
-STARTCHAR uni01ED
-ENCODING 493
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 18 1 -5
-BITMAP
-1F00
-1F00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-0E00
-1C00
-3800
-3F00
-1E00
-ENDCHAR
-STARTCHAR uni01F0
-ENCODING 496
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -1 -4
-BITMAP
-EE
-7C
-38
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-F8
-F0
-ENDCHAR
-STARTCHAR uni01F4
-ENCODING 500
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 12 18 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-0F80
-3FE0
-78E0
-7070
-F070
-E000
-E000
-E3F0
-E3F0
-F070
-7070
-78F0
-3FF0
-1FB0
-ENDCHAR
-STARTCHAR uni01F5
-ENCODING 501
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 18 1 -4
-BITMAP
-0380
-0700
-0E00
-0000
-3DC0
-7FC0
-73C0
-E1C0
-E1C0
-E1C0
-E1C0
-73C0
-7FC0
-3DC0
-01C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni01F8
-ENCODING 504
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1C00
-0E00
-0700
-0000
-E070
-F070
-F070
-F870
-FC70
-EC70
-EE70
-E670
-E770
-E370
-E1F0
-E1F0
-E0F0
-E070
-ENDCHAR
-STARTCHAR uni01F9
-ENCODING 505
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-7000
-3800
-1C00
-0000
-EF00
-FF80
-F380
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR Aringacute
-ENCODING 506
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 22 1 0
-BITMAP
-0380
-0700
-0E00
-0000
-0F00
-1980
-1980
-0F00
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR aringacute
-ENCODING 507
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 18 1 0
-BITMAP
-0700
-0E00
-1C00
-0000
-3C00
-6600
-6600
-3C00
-3E00
-7F00
-7380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR AEacute
-ENCODING 508
-SWIDTH 1000 0
-DWIDTH 18 0
-BBX 16 18 1 0
-BITMAP
-0070
-00E0
-01C0
-0000
-0FFF
-0FFF
-1F80
-1B80
-3B80
-3B80
-33FE
-73FE
-7380
-7F80
-FF80
-E380
-E3FF
-E3FF
-ENDCHAR
-STARTCHAR aeacute
-ENCODING 509
-SWIDTH 889 0
-DWIDTH 16 0
-BBX 14 14 1 0
-BITMAP
-01C0
-0380
-0700
-0000
-3DF0
-7FF8
-671C
-0F1C
-3FFC
-7700
-E700
-EF9C
-FFFC
-79F0
-ENDCHAR
-STARTCHAR Oslashacute
-ENCODING 510
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 15 18 0 0
-BITMAP
-00E0
-01C0
-0380
-0000
-07C6
-1FFC
-3C38
-3878
-78DC
-719C
-711C
-731C
-761C
-7C3C
-3838
-3C78
-7FF0
-C7C0
-ENDCHAR
-STARTCHAR oslashacute
-ENCODING 511
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 12 14 0 0
-BITMAP
-01C0
-0380
-0700
-0000
-0F30
-3FE0
-39C0
-73E0
-77E0
-7EE0
-7CE0
-39C0
-7FC0
-CF00
-ENDCHAR
-STARTCHAR uni0200
-ENCODING 512
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-3600
-1B00
-0D80
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR uni0201
-ENCODING 513
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-6C00
-3600
-1B00
-0000
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR uni0202
-ENCODING 514
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0F80
-1DC0
-18C0
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR uni0203
-ENCODING 515
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 14 1 0
-BITMAP
-3E00
-7700
-6300
-0000
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR uni0204
-ENCODING 516
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-D800
-6C00
-3600
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR uni0205
-ENCODING 517
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-6C00
-3600
-1B00
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni0206
-ENCODING 518
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 18 2 0
-BITMAP
-3E00
-7700
-6300
-0000
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-ENDCHAR
-STARTCHAR uni0207
-ENCODING 519
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-3E00
-7700
-6300
-0000
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni0208
-ENCODING 520
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -2 0
-BITMAP
-D8
-6C
-36
-00
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-ENDCHAR
-STARTCHAR uni0209
-ENCODING 521
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 14 -2 0
-BITMAP
-D8
-6C
-36
-00
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-ENDCHAR
-STARTCHAR uni020A
-ENCODING 522
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 18 -1 0
-BITMAP
-7C
-EE
-C6
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR uni020B
-ENCODING 523
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 7 14 -1 0
-BITMAP
-7C
-EE
-C6
-00
-38
-38
-38
-38
-38
-38
-38
-38
-38
-38
-ENDCHAR
-STARTCHAR uni020C
-ENCODING 524
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-3600
-1B00
-0D80
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR uni020D
-ENCODING 525
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-6C00
-3600
-1B00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni020E
-ENCODING 526
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 18 1 0
-BITMAP
-0F80
-1DC0
-18C0
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR uni020F
-ENCODING 527
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 14 1 0
-BITMAP
-1F00
-3B80
-3180
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni0210
-ENCODING 528
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-6C00
-3600
-1B00
-0000
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF80
-E1C0
-E0E0
-E0E0
-E0E0
-E0E0
-E0F0
-ENDCHAR
-STARTCHAR uni0211
-ENCODING 529
-SWIDTH 389 0
-DWIDTH 7 0
-BBX 7 14 0 0
-BITMAP
-D8
-6C
-36
-00
-76
-7E
-7E
-70
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR uni0212
-ENCODING 530
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1F00
-3B80
-3180
-0000
-FF00
-FFC0
-E1E0
-E0E0
-E0E0
-E1E0
-FFC0
-FF80
-E1C0
-E0E0
-E0E0
-E0E0
-E0E0
-E0F0
-ENDCHAR
-STARTCHAR uni0213
-ENCODING 531
-SWIDTH 389 0
-DWIDTH 7 0
-BBX 7 14 0 0
-BITMAP
-7C
-EE
-C6
-00
-76
-7E
-7E
-70
-70
-70
-70
-70
-70
-70
-ENDCHAR
-STARTCHAR uni0214
-ENCODING 532
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-3600
-1B00
-0D80
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uni0215
-ENCODING 533
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-D800
-6C00
-3600
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni0216
-ENCODING 534
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-0F80
-1DC0
-18C0
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-E070
-70E0
-7FE0
-1F80
-ENDCHAR
-STARTCHAR uni0217
-ENCODING 535
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-3E00
-7700
-6300
-0000
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR Scommaaccent
-ENCODING 536
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 11 21 1 -7
-BITMAP
-3F80
-7FC0
-F1E0
-E0E0
-F000
-7E00
-3F80
-0FC0
-01E0
-E0E0
-E0E0
-F1E0
-7FC0
-3F80
-0000
-0E00
-0E00
-0E00
-0600
-0C00
-0800
-ENDCHAR
-STARTCHAR scommaaccent
-ENCODING 537
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 17 1 -7
-BITMAP
-3F00
-7F80
-E380
-E000
-FF00
-3F80
-0380
-E380
-FF00
-7E00
-0000
-1C00
-1C00
-1C00
-0C00
-1800
-1000
-ENDCHAR
-STARTCHAR Tcommaaccent
-ENCODING 538
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 11 21 0 -7
-BITMAP
-FFE0
-FFE0
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0E00
-0000
-0E00
-0E00
-0E00
-0600
-0C00
-0800
-ENDCHAR
-STARTCHAR tcommaaccent
-ENCODING 539
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 20 0 -7
-BITMAP
-70
-70
-70
-FC
-FC
-70
-70
-70
-70
-70
-70
-7C
-3C
-00
-38
-38
-38
-18
-30
-20
-ENDCHAR
-STARTCHAR uni021E
-ENCODING 542
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 18 1 0
-BITMAP
-1DC0
-0F80
-0700
-0000
-E070
-E070
-E070
-E070
-E070
-E070
-FFF0
-FFF0
-E070
-E070
-E070
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR uni021F
-ENCODING 543
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 10 18 0 0
-BITMAP
-EE00
-7C00
-3800
-0000
-7000
-7000
-7000
-7000
-7780
-7FC0
-79C0
-71C0
-71C0
-71C0
-71C0
-71C0
-71C0
-71C0
-ENDCHAR
-STARTCHAR uni0226
-ENCODING 550
-SWIDTH 722 0
-DWIDTH 14 0
-BBX 12 17 1 0
-BITMAP
-0600
-0600
-0000
-0F00
-0F00
-1F80
-1980
-1980
-39C0
-39C0
-30C0
-70E0
-7FE0
-7FE0
-E070
-E070
-E070
-ENDCHAR
-STARTCHAR uni0227
-ENCODING 551
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 13 1 0
-BITMAP
-0C00
-0C00
-0000
-3E00
-7F00
-6380
-0780
-3F80
-7B80
-E380
-E780
-FB80
-7BC0
-ENDCHAR
-STARTCHAR uni0228
-ENCODING 552
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 10 19 2 -5
-BITMAP
-FFC0
-FFC0
-E000
-E000
-E000
-E000
-FF80
-FF80
-E000
-E000
-E000
-E000
-FFC0
-FFC0
-1800
-1C00
-0600
-3E00
-3C00
-ENDCHAR
-STARTCHAR uni0229
-ENCODING 553
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 15 1 -5
-BITMAP
-1E00
-7F00
-7380
-E180
-FF80
-FF80
-E000
-7380
-7F80
-1E00
-1800
-1C00
-0600
-3E00
-3C00
-ENDCHAR
-STARTCHAR uni022A
-ENCODING 554
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 21 1 0
-BITMAP
-0F80
-0F80
-0000
-0CC0
-0CC0
-0CC0
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR uni022B
-ENCODING 555
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 17 1 0
-BITMAP
-1F00
-1F00
-0000
-3300
-3300
-3300
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni022C
-ENCODING 556
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 21 1 0
-BITMAP
-07C0
-07C0
-0000
-0710
-0FE0
-11C0
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR uni022D
-ENCODING 557
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 17 1 0
-BITMAP
-3E00
-3E00
-0000
-3B00
-7F00
-6E00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni022E
-ENCODING 558
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 17 1 0
-BITMAP
-0300
-0300
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR uni022F
-ENCODING 559
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 13 1 0
-BITMAP
-0C00
-0C00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni0230
-ENCODING 560
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 13 20 1 0
-BITMAP
-0F80
-0F80
-0000
-0300
-0300
-0000
-0F80
-3FE0
-78F0
-7070
-F078
-E038
-E038
-E038
-E038
-F078
-7070
-78F0
-3FE0
-0F80
-ENDCHAR
-STARTCHAR uni0231
-ENCODING 561
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 16 1 0
-BITMAP
-1F00
-1F00
-0000
-0C00
-0C00
-0000
-1E00
-7F80
-7380
-E1C0
-E1C0
-E1C0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni0232
-ENCODING 562
-SWIDTH 667 0
-DWIDTH 13 0
-BBX 13 17 0 0
-BITMAP
-0F80
-0F80
-0000
-E038
-E038
-7070
-38E0
-38E0
-1DC0
-1DC0
-0F80
-0700
-0700
-0700
-0700
-0700
-0700
-ENDCHAR
-STARTCHAR uni0233
-ENCODING 563
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 17 1 -4
-BITMAP
-3E00
-3E00
-0000
-E380
-E380
-E380
-7700
-7700
-7700
-3E00
-3E00
-1C00
-1C00
-1C00
-1800
-7800
-7000
-ENDCHAR
-STARTCHAR uni0250
-ENCODING 592
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 10 10 1 0
-BITMAP
-F780
-77C0
-79C0
-71C0
-7780
-7F00
-7800
-7180
-3F80
-1F00
-ENDCHAR
-STARTCHAR uni0254
-ENCODING 596
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-3C00
-FF00
-E700
-0380
-0380
-0380
-0380
-E700
-FF00
-3C00
-ENDCHAR
-STARTCHAR uni0258
-ENCODING 600
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-3C00
-7F00
-E700
-C380
-FF80
-FF80
-0380
-E700
-FF00
-3C00
-ENDCHAR
-STARTCHAR uni0259
-ENCODING 601
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-3C00
-FF00
-E700
-0380
-FF80
-FF80
-C380
-E700
-7F00
-3C00
-ENDCHAR
-STARTCHAR uni025F
-ENCODING 607
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 7 14 0 -4
-BITMAP
-38
-38
-38
-38
-38
-38
-38
-38
-FE
-FE
-38
-38
-F8
-F0
-ENDCHAR
-STARTCHAR uni0265
-ENCODING 613
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 -4
-BITMAP
-E380
-E380
-E380
-E380
-E380
-E380
-E380
-E780
-FF80
-7B80
-0380
-0380
-0380
-0380
-ENDCHAR
-STARTCHAR uni0275
-ENCODING 629
-SWIDTH 611 0
-DWIDTH 12 0
-BBX 10 10 1 0
-BITMAP
-1E00
-7F80
-7380
-E1C0
-FFC0
-FFC0
-E1C0
-7380
-7F80
-1E00
-ENDCHAR
-STARTCHAR uni0279
-ENCODING 633
-SWIDTH 389 0
-DWIDTH 7 0
-BBX 6 10 1 0
-BITMAP
-1C
-1C
-1C
-1C
-1C
-1C
-1C
-FC
-FC
-DC
-ENDCHAR
-STARTCHAR uni0287
-ENCODING 647
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 13 0 0
-BITMAP
-F0
-F8
-38
-38
-38
-38
-38
-38
-FC
-FC
-38
-38
-38
-ENDCHAR
-STARTCHAR uni0288
-ENCODING 648
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 17 0 -4
-BITMAP
-70
-70
-70
-FC
-FC
-70
-70
-70
-70
-70
-70
-70
-70
-70
-70
-7C
-3C
-ENDCHAR
-STARTCHAR uni0289
-ENCODING 649
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 10 1 0
-BITMAP
-E380
-E380
-E380
-E380
-FF80
-FF80
-E380
-E780
-FF80
-7B80
-ENDCHAR
-STARTCHAR uni028C
-ENCODING 652
-SWIDTH 556 0
-DWIDTH 9 0
-BBX 9 10 0 0
-BITMAP
-1C00
-1C00
-3E00
-3E00
-7700
-7700
-7700
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR uni028D
-ENCODING 653
-SWIDTH 778 0
-DWIDTH 15 0
-BBX 15 10 0 0
-BITMAP
-1C70
-1C70
-3C78
-3EF8
-76DC
-77DC
-739C
-E38E
-E38E
-E38E
-ENDCHAR
-STARTCHAR uni028E
-ENCODING 654
-SWIDTH 556 0
-DWIDTH 11 0
-BBX 9 14 1 0
-BITMAP
-0700
-0F00
-0C00
-1C00
-1C00
-1C00
-3E00
-3E00
-7700
-7700
-7700
-E380
-E380
-E380
-ENDCHAR
-STARTCHAR uni029E
-ENCODING 670
-SWIDTH 556 0
-DWIDTH 10 0
-BBX 9 14 1 -4
-BITMAP
-E380
-F380
-7380
-3B80
-1F80
-0F80
-0F80
-1F80
-3B80
-7380
-0380
-0380
-0380
-0380
-ENDCHAR
-STARTCHAR uni02BB
-ENCODING 699
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 5 1 9
-BITMAP
-60
-C0
-C0
-E0
-E0
-ENDCHAR
-STARTCHAR afii57929
-ENCODING 700
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 5 1 9
-BITMAP
-E0
-E0
-60
-60
-C0
-ENDCHAR
-STARTCHAR afii64937
-ENCODING 701
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 3 5 1 9
-BITMAP
-E0
-E0
-C0
-C0
-60
-ENDCHAR
-STARTCHAR circumflex
-ENCODING 710
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 7 3 0 11
-BITMAP
-38
-7C
-EE
-ENDCHAR
-STARTCHAR caron
-ENCODING 711
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 7 3 0 11
-BITMAP
-EE
-7C
-38
-ENDCHAR
-STARTCHAR uni02C8
-ENCODING 712
-SWIDTH 238 0
-DWIDTH 4 0
-BBX 2 5 1 9
-BITMAP
-C0
-C0
-C0
-C0
-80
-ENDCHAR
-STARTCHAR macron
-ENCODING 713
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 5 2 1 12
-BITMAP
-F8
-F8
-ENDCHAR
-STARTCHAR uni02CA
-ENCODING 714
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 5 3 0 11
-BITMAP
-38
-70
-E0
-ENDCHAR
-STARTCHAR uni02CB
-ENCODING 715
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 5 3 0 11
-BITMAP
-E0
-70
-38
-ENDCHAR
-STARTCHAR uni02CD
-ENCODING 717
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 5 2 1 -3
-BITMAP
-F8
-F8
-ENDCHAR
-STARTCHAR uni02CE
-ENCODING 718
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 5 3 0 -4
-BITMAP
-E0
-70
-38
-ENDCHAR
-STARTCHAR uni02CF
-ENCODING 719
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 5 3 0 -4
-BITMAP
-38
-70
-E0
-ENDCHAR
-STARTCHAR breve
-ENCODING 728
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 7 3 0 11
-BITMAP
-C6
-EE
-7C
-ENDCHAR
-STARTCHAR dotaccent
-ENCODING 729
-SWIDTH 333 0
-DWIDTH 4 0
-BBX 2 2 1 12
-BITMAP
-C0
-C0
-ENDCHAR
-STARTCHAR ring
-ENCODING 730
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 4 0 10
-BITMAP
-78
-CC
-CC
-78
-ENDCHAR
-STARTCHAR ogonek
-ENCODING 731
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 6 5 0 -5
-BITMAP
-38
-70
-E0
-FC
-78
-ENDCHAR
-STARTCHAR tilde
-ENCODING 732
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 7 3 0 11
-BITMAP
-76
-FE
-DC
-ENDCHAR
-STARTCHAR hungarumlaut
-ENCODING 733
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 7 3 0 11
-BITMAP
-36
-6C
-D8
-ENDCHAR
-STARTCHAR uni02EE
-ENCODING 750
-SWIDTH 500 0
-DWIDTH 9 0
-BBX 7 5 1 9
-BITMAP
-EE
-EE
-66
-66
-CC
-ENDCHAR
-STARTCHAR uni037E
-ENCODING 894
-SWIDTH 333 0
-DWIDTH 6 0
-BBX 3 13 1 -3
-BITMAP
-E0
-E0
-E0
-00
-00
-00
-00
-E0
-E0
-E0
-60
-C0
-80
-ENDCHAR
-STARTCHAR tonos
-ENCODING 900
-SWIDTH 333 0
-DWIDTH 5 0
-BBX 5 3 0 11
-BITMAP
-38
-70
-E0
-ENDCHAR
-STARTCHAR dieresistonos
-ENCODING 901
-SWIDTH 333 0
-DWIDTH 7 0
-BBX 6 6 1 12
-BITMAP
-1C
-38
-70
-00
-D8
-D8
-ENDCHAR
-STARTCHAR anoteleia
-ENCODING 903
-SWIDTH 278 0
-DWIDTH 5 0
-BBX 2 2 1 6
-BITMAP
-C0
-C0
-ENDCHAR
-STARTCHAR mu
-ENCODING 956
-SWIDTH 611 0
-DWIDTH 11 0
-BBX 9 14 1 -4
-BITMAP
-E380
Commit: aa563f0c818e20645bdedd3728b4b4da590a4145
https://github.com/scummvm/scummvm/commit/aa563f0c818e20645bdedd3728b4b4da590a4145
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-01T15:15:49+02:00
Commit Message:
ALL: Remove PS2 port
Changed paths:
R backends/fs/ps2/ps2-fs-factory.cpp
R backends/fs/ps2/ps2-fs-factory.h
R backends/fs/ps2/ps2-fs.cpp
R backends/fs/ps2/ps2-fs.h
R backends/platform/ps2/DmaPipe.cpp
R backends/platform/ps2/DmaPipe.h
R backends/platform/ps2/Gs2dScreen.cpp
R backends/platform/ps2/Gs2dScreen.h
R backends/platform/ps2/GsDefs.h
R backends/platform/ps2/Makefile.ps2
R backends/platform/ps2/Makefile.ps2.dev
R backends/platform/ps2/README.PS2
R backends/platform/ps2/asyncfio.cpp
R backends/platform/ps2/asyncfio.h
R backends/platform/ps2/cd.c
R backends/platform/ps2/cd.h
R backends/platform/ps2/eecodyvdfs.c
R backends/platform/ps2/eecodyvdfs.h
R backends/platform/ps2/fileio.cpp
R backends/platform/ps2/fileio.h
R backends/platform/ps2/icon.cpp
R backends/platform/ps2/icon.h
R backends/platform/ps2/iop/CoDyVDfs/Makefile
R backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h
R backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h
R backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c
R backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h
R backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c
R backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h
R backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst
R backends/platform/ps2/iop/CoDyVDfs/iop/irx_imports.h
R backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c
R backends/platform/ps2/iop/rpckbd/Makefile
R backends/platform/ps2/iop/rpckbd/include/ps2kbd.h
R backends/platform/ps2/iop/rpckbd/src/imports.lst
R backends/platform/ps2/iop/rpckbd/src/irx_imports.h
R backends/platform/ps2/iop/rpckbd/src/ps2kbd.c
R backends/platform/ps2/iop/rpckbd/src/us_keymap.h
R backends/platform/ps2/irxboot.cpp
R backends/platform/ps2/irxboot.h
R backends/platform/ps2/module.mk
R backends/platform/ps2/ps2debug.cpp
R backends/platform/ps2/ps2debug.h
R backends/platform/ps2/ps2input.cpp
R backends/platform/ps2/ps2input.h
R backends/platform/ps2/ps2mutex.cpp
R backends/platform/ps2/ps2pad.cpp
R backends/platform/ps2/ps2pad.h
R backends/platform/ps2/ps2temp.h
R backends/platform/ps2/ps2time.cpp
R backends/platform/ps2/rpckbd.c
R backends/platform/ps2/rpckbd.h
R backends/platform/ps2/savefilemgr.cpp
R backends/platform/ps2/savefilemgr.h
R backends/platform/ps2/sysdefs.h
R backends/platform/ps2/systemps2.cpp
R backends/platform/ps2/systemps2.h
R backends/plugins/ps2/main_prog.ld
R backends/plugins/ps2/plugin.ld
R backends/plugins/ps2/ps2-provider.cpp
R backends/plugins/ps2/ps2-provider.h
README.md
backends/module.mk
backends/plugins/elf/version.cpp
base/version.cpp
common/hashmap.h
common/inttypes.h
common/json.h
common/lua/loslib.cpp
common/lua/luaconf.h
common/scummsys.h
configure
devtools/create_titanic/hashmap.h
devtools/create_xeen/hashmap.h
doc/QuickStart
doc/cz/PrectiMe
doc/da/HurtigStart
doc/de/LIESMICH
doc/de/Schnellstart
doc/es/InicioRapido
doc/fr/DemarrageRapide
doc/it/GuidaRapida
doc/no-nb/HurtigStart
doc/se/LasMig
doc/se/Snabbstart
engines/dialogs.cpp
engines/scumm/saveload.cpp
diff --git a/README.md b/README.md
index b586d65a61..c08c4fe743 100644
--- a/README.md
+++ b/README.md
@@ -151,8 +151,8 @@ check back often.
Among the systems on which you can play those games are regular desktop
computers (running Windows, Linux, Mac OS X, ...), game consoles
-(Dreamcast, Nintendo DS & Wii, PS2, PSP, ...), smartphones (Android,
-iPhone, Symbian ...) and more.
+(Dreamcast, Nintendo DS & Wii, PSP, ...), smartphones (Android, iPhone,
+Symbian ...) and more.
At this time ScummVM is still under heavy development. Be aware that
whilst we attempt to make sure that many games can be completed with few
diff --git a/backends/fs/ps2/ps2-fs-factory.cpp b/backends/fs/ps2/ps2-fs-factory.cpp
deleted file mode 100644
index 9c12d27a6e..0000000000
--- a/backends/fs/ps2/ps2-fs-factory.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#if defined(__PLAYSTATION2__)
-
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
-
-#include "backends/fs/ps2/ps2-fs-factory.h"
-#include "backends/fs/ps2/ps2-fs.h"
-
-namespace Common {
-DECLARE_SINGLETON(Ps2FilesystemFactory);
-}
-
-AbstractFSNode *Ps2FilesystemFactory::makeRootFileNode() const {
- return new Ps2FilesystemNode();
-}
-
-AbstractFSNode *Ps2FilesystemFactory::makeCurrentDirectoryFileNode() const {
- return new Ps2FilesystemNode();
-}
-
-AbstractFSNode *Ps2FilesystemFactory::makeFileNodePath(const Common::String &path) const {
- return new Ps2FilesystemNode(path, true);
-}
-
-#endif
diff --git a/backends/fs/ps2/ps2-fs-factory.h b/backends/fs/ps2/ps2-fs-factory.h
deleted file mode 100644
index d6745a64d3..0000000000
--- a/backends/fs/ps2/ps2-fs-factory.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef PS2_FILESYSTEM_FACTORY_H
-#define PS2_FILESYSTEM_FACTORY_H
-
-#include "common/singleton.h"
-#include "backends/fs/fs-factory.h"
-
-/**
- * Creates PS2FilesystemNode objects.
- *
- * Parts of this class are documented in the base interface class, AbstractFilesystemFactory.
- */
-class Ps2FilesystemFactory : public FilesystemFactory, public Common::Singleton<Ps2FilesystemFactory> {
-public:
- virtual AbstractFSNode *makeRootFileNode() const;
- virtual AbstractFSNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFSNode *makeFileNodePath(const Common::String &path) const;
-
-private:
- friend class Common::Singleton<SingletonBaseType>;
-};
-
-#endif /*PS2_FILESYSTEM_FACTORY_H*/
diff --git a/backends/fs/ps2/ps2-fs.cpp b/backends/fs/ps2/ps2-fs.cpp
deleted file mode 100644
index 80382d2a85..0000000000
--- a/backends/fs/ps2/ps2-fs.cpp
+++ /dev/null
@@ -1,451 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#if defined(__PLAYSTATION2__)
-
-// Disable symbol overrides so that we can use "FILE"
-#define FORBIDDEN_SYMBOL_EXCEPTION_FILE
-#define FORBIDDEN_SYMBOL_EXCEPTION_printf
-#define FORBIDDEN_SYMBOL_EXCEPTION_abort
-#define FORBIDDEN_SYMBOL_EXCEPTION_exit
-
-#include "backends/fs/ps2/ps2-fs.h"
-
-#include <kernel.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "backends/platform/ps2/asyncfio.h"
-#include "backends/platform/ps2/fileio.h"
-#include "backends/platform/ps2/systemps2.h"
-#include "backends/platform/ps2/ps2debug.h"
-
-#include <fileXio_rpc.h>
-
-#include "backends/platform/ps2/ps2temp.h"
-
-#define DEFAULT_MODE (FIO_S_IRUSR | FIO_S_IWUSR | FIO_S_IRGRP | FIO_S_IWGRP | FIO_S_IROTH | FIO_S_IWOTH)
-
-extern AsyncFio fio;
-extern OSystem_PS2 *g_systemPs2;
-
-const char *_lastPathComponent(const Common::String &str) {
- if (str.empty())
- return "";
-
- const char *start = str.c_str();
- const char *cur = start + str.size() - 2;
-
- while (cur >= start && *cur != '/' && *cur != ':') {
- --cur;
- }
-
- cur++;
-
- // dbg_printf("lastPathComponent path=%s token=%s\n", start, cur);
-
- return cur;
-}
-
-Ps2FilesystemNode::Ps2FilesystemNode() {
- dbg_printf("NEW FSNODE()\n");
-
- _isHere = true;
- _isDirectory = true;
- _isRoot = true;
- _verified = false;
- _displayName = Common::String("PlayStation 2");
- _path = "";
-}
-
-Ps2FilesystemNode::Ps2FilesystemNode(const Common::String &path) {
- dbg_printf("NEW FSNODE(%s)\n", path.c_str());
-
- _path = path;
-
- if (path.empty()) {
- _isHere = true;
- _isDirectory = true; /* root is always a dir */
- _isRoot = true;
- _displayName = Common::String("PlayStation 2");
- _verified = true;
- } else if (path.lastChar() == ':') {
- _isHere = true;
- _isDirectory = true; /* devs are always a dir */
- _isRoot = false;
- _displayName = getDeviceDescription();
- _verified = true;
- } else {
- _verified = false;
- doverify();
- if (!_isHere)
- return;
-
- _displayName = _lastPathComponent(_path);
-
- if (_isDirectory && _path.lastChar() != '/')
- _path+= '/';
-
- _isRoot = false;
- }
-}
-
-Ps2FilesystemNode::Ps2FilesystemNode(const Common::String &path, bool verify) {
- dbg_printf("NEW FSNODE(%s, %d)\n", path.c_str(), verify);
-
- _path = path;
-
- if (path.empty()) {
- _isHere = true;
- _isDirectory = true; /* root is always a dir */
- _isRoot = true;
- _displayName = Common::String("PlayStation 2");
- _verified = true;
- } else if (path.lastChar() == ':') {
- _isHere = true;
- _isDirectory = true; /* devs are always a dir */
- _isRoot = false;
- _displayName = getDeviceDescription();
- _verified = true;
- } else {
- _verified = false;
- if (verify) {
- doverify();
-
- if (!_isHere)
- return;
-
- } else {
- _verified = false;
- _isDirectory = false;
- _isHere = false; // true
- }
-
- _displayName = _lastPathComponent(_path);
-
- if (_isDirectory && _path.lastChar() != '/')
- _path+= '/';
-
- _isRoot = false;
- }
-}
-
-Ps2FilesystemNode::Ps2FilesystemNode(const Ps2FilesystemNode *node) {
- _displayName = node->_displayName;
- _isDirectory = node->_isDirectory;
- _path = node->_path;
- _isRoot = node->_isRoot;
- _isHere = node->_isHere;
- _verified = node->_verified;
-}
-
-void Ps2FilesystemNode::doverify(void) {
- PS2Device medium;
- int fd;
-
- if (_verified)
- return;
-
- _verified = true;
-
- dbg_printf(" verify: %s -> ", _path.c_str());
-
-#if 0
- if (_path.empty()) {
- dbg_printf("PlayStation 2 Root !\n");
- _verified = true;
- return;
- }
-
- if (_path.lastChar() == ':') {
- dbg_printf("Dev: %s\n", _path.c_str());
- _verified = true;
- return;
- }
-#endif
-
- if (_path[3] != ':' && _path[4] != ':') {
- dbg_printf("relative path !\n");
- _isHere = false;
- _isDirectory = false;
- return;
- }
-
- medium = _getDev(_path);
- if (medium == ERR_DEV) {
- _isHere = false;
- _isDirectory = false;
- return;
- }
-
- switch (medium) {
-#if 0
- case HD_DEV: /*stat*/
- case USB_DEV:
- iox_stat_t stat;
-
- fileXioGetStat(_path.c_str(), &stat);
- fileXioWaitAsync(FXIO_WAIT, &fd);
-
- if (!fd) {
- dbg_printf(" yes [stat]\n");
- return true;
- }
- break;
-#endif
-
- case CD_DEV: /*no stat*/
- case HD_DEV:
- case USB_DEV:
- case HOST_DEV:
- case MC_DEV:
-#if 1
- fd = fio.open(_path.c_str(), O_RDONLY);
-
- dbg_printf("_path = %s -- fio.open -> %d\n", _path.c_str(), fd);
-
- if (fd >=0) {
- fio.close(fd);
- dbg_printf(" yes [open]\n");
- _isHere = true;
- if (medium==MC_DEV && _path.lastChar()=='/')
- _isDirectory = true;
- else
- _isDirectory = false;
- return;
- }
-
- fd = fio.dopen(_path.c_str());
- if (fd >=0) {
- fio.dclose(fd);
- dbg_printf(" yes [dopen]\n");
- _isHere = true;
- _isDirectory = true;
- return;
- }
-
-#else
- fileXioOpen(_path.c_str(), O_RDONLY, DEFAULT_MODE);
- fileXioWaitAsync(FXIO_WAIT, &fd);
- if (fd>=0) {
- fileXioClose(fd);
- fileXioWaitAsync(FXIO_WAIT, &fd);
- return true;
- }
-
- fileXioDopen(_path.c_str());
- fileXioWaitAsync(FXIO_WAIT, &fd);
- if (fd>=0) {
- fileXioDclose(fd);
- fileXioWaitAsync(FXIO_WAIT, &fd);
- return true;
- }
-#endif
- break;
- case ERR_DEV:
- _isHere = false;
- _isDirectory = false;
- break;
- }
-
- _isHere = false;
- _isDirectory = false;
-
- dbg_printf(" no\n");
- return;
-}
-
-AbstractFSNode *Ps2FilesystemNode::getChild(const Common::String &n) const {
-
- dbg_printf("getChild : %s\n", n.c_str());
-
- if (!_isDirectory)
- return NULL;
-
- if (_isRoot) {
- if (n.lastChar() == ':')
- return new Ps2FilesystemNode(n);
- else
- return NULL;
- }
-
- return new Ps2FilesystemNode(_path+n, 1);
-
-/*
- int fd;
-
- if (_path == "pfs0:")
- fd = fio.dopen("pfs0:/");
- else
- fd = fio.dopen(_path.c_str());
-
- if (fd >= 0) {
- iox_dirent_t dirent;
-
- while (fio.dread(fd, &dirent) > 0) {
- if (strcmp(n.c_str(), dirent.name) == 0) {
- Ps2FilesystemNode *dirEntry = new Ps2FilesystemNode();
-
- dirEntry->_isHere = true;
- dirEntry->_isDirectory = (bool)(dirent.stat.mode & FIO_S_IFDIR);
- dirEntry->_isRoot = false;
-
- dirEntry->_path = _path;
- dirEntry->_path += dirent.name;
- if (dirEntry->_isDirectory && dirEntry->_path.lastChar() != '/')
- dirEntry->_path += '/';
- dirEntry->_displayName = dirent.name;
-
- dirEntry->_verified = true;
-
- fio.dclose(fd);
- return dirEntry;
- }
- }
- fio.dclose(fd);
- }
-
- return NULL;
-*/
-}
-
-bool Ps2FilesystemNode::getChildren(AbstractFSList &list, ListMode mode, bool hidden) const {
- //TODO: honor the hidden flag
-
- // dbg_printf("getChildren\n");
-
- if (!_isDirectory)
- return false;
-
- if (_isRoot) {
- if (g_systemPs2->cdPresent())
- list.push_back(new Ps2FilesystemNode("cdfs:"));
-
- if (g_systemPs2->hddPresent())
- list.push_back(new Ps2FilesystemNode("pfs0:"));
-
- if (g_systemPs2->usbMassPresent())
- list.push_back(new Ps2FilesystemNode("mass:"));
-
- if (g_systemPs2->netPresent())
- list.push_back(new Ps2FilesystemNode("host:"));
-
- if (g_systemPs2->mcPresent())
- list.push_back(new Ps2FilesystemNode("mc0:"));
-
- return true;
- } else {
- int fd;
-
- if (_path == "pfs0:")
- fd = fio.dopen("pfs0:/");
- else
- fd = fio.dopen(_path.c_str());
-
- // dbg_printf("dopen = %d\n", fd);
-
- if (fd >= 0) {
- iox_dirent_t dirent;
- Ps2FilesystemNode dirEntry;
- int dreadRes;
- while ((dreadRes = fio.dread(fd, &dirent)) > 0) {
-
- if (dirent.name[0] == '.')
- continue; // ignore '.' and '..'
-
- if ( (mode == Common::FSNode::kListAll) ||
-
- ((mode == Common::FSNode::kListDirectoriesOnly) &&
- (dirent.stat.mode & FIO_S_IFDIR)) ||
-
- ((mode == Common::FSNode::kListFilesOnly) &&
- !(dirent.stat.mode & FIO_S_IFDIR)) ) {
-
- dirEntry._isHere = true;
- dirEntry._isDirectory = (bool)(dirent.stat.mode & FIO_S_IFDIR);
- dirEntry._isRoot = false;
-
- dirEntry._path = _path;
- dirEntry._path += dirent.name;
- if (dirEntry._isDirectory && dirEntry._path.lastChar() != '/')
- dirEntry._path += '/';
- dirEntry._displayName = dirent.name;
-
- dirEntry._verified = true;
-
- list.push_back(new Ps2FilesystemNode(&dirEntry));
- }
- }
- fio.dclose(fd);
- return true;
- }
- }
- return false;
-}
-
-AbstractFSNode *Ps2FilesystemNode::getParent() const {
- // dbg_printf("Ps2FilesystemNode::getParent : path = %s\n", _path.c_str());
-
- if (_isRoot)
- return new Ps2FilesystemNode(this); // FIXME : 0 ???
-
- if (_path.lastChar() == ':') // devs
- return new Ps2FilesystemNode(); // N: default is root
-
- const char *start = _path.c_str();
- const char *end = _lastPathComponent(_path);
-
- Common::String str(start, end - start);
- // dbg_printf(" parent = %s\n", str.c_str());
-
- return new Ps2FilesystemNode(str, true);
-}
-
-const char *Ps2FilesystemNode::getDeviceDescription() const {
- if (strncmp(_path.c_str(), "cdfs", 4) == 0)
- return "DVD Drive";
- else if (strncmp(_path.c_str(), "pfs0", 4) == 0)
- return "Harddisk";
- else if (strncmp(_path.c_str(), "mass", 4) == 0)
- return "USB Mass Storage";
- else if (strncmp(_path.c_str(), "host", 4) == 0)
- return "Host";
- else if (strncmp(_path.c_str(), "mc0", 3) == 0)
- return "Memory Card";
- else
- return "WTF ???";
-}
-
-Common::SeekableReadStream *Ps2FilesystemNode::createReadStream() {
- Common::SeekableReadStream *ss = PS2FileStream::makeFromPath(getPath(), false);
- return ss;
-}
-
-Common::WriteStream *Ps2FilesystemNode::createWriteStream() {
- return PS2FileStream::makeFromPath(getPath(), true);
-}
-
-bool Ps2FilesystemNode::createDirectory() {
- warning("Ps2FilesystemNode::createDirectory(): Not supported");
- return _isHere && _isDirectory;
-}
-
-#endif
diff --git a/backends/fs/ps2/ps2-fs.h b/backends/fs/ps2/ps2-fs.h
deleted file mode 100644
index 16463fd312..0000000000
--- a/backends/fs/ps2/ps2-fs.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef PS2_FILESYSTEM_H
-#define PS2_FILESYSTEM_H
-
-#include "backends/fs/abstract-fs.h"
-
-/**
- * Implementation of the ScummVM file system API based on the Ps2SDK.
- *
- * Parts of this class are documented in the base interface class, AbstractFSNode.
- */
-class Ps2FilesystemNode : public AbstractFSNode {
-
-friend class Ps2FilesystemFactory;
-
-protected:
- Common::String _displayName;
- Common::String _path;
- bool _isDirectory;
- bool _isRoot;
- bool _isHere;
- bool _verified;
-
-private:
- const char *getDeviceDescription() const;
- void doverify();
-
-public:
- /**
- * Creates a PS2FilesystemNode with the root node as path.
- */
- Ps2FilesystemNode();
-
- /**
- * Creates a PS2FilesystemNode for a given path.
- *
- * @param path Common::String with the path the new node should point to.
- */
- Ps2FilesystemNode(const Common::String &path);
- Ps2FilesystemNode(const Common::String &path, bool verify);
-
- /**
- * Copy constructor.
- */
- Ps2FilesystemNode(const Ps2FilesystemNode *node);
-
- virtual Common::String getDisplayName() const { return _displayName; }
- virtual Common::String getName() const { return _displayName; }
- virtual Common::String getPath() const { return _path; }
-
- virtual bool exists() const {
- // dbg_printf("%s : is %d\n", _path.c_str(), _isHere);
- return _isHere;
- }
-
- virtual bool isDirectory() const {
- // dbg_printf("%s : dir %d\n", _path.c_str(), _isDirectory);
- return _isDirectory;
- }
-
- virtual bool isReadable() const {
- return _isHere;
- }
-
- virtual bool isWritable() const {
- if (strncmp(_path.c_str(), "cdfs", 4)==0)
- return false;
- return true; // exists(); // creating ?
- }
-
- virtual AbstractFSNode *clone() const { return new Ps2FilesystemNode(this); }
- virtual AbstractFSNode *getChild(const Common::String &n) const;
- virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
- virtual AbstractFSNode *getParent() const;
-
- virtual Common::SeekableReadStream *createReadStream();
- virtual Common::WriteStream *createWriteStream();
- virtual bool createDirectory();
-
- int getDev() { return 0; }
-};
-
-#endif
diff --git a/backends/module.mk b/backends/module.mk
index 4918fe2353..b25d1b71f2 100644
--- a/backends/module.mk
+++ b/backends/module.mk
@@ -300,13 +300,6 @@ MODULE_OBJS += \
graphics/openpandora/op-graphics.o
endif
-ifeq ($(BACKEND),ps2)
-MODULE_OBJS += \
- fs/ps2/ps2-fs.o \
- fs/ps2/ps2-fs-factory.o \
- plugins/ps2/ps2-provider.o
-endif
-
ifeq ($(BACKEND),psp)
MODULE_OBJS += \
fs/psp/psp-fs.o \
diff --git a/backends/platform/ps2/DmaPipe.cpp b/backends/platform/ps2/DmaPipe.cpp
deleted file mode 100644
index a4bcf6299e..0000000000
--- a/backends/platform/ps2/DmaPipe.cpp
+++ /dev/null
@@ -1,301 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// minimalistic gfx pipe implementation based on Vzzrzzn's GfxPipe.
-
-#include <kernel.h>
-#include <malloc.h>
-#include "backends/platform/ps2/DmaPipe.h"
-#include "backends/platform/ps2/GsDefs.h"
-
-class SinglePipe {
-public:
- SinglePipe(uint64 *buf, uint32 size);
- uint32 spaceLeft(void);
- void flush(void);
- void setGifRegListTag(uint8 numRegs, uint64 list);
- void setGifLoopTag(uint16 nLoop);
- void setReg(uint64 reg, uint64 value);
- void setListReg(uint64 value1, uint64 value2);
- void appendChain(uint64 dmaTag);
- void init(void);
- uint64 *_chainHead;
-private:
- uint64 *_bufPos;
- uint16 *_chainSize;
- uint64 *_buf;
- uint32 _size;
-};
-
-DmaPipe::DmaPipe(uint32 size) {
- size &= ~0x1F;
- _buf = (uint64 *)memalign(64, size);
- _curPipe = 0;
- _pipes[0] = new SinglePipe(_buf, size >> 4);
- _pipes[1] = new SinglePipe(_buf + (size >> 4), size >> 4);
-
- // reset DMAC Channel 2
- D2_CHCR = 0;
- D2_TADR = 0;
- D2_MADR = 0;
- D2_ASR1 = 0;
- D2_ASR0 = 0;
- D_STAT = 0xFF1F;
- D_CTRL = 0;
- D_PCR = 0;
- D_SQWC = 0;
- D_RBOR = 0;
- D_RBSR = 0;
- D_CTRL = 1;
- if (!(D_STAT & CIM2)) // channel 2 interrupts enabled?
- D_STAT = CIM2; // enable them
- if (D_STAT & CIS2) // is there an old interrupt we have to acknowledge?
- D_STAT = CIS2; // do so...
- SifSetDChain();
-}
-
-void DmaPipe::uploadTex(uint32 dest, uint16 bufWidth, uint16 destOfsX, uint16 destOfsY, uint8 pixelFmt, const void *src, uint16 width, uint16 height) {
-
- checkSpace(5);
- *(_pipes[_curPipe]->_chainHead) &= 0xffffffff8fffffff; // change last chain tag id, from 'end' to 'cnt'
- *(_pipes[_curPipe]->_chainHead) |= (1 << 28);
- _pipes[_curPipe]->setGifLoopTag(4);
- _pipes[_curPipe]->setReg(GPR_BITBLTBUF, GS_SET_DEST_BLTBUF((dest/256) & 0x3fff, (bufWidth/64) & 0x3f, pixelFmt & 0x3f));
- _pipes[_curPipe]->setReg( GPR_TRXPOS, GS_SET_DEST_TRXPOS(destOfsX, destOfsY));
- _pipes[_curPipe]->setReg( GPR_TRXREG, GS_SET_TRXREG(width, height));
- _pipes[_curPipe]->setReg( GPR_TRXDIR, 0);
-
- checkSpace(15);
- uint32 numq = width * height;
- switch (pixelFmt) {
- case GS_PSMCT32:
- numq = (numq + 3) >> 2; break;
- case GS_PSMCT24:
- numq = (numq + 2) / 3; break;
- case GS_PSMCT16:
- case GS_PSMCT16S:
- numq = (numq + 7) >> 3; break;
- case GS_PSMT8:
- case GS_PSMT8H:
- numq = (numq + 15) >> 4; break;
- case GS_PSMT4HL:
- case GS_PSMT4HH:
- case GS_PSMT4:
- numq = (numq + 31) >> 5; break;
- default:
- numq = 0;
- }
- uint64 texSrc = (uint32)src & 0x7fffffff;
- while (numq) {
- uint64 sendQuads = (numq <= 0x7FF0) ? numq : 0x7FF0;
- _pipes[_curPipe]->appendChain((1 << 28) | 1);
- _pipes[_curPipe]->appendChain(0x0800000000000000 + sendQuads); // IMAGE mode giftag. Flg = 10b, nloop = currq
- _pipes[_curPipe]->appendChain((texSrc << 32) | 0x0000000030000000 | sendQuads); // set up dma tag for image transfer. next = tex addr, id = 11b, qwc = numq
- numq -= sendQuads;
- texSrc += sendQuads * 16;
- }
- _pipes[_curPipe]->appendChain(0x0000000070000000); // next dma tag
- _pipes[_curPipe]->setGifLoopTag(1);
- _pipes[_curPipe]->setReg(GPR_TEXFLUSH, 1);
-}
-
-void DmaPipe::setTex(uint32 tex, uint32 texBufWidth, uint8 texPowW, uint8 texPowH, uint8 texPixFmt, uint32 clut, uint8 csm, uint32 clutBufWidth, uint32 clutPixFmt) {
- checkSpace(7);
- _pipes[_curPipe]->setGifLoopTag(6);
- _pipes[_curPipe]->setReg( GPR_TEXCLUT, 256 / 64);
- _pipes[_curPipe]->setReg(GPR_TEXFLUSH, 0);
- _pipes[_curPipe]->setReg( GPR_TEXA, GS_SET_TEXA(128, 1, 0));
- _pipes[_curPipe]->setReg( GPR_TEX1_1, GS_SET_TEX1(0, 0, FILTER_LINEAR, FILTER_LINEAR, 0, 0, 0));
- _pipes[_curPipe]->setReg( GPR_TEX0_1, GS_SET_TEX0(tex / 256, texBufWidth / 64, texPixFmt, texPowW, texPowH, 1, 0, clut / 256, clutBufWidth / 64, csm, 0, 1));
- _pipes[_curPipe]->setReg( GPR_CLAMP_1, 0);
-}
-
-void DmaPipe::textureRect(const GsVertex *p1, const GsVertex *p2, const TexVertex *t1, const TexVertex *t2) {
- checkSpace(4);
- _pipes[_curPipe]->setGifRegListTag( 6, 0xffffffffff535310);
- _pipes[_curPipe]->setListReg( GS_SET_PRIM(PR_SPRITE, 0, 1, 0, 1, 0, 1, 0, 0),
- GS_SET_COLQ(GS_RGBA(0x80, 0x80, 0x80, 0x80)));
- _pipes[_curPipe]->setListReg( GS_SET_UV(t1->u, t1->v),
- GS_SET_XYZ(p1->x, p1->y, p1->z));
- _pipes[_curPipe]->setListReg( GS_SET_UV(t2->u, t2->v),
- GS_SET_XYZ(p2->x, p2->y, p2->z));
-}
-
-void DmaPipe::textureRect(const GsVertex *p1, const GsVertex *p2, const GsVertex *p3, const GsVertex *p4, const TexVertex *t1, const TexVertex *t2, const TexVertex *t3, const TexVertex *t4, uint32 rgba) {
- checkSpace(6);
- _pipes[_curPipe]->setGifRegListTag(10, 0xffffff5353535310);
-
- _pipes[_curPipe]->setListReg( GS_SET_PRIM(PR_TRIANGLESTRIP, 0, 1, 0, 1, 0, 1, 0, 0),
- GS_SET_COLQ(rgba));
- _pipes[_curPipe]->setListReg( GS_SET_UV(t1->u, t1->v),
- GS_SET_XYZ(p1->x, p1->y, p1->z));
- _pipes[_curPipe]->setListReg( GS_SET_UV(t2->u, t2->v),
- GS_SET_XYZ(p2->x, p2->y, p2->z));
- _pipes[_curPipe]->setListReg( GS_SET_UV(t3->u, t3->v),
- GS_SET_XYZ(p3->x, p3->y, p3->z));
- _pipes[_curPipe]->setListReg( GS_SET_UV(t4->u, t4->v),
- GS_SET_XYZ(p4->x, p4->y, p4->z));
-}
-
-void DmaPipe::flatRect(const GsVertex *p1, const GsVertex *p2, const GsVertex *p3, const GsVertex *p4, uint32 rgba) {
- checkSpace(4);
- _pipes[_curPipe]->setGifRegListTag( 6, 0xffffffffff555510);
- _pipes[_curPipe]->setListReg( GS_SET_PRIM(PR_TRIANGLESTRIP, 0, 0, 0, 0, 0, 0, 0, 0),
- GS_SET_COLQ(rgba));
- _pipes[_curPipe]->setListReg( GS_SET_XYZ(p1->x, p1->y, p1->z),
- GS_SET_XYZ(p2->x, p2->y, p2->z));
- _pipes[_curPipe]->setListReg( GS_SET_XYZ(p3->x, p3->y, p3->z),
- GS_SET_XYZ(p4->x, p4->y, p4->z));
-}
-
-void DmaPipe::flatRect(const GsVertex *p1, const GsVertex *p2, uint32 rgba) {
- checkSpace(3);
- _pipes[_curPipe]->setGifRegListTag( 4, 0xffffffffffff5510);
- _pipes[_curPipe]->setListReg( GS_SET_PRIM(PR_SPRITE, 0, 0, 0, 1, 0, 0, 0, 0),
- GS_SET_COLQ(rgba));
- _pipes[_curPipe]->setListReg( GS_SET_XYZ(p1->x, p1->y, p1->z),
- GS_SET_XYZ(p2->x, p2->y, p2->z));
-}
-
-void DmaPipe::setOrigin(uint16 x, uint16 y) {
- checkSpace(2);
- _pipes[_curPipe]->setGifLoopTag(1);
- _pipes[_curPipe]->setReg( GPR_XYOFFSET_1, GS_SET_XYOFFSET(x, y));
-}
-
-void DmaPipe::setAlphaBlend(AlphaBlendColor a, AlphaBlendColor b, AlphaBlendAlpha c, AlphaBlendColor d, uint8 fix) {
- checkSpace(2);
- _pipes[_curPipe]->setGifLoopTag(1);
- _pipes[_curPipe]->setReg(GPR_ALPHA_1, GS_SET_ALPHA(a, b, c, d, fix));
-}
-
-void DmaPipe::setConfig(uint8 prModeCont, uint8 dither, uint8 colClamp) {
- checkSpace(9);
- _pipes[_curPipe]->setGifLoopTag(8);
-
- // set some defaults
- // alpha blending formula: (A-B) * C + D
- // set: A = dest pixel, b = 0, C = source alpha, D = source pixel, fix = don't care
-
- _pipes[_curPipe]->setReg(GPR_ALPHA_1, GS_SET_ALPHA(DEST_COLOR, ZERO_COLOR, SOURCE_ALPHA, SOURCE_COLOR, 0));
- _pipes[_curPipe]->setReg( GPR_PRIM, 0);
- _pipes[_curPipe]->setReg( GPR_PABE, 0); // alpha blending off
- _pipes[_curPipe]->setReg( GPR_TEST_1, GS_SET_TEST(0, 0, 0, 0, 0, 0, 1, 1)); // ztest off
- _pipes[_curPipe]->setReg( GPR_ZBUF_1, (uint64)1 << 32); // zbuffer off
-
- _pipes[_curPipe]->setReg( GPR_PRMODECONT, prModeCont & 1);
- _pipes[_curPipe]->setReg( GPR_DTHE, dither & 1);
- _pipes[_curPipe]->setReg( GPR_COLCLAMP, colClamp & 1);
-}
-
-void DmaPipe::setScissorRect(uint64 x1, uint64 y1, uint64 x2, uint64 y2) {
- checkSpace(2);
- _pipes[_curPipe]->setGifLoopTag(1);
- _pipes[_curPipe]->setReg( GPR_SCISSOR_1, GS_SET_SCISSOR(x1, x2, y1, y2));
-}
-
-void DmaPipe::setDrawBuffer(uint64 base, uint64 width, uint8 pixelFmt, uint64 mask) {
- checkSpace(2);
- _pipes[_curPipe]->setGifLoopTag(1);
- _pipes[_curPipe]->setReg( GPR_FRAME_1, GS_SET_FRAME(base / 8192, width / 64, pixelFmt, mask));
-}
-
-void DmaPipe::setFinishEvent(void) {
- checkSpace(3);
- // make GS generate a FINISH interrupt when it's done.
- _pipes[_curPipe]->setGifLoopTag(2);
- _pipes[_curPipe]->setReg( GPR_FINISH, 1);
- _pipes[_curPipe]->setReg( GPR_SIGNAL, 1);
-}
-
-void DmaPipe::checkSpace(uint32 needed) {
- if (_pipes[_curPipe]->spaceLeft() < (needed << 1))
- flush();
-}
-
-void DmaPipe::waitForDma(void) {
- while (D2_CHCR & 0x100) {}
-}
-
-void DmaPipe::flush(void) {
- waitForDma();
- FlushCache(0);
- _pipes[_curPipe]->flush();
- _curPipe ^= 1;
- _pipes[_curPipe]->init();
-}
-
-SinglePipe::SinglePipe(uint64 *buf, uint32 size) {
- _buf = buf;
- _size = size;
- init();
-}
-
-void SinglePipe::flush(void) {
- D2_TADR = (uint32)_buf;
- D2_QWC = 0;
- D2_CHCR |= 0x185;
-}
-
-void SinglePipe::init(void) {
- _buf[0] = 0x0000000070000000;
- _buf[1] = 0;
- _chainHead = _buf;
- _chainSize = (uint16 *)_chainHead;
- _bufPos = _buf + 2;
-}
-
-uint32 SinglePipe::spaceLeft(void) {
- return (_size - (_bufPos - _buf));
-}
-
-void SinglePipe::appendChain(uint64 dmaTag) {
- _chainHead = _bufPos;
- _chainHead[0] = dmaTag;
- _chainHead[1] = 0;
- _chainSize = (uint16 *)_chainHead;
- _bufPos += 2;
-}
-
-void SinglePipe::setReg(uint64 reg, uint64 value) {
- *_bufPos++ = value;
- *_bufPos++ = reg;
- (*_chainSize)++;
-}
-
-void SinglePipe::setListReg(uint64 value1, uint64 value2) {
- *_bufPos++ = value1;
- *_bufPos++ = value2;
- (*_chainSize)++;
-}
-
-void SinglePipe::setGifRegListTag(uint8 numRegs, uint64 list) {
- *_bufPos++ = GIF_SET_TAG(1, 1, 0, 0, 1, 0) | ((uint64)numRegs << 60);
- *_bufPos++ = list;
- (*_chainSize)++;
-}
-
-void SinglePipe::setGifLoopTag(uint16 nLoop) {
- *_bufPos++ = GIF_SET_TAG(0, 1, 0, 0, 0, 1) | nLoop;
- *_bufPos++ = 0xfffffffffffffffe;
- (*_chainSize)++;
-}
diff --git a/backends/platform/ps2/DmaPipe.h b/backends/platform/ps2/DmaPipe.h
deleted file mode 100644
index ad5993923e..0000000000
--- a/backends/platform/ps2/DmaPipe.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// minimalistic gfx pipe implementation based on Vzzrzzn's GfxPipe.
-
-#ifndef __DMAPIPE_H__
-#define __DMAPIPE_H__
-
-#include "backends/platform/ps2/sysdefs.h"
-#include "backends/platform/ps2/GsDefs.h"
-
-class SinglePipe;
-
-struct GsVertex {
- uint16 x, y, z;
-};
-
-struct TexVertex {
- uint16 u, v;
-};
-
-class DmaPipe {
-public:
- DmaPipe(uint32 size);
- void uploadTex(uint32 dest, uint16 bufWidth, uint16 destOfsX, uint16 destOfsY, uint8 pixelFmt, const void *src, uint16 width, uint16 height);
- void setTex(uint32 tex, uint32 texBufWidth, uint8 texPowW, uint8 texPowH, uint8 texPixFmt, uint32 clut, uint8 csm, uint32 clutBufWidth, uint32 clutPixFmt);
- void setDrawBuffer(uint64 base, uint64 width, uint8 pixelFmt, uint64 mask);
- void textureRect(const GsVertex *p1, const GsVertex *p2, const GsVertex *p3, const GsVertex *p4, const TexVertex *t1, const TexVertex *t2, const TexVertex *t3, const TexVertex *t4, uint32 rgba);
- void textureRect(const GsVertex *p1, const GsVertex *p2, const TexVertex *t1, const TexVertex *t2);
- void flatRect(const GsVertex *p1, const GsVertex *p2, const GsVertex *p3, const GsVertex *p4, uint32 rgba);
- void flatRect(const GsVertex *p1, const GsVertex *p2, uint32 rgba);
-
- void setOrigin(uint16 x, uint16 y);
- void setConfig(uint8 prModeCont, uint8 dither, uint8 colClamp);
- void setScissorRect(uint64 x1, uint64 y1, uint64 x2, uint64 y2);
- void setAlphaBlend(AlphaBlendColor a, AlphaBlendColor b, AlphaBlendAlpha c, AlphaBlendColor d, uint8 fix);
- void setFinishEvent(void);
- void flush(void);
- void waitForDma(void);
-private:
- void checkSpace(uint32 needed);
- uint64 *_buf;
- uint8 _curPipe;
- SinglePipe *_pipes[2];
-};
-
-#endif //__DMAPIPE_H__
diff --git a/backends/platform/ps2/Gs2dScreen.cpp b/backends/platform/ps2/Gs2dScreen.cpp
deleted file mode 100644
index 8429bfa6ea..0000000000
--- a/backends/platform/ps2/Gs2dScreen.cpp
+++ /dev/null
@@ -1,948 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#define FORBIDDEN_SYMBOL_EXCEPTION_printf
-#define FORBIDDEN_SYMBOL_EXCEPTION_abort
-#define FORBIDDEN_SYMBOL_EXCEPTION_exit
-
-#include "Gs2dScreen.h"
-#include <kernel.h>
-#include <malloc.h>
-#include <string.h>
-#include <assert.h>
-#include <fileio.h>
-#include <math.h>
-#include "DmaPipe.h"
-#include "GsDefs.h"
-#include "graphics/surface.h"
-#include "backends/platform/ps2/ps2debug.h"
-
-extern void *_gp;
-
-enum Buffers {
- SCREEN = 0,
- MOUSE,
- TEXT,
- PRINTF
-};
-
-/*
- Supported modes:
-
- Mode #1 = SDTV progressive (NTSC: 224p / PAL: 256p)
- Mode #2 = SDTV interlaced (NTSC: 448i / PAL: 512i) <- default
- Mode #3 = EDTV progressive (NTSC: 480p / PAL: 576p)
- Mode #4 = HDTV progressive (720p)
- Mode #5 = HDTV interlaced (1080i)
- Mode #6 = VESA (640x480 at 60)
- Mode #7 = VESA (800x600 at 60)
- Mode #8 = VESA (1024x768 at 60)
-*/
-
-static ps2_mode_t ps2_mode[] = {
-
- // -> w, h, interlaced, pitch, mode, vck, magh, magv, dx, dy
-
- /* #1 : SDTV - progressive */
- { 640, 224, 0, 640, 0x02, 2560, 4, 0, 160 /*158*/, 25 /*22*/ }, /* NTSC */
- { 640, 256, 0, 640, 0x03, 2560, 4, 0, 170 /*163*/, 35 /*36*/ }, /* PAL */
-
- /* #2 : SDTV - interlaced */
- { 640, 448, 1, 640, 0x02, 2560, 4, 0, 156 /*158*/, 50 /*45*/ }, /* NTSC */
- { 640, 512, 1, 640, 0x03, 2560, 4, 0, 170 /*163*/, 70 /*72*/ }, /* PAL */
-
- /* #3 : EDTV */
- { 720, 480, 0, 768, 0x50, 1440, 2, 0, 58, 35 }, /* NTSC */
- /* { 720, 576, 0, 768, 0x53, 1440, 2, 0, 62, 45 }, */ /* PAL : full */
- /* { 656, 576, 0, 704, 0x53, 1312, 2, 0, 62, 45 }, */ /* PAL : redux @ (0,0) */
- { 656, 576, 0, 704, 0x53, 1312, 2, 0, 78 /*314*/, 45 }, /* PAL : redux @ center'd */
-
- /* #4/#5 : HDTV */
- { 1280, 720, 0, 1280, 0x52, 1280, 1, 0, 76 /*302*/, 24 },
- { 1920, 1080, 1, 1920, 0x51, 1920, 1, 0, 60 /*236*/ /*238*/, 40 },
-
- /* #6/#7/#8 : VESA 4:3 @ 60Hz */
- { 640, 480, 0, 640, 0x1A, 1280, 2, 0, 70 /*276*/, 34 },
- { 800, 600, 0, 832, 0x2B, 1600, 2, 0, 105 /*420*/, 26 },
- { 1024, 768, 0, 1024, 0x3B, 2048, 2, 0, 144 /*580*/, 34 }
-};
-
-#define ANIM_STACK_SIZE (1024 * 32)
-
-#define ORG_X 256
-#define ORG_Y 256
-#define ORIGIN_X (ORG_X << 4)
-#define ORIGIN_Y (ORG_Y << 4)
-#define TEX_POW 10
-
-#define SCALE(x) ((x) << 4)
-
-#define M_SIZE 128
-#define M_POW 7
-
-static volatile uint32 g_VblankCmd = 0, g_DmacCmd = 0;
-static int g_VblankSema, g_DmacSema, g_AnimSema;
-static bool g_RunAnim = false;
-static GsVertex kFullScreen[2];
-static TexVertex kMouseTex[2] = {
- { SCALE(1), SCALE(1) },
- { SCALE(M_SIZE - 1), SCALE(M_SIZE - 1) }
-};
-static TexVertex kPrintTex[2] = {
- { SCALE(1), SCALE(1) },
- { SCALE(320), SCALE(200) }
-};
-
-void runAnimThread(Gs2dScreen *param);
-
-int vblankStartHandler(int cause) {
- // start of VBlank period
- if (g_VblankCmd) { // is there a new image waiting?
- GS_DISPFB1 = g_VblankCmd; // show it.
- g_VblankCmd = 0;
- iSignalSema(g_VblankSema);
- }
- return 0;
-}
-
-int dmacHandler(int channel) {
- if (g_DmacCmd && (channel == 2)) { // GS DMA transfer finished,
- g_VblankCmd = g_DmacCmd; // we want to show the image
- g_DmacCmd = 0; // when the next vblank occurs
- iSignalSema(g_DmacSema);
- }
- return 0;
-}
-
-int vblankEndHandler(int cause) {
- if (g_RunAnim)
- iSignalSema(g_AnimSema);
- return 0;
-}
-
-void createAnimThread(Gs2dScreen *screen);
-
-Gs2dScreen::Gs2dScreen(uint16 width, uint16 height) {
-
- _systemQuit = false;
- ee_sema_t newSema;
- newSema.init_count = 1;
- newSema.max_count = 1;
- g_VblankSema = CreateSema(&newSema);
- g_DmacSema = CreateSema(&newSema);
- _screenSema = CreateSema(&newSema);
- newSema.init_count = 0;
- newSema.max_count = 255;
- g_AnimSema = CreateSema(&newSema);
- assert((g_VblankSema >= 0) && (g_DmacSema >= 0) && (_screenSema >= 0) && (g_AnimSema >= 0));
-
- _vblankStartId = AddIntcHandler(INT_VBLANK_START, vblankStartHandler, 0);
- _vblankEndId = AddIntcHandler(INT_VBLANK_END, vblankEndHandler, 0);
- _dmacId = AddDmacHandler(2, dmacHandler, 0);
-
- _dmaPipe = new DmaPipe(0x2000);
-
- EnableIntc(INT_VBLANK_START);
- EnableIntc(INT_VBLANK_END);
- EnableDmac(2);
-
- _tvMode = 0; // force detection
- _gfxMode = 0;
-
- _width = width;
- _height = height;
- _pitch = (width + 127) & ~127;
-
- _screenBuf = (uint8 *)memalign(64, _width * _height);
- _overlayBuf = (uint16 *)memalign(64, _pitch * _height * 2);
- _clut = (uint32 *)memalign(64, 256 * 4);
-
- memset(_screenBuf, 0, _width * _height);
- memset(_clut, 0, 256 * sizeof(uint32));
- _clut[1] = GS_RGBA(0xC0, 0xC0, 0xC0, 0);
- clearOverlay();
-
- char romver[8];
- uint16 biosver;
- int fd = fioOpen("rom0:ROMVER", O_RDONLY);
- fioRead(fd, &romver, 8);
- fioClose(fd);
- biosver=atoi(romver);
- printf("ROMVER = %s\n", romver);
- printf("ver = %d\n", atoi(romver));
-
- if (!_tvMode) { // determine TV standard first
- if (ConfMan.hasKey("tv_mode", "PlayStation2")) {
- const char *tvname = ConfMan.get("tv_mode", "PlayStation2").c_str();
-
- if (strcmp("ntsc", tvname) == 0) {
- _tvMode = 2;
- }
- else if (strcmp("pal", tvname) == 0) {
- _tvMode = 1;
- }
- else
- _tvMode = 0;
- }
-
- if (!_tvMode) {
- if (romver[4] == 'E')
- _tvMode = TV_PAL;
- else
- _tvMode = TV_NTSC;
-
- printf("Auto-detect TV mode: PSX:%c PS2:%c\n", *(char *)(0x1FC7FF52), romver[4]);
- }
- }
-
- uint8 mode;
- if (!_gfxMode) { // determine GFX mode next
- if (ConfMan.hasKey("gfx_mode", "PlayStation2")) {
- _gfxMode = ConfMan.getInt("gfx_mode", "PlayStation2");
- // TODO: free more video mem to support these modes
- if (_gfxMode == 4 || _gfxMode == 5) {
- printf("Not enough video mem: using EDTV (3)\n");
- _gfxMode = 3;
- }
- else
- if (_gfxMode == 7 || _gfxMode == 8) {
- printf("Not enough video mem: using VGA (6)\n");
- _gfxMode = 6;
- }
-
- if (_gfxMode < 1 || _gfxMode > 8) _gfxMode = 2;
- else
- if (_gfxMode == 4 || _gfxMode == 5) _tvMode = TV_HDTV;
- else
- if (_gfxMode > 5) _tvMode = TV_VESA;
- }
- else
- _gfxMode = 2;
- }
-
- // Remap Mode Index
- mode = _gfxMode;
- if (_tvMode == TV_NTSC) {
- mode = (mode * 2) - 1;
- }
- else if (_tvMode == TV_PAL) {
- mode = (mode * 2);
- }
- else if (_tvMode == TV_HDTV) {
- mode += 3;
- }
- else /* VESA */ {
- _tvMode = TV_VESA;
- mode += 3;
- }
- mode--;
-
- switch (_tvMode) {
- case TV_NTSC:
- printf("Setting up TV mode: NTSC\n");
- break;
- case TV_PAL:
- printf("Setting up TV mode: PAL\n");
- break;
- case TV_HDTV:
- printf("Setting up TV mode: HDTV\n");
- break;
- case TV_VESA:
- printf("Setting up TV mode: VESA\n");
- break;
- }
-
- _tvWidth = ps2_mode[mode].w;
- _tvHeight = ps2_mode[mode].h;
- _tvPitch = ps2_mode[mode].pitch;
-
- printf("Setting up GFX mode: %d x %d\n", _tvWidth, _tvHeight);
-
- kFullScreen[0].z = kFullScreen[1].z = 0;
- kFullScreen[0].x = ORIGIN_X;
- kFullScreen[0].y = ORIGIN_Y;
- kFullScreen[1].x = SCALE(_tvWidth) + ORIGIN_X;
- kFullScreen[1].y = SCALE(_tvHeight) + ORIGIN_Y;
- _blitCoords[0] = kFullScreen[0];
- _blitCoords[1] = kFullScreen[1];
- _texCoords[0].u = SCALE(1);
- _texCoords[0].v = SCALE(1);
- _texCoords[1].u = SCALE(_width);
- _texCoords[1].v = SCALE(_height);
-
- uint32 tvFrameSize = _tvPitch * _tvHeight * 4; // 32 bits per pixel
-
- // setup frame buffer pointers
- _frameBufPtr[0] = 0;
- _frameBufPtr[1] = tvFrameSize;
- _clutPtrs[SCREEN] = tvFrameSize * 2;
- _clutPtrs[MOUSE] = _clutPtrs[SCREEN] + 0x1000; // the cluts in PSMCT32 take up half a memory page each
- _clutPtrs[TEXT] = _clutPtrs[SCREEN] + 0x2000;
- _texPtrs[SCREEN] = _clutPtrs[SCREEN] + 0x3000;
- _texPtrs[TEXT] = 0; // these buffers are stored in the alpha gaps of the frame buffers
- _texPtrs[MOUSE] = 128 * 256 * 4;
- _texPtrs[PRINTF] = _texPtrs[MOUSE] + M_SIZE * M_SIZE * 4;
-
- _showOverlay = false;
- _showMouse = false;
- _mouseScaleX = (_tvWidth << 8) / _width;
- _mouseScaleY = (_tvHeight << 8) / _height;
- setMouseXy(_width / 2, _height / 2);
- _mTraCol = 255;
- _shakeXOffset = 0;
- _shakeYOffset = 0;
-
- _overlayFormat.bytesPerPixel = 2;
-
- _overlayFormat.rLoss = 3;
- _overlayFormat.gLoss = 3;
- _overlayFormat.bLoss = 3;
- _overlayFormat.aLoss = 8; // 7
-
- _overlayFormat.rShift = 0;
- _overlayFormat.gShift = 5;
- _overlayFormat.bShift = 10;
- _overlayFormat.aShift = 0; // 15
-
- // setup hardware now.
- GS_CSR = CSR_RESET; // Reset GS
- asm ("sync.p");
- GS_CSR = 0;
- GsPutIMR(0x7F00);
-
-
- if (biosver < 220 && ps2_mode[mode].mode == 0x53) { // EDTV PAL : mode not in BIOS < 2.20
- // no worries... we work in magic ;-)
- /* 720x576p */
- asm ("di");
- asm ("sync.l; sync.p");
- GS_PMODE = 0;
- asm ("sync.l; sync.p");
- GS_SMODE1 = 0x1742890504;
- asm ("sync.l; sync.p");
- GS_SMODE2 = 0;
- GS_SYNCH1 = 0x402E02003C827;
- asm ("sync.l; sync.p");
- GS_SYNCH2 = 0x19CA67;
- asm ("sync.l; sync.p");
- GS_SYNCV = 0xA9000002700005;
- asm ("sync.l; sync.p");
- GS_SRFSH = 4;
- asm ("sync.l; sync.p");
- GS_SMODE1 = 0x1742880504;
- asm ("sync.l; sync.p");
- asm ("sync.l; sync.p");
- GS_SMODE2 = 0;
- asm("ei");
- }
- else { // BIOS
- SetGsCrt(ps2_mode[mode].interlaced, ps2_mode[mode].mode, 0); // ps2_mode[mode].interlaced);
- }
-
- asm("di");
- GS_PMODE = GS_SET_PMODE(1, 0, 1, 1, 0, 255);
- GS_BGCOLOUR = GS_RGBA(0, 0, 0, 0);
- GS_DISPLAY1 = GS_SET_DISPLAY_MODE(ps2_mode[mode]);
- asm("ei");
-
- _curDrawBuf = 0;
-
- _dmaPipe->setOrigin(ORIGIN_X, ORIGIN_Y);
- _dmaPipe->setConfig(1, 0, 1);
- _dmaPipe->setScissorRect(0, 0, _tvWidth - 1, _tvHeight - 1);
- _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24, 0);
- _dmaPipe->flush();
-
- _clutChanged = _screenChanged = _overlayChanged = true;
-
- clearPrintfOverlay();
- updateScreen();
-
- createAnimTextures();
-
- // create animation thread
- #ifdef __NEW_PS2SDK__
- ee_thread_t animThread;
- ee_thread_status_t thisThread;
- #else
- ee_thread_t animThread, thisThread;
- #endif
- ReferThreadStatus(GetThreadId(), &thisThread);
-
- _animStack = memalign(64, ANIM_STACK_SIZE);
- animThread.initial_priority = thisThread.current_priority - 3;
- animThread.stack = _animStack;
- animThread.stack_size = ANIM_STACK_SIZE;
- animThread.func = (void *)runAnimThread;
- animThread.gp_reg = &_gp;
-
- _animTid = CreateThread(&animThread);
- assert(_animTid >= 0);
- StartThread(_animTid, this);
-}
-
-void Gs2dScreen::quit(void) {
- _systemQuit = true;
- #ifdef __NEW_PS2SDK__
- ee_thread_status_t statAnim;
- #else
- ee_thread_t statAnim;
- #endif
- do { // wait until thread called ExitThread()
- SignalSema(g_AnimSema);
- ReferThreadStatus(_animTid, &statAnim);
- } while (statAnim.status != 0x10);
- DeleteThread(_animTid);
- free(_animStack);
- _dmaPipe->waitForDma(); // wait for dmac and vblank for the last time
- while (g_DmacCmd || g_VblankCmd);
-
- sioprintf("kill handlers\n");
- DisableIntc(INT_VBLANK_START);
- DisableIntc(INT_VBLANK_END);
- DisableDmac(2);
- RemoveIntcHandler(INT_VBLANK_START, _vblankStartId);
- RemoveIntcHandler(INT_VBLANK_END, _vblankEndId);
- RemoveDmacHandler(2, _dmacId);
-
- DeleteSema(g_VblankSema);
- DeleteSema(g_DmacSema);
- DeleteSema(g_AnimSema);
-}
-
-void Gs2dScreen::createAnimTextures(void) {
- uint8 *buf = (uint8 *)memalign(64, 16 * 64);
- memset(buf, 0, 16 * 64);
- uint32 vramDest = _texPtrs[TEXT];
- for (int i = 0; i < 16; i++) {
- uint32 *destPos = (uint32 *)buf;
- for (int ch = 15; ch >= 0; ch--) {
- const uint32 *src = (const uint32 *)(_binaryData + ((_binaryPattern[i] >> ch) & 1) * 4 * 14);
- for (int line = 0; line < 14; line++)
- destPos[line << 4] = src[line];
- destPos++;
- }
- if (!(i & 1))
- _dmaPipe->uploadTex( vramDest, 128, 0, 0, GS_PSMT4HH, buf, 128, 16);
- else {
- _dmaPipe->uploadTex( vramDest, 128, 0, 0, GS_PSMT4HL, buf, 128, 16);
- vramDest += 128 * 16 * 4;
- }
- _dmaPipe->flush();
- _dmaPipe->waitForDma();
- }
- _dmaPipe->uploadTex(_clutPtrs[TEXT], 64, 0, 0, GS_PSMCT32, _binaryClut, 8, 2);
- _dmaPipe->flush();
- free(buf);
-}
-
-void Gs2dScreen::newScreenSize(uint16 width, uint16 height) {
- if ((width == _width) && (height == _height))
- return;
-
- WaitSema(g_DmacSema);
- WaitSema(g_VblankSema);
-
- _dmaPipe->flush();
- _width = width;
- _height = height;
- _pitch = (width + 127) & ~127;
-
- // malloc new buffers
- free(_screenBuf);
- free(_overlayBuf);
- _screenBuf = (uint8 *)memalign(64, _width * _height);
- _overlayBuf = (uint16 *)memalign(64, _width * _height * 2);
- memset(_screenBuf, 0, _width * height);
- memset(_overlayBuf, 0, _width * height * 2);
- memset(_clut, 0, 256 * sizeof(uint32));
- _clut[1] = GS_RGBA(0xC0, 0xC0, 0xC0, 0);
-
- // clear video ram
- _dmaPipe->uploadTex(_clutPtrs[MOUSE], 64, 0, 0, GS_PSMCT32, _clut, 16, 16);
- _dmaPipe->uploadTex(_clutPtrs[SCREEN], 64, 0, 0, GS_PSMCT32, _clut, 16, 16);
- _dmaPipe->uploadTex(_texPtrs[SCREEN], _width, 0, 0, GS_PSMCT16, _overlayBuf, _width, _height);
- _dmaPipe->flush();
- _dmaPipe->waitForDma();
-
- /*_clutChanged = */ _screenChanged = _overlayChanged = false;
- _clutChanged = true; // reload palette on scr change
-
- _texCoords[1].u = SCALE(_width);
- _texCoords[1].v = SCALE(_height);
- _mouseScaleX = (_tvWidth << 8) / _width;
- _mouseScaleY = (_tvHeight << 8) / _height;
- setMouseXy(_width / 2, _height / 2);
-
- SignalSema(g_VblankSema);
- SignalSema(g_DmacSema);
-}
-
-void Gs2dScreen::copyScreenRect(const uint8 *buf, int pitch, int x, int y, int w, int h) {
- if (x < 0) {
- w += x;
- buf -= x;
- x = 0;
- }
- if (y < 0) {
- h += y;
- buf -= y * pitch;
- y = 0;
- }
- if (x + w > _width)
- w = (int)_width - x;
- if (y + h > _height)
- h = (int)_height - y;
-
- if ((w > 0) && (h > 0)) {
- WaitSema(g_DmacSema);
- uint8 *dest = _screenBuf + y * _width + x;
- if ((w == pitch) && (pitch == _width))
- memcpy(dest, buf, w * h);
- else
- for (int cnt = 0; cnt < h; cnt++) {
- memcpy(dest, buf, w);
- buf += pitch;
- dest += _width;
- }
- _screenChanged = true;
- SignalSema(g_DmacSema);
- }
-}
-
-Graphics::Surface *Gs2dScreen::lockScreen() {
- WaitSema(g_DmacSema);
-
- // -not- _pitch; ! It's EE mem, not Tex
- _framebuffer.init(_width, _height, _width, _screenBuf, Graphics::PixelFormat::createFormatCLUT8());
- return &_framebuffer;
-}
-
-void Gs2dScreen::unlockScreen() {
- _screenChanged = true;
- SignalSema(g_DmacSema);
-}
-
-void Gs2dScreen::setPalette(const uint8 *pal, uint8 start, uint16 num) {
- assert(start + num <= 256);
-
- WaitSema(g_DmacSema);
- for (uint16 cnt = 0; cnt < num; cnt++) {
- uint16 dest = start + cnt;
- dest = (dest & 0xE7) | ((dest & 0x8) << 1) | ((dest & 0x10) >> 1); // rearrange like the GS expects it
-
- uint32 color = pal[0] | (pal[1] << 8) | (pal[2] << 16);
- _clut[dest] = color;
- pal += 3;
- }
- _clutChanged = true;
- SignalSema(g_DmacSema);
-}
-
-void Gs2dScreen::grabPalette(uint8 *pal, uint8 start, uint16 num) const {
- assert(start + num <= 256);
- for (uint16 cnt = 0; cnt < num; cnt++) {
- uint16 src = start + cnt;
- src = (src & 0xE7) | ((src & 0x8) << 1) | ((src & 0x10) >> 1);
-
- uint32 color = _clut[src];
- pal[0] = (color >> 0) & 0xFF;
- pal[1] = (color >> 8) & 0xFF;
- pal[2] = (color >> 16) & 0xFF;
- pal += 3;
- }
-}
-
-void Gs2dScreen::uploadToVram(void) {
- if (_clutChanged) {
- _clutChanged = false;
- uint32 tmp = _clut[_mTraCol];
- _clut[_mTraCol] = GS_RGBA(0, 0, 0, 0x80); // this mouse color is transparent
- _dmaPipe->uploadTex(_clutPtrs[MOUSE], 64, 0, 0, GS_PSMCT32, _clut, 16, 16);
- _dmaPipe->flush();
- _dmaPipe->waitForDma();
- _clut[_mTraCol] = tmp;
-
- _dmaPipe->uploadTex(_clutPtrs[SCREEN], 64, 0, 0, GS_PSMCT32, _clut, 16, 16);
- }
-
- if (_showOverlay) {
- if (_overlayChanged) {
- _dmaPipe->uploadTex(_texPtrs[SCREEN], _width, 0, 0, GS_PSMCT16, _overlayBuf, _width, _height);
- _overlayChanged = false;
- }
- } else {
- if (_screenChanged) {
- _dmaPipe->uploadTex(_texPtrs[SCREEN], _pitch, 0, 0, GS_PSMT8, _screenBuf, _width, _height);
- _screenChanged = false;
- }
- }
-}
-
-extern "C" void _ps2sdk_alloc_lock(void);
-extern "C" void _ps2sdk_alloc_unlock(void);
-
-void Gs2dScreen::updateScreen(void) {
- WaitSema(_screenSema);
- uploadToVram();
- if (!g_RunAnim) {
- _dmaPipe->flatRect(kFullScreen + 0, kFullScreen + 1, GS_RGBA(0, 0, 0, 0)); // clear screen
-
- if (_showOverlay) {
- _dmaPipe->setTex(_texPtrs[SCREEN], _width, TEX_POW, TEX_POW, GS_PSMCT16, 0, 0, 0, 0);
- _dmaPipe->textureRect(kFullScreen + 0, kFullScreen + 1, _texCoords + 0, _texCoords + 1);
- } else {
- _dmaPipe->setTex(_texPtrs[SCREEN], _pitch, TEX_POW, TEX_POW, GS_PSMT8, _clutPtrs[SCREEN], 0, 64, GS_PSMCT32);
- _dmaPipe->textureRect(_blitCoords + 0, _blitCoords + 1, _texCoords + 0, _texCoords + 1);
- }
-
- if (_showMouse) {
- GsVertex mouseCoords[2];
- mouseCoords[0].x = (((_mouseX - _hotSpotX) * _mouseScaleX + 8) >> 4) + ORIGIN_X;
- mouseCoords[0].y = (((_mouseY - _hotSpotY) * _mouseScaleY + 8) >> 4) + ORIGIN_Y;
- mouseCoords[1].x = mouseCoords[0].x + (((M_SIZE * _mouseScaleX) + 8) >> 4);
- mouseCoords[1].y = mouseCoords[0].y + (((M_SIZE * _mouseScaleY) + 8) >> 4);
- mouseCoords[0].z = mouseCoords[1].z = 0;
-
- _dmaPipe->setTex(_texPtrs[MOUSE], M_SIZE, M_POW, M_POW, GS_PSMT8H, _clutPtrs[MOUSE], 0, 64, GS_PSMCT32);
- _dmaPipe->textureRect(mouseCoords + 0, mouseCoords + 1, kMouseTex + 0, kMouseTex + 1);
- }
-
- _dmaPipe->setTex(_texPtrs[PRINTF], 3 * 128, TEX_POW, TEX_POW, GS_PSMT8H, _clutPtrs[TEXT], 0, 64, GS_PSMCT32);
- _dmaPipe->textureRect(kFullScreen + 0, kFullScreen + 1, kPrintTex + 0, kPrintTex + 1);
-
-#if 0
- _ps2sdk_alloc_lock();
- uint32 heapTop = (uint32)ps2_sbrk(0);
- _ps2sdk_alloc_unlock();
- if (heapTop != (uint32)-1) {
- float yPos = (((float)heapTop) / (32 * 1024 * 1024)) * _tvHeight;
- GsVertex bottom = { SCALE(_tvWidth - 40) + ORIGIN_X, SCALE(_tvHeight) + ORIGIN_Y, 0 };
- GsVertex top = { SCALE(_tvWidth) + ORIGIN_X, 0, 0 };
- top.y = SCALE((uint16)(_tvHeight - yPos)) + ORIGIN_Y;
- _dmaPipe->flatRect(&bottom, &top, GS_RGBA(0x80, 0, 0, 0x40));
- }
-#endif
-
- WaitSema(g_DmacSema); // wait for dma transfer, if there's one running
- WaitSema(g_VblankSema); // wait if there's already an image waiting for vblank
-
- g_DmacCmd = GS_SET_DISPFB(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24); // put it here for dmac/vblank handler
- _dmaPipe->flush();
- _curDrawBuf ^= 1;
- _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24, 0);
- } else
- _dmaPipe->flush();
- SignalSema(_screenSema);
-}
-
-void Gs2dScreen::showOverlay(void) {
- _showOverlay = true;
- clearOverlay();
-}
-
-void Gs2dScreen::hideOverlay(void) {
- _screenChanged = true;
- _showOverlay = false;
-}
-
-Graphics::PixelFormat Gs2dScreen::getOverlayFormat(void) {
- return _overlayFormat;
-}
-
-int16 Gs2dScreen::getOverlayWidth(void) {
- return _width; // _videoMode.overlayWidth;
-}
-
-int16 Gs2dScreen::getOverlayHeight(void) {
- return _height; // _videoMode.overlayHeight;
-}
-
-void Gs2dScreen::setShakePos(int shakeXOffset, int shakeYOffset) {
- _shakeXOffset = (shakeXOffset * _mouseScaleX) >> 8;
- _shakeYOffset = (shakeYOffset * _mouseScaleY) >> 8;
- _blitCoords[0].x = SCALE(_shakeXOffset) + ORIGIN_X;
- _blitCoords[0].y = SCALE(_shakeYOffset) + ORIGIN_Y;
- _blitCoords[1].x = SCALE(_tvWidth + _shakeXOffset) + ORIGIN_X;
- _blitCoords[1].y = SCALE(_tvHeight + _shakeYOffset) + ORIGIN_Y;
-}
-
-void Gs2dScreen::copyPrintfOverlay(const uint8 *buf) {
- assert(!((uint32)buf & 63));
- _dmaPipe->uploadTex(_texPtrs[PRINTF], 3 * 128, 0, 0, GS_PSMT8H, buf, 320, 200);
- _dmaPipe->flush();
- _dmaPipe->waitForDma();
-}
-
-void Gs2dScreen::clearPrintfOverlay(void) {
- uint8 *tmpBuf = (uint8 *)memalign(64, 320 * 200);
- memset(tmpBuf, 4, 320 * 200);
- _dmaPipe->uploadTex(_texPtrs[PRINTF], 3 * 128, 0, 0, GS_PSMT8H, tmpBuf, 320, 200);
- _dmaPipe->flush();
- _dmaPipe->waitForDma();
- free(tmpBuf);
-}
-
-void Gs2dScreen::copyOverlayRect(const byte *buf, uint16 pitch, uint16 x, uint16 y, uint16 w, uint16 h) {
- WaitSema(g_DmacSema);
-
- // warning("_overlayBuf [dst] = %x", _overlayBuf);
- // warning("buf [src] = %x", buf);
-
- // warning("pitch=%d _width=%d - x=%d y=%d w=%d h=%d",
- // pitch, _width, x, y, w, h);
-
- if (x >= 65535) x=0;
- if (y >= 65535) y=0;
-
- _overlayChanged = true;
- uint16 *dest = _overlayBuf + y * _width + x;
- for (uint32 cnt = 0; cnt < h; cnt++) {
- memcpy(dest, buf, w * 2);
- dest += _width;
- buf += pitch;
- }
- SignalSema(g_DmacSema);
-}
-
-void Gs2dScreen::clearOverlay(void) {
- WaitSema(g_DmacSema);
- _overlayChanged = true;
- // first convert our clut to 16 bit RGBA for the overlay...
- uint16 palette[256];
- for (uint32 cnt = 0; cnt < 256; cnt++) {
- uint32 rgba = _clut[(cnt & 0xE7) | ((cnt & 0x8) << 1) | ((cnt & 0x10) >> 1)];
- palette[cnt] = ((rgba >> 3) & 0x1F) | (((rgba >> 11) & 0x1F) << 5) | (((rgba >> 19) & 0x1F) << 10);
- }
- // now copy the current screen over
- for (int cnt = 0; cnt < _width * _height; cnt++)
- _overlayBuf[cnt] = palette[_screenBuf[cnt]];
- SignalSema(g_DmacSema);
-}
-
-void Gs2dScreen::grabOverlay(byte *buf, uint16 pitch) {
- uint16 *src = _overlayBuf;
- for (uint32 cnt = 0; cnt < _height; cnt++) {
- memcpy(buf, src, _width * 2);
- buf += pitch;
- src += _width;
- }
-}
-
-void Gs2dScreen::setMouseOverlay(const uint8 *buf, uint16 width, uint16 height, uint16 hotSpotX, uint16 hotSpotY, uint8 transpCol) {
- assert((width <= M_SIZE) && (height <= M_SIZE));
-
- _hotSpotX = hotSpotX;
- _hotSpotY = hotSpotY;
- if (_mTraCol != transpCol) {
- _mTraCol = transpCol;
- _clutChanged = true;
- }
- uint8 *bufCopy = (uint8 *)memalign(64, M_SIZE * M_SIZE); // make a copy to align to 64 bytes
- memset(bufCopy, _mTraCol, M_SIZE * M_SIZE);
- for (int cnt = 0; cnt < height; cnt++)
- memcpy(bufCopy + cnt * M_SIZE, buf + cnt * width, width);
-
- _dmaPipe->uploadTex( _texPtrs[MOUSE], M_SIZE, 0, 0, GS_PSMT8H, bufCopy, M_SIZE, M_SIZE);
- _dmaPipe->flush();
- _dmaPipe->waitForDma(); // make sure all data has been transferred when we free bufCopy
- free(bufCopy);
-}
-
-void Gs2dScreen::showMouse(bool show) {
- _showMouse = show;
-}
-
-void Gs2dScreen::setMouseXy(int16 x, int16 y) {
- _mouseX = x;
- _mouseY = y;
-}
-/*
-uint8 Gs2dScreen::tvMode(void) {
- return _tvMode;
-}
-*/
-uint16 Gs2dScreen::getWidth(void) {
- return _width;
-}
-
-uint16 Gs2dScreen::getHeight(void) {
- return _height;
-}
-
-void Gs2dScreen::wantAnim(bool runIt) {
- g_RunAnim = runIt;
-}
-
-#define LINE_SPACE 20
-#define SCRL_TIME 8
-#define V 1000
-#define Z_TRANSL 65
-
-void Gs2dScreen::playAnim(void) {
- // animate zeros and ones while game accesses memory card, etc.
- g_RunAnim = false;
- float yPos = 0.0;
- uint8 texSta = 0;
- float scrlSpeed = (_tvMode == TV_PAL) ? (_tvHeight / (SCRL_TIME * 50.0)) : (_tvHeight / (SCRL_TIME * 60.0));
- uint8 texMax = (_tvHeight / LINE_SPACE) + (ORG_Y / LINE_SPACE);
- TexVertex texNodes[4] = {
- { SCALE(1), SCALE(1) }, { SCALE(1), SCALE(14) },
- { SCALE(128), SCALE(1) }, { SCALE(128), SCALE(14) }
- };
- float angleStep = ((2 * M_PI) / _tvHeight);
-
- while (!_systemQuit) {
- do {
- WaitSema(g_AnimSema);
- } while ((!_systemQuit) && (!g_RunAnim));
-
- if (_systemQuit)
- break;
-
- if (PollSema(_screenSema) > 0) { // make sure no thread is currently drawing
- WaitSema(g_DmacSema); // dma transfers have to be finished
- WaitSema(g_VblankSema); // wait for image, if there is one...
-
- // redraw the engine's last frame
- _dmaPipe->flatRect(kFullScreen + 0, kFullScreen + 1, GS_RGBA(0, 0, 0, 0)); // clear screen
-
- if (_showOverlay) {
- _dmaPipe->setTex(_texPtrs[SCREEN], _width, TEX_POW, TEX_POW, GS_PSMCT16, 0, 0, 0, 0);
- _dmaPipe->textureRect(kFullScreen + 0, kFullScreen + 1, _texCoords + 0, _texCoords + 1);
- } else {
- _dmaPipe->setTex(_texPtrs[SCREEN], _pitch, TEX_POW, TEX_POW, GS_PSMT8, _clutPtrs[SCREEN], 0, 64, GS_PSMCT32);
- _dmaPipe->textureRect(_blitCoords + 0, _blitCoords + 1, _texCoords + 0, _texCoords + 1);
- }
-
- _dmaPipe->setTex(_texPtrs[PRINTF], 3 * 128, TEX_POW, TEX_POW, GS_PSMT8H, _clutPtrs[TEXT], 0, 64, GS_PSMCT32);
- _dmaPipe->textureRect(kFullScreen + 0, kFullScreen + 1, kPrintTex + 0, kPrintTex + 1);
-
- if (_showMouse) {
- GsVertex mouseCoords[2];
- mouseCoords[0].x = (((_mouseX - _hotSpotX) * _mouseScaleX + 8) >> 4) + ORIGIN_X;
- mouseCoords[0].y = (((_mouseY - _hotSpotY) * _mouseScaleY + 8) >> 4) + ORIGIN_Y;
- mouseCoords[1].x = mouseCoords[0].x + (((M_SIZE * _mouseScaleX) + 8) >> 4);
- mouseCoords[1].y = mouseCoords[0].y + (((M_SIZE * _mouseScaleY) + 8) >> 4);
- mouseCoords[0].z = mouseCoords[1].z = 0;
-
- _dmaPipe->setTex(_texPtrs[MOUSE], M_SIZE, M_POW, M_POW, GS_PSMT8H, _clutPtrs[MOUSE], 0, 64, GS_PSMCT32);
- _dmaPipe->textureRect(mouseCoords + 0, mouseCoords + 1, kMouseTex + 0, kMouseTex + 1);
- }
-
- _dmaPipe->setAlphaBlend(SOURCE_COLOR, ZERO_COLOR, SOURCE_ALPHA, DEST_COLOR, 0);
- yPos -= scrlSpeed;
- if (yPos <= -LINE_SPACE) {
- yPos += LINE_SPACE;
- texSta++;
- }
-
- float drawY = yPos;
-
- for (int i = 0; i < texMax; i++) {
- uint8 texIdx = (texSta + i) & 0xF;
-
- float x[4] = { -64.0, -64.0, 64.0, 64.0 };
- float y[4];
- y[0] = y[2] = drawY - _tvHeight / 2 - LINE_SPACE / 2;
- y[1] = y[3] = y[0] + LINE_SPACE;
- float z[4];
- GsVertex nodes[4];
-
- float angle = M_PI / 2 + angleStep * drawY;
- float rotSin = sinf(angle);
- float rotCos = cosf(angle);
- for (int coord = 0; coord < 4; coord++) {
- z[coord] = rotCos * x[coord];
- x[coord] = rotSin * x[coord];
-
- nodes[coord].z = 0;
- nodes[coord].x = (uint16)(((V * x[coord]) / (z[coord] + V + Z_TRANSL)) * 16);
- nodes[coord].y = (uint16)(((V * y[coord]) / (z[coord] + V + Z_TRANSL)) * 16);
- nodes[coord].x += SCALE(_tvWidth - 80 + ORG_X);
- nodes[coord].y += SCALE(_tvHeight / 2 + ORG_Y);
- }
-
- uint32 texPtr = _texPtrs[TEXT] + 128 * 16 * 4 * (texIdx >> 1);
- if (texIdx & 1)
- _dmaPipe->setTex(texPtr, 128, 7, 4, GS_PSMT4HL, _clutPtrs[TEXT], 0, 64, GS_PSMCT32);
- else
- _dmaPipe->setTex(texPtr, 128, 7, 4, GS_PSMT4HH, _clutPtrs[TEXT], 0, 64, GS_PSMCT32);
-
- _dmaPipe->textureRect(nodes + 0, nodes + 1, nodes + 2, nodes + 3,
- texNodes + 0, texNodes + 1, texNodes + 2, texNodes + 3, GS_RGBA(0x80, 0x80, 0x80, 0x80));
-
- drawY += LINE_SPACE;
- }
- g_DmacCmd = GS_SET_DISPFB(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24); // put it here for dmac/vblank handler
- _dmaPipe->flush();
- _curDrawBuf ^= 1;
- _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24, 0);
- _dmaPipe->setAlphaBlend(DEST_COLOR, ZERO_COLOR, SOURCE_ALPHA, SOURCE_COLOR, 0);
-
- SignalSema(_screenSema);
- }
- }
- ExitThread();
-}
-
-void runAnimThread(Gs2dScreen *param) {
- param->playAnim();
-}
-
-// data for the animated zeros and ones...
-const uint8 Gs2dScreen::_binaryData[4 * 14 * 2] = {
- // figure zero
- 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x00, 0x22, 0x22, 0x00, 0x31, 0x13,
- 0x31, 0x13, 0x20, 0x02, 0x22, 0x02, 0x31, 0x13, 0x33, 0x13, 0x20, 0x02, 0x20, 0x02,
- 0x31, 0x33, 0x31, 0x13, 0x20, 0x22, 0x20, 0x02, 0x31, 0x13, 0x31, 0x13, 0x00, 0x22,
- 0x22, 0x00, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11,
- // figure one
- 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x00, 0x20, 0x02, 0x00, 0x11, 0x33,
- 0x13, 0x11, 0x22, 0x22, 0x02, 0x00, 0x11, 0x31, 0x13, 0x11, 0x00, 0x20, 0x02, 0x00,
- 0x11, 0x31, 0x13, 0x11, 0x00, 0x20, 0x02, 0x00, 0x11, 0x31, 0x13, 0x11, 0x00, 0x20,
- 0x02, 0x00, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11
-};
-
-const uint16 Gs2dScreen::_binaryPattern[16] = {
- 0xD992, 0x344B, 0xA592, 0x110D,
- 0x9234, 0x2326, 0x5199, 0xC8A6,
- 0x4D29, 0x18B0, 0xA5AA, 0x2949,
- 0x6DB3, 0xB2AA, 0x64A4, 0x3329
-};
-
-const uint32 Gs2dScreen::_binaryClut[16] __attribute__((aligned(64))) = {
- GS_RGBA( 0, 0, 0, 0x40),
- GS_RGBA( 50, 50, 50, 0x40),
- GS_RGBA( 204, 204, 0xFF, 0x40),
- GS_RGBA( 140, 140, 0xFF, 0x40),
-
- GS_RGBA( 0, 0, 0, 0x80), // scrPrintf: transparent
- GS_RGBA( 0, 0, 0, 0x20), // scrPrintf: semitransparent
- GS_RGBA(0xC0, 0xC0, 0xC0, 0), // scrPrintf: red
- GS_RGBA(0x16, 0x16, 0xF0, 0), // scrPrintf: blue
-
- GS_RGBA(0xFF, 0xFF, 0xFF, 0x80), GS_RGBA(0xFF, 0xFF, 0xFF, 0x80), // unused
- GS_RGBA(0xFF, 0xFF, 0xFF, 0x80), GS_RGBA(0xFF, 0xFF, 0xFF, 0x80),
- GS_RGBA(0xFF, 0xFF, 0xFF, 0x80), GS_RGBA(0xFF, 0xFF, 0xFF, 0x80),
- GS_RGBA(0xFF, 0xFF, 0xFF, 0x80), GS_RGBA(0xFF, 0xFF, 0xFF, 0x80)
-};
diff --git a/backends/platform/ps2/Gs2dScreen.h b/backends/platform/ps2/Gs2dScreen.h
deleted file mode 100644
index d8ad25e058..0000000000
--- a/backends/platform/ps2/Gs2dScreen.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __GS2DSCREEN_H__
-#define __GS2DSCREEN_H__
-
-#include "sysdefs.h"
-#include "backends/base-backend.h"
-#include "common/config-manager.h"
-
-#include "backends/platform/ps2/DmaPipe.h"
-#include "graphics/surface.h"
-
-enum TVMode {
- TV_DONT_CARE = 0,
- TV_PAL,
- TV_NTSC,
- TV_HDTV, /* internal */
- TV_VESA /* internal */
-};
-
-enum GsInterlace {
- GS_NON_INTERLACED = 0,
- GS_INTERLACED
-};
-
-class Gs2dScreen {
-public:
- Gs2dScreen(uint16 width, uint16 height);
- ~Gs2dScreen(void);
- void newScreenSize(uint16 width, uint16 height);
- // uint8 tvMode(void);
- uint16 getWidth(void);
- uint16 getHeight(void);
-
- void copyPrintfOverlay(const uint8 *buf);
- void clearPrintfOverlay(void);
-
- Graphics::Surface *lockScreen();
- void unlockScreen();
-
- void copyScreenRect(const uint8 *buf, int pitch, int x, int y, int w, int h);
- void setPalette(const uint8 *pal, uint8 start, uint16 num);
- void updateScreen(void);
- void grabPalette(uint8 *pal, uint8 start, uint16 num) const;
- //- overlay routines
- void copyOverlayRect(const byte *buf, uint16 pitch, uint16 x, uint16 y, uint16 w, uint16 h);
- void grabOverlay(byte *buf, uint16 pitch);
- void clearOverlay(void);
- void showOverlay(void);
- void hideOverlay(void);
- Graphics::PixelFormat getOverlayFormat(void);
- int16 getOverlayWidth(void);
- int16 getOverlayHeight(void);
-
- //- mouse routines
- void setMouseOverlay(const uint8 *buf, uint16 width, uint16 height, uint16 hotSpotX, uint16 hotSpotY, uint8 transpCol);
- void showMouse(bool show);
- void setMouseXy(int16 x, int16 y);
- void setShakePos(int shakeXOffset, int shakeYOffset);
-
- void playAnim(void);
- void wantAnim(bool runIt);
-
- void quit(void);
-
-private:
- void uploadToVram(void);
- void createAnimTextures(void);
-
- DmaPipe *_dmaPipe;
- uint8 _gfxMode;
- uint8 _tvMode;
- uint16 _tvWidth, _tvHeight;
- uint16 _tvPitch;
- GsVertex _blitCoords[2];
- TexVertex _texCoords[2];
-
- uint8 _curDrawBuf;
- uint32 _frameBufPtr[2]; //
- uint32 _clutPtrs[3]; // vram pointers
- uint32 _texPtrs[4]; //
-
- Graphics::Surface _framebuffer;
-
- // TODO : check if we do need this
- struct VideoState {
- bool setup;
-
- bool fullscreen;
- bool aspectRatio;
-
- int mode;
- int scaleFactor;
-
- int screenWidth, screenHeight;
- int overlayWidth, overlayHeight;
- };
-
- VideoState _videoMode;
-
- uint16 _width, _height, _pitch;
- int16 _mouseX, _mouseY, _hotSpotX, _hotSpotY;
- uint32 _mouseScaleX, _mouseScaleY;
- uint8 _mTraCol;
-
- int _shakeXOffset;
- int _shakeYOffset;
-
- bool _showMouse, _showOverlay, _screenChanged, _overlayChanged, _clutChanged;
- uint16 *_overlayBuf;
- uint8 *_screenBuf;
- uint32 *_clut;
- Graphics::PixelFormat _overlayFormat;
-
- int _screenSema;
- int _vblankStartId, _vblankEndId, _dmacId, _animTid;
- void *_animStack;
- volatile bool _systemQuit;
-
- static const uint32 _binaryClut[16];
- static const uint8 _binaryData[4 * 14 * 2];
- static const uint16 _binaryPattern[16];
-};
-
-#endif // __GS2DSCREEN_H__
diff --git a/backends/platform/ps2/GsDefs.h b/backends/platform/ps2/GsDefs.h
deleted file mode 100644
index 9adf6acfcc..0000000000
--- a/backends/platform/ps2/GsDefs.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __GSDEFS_H__
-#define __GSDEFS_H__
-
-#include "sysdefs.h"
-
-// Gs2dScreen defines:
-
-#define PAL_NTSC_FLAG (*(volatile uint8 *)0x1FC7FF52)
-
-#define GS_PMODE *((volatile uint64 *)0x12000000)
-#define GS_CSR *((volatile uint64 *)0x12001000)
-#define GS_DISPFB1 *((volatile uint64 *)0x12000070)
-#define GS_DISPLAY1 *((volatile uint64 *)0x12000080)
-#define GS_BGCOLOUR *((volatile uint64 *)0x120000E0)
-
-#define GS_SMODE1 *((volatile uint64 *)0x12000010)
-#define GS_SMODE2 *((volatile uint64 *)0x12000020)
-#define GS_SYNCH1 *((volatile uint64 *)0x12000040)
-#define GS_SYNCH2 *((volatile uint64 *)0x12000050)
-#define GS_SYNCV *((volatile uint64 *)0x12000060)
-#define GS_SRFSH *((volatile uint64 *)0x12000030)
-
-enum GS_CSR_FIELDS {
- CSR_SIGNAL = 1 << 0,
- CSR_FINISH = 1 << 1,
- CSR_HSYNC = 1 << 2,
- CSR_VSYNC = 1 << 3,
- CSR_FLUSH = 1 << 8,
- CSR_RESET = 1 << 9
-};
-
-typedef struct {
- u16 w;
- u16 h;
- u16 interlaced;
- u16 pitch;
- u16 mode;
- u16 vclk;
- u16 magh;
- u16 magv;
- u16 dx;
- u16 dy;
-} ps2_mode_t;
-
-#define GS_SET_PMODE(readC1, readC2, alphaSel, alphaOut, alphaBlend, alphaFixed) \
- ((readC1) | ((readC2) << 1) | ((alphaSel) << 5) | ((alphaOut) << 6) | ((alphaBlend) << 7) | ((alphaFixed) << 8))
-
-#define GS_SET_DISPLAY(width, height, xpos, ypos) \
- (((uint64)(height - 1) << 44) | ((uint64)0x9FF << 32) | \
- ((((2560 + (width - 1)) / width) - 1)<<23) | \
- (ypos << 12) | (xpos * (2560 / width)))
-
-#define GS_SET_DISPLAY_MODE(mode) \
- (((uint64)(mode.h - 1) << 44) | ((uint64)(mode.vclk - 1) << 32) | \
- ((mode.magh - 1) << 23) | (mode.dy << 12) | (mode.dx << 2))
-
-#define GS_SET_DISPFB(frameBufPtr, frameBufWidth, psm) \
- (((frameBufPtr) / 8192) | (((frameBufWidth) / 64) << 9) | ((psm) << 15))
-
-#define GS_RGBA(r, g, b, a) \
- ((r) | ((g) << 8) | ((b) << 16) | ((a) << 24))
-
-//DmaPipe defines:
-
-enum GsRegs {
- GPR_PRIM = 0x00, // Select and configure current drawing primitive
- GPR_RGBAQ, // Setup current vertex color
- GPR_ST, // ...
- GPR_UV, // Specify Vertex Texture Coordinates
- GPR_XYZF2, // Set vertex coordinate
- GPR_XYZ2, // Set vertex coordinate and 'kick' drawing
- GPR_TEX0_1, // Texture Buffer Setup (Context 1)
- GPR_TEX0_2, // Texture Buffer Setup (Context 2)
- GPR_CLAMP_1, // ...
- GPR_CLAMP_2, // ...
- GPR_FOG, // ...
-
- GPR_XYZF3 = 0x0C, // ...
- GPR_XYZ3, // ...
-
- GPR_TEX1_1 = 0x14, // ...
- GPR_TEX1_2, // ...
- GPR_TEX2_1, // ...
- GPR_TEX2_2, // ...
- GPR_XYOFFSET_1, // Mapping from Primitive to Window coordinate system (Context 1)
- GPR_XYOFFSET_2, // Mapping from Primitive to Window coordinate system (Context 2)
- GPR_PRMODECONT, // ...
- GPR_PRMODE, // ...
- GPR_TEXCLUT, // ...
-
- GPR_SCANMSK = 0x22, // ...
-
- GPR_MIPTBP1_1 = 0x34, // ...
- GPR_MIPTBP1_2, // ...
- GPR_MIPTBP2_1, // ...
- GPR_MIPTBP2_2, // ...
-
- GPR_TEXA = 0x3b, // ...
-
- GPR_FOGCOL = 0x3d, // ...
-
- GPR_TEXFLUSH = 0x3f, // Write to this register before using newly loaded texture
- GPR_SCISSOR_1, // Setup clipping rectangle (Context 1)
- GPR_SCISSOR_2, // Setup clipping rectangle (Context 2)
- GPR_ALPHA_1, // Setup Alpha Blending Parameters (Context 1)
- GPR_ALPHA_2, // Setup Alpha Blending Parameters (Context 2)
- GPR_DIMX, // ...
- GPR_DTHE, // ...
- GPR_COLCLAMP, // ...
- GPR_TEST_1, // ...
- GPR_TEST_2, // ...
- GPR_PABE, // ...
- GPR_FBA_1, // ...
- GPR_FBA_2, // ...
- GPR_FRAME_1, // Frame buffer settings (Context 1)
- GPR_FRAME_2, // Frame buffer settings (Context 2)
- GPR_ZBUF_1, // ...
- GPR_ZBUF_2, // ...
- GPR_BITBLTBUF, // Setup Image Transfer Between EE and GS
- GPR_TRXPOS, // Setup Image Transfer Coordinates
- GPR_TRXREG, // Setup Image Transfer Size
- GPR_TRXDIR, // Set Image Transfer Directon + Start Transfer
- GPR_HWREG,
-
- GPR_SIGNAL = 0x60,
- GPR_FINISH,
- GPR_LABEL
-};
-
-enum PrimTypes {
- PR_POINT = 0,
- PR_LINE,
- PR_LINESTRIP,
- PR_TRIANGLE,
- PR_TRIANGLESTRIP,
- PR_TRIANGLEFAN,
- PR_SPRITE
-};
-
-#define GS_PSMCT32 0x00
-#define GS_PSMCT24 0x01
-#define GS_PSMCT16 0x02
-#define GS_PSMCT16S 0x0A
-#define GS_PSMT8 0x13
-#define GS_PSMT4 0x14
-#define GS_PSMT4HL 0x24
-#define GS_PSMT4HH 0x2C
-#define GS_PSMT8H 0x1B
-
-/*#define GS_SET_BITBLTBUF(sbp, sbw, spsm, dbp, dbw, dpsm) \
- ((uint64)(sbp) | ((uint64)(sbw) << 16) | \
- ((uint64)(spsm) << 24) | ((uint64)(dbp) << 32) | \
- ((uint64)(dbw) << 48) | ((uint64)(dpsm) << 56))*/
-
-#define GS_SET_SRC_BLTBUF(sbp, sbw, spsm) \
- ((sbp) | ((uint64)sbw << 16) | ((uint64)spsm << 24))
-
-#define GS_SET_DEST_BLTBUF(dbp, dbw, dpsm) \
- (((uint64)(dbp) << 32) | ((uint64)(dbw) << 48) | ((uint64)(dpsm) << 56))
-
-#define GS_SET_SRC_TRXPOS(ssax, ssay) \
- ((ssax) | ((uint64)ssay << 16))
-
-#define GS_SET_DEST_TRXPOS(dsax, dsay) \
- (((uint64)(dsax) << 32) | ((uint64)(dsay) << 48))
-
-#define GS_SET_TRXREG(rrw, rrh) \
- ((uint64)(rrw) | ((uint64)(rrh) << 32))
-
-#define GS_SET_TEXA(ta0, aem, ta1) \
- ((uint64)(ta0) | ((uint64)(aem) << 15) | ((uint64)(ta1) << 32))
-
-#define GS_SET_TEX0(tbp, tbw, psm, tw, th, tcc, tfx, cbp, cpsm, csm, csa, cld) \
- ((uint64)(tbp) | ((uint64)(tbw) << 14) | ((uint64)(psm) << 20) | ((uint64)(tw) << 26) | \
- ((uint64)(th) << 30) | ((uint64)(tcc) << 34) | ((uint64)(tfx) << 35) | ((uint64)(cbp) << 37) | \
- ((uint64)(cpsm) << 51) | ((uint64)(csm) << 55) | ((uint64)(csa) << 56) | ((uint64)(cld) << 61))
-
-#define GIF_SET_TAG(nloop, eop, pre, prim, flg, nreg) \
- ( (uint64)(nloop) | ((uint64)(eop)<<15) | ((uint64)(pre) << 46) | \
- ((uint64)(prim)<<47) | ((uint64)(flg)<<58) | ((uint64)(nreg)<<60) )
-
-#define GS_SET_UV(u, v) ((uint64)(u) | ((uint64)(v) << 16))
-
-#define GS_SET_XYZ(x, y, z) \
- ((uint64)(x) | ((uint64)(y) << 16) | ((uint64)(z) << 32))
-
-#define GS_SET_XYOFFSET(ofx, ofy) ((uint64)(ofx) | ((uint64)(ofy) << 32))
-
-#define GS_SET_SCISSOR(scax0, scax1, scay0, scay1) \
- ( (uint64)(scax0) | ((uint64)(scax1) << 16) | ((uint64)(scay0) << 32) | ((uint64)(scay1) << 48) )
-
-#define GS_SET_FRAME(fbp, fbw, psm, fbmask) \
- ( (uint64)(fbp) | (uint64)((uint64)(fbw) << 16) | (uint64)((uint64)(psm) << 24) | (uint64)((uint64)(fbmask) << 32) )
-
-#define GS_SET_TEST(ate, atst, aref, afail, date, datm, zte, ztst) \
- ( (uint64)(ate) | ((uint64)(atst) << 1) | ((uint64)(aref) << 4) | ((uint64)(afail) << 12) | \
- ((uint64)(date) << 14) | ((uint64)(datm) << 15) | ((uint64)(zte) << 16) | ((uint64)(ztst) << 17) )
-
-#define FILTER_NEAREST 0
-#define FILTER_LINEAR 1
-
-#define GS_SET_TEX1(lcm, mxl, mmag, mmin, mtba, l, k) \
- ((uint64)(lcm) | ((uint64)(mxl) << 2) | ((uint64)(mmag) << 5) | ((uint64)(mmin) << 6) | \
- ((uint64)(mtba) << 9) | ((uint64)(l) << 19) | ((uint64)(k) << 32))
-
-enum AlphaBlendColor {
- SOURCE_COLOR = 0,
- DEST_COLOR,
- ZERO_COLOR
-};
-
-enum AlphaBlendAlpha {
- SOURCE_ALPHA = 0,
- DEST_ALPHA,
- FIXED_ALPHA
-};
-
-#define GS_SET_ALPHA(a, b, c, d, fix) \
- ((uint64)(a) | ((uint64)(b)<<2) | ((uint64)(c)<<4) | ((uint64)(d)<<6) | ((uint64)(fix)<<32))
-
-#define GS_SET_PRIM(prim, iip, tme, fge, abe, aa1, fst, ctxt, fix) \
- ((uint64)(prim) | ((uint64)(iip) << 3) | ((uint64)(tme) << 4) | \
- ((uint64)(fge) << 5) | ((uint64)(abe) << 6) | ((uint64)(aa1) << 7) | \
- ((uint64)(fst) << 8) | ((uint64)(ctxt) << 9) | ((uint64)(fix) << 10))
-
-#define GS_SET_COLQ(c) (0x3f80000000000000 | c)
-
-#endif // __GSDEFS_H__
diff --git a/backends/platform/ps2/Makefile.ps2 b/backends/platform/ps2/Makefile.ps2
deleted file mode 100644
index f328bd4ec9..0000000000
--- a/backends/platform/ps2/Makefile.ps2
+++ /dev/null
@@ -1,217 +0,0 @@
-# SCUMMVM-PS2 MakeFile
-
-
-# Use only this section to modify how the makefile behaves ------------
-
-# Scummvm engine config: choose which engines are enabled
-ENABLE_AGI = $(ENABLED)
-ENABLE_AGOS = $(ENABLED)
-ENABLE_AGOS2 = 1
-# ENABLE_AVALANCHE = $(ENABLED)
-ENABLE_CGE = $(ENABLED)
-ENABLE_CINE = $(ENABLED)
-ENABLE_COMPOSER = $(ENABLED)
-ENABLE_CRUISE = $(ENABLED)
-ENABLE_DRACI = $(ENABLED)
-ENABLE_DRASCULA = $(ENABLED)
-ENABLE_DREAMWEB = $(ENABLED)
-# ENABLE_FULLPIPE = $(ENABLED)
-ENABLE_GOB = $(ENABLED)
-ENABLE_GROOVIE = $(ENABLED)
-# ENABLE_GROOVIE2 = $(ENABLED)
-# ENABLE_HOPKINS = $(ENABLED)
-ENABLE_HUGO = $(ENABLED)
-ENABLE_KYRA = $(ENABLED)
-ENABLE_LOL = 1
-ENABLE_EOB = 1
-# ENABLE_LASTEXPRESS = $(ENABLED)
-ENABLE_LURE = $(ENABLED)
-ENABLE_MADE = $(ENABLED)
-ENABLE_MOHAWK = $(ENABLED)
-# ENABLE_CSTIME = $(ENABLED)
-# ENABLE_RIVEN = $(ENABLED)
-# ENABLE_MYST = $(ENABLED)
-ENABLE_MORTEVIELLE = $(ENABLED)
-ENABLE_NEVERHOOD = $(ENABLED)
-ENABLE_PARALLACTION = $(ENABLED)
-# ENABLE_PEGASUS = $(ENABLED)
-ENABLE_QUEEN = $(ENABLED)
-ENABLE_SAGA = $(ENABLED)
-ENABLE_IHNM = 1
-# ENABLE_SAGA2 = $(ENABLED)
-ENABLE_SCI = $(ENABLED)
-# ENABLE_SCI32 = $(ENABLED)
-ENABLE_SCUMM = $(ENABLED)
-ENABLE_SCUMM_7_8 = 1
-ENABLE_HE = 1
-ENABLE_SKY = $(ENABLED)
-ENABLE_SWORD1 = $(ENABLED)
-ENABLE_SWORD2 = $(ENABLED)
-# ENABLE_SWORD25 = $(ENABLED)
-ENABLE_TEENAGENT = $(ENABLED)
-# ENABLE_TESTBED = $(ENABLED)
-ENABLE_TINSEL = $(ENABLED)
-ENABLE_TOLTECS = $(ENABLED)
-# ENABLE_TONY = $(ENABLED)
-ENABLE_TOON = $(ENABLED)
-ENABLE_TOUCHE = $(ENABLED)
-ENABLE_TSAGE = $(ENABLED)
-ENABLE_TUCKER = $(ENABLED)
-# ENABLE_WINTERMUTE = $(ENABLED)
-# ENABLE_ZVISION = $(ENABLED)
-
-# Set to 1 to enable seeing the commands to gcc
-VERBOSE_BUILD = 0
-# Set to 1 to enable, 0 to disable dynamic modules
-DYNAMIC_MODULES = 1
-# Set to 1 to enable debugging
-ENABLE_DEBUG = 0
-# Set to 1 to enable profiling
-ENABLE_PROFILING = 0
-# Set to 1 to disable HDD+NET
-DISABLE_NETWORK = 0
-# Set to 1 to enable, 0 to disable libmad and libogg
-USE_LIBMAD = 1
-USE_LIBOGG = 1
-
-# ---------------------------------------------------------------------
-
-
-# General variables
-srcdir = ../../..
-VPATH = $(srcdir)
-TARGET = scummvm.elf
-# PS2 SDK location variables
-# PS2SDK = /works/tools/devel/ps2/sdk
-
-# Check PS2SDK presence
-ifeq ($(PS2SDK),)
-$(error $$(PS2SDK) needs to be set.)
-endif
-
-# Variables for common Scummvm makefile
-CC = ee-gcc
-CXX = ee-g++
-FLAGS = -pedantic -Wall -W
-FLAGS += -Wcast-qual -Wconversion -Wpointer-arith -Wshadow -Wwrite-strings
-FLAGS += -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-unused-parameter
-CFLAGS = $(FLAGS) -std=c99
-CXXFLAGS = $(FLAGS) -Wnon-virtual-dtor -Wno-reorder -fno-exceptions -fno-rtti
-
-DEFINES = -D_EE -D__PLAYSTATION2__ -D__NEW_PS2SDK__ -DUSE_ZLIB -DFORCE_RETURN_TO_LAUNCHER -DDATA_PATH=\"host:data\"
-DEFINES += -DDISABLE_SAVEGAME_SORTING -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DDISABLE_DOSBOX_OPL -DDISABLE_SID -DDISABLE_NES_APU
-# DEFINES += -DLOGORRHEIC
-
-INCDIR := $(PS2SDK)/ee/include $(PS2SDK)/common/include $(PS2SDK)/ports/include . $(srcdir) $(srcdir)/engines
-INCLUDES := $(addprefix -I, $(INCDIR))
-DEPDIR = .deps
-MODULE_DIRS += ./
-MKDIR = mkdir -p
-RM = rm -f
-RM_REC = rm -rf
-AR = ee-ar cru
-RANLIB = ee-ranlib
-STRIP = ee-strip
-AS = ee-gcc
-LD = ee-gcc
-HAVE_GCC3 = true
-CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP
-
-# Variables for dynamic plugin building
-PLUGIN_PREFIX =
-PLUGIN_SUFFIX = .plg
-PLUGIN_EXTRA_DEPS = $(TARGET)
-PLUGIN_LDFLAGS = -nostartfiles $(srcdir)/backends/plugins/elf/version.o -Wl,-q,--just-symbols,$(TARGET),--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms
-PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc
-
-# Test for adding different libs
-ifeq ($(USE_LIBMAD),1)
-DEFINES += -DUSE_MAD
-LIBS += -lmad
-endif
-ifeq ($(USE_LIBOGG), 1)
-DEFINES += -DUSE_VORBIS -DUSE_TREMOR
-LIBS += -ltremor
-endif
-
-# Test for dynamic plugins
-ifeq ($(DYNAMIC_MODULES),1)
-ENABLED = DYNAMIC_PLUGIN
-DEFINES += -DDYNAMIC_MODULES -DUSE_ELF_LOADER -DMIPS_TARGET -DUNCACHED_PLUGINS -DPLUGIN_DIRECTORY=\"host:plugins\"
-PRE_OBJS_FLAGS = -Wl,--whole-archive
-POST_OBJS_FLAGS = -Wl,--no-whole-archive
-else
-ENABLED = STATIC_PLUGIN
-endif
-
-# Test for debug
-ifeq ($(ENABLE_DEBUG),1)
-DEFINES += -D__PS2_DEBUG__
-FLAGS += -G2 -g
-LIBS += -lps2gdbStub -lps2ip -ldebug
-else
-DEFINES += -DRELEASE_BUILD
-FLAGS += -G2 -O2 -s -Wuninitialized
-# LDFLAGS += -s
-endif
-
-# Test for profiling
-ifeq ($(ENABLE_PROFILING),1)
-DEFINES += -DENABLE_PROFILING
-FLAGS += -G2 -pg -g
-LDFLAGS += -pg
-endif
-
-# Test for net support
-ifeq ($(DISABLE_NETWORK),1)
-DEFINES += -DNO_ADAPTOR
-endif
-
-# PS2 LIBS
-PS2LIBS = -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm -lz -lm -lc -lfileXio -lkernel -lstdc++
-
-# Add in PS2SDK includes and libraries.
-LIBS += $(PS2LIBS)
-
-OBJS := $(srcdir)/backends/platform/ps2/DmaPipe.o \
- $(srcdir)/backends/platform/ps2/Gs2dScreen.o \
- $(srcdir)/backends/platform/ps2/irxboot.o \
- $(srcdir)/backends/platform/ps2/ps2input.o \
- $(srcdir)/backends/platform/ps2/ps2pad.o \
- $(srcdir)/backends/platform/ps2/savefilemgr.o \
- $(srcdir)/backends/platform/ps2/fileio.o \
- $(srcdir)/backends/platform/ps2/asyncfio.o \
- $(srcdir)/backends/platform/ps2/icon.o \
- $(srcdir)/backends/platform/ps2/cd.o \
- $(srcdir)/backends/platform/ps2/eecodyvdfs.o \
- $(srcdir)/backends/platform/ps2/rpckbd.o \
- $(srcdir)/backends/platform/ps2/systemps2.o \
- $(srcdir)/backends/platform/ps2/ps2mutex.o \
- $(srcdir)/backends/platform/ps2/ps2time.o \
- $(srcdir)/backends/platform/ps2/ps2debug.o
-
-ifeq ($(DYNAMIC_MODULES),1)
-OBJS += $(srcdir)/backends/plugins/elf/elf-loader.o \
- $(srcdir)/backends/plugins/elf/elf-provider.o \
- $(srcdir)/backends/plugins/elf/shorts-segment-manager.o \
- $(srcdir)/backends/plugins/elf/memory-manager.o \
- $(srcdir)/backends/plugins/elf/mips-loader.o \
- $(srcdir)/backends/plugins/elf/version.o
-endif
-
-BACKEND := ps2
-
-# Include common Scummvm makefile
-include $(srcdir)/Makefile.common
-
-LDFLAGS += -L$(PS2SDK)/ee/lib -L$(PS2SDK)/ports/lib
-ifeq ($(DYNAMIC_MODULES),1)
-LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld
-else
-LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -T $(PS2SDK)/ee/startup/linkfile
-endif
-
-all: $(TARGET)
-
-$(TARGET): $(OBJS)
- $(LD) $(PRE_OBJS_FLAGS) $(OBJS) $(POST_OBJS_FLAGS) $(LDFLAGS) $(LIBS) -o $@
diff --git a/backends/platform/ps2/Makefile.ps2.dev b/backends/platform/ps2/Makefile.ps2.dev
deleted file mode 100644
index 988c1c9e28..0000000000
--- a/backends/platform/ps2/Makefile.ps2.dev
+++ /dev/null
@@ -1,170 +0,0 @@
-# SCUMMVM-PS2 MakeFile
-
-
-# Use only this section to modify how the makefile behaves ------------
-
-# Scummvm engine config: choose which engines are enabled
-ENABLE_SCUMM = $(ENABLED)
-ENABLE_SCUMM_7_8 = 1
-# ENABLE_HE = 1
-ENABLE_SCI = $(ENABLED)
-# ENABLE_SCI32 = $(ENABLED)
-# ENABLE_SKY = $(ENABLED)
-# ENABLE_SWORD1 = $(ENABLED)
-# ENABLE_SWORD2 = $(ENABLED)
-
-# Set to 1 to enable seeing the commands to gcc
-VERBOSE_BUILD = 1
-# Set to 1 to enable, 0 to disable dynamic modules
-DYNAMIC_MODULES = 0
-# Set to 1 to enable debugging
-ENABLE_DEBUG = 0
-# Set to 1 to enable profiling
-ENABLE_PROFILING = 1
-# Set to 1 to disable HDD+NET
-DISABLE_NETWORK = 0
-# Set to 1 to enable, 0 to disable libmad and libogg
-USE_LIBMAD = 1
-USE_LIBOGG = 1
-
-# ---------------------------------------------------------------------
-
-
-# General variables
-srcdir = ../../..
-VPATH = $(srcdir)
-TARGET = scummvm.elf
-# PS2 SDK location variables
-# PS2SDK = /works/tools/devel/ps2/sdk
-
-# Check PS2SDK presence
-ifeq ($(PS2SDK),)
-$(error $$(PS2SDK) needs to be set.)
-endif
-
-# Variables for common Scummvm makefile
-CC = ee-gcc
-CXX = ee-g++
-FLAGS = -pedantic -Wall -W
-FLAGS += -Wcast-qual -Wconversion -Wpointer-arith -Wshadow -Wwrite-strings
-FLAGS += -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-unused-parameter
-CFLAGS = $(FLAGS) -std=c99
-CXXFLAGS = $(FLAGS) -Wnon-virtual-dtor -Wno-reorder -fno-exceptions -fno-rtti
-
-DEFINES = -D_EE -D__PLAYSTATION2__ -D__NEW_PS2SDK__ -DUSE_ZLIB -DFORCE_RETURN_TO_LAUNCHER -DDATA_PATH=\"host:data\"
-DEFINES += -DDISABLE_SAVEGAME_SORTING -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DDISABLE_DOSBOX_OPL -DDISABLE_SID -DDISABLE_NES_APU
-# DEFINES += -DLOGORRHEIC
-
-INCDIR := $(PS2SDK)/ee/include $(PS2SDK)/common/include $(PS2SDK)/ports/include . $(srcdir) $(srcdir)/engines
-INCLUDES := $(addprefix -I, $(INCDIR))
-DEPDIR = .deps
-MODULE_DIRS += ./
-MKDIR = mkdir -p
-RM = rm -f
-RM_REC = rm -rf
-AR = ee-ar cru
-RANLIB = ee-ranlib
-STRIP = ee-strip
-AS = ee-gcc
-LD = ee-gcc
-HAVE_GCC3 = true
-CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP
-
-# Variables for dynamic plugin building
-PLUGIN_PREFIX =
-PLUGIN_SUFFIX = .plg
-PLUGIN_EXTRA_DEPS = $(TARGET)
-PLUGIN_LDFLAGS = -nostartfiles $(srcdir)/backends/plugins/elf/version.o -Wl,-q,--just-symbols,$(TARGET),--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms
-PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc
-
-# Test for adding different libs
-ifeq ($(USE_LIBMAD),1)
-DEFINES += -DUSE_MAD
-LIBS += -lmad
-endif
-ifeq ($(USE_LIBOGG), 1)
-DEFINES += -DUSE_VORBIS -DUSE_TREMOR
-LIBS += -ltremor
-endif
-
-# Test for dynamic plugins
-ifeq ($(DYNAMIC_MODULES),1)
-ENABLED = DYNAMIC_PLUGIN
-DEFINES += -DDYNAMIC_MODULES -DUSE_ELF_LOADER -DMIPS_TARGET -DUNCACHED_PLUGINS -DPLUGIN_DIRECTORY=\"host:plugins\"
-PRE_OBJS_FLAGS = -Wl,--whole-archive
-POST_OBJS_FLAGS = -Wl,--no-whole-archive
-else
-ENABLED = STATIC_PLUGIN
-endif
-
-# Test for debug
-ifeq ($(ENABLE_DEBUG),1)
-DEFINES += -D__PS2_DEBUG__
-FLAGS += -G2 -g
-LIBS += -lps2gdbStub -lps2ip -ldebug
-else
-DEFINES += -DRELEASE_BUILD
-FLAGS += -G2 -O2 -s -Wuninitialized
-# LDFLAGS += -s
-endif
-
-# Test for profiling
-ifeq ($(ENABLE_PROFILING),1)
-DEFINES += -DENABLE_PROFILING
-FLAGS += -G2 -pg -g
-LDFLAGS += -pg
-endif
-
-# Test for net support
-ifeq ($(DISABLE_NETWORK),1)
-DEFINES += -DNO_ADAPTOR
-endif
-
-# PS2 LIBS
-PS2LIBS = -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm -lz -lm -lc -lfileXio -lkernel -lstdc++
-
-# Add in PS2SDK includes and libraries.
-LIBS += $(PS2LIBS)
-
-OBJS := $(srcdir)/backends/platform/ps2/DmaPipe.o \
- $(srcdir)/backends/platform/ps2/Gs2dScreen.o \
- $(srcdir)/backends/platform/ps2/irxboot.o \
- $(srcdir)/backends/platform/ps2/ps2input.o \
- $(srcdir)/backends/platform/ps2/ps2pad.o \
- $(srcdir)/backends/platform/ps2/savefilemgr.o \
- $(srcdir)/backends/platform/ps2/fileio.o \
- $(srcdir)/backends/platform/ps2/asyncfio.o \
- $(srcdir)/backends/platform/ps2/icon.o \
- $(srcdir)/backends/platform/ps2/cd.o \
- $(srcdir)/backends/platform/ps2/eecodyvdfs.o \
- $(srcdir)/backends/platform/ps2/rpckbd.o \
- $(srcdir)/backends/platform/ps2/systemps2.o \
- $(srcdir)/backends/platform/ps2/ps2mutex.o \
- $(srcdir)/backends/platform/ps2/ps2time.o \
- $(srcdir)/backends/platform/ps2/ps2debug.o
-
-ifeq ($(DYNAMIC_MODULES),1)
-OBJS += $(srcdir)/backends/plugins/elf/elf-loader.o \
- $(srcdir)/backends/plugins/elf/elf-provider.o \
- $(srcdir)/backends/plugins/elf/shorts-segment-manager.o \
- $(srcdir)/backends/plugins/elf/memory-manager.o \
- $(srcdir)/backends/plugins/elf/mips-loader.o \
- $(srcdir)/backends/plugins/elf/version.o
-endif
-
-BACKEND := ps2
-
-# Include common Scummvm makefile
-include $(srcdir)/Makefile.common
-
-LDFLAGS += -L$(PS2SDK)/ee/lib -L$(PS2SDK)/ports/lib
-ifeq ($(DYNAMIC_MODULES),1)
-LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld
-else
-LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -T $(PS2SDK)/ee/startup/linkfile
-endif
-
-all: $(TARGET)
-
-$(TARGET): $(OBJS)
- $(LD) $(PRE_OBJS_FLAGS) $(OBJS) $(POST_OBJS_FLAGS) $(LDFLAGS) $(LIBS) -o $@
diff --git a/backends/platform/ps2/README.PS2 b/backends/platform/ps2/README.PS2
deleted file mode 100644
index 141a79eaca..0000000000
--- a/backends/platform/ps2/README.PS2
+++ /dev/null
@@ -1,189 +0,0 @@
-Dear PS2 ScummVM enthusiast user,
-
-here you will find the latest and the greatest PS2 backend ever!
-
-
- *** Release Notes ***
-
-Released 2 builds: SCUMMVM.ELF and SCUMMVM-S.ELF. The latter has engine
-modules statically linked into (that's what the "-S" is for), the former
-uses dynamic modules (uncached). The dynamic one is much faster to start
-and has more resources available for the games. The catch is that games
-detection, when you are adding a new one, is painstakingly slow...
-(as it needs to load, test, unload the plugins one by one).
-
-Until we have an optimization for that in place I would suggest you add
-new games with "SCUMMVM-S.ELF", and when you are done adding you then
-play them with "SCUMMVM.ELF", as this will give you the best of both.
-
-We no longer have a separate ELF build with hdd & net adapter disabled,
-as we now do it in the smart way, allowing users to disable it in their
-ScummVM.ini. See under in "Configuration" for details.
-
-We also have an improved Makefile.ps2 in ps2 folder which will allow
-you to create: static, dynamic, profile and debug build version.
-
-You can now also cleanly compile using "configure" and specifying:
-
-./configure --backend=ps2 --host=ps2 ...
-
-
- *** Installation ***
-
-Some media drivers require all capitalized letter, so to be on the
-safe side store the files (SCUMMVM.ELF and *.IRX) in upper case.
-
-Here comes a full list of the required *.IRX (don't worry they are all
-provided pre-compiled in the binary release ;-)
-
- IOMANX.IRX
- FILEXIO.IRX
- CODYVDFS.IRX
- SJPCM.IRX
- USBD.IRX
- USB_MASS.IRX
- PS2MOUSE.IRX
- RPCKBD.IRX
- POWEROFF.IRX
- PS2DEV9.IRX
- PS2ATAD.IRX
- PS2HDD.IRX
- PS2FS.IRX
- PS2IP.IRX
- PS2SMAP.IRX
- PS2HOST.IRX
-
-Make sure they are all stored in the folder that contains your SCUMMVM.ELF!
-
-If you are starting ScummVM from CD/DVD then it will look for ScummVM.ini
-a ScummVM.ini on the media folder from where you started SCUMMVM.ELF.
-
-Notes:
-
- - depending on the media you install Scummvm/PS2 onto, it might be
- picky about files cases, so I'd leave those *.IRX uppercase and
- scummmodern.zip lower ;0)
-
- - make sure you selected a save path before you start playing!
-
- - we added PS2IPS.IRX in case you wanted to test a debug build
- (use Makefile.gdb)
-
-
- *** Configuration ***
-
-There is now a [PlayStation2] section in ScummVM.ini which can be used
-to make your wildest dreams come true ;-)
-
-It accepts these entries:
-
-tv_mode = [pal] [ntsc]
-gfx_mode = [mode number] [*]
-hdd_part = [partition name] [disable]
-net_addr = [PS2 IP addr] [**]
-usb_mass = [0] [disable]
-
-[*] Currently supported gfx modes are:
-
- # 1 -> SDTV progressive (NTSC: 224p / PAL: 256p)
- # 2 -> SDTV interlaced (NTSC: 448i / PAL: 512i) <- default
- # 3 -> EDTV progressive (NTSC: 480p / PAL: 576p)
- # 6 -> VESA (640x480 at 60)
-
-If no tv_mode is specified it will be autodected based on PS2 model.
-
-The non-interlaced (progressive) modes look much better and sharper.
-You can check the difference starting COMI and choosing About from
-the GMM (press "start" then choose "about"). You can easily see the
-difference between progressive and interlaced in scrolling text.
-
-You can use mode 6 (VGA 640x480) if you are connecting your PS2 to
-a RGB monitor. Some TVs also supports this signal.
-
-We also do some bad-ass things, like detecting the BIOS version and
-setting the GS registers by hand, for console models where a mode
-is not supported ;-)
-
-If SCUMMVM.ELF hangs at start for you try disabling the adapter by
-setting in ScummVM.ini
-
-hdd_part = 0
-net_addr = 0
-
-You can now also choose the hdd partition used for ScummVM games
-(default "+ScummVM") passing it as an argument to hdd_part:
-
-hdd_part = MyPartition (witout the "+")
-
-If you have an adapter with hdd & net, but you don't use them you
-can just set both to 0 to disable, and have a leaner and meaner
-ScummVM booting much faster!
-
-[**] TODO
-
- *** Remote ***
-
-You will need "PS2IP.IRX", "PS2SMAP.IRX" and "PS2HOST.IRX" drivers too
-in the folder where you are starting SCUMMVM.ELF if you want to use
-the remote capability.
-
-The IP 192.168.1.20 (ps2link default) is hardcoded in the source as
-"netArg" in irxboot.cpp, feel free to modify it to match your network
-configuration.
-
-In a future release you will be able to set in ScummVM.ini using
-
-net_addr = xxx.yyy.zzz.www
-
-If you are starting SCUMMVM.ELF over the net using ps2client then you
-are already set. If you are starting it in any other way, then you
-will have to "export" the folder where you are storing ScummVM games
-and data by starting ps2client from inside that folder. Eg. from a
-terminal:
-
-> ./ps2client -h [your ps2 ip] listen
-
-Do this -after- ScummVM is up and running otherwise it will fail to
-establish a connection.
-
-
- *** Gamepad ***
-
-The mapping is:
-
-Start Button - GMM
-R1 - 'y'
-L1 - 'n'
-R2 - '.'
-L2 - Numpad 0
-Triangle - Escape
-Square - Enter
-Cross - Left mouse button
-Circle - Right mouse button
-
-
- *** Bugs ***
-
-Though we made our best to make this release as bug free as possible
-there are still a few bugs left:
-
- - file handling speed : (not really a bug, but a nuisance) : there
- is probably space for some more optimization in the current file
- management. The only case when it really bogs me it's when you
- try to select a saved game and there is some lag.
-
- Some game will start faster too when this is optimized.
-
- - feel free to add your bug, suggestion, secret wish to this list!
-
- - SCI games have smooth audio and intro, but moving the pointer
- and in-game animation speed might be a challenge.
-
- - it has been reported USB media greater than 8 GB might not work
-
-Now enough reading, rush to your PlayStation2 and start playing!
-
-Are you still reading?
-
-Have a lot of fun,
- -Max Lingua
diff --git a/backends/platform/ps2/asyncfio.cpp b/backends/platform/ps2/asyncfio.cpp
deleted file mode 100644
index 6f15dcc628..0000000000
--- a/backends/platform/ps2/asyncfio.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "asyncfio.h"
-#include <tamtypes.h>
-#include <kernel.h>
-#include <fileio.h>
-#include <assert.h>
-#include <string.h>
-#include <fileXio_rpc.h>
-#include "backends/platform/ps2/ps2debug.h"
-
-#define DEFAULT_MODE (FIO_S_IRUSR | FIO_S_IWUSR | FIO_S_IRGRP | FIO_S_IWGRP | FIO_S_IROTH | FIO_S_IWOTH)
-
-AsyncFio::AsyncFio(void) {
- _runningOp = NULL;
- memset(const_cast<int *>(_ioSlots), 0, MAX_HANDLES * sizeof(int));
- ee_sema_t newSema;
- newSema.init_count = 1;
- newSema.max_count = 1;
- _ioSema = CreateSema(&newSema);
-}
-
-AsyncFio::~AsyncFio(void) {
- DeleteSema(_ioSema);
-}
-
-int AsyncFio::open(const char *name, int ioMode) {
- WaitSema(_ioSema);
- checkSync();
- int res;
- fileXioOpen(name, ioMode, DEFAULT_MODE);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- //dbg_printf("FIO: open(%s, %d) => %d\n", name, ioMode, res);
- return res;
-}
-
-int AsyncFio::open(const char *name, int ioMode, int mode) {
- WaitSema(_ioSema);
- checkSync();
- int res;
- fileXioOpen(name, ioMode, mode);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- // dbg_printf("FIO: open ext(%s, %d, %d) => %d", name, ioMode, mode, res);
- return res;
-}
-
-void AsyncFio::close(int handle) {
- WaitSema(_ioSema);
- checkSync();
- fileXioClose(handle);
- int res;
- fileXioWaitAsync(FXIO_WAIT, &res);
- if (res != 0)
- sioprintf("ERROR: fileXioClose failed, EC %d\n", res);
- _ioSlots[handle] = 0;
- SignalSema(_ioSema);
-}
-
-void AsyncFio::checkSync(void) {
- if (_runningOp) {
- fileXioWaitAsync(FXIO_WAIT, const_cast<int *>(_runningOp));
- _runningOp = NULL;
- }
-}
-
-void AsyncFio::read(int fd, void *dest, unsigned int len) {
- WaitSema(_ioSema);
- checkSync();
- assert(fd < MAX_HANDLES);
- _runningOp = _ioSlots + fd;
- fileXioRead(fd, (unsigned char *)dest, len);
- SignalSema(_ioSema);
-}
-
-void AsyncFio::write(int fd, const void *src, unsigned int len) {
- WaitSema(_ioSema);
- checkSync();
- assert(fd < MAX_HANDLES);
- _runningOp = _ioSlots + fd;
- fileXioWrite(fd, (unsigned char *)const_cast<void *>(src), len);
- SignalSema(_ioSema);
-}
-
-void AsyncFio::remove(const char *path) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioRemove(path);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
-}
-
-int AsyncFio::seek(int fd, int offset, int whence) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioLseek(fd, offset, whence);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- return res;
-}
-
-int AsyncFio::mkdir(const char *name) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioMkdir(name, DEFAULT_MODE);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- return res;
-}
-
-int AsyncFio::dopen(const char *name) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioDopen(name);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- dbg_printf("FIO: dopen(%s) => %d\n", name, res);
- return res;
-}
-
-int AsyncFio::dread(int fd, iox_dirent_t *dest) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioDread(fd, dest);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- return res;
-}
-
-void AsyncFio::dclose(int fd) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioDclose(fd);
- fileXioWaitAsync(FXIO_WAIT, &res);
- //assert(res == 0);
- dbg_printf("FIO: dclose(%d) => %d\n", fd, res);
- if (res != 0)
- sioprintf("ERROR: fileXioDclose failed, EC %d\n", res);
- SignalSema(_ioSema);
-}
-
-int AsyncFio::chdir(const char *name) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioChdir(name);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- return res;
-}
-
-int AsyncFio::mount(const char *mountpoint, const char *mountstring, int flag) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioMount(mountpoint, mountstring, flag);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- return res;
-}
-
-int AsyncFio::umount(const char *mountpoint) {
- int res;
- WaitSema(_ioSema);
- checkSync();
- fileXioUmount(mountpoint);
- fileXioWaitAsync(FXIO_WAIT, &res);
- SignalSema(_ioSema);
- return res;
-}
-
-int AsyncFio::sync(int fd) {
- WaitSema(_ioSema);
- if (_runningOp == _ioSlots + fd)
- checkSync();
- int res = _ioSlots[fd];
- _ioSlots[fd] = 0;
- SignalSema(_ioSema);
- return res;
-}
-
-bool AsyncFio::poll(int fd) {
- bool retVal = false;
- if (PollSema(_ioSema) >= 0) {
- if (_runningOp == _ioSlots + fd) {
- if (fileXioWaitAsync(FXIO_NOWAIT, const_cast<int *>(_runningOp)) == FXIO_COMPLETE) {
- _runningOp = NULL;
- retVal = true;
- } else
- retVal = false;
- } else
- retVal = true;
- SignalSema(_ioSema);
- }
- return retVal;
-}
-
-bool AsyncFio::fioAvail(void) {
- bool retVal = false;
- if (PollSema(_ioSema) > 0) {
- if (_runningOp) {
- if (fileXioWaitAsync(FXIO_NOWAIT, const_cast<int *>(_runningOp)) == FXIO_COMPLETE) {
- _runningOp = NULL;
- retVal = true;
- } else
- retVal = false;
- } else
- retVal = true;
- SignalSema(_ioSema);
- }
- return retVal;
-}
diff --git a/backends/platform/ps2/asyncfio.h b/backends/platform/ps2/asyncfio.h
deleted file mode 100644
index 6f84742da0..0000000000
--- a/backends/platform/ps2/asyncfio.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#define MAX_HANDLES 32
-#include <sys/stat.h>
-
-#undef chdir // we define our own
-#undef mkdir
-
-class AsyncFio {
-public:
- AsyncFio(void);
- ~AsyncFio(void);
- int open(const char *name, int ioMode);
- int open(const char *name, int ioMode, int mode);
- void close(int handle);
- void read(int fd, void *dest, unsigned int len);
- void write(int fd, const void *src, unsigned int len);
- void remove(const char *name);
- int seek(int fd, int offset, int whence);
- int mkdir(const char *name);
- int dopen(const char *name);
- int dread(int fd, iox_dirent_t *dest);
- void dclose(int fd);
- int chdir(const char *name);
- int mount(const char *mountpoint, const char *mountstring, int flag);
- int umount(const char *mountpoint);
- int sync(int fd);
- bool poll(int fd);
- bool fioAvail(void);
-private:
- void checkSync(void);
- int _ioSema;
- volatile int * volatile _runningOp;
- volatile int _ioSlots[MAX_HANDLES];
-};
diff --git a/backends/platform/ps2/cd.c b/backends/platform/ps2/cd.c
deleted file mode 100644
index e08437d34f..0000000000
--- a/backends/platform/ps2/cd.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*********************************************************************
- * Copyright (C) 2003 Tord Lindstrom (pukko at home.se)
- * This file is subject to the terms and conditions of the PS2Link License.
- * See the file LICENSE in the main directory of this distribution for more
- * details.
- */
-
-#include <tamtypes.h>
-#include <kernel.h>
-#include <sifrpc.h>
-
-#define CDVD_INIT_BIND_RPC 0x80000592
-
-static SifRpcClientData_t cdvdCd __attribute__((aligned(64)));
-static char sendBuffer[256] __attribute__((aligned(16)));
-
-int cdvdInitialised = 0;
-
-
-void cdvdExit(void)
-{
- cdvdInitialised = 0;
-}
-
-
-int cdvdInit(int mode)
-{
- int i=0,len=0,ret=0;
- u8 *pkt;
-
- cdvdCd.server = NULL;
-
- do {
- if ((ret = SifBindRpc(&cdvdCd, (signed)CDVD_INIT_BIND_RPC, 0)) < 0) {
- return -1;
- }
- if (!cdvdCd.server) {
- nopdelay();
- }
- }
- while(!cdvdCd.server);
-
- pkt = (unsigned char *)sendBuffer;
- PUSHDATA(int, pkt, mode, i);
- pkt += i; len += i;
-
- if ((ret = SifCallRpc(&cdvdCd, 0, 0, sendBuffer, len, NULL, 0, 0, 0)) < 0)
- return -1;
-
- cdvdInitialised = 1;
-
- return 0;
-}
diff --git a/backends/platform/ps2/cd.h b/backends/platform/ps2/cd.h
deleted file mode 100644
index 2bd1ddfe27..0000000000
--- a/backends/platform/ps2/cd.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*********************************************************************
- * Copyright (C) 2003 Tord Lindstrom (pukko at home.se)
- * This file is subject to the terms and conditions of the PS2Link License.
- * See the file LICENSE in the main directory of this distribution for more
- * details.
- */
-
-#ifndef _CD_H_
-#define _CD_H_
-
-#define CDVD_INIT_WAIT 0
-#define CDVD_INIT_NOWAIT 1
-#define CDVD_EXIT 5
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int cdvdInit(int mode);
-void cdvdExit(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/backends/platform/ps2/eecodyvdfs.c b/backends/platform/ps2/eecodyvdfs.c
deleted file mode 100644
index a4d60a7501..0000000000
--- a/backends/platform/ps2/eecodyvdfs.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <tamtypes.h>
-#include <kernel.h>
-#include <sifrpc.h>
-#include "eecodyvdfs.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static SifRpcClientData_t cd0;
-static unsigned sbuff[64] __attribute__((aligned (64)));
-
-int driveStopped;
-
-int initCdvdFs(void) {
- int res;
- while(((res = SifBindRpc(&cd0, CDVDFS_IRX_ID, 0)) >= 0) && (cd0.server == NULL))
- nopdelay();
- driveStopped = 0;
- return res;
-}
-
-void readRTC(struct CdClock *dest) {
- SifCallRpc(&cd0, READ_RTC, 0, (void *)sbuff, 0, (void *)sbuff, 8, 0, 0);
- memcpy(dest, sbuff, 8);
-}
-
-int driveStop(void) {
- if (driveStopped)
- return 0;
- SifCallRpc(&cd0, DRIVE_STOP, 0, (void *)sbuff, 0, (void *)sbuff, 4, 0, 0);
- if (*(int *)sbuff == 0)
- driveStopped = 1;
- return *(int *)sbuff;
-}
-
-int driveStandby(void) {
- if (!driveStopped)
- return 0;
- SifCallRpc(&cd0, DRIVE_STANDBY, 0, (void *)sbuff, 0, (void *)sbuff, 4, 0, 0);
- if (*(int *)sbuff == 0)
- driveStopped = 0;
- return *(int *)sbuff;
-}
diff --git a/backends/platform/ps2/eecodyvdfs.h b/backends/platform/ps2/eecodyvdfs.h
deleted file mode 100644
index f439c42125..0000000000
--- a/backends/platform/ps2/eecodyvdfs.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef EECDVDFS_H
-#define EECDVDFS_H
-
-#include <tamtypes.h>
-#include "iop/CoDyVDfs/common/codyvdirx.h"
-
-struct CdClock {
- u8 stat;
- u8 second;
- u8 minute;
- u8 hour;
- u8 padding;
- u8 day;
- u8 month;
- u8 year;
-} __attribute__((packed));
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- int initCdvdFs(void);
- void readRTC(struct CdClock *dest);
- int driveStop(void);
- int driveStandby(void);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/backends/platform/ps2/fileio.cpp b/backends/platform/ps2/fileio.cpp
deleted file mode 100644
index 1ee60db462..0000000000
--- a/backends/platform/ps2/fileio.cpp
+++ /dev/null
@@ -1,543 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// Disable symbol overrides so that we can use "FILE"
-#define FORBIDDEN_SYMBOL_EXCEPTION_FILE
-#define FORBIDDEN_SYMBOL_EXCEPTION_printf
-#define FORBIDDEN_SYMBOL_EXCEPTION_abort
-#define FORBIDDEN_SYMBOL_EXCEPTION_exit
-
-#include "backends/platform/ps2/fileio.h"
-
-#include <tamtypes.h>
-#include <kernel.h>
-#include <fileio.h>
-#include <assert.h>
-#include <string.h>
-
-#include "common/config-manager.h"
-#include "common/file.h"
-#include "engines/engine.h"
-#include "backends/platform/ps2/asyncfio.h"
-#include "backends/platform/ps2/eecodyvdfs.h"
-#include "backends/platform/ps2/ps2debug.h"
-#include "backends/platform/ps2/systemps2.h"
-
-#define __PS2_FILE_SEMA__ 1
-
-AsyncFio fio;
-
-Ps2File::Ps2File() {
- _fd = -1;
- _fileSize = 0;
- _filePos = 0;
- _cacheSize = 0;
- _cachePos = 0;
- _eof = false;
- _err = false;
-
- _cacheBuf = (uint8 *)memalign(64, CACHE_SIZE * 2);
-
- _cacheOpRunning = 0;
- _filePos = _physFilePos = _cachePos = 0;
- _fileSize = _bytesInCache = _cacheOfs = 0;
- _cacheOpRunning = false;
- _readBytesBlock = 0;
- _stream = true;
-
-#ifdef __PS2_FILE_SEMA__
- ee_sema_t newSema;
- newSema.init_count = 1;
- newSema.max_count = 1;
- _sema = CreateSema(&newSema);
- assert(_sema >= 0);
-#endif
-}
-
-Ps2File::~Ps2File() {
- uint32 w;
- if (_fd >= 0) {
-
- if (_mode != O_RDONLY) {
- fio.seek(_fd, 0, SEEK_SET);
- fio.write(_fd, _cacheBuf, _filePos);
- w = fio.sync(_fd);
- dbg_printf("flushed wbuf: %x of %x\n", w, _filePos);
- }
-
- fio.close(_fd);
- uint32 r = fio.sync(_fd);
- dbg_printf("close [%d] - sync'd = %d\n", _fd, r);
- }
-
- free(_cacheBuf);
-
-#ifdef __PS2_FILE_SEMA__
- DeleteSema(_sema);
-#endif
-}
-
-bool Ps2File::open(const char *name, int mode) {
-#if 1
- _fd = fio.open(name, mode);
-
- dbg_printf("open %s [%d]\n", name, _fd);
-
- if (_fd >= 0) {
- _mode = mode;
- _filePos = 0;
-
- if (_mode == O_RDONLY) {
- _fileSize = fio.seek(_fd, 0, SEEK_END);
- fio.seek(_fd, 0, SEEK_SET);
- }
- else
- _fileSize = 0;
-
- dbg_printf(" _mode = %x\n", _mode);
- dbg_printf(" _fileSize = %d\n", _fileSize);
- // dbg_printf(" _filePos = %d\n", _filePos);
-
- return true;
- }
-
- return false;
-#else
- uint32 r;
-
- // hack: FIO does not reports size for RW (?)
- _fd = fio.open(name, O_RDONLY);
- if (_fd >= 0) {
- _fileSize = fio.seek(_fd, 0, SEEK_END);
- fio.seek(_fd, 0, SEEK_SET); /* rewind ! */
-
- if (_fileSize && mode != O_RDONLY) {
- fio.read(_fd, _cacheBuf, _fileSize);
- r = fio.sync(_fd);
- dbg_printf(" sz=%d, read=%d\n", _fileSize, r);
- assert(r == _fileSize);
- }
-
- fio.close(_fd);
- }
- else
- _fileSize = 0; /* new file */
-
- _fd = fio.open(name, mode);
-
- dbg_printf("open %s [%d]\n", name, _fd);
-
- if (_fd >= 0) {
- _mode = mode;
- _filePos = 0;
-
- if (_fileSize) { /* existing data */
- if (mode == O_RDONLY) {
- /* DANGER: for w* modes it will truncate your fine files */
- fio.seek(_fd, 0, SEEK_SET);
- }
- else if (_mode & O_APPEND) {
- fio.seek(_fd, 0, _fileSize);
- _filePos = _fileSize;
- }
- #if 0 /* file already trunc'd when opened as w* -> moved up */
- if (mode != O_RDONLY) {
- fio.read(_fd, _cacheBuf, _fileSize);
- r = fio.sync(_fd);
- dbg_printf(" sz=%d, read=%d\n", _fileSize, r);
- assert(r == _fileSize);
- // _fileSize = fio.seek(_fd, 0, SEEK_END);
- }
- #endif
- }
-
- dbg_printf(" _mode = %x\n", _mode);
- dbg_printf(" _fileSize = %d\n", _fileSize);
- dbg_printf(" _filePos = %d\n", _filePos);
-
- return true;
- } else
- return false;
-#endif
-}
-
-int32 Ps2File::tell() {
-#ifdef __PS2_FILE_SEMA__
- WaitSema(_sema);
-#endif
- int32 res = _filePos;
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-#endif
- return res;
-}
-
-int32 Ps2File::size() {
-#ifdef __PS2_FILE_SEMA__
- WaitSema(_sema);
-#endif
- int32 res = _fileSize;
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-#endif
- return res;
-}
-
-bool Ps2File::eof() {
-#ifdef __PS2_FILE_SEMA__
- WaitSema(_sema);
-#endif
- bool res = _eof; // (_filePos == _fileSize);
- // bool res = (_filePos >= _fileSize);
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-
- // dbg_printf(" EOF [%d] : %d of %d -> %d\n", _fd, _filePos, _fileSize, res);
-#endif
- return res;
-}
-
-bool Ps2File::getErr() {
- return _err;
-}
-
-void Ps2File::setErr(bool err) {
- _err = err;
- _eof = err;
-}
-
-int Ps2File::seek(int32 offset, int origin) {
-#ifdef __PS2_FILE_SEMA__
- WaitSema(_sema);
-#endif
- int seekDest;
- int res = -1;
- switch (origin) {
- case SEEK_SET:
- seekDest = offset;
- break;
- case SEEK_CUR:
- seekDest = _filePos + offset;
- break;
- case SEEK_END:
- seekDest = _fileSize + offset;
- break;
- default:
- seekDest = -1;
- break;
- }
- if ((seekDest >= 0) && (seekDest <= (int)_fileSize)) {
- // uint32 _rseek = fio.sync(_fd);
- _filePos = seekDest;
- // fio.seek(_fd, _filePos, SEEK_SET);
- // fio.sync(_fd);
- // _cacheSize = 0;
- _eof = false;
- res = 0;
- }
- else {
- _eof = true;
- }
-
- // dbg_printf("seek [%d] %d %d\n", _fd, offset, origin);
- // dbg_printf(" res = %d\n", res);
-
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-#endif
-
- return res;
-}
-
-void Ps2File::cacheReadAhead() {
- if (_cacheOpRunning) {
- // there's already some cache read running
- if (fio.poll(_fd)) // did it finish?
- cacheReadSync(); // yes.
- }
- if ((!_cacheOpRunning) && ((_readBytesBlock >= CACHE_READ_THRESHOLD) || _stream) && fio.fioAvail()) {
- // the engine seems to do sequential reads and there are no other I/Os going on. read ahead.
- uint32 cachePosEnd = _cachePos + _bytesInCache;
-
- if (_cachePos > _filePos)
- return; // there was a seek in the meantime, don't cache.
- if (cachePosEnd - _filePos >= CACHE_FILL_MIN)
- return; // cache is full enough.
- if (cachePosEnd == _fileSize)
- return; // can't read beyond EOF.
-
- assert(cachePosEnd < _fileSize);
-
- if (_cachePos + _bytesInCache <= _filePos) {
- _cacheOfs = _bytesInCache = 0;
- _cachePos = cachePosEnd = _filePos & ~READ_ALIGN_MASK;
- assert(_filePos == _physFilePos);
- } else {
- uint32 cacheDiff = _filePos - _cachePos;
- assert(_bytesInCache >= cacheDiff);
- cacheDiff &= ~READ_ALIGN_MASK;
- _bytesInCache -= cacheDiff;
- _cachePos += cacheDiff;
- _cacheOfs = (_cacheOfs + cacheDiff) % CACHE_SIZE;
- }
-
- if (_physFilePos != cachePosEnd) {
- sioprintf("unexpected _physFilePos %d cache %d %d\n", _physFilePos, _cacheOfs, _bytesInCache);
- // assert(!(cachePosEnd & READ_ALIGN_MASK)); // romeo
- _physFilePos = fio.seek(_fd, cachePosEnd, SEEK_SET);
- if (_physFilePos != cachePosEnd) {
- sioprintf("cache seek error: seek to %d instead of %d, fs = %d\n", _physFilePos, cachePosEnd, _fileSize);
- return;
- }
- }
-
- uint32 cacheDest = (_cacheOfs + _bytesInCache) % CACHE_SIZE;
- uint32 cacheRead = CACHE_SIZE - _bytesInCache;
- if (cacheDest + cacheRead > CACHE_SIZE)
- cacheRead = CACHE_SIZE - cacheDest;
- if (cacheRead > MAX_READ_STEP)
- cacheRead = MAX_READ_STEP;
-
- assert((!(cacheRead & READ_ALIGN_MASK)) && cacheRead);
-
- _cacheOpRunning = true;
- fio.read(_fd, _cacheBuf + cacheDest, cacheRead);
- }
-}
-
-void Ps2File::cacheReadSync() {
- if (_cacheOpRunning) {
- int res = fio.sync(_fd);
- assert(res >= 0);
- _bytesInCache += res;
- _physFilePos += res;
- _cacheOpRunning = false;
- }
-}
-
-uint32 Ps2File::read(void *dest, uint32 len) {
- // uint32 r=0, d=0, ds=0, sz=0;
-#ifdef __PS2_FILE_SEMA__
- WaitSema(_sema);
-#endif
-
-#ifdef __PS2_FILE_DEBUG__
- dbg_printf("read (1) : _filePos = %d\n", _filePos);
- dbg_printf("read (1) : _cachePos = %d\n", _cachePos);
-#endif
-
- if (len == 0) {
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-#endif
- return 0;
- }
-
- if (_filePos >= _fileSize) {
- _eof = true;
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-#endif
- return 0;
- }
-
- if ((_filePos+len) > _fileSize) {
- len = _fileSize-_filePos;
- _eof = true;
- }
-
- uint8 *destBuf = (uint8 *)dest;
- if ((_filePos < _cachePos) || (_filePos + len > _cachePos + _bytesInCache))
- cacheReadSync(); // we have to read from CD, sync cache.
-
- while (len && (_filePos != _fileSize)) {
- if ((_filePos >= _cachePos) && (_filePos < _cachePos + _bytesInCache)) { // read from cache
- uint32 staPos = (_cacheOfs + (_filePos - _cachePos)) % CACHE_SIZE;
- uint32 cpyLen = _bytesInCache - (_filePos - _cachePos);
- if (cpyLen > len)
- cpyLen = len;
- if (staPos + cpyLen > CACHE_SIZE)
- cpyLen = CACHE_SIZE - staPos;
-
- assert(cpyLen);
- memcpy(destBuf, _cacheBuf + staPos, cpyLen);
- _filePos += cpyLen;
- destBuf += cpyLen;
- _readBytesBlock += len;
- len -= cpyLen;
- } else { // cache miss
- assert(!_cacheOpRunning);
- if (_physFilePos != _filePos) {
- if ((_filePos < _physFilePos) || (_filePos > _physFilePos + (CACHE_SIZE / 2)))
- _readBytesBlock = 0; // reset cache hit count
-
- _physFilePos = _filePos & ~READ_ALIGN_MASK;
- if (fio.seek(_fd, _physFilePos, SEEK_SET) != (int)_physFilePos)
- break; // read beyond EOF
- }
-
- int doRead = len + (_filePos - _physFilePos);
- doRead = (doRead + READ_ALIGN_MASK) & ~READ_ALIGN_MASK;
-
- if (doRead > MAX_READ_STEP)
- doRead = MAX_READ_STEP;
- if (doRead < 2048)
- doRead = 2048;
-
- fio.read(_fd, _cacheBuf, doRead);
- _cachePos = _physFilePos;
- _cacheOfs = 0;
- _bytesInCache = fio.sync(_fd);
- _physFilePos += _bytesInCache;
- if (!_bytesInCache)
- break; // EOF
- }
- }
-#ifndef ENABLE_PROFILING
- // doesn't play nice with -pg
- cacheReadAhead();
-#endif
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-#endif
- return destBuf - (uint8 *)dest;
-}
-
-uint32 Ps2File::write(const void *src, uint32 len) {
-#ifdef __PS2_FILE_SEMA__
- WaitSema(_sema);
-#endif
-
- memcpy(&_cacheBuf[_filePos], src, len);
- _filePos += len;
-
-#ifdef __PS2_FILE_SEMA__
- SignalSema(_sema);
-#endif
-
- return len;
-}
-
-
-PS2FileStream *PS2FileStream::makeFromPath(const Common::String &path, bool writeMode) {
- Ps2File *file = new Ps2File();
-
- int mode = writeMode ? (O_WRONLY | O_CREAT) : O_RDONLY;
-
- if (file->open(path.c_str(), mode))
- return new PS2FileStream(file);
-
- delete file;
- return 0;
-}
-
-PS2FileStream::PS2FileStream(Ps2File *handle) : _handle(handle) {
- assert(handle);
-}
-
-PS2FileStream::~PS2FileStream() {
- delete _handle;
-}
-
-bool PS2FileStream::seek(int32 offs, int whence) {
- return _handle->seek(offs, whence) == 0;
-}
-
-int32 PS2FileStream::pos() const {
- return _handle->tell();
-}
-
-bool PS2FileStream::eos() const {
- return _handle->eof();
-}
-
-uint32 PS2FileStream::read(void *ptr, uint32 len) {
- return _handle->read(ptr, len);
-}
-
-uint32 PS2FileStream::write(const void *ptr, uint32 len) {
- return _handle->write(ptr, len);
-}
-
-bool PS2FileStream::flush() {
- // dbg_printf("flush not implemented\n");
- return true;
-}
-
-bool PS2FileStream::err() const {
- bool errVal = _handle->getErr();
-
- if (errVal) {
- dbg_printf("ferror -> %d\n", errVal);
- }
-
- return errVal;
-}
-
-void PS2FileStream::clearErr() {
- _handle->setErr(false);
-}
-
-int32 PS2FileStream::size() const {
- return _handle->size();
-}
-
-
-
-FILE *ps2_fopen(const char *fname, const char *mode) {
- Ps2File *file = new Ps2File();
- int _mode = O_RDONLY;
-
- dbg_printf("fopen(%s, %s)\n", fname, mode);
-
- if (mode[0] == 'r' && mode [1] == 'w')
- _mode = O_RDWR;
- else if (mode[0] == 'w')
- _mode = O_WRONLY | O_CREAT;
- else if (mode[0] == 'a')
- _mode = O_RDWR | O_CREAT | O_APPEND;
-
- if (file->open(fname, _mode))
- return (FILE *)file;
-
- delete file;
- return NULL;
-}
-
-int ps2_fclose(FILE *stream) {
- Ps2File *file = (Ps2File *)stream;
-
- delete file;
-
- return 0;
-}
-
-
-size_t ps2_fread(void *buf, size_t r, size_t n, FILE *stream) {
- assert(r != 0);
- return ((Ps2File *)stream)->read(buf, r * n) / r;
-}
-
-size_t ps2_fwrite(const void *buf, size_t r, size_t n, FILE *stream) {
- assert(r != 0);
- return ((Ps2File *)stream)->write(buf, r * n) / r;
-}
diff --git a/backends/platform/ps2/fileio.h b/backends/platform/ps2/fileio.h
deleted file mode 100644
index 16eb7f212a..0000000000
--- a/backends/platform/ps2/fileio.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __PS2FILE_IO__
-#define __PS2FILE_IO__
-
-#include <stdio.h> // FIXME: Only for FILE -- get rid of this!
-
-#include "common/scummsys.h"
-#include "common/noncopyable.h"
-#include "common/stream.h"
-
-enum {
- CACHE_SIZE = 2048 * 32,
- MAX_READ_STEP = 2048 * 16,
- MAX_CACHED_FILES = 6,
- CACHE_READ_THRESHOLD = 16 * 2048,
- CACHE_FILL_MIN = 2048 * 24,
- READ_ALIGN = 64, // align all reads to the size of an EE cache line
- READ_ALIGN_MASK = READ_ALIGN - 1
-};
-
-// TODO: Make this a subclass of SeekableReadStream & WriteStream
-// See also StdioStream.
-class Ps2File {
-public:
- Ps2File();
- virtual ~Ps2File();
- virtual bool open(const char *name, int mode);
- virtual uint32 read(void *dest, uint32 len);
- virtual uint32 write(const void *src, uint32 len);
- virtual int32 tell();
- virtual int32 size();
- virtual int seek(int32 offset, int origin);
- virtual bool eof();
- virtual bool getErr();
- virtual void setErr(bool);
-
-
-private:
- void cacheReadAhead();
- void cacheReadSync();
-
- int _fd;
- uint32 _mode;
- uint32 _fileSize;
- uint32 _filePos;
- uint32 _cacheSize;
- uint32 _cachePos;
-
- uint8 *_cache;
-
- bool _eof;
- bool _err;
- int _sema;
-
-
- uint8 *_cacheBuf;
- bool _cacheOpRunning;
- uint32 _physFilePos;
- uint32 _bytesInCache, _cacheOfs;
-
- uint32 _readBytesBlock;
- bool _stream;
-};
-
-// TODO: Merge Ps2File into PS2FileStream
-class PS2FileStream : public Common::SeekableReadStream, public Common::WriteStream, public Common::NonCopyable {
-protected:
- /** File handle to the actual file. */
- Ps2File *_handle;
-
-public:
- /**
- * Given a path, invokes fopen on that path and wrap the result in a
- * PS2FileStream instance.
- */
- static PS2FileStream *makeFromPath(const Common::String &path, bool writeMode);
-
- PS2FileStream(Ps2File *handle);
- virtual ~PS2FileStream();
-
- virtual bool err() const;
- virtual void clearErr();
- virtual bool eos() const;
-
- virtual uint32 write(const void *dataPtr, uint32 dataSize);
- virtual bool flush();
-
- virtual int32 pos() const;
- virtual int32 size() const;
- virtual bool seek(int32 offs, int whence = SEEK_SET);
- virtual uint32 read(void *dataPtr, uint32 dataSize);
-};
-
-// TODO: Get rid of the following, instead use PS2FileStream directly.
-FILE *ps2_fopen(const char *fname, const char *mode);
-int ps2_fclose(FILE *stream);
-
-size_t ps2_fread(void *buf, size_t r, size_t n, FILE *stream);
-size_t ps2_fwrite(const void *buf, size_t r, size_t n, FILE *stream);
-
-#endif // __PS2FILE_IO__
diff --git a/backends/platform/ps2/icon.cpp b/backends/platform/ps2/icon.cpp
deleted file mode 100644
index 9319d9f4d9..0000000000
--- a/backends/platform/ps2/icon.cpp
+++ /dev/null
@@ -1,972 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "Gs2dScreen.h"
-#include "GsDefs.h"
-
-#include <libmc.h>
-#include "icon.h"
-
-const char _info[] = "ScummVM\nFolder";
-
-const iconIVECTOR _bgcolor[4] = {
- { 68, 23, 116, 0 }, // top left
- { 255, 255, 255, 0 }, // top right
- { 255, 255, 255, 0 }, // bottom left
- { 68, 23, 116, 0 }, // bottom right
-};
-
-const iconFVECTOR _lightdir[3] = {
- { 0.5, 0.5, 0.5, 0.0 },
- { 0.0,-0.4,-0.1, 0.0 },
- {-0.5,-0.5, 0.5, 0.0 },
-};
-
-const iconFVECTOR _lightcol[3] = {
- { 0.3, 0.3, 0.3, 0.00 },
- { 0.4, 0.4, 0.4, 0.00 },
- { 0.5, 0.5, 0.5, 0.00 },
-};
-
-const iconFVECTOR _ambient = { 0.50, 0.50, 0.50, 0.00 };
-
-// Source File: stdico2.rle
-// Orig. Offset: 0 / 0x00000000
-// Length: 14018 / 0x000036C2 (bytes)
-
-const uint8 _rleIcoData[14018] = {
- 0xCC, 0x41, 0x00, 0x00, 0xCC, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x24, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x0E, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x0E, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0xFE, 0x00, 0x04, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xC1, 0x00, 0xFE, 0x00, 0x04, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0x02,
- 0x00, 0x04, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0xDC, 0x00, 0xF7, 0x00, 0xFE, 0x00, 0x04, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x0E, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xC1, 0x00, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x7F, 0x7F, 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0xFE,
- 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x7F, 0x7F,
- 0x7F, 0x80, 0x00, 0x24, 0x00, 0xF7, 0x00, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x7F, 0x7F, 0x7F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x4E, 0x07,
- 0x0C, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE7, 0x03, 0xE6, 0x03, 0xE9, 0x03, 0xF0, 0x2B, 0xF8, 0x57, 0x74, 0x00, 0x0C, 0x00, 0xFD, 0x73,
- 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xE6, 0x03,
- 0xE9, 0x03, 0xF0, 0x2B, 0xF8, 0x57, 0x62, 0x00, 0x21, 0x00, 0xFE, 0x77, 0xFB, 0x67, 0xF9, 0x5F,
- 0xF8, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F,
- 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF9, 0x5F, 0xF7, 0x53,
- 0xF1, 0x33, 0xEB, 0x13, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE9, 0x03, 0xED, 0x1F, 0xF3, 0x3F, 0xF9, 0x5B, 0xFB, 0x67, 0xFE, 0x77, 0x5F, 0x00, 0x21, 0x00,
- 0xFB, 0x6B, 0xF5, 0x4B, 0xF0, 0x2F, 0xEE, 0x2F, 0xF0, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F,
- 0xF1, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F, 0xF1, 0x2F,
- 0xF1, 0x2F, 0xF0, 0x2F, 0xEF, 0x2B, 0xEC, 0x1B, 0xE9, 0x0B, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xEA, 0x0F, 0xEC, 0x1F, 0xF1, 0x2F, 0xF6, 0x4B,
- 0xFC, 0x6B, 0x5F, 0x00, 0x21, 0x00, 0xF8, 0x57, 0xEF, 0x2B, 0xE8, 0x07, 0xE6, 0x07, 0xE8, 0x07,
- 0xEA, 0x07, 0xEA, 0x07, 0xEA, 0x07, 0xEA, 0x07, 0xEA, 0x07, 0xEA, 0x07, 0xEA, 0x07, 0xEA, 0x07,
- 0xEA, 0x07, 0xEA, 0x07, 0xE9, 0x07, 0xE9, 0x07, 0xE9, 0x07, 0xE8, 0x07, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03,
- 0xE7, 0x07, 0xE9, 0x07, 0xF0, 0x2B, 0xF8, 0x57, 0x56, 0x00, 0x30, 0x00, 0xFD, 0x73, 0xFB, 0x67,
- 0xFA, 0x63, 0xF9, 0x63, 0xFA, 0x63, 0xFA, 0x63, 0xFA, 0x63, 0xFA, 0x63, 0xF9, 0x5F, 0xF2, 0x3B,
- 0xEB, 0x13, 0xE5, 0x03, 0xE3, 0x03, 0xE4, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03,
- 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03,
- 0xE5, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE6, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xEC, 0x13, 0xF3, 0x3B,
- 0xF9, 0x5F, 0xFA, 0x63, 0xF9, 0x63, 0xFA, 0x63, 0xFB, 0x6B, 0xFE, 0x77, 0x50, 0x00, 0x30, 0x00,
- 0xFA, 0x63, 0xF5, 0x43, 0xF1, 0x37, 0xF0, 0x37, 0xF2, 0x37, 0xF2, 0x37, 0xF2, 0x37, 0xF2, 0x37,
- 0xF1, 0x33, 0xEE, 0x1F, 0xE9, 0x07, 0xE6, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE7, 0x03, 0xE7, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE7, 0x03, 0xE6, 0x03, 0xE7, 0x03,
- 0xEA, 0x07, 0xEE, 0x1F, 0xF1, 0x33, 0xF1, 0x37, 0xF0, 0x37, 0xF1, 0x37, 0xF5, 0x47, 0xFB, 0x67,
- 0x4F, 0x00, 0x32, 0x00, 0xFD, 0x77, 0xF6, 0x4B, 0xEE, 0x1F, 0xE9, 0x0B, 0xE8, 0x0B, 0xEA, 0x0B,
- 0xEA, 0x0B, 0xEA, 0x0B, 0xEA, 0x0B, 0xEA, 0x0B, 0xEA, 0x07, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xEA, 0x07, 0xEA, 0x0B, 0xEA, 0x0B, 0xE8, 0x0B,
- 0xE9, 0x0B, 0xEF, 0x23, 0xF7, 0x4F, 0xFE, 0x7B, 0x49, 0x00, 0x39, 0x00, 0xFD, 0x73, 0xFB, 0x6B,
- 0xFA, 0x67, 0xFB, 0x67, 0xFB, 0x67, 0xF8, 0x57, 0xF0, 0x2F, 0xE9, 0x07, 0xE4, 0x03, 0xE4, 0x03,
- 0xE5, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xA8, 0x03,
- 0xA8, 0x03, 0xA8, 0x03, 0xA8, 0x03, 0xA8, 0x03, 0xA8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xE6, 0x03, 0xE5, 0x03,
- 0xE4, 0x03, 0xE5, 0x03, 0xEA, 0x0B, 0xF1, 0x33, 0xF8, 0x5B, 0xFC, 0x6B, 0xFE, 0x77, 0x46, 0x00,
- 0x3A, 0x00, 0xFF, 0x7B, 0xF9, 0x5F, 0xF4, 0x43, 0xF1, 0x3B, 0xF2, 0x3B, 0xF3, 0x3B, 0xF1, 0x2F,
- 0xEC, 0x17, 0xE8, 0x03, 0xE5, 0x03, 0xE5, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE6, 0x03,
- 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xC8, 0x03,
- 0xC8, 0x03, 0xA8, 0x03, 0x87, 0x03, 0x47, 0x03, 0x47, 0x03, 0x27, 0x03, 0x27, 0x03, 0x47, 0x03,
- 0x68, 0x03, 0x88, 0x03, 0xA8, 0x03, 0xC8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE6, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xEC, 0x1B,
- 0xF0, 0x33, 0xF5, 0x47, 0xFB, 0x63, 0x46, 0x00, 0x3B, 0x00, 0xFC, 0x6F, 0xF4, 0x43, 0xED, 0x1B,
- 0xE9, 0x0F, 0xE9, 0x0F, 0xEB, 0x0F, 0xEB, 0x0F, 0xE9, 0x07, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xA8, 0x03, 0xA7, 0x03,
- 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0x88, 0x03, 0x67, 0x03, 0x27, 0x03, 0x06, 0x03, 0xC5, 0x02,
- 0xA6, 0x02, 0xA6, 0x02, 0xA6, 0x02, 0xC6, 0x02, 0xE7, 0x02, 0x27, 0x07, 0x67, 0x03, 0x87, 0x03,
- 0xC7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x07, 0xE9, 0x0F, 0xEF, 0x23, 0xF6, 0x4F, 0xFE, 0x77,
- 0x43, 0x00, 0x40, 0x00, 0xFD, 0x77, 0xFC, 0x6F, 0xF6, 0x4F, 0xEF, 0x27, 0xE8, 0x03, 0xE4, 0x03,
- 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xC7, 0x03,
- 0xC7, 0x03, 0xA7, 0x03, 0x67, 0x03, 0x47, 0x03, 0x27, 0x03, 0x06, 0x03, 0x06, 0x03, 0xE6, 0x02,
- 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0xC6, 0x02, 0x85, 0x02, 0x65, 0x02, 0x24, 0x02, 0x04, 0x02,
- 0x04, 0x02, 0x05, 0x02, 0x25, 0x02, 0x45, 0x06, 0x85, 0x06, 0xC6, 0x02, 0x06, 0x03, 0x46, 0x03,
- 0x87, 0x03, 0xA7, 0x03, 0xC8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE9, 0x03, 0xE7, 0x03, 0xE5, 0x03, 0xE5, 0x03, 0xEA, 0x07, 0xF1, 0x33, 0xF8, 0x5B, 0xFC, 0x6F,
- 0xFD, 0x77, 0xFF, 0x7B, 0x3F, 0x00, 0x41, 0x00, 0xFE, 0x77, 0xF9, 0x5B, 0xF5, 0x43, 0xEF, 0x2F,
- 0xEB, 0x13, 0xE7, 0x03, 0xE5, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE7, 0x03, 0xA7, 0x03, 0x87, 0x03, 0x26, 0x03, 0xE6, 0x02, 0xA6, 0x02, 0x65, 0x02,
- 0x45, 0x02, 0x45, 0x02, 0x45, 0x02, 0x24, 0x02, 0x24, 0x02, 0x24, 0x02, 0x04, 0x02, 0xE4, 0x01,
- 0xC4, 0x01, 0xA3, 0x05, 0x83, 0x05, 0x63, 0x01, 0x83, 0x01, 0x83, 0x05, 0xA3, 0x01, 0xE4, 0x01,
- 0x24, 0x02, 0x65, 0x02, 0xC6, 0x02, 0x26, 0x03, 0x67, 0x03, 0xA7, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xE8, 0x03,
- 0xEC, 0x1B, 0xF1, 0x37, 0xF5, 0x47, 0xF9, 0x5F, 0xFD, 0x73, 0x3F, 0x00, 0x41, 0x00, 0xFC, 0x6B,
- 0xF4, 0x43, 0xED, 0x1B, 0xE9, 0x0F, 0xE8, 0x07, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC7, 0x03, 0x86, 0x03, 0x26, 0x03, 0xA5, 0x02,
- 0x24, 0x02, 0xE4, 0x01, 0xC4, 0x01, 0x84, 0x01, 0x84, 0x01, 0x84, 0x01, 0x83, 0x01, 0x63, 0x01,
- 0x63, 0x01, 0x63, 0x01, 0x43, 0x01, 0x43, 0x05, 0x23, 0x05, 0x23, 0x05, 0x02, 0x05, 0x02, 0x05,
- 0x02, 0x05, 0x22, 0x01, 0x43, 0x01, 0x83, 0x01, 0xC4, 0x01, 0x25, 0x02, 0xA6, 0x02, 0x06, 0x03,
- 0x67, 0x03, 0xA7, 0x03, 0xC8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x0B, 0xEA, 0x13, 0xEE, 0x23, 0xF5, 0x47, 0xFC, 0x6B,
- 0x39, 0x00, 0x47, 0x00, 0xFF, 0x7B, 0xFE, 0x77, 0xFD, 0x73, 0xFC, 0x73, 0xFD, 0x73, 0xFD, 0x73,
- 0xF7, 0x4F, 0xEF, 0x23, 0xE8, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC8, 0x03, 0xC8, 0x03, 0xA8, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x66, 0x03, 0xE5, 0x02, 0x85, 0x02,
- 0x04, 0x02, 0x83, 0x01, 0x43, 0x01, 0x23, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
- 0xE2, 0x00, 0xE2, 0x00, 0xE2, 0x00, 0xE2, 0x04, 0xE3, 0x04, 0xE3, 0x08, 0xE2, 0x08, 0xC2, 0x08,
- 0xC2, 0x04, 0xC1, 0x04, 0xC1, 0x04, 0xE2, 0x00, 0x03, 0x01, 0x23, 0x01, 0xA4, 0x01, 0x05, 0x02,
- 0x65, 0x02, 0xE6, 0x02, 0x46, 0x03, 0x87, 0x03, 0xC8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE5, 0x03, 0xE5, 0x03, 0xEA, 0x07, 0xF2, 0x37,
- 0xFB, 0x67, 0x39, 0x00, 0x47, 0x00, 0xFD, 0x73, 0xF8, 0x5B, 0xF5, 0x47, 0xF4, 0x47, 0xF4, 0x47,
- 0xF5, 0x47, 0xF1, 0x2F, 0xEC, 0x13, 0xE7, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03,
- 0xA7, 0x03, 0x87, 0x03, 0x87, 0x03, 0x47, 0x03, 0x46, 0x03, 0x26, 0x03, 0xC5, 0x02, 0x64, 0x02,
- 0xE4, 0x01, 0x83, 0x01, 0x23, 0x05, 0x03, 0x05, 0xE3, 0x04, 0xC3, 0x04, 0xE3, 0x04, 0xE3, 0x00,
- 0xE2, 0x00, 0xC2, 0x04, 0xC2, 0x04, 0xC2, 0x04, 0xE2, 0x04, 0xE3, 0x08, 0xE3, 0x08, 0xE3, 0x08,
- 0xE2, 0x08, 0xC2, 0x04, 0xC2, 0x04, 0xA2, 0x04, 0xC2, 0x04, 0xC2, 0x04, 0x03, 0x01, 0x43, 0x01,
- 0xA4, 0x01, 0xE4, 0x01, 0x65, 0x02, 0xE6, 0x02, 0x47, 0x03, 0xA8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE5, 0x03, 0xE4, 0x03, 0xE9, 0x03,
- 0xF2, 0x33, 0xFA, 0x67, 0x39, 0x00, 0x47, 0x00, 0xFA, 0x63, 0xF3, 0x3B, 0xED, 0x1B, 0xEB, 0x1B,
- 0xEC, 0x1B, 0xED, 0x1B, 0xEB, 0x13, 0xEA, 0x07, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC7, 0x03, 0xA7, 0x03,
- 0x87, 0x03, 0x46, 0x03, 0x26, 0x03, 0x06, 0x03, 0xE5, 0x02, 0xA5, 0x02, 0x85, 0x02, 0x44, 0x02,
- 0xC4, 0x01, 0x63, 0x01, 0x03, 0x05, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xE3, 0x04,
- 0x03, 0x05, 0xE2, 0x04, 0xE2, 0x04, 0xE2, 0x04, 0xE2, 0x08, 0x03, 0x09, 0x23, 0x09, 0x23, 0x09,
- 0x23, 0x09, 0x03, 0x05, 0x03, 0x05, 0xE3, 0x08, 0xC3, 0x08, 0xC3, 0x08, 0xE3, 0x04, 0xE3, 0x04,
- 0x23, 0x01, 0x43, 0x01, 0x83, 0x05, 0xE4, 0x05, 0x66, 0x02, 0x07, 0x03, 0x88, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE6, 0x03, 0xE6, 0x03,
- 0xEB, 0x0F, 0xF3, 0x3B, 0xFB, 0x67, 0x36, 0x00, 0x4A, 0x00, 0xFF, 0x7B, 0xFE, 0x77, 0xFC, 0x6F,
- 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC8, 0x03, 0xA7, 0x03, 0x66, 0x03, 0x26, 0x03, 0x06, 0x03, 0xC5, 0x02, 0x85, 0x02, 0x65, 0x06,
- 0x44, 0x06, 0x04, 0x02, 0xE3, 0x01, 0x83, 0x01, 0x43, 0x01, 0x03, 0x05, 0xC3, 0x04, 0xC3, 0x08,
- 0xC3, 0x08, 0xE3, 0x08, 0x04, 0x09, 0x03, 0x09, 0x03, 0x05, 0x03, 0x09, 0x03, 0x09, 0x03, 0x09,
- 0x23, 0x09, 0x23, 0x09, 0x44, 0x09, 0x44, 0x09, 0x44, 0x09, 0x24, 0x09, 0x23, 0x09, 0x03, 0x09,
- 0xE3, 0x08, 0xE3, 0x08, 0xE3, 0x08, 0xE3, 0x04, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x63, 0x05,
- 0xE5, 0x05, 0x86, 0x02, 0x27, 0x03, 0xA8, 0x03, 0xC7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xEB, 0x0F, 0xF3, 0x3B, 0xFB, 0x67, 0x36, 0x00,
- 0x4A, 0x00, 0xFD, 0x6F, 0xF9, 0x5B, 0xF5, 0x47, 0xEF, 0x2B, 0xEA, 0x0B, 0xE6, 0x03, 0xE4, 0x03,
- 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xA7, 0x03, 0x47, 0x03, 0xE6, 0x02, 0xA5, 0x02,
- 0x65, 0x02, 0x24, 0x02, 0x04, 0x06, 0xE4, 0x05, 0xA3, 0x05, 0x83, 0x01, 0x43, 0x01, 0x22, 0x01,
- 0xE2, 0x04, 0xC2, 0x04, 0xA2, 0x08, 0xC3, 0x08, 0xE3, 0x08, 0x03, 0x09, 0x24, 0x09, 0x24, 0x09,
- 0x44, 0x09, 0x44, 0x09, 0x44, 0x09, 0x24, 0x09, 0x44, 0x09, 0x64, 0x09, 0x65, 0x09, 0x65, 0x09,
- 0x64, 0x09, 0x44, 0x09, 0x23, 0x09, 0x03, 0x09, 0xE3, 0x08, 0xC3, 0x08, 0xE3, 0x08, 0x03, 0x09,
- 0x23, 0x09, 0x03, 0x09, 0xE3, 0x04, 0x23, 0x05, 0x83, 0x01, 0x25, 0x02, 0xC6, 0x02, 0x47, 0x03,
- 0xA7, 0x03, 0xC7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE6, 0x03, 0xE6, 0x03,
- 0xEB, 0x0F, 0xF3, 0x3B, 0xFB, 0x67, 0x36, 0x00, 0x4A, 0x00, 0xFA, 0x5F, 0xF3, 0x3B, 0xED, 0x1F,
- 0xE9, 0x13, 0xE8, 0x07, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xA7, 0x03,
- 0x47, 0x03, 0xE6, 0x02, 0x65, 0x02, 0x24, 0x02, 0xE4, 0x05, 0xA3, 0x05, 0x63, 0x05, 0x63, 0x05,
- 0x43, 0x01, 0x23, 0x01, 0x02, 0x01, 0xE2, 0x00, 0xC2, 0x04, 0xC2, 0x04, 0xC2, 0x08, 0xE3, 0x08,
- 0x03, 0x09, 0x24, 0x09, 0x44, 0x09, 0x65, 0x09, 0x65, 0x09, 0x65, 0x09, 0x65, 0x09, 0x64, 0x09,
- 0x64, 0x09, 0x85, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x65, 0x0D, 0x44, 0x0D, 0x23, 0x0D, 0xE3, 0x0C,
- 0xC3, 0x08, 0xC3, 0x08, 0x03, 0x09, 0x24, 0x0D, 0x45, 0x0D, 0x24, 0x09, 0x03, 0x05, 0x02, 0x05,
- 0x63, 0x01, 0xE3, 0x01, 0x65, 0x02, 0x06, 0x03, 0x67, 0x03, 0xC8, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xEB, 0x0F, 0xF3, 0x3B, 0xFB, 0x67, 0x34, 0x00,
- 0x4C, 0x00, 0xFF, 0x7B, 0xFC, 0x6F, 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE5, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xA7, 0x03, 0x46, 0x03, 0xC6, 0x02, 0x45, 0x02,
- 0xE5, 0x01, 0x84, 0x05, 0x63, 0x05, 0x23, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0xE3, 0x00,
- 0xC2, 0x00, 0xC2, 0x04, 0xC2, 0x04, 0xE2, 0x08, 0xE3, 0x08, 0x03, 0x09, 0x24, 0x09, 0x44, 0x09,
- 0x65, 0x09, 0x86, 0x09, 0x86, 0x0D, 0xA6, 0x0D, 0x86, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0xA6, 0x0D,
- 0xA6, 0x0D, 0xA6, 0x0D, 0x86, 0x0D, 0x65, 0x0D, 0x24, 0x0D, 0x03, 0x0D, 0xE3, 0x0C, 0xE3, 0x08,
- 0x24, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x44, 0x09, 0x03, 0x05, 0xE2, 0x04, 0x22, 0x01, 0xA3, 0x01,
- 0x24, 0x02, 0xC5, 0x02, 0x47, 0x03, 0xA8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE6, 0x03, 0xE6, 0x03, 0xEB, 0x0F, 0xF3, 0x3B, 0xFB, 0x67, 0x32, 0x00, 0x4E, 0x00, 0xFE, 0x7B,
- 0xFC, 0x6B, 0xF9, 0x5B, 0xF5, 0x4B, 0xEF, 0x2B, 0xEA, 0x0B, 0xE5, 0x03, 0xE5, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xC7, 0x03, 0x87, 0x03, 0x46, 0x03, 0xC6, 0x02, 0x45, 0x02, 0xC4, 0x01,
- 0x64, 0x01, 0x43, 0x05, 0x23, 0x05, 0x03, 0x09, 0x03, 0x09, 0x04, 0x09, 0x04, 0x05, 0x04, 0x05,
- 0xE3, 0x04, 0xE3, 0x04, 0x03, 0x09, 0x03, 0x09, 0x23, 0x0D, 0x44, 0x0D, 0x44, 0x0D, 0x65, 0x0D,
- 0x85, 0x0D, 0xA6, 0x0D, 0xA6, 0x0D, 0xA6, 0x0D, 0xA6, 0x0D, 0xA6, 0x11, 0xA6, 0x11, 0xC6, 0x11,
- 0xC7, 0x0D, 0xA7, 0x0D, 0x86, 0x0D, 0x65, 0x0D, 0x45, 0x0D, 0x24, 0x0D, 0x04, 0x0D, 0x04, 0x0D,
- 0x44, 0x0D, 0x65, 0x0D, 0x85, 0x0D, 0x44, 0x09, 0x03, 0x05, 0xE2, 0x04, 0x22, 0x01, 0x63, 0x01,
- 0x04, 0x02, 0xA5, 0x02, 0x26, 0x03, 0xA7, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE5, 0x03, 0xE4, 0x03, 0xE9, 0x07, 0xF2, 0x37, 0xFB, 0x67, 0x32, 0x00, 0x4E, 0x00, 0xFD, 0x77,
- 0xF8, 0x57, 0xF2, 0x37, 0xED, 0x23, 0xEA, 0x13, 0xE9, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xC7, 0x03, 0x87, 0x03, 0x27, 0x03, 0xC6, 0x02, 0x45, 0x02, 0xC4, 0x01, 0x63, 0x01,
- 0x23, 0x01, 0x03, 0x05, 0x23, 0x05, 0x23, 0x09, 0x24, 0x09, 0x45, 0x09, 0x45, 0x09, 0x45, 0x09,
- 0x44, 0x09, 0x44, 0x09, 0x44, 0x09, 0x44, 0x0D, 0x64, 0x0D, 0x65, 0x0D, 0x85, 0x0D, 0x86, 0x0D,
- 0xA6, 0x0D, 0xA6, 0x0D, 0xA6, 0x0D, 0xA6, 0x0D, 0xC6, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xC6, 0x11,
- 0xC6, 0x11, 0xA6, 0x0D, 0xA6, 0x0D, 0x86, 0x0D, 0x66, 0x0D, 0x45, 0x0D, 0x45, 0x0D, 0x45, 0x0D,
- 0x65, 0x0D, 0x85, 0x0D, 0x85, 0x09, 0x44, 0x09, 0x03, 0x05, 0xE3, 0x04, 0x23, 0x01, 0x83, 0x01,
- 0x04, 0x02, 0xA5, 0x02, 0x26, 0x03, 0x87, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03,
- 0xE4, 0x03, 0xE3, 0x03, 0xE8, 0x03, 0xF1, 0x33, 0xFA, 0x63, 0x32, 0x00, 0x4E, 0x00, 0xFD, 0x73,
- 0xF5, 0x47, 0xED, 0x17, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xC8, 0x03,
- 0xA7, 0x03, 0x66, 0x03, 0x06, 0x03, 0xA5, 0x02, 0x25, 0x06, 0xA4, 0x05, 0x43, 0x05, 0x02, 0x01,
- 0xE2, 0x04, 0x03, 0x05, 0x23, 0x05, 0x44, 0x09, 0x65, 0x09, 0x65, 0x0D, 0x65, 0x0D, 0x65, 0x0D,
- 0x65, 0x09, 0x85, 0x09, 0x84, 0x09, 0x84, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x86, 0x0D,
- 0x86, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x85, 0x11, 0x85, 0x11, 0xA6, 0x11, 0xA6, 0x11,
- 0xA6, 0x11, 0xA6, 0x11, 0xA6, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x66, 0x0D, 0x66, 0x11, 0x65, 0x0D,
- 0x65, 0x0D, 0x85, 0x0D, 0x64, 0x09, 0x44, 0x09, 0x04, 0x05, 0x03, 0x05, 0x44, 0x01, 0x84, 0x01,
- 0x05, 0x02, 0xA6, 0x02, 0x26, 0x03, 0x87, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE6, 0x03, 0xE6, 0x03, 0xEB, 0x13, 0xF3, 0x3B, 0xFB, 0x67, 0x32, 0x00, 0x4E, 0x00, 0xFC, 0x6F,
- 0xF4, 0x3F, 0xEB, 0x0F, 0xE5, 0x03, 0xE4, 0x03, 0xE7, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0x87, 0x03,
- 0x46, 0x03, 0xE6, 0x02, 0x65, 0x02, 0x04, 0x02, 0xA4, 0x05, 0x23, 0x05, 0xE2, 0x04, 0xC2, 0x04,
- 0xC2, 0x04, 0xE3, 0x08, 0x24, 0x09, 0x64, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x85, 0x0D, 0x85, 0x0D,
- 0x85, 0x0D, 0x85, 0x09, 0x85, 0x09, 0x85, 0x09, 0x85, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x65, 0x0D,
- 0x65, 0x0D, 0x45, 0x0D, 0x44, 0x09, 0x24, 0x0D, 0x24, 0x0D, 0x24, 0x0D, 0x44, 0x11, 0x65, 0x11,
- 0x85, 0x11, 0x86, 0x11, 0xA6, 0x11, 0x87, 0x11, 0x87, 0x0D, 0x87, 0x0D, 0x86, 0x11, 0x86, 0x0D,
- 0x85, 0x0D, 0x85, 0x0D, 0x64, 0x09, 0x24, 0x09, 0x04, 0x05, 0x04, 0x01, 0x44, 0x01, 0xC4, 0x01,
- 0x45, 0x02, 0xC6, 0x02, 0x46, 0x03, 0xA7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE9, 0x07,
- 0xEA, 0x17, 0xED, 0x23, 0xF1, 0x33, 0xF7, 0x53, 0xFC, 0x6F, 0x32, 0x00, 0x4E, 0x00, 0xFD, 0x6F,
- 0xF4, 0x43, 0xEC, 0x13, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xA7, 0x03, 0x26, 0x03,
- 0xC6, 0x02, 0x45, 0x02, 0xC4, 0x01, 0x63, 0x01, 0x23, 0x05, 0xE2, 0x04, 0xC2, 0x04, 0xC2, 0x04,
- 0xC2, 0x08, 0x03, 0x09, 0x44, 0x0D, 0x65, 0x0D, 0x85, 0x0D, 0x85, 0x11, 0x85, 0x0D, 0x85, 0x0D,
- 0x85, 0x09, 0x85, 0x09, 0x85, 0x09, 0x65, 0x09, 0x65, 0x09, 0x64, 0x09, 0x44, 0x09, 0x44, 0x09,
- 0x24, 0x09, 0x04, 0x09, 0xE3, 0x08, 0xC3, 0x08, 0xC3, 0x08, 0xC2, 0x08, 0xE3, 0x0C, 0x03, 0x0D,
- 0x44, 0x0D, 0x65, 0x11, 0x86, 0x11, 0xA7, 0x11, 0xA7, 0x11, 0xA7, 0x0D, 0xA6, 0x0D, 0x85, 0x0D,
- 0x85, 0x0D, 0x65, 0x0D, 0x45, 0x09, 0x24, 0x09, 0x04, 0x05, 0x23, 0x01, 0x64, 0x01, 0xE5, 0x01,
- 0x86, 0x02, 0x06, 0x03, 0x67, 0x03, 0xA8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xEB, 0x0F,
- 0xEF, 0x2B, 0xF4, 0x4B, 0xF8, 0x5B, 0xFB, 0x6B, 0xFE, 0x77, 0x32, 0x00, 0x4B, 0x00, 0xFD, 0x73,
- 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0x87, 0x03, 0x46, 0x03, 0xA5, 0x02,
- 0x24, 0x02, 0xA4, 0x01, 0x23, 0x01, 0xE2, 0x00, 0xC2, 0x04, 0xC2, 0x08, 0xA2, 0x08, 0xC2, 0x08,
- 0xE3, 0x08, 0x24, 0x0D, 0x64, 0x0D, 0x85, 0x11, 0x85, 0x11, 0x85, 0x0D, 0x85, 0x0D, 0x85, 0x0D,
- 0x85, 0x09, 0x65, 0x09, 0x65, 0x05, 0x65, 0x05, 0x64, 0x05, 0x44, 0x05, 0x43, 0x05, 0x23, 0x05,
- 0xE3, 0x04, 0xC3, 0x04, 0xA3, 0x04, 0x62, 0x04, 0x61, 0x04, 0x41, 0x04, 0x81, 0x08, 0xA2, 0x08,
- 0x03, 0x0D, 0x44, 0x0D, 0x66, 0x11, 0x87, 0x11, 0xA7, 0x11, 0xC7, 0x0D, 0xA6, 0x0D, 0xA5, 0x0D,
- 0x85, 0x0D, 0x65, 0x0D, 0x44, 0x09, 0x24, 0x09, 0x03, 0x05, 0x23, 0x01, 0xA4, 0x01, 0x25, 0x02,
- 0xC6, 0x02, 0x47, 0x03, 0x87, 0x03, 0xA8, 0x03, 0xE8, 0x03, 0xE6, 0x03, 0xE6, 0x03, 0xEC, 0x13,
- 0xF4, 0x3F, 0xFB, 0x6B, 0x35, 0x00, 0x4B, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03,
- 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03,
- 0xC8, 0x03, 0x87, 0x03, 0x26, 0x03, 0xA5, 0x02, 0x04, 0x02, 0x83, 0x01, 0x02, 0x01, 0xA2, 0x00,
- 0x82, 0x04, 0xA2, 0x04, 0xA2, 0x08, 0xC2, 0x08, 0xE3, 0x08, 0x24, 0x0D, 0x44, 0x0D, 0x64, 0x0D,
- 0x65, 0x0D, 0x64, 0x0D, 0x64, 0x0D, 0x44, 0x0D, 0x64, 0x09, 0x64, 0x09, 0x64, 0x05, 0x84, 0x05,
- 0x84, 0x05, 0x84, 0x05, 0x64, 0x01, 0x43, 0x01, 0x22, 0x01, 0xE2, 0x00, 0xA2, 0x04, 0x82, 0x04,
- 0x41, 0x04, 0x21, 0x04, 0x21, 0x04, 0x41, 0x04, 0x81, 0x08, 0xC2, 0x08, 0x24, 0x0D, 0x65, 0x0D,
- 0x86, 0x0D, 0xC7, 0x11, 0xC6, 0x0D, 0xC6, 0x0D, 0xA5, 0x0D, 0x84, 0x0D, 0x44, 0x09, 0x24, 0x09,
- 0x23, 0x05, 0x23, 0x05, 0x64, 0x01, 0xE4, 0x01, 0x66, 0x02, 0x06, 0x03, 0x67, 0x03, 0x88, 0x03,
- 0xA8, 0x03, 0xC7, 0x03, 0xC5, 0x03, 0xC5, 0x03, 0xEB, 0x13, 0xF5, 0x47, 0xFE, 0x77, 0x35, 0x00,
- 0x4B, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xEC, 0x1B, 0xE6, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xA8, 0x03, 0x47, 0x03, 0xC6, 0x02,
- 0x24, 0x02, 0x83, 0x01, 0x02, 0x01, 0xA1, 0x00, 0x61, 0x00, 0x82, 0x04, 0xA2, 0x08, 0xC3, 0x08,
- 0xE3, 0x08, 0x24, 0x0D, 0x44, 0x0D, 0x64, 0x0D, 0x64, 0x0D, 0x64, 0x0D, 0x44, 0x0D, 0x24, 0x0D,
- 0x24, 0x09, 0x24, 0x09, 0x44, 0x05, 0x63, 0x05, 0x84, 0x01, 0x84, 0x01, 0xA4, 0x01, 0x83, 0x01,
- 0x63, 0x01, 0x22, 0x01, 0xE2, 0x00, 0xC1, 0x00, 0xA1, 0x00, 0x61, 0x00, 0x41, 0x04, 0x21, 0x04,
- 0x41, 0x04, 0x61, 0x04, 0xA2, 0x04, 0xE3, 0x08, 0x44, 0x0D, 0x86, 0x0D, 0xC6, 0x0D, 0xC6, 0x11,
- 0xC5, 0x0D, 0xA5, 0x0D, 0x64, 0x09, 0x44, 0x09, 0x23, 0x05, 0x23, 0x05, 0x43, 0x05, 0xA4, 0x05,
- 0x25, 0x02, 0xA6, 0x02, 0x27, 0x03, 0x87, 0x03, 0xA8, 0x03, 0xA7, 0x03, 0xC6, 0x03, 0xC4, 0x03,
- 0xC4, 0x03, 0xEA, 0x0B, 0xF4, 0x3F, 0xFD, 0x73, 0x35, 0x00, 0x4B, 0x00, 0xFD, 0x73, 0xF4, 0x47,
- 0xEC, 0x1B, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xC8, 0x03, 0x68, 0x03, 0xE6, 0x02, 0x25, 0x02, 0x84, 0x05, 0xE2, 0x04, 0xA1, 0x00,
- 0x81, 0x00, 0x61, 0x00, 0x82, 0x04, 0xA3, 0x08, 0xE4, 0x08, 0x24, 0x0D, 0x65, 0x0D, 0x85, 0x0D,
- 0x85, 0x09, 0x64, 0x09, 0x44, 0x09, 0x44, 0x09, 0x24, 0x09, 0x24, 0x09, 0x43, 0x05, 0x63, 0x05,
- 0x83, 0x01, 0xA3, 0x01, 0xE3, 0x01, 0xE4, 0x01, 0xC3, 0x01, 0xA3, 0x01, 0x63, 0x01, 0x42, 0x01,
- 0x02, 0x01, 0xE2, 0x00, 0xA1, 0x00, 0x61, 0x00, 0x41, 0x04, 0x41, 0x04, 0x61, 0x04, 0x82, 0x04,
- 0xE3, 0x04, 0x24, 0x09, 0x85, 0x0D, 0xC6, 0x0D, 0xC6, 0x11, 0xC5, 0x0D, 0xA5, 0x0D, 0x64, 0x09,
- 0x23, 0x09, 0x03, 0x05, 0x23, 0x05, 0x63, 0x05, 0xC4, 0x05, 0x65, 0x02, 0xC6, 0x02, 0x47, 0x03,
- 0x87, 0x03, 0xA7, 0x03, 0x87, 0x03, 0xA6, 0x03, 0xC5, 0x03, 0xC5, 0x03, 0xEB, 0x0F, 0xF4, 0x3F,
- 0xFC, 0x6B, 0x35, 0x00, 0x4B, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xEC, 0x1B, 0xE6, 0x03, 0xE6, 0x03,
- 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xC7, 0x03, 0x87, 0x03, 0x06, 0x03,
- 0x45, 0x02, 0xA4, 0x01, 0x02, 0x05, 0x82, 0x04, 0x81, 0x04, 0x81, 0x00, 0x82, 0x04, 0xA2, 0x04,
- 0xC3, 0x08, 0x04, 0x09, 0x44, 0x09, 0x65, 0x0D, 0x85, 0x0D, 0x65, 0x09, 0x44, 0x09, 0x44, 0x09,
- 0x44, 0x05, 0x64, 0x05, 0x84, 0x05, 0xA4, 0x05, 0xC3, 0x01, 0x03, 0x02, 0x24, 0x02, 0x44, 0x02,
- 0x64, 0x02, 0x44, 0x02, 0x24, 0x02, 0x04, 0x02, 0xC3, 0x01, 0xA3, 0x01, 0x63, 0x01, 0x02, 0x01,
- 0xA1, 0x00, 0x61, 0x00, 0x41, 0x04, 0x61, 0x04, 0xA2, 0x04, 0xE3, 0x08, 0x44, 0x09, 0x85, 0x0D,
- 0xA6, 0x0D, 0xA6, 0x11, 0xA5, 0x0D, 0x85, 0x0D, 0x44, 0x09, 0x23, 0x05, 0x02, 0x05, 0x23, 0x01,
- 0x63, 0x01, 0xE4, 0x01, 0x65, 0x02, 0xE6, 0x02, 0x67, 0x03, 0xA7, 0x03, 0xA6, 0x03, 0x86, 0x03,
- 0xA7, 0x07, 0xC9, 0x13, 0xEB, 0x1B, 0xF1, 0x2F, 0xF7, 0x4F, 0xFD, 0x73, 0x35, 0x00, 0x4B, 0x00,
- 0xFD, 0x73, 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE9, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0x87, 0x03, 0x26, 0x03, 0xA5, 0x02, 0xE4, 0x01, 0x42, 0x01, 0xC2, 0x00,
- 0x61, 0x00, 0x82, 0x04, 0xC2, 0x04, 0xC3, 0x04, 0xC3, 0x04, 0xC3, 0x08, 0x03, 0x09, 0x44, 0x09,
- 0x64, 0x09, 0x85, 0x09, 0x44, 0x09, 0x24, 0x09, 0x23, 0x09, 0x64, 0x05, 0xA4, 0x05, 0x04, 0x02,
- 0x44, 0x02, 0x64, 0x02, 0x84, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02,
- 0xA5, 0x02, 0x65, 0x02, 0x45, 0x02, 0x04, 0x02, 0x83, 0x01, 0xE2, 0x00, 0x81, 0x00, 0x41, 0x00,
- 0x81, 0x04, 0xE2, 0x08, 0x24, 0x09, 0x65, 0x0D, 0x86, 0x0D, 0xA6, 0x11, 0xA6, 0x11, 0x85, 0x0D,
- 0x65, 0x0D, 0x24, 0x09, 0x03, 0x05, 0x02, 0x05, 0x23, 0x01, 0x63, 0x01, 0xC4, 0x01, 0x45, 0x02,
- 0xC6, 0x02, 0x46, 0x03, 0x86, 0x03, 0x85, 0x03, 0x86, 0x03, 0xA9, 0x0F, 0xCE, 0x2B, 0xF3, 0x43,
- 0xF7, 0x53, 0xFB, 0x67, 0xFE, 0x77, 0x35, 0x00, 0x4A, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xED, 0x1B,
- 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xC8, 0x03, 0x67, 0x03,
- 0xE6, 0x02, 0x24, 0x02, 0x63, 0x01, 0xE1, 0x00, 0x81, 0x00, 0x81, 0x00, 0xC3, 0x04, 0x04, 0x05,
- 0x04, 0x09, 0x04, 0x09, 0x03, 0x05, 0x03, 0x09, 0x43, 0x09, 0x64, 0x09, 0x64, 0x09, 0x24, 0x09,
- 0x03, 0x09, 0x24, 0x05, 0x84, 0x05, 0x04, 0x02, 0x85, 0x02, 0xC5, 0x02, 0x05, 0x03, 0x26, 0x03,
- 0x46, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x27, 0x03, 0x07, 0x03, 0xE7, 0x02,
- 0xA6, 0x02, 0x04, 0x02, 0x43, 0x01, 0xA1, 0x00, 0x61, 0x00, 0xA2, 0x04, 0x03, 0x09, 0x44, 0x0D,
- 0x65, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x66, 0x0D, 0x45, 0x0D, 0x24, 0x09, 0x24, 0x09, 0x03, 0x05,
- 0x23, 0x05, 0x43, 0x01, 0x63, 0x01, 0xC4, 0x01, 0x45, 0x02, 0xC5, 0x02, 0x46, 0x03, 0x86, 0x03,
- 0x84, 0x03, 0x85, 0x03, 0xAB, 0x17, 0xD3, 0x3F, 0xFB, 0x67, 0xFE, 0x77, 0xFE, 0x7B, 0x36, 0x00,
- 0x48, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xC8, 0x03, 0x26, 0x03, 0x85, 0x02, 0xC3, 0x01, 0x02, 0x01, 0xA1, 0x00,
- 0x61, 0x00, 0x62, 0x04, 0xC3, 0x04, 0x25, 0x09, 0x45, 0x09, 0x44, 0x09, 0x24, 0x09, 0x23, 0x09,
- 0x23, 0x09, 0x43, 0x09, 0x43, 0x05, 0x43, 0x05, 0x43, 0x05, 0x84, 0x05, 0x04, 0x02, 0x65, 0x02,
- 0x05, 0x03, 0x46, 0x03, 0x66, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0x88, 0x03, 0xA8, 0x03,
- 0xA8, 0x03, 0x88, 0x03, 0x87, 0x03, 0x67, 0x03, 0x27, 0x03, 0x65, 0x02, 0xA3, 0x01, 0xE2, 0x00,
- 0x81, 0x00, 0xA2, 0x04, 0x03, 0x09, 0x24, 0x09, 0x44, 0x0D, 0x44, 0x0D, 0x24, 0x0D, 0x24, 0x0D,
- 0x04, 0x09, 0x04, 0x09, 0xE3, 0x08, 0x03, 0x05, 0x23, 0x05, 0x63, 0x01, 0xA4, 0x01, 0x05, 0x02,
- 0x85, 0x02, 0xE6, 0x02, 0x46, 0x03, 0x85, 0x03, 0x83, 0x03, 0x84, 0x03, 0xAC, 0x1B, 0xD5, 0x4B,
- 0xFF, 0x7B, 0x38, 0x00, 0x48, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xA7, 0x03, 0x06, 0x03, 0x45, 0x02, 0x83, 0x01,
- 0xE2, 0x00, 0x81, 0x00, 0x61, 0x04, 0x82, 0x04, 0xE4, 0x08, 0x45, 0x09, 0x66, 0x09, 0x65, 0x09,
- 0x45, 0x09, 0x24, 0x09, 0x23, 0x09, 0x03, 0x05, 0x23, 0x05, 0x43, 0x05, 0x83, 0x05, 0xE4, 0x01,
- 0x65, 0x02, 0xC6, 0x02, 0x26, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA7, 0x03, 0xA7, 0x03,
- 0xA7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x87, 0x03, 0x47, 0x03, 0xA5, 0x02,
- 0xC4, 0x01, 0x22, 0x01, 0xA2, 0x00, 0xA2, 0x04, 0xC2, 0x04, 0xC2, 0x08, 0xC3, 0x08, 0xC3, 0x08,
- 0xC3, 0x08, 0xC3, 0x08, 0xA3, 0x08, 0xC3, 0x08, 0xC2, 0x04, 0xE2, 0x04, 0x22, 0x01, 0x83, 0x01,
- 0xE4, 0x01, 0x45, 0x02, 0xC6, 0x02, 0x06, 0x03, 0x47, 0x03, 0x85, 0x03, 0x82, 0x03, 0x63, 0x03,
- 0x8A, 0x13, 0xD5, 0x47, 0xFE, 0x7B, 0x38, 0x00, 0x48, 0x00, 0xFD, 0x73, 0xF5, 0x47, 0xED, 0x1B,
- 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0x87, 0x03, 0xC5, 0x02,
- 0x24, 0x02, 0x63, 0x01, 0xC2, 0x00, 0x82, 0x00, 0x62, 0x04, 0x83, 0x08, 0xE4, 0x08, 0x45, 0x09,
- 0x66, 0x09, 0x86, 0x0D, 0x65, 0x0D, 0x44, 0x0D, 0x03, 0x09, 0x03, 0x05, 0x22, 0x01, 0x63, 0x01,
- 0xE4, 0x01, 0x65, 0x02, 0xC6, 0x02, 0x06, 0x03, 0x47, 0x03, 0x68, 0x03, 0x68, 0x03, 0x87, 0x03,
- 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03,
- 0x67, 0x03, 0xC5, 0x02, 0x24, 0x02, 0x63, 0x01, 0xC2, 0x00, 0xA2, 0x00, 0xA2, 0x00, 0x81, 0x04,
- 0x81, 0x04, 0x81, 0x04, 0x81, 0x04, 0x81, 0x04, 0x82, 0x04, 0xA2, 0x04, 0xC2, 0x04, 0x02, 0x01,
- 0x63, 0x01, 0xC3, 0x01, 0x24, 0x02, 0xA6, 0x02, 0x07, 0x03, 0x47, 0x03, 0x67, 0x03, 0x86, 0x03,
- 0x63, 0x03, 0x64, 0x03, 0x8B, 0x13, 0xD4, 0x43, 0xFD, 0x73, 0x38, 0x00, 0x48, 0x00, 0xFD, 0x73,
- 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC7, 0x03,
- 0x46, 0x03, 0x85, 0x02, 0xC4, 0x01, 0x03, 0x01, 0xA2, 0x00, 0x82, 0x04, 0x82, 0x04, 0xC3, 0x08,
- 0x04, 0x09, 0x65, 0x09, 0x86, 0x0D, 0x86, 0x0D, 0x65, 0x0D, 0x45, 0x0D, 0x03, 0x09, 0xE2, 0x04,
- 0x22, 0x01, 0xA3, 0x01, 0x44, 0x02, 0xC5, 0x02, 0x26, 0x03, 0x47, 0x03, 0x88, 0x03, 0x88, 0x03,
- 0x68, 0x03, 0x67, 0x03, 0x67, 0x03, 0x67, 0x03, 0x66, 0x03, 0x66, 0x03, 0x66, 0x03, 0x66, 0x03,
- 0x66, 0x03, 0x87, 0x03, 0x66, 0x03, 0x06, 0x03, 0x85, 0x02, 0xE4, 0x01, 0x63, 0x01, 0x23, 0x01,
- 0xE2, 0x00, 0xA1, 0x00, 0x61, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x04, 0xA2, 0x04,
- 0x02, 0x01, 0x42, 0x01, 0xC3, 0x01, 0x44, 0x02, 0x85, 0x02, 0xE6, 0x02, 0x47, 0x03, 0x67, 0x03,
- 0x67, 0x03, 0x88, 0x07, 0x88, 0x0B, 0x8A, 0x13, 0xAF, 0x2B, 0xD6, 0x4F, 0xFD, 0x73, 0x38, 0x00,
- 0x48, 0x00, 0xFF, 0x7B, 0xF6, 0x4F, 0xEE, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC8, 0x03, 0xA8, 0x03, 0x26, 0x03, 0x65, 0x02, 0xA3, 0x01, 0xE2, 0x00, 0x81, 0x00, 0x82, 0x00,
- 0xA2, 0x04, 0xC3, 0x08, 0x24, 0x09, 0x65, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x65, 0x0D, 0x44, 0x0D,
- 0x23, 0x09, 0x02, 0x05, 0x62, 0x05, 0xE3, 0x01, 0x85, 0x02, 0x26, 0x03, 0x67, 0x03, 0x87, 0x03,
- 0x87, 0x03, 0x88, 0x03, 0x68, 0x03, 0x47, 0x03, 0x47, 0x03, 0x46, 0x03, 0x46, 0x03, 0x46, 0x03,
- 0x46, 0x03, 0x46, 0x03, 0x46, 0x03, 0x86, 0x03, 0x87, 0x03, 0x46, 0x03, 0x06, 0x03, 0x85, 0x02,
- 0x24, 0x02, 0xC4, 0x01, 0x63, 0x01, 0x02, 0x01, 0xA1, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00,
- 0x81, 0x00, 0xE2, 0x00, 0x43, 0x01, 0xA3, 0x01, 0x25, 0x02, 0xA5, 0x02, 0xE6, 0x02, 0x27, 0x03,
- 0x47, 0x03, 0x66, 0x03, 0x67, 0x03, 0x8A, 0x0F, 0xAD, 0x27, 0xB2, 0x3B, 0xD6, 0x4F, 0xFA, 0x63,
- 0xFE, 0x7B, 0x38, 0x00, 0x47, 0x00, 0xFF, 0x7B, 0xF6, 0x4F, 0xEE, 0x1B, 0xE7, 0x03, 0xE6, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0x88, 0x03, 0x06, 0x03, 0x24, 0x02, 0x63, 0x01, 0xC1, 0x00,
- 0x61, 0x00, 0x81, 0x00, 0xC2, 0x04, 0xE3, 0x08, 0x24, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x65, 0x0D,
- 0x44, 0x0D, 0x44, 0x09, 0x23, 0x09, 0x22, 0x05, 0x83, 0x05, 0x24, 0x02, 0xC5, 0x02, 0x46, 0x03,
- 0x66, 0x03, 0x87, 0x03, 0x67, 0x03, 0x67, 0x03, 0x47, 0x03, 0x27, 0x03, 0x06, 0x03, 0x06, 0x03,
- 0x05, 0x03, 0xE5, 0x02, 0xE5, 0x02, 0x06, 0x03, 0x26, 0x03, 0x46, 0x03, 0x66, 0x03, 0x66, 0x03,
- 0x46, 0x03, 0x06, 0x03, 0xA5, 0x02, 0x64, 0x02, 0x04, 0x02, 0x83, 0x01, 0xE2, 0x00, 0xA2, 0x00,
- 0x62, 0x00, 0x81, 0x00, 0xC2, 0x00, 0x42, 0x01, 0xC4, 0x01, 0x25, 0x02, 0xA6, 0x02, 0x07, 0x03,
- 0x27, 0x03, 0x47, 0x03, 0x66, 0x03, 0x65, 0x03, 0x67, 0x03, 0xAC, 0x1B, 0xD3, 0x3F, 0xFA, 0x63,
- 0xFC, 0x6F, 0xFE, 0x77, 0x37, 0x00, 0x46, 0x00, 0xFE, 0x7B, 0xFD, 0x73, 0xFA, 0x63, 0xF3, 0x3F,
- 0xEC, 0x17, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0x88, 0x03, 0x47, 0x03, 0xA6, 0x02,
- 0xE4, 0x01, 0x22, 0x01, 0x81, 0x00, 0x61, 0x00, 0x82, 0x00, 0xE3, 0x04, 0x23, 0x09, 0x44, 0x0D,
- 0x64, 0x0D, 0x65, 0x11, 0x44, 0x0D, 0x44, 0x0D, 0x23, 0x09, 0x23, 0x09, 0x22, 0x05, 0x83, 0x05,
- 0x04, 0x02, 0x85, 0x02, 0x06, 0x03, 0x26, 0x03, 0x26, 0x03, 0x06, 0x03, 0xE6, 0x02, 0xC6, 0x02,
- 0xA6, 0x02, 0x85, 0x02, 0x85, 0x02, 0x65, 0x02, 0x64, 0x02, 0x65, 0x02, 0x85, 0x02, 0xA5, 0x02,
- 0xC5, 0x02, 0xE5, 0x02, 0x06, 0x03, 0x26, 0x03, 0x26, 0x03, 0x06, 0x03, 0xC5, 0x02, 0x85, 0x02,
- 0x04, 0x02, 0x83, 0x01, 0x23, 0x01, 0xE2, 0x00, 0xE2, 0x00, 0x43, 0x01, 0xC3, 0x01, 0x24, 0x02,
- 0xA6, 0x02, 0x07, 0x03, 0x47, 0x03, 0x67, 0x03, 0x67, 0x03, 0x66, 0x03, 0x64, 0x03, 0x86, 0x03,
- 0xAD, 0x1F, 0xD7, 0x53, 0x39, 0x00, 0x47, 0x00, 0xFE, 0x77, 0xFA, 0x63, 0xF6, 0x4F, 0xF2, 0x3F,
- 0xEE, 0x27, 0xEA, 0x0F, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0x67, 0x03, 0x06, 0x03,
- 0x65, 0x02, 0xA3, 0x01, 0xE2, 0x00, 0x61, 0x00, 0x61, 0x04, 0xA2, 0x04, 0xE3, 0x08, 0x24, 0x09,
- 0x64, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x44, 0x0D, 0x24, 0x0D, 0x03, 0x09, 0x02, 0x05, 0x22, 0x05,
- 0x62, 0x01, 0xC3, 0x01, 0x24, 0x02, 0x85, 0x02, 0x85, 0x02, 0x84, 0x02, 0x64, 0x02, 0x44, 0x02,
- 0x24, 0x02, 0x04, 0x02, 0xE4, 0x01, 0xE4, 0x01, 0xE4, 0x01, 0xE4, 0x01, 0xE4, 0x01, 0x04, 0x02,
- 0x04, 0x02, 0x24, 0x02, 0x44, 0x02, 0x65, 0x02, 0xA5, 0x02, 0xC5, 0x02, 0xE6, 0x02, 0x06, 0x03,
- 0xE5, 0x02, 0xA5, 0x02, 0x24, 0x02, 0xA4, 0x01, 0x83, 0x01, 0x83, 0x01, 0xC4, 0x01, 0x24, 0x02,
- 0x85, 0x02, 0xE6, 0x02, 0x27, 0x03, 0x67, 0x03, 0x68, 0x03, 0x88, 0x03, 0x86, 0x03, 0x63, 0x03,
- 0x84, 0x03, 0xAC, 0x1B, 0xD6, 0x4F, 0x39, 0x00, 0x48, 0x00, 0xFC, 0x6F, 0xF6, 0x4F, 0xEF, 0x2B,
- 0xEA, 0x17, 0xE8, 0x0F, 0xE8, 0x07, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0x47, 0x03,
- 0xC6, 0x02, 0x24, 0x02, 0x63, 0x01, 0xC2, 0x00, 0x61, 0x04, 0x62, 0x04, 0xA3, 0x08, 0x04, 0x09,
- 0x44, 0x0D, 0x65, 0x0D, 0x85, 0x0D, 0x65, 0x0D, 0x44, 0x0D, 0x04, 0x09, 0xE3, 0x08, 0xE3, 0x04,
- 0x02, 0x01, 0x22, 0x01, 0x62, 0x01, 0xA3, 0x01, 0xE3, 0x01, 0xE3, 0x01, 0xE3, 0x01, 0xC3, 0x05,
- 0xA3, 0x01, 0x83, 0x01, 0x63, 0x01, 0x63, 0x01, 0x63, 0x01, 0x63, 0x01, 0x63, 0x01, 0x84, 0x01,
- 0x84, 0x01, 0x84, 0x01, 0x83, 0x01, 0x83, 0x01, 0xC3, 0x01, 0xE4, 0x01, 0x45, 0x06, 0x85, 0x02,
- 0xE6, 0x02, 0x06, 0x03, 0xE6, 0x02, 0xA5, 0x02, 0x44, 0x02, 0x24, 0x02, 0x24, 0x02, 0x45, 0x02,
- 0x85, 0x02, 0xC6, 0x02, 0x06, 0x03, 0x46, 0x03, 0x67, 0x03, 0x67, 0x03, 0x88, 0x03, 0x85, 0x03,
- 0x83, 0x03, 0x83, 0x03, 0xAB, 0x17, 0xD5, 0x4B, 0xFE, 0x77, 0x38, 0x00, 0x48, 0x00, 0xFB, 0x6B,
- 0xF3, 0x3F, 0xEA, 0x0F, 0xE4, 0x03, 0xE4, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03,
- 0xA8, 0x03, 0x26, 0x03, 0x85, 0x02, 0xC3, 0x01, 0x22, 0x01, 0xA1, 0x00, 0x61, 0x04, 0x62, 0x04,
- 0xA3, 0x08, 0x04, 0x09, 0x45, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x45, 0x0D, 0x04, 0x0D,
- 0xE4, 0x08, 0xE3, 0x04, 0x03, 0x05, 0x02, 0x01, 0x22, 0x01, 0x43, 0x01, 0x63, 0x01, 0x63, 0x05,
- 0x63, 0x05, 0x42, 0x05, 0x42, 0x05, 0x22, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x23, 0x05,
- 0x23, 0x05, 0x23, 0x05, 0x44, 0x05, 0x44, 0x05, 0x23, 0x01, 0x23, 0x01, 0x43, 0x01, 0x83, 0x05,
- 0xC4, 0x05, 0x25, 0x06, 0x85, 0x02, 0xC5, 0x02, 0x06, 0x03, 0xE5, 0x02, 0xC5, 0x02, 0xA5, 0x02,
- 0xC6, 0x02, 0xC6, 0x02, 0xE6, 0x02, 0x06, 0x03, 0x26, 0x03, 0x46, 0x03, 0x66, 0x03, 0x87, 0x03,
- 0x87, 0x03, 0x87, 0x03, 0x86, 0x07, 0x88, 0x0B, 0xAE, 0x27, 0xD6, 0x4F, 0xFD, 0x77, 0x38, 0x00,
- 0x48, 0x00, 0xFB, 0x6B, 0xF2, 0x3B, 0xE9, 0x0B, 0xE4, 0x03, 0xE4, 0x03, 0xE7, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xA7, 0x03, 0x06, 0x03, 0x64, 0x02, 0xA3, 0x01, 0x02, 0x01, 0x81, 0x00,
- 0x41, 0x04, 0x41, 0x04, 0x82, 0x04, 0xE3, 0x08, 0x24, 0x09, 0x45, 0x0D, 0x65, 0x0D, 0x65, 0x0D,
- 0x45, 0x0D, 0x25, 0x0D, 0x24, 0x09, 0x04, 0x09, 0x24, 0x05, 0x23, 0x05, 0x23, 0x05, 0x43, 0x05,
- 0x43, 0x05, 0x43, 0x05, 0x43, 0x09, 0x43, 0x09, 0x43, 0x09, 0x43, 0x05, 0x43, 0x05, 0x43, 0x05,
- 0x23, 0x05, 0x23, 0x05, 0x23, 0x05, 0x44, 0x05, 0x44, 0x05, 0x44, 0x05, 0x44, 0x05, 0x23, 0x05,
- 0x43, 0x05, 0x43, 0x05, 0x84, 0x05, 0xC4, 0x05, 0x04, 0x06, 0x44, 0x02, 0xA5, 0x02, 0xC5, 0x02,
- 0xE5, 0x02, 0x06, 0x03, 0x06, 0x03, 0x27, 0x03, 0x27, 0x03, 0x47, 0x03, 0x66, 0x03, 0x66, 0x03,
- 0x66, 0x03, 0x66, 0x03, 0x87, 0x03, 0x89, 0x0F, 0xAC, 0x23, 0xD0, 0x33, 0xD4, 0x47, 0xF9, 0x63,
- 0xFE, 0x7B, 0x38, 0x00, 0x47, 0x00, 0xFC, 0x6B, 0xF3, 0x3F, 0xEB, 0x13, 0xE6, 0x03, 0xE5, 0x03,
- 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0x87, 0x03, 0x06, 0x03, 0x44, 0x02, 0x83, 0x01,
- 0xE1, 0x00, 0x81, 0x00, 0x61, 0x00, 0x41, 0x00, 0x81, 0x04, 0xC2, 0x04, 0x03, 0x09, 0x24, 0x0D,
- 0x45, 0x0D, 0x66, 0x11, 0x65, 0x11, 0x45, 0x0D, 0x45, 0x0D, 0x45, 0x09, 0x45, 0x09, 0x44, 0x05,
- 0x44, 0x05, 0x44, 0x09, 0x63, 0x09, 0x63, 0x09, 0x63, 0x09, 0x84, 0x09, 0x84, 0x09, 0x85, 0x09,
- 0x85, 0x09, 0x85, 0x05, 0x84, 0x09, 0x64, 0x05, 0x64, 0x05, 0x64, 0x05, 0x84, 0x05, 0x84, 0x05,
- 0x85, 0x05, 0x85, 0x05, 0x64, 0x05, 0x64, 0x05, 0x63, 0x05, 0x63, 0x05, 0x83, 0x05, 0xA3, 0x05,
- 0x04, 0x06, 0x65, 0x02, 0xC6, 0x02, 0x06, 0x03, 0x27, 0x03, 0x47, 0x03, 0x47, 0x03, 0x67, 0x03,
- 0x67, 0x03, 0x86, 0x03, 0x85, 0x03, 0x64, 0x03, 0x86, 0x03, 0x8C, 0x1B, 0xB2, 0x3F, 0xF8, 0x5F,
- 0xFB, 0x6B, 0xFD, 0x73, 0x39, 0x00, 0x44, 0x00, 0xFC, 0x6B, 0xF4, 0x43, 0xEC, 0x13, 0xE7, 0x03,
- 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0x87, 0x03, 0x05, 0x03, 0x64, 0x02,
- 0x83, 0x01, 0x02, 0x01, 0xA1, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0xA2, 0x04, 0xE3, 0x08,
- 0x04, 0x09, 0x45, 0x0D, 0x66, 0x11, 0x66, 0x11, 0x65, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x65, 0x09,
- 0x65, 0x09, 0x44, 0x09, 0x44, 0x09, 0x43, 0x09, 0x63, 0x09, 0x64, 0x09, 0x64, 0x09, 0x84, 0x09,
- 0x85, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09,
- 0xA5, 0x09, 0xA5, 0x09, 0xA6, 0x09, 0x85, 0x09, 0x64, 0x05, 0x44, 0x05, 0x43, 0x05, 0x22, 0x05,
- 0x42, 0x05, 0x83, 0x05, 0x04, 0x02, 0x65, 0x02, 0xE6, 0x02, 0x27, 0x03, 0x47, 0x03, 0x67, 0x03,
- 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0x85, 0x03, 0x84, 0x03, 0x86, 0x03, 0xAE, 0x27, 0xD7, 0x57,
- 0x3C, 0x00, 0x44, 0x00, 0xFC, 0x6B, 0xF3, 0x3B, 0xEB, 0x0F, 0xE5, 0x03, 0xE5, 0x03, 0xE8, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xA7, 0x03, 0x26, 0x03, 0x84, 0x02, 0xC3, 0x01, 0x22, 0x01,
- 0xA1, 0x00, 0x61, 0x00, 0x41, 0x04, 0x82, 0x04, 0xC2, 0x04, 0xE3, 0x08, 0x24, 0x09, 0x45, 0x0D,
- 0x65, 0x0D, 0x66, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x85, 0x0D, 0x65, 0x09, 0x65, 0x09, 0x44, 0x09,
- 0x44, 0x09, 0x23, 0x09, 0x23, 0x09, 0x23, 0x09, 0x24, 0x09, 0x24, 0x09, 0x44, 0x09, 0x65, 0x09,
- 0x85, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09,
- 0xA6, 0x09, 0xA5, 0x09, 0x85, 0x09, 0x64, 0x09, 0x44, 0x09, 0x23, 0x09, 0x23, 0x09, 0x63, 0x05,
- 0xA3, 0x01, 0x04, 0x02, 0x85, 0x02, 0xE6, 0x02, 0x27, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03,
- 0x87, 0x03, 0x85, 0x03, 0x84, 0x03, 0x87, 0x03, 0xAF, 0x27, 0xF8, 0x5B, 0x3C, 0x00, 0x44, 0x00,
- 0xFB, 0x6B, 0xF3, 0x3B, 0xEA, 0x0B, 0xE4, 0x03, 0xE5, 0x03, 0xE7, 0x03, 0xE9, 0x03, 0xE9, 0x03,
- 0xE9, 0x03, 0xC8, 0x03, 0x46, 0x03, 0xC5, 0x02, 0x03, 0x02, 0x42, 0x01, 0xC2, 0x00, 0x61, 0x04,
- 0x62, 0x04, 0x82, 0x08, 0xC3, 0x08, 0x04, 0x09, 0x24, 0x09, 0x44, 0x09, 0x65, 0x0D, 0x85, 0x0D,
- 0x86, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x65, 0x09, 0x64, 0x09, 0x44, 0x09, 0x23, 0x09, 0x03, 0x09,
- 0xE3, 0x08, 0xE3, 0x08, 0xE3, 0x08, 0xE3, 0x08, 0xE3, 0x04, 0x03, 0x05, 0x44, 0x05, 0x85, 0x09,
- 0xA6, 0x0D, 0xC6, 0x0D, 0xA6, 0x0D, 0x85, 0x0D, 0xA5, 0x0D, 0xA5, 0x09, 0xA5, 0x09, 0xA5, 0x09,
- 0xA5, 0x0D, 0xA5, 0x0D, 0x85, 0x0D, 0x64, 0x09, 0x43, 0x09, 0x63, 0x05, 0x83, 0x01, 0xA3, 0x01,
- 0x24, 0x02, 0x85, 0x02, 0x06, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA5, 0x03,
- 0xA4, 0x03, 0xA7, 0x03, 0xCF, 0x27, 0xF8, 0x57, 0x3C, 0x00, 0x45, 0x00, 0xFC, 0x6F, 0xF4, 0x43,
- 0xEC, 0x17, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xC8, 0x03,
- 0x67, 0x03, 0x06, 0x03, 0x64, 0x02, 0xA3, 0x01, 0x22, 0x01, 0xA2, 0x04, 0x82, 0x04, 0xA3, 0x08,
- 0xE3, 0x08, 0x04, 0x09, 0x24, 0x09, 0x44, 0x09, 0x64, 0x09, 0x65, 0x09, 0x65, 0x0D, 0x65, 0x0D,
- 0x65, 0x09, 0x64, 0x09, 0x43, 0x05, 0x43, 0x05, 0x23, 0x05, 0x03, 0x05, 0xE3, 0x04, 0xA3, 0x04,
- 0xA2, 0x04, 0x82, 0x04, 0x82, 0x04, 0xC2, 0x04, 0x03, 0x05, 0x45, 0x09, 0xA6, 0x0D, 0xC6, 0x0D,
- 0xA6, 0x0D, 0x86, 0x0D, 0xA6, 0x0D, 0xA5, 0x0D, 0xA5, 0x0D, 0xC5, 0x0D, 0xC6, 0x0D, 0xC6, 0x0D,
- 0xA6, 0x0D, 0x85, 0x09, 0x64, 0x09, 0x63, 0x05, 0x43, 0x01, 0x63, 0x01, 0xA3, 0x01, 0x24, 0x02,
- 0xC6, 0x02, 0x47, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA7, 0x03, 0xA6, 0x03, 0xA5, 0x03, 0xC7, 0x03,
- 0xCE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x3B, 0x00, 0x45, 0x00, 0xFD, 0x73, 0xF8, 0x57, 0xF2, 0x37,
- 0xEE, 0x27, 0xEB, 0x17, 0xEA, 0x0B, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xA7, 0x03,
- 0x47, 0x03, 0xC6, 0x02, 0x24, 0x02, 0xA3, 0x01, 0x23, 0x01, 0xC2, 0x04, 0xC3, 0x04, 0xE3, 0x04,
- 0xE3, 0x08, 0xE3, 0x08, 0x03, 0x09, 0x23, 0x09, 0x23, 0x09, 0x24, 0x09, 0x44, 0x09, 0x44, 0x09,
- 0x44, 0x05, 0x43, 0x05, 0x43, 0x05, 0x23, 0x01, 0x02, 0x01, 0xC2, 0x00, 0x82, 0x04, 0x61, 0x04,
- 0x41, 0x04, 0x41, 0x04, 0x81, 0x04, 0xC2, 0x04, 0x24, 0x09, 0x65, 0x09, 0x86, 0x0D, 0xA6, 0x0D,
- 0xA6, 0x11, 0xA6, 0x11, 0xA6, 0x11, 0xC6, 0x0D, 0xC6, 0x0D, 0xC6, 0x11, 0xC6, 0x11, 0xA6, 0x0D,
- 0xA6, 0x09, 0x85, 0x09, 0x64, 0x05, 0x23, 0x05, 0x22, 0x05, 0x63, 0x01, 0xE4, 0x01, 0x85, 0x02,
- 0x06, 0x03, 0x67, 0x03, 0x87, 0x03, 0xA7, 0x03, 0xC6, 0x03, 0xC5, 0x03, 0xC7, 0x03, 0xEE, 0x23,
- 0xF7, 0x53, 0xFE, 0x7B, 0x3B, 0x00, 0x45, 0x00, 0xFE, 0x7B, 0xFC, 0x6B, 0xF9, 0x5F, 0xF6, 0x4F,
- 0xF0, 0x2F, 0xEB, 0x13, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xC7, 0x03, 0x87, 0x03,
- 0x27, 0x03, 0xA5, 0x02, 0x24, 0x02, 0x83, 0x01, 0x22, 0x01, 0xE2, 0x00, 0xC2, 0x04, 0xA2, 0x04,
- 0xA2, 0x04, 0xC2, 0x04, 0xE2, 0x04, 0xE2, 0x04, 0xE2, 0x04, 0x03, 0x05, 0x03, 0x05, 0x03, 0x01,
- 0x23, 0x01, 0x23, 0x01, 0x43, 0x01, 0x22, 0x01, 0xC2, 0x00, 0x81, 0x00, 0x41, 0x00, 0x20, 0x00,
- 0x40, 0x04, 0x61, 0x04, 0xA2, 0x04, 0xE3, 0x04, 0x24, 0x09, 0x65, 0x0D, 0x85, 0x0D, 0xA6, 0x11,
- 0xC6, 0x11, 0xC7, 0x11, 0xC7, 0x11, 0xC7, 0x11, 0xC7, 0x11, 0xC7, 0x0D, 0xA6, 0x0D, 0xA6, 0x09,
- 0x85, 0x09, 0x65, 0x05, 0x44, 0x05, 0x23, 0x05, 0x63, 0x05, 0xC3, 0x01, 0x44, 0x02, 0xE5, 0x02,
- 0x46, 0x03, 0x86, 0x03, 0xC7, 0x03, 0xC6, 0x03, 0xC5, 0x03, 0xC7, 0x03, 0xEE, 0x23, 0xF7, 0x53,
- 0xFE, 0x7B, 0x3E, 0x00, 0x42, 0x00, 0xFC, 0x6F, 0xF5, 0x47, 0xED, 0x1B, 0xE7, 0x03, 0xE5, 0x03,
- 0xE7, 0x03, 0xE7, 0x03, 0xC7, 0x03, 0xC8, 0x03, 0x87, 0x03, 0x06, 0x03, 0xA5, 0x02, 0x24, 0x02,
- 0x83, 0x01, 0x43, 0x01, 0xE2, 0x00, 0xC2, 0x00, 0xC2, 0x04, 0xC2, 0x04, 0xE2, 0x04, 0xE2, 0x04,
- 0x02, 0x01, 0x02, 0x01, 0x23, 0x01, 0x23, 0x01, 0x43, 0x01, 0x83, 0x01, 0x83, 0x01, 0x62, 0x01,
- 0x02, 0x01, 0xA1, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x04, 0x41, 0x04, 0x81, 0x04, 0xA2, 0x04,
- 0x03, 0x09, 0x44, 0x09, 0x85, 0x0D, 0xC6, 0x11, 0xC7, 0x15, 0xC7, 0x15, 0xC7, 0x15, 0xC7, 0x11,
- 0xC7, 0x11, 0xA7, 0x0D, 0xA6, 0x09, 0xA6, 0x09, 0x86, 0x09, 0x65, 0x09, 0x44, 0x09, 0x23, 0x09,
- 0x43, 0x05, 0xA3, 0x05, 0x24, 0x02, 0xA5, 0x02, 0x26, 0x03, 0x86, 0x03, 0xC7, 0x03, 0xE6, 0x03,
- 0xE4, 0x03, 0xC7, 0x03, 0xEE, 0x23, 0xF6, 0x53, 0xFE, 0x7B, 0x3F, 0x00, 0x41, 0x00, 0xF6, 0x4F,
- 0xED, 0x1F, 0xE6, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xA8, 0x03,
- 0x67, 0x03, 0x06, 0x03, 0xA5, 0x02, 0x24, 0x02, 0xC4, 0x01, 0x63, 0x01, 0x23, 0x01, 0x22, 0x01,
- 0x42, 0x05, 0x42, 0x05, 0x62, 0x01, 0x63, 0x01, 0x83, 0x01, 0xA4, 0x01, 0xC4, 0x01, 0xE4, 0x01,
- 0x04, 0x02, 0x24, 0x02, 0x03, 0x02, 0xA3, 0x01, 0x22, 0x01, 0xC1, 0x00, 0x60, 0x00, 0x40, 0x00,
- 0x20, 0x04, 0x61, 0x04, 0xA2, 0x04, 0x03, 0x09, 0x44, 0x0D, 0x85, 0x11, 0xC6, 0x11, 0xC7, 0x15,
- 0xC7, 0x15, 0xA7, 0x11, 0xA7, 0x11, 0xA7, 0x11, 0xA7, 0x0D, 0xA6, 0x0D, 0x86, 0x09, 0x65, 0x09,
- 0x44, 0x05, 0x24, 0x05, 0x03, 0x09, 0x43, 0x05, 0x83, 0x05, 0xE4, 0x01, 0x85, 0x02, 0x06, 0x03,
- 0x66, 0x03, 0xC7, 0x03, 0xE6, 0x03, 0xE5, 0x03, 0xC7, 0x03, 0xEE, 0x23, 0xF7, 0x53, 0xFE, 0x7B,
- 0x3E, 0x00, 0x42, 0x00, 0xFE, 0x7B, 0xF6, 0x4B, 0xED, 0x1B, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xC7, 0x03, 0xA7, 0x03, 0x67, 0x03, 0x46, 0x03, 0x06, 0x03, 0xA5, 0x02,
- 0x45, 0x02, 0x05, 0x02, 0xE4, 0x01, 0xC4, 0x01, 0xC3, 0x01, 0xE3, 0x01, 0x04, 0x02, 0x24, 0x02,
- 0x45, 0x02, 0x45, 0x02, 0x65, 0x02, 0x85, 0x02, 0xA5, 0x02, 0xC5, 0x02, 0x84, 0x02, 0x44, 0x02,
- 0xE3, 0x01, 0x42, 0x01, 0xC1, 0x00, 0x40, 0x00, 0x20, 0x00, 0x41, 0x04, 0xA2, 0x04, 0x24, 0x09,
- 0x65, 0x0D, 0xA5, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xA6, 0x11, 0xA7, 0x11, 0xA7, 0x11, 0xA7, 0x11,
- 0xC7, 0x11, 0xA6, 0x0D, 0x85, 0x09, 0x44, 0x09, 0x24, 0x05, 0x03, 0x05, 0x03, 0x05, 0x43, 0x05,
- 0x83, 0x01, 0xE4, 0x01, 0x65, 0x02, 0xE6, 0x02, 0x66, 0x03, 0xC7, 0x03, 0xE6, 0x03, 0xE5, 0x03,
- 0xC7, 0x03, 0xEE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x3E, 0x00, 0x42, 0x00, 0xFD, 0x73, 0xF4, 0x47,
- 0xEC, 0x1B, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC7, 0x03, 0xA7, 0x03,
- 0x87, 0x03, 0x67, 0x03, 0x47, 0x03, 0x06, 0x03, 0xE6, 0x02, 0xA6, 0x02, 0x85, 0x02, 0x65, 0x02,
- 0x65, 0x02, 0x85, 0x02, 0xA5, 0x02, 0xC6, 0x02, 0xE6, 0x02, 0x06, 0x03, 0x06, 0x03, 0x26, 0x03,
- 0x46, 0x03, 0x46, 0x03, 0x26, 0x03, 0xC5, 0x02, 0x64, 0x06, 0xC3, 0x05, 0x02, 0x01, 0x60, 0x00,
- 0x20, 0x00, 0x41, 0x04, 0xC3, 0x08, 0x45, 0x0D, 0x86, 0x0D, 0xA6, 0x11, 0xC6, 0x11, 0xC6, 0x11,
- 0xA6, 0x11, 0x86, 0x0D, 0x87, 0x0D, 0xA7, 0x11, 0xC7, 0x11, 0xA6, 0x0D, 0x65, 0x0D, 0x24, 0x09,
- 0x03, 0x05, 0x02, 0x05, 0x03, 0x05, 0x43, 0x01, 0x84, 0x01, 0xC4, 0x01, 0x45, 0x02, 0xE6, 0x02,
- 0x46, 0x03, 0xC7, 0x03, 0xE6, 0x03, 0xE5, 0x03, 0xE8, 0x03, 0xEF, 0x23, 0xF7, 0x53, 0xFE, 0x7B,
- 0x3E, 0x00, 0x42, 0x00, 0xFD, 0x77, 0xF5, 0x4B, 0xEC, 0x1B, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xC8, 0x03, 0xC7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x87, 0x03, 0x87, 0x03, 0x47, 0x03,
- 0x27, 0x03, 0x06, 0x03, 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0x06, 0x03, 0x27, 0x03,
- 0x47, 0x03, 0x67, 0x03, 0x67, 0x03, 0x67, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x67, 0x03, 0x06, 0x03,
- 0x85, 0x02, 0xC3, 0x05, 0x02, 0x01, 0x61, 0x00, 0x20, 0x00, 0x62, 0x04, 0xE3, 0x08, 0x65, 0x0D,
- 0xA6, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xA6, 0x11, 0xA7, 0x0D, 0xA7, 0x0D, 0xA7, 0x11,
- 0xA6, 0x11, 0x86, 0x0D, 0x44, 0x09, 0x03, 0x09, 0xE2, 0x04, 0xE2, 0x04, 0x02, 0x05, 0x43, 0x05,
- 0x83, 0x01, 0xC4, 0x01, 0x45, 0x02, 0xC6, 0x02, 0x46, 0x03, 0xC7, 0x03, 0xE6, 0x03, 0xE5, 0x03,
- 0xE8, 0x03, 0xEF, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x3F, 0x00, 0x41, 0x00, 0xF6, 0x4F, 0xED, 0x1B,
- 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xA7, 0x03,
- 0x88, 0x03, 0x87, 0x03, 0x67, 0x03, 0x47, 0x03, 0x26, 0x03, 0x26, 0x03, 0x06, 0x03, 0x06, 0x03,
- 0x27, 0x03, 0x27, 0x03, 0x47, 0x03, 0x47, 0x03, 0x67, 0x03, 0x67, 0x03, 0x87, 0x03, 0xA8, 0x03,
- 0xA8, 0x03, 0x67, 0x03, 0xE6, 0x02, 0x44, 0x02, 0x83, 0x01, 0xE2, 0x00, 0x61, 0x00, 0x41, 0x00,
- 0x82, 0x04, 0x03, 0x09, 0x85, 0x0D, 0xC6, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xC7, 0x11,
- 0xC7, 0x11, 0xA7, 0x0D, 0xA7, 0x11, 0x86, 0x11, 0x65, 0x0D, 0x24, 0x09, 0x03, 0x05, 0xE2, 0x04,
- 0xE2, 0x04, 0x02, 0x05, 0x43, 0x05, 0x63, 0x05, 0xA3, 0x01, 0x24, 0x02, 0xC5, 0x02, 0x46, 0x03,
- 0xC7, 0x03, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03, 0xEE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x3E, 0x00,
- 0x42, 0x00, 0xFE, 0x77, 0xF6, 0x4B, 0xED, 0x1B, 0xE7, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xA8, 0x03, 0x88, 0x03, 0x87, 0x03, 0x67, 0x03, 0x46, 0x03,
- 0x46, 0x03, 0x26, 0x03, 0x26, 0x03, 0x27, 0x03, 0x27, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03,
- 0x47, 0x03, 0x67, 0x03, 0x67, 0x03, 0x88, 0x03, 0x88, 0x03, 0x27, 0x03, 0x85, 0x02, 0xE3, 0x01,
- 0x22, 0x01, 0xA1, 0x00, 0x61, 0x00, 0x62, 0x04, 0xA3, 0x08, 0x24, 0x09, 0xA5, 0x0D, 0xC5, 0x11,
- 0xC6, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xE7, 0x11, 0xE7, 0x11, 0xC7, 0x11, 0xA7, 0x11, 0x86, 0x11,
- 0x45, 0x0D, 0x24, 0x09, 0x03, 0x05, 0xE2, 0x04, 0xE2, 0x04, 0x02, 0x05, 0x43, 0x05, 0x83, 0x05,
- 0xC3, 0x01, 0x44, 0x02, 0xC5, 0x02, 0x46, 0x03, 0xC7, 0x03, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03,
- 0xEE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x3C, 0x00, 0x44, 0x00, 0xFE, 0x77, 0xFC, 0x6B, 0xF8, 0x5B,
- 0xF2, 0x3B, 0xEC, 0x17, 0xE7, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC8, 0x03, 0xA8, 0x03, 0xA8, 0x03, 0x88, 0x03, 0x67, 0x03, 0x67, 0x03, 0x66, 0x03, 0x46, 0x03,
- 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x67, 0x03, 0x67, 0x03, 0x67, 0x03, 0x67, 0x03, 0x67, 0x03,
- 0x67, 0x03, 0x67, 0x03, 0x67, 0x03, 0xE6, 0x02, 0x44, 0x02, 0x83, 0x01, 0xE2, 0x00, 0xA1, 0x00,
- 0x82, 0x04, 0xA3, 0x04, 0xE3, 0x08, 0x44, 0x0D, 0xA5, 0x11, 0xC5, 0x11, 0xC6, 0x11, 0xC6, 0x11,
- 0xC7, 0x11, 0xE7, 0x11, 0xE7, 0x11, 0xC7, 0x11, 0xA6, 0x11, 0x66, 0x11, 0x45, 0x0D, 0x04, 0x09,
- 0xE3, 0x04, 0xE2, 0x04, 0xE2, 0x04, 0x03, 0x05, 0x43, 0x05, 0x83, 0x05, 0xE4, 0x01, 0x64, 0x02,
- 0xE5, 0x02, 0x46, 0x03, 0xA7, 0x03, 0xE6, 0x03, 0xE5, 0x03, 0xE7, 0x03, 0xEE, 0x23, 0xF7, 0x53,
- 0xFE, 0x7B, 0x3C, 0x00, 0x44, 0x00, 0xFB, 0x63, 0xF5, 0x47, 0xF1, 0x33, 0xED, 0x1F, 0xEA, 0x0B,
- 0xE8, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03,
- 0xA8, 0x03, 0xA8, 0x03, 0x87, 0x03, 0x87, 0x03, 0x67, 0x03, 0x67, 0x03, 0x67, 0x03, 0x67, 0x03,
- 0x67, 0x03, 0x67, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0x67, 0x03, 0x67, 0x03,
- 0x27, 0x03, 0xA5, 0x02, 0x04, 0x02, 0x42, 0x01, 0xC1, 0x00, 0xA1, 0x04, 0xA2, 0x04, 0xE3, 0x04,
- 0x24, 0x09, 0x64, 0x0D, 0xA5, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xC7, 0x11, 0xC7, 0x11,
- 0xC7, 0x11, 0xC7, 0x11, 0xA6, 0x11, 0x66, 0x11, 0x45, 0x0D, 0x24, 0x09, 0xE3, 0x04, 0xE2, 0x04,
- 0xE2, 0x04, 0xE3, 0x04, 0x43, 0x05, 0xA4, 0x05, 0x04, 0x06, 0x85, 0x02, 0x06, 0x03, 0x66, 0x03,
- 0xA7, 0x03, 0xC6, 0x03, 0xC5, 0x03, 0xC7, 0x03, 0xEE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x3B, 0x00,
- 0x45, 0x00, 0xFE, 0x77, 0xF6, 0x4F, 0xEF, 0x23, 0xE9, 0x0F, 0xE8, 0x0B, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xC7, 0x03, 0xC7, 0x03, 0xC8, 0x03,
- 0xC8, 0x03, 0xA8, 0x03, 0xA8, 0x03, 0x87, 0x03, 0x67, 0x03, 0x67, 0x03, 0x66, 0x03, 0x67, 0x03,
- 0x67, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0x87, 0x03, 0x46, 0x03, 0x26, 0x03, 0xE6, 0x02,
- 0x44, 0x02, 0xA3, 0x01, 0x22, 0x05, 0xC1, 0x04, 0xC2, 0x04, 0xE2, 0x04, 0x23, 0x05, 0x64, 0x09,
- 0x85, 0x0D, 0xA5, 0x11, 0xA6, 0x11, 0xA6, 0x15, 0xA7, 0x11, 0xA7, 0x11, 0xC7, 0x11, 0xC6, 0x11,
- 0xA6, 0x11, 0xA6, 0x11, 0x66, 0x11, 0x45, 0x0D, 0x24, 0x09, 0x03, 0x05, 0xE2, 0x04, 0xE2, 0x00,
- 0xE3, 0x00, 0x44, 0x01, 0xA4, 0x05, 0x25, 0x06, 0xA6, 0x06, 0x26, 0x03, 0x66, 0x03, 0xA7, 0x03,
- 0xC6, 0x03, 0xC5, 0x03, 0xC8, 0x03, 0xCF, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x39, 0x00, 0x47, 0x00,
- 0xFE, 0x77, 0xFC, 0x6F, 0xF8, 0x5B, 0xF1, 0x33, 0xEA, 0x07, 0xE5, 0x03, 0xE5, 0x03, 0xE7, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xC8, 0x03, 0xA8, 0x03, 0x87, 0x03, 0x87, 0x03, 0x86, 0x03,
- 0x66, 0x03, 0x87, 0x03, 0x87, 0x03, 0x67, 0x03, 0x47, 0x03, 0x26, 0x03, 0xE5, 0x02, 0xA5, 0x02,
- 0x64, 0x02, 0xE4, 0x01, 0x63, 0x01, 0x02, 0x05, 0xE2, 0x08, 0xE3, 0x08, 0x23, 0x09, 0x64, 0x09,
- 0x85, 0x0D, 0xA5, 0x11, 0xA6, 0x11, 0xA6, 0x11, 0xA7, 0x15, 0xA7, 0x11, 0xA7, 0x11, 0xA6, 0x11,
- 0xA6, 0x11, 0xA6, 0x11, 0x85, 0x11, 0x65, 0x0D, 0x45, 0x0D, 0x24, 0x09, 0x03, 0x05, 0x03, 0x05,
- 0xE3, 0x04, 0x03, 0x01, 0x44, 0x01, 0xC4, 0x01, 0x45, 0x06, 0xE6, 0x06, 0x46, 0x03, 0x66, 0x03,
- 0x87, 0x03, 0xA6, 0x03, 0xA5, 0x03, 0xA7, 0x03, 0xCE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x39, 0x00,
- 0x47, 0x00, 0xFA, 0x63, 0xF6, 0x4B, 0xF1, 0x37, 0xEC, 0x1B, 0xE8, 0x03, 0xE6, 0x03, 0xE6, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC7, 0x03, 0xC7, 0x03,
- 0xA7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x87, 0x03, 0x46, 0x03, 0x06, 0x03, 0xC6, 0x02, 0x65, 0x02,
- 0x04, 0x02, 0xE4, 0x01, 0x83, 0x01, 0x43, 0x05, 0x23, 0x05, 0x23, 0x09, 0x24, 0x09, 0x64, 0x09,
- 0x85, 0x0D, 0xA5, 0x0D, 0xC6, 0x11, 0xC7, 0x11, 0xA7, 0x11, 0x87, 0x11, 0x87, 0x11, 0x86, 0x11,
- 0xA6, 0x11, 0xA6, 0x11, 0xA5, 0x11, 0x65, 0x0D, 0x44, 0x0D, 0x24, 0x09, 0x24, 0x09, 0x24, 0x09,
- 0x24, 0x09, 0x03, 0x05, 0x03, 0x05, 0x43, 0x05, 0xC4, 0x01, 0x65, 0x02, 0x06, 0x03, 0x46, 0x03,
- 0x66, 0x03, 0x87, 0x03, 0xA6, 0x03, 0xA4, 0x03, 0xA7, 0x03, 0xCE, 0x23, 0xF7, 0x53, 0xFE, 0x7B,
- 0x38, 0x00, 0x48, 0x00, 0xFE, 0x73, 0xF6, 0x4B, 0xEF, 0x23, 0xE9, 0x13, 0xE8, 0x0B, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC7, 0x03, 0xE7, 0x03, 0xC7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x66, 0x03, 0x06, 0x03, 0xA6, 0x02,
- 0x45, 0x02, 0xC4, 0x01, 0x83, 0x01, 0x63, 0x01, 0x43, 0x05, 0x43, 0x05, 0x44, 0x05, 0x65, 0x09,
- 0x65, 0x0D, 0x85, 0x0D, 0xA5, 0x11, 0xC6, 0x11, 0xC7, 0x11, 0xC7, 0x11, 0xA7, 0x11, 0x87, 0x11,
- 0x66, 0x11, 0x86, 0x15, 0xA6, 0x15, 0xA6, 0x11, 0x85, 0x11, 0x64, 0x0D, 0x24, 0x09, 0x23, 0x09,
- 0x24, 0x09, 0x44, 0x09, 0x44, 0x09, 0x23, 0x09, 0x23, 0x05, 0x63, 0x05, 0xE4, 0x01, 0x85, 0x02,
- 0x06, 0x03, 0x66, 0x03, 0x66, 0x03, 0x87, 0x03, 0xA5, 0x03, 0xA4, 0x03, 0xA7, 0x03, 0xCE, 0x23,
- 0xF6, 0x53, 0xFE, 0x7B, 0x36, 0x00, 0x4A, 0x00, 0xFE, 0x77, 0xFD, 0x73, 0xF8, 0x5B, 0xF0, 0x2F,
- 0xE9, 0x07, 0xE5, 0x03, 0xE5, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC8, 0x03, 0xC8, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0x86, 0x03,
- 0x46, 0x03, 0x06, 0x03, 0x85, 0x02, 0x25, 0x02, 0xC4, 0x01, 0x64, 0x01, 0x23, 0x01, 0x23, 0x05,
- 0x23, 0x05, 0x44, 0x05, 0x65, 0x09, 0xA6, 0x0D, 0xA6, 0x0D, 0xA6, 0x11, 0xC6, 0x11, 0xC7, 0x11,
- 0xE7, 0x11, 0xE8, 0x11, 0xC8, 0x11, 0x87, 0x11, 0x87, 0x15, 0x86, 0x15, 0x86, 0x11, 0xA6, 0x11,
- 0x85, 0x11, 0x44, 0x0D, 0x23, 0x09, 0x03, 0x05, 0x23, 0x09, 0x44, 0x09, 0x44, 0x09, 0x43, 0x09,
- 0x63, 0x05, 0xA3, 0x05, 0x24, 0x02, 0xA5, 0x02, 0x26, 0x03, 0x66, 0x03, 0x86, 0x03, 0x87, 0x03,
- 0xA5, 0x03, 0xA4, 0x03, 0xA6, 0x03, 0xCE, 0x23, 0xF6, 0x53, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00,
- 0xFD, 0x73, 0xF9, 0x5F, 0xF6, 0x4B, 0xF1, 0x37, 0xEC, 0x1B, 0xE8, 0x03, 0xE5, 0x03, 0xE6, 0x03,
- 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xA8, 0x03, 0x87, 0x03, 0x67, 0x03,
- 0x46, 0x03, 0x46, 0x03, 0x66, 0x03, 0x66, 0x03, 0x26, 0x03, 0xE5, 0x02, 0x85, 0x02, 0x04, 0x02,
- 0xC4, 0x01, 0x84, 0x01, 0x43, 0x05, 0x23, 0x05, 0x23, 0x05, 0x23, 0x05, 0x44, 0x09, 0x85, 0x0D,
- 0xA6, 0x0D, 0xC7, 0x11, 0xC6, 0x11, 0xC6, 0x11, 0xC7, 0x15, 0xE7, 0x15, 0xE8, 0x15, 0xC8, 0x15,
- 0xA8, 0x15, 0x87, 0x15, 0x86, 0x15, 0x86, 0x11, 0x85, 0x11, 0x65, 0x0D, 0x44, 0x09, 0x24, 0x09,
- 0x03, 0x09, 0x03, 0x09, 0x03, 0x09, 0x43, 0x05, 0x63, 0x05, 0xA3, 0x05, 0x04, 0x02, 0x65, 0x02,
- 0xE6, 0x02, 0x47, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA5, 0x03, 0xA4, 0x03, 0xA7, 0x03,
- 0xCE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFB, 0x67, 0xF5, 0x43, 0xEE, 0x23,
- 0xEA, 0x13, 0xE9, 0x0B, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03,
- 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC7, 0x03, 0xA8, 0x03, 0x67, 0x03, 0x27, 0x03, 0x06, 0x03, 0xE5, 0x02, 0xE5, 0x02, 0x05, 0x03,
- 0x05, 0x03, 0xC5, 0x02, 0x65, 0x02, 0x04, 0x06, 0xA4, 0x05, 0x64, 0x05, 0x63, 0x05, 0x43, 0x05,
- 0x23, 0x05, 0x23, 0x05, 0x44, 0x09, 0x65, 0x0D, 0xA6, 0x0D, 0xC7, 0x11, 0xC7, 0x11, 0xC6, 0x11,
- 0xC6, 0x11, 0xC7, 0x15, 0xC8, 0x15, 0xC8, 0x15, 0xC8, 0x15, 0xC8, 0x15, 0xC7, 0x15, 0xA7, 0x11,
- 0x86, 0x11, 0x85, 0x0D, 0x64, 0x0D, 0x44, 0x09, 0x24, 0x09, 0x04, 0x09, 0xE3, 0x04, 0xE3, 0x04,
- 0x23, 0x05, 0x83, 0x01, 0xE3, 0x01, 0x64, 0x02, 0xC5, 0x02, 0x06, 0x03, 0x47, 0x03, 0x67, 0x03,
- 0x87, 0x03, 0x87, 0x03, 0x86, 0x03, 0xA5, 0x03, 0xA7, 0x03, 0xCE, 0x23, 0xF7, 0x53, 0xFE, 0x7B,
- 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x5F, 0xF1, 0x33, 0xE9, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC7, 0x03, 0xA7, 0x03, 0x67, 0x03, 0x27, 0x03, 0xE6, 0x02,
- 0x86, 0x02, 0x65, 0x02, 0x44, 0x02, 0x44, 0x02, 0x64, 0x02, 0x65, 0x02, 0x24, 0x02, 0xE4, 0x05,
- 0x84, 0x05, 0x43, 0x05, 0x23, 0x05, 0x23, 0x05, 0x23, 0x05, 0x23, 0x05, 0x44, 0x09, 0x64, 0x09,
- 0x85, 0x0D, 0xA6, 0x11, 0xC7, 0x15, 0xC7, 0x15, 0xC7, 0x11, 0xC7, 0x11, 0xC7, 0x11, 0xC7, 0x15,
- 0xC8, 0x15, 0xC8, 0x15, 0xC8, 0x15, 0xC7, 0x15, 0xA7, 0x11, 0x86, 0x11, 0x65, 0x0D, 0x44, 0x09,
- 0x24, 0x09, 0x24, 0x09, 0x03, 0x09, 0xE3, 0x04, 0xE2, 0x04, 0x42, 0x01, 0xA3, 0x01, 0x24, 0x02,
- 0xA5, 0x02, 0x06, 0x03, 0x27, 0x03, 0x67, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0x86, 0x03,
- 0xA5, 0x03, 0xA7, 0x03, 0xCE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x5F,
- 0xF1, 0x2F, 0xE8, 0x03, 0xE4, 0x03, 0xE5, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xC8, 0x03,
- 0xA7, 0x03, 0x46, 0x03, 0xE6, 0x02, 0xA6, 0x02, 0x45, 0x02, 0xE5, 0x01, 0xC4, 0x01, 0xC4, 0x01,
- 0xA4, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xA4, 0x05, 0x63, 0x05, 0x43, 0x05, 0x03, 0x09, 0x03, 0x09,
- 0x03, 0x09, 0x24, 0x09, 0x44, 0x09, 0x65, 0x09, 0x85, 0x0D, 0xA6, 0x0D, 0xC7, 0x11, 0xC7, 0x11,
- 0xC7, 0x11, 0xE7, 0x11, 0xC7, 0x11, 0xC7, 0x11, 0xC7, 0x15, 0xC7, 0x15, 0xC7, 0x15, 0xC7, 0x15,
- 0xC7, 0x11, 0xA7, 0x11, 0xA6, 0x11, 0x85, 0x0D, 0x45, 0x0D, 0x24, 0x09, 0x04, 0x09, 0x03, 0x05,
- 0xE2, 0x04, 0x02, 0x01, 0x62, 0x01, 0xE3, 0x01, 0x65, 0x02, 0xE6, 0x02, 0x26, 0x03, 0x47, 0x03,
- 0x67, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA6, 0x03, 0xA5, 0x03, 0xA7, 0x03, 0xCE, 0x23,
- 0xF7, 0x53, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x63, 0xF2, 0x33, 0xEA, 0x07, 0xE6, 0x03,
- 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xA8, 0x03, 0x87, 0x03, 0x47, 0x03, 0xE6, 0x02, 0x65, 0x02,
- 0x05, 0x02, 0xA4, 0x01, 0x64, 0x01, 0x44, 0x05, 0x44, 0x05, 0x43, 0x05, 0x43, 0x05, 0x43, 0x05,
- 0x43, 0x05, 0x43, 0x05, 0x23, 0x09, 0x03, 0x09, 0x03, 0x09, 0x03, 0x09, 0x24, 0x09, 0x45, 0x09,
- 0x65, 0x09, 0x86, 0x0D, 0xA7, 0x0D, 0xC7, 0x11, 0xC8, 0x11, 0xC8, 0x11, 0xE8, 0x11, 0xC8, 0x11,
- 0xC7, 0x11, 0xC7, 0x11, 0xA6, 0x11, 0xA6, 0x11, 0xA7, 0x11, 0xA7, 0x11, 0xA7, 0x11, 0x86, 0x11,
- 0x86, 0x0D, 0x65, 0x0D, 0x24, 0x09, 0x03, 0x09, 0x03, 0x05, 0x02, 0x01, 0x22, 0x01, 0x83, 0x01,
- 0x04, 0x02, 0x85, 0x02, 0x06, 0x03, 0x46, 0x03, 0x46, 0x03, 0x46, 0x03, 0x66, 0x03, 0x86, 0x03,
- 0xA7, 0x03, 0xA5, 0x03, 0xA4, 0x03, 0xA7, 0x03, 0xCE, 0x23, 0xF6, 0x53, 0xFE, 0x7B, 0x35, 0x00,
- 0x4B, 0x00, 0xFA, 0x63, 0xF2, 0x37, 0xEA, 0x0B, 0xE6, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0xA8, 0x03, 0x67, 0x03,
- 0x27, 0x03, 0xE6, 0x02, 0xA6, 0x02, 0x45, 0x02, 0xC4, 0x01, 0x64, 0x01, 0x23, 0x01, 0xE3, 0x04,
- 0xE3, 0x04, 0xE3, 0x08, 0xE3, 0x08, 0x03, 0x09, 0x03, 0x09, 0x03, 0x09, 0x23, 0x09, 0x23, 0x09,
- 0x23, 0x09, 0x03, 0x09, 0x04, 0x09, 0x04, 0x09, 0x25, 0x0D, 0x66, 0x0D, 0x86, 0x0D, 0xA7, 0x0D,
- 0xC7, 0x11, 0xC7, 0x11, 0xC8, 0x11, 0xC7, 0x11, 0xC7, 0x11, 0xA7, 0x11, 0xA6, 0x11, 0xA6, 0x0D,
- 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x45, 0x0D, 0x24, 0x09,
- 0x03, 0x05, 0x02, 0x05, 0x22, 0x01, 0x63, 0x01, 0xE3, 0x01, 0x45, 0x02, 0xC6, 0x02, 0x27, 0x03,
- 0x47, 0x03, 0x46, 0x03, 0x46, 0x03, 0x66, 0x03, 0x86, 0x03, 0xA7, 0x03, 0xA5, 0x03, 0xA4, 0x03,
- 0xC7, 0x03, 0xCE, 0x23, 0xF6, 0x53, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x63, 0xF2, 0x37,
- 0xEA, 0x0B, 0xE6, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xC8, 0x03, 0x87, 0x03, 0x47, 0x03, 0xE6, 0x02, 0x85, 0x02, 0x45, 0x02, 0x04, 0x02,
- 0xC4, 0x01, 0x63, 0x01, 0x23, 0x05, 0x03, 0x05, 0xE3, 0x04, 0xE3, 0x08, 0xE3, 0x08, 0x03, 0x09,
- 0x03, 0x09, 0x03, 0x09, 0x04, 0x09, 0x24, 0x09, 0x44, 0x0D, 0x24, 0x0D, 0x04, 0x0D, 0xE3, 0x08,
- 0xE3, 0x08, 0x04, 0x09, 0x45, 0x09, 0x66, 0x0D, 0xA6, 0x11, 0xA7, 0x11, 0xC7, 0x11, 0xA7, 0x11,
- 0xA6, 0x11, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D, 0x86, 0x0D,
- 0x66, 0x0D, 0x65, 0x0D, 0x45, 0x0D, 0x24, 0x09, 0x03, 0x09, 0x03, 0x05, 0x22, 0x05, 0x63, 0x01,
- 0xC3, 0x01, 0x24, 0x02, 0x85, 0x02, 0xE6, 0x02, 0x27, 0x03, 0x47, 0x03, 0x46, 0x03, 0x66, 0x03,
- 0x67, 0x03, 0x87, 0x03, 0xA7, 0x03, 0xA6, 0x03, 0xC4, 0x03, 0xC7, 0x03, 0xCE, 0x23, 0xF7, 0x53,
- 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x63, 0xF1, 0x37, 0xEA, 0x0B, 0xE5, 0x03, 0xE6, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE7, 0x03, 0xC7, 0x03, 0xA7, 0x03, 0x26, 0x03,
- 0xC5, 0x02, 0x65, 0x02, 0xE4, 0x01, 0x83, 0x01, 0x63, 0x01, 0x43, 0x01, 0x23, 0x05, 0x03, 0x05,
- 0x03, 0x09, 0x03, 0x09, 0x23, 0x09, 0x23, 0x09, 0x24, 0x09, 0x24, 0x09, 0x44, 0x09, 0x44, 0x09,
- 0x65, 0x0D, 0x65, 0x0D, 0x65, 0x0D, 0x24, 0x0D, 0xE3, 0x08, 0xC3, 0x08, 0xE3, 0x08, 0x04, 0x09,
- 0x45, 0x0D, 0x86, 0x11, 0xA6, 0x11, 0xA6, 0x15, 0x86, 0x11, 0x65, 0x0D, 0x45, 0x0D, 0x45, 0x0D,
- 0x65, 0x0D, 0x86, 0x11, 0x86, 0x11, 0x86, 0x0D, 0x86, 0x0D, 0x65, 0x0D, 0x45, 0x09, 0x24, 0x09,
- 0x03, 0x09, 0x03, 0x09, 0x02, 0x05, 0x63, 0x05, 0xA3, 0x01, 0x24, 0x02, 0x85, 0x02, 0xC5, 0x02,
- 0xE6, 0x02, 0x26, 0x03, 0x47, 0x03, 0x47, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA7, 0x03,
- 0xA6, 0x03, 0xC5, 0x03, 0xC7, 0x03, 0xEE, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00,
- 0xFA, 0x63, 0xF1, 0x37, 0xE9, 0x0B, 0xE5, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xC7, 0x03, 0x87, 0x03, 0x46, 0x03, 0xA5, 0x02, 0x24, 0x02, 0xC3, 0x05, 0x42, 0x05,
- 0x02, 0x05, 0xE2, 0x00, 0xE2, 0x00, 0xC2, 0x04, 0xE2, 0x08, 0x03, 0x09, 0x03, 0x09, 0x23, 0x09,
- 0x43, 0x09, 0x44, 0x09, 0x64, 0x09, 0x64, 0x09, 0x85, 0x09, 0xA6, 0x0D, 0xA6, 0x11, 0x86, 0x0D,
- 0x24, 0x0D, 0xE3, 0x08, 0xC2, 0x04, 0xC3, 0x04, 0xE3, 0x08, 0x24, 0x0D, 0x65, 0x0D, 0x86, 0x11,
- 0xA6, 0x11, 0x85, 0x11, 0x44, 0x0D, 0x24, 0x09, 0x24, 0x09, 0x45, 0x0D, 0x65, 0x0D, 0x66, 0x0D,
- 0x65, 0x0D, 0x65, 0x0D, 0x44, 0x09, 0x24, 0x09, 0x03, 0x05, 0x02, 0x05, 0x22, 0x05, 0x42, 0x05,
- 0xA3, 0x05, 0x04, 0x02, 0x65, 0x02, 0xC5, 0x02, 0xE5, 0x02, 0x05, 0x03, 0x26, 0x03, 0x46, 0x03,
- 0x47, 0x03, 0x67, 0x03, 0x87, 0x03, 0x87, 0x03, 0xA7, 0x03, 0xA6, 0x03, 0xC5, 0x03, 0xC8, 0x03,
- 0xEF, 0x23, 0xF7, 0x53, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x63, 0xF1, 0x37, 0xEA, 0x0B,
- 0xE6, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xA7, 0x03, 0x46, 0x03,
- 0xC5, 0x02, 0x24, 0x02, 0xA3, 0x01, 0x42, 0x05, 0xE2, 0x04, 0xA2, 0x04, 0xA2, 0x04, 0xA2, 0x04,
- 0xA2, 0x04, 0xA2, 0x04, 0xC2, 0x04, 0xC2, 0x04, 0xE3, 0x04, 0x03, 0x05, 0x44, 0x09, 0x65, 0x09,
- 0x85, 0x0D, 0xA6, 0x0D, 0xA6, 0x11, 0xA7, 0x11, 0x86, 0x11, 0x45, 0x0D, 0x04, 0x09, 0xE3, 0x08,
- 0xC3, 0x08, 0xE4, 0x08, 0x04, 0x09, 0x45, 0x0D, 0x85, 0x11, 0x85, 0x11, 0x85, 0x0D, 0x44, 0x09,
- 0x24, 0x09, 0x24, 0x09, 0x44, 0x09, 0x45, 0x0D, 0x45, 0x0D, 0x44, 0x0D, 0x24, 0x0D, 0x23, 0x09,
- 0x03, 0x05, 0x03, 0x05, 0x22, 0x01, 0x62, 0x01, 0xA3, 0x05, 0x04, 0x02, 0x65, 0x02, 0xA5, 0x02,
- 0x06, 0x03, 0x06, 0x03, 0x05, 0x03, 0x26, 0x03, 0x26, 0x03, 0x47, 0x03, 0x67, 0x03, 0x87, 0x03,
- 0x87, 0x03, 0xA7, 0x03, 0xC5, 0x03, 0xC4, 0x03, 0xC6, 0x03, 0xED, 0x1F, 0xF6, 0x4F, 0xFE, 0x7B,
- 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x63, 0xF2, 0x37, 0xEA, 0x0B, 0xE6, 0x03, 0xE6, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0x87, 0x03, 0x06, 0x03, 0x65, 0x02, 0xC3, 0x01, 0x42, 0x01,
- 0x02, 0x05, 0xC2, 0x08, 0xA2, 0x08, 0xA2, 0x04, 0x82, 0x04, 0x82, 0x04, 0x61, 0x04, 0x81, 0x04,
- 0x81, 0x00, 0xA2, 0x04, 0xC3, 0x04, 0x04, 0x09, 0x45, 0x0D, 0x86, 0x0D, 0xA6, 0x11, 0xC6, 0x11,
- 0xA6, 0x11, 0x86, 0x0D, 0x65, 0x0D, 0x25, 0x09, 0x04, 0x09, 0xE4, 0x08, 0xE4, 0x08, 0x04, 0x09,
- 0x45, 0x0D, 0x65, 0x0D, 0x85, 0x0D, 0x85, 0x0D, 0x64, 0x09, 0x44, 0x09, 0x44, 0x09, 0x44, 0x09,
- 0x24, 0x09, 0x23, 0x09, 0x03, 0x09, 0x03, 0x09, 0x02, 0x09, 0x02, 0x05, 0x22, 0x01, 0x63, 0x01,
- 0xC3, 0x01, 0x04, 0x02, 0x64, 0x02, 0xA5, 0x02, 0xC6, 0x02, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03,
- 0x26, 0x03, 0x26, 0x03, 0x46, 0x03, 0x66, 0x03, 0x87, 0x03, 0xA7, 0x03, 0xA7, 0x03, 0xC5, 0x03,
- 0xC2, 0x03, 0xC4, 0x03, 0xEC, 0x1B, 0xF6, 0x4B, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x63,
- 0xF2, 0x37, 0xEA, 0x0B, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03,
- 0x67, 0x03, 0xC6, 0x02, 0x04, 0x02, 0x62, 0x01, 0x02, 0x01, 0xC2, 0x04, 0xA2, 0x08, 0x82, 0x08,
- 0xA2, 0x08, 0x82, 0x04, 0x61, 0x04, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x62, 0x00, 0xA3, 0x04,
- 0xE4, 0x08, 0x25, 0x0D, 0x66, 0x11, 0xA6, 0x11, 0xA6, 0x11, 0xA6, 0x11, 0x86, 0x11, 0x66, 0x0D,
- 0x45, 0x0D, 0x25, 0x09, 0x05, 0x09, 0x04, 0x09, 0x04, 0x09, 0x24, 0x09, 0x45, 0x09, 0x65, 0x0D,
- 0x64, 0x09, 0x64, 0x09, 0x44, 0x09, 0x43, 0x05, 0x43, 0x05, 0x23, 0x05, 0x03, 0x05, 0x02, 0x05,
- 0xE2, 0x04, 0x02, 0x05, 0x22, 0x05, 0x63, 0x01, 0xC3, 0x01, 0x24, 0x02, 0x64, 0x02, 0xA5, 0x02,
- 0xC6, 0x02, 0xE6, 0x02, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x26, 0x03, 0x46, 0x03,
- 0x66, 0x03, 0x86, 0x03, 0xA7, 0x03, 0xC7, 0x03, 0xC5, 0x03, 0xC4, 0x03, 0xC6, 0x03, 0xEE, 0x23,
- 0xF6, 0x4F, 0xFE, 0x7B, 0x35, 0x00, 0x4B, 0x00, 0xFA, 0x63, 0xF2, 0x37, 0xEA, 0x0B, 0xE6, 0x03,
- 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0x47, 0x03, 0x85, 0x02, 0xC3, 0x01,
- 0x02, 0x01, 0xA1, 0x00, 0x81, 0x04, 0x61, 0x04, 0x61, 0x08, 0x62, 0x04, 0x62, 0x04, 0x41, 0x04,
- 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x62, 0x04, 0xA3, 0x04, 0xE4, 0x08, 0x25, 0x0D, 0x45, 0x0D,
- 0x86, 0x11, 0xA6, 0x11, 0xA6, 0x11, 0xA6, 0x11, 0x86, 0x11, 0x66, 0x0D, 0x45, 0x0D, 0x25, 0x09,
- 0x04, 0x09, 0x04, 0x09, 0x24, 0x09, 0x24, 0x09, 0x44, 0x09, 0x44, 0x09, 0x44, 0x09, 0x23, 0x05,
- 0x23, 0x05, 0x23, 0x05, 0x22, 0x05, 0x22, 0x05, 0x22, 0x05, 0x43, 0x05, 0x63, 0x05, 0x83, 0x01,
- 0xC3, 0x01, 0x24, 0x02, 0x64, 0x02, 0xA5, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02,
- 0x06, 0x03, 0x06, 0x03, 0x05, 0x03, 0x25, 0x03, 0x45, 0x03, 0x65, 0x03, 0x85, 0x03, 0x85, 0x03,
- 0xA6, 0x03, 0xC7, 0x07, 0xC9, 0x17, 0xED, 0x23, 0xF3, 0x3F, 0xF9, 0x5F, 0xFF, 0x7B, 0x35, 0x00,
- 0x4A, 0x00, 0xFA, 0x63, 0xF2, 0x37, 0xEA, 0x0B, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xE8, 0x03, 0xC8, 0x03, 0x46, 0x03, 0x65, 0x02, 0xA3, 0x01, 0xE1, 0x00, 0x81, 0x00, 0x60, 0x04,
- 0x40, 0x04, 0x21, 0x04, 0x41, 0x04, 0x41, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04,
- 0x82, 0x04, 0xC4, 0x08, 0x04, 0x0D, 0x04, 0x0D, 0x24, 0x0D, 0x65, 0x0D, 0x85, 0x11, 0xA6, 0x11,
- 0xA6, 0x11, 0xA6, 0x11, 0x86, 0x11, 0x45, 0x0D, 0x25, 0x09, 0x24, 0x09, 0x04, 0x09, 0x04, 0x09,
- 0x24, 0x09, 0x24, 0x09, 0x04, 0x09, 0x03, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x22, 0x05,
- 0x43, 0x05, 0x63, 0x05, 0xA4, 0x01, 0xE4, 0x01, 0x04, 0x02, 0x44, 0x02, 0x84, 0x02, 0xA5, 0x02,
- 0xC6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0xE6, 0x02, 0x06, 0x03, 0x05, 0x03,
- 0x25, 0x03, 0x24, 0x03, 0x44, 0x03, 0x63, 0x03, 0x82, 0x03, 0xA4, 0x03, 0xC9, 0x13, 0xCF, 0x33,
- 0xF6, 0x4F, 0xF9, 0x5F, 0xFC, 0x6F, 0x36, 0x00, 0x49, 0x00, 0xFA, 0x63, 0xF2, 0x37, 0xEA, 0x0B,
- 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC7, 0x03, 0x46, 0x03, 0x65, 0x02,
- 0xA3, 0x01, 0xE2, 0x00, 0x81, 0x00, 0x61, 0x04, 0x40, 0x04, 0x40, 0x04, 0x60, 0x00, 0x61, 0x00,
- 0x21, 0x00, 0x00, 0x00, 0x01, 0x04, 0x42, 0x04, 0xA3, 0x08, 0xE4, 0x0C, 0x04, 0x0D, 0x04, 0x09,
- 0x04, 0x09, 0x24, 0x0D, 0x65, 0x11, 0x86, 0x11, 0xA6, 0x15, 0x86, 0x11, 0x65, 0x0D, 0x45, 0x0D,
- 0x24, 0x09, 0x04, 0x09, 0x03, 0x09, 0x04, 0x09, 0x04, 0x09, 0x04, 0x09, 0x03, 0x09, 0xE3, 0x04,
- 0xE2, 0x04, 0x02, 0x05, 0x22, 0x05, 0x62, 0x05, 0xA3, 0x05, 0xC4, 0x01, 0x05, 0x02, 0x45, 0x02,
- 0x65, 0x02, 0x85, 0x02, 0xA5, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC5, 0x02,
- 0xE5, 0x02, 0xE5, 0x02, 0xE5, 0x02, 0x06, 0x03, 0x26, 0x03, 0x46, 0x03, 0x66, 0x03, 0x65, 0x03,
- 0x83, 0x03, 0xA6, 0x03, 0xCE, 0x27, 0xF6, 0x53, 0xFE, 0x77, 0xFF, 0x7B, 0x37, 0x00, 0x47, 0x00,
- 0xFA, 0x63, 0xF1, 0x33, 0xEA, 0x07, 0xE5, 0x03, 0xE6, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xE8, 0x03,
- 0xC8, 0x03, 0x46, 0x03, 0xA5, 0x02, 0x04, 0x02, 0x43, 0x01, 0x02, 0x01, 0xE1, 0x00, 0xA1, 0x00,
- 0xA1, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x61, 0x00, 0x21, 0x00, 0x21, 0x04, 0x42, 0x04, 0x83, 0x08,
- 0xC4, 0x08, 0x04, 0x09, 0x03, 0x09, 0x03, 0x09, 0x24, 0x09, 0x44, 0x0D, 0x65, 0x11, 0x65, 0x11,
- 0x65, 0x0D, 0x44, 0x0D, 0x24, 0x09, 0x03, 0x09, 0xE3, 0x08, 0xE3, 0x08, 0xE3, 0x08, 0x03, 0x09,
- 0x03, 0x05, 0x23, 0x05, 0x23, 0x05, 0x43, 0x01, 0x63, 0x01, 0x83, 0x01, 0xC3, 0x01, 0x04, 0x02,
- 0x25, 0x02, 0x65, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC6, 0x02,
- 0xC6, 0x02, 0xC6, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC4, 0x02, 0xE4, 0x02, 0x05, 0x03, 0x28, 0x0B,
- 0x4B, 0x17, 0x8D, 0x1F, 0x8C, 0x1F, 0xAA, 0x1F, 0xAD, 0x23, 0xD4, 0x43, 0xFB, 0x6B, 0x39, 0x00,
- 0x47, 0x00, 0xF9, 0x5F, 0xF1, 0x2F, 0xE8, 0x03, 0xE4, 0x03, 0xE5, 0x03, 0xE8, 0x03, 0xE9, 0x03,
- 0xE8, 0x03, 0xE8, 0x03, 0x87, 0x03, 0xE6, 0x02, 0x65, 0x02, 0xC4, 0x01, 0x83, 0x01, 0x63, 0x01,
- 0x42, 0x01, 0x22, 0x01, 0x02, 0x01, 0xE2, 0x00, 0xA1, 0x00, 0x61, 0x00, 0x21, 0x00, 0x42, 0x04,
- 0x62, 0x04, 0xA3, 0x04, 0xE3, 0x08, 0x03, 0x09, 0x23, 0x09, 0x24, 0x09, 0x45, 0x0D, 0x45, 0x0D,
- 0x25, 0x0D, 0x24, 0x09, 0x03, 0x09, 0xE3, 0x08, 0xC3, 0x08, 0xC3, 0x08, 0xC3, 0x04, 0xE2, 0x04,
- 0x03, 0x05, 0x23, 0x05, 0x43, 0x01, 0x83, 0x01, 0xA4, 0x01, 0xE4, 0x01, 0x04, 0x02, 0x24, 0x02,
- 0x44, 0x02, 0x65, 0x02, 0x85, 0x02, 0xA5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC5, 0x02,
- 0xC5, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC5, 0x02, 0xC3, 0x02, 0xC2, 0x02, 0xE5, 0x02,
- 0x2B, 0x17, 0x91, 0x37, 0xD6, 0x4B, 0xD5, 0x4B, 0xD4, 0x4B, 0xD5, 0x4F, 0xF9, 0x5F, 0xFE, 0x77,
- 0x39, 0x00, 0x46, 0x00, 0xFA, 0x5F, 0xF1, 0x33, 0xE9, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE8, 0x03,
- 0xE9, 0x03, 0xE9, 0x03, 0xE8, 0x03, 0xA8, 0x03, 0x47, 0x03, 0xE6, 0x02, 0x65, 0x02, 0x25, 0x02,
- 0x04, 0x02, 0xC3, 0x01, 0xA3, 0x01, 0x83, 0x01, 0x42, 0x01, 0xE2, 0x00, 0x82, 0x00, 0x41, 0x00,
- 0x41, 0x00, 0x42, 0x00, 0x82, 0x04, 0xA3, 0x04, 0xE3, 0x08, 0x24, 0x09, 0x44, 0x09, 0x24, 0x09,
- 0x25, 0x09, 0x04, 0x09, 0xC3, 0x04, 0xC2, 0x04, 0xA2, 0x04, 0x82, 0x04, 0x82, 0x04, 0xA2, 0x04,
- 0xE2, 0x04, 0x02, 0x01, 0x63, 0x01, 0xA3, 0x01, 0xE4, 0x01, 0x25, 0x02, 0x65, 0x02, 0x65, 0x02,
- 0x85, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02,
- 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC3, 0x02, 0xC3, 0x02,
- 0xE7, 0x02, 0x4F, 0x2B, 0xB8, 0x57, 0xFD, 0x77, 0xFD, 0x77, 0xFD, 0x77, 0xFD, 0x77, 0xFE, 0x7B,
- 0x3A, 0x00, 0x41, 0x00, 0xFB, 0x67, 0xF5, 0x43, 0xEE, 0x23, 0xEA, 0x13, 0xE9, 0x0B, 0xE8, 0x03,
- 0xE7, 0x03, 0xE8, 0x03, 0xE8, 0x03, 0xC8, 0x03, 0x88, 0x03, 0x47, 0x03, 0xE6, 0x02, 0xC6, 0x02,
- 0xA5, 0x02, 0x64, 0x02, 0x24, 0x02, 0x04, 0x02, 0xC3, 0x01, 0x42, 0x01, 0xE2, 0x00, 0x81, 0x00,
- 0x41, 0x00, 0x42, 0x00, 0x62, 0x00, 0xA2, 0x04, 0xE3, 0x04, 0x03, 0x05, 0x24, 0x09, 0x04, 0x09,
- 0xE4, 0x08, 0xC3, 0x04, 0xA2, 0x04, 0x82, 0x04, 0x81, 0x04, 0x81, 0x04, 0x82, 0x04, 0xC2, 0x04,
- 0x02, 0x01, 0x63, 0x01, 0xC3, 0x01, 0x04, 0x02, 0x45, 0x02, 0x85, 0x02, 0xA6, 0x02, 0xC5, 0x02,
- 0xC5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02,
- 0xA4, 0x02, 0xA4, 0x02, 0xA4, 0x02, 0xA4, 0x02, 0xA4, 0x02, 0xC6, 0x02, 0xE6, 0x0A, 0xE8, 0x12,
- 0x2D, 0x23, 0x95, 0x4B, 0xDD, 0x73, 0x3F, 0x00, 0x41, 0x00, 0xFD, 0x73, 0xF9, 0x5F, 0xF6, 0x4B,
- 0xF1, 0x37, 0xEC, 0x1B, 0xE8, 0x03, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x03, 0xC8, 0x03, 0xA7, 0x03,
- 0x67, 0x03, 0x46, 0x03, 0x06, 0x03, 0xE6, 0x02, 0xA5, 0x02, 0x85, 0x02, 0x64, 0x02, 0x04, 0x02,
- 0x83, 0x01, 0x02, 0x01, 0xA1, 0x00, 0x61, 0x00, 0x42, 0x00, 0x62, 0x04, 0x82, 0x04, 0xA2, 0x04,
- 0xE2, 0x04, 0xE3, 0x04, 0xE3, 0x04, 0xC3, 0x08, 0xA3, 0x04, 0x82, 0x04, 0x61, 0x04, 0x61, 0x00,
- 0x81, 0x00, 0xA1, 0x04, 0xE2, 0x00, 0x43, 0x01, 0xA3, 0x01, 0x24, 0x02, 0x65, 0x02, 0x85, 0x02,
- 0xA5, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xA5, 0x02,
- 0xA5, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0x84, 0x02, 0x83, 0x02, 0x82, 0x02, 0x81, 0x02, 0x81, 0x02,
- 0xC5, 0x02, 0x0A, 0x1B, 0x4F, 0x37, 0x95, 0x4B, 0xBA, 0x63, 0xFE, 0x7B, 0x40, 0x00, 0x3F, 0x00,
- 0xFE, 0x77, 0xFD, 0x73, 0xF8, 0x5B, 0xF1, 0x2F, 0xE9, 0x07, 0xE5, 0x03, 0xE5, 0x03, 0xE7, 0x03,
- 0xC7, 0x03, 0xA7, 0x03, 0x87, 0x03, 0x66, 0x03, 0x46, 0x03, 0x26, 0x03, 0xE5, 0x02, 0xC5, 0x02,
- 0xA5, 0x02, 0x44, 0x02, 0xC3, 0x01, 0x42, 0x01, 0xE1, 0x00, 0x81, 0x00, 0x82, 0x00, 0x82, 0x04,
- 0x82, 0x04, 0xA2, 0x04, 0xC2, 0x04, 0xC2, 0x04, 0xC3, 0x04, 0xC3, 0x08, 0xA3, 0x04, 0x82, 0x04,
- 0x81, 0x04, 0x81, 0x00, 0xA1, 0x00, 0xC2, 0x00, 0x22, 0x01, 0xA3, 0x01, 0x04, 0x02, 0x65, 0x02,
- 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xC5, 0x02, 0xA5, 0x02, 0xC6, 0x02, 0xC6, 0x02, 0xC6, 0x02,
- 0xA6, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA4, 0x02, 0xA3, 0x02,
- 0x81, 0x02, 0x81, 0x02, 0xC6, 0x06, 0x2E, 0x2F, 0xB7, 0x5B, 0xFD, 0x73, 0xFE, 0x77, 0x43, 0x00,
- 0x3B, 0x00, 0xFE, 0x73, 0xF6, 0x4B, 0xEF, 0x23, 0xE9, 0x13, 0xE7, 0x0B, 0xE7, 0x03, 0xC6, 0x03,
- 0xC6, 0x03, 0xA7, 0x03, 0x87, 0x03, 0x66, 0x03, 0x46, 0x03, 0x06, 0x03, 0xE5, 0x02, 0xC5, 0x02,
- 0x64, 0x02, 0x04, 0x02, 0xA3, 0x01, 0x42, 0x01, 0xE2, 0x00, 0xC2, 0x00, 0xC2, 0x04, 0xC2, 0x04,
- 0xC2, 0x00, 0xE2, 0x00, 0xE2, 0x00, 0xE2, 0x04, 0xC2, 0x04, 0xA2, 0x04, 0x82, 0x04, 0x81, 0x00,
- 0xA1, 0x00, 0xC1, 0x00, 0x02, 0x01, 0x83, 0x01, 0xE4, 0x01, 0x65, 0x02, 0xA6, 0x02, 0xC6, 0x02,
- 0xC5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA6, 0x02, 0xA6, 0x02, 0xA6, 0x02,
- 0xA5, 0x02, 0x84, 0x02, 0x84, 0x02, 0xA5, 0x02, 0xC7, 0x0A, 0xE9, 0x12, 0xE9, 0x16, 0xC7, 0x16,
- 0xC7, 0x16, 0x0C, 0x23, 0x74, 0x4B, 0xFD, 0x73, 0x46, 0x00, 0x39, 0x00, 0xFA, 0x63, 0xF6, 0x4B,
- 0xF0, 0x37, 0xEB, 0x1B, 0xC7, 0x03, 0xC4, 0x03, 0xA5, 0x03, 0x86, 0x03, 0x67, 0x03, 0x47, 0x03,
- 0x26, 0x03, 0x05, 0x03, 0xE5, 0x02, 0xC5, 0x02, 0x84, 0x02, 0x24, 0x02, 0xE3, 0x01, 0x83, 0x01,
- 0x42, 0x01, 0x22, 0x01, 0x02, 0x01, 0x02, 0x01, 0x23, 0x01, 0x23, 0x01, 0x23, 0x01, 0x03, 0x01,
- 0xE2, 0x04, 0xC2, 0x04, 0xA1, 0x00, 0x81, 0x00, 0xA1, 0x00, 0xE2, 0x00, 0x43, 0x01, 0xC4, 0x01,
- 0x24, 0x02, 0x65, 0x02, 0xA5, 0x02, 0xC5, 0x02, 0xC5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02,
- 0xA5, 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0x84, 0x02, 0x62, 0x02, 0x62, 0x02, 0xA5, 0x02,
- 0xEB, 0x1E, 0x51, 0x37, 0x52, 0x43, 0x51, 0x43, 0x51, 0x43, 0x74, 0x4B, 0xB9, 0x63, 0x47, 0x00,
- 0x39, 0x00, 0xFE, 0x77, 0xFC, 0x6F, 0xF8, 0x5B, 0xF0, 0x33, 0xC9, 0x07, 0xA4, 0x03, 0xA4, 0x03,
- 0x86, 0x03, 0x47, 0x03, 0x26, 0x03, 0x06, 0x03, 0xE5, 0x02, 0xC5, 0x02, 0xA5, 0x02, 0x84, 0x02,
- 0x44, 0x02, 0x24, 0x02, 0xE3, 0x01, 0xA3, 0x01, 0x83, 0x01, 0x63, 0x01, 0x63, 0x01, 0x83, 0x01,
- 0xA4, 0x01, 0x84, 0x01, 0x43, 0x01, 0x22, 0x01, 0xE2, 0x00, 0xC1, 0x00, 0xA1, 0x00, 0xC2, 0x00,
- 0x22, 0x01, 0x83, 0x01, 0xE4, 0x01, 0x45, 0x02, 0x65, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02,
- 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0x83, 0x02,
- 0x61, 0x02, 0x61, 0x02, 0xC7, 0x0E, 0x30, 0x37, 0xB9, 0x5F, 0xDB, 0x6B, 0xDB, 0x6B, 0xDB, 0x6B,
- 0xDC, 0x6F, 0xFD, 0x77, 0x49, 0x00, 0x32, 0x00, 0xFE, 0x77, 0xF6, 0x4F, 0xEE, 0x23, 0xA9, 0x0F,
- 0x87, 0x07, 0x67, 0x03, 0x26, 0x03, 0x05, 0x03, 0xE5, 0x02, 0xC5, 0x02, 0xA5, 0x02, 0xA5, 0x02,
- 0x85, 0x02, 0x65, 0x02, 0x64, 0x02, 0x44, 0x02, 0x24, 0x02, 0x03, 0x02, 0xE3, 0x01, 0xE4, 0x01,
- 0xE4, 0x01, 0x04, 0x02, 0xE4, 0x01, 0xA3, 0x01, 0x83, 0x01, 0x42, 0x01, 0x02, 0x01, 0x02, 0x01,
- 0x22, 0x01, 0x63, 0x01, 0xC4, 0x01, 0x25, 0x02, 0x65, 0x02, 0x85, 0x02, 0xA4, 0x02, 0xA5, 0x02,
- 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0x84, 0x02, 0xA4, 0x02,
- 0xA4, 0x02, 0x84, 0x0A, 0xA6, 0x0E, 0x0D, 0x27, 0x96, 0x53, 0xFE, 0x7B, 0x4F, 0x00, 0x30, 0x00,
- 0xFB, 0x63, 0xF5, 0x47, 0xD0, 0x33, 0x8B, 0x1B, 0x47, 0x03, 0x03, 0x03, 0xE2, 0x02, 0xC3, 0x02,
- 0xA3, 0x02, 0xA4, 0x02, 0xA4, 0x02, 0xA5, 0x02, 0x85, 0x02, 0x85, 0x02, 0x85, 0x02, 0x65, 0x02,
- 0x44, 0x02, 0x24, 0x02, 0x24, 0x02, 0x24, 0x02, 0x24, 0x02, 0x04, 0x02, 0xE4, 0x01, 0xC3, 0x01,
- 0x82, 0x01, 0x62, 0x01, 0x62, 0x01, 0x83, 0x01, 0xC3, 0x01, 0x04, 0x02, 0x45, 0x02, 0x65, 0x02,
- 0x85, 0x02, 0x84, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0x84, 0x02, 0x84, 0x02, 0x83, 0x02,
- 0x82, 0x02, 0x61, 0x02, 0x82, 0x02, 0xA6, 0x06, 0xE9, 0x1E, 0x2F, 0x37, 0x74, 0x4B, 0xBA, 0x67,
- 0x50, 0x00, 0x30, 0x00, 0xFE, 0x77, 0xFC, 0x6B, 0xD8, 0x5B, 0x90, 0x33, 0x48, 0x0B, 0xE2, 0x02,
- 0xC1, 0x02, 0xC3, 0x02, 0xA3, 0x02, 0xA4, 0x02, 0xA4, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02,
- 0xA5, 0x02, 0x86, 0x02, 0x65, 0x02, 0x65, 0x02, 0x45, 0x02, 0x65, 0x02, 0x64, 0x02, 0x44, 0x02,
- 0x24, 0x02, 0x03, 0x02, 0xE3, 0x01, 0xC3, 0x01, 0xC3, 0x01, 0xC3, 0x01, 0x04, 0x02, 0x24, 0x02,
- 0x64, 0x02, 0x64, 0x02, 0x85, 0x02, 0x85, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA5, 0x02, 0xA4, 0x02,
- 0x84, 0x02, 0x83, 0x02, 0x82, 0x02, 0x61, 0x02, 0x82, 0x02, 0xC8, 0x0E, 0x30, 0x37, 0x98, 0x5F,
- 0xDB, 0x6F, 0xFD, 0x77, 0x52, 0x00, 0x2B, 0x00, 0xFE, 0x7B, 0xB6, 0x4F, 0x6D, 0x23, 0x06, 0x0B,
- 0x05, 0x0B, 0xE7, 0x0A, 0xE8, 0x0A, 0xC7, 0x06, 0xC6, 0x02, 0xC5, 0x02, 0xA5, 0x02, 0xC5, 0x02,
- 0xA6, 0x02, 0xA6, 0x02, 0x86, 0x02, 0x85, 0x02, 0x85, 0x02, 0x85, 0x02, 0x84, 0x02, 0x64, 0x02,
- 0x64, 0x02, 0x44, 0x02, 0x24, 0x02, 0x24, 0x02, 0x24, 0x02, 0x24, 0x02, 0x44, 0x02, 0x44, 0x02,
- 0x64, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0xA4, 0x02, 0xA5, 0x02, 0xC6, 0x02,
- 0xC7, 0x06, 0xC8, 0x0A, 0xC7, 0x0A, 0xA5, 0x0A, 0xC7, 0x0A, 0x0E, 0x2B, 0x97, 0x57, 0x56, 0x00,
- 0x2A, 0x00, 0xDA, 0x67, 0x94, 0x47, 0x6F, 0x37, 0x4F, 0x37, 0x50, 0x37, 0x50, 0x33, 0x0C, 0x1F,
- 0xE7, 0x06, 0xA3, 0x02, 0xA2, 0x02, 0xA3, 0x02, 0xA3, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02,
- 0x64, 0x02, 0x63, 0x02, 0x63, 0x02, 0x63, 0x02, 0x43, 0x02, 0x43, 0x02, 0x43, 0x02, 0x22, 0x02,
- 0x23, 0x02, 0x23, 0x02, 0x43, 0x02, 0x43, 0x02, 0x63, 0x02, 0x63, 0x02, 0x63, 0x02, 0x62, 0x02,
- 0x62, 0x02, 0x81, 0x02, 0xA3, 0x02, 0xC7, 0x0A, 0x0C, 0x23, 0x50, 0x33, 0x30, 0x37, 0x2F, 0x37,
- 0x30, 0x37, 0x75, 0x4B, 0xDB, 0x6B, 0x56, 0x00, 0x2A, 0x00, 0xFD, 0x77, 0xDB, 0x6B, 0xD9, 0x63,
- 0xB9, 0x63, 0xB9, 0x63, 0xB8, 0x5F, 0x71, 0x3B, 0x09, 0x13, 0xC3, 0x02, 0xA0, 0x02, 0xA1, 0x02,
- 0x82, 0x02, 0x82, 0x02, 0x62, 0x02, 0x63, 0x02, 0x43, 0x02, 0x63, 0x02, 0x62, 0x02, 0x42, 0x02,
- 0x42, 0x02, 0x42, 0x02, 0x42, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x42, 0x02, 0x42, 0x02,
- 0x42, 0x02, 0x42, 0x02, 0x42, 0x02, 0x62, 0x02, 0x60, 0x02, 0x60, 0x02, 0xA2, 0x02, 0x0A, 0x17,
- 0x52, 0x3F, 0xB9, 0x5F, 0xB9, 0x63, 0xB9, 0x63, 0xB9, 0x63, 0xDB, 0x6B, 0xFE, 0x77, 0x5C, 0x00,
- 0x1E, 0x00, 0xB7, 0x57, 0x4F, 0x2B, 0xE7, 0x06, 0xC4, 0x06, 0xC5, 0x06, 0xC6, 0x06, 0xA6, 0x06,
- 0xA6, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06,
- 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x87, 0x06, 0x86, 0x06,
- 0x86, 0x06, 0xA6, 0x06, 0xA4, 0x06, 0xA3, 0x06, 0xE7, 0x0A, 0x4F, 0x2F, 0xB8, 0x5B, 0x62, 0x00,
- 0x1E, 0x00, 0xDB, 0x6B, 0x95, 0x4B, 0x4F, 0x2F, 0x2D, 0x2F, 0x2E, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F,
- 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F,
- 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F, 0x0F, 0x2F,
- 0x0F, 0x2F, 0x0E, 0x2F, 0x0D, 0x2F, 0x0C, 0x2F, 0x4F, 0x33, 0x95, 0x4F, 0xDC, 0x6F, 0x62, 0x00,
- 0x1E, 0x00, 0xFE, 0x77, 0xDB, 0x67, 0xB8, 0x5F, 0xB7, 0x5F, 0xB8, 0x5F, 0xB8, 0x5F, 0x98, 0x5F,
- 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F,
- 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F, 0x98, 0x5F,
- 0x98, 0x5F, 0x98, 0x5F, 0x97, 0x5F, 0x97, 0x5F, 0xB8, 0x5F, 0xDB, 0x6B, 0xFE, 0x7B, 0x3F, 0x08,
- 0x00, 0x00
-};
-
-uint16 PS2Icon::decompressData(uint16 **data) {
- uint16 inPos = 1;
- const uint16 *rleData = (const uint16 *)_rleIcoData;
- uint16 resSize = rleData[0];
- uint16 *resData = (uint16 *)memalign(64, resSize * sizeof(uint16));
- uint16 outPos = 0;
-
- while (outPos < resSize) {
- uint16 len = rleData[inPos++];
- while (len--)
- resData[outPos++] = 0x7FFF;
- len = rleData[inPos++];
- while (len--)
- resData[outPos++] = rleData[inPos++];
- }
- assert(outPos == resSize);
-
- *data = resData;
- return resSize;
-}
-
-void PS2Icon::setup(mcIcon *icon) {
- char title[256];
- memset(icon, 0, sizeof(mcIcon));
- memcpy(icon->head, "PS2D", 4);
- icon->nlOffset = strlen(_info) + 1;
- strcpy(title, _info);
- strcpy_sjis((short *)&(icon->title), title);
- icon->trans = 0x10;
- memcpy(icon->bgCol, _bgcolor, sizeof(_bgcolor));
- memcpy(icon->lightDir, _lightdir, sizeof(_lightdir));
- memcpy(icon->lightCol, _lightcol, sizeof(_lightcol));
- memcpy(icon->lightAmbient, _ambient, sizeof(_ambient));
- strcpy((char *)icon->view, "scummvm.icn");
- strcpy((char *)icon->copy, "scummvm.icn");
- strcpy((char *)icon->del, "scummvm.icn");
-}
diff --git a/backends/platform/ps2/icon.h b/backends/platform/ps2/icon.h
deleted file mode 100644
index 9413b8466c..0000000000
--- a/backends/platform/ps2/icon.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-class PS2Icon {
-public:
- uint16 decompressData(uint16 **data);
- void setup(mcIcon *icon);
-};
diff --git a/backends/platform/ps2/iop/CoDyVDfs/Makefile b/backends/platform/ps2/iop/CoDyVDfs/Makefile
deleted file mode 100644
index 4493e77154..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# _____ ___ ____ ___ ____
-# ____| | ____| | | |____|
-# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
-#-----------------------------------------------------------------------
-# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
-# Licenced under Academic Free License version 2.0
-# Review ps2sdk README & LICENSE files for further details.
-#
-# $Id$
-
-
-IOP_OBJS_DIR = obj/
-IOP_BIN_DIR = bin/
-IOP_SRC_DIR = iop/
-IOP_INC_DIR = include/
-
-IOP_BIN = iop/CoDyVDfs.irx
-IOP_OBJS = obj/codyvdfs.o obj/fiofs.o obj/rpcfs.o obj/imports.o
-
-IOP_CFLAGS += -Wall -fno-builtin
-IOP_LDFLAGS += -s
-
-all: $(IOP_OBJS_DIR) $(IOP_BIN_DIR) $(IOP_BIN)
-
-clean:
- rm -f -r $(IOP_OBJS_DIR) $(IOP_BIN_DIR)
-
-include $(PS2SDKSRC)/Defs.make
-include $(PS2SDKSRC)/iop/Rules.make
-include $(PS2SDKSRC)/iop/Rules.release
diff --git a/backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h b/backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h
deleted file mode 100644
index 6ac5a0bb65..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef CDVDFS_COMMON_H
-#define CDVDFS_COMMON_H
-
-#define CDVDFS_IRX_ID 0xD004352
-
-// commands:
-#define READ_RTC 0
-#define SET_READ_SPEED 1
-#define DRIVE_STOP 2
-#define DRIVE_STANDBY 3
-
-#define CdTrayOpen 0
-#define CdTrayClose 1
-#define CdTrayCheck 2
-
-#endif // CDVDFS_COMMON_H
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h b/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h
deleted file mode 100644
index d9bd5287c6..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __CDTYPES_H__
-#define __CDTYPES_H__
-
-typedef unsigned int uint32;
-typedef unsigned short uint16;
-typedef unsigned char uint8;
-typedef signed int int32;
-typedef signed short int16;
-typedef signed char int8;
-
-typedef struct {
- uint8 len_di;
- uint8 attributeLength;
- uint8 lba[4];
- uint16 parent;
- char name[256]; // arbitrary number
-} ISOPathTableRecord __attribute__ ((packed));
-
-typedef struct {
- uint8 year; // Number of years since 1900
- uint8 month; // Month of the year from 1 to 12
- uint8 day; // Day of the Month from 1 to 31
- uint8 hour; // Hour of the day from 0 to 23
- uint8 min; // Minute of the hour from 0 to 59
- uint8 sec; // second of the minute from 0 to 59
- uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
- uint8 padding[10];
-} ISOTime __attribute__ ((packed));
-
-typedef struct {
- uint8 year; // Number of years since 1900
- uint8 month; // Month of the year from 1 to 12
- uint8 day; // Day of the Month from 1 to 31
- uint8 hour; // Hour of the day from 0 to 23
- uint8 min; // Minute of the hour from 0 to 59
- uint8 sec; // second of the minute from 0 to 59
- uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
- //uint8 padding[10];
-} ISOFileTime __attribute__ ((packed));
-
-typedef struct {
- uint8 len_dr;
- uint8 attributeLength;
- uint8 lba[4];
- uint8 lba_BE[4];
- uint8 size[4];
- uint8 size_BE[4];
- ISOFileTime time;
- uint8 flags;
- uint8 fieldSize;
- uint8 gapSize;
- uint8 sequenceNumber[4];
- uint8 len_fi;
- char name[256]; // arbitrary number
-} ISODirectoryRecord __attribute__ ((packed));
-
-typedef struct {
- char volumeSetId[128];
- char publisherId[128];
- char preparerId[128];
- char applicationId[128];
- char copyrightId[37];
- char abstractId[37];
- char bibliographicId[37];
-} ISOIds __attribute__ ((packed));
-
-typedef struct {
- uint16 length;
- uint32 tocLBA;
- uint32 tocLBA_bigend;
- uint32 tocSize;
- uint32 tocSize_bigend;
- uint8 dateStamp[8];
- uint8 reserved[6];
- uint8 reserved2;
- uint8 reserved3;
-} ISORoot __attribute__((packed)); // 0x22
-
-typedef struct {
- uint8 type; // 0x00
- char identifier[5]; // 0x01
- uint8 version; // 0x06
- uint8 reserved1; // 0x07
- char systemIdentifier[32]; // 0x08
- char volumeIdentifier[32]; // 0x28
- uint8 reserved2[8]; // 0x48
- uint32 volumeSpaceSize; // 0x50
- uint32 volumeSpaceSizeBE; // 0x54
- char reserved3[32]; // 0x58
- uint32 volumeSetSize; // 0x78
- uint32 volumeSequenceNumber; // 0x7C
- uint32 logicalBlockSize; // 0x80
- uint32 pathTableSize; // 0x84
- uint32 pathTableSizeBE; // 0x88
- uint32 pathTablePos; // 0x8C
- uint32 pathTable2Pos; // 0x90
- uint32 pathTablePosBE; // 0x94
- uint32 pathTable2PosBE; // 0x98
- ISORoot rootDir; // 0x9C
- ISOIds ids; // 0xBE
- ISOTime creation; // 0x32D
- ISOTime modification; // 0x33E
- ISOTime expiration; // 0x34F
- ISOTime effective; // 0x360
- uint8 fileStructureVersion; // 0x371
- uint8 reserved4; // 0x372
- uint8 applicationUse[512]; // 0x373
- uint8 reserved5[653]; // 0x573
-} ISOPvd __attribute__ ((packed)); // 0x800
-
-#endif // __CDTYPES_H__
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c
deleted file mode 100644
index 3fe0d408c4..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c
+++ /dev/null
@@ -1,346 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <types.h>
-#include <defs.h>
-#include <irx.h>
-#include <sys/stat.h>
-
-#include <stdio.h>
-#include <sysclib.h>
-#include <sysmem.h>
-#include <thbase.h>
-#include <iomanX.h>
-
-#include <io_common.h>
-#include <errno.h>
-
-#include "fiofs.h"
-#include "codyvdfs.h"
-#include "../common/codyvdirx.h"
-
-#define DBG_PRINTF printf
-
-char cachedDir[256];
-int cachedDirLba, cachedDirOfs, cachedDirSize;
-static uint8 cacheBuf[2340];
-
-int mediaType, fsRootLba, fsRootSize;
-
-int verifyDriveReady(void) {
- int res;
- u32 trayStat;
- res = CdTrayReq(CdTrayCheck, &trayStat);
- if ((mediaType == DISC_UNKNOWN) || (res == 0) || (trayStat == 1)) {
- // media was exchanged
- if (checkDiscReady(100) == 0) // wait up to 1 second
- return initDisc();
- else {
- mediaType = DISC_UNKNOWN;
- return -1; // drive still not ready
- }
- }
- if (mediaType == DISC_NONE)
- return -1;
- return 0;
-}
-
-int cacheEnterDir(ISODirectoryRecord *dir) {
- CdRMode rmode = { 16, 0, CdSect2048, 0 };
- char *cacheName;
- cachedDirLba = READ_ARRAY32(dir->lba);
- cachedDirSize = READ_ARRAY32(dir->size);
- cachedDirOfs = 0;
- cacheName = cachedDir + strlen(cachedDir);
- memcpy(cacheName, dir->name, dir->len_fi);
- cacheName[dir->len_fi] = '/';
- cacheName[dir->len_fi + 1] = '\0';
- return cdReadSectors(cachedDirLba, 1, cacheBuf, &rmode);
-}
-
-int initRootCache(void) {
- CdRMode rmode = { 16, 0, CdSect2048, 0 };
- ISODirectoryRecord *root = (ISODirectoryRecord *)cacheBuf;
-
- if (cdReadSectors(fsRootLba, 1, cacheBuf, &rmode) == 0) {
- cachedDir[0] = '\0';
- fsRootSize = READ_ARRAY32(root->size);
- cachedDirLba = fsRootLba;
- cachedDirOfs = 0;
- cachedDirSize = fsRootSize;
- if (READ_ARRAY32(root->lba) == fsRootLba)
- return 0;
- }
- DBG_PRINTF("Can't read root directory table in sector %d\n", fsRootLba);
- mediaType = DISC_NONE;
- return -1;
-}
-
-ISODirectoryRecord *findEntryInCache(const char *name, int nameLen) {
- int i;
- CdRMode rmode = { 16, 0, CdSect2048, 0 };
- ISODirectoryRecord *entry;
- for (i = 0; i < NUM_SECTORS(cachedDirSize); i++) {
- entry = (ISODirectoryRecord *)cacheBuf;
- if (i != cachedDirOfs) {
- if (cdReadSectors(cachedDirLba + i, 1, cacheBuf, &rmode) < 0)
- return NULL;
- cachedDirOfs = i;
- }
-
- while (entry->len_dr && ((uint8 *)entry < cacheBuf + SECTOR_SIZE)) {
- if ((entry->len_fi > 2) && (entry->name[entry->len_fi - 2] == ';') && (entry->name[entry->len_fi - 1] == '1')) {
- if ((nameLen == entry->len_fi - 2) && (strnicmp(name, entry->name, entry->len_fi - 2) == 0))
- return entry;
- } else {
- if ((nameLen == entry->len_fi) && (strnicmp(name, entry->name, entry->len_fi) == 0))
- return entry;
- }
- entry = (ISODirectoryRecord *)( (uint8 *)entry + entry->len_dr );
- }
- }
- return NULL;
-}
-
-ISODirectoryRecord *findPath(const char *path) {
- ISODirectoryRecord *pathPos;
- const char *tok;
-
- if (path[0] == '/')
- path++;
-
- if (strnicmp(cachedDir, path, strlen(cachedDir)) == 0)
- path += strlen(cachedDir); // requested path is somewhere in our cache
- else
- initRootCache(); // not cached, we start again at the cd root
-
- if (path[0] == '/')
- path++;
-
- if (!path[0]) { // open root dir
- if (cachedDirOfs)
- initRootCache();
- return (ISODirectoryRecord *)cacheBuf;
- }
-
- do {
- tok = strchr(path, '/');
- if (tok)
- pathPos = findEntryInCache(path, tok - path);
- else
- pathPos = findEntryInCache(path, strlen(path));
-
- if (pathPos && tok && tok[1] && IS_DIR(pathPos))
- if (cacheEnterDir(pathPos) < 0)
- return NULL;
-
- path = tok + 1;
- } while (pathPos && tok && tok[1]);
- return pathPos;
-}
-
-int checkDiscReady(int retries) {
- if (retries == -1) {
- if (CdDiskReady(0) == 2) // block until drive ready, should always return 2
- return 0;
- } else {
- do {
- if (CdDiskReady(1) == 2)
- return 0;
- DelayThread(10 * 1000);
- } while (--retries >= 0);
- }
- return -1;
-}
-
-
-int initDisc(void) {
- int type, sector, discType;
- ISOPvd *pvd;
- CdRMode rmode = { 16, 0, CdSect2048, 0 };
- ISOPathTableRecord *rootRec;
-
- if (checkDiscReady(0) < 0) {
- printf("disc not ready\n");
- mediaType = DISC_UNKNOWN; // retry later
- return -1;
- }
-
- do { // wait until drive detected disc type
- type = CdGetDiskType();
- if (DISC_NOT_READY(type))
- DelayThread(10 * 1000);
- } while (DISC_NOT_READY(type));
-
- if (type == CdDiskIllegal) {
- printf("Illegal disc type\n");
- mediaType = DISC_NONE;
- return -1;
- }
- if (type == CdDiskNone) {
- printf("Tray empty\n");
- mediaType = DISC_NONE;
- return -1;
- }
-
- discType = DISC_DVD;
- switch (type) {
- case CdDiskCDPS1:
- case CdDiskCDDAPS1:
- case CdDiskCDPS2:
- case CdDiskCDDAPS2:
- case CdDiskCDDA:
- discType = DISC_MODE2;
- rmode.datapattern = CdSect2340;
- default:
- break;
- }
-
- for (sector = 16; sector < 32; sector++) {
- printf("sec %d\n", sector);
- if (cdReadSectors(sector, 1, cacheBuf, &rmode) == 0) {
- if (discType == DISC_DVD)
- pvd = (ISOPvd *)cacheBuf;
- else {
- switch (cacheBuf[3]) {
- case 1:
- discType = DISC_MODE1;
- printf("Disc: Mode1\n");
- pvd = (ISOPvd *)(cacheBuf + 4);
- break;
- case 2:
- discType = DISC_MODE2;
- printf("Disc: Mode2\n");
- pvd = (ISOPvd *)(cacheBuf + 12);
- break;
- default:
- DBG_PRINTF("Unknown Sector Type %02X\n", cacheBuf[3]);
- return -1;
- }
- }
- rmode.datapattern = CdSect2048;
- if ((pvd->type == 1) && (memcmp(pvd->identifier, "CD001", 5) == 0)) { // found ISO9660 PVD
- DBG_PRINTF("Found ISO9660 PVD in sector %d\n", sector);
-
- DBG_PRINTF("reading path table from sector %d\n", pvd->pathTablePos);
- if (cdReadSectors(pvd->pathTablePos, 1, cacheBuf, &rmode) < 0) {
- DBG_PRINTF("Can't read path table\n");
- return -1;
- }
-
- rootRec = (ISOPathTableRecord *)cacheBuf;
- if ((rootRec->len_di != 1) || (rootRec->name[0] != 0)) {
- DBG_PRINTF("Root entry missing: %02X - %02X\n", rootRec->len_di, rootRec->name[0]);
- return -1;
- }
-
- fsRootLba = READ_ARRAY32(rootRec->lba); // this points to the root record
-
- mediaType = discType;
- DBG_PRINTF("Root directory in sector %d\n", fsRootLba);
- return initRootCache();
- }
- }
- }
- mediaType = DISC_NONE;
- // PVD not found
- return -1;
-}
-
-int cdReadSectors(int lba, int num, void *dest, CdRMode *rmode) {
- int err;
- if (CdRead(lba, num, dest, rmode) == 1) {
- CdSync(0);
- err = CdGetError();
- return (err > 0) ? -err : err;
- }
- return -0xFF;
-}
-
-int cd_dummy(void) {
- printf("cd_dummy called!\n");
- return -1;
-}
-
-int cd_init(iop_device_t *dev) {
- printf("FS init\n");
- memset(cachedDir, 0, 256);
- cachedDirLba = cachedDirOfs = 0;
- mediaType = DISC_UNKNOWN;
- return 0;
-}
-
-iop_device_ops_t FS_ops = {
- (void *) cd_init,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_open,
- (void *) cd_close,
- (void *) cd_read,
- (void *) cd_dummy,
- (void *) cd_lseek,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_dopen,
- (void *) cd_dclose,
- (void *) cd_dread,
- (void *) cd_dummy,
- (void *) cd_dummy,
-};
-
-#define FS_NAME "cdfs"
-#define FS_DESC "CD-ROM"
-
-iop_device_t fsdriver = {
- FS_NAME,
- IOP_DT_FS | IOP_DT_FSEXT,
- 1,
- FS_DESC,
- &FS_ops
-};
-
-int _start(void) {
- printf("CoDyVDfs v0.01\n");
-
- CdInit(1);
- DelDrv(FS_NAME);
- AddDrv(&fsdriver);
-
- initRpc();
- initFio();
- return(0);
-}
-
-int strnicmp(const char *s1, const char *s2, int n) {
- if (n) {
- do {
- if (tolower(*s1) != tolower(*s2))
- return tolower(*s1) - tolower(*s2);
- if (*s1++ == '\0')
- break;
- s2++;
- } while (--n);
- }
- return 0;
-}
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h
deleted file mode 100644
index cc903ea841..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __CoDyVDfs_H__
-#define __CoDyVDfs_H__
-
-#include <cdvdman.h>
-#include "cdtypes.h"
-
-typedef cd_read_mode_t CdRMode;
-
-// for reading misaligned ints
-#define READ_ARRAY32(a) \
- (a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24))
-
-#define SECTOR_SIZE 0x800
-#define SECTOR_MASK 0x7FF
-#define NUM_SECTORS(a) ((a + 2047) >> 11)
-
-#define IS_DIR(a) ((a)->flags & 2)
-
-#define DISC_UNKNOWN 0xFE
-#define DISC_NONE 0xFF
-#define DISC_DVD 0
-#define DISC_MODE1 1
-#define DISC_MODE2 2
-
-enum ReadModes {
- CdSect2048 = 0,
- CdSect2328, // 1
- CdSect2340 // 2
-};
-
-enum {
- CdDiskNone = 0x00,
- CdDiskDetect, // 0x01
- CdDiskDetectCD, // 0x02
- CdDiskDetectDVD, // 0x03
- CdDiskDetectUnk = 0x05,
- CdDiskCDPS1 = 0x10,
- CdDiskCDDAPS1 = 0x11,
- CdDiskCDPS2 = 0x12,
- CdDiskCDDAPS2 = 0x13,
- CdDiskDVDPS2 = 0x14,
- CdDiskDVDV2 = 0xFC,
- CdDiskCDDA = 0xFD,
- CdDiskDVDV = 0xFE,
- CdDiskIllegal = 0xFF
-};
-
-#define DISC_NOT_READY(type) ((type > CdDiskNone) && (type < CdDiskCDPS1) && (type != CdDiskDetectUnk))
-
-int initRpc(void);
-
-int verifyDriveReady(void);
-int cdReadSectors(int lba, int num, void *dest, CdRMode *rmode);
-int initRootCache(void);
-ISODirectoryRecord *findPath(const char *path);
-int cacheEnterDir(ISODirectoryRecord *dir);
-int initDisc(void);
-int checkDiscReady(int retries);
-int strnicmp(const char *s1, const char *s2, int n);
-
-#endif // __MYCDVDFS_H__
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c
deleted file mode 100644
index dcf9074916..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "cdtypes.h"
-#include "codyvdfs.h"
-#include <iomanX.h>
-#include <io_common.h>
-#include <errno.h>
-#include <sysmem.h>
-#include <sysclib.h>
-#include <sys/stat.h>
-
-#define MAX_DIO_HANDLES 8
-#define MAX_FIO_HANDLES 32
-
-typedef struct {
- int lba, size, lbaOfs;
- uint32 curOfs;
- uint8 *buf;
-} DioHandle;
-
-typedef struct {
- int lba, size;
- int pos;
- uint8 *buf;
- int cachedLba;
-} FioHandle;
-
-static DioHandle dioHandles[MAX_DIO_HANDLES];
-static FioHandle fioHandles[MAX_FIO_HANDLES];
-
-int initFio(void) {
- int i;
-
- for (i = 0; i < MAX_DIO_HANDLES; i++)
- dioHandles[i].lba = 0;
- for (i = 0; i < MAX_FIO_HANDLES; i++)
- fioHandles[i].lba = 0;
- return 0;
-}
-
-int allocDioHandle(void) {
- int i;
- for (i = 0; i < MAX_DIO_HANDLES; i++)
- if (!dioHandles[i].lba)
- return i;
- return -1;
-}
-
-int allocFioHandle(void) {
- int i;
- for (i = 0; i < MAX_FIO_HANDLES; i++)
- if (!fioHandles[i].lba)
- return i;
- return -1;
-}
-
-int cd_open(iop_file_t *handle, const char *name, int mode) {
- int fdSlot;
- FioHandle *fd;
- ISODirectoryRecord *rec;
-
- if (verifyDriveReady() < 0)
- return -EIO;
-
- rec = findPath(name);
- if (!rec)
- return -ENOENT;
-
- if (IS_DIR(rec))
- return -EISDIR;
-
- fdSlot = allocFioHandle();
- if (fdSlot < 0)
- return -ENFILE;
-
- fd = fioHandles + fdSlot;
-
- fd->buf = AllocSysMemory(ALLOC_FIRST, 0x800, NULL);
- if (!fd->buf)
- return -ENOMEM;
-
- fd->lba = READ_ARRAY32(rec->lba);
- fd->size = READ_ARRAY32(rec->size);
- fd->pos = 0;
- fd->cachedLba = 0;
-
- handle->privdata = (void *)fdSlot;
- return 0;
-}
-
-int cd_lseek(iop_file_t *handle, int ofs, int whence) {
- FioHandle *fd = fioHandles + (int)handle->privdata;
- int newOfs;
- switch(whence) {
- case SEEK_SET:
- newOfs = ofs;
- break;
- case SEEK_CUR:
- newOfs = fd->pos + ofs;
- break;
- case SEEK_END:
- newOfs = fd->size + ofs;
- break;
- default:
- newOfs = -1;
- }
- if ((newOfs >= 0) && (newOfs <= fd->size)) {
- fd->pos = newOfs;
- return newOfs;
- } else
- return -1;
-}
-
-int cd_read(iop_file_t *handle, void *dest, int length) {
- FioHandle *fd = fioHandles + (int)handle->privdata;
- CdRMode rmode = { 16, 0, CdSect2048, 0 };
- int readLba, readPos, bytesLeft;
- uint8 *destPos = (uint8 *)dest;
- int doCopy;
- int numLba;
- readLba = fd->lba + (fd->pos >> 11);
- readPos = fd->pos & 0x7FF;
-
- if (fd->pos + length > fd->size)
- length = fd->size - fd->pos;
-
- if (length < 0)
- return 0;
-
- bytesLeft = length;
- while (bytesLeft > 0) {
- if (readPos || (bytesLeft < 0x800) || (readLba == fd->cachedLba)) {
- if (fd->cachedLba != readLba) {
- if (cdReadSectors(readLba, 1, fd->buf, &rmode) == 0)
- fd->cachedLba = readLba;
- else
- break; // read error
- }
- doCopy = 0x800 - readPos;
- if (doCopy > bytesLeft)
- doCopy = bytesLeft;
-
- memcpy(destPos, fd->buf + readPos, doCopy);
- readPos += doCopy;
- readLba += readPos >> 11;
- readPos &= 0x7FF;
- bytesLeft -= doCopy;
- fd->pos += doCopy;
- destPos += doCopy;
- } else {
- numLba = bytesLeft >> 11;
- if (cdReadSectors(readLba, numLba, destPos, &rmode) != 0)
- break;
- readLba += numLba;
- fd->pos += numLba << 11;
- destPos += numLba << 11;
- bytesLeft &= 0x7FF;
- }
- }
- return destPos - (uint8 *)dest;
-}
-
-int cd_close(iop_file_t *handle) {
- FioHandle *hd = fioHandles + (int)handle->privdata;
- FreeSysMemory(hd->buf);
- hd->lba = hd->pos = hd->size = 0;
- hd->buf = 0;
- return 0;
-}
-
-int cd_dopen(iop_file_t *handle, const char *path) {
- CdRMode rmode = { 16, 0, CdSect2048, 0 };
- int fdSlot;
- ISODirectoryRecord *rec;
-
- if (verifyDriveReady() < 0)
- return -EIO;
-
- rec = findPath(path);
- if (!rec || !IS_DIR(rec))
- return -ENOENT;
-
- fdSlot = allocDioHandle();
-
- if (fdSlot < 0)
- return -ENFILE;
-
- dioHandles[fdSlot].buf = AllocSysMemory(ALLOC_FIRST, 0x800, NULL);
- if (!dioHandles[fdSlot].buf)
- return -ENOMEM;
-
- dioHandles[fdSlot].lba = READ_ARRAY32(rec->lba);
- dioHandles[fdSlot].size = READ_ARRAY32(rec->size);
- if (cdReadSectors(dioHandles[fdSlot].lba, 1, dioHandles[fdSlot].buf, &rmode) != 0) {
- dioHandles[fdSlot].lba = dioHandles[fdSlot].size = 0;
- FreeSysMemory(dioHandles[fdSlot].buf);
- dioHandles[fdSlot].buf = NULL;
- return -EIO;
- }
- dioHandles[fdSlot].curOfs = 0;
- dioHandles[fdSlot].lbaOfs = 0;
- handle->privdata = (void *)fdSlot;
- return fdSlot;
-}
-
-int cd_dread(iop_file_t *handle, iox_dirent_t *buf) {
- CdRMode rmode = { 16, 0, CdSect2048, 0 };
- ISODirectoryRecord *rec;
- DioHandle *hd = dioHandles + (int)handle->privdata;
- int i;
- for (i = hd->lbaOfs; i < NUM_SECTORS(hd->size); i++) {
- if (i != hd->lbaOfs) {
- cdReadSectors(hd->lba + i, 1, hd->buf, &rmode);
- hd->lbaOfs = i;
- hd->curOfs = 0;
- }
- while ((hd->curOfs < SECTOR_SIZE) && ((ISODirectoryRecord *)(hd->buf + hd->curOfs))->len_dr) {
- rec = (ISODirectoryRecord *)(hd->buf + hd->curOfs);
- hd->curOfs += rec->len_dr;
- if ((rec->len_fi != 1) || ((rec->name[0] != 0) && (rec->name[0] != 1))) { // skip '.' / '..'
- memcpy(buf->name, rec->name, rec->len_fi);
- if ((buf->name[rec->len_fi - 2] == ';') && (buf->name[rec->len_fi - 1] == '1'))
- buf->name[rec->len_fi - 2] = '\0';
- else
- buf->name[rec->len_fi] = '\0';
- buf->stat.mode = FIO_S_IRUSR | FIO_S_IXUSR | FIO_S_IRGRP | FIO_S_IXGRP | FIO_S_IROTH | FIO_S_IXOTH;
- buf->stat.mode |= IS_DIR(rec) ? FIO_S_IFDIR : FIO_S_IFREG;
- buf->stat.attr = 0;
- buf->stat.size = READ_ARRAY32(rec->size);
- buf->stat.hisize = 0;
- return 1;
- }
- }
- }
- return 0;
-}
-
-int cd_dclose(iop_file_t *handle) {
- DioHandle *hd;
- hd = dioHandles + (int)handle->privdata;
- FreeSysMemory(hd->buf);
- hd->size = hd->lba = 0;
- return 0;
-}
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h
deleted file mode 100644
index 058594a126..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __FIOFS_H__
-#define __FIOFS_H__
-
-int initFio(void);
-
-int cd_open(iop_file_t *handle, const char *name, int mode);
-int cd_lseek(iop_file_t *handle, int ofs, int whence);
-int cd_read(iop_file_t *handle, void *dest, int length);
-int cd_close(iop_file_t *handle);
-int cd_dopen(iop_file_t *handle, const char *path);
-int cd_dread(iop_file_t *handle, fio_dirent_t *buf);
-int cd_dclose(iop_file_t *handle);
-
-#endif // __FIOFS_H__
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst b/backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst
deleted file mode 100644
index 4950bf8ced..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst
+++ /dev/null
@@ -1,63 +0,0 @@
-
-cdvdman_IMPORTS_start
-I_sceCdInit
-I_sceCdStandby
-I_sceCdRead
-I_sceCdSeek
-I_sceCdGetError
-I_sceCdSync
-I_sceCdGetDiskType
-I_sceCdDiskReady
-I_sceCdTrayReq
-I_sceCdStop
-I_sceCdReadClock
-cdvdman_IMPORTS_end
-
-intrman_IMPORTS_start
-I_CpuSuspendIntr
-I_CpuResumeIntr
-intrman_IMPORTS_end
-
-iomanX_IMPORTS_start
-I_AddDrv
-I_DelDrv
-iomanX_IMPORTS_end
-
-sifcmd_IMPORTS_start
-I_sceSifInitRpc
-I_sceSifSetRpcQueue
-I_sceSifRegisterRpc
-I_sceSifRpcLoop
-sifcmd_IMPORTS_end
-
-stdio_IMPORTS_start
-I_printf
-stdio_IMPORTS_end
-
-sysclib_IMPORTS_start
-I_memcmp
-I_memcpy
-I_memset
-I_strlen
-I_strncmp
-I_strtoul
-I_strcpy
-I_strcat
-I_strchr
-I_strncpy
-I_strtok
-I_strrchr
-I_tolower
-sysclib_IMPORTS_end
-
-sysmem_IMPORTS_start
-I_AllocSysMemory
-I_FreeSysMemory
-sysmem_IMPORTS_end
-
-thbase_IMPORTS_start
-I_CreateThread
-I_StartThread
-I_GetThreadId
-I_DelayThread
-thbase_IMPORTS_end
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/irx_imports.h b/backends/platform/ps2/iop/CoDyVDfs/iop/irx_imports.h
deleted file mode 100644
index 393a7ee9a5..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/irx_imports.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef IOP_IRX_IMPORTS_H
-#define IOP_IRX_IMPORTS_H
-
-#include "irx.h"
-
-#include "cdvdman.h"
-#include "intrman.h"
-#include "iomanX.h"
-#include "loadcore.h"
-#include "sifcmd.h"
-#include "stdio.h"
-#include "sysclib.h"
-#include "sysmem.h"
-#include "thbase.h"
-
-#endif
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c
deleted file mode 100644
index 6d12a451e3..0000000000
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <sifman.h>
-#include <sifrpc.h>
-#include <thbase.h>
-#include <stdio.h>
-#include "codyvdfs.h"
-#include "../common/codyvdirx.h"
-
-struct t_SifRpcDataQueue qd;
-struct t_SifRpcServerData sd0;
-static uint8 rpcBuffer[64];
-
-void *rpcServer(int func, void *data, int size);
-void rpcThread(void *param);
-
-int initRpc(void) {
- iop_thread_t thread;
- int tid;
-
- thread.attr = TH_C;
- thread.thread = rpcThread;
- thread.priority = 40;
- thread.stacksize = 0x1000;
- thread.attr = 0;
-
- tid = CreateThread(&thread);
- if (tid >= 0)
- StartThread(tid, 0);
- else {
- printf("Unable to start RPC Thread!\n");
- return -1;
- }
- return 0;
-}
-
-void rpcThread(void *param) {
- SifInitRpc(0);
- SifSetRpcQueue(&qd, GetThreadId());
- SifRegisterRpc(&sd0, CDVDFS_IRX_ID, rpcServer, (void *)rpcBuffer, 0, 0, &qd);
- SifRpcLoop(&qd);
-}
-
-void *rpcReadClock(void *data) {
- CdReadClock((cd_clock_t *)data);
- return data;
-}
-
-void *driveStop(void *data) {
- if (CdStop() == 1) {
- if (CdSync(0) == 0) {
- *(int *)data = CdGetError();
- } else
- *(int *)data = -0x100;
- } else
- *(int *)data = -0x101;
- return data;
-}
-
-void *driveStandby(void *data) {
- int type;
- if (CdStandby() == 1) {
- if (CdSync(0) == 0) {
- *(int *)data = CdGetError();
- } else
- *(int *)data = -0x100;
- } else
- *(int *)data = -0x101;
-
- do { // wait until drive detected disc type
- type = CdGetDiskType();
- if (DISC_NOT_READY(type))
- DelayThread(10 * 1000);
- } while (DISC_NOT_READY(type));
- printf("Standby: Disc type: %02X\n", type);
-
- return data;
-}
-
-void *rpcServer(int func, void *data, int size) {
- switch (func) {
- case READ_RTC:
- return rpcReadClock(data);
- case DRIVE_STOP:
- return driveStop(data);
- case DRIVE_STANDBY:
- return driveStandby(data);
- default:
- printf("Unknown RPC command %d\n", func);
- return NULL;
- }
- return NULL;
-}
diff --git a/backends/platform/ps2/iop/rpckbd/Makefile b/backends/platform/ps2/iop/rpckbd/Makefile
deleted file mode 100644
index b25efa3660..0000000000
--- a/backends/platform/ps2/iop/rpckbd/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# _____ ___ ____ ___ ____
-# ____| | ____| | | |____|
-# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
-#-----------------------------------------------------------------------
-# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
-# Licenced under Academic Free License version 2.0
-# Review ps2sdk README & LICENSE files for further details.
-#
-# $Id$
-
-
-IOP_OBJS_DIR = obj/
-IOP_BIN_DIR = bin/
-IOP_SRC_DIR = src/
-IOP_INC_DIR = include/
-
-IOP_BIN=bin/rpckbd.irx
-IOP_OBJS=obj/ps2kbd.o obj/imports.o
-
-IOP_CFLAGS=-Wall
-IOP_INCS += -I$(PS2SDKSRC)/iop/usb/usbd/include
-
-all: $(IOP_OBJS_DIR) $(IOP_BIN_DIR) $(IOP_BIN)
-
-clean:
- rm -f -r $(IOP_OBJS_DIR) $(IOP_BIN_DIR)
-
-include $(PS2SDKSRC)/Defs.make
-include $(PS2SDKSRC)/iop/Rules.make
-include $(PS2SDKSRC)/iop/Rules.release
diff --git a/backends/platform/ps2/iop/rpckbd/include/ps2kbd.h b/backends/platform/ps2/iop/rpckbd/include/ps2kbd.h
deleted file mode 100644
index 6bef7caefa..0000000000
--- a/backends/platform/ps2/iop/rpckbd/include/ps2kbd.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-# _____ ___ ____ ___ ____
-# ____| | ____| | | |____|
-# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
-#-----------------------------------------------------------------------
-# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
-#
-# This file is dual licensed, with permission by the original author
-# TyRaNiD, under both the Academic Free License version 2.0 and the GNU
-# General Public License version 2 or later.
-#
-# This means you can choose whether to use this code under the terms of
-# the Academic Free License version 2.0, or under the terms of the GNU
-# General Public License version 2 or later. As long as you comply to the
-# terms of at least one of these, you are allowed to use the code as
-# permitted by the respective license.
-#
-# $Id$
-# USB Keyboard Driver for PS2
-*/
-
-#ifndef __PS2KBD_H__
-#define __PS2KBD_H__
-
-#define PS2KBD_RPC_ID 0xb0b0b80
-
-#define PS2KBD_LED_NUMLOCK 1
-#define PS2KBD_LED_CAPSLOCK 2
-#define PS2KBD_LED_SCRLOCK 4
-#define PS2KBD_LED_COMPOSE 8
-#define PS2KBD_LED_KANA 16
-
-#define PS2KBD_LED_MASK 0x1F;
-
-#define PS2KBD_ESCAPE_KEY 0x1B
-
-#define PS2KBD_LEFT_CTRL (1 << 0)
-#define PS2KBD_LEFT_SHIFT (1 << 1)
-#define PS2KBD_LEFT_ALT (1 << 2)
-#define PS2KBD_LEFT_GUI (1 << 3)
-#define PS2KBD_RIGHT_CTRL (1 << 4)
-#define PS2KBD_RIGHT_SHIFT (1 << 5)
-#define PS2KBD_RIGHT_ALT (1 << 6)
-#define PS2KBD_RIGHT_GUI (1 << 7)
-
-#define PS2KBD_CTRL (PS2KBD_LEFT_CTRL | PS2KBD_RIGHT_CTRL)
-#define PS2KBD_SHIFT (PS2KBD_LEFT_SHIFT | PS2KBD_RIGHT_SHIFT)
-#define PS2KBD_ALT (PS2KBD_LEFT_ALT | PS2KBD_RIGHT_ALT)
-#define PS2KBD_GUI (PS2KBD_LEFT_GUI | PS2KBD_RIGHT_GUI)
-
-#define PS2KBD_RAWKEY_UP 0xF0
-#define PS2KBD_RAWKEY_DOWN 0xF1
-
-typedef struct _kbd_rawkey {
- u8 state;
- u8 key;
-} kbd_rawkey __attribute__ ((packed));
-
-#define PS2KBD_READMODE_NORMAL 1
-#define PS2KBD_READMODE_RAW 2
-
-/* Notes on read mode */
-/* In normal readmode (default) read multiples of 1 character off the keyboard file. These are
- processed by the keymaps so that you get back ASCII data */
-/* In raw readmode must read multiples of 2. First byte indicates state (i.e. Up or Down)
- Second byte is the USB key code for that key. This table is presented in the USB HID Usage Tables manaual
- from usb.org */
-
-#define PS2KBD_KEYMAP_SIZE 256
-
-typedef struct _kbd_keymap
-
-{
- u8 keymap[PS2KBD_KEYMAP_SIZE];
- u8 shiftkeymap[PS2KBD_KEYMAP_SIZE];
- u8 keycap[PS2KBD_KEYMAP_SIZE];
-} kbd_keymap;
-
-
-/* IRPC function numbers */
-#define KBD_RPC_SETREADMODE 1 /* Sets up keymapped or raw mode */
-#define KBD_RPC_SETLEDS 2 /* Sets the LED state for ALL keyboards connected */
-#define KBD_RPC_SETREPEATRATE 3 /* Sets the repeat rate of the keyboard */
-#define KBD_RPC_SETKEYMAP 4 /* Sets the keymap for the standard keys, non shifted and shifted */
-#define KBD_RPC_SETCTRLMAP 5 /* Sets the control key mapping */
-#define KBD_RPC_SETALTMAP 6 /* Sets the alt key mapping */
-#define KBD_RPC_SETSPECIALMAP 7 /* Sets the special key mapping */
-#define KBD_RPC_FLUSHBUFFER 9 /* Flush the internal buffer, probably best after a keymap change */
-#define KBD_RPC_RESETKEYMAP 10 /* Reset keymaps to default states */
-#define KBD_RPC_READKEY 11
-#define KBD_RPC_READRAW 12
-
-/* Note on keymaps. In normal keymap a 0 would indicate no key */
-/* Key maps are represented by 3 256*8bit tables. First table maps USB key to a char when not shifted */
-/* Second table maps USB key to a char when shifted */
-/* Third table contains boolean values. If 1 then the key is shifted/unshifted in capslock, else capslock is ignored */
-
-#endif
diff --git a/backends/platform/ps2/iop/rpckbd/src/imports.lst b/backends/platform/ps2/iop/rpckbd/src/imports.lst
deleted file mode 100644
index e9ba01e020..0000000000
--- a/backends/platform/ps2/iop/rpckbd/src/imports.lst
+++ /dev/null
@@ -1,57 +0,0 @@
-
-sysclib_IMPORTS_start
-I_memset
-I_strcmp
-I_memcpy
-sysclib_IMPORTS_end
-
-loadcore_IMPORTS_start
-I_FlushDcache
-loadcore_IMPORTS_end
-
-sifcmd_IMPORTS_start
-I_sceSifInitRpc
-I_sceSifSetRpcQueue
-I_sceSifRegisterRpc
-I_sceSifRpcLoop
-sifcmd_IMPORTS_end
-
-stdio_IMPORTS_start
-I_printf
-stdio_IMPORTS_end
-
-thsemap_IMPORTS_start
-I_CreateSema
-I_SignalSema
-I_WaitSema
-I_PollSema
-I_DeleteSema
-thsemap_IMPORTS_end
-
-thbase_IMPORTS_start
-I_StartThread
-I_CreateThread
-I_USec2SysClock
-I_iSetAlarm
-I_SetAlarm
-I_CancelAlarm
-thbase_IMPORTS_end
-
-thevent_IMPORTS_start
-I_WaitEventFlag
-I_iSetEventFlag
-I_CreateEventFlag
-thevent_IMPORTS_end
-
-sysmem_IMPORTS_start
-I_AllocSysMemory
-I_FreeSysMemory
-sysmem_IMPORTS_end
-
-usbd_IMPORTS_start
-I_UsbGetDeviceStaticDescriptor
-I_UsbOpenEndpoint
-I_UsbSetDevicePrivateData
-I_UsbTransfer
-I_UsbRegisterDriver
-usbd_IMPORTS_end
diff --git a/backends/platform/ps2/iop/rpckbd/src/irx_imports.h b/backends/platform/ps2/iop/rpckbd/src/irx_imports.h
deleted file mode 100644
index 193db4f02a..0000000000
--- a/backends/platform/ps2/iop/rpckbd/src/irx_imports.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef IOP_IRX_IMPORTS_H
-#define IOP_IRX_IMPORTS_H
-
-#include "irx.h"
-
-#include "dmacman.h"
-#include "intrman.h"
-#include "libsd.h"
-#include "loadcore.h"
-#include "sifcmd.h"
-#include "stdio.h"
-#include "sysclib.h"
-#include "sysmem.h"
-#include "thbase.h"
-#include "thevent.h"
-#include "thmsgbx.h"
-#include "thsemap.h"
-#include "usbd.h"
-#include "vblank.h"
-
-#endif
diff --git a/backends/platform/ps2/iop/rpckbd/src/ps2kbd.c b/backends/platform/ps2/iop/rpckbd/src/ps2kbd.c
deleted file mode 100644
index 838ce9fe85..0000000000
--- a/backends/platform/ps2/iop/rpckbd/src/ps2kbd.c
+++ /dev/null
@@ -1,1207 +0,0 @@
-/*
-# _____ ___ ____ ___ ____
-# ____| | ____| | | |____|
-# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
-#-----------------------------------------------------------------------
-# Copyright 2001-2005, ps2dev - http://www.ps2dev.org
-#
-# This file is dual licensed, with permission by the original author
-# TyRaNiD, under both the Academic Free License version 2.0 and the GNU
-# General Public License version 2 or later.
-#
-# This means you can choose whether to use this code under the terms of
-# the Academic Free License version 2.0, or under the terms of the GNU
-# General Public License version 2 or later. As long as you comply to the
-# terms of at least one of these, you are allowed to use the code as
-# permitted by the respective license.
-#
-# $Id$
-# USB Keyboard Driver for PS2
-*/
-
-#include "types.h"
-#include "ioman.h"
-#include "loadcore.h"
-#include "stdio.h"
-#include "sifcmd.h"
-#include "sifrpc.h"
-#include "sysclib.h"
-#include "sysmem.h"
-#include "usbd.h"
-#include "usbd_macro.h"
-#include "thbase.h"
-#include "thevent.h"
-#include "thsemap.h"
-
-#include "ps2kbd.h"
-#include "us_keymap.h"
-
-#define PS2KBD_VERSION 0x100
-
-#define USB_SUBCLASS_BOOT 1
-#define USB_HIDPROTO_KEYBOARD 1
-
-#define PS2KBD_MAXDEV 2
-#define PS2KBD_MAXKEYS 6
-
-#define PS2KBD_DEFLINELEN 4096
-#define PS2KBD_DEFREPEATRATE 100
-/* Default repeat rate in milliseconds */
-#define PS2KBD_REPEATWAIT 1000
-/* Number of milliseconds to wait before starting key repeat */
-#define USB_KEYB_NUMLOCK 0x53
-#define USB_KEYB_CAPSLOCK 0x39
-#define USB_KEYB_SCRLOCK 0x47
-
-#define USB_KEYB_NUMPAD_START 0x54
-#define USB_KEYB_NUMPAD_END 0x63
-
-#define SEMA_ZERO -419
-#define SEMA_DELETED -425
-
-int ps2kbd_init();
-void ps2kbd_config_set(int resultCode, int bytes, void *arg);
-void ps2kbd_idlemode_set(int resultCode, int bytes, void *arg);
-void ps2kbd_data_recv(int resultCode, int bytes, void *arg);
-int ps2kbd_probe(int devId);
-int ps2kbd_connect(int devId);
-int ps2kbd_disconnect(int devId);
-void usb_getstring(int endp, int index, char *desc);
-
-typedef struct _kbd_data_recv
-
-{
- u8 mod_keys;
- u8 reserved;
- u8 keycodes[PS2KBD_MAXKEYS];
-} kbd_data_recv;
-
-typedef struct _keyb_dev
-
-{
- int configEndp;
- int dataEndp;
- int packetSize;
- int devId;
- int interfaceNo; /* Holds the interface number selected on this device */
- char repeatkeys[2];
- u32 eventmask;
- u8 ledStatus; /* Maintains state on the led status */
- kbd_data_recv oldData;
- kbd_data_recv data; /* Holds the data for the transfers */
-} kbd_dev;
-
-/* Global Variables */
-
-int kbd_readmode;
-u32 kbd_repeatrate;
-kbd_dev *devices[PS2KBD_MAXDEV]; /* Holds a list of current devices */
-int dev_count;
-UsbDriver kbd_driver = { NULL, NULL, "PS2Kbd", ps2kbd_probe, ps2kbd_connect, ps2kbd_disconnect };
-u8 *lineBuffer;
-u32 lineStartP, lineEndP;
-int lineSema;
-int bufferSema;
-u32 lineSize;
-u8 keymap[PS2KBD_KEYMAP_SIZE]; /* Normal key map */
-u8 shiftkeymap[PS2KBD_KEYMAP_SIZE]; /* Shifted key map */
-u8 keycap[PS2KBD_KEYMAP_SIZE]; /* Does this key get shifted by capslock ? */
-u8 special_keys[PS2KBD_KEYMAP_SIZE];
-u8 control_map[PS2KBD_KEYMAP_SIZE];
-u8 alt_map[PS2KBD_KEYMAP_SIZE];
-//static struct fileio_driver kbd_fdriver;
-iop_device_t kbd_filedrv;
-u8 keyModValue[8] = { 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7 };
-int repeat_tid;
-int eventid; /* Id of the repeat event */
-
-int _start ()
-{
- FlushDcache();
-
- ps2kbd_init();
-
- printf("PS2KBD - USB Keyboard Library\n");
-
- return 0;
-
-}
-
-int ps2kbd_probe(int devId)
-
-{
- UsbDeviceDescriptor *dev;
- UsbConfigDescriptor *conf;
- UsbInterfaceDescriptor *intf;
- UsbEndpointDescriptor *endp;
- //UsbStringDescriptor *str;
-
- if(dev_count >= PS2KBD_MAXDEV)
- {
- printf("ERROR: Maximum keyboard devices reached\n");
- return 0;
- }
-
- //printf("PS2Kbd_probe devId %d\n", devId);
-
- dev = UsbGetDeviceStaticDescriptor(devId, NULL, USB_DT_DEVICE); /* Get device descriptor */
- if(!dev)
- {
- printf("ERROR: Couldn't get device descriptor\n");
- return 0;
- }
-
- //printf("Device class %d, Size %d, Man %d, Product %d Cpnfigurations %d\n", dev->bDeviceClass, dev->bMaxPacketSize0, dev->iManufacturer, dev->iProduct, dev->bNumConfigurations);
- /* Check that the device class is specified in the interfaces and it has at least one configuration */
- if((dev->bDeviceClass != USB_CLASS_PER_INTERFACE) || (dev->bNumConfigurations < 1))
- {
- //printf("This is not the droid you're looking for\n");
- return 0;
- }
-
- conf = UsbGetDeviceStaticDescriptor(devId, dev, USB_DT_CONFIG);
- if(!conf)
- {
- printf("ERROR: Couldn't get configuration descriptor\n");
- return 0;
- }
- //printf("Config Length %d Total %d Interfaces %d\n", conf->bLength, conf->wTotalLength, conf->bNumInterfaces);
-
- if((conf->bNumInterfaces < 1) || (conf->wTotalLength < (sizeof(UsbConfigDescriptor) + sizeof(UsbInterfaceDescriptor))))
- {
- printf("ERROR: No interfaces available\n");
- return 0;
- }
-
- intf = (UsbInterfaceDescriptor *) ((char *) conf + conf->bLength); /* Get first interface */
-/* printf("Interface Length %d Endpoints %d Class %d Sub %d Proto %d\n", intf->bLength, */
-/* intf->bNumEndpoints, intf->bInterfaceClass, intf->bInterfaceSubClass, */
-/* intf->bInterfaceProtocol); */
-
- if((intf->bInterfaceClass != USB_CLASS_HID) || (intf->bInterfaceSubClass != USB_SUBCLASS_BOOT) ||
- (intf->bInterfaceProtocol != USB_HIDPROTO_KEYBOARD) || (intf->bNumEndpoints < 1))
-
- {
- //printf("We came, we saw, we told it to fuck off\n");
- return 0;
- }
-
- endp = (UsbEndpointDescriptor *) ((char *) intf + intf->bLength);
- endp = (UsbEndpointDescriptor *) ((char *) endp + endp->bLength); /* Go to the data endpoint */
-
- //printf("Endpoint 1 Addr %d, Attr %d, MaxPacket %d\n", endp->bEndpointAddress, endp->bmAttributes, endp->wMaxPacketSizeLB);
-
- if(((endp->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT) ||
- ((endp->bEndpointAddress & USB_ENDPOINT_DIR_MASK) != USB_DIR_IN))
- {
- printf("ERROR: Endpoint not interrupt type and/or an input\n");
- return 0;
- }
-
- printf("PS2KBD: Found a keyboard device\n");
-
- return 1;
-}
-
-int ps2kbd_connect(int devId)
-
-{
- /* Assume we can only get here if we have already checked the device is kosher */
-
- UsbDeviceDescriptor *dev;
- UsbConfigDescriptor *conf;
- UsbInterfaceDescriptor *intf;
- UsbEndpointDescriptor *endp;
- kbd_dev *currDev;
- int devLoop;
-
- //printf("PS2Kbd_connect devId %d\n", devId);
-
- dev = UsbGetDeviceStaticDescriptor(devId, NULL, USB_DT_DEVICE); /* Get device descriptor */
- if(!dev)
- {
- printf("ERROR: Couldn't get device descriptor\n");
- return 1;
- }
-
- conf = UsbGetDeviceStaticDescriptor(devId, dev, USB_DT_CONFIG);
- if(!conf)
- {
- printf("ERROR: Couldn't get configuration descriptor\n");
- return 1;
- }
-
- intf = (UsbInterfaceDescriptor *) ((char *) conf + conf->bLength); /* Get first interface */
- endp = (UsbEndpointDescriptor *) ((char *) intf + intf->bLength);
- endp = (UsbEndpointDescriptor *) ((char *) endp + endp->bLength); /* Go to the data endpoint */
-
- for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++)
- {
- if(devices[devLoop] == NULL)
- {
- break;
- }
- }
-
- if(devLoop == PS2KBD_MAXDEV)
- {
- /* How the f*** did we end up here ??? */
- printf("ERROR: Device Weirdness!!\n");
- return 1;
- }
-
- currDev = (kbd_dev *) AllocSysMemory(0, sizeof(kbd_dev), NULL);
- if(!currDev)
- {
- printf("ERROR: Couldn't allocate a device point for the kbd\n");
- return 1;
- }
-
- devices[devLoop] = currDev;
- memset(currDev, 0, sizeof(kbd_dev));
- currDev->configEndp = UsbOpenEndpoint(devId, NULL);
- currDev->dataEndp = UsbOpenEndpoint(devId, endp);
- currDev->packetSize = endp->wMaxPacketSizeLB | ((int) endp->wMaxPacketSizeHB << 8);
- currDev->eventmask = (1 << devLoop);
- if(currDev->packetSize > sizeof(kbd_data_recv))
- {
- currDev->packetSize = sizeof(kbd_data_recv);
- }
-
- if(dev->iManufacturer != 0)
- {
- usb_getstring(currDev->configEndp, dev->iManufacturer, "Keyboard Manufacturer");
- }
-
- if(dev->iProduct != 0)
- {
- usb_getstring(currDev->configEndp, dev->iProduct, "Keyboard Product");
- }
-
- currDev->devId = devId;
- currDev->interfaceNo = intf->bInterfaceNumber;
- currDev->ledStatus = 0;
-
- UsbSetDevicePrivateData(devId, currDev); /* Set the index for the device data */
-
- //printf("Configuration value %d\n", conf->bConfigurationValue);
- UsbSetDeviceConfiguration(currDev->configEndp, conf->bConfigurationValue, ps2kbd_config_set, currDev);
-
- dev_count++; /* Increment device count */
- printf("PS2KBD: Connected device\n");
-
- return 0;
-}
-
-int ps2kbd_disconnect(int devId)
-
-{
- int devLoop;
- printf("PS2Kbd_disconnect devId %d\n", devId);
-
- for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++)
- {
- if((devices[devLoop]) && (devices[devLoop]->devId == devId))
- {
- dev_count--;
- FreeSysMemory(devices[devLoop]);
- devices[devLoop] = NULL;
- printf("PS2KBD: Disconnected device\n");
- break;
- }
- }
-
- return 0;
-}
-
-typedef struct _string_descriptor
-
-{
- u8 buf[200];
- char *desc;
-} string_descriptor;
-
-void ps2kbd_getstring_set(int resultCode, int bytes, void *arg)
-
-{
- UsbStringDescriptor *str = (UsbStringDescriptor *) arg;
- string_descriptor *strBuf = (string_descriptor *) arg;
- char string[50];
- int strLoop;
-
-/* printf("=========getstring=========\n"); */
-
-/* printf("PS2KEYBOARD: GET_DESCRIPTOR res %d, bytes %d, arg %p\n", resultCode, bytes, arg); */
-
- if(resultCode == USB_RC_OK)
- {
- memset(string, 0, 50);
- for(strLoop = 0; strLoop < ((bytes - 2) / 2); strLoop++)
- {
- string[strLoop] = str->wData[strLoop] & 0xFF;
- }
- printf("%s: %s\n", strBuf->desc, string);
- }
-
- FreeSysMemory(arg);
-}
-
-void usb_getstring(int endp, int index, char *desc)
-
-{
- u8 *data;
- string_descriptor *str;
- int ret;
-
- data = (u8 *) AllocSysMemory(0, sizeof(string_descriptor), NULL);
- str = (string_descriptor *) data;
-
- if(data != NULL)
- {
- str->desc = desc;
- ret = UsbControlTransfer(endp, 0x80, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) | index,
- 0, sizeof(string_descriptor) - 4, data, ps2kbd_getstring_set, data);
- if(ret != USB_RC_OK)
- {
- printf("PS2KBD: Error sending string descriptor request\n");
- FreeSysMemory(data);
- }
- }
-}
-
-void ps2kbd_config_set(int resultCode, int bytes, void *arg)
- /* Called when we have finished choosing our configuration */
-
-{
- kbd_dev *dev;
-
- if(resultCode != USB_RC_OK)
- {
- printf("PS2KEYBOARD: Configuration set error res %d, bytes %d, arg %p\n", resultCode, bytes, arg);
- return;
- }
-
- //printf("PS2KEYBOARD: Configuration set res %d, bytes %d, arg %p\n", resultCode, bytes, arg);
- /* Do a interrupt data transfer */
-
- dev = (kbd_dev *) arg;
- if(dev != NULL)
- {
- int ret;
-
- ret = UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_IDLE, 0, dev->interfaceNo, 0, NULL, ps2kbd_idlemode_set, arg);
- }
-}
-
-void ps2kbd_idlemode_set(int resultCode, int bytes, void *arg)
-
-{
- kbd_dev *dev;
-
-
-
- if(resultCode != USB_RC_OK)
- {
- printf("PS2KBD: Idlemode set error res %d, bytes %d, arg %p\n", resultCode, bytes, arg);
- return;
- }
-
- dev = (kbd_dev *) arg;
- if(dev != NULL)
- {
- int ret;
-
- ret = UsbInterruptTransfer(dev->dataEndp, &dev->data, dev->packetSize, ps2kbd_data_recv, arg);
- }
-}
-
-void ps2kbd_led_set(int resultCode, int bytes, void *arg)
-
-{
- //printf("LED Set\n");
-}
-
-void ps2kbd_build_uniquekeys(u8 *res, const u8 *new, const u8 *old)
-
- /* Builds a list of unique keys */
-
-{
- int loopNew, loopOld;
- int loopRes = 0;
- int foundKey;
-
- for(loopNew = 0; loopNew < PS2KBD_MAXKEYS; loopNew++)
- {
- if(new[loopNew] != 0)
- {
- foundKey = 0;
- for(loopOld = 0; loopOld < PS2KBD_MAXKEYS; loopOld++)
- {
- if(new[loopNew] == old[loopOld])
- {
- foundKey = 1;
- break;
- }
- }
- if(!foundKey)
- {
- res[loopRes++] = new[loopNew];
- }
- }
- }
-}
-
-u32 ps2kbd_repeathandler(void *arg)
-
-{
- kbd_dev *dev = arg;
- iop_sys_clock_t t;
- //printf("Repeat handler\n");
-
- iSetEventFlag(eventid, dev->eventmask);
-
- USec2SysClock(kbd_repeatrate * 1000, &t);
- iSetAlarm(&t, ps2kbd_repeathandler, arg);
-
- return t.hi;
-}
-
-void ps2kbd_getkeys(u8 keyMods, u8 ledStatus, const u8 *keys, kbd_dev *dev)
-
-{
- int loopKey;
- int tempPos = 0;
- int byteCount = 0;
- u8 currChars[2];
-
- if(lineStartP < lineEndP)
- {
- tempPos = lineStartP + lineSize;
- }
- else
- {
- tempPos = lineStartP;
- }
-
- for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++)
- {
- u8 currKey = keys[loopKey];
-
- currChars[0] = 0;
- currChars[1] = 0;
-
- if(lineEndP == (tempPos - 1))
- {
- break;
- }
-
- if(currKey) /* If this is a valid key */
- {
- if((currKey >= USB_KEYB_NUMPAD_START) && (currKey <= USB_KEYB_NUMPAD_END))
- /* Handle numpad specially */
- {
- if(ledStatus & PS2KBD_LED_NUMLOCK)
- {
- if(keymap[currKey])
- {
- currChars[0] = keymap[currKey];
- }
- }
- else
- {
- if(special_keys[currKey])
- {
- currChars[0] = PS2KBD_ESCAPE_KEY;
- currChars[1] = special_keys[currKey];
- }
- else if(keymap[currKey] != '5') /* Make sure this isnt a 5 key :) */
- {
- currChars[0] = keymap[currKey];
- }
- }
- }
- else if(special_keys[currKey]) /* This is a special key */
- {
- currChars[0] = PS2KBD_ESCAPE_KEY;
- currChars[1] = special_keys[currKey];
- }
- else if(keyMods & PS2KBD_CTRL) /* CTRL */
- {
- if(control_map[currKey])
- {
- currChars[0] = control_map[currKey];
- }
- }
- else if(keyMods & PS2KBD_ALT) /* ALT */
- {
- if(alt_map[currKey])
- {
- currChars[0] = alt_map[currKey];
- }
- }
- else if(keyMods & PS2KBD_SHIFT) /* SHIFT */
- {
- if((ledStatus & PS2KBD_LED_CAPSLOCK) && (keycap[currKey]))
- {
- currChars[0] = keymap[currKey];
- }
- else
- {
- currChars[0] = shiftkeymap[currKey];
- }
- }
- else /* Normal key */
- {
- if(keymap[keys[loopKey]])
- {
- if((ledStatus & PS2KBD_LED_CAPSLOCK) && (keycap[currKey]))
- {
- currChars[0] = shiftkeymap[currKey];
- }
- else
- {
- currChars[0] = keymap[currKey];
- }
- }
- }
- }
-
- if((currChars[0] == PS2KBD_ESCAPE_KEY) && (currChars[1] != 0))
- {
- if(lineEndP != (tempPos - 2))
- {
- lineBuffer[lineEndP++] = currChars[0];
- lineEndP %= lineSize;
- lineBuffer[lineEndP++] = currChars[1];
- lineEndP %= lineSize;
- byteCount += 2;
- }
- dev->repeatkeys[0] = currChars[0];
- dev->repeatkeys[1] = currChars[1];
- }
- else if(currChars[0] != 0)
- {
- lineBuffer[lineEndP++] = currChars[0];
- lineEndP %= lineSize;
- byteCount++;
- dev->repeatkeys[0] = currChars[0];
- dev->repeatkeys[1] = 0;
- }
- }
-
- if(byteCount > 0)
- {
- iop_sys_clock_t t;
- /* Set alarm to do repeat rate */
- //printf("repeatkeys %d %d\n", kbd_repeatkeys[0], kbd_repeatkeys[1]);
- USec2SysClock(PS2KBD_REPEATWAIT * 1000, &t);
- SetAlarm(&t, ps2kbd_repeathandler, dev);
- }
-
- for(loopKey = 0; loopKey < byteCount; loopKey++) /* Signal the sema to indicate data */
- {
- SignalSema(bufferSema);
- }
-
-/* lineBuffer[PS2KBD_DEFLINELEN - 1] = 0; */
-/* printf(lineBuffer); */
- //printf("lineStart %d, lineEnd %d\n", lineStartP, lineEndP);
-}
-
-
-void ps2kbd_getkeys_raw(u8 newKeyMods, u8 oldKeyMods, u8 *new, const u8 *old)
-
-{
- int loopKey;
- u8 currKey;
- u8 keyMods = newKeyMods ^ oldKeyMods;
- u8 keyModsMap = newKeyMods & keyMods;
- int tempPos = 0;
- int byteCount = 0;
-
- if(lineStartP < lineEndP)
- {
- tempPos = lineStartP + lineSize;
- }
- else
- {
- tempPos = lineStartP;
- }
-
- for(loopKey = 0; loopKey < 8; loopKey++)
- {
- int currMod = (1 << loopKey);
- if(keyMods & currMod)
- {
- if(lineEndP == (tempPos - 2))
- {
- return;
- }
-
- currKey = keyModValue[loopKey];
-
- if(keyModsMap & currMod) /* If key pressed */
- {
- lineBuffer[lineEndP++] = PS2KBD_RAWKEY_DOWN;
- //printf("Key down\n");
- }
- else
- {
- lineBuffer[lineEndP++] = PS2KBD_RAWKEY_UP;
- //printf("Key up\n");
- }
-
- lineEndP %= lineSize;
- lineBuffer[lineEndP++] = currKey;
- lineEndP %= lineSize;
- byteCount += 2;
- //printf("Key %d\n", currKey);
- }
- }
-
- for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++)
- {
- if(lineEndP == (tempPos - 2))
- {
- return;
- }
-
- if(new[loopKey] != 0)
- {
- lineBuffer[lineEndP++] = PS2KBD_RAWKEY_DOWN;
- lineEndP %= lineSize;
- lineBuffer[lineEndP++] = new[loopKey];
- lineEndP %= lineSize;
- byteCount += 2;
- //printf("Key down\nKey %d\n", new[loopKey]);
- }
-
- }
-
- for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++)
- {
- if(lineEndP == (tempPos - 2))
- {
- return;
- }
-
- if(old[loopKey] != 0)
- {
- lineBuffer[lineEndP++] = PS2KBD_RAWKEY_UP;
- lineEndP %= lineSize;
- lineBuffer[lineEndP++] = old[loopKey];
- lineEndP %= lineSize;
- byteCount += 2;
- //printf("Key up\nKey %d\n", old[loopKey]);
- }
-
- }
-
- for(loopKey = 0; loopKey < byteCount; loopKey++) /* Signal the sema for the number of bytes read */
- {
- SignalSema(bufferSema);
- }
-}
-
-void ps2kbd_data_recv(int resultCode, int bytes, void *arg)
-
-{
- kbd_dev *dev;
- int ret;
- int phantom;
- int loop;
-
- if(resultCode != USB_RC_OK)
- {
- printf("PS2KEYBOARD: Data Recv set res %d, bytes %d, arg %p\n", resultCode, bytes, arg);
- return;
- }
-
- //printf("PS2KBD: Data Recv set res %d, bytes %d, arg %p\n", resultCode, bytes, arg);
-
- dev = (kbd_dev *) arg;
- if(dev == NULL)
- {
- printf("PS2KBD: dev == NULL\n");
- return;
- }
-
-/* printf("PS2KBD Modifiers %02X, Keys ", dev->data.mod_keys); */
-/* for(loop = 0; loop < PS2KBD_MAXKEYS; loop++) */
-/* { */
-/* printf("%02X ", dev->data.keycodes[loop]); */
-/* } */
-/* printf("\n"); */
-
- CancelAlarm(ps2kbd_repeathandler, dev); /* Make sure repeat alarm is cancelled */
-
- /* Check for phantom states */
- phantom = 1;
- for(loop = 0; loop < PS2KBD_MAXKEYS; loop++)
- {
- if(dev->data.keycodes[loop] != 1)
- {
- phantom = 0;
- break;
- }
- }
-
- if(!phantom) /* If not in a phantom state */
- {
- u8 uniqueKeys[PS2KBD_MAXKEYS];
- u8 missingKeys[PS2KBD_MAXKEYS];
- int loopKey;
-
- memset(uniqueKeys, 0, PS2KBD_MAXKEYS);
- memset(missingKeys, 0, PS2KBD_MAXKEYS);
- ps2kbd_build_uniquekeys(uniqueKeys, dev->data.keycodes, dev->oldData.keycodes);
- ps2kbd_build_uniquekeys(missingKeys, dev->oldData.keycodes, dev->data.keycodes);
- /* Build new and missing key lists */
-
-/* printf("Unique keys : "); */
-/* for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) */
-/* { */
-/* printf("%02X ", uniqueKeys[loopKey]); */
-/* } */
-/* printf("\n"); */
-
-/* printf("Missing keys : "); */
-/* for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) */
-/* { */
-/* printf("%02X ", missingKeys[loopKey]); */
-/* } */
-/* printf("\n"); */
-
- if(kbd_readmode == PS2KBD_READMODE_NORMAL)
- {
- u8 ledStatus;
-
- ledStatus = dev->ledStatus;
- //printf("ledStatus %02X\n", ledStatus);
-
- for(loopKey = 0; loopKey < PS2KBD_MAXKEYS; loopKey++) /* Process key codes */
- {
- switch(uniqueKeys[loopKey])
- {
- case USB_KEYB_NUMLOCK :
- ledStatus ^= PS2KBD_LED_NUMLOCK;
- uniqueKeys[loopKey] = 0;
- break;
- case USB_KEYB_CAPSLOCK :
- ledStatus ^= PS2KBD_LED_CAPSLOCK;
- uniqueKeys[loopKey] = 0;
- break;
- case USB_KEYB_SCRLOCK :
- ledStatus ^= PS2KBD_LED_SCRLOCK;
- uniqueKeys[loopKey] = 0;
- break;
- }
- }
-
- if(ledStatus != dev->ledStatus)
- {
- dev->ledStatus = ledStatus & PS2KBD_LED_MASK;
- //printf("LEDS %02X\n", dev->ledStatus);
- /* Call Set LEDS */
- UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_REPORT, 0x200,
- dev->interfaceNo, 1, &dev->ledStatus, ps2kbd_led_set, arg);
- }
-
- WaitSema(lineSema); /* Make sure no other thread is going to manipulate the buffer */
- ps2kbd_getkeys(dev->data.mod_keys, dev->ledStatus, uniqueKeys, dev); /* read in remaining keys */
- SignalSema(lineSema);
- }
- else /* RAW Mode */
- {
- WaitSema(lineSema);
- ps2kbd_getkeys_raw(dev->data.mod_keys, dev->oldData.mod_keys, uniqueKeys, missingKeys);
- SignalSema(lineSema);
- }
-
- memcpy(&dev->oldData, &dev->data, sizeof(kbd_data_recv));
- }
-
- ret = UsbInterruptTransfer(dev->dataEndp, &dev->data, dev->packetSize, ps2kbd_data_recv, arg);
-}
-
-void flushbuffer()
-
-{
- iop_sema_t s;
-
- lineStartP = 0;
- lineEndP = 0;
- memset(lineBuffer, 0, lineSize);
-
- DeleteSema(bufferSema);
- s.initial = 0;
- s.max = lineSize;
- s.option = 0;
- s.attr = 0;
- bufferSema = CreateSema(&s); /* Create a sema to maintain status of readable data */
-
- if(bufferSema <= 0)
- {
- printf("Error creating buffer sema\n");
- }
-}
-
-void ps2kbd_rpc_setreadmode(u32 readmode)
-
-{
- int devLoop;
-
- if(readmode == kbd_readmode) return;
-
- if((readmode == PS2KBD_READMODE_NORMAL) || (readmode == PS2KBD_READMODE_RAW))
- {
- /* Reset line buffer */
- //printf("ioctl_setreadmode %d\n", readmode);
- for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++)
- {
- CancelAlarm(ps2kbd_repeathandler, devices[devLoop]);
- }
-
- WaitSema(lineSema);
- kbd_readmode = readmode;
- flushbuffer();
- SignalSema(lineSema);
- }
-}
-
-void ps2kbd_rpc_setkeymap(kbd_keymap *keymaps)
-
-{
- //printf("ioctl_setkeymap %p\n", keymaps);
- WaitSema(lineSema); /* Lock the input so you dont end up with weird results */
- memcpy(keymap, keymaps->keymap, PS2KBD_KEYMAP_SIZE);
- memcpy(shiftkeymap, keymaps->shiftkeymap, PS2KBD_KEYMAP_SIZE);
- memcpy(keycap, keymaps->keycap, PS2KBD_KEYMAP_SIZE);
- SignalSema(lineSema);
-}
-
-void ps2kbd_rpc_setctrlmap(u8 *ctrlmap)
-
-{
- //printf("ioctl_setctrlmap %p\n", ctrlmap);
- WaitSema(lineSema);
- memcpy(control_map, ctrlmap, PS2KBD_KEYMAP_SIZE);
- SignalSema(lineSema);
-}
-
-void ps2kbd_rpc_setaltmap(u8 *altmap)
-
-{
- //printf("ioctl_setaltmap %p\n", altmap);
- WaitSema(lineSema);
- memcpy(alt_map, altmap, PS2KBD_KEYMAP_SIZE);
- SignalSema(lineSema);
-}
-
-void ps2kbd_rpc_setspecialmap(u8 *special)
-
-{
- //printf("ioctl_setspecialmap %p\n", special);
- WaitSema(lineSema);
- memcpy(special_keys, special, PS2KBD_KEYMAP_SIZE);
- SignalSema(lineSema);
-}
-
-void ps2kbd_rpc_resetkeymap()
- /* Reset keymap to default US variety */
-
-{
- //printf("ioctl_resetkeymap()\n");
- WaitSema(lineSema);
- memcpy(keymap, us_keymap, PS2KBD_KEYMAP_SIZE);
- memcpy(shiftkeymap, us_shiftkeymap, PS2KBD_KEYMAP_SIZE);
- memcpy(keycap, us_keycap, PS2KBD_KEYMAP_SIZE);
- memcpy(special_keys, us_special_keys, PS2KBD_KEYMAP_SIZE);
- memcpy(control_map, us_control_map, PS2KBD_KEYMAP_SIZE);
- memcpy(alt_map, us_alt_map, PS2KBD_KEYMAP_SIZE);
- SignalSema(lineSema);
-}
-
-void ps2kbd_rpc_flushbuffer()
- /* Flush the internal buffer */
-
-{
- //printf("ioctl_flushbuffer()\n");
- WaitSema(lineSema);
- flushbuffer();
- SignalSema(lineSema);
-}
-
-void ps2kbd_rpc_setleds(u8 ledStatus)
-
-{
- int devLoop;
- kbd_dev *dev;
-
- //printf("ioctl_setleds %d\n", ledStatus);
- ledStatus &= PS2KBD_LED_MASK;
- for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++)
- {
- dev = devices[devLoop];
- if(dev)
- {
- if(ledStatus != dev->ledStatus)
- {
- dev->ledStatus = ledStatus & PS2KBD_LED_MASK;
- UsbControlTransfer(dev->configEndp, 0x21, USB_REQ_SET_REPORT, 0x200,
- dev->interfaceNo, 1, &dev->ledStatus, ps2kbd_led_set, dev);
- }
- }
- }
-}
-
-void ps2kbd_rpc_setrepeatrate(u32 rate)
-{
- kbd_repeatrate = rate;
-}
-
-int kbd_read(void *buf, int size)
-{
- int count = 0;
- char *data = (char *) buf;
-
- if(kbd_readmode == PS2KBD_READMODE_RAW)
- size &= ~1; /* Ensure size of a multiple of 2 */
-
- if (PollSema(bufferSema) >= 0) {
- SignalSema(bufferSema);
- if (WaitSema(lineSema) >= 0) {
- while((count < size) && (lineStartP != lineEndP)) {
- data[count] = lineBuffer[lineStartP++];
- lineStartP %= lineSize;
- count++;
- PollSema(bufferSema); /* Take off one count from the sema */
- }
- SignalSema(lineSema);
- }
- }
- return count;
-}
-
-void repeat_thread(void *arg)
-
-{
- u32 eventmask;
- int devLoop;
-
- for(;;)
- {
- WaitEventFlag(eventid, 0xFFFFFFFF, 0x01 | 0x10, &eventmask);
- //printf("Recieved event %08X\n", eventmask);
- for(devLoop = 0; devLoop < PS2KBD_MAXDEV; devLoop++)
- {
- if((eventmask & (1 << devLoop)) && (devices[devLoop]))
- {
- int tempPos = 0;
-
- WaitSema(lineSema);
- if(lineStartP < lineEndP)
- {
- tempPos = lineStartP + lineSize;
- }
- else
- {
- tempPos = lineStartP;
- }
-
- if((devices[devLoop]->repeatkeys[0]) && (devices[devLoop]->repeatkeys[1]))
- {
- if(lineEndP != (tempPos - 2))
- {
- lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[0];
- lineEndP %= lineSize;
- lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[1];
- lineEndP %= lineSize;
- SignalSema(bufferSema);
- SignalSema(bufferSema);
- }
- }
- else if(devices[devLoop]->repeatkeys[0])
- {
- if(lineEndP != (tempPos - 1))
- {
- lineBuffer[lineEndP++] = devices[devLoop]->repeatkeys[0];
- lineEndP %= lineSize;
- SignalSema(bufferSema);
- }
- }
-
- SignalSema(lineSema);
- }
- }
- }
-}
-
-int init_repeatthread()
- /* Creates a thread to handle key repeats */
-{
- iop_thread_t param;
- iop_event_t event;
-
- event.attr = 0;
- event.option = 0;
- event.bits = 0;
- eventid = CreateEventFlag(&event);
-
- param.attr = TH_C;
- param.thread = repeat_thread;
- param.priority = 40;
- param.stacksize = 0x800;
- param.option = 0;
-
- repeat_tid = CreateThread(¶m);
- if (repeat_tid > 0) {
- StartThread(repeat_tid, 0);
- return 0;
- }
- else
- {
- return 1;
- }
-}
-
-static unsigned long retKey;
-
-void *ps2kbd_rpc_server(int fno, void *data, int size) {
- retKey = 0;
- switch (fno) {
- case KBD_RPC_SETREADMODE:
- ps2kbd_rpc_setreadmode(*(u32 *)data);
- break;
- case KBD_RPC_SETKEYMAP:
- ps2kbd_rpc_setkeymap((kbd_keymap *) data);
- break;
- case KBD_RPC_SETALTMAP:
- ps2kbd_rpc_setaltmap((u8 *) data);
- break;
- case KBD_RPC_SETCTRLMAP:
- ps2kbd_rpc_setctrlmap((u8 *) data);
- break;
- case KBD_RPC_SETSPECIALMAP:
- ps2kbd_rpc_setspecialmap((u8 *) data);
- break;
- case KBD_RPC_FLUSHBUFFER:
- ps2kbd_rpc_flushbuffer();
- break;
- case KBD_RPC_SETLEDS:
- ps2kbd_rpc_setleds(*(u8 *) data);
- break;
- case KBD_RPC_RESETKEYMAP:
- ps2kbd_rpc_resetkeymap();
- break;
- case KBD_RPC_SETREPEATRATE:
- ps2kbd_rpc_setrepeatrate(*(u32 *) data);
- break;
- case KBD_RPC_READRAW:
- kbd_read(&retKey, 2);
- return &retKey;
- case KBD_RPC_READKEY:
- kbd_read(&retKey, 1);
- return &retKey;
- default:
- printf("Ps2Kbd: Unknown RPC command %d\n", fno);
- break;
- }
- return NULL;
-}
-
-struct t_SifRpcDataQueue qd;
-struct t_SifRpcServerData sd0;
-void *rpcRcvBuf;
-
-void ps2kbd_start_rpc(unsigned long tid) {
- rpcRcvBuf = AllocSysMemory(0, 3 * PS2KBD_KEYMAP_SIZE, NULL);
- printf("Ps2Kbd: starting RPC server\n");
- SifInitRpc(0);
-
- SifSetRpcQueue(&qd, tid);
- SifRegisterRpc(&sd0, PS2KBD_RPC_ID, ps2kbd_rpc_server, rpcRcvBuf, 0, 0, &qd);
- SifRpcLoop(&qd);
-}
-
-int ps2kbd_init_rpc(void) {
- struct _iop_thread param;
- int th;
-
- param.attr = 0x02000000;
- param.thread = (void *)ps2kbd_start_rpc;
- param.priority = 40;
- param.stacksize = 0x800;
- param.option = 0;
-
- th = CreateThread(¶m);
-
- if (th > 0) {
- StartThread(th, (void *)th);
- return 0;
- } else
- return -1;
-}
-
-int ps2kbd_init() {
- int ret;
- iop_sema_t s;
-
- s.initial = 1;
- s.max = 1;
- s.option = 0;
- s.attr = 0;
- lineSema = CreateSema(&s);
- if(lineSema <= 0)
- {
- printf("Error creating sema\n");
- return 1;
- }
-
- s.initial = 0;
- s.max = PS2KBD_DEFLINELEN;
- s.option = 0;
- s.attr = 0;
- bufferSema = CreateSema(&s); /* Create a sema to maintain status of readable data */
- if(bufferSema <= 0)
- {
- printf("Error creating buffer sema\n");
- return 1;
- }
-
- lineBuffer = (u8 *) AllocSysMemory(0, PS2KBD_DEFLINELEN, NULL);
- if(lineBuffer == NULL)
- {
- printf("Error allocating line buffer\n");
- return 1;
- }
- lineStartP = 0;
- lineEndP = 0;
- lineSize = PS2KBD_DEFLINELEN;
- memset(lineBuffer, 0, PS2KBD_DEFLINELEN);
-
- memset(devices, 0, sizeof(kbd_dev *) * PS2KBD_MAXDEV);
- dev_count = 0;
- kbd_readmode = PS2KBD_READMODE_NORMAL;
- kbd_repeatrate = PS2KBD_DEFREPEATRATE;
- memcpy(keymap, us_keymap, PS2KBD_KEYMAP_SIZE);
- memcpy(shiftkeymap, us_shiftkeymap, PS2KBD_KEYMAP_SIZE);
- memcpy(keycap, us_keycap, PS2KBD_KEYMAP_SIZE);
- memcpy(special_keys, us_special_keys, PS2KBD_KEYMAP_SIZE);
- memcpy(control_map, us_control_map, PS2KBD_KEYMAP_SIZE);
- memcpy(alt_map, us_alt_map, PS2KBD_KEYMAP_SIZE);
-
- ps2kbd_init_rpc();
- init_repeatthread();
-
- ret = UsbRegisterDriver(&kbd_driver);
- if(ret != USB_RC_OK)
- {
- printf("Error registering USB devices\n");
- return 1;
- }
-
- printf("UsbRegisterDriver %d\n", ret);
-
- return 0;
-}
diff --git a/backends/platform/ps2/iop/rpckbd/src/us_keymap.h b/backends/platform/ps2/iop/rpckbd/src/us_keymap.h
deleted file mode 100644
index 058156fa48..0000000000
--- a/backends/platform/ps2/iop/rpckbd/src/us_keymap.h
+++ /dev/null
@@ -1,1587 +0,0 @@
-/*
-# _____ ___ ____ ___ ____
-# ____| | ____| | | |____|
-# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
-#-----------------------------------------------------------------------
-# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
-#
-# This file is dual licensed, with permission by the original author
-# TyRaNiD, under both the Academic Free License version 2.0 and the GNU
-# General Public License version 2 or later.
-#
-# This means you can choose whether to use this code under the terms of
-# the Academic Free License version 2.0, or under the terms of the GNU
-# General Public License version 2 or later. As long as you comply to the
-# terms of at least one of these, you are allowed to use the code as
-# permitted by the respective license.
-#
-# $Id$
-# USB Keyboard Driver for PS2
-*/
-
-#ifndef __US_KEYMAP_H__
-#define __US_KEYMAP_H__
-
-/* Default US keymap */
-
-u8 us_keymap[PS2KBD_KEYMAP_SIZE] =
- {
- 0,
- 0,
- 0,
- 0,
- 'a',
- 'b',
- 'c',
- 'd',
- 'e',
- 'f',
- 'g',
- 'h',
- 'i',
- 'j',
- 'k',
- 'l',
- 'm',
- 'n',
- 'o',
- 'p',
- 'q',
- 'r',
- 's',
- 't',
- 'u',
- 'v',
- 'w',
- 'x',
- 'y',
- 'z',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '0',
- 10, /* line feed */
- 0, /* Esc */
- 0x7,/* BS */
- 0x9, /* TAB */
- 0x20,
- '-',
- '=',
- '[',
- ']',
- '\\',
- '#',
- ';',
- '\'',
- '`',
- ',',
- '.',
- '/',
- 0, /* CL */
- 0, // F1
- 0, // F2
- 0, // F3
- 0, // F4
- 0, // F5
- 0, // F6
- 0, // F7
- 0, // F8
- 0, // F9
- 0, // F10
- 0, // F11
- 0, // F12
- 0, // PrintScr
- 0, // Scroll Lock
- 0, // Pause
- 0, // Insert
- 0, // Home
- 0, // Pg Up
- 0, // Delete
- 0, // End
- 0, // Pg Down
- 0, // Right
- 0, // Left
- 0, // Down
- 0, // Up
- 0, // Numlock
- '/', // Keypad
- '*',
- '-',
- '+',
- 10,
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '0',
- '.',
- '\\',
- 0,
- 0,
- '=',
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- };
-
-u8 us_shiftkeymap[PS2KBD_KEYMAP_SIZE] =
- {
- 0,
- 0,
- 0,
- 0,
- 'A',
- 'B',
- 'C',
- 'D',
- 'E',
- 'F',
- 'G',
- 'H',
- 'I',
- 'J',
- 'K',
- 'L',
- 'M',
- 'N',
- 'O',
- 'P',
- 'Q',
- 'R',
- 'S',
- 'T',
- 'U',
- 'V',
- 'W',
- 'X',
- 'Y',
- 'Z',
- '!',
- '@',
- '#',
- '$',
- '%',
- '^',
- '&',
- '*',
- '(',
- ')',
- 10, /* line feed */
- 0, /* Esc */
- 0x7,/* BS */
- 0x9, /* TAB */
- 0x20,
- '_',
- '+',
- '{',
- '}',
- '|',
- '~',
- ':',
- '"',
- '~',
- '<',
- '>',
- '?',
- 0, /* CL */
- 0, // F1
- 0, // F2
- 0, // F3
- 0, // F4
- 0, // F5
- 0, // F6
- 0, // F7
- 0, // F8
- 0, // F9
- 0, // F10
- 0, // F11
- 0, // F12
- 0, // PrintScr
- 0, // Scroll Lock
- 0, // Pause
- 0, // Insert
- 0, // Home
- 0, // Pg Up
- 0, // Delete
- 0, // End
- 0, // Pg Down
- 0, // Right
- 0, // Left
- 0, // Down
- 0, // Up
- 0, // Numlock
- '/', // Keypad
- '*',
- '-',
- '+',
- 10,
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '0',
- '.',
- '\\',
- 0,
- 0,
- '=',
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- };
-
-u8 us_keycap[PS2KBD_KEYMAP_SIZE] =
- {
- 0,
- 0,
- 0,
- 0,
- 1, //a
- 1, //b
- 1, //c
- 1, //d
- 1, //e
- 1, //f
- 1,//g
- 1,//h
- 1,//i
- 1,//j
- 1,//k
- 1,//l
- 1,//m
- 1,//n
- 1,//o
- 1,//p
- 1,//q
- 1,//r
- 1,//s
- 1,//t
- 1,//u
- 1,//v
- 1,//w
- 1,//x
- 1,//y
- 1,//z
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, /* line feed */
- 0, /* Esc */
- 0,/* BS */
- 0, /* TAB */
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, /* CL */
- 0, // F1
- 0, // F2
- 0, // F3
- 0, // F4
- 0, // F5
- 0, // F6
- 0, // F7
- 0, // F8
- 0, // F9
- 0, // F10
- 0, // F11
- 0, // F12
- 0, // PrintScr
- 0, // Scroll Lock
- 0, // Pause
- 0, // Insert
- 0, // Home
- 0, // Pg Up
- 0, // Delete
- 0, // End
- 0, // Pg Down
- 0, // Right
- 0, // Left
- 0, // Down
- 0, // Up
- 0, // Numlock
- 0, // Keypad
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- };
-
-u8 us_special_keys[PS2KBD_KEYMAP_SIZE] = {
-
- 0,
- 0,
- 0,
- 0,
- 0, //a
- 0, //b
- 0, //c
- 0, //d
- 0, //e
- 0, //f
- 0,//g
- 0,//h
- 0,//i
- 0,//j
- 0,//k
- 0,//l
- 0,//m
- 0,//n
- 0,//o
- 0,//p
- 0,//q
- 0,//r
- 0,//s
- 0,//t
- 0,//u
- 0,//v
- 0,//w
- 0,//x
- 0,//y
- 0,//z
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, /* line feed */
- 0x1B, /* Esc */
- 0,/* BS */
- 0, /* TAB */
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, /* CL */
- 1, // F1
- 2, // F2
- 3, // F3
- 4, // F4
- 5, // F5
- 6, // F6
- 7, // F7
- 8, // F8
- 9, // F9
- 10, // F10
- 11, // F11
- 12, // F12
- 32, // PrintScr
- 33, // Scroll Lock
- 34, // Pause
- 35, // Insert
- 36, // Home
- 37, // Pg Up
- 38, // Delete
- 39, // End
- 40, // Pg Down
- 41, // Right
- 42, // Left
- 43, // Down
- 44, // Up
- 0, // Numlock
- 0, // Keypad /
- 0, // Keypad *
- 0, // Keypad -
- 0, // Keypad +
- 0, // Keypad Enter
- 39, // Keypad 1/End
- 43, // Keypad 2/Down
- 40, // Keypad 3/PageDn
- 42, // Keypad 4/Left
- 0, // Keypad 5
- 41, // Keypad 6/Right
- 36, // Keypad 7/Home
- 44, // Keypad 8/Up
- 37, // Keypad 9/PageUp
- 35, // Keypad 0/Insert
- 38, // Keypad ./Delete
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- };
-
-u8 us_control_map[PS2KBD_KEYMAP_SIZE] = {
-
- 0,
- 0,
- 0,
- 0,
- 1, //a
- 2, //b
- 3, //c
- 4, //d
- 5, //e
- 6, //f
- 7,//g
- 8,//h
- 9,//i
- 10,//j
- 11,//k
- 12,//l
- 13,//m
- 14,//n
- 15,//o
- 16,//p
- 17,//q
- 18,//r
- 19,//s
- 20,//t
- 21,//u
- 22,//v
- 23,//w
- 24,//x
- 25,//y
- 26,//z
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, /* line feed */
- 0, /* Esc */
- 0,/* BS */
- 0, /* TAB */
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, /* CL */
- 0, // F1
- 0, // F2
- 0, // F3
- 0, // F4
- 0, // F5
- 0, // F6
- 0, // F7
- 0, // F8
- 0, // F9
- 0, // F10
- 0, // F11
- 0, // F12
- 0, // PrintScr
- 0, // Scroll Lock
- 0, // Pause
- 0, // Insert
- 0, // Home
- 0, // Pg Up
- 0, // Delete
- 0, // End
- 0, // Pg Down
- 0, // Right
- 0, // Left
- 0, // Down
- 0, // Up
- 0, // Numlock
- 0, // Keypad
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
-};
-
-u8 us_alt_map[PS2KBD_KEYMAP_SIZE] = {
-
- 0,
- 0,
- 0,
- 0,
- 128, //a
- 129, //b
- 130, //c
- 131, //d
- 132, //e
- 133, //f
- 134,//g
- 135,//h
- 136,//i
- 137,//j
- 138,//k
- 139,//l
- 140,//m
- 141,//n
- 142,//o
- 143,//p
- 144,//q
- 145,//r
- 146,//s
- 147,//t
- 148,//u
- 149,//v
- 150,//w
- 151,//x
- 152,//y
- 154,//z
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165, /* line feed */
- 0, /* Esc */
- 0,/* BS */
- 0, /* TAB */
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, /* CL */
- 0, // F1
- 0, // F2
- 0, // F3
- 0, // F4
- 0, // F5
- 0, // F6
- 0, // F7
- 0, // F8
- 0, // F9
- 0, // F10
- 0, // F11
- 0, // F12
- 0, // PrintScr
- 0, // Scroll Lock
- 0, // Pause
- 0, // Insert
- 0, // Home
- 0, // Pg Up
- 0, // Delete
- 0, // End
- 0, // Pg Down
- 0, // Right
- 0, // Left
- 0, // Down
- 0, // Up
- 0, // Numlock
- 0, // Keypad
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- };
-
-#endif
diff --git a/backends/platform/ps2/irxboot.cpp b/backends/platform/ps2/irxboot.cpp
deleted file mode 100644
index 64d6e989d6..0000000000
--- a/backends/platform/ps2/irxboot.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <kernel.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sifrpc.h>
-#include <loadfile.h>
-#include <malloc.h>
-#include "backends/platform/ps2/irxboot.h"
-#include "backends/platform/ps2/ps2debug.h"
-
-#include "ps2temp.h"
-
-static const char hddArg[] = "-o" "\0" "8" "\0" "-n" "\0" "20";
-static const char pfsArg[] = "-m" "\0" "2" "\0" "-o" "\0" "32" "\0" "-n" "\0" "72"; // "\0" "-debug";
-static const char netArg[] = "192.168.1.20" "\0" "255.255.255.0" "\0" "192.168.1.1"; // TODO: set in ScummVM.ini
-
-IrxFile irxCore[] = { // core modules
- // Memory Card
- { "SIO2MAN", BIOS, NOTHING, NULL, 0 },
- { "MCMAN", BIOS, NOTHING, NULL, 0 },
- { "MCSERV", BIOS, NOTHING, NULL, 0 },
- // Joypad
- { "PADMAN", BIOS, NOTHING, NULL, 0 },
- // Sound
- { "LIBSD", BIOS, NOTHING, NULL, 0 },
- { "SJPCM.IRX", SYSTEM, NOTHING, NULL, 0 },
- // Files I/O
- { "IOMANX.IRX", SYSTEM, NOTHING, NULL, 0 },
- { "FILEXIO.IRX", SYSTEM, NOTHING, NULL, 0 }
-};
-
-IrxFile irxCdrom[] = { // cdrom modules
- // CD-Rom FS
- { "CODYVDFS.IRX", SYSTEM, CD_DRIVER, NULL, 0 }
-};
-
-IrxFile irxUSB[] = { // USB mass
- // USB drv & key
- { "USBD.IRX", USB | OPTIONAL | DEPENDANCY, USB_DRIVER, NULL, 0 },
- { "USB_MASS.IRX", USB | OPTIONAL, MASS_DRIVER, NULL, 0 }
-};
-
-IrxFile irxInput[] = { // USB input
- // USB mouse & kbd
- { "PS2MOUSE.IRX", USB | OPTIONAL, MOUSE_DRIVER, NULL, 0 },
- { "RPCKBD.IRX", USB | OPTIONAL, KBD_DRIVER, NULL, 0 }
-};
-
-IrxFile irxHDD[] = { // modules to support HDD
- // hdd modules
- { "POWEROFF.IRX", HDD | OPTIONAL | NOT_HOST | DEPENDANCY, HDD_DRIVER, NULL, 0 },
- { "PS2DEV9.IRX", HDD | OPTIONAL | NOT_HOST | DEPENDANCY, HDD_DRIVER, NULL, 0 },
- { "PS2ATAD.IRX", HDD | OPTIONAL | DEPENDANCY, HDD_DRIVER, NULL, 0 },
- { "PS2HDD.IRX", HDD | OPTIONAL | DEPENDANCY, HDD_DRIVER, hddArg, sizeof(hddArg) },
- { "PS2FS.IRX", HDD | OPTIONAL | DEPENDANCY, HDD_DRIVER, pfsArg, sizeof(pfsArg) }
-};
-
-IrxFile irxNet[] = { // modules to support NET
- // net modules
- { "PS2IP.IRX", NET | OPTIONAL | NOT_HOST | DEPENDANCY, NET_DRIVER, NULL, 0 },
- { "PS2SMAP.IRX", NET | OPTIONAL | NOT_HOST | DEPENDANCY, NET_DRIVER, netArg, sizeof(netArg) },
- { "PS2HOST.IRX", NET | OPTIONAL | NOT_HOST | DEPENDANCY, NET_DRIVER, NULL, 0 }
-};
-
-IrxFile *irxType[IRX_MAX] = { irxCore, irxCdrom, irxUSB, irxInput, irxHDD, irxNet };
-
-static const int numIrx[IRX_MAX] = { sizeof(irxCore) / sizeof(IrxFile),
- sizeof(irxCdrom) / sizeof(IrxFile),
- sizeof(irxUSB) / sizeof(IrxFile),
- sizeof(irxInput) / sizeof(IrxFile),
- sizeof(irxHDD) / sizeof(IrxFile),
- sizeof(irxNet) / sizeof(IrxFile)
-};
-
-PS2Device detectBootPath(const char *elfPath, char *bootPath) {
-
- PS2Device device = _getDev(elfPath);
-
- sioprintf("elf path: %s, device %d\n", elfPath, device);
-
- strcpy(bootPath, elfPath);
-
- char *pathPos = bootPath;
- char seperator;
-
- if (device == CD_DEV) {
- // CDVD uses '\' as seperator
- while (*pathPos) {
- if (*pathPos == '/')
- *pathPos = '\\';
- pathPos++;
- }
- seperator = '\\';
- } else {
- // all the other devices use '/'
- while (*pathPos) {
- if (*pathPos == '\\')
- *pathPos = '/';
- pathPos++;
- }
- seperator = '/';
- }
- pathPos = strrchr(bootPath, seperator);
- if (!pathPos)
- pathPos = strchr(bootPath, ':');
-
- if (pathPos) {
- if ((pathPos[0] == ':') && (device == CD_DEV)) {
- pathPos[1] = '\\';
- pathPos[2] = '\0';
- } else
- pathPos[1] = '\0';
- sioprintf("done. IRX path: \"%s\"\n", bootPath);
- } else {
- sioprintf("path not recognized, default to host.\n");
- strcpy(bootPath, "host:");
- device = HOST_DEV; // UNKNOWN;
- }
- return device;
-}
-
-int loadIrxModules(int device, const char *irxPath, IrxReference **modules, IrxType type) {
-
- IrxReference *resModules;
- IrxReference *curModule;
- IrxFile *irxFiles;
- int numFiles;
-
- irxFiles = irxType[type];
- numFiles = numIrx[type];
- resModules = (IrxReference *)memalign(64, numFiles * sizeof(IrxReference));
- curModule = resModules;
-
- for (int i = 0; i < numFiles; i++) {
- curModule->fileRef = irxFiles + i;
- if ((device == HOST_DEV) && (irxFiles[i].flags & NOT_HOST))
- continue;
-
- if ((irxFiles[i].flags & TYPEMASK) == BIOS) {
- curModule->loc = IRX_FILE;
- curModule->path = (char *)memalign(64, 32);
- sprintf(curModule->path, "rom0:%s", irxFiles[i].name);
- curModule->buffer = NULL;
- curModule->size = 0;
- curModule->argSize = 0;
- curModule->args = NULL;
- curModule->errorCode = 0;
- } else {
- curModule->loc = IRX_BUFFER;
- curModule->path = (char *)memalign(64, 256);
-
- sprintf(curModule->path, "%s%s%s", irxPath, irxFiles[i].name, (device == CD_DEV) ? ";1" : "");
- int fd = fioOpen(curModule->path, O_RDONLY);
- if (fd < 0) {
- // IRX not found
- sioprintf("Can't open %s: %d\n", curModule->path, fd);
- // we keep the error code of the path where we originally expected the file
- curModule->errorCode = fd;
-
- // try cdrom root directory
- sprintf(curModule->path, "cdrom0:\\%s;1", irxFiles[i].name);
- fd = fioOpen(curModule->path, O_RDONLY);
- if (fd < 0) {
- // still not found, try host:
- sioprintf("Can't open %s: %d\n", curModule->path, fd);
- sprintf(curModule->path, "host:%s", irxFiles[i].name);
- fd = fioOpen(curModule->path, O_RDONLY);
- if (fd < 0) {
- // we simply can't find it.
- sioprintf("Can't open %s: %d\n", curModule->path, fd);
- // restore the path where we originally expected the file, for error message (later, after boot up)
- sprintf(curModule->path, "%s%s%s", irxPath, irxFiles[i].name, (device == CD_DEV) ? ";1" : "");
- }
- }
- }
-
- if (fd >= 0) {
- curModule->size = fioLseek(fd, 0, SEEK_END);
- fioLseek(fd, 0, SEEK_SET);
- curModule->buffer = (uint8 *)memalign(64, (curModule->size + 63) & ~63);
- fioRead(fd, curModule->buffer, curModule->size);
-
- curModule->argSize = irxFiles[i].argSize;
- curModule->args = irxFiles[i].args;
- curModule->errorCode = 0;
- fioClose(fd);
- } else {
- if (irxFiles[i].flags & DEPENDANCY) {
- // other modules depend on this one.
- // kill the modules we already loaded, if they depend on the one that failed.
- IrxReference *pos = resModules;
- while (pos < curModule) {
- if ((pos->fileRef->flags & TYPEMASK) == (irxFiles[i].flags & TYPEMASK)) {
- free(pos->path);
- free(pos->buffer);
-
- IrxReference *copyPos = pos;
- while (copyPos < curModule) {
- copyPos[0] = copyPos[1];
- copyPos++;
- }
- curModule--;
- } else
- pos++;
- }
- // and skip any remaining modules that depend on the missing one, too.
- while ((i < numFiles - 1) && ((irxFiles[i + 1].flags & TYPEMASK) == (curModule->fileRef->flags & TYPEMASK)))
- i++;
- // the module that actually failed (curModule) is kept in the array for displaying an error message
- }
- curModule->size = 0;
- curModule->buffer = NULL;
- curModule->argSize = 0;
- curModule->args = NULL;
- }
- }
- curModule++;
- }
-
- *modules = resModules;
- sioprintf("List of %d modules:\n", curModule - resModules);
- for (int i = 0; i < curModule - resModules; i++)
- sioprintf("%s\n", resModules[i].path);
- return curModule - resModules;
-}
diff --git a/backends/platform/ps2/irxboot.h b/backends/platform/ps2/irxboot.h
deleted file mode 100644
index 487d335553..0000000000
--- a/backends/platform/ps2/irxboot.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __IRXBOOT_H__
-#define __IRXBOOT_H__
-
-#include "common/scummsys.h"
-
-enum IrxType {
- IRX_CORE = 0,
- IRX_CDROM,
- IRX_USB,
- IRX_INPUT,
- IRX_HDD,
- IRX_NET,
- IRX_MAX
-};
-
-enum IrxFlags {
- BIOS = 0,
- SYSTEM = 1,
- USB = 2,
- HDD = 3,
- NET = 4,
- TYPEMASK = 7,
-
- OPTIONAL = 8,
- DEPENDANCY = 16,
- NOT_HOST = 32
-};
-
-enum IrxPurpose {
- NOTHING,
- CD_DRIVER,
- HDD_DRIVER,
- USB_DRIVER,
- MOUSE_DRIVER,
- KBD_DRIVER,
- MASS_DRIVER,
- NET_DRIVER
-};
-
-enum IrxLocation {
- IRX_BUFFER,
- IRX_FILE
-};
-
-/*
-enum BootDevice {
- HOST = 0,
- CDROM,
- MASS,
- OTHER
-};
-*/
-
-struct IrxFile {
- const char *name;
- int flags;
- IrxPurpose purpose;
- const char *args;
- int argSize;
-};
-
-struct IrxReference {
- IrxFile *fileRef;
- IrxLocation loc;
- char *path;
- void *buffer;
- uint32 size;
- uint32 argSize;
- const char *args;
- int errorCode;
-};
-
-int loadIrxModules(int device, const char *irxPath, IrxReference **modules, IrxType type);
-
-#endif // __IRXBOOT_H__
diff --git a/backends/platform/ps2/module.mk b/backends/platform/ps2/module.mk
deleted file mode 100644
index 7bcc60e58d..0000000000
--- a/backends/platform/ps2/module.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-MODULE := backends/platform/ps2
-
-MODULE_OBJS := \
- DmaPipe.o \
- Gs2dScreen.o \
- irxboot.o \
- ps2input.o \
- ps2pad.o \
- savefilemgr.o \
- fileio.o \
- asyncfio.o \
- icon.o \
- cd.o \
- eecodyvdfs.o \
- rpckbd.o \
- systemps2.o \
- ps2mutex.o \
- ps2time.o \
- ps2debug.o
-
-# We don't use rules.mk but rather manually update OBJS and MODULE_DIRS.
-MODULE_OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS))
-OBJS := $(MODULE_OBJS) $(OBJS)
-MODULE_DIRS += $(sort $(dir $(MODULE_OBJS)))
diff --git a/backends/platform/ps2/ps2debug.cpp b/backends/platform/ps2/ps2debug.cpp
deleted file mode 100644
index 84c3649faf..0000000000
--- a/backends/platform/ps2/ps2debug.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "ps2debug.h"
-#include <stdio.h>
-#include <sio.h>
-
-void sioprintf(const char *zFormat, ...) {
- #if 0 // doesn't seem to work with ps2link...
- va_list ap;
- char resStr[2048];
-
- va_start(ap,zFormat);
- vsnprintf(resStr, 2048, zFormat, ap);
- va_end(ap);
-
- char *pos = resStr;
- while (*pos) {
- if (*pos == '\n') {
- // SIO terminal needs explicit CRLF
- sio_putc('\r');
- sio_putc('\n');
- } else
- sio_putc(*pos);
- pos++;
- }
- #endif
-}
diff --git a/backends/platform/ps2/ps2debug.h b/backends/platform/ps2/ps2debug.h
deleted file mode 100644
index 45db850ebf..0000000000
--- a/backends/platform/ps2/ps2debug.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __PS2DEBUG_H__
-#define __PS2DEBUG_H__
-
-#ifdef LOGORRHEIC
- #define FORBIDDEN_SYMBOL_EXCEPTION_printf
- // #define dbg_printf sio_printf
- #define dbg_printf printf
-#else
- #define dbg_printf(...) /* ... */
-#endif
-
-void sioprintf(const char *zFormat, ...);
-
-#endif // __PS2DEBUG_H__
diff --git a/backends/platform/ps2/ps2input.cpp b/backends/platform/ps2/ps2input.cpp
deleted file mode 100644
index f028be1c00..0000000000
--- a/backends/platform/ps2/ps2input.cpp
+++ /dev/null
@@ -1,547 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
More information about the Scummvm-git-logs
mailing list