Merge branch 'master' into wii-network
Conflicts: Source/Core/Common/Src/CommonPaths.h Source/Core/Common/Src/FileUtil.h Source/Core/Core/Src/HLE/HLE.cpp Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.cpp
This commit is contained in:
@@ -109,78 +109,89 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\Common\Src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\Core\Src;..\Common\Src;..\..\..\Externals;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib />
|
||||
<Lib>
|
||||
<AdditionalDependencies>SoundTouchD.lib;OpenAL32.lib;dsound.lib;dxerr.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\..\..\Externals\OpenAL\Win32;..\..\..\Externals\SoundTouch\Win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\Common\Src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\Core\Src;..\Common\Src;..\..\..\Externals;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib />
|
||||
<Lib>
|
||||
<AdditionalDependencies>SoundTouchD.lib;OpenAL32.lib;dsound.lib;dxerr.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\..\..\Externals\OpenAL\Win64;..\..\..\Externals\SoundTouch\Win64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\Common\Src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\Core\Src;..\Common\Src;..\..\..\Externals;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib />
|
||||
<Lib>
|
||||
<AdditionalDependencies>SoundTouch.lib;OpenAL32.lib;dsound.lib;dxerr.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\..\..\Externals\OpenAL\Win32;..\..\..\Externals\SoundTouch\Win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\Common\Src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\Core\Src;..\Common\Src;..\..\..\Externals;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib />
|
||||
<Lib>
|
||||
<AdditionalDependencies>SoundTouch.lib;OpenAL32.lib;dsound.lib;dxerr.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\..\..\Externals\OpenAL\Win32;..\..\..\Externals\SoundTouch\Win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\Common\Src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\Core\Src;..\Common\Src;..\..\..\Externals;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib />
|
||||
<Lib>
|
||||
<AdditionalDependencies>SoundTouch.lib;OpenAL32.lib;dsound.lib;dxerr.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\..\..\Externals\OpenAL\Win64;..\..\..\Externals\SoundTouch\Win64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\Common\Src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\Core\Src;..\Common\Src;..\..\..\Externals;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib />
|
||||
<Lib>
|
||||
<AdditionalDependencies>SoundTouch.lib;OpenAL32.lib;dsound.lib;dxerr.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\..\..\Externals\OpenAL\Win64;..\..\..\Externals\SoundTouch\Win64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\aldlist.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Src\aldlist.cpp" />
|
||||
<ClCompile Include="Src\AOSoundStream.cpp" />
|
||||
<ClCompile Include="Src\AudioCommon.cpp" />
|
||||
<ClCompile Include="Src\AudioCommonConfig.cpp" />
|
||||
<ClCompile Include="Src\DPL2Decoder.cpp" />
|
||||
<ClCompile Include="Src\DSoundStream.cpp" />
|
||||
<ClCompile Include="Src\Mixer.cpp" />
|
||||
<ClCompile Include="Src\NullSoundStream.cpp" />
|
||||
@@ -189,17 +200,10 @@
|
||||
<ClCompile Include="Src\XAudio2Stream.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Src\aldlist.h">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\aldlist.h" />
|
||||
<ClInclude Include="Src\AOSoundStream.h" />
|
||||
<ClInclude Include="Src\AudioCommon.h" />
|
||||
<ClInclude Include="Src\AudioCommonConfig.h" />
|
||||
<ClInclude Include="Src\DPL2Decoder.h" />
|
||||
<ClInclude Include="Src\DSoundStream.h" />
|
||||
<ClInclude Include="Src\Mixer.h" />
|
||||
<ClInclude Include="Src\NullSoundStream.h" />
|
||||
@@ -212,6 +216,14 @@
|
||||
<None Include="CMakeLists.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Externals\SoundTouch\SoundTouch.vcxproj">
|
||||
<Project>{68a5dd20-7057-448b-8fe0-b6ac8d205509}</Project>
|
||||
<Private>true</Private>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Common\Common.vcxproj">
|
||||
<Project>{c87a4178-44f6-49b2-b7aa-c79af1b8c534}</Project>
|
||||
<Private>true</Private>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\aldlist.cpp" />
|
||||
<ClCompile Include="Src\AudioCommon.cpp" />
|
||||
<ClCompile Include="Src\AudioCommonConfig.cpp" />
|
||||
<ClCompile Include="Src\Mixer.cpp" />
|
||||
<ClCompile Include="Src\WaveFile.cpp" />
|
||||
<ClCompile Include="Src\AOSoundStream.cpp">
|
||||
@@ -21,11 +20,11 @@
|
||||
<ClCompile Include="Src\NullSoundStream.cpp">
|
||||
<Filter>SoundStreams</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Src\DPL2Decoder.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Src\aldlist.h" />
|
||||
<ClInclude Include="Src\AudioCommon.h" />
|
||||
<ClInclude Include="Src\AudioCommonConfig.h" />
|
||||
<ClInclude Include="Src\Mixer.h" />
|
||||
<ClInclude Include="Src\SoundStream.h" />
|
||||
<ClInclude Include="Src\WaveFile.h" />
|
||||
@@ -44,6 +43,7 @@
|
||||
<ClInclude Include="Src\XAudio2Stream.h">
|
||||
<Filter>SoundStreams</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\DPL2Decoder.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="CMakeLists.txt" />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
set(SRCS Src/AudioCommon.cpp
|
||||
Src/AudioCommonConfig.cpp
|
||||
Src/DPL2Decoder.cpp
|
||||
Src/Mixer.cpp
|
||||
Src/WaveFile.cpp
|
||||
Src/NullSoundStream.cpp)
|
||||
@@ -18,7 +18,7 @@ endif(AO_FOUND)
|
||||
|
||||
if(OPENAL_FOUND)
|
||||
set(SRCS ${SRCS} Src/OpenALStream.cpp Src/aldlist.cpp)
|
||||
set(LIBS ${LIBS} ${OPENAL_LIBRARY})
|
||||
set(LIBS ${LIBS} ${OPENAL_LIBRARY} SoundTouch )
|
||||
endif(OPENAL_FOUND)
|
||||
|
||||
if(PULSEAUDIO_FOUND)
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
#include "OpenALStream.h"
|
||||
#include "PulseAudioStream.h"
|
||||
#include "../../Core/Src/Movie.h"
|
||||
#include "../../Core/Src/ConfigManager.h"
|
||||
|
||||
// This shouldn't be a global, at least not here.
|
||||
SoundStream *soundStream;
|
||||
|
||||
namespace AudioCommon
|
||||
{
|
||||
@@ -34,7 +38,7 @@ namespace AudioCommon
|
||||
{
|
||||
// TODO: possible memleak with mixer
|
||||
|
||||
std::string backend = ac_Config.sBackend;
|
||||
std::string backend = SConfig::GetInstance().sBackend;
|
||||
if (backend == BACKEND_OPENAL && OpenALStream::isValid())
|
||||
soundStream = new OpenALStream(mixer);
|
||||
else if (backend == BACKEND_NULLSOUND && NullSound::isValid())
|
||||
@@ -54,10 +58,10 @@ namespace AudioCommon
|
||||
|
||||
if (soundStream != NULL)
|
||||
{
|
||||
ac_Config.Update();
|
||||
UpdateSoundStream();
|
||||
if (soundStream->Start())
|
||||
{
|
||||
if (ac_Config.m_DumpAudio)
|
||||
if (SConfig::GetInstance().m_DumpAudio)
|
||||
{
|
||||
std::string audio_file_name = File::GetUserPath(D_DUMPAUDIO_IDX) + "audiodump.wav";
|
||||
File::CreateFullPath(audio_file_name);
|
||||
@@ -82,7 +86,7 @@ namespace AudioCommon
|
||||
if (soundStream)
|
||||
{
|
||||
soundStream->Stop();
|
||||
if (ac_Config.m_DumpAudio)
|
||||
if (SConfig::GetInstance().m_DumpAudio)
|
||||
soundStream->GetMixer()->StopLogAudio();
|
||||
//soundStream->StopLogAudio();
|
||||
delete soundStream;
|
||||
@@ -96,18 +100,22 @@ namespace AudioCommon
|
||||
{
|
||||
std::vector<std::string> backends;
|
||||
|
||||
if (NullSound::isValid())
|
||||
if (NullSound::isValid())
|
||||
backends.push_back(BACKEND_NULLSOUND);
|
||||
if (DSound::isValid())
|
||||
if (DSound::isValid())
|
||||
backends.push_back(BACKEND_DIRECTSOUND);
|
||||
if (XAudio2::isValid())
|
||||
if (XAudio2::isValid())
|
||||
backends.push_back(BACKEND_XAUDIO2);
|
||||
if (AOSound::isValid())
|
||||
if (AOSound::isValid())
|
||||
backends.push_back(BACKEND_AOSOUND);
|
||||
if (AlsaSound::isValid())
|
||||
if (AlsaSound::isValid())
|
||||
backends.push_back(BACKEND_ALSA);
|
||||
if (CoreAudioSound::isValid())
|
||||
if (CoreAudioSound::isValid())
|
||||
backends.push_back(BACKEND_COREAUDIO);
|
||||
if (PulseAudio::isValid())
|
||||
backends.push_back(BACKEND_PULSEAUDIO);
|
||||
if (OpenALStream::isValid())
|
||||
backends.push_back(BACKEND_OPENAL);
|
||||
|
||||
return backends;
|
||||
}
|
||||
@@ -118,7 +126,7 @@ namespace AudioCommon
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return ac_Config.m_EnableJIT;
|
||||
return SConfig::GetInstance().m_EnableJIT;
|
||||
}
|
||||
|
||||
void PauseAndLock(bool doLock, bool unpauseOnUnlock)
|
||||
@@ -139,4 +147,12 @@ namespace AudioCommon
|
||||
}
|
||||
}
|
||||
}
|
||||
void UpdateSoundStream()
|
||||
{
|
||||
if (soundStream)
|
||||
{
|
||||
soundStream->GetMixer()->SetThrottle(SConfig::GetInstance().m_Framelimit == 2);
|
||||
soundStream->SetVolume(SConfig::GetInstance().m_Volume);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,14 +19,12 @@
|
||||
#define _AUDIO_COMMON_H_
|
||||
|
||||
#include "Common.h"
|
||||
#include "AudioCommonConfig.h"
|
||||
#include "SoundStream.h"
|
||||
|
||||
|
||||
class CMixer;
|
||||
|
||||
extern SoundStream *soundStream;
|
||||
extern AudioCommonConfig ac_Config;
|
||||
|
||||
// UDSPControl
|
||||
union UDSPControl
|
||||
@@ -60,6 +58,7 @@ namespace AudioCommon
|
||||
std::vector<std::string> GetSoundBackends();
|
||||
bool UseJIT();
|
||||
void PauseAndLock(bool doLock, bool unpauseOnUnlock=true);
|
||||
void UpdateSoundStream();
|
||||
}
|
||||
|
||||
#endif // _AUDIO_COMMON_H_
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "AudioCommon.h"
|
||||
#include "CommonPaths.h"
|
||||
#include "FileUtil.h"
|
||||
#include "../../Core/Src/ConfigManager.h"
|
||||
|
||||
AudioCommonConfig ac_Config;
|
||||
|
||||
// This shouldn't be a global, at least not here.
|
||||
SoundStream *soundStream;
|
||||
|
||||
// Load from given file
|
||||
void AudioCommonConfig::Load()
|
||||
{
|
||||
IniFile file;
|
||||
file.Load(File::GetUserPath(F_DSPCONFIG_IDX));
|
||||
|
||||
file.Get("Config", "EnableJIT", &m_EnableJIT, true);
|
||||
file.Get("Config", "DumpAudio", &m_DumpAudio, false);
|
||||
#if defined __linux__ && HAVE_ALSA
|
||||
file.Get("Config", "Backend", &sBackend, BACKEND_ALSA);
|
||||
#elif defined __APPLE__
|
||||
file.Get("Config", "Backend", &sBackend, BACKEND_COREAUDIO);
|
||||
#elif defined _WIN32
|
||||
file.Get("Config", "Backend", &sBackend, BACKEND_DIRECTSOUND);
|
||||
#else
|
||||
file.Get("Config", "Backend", &sBackend, BACKEND_NULLSOUND);
|
||||
#endif
|
||||
file.Get("Config", "Frequency", &iFrequency, 48000);
|
||||
file.Get("Config", "Volume", &m_Volume, 100);
|
||||
}
|
||||
|
||||
// Set the values for the file
|
||||
void AudioCommonConfig::SaveSettings()
|
||||
{
|
||||
IniFile file;
|
||||
file.Load(File::GetUserPath(F_DSPCONFIG_IDX));
|
||||
|
||||
file.Set("Config", "EnableJIT", m_EnableJIT);
|
||||
file.Set("Config", "DumpAudio", m_DumpAudio);
|
||||
file.Set("Config", "Backend", sBackend);
|
||||
file.Set("Config", "Frequency", iFrequency);
|
||||
file.Set("Config", "Volume", m_Volume);
|
||||
|
||||
file.Save(File::GetUserPath(F_DSPCONFIG_IDX));
|
||||
}
|
||||
|
||||
// Update according to the values (stream/mixer)
|
||||
void AudioCommonConfig::Update() {
|
||||
if (soundStream) {
|
||||
soundStream->GetMixer()->SetThrottle(SConfig::GetInstance().m_Framelimit == 2);
|
||||
soundStream->SetVolume(m_Volume);
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _AUDIO_COMMON_CONFIG_H_
|
||||
#define _AUDIO_COMMON_CONFIG_H_
|
||||
|
||||
#include <string>
|
||||
#include "IniFile.h"
|
||||
|
||||
// Backend Types
|
||||
#define BACKEND_NULLSOUND "No audio output"
|
||||
#define BACKEND_ALSA "ALSA"
|
||||
#define BACKEND_AOSOUND "AOSound"
|
||||
#define BACKEND_COREAUDIO "CoreAudio"
|
||||
#define BACKEND_DIRECTSOUND "DSound"
|
||||
#define BACKEND_OPENAL "OpenAL"
|
||||
#define BACKEND_PULSEAUDIO "Pulse"
|
||||
#define BACKEND_XAUDIO2 "XAudio2"
|
||||
|
||||
struct AudioCommonConfig
|
||||
{
|
||||
bool m_EnableJIT;
|
||||
bool m_DumpAudio;
|
||||
int m_Volume;
|
||||
std::string sBackend;
|
||||
int iFrequency;
|
||||
|
||||
// Load from given file
|
||||
void Load();
|
||||
|
||||
// Self explanatory
|
||||
void SaveSettings();
|
||||
|
||||
// Update according to the values (stream/mixer)
|
||||
void Update();
|
||||
};
|
||||
|
||||
#endif //AUDIO_COMMON_CONFIG
|
||||
@@ -0,0 +1,400 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
// Dolby Pro Logic 2 decoder from ffdshow-tryout
|
||||
// * Copyright 2001 Anders Johansson [email protected]
|
||||
// * Copyright (c) 2004-2006 Milan Cutka
|
||||
// * based on mplayer HRTF plugin by ylai
|
||||
|
||||
#include <functional>
|
||||
#include <vector>
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "DPL2Decoder.h"
|
||||
|
||||
#define M_PI 3.14159265358979323846
|
||||
#define M_SQRT1_2 0.70710678118654752440
|
||||
|
||||
int olddelay = -1;
|
||||
unsigned int oldfreq = 0;
|
||||
unsigned int dlbuflen;
|
||||
int cyc_pos;
|
||||
float l_fwr, r_fwr, lpr_fwr, lmr_fwr;
|
||||
std::vector<float> fwrbuf_l, fwrbuf_r;
|
||||
float adapt_l_gain, adapt_r_gain, adapt_lpr_gain, adapt_lmr_gain;
|
||||
std::vector<float> lf, rf, lr, rr, cf, cr;
|
||||
float LFE_buf[256];
|
||||
unsigned int lfe_pos;
|
||||
float *filter_coefs_lfe;
|
||||
unsigned int len125;
|
||||
|
||||
template<class T,class _ftype_t> static _ftype_t dotproduct(int count,const T *buf,const _ftype_t *coefficients)
|
||||
{
|
||||
float sum0=0,sum1=0,sum2=0,sum3=0;
|
||||
for (;count>=4;buf+=4,coefficients+=4,count-=4)
|
||||
{
|
||||
sum0+=buf[0]*coefficients[0];
|
||||
sum1+=buf[1]*coefficients[1];
|
||||
sum2+=buf[2]*coefficients[2];
|
||||
sum3+=buf[3]*coefficients[3];
|
||||
}
|
||||
while (count--) sum0+= *buf++ * *coefficients++;
|
||||
return sum0+sum1+sum2+sum3;
|
||||
}
|
||||
|
||||
template<class T> static T firfilter(const T *buf, int pos, int len, int count, const float *coefficients)
|
||||
{
|
||||
int count1, count2;
|
||||
|
||||
if (pos >= count)
|
||||
{
|
||||
pos -= count;
|
||||
count1 = count; count2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
count2 = pos;
|
||||
count1 = count - pos;
|
||||
pos = len - count1;
|
||||
}
|
||||
|
||||
// high part of window
|
||||
const T *ptr = &buf[pos];
|
||||
|
||||
float r1=dotproduct(count1,ptr,coefficients);coefficients+=count1;
|
||||
float r2=dotproduct(count2,buf,coefficients);
|
||||
return T(r1+r2);
|
||||
}
|
||||
|
||||
template<class T> inline const T& limit(const T& val, const T& min, const T& max)
|
||||
{
|
||||
if (val < min) {
|
||||
return min;
|
||||
} else if (val > max) {
|
||||
return max;
|
||||
} else {
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// Hamming
|
||||
// 2*pi*k
|
||||
// w(k) = 0.54 - 0.46*cos(------), where 0 <= k < N
|
||||
// N-1
|
||||
//
|
||||
// n window length
|
||||
// w buffer for the window parameters
|
||||
*/
|
||||
void hamming(int n, float* w)
|
||||
{
|
||||
int i;
|
||||
float k = float(2*M_PI/((float)(n-1))); // 2*pi/(N-1)
|
||||
|
||||
// Calculate window coefficients
|
||||
for (i=0; i<n; i++)
|
||||
*w++ = float(0.54 - 0.46*cos(k*(float)i));
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* FIR filter design
|
||||
******************************************************************************/
|
||||
|
||||
/* Design FIR filter using the Window method
|
||||
|
||||
n filter length must be odd for HP and BS filters
|
||||
w buffer for the filter taps (must be n long)
|
||||
fc cutoff frequencies (1 for LP and HP, 2 for BP and BS)
|
||||
0 < fc < 1 where 1 <=> Fs/2
|
||||
flags window and filter type as defined in filter.h
|
||||
variables are ored together: i.e. LP|HAMMING will give a
|
||||
low pass filter designed using a hamming window
|
||||
opt beta constant used only when designing using kaiser windows
|
||||
|
||||
returns 0 if OK, -1 if fail
|
||||
*/
|
||||
float* design_fir(unsigned int *n, float* fc, float opt)
|
||||
{
|
||||
unsigned int o = *n & 1; // Indicator for odd filter length
|
||||
unsigned int end = ((*n + 1) >> 1) - o; // Loop end
|
||||
unsigned int i; // Loop index
|
||||
|
||||
float k1 = 2 * float(M_PI); // 2*pi*fc1
|
||||
float k2 = 0.5f * (float)(1 - o);// Constant used if the filter has even length
|
||||
float g = 0.0f; // Gain
|
||||
float t1; // Temporary variables
|
||||
float fc1; // Cutoff frequencies
|
||||
|
||||
// Sanity check
|
||||
if(*n==0) return NULL;
|
||||
fc[0]=limit(fc[0],float(0.001),float(1));
|
||||
|
||||
float *w=(float*)calloc(sizeof(float),*n);
|
||||
|
||||
// Get window coefficients
|
||||
hamming(*n,w);
|
||||
|
||||
fc1=*fc;
|
||||
// Cutoff frequency must be < 0.5 where 0.5 <=> Fs/2
|
||||
fc1 = ((fc1 <= 1.0) && (fc1 > 0.0)) ? fc1/2 : 0.25f;
|
||||
k1 *= fc1;
|
||||
|
||||
// Low pass filter
|
||||
|
||||
// If the filter length is odd, there is one point which is exactly
|
||||
// in the middle. The value at this point is 2*fCutoff*sin(x)/x,
|
||||
// where x is zero. To make sure nothing strange happens, we set this
|
||||
// value separately.
|
||||
if (o)
|
||||
{
|
||||
w[end] = fc1 * w[end] * 2.0f;
|
||||
g=w[end];
|
||||
}
|
||||
|
||||
// Create filter
|
||||
for (i=0 ; i<end ; i++)
|
||||
{
|
||||
t1 = (float)(i+1) - k2;
|
||||
w[end-i-1] = w[*n-end+i] = float(w[end-i-1] * sin(k1 * t1)/(M_PI * t1)); // Sinc
|
||||
g += 2*w[end-i-1]; // Total gain in filter
|
||||
}
|
||||
|
||||
|
||||
// Normalize gain
|
||||
g=1/g;
|
||||
for (i=0; i<*n; i++)
|
||||
w[i] *= g;
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
void onSeek(void)
|
||||
{
|
||||
l_fwr = r_fwr = lpr_fwr = lmr_fwr = 0;
|
||||
std::fill(fwrbuf_l.begin(), fwrbuf_l.end(), 0.0f);
|
||||
std::fill(fwrbuf_r.begin(), fwrbuf_r.end(), 0.0f);
|
||||
adapt_l_gain = adapt_r_gain = adapt_lpr_gain = adapt_lmr_gain = 0;
|
||||
std::fill(lf.begin(), lf.end(), 0.0f);
|
||||
std::fill(rf.begin(), rf.end(), 0.0f);
|
||||
std::fill(lr.begin(), lr.end(), 0.0f);
|
||||
std::fill(rr.begin(), rr.end(), 0.0f);
|
||||
std::fill(cf.begin(), cf.end(), 0.0f);
|
||||
std::fill(cr.begin(), cr.end(), 0.0f);
|
||||
lfe_pos = 0;
|
||||
memset(LFE_buf, 0, sizeof(LFE_buf));
|
||||
}
|
||||
|
||||
void done(void)
|
||||
{
|
||||
onSeek();
|
||||
if (filter_coefs_lfe)
|
||||
{
|
||||
free(filter_coefs_lfe);
|
||||
}
|
||||
filter_coefs_lfe = NULL;
|
||||
}
|
||||
|
||||
float* calc_coefficients_125Hz_lowpass(int rate)
|
||||
{
|
||||
len125 = 256;
|
||||
float f = 125.0f / (rate / 2);
|
||||
float *coeffs = design_fir(&len125, &f, 0);
|
||||
static const float M3_01DB = 0.7071067812f;
|
||||
for (unsigned int i = 0; i < len125; i++)
|
||||
{
|
||||
coeffs[i] *= M3_01DB;
|
||||
}
|
||||
return coeffs;
|
||||
}
|
||||
|
||||
float passive_lock(float x)
|
||||
{
|
||||
static const float MATAGCLOCK = 0.2f; /* AGC range (around 1) where the matrix behaves passively */
|
||||
const float x1 = x - 1;
|
||||
const float ax1s = fabs(x - 1) * (1.0f / MATAGCLOCK);
|
||||
return x1 - x1 / (1 + ax1s * ax1s) + 1;
|
||||
}
|
||||
|
||||
void matrix_decode(const float *in, const int k, const int il,
|
||||
const int ir, bool decode_rear,
|
||||
const int dlbuflen,
|
||||
float l_fwr, float r_fwr,
|
||||
float lpr_fwr, float lmr_fwr,
|
||||
float *adapt_l_gain, float *adapt_r_gain,
|
||||
float *adapt_lpr_gain, float *adapt_lmr_gain,
|
||||
float *lf, float *rf, float *lr,
|
||||
float *rr, float *cf)
|
||||
{
|
||||
static const float M9_03DB = 0.3535533906f;
|
||||
static const float MATAGCTRIG = 8.0f; /* (Fuzzy) AGC trigger */
|
||||
static const float MATAGCDECAY = 1.0f; /* AGC baseline decay rate (1/samp.) */
|
||||
static const float MATCOMPGAIN = 0.37f; /* Cross talk compensation gain, 0.50 - 0.55 is full cancellation. */
|
||||
|
||||
const int kr = (k + olddelay) % dlbuflen;
|
||||
float l_gain = (l_fwr + r_fwr) / (1 + l_fwr + l_fwr);
|
||||
float r_gain = (l_fwr + r_fwr) / (1 + r_fwr + r_fwr);
|
||||
/* The 2nd axis has strong gain fluctuations, and therefore require
|
||||
limits. The factor corresponds to the 1 / amplification of (Lt
|
||||
- Rt) when (Lt, Rt) is strongly correlated. (e.g. during
|
||||
dialogues). It should be bigger than -12 dB to prevent
|
||||
distortion. */
|
||||
float lmr_lim_fwr = lmr_fwr > M9_03DB * lpr_fwr ? lmr_fwr : M9_03DB * lpr_fwr;
|
||||
float lpr_gain = (lpr_fwr + lmr_lim_fwr) / (1 + lpr_fwr + lpr_fwr);
|
||||
float lmr_gain = (lpr_fwr + lmr_lim_fwr) / (1 + lmr_lim_fwr + lmr_lim_fwr);
|
||||
float lmr_unlim_gain = (lpr_fwr + lmr_fwr) / (1 + lmr_fwr + lmr_fwr);
|
||||
float lpr, lmr;
|
||||
float l_agc, r_agc, lpr_agc, lmr_agc;
|
||||
float f, d_gain, c_gain, c_agc_cfk;
|
||||
|
||||
/*** AXIS NO. 1: (Lt, Rt) -> (C, Ls, Rs) ***/
|
||||
/* AGC adaption */
|
||||
d_gain = (fabs(l_gain - *adapt_l_gain) + fabs(r_gain - *adapt_r_gain)) * 0.5f;
|
||||
f = d_gain * (1.0f / MATAGCTRIG);
|
||||
f = MATAGCDECAY - MATAGCDECAY / (1 + f * f);
|
||||
*adapt_l_gain = (1 - f) * *adapt_l_gain + f * l_gain;
|
||||
*adapt_r_gain = (1 - f) * *adapt_r_gain + f * r_gain;
|
||||
/* Matrix */
|
||||
l_agc = in[il] * passive_lock(*adapt_l_gain);
|
||||
r_agc = in[ir] * passive_lock(*adapt_r_gain);
|
||||
cf[k] = (l_agc + r_agc) * (float)M_SQRT1_2;
|
||||
if (decode_rear)
|
||||
{
|
||||
lr[kr] = rr[kr] = (l_agc - r_agc) * (float)M_SQRT1_2;
|
||||
/* Stereo rear channel is steered with the same AGC steering as
|
||||
the decoding matrix. Note this requires a fast updating AGC
|
||||
at the order of 20 ms (which is the case here). */
|
||||
lr[kr] *= (l_fwr + l_fwr) / (1 + l_fwr + r_fwr);
|
||||
rr[kr] *= (r_fwr + r_fwr) / (1 + l_fwr + r_fwr);
|
||||
}
|
||||
|
||||
/*** AXIS NO. 2: (Lt + Rt, Lt - Rt) -> (L, R) ***/
|
||||
lpr = (in[il] + in[ir]) * (float)M_SQRT1_2;
|
||||
lmr = (in[il] - in[ir]) * (float)M_SQRT1_2;
|
||||
/* AGC adaption */
|
||||
d_gain = fabs(lmr_unlim_gain - *adapt_lmr_gain);
|
||||
f = d_gain * (1.0f / MATAGCTRIG);
|
||||
f = MATAGCDECAY - MATAGCDECAY / (1 + f * f);
|
||||
*adapt_lpr_gain = (1 - f) * *adapt_lpr_gain + f * lpr_gain;
|
||||
*adapt_lmr_gain = (1 - f) * *adapt_lmr_gain + f * lmr_gain;
|
||||
/* Matrix */
|
||||
lpr_agc = lpr * passive_lock(*adapt_lpr_gain);
|
||||
lmr_agc = lmr * passive_lock(*adapt_lmr_gain);
|
||||
lf[k] = (lpr_agc + lmr_agc) * (float)M_SQRT1_2;
|
||||
rf[k] = (lpr_agc - lmr_agc) * (float)M_SQRT1_2;
|
||||
|
||||
/*** CENTER FRONT CANCELLATION ***/
|
||||
/* A heuristic approach exploits that Lt + Rt gain contains the
|
||||
information about Lt, Rt correlation. This effectively reshapes
|
||||
the front and rear "cones" to concentrate Lt + Rt to C and
|
||||
introduce Lt - Rt in L, R. */
|
||||
/* 0.67677 is the empirical lower bound for lpr_gain. */
|
||||
c_gain = 8 * (*adapt_lpr_gain - 0.67677f);
|
||||
c_gain = c_gain > 0 ? c_gain : 0;
|
||||
/* c_gain should not be too high, not even reaching full
|
||||
cancellation (~ 0.50 - 0.55 at current AGC implementation), or
|
||||
the center will sound too narrow. */
|
||||
c_gain = MATCOMPGAIN / (1 + c_gain * c_gain);
|
||||
c_agc_cfk = c_gain * cf[k];
|
||||
lf[k] -= c_agc_cfk;
|
||||
rf[k] -= c_agc_cfk;
|
||||
cf[k] += c_agc_cfk + c_agc_cfk;
|
||||
}
|
||||
|
||||
void dpl2decode(float *samples, int numsamples, float *out)
|
||||
{
|
||||
static const unsigned int FWRDURATION = 240; /* FWR average duration (samples) */
|
||||
static const int cfg_delay = 0;
|
||||
static const unsigned int fmt_freq = 48000;
|
||||
static const unsigned int fmt_nchannels = 2; // input channels
|
||||
|
||||
int cur = 0;
|
||||
|
||||
if (olddelay != cfg_delay || oldfreq != fmt_freq)
|
||||
{
|
||||
done();
|
||||
olddelay = cfg_delay;
|
||||
oldfreq = fmt_freq;
|
||||
dlbuflen = std::max(FWRDURATION, (fmt_freq * cfg_delay / 1000)); //+(len7000-1);
|
||||
cyc_pos = dlbuflen - 1;
|
||||
fwrbuf_l.resize(dlbuflen);
|
||||
fwrbuf_r.resize(dlbuflen);
|
||||
lf.resize(dlbuflen);
|
||||
rf.resize(dlbuflen);
|
||||
lr.resize(dlbuflen);
|
||||
rr.resize(dlbuflen);
|
||||
cf.resize(dlbuflen);
|
||||
cr.resize(dlbuflen);
|
||||
filter_coefs_lfe = calc_coefficients_125Hz_lowpass(fmt_freq);
|
||||
lfe_pos = 0;
|
||||
memset(LFE_buf, 0, sizeof(LFE_buf));
|
||||
}
|
||||
|
||||
float *in = samples; // Input audio data
|
||||
float *end = in + numsamples * fmt_nchannels; // Loop end
|
||||
|
||||
while (in < end)
|
||||
{
|
||||
const int k = cyc_pos;
|
||||
|
||||
const int fwr_pos = (k + FWRDURATION) % dlbuflen;
|
||||
/* Update the full wave rectified total amplitude */
|
||||
/* Input matrix decoder */
|
||||
l_fwr += fabs(in[0]) - fabs(fwrbuf_l[fwr_pos]);
|
||||
r_fwr += fabs(in[1]) - fabs(fwrbuf_r[fwr_pos]);
|
||||
lpr_fwr += fabs(in[0] + in[1]) - fabs(fwrbuf_l[fwr_pos] + fwrbuf_r[fwr_pos]);
|
||||
lmr_fwr += fabs(in[0] - in[1]) - fabs(fwrbuf_l[fwr_pos] - fwrbuf_r[fwr_pos]);
|
||||
|
||||
/* Matrix encoded 2 channel sources */
|
||||
fwrbuf_l[k] = in[0];
|
||||
fwrbuf_r[k] = in[1];
|
||||
matrix_decode(in, k, 0, 1, true, dlbuflen,
|
||||
l_fwr, r_fwr,
|
||||
lpr_fwr, lmr_fwr,
|
||||
&adapt_l_gain, &adapt_r_gain,
|
||||
&adapt_lpr_gain, &adapt_lmr_gain,
|
||||
&lf[0], &rf[0], &lr[0], &rr[0], &cf[0]);
|
||||
|
||||
out[cur + 0] = lf[k];
|
||||
out[cur + 1] = rf[k];
|
||||
out[cur + 2] = cf[k];
|
||||
LFE_buf[lfe_pos] = (out[0] + out[1]) / 2;
|
||||
out[cur + 3] = firfilter(LFE_buf, lfe_pos, len125, len125, filter_coefs_lfe);
|
||||
lfe_pos++;
|
||||
if (lfe_pos == len125)
|
||||
{
|
||||
lfe_pos = 0;
|
||||
}
|
||||
out[cur + 4] = lr[k];
|
||||
out[cur + 5] = rr[k];
|
||||
// Next sample...
|
||||
in += 2;
|
||||
cur += 6;
|
||||
cyc_pos--;
|
||||
if (cyc_pos < 0)
|
||||
{
|
||||
cyc_pos += dlbuflen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dpl2reset()
|
||||
{
|
||||
olddelay = -1;
|
||||
oldfreq = 0;
|
||||
filter_coefs_lfe = NULL;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _DPL2DECODER_H_
|
||||
#define _DPL2DECODER_H_
|
||||
|
||||
void dpl2decode(float *samples, int numsamples, float *out);
|
||||
void dpl2reset();
|
||||
|
||||
#endif // _DPL2DECODER_H_
|
||||
@@ -92,6 +92,9 @@ public:
|
||||
|
||||
std::mutex& MixerCritical() { return m_csMixing; }
|
||||
|
||||
volatile float GetCurrentSpeed() const { return m_speed; }
|
||||
void UpdateSpeed(volatile float val) { m_speed = val; }
|
||||
|
||||
protected:
|
||||
unsigned int m_sampleRate;
|
||||
unsigned int m_aiSampleRate;
|
||||
@@ -113,6 +116,8 @@ protected:
|
||||
|
||||
bool m_AIplaying;
|
||||
std::mutex m_csMixing;
|
||||
|
||||
volatile float m_speed; // Current rate of the emulation (1.0 = 100% speed)
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
@@ -15,13 +15,14 @@
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include <functional>
|
||||
|
||||
#include "aldlist.h"
|
||||
#include "OpenALStream.h"
|
||||
#include "DPL2Decoder.h"
|
||||
|
||||
#if defined HAVE_OPENAL && HAVE_OPENAL
|
||||
|
||||
soundtouch::SoundTouch soundTouch;
|
||||
|
||||
//
|
||||
// AyuanX: Spec says OpenAL1.1 is thread safe already
|
||||
//
|
||||
@@ -35,14 +36,21 @@ bool OpenALStream::Start()
|
||||
pDeviceList = new ALDeviceList();
|
||||
if ((pDeviceList) && (pDeviceList->GetNumDevices()))
|
||||
{
|
||||
char *defDevName = pDeviceList-> \
|
||||
GetDeviceName(pDeviceList->GetDefaultDevice());
|
||||
char *defDevName = pDeviceList->GetDeviceName(pDeviceList->GetDefaultDevice());
|
||||
|
||||
WARN_LOG(AUDIO, "Found OpenAL device %s", defDevName);
|
||||
|
||||
pDevice = alcOpenDevice(defDevName);
|
||||
if (pDevice)
|
||||
{
|
||||
pContext = alcCreateContext(pDevice, NULL);
|
||||
if (pContext)
|
||||
{
|
||||
// Used to determine an appropriate period size (2x period = total buffer size)
|
||||
//ALCint refresh;
|
||||
//alcGetIntegerv(pDevice, ALC_REFRESH, 1, &refresh);
|
||||
//period_size_in_millisec = 1000 / refresh;
|
||||
|
||||
alcMakeContextCurrent(pContext);
|
||||
thread = std::thread(std::mem_fun(&OpenALStream::SoundLoop), this);
|
||||
bReturn = true;
|
||||
@@ -50,8 +58,7 @@ bool OpenALStream::Start()
|
||||
else
|
||||
{
|
||||
alcCloseDevice(pDevice);
|
||||
PanicAlertT("OpenAL: can't create context "
|
||||
"for device %s", defDevName);
|
||||
PanicAlertT("OpenAL: can't create context for device %s", defDevName);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -65,6 +72,10 @@ bool OpenALStream::Start()
|
||||
PanicAlertT("OpenAL: can't find sound devices");
|
||||
}
|
||||
|
||||
// Initialise DPL2 parameters
|
||||
dpl2reset();
|
||||
|
||||
soundTouch.clear();
|
||||
return bReturn;
|
||||
}
|
||||
|
||||
@@ -74,6 +85,8 @@ void OpenALStream::Stop()
|
||||
// kick the thread if it's waiting
|
||||
soundSyncEvent.Set();
|
||||
|
||||
soundTouch.clear();
|
||||
|
||||
thread.join();
|
||||
|
||||
alSourceStop(uiSource);
|
||||
@@ -82,7 +95,7 @@ void OpenALStream::Stop()
|
||||
// Clean up buffers and sources
|
||||
alDeleteSources(1, &uiSource);
|
||||
uiSource = 0;
|
||||
alDeleteBuffers(OAL_NUM_BUFFERS, uiBuffers);
|
||||
alDeleteBuffers(numBuffers, uiBuffers);
|
||||
|
||||
ALCcontext *pContext = alcGetCurrentContext();
|
||||
ALCdevice *pDevice = alcGetContextsDevice(pContext);
|
||||
@@ -111,6 +124,7 @@ void OpenALStream::Clear(bool mute)
|
||||
|
||||
if(m_muted)
|
||||
{
|
||||
soundTouch.clear();
|
||||
alSourceStop(uiSource);
|
||||
}
|
||||
else
|
||||
@@ -124,20 +138,29 @@ void OpenALStream::SoundLoop()
|
||||
Common::SetCurrentThreadName("Audio thread - openal");
|
||||
|
||||
u32 ulFrequency = m_mixer->GetSampleRate();
|
||||
numBuffers = Core::g_CoreStartupParameter.iLatency + 2; // OpenAL requires a minimum of two buffers
|
||||
|
||||
memset(uiBuffers, 0, OAL_NUM_BUFFERS * sizeof(ALuint));
|
||||
memset(uiBuffers, 0, numBuffers * sizeof(ALuint));
|
||||
uiSource = 0;
|
||||
|
||||
// Generate some AL Buffers for streaming
|
||||
alGenBuffers(OAL_NUM_BUFFERS, (ALuint *)uiBuffers);
|
||||
alGenBuffers(numBuffers, (ALuint *)uiBuffers);
|
||||
// Generate a Source to playback the Buffers
|
||||
alGenSources(1, &uiSource);
|
||||
|
||||
// Short Silence
|
||||
memset(sampleBuffer, 0, OAL_MAX_SAMPLES * SIZE_FLOAT * SURROUND_CHANNELS * numBuffers);
|
||||
memset(realtimeBuffer, 0, OAL_MAX_SAMPLES * 4);
|
||||
for (int i = 0; i < OAL_NUM_BUFFERS; i++)
|
||||
alBufferData(uiBuffers[i], AL_FORMAT_STEREO16, realtimeBuffer, OAL_MAX_SAMPLES, ulFrequency);
|
||||
alSourceQueueBuffers(uiSource, OAL_NUM_BUFFERS, uiBuffers);
|
||||
for (int i = 0; i < numBuffers; i++)
|
||||
{
|
||||
#if !defined(__APPLE__)
|
||||
if (Core::g_CoreStartupParameter.bDPL2Decoder)
|
||||
alBufferData(uiBuffers[i], AL_FORMAT_51CHN32, sampleBuffer, 4 * SIZE_FLOAT * SURROUND_CHANNELS, ulFrequency);
|
||||
else
|
||||
#endif
|
||||
alBufferData(uiBuffers[i], AL_FORMAT_STEREO16, realtimeBuffer, 4 * 2 * 2, ulFrequency);
|
||||
}
|
||||
alSourceQueueBuffers(uiSource, numBuffers, uiBuffers);
|
||||
alSourcePlay(uiSource);
|
||||
|
||||
// Set the default sound volume as saved in the config file.
|
||||
@@ -148,41 +171,175 @@ void OpenALStream::SoundLoop()
|
||||
|
||||
ALint iBuffersFilled = 0;
|
||||
ALint iBuffersProcessed = 0;
|
||||
ALuint uiBufferTemp[OAL_NUM_BUFFERS] = {0};
|
||||
ALint iState = 0;
|
||||
ALuint uiBufferTemp[OAL_MAX_BUFFERS] = {0};
|
||||
|
||||
soundTouch.setChannels(2);
|
||||
soundTouch.setSampleRate(ulFrequency);
|
||||
soundTouch.setTempo(1.0);
|
||||
soundTouch.setSetting(SETTING_USE_QUICKSEEK, 0);
|
||||
soundTouch.setSetting(SETTING_USE_AA_FILTER, 0);
|
||||
soundTouch.setSetting(SETTING_SEQUENCE_MS, 1);
|
||||
soundTouch.setSetting(SETTING_SEEKWINDOW_MS, 28);
|
||||
soundTouch.setSetting(SETTING_OVERLAP_MS, 12);
|
||||
|
||||
bool surround_capable = Core::g_CoreStartupParameter.bDPL2Decoder;
|
||||
#if defined(__APPLE__)
|
||||
bool float32_capable = false;
|
||||
#else
|
||||
bool float32_capable = true;
|
||||
#endif
|
||||
|
||||
while (!threadData)
|
||||
{
|
||||
// num_samples_to_render in this update - depends on SystemTimers::AUDIO_DMA_PERIOD.
|
||||
const u32 stereo_16_bit_size = 4;
|
||||
const u32 dma_length = 32;
|
||||
const u64 ais_samples_per_second = 48000 * stereo_16_bit_size;
|
||||
u64 audio_dma_period = SystemTimers::GetTicksPerSecond() / (AudioInterface::GetAIDSampleRate() * stereo_16_bit_size / dma_length);
|
||||
u64 num_samples_to_render = (audio_dma_period * ais_samples_per_second) / SystemTimers::GetTicksPerSecond();
|
||||
|
||||
unsigned int numSamples = (unsigned int)num_samples_to_render;
|
||||
|
||||
numSamples = (numSamples > OAL_MAX_SAMPLES) ? OAL_MAX_SAMPLES : numSamples;
|
||||
numSamples = m_mixer->Mix(realtimeBuffer, numSamples);
|
||||
|
||||
// Convert the samples from short to float
|
||||
float dest[OAL_MAX_SAMPLES * 2 * 2 * OAL_MAX_BUFFERS];
|
||||
for (u32 i = 0; i < numSamples; ++i)
|
||||
{
|
||||
dest[i * 2 + 0] = (float)realtimeBuffer[i * 2 + 0] / (1 << 16);
|
||||
dest[i * 2 + 1] = (float)realtimeBuffer[i * 2 + 1] / (1 << 16);
|
||||
}
|
||||
|
||||
soundTouch.putSamples(dest, numSamples);
|
||||
|
||||
if (iBuffersProcessed == iBuffersFilled)
|
||||
{
|
||||
alGetSourcei(uiSource, AL_BUFFERS_PROCESSED, &iBuffersProcessed);
|
||||
iBuffersFilled = 0;
|
||||
}
|
||||
|
||||
unsigned int numSamples = m_mixer->GetNumSamples();
|
||||
|
||||
if (iBuffersProcessed && (numSamples >= OAL_THRESHOLD))
|
||||
if (iBuffersProcessed)
|
||||
{
|
||||
numSamples = (numSamples > OAL_MAX_SAMPLES) ? OAL_MAX_SAMPLES : numSamples;
|
||||
// Remove the Buffer from the Queue. (uiBuffer contains the Buffer ID for the unqueued Buffer)
|
||||
if (iBuffersFilled == 0)
|
||||
alSourceUnqueueBuffers(uiSource, iBuffersProcessed, uiBufferTemp);
|
||||
float rate = m_mixer->GetCurrentSpeed();
|
||||
if (rate <= 0)
|
||||
{
|
||||
Core::RequestRefreshInfo();
|
||||
rate = m_mixer->GetCurrentSpeed();
|
||||
}
|
||||
|
||||
m_mixer->Mix(realtimeBuffer, numSamples);
|
||||
alBufferData(uiBufferTemp[iBuffersFilled], AL_FORMAT_STEREO16, realtimeBuffer, numSamples * 4, ulFrequency);
|
||||
alSourceQueueBuffers(uiSource, 1, &uiBufferTemp[iBuffersFilled]);
|
||||
iBuffersFilled++;
|
||||
// Place a lower limit of 10% speed. When a game boots up, there will be
|
||||
// many silence samples. These do not need to be timestretched.
|
||||
if (rate > 0.10)
|
||||
{
|
||||
// Adjust SETTING_SEQUENCE_MS to balance between lag vs hollow audio
|
||||
soundTouch.setSetting(SETTING_SEQUENCE_MS, (int)(1 / (rate * rate)));
|
||||
soundTouch.setTempo(rate);
|
||||
}
|
||||
unsigned int nSamples = soundTouch.receiveSamples(sampleBuffer, OAL_MAX_SAMPLES * SIZE_FLOAT * SURROUND_CHANNELS * OAL_MAX_BUFFERS);
|
||||
if (nSamples > 0)
|
||||
{
|
||||
// Remove the Buffer from the Queue. (uiBuffer contains the Buffer ID for the unqueued Buffer)
|
||||
if (iBuffersFilled == 0)
|
||||
{
|
||||
alSourceUnqueueBuffers(uiSource, iBuffersProcessed, uiBufferTemp);
|
||||
ALenum err = alGetError();
|
||||
if (err != 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "Error unqueuing buffers: %08x", err);
|
||||
}
|
||||
}
|
||||
#if defined(__APPLE__)
|
||||
// OSX does not have the alext AL_FORMAT_51CHN32 yet.
|
||||
surround_capable = false;
|
||||
#else
|
||||
if (surround_capable)
|
||||
{
|
||||
float dpl2[OAL_MAX_SAMPLES * SIZE_FLOAT * SURROUND_CHANNELS * OAL_MAX_BUFFERS];
|
||||
dpl2decode(sampleBuffer, nSamples, dpl2);
|
||||
|
||||
if (iBuffersFilled == OAL_NUM_BUFFERS)
|
||||
alSourcePlay(uiSource);
|
||||
alBufferData(uiBufferTemp[iBuffersFilled], AL_FORMAT_51CHN32, dpl2, nSamples * SIZE_FLOAT * SURROUND_CHANNELS, ulFrequency);
|
||||
ALenum err = alGetError();
|
||||
if (err == AL_INVALID_ENUM)
|
||||
{
|
||||
// 5.1 is not supported by the host, fallback to stereo
|
||||
WARN_LOG(AUDIO, "Unable to set 5.1 surround mode. Updating OpenAL Soft might fix this issue.");
|
||||
surround_capable = false;
|
||||
}
|
||||
else if (err != 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "Error occurred while buffering data: %08x", err);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (!surround_capable)
|
||||
{
|
||||
#if !defined(__APPLE__)
|
||||
if (float32_capable)
|
||||
{
|
||||
alBufferData(uiBufferTemp[iBuffersFilled], AL_FORMAT_STEREO_FLOAT32, sampleBuffer, nSamples * 4 * 2, ulFrequency);
|
||||
ALenum err = alGetError();
|
||||
if (err == AL_INVALID_ENUM)
|
||||
{
|
||||
float32_capable = false;
|
||||
}
|
||||
else if (err != 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "Error occurred while buffering float32 data: %08x", err);
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
if (!float32_capable)
|
||||
{
|
||||
// Convert the samples from float to short
|
||||
short stereo[OAL_MAX_SAMPLES * 2 * 2 * OAL_MAX_BUFFERS];
|
||||
for (u32 i = 0; i < nSamples; ++i)
|
||||
{
|
||||
stereo[i * 2 + 0] = (short)((float)sampleBuffer[i * 2 + 0] * (1 << 16));
|
||||
stereo[i * 2 + 1] = (short)((float)sampleBuffer[i * 2 + 1] * (1 << 16));
|
||||
}
|
||||
alBufferData(uiBufferTemp[iBuffersFilled], AL_FORMAT_STEREO16, stereo, nSamples * 2 * 2, ulFrequency);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
alSourceQueueBuffers(uiSource, 1, &uiBufferTemp[iBuffersFilled]);
|
||||
ALenum err = alGetError();
|
||||
if (err != 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "Error queuing buffers: %08x", err);
|
||||
}
|
||||
iBuffersFilled++;
|
||||
|
||||
if (iBuffersFilled == numBuffers)
|
||||
{
|
||||
alSourcePlay(uiSource);
|
||||
ALenum err = alGetError();
|
||||
if (err != 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "Error occurred during playback: %08x", err);
|
||||
}
|
||||
}
|
||||
|
||||
alGetSourcei(uiSource, AL_SOURCE_STATE, &iState);
|
||||
if (iState != AL_PLAYING)
|
||||
{
|
||||
// Buffer underrun occurred, resume playback
|
||||
alSourcePlay(uiSource);
|
||||
ALenum err = alGetError();
|
||||
if (err != 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "Error occurred resuming playback: %08x", err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (numSamples >= OAL_THRESHOLD)
|
||||
else
|
||||
{
|
||||
ALint state = 0;
|
||||
alGetSourcei(uiSource, AL_SOURCE_STATE, &state);
|
||||
if (state == AL_STOPPED)
|
||||
alSourcePlay(uiSource);
|
||||
soundSyncEvent.Wait();
|
||||
}
|
||||
soundSyncEvent.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,21 +24,30 @@
|
||||
|
||||
#if defined HAVE_OPENAL && HAVE_OPENAL
|
||||
#ifdef _WIN32
|
||||
#include "../../../../Externals/OpenAL/include/al.h"
|
||||
#include "../../../../Externals/OpenAL/include/alc.h"
|
||||
#include <OpenAL/include/al.h>
|
||||
#include <OpenAL/include/alc.h>
|
||||
#include <OpenAL/include/alext.h>
|
||||
#elif defined __APPLE__
|
||||
#include <OpenAL/al.h>
|
||||
#include <OpenAL/alc.h>
|
||||
#else
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <AL/alext.h>
|
||||
#endif
|
||||
|
||||
#include "Core.h"
|
||||
#include "HW/SystemTimers.h"
|
||||
#include "HW/AudioInterface.h"
|
||||
#include <soundtouch/SoundTouch.h>
|
||||
#include <soundtouch/STTypes.h>
|
||||
|
||||
// 16 bit Stereo
|
||||
#define SFX_MAX_SOURCE 1
|
||||
#define OAL_NUM_BUFFERS 16
|
||||
#define OAL_MAX_SAMPLES 512 // AyuanX: Don't make it too large, as larger buffer means longer delay
|
||||
#define OAL_THRESHOLD 128 // Some games are quite sensitive to delay
|
||||
#define OAL_MAX_BUFFERS 32
|
||||
#define OAL_MAX_SAMPLES 256
|
||||
#define SURROUND_CHANNELS 6 // number of channels in surround mode
|
||||
#define SIZE_FLOAT 4 // size of a float in bytes
|
||||
#endif
|
||||
|
||||
class OpenALStream: public SoundStream
|
||||
@@ -64,11 +73,14 @@ public:
|
||||
private:
|
||||
std::thread thread;
|
||||
Common::Event soundSyncEvent;
|
||||
|
||||
|
||||
short realtimeBuffer[OAL_MAX_SAMPLES * 2];
|
||||
ALuint uiBuffers[OAL_NUM_BUFFERS];
|
||||
soundtouch::SAMPLETYPE sampleBuffer[OAL_MAX_SAMPLES * SIZE_FLOAT * SURROUND_CHANNELS * OAL_MAX_BUFFERS];
|
||||
ALuint uiBuffers[OAL_MAX_BUFFERS];
|
||||
ALuint uiSource;
|
||||
ALfloat fVolume;
|
||||
|
||||
u8 numBuffers;
|
||||
#else
|
||||
public:
|
||||
OpenALStream(CMixer *mixer, void *hWnd = NULL): SoundStream(mixer) {}
|
||||
|
||||
@@ -22,31 +22,31 @@
|
||||
|
||||
#include "PulseAudioStream.h"
|
||||
|
||||
#define BUFFER_SIZE 4096
|
||||
#define BUFFER_SIZE_BYTES (BUFFER_SIZE * 4)
|
||||
namespace
|
||||
{
|
||||
const size_t BUFFER_SAMPLES = 512;
|
||||
const size_t CHANNEL_COUNT = 2;
|
||||
const size_t BUFFER_SIZE = BUFFER_SAMPLES * CHANNEL_COUNT;
|
||||
}
|
||||
|
||||
PulseAudio::PulseAudio(CMixer *mixer)
|
||||
: SoundStream(mixer), thread_running(false), mainloop(NULL)
|
||||
, context(NULL), stream(NULL), iVolume(100)
|
||||
{
|
||||
mix_buffer = new u8[BUFFER_SIZE_BYTES];
|
||||
}
|
||||
|
||||
PulseAudio::~PulseAudio()
|
||||
{
|
||||
delete [] mix_buffer;
|
||||
}
|
||||
: SoundStream(mixer)
|
||||
, mix_buffer(BUFFER_SIZE)
|
||||
, thread()
|
||||
, run_thread()
|
||||
, pa()
|
||||
{}
|
||||
|
||||
bool PulseAudio::Start()
|
||||
{
|
||||
thread_running = true;
|
||||
run_thread = true;
|
||||
thread = std::thread(std::mem_fun(&PulseAudio::SoundLoop), this);
|
||||
return true;
|
||||
}
|
||||
|
||||
void PulseAudio::Stop()
|
||||
{
|
||||
thread_running = false;
|
||||
run_thread = false;
|
||||
thread.join();
|
||||
}
|
||||
|
||||
@@ -60,260 +60,53 @@ void PulseAudio::SoundLoop()
|
||||
{
|
||||
Common::SetCurrentThreadName("Audio thread - pulse");
|
||||
|
||||
thread_running = PulseInit();
|
||||
|
||||
while (thread_running)
|
||||
if (PulseInit())
|
||||
{
|
||||
int frames_to_deliver = 512;
|
||||
m_mixer->Mix((short *)mix_buffer, frames_to_deliver);
|
||||
if (!Write(mix_buffer, frames_to_deliver * 4))
|
||||
ERROR_LOG(AUDIO, "PulseAudio failure writing data");
|
||||
while (run_thread)
|
||||
{
|
||||
m_mixer->Mix(&mix_buffer[0], mix_buffer.size() / CHANNEL_COUNT);
|
||||
Write(&mix_buffer[0], mix_buffer.size() * sizeof(s16));
|
||||
}
|
||||
|
||||
PulseShutdown();
|
||||
}
|
||||
PulseShutdown();
|
||||
}
|
||||
|
||||
bool PulseAudio::PulseInit()
|
||||
{
|
||||
// The Sample format to use
|
||||
const pa_sample_spec ss =
|
||||
pa_sample_spec ss = {};
|
||||
ss.format = PA_SAMPLE_S16LE;
|
||||
ss.channels = 2;
|
||||
ss.rate = m_mixer->GetSampleRate();
|
||||
|
||||
int error;
|
||||
pa = pa_simple_new(nullptr, "dolphin-emu", PA_STREAM_PLAYBACK,
|
||||
nullptr, "audio", &ss, nullptr, nullptr, &error);
|
||||
|
||||
if (!pa)
|
||||
{
|
||||
PA_SAMPLE_S16LE,
|
||||
m_mixer->GetSampleRate(),
|
||||
2
|
||||
};
|
||||
|
||||
mainloop = pa_threaded_mainloop_new();
|
||||
|
||||
context = pa_context_new(pa_threaded_mainloop_get_api(mainloop), "dolphin-emu");
|
||||
pa_context_set_state_callback(context, ContextStateCB, this);
|
||||
|
||||
if (pa_context_connect(context, NULL, PA_CONTEXT_NOFLAGS, NULL) < 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio failed to connect context: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
ERROR_LOG(AUDIO, "PulseAudio failed to initialize: %s",
|
||||
pa_strerror(error));
|
||||
return false;
|
||||
}
|
||||
|
||||
pa_threaded_mainloop_lock(mainloop);
|
||||
pa_threaded_mainloop_start(mainloop);
|
||||
|
||||
for (;;)
|
||||
else
|
||||
{
|
||||
pa_context_state_t state;
|
||||
|
||||
state = pa_context_get_state(context);
|
||||
|
||||
if (state == PA_CONTEXT_READY)
|
||||
break;
|
||||
|
||||
if (!PA_CONTEXT_IS_GOOD(state))
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio context state failure: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Wait until the context is ready
|
||||
pa_threaded_mainloop_wait(mainloop);
|
||||
NOTICE_LOG(AUDIO, "Pulse successfully initialized.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(stream = pa_stream_new(context, "emulator", &ss, NULL)))
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio failed to create playback stream: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Set callbacks for the playback stream
|
||||
pa_stream_set_state_callback(stream, StreamStateCB, this);
|
||||
pa_stream_set_write_callback(stream, StreamWriteCB, this);
|
||||
|
||||
if (pa_stream_connect_playback(stream, NULL, NULL, PA_STREAM_NOFLAGS, NULL, NULL) < 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio failed to connect playback stream: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (;;)
|
||||
{
|
||||
pa_stream_state_t state;
|
||||
|
||||
state = pa_stream_get_state(stream);
|
||||
|
||||
if (state == PA_STREAM_READY)
|
||||
break;
|
||||
|
||||
if (!PA_STREAM_IS_GOOD(state))
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio stream state failure: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Wait until the stream is ready
|
||||
pa_threaded_mainloop_wait(mainloop);
|
||||
}
|
||||
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
|
||||
SetVolume(iVolume);
|
||||
|
||||
NOTICE_LOG(AUDIO, "Pulse successfully initialized.");
|
||||
return true;
|
||||
}
|
||||
|
||||
void PulseAudio::PulseShutdown()
|
||||
{
|
||||
if (mainloop)
|
||||
pa_threaded_mainloop_stop(mainloop);
|
||||
|
||||
if (stream)
|
||||
pa_stream_unref(stream);
|
||||
|
||||
if (context)
|
||||
{
|
||||
pa_context_disconnect(context);
|
||||
pa_context_unref(context);
|
||||
}
|
||||
|
||||
if (mainloop)
|
||||
pa_threaded_mainloop_free(mainloop);
|
||||
pa_simple_free(pa);
|
||||
}
|
||||
|
||||
void PulseAudio::SignalMainLoop()
|
||||
void PulseAudio::Write(const void *data, size_t length)
|
||||
{
|
||||
pa_threaded_mainloop_signal(mainloop, 0);
|
||||
}
|
||||
|
||||
void PulseAudio::ContextStateCB(pa_context *c, void *userdata)
|
||||
{
|
||||
switch (pa_context_get_state(c))
|
||||
int error;
|
||||
if (pa_simple_write(pa, data, length, &error) < 0)
|
||||
{
|
||||
case PA_CONTEXT_READY:
|
||||
case PA_CONTEXT_TERMINATED:
|
||||
case PA_CONTEXT_FAILED:
|
||||
((PulseAudio *)userdata)->SignalMainLoop();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
ERROR_LOG(AUDIO, "PulseAudio failed to write data: %s",
|
||||
pa_strerror(error));
|
||||
}
|
||||
}
|
||||
|
||||
void PulseAudio::StreamStateCB(pa_stream *s, void * userdata)
|
||||
{
|
||||
switch (pa_stream_get_state(s))
|
||||
{
|
||||
case PA_STREAM_READY:
|
||||
case PA_STREAM_TERMINATED:
|
||||
case PA_STREAM_FAILED:
|
||||
((PulseAudio *)userdata)->SignalMainLoop();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void PulseAudio::StreamWriteCB(pa_stream *s, size_t length, void *userdata)
|
||||
{
|
||||
((PulseAudio *)userdata)->SignalMainLoop();
|
||||
}
|
||||
|
||||
static bool StateIsGood(pa_context *context, pa_stream *stream)
|
||||
{
|
||||
if (!context || !PA_CONTEXT_IS_GOOD(pa_context_get_state(context)) ||
|
||||
!stream || !PA_STREAM_IS_GOOD(pa_stream_get_state(stream)))
|
||||
{
|
||||
if ((context && pa_context_get_state(context) == PA_CONTEXT_FAILED) ||
|
||||
(stream && pa_stream_get_state(stream) == PA_STREAM_FAILED))
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio state failure: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
}
|
||||
else
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio state failure: %s",
|
||||
pa_strerror(PA_ERR_BADSTATE));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PulseAudio::Write(const void *data, size_t length)
|
||||
{
|
||||
if (!data || length == 0 || !stream)
|
||||
return false;
|
||||
|
||||
pa_threaded_mainloop_lock(mainloop);
|
||||
|
||||
if (!StateIsGood(context, stream))
|
||||
{
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
|
||||
while (length > 0)
|
||||
{
|
||||
size_t l;
|
||||
int r;
|
||||
|
||||
while (!(l = pa_stream_writable_size(stream)))
|
||||
{
|
||||
pa_threaded_mainloop_wait(mainloop);
|
||||
if (!StateIsGood(context, stream))
|
||||
{
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (l == (size_t)-1)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio invalid stream: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (l > length)
|
||||
l = length;
|
||||
|
||||
r = pa_stream_write(stream, data, l, NULL, 0LL, PA_SEEK_RELATIVE);
|
||||
if (r < 0)
|
||||
{
|
||||
ERROR_LOG(AUDIO, "PulseAudio error writing to stream: %s",
|
||||
pa_strerror(pa_context_errno(context)));
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return false;
|
||||
}
|
||||
|
||||
data = (const uint8_t*) data + l;
|
||||
length -= l;
|
||||
}
|
||||
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
return true;
|
||||
}
|
||||
|
||||
void PulseAudio::SetVolume(int volume)
|
||||
{
|
||||
iVolume = volume;
|
||||
|
||||
if (!stream)
|
||||
return;
|
||||
|
||||
pa_cvolume cvolume;
|
||||
const pa_channel_map *channels = pa_stream_get_channel_map(stream);
|
||||
pa_cvolume_set(&cvolume, channels->channels,
|
||||
iVolume * (PA_VOLUME_NORM - PA_VOLUME_MUTED) / 100);
|
||||
|
||||
pa_context_set_sink_input_volume(context, pa_stream_get_index(stream),
|
||||
&cvolume, NULL, this);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
#define _PULSE_AUDIO_STREAM_H
|
||||
|
||||
#if defined(HAVE_PULSEAUDIO) && HAVE_PULSEAUDIO
|
||||
#include <pulse/pulseaudio.h>
|
||||
#include <pulse/simple.h>
|
||||
#include <pulse/error.h>
|
||||
#endif
|
||||
|
||||
#include "Common.h"
|
||||
@@ -27,16 +28,16 @@
|
||||
|
||||
#include "Thread.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
class PulseAudio : public SoundStream
|
||||
{
|
||||
#if defined(HAVE_PULSEAUDIO) && HAVE_PULSEAUDIO
|
||||
public:
|
||||
PulseAudio(CMixer *mixer);
|
||||
virtual ~PulseAudio();
|
||||
|
||||
virtual bool Start();
|
||||
virtual void Stop();
|
||||
virtual void SetVolume(int volume);
|
||||
|
||||
static bool isValid() {return true;}
|
||||
|
||||
@@ -46,22 +47,16 @@ public:
|
||||
|
||||
private:
|
||||
virtual void SoundLoop();
|
||||
|
||||
bool PulseInit();
|
||||
void PulseShutdown();
|
||||
bool Write(const void *data, size_t bytes);
|
||||
void SignalMainLoop();
|
||||
static void ContextStateCB(pa_context *c, void *userdata);
|
||||
static void StreamStateCB(pa_stream *s, void * userdata);
|
||||
static void StreamWriteCB(pa_stream *s, size_t length, void *userdata);
|
||||
void Write(const void *data, size_t bytes);
|
||||
|
||||
u8 *mix_buffer;
|
||||
std::vector<s16> mix_buffer;
|
||||
std::thread thread;
|
||||
volatile bool thread_running;
|
||||
volatile bool run_thread;
|
||||
|
||||
pa_threaded_mainloop *mainloop;
|
||||
pa_context *context;
|
||||
pa_stream *stream;
|
||||
int iVolume;
|
||||
pa_simple* pa;
|
||||
#else
|
||||
public:
|
||||
PulseAudio(CMixer *mixer) : SoundStream(mixer) {}
|
||||
|
||||
@@ -48,7 +48,7 @@ ALDeviceList::ALDeviceList()
|
||||
const char *actualDeviceName = NULL;
|
||||
|
||||
// DeviceInfo vector stores, for each enumerated device, it's device name, selection status, spec version #, and extension support
|
||||
vDeviceInfo.empty();
|
||||
vDeviceInfo.clear();
|
||||
vDeviceInfo.reserve(10);
|
||||
|
||||
defaultDeviceIndex = 0;
|
||||
@@ -151,7 +151,7 @@ ALDeviceList::~ALDeviceList()
|
||||
}
|
||||
}
|
||||
|
||||
vDeviceInfo.empty();
|
||||
vDeviceInfo.clear();
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -81,8 +81,9 @@ private:
|
||||
#define GC_ALIGNED16_DECL(x) __declspec(align(16)) x
|
||||
#define GC_ALIGNED64_DECL(x) __declspec(align(64)) x
|
||||
|
||||
// Since it is always around on windows
|
||||
// Since they are always around on windows
|
||||
#define HAVE_WX 1
|
||||
#define HAVE_OPENAL 1
|
||||
|
||||
#define HAVE_PORTAUDIO 1
|
||||
|
||||
|
||||
@@ -90,11 +90,11 @@
|
||||
#define SHADERS_DIR "Shaders"
|
||||
#define WII_SYSCONF_DIR "shared2" DIR_SEP "sys"
|
||||
#define WII_WC24CONF_DIR "shared2" DIR_SEP "wc24"
|
||||
#define THEMES_DIR "Themes"
|
||||
|
||||
// Filenames
|
||||
// Files in the directory returned by GetUserPath(D_CONFIG_IDX)
|
||||
#define DOLPHIN_CONFIG "Dolphin.ini"
|
||||
#define DSP_CONFIG "DSP.ini"
|
||||
#define DEBUGGER_CONFIG "Debugger.ini"
|
||||
#define LOGGER_CONFIG "Logger.ini"
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
|
||||
#include "FileSearch.h"
|
||||
|
||||
@@ -72,36 +73,36 @@ void CFileSearch::FindFiles(const std::string& _searchString, const std::string&
|
||||
|
||||
|
||||
#else
|
||||
size_t dot_pos = _searchString.rfind(".");
|
||||
// TODO: super lame/broken
|
||||
|
||||
if (dot_pos == std::string::npos)
|
||||
return;
|
||||
auto end_match(_searchString);
|
||||
|
||||
// assuming we have a "*.blah"-like pattern
|
||||
if (!end_match.empty() && end_match[0] == '*')
|
||||
end_match.erase(0, 1);
|
||||
|
||||
// ugly
|
||||
if (end_match == ".*")
|
||||
end_match.clear();
|
||||
|
||||
std::string ext = _searchString.substr(dot_pos);
|
||||
DIR* dir = opendir(_strPath.c_str());
|
||||
|
||||
if (!dir)
|
||||
return;
|
||||
|
||||
dirent* dp;
|
||||
|
||||
while (true)
|
||||
while (auto const dp = readdir(dir))
|
||||
{
|
||||
dp = readdir(dir);
|
||||
std::string found(dp->d_name);
|
||||
|
||||
if (!dp)
|
||||
break;
|
||||
|
||||
std::string s(dp->d_name);
|
||||
|
||||
if ( (!ext.compare(".*") && s.compare(".") && s.compare("..")) ||
|
||||
((s.size() > ext.size()) && (!strcasecmp(s.substr(s.size() - ext.size()).c_str(), ext.c_str())) ))
|
||||
if ((found != ".") && (found != "..")
|
||||
&& (found.size() >= end_match.size())
|
||||
&& std::equal(end_match.rbegin(), end_match.rend(), found.rbegin()))
|
||||
{
|
||||
std::string full_name;
|
||||
if (_strPath.c_str()[_strPath.size()-1] == DIR_SEP_CHR)
|
||||
full_name = _strPath + s;
|
||||
full_name = _strPath + found;
|
||||
else
|
||||
full_name = _strPath + DIR_SEP + s;
|
||||
full_name = _strPath + DIR_SEP + found;
|
||||
|
||||
m_FileNames.push_back(full_name);
|
||||
}
|
||||
|
||||
@@ -678,10 +678,10 @@ std::string &GetUserPath(const unsigned int DirIDX, const std::string &newPath)
|
||||
paths[D_DUMPDSP_IDX] = paths[D_USER_IDX] + DUMP_DSP_DIR DIR_SEP;
|
||||
paths[D_LOGS_IDX] = paths[D_USER_IDX] + LOGS_DIR DIR_SEP;
|
||||
paths[D_MAILLOGS_IDX] = paths[D_USER_IDX] + MAIL_LOGS_DIR DIR_SEP;
|
||||
paths[D_THEMES_IDX] = paths[D_USER_IDX] + THEMES_DIR DIR_SEP;
|
||||
paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR DIR_SEP;
|
||||
paths[D_WIIWC24_IDX] = paths[D_WIIUSER_IDX] + WII_WC24CONF_DIR DIR_SEP;
|
||||
paths[F_DOLPHINCONFIG_IDX] = paths[D_CONFIG_IDX] + DOLPHIN_CONFIG;
|
||||
paths[F_DSPCONFIG_IDX] = paths[D_CONFIG_IDX] + DSP_CONFIG;
|
||||
paths[F_DEBUGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + DEBUGGER_CONFIG;
|
||||
paths[F_LOGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + LOGGER_CONFIG;
|
||||
paths[F_MAINLOG_IDX] = paths[D_LOGS_IDX] + MAIN_LOG;
|
||||
|
||||
@@ -51,8 +51,8 @@ enum {
|
||||
D_MAILLOGS_IDX,
|
||||
D_WIISYSCONF_IDX,
|
||||
D_WIIWC24_IDX,
|
||||
D_THEMES_IDX,
|
||||
F_DOLPHINCONFIG_IDX,
|
||||
F_DSPCONFIG_IDX,
|
||||
F_DEBUGGERCONFIG_IDX,
|
||||
F_LOGGERCONFIG_IDX,
|
||||
F_MAINLOG_IDX,
|
||||
|
||||
@@ -679,7 +679,8 @@ bool Subtype_MasterCodeAndWriteToCCXXXXXX(const ARAddr addr, const u32 data)
|
||||
// u8 mcode_type = (data & 0xFF0000) >> 16;
|
||||
// u8 mcode_count = (data & 0xFF00) >> 8;
|
||||
// u8 mcode_number = data & 0xFF;
|
||||
PanicAlertT("Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)", current_code->name.c_str());
|
||||
PanicAlertT("Action Replay Error: Master Code and Write To CCXXXXXX not implemented (%s)\n"
|
||||
"Master codes are not needed. Do not use master codes.", current_code->name.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -257,6 +257,19 @@ bool CBoot::BootUp()
|
||||
EmulatedBS2(_StartupPara.bWii);
|
||||
}
|
||||
|
||||
// Scan for common HLE functions
|
||||
if (_StartupPara.bSkipIdle && !_StartupPara.bEnableDebugging)
|
||||
{
|
||||
PPCAnalyst::FindFunctions(0x80004000, 0x811fffff, &g_symbolDB);
|
||||
SignatureDB db;
|
||||
if (db.Load((File::GetSysDirectory() + TOTALDB).c_str()))
|
||||
{
|
||||
db.Apply(&g_symbolDB);
|
||||
HLE::PatchFunctions();
|
||||
db.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
/* Try to load the symbol map if there is one, and then scan it for
|
||||
and eventually replace code */
|
||||
if (LoadMapFromFilename(_StartupPara.m_strFilename, gameID))
|
||||
|
||||
@@ -417,7 +417,7 @@ bool CBoot::EmulatedBS2_Wii()
|
||||
u32 iLength = Memory::ReadUnchecked_U32(0x81300008);
|
||||
u32 iDVDOffset = Memory::ReadUnchecked_U32(0x8130000c) << 2;
|
||||
|
||||
INFO_LOG(BOOT, "DVDRead: offset: %08x memOffse: %08x length: %i", iDVDOffset, iRamAddress, iLength);
|
||||
INFO_LOG(BOOT, "DVDRead: offset: %08x memOffset: %08x length: %i", iDVDOffset, iRamAddress, iLength);
|
||||
DVDInterface::DVDRead(iDVDOffset, iRamAddress, iLength);
|
||||
} while(PowerPC::ppcState.gpr[3] != 0x00);
|
||||
|
||||
|
||||
@@ -55,8 +55,8 @@ namespace BootManager
|
||||
struct ConfigCache
|
||||
{
|
||||
bool valid, bCPUThread, bSkipIdle, bEnableFPRF, bMMU, bMMUBAT,
|
||||
bVBeam, bFastDiscSpeed, bMergeBlocks, bDSPHLE, bDisableWiimoteSpeaker;
|
||||
int iTLBHack;
|
||||
bVBeam, bFastDiscSpeed, bMergeBlocks, bDSPHLE, bDisableWiimoteSpeaker, bHLE_BS2;
|
||||
int iTLBHack, iCPUCore;
|
||||
std::string strBackend;
|
||||
};
|
||||
static ConfigCache config_cache;
|
||||
@@ -89,6 +89,7 @@ bool BootCore(const std::string& _rFilename)
|
||||
config_cache.valid = true;
|
||||
config_cache.bCPUThread = StartUp.bCPUThread;
|
||||
config_cache.bSkipIdle = StartUp.bSkipIdle;
|
||||
config_cache.iCPUCore = StartUp.iCPUCore;
|
||||
config_cache.bEnableFPRF = StartUp.bEnableFPRF;
|
||||
config_cache.bMMU = StartUp.bMMU;
|
||||
config_cache.bMMUBAT = StartUp.bMMUBAT;
|
||||
@@ -99,6 +100,7 @@ bool BootCore(const std::string& _rFilename)
|
||||
config_cache.bDSPHLE = StartUp.bDSPHLE;
|
||||
config_cache.bDisableWiimoteSpeaker = StartUp.bDisableWiimoteSpeaker;
|
||||
config_cache.strBackend = StartUp.m_strVideoBackend;
|
||||
config_cache.bHLE_BS2 = StartUp.bHLE_BS2;
|
||||
|
||||
// General settings
|
||||
game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
|
||||
@@ -113,6 +115,8 @@ bool BootCore(const std::string& _rFilename)
|
||||
game_ini.Get("Core", "DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE);
|
||||
game_ini.Get("Wii", "DisableWiimoteSpeaker",&StartUp.bDisableWiimoteSpeaker, StartUp.bDisableWiimoteSpeaker);
|
||||
game_ini.Get("Core", "GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend.c_str());
|
||||
game_ini.Get("Core", "CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore);
|
||||
game_ini.Get("Core", "HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2);
|
||||
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
|
||||
|
||||
if (Movie::IsPlayingInput() && Movie::IsConfigSaved())
|
||||
@@ -122,6 +126,7 @@ bool BootCore(const std::string& _rFilename)
|
||||
StartUp.bDSPHLE = Movie::IsDSPHLE();
|
||||
StartUp.bProgressive = Movie::IsProgressive();
|
||||
StartUp.bFastDiscSpeed = Movie::IsFastDiscSpeed();
|
||||
StartUp.iCPUCore = Movie::GetCPUMode();
|
||||
if (Movie::IsUsingMemcard() && Movie::IsStartingFromClearSave() && !StartUp.bWii)
|
||||
{
|
||||
if (File::Exists("Movie.raw"))
|
||||
@@ -159,6 +164,7 @@ void Stop()
|
||||
config_cache.valid = false;
|
||||
StartUp.bCPUThread = config_cache.bCPUThread;
|
||||
StartUp.bSkipIdle = config_cache.bSkipIdle;
|
||||
StartUp.iCPUCore = config_cache.iCPUCore;
|
||||
StartUp.bEnableFPRF = config_cache.bEnableFPRF;
|
||||
StartUp.bMMU = config_cache.bMMU;
|
||||
StartUp.bMMUBAT = config_cache.bMMUBAT;
|
||||
@@ -170,6 +176,7 @@ void Stop()
|
||||
StartUp.bDisableWiimoteSpeaker = config_cache.bDisableWiimoteSpeaker;
|
||||
StartUp.m_strVideoBackend = config_cache.strBackend;
|
||||
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
|
||||
StartUp.bHLE_BS2 = config_cache.bHLE_BS2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,6 @@ void SConfig::SaveSettings()
|
||||
ini.Set("Interface", "OnScreenDisplayMessages", m_LocalCoreStartupParameter.bOnScreenDisplayMessages);
|
||||
ini.Set("Interface", "HideCursor", m_LocalCoreStartupParameter.bHideCursor);
|
||||
ini.Set("Interface", "AutoHideCursor", m_LocalCoreStartupParameter.bAutoHideCursor);
|
||||
ini.Set("Interface", "Theme", m_LocalCoreStartupParameter.iTheme);
|
||||
ini.Set("Interface", "MainWindowPosX", (m_LocalCoreStartupParameter.iPosX == -32000) ? 0 : m_LocalCoreStartupParameter.iPosX); // TODO - HAX
|
||||
ini.Set("Interface", "MainWindowPosY", (m_LocalCoreStartupParameter.iPosY == -32000) ? 0 : m_LocalCoreStartupParameter.iPosY); // TODO - HAX
|
||||
ini.Set("Interface", "MainWindowWidth", m_LocalCoreStartupParameter.iWidth);
|
||||
@@ -179,6 +178,7 @@ void SConfig::SaveSettings()
|
||||
ini.Set("Interface", "ShowLogWindow", m_InterfaceLogWindow);
|
||||
ini.Set("Interface", "ShowLogConfigWindow", m_InterfaceLogConfigWindow);
|
||||
ini.Set("Interface", "ShowConsole", m_InterfaceConsole);
|
||||
ini.Set("Interface", "ThemeName", m_LocalCoreStartupParameter.theme_name);
|
||||
|
||||
// Hotkeys
|
||||
for (int i = 0; i < NUM_HOTKEYS; i++)
|
||||
@@ -225,12 +225,13 @@ void SConfig::SaveSettings()
|
||||
ini.Set("Core", "DSPThread", m_LocalCoreStartupParameter.bDSPThread);
|
||||
ini.Set("Core", "DSPHLE", m_LocalCoreStartupParameter.bDSPHLE);
|
||||
ini.Set("Core", "SkipIdle", m_LocalCoreStartupParameter.bSkipIdle);
|
||||
ini.Set("Core", "LockThreads", m_LocalCoreStartupParameter.bLockThreads);
|
||||
ini.Set("Core", "DefaultGCM", m_LocalCoreStartupParameter.m_strDefaultGCM);
|
||||
ini.Set("Core", "DVDRoot", m_LocalCoreStartupParameter.m_strDVDRoot);
|
||||
ini.Set("Core", "Apploader", m_LocalCoreStartupParameter.m_strApploader);
|
||||
ini.Set("Core", "EnableCheats", m_LocalCoreStartupParameter.bEnableCheats);
|
||||
ini.Set("Core", "SelectedLanguage", m_LocalCoreStartupParameter.SelectedLanguage);
|
||||
ini.Set("Core", "DPL2Decoder", m_LocalCoreStartupParameter.bDPL2Decoder);
|
||||
ini.Set("Core", "Latency", m_LocalCoreStartupParameter.iLatency);
|
||||
ini.Set("Core", "MemcardA", m_strMemoryCardA);
|
||||
ini.Set("Core", "MemcardB", m_strMemoryCardB);
|
||||
ini.Set("Core", "SlotA", m_EXIDevice[0]);
|
||||
@@ -259,6 +260,12 @@ void SConfig::SaveSettings()
|
||||
ini.Set("Movie", "PauseMovie", m_PauseMovie);
|
||||
ini.Set("Movie", "Author", m_strMovieAuthor);
|
||||
|
||||
// DSP
|
||||
ini.Set("DSP", "EnableJIT", m_EnableJIT);
|
||||
ini.Set("DSP", "DumpAudio", m_DumpAudio);
|
||||
ini.Set("DSP", "Backend", sBackend);
|
||||
ini.Set("DSP", "Volume", m_Volume);
|
||||
|
||||
ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX));
|
||||
m_SYSCONF->Save();
|
||||
}
|
||||
@@ -310,7 +317,6 @@ void SConfig::LoadSettings()
|
||||
ini.Get("Interface", "OnScreenDisplayMessages", &m_LocalCoreStartupParameter.bOnScreenDisplayMessages, true);
|
||||
ini.Get("Interface", "HideCursor", &m_LocalCoreStartupParameter.bHideCursor, false);
|
||||
ini.Get("Interface", "AutoHideCursor", &m_LocalCoreStartupParameter.bAutoHideCursor, false);
|
||||
ini.Get("Interface", "Theme", &m_LocalCoreStartupParameter.iTheme, 0);
|
||||
ini.Get("Interface", "MainWindowPosX", &m_LocalCoreStartupParameter.iPosX, 100);
|
||||
ini.Get("Interface", "MainWindowPosY", &m_LocalCoreStartupParameter.iPosY, 100);
|
||||
ini.Get("Interface", "MainWindowWidth", &m_LocalCoreStartupParameter.iWidth, 800);
|
||||
@@ -321,6 +327,7 @@ void SConfig::LoadSettings()
|
||||
ini.Get("Interface", "ShowLogWindow", &m_InterfaceLogWindow, false);
|
||||
ini.Get("Interface", "ShowLogConfigWindow", &m_InterfaceLogConfigWindow, false);
|
||||
ini.Get("Interface", "ShowConsole", &m_InterfaceConsole, false);
|
||||
ini.Get("Interface", "ThemeName", &m_LocalCoreStartupParameter.theme_name, "Boomy");
|
||||
|
||||
// Hotkeys
|
||||
for (int i = 0; i < NUM_HOTKEYS; i++)
|
||||
@@ -369,12 +376,13 @@ void SConfig::LoadSettings()
|
||||
ini.Get("Core", "DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true);
|
||||
ini.Get("Core", "CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true);
|
||||
ini.Get("Core", "SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true);
|
||||
ini.Get("Core", "LockThreads", &m_LocalCoreStartupParameter.bLockThreads, false);
|
||||
ini.Get("Core", "DefaultGCM", &m_LocalCoreStartupParameter.m_strDefaultGCM);
|
||||
ini.Get("Core", "DVDRoot", &m_LocalCoreStartupParameter.m_strDVDRoot);
|
||||
ini.Get("Core", "Apploader", &m_LocalCoreStartupParameter.m_strApploader);
|
||||
ini.Get("Core", "EnableCheats", &m_LocalCoreStartupParameter.bEnableCheats, false);
|
||||
ini.Get("Core", "SelectedLanguage", &m_LocalCoreStartupParameter.SelectedLanguage, 0);
|
||||
ini.Get("Core", "DPL2Decoder", &m_LocalCoreStartupParameter.bDPL2Decoder, false);
|
||||
ini.Get("Core", "Latency", &m_LocalCoreStartupParameter.iLatency, 14);
|
||||
ini.Get("Core", "MemcardA", &m_strMemoryCardA);
|
||||
ini.Get("Core", "MemcardB", &m_strMemoryCardB);
|
||||
ini.Get("Core", "SlotA", (int*)&m_EXIDevice[0], EXIDEVICE_MEMORYCARD);
|
||||
@@ -410,6 +418,20 @@ void SConfig::LoadSettings()
|
||||
// Movie
|
||||
ini.Get("General", "PauseMovie", &m_PauseMovie, false);
|
||||
ini.Get("Movie", "Author", &m_strMovieAuthor, "");
|
||||
|
||||
// DSP
|
||||
ini.Get("DSP", "EnableJIT", &m_EnableJIT, true);
|
||||
ini.Get("DSP", "DumpAudio", &m_DumpAudio, false);
|
||||
#if defined __linux__ && HAVE_ALSA
|
||||
ini.Get("DSP", "Backend", &sBackend, BACKEND_ALSA);
|
||||
#elif defined __APPLE__
|
||||
ini.Get("DSP", "Backend", &sBackend, BACKEND_COREAUDIO);
|
||||
#elif defined _WIN32
|
||||
ini.Get("DSP", "Backend", &sBackend, BACKEND_DIRECTSOUND);
|
||||
#else
|
||||
ini.Get("DSP", "Backend", &sBackend, BACKEND_NULLSOUND);
|
||||
#endif
|
||||
ini.Get("DSP", "Volume", &m_Volume, 100);
|
||||
}
|
||||
|
||||
m_SYSCONF = new SysConf();
|
||||
|
||||
@@ -26,6 +26,16 @@
|
||||
#include "HW/SI_Device.h"
|
||||
#include "SysConf.h"
|
||||
|
||||
// DSP Backend Types
|
||||
#define BACKEND_NULLSOUND "No audio output"
|
||||
#define BACKEND_ALSA "ALSA"
|
||||
#define BACKEND_AOSOUND "AOSound"
|
||||
#define BACKEND_COREAUDIO "CoreAudio"
|
||||
#define BACKEND_DIRECTSOUND "DSound"
|
||||
#define BACKEND_OPENAL "OpenAL"
|
||||
#define BACKEND_PULSEAUDIO "Pulse"
|
||||
#define BACKEND_XAUDIO2 "XAudio2"
|
||||
|
||||
struct SConfig : NonCopyable
|
||||
{
|
||||
// Wii Devices
|
||||
@@ -84,6 +94,12 @@ struct SConfig : NonCopyable
|
||||
bool m_ShowLag;
|
||||
std::string m_strMovieAuthor;
|
||||
|
||||
// DSP settings
|
||||
bool m_EnableJIT;
|
||||
bool m_DumpAudio;
|
||||
int m_Volume;
|
||||
std::string sBackend;
|
||||
|
||||
SysConf* m_SYSCONF;
|
||||
|
||||
// save settings
|
||||
|
||||
@@ -313,10 +313,9 @@ void CpuThread()
|
||||
g_video_backend->Video_Prepare();
|
||||
}
|
||||
|
||||
if (_CoreParameter.bLockThreads)
|
||||
Common::SetCurrentThreadAffinity(1); // Force to first core
|
||||
Common::SetCurrentThreadAffinity(1); // Force to first core
|
||||
|
||||
#if defined(_WIN32) && defined(_M_X64)
|
||||
#if defined(_M_X64)
|
||||
EMM::InstallExceptionHandler(); // Let's run under memory watch
|
||||
#endif
|
||||
|
||||
@@ -357,8 +356,7 @@ void FifoPlayerThread()
|
||||
Common::SetCurrentThreadName("FIFO-GPU thread");
|
||||
}
|
||||
|
||||
if (_CoreParameter.bLockThreads)
|
||||
Common::SetCurrentThreadAffinity(1); // Force to first core
|
||||
Common::SetCurrentThreadAffinity(1); // Force to first core
|
||||
|
||||
g_bStarted = true;
|
||||
|
||||
@@ -384,7 +382,6 @@ void EmuThread()
|
||||
|
||||
Common::SetCurrentThreadName("Emuthread - Starting");
|
||||
|
||||
if (_CoreParameter.bLockThreads)
|
||||
{
|
||||
if (cpu_info.num_cores > 3) // Force to third, non-HT core
|
||||
Common::SetCurrentThreadAffinity(4);
|
||||
@@ -444,7 +441,7 @@ void EmuThread()
|
||||
CBoot::BootUp();
|
||||
|
||||
// Setup our core, but can't use dynarec if we are compare server
|
||||
if (Movie::GetCPUMode() && (!_CoreParameter.bRunCompareServer ||
|
||||
if (_CoreParameter.iCPUCore && (!_CoreParameter.bRunCompareServer ||
|
||||
_CoreParameter.bRunCompareClient))
|
||||
PowerPC::SetMode(PowerPC::MODE_JIT);
|
||||
else
|
||||
@@ -647,70 +644,7 @@ void VideoThrottle()
|
||||
u32 ElapseTime = (u32)Timer.GetTimeDifference();
|
||||
if ((ElapseTime >= 1000 && DrawnVideo > 0) || g_requestRefreshInfo)
|
||||
{
|
||||
g_requestRefreshInfo = false;
|
||||
SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter;
|
||||
|
||||
if (ElapseTime == 0)
|
||||
ElapseTime = 1;
|
||||
|
||||
u32 FPS = Common::AtomicLoad(DrawnFrame) * 1000 / ElapseTime;
|
||||
u32 VPS = DrawnVideo * 1000 / ElapseTime;
|
||||
u32 Speed = DrawnVideo * (100 * 1000) / (VideoInterface::TargetRefreshRate * ElapseTime);
|
||||
|
||||
// Settings are shown the same for both extended and summary info
|
||||
std::string SSettings = StringFromFormat("%s %s", cpu_core_base->GetName(), _CoreParameter.bCPUThread ? "DC" : "SC");
|
||||
|
||||
// Use extended or summary information. The summary information does not print the ticks data,
|
||||
// that's more of a debugging interest, it can always be optional of course if someone is interested.
|
||||
//#define EXTENDED_INFO
|
||||
#ifdef EXTENDED_INFO
|
||||
u64 newTicks = CoreTiming::GetTicks();
|
||||
u64 newIdleTicks = CoreTiming::GetIdleTicks();
|
||||
|
||||
u64 diff = (newTicks - ticks) / 1000000;
|
||||
u64 idleDiff = (newIdleTicks - idleTicks) / 1000000;
|
||||
|
||||
ticks = newTicks;
|
||||
idleTicks = newIdleTicks;
|
||||
|
||||
float TicksPercentage = (float)diff / (float)(SystemTimers::GetTicksPerSecond() / 1000000) * 100;
|
||||
|
||||
std::string SFPS = StringFromFormat("FPS: %u - VPS: %u - SPEED: %u%%", FPS, VPS, Speed);
|
||||
SFPS += StringFromFormat(" | CPU: %s%i MHz [Real: %i + IdleSkip: %i] / %i MHz (%s%3.0f%%)",
|
||||
_CoreParameter.bSkipIdle ? "~" : "",
|
||||
(int)(diff),
|
||||
(int)(diff - idleDiff),
|
||||
(int)(idleDiff),
|
||||
SystemTimers::GetTicksPerSecond() / 1000000,
|
||||
_CoreParameter.bSkipIdle ? "~" : "",
|
||||
TicksPercentage);
|
||||
|
||||
#else // Summary information
|
||||
std::string SFPS;
|
||||
if (Movie::IsPlayingInput())
|
||||
SFPS = StringFromFormat("VI: %u/%u - Frame: %u/%u - FPS: %u - VPS: %u - SPEED: %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_totalFrames, (u32)Movie::g_currentInputCount, (u32)Movie::g_totalInputCount, FPS, VPS, Speed);
|
||||
else if (Movie::IsRecordingInput())
|
||||
SFPS = StringFromFormat("VI: %u - Frame: %u - FPS: %u - VPS: %u - SPEED: %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_currentInputCount, FPS, VPS, Speed);
|
||||
else
|
||||
SFPS = StringFromFormat("FPS: %u - VPS: %u - SPEED: %u%%", FPS, VPS, Speed);
|
||||
#endif
|
||||
|
||||
// This is our final "frame counter" string
|
||||
std::string SMessage = StringFromFormat("%s | %s",
|
||||
SSettings.c_str(), SFPS.c_str());
|
||||
std::string TMessage = StringFromFormat("%s | ", scm_rev_str) +
|
||||
SMessage;
|
||||
|
||||
// Show message
|
||||
g_video_backend->UpdateFPSDisplay(SMessage.c_str());
|
||||
|
||||
if (_CoreParameter.bRenderToMain &&
|
||||
SConfig::GetInstance().m_InterfaceStatusbar) {
|
||||
Host_UpdateStatusBar(SMessage.c_str());
|
||||
Host_UpdateTitle(scm_rev_str);
|
||||
} else
|
||||
Host_UpdateTitle(TMessage.c_str());
|
||||
|
||||
UpdateTitle();
|
||||
|
||||
// Reset counter
|
||||
Timer.Update();
|
||||
@@ -757,4 +691,79 @@ const char *Callback_ISOName()
|
||||
return "";
|
||||
}
|
||||
|
||||
void UpdateTitle()
|
||||
{
|
||||
u32 ElapseTime = (u32)Timer.GetTimeDifference();
|
||||
g_requestRefreshInfo = false;
|
||||
SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter;
|
||||
|
||||
if (ElapseTime == 0)
|
||||
ElapseTime = 1;
|
||||
|
||||
u32 FPS = Common::AtomicLoad(DrawnFrame) * 1000 / ElapseTime;
|
||||
u32 VPS = DrawnVideo * 1000 / ElapseTime;
|
||||
u32 Speed = DrawnVideo * (100 * 1000) / (VideoInterface::TargetRefreshRate * ElapseTime);
|
||||
|
||||
// Settings are shown the same for both extended and summary info
|
||||
std::string SSettings = StringFromFormat("%s %s", cpu_core_base->GetName(), _CoreParameter.bCPUThread ? "DC" : "SC");
|
||||
|
||||
// Use extended or summary information. The summary information does not print the ticks data,
|
||||
// that's more of a debugging interest, it can always be optional of course if someone is interested.
|
||||
//#define EXTENDED_INFO
|
||||
#ifdef EXTENDED_INFO
|
||||
u64 newTicks = CoreTiming::GetTicks();
|
||||
u64 newIdleTicks = CoreTiming::GetIdleTicks();
|
||||
|
||||
u64 diff = (newTicks - ticks) / 1000000;
|
||||
u64 idleDiff = (newIdleTicks - idleTicks) / 1000000;
|
||||
|
||||
ticks = newTicks;
|
||||
idleTicks = newIdleTicks;
|
||||
|
||||
float TicksPercentage = (float)diff / (float)(SystemTimers::GetTicksPerSecond() / 1000000) * 100;
|
||||
|
||||
std::string SFPS = StringFromFormat("FPS: %u - VPS: %u - SPEED: %u%%", FPS, VPS, Speed);
|
||||
SFPS += StringFromFormat(" | CPU: %s%i MHz [Real: %i + IdleSkip: %i] / %i MHz (%s%3.0f%%)",
|
||||
_CoreParameter.bSkipIdle ? "~" : "",
|
||||
(int)(diff),
|
||||
(int)(diff - idleDiff),
|
||||
(int)(idleDiff),
|
||||
SystemTimers::GetTicksPerSecond() / 1000000,
|
||||
_CoreParameter.bSkipIdle ? "~" : "",
|
||||
TicksPercentage);
|
||||
|
||||
#else // Summary information
|
||||
std::string SFPS;
|
||||
if (Movie::IsPlayingInput())
|
||||
SFPS = StringFromFormat("VI: %u/%u - Frame: %u/%u - FPS: %u - VPS: %u - SPEED: %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_totalFrames, (u32)Movie::g_currentInputCount, (u32)Movie::g_totalInputCount, FPS, VPS, Speed);
|
||||
else if (Movie::IsRecordingInput())
|
||||
SFPS = StringFromFormat("VI: %u - Frame: %u - FPS: %u - VPS: %u - SPEED: %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_currentInputCount, FPS, VPS, Speed);
|
||||
else
|
||||
SFPS = StringFromFormat("FPS: %u - VPS: %u - SPEED: %u%%", FPS, VPS, Speed);
|
||||
#endif
|
||||
|
||||
// This is our final "frame counter" string
|
||||
std::string SMessage = StringFromFormat("%s | %s",
|
||||
SSettings.c_str(), SFPS.c_str());
|
||||
std::string TMessage = StringFromFormat("%s | ", scm_rev_str) +
|
||||
SMessage;
|
||||
|
||||
// Show message
|
||||
g_video_backend->UpdateFPSDisplay(SMessage.c_str());
|
||||
|
||||
// Update the audio timestretcher with the current speed
|
||||
if (soundStream)
|
||||
{
|
||||
CMixer* pMixer = soundStream->GetMixer();
|
||||
pMixer->UpdateSpeed((float)Speed / 100);
|
||||
}
|
||||
|
||||
if (_CoreParameter.bRenderToMain &&
|
||||
SConfig::GetInstance().m_InterfaceStatusbar) {
|
||||
Host_UpdateStatusBar(SMessage.c_str());
|
||||
Host_UpdateTitle(scm_rev_str);
|
||||
} else
|
||||
Host_UpdateTitle(TMessage.c_str());
|
||||
}
|
||||
|
||||
} // Core
|
||||
|
||||
@@ -89,6 +89,8 @@ bool ShouldSkipFrame(int skipped);
|
||||
void VideoThrottle();
|
||||
void RequestRefreshInfo();
|
||||
|
||||
void UpdateTitle();
|
||||
|
||||
// waits until all systems are paused and fully idle, and acquires a lock on that state.
|
||||
// or, if doLock is false, releases a lock on that state and optionally unpauses.
|
||||
// calls must be balanced (once with doLock true, then once with doLock false) but may be recursive.
|
||||
|
||||
@@ -45,9 +45,9 @@ SCoreStartupParameter::SCoreStartupParameter()
|
||||
bEnableFPRF(false),
|
||||
bCPUThread(true), bDSPThread(false), bDSPHLE(true),
|
||||
bSkipIdle(true), bNTSC(false), bForceNTSCJ(false),
|
||||
bHLE_BS2(true), bLockThreads(false),
|
||||
bEnableCheats(false),
|
||||
bHLE_BS2(true), bEnableCheats(false),
|
||||
bMergeBlocks(false),
|
||||
bDPL2Decoder(false), iLatency(14),
|
||||
bRunCompareServer(false), bRunCompareClient(false),
|
||||
bMMU(false), bMMUBAT(false), iTLBHack(0), bVBeam(false),
|
||||
bFastDiscSpeed(false),
|
||||
@@ -59,7 +59,6 @@ SCoreStartupParameter::SCoreStartupParameter()
|
||||
bRenderWindowAutoSize(false), bKeepWindowOnTop(false),
|
||||
bFullscreen(false), bRenderToMain(false),
|
||||
bProgressive(false), bDisableScreenSaver(false),
|
||||
iTheme(0),
|
||||
iPosX(100), iPosY(100), iWidth(800), iHeight(600)
|
||||
{
|
||||
LoadDefaults();
|
||||
@@ -77,7 +76,6 @@ void SCoreStartupParameter::LoadDefaults()
|
||||
bRunCompareServer = false;
|
||||
bDSPHLE = true;
|
||||
bDSPThread = true;
|
||||
bLockThreads = true;
|
||||
bEnableFPRF = false;
|
||||
bMMU = false;
|
||||
bMMUBAT = false;
|
||||
@@ -87,6 +85,8 @@ void SCoreStartupParameter::LoadDefaults()
|
||||
bMergeBlocks = false;
|
||||
SelectedLanguage = 0;
|
||||
bWii = false;
|
||||
bDPL2Decoder = false;
|
||||
iLatency = 14;
|
||||
|
||||
iPosX = 100;
|
||||
iPosY = 100;
|
||||
|
||||
@@ -106,10 +106,12 @@ struct SCoreStartupParameter
|
||||
bool bNTSC;
|
||||
bool bForceNTSCJ;
|
||||
bool bHLE_BS2;
|
||||
bool bLockThreads;
|
||||
bool bEnableCheats;
|
||||
bool bMergeBlocks;
|
||||
|
||||
bool bDPL2Decoder;
|
||||
int iLatency;
|
||||
|
||||
bool bRunCompareServer;
|
||||
bool bRunCompareClient;
|
||||
|
||||
@@ -126,6 +128,7 @@ struct SCoreStartupParameter
|
||||
|
||||
// Interface settings
|
||||
bool bConfirmStop, bHideCursor, bAutoHideCursor, bUsePanicHandlers, bOnScreenDisplayMessages;
|
||||
std::string theme_name;
|
||||
|
||||
// Hotkeys
|
||||
int iHotkey[NUM_HOTKEYS];
|
||||
@@ -139,7 +142,6 @@ struct SCoreStartupParameter
|
||||
bool bFullscreen, bRenderToMain;
|
||||
bool bProgressive, bDisableScreenSaver;
|
||||
|
||||
int iTheme;
|
||||
int iPosX, iPosY, iWidth, iHeight;
|
||||
|
||||
enum EBootBS2
|
||||
|
||||
@@ -104,10 +104,10 @@ bool Compare(const std::vector<u16> &code1, const std::vector<u16> &code2)
|
||||
return code1.size() == code2.size() && code1.size() == count_equal;
|
||||
}
|
||||
|
||||
void GenRandomCode(int size, std::vector<u16> &code)
|
||||
void GenRandomCode(u32 size, std::vector<u16> &code)
|
||||
{
|
||||
code.resize(size);
|
||||
for (int i = 0; i < size; i++)
|
||||
for (u32 i = 0; i < size; i++)
|
||||
{
|
||||
code[i] = rand() ^ (rand() << 8);
|
||||
}
|
||||
@@ -144,28 +144,28 @@ void CodeToHeader(const std::vector<u16> &code, std::string _filename,
|
||||
}
|
||||
|
||||
void CodesToHeader(const std::vector<u16> *codes, const std::vector<std::string>* filenames,
|
||||
int numCodes, const char *name, std::string &header)
|
||||
u32 numCodes, const char *name, std::string &header)
|
||||
{
|
||||
std::vector<std::vector<u16> > codes_padded;
|
||||
char buffer[1024];
|
||||
int reserveSize = 0;
|
||||
for(int i = 0; i < numCodes; i++)
|
||||
u32 reserveSize = 0;
|
||||
for(u32 i = 0; i < numCodes; i++)
|
||||
{
|
||||
codes_padded.push_back(codes[i]);
|
||||
// Pad with nops to 32byte boundary
|
||||
while (codes_padded.at(i).size() & 0x7f)
|
||||
codes_padded.at(i).push_back(0);
|
||||
|
||||
reserveSize += (int)codes_padded.at(i).size();
|
||||
reserveSize += (u32)codes_padded.at(i).size();
|
||||
}
|
||||
|
||||
|
||||
header.clear();
|
||||
header.reserve(reserveSize * 4);
|
||||
sprintf(buffer, "#define NUM_UCODES %d\n\n", numCodes);
|
||||
sprintf(buffer, "#define NUM_UCODES %u\n\n", numCodes);
|
||||
header.append(buffer);
|
||||
header.append("const char* UCODE_NAMES[NUM_UCODES] = {\n");
|
||||
for (int i = 0; i < numCodes; i++)
|
||||
for (u32 i = 0; i < numCodes; i++)
|
||||
{
|
||||
std::string filename;
|
||||
if (! SplitPath(filenames->at(i), NULL, &filename, NULL))
|
||||
@@ -176,7 +176,7 @@ void CodesToHeader(const std::vector<u16> *codes, const std::vector<std::string>
|
||||
header.append("};\n\n");
|
||||
header.append("const unsigned short dsp_code[NUM_UCODES][0x1000] = {\n");
|
||||
|
||||
for(int i = 0; i < numCodes; i++)
|
||||
for(u32 i = 0; i < numCodes; i++)
|
||||
{
|
||||
if(codes[i].size() == 0)
|
||||
continue;
|
||||
@@ -197,7 +197,7 @@ void CodesToHeader(const std::vector<u16> *codes, const std::vector<std::string>
|
||||
void CodeToBinaryStringBE(const std::vector<u16> &code, std::string &str)
|
||||
{
|
||||
str.resize(code.size() * 2);
|
||||
for (int i = 0; i < (int)code.size(); i++)
|
||||
for (size_t i = 0; i < code.size(); i++)
|
||||
{
|
||||
str[i * 2 + 0] = code[i] >> 8;
|
||||
str[i * 2 + 1] = code[i] & 0xff;
|
||||
@@ -207,7 +207,7 @@ void CodeToBinaryStringBE(const std::vector<u16> &code, std::string &str)
|
||||
void BinaryStringBEToCode(const std::string &str, std::vector<u16> &code)
|
||||
{
|
||||
code.resize(str.size() / 2);
|
||||
for (int i = 0; i < (int)code.size(); i++)
|
||||
for (size_t i = 0; i < code.size(); i++)
|
||||
{
|
||||
code[i] = ((u16)(u8)str[i * 2 + 0] << 8) | ((u16)(u8)str[i * 2 + 1]);
|
||||
}
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
bool Assemble(const char *text, std::vector<u16> &code, bool force = false);
|
||||
bool Disassemble(const std::vector<u16> &code, bool line_numbers, std::string &text);
|
||||
bool Compare(const std::vector<u16> &code1, const std::vector<u16> &code2);
|
||||
void GenRandomCode(int size, std::vector<u16> &code);
|
||||
void GenRandomCode(u32 size, std::vector<u16> &code);
|
||||
void CodeToHeader(const std::vector<u16> &code, std::string _filename,
|
||||
const char *name, std::string &header);
|
||||
void CodesToHeader(const std::vector<u16> *codes, const std::vector<std::string> *filenames,
|
||||
int numCodes, const char *name, std::string &header);
|
||||
u32 numCodes, const char *name, std::string &header);
|
||||
|
||||
// Big-endian, for writing straight to file using File::WriteStringToFile.
|
||||
void CodeToBinaryStringBE(const std::vector<u16> &code, std::string &str);
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
|
||||
DSPEmulator *CreateDSPEmulator(bool HLE)
|
||||
{
|
||||
ac_Config.Load();
|
||||
|
||||
if (HLE)
|
||||
{
|
||||
return new DSPHLE();
|
||||
|
||||
@@ -151,7 +151,7 @@ void FifoRecordAnalyzer::ProcessLoadTlut1()
|
||||
void FifoRecordAnalyzer::ProcessPreloadTexture()
|
||||
{
|
||||
BPS_TmemConfig& tmem_cfg = m_BpMem->tmem_config;
|
||||
u32 tmem_addr = tmem_cfg.preload_tmem_even * TMEM_LINE_SIZE;
|
||||
//u32 tmem_addr = tmem_cfg.preload_tmem_even * TMEM_LINE_SIZE;
|
||||
u32 size = tmem_cfg.preload_tile_info.count * TMEM_LINE_SIZE; // TODO: Should this be half size for RGBA8 preloads?
|
||||
|
||||
FifoRecorder::GetInstance().WriteMemory(tmem_cfg.preload_addr << 5, size, MemoryUpdate::TMEM);
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include <map>
|
||||
#include "Common.h"
|
||||
|
||||
#include "HLE.h"
|
||||
@@ -27,6 +26,9 @@
|
||||
|
||||
#include "HLE_OS.h"
|
||||
#include "HLE_Misc.h"
|
||||
#include "IPC_HLE/WII_IPC_HLE_Device_es.h"
|
||||
#include "ConfigManager.h"
|
||||
#include "Core.h"
|
||||
|
||||
namespace HLE
|
||||
{
|
||||
@@ -45,64 +47,73 @@ struct SPatch
|
||||
{
|
||||
char m_szPatchName[128];
|
||||
TPatchFunction PatchFunction;
|
||||
int type;
|
||||
int flags;
|
||||
};
|
||||
|
||||
static const SPatch OSPatches[] =
|
||||
{
|
||||
{ "FAKE_TO_SKIP_0", HLE_Misc::UnimplementedFunction },
|
||||
{ "FAKE_TO_SKIP_0", HLE_Misc::UnimplementedFunction, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
// speedup
|
||||
//{ "OSProtectRange", HLE_Misc::UnimplementedFunctionFalse },
|
||||
//{ "THPPlayerGetState", HLE_Misc:THPPlayerGetState },
|
||||
//{ "OSProtectRange", HLE_Misc::UnimplementedFunctionFalse, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ "THPPlayerGetState", HLE_Misc:THPPlayerGetState, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ "memcpy", HLE_Misc::gc_memcpy, HLE_HOOK_REPLACE, HLE_TYPE_MEMORY },
|
||||
//{ "memcmp", HLE_Misc::gc_memcmp, HLE_HOOK_REPLACE, HLE_TYPE_MEMORY },
|
||||
//{ "memset", HLE_Misc::gc_memset, HLE_HOOK_REPLACE, HLE_TYPE_MEMORY },
|
||||
//{ "memmove", HLE_Misc::gc_memmove, HLE_HOOK_REPLACE, HLE_TYPE_MEMORY },
|
||||
|
||||
//{ "__div2i", HLE_Misc::div2i, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC }, // Slower?
|
||||
//{ "__div2u", HLE_Misc::div2u, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC }, // Slower?
|
||||
|
||||
//{ "DCFlushRange", HLE_Misc::UnimplementedFunction, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ "DCInvalidateRange", HLE_Misc::UnimplementedFunction, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ "DCZeroRange", HLE_Misc::UnimplementedFunction, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
// debug out is very nice ;)
|
||||
{ "OSReport", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "DEBUGPrint", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "WUD_DEBUGPrint", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "OSPanic", HLE_OS::HLE_OSPanic },
|
||||
{ "vprintf", HLE_OS::HLE_VPrintf },
|
||||
{ "printf", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf1", HLE_OS::HLE_GeneralDebugPrintWithInt },
|
||||
{ "printf2", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf3", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf4", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf5", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf6", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf7", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf8", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "printf9", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "puts", HLE_OS::HLE_GeneralDebugPrint }, // gcc-optimized printf?
|
||||
{ "___blank(char *,...)", HLE_OS::HLE_GeneralDebugPrint }, // used for early init things (normally)
|
||||
{ "___blank", HLE_OS::HLE_GeneralDebugPrint },
|
||||
{ "__write_console", HLE_OS::HLE_write_console }, // used by sysmenu (+more?)
|
||||
|
||||
{ "OSReport", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
{ "DEBUGPrint", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
{ "WUD_DEBUGPrint", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
{ "OSPanic", HLE_OS::HLE_OSPanic, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
{ "vprintf", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
{ "printf", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
{ "puts", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG }, // gcc-optimized printf?
|
||||
{ "___blank(char *,...)", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG }, // used for early init things (normally)
|
||||
{ "___blank", HLE_OS::HLE_GeneralDebugPrint, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
{ "__write_console", HLE_OS::HLE_write_console, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG }, // used by sysmenu (+more?)
|
||||
|
||||
// wii only
|
||||
//{ "__OSInitAudioSystem", HLE_Misc::UnimplementedFunction },
|
||||
//{ "__OSInitAudioSystem", HLE_Misc::UnimplementedFunction, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
// Super Monkey Ball - no longer needed.
|
||||
//{ ".evil_vec_cosine", HLE_Misc::SMB_EvilVecCosine },
|
||||
//{ ".evil_normalize", HLE_Misc::SMB_EvilNormalize },
|
||||
//{ ".evil_vec_setlength", HLE_Misc::SMB_evil_vec_setlength },
|
||||
//{ ".evil_vec_something", HLE_Misc::FZero_evil_vec_normalize },
|
||||
{ "PanicAlert", HLE_Misc::HLEPanicAlert },
|
||||
//{ ".sqrt_internal_needs_cr1", HLE_Misc::SMB_sqrt_internal },
|
||||
//{ ".rsqrt_internal_needs_cr1", HLE_Misc::SMB_rsqrt_internal },
|
||||
//{ ".atan2", HLE_Misc::SMB_atan2},
|
||||
//{ ".sqrt_fz", HLE_Misc::FZ_sqrt},
|
||||
//{ ".evil_vec_cosine", HLE_Misc::SMB_EvilVecCosine, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ ".evil_normalize", HLE_Misc::SMB_EvilNormalize, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ ".evil_vec_setlength", HLE_Misc::SMB_evil_vec_setlength, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ ".evil_vec_something", HLE_Misc::FZero_evil_vec_normalize, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
{ "PanicAlert", HLE_Misc::HLEPanicAlert, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG },
|
||||
//{ ".sqrt_internal_needs_cr1", HLE_Misc::SMB_sqrt_internal, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ ".rsqrt_internal_needs_cr1", HLE_Misc::SMB_rsqrt_internal, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ ".atan2", HLE_Misc::SMB_atan2HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ ".sqrt_fz", HLE_Misc::FZ_sqrtHLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
// F-zero still isn't working correctly, but these aren't really helping.
|
||||
|
||||
//{ ".sqrt_internal_fz", HLE_Misc::FZ_sqrt_internal },
|
||||
//{ ".rsqrt_internal_fz", HLE_Misc::FZ_rsqrt_internal },
|
||||
//{ ".sqrt_internal_fz", HLE_Misc::FZ_sqrt_internal, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
//{ ".rsqrt_internal_fz", HLE_Misc::FZ_rsqrt_internal, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
//{ ".kill_infinites", HLE_Misc::FZero_kill_infinites },
|
||||
//{ ".kill_infinites", HLE_Misc::FZero_kill_infinites, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
// special
|
||||
// { "GXPeekZ", HLE_Misc::GXPeekZ},
|
||||
// { "GXPeekARGB", HLE_Misc::GXPeekARGB},
|
||||
// { "GXPeekZ", HLE_Misc::GXPeekZHLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
// { "GXPeekARGB", HLE_Misc::GXPeekARGBHLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
// Name doesn't matter, installed in CBoot::BootUp()
|
||||
{ "HBReload", HLE_Misc::HBReload },
|
||||
{ "HBReload", HLE_Misc::HBReload, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
// ES_LAUNCH
|
||||
{ "__OSBootDol", HLE_Misc::OSBootDol, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
{ "OSGetResetCode", HLE_Misc::OSGetResetCode, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC },
|
||||
|
||||
};
|
||||
|
||||
static const SPatch OSBreakPoints[] =
|
||||
@@ -110,17 +121,13 @@ static const SPatch OSBreakPoints[] =
|
||||
{ "FAKE_TO_SKIP_0", HLE_Misc::UnimplementedFunction },
|
||||
};
|
||||
|
||||
|
||||
static std::map<u32, u32> orig_instruction;
|
||||
|
||||
void Patch(u32 address, const char *hle_func_name)
|
||||
void Patch(u32 addr, const char *hle_func_name)
|
||||
{
|
||||
for (u32 i = 0; i < sizeof(OSPatches) / sizeof(SPatch); i++)
|
||||
{
|
||||
if (!strcmp(OSPatches[i].m_szPatchName, hle_func_name))
|
||||
{
|
||||
u32 HLEPatchValue = (1 & 0x3f) << 26;
|
||||
Memory::Write_U32(HLEPatchValue | i, address);
|
||||
orig_instruction[addr] = i;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -134,23 +141,24 @@ void PatchFunctions()
|
||||
Symbol *symbol = g_symbolDB.GetSymbolFromName(OSPatches[i].m_szPatchName);
|
||||
if (symbol > 0)
|
||||
{
|
||||
u32 HLEPatchValue = (1 & 0x3f) << 26;
|
||||
for (u32 addr = symbol->address; addr < symbol->address + symbol->size; addr += 4)
|
||||
{
|
||||
orig_instruction[addr] = Memory::ReadUnchecked_U32(addr);
|
||||
Memory::Write_U32(HLEPatchValue | i, addr);
|
||||
orig_instruction[addr] = i;
|
||||
}
|
||||
INFO_LOG(OSHLE, "Patching %s %08x", OSPatches[i].m_szPatchName, symbol->address);
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t i = 1; i < sizeof(OSBreakPoints) / sizeof(SPatch); i++)
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging)
|
||||
{
|
||||
Symbol *symbol = g_symbolDB.GetSymbolFromName(OSPatches[i].m_szPatchName);
|
||||
if (symbol > 0)
|
||||
for (size_t i = 1; i < sizeof(OSBreakPoints) / sizeof(SPatch); i++)
|
||||
{
|
||||
PowerPC::breakpoints.Add(symbol->address, false);
|
||||
INFO_LOG(OSHLE, "Adding BP to %s %08x", OSBreakPoints[i].m_szPatchName, symbol->address);
|
||||
Symbol *symbol = g_symbolDB.GetSymbolFromName(OSPatches[i].m_szPatchName);
|
||||
if (symbol > 0)
|
||||
{
|
||||
PowerPC::breakpoints.Add(symbol->address, false);
|
||||
INFO_LOG(OSHLE, "Adding BP to %s %08x", OSBreakPoints[i].m_szPatchName, symbol->address);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,10 +180,46 @@ void Execute(u32 _CurrentPC, u32 _Instruction)
|
||||
// _dbg_assert_msg_(HLE,NPC == LR, "Broken HLE function (doesn't set NPC)", OSPatches[pos].m_szPatchName);
|
||||
}
|
||||
|
||||
u32 GetOrigInstruction(u32 addr)
|
||||
u32 GetFunctionIndex(u32 addr)
|
||||
{
|
||||
std::map<u32, u32>::const_iterator iter = orig_instruction.find(addr);
|
||||
return (iter != orig_instruction.end()) ? iter->second : 0;
|
||||
}
|
||||
|
||||
int GetFunctionTypeByIndex(u32 index)
|
||||
{
|
||||
return OSPatches[index].type;
|
||||
}
|
||||
|
||||
int GetFunctionFlagsByIndex(u32 index)
|
||||
{
|
||||
return OSPatches[index].flags;
|
||||
}
|
||||
|
||||
bool IsEnabled(int flags)
|
||||
{
|
||||
if (flags == HLE::HLE_TYPE_MEMORY && Core::g_CoreStartupParameter.bMMU)
|
||||
return false;
|
||||
|
||||
if (flags == HLE::HLE_TYPE_DEBUG && !Core::g_CoreStartupParameter.bEnableDebugging && PowerPC::GetMode() != MODE_INTERPRETER)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
u32 UnPatch(std::string patchName)
|
||||
{
|
||||
Symbol *symbol = g_symbolDB.GetSymbolFromName(patchName.c_str());
|
||||
if (symbol > 0)
|
||||
{
|
||||
for (u32 addr = symbol->address; addr < symbol->address + symbol->size; addr += 4)
|
||||
{
|
||||
orig_instruction[addr] = 0;
|
||||
PowerPC::ppcState.iCache.Invalidate(addr);
|
||||
}
|
||||
return symbol->address;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // end of namespace HLE
|
||||
|
||||
@@ -18,15 +18,40 @@
|
||||
#ifndef _HLE_H
|
||||
#define _HLE_H
|
||||
|
||||
#include <map>
|
||||
#include "Common.h"
|
||||
|
||||
namespace HLE
|
||||
{
|
||||
enum
|
||||
{
|
||||
HLE_HOOK_START = 0, // Hook the beginning of the function and execute the function afterwards
|
||||
HLE_HOOK_END = 1, // Hook the end of the function, executing the function first before the hook
|
||||
HLE_HOOK_REPLACE = 2, // Replace the function with the HLE version
|
||||
HLE_HOOK_NONE = 3, // Do not hook the function
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
HLE_TYPE_GENERIC = 0, // Miscellaneous function
|
||||
HLE_TYPE_MEMORY = 1, // Memory operation
|
||||
HLE_TYPE_FP = 2, // Floating Point operation
|
||||
HLE_TYPE_DEBUG = 3, // Debug output function
|
||||
};
|
||||
|
||||
void PatchFunctions();
|
||||
|
||||
void Patch(u32 pc, const char *func_name);
|
||||
u32 UnPatch(std::string patchName);
|
||||
void Execute(u32 _CurrentPC, u32 _Instruction);
|
||||
|
||||
u32 GetOrigInstruction(u32 em_address);
|
||||
u32 GetFunctionIndex(u32 em_address);
|
||||
int GetFunctionTypeByIndex(u32 index);
|
||||
int GetFunctionFlagsByIndex(u32 index);
|
||||
|
||||
bool IsEnabled(int flags);
|
||||
|
||||
static std::map<u32, u32> orig_instruction;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -22,10 +22,25 @@
|
||||
#include "../PowerPC/PowerPC.h"
|
||||
#include "../HW/Memmap.h"
|
||||
#include "../Host.h"
|
||||
#include "IPC_HLE/WII_IPC_HLE_Device_DI.h"
|
||||
#include "ConfigManager.h"
|
||||
#include "VolumeCreator.h"
|
||||
#include "Filesystem.h"
|
||||
#include "../Boot/Boot_DOL.h"
|
||||
#include "IPC_HLE/WII_IPC_HLE_Device_usb.h"
|
||||
#include "HLE.h"
|
||||
#include "PowerPC/PPCAnalyst.h"
|
||||
#include "PowerPC/SignatureDB.h"
|
||||
#include "PowerPC/PPCSymbolDB.h"
|
||||
#include "CommonPaths.h"
|
||||
|
||||
namespace HLE_Misc
|
||||
{
|
||||
|
||||
std::string args;
|
||||
u32 argsPtr;
|
||||
u32 bootType;
|
||||
|
||||
// Helper to quickly read the floating point value at a memory location.
|
||||
inline float F(u32 addr)
|
||||
{
|
||||
@@ -282,4 +297,253 @@ void HBReload()
|
||||
Host_Message(WM_USER_STOP);
|
||||
}
|
||||
|
||||
void ExecuteDOL(u8* dolFile, u32 fileSize)
|
||||
{
|
||||
// Clear memory before loading the dol
|
||||
for (u32 i = 0x80004000; i < Memory::Read_U32(0x00000034); i += 4)
|
||||
{
|
||||
// TODO: Should not write over the "save region"
|
||||
Memory::Write_U32(0x00000000, i);
|
||||
}
|
||||
CDolLoader dolLoader(dolFile, fileSize);
|
||||
dolLoader.Load();
|
||||
|
||||
// Scan for common HLE functions
|
||||
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging)
|
||||
{
|
||||
g_symbolDB.Clear();
|
||||
PPCAnalyst::FindFunctions(0x80004000, 0x811fffff, &g_symbolDB);
|
||||
SignatureDB db;
|
||||
if (db.Load((File::GetSysDirectory() + TOTALDB).c_str()))
|
||||
{
|
||||
db.Apply(&g_symbolDB);
|
||||
HLE::PatchFunctions();
|
||||
db.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
PowerPC::ppcState.iCache.Reset();
|
||||
|
||||
CWII_IPC_HLE_Device_usb_oh1_57e_305* s_Usb = GetUsbPointer();
|
||||
size_t size = s_Usb->m_WiiMotes.size();
|
||||
bool* wiiMoteConnected = new bool[size];
|
||||
for (unsigned int i = 0; i < size; i++)
|
||||
wiiMoteConnected[i] = s_Usb->m_WiiMotes[i].IsConnected();
|
||||
|
||||
WII_IPC_HLE_Interface::Reset(true);
|
||||
WII_IPC_HLE_Interface::Init();
|
||||
s_Usb = GetUsbPointer();
|
||||
for (unsigned int i = 0; i < s_Usb->m_WiiMotes.size(); i++)
|
||||
{
|
||||
if (wiiMoteConnected[i])
|
||||
{
|
||||
s_Usb->m_WiiMotes[i].Activate(false);
|
||||
s_Usb->m_WiiMotes[i].Activate(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
s_Usb->m_WiiMotes[i].Activate(false);
|
||||
}
|
||||
}
|
||||
|
||||
delete[] wiiMoteConnected;
|
||||
|
||||
if (argsPtr)
|
||||
{
|
||||
u32 args_base = Memory::Read_U32(0x800000f4);
|
||||
u32 ptr_to_num_args = 0xc;
|
||||
u32 num_args = 1;
|
||||
u32 hi_ptr = args_base + ptr_to_num_args + 4;
|
||||
u32 new_args_ptr = args_base + ptr_to_num_args + 8;
|
||||
|
||||
Memory::Write_U32(ptr_to_num_args, args_base + 8);
|
||||
Memory::Write_U32(num_args, args_base + ptr_to_num_args);
|
||||
Memory::Write_U32(0x14, hi_ptr);
|
||||
|
||||
for (unsigned int i = 0; i < args.length(); i++)
|
||||
Memory::WriteUnchecked_U8(args[i], new_args_ptr+i);
|
||||
}
|
||||
|
||||
NPC = dolLoader.GetEntryPoint() | 0x80000000;
|
||||
}
|
||||
|
||||
void LoadDOLFromDisc(std::string dol)
|
||||
{
|
||||
DiscIO::IVolume* pVolume = DiscIO::CreateVolumeFromFilename(SConfig::GetInstance().m_LastFilename.c_str());
|
||||
DiscIO::IFileSystem* pFileSystem = DiscIO::CreateFileSystem(pVolume);
|
||||
|
||||
if (dol.length() > 1 && dol.compare(0, 1, "/") == 0)
|
||||
dol = dol.substr(1);
|
||||
|
||||
u32 fileSize = (u32) pFileSystem->GetFileSize(dol.c_str());
|
||||
u8* dolFile = new u8[fileSize];
|
||||
if (fileSize > 0)
|
||||
{
|
||||
pFileSystem->ReadFile(dol.c_str(), dolFile, fileSize);
|
||||
ExecuteDOL(dolFile, fileSize);
|
||||
}
|
||||
delete[] dolFile;
|
||||
}
|
||||
|
||||
void LoadBootDOLFromDisc()
|
||||
{
|
||||
DiscIO::IVolume* pVolume = DiscIO::CreateVolumeFromFilename(SConfig::GetInstance().m_LastFilename.c_str());
|
||||
DiscIO::IFileSystem* pFileSystem = DiscIO::CreateFileSystem(pVolume);
|
||||
u32 fileSize = pFileSystem->GetBootDOLSize();
|
||||
u8* dolFile = new u8[fileSize];
|
||||
if (fileSize > 0)
|
||||
{
|
||||
pFileSystem->GetBootDOL(dolFile, fileSize);
|
||||
ExecuteDOL(dolFile, fileSize);
|
||||
}
|
||||
delete[] dolFile;
|
||||
}
|
||||
|
||||
u32 GetDolFileSize(std::string dol)
|
||||
{
|
||||
DiscIO::IVolume* pVolume = DiscIO::CreateVolumeFromFilename(SConfig::GetInstance().m_LastFilename.c_str());
|
||||
DiscIO::IFileSystem* pFileSystem = DiscIO::CreateFileSystem(pVolume);
|
||||
|
||||
std::string dolFile;
|
||||
|
||||
if (dol.length() > 1 && dol.compare(0, 1, "/") == 0)
|
||||
dolFile = dol.substr(1);
|
||||
else
|
||||
dolFile = dol;
|
||||
|
||||
return (u32)pFileSystem->GetFileSize(dolFile.c_str());
|
||||
}
|
||||
|
||||
void gc_memmove()
|
||||
{
|
||||
u32 dest = GPR(3);
|
||||
u32 src = GPR(4);
|
||||
u32 count = GPR(5);
|
||||
memmove((u8*)(Memory::base + dest), (u8*)(Memory::base + src), count);
|
||||
NPC = LR;
|
||||
}
|
||||
|
||||
void gc_memcpy()
|
||||
{
|
||||
u32 dest = GPR(3);
|
||||
u32 src = GPR(4);
|
||||
u32 count = GPR(5);
|
||||
memcpy((u8*)(Memory::base + dest), (u8*)(Memory::base + src), count);
|
||||
NPC = LR;
|
||||
}
|
||||
|
||||
void gc_memset()
|
||||
{
|
||||
u32 dest = GPR(3);
|
||||
u32 ch = GPR(4);
|
||||
u32 count = GPR(5);
|
||||
memset((u8*)(Memory::base + dest), ch, count);
|
||||
NPC = LR;
|
||||
}
|
||||
|
||||
void gc_memcmp()
|
||||
{
|
||||
u32 dest = GPR(3);
|
||||
u32 src = GPR(4);
|
||||
u32 count = GPR(5);
|
||||
GPR(3) = memcmp((u8*)(Memory::base + dest), (u8*)(Memory::base + src), count);
|
||||
NPC = LR;
|
||||
}
|
||||
|
||||
void div2i()
|
||||
{
|
||||
s64 num = (s64)(GPR(3)) << 32 | GPR(4);
|
||||
s64 den = (s64)(GPR(5)) << 32 | GPR(6);
|
||||
s64 quo = num / den;
|
||||
GPR(3) = quo >> 32;
|
||||
GPR(4) = quo & 0xffffffff;
|
||||
NPC = LR;
|
||||
}
|
||||
|
||||
void div2u()
|
||||
{
|
||||
u64 num = (u64)(GPR(3)) << 32 | GPR(4);
|
||||
u64 den = (u64)(GPR(5)) << 32 | GPR(6);
|
||||
u64 quo = num / den;
|
||||
GPR(3) = quo >> 32;
|
||||
GPR(4) = quo & 0xffffffff;
|
||||
NPC = LR;
|
||||
}
|
||||
|
||||
void OSGetResetCode()
|
||||
{
|
||||
u32 resetCode = Memory::Read_U32(0xCC003024);
|
||||
|
||||
if ((resetCode & 0x1fffffff) != 0)
|
||||
{
|
||||
GPR(3) = resetCode | 0x80000000;
|
||||
}
|
||||
else
|
||||
{
|
||||
GPR(3) = 0;
|
||||
}
|
||||
|
||||
NPC = LR;
|
||||
}
|
||||
|
||||
u16 GetIOSVersion()
|
||||
{
|
||||
return Memory::Read_U16(0x00003140);
|
||||
}
|
||||
|
||||
void OSBootDol()
|
||||
{
|
||||
if (GetIOSVersion() >= 30)
|
||||
{
|
||||
bootType = GPR(4);
|
||||
|
||||
if ((GPR(4) >> 28) == 0x8)
|
||||
{
|
||||
u32 resetCode = GPR(30);
|
||||
|
||||
// Reset game
|
||||
Memory::Write_U32(resetCode, 0xCC003024);
|
||||
LoadBootDOLFromDisc();
|
||||
return;
|
||||
}
|
||||
else if ((GPR(4) >> 28) == 0xA)
|
||||
{
|
||||
// Boot from disc partition
|
||||
PanicAlert("Boot Partition: %08x", GPR(26));
|
||||
}
|
||||
else if ((GPR(4) >> 28) == 0xC)
|
||||
{
|
||||
std::string dol;
|
||||
|
||||
// Boot DOL from disc
|
||||
u32 ptr = GPR(28);
|
||||
Memory::GetString(dol, ptr);
|
||||
|
||||
if (GetDolFileSize(dol) == 0)
|
||||
{
|
||||
ptr = GPR(30);
|
||||
Memory::GetString(dol, ptr);
|
||||
if (GetDolFileSize(dol) == 0)
|
||||
{
|
||||
// Cannot locate the dol file, exit.
|
||||
HLE::UnPatch("__OSBootDol");
|
||||
NPC = PC;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
argsPtr = Memory::Read_U32(GPR(5));
|
||||
Memory::GetString(args, argsPtr);
|
||||
LoadDOLFromDisc(dol);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
PanicAlert("Unknown boot type: %08x", GPR(4));
|
||||
}
|
||||
}
|
||||
HLE::UnPatch("__OSBootDol");
|
||||
NPC = PC;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -39,6 +39,15 @@ namespace HLE_Misc
|
||||
void FZ_sqrt_internal();
|
||||
void FZ_rsqrt_internal();
|
||||
void HBReload();
|
||||
void OSBootDol();
|
||||
void OSGetResetCode();
|
||||
void memcpy();
|
||||
void memset();
|
||||
void memmove();
|
||||
void memcmp();
|
||||
void div2i();
|
||||
void div2u();
|
||||
void ExecuteDOL(u8* dolFile, u32 fileSize);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -37,10 +37,6 @@ namespace
|
||||
|
||||
void CCPU::Init(int cpu_core)
|
||||
{
|
||||
if (Movie::IsPlayingInput() && Movie::IsConfigSaved())
|
||||
{
|
||||
cpu_core = Movie::GetCPUMode();
|
||||
}
|
||||
PowerPC::Init(cpu_core);
|
||||
m_SyncEvent = NULL;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "DSPHLE.h"
|
||||
#include "UCodes/UCodes.h"
|
||||
#include "../AudioInterface.h"
|
||||
#include "ConfigManager.h"
|
||||
|
||||
DSPHLE::DSPHLE() {
|
||||
m_InitMixer = false;
|
||||
@@ -251,7 +252,7 @@ void DSPHLE::InitMixer()
|
||||
unsigned int AISampleRate, DACSampleRate;
|
||||
AudioInterface::Callback_GetSampleRate(AISampleRate, DACSampleRate);
|
||||
delete soundStream;
|
||||
soundStream = AudioCommon::InitSoundStream(new HLEMixer(this, AISampleRate, DACSampleRate, ac_Config.iFrequency), m_hWnd);
|
||||
soundStream = AudioCommon::InitSoundStream(new HLEMixer(this, AISampleRate, DACSampleRate, 48000), m_hWnd);
|
||||
if(!soundStream) PanicAlert("Error starting up sound stream");
|
||||
// Mixer is initialized
|
||||
m_InitMixer = true;
|
||||
|
||||
@@ -104,7 +104,6 @@ void DSPLLE::dsp_thread(DSPLLE *dsp_lle)
|
||||
{
|
||||
Common::SetCurrentThreadName("DSP thread");
|
||||
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bLockThreads)
|
||||
{
|
||||
if (cpu_info.num_cores > 3)
|
||||
{
|
||||
@@ -204,7 +203,7 @@ void DSPLLE::InitMixer()
|
||||
unsigned int AISampleRate, DACSampleRate;
|
||||
AudioInterface::Callback_GetSampleRate(AISampleRate, DACSampleRate);
|
||||
delete soundStream;
|
||||
soundStream = AudioCommon::InitSoundStream(new CMixer(AISampleRate, DACSampleRate, ac_Config.iFrequency), m_hWnd);
|
||||
soundStream = AudioCommon::InitSoundStream(new CMixer(AISampleRate, DACSampleRate, 48000), m_hWnd);
|
||||
if(!soundStream) PanicAlert("Error starting up sound stream");
|
||||
// Mixer is initialized
|
||||
m_InitMixer = true;
|
||||
|
||||
@@ -416,10 +416,7 @@ bool AreMemoryBreakpointsActivated()
|
||||
u32 Read_Instruction(const u32 em_address)
|
||||
{
|
||||
UGeckoInstruction inst = ReadUnchecked_U32(em_address);
|
||||
if (inst.OPCD == 1)
|
||||
return HLE::GetOrigInstruction(em_address);
|
||||
else
|
||||
return inst.hex;
|
||||
return inst.hex;
|
||||
}
|
||||
|
||||
u32 Read_Opcode_JIT_Uncached(const u32 _Address)
|
||||
|
||||
@@ -96,8 +96,7 @@ void Init()
|
||||
m_FlipperRev = 0x246500B1; // revision C
|
||||
m_Unknown = 0;
|
||||
|
||||
// Bleh, why?
|
||||
//m_ResetCode |= 0x80000000;
|
||||
m_ResetCode = 0x80000000; // Cold reset
|
||||
m_InterruptCause = INT_CAUSE_RST_BUTTON | INT_CAUSE_VI;
|
||||
|
||||
toggleResetButton = CoreTiming::RegisterEvent("ToggleResetButton", &ToggleResetButtonCallback);
|
||||
@@ -199,6 +198,7 @@ void Write32(const u32 _uValue, const u32 _iAddress)
|
||||
|
||||
case PI_RESET_CODE:
|
||||
DEBUG_LOG(PROCESSORINTERFACE, "Write %08x to PI_RESET_CODE", _uValue);
|
||||
m_ResetCode = _uValue;
|
||||
break;
|
||||
|
||||
case PI_FLIPPER_UNK:
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include "Attachment/Classic.h"
|
||||
#include "Attachment/Nunchuk.h"
|
||||
#include "Attachment/Guitar.h"
|
||||
@@ -89,23 +91,32 @@ const ReportFeatures reporting_mode_features[] =
|
||||
{ 0, 0, 0, 0, 23 },
|
||||
};
|
||||
|
||||
void EmulateShake( AccelData* const accel
|
||||
void EmulateShake(AccelData* const accel
|
||||
, ControllerEmu::Buttons* const buttons_group
|
||||
, u8* const shake_step )
|
||||
{
|
||||
static const double shake_data[] = { -2.5f, -5.0f, -2.5f, 0.0f, 2.5f, 5.0f, 2.5f, 0.0f };
|
||||
// frame count of one up/down shake
|
||||
// < 9 no shake detection in "Wario Land: Shake It"
|
||||
auto const shake_step_max = 15;
|
||||
|
||||
// peak G-force
|
||||
auto const shake_intensity = 3.f;
|
||||
|
||||
// shake is a bitfield of X,Y,Z shake button states
|
||||
static const unsigned int btns[] = { 0x01, 0x02, 0x04 };
|
||||
unsigned int shake = 0;
|
||||
|
||||
buttons_group->GetState( &shake, btns );
|
||||
for ( unsigned int i=0; i<3; ++i )
|
||||
|
||||
for (int i = 0; i != 3; ++i)
|
||||
{
|
||||
if (shake & (1 << i))
|
||||
{
|
||||
(&(accel->x))[i] = shake_data[shake_step[i]++];
|
||||
shake_step[i] %= sizeof(shake_data)/sizeof(double);
|
||||
(&(accel->x))[i] = std::sin(TAU * shake_step[i] / shake_step_max) * shake_intensity;
|
||||
shake_step[i] = (shake_step[i] + 1) % shake_step_max;
|
||||
}
|
||||
else
|
||||
shake_step[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void EmulateTilt(AccelData* const accel
|
||||
|
||||
@@ -30,7 +30,12 @@
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
|
||||
#define PI 3.14159265358979323846
|
||||
namespace
|
||||
{
|
||||
// :)
|
||||
auto const TAU = 6.28318530717958647692;
|
||||
auto const PI = TAU / 2.0;
|
||||
}
|
||||
|
||||
// Registry sizes
|
||||
#define WIIMOTE_EEPROM_SIZE (16*1024)
|
||||
|
||||
@@ -34,11 +34,6 @@
|
||||
#include "WiimoteReal.h"
|
||||
#include "Host.h"
|
||||
|
||||
// Identify the wiimote device by its class
|
||||
#define WM_DEV_CLASS_0 0x04
|
||||
#define WM_DEV_CLASS_1 0x25
|
||||
#define WM_DEV_CLASS_2 0x00
|
||||
|
||||
namespace WiimoteReal
|
||||
{
|
||||
|
||||
@@ -95,9 +90,15 @@ int FindWiimotes(Wiimote** wm, int max_wiimotes)
|
||||
// Display discovered devices
|
||||
for (i = 0; (i < found_devices) && (found_wiimotes < max_wiimotes); ++i)
|
||||
{
|
||||
if ((scan_info[i].dev_class[0] == WM_DEV_CLASS_0) &&
|
||||
(scan_info[i].dev_class[1] == WM_DEV_CLASS_1) &&
|
||||
(scan_info[i].dev_class[2] == WM_DEV_CLASS_2))
|
||||
char name[1000];
|
||||
memset(name, 0, sizeof(name));
|
||||
ERROR_LOG(WIIMOTE, "found a device...");
|
||||
if (hci_read_remote_name(device_sock, &scan_info[i].bdaddr, sizeof(name), name, 0) < 0) {
|
||||
ERROR_LOG(WIIMOTE, "name request failed");
|
||||
continue;
|
||||
}
|
||||
ERROR_LOG(WIIMOTE, "device name %s", name);
|
||||
if (IsValidBluetoothName(name))
|
||||
{
|
||||
bool new_wiimote = true;
|
||||
// Determine if this wiimote has already been found.
|
||||
@@ -146,24 +147,24 @@ bool Wiimote::Connect()
|
||||
|
||||
// Output channel
|
||||
addr.l2_psm = htobs(WM_OUTPUT_CHANNEL);
|
||||
if ((out_sock = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP)) == -1 ||
|
||||
connect(out_sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
|
||||
if ((cmd_sock = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP)) == -1 ||
|
||||
connect(cmd_sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
|
||||
{
|
||||
DEBUG_LOG(WIIMOTE, "Unable to open output socket to wiimote.");
|
||||
close(out_sock);
|
||||
out_sock = -1;
|
||||
close(cmd_sock);
|
||||
cmd_sock = -1;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Input channel
|
||||
addr.l2_psm = htobs(WM_INPUT_CHANNEL);
|
||||
if ((in_sock = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP)) == -1 ||
|
||||
connect(in_sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
|
||||
if ((int_sock = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP)) == -1 ||
|
||||
connect(int_sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
|
||||
{
|
||||
DEBUG_LOG(WIIMOTE, "Unable to open input socket from wiimote.");
|
||||
close(in_sock);
|
||||
close(out_sock);
|
||||
in_sock = out_sock = -1;
|
||||
close(int_sock);
|
||||
close(cmd_sock);
|
||||
int_sock = cmd_sock = -1;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -204,17 +205,17 @@ void Wiimote::Close()
|
||||
{
|
||||
Host_ConnectWiimote(index, false);
|
||||
|
||||
close(out_sock);
|
||||
close(in_sock);
|
||||
close(cmd_sock);
|
||||
close(int_sock);
|
||||
|
||||
out_sock = -1;
|
||||
in_sock = -1;
|
||||
cmd_sock = -1;
|
||||
int_sock = -1;
|
||||
}
|
||||
}
|
||||
|
||||
bool Wiimote::IsOpen() const
|
||||
{
|
||||
return out_sock != -1 && in_sock != -1;
|
||||
return IsConnected() && cmd_sock != -1 && int_sock != -1;
|
||||
}
|
||||
|
||||
int Wiimote::IORead(unsigned char *buf)
|
||||
@@ -226,19 +227,19 @@ int Wiimote::IORead(unsigned char *buf)
|
||||
|
||||
fd_set fds;
|
||||
FD_ZERO(&fds);
|
||||
FD_SET(in_sock, &fds);
|
||||
FD_SET(int_sock, &fds);
|
||||
|
||||
if (select(in_sock + 1, &fds, NULL, NULL, &tv) == -1)
|
||||
if (select(int_sock + 1, &fds, NULL, NULL, &tv) == -1)
|
||||
{
|
||||
ERROR_LOG(WIIMOTE, "Unable to select wiimote %i input socket.", index + 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!FD_ISSET(in_sock, &fds))
|
||||
if (!FD_ISSET(int_sock, &fds))
|
||||
return 0;
|
||||
|
||||
// Read the pending message into the buffer
|
||||
int r = read(in_sock, buf, MAX_PAYLOAD);
|
||||
int r = read(int_sock, buf, MAX_PAYLOAD);
|
||||
if (r == -1)
|
||||
{
|
||||
// Error reading data
|
||||
@@ -265,7 +266,7 @@ int Wiimote::IORead(unsigned char *buf)
|
||||
|
||||
int Wiimote::IOWrite(unsigned char* buf, int len)
|
||||
{
|
||||
return write(out_sock, buf, len);
|
||||
return write(int_sock, buf, len);
|
||||
}
|
||||
|
||||
}; // WiimoteReal
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include <queue>
|
||||
#include <algorithm>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "Common.h"
|
||||
@@ -44,7 +45,7 @@ Wiimote::Wiimote(const unsigned int _index)
|
||||
#ifdef __APPLE__
|
||||
, inputlen(0)
|
||||
#elif defined(__linux__) && HAVE_BLUEZ
|
||||
, out_sock(-1), in_sock(-1)
|
||||
, cmd_sock(-1), int_sock(-1)
|
||||
#elif defined(_WIN32)
|
||||
, dev_handle(0), stack(MSBT_STACK_UNKNOWN)
|
||||
#endif
|
||||
@@ -319,7 +320,7 @@ void Wiimote::ThreadFunc()
|
||||
Common::SleepCurrentThread(1);
|
||||
#else
|
||||
bool read = false;
|
||||
while (Write() || (read = true, Read()))
|
||||
while (Write() || (read = true, IsOpen() && Read()))
|
||||
{
|
||||
if (m_audio_reports.Size() && !read)
|
||||
Read();
|
||||
@@ -512,19 +513,11 @@ void StateChange(EMUSTATE_CHANGE newState)
|
||||
// TODO: disable/enable auto reporting, maybe
|
||||
}
|
||||
|
||||
bool IsValidBluetoothName(const char* name) {
|
||||
static const char* kValidWiiRemoteBluetoothNames[] = {
|
||||
"Nintendo RVL-CNT-01",
|
||||
"Nintendo RVL-CNT-01-TR",
|
||||
"Nintendo RVL-WBC-01",
|
||||
};
|
||||
if (name == NULL)
|
||||
return false;
|
||||
for (size_t i = 0; i < ARRAYSIZE(kValidWiiRemoteBluetoothNames); i++)
|
||||
if (strcmp(name, kValidWiiRemoteBluetoothNames[i]) == 0)
|
||||
return true;
|
||||
return false;
|
||||
bool IsValidBluetoothName(const std::string& name)
|
||||
{
|
||||
std::string const prefix("Nintendo RVL-");
|
||||
return name.size() > prefix.size() &&
|
||||
std::equal(prefix.begin(), prefix.end(), name.begin());
|
||||
}
|
||||
|
||||
|
||||
}; // end of namespace
|
||||
|
||||
@@ -71,8 +71,8 @@ public:
|
||||
int inputlen;
|
||||
#elif defined(__linux__) && HAVE_BLUEZ
|
||||
bdaddr_t bdaddr; // Bluetooth address
|
||||
int out_sock; // Output socket
|
||||
int in_sock; // Input socket
|
||||
int cmd_sock; // Command socket
|
||||
int int_sock; // Interrupt socket
|
||||
|
||||
void Close();
|
||||
|
||||
@@ -117,7 +117,7 @@ void StateChange(EMUSTATE_CHANGE newState);
|
||||
|
||||
int FindWiimotes(Wiimote** wm, int max_wiimotes);
|
||||
|
||||
bool IsValidBluetoothName(const char* name);
|
||||
bool IsValidBluetoothName(const std::string& name);
|
||||
|
||||
}; // WiimoteReal
|
||||
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
|
||||
// The 4 most significant bits of the first byte of an outgoing command must be
|
||||
// 0x50 if sending on the command channel and 0xA0 if sending on the interrupt
|
||||
// channel. On Mac we use interrupt channel; on Windows/Linux, command.
|
||||
#ifndef __APPLE__
|
||||
// channel. On Mac and Linux we use interrupt channel; on Windows, command.
|
||||
#ifdef _WIN32
|
||||
#define WM_SET_REPORT 0x50
|
||||
#else
|
||||
#define WM_SET_REPORT 0xA0
|
||||
|
||||
@@ -796,16 +796,17 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress)
|
||||
// someone with an affected game should test
|
||||
IOSv = TitleID & 0xffff;
|
||||
}
|
||||
if (!bSuccess)
|
||||
if (!bSuccess && IOSv >= 30 && IOSv != 0xffff)
|
||||
{
|
||||
PanicAlertT("IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available in your nand dump\n"
|
||||
"TitleID %016llx.\n Dolphin will likely hang now", TitleID);
|
||||
}
|
||||
else
|
||||
{
|
||||
static CWII_IPC_HLE_Device_usb_oh1_57e_305* s_Usb = GetUsbPointer();
|
||||
bool* wiiMoteConnected = new bool[s_Usb->m_WiiMotes.size()];
|
||||
for (unsigned int i = 0; i < s_Usb->m_WiiMotes.size(); i++)
|
||||
CWII_IPC_HLE_Device_usb_oh1_57e_305* s_Usb = GetUsbPointer();
|
||||
size_t size = s_Usb->m_WiiMotes.size();
|
||||
bool* wiiMoteConnected = new bool[size];
|
||||
for (unsigned int i = 0; i < size; i++)
|
||||
wiiMoteConnected[i] = s_Usb->m_WiiMotes[i].IsConnected();
|
||||
|
||||
std::string tContentFile(m_ContentFile.c_str());
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "PowerPCDisasm.h"
|
||||
#include "../../IPC_HLE/WII_IPC_HLE.h"
|
||||
#include "Atomic.h"
|
||||
#include "HLE/HLE.h"
|
||||
|
||||
#ifdef USE_GDBSTUB
|
||||
#include "../GDBStub.h"
|
||||
@@ -83,67 +84,72 @@ int startTrace = 0;
|
||||
|
||||
void Trace( UGeckoInstruction &instCode )
|
||||
{
|
||||
char regs[500]="";
|
||||
char reg[25]="";
|
||||
std::string regs = "";
|
||||
for (int i=0; i<32; i++) {
|
||||
sprintf(regs, "%sr%02d: %08x ", regs, i, PowerPC::ppcState.gpr[i]);
|
||||
sprintf(reg, "r%02d: %08x ", i, PowerPC::ppcState.gpr[i]);
|
||||
regs.append(reg);
|
||||
}
|
||||
|
||||
char fregs[500]="";
|
||||
char freg[25]="";
|
||||
std::string fregs = "";
|
||||
for (int i=0; i<32; i++) {
|
||||
sprintf(fregs, "%sf%02d: %08llx %08llx ", fregs, i,
|
||||
PowerPC::ppcState.ps[i][0], PowerPC::ppcState.ps[i][1]);
|
||||
sprintf(freg, "f%02d: %08llx %08llx ", i, PowerPC::ppcState.ps[i][0], PowerPC::ppcState.ps[i][1]);
|
||||
fregs.append(freg);
|
||||
}
|
||||
|
||||
char ppcInst[256];
|
||||
DisassembleGekko(instCode.hex, PC, ppcInst, 256);
|
||||
|
||||
DEBUG_LOG(POWERPC, "INTER PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s %08x %s", PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, PowerPC::ppcState.msr, PowerPC::ppcState.spr[8], regs, fregs, instCode.hex, ppcInst);
|
||||
DEBUG_LOG(POWERPC, "INTER PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s %08x %s", PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, PowerPC::ppcState.msr, PowerPC::ppcState.spr[8], regs.c_str(), fregs.c_str(), instCode.hex, ppcInst);
|
||||
}
|
||||
|
||||
int Interpreter::SingleStepInner(void)
|
||||
{
|
||||
static UGeckoInstruction instCode;
|
||||
|
||||
#ifdef USE_GDBSTUB
|
||||
if (gdb_active() && gdb_bp_x(PC)) {
|
||||
|
||||
Host_UpdateDisasmDialog();
|
||||
|
||||
gdb_signal(SIGTRAP);
|
||||
gdb_handle_exception();
|
||||
}
|
||||
#endif
|
||||
|
||||
NPC = PC + sizeof(UGeckoInstruction);
|
||||
instCode.hex = Memory::Read_Opcode(PC);
|
||||
|
||||
// Uncomment to trace the interpreter
|
||||
//if ((PC & 0xffffff)>=0x0ab54c && (PC & 0xffffff)<=0x0ab624)
|
||||
// startTrace = 1;
|
||||
//else
|
||||
// startTrace = 0;
|
||||
|
||||
if (startTrace)
|
||||
u32 function = m_EndBlock ? HLE::GetFunctionIndex(PC) : 0; // Check for HLE functions after branches
|
||||
if (function != 0)
|
||||
{
|
||||
Trace(instCode);
|
||||
}
|
||||
|
||||
if (instCode.hex != 0)
|
||||
{
|
||||
UReg_MSR& msr = (UReg_MSR&)MSR;
|
||||
if (msr.FP) //If FPU is enabled, just execute
|
||||
int type = HLE::GetFunctionTypeByIndex(function);
|
||||
if (type == HLE::HLE_HOOK_START || type == HLE::HLE_HOOK_REPLACE)
|
||||
{
|
||||
m_opTable[instCode.OPCD](instCode);
|
||||
if (PowerPC::ppcState.Exceptions & EXCEPTION_DSI)
|
||||
int flags = HLE::GetFunctionFlagsByIndex(function);
|
||||
if (HLE::IsEnabled(flags))
|
||||
{
|
||||
PowerPC::CheckExceptions();
|
||||
m_EndBlock = true;
|
||||
HLEFunction(function);
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef USE_GDBSTUB
|
||||
if (gdb_active() && gdb_bp_x(PC)) {
|
||||
|
||||
Host_UpdateDisasmDialog();
|
||||
|
||||
gdb_signal(SIGTRAP);
|
||||
gdb_handle_exception();
|
||||
}
|
||||
#endif
|
||||
|
||||
NPC = PC + sizeof(UGeckoInstruction);
|
||||
instCode.hex = Memory::Read_Opcode(PC);
|
||||
|
||||
// Uncomment to trace the interpreter
|
||||
//if ((PC & 0xffffff)>=0x0ab54c && (PC & 0xffffff)<=0x0ab624)
|
||||
// startTrace = 1;
|
||||
//else
|
||||
// startTrace = 0;
|
||||
|
||||
if (startTrace)
|
||||
{
|
||||
// check if we have to generate a FPU unavailable exception
|
||||
if (!PPCTables::UsesFPU(instCode))
|
||||
Trace(instCode);
|
||||
}
|
||||
|
||||
if (instCode.hex != 0)
|
||||
{
|
||||
UReg_MSR& msr = (UReg_MSR&)MSR;
|
||||
if (msr.FP) //If FPU is enabled, just execute
|
||||
{
|
||||
m_opTable[instCode.OPCD](instCode);
|
||||
if (PowerPC::ppcState.Exceptions & EXCEPTION_DSI)
|
||||
@@ -154,17 +160,30 @@ int Interpreter::SingleStepInner(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_FPU_UNAVAILABLE);
|
||||
PowerPC::CheckExceptions();
|
||||
m_EndBlock = true;
|
||||
// check if we have to generate a FPU unavailable exception
|
||||
if (!PPCTables::UsesFPU(instCode))
|
||||
{
|
||||
m_opTable[instCode.OPCD](instCode);
|
||||
if (PowerPC::ppcState.Exceptions & EXCEPTION_DSI)
|
||||
{
|
||||
PowerPC::CheckExceptions();
|
||||
m_EndBlock = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_FPU_UNAVAILABLE);
|
||||
PowerPC::CheckExceptions();
|
||||
m_EndBlock = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Memory exception on instruction fetch
|
||||
PowerPC::CheckExceptions();
|
||||
m_EndBlock = true;
|
||||
else
|
||||
{
|
||||
// Memory exception on instruction fetch
|
||||
PowerPC::CheckExceptions();
|
||||
m_EndBlock = true;
|
||||
}
|
||||
}
|
||||
last_pc = PC;
|
||||
PC = NPC;
|
||||
|
||||
@@ -252,8 +252,6 @@ void Jit64::HLEFunction(UGeckoInstruction _inst)
|
||||
gpr.Flush(FLUSH_ALL);
|
||||
fpr.Flush(FLUSH_ALL);
|
||||
ABI_CallFunctionCC((void*)&HLE::Execute, js.compilerPC, _inst.hex);
|
||||
MOV(32, R(EAX), M(&NPC));
|
||||
WriteExitDestInEAX();
|
||||
}
|
||||
|
||||
void Jit64::DoNothing(UGeckoInstruction _inst)
|
||||
@@ -566,6 +564,27 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
|
||||
ABI_CallFunction(thunks.ProtectFunction((void *)&GPFifo::CheckGatherPipe, 0));
|
||||
}
|
||||
|
||||
u32 function = HLE::GetFunctionIndex(ops[i].address);
|
||||
if (function != 0)
|
||||
{
|
||||
int type = HLE::GetFunctionTypeByIndex(function);
|
||||
if (type == HLE::HLE_HOOK_START || type == HLE::HLE_HOOK_REPLACE)
|
||||
{
|
||||
int flags = HLE::GetFunctionFlagsByIndex(function);
|
||||
if (HLE::IsEnabled(flags))
|
||||
{
|
||||
HLEFunction(function);
|
||||
if (type == HLE::HLE_HOOK_REPLACE)
|
||||
{
|
||||
MOV(32, R(EAX), M(&NPC));
|
||||
js.downcountAmount += js.st.numCycles;
|
||||
WriteExitDestInEAX();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!ops[i].skip)
|
||||
{
|
||||
if ((opinfo->flags & FL_USE_FPU) && !js.firstFPInstructionFound)
|
||||
@@ -668,6 +687,20 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
|
||||
break;
|
||||
}
|
||||
|
||||
u32 function = HLE::GetFunctionIndex(js.blockStart);
|
||||
if (function != 0)
|
||||
{
|
||||
int type = HLE::GetFunctionTypeByIndex(function);
|
||||
if (type == HLE::HLE_HOOK_END)
|
||||
{
|
||||
int flags = HLE::GetFunctionFlagsByIndex(function);
|
||||
if (HLE::IsEnabled(flags))
|
||||
{
|
||||
HLEFunction(function);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (memory_exception)
|
||||
{
|
||||
// Address of instruction could not be translated
|
||||
|
||||
@@ -199,7 +199,7 @@ namespace JitILProfiler
|
||||
static u64 beginTime;
|
||||
static Block& Add(u64 codeHash)
|
||||
{
|
||||
const u32 _blockIndex = blocks.size();
|
||||
const u32 _blockIndex = (u32)blocks.size();
|
||||
blocks.push_back(Block());
|
||||
Block& block = blocks.back();
|
||||
block.index = _blockIndex;
|
||||
@@ -649,6 +649,27 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
|
||||
js.next_compilerPC = ops[i + 1].address;
|
||||
}
|
||||
|
||||
u32 function = HLE::GetFunctionIndex(ops[i].address);
|
||||
if (function != 0)
|
||||
{
|
||||
int type = HLE::GetFunctionTypeByIndex(function);
|
||||
if (type == HLE::HLE_HOOK_START || type == HLE::HLE_HOOK_REPLACE)
|
||||
{
|
||||
int flags = HLE::GetFunctionFlagsByIndex(function);
|
||||
if (HLE::IsEnabled(flags))
|
||||
{
|
||||
HLEFunction(function);
|
||||
if (type == HLE::HLE_HOOK_REPLACE)
|
||||
{
|
||||
MOV(32, R(EAX), M(&NPC));
|
||||
jit->js.downcountAmount += jit->js.st.numCycles;
|
||||
WriteExitDestInOpArg(R(EAX));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!ops[i].skip)
|
||||
{
|
||||
if (js.memcheck && (opinfo->flags & FL_USE_FPU))
|
||||
@@ -665,7 +686,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
|
||||
{
|
||||
ibuild.EmitBreakPointCheck(ibuild.EmitIntConst(ops[i].address));
|
||||
}
|
||||
|
||||
|
||||
JitILTables::CompileInstruction(ops[i]);
|
||||
|
||||
if (js.memcheck && (opinfo->flags & FL_LOADSTORE))
|
||||
@@ -681,6 +702,20 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
|
||||
}
|
||||
}
|
||||
|
||||
u32 function = HLE::GetFunctionIndex(jit->js.blockStart);
|
||||
if (function != 0)
|
||||
{
|
||||
int type = HLE::GetFunctionTypeByIndex(function);
|
||||
if (type == HLE::HLE_HOOK_END)
|
||||
{
|
||||
int flags = HLE::GetFunctionFlagsByIndex(function);
|
||||
if (HLE::IsEnabled(flags))
|
||||
{
|
||||
HLEFunction(function);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (memory_exception)
|
||||
{
|
||||
ibuild.EmitISIException(ibuild.EmitIntConst(em_address));
|
||||
|
||||
@@ -135,7 +135,11 @@ bool JitBlock::ContainsAddress(u32 em_address)
|
||||
// is full and when saving and loading states.
|
||||
void JitBlockCache::Clear()
|
||||
{
|
||||
Core::DisplayMessage("Clearing code cache.", 3000);
|
||||
if (IsFull())
|
||||
Core::DisplayMessage("Clearing block cache.", 3000);
|
||||
else
|
||||
Core::DisplayMessage("Clearing code cache.", 3000);
|
||||
|
||||
for (int i = 0; i < num_blocks; i++)
|
||||
{
|
||||
DestroyBlock(i, false);
|
||||
@@ -370,29 +374,27 @@ bool JitBlock::ContainsAddress(u32 em_address)
|
||||
{
|
||||
LinkBlockExits(i);
|
||||
JitBlock &b = blocks[i];
|
||||
std::map<u32, int>::iterator iter;
|
||||
pair<multimap<u32, int>::iterator, multimap<u32, int>::iterator> ppp;
|
||||
// equal_range(b) returns pair<iterator,iterator> representing the range
|
||||
// of element with key b
|
||||
ppp = links_to.equal_range(b.originalAddress);
|
||||
if (ppp.first == ppp.second)
|
||||
return;
|
||||
for (multimap<u32, int>::iterator iter2 = ppp.first; iter2 != ppp.second; ++iter2) {
|
||||
// PanicAlert("Linking block %i to block %i", iter2->second, i);
|
||||
LinkBlockExits(iter2->second);
|
||||
for (multimap<u32, int>::iterator iter = ppp.first; iter != ppp.second; ++iter) {
|
||||
// PanicAlert("Linking block %i to block %i", iter->second, i);
|
||||
LinkBlockExits(iter->second);
|
||||
}
|
||||
}
|
||||
|
||||
void JitBlockCache::UnlinkBlock(int i)
|
||||
{
|
||||
JitBlock &b = blocks[i];
|
||||
std::map<u32, int>::iterator iter;
|
||||
pair<multimap<u32, int>::iterator, multimap<u32, int>::iterator> ppp;
|
||||
ppp = links_to.equal_range(b.originalAddress);
|
||||
if (ppp.first == ppp.second)
|
||||
return;
|
||||
for (multimap<u32, int>::iterator iter2 = ppp.first; iter2 != ppp.second; ++iter2) {
|
||||
JitBlock &sourceBlock = blocks[iter2->second];
|
||||
for (multimap<u32, int>::iterator iter = ppp.first; iter != ppp.second; ++iter) {
|
||||
JitBlock &sourceBlock = blocks[iter->second];
|
||||
for (int e = 0; e < 2; e++)
|
||||
{
|
||||
if (sourceBlock.exitAddress[e] == b.originalAddress)
|
||||
@@ -458,7 +460,7 @@ bool JitBlock::ContainsAddress(u32 em_address)
|
||||
// !! this works correctly under assumption that any two overlapping blocks end at the same address
|
||||
if (destroy_block)
|
||||
{
|
||||
std::map<pair<u32,u32>, u32>::iterator it1 = block_map.lower_bound(std::make_pair(pAddr, 0)), it2 = it1, it;
|
||||
std::map<pair<u32,u32>, u32>::iterator it1 = block_map.lower_bound(std::make_pair(pAddr, 0)), it2 = it1;
|
||||
while (it2 != block_map.end() && it2->first.second < pAddr + length)
|
||||
{
|
||||
#ifdef JIT_UNLIMITED_ICACHE
|
||||
|
||||
@@ -118,7 +118,7 @@ void EmuCodeBlock::UnsafeLoadToEAX(const Gen::OpArg & opAddress, int accessSize,
|
||||
|
||||
void EmuCodeBlock::SafeLoadToEAX(const Gen::OpArg & opAddress, int accessSize, s32 offset, bool signExtend)
|
||||
{
|
||||
#if defined(_WIN32) && defined(_M_X64)
|
||||
#if defined(_M_X64)
|
||||
#ifdef ENABLE_MEM_CHECK
|
||||
if (accessSize == 32 && !Core::g_CoreStartupParameter.bMMU && !Core::g_CoreStartupParameter.bEnableDebugging)
|
||||
#else
|
||||
@@ -269,23 +269,18 @@ void EmuCodeBlock::SafeWriteRegToReg(X64Reg reg_value, X64Reg reg_addr, int acce
|
||||
|
||||
void EmuCodeBlock::SafeWriteFloatToReg(X64Reg xmm_value, X64Reg reg_addr)
|
||||
{
|
||||
u32 mem_mask = Memory::ADDR_MASK_HW_ACCESS;
|
||||
|
||||
if (Core::g_CoreStartupParameter.bMMU || Core::g_CoreStartupParameter.iTLBHack)
|
||||
{
|
||||
mem_mask |= Memory::ADDR_MASK_MEM1;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_MEM_CHECK
|
||||
if (Core::g_CoreStartupParameter.bEnableDebugging)
|
||||
{
|
||||
mem_mask |= Memory::EXRAM_MASK;
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(32, R(reg_addr), Imm32(mem_mask));
|
||||
if (false && cpu_info.bSSSE3) {
|
||||
// This path should be faster but for some reason it causes errors so I've disabled it.
|
||||
u32 mem_mask = Memory::ADDR_MASK_HW_ACCESS;
|
||||
|
||||
if (Core::g_CoreStartupParameter.bMMU || Core::g_CoreStartupParameter.iTLBHack)
|
||||
mem_mask |= Memory::ADDR_MASK_MEM1;
|
||||
|
||||
#ifdef ENABLE_MEM_CHECK
|
||||
if (Core::g_CoreStartupParameter.bEnableDebugging)
|
||||
mem_mask |= Memory::EXRAM_MASK;
|
||||
#endif
|
||||
TEST(32, R(reg_addr), Imm32(mem_mask));
|
||||
FixupBranch argh = J_CC(CC_Z);
|
||||
MOVSS(M(&float_buffer), xmm_value);
|
||||
MOV(32, R(EAX), M(&float_buffer));
|
||||
|
||||
@@ -153,7 +153,7 @@ bool CFileSystemGCWii::ExportApploader(const char* _rExportFolder) const
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CFileSystemGCWii::ExportDOL(const char* _rExportFolder) const
|
||||
u32 CFileSystemGCWii::GetBootDOLSize() const
|
||||
{
|
||||
u32 DolOffset = Read32(0x420) << m_OffsetShift;
|
||||
u32 DolSize = 0, offset = 0, size = 0;
|
||||
@@ -175,6 +175,19 @@ bool CFileSystemGCWii::ExportDOL(const char* _rExportFolder) const
|
||||
if (offset + size > DolSize)
|
||||
DolSize = offset + size;
|
||||
}
|
||||
return DolSize;
|
||||
}
|
||||
|
||||
bool CFileSystemGCWii::GetBootDOL(u8* &buffer, u32 DolSize) const
|
||||
{
|
||||
u32 DolOffset = Read32(0x420) << m_OffsetShift;
|
||||
return m_rVolume->Read(DolOffset, DolSize, buffer);
|
||||
}
|
||||
|
||||
bool CFileSystemGCWii::ExportDOL(const char* _rExportFolder) const
|
||||
{
|
||||
u32 DolOffset = Read32(0x420) << m_OffsetShift;
|
||||
u32 DolSize = GetBootDOLSize();
|
||||
|
||||
std::vector<u8> buffer(DolSize);
|
||||
if (m_rVolume->Read(DolOffset, DolSize, &buffer[0]))
|
||||
|
||||
@@ -38,6 +38,8 @@ public:
|
||||
virtual bool ExportFile(const char* _rFullPath, const char* _rExportFilename);
|
||||
virtual bool ExportApploader(const char* _rExportFolder) const;
|
||||
virtual bool ExportDOL(const char* _rExportFolder) const;
|
||||
virtual bool GetBootDOL(u8* &buffer, u32 DolSize) const;
|
||||
virtual u32 GetBootDOLSize() const;
|
||||
|
||||
private:
|
||||
bool m_Initialized;
|
||||
|
||||
@@ -57,6 +57,8 @@ public:
|
||||
virtual bool ExportApploader(const char* _rExportFolder) const = 0;
|
||||
virtual bool ExportDOL(const char* _rExportFolder) const = 0;
|
||||
virtual const char* GetFileName(u64 _Address) = 0;
|
||||
virtual bool GetBootDOL(u8* &buffer, u32 DolSize) const = 0;
|
||||
virtual u32 GetBootDOLSize() const = 0;
|
||||
|
||||
virtual const IVolume *GetVolume() const { return m_rVolume; }
|
||||
protected:
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
#include "HW/Memmap.h"
|
||||
#include "Frame.h"
|
||||
|
||||
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
#define MAX_CHEAT_SEARCH_RESULTS_DISPLAY 256
|
||||
|
||||
extern std::vector<ActionReplay::ARCode> arCodes;
|
||||
@@ -80,8 +78,8 @@ void wxCheatsWindow::Init_ChildControls()
|
||||
m_Tab_Cheats = new wxPanel(m_Notebook_Main, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
m_CheckListBox_CheatsList = new wxCheckListBox(m_Tab_Cheats, wxID_ANY, wxDefaultPosition, wxSize(300, 0), m_CheatStringList, wxLB_HSCROLL, wxDefaultValidator);
|
||||
_connect_macro_(m_CheckListBox_CheatsList, wxCheatsWindow::OnEvent_CheatsList_ItemSelected, wxEVT_COMMAND_LISTBOX_SELECTED, this);
|
||||
_connect_macro_(m_CheckListBox_CheatsList, wxCheatsWindow::OnEvent_CheatsList_ItemToggled, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, this);
|
||||
m_CheckListBox_CheatsList->Bind(wxEVT_COMMAND_LISTBOX_SELECTED, &wxCheatsWindow::OnEvent_CheatsList_ItemSelected, this);
|
||||
m_CheckListBox_CheatsList->Bind(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, &wxCheatsWindow::OnEvent_CheatsList_ItemToggled, this);
|
||||
|
||||
m_Label_Codename = new wxStaticText(m_Tab_Cheats, wxID_ANY, _("Name: "), wxDefaultPosition, wxDefaultSize);
|
||||
m_GroupBox_Info = new wxStaticBox(m_Tab_Cheats, wxID_ANY, _("Code Info"), wxDefaultPosition, wxDefaultSize);
|
||||
@@ -107,10 +105,10 @@ void wxCheatsWindow::Init_ChildControls()
|
||||
m_Tab_Log = new wxPanel(m_Notebook_Main, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
wxButton* const button_updatelog = new wxButton(m_Tab_Log, wxID_ANY, _("Update"));
|
||||
_connect_macro_(button_updatelog, wxCheatsWindow::OnEvent_ButtonUpdateLog_Press, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
button_updatelog->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &wxCheatsWindow::OnEvent_ButtonUpdateLog_Press, this);
|
||||
|
||||
m_CheckBox_LogAR = new wxCheckBox(m_Tab_Log, wxID_ANY, _("Enable AR Logging"));
|
||||
_connect_macro_(m_CheckBox_LogAR, wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
m_CheckBox_LogAR->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &wxCheatsWindow::OnEvent_CheckBoxEnableLogging_StateChange, this);
|
||||
|
||||
m_CheckBox_LogAR->SetValue(ActionReplay::IsSelfLogging());
|
||||
m_TextCtrl_Log = new wxTextCtrl(m_Tab_Log, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(100, -1), wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP);
|
||||
@@ -134,11 +132,11 @@ void wxCheatsWindow::Init_ChildControls()
|
||||
|
||||
// Button Strip
|
||||
wxButton* const button_apply = new wxButton(panel, wxID_APPLY, _("Apply"), wxDefaultPosition, wxDefaultSize);
|
||||
_connect_macro_(button_apply, wxCheatsWindow::OnEvent_ApplyChanges_Press, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
button_apply->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &wxCheatsWindow::OnEvent_ApplyChanges_Press, this);
|
||||
wxButton* const button_cancel = new wxButton(panel, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize);
|
||||
_connect_macro_(button_cancel, wxCheatsWindow::OnEvent_ButtonClose_Press, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
button_cancel->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &wxCheatsWindow::OnEvent_ButtonClose_Press, this);
|
||||
|
||||
Connect(wxID_ANY, wxEVT_CLOSE_WINDOW, wxCloseEventHandler(wxCheatsWindow::OnEvent_Close), (wxObject*)0, this);
|
||||
Bind(wxEVT_CLOSE_WINDOW, &wxCheatsWindow::OnEvent_Close, this);
|
||||
|
||||
wxStdDialogButtonSizer* const sButtons = new wxStdDialogButtonSizer();
|
||||
sButtons->AddButton(button_apply);
|
||||
@@ -160,11 +158,11 @@ CheatSearchTab::CheatSearchTab(wxWindow* const parent)
|
||||
{
|
||||
// first scan button
|
||||
btnInitScan = new wxButton(this, -1, _("New Scan"));
|
||||
_connect_macro_(btnInitScan, CheatSearchTab::StartNewSearch, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
btnInitScan->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CheatSearchTab::StartNewSearch, this);
|
||||
|
||||
// next scan button
|
||||
btnNextScan = new wxButton(this, -1, _("Next Scan"));
|
||||
_connect_macro_(btnNextScan, CheatSearchTab::FilterCheatSearchResults, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
btnNextScan->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CheatSearchTab::FilterCheatSearchResults, this);
|
||||
btnNextScan->Disable();
|
||||
|
||||
// data size radio buttons
|
||||
@@ -185,7 +183,7 @@ CheatSearchTab::CheatSearchTab(wxWindow* const parent)
|
||||
|
||||
// create AR code button
|
||||
wxButton* const button_cheat_search_copy_address = new wxButton(this, -1, _("Create AR Code"));
|
||||
_connect_macro_(button_cheat_search_copy_address, CheatSearchTab::CreateARCode, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
button_cheat_search_copy_address->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CheatSearchTab::CreateARCode, this);
|
||||
|
||||
// results groupbox
|
||||
wxStaticBoxSizer* const sizer_cheat_search_results = new wxStaticBoxSizer(wxVERTICAL, this, _("Results"));
|
||||
@@ -200,7 +198,7 @@ CheatSearchTab::CheatSearchTab(wxWindow* const parent)
|
||||
|
||||
// search value textbox
|
||||
textctrl_value_x = new wxTextCtrl(this, -1, wxT("0x0"), wxDefaultPosition, wxSize(96,-1));
|
||||
_connect_macro_(textctrl_value_x, CheatSearchTab::ApplyFocus, wxEVT_SET_FOCUS, this);
|
||||
textctrl_value_x->Bind(wxEVT_SET_FOCUS, &CheatSearchTab::ApplyFocus, this);
|
||||
|
||||
wxBoxSizer* const sizer_cheat_filter_text = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer_cheat_filter_text->Add(value_x_radiobtn.rad_uservalue, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5);
|
||||
@@ -495,7 +493,7 @@ void CheatSearchTab::FilterCheatSearchResults(wxCommandEvent&)
|
||||
UpdateCheatSearchResultsList();
|
||||
}
|
||||
|
||||
void CheatSearchTab::ApplyFocus(wxCommandEvent& ev)
|
||||
void CheatSearchTab::ApplyFocus(wxEvent& ev)
|
||||
{
|
||||
ev.Skip(true);
|
||||
value_x_radiobtn.rad_uservalue->SetValue(true);
|
||||
@@ -590,9 +588,9 @@ CreateCodeDialog::CreateCodeDialog(wxWindow* const parent, const u32 address)
|
||||
sizer_main->Add(textctrl_value, 0, wxALL, 5);
|
||||
sizer_main->Add(CreateButtonSizer(wxOK | wxCANCEL | wxNO_DEFAULT), 0, wxALL, 5);
|
||||
|
||||
Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CreateCodeDialog::PressOK));
|
||||
Connect(wxID_CANCEL, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CreateCodeDialog::PressCancel));
|
||||
Connect(wxID_ANY, wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CreateCodeDialog::OnEvent_Close), (wxObject*)0, this);
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CreateCodeDialog::PressOK, this, wxID_OK);
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CreateCodeDialog::PressCancel, this, wxID_CANCEL);
|
||||
Bind(wxEVT_CLOSE_WINDOW, &CreateCodeDialog::OnEvent_Close, this);
|
||||
|
||||
SetSizerAndFit(sizer_main);
|
||||
SetFocus();
|
||||
|
||||
@@ -99,7 +99,7 @@ protected:
|
||||
void StartNewSearch(wxCommandEvent& event);
|
||||
void FilterCheatSearchResults(wxCommandEvent& event);
|
||||
void CreateARCode(wxCommandEvent&);
|
||||
void ApplyFocus(wxCommandEvent&);
|
||||
void ApplyFocus(wxEvent&);
|
||||
};
|
||||
|
||||
class wxCheatsWindow : public wxDialog
|
||||
|
||||
@@ -17,10 +17,12 @@
|
||||
|
||||
#include <string> // System
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <wx/spinbutt.h>
|
||||
|
||||
#include "Common.h"
|
||||
#include "CommonPaths.h"
|
||||
#include "FileSearch.h"
|
||||
|
||||
#include "Core.h" // Core
|
||||
#include "HW/EXI.h"
|
||||
@@ -40,6 +42,14 @@
|
||||
#include "Main.h"
|
||||
#include "VideoBackendBase.h"
|
||||
|
||||
#if defined(__APPLE__)
|
||||
#include <tr1/functional>
|
||||
using std::tr1::function;
|
||||
#else
|
||||
#include <functional>
|
||||
using std::function;
|
||||
#endif
|
||||
|
||||
#define TEXT_BOX(page, text) new wxStaticText(page, wxID_ANY, text, wxDefaultPosition, wxDefaultSize)
|
||||
|
||||
extern CFrame* main_frame;
|
||||
@@ -112,7 +122,6 @@ EVT_CHOICE(ID_FRAMELIMIT, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHECKBOX(ID_FRAMELIMIT_USEFPSFORLIMITING, CConfigMain::CoreSettingsChanged)
|
||||
|
||||
EVT_RADIOBOX(ID_CPUENGINE, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHECKBOX(ID_LOCKTHREADS, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHECKBOX(ID_NTSCJ, CConfigMain::CoreSettingsChanged)
|
||||
|
||||
|
||||
@@ -120,14 +129,13 @@ EVT_RADIOBOX(ID_DSPENGINE, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHECKBOX(ID_DSPTHREAD, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHECKBOX(ID_ENABLE_THROTTLE, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHECKBOX(ID_DUMP_AUDIO, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHOICE(ID_FREQUENCY, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHECKBOX(ID_DPL2DECODER, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHOICE(ID_BACKEND, CConfigMain::AudioSettingsChanged)
|
||||
EVT_SLIDER(ID_VOLUME, CConfigMain::AudioSettingsChanged)
|
||||
|
||||
EVT_CHECKBOX(ID_INTERFACE_CONFIRMSTOP, CConfigMain::DisplaySettingsChanged)
|
||||
EVT_CHECKBOX(ID_INTERFACE_USEPANICHANDLERS, CConfigMain::DisplaySettingsChanged)
|
||||
EVT_CHECKBOX(ID_INTERFACE_ONSCREENDISPLAYMESSAGES, CConfigMain::DisplaySettingsChanged)
|
||||
EVT_CHOICE(ID_INTERFACE_THEME, CConfigMain::DisplaySettingsChanged)
|
||||
EVT_CHOICE(ID_INTERFACE_LANG, CConfigMain::DisplaySettingsChanged)
|
||||
EVT_BUTTON(ID_HOTKEY_CONFIG, CConfigMain::DisplaySettingsChanged)
|
||||
|
||||
@@ -211,12 +219,13 @@ void CConfigMain::UpdateGUI()
|
||||
EnableCheats->Disable();
|
||||
|
||||
CPUEngine->Disable();
|
||||
LockThreads->Disable();
|
||||
_NTSCJ->Disable();
|
||||
|
||||
// Disable stuff on AudioPage
|
||||
DSPEngine->Disable();
|
||||
DSPThread->Disable();
|
||||
DPL2Decoder->Disable();
|
||||
Latency->Disable();
|
||||
|
||||
// Disable stuff on GamecubePage
|
||||
GCSystemLang->Disable();
|
||||
@@ -253,14 +262,6 @@ void CConfigMain::InitializeGUILists()
|
||||
arrayStringFor_DSPEngine.Add(_("DSP LLE recompiler"));
|
||||
arrayStringFor_DSPEngine.Add(_("DSP LLE interpreter (slow)"));
|
||||
|
||||
|
||||
// Display page
|
||||
// Themes
|
||||
arrayStringFor_Themes.Add(wxT("Boomy"));
|
||||
arrayStringFor_Themes.Add(wxT("Vista"));
|
||||
arrayStringFor_Themes.Add(wxT("X-Plastik"));
|
||||
arrayStringFor_Themes.Add(wxT("KDE"));
|
||||
|
||||
// Gamecube page
|
||||
// GC Language arrayStrings
|
||||
arrayStringFor_GCSystemLang.Add(_("English"));
|
||||
@@ -320,9 +321,6 @@ void CConfigMain::InitializeGUIValues()
|
||||
{
|
||||
const SCoreStartupParameter& startup_params = SConfig::GetInstance().m_LocalCoreStartupParameter;
|
||||
|
||||
// Load DSP Settings.
|
||||
ac_Config.Load();
|
||||
|
||||
// General - Basic
|
||||
CPUThread->SetValue(startup_params.bCPUThread);
|
||||
SkipIdle->SetValue(startup_params.bSkipIdle);
|
||||
@@ -332,7 +330,6 @@ void CConfigMain::InitializeGUIValues()
|
||||
|
||||
// General - Advanced
|
||||
CPUEngine->SetSelection(startup_params.iCPUCore);
|
||||
LockThreads->SetValue(startup_params.bLockThreads);
|
||||
_NTSCJ->SetValue(startup_params.bForceNTSCJ);
|
||||
|
||||
|
||||
@@ -340,7 +337,6 @@ void CConfigMain::InitializeGUIValues()
|
||||
ConfirmStop->SetValue(startup_params.bConfirmStop);
|
||||
UsePanicHandlers->SetValue(startup_params.bUsePanicHandlers);
|
||||
OnScreenDisplayMessages->SetValue(startup_params.bOnScreenDisplayMessages);
|
||||
Theme->SetSelection(startup_params.iTheme);
|
||||
// need redesign
|
||||
for (unsigned int i = 0; i < sizeof(langIds) / sizeof(wxLanguage); i++)
|
||||
{
|
||||
@@ -355,16 +351,18 @@ void CConfigMain::InitializeGUIValues()
|
||||
if (startup_params.bDSPHLE)
|
||||
DSPEngine->SetSelection(0);
|
||||
else
|
||||
DSPEngine->SetSelection(ac_Config.m_EnableJIT ? 1 : 2);
|
||||
DSPEngine->SetSelection(SConfig::GetInstance().m_EnableJIT ? 1 : 2);
|
||||
|
||||
// Audio
|
||||
VolumeSlider->Enable(SupportsVolumeChanges(ac_Config.sBackend));
|
||||
VolumeSlider->SetValue(ac_Config.m_Volume);
|
||||
VolumeText->SetLabel(wxString::Format(wxT("%d %%"), ac_Config.m_Volume));
|
||||
VolumeSlider->Enable(SupportsVolumeChanges(SConfig::GetInstance().sBackend));
|
||||
VolumeSlider->SetValue(SConfig::GetInstance().m_Volume);
|
||||
VolumeText->SetLabel(wxString::Format(wxT("%d %%"), SConfig::GetInstance().m_Volume));
|
||||
DSPThread->SetValue(startup_params.bDSPThread);
|
||||
DumpAudio->SetValue(ac_Config.m_DumpAudio ? true : false);
|
||||
FrequencySelection->SetSelection(
|
||||
FrequencySelection->FindString(wxString::Format(_("%d Hz"), ac_Config.iFrequency)));
|
||||
DumpAudio->SetValue(SConfig::GetInstance().m_DumpAudio ? true : false);
|
||||
DPL2Decoder->Enable(std::string(SConfig::GetInstance().sBackend) == BACKEND_OPENAL);
|
||||
DPL2Decoder->SetValue(startup_params.bDPL2Decoder);
|
||||
Latency->Enable(std::string(SConfig::GetInstance().sBackend) == BACKEND_OPENAL);
|
||||
Latency->SetValue(startup_params.iLatency);
|
||||
// add backends to the list
|
||||
AddAudioBackends();
|
||||
|
||||
@@ -496,17 +494,13 @@ void CConfigMain::InitializeGUITooltips()
|
||||
|
||||
// Display - Interface
|
||||
ConfirmStop->SetToolTip(_("Show a confirmation box before stopping a game."));
|
||||
UsePanicHandlers->SetToolTip(_("Show a message box when a potentially serious error has occured.\nDisabling this may avoid annoying and non-fatal messages, but it may also mean that Dolphin suddenly crashes without any explanation at all."));
|
||||
UsePanicHandlers->SetToolTip(_("Show a message box when a potentially serious error has occurred.\nDisabling this may avoid annoying and non-fatal messages, but it may also mean that Dolphin suddenly crashes without any explanation at all."));
|
||||
OnScreenDisplayMessages->SetToolTip(_("Show messages on the emulation screen area.\nThese messages include memory card writes, video backend and CPU information, and JIT cache clearing."));
|
||||
|
||||
// Display - Themes: Copyright notice
|
||||
Theme->SetToolTip(_("Boomy: Milosz Wlazlo [[email protected]]\nVista: VistaIcons.com\nX-Plastik: black_rider [ForumW.org]\nKDE: KDE-Look.org"));
|
||||
|
||||
InterfaceLang->SetToolTip(_("Change the language of the user interface.\nRequires restart."));
|
||||
|
||||
// Audio tooltips
|
||||
DSPThread->SetToolTip(_("Run DSP LLE on a dedicated thread (not recommended)."));
|
||||
FrequencySelection->SetToolTip(_("Changing this will have no effect while the emulator is running!"));
|
||||
BackendSelection->SetToolTip(_("Changing this will have no effect while the emulator is running!"));
|
||||
|
||||
// Gamecube - Devices
|
||||
@@ -514,6 +508,16 @@ void CConfigMain::InitializeGUITooltips()
|
||||
|
||||
// Wii - Devices
|
||||
WiiKeyboard->SetToolTip(_("This could cause slow down in Wii Menu and some games."));
|
||||
|
||||
#if defined(__APPLE__)
|
||||
DPL2Decoder->SetToolTip(_("Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on OSX."));
|
||||
#elif defined(__linux__)
|
||||
DPL2Decoder->SetToolTip(_("Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only."));
|
||||
#elif defined(_WIN32)
|
||||
DPL2Decoder->SetToolTip(_("Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL backend only. May need to rename soft_oal.dll to OpenAL32.dll to make it work."));
|
||||
#endif
|
||||
|
||||
Latency->SetToolTip(_("Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL backend only."));
|
||||
}
|
||||
|
||||
void CConfigMain::CreateGUIControls()
|
||||
@@ -546,7 +550,6 @@ void CConfigMain::CreateGUIControls()
|
||||
UseFPSForLimiting = new wxCheckBox(GeneralPage, ID_FRAMELIMIT_USEFPSFORLIMITING, _("Limit by FPS"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||
// Core Settings - Advanced
|
||||
CPUEngine = new wxRadioBox(GeneralPage, ID_CPUENGINE, _("CPU Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_CPUEngine, 0, wxRA_SPECIFY_ROWS);
|
||||
LockThreads = new wxCheckBox(GeneralPage, ID_LOCKTHREADS, _("Lock Threads to Cores"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||
_NTSCJ = new wxCheckBox(GeneralPage, ID_NTSCJ, _("Force Console as NTSC-J"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||
|
||||
// Populate the General settings
|
||||
@@ -562,7 +565,6 @@ void CConfigMain::CreateGUIControls()
|
||||
|
||||
wxStaticBoxSizer* const sbAdvanced = new wxStaticBoxSizer(wxVERTICAL, GeneralPage, _("Advanced Settings"));
|
||||
sbAdvanced->Add(CPUEngine, 0, wxALL, 5);
|
||||
sbAdvanced->Add(LockThreads, 0, wxALL, 5);
|
||||
sbAdvanced->Add(_NTSCJ, 0, wxALL, 5);
|
||||
|
||||
wxBoxSizer* const sGeneralPage = new wxBoxSizer(wxVERTICAL);
|
||||
@@ -576,9 +578,6 @@ void CConfigMain::CreateGUIControls()
|
||||
// Hotkey configuration
|
||||
HotkeyConfig = new wxButton(DisplayPage, ID_HOTKEY_CONFIG, _("Hotkeys"),
|
||||
wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator);
|
||||
// Themes
|
||||
Theme = new wxChoice(DisplayPage, ID_INTERFACE_THEME, wxDefaultPosition,
|
||||
wxDefaultSize, arrayStringFor_Themes, 0, wxDefaultValidator);
|
||||
// Interface settings
|
||||
ConfirmStop = new wxCheckBox(DisplayPage, ID_INTERFACE_CONFIRMSTOP, _("Confirm on Stop"),
|
||||
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||
@@ -592,10 +591,42 @@ void CConfigMain::CreateGUIControls()
|
||||
sInterface->Add(InterfaceLang, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||
sInterface->AddStretchSpacer();
|
||||
sInterface->Add(HotkeyConfig, 0, wxALIGN_RIGHT | wxALL, 5);
|
||||
wxBoxSizer* scInterface = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
// theme selection
|
||||
auto const theme_selection = new wxChoice(DisplayPage, wxID_ANY);
|
||||
|
||||
CFileSearch::XStringVector theme_dirs;
|
||||
theme_dirs.push_back(File::GetUserPath(D_THEMES_IDX));
|
||||
#if !defined(_WIN32)
|
||||
theme_dirs.push_back(SHARED_USER_DIR THEMES_DIR);
|
||||
#endif
|
||||
|
||||
CFileSearch cfs(CFileSearch::XStringVector(1, "*"), theme_dirs);
|
||||
auto const& sv = cfs.GetFileNames();
|
||||
std::for_each(sv.begin(), sv.end(), [theme_selection](const std::string& filename)
|
||||
{
|
||||
std::string name, ext;
|
||||
SplitPath(filename, NULL, &name, &ext);
|
||||
|
||||
name += ext;
|
||||
if (-1 == theme_selection->FindString(name))
|
||||
theme_selection->Append(name);
|
||||
});
|
||||
|
||||
theme_selection->SetStringSelection(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name);
|
||||
|
||||
// std::function = avoid error on msvc
|
||||
theme_selection->Bind(wxEVT_COMMAND_CHOICE_SELECTED, function<void(wxEvent&)>([theme_selection](wxEvent&)
|
||||
{
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name = theme_selection->GetStringSelection();
|
||||
main_frame->InitBitmaps();
|
||||
}));
|
||||
|
||||
auto const scInterface = new wxBoxSizer(wxHORIZONTAL);
|
||||
scInterface->Add(TEXT_BOX(DisplayPage, _("Theme:")), 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||
scInterface->Add(Theme, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||
scInterface->Add(theme_selection, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||
scInterface->AddStretchSpacer();
|
||||
|
||||
sbInterface = new wxStaticBoxSizer(wxVERTICAL, DisplayPage, _("Interface Settings"));
|
||||
sbInterface->Add(ConfirmStop, 0, wxALL, 5);
|
||||
sbInterface->Add(UsePanicHandlers, 0, wxALL, 5);
|
||||
@@ -613,20 +644,23 @@ void CConfigMain::CreateGUIControls()
|
||||
DSPThread = new wxCheckBox(AudioPage, ID_DSPTHREAD, _("DSP LLE on Thread"));
|
||||
DumpAudio = new wxCheckBox(AudioPage, ID_DUMP_AUDIO, _("Dump Audio"),
|
||||
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
||||
DPL2Decoder = new wxCheckBox(AudioPage, ID_DPL2DECODER, _("Dolby Pro Logic II decoder"));
|
||||
VolumeSlider = new wxSlider(AudioPage, ID_VOLUME, 0, 1, 100,
|
||||
wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL|wxSL_INVERSE);
|
||||
VolumeText = new wxStaticText(AudioPage, wxID_ANY, wxT(""),
|
||||
wxDefaultPosition, wxDefaultSize, 0);
|
||||
BackendSelection = new wxChoice(AudioPage, ID_BACKEND, wxDefaultPosition,
|
||||
wxDefaultSize, wxArrayBackends, 0, wxDefaultValidator, wxEmptyString);
|
||||
FrequencySelection = new wxChoice(AudioPage, ID_FREQUENCY);
|
||||
FrequencySelection->Append(wxString::Format(_("%d Hz"), 48000));
|
||||
FrequencySelection->Append(wxString::Format(_("%d Hz"), 32000));
|
||||
Latency = new wxSpinCtrl(AudioPage, ID_LATENCY, "", wxDefaultPosition, wxDefaultSize,
|
||||
wxSP_ARROW_KEYS, 0, 30);
|
||||
|
||||
Latency->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &CConfigMain::AudioSettingsChanged, this);
|
||||
|
||||
if (Core::GetState() != Core::CORE_UNINITIALIZED)
|
||||
{
|
||||
FrequencySelection->Disable();
|
||||
Latency->Disable();
|
||||
BackendSelection->Disable();
|
||||
DPL2Decoder->Disable();
|
||||
}
|
||||
|
||||
// Create sizer and add items to dialog
|
||||
@@ -634,6 +668,7 @@ void CConfigMain::CreateGUIControls()
|
||||
sbAudioSettings->Add(DSPEngine, 0, wxALL | wxEXPAND, 5);
|
||||
sbAudioSettings->Add(DSPThread, 0, wxALL, 5);
|
||||
sbAudioSettings->Add(DumpAudio, 0, wxALL, 5);
|
||||
sbAudioSettings->Add(DPL2Decoder, 0, wxALL, 5);
|
||||
|
||||
wxStaticBoxSizer *sbVolume = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Volume"));
|
||||
sbVolume->Add(VolumeSlider, 1, wxLEFT|wxRIGHT, 13);
|
||||
@@ -642,8 +677,8 @@ void CConfigMain::CreateGUIControls()
|
||||
wxGridBagSizer *sBackend = new wxGridBagSizer();
|
||||
sBackend->Add(TEXT_BOX(AudioPage, _("Audio Backend:")), wxGBPosition(0, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
sBackend->Add(BackendSelection, wxGBPosition(0, 1), wxDefaultSpan, wxALL, 5);
|
||||
sBackend->Add(TEXT_BOX(AudioPage, _("Sample Rate:")), wxGBPosition(1, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
sBackend->Add(FrequencySelection, wxGBPosition(1, 1), wxDefaultSpan, wxALL, 5);
|
||||
sBackend->Add(TEXT_BOX(AudioPage, _("Latency:")), wxGBPosition(1, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
sBackend->Add(Latency, wxGBPosition(1, 1), wxDefaultSpan, wxALL, 5);
|
||||
wxStaticBoxSizer *sbBackend = new wxStaticBoxSizer(wxHORIZONTAL, AudioPage, _("Backend Settings"));
|
||||
sbBackend->Add(sBackend, 0, wxEXPAND);
|
||||
|
||||
@@ -826,9 +861,6 @@ void CConfigMain::OnOk(wxCommandEvent& WXUNUSED (event))
|
||||
|
||||
// Save the config. Dolphin crashes to often to save the settings on closing only
|
||||
SConfig::GetInstance().SaveSettings();
|
||||
|
||||
// Save Audio settings
|
||||
ac_Config.SaveSettings();
|
||||
}
|
||||
|
||||
// Core settings
|
||||
@@ -848,7 +880,7 @@ void CConfigMain::CoreSettingsChanged(wxCommandEvent& event)
|
||||
break;
|
||||
case ID_FRAMELIMIT:
|
||||
SConfig::GetInstance().m_Framelimit = Framelimit->GetSelection();
|
||||
ac_Config.Update();
|
||||
AudioCommon::UpdateSoundStream();
|
||||
break;
|
||||
case ID_FRAMELIMIT_USEFPSFORLIMITING:
|
||||
SConfig::GetInstance().b_UseFPS = UseFPSForLimiting->IsChecked();
|
||||
@@ -860,9 +892,6 @@ void CConfigMain::CoreSettingsChanged(wxCommandEvent& event)
|
||||
main_frame->g_pCodeWindow->GetMenuBar()->Check(IDM_INTERPRETER,
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.iCPUCore?false:true);
|
||||
break;
|
||||
case ID_LOCKTHREADS:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bLockThreads = LockThreads->IsChecked();
|
||||
break;
|
||||
case ID_NTSCJ:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bForceNTSCJ = _NTSCJ->IsChecked();
|
||||
break;
|
||||
@@ -886,10 +915,6 @@ void CConfigMain::DisplaySettingsChanged(wxCommandEvent& event)
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bOnScreenDisplayMessages = OnScreenDisplayMessages->IsChecked();
|
||||
SetEnableAlert(OnScreenDisplayMessages->IsChecked());
|
||||
break;
|
||||
case ID_INTERFACE_THEME:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.iTheme = Theme->GetSelection();
|
||||
main_frame->InitBitmaps();
|
||||
break;
|
||||
case ID_INTERFACE_LANG:
|
||||
if (SConfig::GetInstance().m_InterfaceLanguage != langIds[InterfaceLang->GetSelection()])
|
||||
SuccessAlertT("You must restart Dolphin in order for the change to take effect.");
|
||||
@@ -913,13 +938,13 @@ void CConfigMain::AudioSettingsChanged(wxCommandEvent& event)
|
||||
case ID_DSPENGINE:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE = DSPEngine->GetSelection() == 0;
|
||||
if (!DSPEngine->GetSelection() == 0)
|
||||
ac_Config.m_EnableJIT = DSPEngine->GetSelection() == 1;
|
||||
ac_Config.Update();
|
||||
SConfig::GetInstance().m_EnableJIT = DSPEngine->GetSelection() == 1;
|
||||
AudioCommon::UpdateSoundStream();
|
||||
break;
|
||||
|
||||
case ID_VOLUME:
|
||||
ac_Config.m_Volume = VolumeSlider->GetValue();
|
||||
ac_Config.Update();
|
||||
SConfig::GetInstance().m_Volume = VolumeSlider->GetValue();
|
||||
AudioCommon::UpdateSoundStream();
|
||||
VolumeText->SetLabel(wxString::Format(wxT("%d %%"), VolumeSlider->GetValue()));
|
||||
break;
|
||||
|
||||
@@ -927,19 +952,24 @@ void CConfigMain::AudioSettingsChanged(wxCommandEvent& event)
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = DSPThread->IsChecked();
|
||||
break;
|
||||
|
||||
case ID_DPL2DECODER:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDPL2Decoder = DPL2Decoder->IsChecked();
|
||||
break;
|
||||
|
||||
case ID_BACKEND:
|
||||
VolumeSlider->Enable(SupportsVolumeChanges(std::string(BackendSelection->GetStringSelection().mb_str())));
|
||||
ac_Config.sBackend = BackendSelection->GetStringSelection().mb_str();
|
||||
ac_Config.Update();
|
||||
Latency->Enable(std::string(BackendSelection->GetStringSelection().mb_str()) == BACKEND_OPENAL);
|
||||
DPL2Decoder->Enable(std::string(BackendSelection->GetStringSelection().mb_str()) == BACKEND_OPENAL);
|
||||
SConfig::GetInstance().sBackend = BackendSelection->GetStringSelection().mb_str();
|
||||
AudioCommon::UpdateSoundStream();
|
||||
break;
|
||||
|
||||
case ID_LATENCY:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.iLatency = Latency->GetValue();
|
||||
break;
|
||||
|
||||
default:
|
||||
ac_Config.m_DumpAudio = DumpAudio->GetValue();
|
||||
|
||||
long int frequency;
|
||||
FrequencySelection->GetStringSelection().ToLong(&frequency);
|
||||
ac_Config.iFrequency = frequency;
|
||||
ac_Config.Update();
|
||||
SConfig::GetInstance().m_DumpAudio = DumpAudio->GetValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -953,7 +983,7 @@ void CConfigMain::AddAudioBackends()
|
||||
{
|
||||
BackendSelection->Append(wxString::FromAscii((*iter).c_str()));
|
||||
int num = BackendSelection->\
|
||||
FindString(wxString::FromAscii(ac_Config.sBackend.c_str()));
|
||||
FindString(wxString::FromAscii(SConfig::GetInstance().sBackend.c_str()));
|
||||
BackendSelection->SetSelection(num);
|
||||
}
|
||||
}
|
||||
@@ -966,8 +996,7 @@ bool CConfigMain::SupportsVolumeChanges(std::string backend)
|
||||
return (backend == BACKEND_DIRECTSOUND ||
|
||||
backend == BACKEND_COREAUDIO ||
|
||||
backend == BACKEND_OPENAL ||
|
||||
backend == BACKEND_XAUDIO2 ||
|
||||
backend == BACKEND_PULSEAUDIO);
|
||||
backend == BACKEND_XAUDIO2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -69,7 +69,6 @@ private:
|
||||
ID_FRAMELIMIT_USEFPSFORLIMITING,
|
||||
|
||||
ID_CPUENGINE,
|
||||
ID_LOCKTHREADS,
|
||||
ID_DSPTHREAD,
|
||||
|
||||
ID_NTSCJ,
|
||||
@@ -79,7 +78,8 @@ private:
|
||||
ID_ENABLE_HLE_AUDIO,
|
||||
ID_ENABLE_THROTTLE,
|
||||
ID_DUMP_AUDIO,
|
||||
ID_FREQUENCY,
|
||||
ID_DPL2DECODER,
|
||||
ID_LATENCY,
|
||||
ID_BACKEND,
|
||||
ID_VOLUME,
|
||||
|
||||
@@ -87,7 +87,6 @@ private:
|
||||
ID_INTERFACE_CONFIRMSTOP,
|
||||
ID_INTERFACE_USEPANICHANDLERS,
|
||||
ID_INTERFACE_ONSCREENDISPLAYMESSAGES,
|
||||
ID_INTERFACE_THEME,
|
||||
ID_INTERFACE_LANG,
|
||||
ID_HOTKEY_CONFIG,
|
||||
|
||||
@@ -143,7 +142,6 @@ private:
|
||||
wxCheckBox* EnableOpenCL;
|
||||
wxRadioBox* CPUEngine;
|
||||
wxCheckBox* DSPThread;
|
||||
wxCheckBox* LockThreads;
|
||||
wxCheckBox* _NTSCJ;
|
||||
|
||||
|
||||
@@ -155,17 +153,17 @@ private:
|
||||
wxBoxSizer* sAudioPage; // GC settings
|
||||
wxRadioBox* DSPEngine;
|
||||
wxSlider* VolumeSlider;
|
||||
wxStaticText* VolumeText;
|
||||
wxStaticText* VolumeText;
|
||||
wxCheckBox* DumpAudio;
|
||||
wxCheckBox* DPL2Decoder;
|
||||
wxArrayString wxArrayBackends;
|
||||
wxChoice* BackendSelection;
|
||||
wxChoice* FrequencySelection;
|
||||
wxSpinCtrl* Latency;
|
||||
|
||||
// Interface
|
||||
wxCheckBox* ConfirmStop;
|
||||
wxCheckBox* UsePanicHandlers;
|
||||
wxCheckBox* OnScreenDisplayMessages;
|
||||
wxChoice* Theme;
|
||||
wxChoice* InterfaceLang;
|
||||
wxButton* HotkeyConfig;
|
||||
|
||||
@@ -227,7 +225,6 @@ private:
|
||||
wxArrayString arrayStringFor_CPUEngine;
|
||||
wxArrayString arrayStringFor_DSPEngine;
|
||||
wxArrayString arrayStringFor_FullscreenResolution;
|
||||
wxArrayString arrayStringFor_Themes;
|
||||
wxArrayString arrayStringFor_InterfaceLang;
|
||||
wxArrayString arrayStringFor_GCSystemLang;
|
||||
wxArrayString arrayStringFor_WiiSensBarPos;
|
||||
|
||||
@@ -31,13 +31,10 @@ extern "C" {
|
||||
#include "../../resources/toolbar_debugger_delete.c"
|
||||
}
|
||||
|
||||
#define _connect_macro_(id, handler) \
|
||||
Connect(id, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(handler), (wxObject*)0, (wxEvtHandler*)parent)
|
||||
|
||||
class CBreakPointBar : public wxAuiToolBar
|
||||
{
|
||||
public:
|
||||
CBreakPointBar(wxWindow* parent, const wxWindowID id)
|
||||
CBreakPointBar(CBreakPointWindow* parent, const wxWindowID id)
|
||||
: wxAuiToolBar(parent, id, wxDefaultPosition, wxDefaultSize,
|
||||
wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_TEXT)
|
||||
{
|
||||
@@ -51,26 +48,26 @@ public:
|
||||
wxBitmap(wxGetBitmapFromMemory(toolbar_add_memcheck_png).ConvertToImage().Rescale(24, 24));
|
||||
|
||||
AddTool(ID_DELETE, wxT("Delete"), m_Bitmaps[Toolbar_Delete]);
|
||||
_connect_macro_(ID_DELETE, CBreakPointWindow::OnDelete);
|
||||
Bind(wxEVT_COMMAND_TOOL_CLICKED, &CBreakPointWindow::OnDelete, parent, ID_DELETE);
|
||||
|
||||
AddTool(ID_CLEAR, wxT("Clear"), m_Bitmaps[Toolbar_Delete]);
|
||||
_connect_macro_(ID_CLEAR, CBreakPointWindow::OnClear);
|
||||
Bind(wxEVT_COMMAND_TOOL_CLICKED, &CBreakPointWindow::OnClear, parent, ID_CLEAR);
|
||||
|
||||
AddTool(ID_ADDBP, wxT("+BP"), m_Bitmaps[Toolbar_Add_BP]);
|
||||
_connect_macro_(ID_ADDBP, CBreakPointWindow::OnAddBreakPoint);
|
||||
Bind(wxEVT_COMMAND_TOOL_CLICKED, &CBreakPointWindow::OnAddBreakPoint, parent, ID_ADDBP);
|
||||
|
||||
// Add memory breakpoints if you can use them
|
||||
if (Memory::AreMemoryBreakpointsActivated())
|
||||
{
|
||||
AddTool(ID_ADDMC, wxT("+MC"), m_Bitmaps[Toolbar_Add_MC]);
|
||||
_connect_macro_(ID_ADDMC, CBreakPointWindow::OnAddMemoryCheck);
|
||||
Bind(wxEVT_COMMAND_TOOL_CLICKED, &CBreakPointWindow::OnAddMemoryCheck, parent, ID_ADDMC);
|
||||
}
|
||||
|
||||
AddTool(ID_LOAD, wxT("Load"), m_Bitmaps[Toolbar_Delete]);
|
||||
_connect_macro_(ID_LOAD, CBreakPointWindow::LoadAll);
|
||||
Bind(wxEVT_COMMAND_TOOL_CLICKED, &CBreakPointWindow::LoadAll, parent, ID_LOAD);
|
||||
|
||||
AddTool(ID_SAVE, wxT("Save"), m_Bitmaps[Toolbar_Delete]);
|
||||
_connect_macro_(ID_SAVE, CBreakPointWindow::Event_SaveAll);
|
||||
Bind(wxEVT_COMMAND_TOOL_CLICKED, &CBreakPointWindow::Event_SaveAll, parent, ID_SAVE);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -52,10 +52,7 @@
|
||||
|
||||
extern "C" // Bitmaps
|
||||
{
|
||||
#include "../../resources/toolbar_play.c"
|
||||
#include "../../resources/toolbar_pause.c"
|
||||
#include "../../resources/toolbar_add_memorycheck.c"
|
||||
#include "../../resources/toolbar_debugger_delete.c"
|
||||
#include "../../resources/toolbar_add_breakpoint.c"
|
||||
}
|
||||
|
||||
@@ -563,23 +560,21 @@ bool CCodeWindow::JITBlockLinking()
|
||||
void CCodeWindow::InitBitmaps()
|
||||
{
|
||||
// load original size 48x48
|
||||
m_Bitmaps[Toolbar_DebugGo] = wxGetBitmapFromMemory(toolbar_play_png);
|
||||
m_Bitmaps[Toolbar_Step] = wxGetBitmapFromMemory(toolbar_add_breakpoint_png);
|
||||
m_Bitmaps[Toolbar_StepOver] = wxGetBitmapFromMemory(toolbar_add_memcheck_png);
|
||||
m_Bitmaps[Toolbar_Skip] = wxGetBitmapFromMemory(toolbar_add_memcheck_png);
|
||||
m_Bitmaps[Toolbar_GotoPC] = wxGetBitmapFromMemory(toolbar_add_memcheck_png);
|
||||
m_Bitmaps[Toolbar_SetPC] = wxGetBitmapFromMemory(toolbar_add_memcheck_png);
|
||||
m_Bitmaps[Toolbar_DebugPause] = wxGetBitmapFromMemory(toolbar_pause_png);
|
||||
|
||||
// scale to 24x24 for toolbar
|
||||
for (size_t n = Toolbar_DebugGo; n < ToolbarDebugBitmapMax; n++)
|
||||
for (size_t n = 0; n < ToolbarDebugBitmapMax; n++)
|
||||
m_Bitmaps[n] = wxBitmap(m_Bitmaps[n].ConvertToImage().Scale(24, 24));
|
||||
}
|
||||
|
||||
void CCodeWindow::PopulateToolbar(wxAuiToolBar* toolBar)
|
||||
{
|
||||
int w = m_Bitmaps[Toolbar_DebugGo].GetWidth(),
|
||||
h = m_Bitmaps[Toolbar_DebugGo].GetHeight();
|
||||
int w = m_Bitmaps[0].GetWidth(),
|
||||
h = m_Bitmaps[0].GetHeight();
|
||||
|
||||
toolBar->SetToolBitmapSize(wxSize(w, h));
|
||||
toolBar->AddTool(IDM_STEP, _("Step"), m_Bitmaps[Toolbar_Step]);
|
||||
|
||||
@@ -54,15 +54,6 @@
|
||||
|
||||
#include "ConfigManager.h"
|
||||
|
||||
extern "C" // Bitmaps
|
||||
{
|
||||
#include "../../resources/toolbar_play.c"
|
||||
#include "../../resources/toolbar_pause.c"
|
||||
#include "../../resources/toolbar_add_memorycheck.c"
|
||||
#include "../../resources/toolbar_debugger_delete.c"
|
||||
#include "../../resources/toolbar_add_breakpoint.c"
|
||||
}
|
||||
|
||||
// Save and load settings
|
||||
// -----------------------------
|
||||
void CCodeWindow::Load()
|
||||
|
||||
@@ -56,24 +56,24 @@ FifoPlayerDlg::FifoPlayerDlg(wxWindow * const parent) :
|
||||
|
||||
FifoPlayerDlg::~FifoPlayerDlg()
|
||||
{
|
||||
Disconnect(RECORDING_FINISHED_EVENT, wxCommandEventHandler(FifoPlayerDlg::OnRecordingFinished), NULL, this);
|
||||
Disconnect(FRAME_WRITTEN_EVENT, wxCommandEventHandler(FifoPlayerDlg::OnFrameWritten), NULL, this);
|
||||
Unbind(RECORDING_FINISHED_EVENT, &FifoPlayerDlg::OnRecordingFinished, this);
|
||||
Unbind(FRAME_WRITTEN_EVENT, &FifoPlayerDlg::OnFrameWritten, this);
|
||||
|
||||
// Disconnect Events
|
||||
Disconnect(wxEVT_PAINT, wxPaintEventHandler(FifoPlayerDlg::OnPaint), NULL, this);
|
||||
m_FrameFromCtrl->Disconnect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnFrameFrom), NULL, this);
|
||||
m_FrameToCtrl->Disconnect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnFrameTo), NULL, this);
|
||||
m_ObjectFromCtrl->Disconnect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnObjectFrom), NULL, this);
|
||||
m_ObjectToCtrl->Disconnect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnObjectTo), NULL, this);
|
||||
m_EarlyMemoryUpdates->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnCheckEarlyMemoryUpdates), NULL, this);
|
||||
m_RecordStop->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnRecordStop), NULL, this);
|
||||
m_Save->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnSaveFile), NULL, this);
|
||||
m_FramesToRecordCtrl->Disconnect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnNumFramesToRecord), NULL, this);
|
||||
m_Close->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnCloseClick), NULL, this);
|
||||
Unbind(wxEVT_PAINT, &FifoPlayerDlg::OnPaint, this);
|
||||
m_FrameFromCtrl->Unbind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnFrameFrom, this);
|
||||
m_FrameToCtrl->Unbind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnFrameTo, this);
|
||||
m_ObjectFromCtrl->Unbind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnObjectFrom, this);
|
||||
m_ObjectToCtrl->Unbind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnObjectTo, this);
|
||||
m_EarlyMemoryUpdates->Unbind(wxEVT_COMMAND_CHECKBOX_CLICKED, &FifoPlayerDlg::OnCheckEarlyMemoryUpdates, this);
|
||||
m_RecordStop->Unbind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnRecordStop, this);
|
||||
m_Save->Unbind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnSaveFile, this);
|
||||
m_FramesToRecordCtrl->Unbind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnNumFramesToRecord, this);
|
||||
m_Close->Unbind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnCloseClick, this);
|
||||
|
||||
m_framesList->Disconnect(wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler(FifoPlayerDlg::OnFrameListSelectionChanged), NULL, this);
|
||||
m_objectsList->Disconnect(wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler(FifoPlayerDlg::OnObjectListSelectionChanged), NULL, this);
|
||||
m_objectCmdList->Disconnect(wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler(FifoPlayerDlg::OnObjectCmdListSelectionChanged), NULL, this);
|
||||
m_framesList->Unbind(wxEVT_COMMAND_LISTBOX_SELECTED, &FifoPlayerDlg::OnFrameListSelectionChanged, this);
|
||||
m_objectsList->Unbind(wxEVT_COMMAND_LISTBOX_SELECTED, &FifoPlayerDlg::OnObjectListSelectionChanged, this);
|
||||
m_objectCmdList->Unbind(wxEVT_COMMAND_LISTBOX_SELECTED, &FifoPlayerDlg::OnObjectCmdListSelectionChanged, this);
|
||||
|
||||
FifoPlayer::GetInstance().SetFrameWrittenCallback(NULL);
|
||||
|
||||
@@ -306,37 +306,37 @@ void FifoPlayerDlg::CreateGUIControls()
|
||||
Center(wxBOTH);
|
||||
|
||||
// Connect Events
|
||||
Connect(wxEVT_PAINT, wxPaintEventHandler(FifoPlayerDlg::OnPaint));
|
||||
m_FrameFromCtrl->Connect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnFrameFrom), NULL, this);
|
||||
m_FrameToCtrl->Connect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnFrameTo), NULL, this);
|
||||
m_ObjectFromCtrl->Connect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnObjectFrom), NULL, this);
|
||||
m_ObjectToCtrl->Connect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnObjectTo), NULL, this);
|
||||
m_EarlyMemoryUpdates->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnCheckEarlyMemoryUpdates), NULL, this);
|
||||
m_RecordStop->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnRecordStop), NULL, this);
|
||||
m_Save->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnSaveFile), NULL, this);
|
||||
m_FramesToRecordCtrl->Connect(wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler(FifoPlayerDlg::OnNumFramesToRecord), NULL, this);
|
||||
Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnCloseClick), NULL, this);
|
||||
Bind(wxEVT_PAINT, &FifoPlayerDlg::OnPaint, this);
|
||||
m_FrameFromCtrl->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnFrameFrom, this);
|
||||
m_FrameToCtrl->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnFrameTo, this);
|
||||
m_ObjectFromCtrl->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnObjectFrom, this);
|
||||
m_ObjectToCtrl->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnObjectTo, this);
|
||||
m_EarlyMemoryUpdates->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &FifoPlayerDlg::OnCheckEarlyMemoryUpdates, this);
|
||||
m_RecordStop->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnRecordStop, this);
|
||||
m_Save->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnSaveFile, this);
|
||||
m_FramesToRecordCtrl->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &FifoPlayerDlg::OnNumFramesToRecord, this);
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnCloseClick, this);
|
||||
|
||||
m_framesList->Connect(wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler(FifoPlayerDlg::OnFrameListSelectionChanged), NULL, this);
|
||||
m_objectsList->Connect(wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler(FifoPlayerDlg::OnObjectListSelectionChanged), NULL, this);
|
||||
m_objectCmdList->Connect(wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler(FifoPlayerDlg::OnObjectCmdListSelectionChanged), NULL, this);
|
||||
m_framesList->Bind(wxEVT_COMMAND_LISTBOX_SELECTED, &FifoPlayerDlg::OnFrameListSelectionChanged, this);
|
||||
m_objectsList->Bind(wxEVT_COMMAND_LISTBOX_SELECTED, &FifoPlayerDlg::OnObjectListSelectionChanged, this);
|
||||
m_objectCmdList->Bind(wxEVT_COMMAND_LISTBOX_SELECTED, &FifoPlayerDlg::OnObjectCmdListSelectionChanged, this);
|
||||
|
||||
m_beginSearch->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnBeginSearch), NULL, this);
|
||||
m_findNext->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnFindNextClick), NULL, this);
|
||||
m_findPrevious->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FifoPlayerDlg::OnFindPreviousClick), NULL, this);
|
||||
m_beginSearch->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnBeginSearch, this);
|
||||
m_findNext->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnFindNextClick, this);
|
||||
m_findPrevious->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &FifoPlayerDlg::OnFindPreviousClick, this);
|
||||
|
||||
m_searchField->Connect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(FifoPlayerDlg::OnBeginSearch), NULL, this);
|
||||
m_searchField->Connect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(FifoPlayerDlg::OnSearchFieldTextChanged), NULL, this);
|
||||
m_searchField->Bind(wxEVT_COMMAND_TEXT_ENTER, &FifoPlayerDlg::OnBeginSearch, this);
|
||||
m_searchField->Bind(wxEVT_COMMAND_TEXT_UPDATED, &FifoPlayerDlg::OnSearchFieldTextChanged, this);
|
||||
|
||||
// Setup command copying
|
||||
wxAcceleratorEntry entry;
|
||||
entry.Set(wxACCEL_CTRL, (int)'C', wxID_COPY);
|
||||
wxAcceleratorTable accel(1, &entry);
|
||||
m_objectCmdList->SetAcceleratorTable(accel);
|
||||
m_objectCmdList->Connect(wxID_COPY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(FifoPlayerDlg::OnObjectCmdListSelectionCopy), NULL, this);
|
||||
m_objectCmdList->Bind(wxEVT_COMMAND_MENU_SELECTED, &FifoPlayerDlg::OnObjectCmdListSelectionCopy, this, wxID_COPY);
|
||||
|
||||
Connect(RECORDING_FINISHED_EVENT, wxCommandEventHandler(FifoPlayerDlg::OnRecordingFinished), NULL, this);
|
||||
Connect(FRAME_WRITTEN_EVENT, wxCommandEventHandler(FifoPlayerDlg::OnFrameWritten), NULL, this);
|
||||
Bind(RECORDING_FINISHED_EVENT, &FifoPlayerDlg::OnRecordingFinished, this);
|
||||
Bind(FRAME_WRITTEN_EVENT, &FifoPlayerDlg::OnFrameWritten, this);
|
||||
|
||||
Show();
|
||||
}
|
||||
@@ -784,7 +784,7 @@ void FifoPlayerDlg::OnCloseClick(wxCommandEvent& WXUNUSED(event))
|
||||
Hide();
|
||||
}
|
||||
|
||||
void FifoPlayerDlg::OnRecordingFinished(wxCommandEvent& WXUNUSED(event))
|
||||
void FifoPlayerDlg::OnRecordingFinished(wxEvent&)
|
||||
{
|
||||
m_RecordStop->SetLabel(_("Record"));
|
||||
m_RecordStop->Enable();
|
||||
@@ -792,7 +792,7 @@ void FifoPlayerDlg::OnRecordingFinished(wxCommandEvent& WXUNUSED(event))
|
||||
UpdateRecorderGui();
|
||||
}
|
||||
|
||||
void FifoPlayerDlg::OnFrameWritten(wxCommandEvent& WXUNUSED(event))
|
||||
void FifoPlayerDlg::OnFrameWritten(wxEvent&)
|
||||
{
|
||||
m_CurrentFrameLabel->SetLabel(CreateCurrentFrameLabel());
|
||||
m_NumObjectsLabel->SetLabel(CreateFileObjectCountLabel());
|
||||
|
||||
@@ -51,8 +51,8 @@ private:
|
||||
void OnSearchFieldTextChanged(wxCommandEvent& event);
|
||||
void ChangeSearchResult(unsigned int result_idx);
|
||||
|
||||
void OnRecordingFinished(wxCommandEvent& event);
|
||||
void OnFrameWritten(wxCommandEvent& event);
|
||||
void OnRecordingFinished(wxEvent& event);
|
||||
void OnFrameWritten(wxEvent& event);
|
||||
|
||||
void OnFrameListSelectionChanged(wxCommandEvent& event);
|
||||
void OnObjectListSelectionChanged(wxCommandEvent& event);
|
||||
|
||||
@@ -52,22 +52,6 @@
|
||||
|
||||
extern "C" {
|
||||
#include "../resources/Dolphin.c" // Dolphin icon
|
||||
#include "../resources/toolbar_browse.c"
|
||||
#include "../resources/toolbar_file_open.c"
|
||||
#include "../resources/toolbar_fullscreen.c"
|
||||
#include "../resources/toolbar_help.c"
|
||||
#include "../resources/toolbar_pause.c"
|
||||
#include "../resources/toolbar_play.c"
|
||||
#include "../resources/toolbar_plugin_dsp.c"
|
||||
#include "../resources/toolbar_plugin_gfx.c"
|
||||
#include "../resources/toolbar_plugin_options.c"
|
||||
#include "../resources/toolbar_plugin_pad.c"
|
||||
#include "../resources/toolbar_refresh.c"
|
||||
#include "../resources/toolbar_stop.c"
|
||||
#include "../resources/Boomy.h" // Theme packages
|
||||
#include "../resources/Vista.h"
|
||||
#include "../resources/X-Plastik.h"
|
||||
#include "../resources/KDE.h"
|
||||
};
|
||||
|
||||
|
||||
@@ -329,7 +313,7 @@ CFrame::CFrame(wxFrame* parent,
|
||||
ConsoleListener *Console = LogManager::GetInstance()->GetConsoleListener();
|
||||
if (SConfig::GetInstance().m_InterfaceConsole) Console->Open();
|
||||
|
||||
// Start debugging mazimized
|
||||
// Start debugging maximized
|
||||
if (UseDebugger) this->Maximize(true);
|
||||
// Debugger class
|
||||
if (UseDebugger)
|
||||
@@ -424,9 +408,7 @@ CFrame::CFrame(wxFrame* parent,
|
||||
// -------------------------
|
||||
// Connect event handlers
|
||||
|
||||
m_Mgr->Connect(wxID_ANY, wxEVT_AUI_RENDER, // Resize
|
||||
wxAuiManagerEventHandler(CFrame::OnManagerResize),
|
||||
(wxObject*)0, this);
|
||||
m_Mgr->Bind(wxEVT_AUI_RENDER, &CFrame::OnManagerResize, this);
|
||||
// ----------
|
||||
|
||||
// Update controls
|
||||
@@ -758,78 +740,107 @@ bool IsHotkey(wxKeyEvent &event, int Id)
|
||||
|
||||
int GetCmdForHotkey(unsigned int key)
|
||||
{
|
||||
if (key == HK_OPEN)
|
||||
switch (key)
|
||||
{
|
||||
case HK_OPEN:
|
||||
return wxID_OPEN;
|
||||
if (key == HK_CHANGE_DISC)
|
||||
|
||||
case HK_CHANGE_DISC:
|
||||
return IDM_CHANGEDISC;
|
||||
if (key == HK_REFRESH_LIST)
|
||||
|
||||
case HK_REFRESH_LIST:
|
||||
return wxID_REFRESH;
|
||||
|
||||
if (key == HK_PLAY_PAUSE)
|
||||
case HK_PLAY_PAUSE:
|
||||
return IDM_PLAY;
|
||||
if (key == HK_STOP)
|
||||
|
||||
case HK_STOP:
|
||||
return IDM_STOP;
|
||||
if (key == HK_RESET)
|
||||
|
||||
case HK_RESET:
|
||||
return IDM_RESET;
|
||||
if (key == HK_FRAME_ADVANCE)
|
||||
|
||||
case HK_FRAME_ADVANCE:
|
||||
return IDM_FRAMESTEP;
|
||||
|
||||
if (key == HK_START_RECORDING)
|
||||
case HK_START_RECORDING:
|
||||
return IDM_RECORD;
|
||||
if (key == HK_PLAY_RECORDING)
|
||||
|
||||
case HK_PLAY_RECORDING:
|
||||
return IDM_PLAYRECORD;
|
||||
if (key == HK_EXPORT_RECORDING)
|
||||
|
||||
case HK_EXPORT_RECORDING:
|
||||
return IDM_RECORDEXPORT;
|
||||
if (key == HK_READ_ONLY_MODE)
|
||||
|
||||
case HK_READ_ONLY_MODE:
|
||||
return IDM_RECORDREADONLY;
|
||||
|
||||
if (key == HK_FULLSCREEN)
|
||||
case HK_FULLSCREEN:
|
||||
return IDM_TOGGLE_FULLSCREEN;
|
||||
if (key == HK_SCREENSHOT)
|
||||
|
||||
case HK_SCREENSHOT:
|
||||
return IDM_SCREENSHOT;
|
||||
|
||||
if (key == HK_WIIMOTE1_CONNECT)
|
||||
case HK_WIIMOTE1_CONNECT:
|
||||
return IDM_CONNECT_WIIMOTE1;
|
||||
if (key == HK_WIIMOTE2_CONNECT)
|
||||
|
||||
case HK_WIIMOTE2_CONNECT:
|
||||
return IDM_CONNECT_WIIMOTE2;
|
||||
if (key == HK_WIIMOTE3_CONNECT)
|
||||
|
||||
case HK_WIIMOTE3_CONNECT:
|
||||
return IDM_CONNECT_WIIMOTE3;
|
||||
if (key == HK_WIIMOTE4_CONNECT)
|
||||
|
||||
case HK_WIIMOTE4_CONNECT:
|
||||
return IDM_CONNECT_WIIMOTE4;
|
||||
|
||||
if (key == HK_LOAD_STATE_SLOT_1)
|
||||
case HK_LOAD_STATE_SLOT_1:
|
||||
return IDM_LOADSLOT1;
|
||||
if (key == HK_LOAD_STATE_SLOT_2)
|
||||
|
||||
case HK_LOAD_STATE_SLOT_2:
|
||||
return IDM_LOADSLOT2;
|
||||
if (key == HK_LOAD_STATE_SLOT_3)
|
||||
|
||||
case HK_LOAD_STATE_SLOT_3:
|
||||
return IDM_LOADSLOT3;
|
||||
if (key == HK_LOAD_STATE_SLOT_4)
|
||||
|
||||
case HK_LOAD_STATE_SLOT_4:
|
||||
return IDM_LOADSLOT4;
|
||||
if (key == HK_LOAD_STATE_SLOT_5)
|
||||
|
||||
case HK_LOAD_STATE_SLOT_5:
|
||||
return IDM_LOADSLOT5;
|
||||
if (key == HK_LOAD_STATE_SLOT_6)
|
||||
|
||||
case HK_LOAD_STATE_SLOT_6:
|
||||
return IDM_LOADSLOT6;
|
||||
if (key == HK_LOAD_STATE_SLOT_7)
|
||||
|
||||
case HK_LOAD_STATE_SLOT_7:
|
||||
return IDM_LOADSLOT7;
|
||||
if (key == HK_LOAD_STATE_SLOT_8)
|
||||
|
||||
case HK_LOAD_STATE_SLOT_8:
|
||||
return IDM_LOADSLOT8;
|
||||
|
||||
if (key == HK_SAVE_STATE_SLOT_1)
|
||||
case HK_SAVE_STATE_SLOT_1:
|
||||
return IDM_SAVESLOT1;
|
||||
if (key == HK_SAVE_STATE_SLOT_2)
|
||||
|
||||
case HK_SAVE_STATE_SLOT_2:
|
||||
return IDM_SAVESLOT2;
|
||||
if (key == HK_SAVE_STATE_SLOT_3)
|
||||
|
||||
case HK_SAVE_STATE_SLOT_3:
|
||||
return IDM_SAVESLOT3;
|
||||
if (key == HK_SAVE_STATE_SLOT_4)
|
||||
|
||||
case HK_SAVE_STATE_SLOT_4:
|
||||
return IDM_SAVESLOT4;
|
||||
if (key == HK_SAVE_STATE_SLOT_5)
|
||||
|
||||
case HK_SAVE_STATE_SLOT_5:
|
||||
return IDM_SAVESLOT5;
|
||||
if (key == HK_SAVE_STATE_SLOT_6)
|
||||
|
||||
case HK_SAVE_STATE_SLOT_6:
|
||||
return IDM_SAVESLOT6;
|
||||
if (key == HK_SAVE_STATE_SLOT_7)
|
||||
|
||||
case HK_SAVE_STATE_SLOT_7:
|
||||
return IDM_SAVESLOT7;
|
||||
if (key == HK_SAVE_STATE_SLOT_8)
|
||||
|
||||
case HK_SAVE_STATE_SLOT_8:
|
||||
return IDM_SAVESLOT8;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -210,15 +210,6 @@ private:
|
||||
EToolbar_Max
|
||||
};
|
||||
|
||||
enum EBitmapsThemes
|
||||
{
|
||||
BOOMY,
|
||||
VISTA,
|
||||
XPLASTIK,
|
||||
KDE,
|
||||
THEMES_MAX
|
||||
};
|
||||
|
||||
wxBitmap m_Bitmaps[EToolbar_Max];
|
||||
wxBitmap m_BitmapsMenu[EToolbar_Max];
|
||||
|
||||
|
||||
@@ -1004,15 +1004,11 @@ wxFrame * CFrame::CreateParentFrame(wxWindowID Id, const wxString& Title,
|
||||
|
||||
m_MainSizer->Add(Child, 1, wxEXPAND);
|
||||
|
||||
Frame->Connect(wxID_ANY, wxEVT_CLOSE_WINDOW,
|
||||
wxCloseEventHandler(CFrame::OnFloatingPageClosed),
|
||||
(wxObject*)0, this);
|
||||
Frame->Bind(wxEVT_CLOSE_WINDOW, &CFrame::OnFloatingPageClosed, this);
|
||||
|
||||
if (Id == IDM_CONSOLEWINDOW_PARENT)
|
||||
{
|
||||
Frame->Connect(wxID_ANY, wxEVT_SIZE,
|
||||
wxSizeEventHandler(CFrame::OnFloatingPageSize),
|
||||
(wxObject*)0, this);
|
||||
Frame->Bind(wxEVT_SIZE, &CFrame::OnFloatingPageSize, this);
|
||||
}
|
||||
|
||||
// Main sizer
|
||||
|
||||
@@ -78,23 +78,6 @@ Core::GetWindowHandle().
|
||||
// Resources
|
||||
extern "C" {
|
||||
#include "../resources/Dolphin.c" // Dolphin icon
|
||||
#include "../resources/toolbar_browse.c"
|
||||
#include "../resources/toolbar_file_open.c"
|
||||
#include "../resources/toolbar_fullscreen.c"
|
||||
#include "../resources/toolbar_help.c"
|
||||
#include "../resources/toolbar_pause.c"
|
||||
#include "../resources/toolbar_play.c"
|
||||
#include "../resources/toolbar_plugin_dsp.c"
|
||||
#include "../resources/toolbar_plugin_gfx.c"
|
||||
#include "../resources/toolbar_plugin_options.c"
|
||||
#include "../resources/toolbar_plugin_pad.c"
|
||||
#include "../resources/toolbar_plugin_wiimote.c"
|
||||
#include "../resources/toolbar_refresh.c"
|
||||
#include "../resources/toolbar_stop.c"
|
||||
#include "../resources/Boomy.h" // Theme packages
|
||||
#include "../resources/Vista.h"
|
||||
#include "../resources/X-Plastik.h"
|
||||
#include "../resources/KDE.h"
|
||||
};
|
||||
|
||||
bool confirmStop = false;
|
||||
@@ -441,7 +424,7 @@ void CFrame::PopulateToolbar(wxAuiToolBar* ToolBar)
|
||||
ToolBar->AddTool(IDM_PLAY, _("Play"), m_Bitmaps[Toolbar_Play], _("Play"));
|
||||
ToolBar->AddTool(IDM_STOP, _("Stop"), m_Bitmaps[Toolbar_Stop], _("Stop"));
|
||||
ToolBar->AddTool(IDM_TOGGLE_FULLSCREEN, _("FullScr"), m_Bitmaps[Toolbar_FullScreen], _("Toggle Fullscreen"));
|
||||
ToolBar->AddTool(IDM_SCREENSHOT, _("ScrShot"), m_Bitmaps[Toolbar_FullScreen], _("Take Screenshot"));
|
||||
ToolBar->AddTool(IDM_SCREENSHOT, _("ScrShot"), m_Bitmaps[Toolbar_Screenshot], _("Take Screenshot"));
|
||||
ToolBar->AddSeparator();
|
||||
ToolBar->AddTool(wxID_PREFERENCES, _("Config"), m_Bitmaps[Toolbar_ConfigMain], _("Configure..."));
|
||||
ToolBar->AddTool(IDM_CONFIG_GFX_BACKEND, _("Graphics"), m_Bitmaps[Toolbar_ConfigGFX], _("Graphics settings"));
|
||||
@@ -512,102 +495,33 @@ void CFrame::RecreateToolbar()
|
||||
|
||||
void CFrame::InitBitmaps()
|
||||
{
|
||||
// Get selected theme
|
||||
int Theme = SConfig::GetInstance().m_LocalCoreStartupParameter.iTheme;
|
||||
std::string theme(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name + "/");
|
||||
std::string dir(File::GetUserPath(D_THEMES_IDX) + theme);
|
||||
|
||||
// Save memory by only having one set of bitmaps loaded at any time. I mean, they are still
|
||||
// in the exe, which is in memory, but at least we wont make another copy of all of them.
|
||||
switch (Theme)
|
||||
{
|
||||
case BOOMY:
|
||||
{
|
||||
// These are stored as 48x48
|
||||
m_Bitmaps[Toolbar_FileOpen] = wxGetBitmapFromMemory(toolbar_file_open_png);
|
||||
m_Bitmaps[Toolbar_Refresh] = wxGetBitmapFromMemory(toolbar_refresh_png);
|
||||
m_Bitmaps[Toolbar_Browse] = wxGetBitmapFromMemory(toolbar_browse_png);
|
||||
m_Bitmaps[Toolbar_Play] = wxGetBitmapFromMemory(toolbar_play_png);
|
||||
m_Bitmaps[Toolbar_Stop] = wxGetBitmapFromMemory(toolbar_stop_png);
|
||||
m_Bitmaps[Toolbar_Pause] = wxGetBitmapFromMemory(toolbar_pause_png);
|
||||
m_Bitmaps[Toolbar_ConfigMain] = wxGetBitmapFromMemory(toolbar_plugin_options_png);
|
||||
m_Bitmaps[Toolbar_ConfigGFX] = wxGetBitmapFromMemory(toolbar_plugin_gfx_png);
|
||||
m_Bitmaps[Toolbar_ConfigDSP] = wxGetBitmapFromMemory(toolbar_plugin_dsp_png);
|
||||
m_Bitmaps[Toolbar_ConfigPAD] = wxGetBitmapFromMemory(toolbar_plugin_pad_png);
|
||||
m_Bitmaps[Toolbar_Wiimote] = wxGetBitmapFromMemory(toolbar_plugin_wiimote_png);
|
||||
m_Bitmaps[Toolbar_Screenshot] = wxGetBitmapFromMemory(toolbar_fullscreen_png);
|
||||
m_Bitmaps[Toolbar_FullScreen] = wxGetBitmapFromMemory(toolbar_fullscreen_png);
|
||||
m_Bitmaps[Toolbar_Help] = wxGetBitmapFromMemory(toolbar_help_png);
|
||||
#if !defined(_WIN32)
|
||||
// If theme does not exist in user's dir load from shared directory
|
||||
if (!File::Exists(dir))
|
||||
dir = SHARED_USER_DIR THEMES_DIR "/" + theme;
|
||||
#endif
|
||||
|
||||
// Scale the 48x48 bitmaps to 24x24
|
||||
for (size_t n = Toolbar_FileOpen; n < EToolbar_Max; n++)
|
||||
{
|
||||
m_Bitmaps[n] = wxBitmap(m_Bitmaps[n].ConvertToImage().Scale(24, 24));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case VISTA:
|
||||
{
|
||||
// These are stored as 24x24 and need no scaling
|
||||
m_Bitmaps[Toolbar_FileOpen] = wxGetBitmapFromMemory(Toolbar_Open1_png);
|
||||
m_Bitmaps[Toolbar_Refresh] = wxGetBitmapFromMemory(Toolbar_Refresh1_png);
|
||||
m_Bitmaps[Toolbar_Browse] = wxGetBitmapFromMemory(Toolbar_Browse1_png);
|
||||
m_Bitmaps[Toolbar_Play] = wxGetBitmapFromMemory(Toolbar_Play1_png);
|
||||
m_Bitmaps[Toolbar_Stop] = wxGetBitmapFromMemory(Toolbar_Stop1_png);
|
||||
m_Bitmaps[Toolbar_Pause] = wxGetBitmapFromMemory(Toolbar_Pause1_png);
|
||||
m_Bitmaps[Toolbar_ConfigMain] = wxGetBitmapFromMemory(Toolbar_Options1_png);
|
||||
m_Bitmaps[Toolbar_ConfigGFX] = wxGetBitmapFromMemory(Toolbar_Gfx1_png);
|
||||
m_Bitmaps[Toolbar_ConfigDSP] = wxGetBitmapFromMemory(Toolbar_DSP1_png);
|
||||
m_Bitmaps[Toolbar_ConfigPAD] = wxGetBitmapFromMemory(Toolbar_Pad1_png);
|
||||
m_Bitmaps[Toolbar_Wiimote] = wxGetBitmapFromMemory(Toolbar_Wiimote1_png);
|
||||
m_Bitmaps[Toolbar_Screenshot] = wxGetBitmapFromMemory(Toolbar_Fullscreen1_png);
|
||||
m_Bitmaps[Toolbar_FullScreen] = wxGetBitmapFromMemory(Toolbar_Fullscreen1_png);
|
||||
m_Bitmaps[Toolbar_Help] = wxGetBitmapFromMemory(Toolbar_Help1_png);
|
||||
}
|
||||
break;
|
||||
|
||||
case XPLASTIK:
|
||||
{
|
||||
m_Bitmaps[Toolbar_FileOpen] = wxGetBitmapFromMemory(Toolbar_Open2_png);
|
||||
m_Bitmaps[Toolbar_Refresh] = wxGetBitmapFromMemory(Toolbar_Refresh2_png);
|
||||
m_Bitmaps[Toolbar_Browse] = wxGetBitmapFromMemory(Toolbar_Browse2_png);
|
||||
m_Bitmaps[Toolbar_Play] = wxGetBitmapFromMemory(Toolbar_Play2_png);
|
||||
m_Bitmaps[Toolbar_Stop] = wxGetBitmapFromMemory(Toolbar_Stop2_png);
|
||||
m_Bitmaps[Toolbar_Pause] = wxGetBitmapFromMemory(Toolbar_Pause2_png);
|
||||
m_Bitmaps[Toolbar_ConfigMain] = wxGetBitmapFromMemory(Toolbar_Options2_png);
|
||||
m_Bitmaps[Toolbar_ConfigGFX] = wxGetBitmapFromMemory(Toolbar_Gfx2_png);
|
||||
m_Bitmaps[Toolbar_ConfigDSP] = wxGetBitmapFromMemory(Toolbar_DSP2_png);
|
||||
m_Bitmaps[Toolbar_ConfigPAD] = wxGetBitmapFromMemory(Toolbar_Pad2_png);
|
||||
m_Bitmaps[Toolbar_Wiimote] = wxGetBitmapFromMemory(Toolbar_Wiimote2_png);
|
||||
m_Bitmaps[Toolbar_Screenshot] = wxGetBitmapFromMemory(Toolbar_Fullscreen2_png);
|
||||
m_Bitmaps[Toolbar_FullScreen] = wxGetBitmapFromMemory(Toolbar_Fullscreen2_png);
|
||||
m_Bitmaps[Toolbar_Help] = wxGetBitmapFromMemory(Toolbar_Help2_png);
|
||||
}
|
||||
break;
|
||||
|
||||
case KDE:
|
||||
{
|
||||
m_Bitmaps[Toolbar_FileOpen] = wxGetBitmapFromMemory(Toolbar_Open3_png);
|
||||
m_Bitmaps[Toolbar_Refresh] = wxGetBitmapFromMemory(Toolbar_Refresh3_png);
|
||||
m_Bitmaps[Toolbar_Browse] = wxGetBitmapFromMemory(Toolbar_Browse3_png);
|
||||
m_Bitmaps[Toolbar_Play] = wxGetBitmapFromMemory(Toolbar_Play3_png);
|
||||
m_Bitmaps[Toolbar_Stop] = wxGetBitmapFromMemory(Toolbar_Stop3_png);
|
||||
m_Bitmaps[Toolbar_Pause] = wxGetBitmapFromMemory(Toolbar_Pause3_png);
|
||||
m_Bitmaps[Toolbar_ConfigMain] = wxGetBitmapFromMemory(Toolbar_Options3_png);
|
||||
m_Bitmaps[Toolbar_ConfigGFX] = wxGetBitmapFromMemory(Toolbar_Gfx3_png);
|
||||
m_Bitmaps[Toolbar_ConfigDSP] = wxGetBitmapFromMemory(Toolbar_DSP3_png);
|
||||
m_Bitmaps[Toolbar_ConfigPAD] = wxGetBitmapFromMemory(Toolbar_Pad3_png);
|
||||
m_Bitmaps[Toolbar_Wiimote] = wxGetBitmapFromMemory(Toolbar_Wiimote3_png);
|
||||
m_Bitmaps[Toolbar_Screenshot] = wxGetBitmapFromMemory(Toolbar_Fullscreen3_png);
|
||||
m_Bitmaps[Toolbar_FullScreen] = wxGetBitmapFromMemory(Toolbar_Fullscreen3_png);
|
||||
m_Bitmaps[Toolbar_Help] = wxGetBitmapFromMemory(Toolbar_Help3_png);
|
||||
}
|
||||
break;
|
||||
|
||||
default: PanicAlertT("Theme selection went wrong");
|
||||
}
|
||||
m_Bitmaps[Toolbar_FileOpen].LoadFile(dir + "open.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Refresh].LoadFile(dir + "refresh.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Browse].LoadFile(dir + "browse.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Play].LoadFile(dir + "play.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Stop].LoadFile(dir + "stop.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Pause].LoadFile(dir + "pause.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_ConfigMain].LoadFile(dir + "config.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_ConfigGFX].LoadFile(dir + "graphics.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_ConfigDSP].LoadFile(dir + "dsp.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_ConfigPAD].LoadFile(dir + "gcpad.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Wiimote].LoadFile(dir + "wiimote.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Screenshot].LoadFile(dir + "screenshot.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_FullScreen].LoadFile(dir + "fullscreen.png", wxBITMAP_TYPE_PNG);
|
||||
m_Bitmaps[Toolbar_Help].LoadFile(dir + "help.png", wxBITMAP_TYPE_PNG);
|
||||
|
||||
// Update in case the bitmap has been updated
|
||||
if (m_ToolBar != NULL) RecreateToolbar();
|
||||
if (m_ToolBar != NULL)
|
||||
RecreateToolbar();
|
||||
}
|
||||
|
||||
// Menu items
|
||||
@@ -958,15 +872,9 @@ void CFrame::StartGame(const std::string& filename)
|
||||
wxSize size(SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowWidth,
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowHeight);
|
||||
m_RenderFrame->SetClientSize(size.GetWidth(), size.GetHeight());
|
||||
m_RenderFrame->Connect(wxID_ANY, wxEVT_CLOSE_WINDOW,
|
||||
wxCloseEventHandler(CFrame::OnRenderParentClose),
|
||||
(wxObject*)0, this);
|
||||
m_RenderFrame->Connect(wxID_ANY, wxEVT_ACTIVATE,
|
||||
wxActivateEventHandler(CFrame::OnActive),
|
||||
(wxObject*)0, this);
|
||||
m_RenderFrame->Connect(wxID_ANY, wxEVT_MOVE,
|
||||
wxMoveEventHandler(CFrame::OnRenderParentMove),
|
||||
(wxObject*)0, this);
|
||||
m_RenderFrame->Bind(wxEVT_CLOSE_WINDOW, &CFrame::OnRenderParentClose, this);
|
||||
m_RenderFrame->Bind(wxEVT_ACTIVATE, &CFrame::OnActive, this);
|
||||
m_RenderFrame->Bind(wxEVT_MOVE, &CFrame::OnRenderParentMove, this);
|
||||
m_RenderParent = new CPanel(m_RenderFrame, wxID_ANY);
|
||||
m_RenderFrame->Show();
|
||||
}
|
||||
@@ -999,30 +907,14 @@ void CFrame::StartGame(const std::string& filename)
|
||||
m_RenderParent->SetFocus();
|
||||
#endif
|
||||
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard
|
||||
wxKeyEventHandler(CFrame::OnKeyDown),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_KEY_UP,
|
||||
wxKeyEventHandler(CFrame::OnKeyUp),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_RIGHT_DOWN, // Mouse
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_RIGHT_UP,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_MIDDLE_DOWN,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_MIDDLE_UP,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_MOTION,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
m_RenderParent->Connect(wxID_ANY, wxEVT_SIZE,
|
||||
wxSizeEventHandler(CFrame::OnRenderParentResize),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Bind(wxEVT_KEY_DOWN, &CFrame::OnKeyDown, this);
|
||||
wxTheApp->Bind(wxEVT_KEY_UP, &CFrame::OnKeyUp, this);
|
||||
wxTheApp->Bind(wxEVT_RIGHT_DOWN, &CFrame::OnMouse, this);
|
||||
wxTheApp->Bind(wxEVT_RIGHT_UP, &CFrame::OnMouse, this);
|
||||
wxTheApp->Bind(wxEVT_MIDDLE_DOWN, &CFrame::OnMouse, this);
|
||||
wxTheApp->Bind(wxEVT_MIDDLE_UP, &CFrame::OnMouse, this);
|
||||
wxTheApp->Bind(wxEVT_MOTION, &CFrame::OnMouse, this);
|
||||
m_RenderParent->Bind(wxEVT_SIZE, &CFrame::OnRenderParentResize, this);
|
||||
}
|
||||
|
||||
wxEndBusyCursor();
|
||||
@@ -1059,6 +951,7 @@ void CFrame::DoPause()
|
||||
Core::SetState(Core::CORE_PAUSE);
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor)
|
||||
m_RenderParent->SetCursor(wxNullCursor);
|
||||
Core::UpdateTitle();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1125,30 +1018,18 @@ void CFrame::DoStop()
|
||||
m_RenderFrame->SetTitle(wxString::FromAscii(scm_rev_str));
|
||||
|
||||
// Destroy the renderer frame when not rendering to main
|
||||
m_RenderParent->Disconnect(wxID_ANY, wxEVT_SIZE,
|
||||
wxSizeEventHandler(CFrame::OnRenderParentResize),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard
|
||||
wxKeyEventHandler(CFrame::OnKeyDown),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_KEY_UP,
|
||||
wxKeyEventHandler(CFrame::OnKeyUp),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_RIGHT_DOWN, // Mouse
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_RIGHT_UP,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_MIDDLE_DOWN,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_MIDDLE_UP,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_MOTION,
|
||||
wxMouseEventHandler(CFrame::OnMouse),
|
||||
(wxObject*)0, this);
|
||||
m_RenderParent->Unbind(wxEVT_SIZE, &CFrame::OnRenderParentResize, this);
|
||||
|
||||
// Keyboard
|
||||
wxTheApp->Unbind(wxEVT_KEY_DOWN, &CFrame::OnKeyDown, this);
|
||||
wxTheApp->Unbind(wxEVT_KEY_UP, &CFrame::OnKeyUp, this);
|
||||
|
||||
// Mouse
|
||||
wxTheApp->Unbind(wxEVT_RIGHT_DOWN, &CFrame::OnMouse, this);
|
||||
wxTheApp->Unbind(wxEVT_RIGHT_UP, &CFrame::OnMouse, this);
|
||||
wxTheApp->Unbind(wxEVT_MIDDLE_DOWN, &CFrame::OnMouse, this);
|
||||
wxTheApp->Unbind(wxEVT_MIDDLE_UP, &CFrame::OnMouse, this);
|
||||
wxTheApp->Unbind(wxEVT_MOTION, &CFrame::OnMouse, this);
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor)
|
||||
m_RenderParent->SetCursor(wxNullCursor);
|
||||
DoFullscreen(false);
|
||||
@@ -1248,6 +1129,8 @@ void CFrame::OnConfigPAD(wxCommandEvent& WXUNUSED (event))
|
||||
#if defined(HAVE_X11) && HAVE_X11
|
||||
Window win = X11Utils::XWindowFromHandle(GetHandle());
|
||||
Pad::Initialize((void *)win);
|
||||
#elif defined(__APPLE__)
|
||||
Pad::Initialize((void *)this);
|
||||
#else
|
||||
Pad::Initialize(GetHandle());
|
||||
#endif
|
||||
@@ -1272,6 +1155,8 @@ void CFrame::OnConfigWiimote(wxCommandEvent& WXUNUSED (event))
|
||||
#if defined(HAVE_X11) && HAVE_X11
|
||||
Window win = X11Utils::XWindowFromHandle(GetHandle());
|
||||
Wiimote::Initialize((void *)win);
|
||||
#elif defined(__APPLE__)
|
||||
Wiimote::Initialize((void *)this);
|
||||
#else
|
||||
Wiimote::Initialize(GetHandle());
|
||||
#endif
|
||||
|
||||
@@ -56,9 +56,7 @@ void GCMicDialog::SaveButtonMapping(int Id, int Key, int Modkey)
|
||||
|
||||
void GCMicDialog::EndGetButtons(void)
|
||||
{
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard
|
||||
wxKeyEventHandler(GCMicDialog::OnKeyDown),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Unbind(wxEVT_KEY_DOWN, &GCMicDialog::OnKeyDown, this);
|
||||
m_ButtonMappingTimer->Stop();
|
||||
GetButtonWaitingTimer = 0;
|
||||
GetButtonWaitingID = 0;
|
||||
@@ -153,9 +151,7 @@ void GCMicDialog::OnButtonClick(wxCommandEvent& event)
|
||||
|
||||
if (m_ButtonMappingTimer->IsRunning()) return;
|
||||
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard
|
||||
wxKeyEventHandler(GCMicDialog::OnKeyDown),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Bind(wxEVT_KEY_DOWN, &GCMicDialog::OnKeyDown, this);
|
||||
|
||||
// Get the button
|
||||
ClickedButton = (wxButton *)event.GetEventObject();
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
namespace Gecko
|
||||
{
|
||||
|
||||
@@ -31,8 +29,8 @@ CodeConfigPanel::CodeConfigPanel(wxWindow* const parent)
|
||||
: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
|
||||
{
|
||||
m_listbox_gcodes = new wxCheckListBox(this, -1, wxDefaultPosition, wxDefaultSize);
|
||||
_connect_macro_(m_listbox_gcodes, CodeConfigPanel::UpdateInfoBox, wxEVT_COMMAND_LISTBOX_SELECTED, this);
|
||||
_connect_macro_(m_listbox_gcodes, CodeConfigPanel::ToggleCode, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, this);
|
||||
m_listbox_gcodes->Bind(wxEVT_COMMAND_LISTBOX_SELECTED, &CodeConfigPanel::UpdateInfoBox, this);
|
||||
m_listbox_gcodes->Bind(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, &CodeConfigPanel::ToggleCode, this);
|
||||
|
||||
m_infobox.label_name = new wxStaticText(this, -1, wxGetTranslation(wxstr_name));
|
||||
m_infobox.label_creator = new wxStaticText(this, -1, wxGetTranslation(wxstr_creator));
|
||||
@@ -53,7 +51,7 @@ CodeConfigPanel::CodeConfigPanel(wxWindow* const parent)
|
||||
// button sizer
|
||||
wxBoxSizer* const sizer_buttons = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxButton* const btn_download = new wxButton(this, -1, _("Download Codes (WiiRD Database)"), wxDefaultPosition, wxSize(128, -1));
|
||||
_connect_macro_(btn_download, CodeConfigPanel::DownloadCodes, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
btn_download->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CodeConfigPanel::DownloadCodes, this);
|
||||
sizer_buttons->AddStretchSpacer(1);
|
||||
sizer_buttons->Add(btn_download, 1, wxEXPAND);
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
|
||||
enum
|
||||
{
|
||||
Toolbar_DebugGo,
|
||||
Toolbar_DebugPause,
|
||||
Toolbar_Step,
|
||||
Toolbar_StepOver,
|
||||
Toolbar_Skip,
|
||||
|
||||
@@ -56,9 +56,7 @@ void HotkeyConfigDialog::SaveButtonMapping(int Id, int Key, int Modkey)
|
||||
|
||||
void HotkeyConfigDialog::EndGetButtons(void)
|
||||
{
|
||||
wxTheApp->Disconnect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard
|
||||
wxKeyEventHandler(HotkeyConfigDialog::OnKeyDown),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Unbind(wxEVT_KEY_DOWN, &HotkeyConfigDialog::OnKeyDown, this);
|
||||
m_ButtonMappingTimer->Stop();
|
||||
GetButtonWaitingTimer = 0;
|
||||
GetButtonWaitingID = 0;
|
||||
@@ -153,9 +151,7 @@ void HotkeyConfigDialog::OnButtonClick(wxCommandEvent& event)
|
||||
|
||||
if (m_ButtonMappingTimer->IsRunning()) return;
|
||||
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard
|
||||
wxKeyEventHandler(HotkeyConfigDialog::OnKeyDown),
|
||||
(wxObject*)0, this);
|
||||
wxTheApp->Bind(wxEVT_KEY_DOWN, &HotkeyConfigDialog::OnKeyDown, this);
|
||||
|
||||
// Get the button
|
||||
ClickedButton = (wxButton *)event.GetEventObject();
|
||||
|
||||
@@ -212,8 +212,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
|
||||
// Here we set all the info to be shown (be it SJIS or Ascii) + we set the window title
|
||||
ChangeBannerDetails((int)SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage);
|
||||
m_Banner->SetBitmap(OpenGameListItem->GetImage());
|
||||
m_Banner->Connect(wxID_ANY, wxEVT_RIGHT_DOWN,
|
||||
wxMouseEventHandler(CISOProperties::RightClickOnBanner), (wxObject*)NULL, this);
|
||||
m_Banner->Bind(wxEVT_RIGHT_DOWN, &CISOProperties::RightClickOnBanner, this);
|
||||
|
||||
// Filesystem browser/dumper
|
||||
// TODO : Should we add a way to browse the wad file ?
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "InputConfigDiag.h"
|
||||
#include "UDPConfigDiag.h"
|
||||
|
||||
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
#define WXSTR_FROM_STR(s) (wxString::FromUTF8((s).c_str()))
|
||||
#define WXTSTR_FROM_CSTR(s) (wxGetTranslation(wxString::FromUTF8(s)))
|
||||
#define STR_FROM_WXSTR(w) (std::string((w).ToUTF8()))
|
||||
@@ -123,10 +122,10 @@ ControlDialog::ControlDialog(GamepadPage* const parent, InputPlugin& plugin, Con
|
||||
//device_cbox = new wxComboBox(this, -1, WXSTR_FROM_STR(ref->device_qualifier.ToString()), wxDefaultPosition, wxSize(256,-1), parent->device_cbox->GetStrings(), wxTE_PROCESS_ENTER);
|
||||
device_cbox = new wxComboBox(this, -1, WXSTR_FROM_STR(m_devq.ToString()), wxDefaultPosition, wxSize(256,-1), parent->device_cbox->GetStrings(), wxTE_PROCESS_ENTER);
|
||||
|
||||
_connect_macro_(device_cbox, ControlDialog::SetDevice, wxEVT_COMMAND_COMBOBOX_SELECTED, this);
|
||||
_connect_macro_(device_cbox, ControlDialog::SetDevice, wxEVT_COMMAND_TEXT_ENTER, this);
|
||||
device_cbox->Bind(wxEVT_COMMAND_COMBOBOX_SELECTED, &ControlDialog::SetDevice, this);
|
||||
device_cbox->Bind(wxEVT_COMMAND_TEXT_ENTER, &ControlDialog::SetDevice, this);
|
||||
|
||||
wxStaticBoxSizer* const control_chooser = CreateControlChooser(this, parent);
|
||||
wxStaticBoxSizer* const control_chooser = CreateControlChooser(parent);
|
||||
|
||||
wxStaticBoxSizer* const d_szr = new wxStaticBoxSizer(wxVERTICAL, this, _("Device"));
|
||||
d_szr->Add(device_cbox, 0, wxEXPAND|wxALL, 5);
|
||||
@@ -406,7 +405,7 @@ void GamepadPage::AdjustControlOption(wxCommandEvent&)
|
||||
m_control_dialog->control_reference->range = (ControlState)(m_control_dialog->range_slider->GetValue()) / SLIDER_TICK_COUNT;
|
||||
}
|
||||
|
||||
void GamepadPage::ConfigControl(wxCommandEvent& event)
|
||||
void GamepadPage::ConfigControl(wxEvent& event)
|
||||
{
|
||||
m_control_dialog = new ControlDialog(this, m_plugin, ((ControlButton*)event.GetEventObject())->control_reference);
|
||||
m_control_dialog->ShowModal();
|
||||
@@ -416,7 +415,7 @@ void GamepadPage::ConfigControl(wxCommandEvent& event)
|
||||
UpdateGUI();
|
||||
}
|
||||
|
||||
void GamepadPage::ClearControl(wxCommandEvent& event)
|
||||
void GamepadPage::ClearControl(wxEvent& event)
|
||||
{
|
||||
ControlButton* const btn = (ControlButton*)event.GetEventObject();
|
||||
btn->control_reference->expression.clear();
|
||||
@@ -480,24 +479,24 @@ void GamepadPage::DetectControl(wxCommandEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
wxStaticBoxSizer* ControlDialog::CreateControlChooser(wxWindow* const parent, wxWindow* const eventsink)
|
||||
wxStaticBoxSizer* ControlDialog::CreateControlChooser(GamepadPage* const parent)
|
||||
{
|
||||
wxStaticBoxSizer* const main_szr = new wxStaticBoxSizer(wxVERTICAL, parent, control_reference->is_input ? _("Input") : _("Output"));
|
||||
wxStaticBoxSizer* const main_szr = new wxStaticBoxSizer(wxVERTICAL, this, control_reference->is_input ? _("Input") : _("Output"));
|
||||
|
||||
textctrl = new wxTextCtrl(parent, -1, wxEmptyString, wxDefaultPosition, wxSize(-1, 48), wxTE_MULTILINE);
|
||||
textctrl = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxSize(-1, 48), wxTE_MULTILINE);
|
||||
|
||||
wxButton* const detect_button = new wxButton(parent, -1, control_reference->is_input ? _("Detect") : _("Test"));
|
||||
wxButton* const detect_button = new wxButton(this, -1, control_reference->is_input ? _("Detect") : _("Test"));
|
||||
|
||||
wxButton* const clear_button = new wxButton(parent, -1, _("Clear"));
|
||||
wxButton* const set_button = new wxButton(parent, -1, _("Set"));
|
||||
wxButton* const clear_button = new wxButton(this, -1, _("Clear"));
|
||||
wxButton* const set_button = new wxButton(this, -1, _("Set"));
|
||||
|
||||
wxButton* const select_button = new wxButton(parent, -1, _("Select"));
|
||||
_connect_macro_(select_button, ControlDialog::SetSelectedControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
wxButton* const select_button = new wxButton(this, -1, _("Select"));
|
||||
select_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::SetSelectedControl, this);
|
||||
|
||||
wxButton* const or_button = new wxButton(parent, -1, _("| OR"), wxDefaultPosition);
|
||||
_connect_macro_(or_button, ControlDialog::AppendControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
wxButton* const or_button = new wxButton(this, -1, _("| OR"), wxDefaultPosition);
|
||||
or_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::AppendControl, this);
|
||||
|
||||
control_lbox = new wxListBox(parent, -1, wxDefaultPosition, wxSize(-1, 64));
|
||||
control_lbox = new wxListBox(this, -1, wxDefaultPosition, wxSize(-1, 64));
|
||||
|
||||
wxBoxSizer* const button_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
button_sizer->Add(detect_button, 1, 0, 5);
|
||||
@@ -507,30 +506,30 @@ wxStaticBoxSizer* ControlDialog::CreateControlChooser(wxWindow* const parent, wx
|
||||
if (control_reference->is_input)
|
||||
{
|
||||
// TODO: check if && is good on other OS
|
||||
wxButton* const and_button = new wxButton(parent, -1, _("&& AND"), wxDefaultPosition);
|
||||
wxButton* const not_button = new wxButton(parent, -1, _("! NOT"), wxDefaultPosition);
|
||||
wxButton* const add_button = new wxButton(parent, -1, _("^ ADD"), wxDefaultPosition);
|
||||
wxButton* const and_button = new wxButton(this, -1, _("&& AND"), wxDefaultPosition);
|
||||
wxButton* const not_button = new wxButton(this, -1, _("! NOT"), wxDefaultPosition);
|
||||
wxButton* const add_button = new wxButton(this, -1, _("^ ADD"), wxDefaultPosition);
|
||||
|
||||
_connect_macro_(and_button, ControlDialog::AppendControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
_connect_macro_(not_button, ControlDialog::AppendControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
_connect_macro_(add_button, ControlDialog::AppendControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
and_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::AppendControl, this);
|
||||
not_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::AppendControl, this);
|
||||
add_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::AppendControl, this);
|
||||
|
||||
button_sizer->Add(and_button, 1, 0, 5);
|
||||
button_sizer->Add(not_button, 1, 0, 5);
|
||||
button_sizer->Add(add_button, 1, 0, 5);
|
||||
}
|
||||
|
||||
range_slider = new wxSlider(parent, -1, SLIDER_TICK_COUNT, 0, SLIDER_TICK_COUNT * 5, wxDefaultPosition, wxDefaultSize, wxSL_TOP | wxSL_LABELS /*| wxSL_AUTOTICKS*/);
|
||||
range_slider = new wxSlider(this, -1, SLIDER_TICK_COUNT, 0, SLIDER_TICK_COUNT * 5, wxDefaultPosition, wxDefaultSize, wxSL_TOP | wxSL_LABELS /*| wxSL_AUTOTICKS*/);
|
||||
|
||||
range_slider->SetValue((int)(control_reference->range * SLIDER_TICK_COUNT));
|
||||
|
||||
_connect_macro_(detect_button, ControlDialog::DetectControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
_connect_macro_(clear_button, ControlDialog::ClearControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
_connect_macro_(set_button, ControlDialog::SetControl, wxEVT_COMMAND_BUTTON_CLICKED, parent);
|
||||
detect_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::DetectControl, this);
|
||||
clear_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::ClearControl, this);
|
||||
set_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ControlDialog::SetControl, this);
|
||||
|
||||
_connect_macro_(range_slider, GamepadPage::AdjustControlOption, wxEVT_SCROLL_CHANGED, eventsink);
|
||||
wxStaticText* const range_label = new wxStaticText(parent, -1, _("Range"));
|
||||
m_bound_label = new wxStaticText(parent, -1, wxT(""));
|
||||
range_slider->Bind(wxEVT_SCROLL_CHANGED, &GamepadPage::AdjustControlOption, parent);
|
||||
wxStaticText* const range_label = new wxStaticText(this, -1, _("Range"));
|
||||
m_bound_label = new wxStaticText(this, -1, wxT(""));
|
||||
|
||||
wxBoxSizer* const range_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
range_sizer->Add(range_label, 0, wxCENTER|wxLEFT, 5);
|
||||
@@ -668,7 +667,7 @@ ControlGroupBox::~ControlGroupBox()
|
||||
delete *i;
|
||||
}
|
||||
|
||||
ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWindow* const parent, wxWindow* const eventsink)
|
||||
ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWindow* const parent, GamepadPage* const eventsink)
|
||||
: wxBoxSizer(wxVERTICAL)
|
||||
, control_group(group)
|
||||
{
|
||||
@@ -691,16 +690,16 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
if ((*ci)->control_ref->is_input)
|
||||
{
|
||||
control_button->SetToolTip(_("Left-click to detect input.\nMiddle-click to clear.\nRight-click for more options."));
|
||||
_connect_macro_(control_button, GamepadPage::DetectControl, wxEVT_COMMAND_BUTTON_CLICKED, eventsink);
|
||||
control_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::DetectControl, eventsink);
|
||||
}
|
||||
else
|
||||
{
|
||||
control_button->SetToolTip(_("Left/Right-click for more options.\nMiddle-click to clear."));
|
||||
_connect_macro_(control_button, GamepadPage::ConfigControl, wxEVT_COMMAND_BUTTON_CLICKED, eventsink);
|
||||
control_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::ConfigControl, eventsink);
|
||||
}
|
||||
|
||||
_connect_macro_(control_button, GamepadPage::ClearControl, wxEVT_MIDDLE_DOWN, eventsink);
|
||||
_connect_macro_(control_button, GamepadPage::ConfigControl, wxEVT_RIGHT_UP, eventsink);
|
||||
control_button->Bind(wxEVT_MIDDLE_DOWN, &GamepadPage::ClearControl, eventsink);
|
||||
control_button->Bind(wxEVT_RIGHT_UP, &GamepadPage::ConfigControl, eventsink);
|
||||
|
||||
wxBoxSizer* const control_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
control_sizer->AddStretchSpacer(1);
|
||||
@@ -733,7 +732,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
for (; i!=e; ++i)
|
||||
{
|
||||
PadSettingSpin* setting = new PadSettingSpin(parent, *i);
|
||||
_connect_macro_(setting->wxcontrol, GamepadPage::AdjustSetting, wxEVT_COMMAND_SPINCTRL_UPDATED, eventsink);
|
||||
setting->wxcontrol->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &GamepadPage::AdjustSetting, eventsink);
|
||||
options.push_back(setting);
|
||||
szr->Add(new wxStaticText(parent, -1, WXTSTR_FROM_CSTR((*i)->name)));
|
||||
szr->Add(setting->wxcontrol, 0, wxLEFT, 0);
|
||||
@@ -754,7 +753,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
static_bitmap = new wxStaticBitmap(parent, -1, bitmap, wxDefaultPosition, wxDefaultSize, wxBITMAP_TYPE_BMP);
|
||||
|
||||
PadSettingSpin* const threshold_cbox = new PadSettingSpin(parent, group->settings[0]);
|
||||
_connect_macro_(threshold_cbox->wxcontrol, GamepadPage::AdjustSetting, wxEVT_COMMAND_SPINCTRL_UPDATED, eventsink);
|
||||
threshold_cbox->wxcontrol->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &GamepadPage::AdjustSetting, eventsink);
|
||||
|
||||
threshold_cbox->wxcontrol->SetToolTip(_("Adjust the analog control pressure required to activate buttons."));
|
||||
|
||||
@@ -793,7 +792,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
for (; i!=e; ++i)
|
||||
{
|
||||
PadSettingSpin* setting = new PadSettingSpin(parent, *i);
|
||||
_connect_macro_(setting->wxcontrol, GamepadPage::AdjustSetting, wxEVT_COMMAND_SPINCTRL_UPDATED, eventsink);
|
||||
setting->wxcontrol->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &GamepadPage::AdjustSetting, eventsink);
|
||||
options.push_back(setting);
|
||||
wxBoxSizer* const szr = new wxBoxSizer(wxHORIZONTAL);
|
||||
szr->Add(new wxStaticText(parent, -1, WXTSTR_FROM_CSTR((*i)->name)), 0, wxCENTER|wxRIGHT, 3);
|
||||
@@ -811,8 +810,8 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
|
||||
options.push_back(attachments);
|
||||
|
||||
_connect_macro_(attachments->wxcontrol, GamepadPage::AdjustSetting, wxEVT_COMMAND_CHOICE_SELECTED, eventsink);
|
||||
_connect_macro_(configure_btn, GamepadPage::ConfigExtension, wxEVT_COMMAND_BUTTON_CLICKED, eventsink);
|
||||
attachments->wxcontrol->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &GamepadPage::AdjustSetting, eventsink);
|
||||
configure_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::ConfigExtension, eventsink);
|
||||
|
||||
Add(attachments->wxcontrol, 0, wxTOP|wxLEFT|wxRIGHT|wxEXPAND, 3);
|
||||
Add(configure_btn, 0, wxALL|wxEXPAND, 3);
|
||||
@@ -821,7 +820,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
case GROUP_TYPE_UDPWII:
|
||||
{
|
||||
wxButton* const btn = new UDPConfigButton(parent, (UDPWrapper*)group);
|
||||
_connect_macro_(btn, GamepadPage::ConfigUDPWii, wxEVT_COMMAND_BUTTON_CLICKED, eventsink);
|
||||
btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::ConfigUDPWii, eventsink);
|
||||
Add(btn, 0, wxALL|wxEXPAND, 3);
|
||||
}
|
||||
break;
|
||||
@@ -835,7 +834,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
for (; i!=e; ++i)
|
||||
{
|
||||
PadSettingCheckBox* setting_cbox = new PadSettingCheckBox(parent, (*i)->value, (*i)->name);
|
||||
_connect_macro_(setting_cbox->wxcontrol, GamepadPage::AdjustSetting, wxEVT_COMMAND_CHECKBOX_CLICKED, eventsink);
|
||||
setting_cbox->wxcontrol->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &GamepadPage::AdjustSetting, eventsink);
|
||||
options.push_back(setting_cbox);
|
||||
|
||||
Add(setting_cbox->wxcontrol, 0, wxALL|wxLEFT, 5);
|
||||
@@ -850,7 +849,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
//AddStretchSpacer(0);
|
||||
}
|
||||
|
||||
ControlGroupsSizer::ControlGroupsSizer(ControllerEmu* const controller, wxWindow* const parent, wxWindow* const eventsink, std::vector<ControlGroupBox*>* groups)
|
||||
ControlGroupsSizer::ControlGroupsSizer(ControllerEmu* const controller, wxWindow* const parent, GamepadPage* const eventsink, std::vector<ControlGroupBox*>* groups)
|
||||
: wxBoxSizer(wxHORIZONTAL)
|
||||
{
|
||||
size_t col_size = 0;
|
||||
@@ -906,9 +905,9 @@ GamepadPage::GamepadPage(wxWindow* parent, InputPlugin& plugin, const unsigned i
|
||||
|
||||
wxButton* refresh_button = new wxButton(this, -1, _("Refresh"), wxDefaultPosition, wxSize(60,-1));
|
||||
|
||||
_connect_macro_(device_cbox, GamepadPage::SetDevice, wxEVT_COMMAND_COMBOBOX_SELECTED, this);
|
||||
_connect_macro_(device_cbox, GamepadPage::SetDevice, wxEVT_COMMAND_TEXT_ENTER, this);
|
||||
_connect_macro_(refresh_button, GamepadPage::RefreshDevices, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
device_cbox->Bind(wxEVT_COMMAND_COMBOBOX_SELECTED, &GamepadPage::SetDevice, this);
|
||||
device_cbox->Bind(wxEVT_COMMAND_TEXT_ENTER, &GamepadPage::SetDevice, this);
|
||||
refresh_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::RefreshDevices, this);
|
||||
|
||||
device_sbox->Add(device_cbox, 1, wxLEFT|wxRIGHT, 3);
|
||||
device_sbox->Add(refresh_button, 0, wxRIGHT|wxBOTTOM, 3);
|
||||
@@ -920,8 +919,8 @@ GamepadPage::GamepadPage(wxWindow* parent, InputPlugin& plugin, const unsigned i
|
||||
clear_sbox->Add(default_button, 1, wxLEFT, 3);
|
||||
clear_sbox->Add(clearall_button, 1, wxRIGHT, 3);
|
||||
|
||||
_connect_macro_(clearall_button, GamepadPage::ClearAll, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
_connect_macro_(default_button, GamepadPage::LoadDefaults, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
clearall_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::ClearAll, this);
|
||||
default_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::LoadDefaults, this);
|
||||
|
||||
profile_cbox = new wxComboBox(this, -1, wxT(""), wxDefaultPosition, wxSize(64,-1));
|
||||
|
||||
@@ -929,9 +928,9 @@ GamepadPage::GamepadPage(wxWindow* parent, InputPlugin& plugin, const unsigned i
|
||||
wxButton* const psave_btn = new wxButton(this, -1, _("Save"), wxDefaultPosition, wxSize(48,-1));
|
||||
wxButton* const pdelete_btn = new wxButton(this, -1, _("Delete"), wxDefaultPosition, wxSize(60,-1));
|
||||
|
||||
_connect_macro_(pload_btn, GamepadPage::LoadProfile, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
_connect_macro_(psave_btn, GamepadPage::SaveProfile, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
_connect_macro_(pdelete_btn, GamepadPage::DeleteProfile, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
pload_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::LoadProfile, this);
|
||||
psave_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::SaveProfile, this);
|
||||
pdelete_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &GamepadPage::DeleteProfile, this);
|
||||
|
||||
profile_sbox->Add(profile_cbox, 1, wxLEFT, 3);
|
||||
profile_sbox->Add(pload_btn, 0, wxLEFT, 3);
|
||||
@@ -972,7 +971,7 @@ InputConfigDialog::InputConfigDialog(wxWindow* const parent, InputPlugin& plugin
|
||||
UpdateDeviceComboBox();
|
||||
UpdateProfileComboBox();
|
||||
|
||||
Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(InputConfigDialog::ClickSave));
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &InputConfigDialog::ClickSave, this, wxID_OK);
|
||||
|
||||
wxBoxSizer* const szr = new wxBoxSizer(wxVERTICAL);
|
||||
szr->Add(m_pad_notebook, 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5);
|
||||
@@ -983,7 +982,7 @@ InputConfigDialog::InputConfigDialog(wxWindow* const parent, InputPlugin& plugin
|
||||
|
||||
// live preview update timer
|
||||
m_update_timer = new wxTimer(this, -1);
|
||||
Connect(wxID_ANY, wxEVT_TIMER, wxTimerEventHandler(InputConfigDialog::UpdateBitmaps), (wxObject*)0, this);
|
||||
Bind(wxEVT_TIMER, &InputConfigDialog::UpdateBitmaps, this);
|
||||
m_update_timer->Start(PREVIEW_UPDATE_TIME, wxTIMER_CONTINUOUS);
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ class ControlDialog : public wxDialog
|
||||
public:
|
||||
ControlDialog(GamepadPage* const parent, InputPlugin& plugin, ControllerInterface::ControlReference* const ref);
|
||||
|
||||
wxStaticBoxSizer* CreateControlChooser(wxWindow* const parent, wxWindow* const eventsink);
|
||||
wxStaticBoxSizer* CreateControlChooser(GamepadPage* const parent);
|
||||
|
||||
void DetectControl(wxCommandEvent& event);
|
||||
void ClearControl(wxCommandEvent& event);
|
||||
@@ -159,7 +159,7 @@ public:
|
||||
class ControlGroupBox : public wxBoxSizer
|
||||
{
|
||||
public:
|
||||
ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWindow* const parent, wxWindow* const eventsink);
|
||||
ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWindow* const parent, GamepadPage* const eventsink);
|
||||
~ControlGroupBox();
|
||||
|
||||
std::vector<PadSetting*> options;
|
||||
@@ -172,7 +172,7 @@ public:
|
||||
class ControlGroupsSizer : public wxBoxSizer
|
||||
{
|
||||
public:
|
||||
ControlGroupsSizer(ControllerEmu* const controller, wxWindow* const parent, wxWindow* const eventsink, std::vector<ControlGroupBox*>* const groups = NULL);
|
||||
ControlGroupsSizer(ControllerEmu* const controller, wxWindow* const parent, GamepadPage* const eventsink, std::vector<ControlGroupBox*>* const groups = NULL);
|
||||
};
|
||||
|
||||
class InputConfigDialog;
|
||||
@@ -193,8 +193,8 @@ public:
|
||||
void SaveProfile(wxCommandEvent& event);
|
||||
void DeleteProfile(wxCommandEvent& event);
|
||||
|
||||
void ConfigControl(wxCommandEvent& event);
|
||||
void ClearControl(wxCommandEvent& event);
|
||||
void ConfigControl(wxEvent& event);
|
||||
void ClearControl(wxEvent& event);
|
||||
void DetectControl(wxCommandEvent& event);
|
||||
|
||||
void ConfigExtension(wxCommandEvent& event);
|
||||
|
||||
@@ -21,9 +21,6 @@
|
||||
#include "LogWindow.h"
|
||||
#include "FileUtil.h"
|
||||
|
||||
#define _connect_macro_(b, f, c, s) \
|
||||
(b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
LogConfigWindow::LogConfigWindow(wxWindow* parent, CLogWindow *log_window, wxWindowID id)
|
||||
: wxPanel(parent, id, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _("Log Configuration"))
|
||||
, m_LogWindow(log_window), enableAll(true)
|
||||
@@ -53,29 +50,29 @@ void LogConfigWindow::CreateGUIControls()
|
||||
m_verbosity = new wxRadioBox(this, wxID_ANY, _("Verbosity"),
|
||||
wxDefaultPosition, wxDefaultSize, wxLevelsUse, 0,
|
||||
wxRA_SPECIFY_ROWS, wxDefaultValidator);
|
||||
_connect_macro_(m_verbosity, LogConfigWindow::OnVerbosityChange, wxEVT_COMMAND_RADIOBOX_SELECTED, this);
|
||||
m_verbosity->Bind(wxEVT_COMMAND_RADIOBOX_SELECTED, &LogConfigWindow::OnVerbosityChange, this);
|
||||
|
||||
// Options
|
||||
m_writeFileCB = new wxCheckBox(this, wxID_ANY, _("Write to File"));
|
||||
_connect_macro_(m_writeFileCB, LogConfigWindow::OnWriteFileChecked, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
m_writeFileCB->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &LogConfigWindow::OnWriteFileChecked, this);
|
||||
m_writeConsoleCB = new wxCheckBox(this, wxID_ANY, _("Write to Console"));
|
||||
_connect_macro_(m_writeConsoleCB, LogConfigWindow::OnWriteConsoleChecked, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
m_writeConsoleCB->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &LogConfigWindow::OnWriteConsoleChecked, this);
|
||||
m_writeWindowCB = new wxCheckBox(this, wxID_ANY, _("Write to Window"));
|
||||
_connect_macro_(m_writeWindowCB, LogConfigWindow::OnWriteWindowChecked, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
m_writeWindowCB->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &LogConfigWindow::OnWriteWindowChecked, this);
|
||||
m_writeDebuggerCB = NULL;
|
||||
#ifdef _MSC_VER
|
||||
if (IsDebuggerPresent())
|
||||
{
|
||||
m_writeDebuggerCB = new wxCheckBox(this, wxID_ANY, _("Write to Debugger"));
|
||||
_connect_macro_(m_writeDebuggerCB, LogConfigWindow::OnWriteDebuggerChecked, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
m_writeDebuggerCB->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &LogConfigWindow::OnWriteDebuggerChecked, this);
|
||||
}
|
||||
#endif
|
||||
|
||||
wxButton *btn_toggle_all = new wxButton(this, wxID_ANY, _("Toggle All Log Types"),
|
||||
wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
|
||||
_connect_macro_(btn_toggle_all, LogConfigWindow::OnToggleAll, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
btn_toggle_all->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &LogConfigWindow::OnToggleAll, this);
|
||||
m_checks = new wxCheckListBox(this, wxID_ANY);
|
||||
_connect_macro_(m_checks, LogConfigWindow::OnLogCheck, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, this);
|
||||
m_checks->Bind(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, &LogConfigWindow::OnLogCheck, this);
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
|
||||
m_checks->Append(wxString::FromAscii(m_LogManager->GetFullName((LogTypes::LOG_TYPE)i)));
|
||||
|
||||
|
||||
@@ -39,11 +39,11 @@ const u8 hdr[] = {
|
||||
0x00,0x00,0x00,0x00
|
||||
};
|
||||
|
||||
wxBitmap wxBitmapFromMemoryRGBA(const unsigned char* data, int width, int height)
|
||||
wxBitmap wxBitmapFromMemoryRGBA(const unsigned char* data, u32 width, u32 height)
|
||||
{
|
||||
int stride = (4*width);
|
||||
u32 stride = (4*width);
|
||||
|
||||
int bytes = (stride*height) + sizeof(hdr);
|
||||
u32 bytes = (stride*height) + sizeof(hdr);
|
||||
|
||||
bytes = (bytes+3)&(~3);
|
||||
|
||||
@@ -54,13 +54,13 @@ wxBitmap wxBitmapFromMemoryRGBA(const unsigned char* data, int width, int height
|
||||
|
||||
u8 *pixelData = pdata + sizeof(hdr);
|
||||
|
||||
for (int y=0;y<height;y++)
|
||||
for (u32 y=0;y<height;y++)
|
||||
{
|
||||
memcpy(pixelData+y*stride,data+(height-y-1)*stride,stride);
|
||||
}
|
||||
|
||||
*(int*)(pdata+18) = width;
|
||||
*(int*)(pdata+22) = height;
|
||||
*(u32*)(pdata+18) = width;
|
||||
*(u32*)(pdata+22) = height;
|
||||
*(u32*)(pdata+34) = bytes-sizeof(hdr);
|
||||
|
||||
wxMemoryInputStream is(pdata, bytes);
|
||||
@@ -777,6 +777,9 @@ bool CMemcardManager::ReloadMemcard(const char *fileName, int card)
|
||||
memoryCard[card]->GetFreeBlocks(), DIRLEN - nFiles);
|
||||
t_Status[card]->SetLabel(wxLabel);
|
||||
|
||||
// Done so text doesn't overlap the UI.
|
||||
this->Fit();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -149,13 +149,11 @@ class CMemcardManager : public wxDialog
|
||||
: wxListCtrl(parent, id, pos, size, style)
|
||||
, __mcmSettings(_mcmSetngs)
|
||||
{
|
||||
Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(
|
||||
CMemcardListCtrl::OnRightClick));
|
||||
Bind(wxEVT_RIGHT_DOWN, &CMemcardListCtrl::OnRightClick, this);
|
||||
}
|
||||
~CMemcardListCtrl()
|
||||
{
|
||||
Disconnect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(
|
||||
CMemcardListCtrl::OnRightClick));
|
||||
Unbind(wxEVT_RIGHT_DOWN, &CMemcardListCtrl::OnRightClick, this);
|
||||
}
|
||||
_mcmSettings & __mcmSettings;
|
||||
bool prevPage,
|
||||
|
||||
@@ -24,9 +24,6 @@
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#define _connect_macro_(b, f, c, s) \
|
||||
(b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
#define NETPLAY_TITLEBAR "Dolphin NetPlay"
|
||||
|
||||
BEGIN_EVENT_TABLE(NetPlayDiag, wxFrame)
|
||||
@@ -86,7 +83,7 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
|
||||
m_connect_port_text = new wxTextCtrl(connect_tab, wxID_ANY, wxString::FromAscii(port.c_str()));
|
||||
|
||||
wxButton* const connect_btn = new wxButton(connect_tab, wxID_ANY, _("Connect"));
|
||||
_connect_macro_(connect_btn, NetPlaySetupDiag::OnJoin, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
connect_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlaySetupDiag::OnJoin, this);
|
||||
|
||||
wxStaticText* const alert_lbl = new wxStaticText(connect_tab, wxID_ANY,
|
||||
_("ALERT:\n\nNetPlay will currently only work properly when using the following settings:\n - Dual Core [OFF]\n - Audio Throttle [OFF]\n - DSP-HLE with \"Null Audio\" or DSP-LLE\n - Manually set the exact number of controllers that will be used to [Standard Controller]\n\nAll players should try to use the same Dolphin version and settings.\nDisable all memory cards or send them to all players before starting.\nWiimote support has not been implemented.\n\nYou must forward TCP port to host!!"),
|
||||
@@ -119,10 +116,10 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
|
||||
m_host_port_text = new wxTextCtrl(host_tab, wxID_ANY, wxString::FromAscii(port.c_str()));
|
||||
|
||||
wxButton* const host_btn = new wxButton(host_tab, wxID_ANY, _("Host"));
|
||||
_connect_macro_(host_btn, NetPlaySetupDiag::OnHost, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
host_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlaySetupDiag::OnHost, this);
|
||||
|
||||
m_game_lbox = new wxListBox(host_tab, wxID_ANY);
|
||||
_connect_macro_(m_game_lbox, NetPlaySetupDiag::OnHost, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, this);
|
||||
m_game_lbox->Bind(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, &NetPlaySetupDiag::OnHost, this);
|
||||
|
||||
std::istringstream ss(game_list->GetGameNames());
|
||||
std::string game;
|
||||
@@ -143,7 +140,7 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
|
||||
|
||||
// bottom row
|
||||
wxButton* const quit_btn = new wxButton(panel, wxID_ANY, _("Quit"));
|
||||
_connect_macro_(quit_btn, NetPlaySetupDiag::OnQuit, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
quit_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlaySetupDiag::OnQuit, this);
|
||||
|
||||
// main sizer
|
||||
wxBoxSizer* const main_szr = new wxBoxSizer(wxVERTICAL);
|
||||
@@ -257,7 +254,7 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game
|
||||
wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
|
||||
|
||||
if (is_hosting)
|
||||
_connect_macro_(m_game_btn, NetPlayDiag::OnChangeGame, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
m_game_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnChangeGame, this);
|
||||
else
|
||||
m_game_btn->Disable();
|
||||
|
||||
@@ -269,10 +266,10 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game
|
||||
|
||||
m_chat_msg_text = new wxTextCtrl(panel, wxID_ANY, wxEmptyString
|
||||
, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
|
||||
_connect_macro_(m_chat_msg_text, NetPlayDiag::OnChat, wxEVT_COMMAND_TEXT_ENTER, this);
|
||||
m_chat_msg_text->Bind(wxEVT_COMMAND_TEXT_ENTER, &NetPlayDiag::OnChat, this);
|
||||
|
||||
wxButton* const chat_msg_btn = new wxButton(panel, wxID_ANY, _("Send"));
|
||||
_connect_macro_(chat_msg_btn, NetPlayDiag::OnChat, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
chat_msg_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnChat, this);
|
||||
|
||||
wxBoxSizer* const chat_msg_szr = new wxBoxSizer(wxHORIZONTAL);
|
||||
chat_msg_szr->Add(m_chat_msg_text, 1);
|
||||
@@ -290,7 +287,7 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game
|
||||
if (is_hosting)
|
||||
{
|
||||
wxButton* const player_config_btn = new wxButton(panel, wxID_ANY, _("Configure Pads"));
|
||||
_connect_macro_(player_config_btn, NetPlayDiag::OnConfigPads, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
player_config_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnConfigPads, this);
|
||||
player_szr->Add(player_config_btn, 0, wxEXPAND | wxTOP, 5);
|
||||
}
|
||||
|
||||
@@ -300,23 +297,23 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game
|
||||
|
||||
// bottom crap
|
||||
wxButton* const quit_btn = new wxButton(panel, wxID_ANY, _("Quit"));
|
||||
_connect_macro_(quit_btn, NetPlayDiag::OnQuit, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
quit_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnQuit, this);
|
||||
|
||||
wxBoxSizer* const bottom_szr = new wxBoxSizer(wxHORIZONTAL);
|
||||
if (is_hosting)
|
||||
{
|
||||
wxButton* const start_btn = new wxButton(panel, wxID_ANY, _("Start"));
|
||||
_connect_macro_(start_btn, NetPlayDiag::OnStart, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
start_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnStart, this);
|
||||
bottom_szr->Add(start_btn);
|
||||
wxButton* const stop_btn = new wxButton(panel, wxID_ANY, _("Stop"));
|
||||
_connect_macro_(stop_btn, NetPlayDiag::OnStop, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
stop_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnStop, this);
|
||||
bottom_szr->Add(stop_btn);
|
||||
bottom_szr->Add(new wxStaticText(panel, wxID_ANY, _("Buffer:")), 0, wxLEFT | wxCENTER, 5 );
|
||||
wxSpinCtrl* const padbuf_spin = new wxSpinCtrl(panel, wxID_ANY, wxT("20")
|
||||
, wxDefaultPosition, wxSize(64, -1), wxSP_ARROW_KEYS, 0, 200, 20);
|
||||
_connect_macro_(padbuf_spin, NetPlayDiag::OnAdjustBuffer, wxEVT_COMMAND_SPINCTRL_UPDATED, this);
|
||||
padbuf_spin->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &NetPlayDiag::OnAdjustBuffer, this);
|
||||
wxButton* const padbuf_btn = new wxButton(panel, wxID_ANY, wxT("?"), wxDefaultPosition, wxSize(22, -1));
|
||||
_connect_macro_(padbuf_btn, NetPlayDiag::OnPadBuffHelp, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
padbuf_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnPadBuffHelp, this);
|
||||
bottom_szr->Add(padbuf_spin, 0, wxCENTER);
|
||||
bottom_szr->Add(padbuf_btn);
|
||||
}
|
||||
@@ -550,7 +547,7 @@ ChangeGameDiag::ChangeGameDiag(wxWindow* const parent, const CGameListCtrl* cons
|
||||
, m_game_name(game_name)
|
||||
{
|
||||
m_game_lbox = new wxListBox(this, wxID_ANY);
|
||||
_connect_macro_(m_game_lbox, ChangeGameDiag::OnPick, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, this);
|
||||
m_game_lbox->Bind(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, &ChangeGameDiag::OnPick, this);
|
||||
|
||||
// fill list with games
|
||||
std::istringstream ss(game_list->GetGameNames());
|
||||
@@ -559,7 +556,7 @@ ChangeGameDiag::ChangeGameDiag(wxWindow* const parent, const CGameListCtrl* cons
|
||||
m_game_lbox->Append(wxString(game.c_str(), *wxConvCurrent));
|
||||
|
||||
wxButton* const ok_btn = new wxButton(this, wxID_OK, _("Change"));
|
||||
_connect_macro_(ok_btn, ChangeGameDiag::OnPick, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
ok_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &ChangeGameDiag::OnPick, this);
|
||||
|
||||
wxBoxSizer* const szr = new wxBoxSizer(wxVERTICAL);
|
||||
szr->Add(m_game_lbox, 1, wxLEFT | wxRIGHT | wxTOP | wxEXPAND, 5);
|
||||
@@ -604,7 +601,7 @@ PadMapDiag::PadMapDiag(wxWindow* const parent, int map[])
|
||||
= new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 5, pad_names);
|
||||
pad_cbox->Select(m_mapping[i] + 1);
|
||||
|
||||
_connect_macro_(pad_cbox, PadMapDiag::OnAdjust, wxEVT_COMMAND_CHOICE_SELECTED, this);
|
||||
pad_cbox->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &PadMapDiag::OnAdjust, this);
|
||||
|
||||
wxBoxSizer* const v_szr = new wxBoxSizer(wxVERTICAL);
|
||||
v_szr->Add(new wxStaticText(this,wxID_ANY, pad_names[i + 1]), 1, wxALIGN_CENTER_HORIZONTAL);
|
||||
|
||||
@@ -54,8 +54,8 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
wxBoxSizer* const main_stick_box = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
static_bitmap_main = new wxStaticBitmap(this, ID_MAIN_STICK, TASInputDlg::CreateStickBitmap(128,128), wxDefaultPosition, wxDefaultSize);
|
||||
static_bitmap_main->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(TASInputDlg::OnMouseUpL), NULL, this);
|
||||
static_bitmap_main->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(TASInputDlg::OnMouseUpR), NULL, this);
|
||||
static_bitmap_main->Bind(wxEVT_LEFT_UP, &TASInputDlg::OnMouseUpL, this);
|
||||
static_bitmap_main->Bind(wxEVT_RIGHT_UP, &TASInputDlg::OnMouseUpR, this);
|
||||
wx_mainX_s = new wxSlider(this, ID_MAIN_X_SLIDER, 128, 0, 255, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL);
|
||||
wx_mainX_s->SetMinSize(wxSize(120,-1));
|
||||
wx_mainX_t = new wxTextCtrl(this, ID_MAIN_X_TEXT, wxT("128"), wxDefaultPosition, wxSize(40, 20));
|
||||
@@ -80,8 +80,8 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
wxBoxSizer* const c_stick_box = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
static_bitmap_c = new wxStaticBitmap(this, ID_C_STICK, TASInputDlg::CreateStickBitmap(128,128), wxDefaultPosition, wxDefaultSize);
|
||||
static_bitmap_c->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(TASInputDlg::OnMouseUpL), NULL, this);
|
||||
static_bitmap_c->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(TASInputDlg::OnMouseUpR), NULL, this);
|
||||
static_bitmap_c->Bind(wxEVT_LEFT_UP, &TASInputDlg::OnMouseUpL, this);
|
||||
static_bitmap_c->Bind(wxEVT_RIGHT_UP, &TASInputDlg::OnMouseUpR, this);
|
||||
wx_cX_s = new wxSlider(this, ID_C_X_SLIDER, 128, 0, 255, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL);
|
||||
wx_cX_s->SetMinSize(wxSize(120,-1));
|
||||
wx_cX_t = new wxTextCtrl(this, ID_C_X_TEXT, wxT("128"), wxDefaultPosition, wxSize(40, 20));
|
||||
@@ -120,29 +120,29 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
wxGridSizer* const buttons_grid = new wxGridSizer(4);
|
||||
|
||||
wx_a_button = new wxCheckBox(this,ID_A,_T("A"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_a_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_a_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_a_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_a_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_b_button = new wxCheckBox(this,ID_B,_T("B"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_b_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_b_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_b_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_b_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_x_button = new wxCheckBox(this,ID_X,_T("X"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_x_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_x_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_x_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_x_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_y_button = new wxCheckBox(this,ID_Y,_T("Y"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_y_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_y_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_y_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_y_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_l_button = new wxCheckBox(this,ID_L,_T("L"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_l_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_l_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_l_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_l_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_r_button = new wxCheckBox(this,ID_R,_T("R"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_r_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_r_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_r_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_r_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_z_button = new wxCheckBox(this,ID_Z,_T("Z"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_z_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_z_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_z_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_z_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_start_button = new wxCheckBox(this,ID_START,_T("Start"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_start_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_start_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_start_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_start_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
|
||||
buttons_grid->Add(wx_a_button,false);
|
||||
buttons_grid->Add(wx_b_button,false);
|
||||
@@ -157,17 +157,17 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
wxGridSizer* const buttons_dpad = new wxGridSizer(3);
|
||||
|
||||
wx_up_button = new wxCheckBox(this,ID_UP,_T("Up"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_up_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_up_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_up_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_up_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_right_button = new wxCheckBox(this,ID_RIGHT,_T("Right"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_right_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_right_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_right_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_right_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_down_button = new wxCheckBox(this,ID_DOWN,_T("Down"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_down_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_down_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_down_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_down_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
wx_left_button = new wxCheckBox(this,ID_LEFT,_T("Left"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr);
|
||||
wx_left_button->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurbo), NULL, this);
|
||||
wx_left_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(TASInputDlg::SetTurboFalse), NULL, this);
|
||||
wx_left_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this);
|
||||
wx_left_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this);
|
||||
|
||||
buttons_dpad->AddSpacer(20);
|
||||
buttons_dpad->Add(wx_up_button,false);
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
#include "IniFile.h"
|
||||
#include <string>
|
||||
|
||||
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler( f ), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
UDPConfigDiag::UDPConfigDiag(wxWindow * const parent, UDPWrapper * _wrp) :
|
||||
wxDialog(parent, -1, _("UDP Wiimote"), wxDefaultPosition, wxDefaultSize),
|
||||
wrp(_wrp)
|
||||
@@ -31,13 +29,13 @@ UDPConfigDiag::UDPConfigDiag(wxWindow * const parent, UDPWrapper * _wrp) :
|
||||
port_tbox = new wxTextCtrl(this, wxID_ANY, wxString::FromUTF8(wrp->port.c_str()));
|
||||
port_sizer->Add(port_tbox, 1, wxLEFT | wxEXPAND, 5);
|
||||
|
||||
_connect_macro_(enable, UDPConfigDiag::ChangeState, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
_connect_macro_(butt, UDPConfigDiag::ChangeUpdateFlags, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
_connect_macro_(accel, UDPConfigDiag::ChangeUpdateFlags, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
_connect_macro_(point, UDPConfigDiag::ChangeUpdateFlags, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
_connect_macro_(nun, UDPConfigDiag::ChangeUpdateFlags, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
_connect_macro_(nunaccel, UDPConfigDiag::ChangeUpdateFlags, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
_connect_macro_(port_tbox, UDPConfigDiag::ChangeState, wxEVT_COMMAND_TEXT_UPDATED, this);
|
||||
enable->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &UDPConfigDiag::ChangeState, this);
|
||||
butt->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &UDPConfigDiag::ChangeUpdateFlags, this);
|
||||
accel->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &UDPConfigDiag::ChangeUpdateFlags, this);
|
||||
point->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &UDPConfigDiag::ChangeUpdateFlags, this);
|
||||
nun->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &UDPConfigDiag::ChangeUpdateFlags, this);
|
||||
nunaccel->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &UDPConfigDiag::ChangeUpdateFlags, this);
|
||||
port_tbox->Bind(wxEVT_COMMAND_TEXT_UPDATED, &UDPConfigDiag::ChangeState, this);
|
||||
|
||||
enable->SetValue(wrp->udpEn);
|
||||
butt->SetValue(wrp->updButt);
|
||||
|
||||
@@ -11,8 +11,6 @@
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
#endif
|
||||
|
||||
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler( f ), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
extern CFrame* main_frame;
|
||||
|
||||
// template instantiation
|
||||
@@ -27,7 +25,7 @@ SettingCheckBox::BoolSetting(wxWindow* parent, const wxString& label, const wxSt
|
||||
{
|
||||
SetToolTip(tooltip);
|
||||
SetValue(m_setting ^ m_reverse);
|
||||
_connect_macro_(this, SettingCheckBox::UpdateValue, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &SettingCheckBox::UpdateValue, this);
|
||||
}
|
||||
|
||||
template <>
|
||||
@@ -38,7 +36,7 @@ SettingRadioButton::BoolSetting(wxWindow* parent, const wxString& label, const w
|
||||
{
|
||||
SetToolTip(tooltip);
|
||||
SetValue(m_setting ^ m_reverse);
|
||||
_connect_macro_(this, SettingRadioButton::UpdateValue, wxEVT_COMMAND_RADIOBUTTON_SELECTED, this);
|
||||
Bind(wxEVT_COMMAND_RADIOBUTTON_SELECTED, &SettingRadioButton::UpdateValue, this);
|
||||
}
|
||||
|
||||
SettingChoice::SettingChoice(wxWindow* parent, int &setting, const wxString& tooltip, int num, const wxString choices[], long style)
|
||||
@@ -47,7 +45,7 @@ SettingChoice::SettingChoice(wxWindow* parent, int &setting, const wxString& too
|
||||
{
|
||||
SetToolTip(tooltip);
|
||||
Select(m_setting);
|
||||
_connect_macro_(this, SettingChoice::UpdateValue, wxEVT_COMMAND_CHOICE_SELECTED, this);
|
||||
Bind(wxEVT_COMMAND_CHOICE_SELECTED, &SettingChoice::UpdateValue, this);
|
||||
}
|
||||
|
||||
void SettingChoice::UpdateValue(wxCommandEvent& ev)
|
||||
@@ -112,12 +110,12 @@ wxString dump_frames_desc = wxTRANSLATE("Dump all rendered frames to an AVI file
|
||||
#if !defined WIN32 && defined HAVE_LIBAV
|
||||
wxString use_ffv1_desc = wxTRANSLATE("Encode frame dumps using the FFV1 codec.\n\nIf unsure, leave this unchecked.");
|
||||
#endif
|
||||
wxString free_look_desc = wxTRANSLATE("This feature allows you to change the game's camera.\nHold the right mouse button and move the mouse to pan the camera around. Hold SHIFT and press one of the WASD keys to move the camera by a certain step distance (SHIFT+0 to move faster and SHIFT+9 to move slower). Press SHIFT+R to reset the camera.\n\nIf unsure, leave this unchecked.");
|
||||
wxString free_look_desc = wxTRANSLATE("This feature allows you to change the game's camera.\nMove the mouse while holding the right mouse button to pan and while holding the middle button to move.\nHold SHIFT and press one of the WASD keys to move the camera by a certain step distance (SHIFT+0 to move faster and SHIFT+9 to move slower). Press SHIFT+R to reset the camera.\n\nIf unsure, leave this unchecked.");
|
||||
wxString crop_desc = wxTRANSLATE("Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n\nIf unsure, leave this unchecked.");
|
||||
wxString opencl_desc = wxTRANSLATE("[EXPERIMENTAL]\nAims to speed up emulation by offloading texture decoding to the GPU using the OpenCL framework.\nHowever, right now it's known to cause texture defects in various games. Also it's slower than regular CPU texture decoding in most cases.\n\nIf unsure, leave this unchecked.");
|
||||
wxString dlc_desc = wxTRANSLATE("[EXPERIMENTAL]\nSpeeds up emulation a bit by caching display lists.\nPossibly causes issues though.\n\nIf unsure, leave this unchecked.");
|
||||
wxString omp_desc = wxTRANSLATE("Use multiple threads to decode textures.\nMight result in a speedup (especially on CPUs with more than two cores).\n\nIf unsure, leave this unchecked.");
|
||||
wxString hotkeys_desc = wxTRANSLATE("Allows toggling certain options via the hotkeys 3, 4, 5 and 6 within the emulation window.\n\nIf unsure, leave this unchecked.");
|
||||
wxString hotkeys_desc = wxTRANSLATE("Allows toggling certain options via the hotkeys 3 (Internal Resolution), 4 (Aspect Ratio), 5 (Copy EFB) and 6 (Fog) within the emulation window.\n\nIf unsure, leave this unchecked.");
|
||||
wxString ppshader_desc = wxTRANSLATE("Apply a post-processing effect after finishing a frame.\n\nIf unsure, select (off).");
|
||||
wxString cache_efb_copies_desc = wxTRANSLATE("Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\nSometimes also increases visual quality.\nIf you're experiencing any issues, try raising texture cache accuracy or disable this option.\n\nIf unsure, leave this unchecked.");
|
||||
wxString shader_errors_desc = wxTRANSLATE("Usually if shader compilation fails, an error message is displayed.\nHowever, one may skip the popups to allow interruption free gameplay by checking this option.\n\nIf unsure, leave this unchecked.");
|
||||
@@ -190,7 +188,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
||||
{
|
||||
vconfig.Load((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str());
|
||||
|
||||
Connect(wxID_ANY, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(VideoConfigDiag::OnUpdateUI), NULL, this);
|
||||
Bind(wxEVT_UPDATE_UI, &VideoConfigDiag::OnUpdateUI, this);
|
||||
|
||||
wxNotebook* const notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
@@ -217,7 +215,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
||||
choice_backend->AppendString(wxGetTranslation(wxString::FromAscii((*it)->GetName().c_str())));
|
||||
|
||||
choice_backend->SetStringSelection(wxGetTranslation(wxString::FromAscii(g_video_backend->GetName().c_str())));
|
||||
_connect_macro_(choice_backend, VideoConfigDiag::Event_Backend, wxEVT_COMMAND_CHOICE_SELECTED, this);
|
||||
choice_backend->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &VideoConfigDiag::Event_Backend, this);
|
||||
|
||||
szr_basic->Add(label_backend, 1, wxALIGN_CENTER_VERTICAL, 5);
|
||||
szr_basic->Add(choice_backend, 1, 0, 0);
|
||||
@@ -259,7 +257,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
||||
wxStaticText* const label_display_resolution = new wxStaticText(page_general, wxID_ANY, _("Fullscreen resolution:"));
|
||||
choice_display_resolution = new wxChoice(page_general, wxID_ANY, wxDefaultPosition, wxDefaultSize, res_list);
|
||||
RegisterControl(choice_display_resolution, wxGetTranslation(display_res_desc));
|
||||
_connect_macro_(choice_display_resolution, VideoConfigDiag::Event_DisplayResolution, wxEVT_COMMAND_CHOICE_SELECTED, this);
|
||||
choice_display_resolution->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &VideoConfigDiag::Event_DisplayResolution, this);
|
||||
|
||||
choice_display_resolution->SetStringSelection(wxString::FromAscii(SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution.c_str()));
|
||||
|
||||
@@ -389,7 +387,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
||||
else
|
||||
choice_ppshader->SetStringSelection(wxString::FromAscii(vconfig.sPostProcessingShader.c_str()));
|
||||
|
||||
_connect_macro_(choice_ppshader, VideoConfigDiag::Event_PPShader, wxEVT_COMMAND_CHOICE_SELECTED, this);
|
||||
choice_ppshader->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &VideoConfigDiag::Event_PPShader, this);
|
||||
|
||||
szr_enh->Add(new wxStaticText(page_enh, -1, _("Post-Processing Effect:")), 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||
szr_enh->Add(choice_ppshader);
|
||||
@@ -455,7 +453,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
||||
|
||||
// TODO: Use wxSL_MIN_MAX_LABELS or wxSL_VALUE_LABEL with wx 2.9.1
|
||||
wxSlider* const stc_slider = new wxSlider(page_hacks, wxID_ANY, 0, 0, 2, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_BOTTOM);
|
||||
_connect_macro_(stc_slider, VideoConfigDiag::Event_Stc, wxEVT_COMMAND_SLIDER_UPDATED, this);
|
||||
stc_slider->Bind(wxEVT_COMMAND_SLIDER_UPDATED, &VideoConfigDiag::Event_Stc, this);
|
||||
RegisterControl(stc_slider, wxGetTranslation(stc_desc));
|
||||
|
||||
if (vconfig.iSafeTextureCache_ColorSamples == 0) stc_slider->SetValue(0);
|
||||
@@ -556,7 +554,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
||||
{
|
||||
wxCheckBox* const cb_prog_scan = new wxCheckBox(page_advanced, wxID_ANY, _("Enable Progressive Scan"));
|
||||
RegisterControl(cb_prog_scan, wxGetTranslation(prog_scan_desc));
|
||||
_connect_macro_(cb_prog_scan, VideoConfigDiag::Event_ProgressiveScan, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
cb_prog_scan->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &VideoConfigDiag::Event_ProgressiveScan, this);
|
||||
if (Core::GetState() != Core::CORE_UNINITIALIZED)
|
||||
cb_prog_scan->Disable();
|
||||
|
||||
@@ -579,9 +577,9 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
|
||||
}
|
||||
|
||||
wxButton* const btn_close = new wxButton(this, wxID_OK, _("Close"), wxDefaultPosition);
|
||||
_connect_macro_(btn_close, VideoConfigDiag::Event_ClickClose, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
btn_close->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &VideoConfigDiag::Event_ClickClose, this);
|
||||
|
||||
Connect(wxID_ANY, wxEVT_CLOSE_WINDOW, wxCloseEventHandler(VideoConfigDiag::Event_Close), (wxObject*)0, this);
|
||||
Bind(wxEVT_CLOSE_WINDOW, &VideoConfigDiag::Event_Close, this);
|
||||
|
||||
wxBoxSizer* const szr_main = new wxBoxSizer(wxVERTICAL);
|
||||
szr_main->Add(notebook, 1, wxEXPAND | wxALL, 5);
|
||||
@@ -629,8 +627,8 @@ SettingRadioButton* VideoConfigDiag::CreateRadioButton(wxWindow* parent, const w
|
||||
wxControl* VideoConfigDiag::RegisterControl(wxControl* const control, const wxString& description)
|
||||
{
|
||||
ctrl_descs.insert(std::pair<wxWindow*,wxString>(control, description));
|
||||
control->Connect(wxID_ANY, wxEVT_ENTER_WINDOW, wxMouseEventHandler(VideoConfigDiag::Evt_EnterControl), NULL, this);
|
||||
control->Connect(wxID_ANY, wxEVT_LEAVE_WINDOW, wxMouseEventHandler(VideoConfigDiag::Evt_LeaveControl), NULL, this);
|
||||
control->Bind(wxEVT_ENTER_WINDOW, &VideoConfigDiag::Evt_EnterControl, this);
|
||||
control->Bind(wxEVT_LEAVE_WINDOW, &VideoConfigDiag::Evt_LeaveControl, this);
|
||||
return control;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
#include "HW/WiimoteReal/WiimoteReal.h"
|
||||
#include "Frame.h"
|
||||
|
||||
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
const wxString& ConnectedWiimotesString()
|
||||
{
|
||||
static wxString str;
|
||||
@@ -42,9 +40,9 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin
|
||||
|
||||
wiimote_label[i] = new wxStaticText(this, wxID_ANY, str);
|
||||
wiimote_source_ch[i] = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, sizeof(src_choices)/sizeof(*src_choices), src_choices);
|
||||
_connect_macro_(wiimote_source_ch[i], WiimoteConfigDiag::SelectSource, wxEVT_COMMAND_CHOICE_SELECTED, this);
|
||||
wiimote_source_ch[i]->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &WiimoteConfigDiag::SelectSource, this);
|
||||
wiimote_configure_bt[i] = new wxButton(this, config_bt_id, _("Configure"));
|
||||
_connect_macro_(wiimote_configure_bt[i], WiimoteConfigDiag::ConfigEmulatedWiimote, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
wiimote_configure_bt[i]->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &WiimoteConfigDiag::ConfigEmulatedWiimote, this);
|
||||
|
||||
m_orig_wiimote_sources[i] = g_wiimote_sources[i];
|
||||
wiimote_source_ch[i]->Select(m_orig_wiimote_sources[i]);
|
||||
@@ -69,11 +67,11 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin
|
||||
connected_wiimotes_txt = new wxStaticText(this, -1, ConnectedWiimotesString());
|
||||
|
||||
wxButton* const refresh_btn = new wxButton(this, -1, _("Refresh"), wxDefaultPosition);
|
||||
_connect_macro_(refresh_btn, WiimoteConfigDiag::RefreshRealWiimotes, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
refresh_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &WiimoteConfigDiag::RefreshRealWiimotes, this);
|
||||
|
||||
#ifdef _WIN32
|
||||
wxButton* const pairup_btn = new wxButton(this, -1, _("Pair Up"), wxDefaultPosition);
|
||||
_connect_macro_(pairup_btn, WiimoteConfigDiag::PairUpRealWiimotes, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
pairup_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &WiimoteConfigDiag::PairUpRealWiimotes, this);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -133,11 +131,11 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin
|
||||
WiimoteMotor->SetValue(SConfig::GetInstance().m_SYSCONF->GetData<bool>("BT.MOT"));
|
||||
WiimoteReconnectOnLoad->SetValue(SConfig::GetInstance().m_WiimoteReconnectOnLoad);
|
||||
|
||||
_connect_macro_(WiiSensBarPos, WiimoteConfigDiag::OnSensorBarPos, wxEVT_COMMAND_CHOICE_SELECTED, this);
|
||||
_connect_macro_(WiiSensBarSens, WiimoteConfigDiag::OnSensorBarSensitivity, wxEVT_COMMAND_SLIDER_UPDATED, this);
|
||||
_connect_macro_(WiimoteSpkVolume, WiimoteConfigDiag::OnSpeakerVolume, wxEVT_COMMAND_SLIDER_UPDATED, this);
|
||||
_connect_macro_(WiimoteMotor, WiimoteConfigDiag::OnMotor, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
_connect_macro_(WiimoteReconnectOnLoad, WiimoteConfigDiag::OnReconnectOnLoad, wxEVT_COMMAND_CHECKBOX_CLICKED, this);
|
||||
WiiSensBarPos->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &WiimoteConfigDiag::OnSensorBarPos, this);
|
||||
WiiSensBarSens->Bind(wxEVT_COMMAND_SLIDER_UPDATED, &WiimoteConfigDiag::OnSensorBarSensitivity, this);
|
||||
WiimoteSpkVolume->Bind(wxEVT_COMMAND_SLIDER_UPDATED, &WiimoteConfigDiag::OnSpeakerVolume, this);
|
||||
WiimoteMotor->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &WiimoteConfigDiag::OnMotor, this);
|
||||
WiimoteReconnectOnLoad->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &WiimoteConfigDiag::OnReconnectOnLoad, this);
|
||||
|
||||
|
||||
// "General Settings" layout
|
||||
@@ -175,8 +173,8 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin
|
||||
main_sizer->Add(general_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||
main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||
|
||||
Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(WiimoteConfigDiag::Save));
|
||||
Connect(wxID_CANCEL, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(WiimoteConfigDiag::Cancel));
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &WiimoteConfigDiag::Save, this, wxID_OK);
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &WiimoteConfigDiag::Cancel, this, wxID_CANCEL);
|
||||
|
||||
SetSizerAndFit(main_sizer);
|
||||
Center();
|
||||
@@ -207,8 +205,9 @@ void WiimoteConfigDiag::PairUpRealWiimotes(wxCommandEvent&)
|
||||
UpdateGUI();
|
||||
}
|
||||
else if (paired < 0)
|
||||
PanicAlertT("A supported bluetooth device was not found!\n"
|
||||
"(Only the Microsoft bluetooth stack is supported.)");
|
||||
PanicAlertT("A supported bluetooth device could not be found!\n"
|
||||
"If you are not using Microsoft's bluetooth stack "
|
||||
"you must manually pair your wiimotes and use only the \"Refresh\" button.");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,312 +0,0 @@
|
||||
/*
|
||||
Automatic generated header by:
|
||||
|
||||
wxInclude by Kim De Deyn, use --help for more information.
|
||||
Version 1.0, compiled at Sep 12 2007 17:26:17
|
||||
|
||||
Header: myheader
|
||||
Macros: no
|
||||
Const: yes
|
||||
*/
|
||||
|
||||
#ifndef _WXINCLUDE_MYHEADER_0_H_
|
||||
#define _WXINCLUDE_MYHEADER_0_H_
|
||||
|
||||
static const unsigned char Toolbar_Log_png[] = {
|
||||
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00,
|
||||
0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x18, 0x08, 0x06, 0x00, 0x00, 0x00, 0xE0,
|
||||
0x77, 0x3D, 0xF8, 0x00, 0x00, 0x05, 0xC0, 0x49, 0x44, 0x41,
|
||||
0x54, 0x78, 0x9C, 0xB5, 0x56, 0x79, 0x6C, 0x14, 0x75, 0x14,
|
||||
0xFE, 0x66, 0xF6, 0xE8, 0x5E, 0xED, 0x1E, 0x6D, 0x77, 0xDB,
|
||||
0xED, 0x1E, 0x3D, 0x96, 0x5E, 0x58, 0x5A, 0xDA, 0xD2, 0x42,
|
||||
0xA5, 0x35, 0x6D, 0x38, 0x24, 0xB6, 0x85, 0x42, 0x29, 0x06,
|
||||
0xAD, 0x78, 0x80, 0x5A, 0xA2, 0x26, 0x42, 0x62, 0x48, 0x10,
|
||||
0x83, 0x09, 0x68, 0x8C, 0x4D, 0x4A, 0x0C, 0x12, 0x45, 0x12,
|
||||
0x30, 0x2A, 0x04, 0xFF, 0x30, 0x8A, 0x04, 0x08, 0x06, 0x91,
|
||||
0x48, 0xC2, 0x65, 0x15, 0xA5, 0x45, 0x10, 0x28, 0x45, 0xE9,
|
||||
0x96, 0x76, 0xDB, 0xED, 0x76, 0x69, 0xF7, 0x9A, 0x99, 0x1D,
|
||||
0xDF, 0x0C, 0x52, 0xA9, 0x85, 0xF8, 0x8F, 0xFE, 0x92, 0x97,
|
||||
0xDF, 0xCC, 0xFC, 0x66, 0xBE, 0xF7, 0xDE, 0xF7, 0xBE, 0xF7,
|
||||
0x76, 0x81, 0xFF, 0x79, 0x29, 0x1E, 0x74, 0xF0, 0x7D, 0x3B,
|
||||
0xD8, 0xD6, 0x1A, 0x68, 0x1F, 0xAF, 0x41, 0xC6, 0x8A, 0xB9,
|
||||
0x28, 0x6D, 0xAE, 0xC2, 0xFC, 0xE6, 0xB9, 0x58, 0xD5, 0x34,
|
||||
0x1B, 0xF5, 0x8D, 0x15, 0xA8, 0xAF, 0x2F, 0xC7, 0x63, 0x0D,
|
||||
0x95, 0xC8, 0x6F, 0xAC, 0x82, 0x50, 0x3F, 0x0B, 0x03, 0x07,
|
||||
0xCF, 0x22, 0x7E, 0x3F, 0x1C, 0xF6, 0x9F, 0x0F, 0x7E, 0xDC,
|
||||
0x05, 0xC5, 0xD9, 0x1D, 0xC8, 0x65, 0x95, 0x78, 0x95, 0x51,
|
||||
0x33, 0xFB, 0x35, 0x49, 0xAA, 0xD3, 0x46, 0x9B, 0xF6, 0x98,
|
||||
0x35, 0x2B, 0xF9, 0x43, 0x6B, 0x66, 0xF2, 0xCB, 0x36, 0x97,
|
||||
0x69, 0xAD, 0xCD, 0x95, 0xD4, 0x96, 0xEE, 0x32, 0xB4, 0xE9,
|
||||
0x0D, 0xCA, 0xF6, 0x38, 0x8F, 0x13, 0xA2, 0x88, 0x77, 0xB6,
|
||||
0xBF, 0x08, 0xFD, 0xBF, 0x66, 0x70, 0x66, 0x27, 0x98, 0x78,
|
||||
0x0C, 0xAB, 0xE8, 0x72, 0x4F, 0x82, 0xD1, 0xD4, 0x9C, 0x9A,
|
||||
0x5F, 0x99, 0x9B, 0x51, 0xD2, 0x68, 0x70, 0x96, 0xAC, 0x80,
|
||||
0xBB, 0x74, 0x99, 0x6C, 0xAE, 0xE2, 0x7A, 0x64, 0xCE, 0x5C,
|
||||
0x00, 0x77, 0x51, 0x05, 0x12, 0x8D, 0x2C, 0xFA, 0x7B, 0xAE,
|
||||
0x29, 0xA3, 0x51, 0x71, 0x8E, 0x08, 0xE4, 0x2E, 0x2C, 0xC5,
|
||||
0xA1, 0x23, 0x9D, 0xE0, 0x1E, 0x98, 0x01, 0x17, 0x85, 0x9B,
|
||||
0xE3, 0xD0, 0x9E, 0xE8, 0x9C, 0xE6, 0xC8, 0x6B, 0x78, 0x0F,
|
||||
0x9E, 0xBA, 0x03, 0xB0, 0x15, 0x6E, 0x81, 0xDE, 0x3A, 0x1F,
|
||||
0x50, 0xA7, 0x22, 0x16, 0x19, 0x05, 0x17, 0x19, 0x02, 0x37,
|
||||
0xDE, 0x8B, 0x38, 0x1F, 0x40, 0xB2, 0x23, 0x1B, 0x6A, 0x8D,
|
||||
0x06, 0xE2, 0x1D, 0x72, 0x9A, 0x29, 0x93, 0x8E, 0xF6, 0xA7,
|
||||
0xA1, 0xBA, 0x17, 0x53, 0x79, 0xEF, 0x8D, 0xC0, 0xE1, 0x51,
|
||||
0x85, 0x4A, 0x61, 0x71, 0xCE, 0x5E, 0x07, 0x9D, 0xB9, 0x15,
|
||||
0xC1, 0xC1, 0x93, 0xB8, 0xDE, 0xF9, 0x11, 0x46, 0xFB, 0x4F,
|
||||
0x93, 0x73, 0x3F, 0x44, 0x21, 0x0E, 0x96, 0xB8, 0xD3, 0xEA,
|
||||
0x75, 0x30, 0x5B, 0x53, 0xA0, 0xD2, 0x6A, 0x11, 0x8B, 0xF1,
|
||||
0x88, 0x93, 0x03, 0x81, 0x52, 0xA0, 0x7D, 0x8D, 0x08, 0xE6,
|
||||
0xCC, 0xD6, 0x95, 0xE2, 0x9E, 0x8D, 0x7B, 0x21, 0x4C, 0xCA,
|
||||
0xE0, 0xC8, 0x5B, 0x60, 0x29, 0x83, 0x6A, 0xBD, 0xD5, 0x01,
|
||||
0x7D, 0x6A, 0x3D, 0xC6, 0x03, 0x9D, 0x38, 0xB5, 0xBF, 0x01,
|
||||
0x17, 0x8E, 0xEE, 0x85, 0xAF, 0x77, 0x18, 0xB1, 0x28, 0x8B,
|
||||
0xB8, 0xA0, 0x42, 0x34, 0x22, 0xC0, 0xD7, 0x37, 0x8C, 0xEB,
|
||||
0x17, 0x7B, 0x10, 0x1A, 0x8F, 0x41, 0xA3, 0xD3, 0x41, 0xA9,
|
||||
0x52, 0x41, 0xA5, 0x56, 0x42, 0xA1, 0x60, 0x40, 0x7E, 0xB6,
|
||||
0x12, 0x5C, 0xDA, 0x14, 0x8A, 0x14, 0x2A, 0x18, 0x63, 0x31,
|
||||
0x94, 0x19, 0x6C, 0xB9, 0x60, 0x60, 0x06, 0x17, 0x3E, 0x8D,
|
||||
0x9C, 0xB2, 0x2A, 0x34, 0xBC, 0xB6, 0x1E, 0x8B, 0x37, 0xAC,
|
||||
0xC3, 0xBC, 0x67, 0xDB, 0x50, 0xBD, 0xB2, 0x15, 0xD5, 0x2D,
|
||||
0x2D, 0x64, 0x4B, 0x51, 0x5C, 0x57, 0x8B, 0x14, 0x67, 0x16,
|
||||
0x8A, 0xAA, 0x2B, 0x51, 0x51, 0x37, 0x13, 0xE5, 0x55, 0x39,
|
||||
0x30, 0x99, 0xB5, 0x10, 0x04, 0x91, 0x23, 0xAA, 0xC4, 0x29,
|
||||
0x45, 0x7E, 0xA2, 0x0E, 0x56, 0xA2, 0x68, 0x63, 0xC6, 0x8C,
|
||||
0x79, 0x2A, 0x63, 0xFA, 0x2C, 0xA8, 0x54, 0x97, 0xA0, 0x37,
|
||||
0x25, 0xC1, 0xEF, 0xED, 0x43, 0xDF, 0xAF, 0x5D, 0x18, 0xB8,
|
||||
0x72, 0x89, 0x32, 0xE9, 0xC1, 0x60, 0x6F, 0x2F, 0x3D, 0xF3,
|
||||
0x82, 0xE7, 0x62, 0x14, 0xB9, 0x06, 0xA9, 0x0E, 0x3B, 0x2C,
|
||||
0xE9, 0x16, 0xE8, 0x35, 0x3C, 0x2E, 0x77, 0x7B, 0x31, 0x16,
|
||||
0xE4, 0xBE, 0x7D, 0x7D, 0x1F, 0x76, 0xDD, 0xC5, 0x65, 0xEE,
|
||||
0x5E, 0x7C, 0xB9, 0x09, 0x0F, 0xAB, 0x13, 0x70, 0xB2, 0xA4,
|
||||
0x69, 0x03, 0xD2, 0xF2, 0x9F, 0xC4, 0x85, 0x23, 0x2F, 0xE0,
|
||||
0xF2, 0xA9, 0x73, 0x08, 0x07, 0x63, 0x60, 0x29, 0x0C, 0x25,
|
||||
0x55, 0x8B, 0xE8, 0x87, 0x42, 0xA9, 0x90, 0x3F, 0x63, 0x88,
|
||||
0x0E, 0xA9, 0x1E, 0x46, 0x5B, 0x1A, 0xB2, 0x4B, 0x1E, 0x42,
|
||||
0x68, 0xB8, 0x1F, 0xDF, 0x7C, 0xFD, 0x93, 0x18, 0x0C, 0x08,
|
||||
0x9B, 0x36, 0xED, 0x93, 0x69, 0x9A, 0x9C, 0x41, 0x4B, 0x35,
|
||||
0x6A, 0x59, 0x15, 0x9A, 0xEC, 0x05, 0x73, 0xA0, 0xD1, 0x9B,
|
||||
0x70, 0xE9, 0xC4, 0x6E, 0xA8, 0xB5, 0x66, 0x38, 0x0B, 0x33,
|
||||
0xE1, 0x29, 0x2B, 0x86, 0x7B, 0x7A, 0x1E, 0x9C, 0x05, 0xB9,
|
||||
0xC8, 0x2A, 0x2A, 0xA0, 0x3D, 0x1F, 0x69, 0x59, 0xD3, 0xA0,
|
||||
0x33, 0x9A, 0x21, 0xB1, 0x91, 0x98, 0xA4, 0xC5, 0xF0, 0xAD,
|
||||
0x21, 0xF4, 0x5E, 0xF5, 0x89, 0x3C, 0x87, 0x9D, 0xC7, 0xBB,
|
||||
0xD0, 0x3D, 0xC5, 0xC1, 0xF2, 0x1A, 0xCC, 0x20, 0xE2, 0x9A,
|
||||
0xEC, 0x79, 0x95, 0xD0, 0x9B, 0x2D, 0xA4, 0xF1, 0x30, 0x3C,
|
||||
0x14, 0x99, 0x39, 0x3D, 0x8D, 0x0A, 0xA8, 0xA2, 0x02, 0x82,
|
||||
0xE4, 0xC8, 0x43, 0x14, 0x49, 0x1C, 0xF4, 0xA2, 0x96, 0xC0,
|
||||
0xD3, 0x3C, 0x79, 0x70, 0x14, 0x4C, 0x87, 0x42, 0x8C, 0xE2,
|
||||
0x5A, 0xD7, 0x55, 0xDC, 0xBC, 0x31, 0x1A, 0x27, 0xFE, 0x3F,
|
||||
0x25, 0x07, 0xBF, 0x4D, 0x91, 0x69, 0x5C, 0xB8, 0x23, 0x2B,
|
||||
0x46, 0xA9, 0x25, 0x2A, 0x18, 0x84, 0x03, 0xC3, 0xE8, 0xE9,
|
||||
0xFC, 0x19, 0xC3, 0xDE, 0x01, 0x84, 0xC7, 0x23, 0x04, 0x1E,
|
||||
0x27, 0x13, 0x26, 0x48, 0x4D, 0xD0, 0x69, 0x60, 0xB2, 0xDA,
|
||||
0x60, 0xCD, 0xCA, 0x41, 0xAA, 0x4D, 0x8F, 0x70, 0x58, 0xA0,
|
||||
0xBA, 0x40, 0x64, 0xD8, 0xC9, 0xBD, 0x35, 0x91, 0x41, 0x53,
|
||||
0x15, 0x8A, 0xE8, 0x70, 0x99, 0x3D, 0xB7, 0x00, 0x1A, 0x83,
|
||||
0x11, 0xE7, 0xBE, 0xDA, 0x83, 0xBE, 0x6B, 0x03, 0x60, 0x18,
|
||||
0x1E, 0xBA, 0x44, 0x03, 0x0C, 0xA6, 0x44, 0x24, 0x59, 0x92,
|
||||
0x64, 0xFD, 0x27, 0xA6, 0x58, 0xA0, 0x35, 0x18, 0xC8, 0xF1,
|
||||
0x18, 0xC9, 0xD9, 0x4F, 0xD9, 0xEA, 0xE0, 0xBB, 0x35, 0x02,
|
||||
0x6F, 0xDF, 0x6D, 0x49, 0x3D, 0x9F, 0x7D, 0xD7, 0x85, 0x2B,
|
||||
0x53, 0x1C, 0x2C, 0xAE, 0x42, 0x09, 0x05, 0xD7, 0x94, 0xEE,
|
||||
0xC9, 0x96, 0xB9, 0x8D, 0xF8, 0xAF, 0xC0, 0x55, 0x98, 0x8D,
|
||||
0x9C, 0xE2, 0x42, 0x38, 0x72, 0xB3, 0x90, 0x96, 0x99, 0x81,
|
||||
0x14, 0x07, 0x45, 0xEC, 0x76, 0xC2, 0xEE, 0xC9, 0x81, 0xA3,
|
||||
0x70, 0x06, 0x5C, 0x25, 0x15, 0xF4, 0x2C, 0x13, 0x52, 0xDD,
|
||||
0x47, 0x7D, 0x3E, 0x78, 0x6F, 0x8E, 0x30, 0x1C, 0x8F, 0x63,
|
||||
0x27, 0xBA, 0x71, 0x7E, 0x0A, 0x45, 0xC4, 0x2B, 0x1F, 0x8D,
|
||||
0x00, 0xD1, 0x31, 0x3F, 0xF1, 0xCD, 0x13, 0xA0, 0x83, 0x64,
|
||||
0x93, 0x00, 0xFF, 0xA0, 0x1F, 0x63, 0x23, 0x41, 0x70, 0xD4,
|
||||
0x24, 0x02, 0x59, 0x9C, 0x62, 0x54, 0x25, 0x68, 0xA0, 0xD4,
|
||||
0xE8, 0x69, 0x54, 0xB8, 0x61, 0xC9, 0xC8, 0x84, 0x36, 0xD9,
|
||||
0x0E, 0x9B, 0xFD, 0x06, 0xD5, 0xEA, 0x0F, 0x26, 0x1C, 0xE2,
|
||||
0x2A, 0x09, 0x6D, 0xF7, 0x14, 0x99, 0x7E, 0xBC, 0x1E, 0x65,
|
||||
0x34, 0x87, 0x7E, 0x98, 0x5E, 0xEE, 0x41, 0x45, 0xF3, 0x1A,
|
||||
0x5C, 0x3C, 0xFA, 0x09, 0x7A, 0xBA, 0x7B, 0x30, 0x16, 0x08,
|
||||
0xC9, 0x45, 0x65, 0x64, 0xA9, 0xB2, 0x44, 0x5F, 0xA2, 0xFC,
|
||||
0xBE, 0x20, 0x08, 0x34, 0x97, 0x42, 0xD4, 0xC9, 0x66, 0xD8,
|
||||
0x49, 0x5D, 0x0E, 0x97, 0x19, 0x07, 0xF6, 0x9E, 0xC4, 0xEF,
|
||||
0xBD, 0xC1, 0xAB, 0x24, 0x88, 0xCA, 0x37, 0x3F, 0x87, 0x5F,
|
||||
0x7A, 0x6F, 0xA2, 0x20, 0x14, 0x9C, 0x8F, 0xB6, 0xC8, 0x50,
|
||||
0x1F, 0x35, 0x51, 0x6C, 0x0C, 0x42, 0x9C, 0x81, 0x92, 0x1A,
|
||||
0x23, 0xBB, 0x38, 0x1F, 0x45, 0x35, 0x95, 0x98, 0xD3, 0x30,
|
||||
0x9F, 0x6C, 0x21, 0xCA, 0x17, 0xD4, 0x62, 0xD6, 0x22, 0xBA,
|
||||
0x5E, 0xB2, 0x04, 0x55, 0x2D, 0xAD, 0xC8, 0x9B, 0xFB, 0x08,
|
||||
0xF5, 0x42, 0x3A, 0x05, 0xA0, 0x86, 0xCB, 0x65, 0xA0, 0xDE,
|
||||
0x60, 0xB2, 0x09, 0xA7, 0xEE, 0x2E, 0xEE, 0x84, 0x03, 0x12,
|
||||
0xC9, 0x30, 0x05, 0x7A, 0xDE, 0x37, 0x18, 0x42, 0x7F, 0xF7,
|
||||
0x59, 0x64, 0x78, 0x3C, 0x28, 0x9C, 0x99, 0x05, 0xB7, 0x27,
|
||||
0x05, 0x46, 0x93, 0x02, 0x91, 0xE0, 0x08, 0x82, 0x43, 0x03,
|
||||
0x08, 0xDC, 0xBA, 0x29, 0x5B, 0xC8, 0xEF, 0x85, 0x96, 0x1D,
|
||||
0x43, 0xBA, 0x83, 0xA8, 0x4A, 0x4E, 0x80, 0xC8, 0x85, 0x60,
|
||||
0xB3, 0x4A, 0x72, 0x66, 0x58, 0xA2, 0xA5, 0x6D, 0xF3, 0x8A,
|
||||
0x3B, 0x53, 0x75, 0x82, 0x22, 0x69, 0x7D, 0xF0, 0x12, 0xDE,
|
||||
0x27, 0x47, 0x6B, 0x1D, 0x6E, 0x13, 0xF2, 0x8B, 0x5C, 0x08,
|
||||
0x0C, 0x0C, 0x60, 0xD0, 0xC7, 0xE1, 0xF6, 0xED, 0x18, 0x22,
|
||||
0x61, 0x0E, 0x3C, 0x8D, 0x4C, 0x51, 0x9A, 0x9A, 0x22, 0x75,
|
||||
0x31, 0xF1, 0xA0, 0x54, 0xAB, 0x61, 0xB6, 0xE8, 0x61, 0x49,
|
||||
0xD6, 0xC0, 0x9C, 0x24, 0x22, 0xE0, 0x1B, 0xA1, 0x0A, 0x07,
|
||||
0x08, 0x54, 0xE4, 0x09, 0xAE, 0x71, 0xF3, 0x7E, 0x1C, 0x9E,
|
||||
0xE4, 0x60, 0x47, 0x1B, 0x16, 0xD1, 0xF7, 0x87, 0x24, 0xB7,
|
||||
0x4A, 0x92, 0x46, 0x9C, 0x2A, 0xCA, 0xF3, 0x71, 0xA9, 0x47,
|
||||
0x64, 0x60, 0x9A, 0xD6, 0xF2, 0xEC, 0xE7, 0xFF, 0xDA, 0xA5,
|
||||
0x7B, 0xD9, 0x19, 0x2B, 0x39, 0x64, 0xA4, 0x41, 0x07, 0x81,
|
||||
0x17, 0x65, 0xC5, 0xD0, 0x6A, 0x20, 0x07, 0x07, 0x27, 0xFD,
|
||||
0x1E, 0xF0, 0x02, 0x8E, 0x33, 0x0C, 0xBE, 0x20, 0xB0, 0xA5,
|
||||
0x3C, 0x27, 0x48, 0xAF, 0xF5, 0x92, 0xB3, 0xC3, 0x74, 0xF4,
|
||||
0x0B, 0xF9, 0xF2, 0xD2, 0x1E, 0x26, 0x3C, 0x29, 0x28, 0x03,
|
||||
0x9D, 0x25, 0xD3, 0x5E, 0x40, 0xA0, 0xA5, 0x04, 0x5A, 0x44,
|
||||
0xD7, 0x16, 0xE9, 0x84, 0x91, 0x27, 0xB6, 0x3C, 0x8B, 0x8E,
|
||||
0xE2, 0x7E, 0xAB, 0x63, 0x35, 0x52, 0xC9, 0xB6, 0x6D, 0x5B,
|
||||
0x8D, 0x57, 0x3A, 0x9E, 0x83, 0xB3, 0xE3, 0x79, 0x28, 0x3B,
|
||||
0xD6, 0x80, 0x7D, 0xF7, 0x99, 0xBF, 0xE9, 0x7C, 0xBB, 0x15,
|
||||
0xCC, 0xD6, 0xA7, 0xC0, 0x6E, 0x59, 0x09, 0xE5, 0x1B, 0xCB,
|
||||
0x61, 0x22, 0xBE, 0xB3, 0xC9, 0x6A, 0xC9, 0x5A, 0xC9, 0x4A,
|
||||
0xC8, 0x1E, 0xF8, 0x67, 0xE2, 0x3F, 0x5F, 0x7F, 0x02, 0x1C,
|
||||
0xAC, 0x2A, 0x6C, 0xAB, 0x0A, 0x12, 0x89, 0x00, 0x00, 0x00,
|
||||
0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82
|
||||
};
|
||||
|
||||
static const unsigned char Toolbar_Zoom_png[] = {
|
||||
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00,
|
||||
0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x18, 0x08, 0x06, 0x00, 0x00, 0x00, 0xE0,
|
||||
0x77, 0x3D, 0xF8, 0x00, 0x00, 0x05, 0x1C, 0x49, 0x44, 0x41,
|
||||
0x54, 0x78, 0x9C, 0xB5, 0x95, 0x6B, 0x6C, 0x14, 0x55, 0x18,
|
||||
0x86, 0x9F, 0x99, 0x9D, 0x9D, 0xBD, 0x74, 0x77, 0xBB, 0xDB,
|
||||
0x42, 0x8B, 0xF4, 0x4A, 0x57, 0x28, 0x2D, 0xA4, 0x14, 0xB0,
|
||||
0x96, 0x0A, 0x04, 0xA1, 0x5C, 0x02, 0x96, 0x4B, 0x81, 0x6A,
|
||||
0x55, 0xAE, 0x82, 0xA0, 0x09, 0xC4, 0x00, 0x11, 0x03, 0x14,
|
||||
0x02, 0x05, 0x6F, 0x44, 0x40, 0x91, 0x10, 0xF1, 0x8F, 0x11,
|
||||
0x83, 0x31, 0x11, 0x0D, 0x04, 0x7E, 0x48, 0x10, 0x2C, 0x06,
|
||||
0x68, 0x2B, 0x77, 0xCB, 0x45, 0x2A, 0x45, 0xB1, 0xD4, 0x2D,
|
||||
0xDB, 0xB2, 0xD0, 0x6E, 0x69, 0x77, 0xBB, 0x97, 0xF1, 0x2C,
|
||||
0x0A, 0x88, 0x52, 0x08, 0x18, 0xDF, 0xE4, 0xCC, 0xEC, 0x9C,
|
||||
0xB3, 0xF9, 0x9E, 0xF3, 0x7D, 0xDF, 0x7B, 0x66, 0xE0, 0x7F,
|
||||
0x96, 0xAE, 0xC3, 0x95, 0xA5, 0x7B, 0x65, 0x06, 0x3C, 0x97,
|
||||
0x44, 0xCE, 0xE4, 0x71, 0xE4, 0x14, 0x2E, 0xA2, 0xFF, 0xB8,
|
||||
0xC5, 0xF4, 0x1B, 0x5B, 0x48, 0xDF, 0x31, 0x09, 0xF4, 0x1D,
|
||||
0xDD, 0x42, 0xF6, 0x48, 0x0F, 0x27, 0xBF, 0x09, 0x3F, 0x08,
|
||||
0x20, 0xDF, 0x73, 0xB6, 0xF4, 0x60, 0x8C, 0x58, 0x5A, 0x20,
|
||||
0x85, 0xE5, 0xC3, 0x06, 0x83, 0x69, 0x6B, 0x54, 0xB4, 0x63,
|
||||
0x9A, 0x2D, 0x36, 0x2E, 0xCF, 0x6C, 0xB5, 0x3F, 0xA3, 0xC8,
|
||||
0xCA, 0x5A, 0x42, 0xDA, 0x31, 0x34, 0x79, 0x0B, 0xD3, 0xD6,
|
||||
0xA7, 0x32, 0x73, 0xB3, 0xF4, 0x70, 0x80, 0xD2, 0xF2, 0x24,
|
||||
0x82, 0xDA, 0x97, 0x66, 0xA3, 0xF1, 0xBD, 0xFC, 0xAC, 0xB4,
|
||||
0x84, 0x35, 0xE3, 0x9F, 0x64, 0x4B, 0xF1, 0x20, 0xD6, 0x4D,
|
||||
0x1A, 0xC2, 0xA2, 0x82, 0x7C, 0x46, 0x3D, 0x3D, 0x8C, 0xCE,
|
||||
0x89, 0x69, 0x8A, 0x4E, 0x92, 0x66, 0x12, 0x0E, 0x95, 0xE1,
|
||||
0xF7, 0x0E, 0x66, 0xFA, 0x86, 0x0E, 0x21, 0x77, 0x03, 0x56,
|
||||
0x57, 0xD8, 0x09, 0x6B, 0x5B, 0x1C, 0x16, 0xCB, 0xB0, 0x95,
|
||||
0xC3, 0x33, 0xD9, 0x33, 0x35, 0x9D, 0x57, 0x72, 0x62, 0x68,
|
||||
0xBE, 0xD1, 0xC6, 0x96, 0x7D, 0x95, 0x54, 0xD4, 0x5C, 0xA2,
|
||||
0x57, 0x42, 0x02, 0xE3, 0x87, 0xE6, 0x93, 0xDC, 0x3B, 0x17,
|
||||
0xD9, 0x10, 0x95, 0x82, 0x16, 0xFE, 0x9C, 0xB6, 0x1B, 0xD9,
|
||||
0x0F, 0x06, 0xAC, 0xA9, 0x90, 0x68, 0xF7, 0x4F, 0x32, 0xC8,
|
||||
0xD2, 0xE8, 0x79, 0xB9, 0x29, 0xBC, 0x9E, 0x67, 0xA7, 0xB1,
|
||||
0x0D, 0x36, 0x1E, 0xF1, 0xB3, 0x6A, 0xCF, 0x39, 0x8E, 0x1E,
|
||||
0x3B, 0xC7, 0x81, 0xD3, 0xE7, 0xD9, 0x75, 0xB6, 0x86, 0x93,
|
||||
0xEE, 0x6B, 0x58, 0x92, 0xD3, 0xE8, 0x94, 0xD9, 0x0F, 0xBD,
|
||||
0xC9, 0x94, 0x20, 0x32, 0x59, 0xCE, 0xB8, 0x92, 0xE8, 0xFB,
|
||||
0x03, 0x9A, 0xAF, 0x5B, 0xA5, 0x80, 0x7F, 0x4E, 0x66, 0xBC,
|
||||
0x8D, 0x59, 0xD9, 0x0E, 0x7E, 0x69, 0x82, 0x4D, 0xC7, 0x42,
|
||||
0xE2, 0x1E, 0xC4, 0x6A, 0x10, 0xEB, 0x26, 0x15, 0x55, 0xD5,
|
||||
0xA3, 0x97, 0x25, 0x7C, 0xC1, 0x20, 0x61, 0x25, 0x84, 0xA3,
|
||||
0xBB, 0x13, 0x5B, 0x62, 0x0A, 0x92, 0x2C, 0x15, 0xA2, 0x85,
|
||||
0xEE, 0x99, 0xC5, 0x9D, 0xDA, 0x2D, 0xDC, 0x99, 0xA7, 0xE8,
|
||||
0xD5, 0xC3, 0xAF, 0x0E, 0xC9, 0x66, 0xE1, 0xC0, 0x78, 0x36,
|
||||
0x1C, 0x6A, 0xE4, 0xD0, 0xC5, 0x06, 0x11, 0x34, 0x4C, 0x75,
|
||||
0x6D, 0x1D, 0x57, 0xAF, 0xB8, 0x50, 0x4D, 0x26, 0xEC, 0xB1,
|
||||
0x9D, 0xD1, 0x24, 0x0D, 0x4B, 0xAC, 0x8D, 0x4E, 0xE9, 0x3D,
|
||||
0x68, 0xAC, 0xA9, 0xA1, 0xB6, 0x6C, 0x0F, 0x41, 0x6F, 0xF3,
|
||||
0x2A, 0x11, 0xEE, 0x2D, 0x76, 0xBD, 0xDD, 0xFE, 0x77, 0x80,
|
||||
0x72, 0xFB, 0x57, 0x28, 0x90, 0xA9, 0xE8, 0x14, 0x3A, 0x99,
|
||||
0x55, 0x4E, 0xB8, 0xFC, 0x6C, 0xDC, 0x7F, 0x04, 0x3C, 0x0D,
|
||||
0xA0, 0x0A, 0x27, 0x2B, 0x62, 0x18, 0x55, 0xDA, 0x7D, 0xAD,
|
||||
0xB8, 0x6B, 0xCE, 0x40, 0x4B, 0x33, 0x0D, 0xED, 0xED, 0x58,
|
||||
0xE3, 0x67, 0x10, 0xE5, 0x70, 0xA0, 0xD3, 0xE9, 0x08, 0x42,
|
||||
0x26, 0xB2, 0x2E, 0x92, 0xEB, 0x5D, 0x80, 0x3B, 0x25, 0x0A,
|
||||
0xF9, 0xD1, 0x82, 0x7E, 0x9A, 0xFC, 0x41, 0x5C, 0x2D, 0x22,
|
||||
0x9E, 0x4E, 0x42, 0x31, 0x1B, 0xD0, 0xEB, 0x15, 0x24, 0x4D,
|
||||
0x83, 0x40, 0x00, 0xD1, 0x50, 0x51, 0x0E, 0x3D, 0x18, 0xCC,
|
||||
0x98, 0x6C, 0x16, 0x8C, 0x46, 0x3D, 0x9A, 0x16, 0x12, 0xD3,
|
||||
0x62, 0x5D, 0x92, 0xA2, 0xC4, 0xF8, 0x97, 0x2B, 0xEF, 0x4C,
|
||||
0x84, 0x83, 0xEE, 0xA0, 0xBF, 0x95, 0x73, 0xEE, 0x66, 0x51,
|
||||
0x5F, 0x23, 0xBD, 0x7B, 0x74, 0x27, 0x3D, 0xBD, 0x27, 0xCE,
|
||||
0xB4, 0xEE, 0x58, 0xCC, 0xA6, 0x9B, 0xBB, 0x56, 0xC4, 0x4E,
|
||||
0xE3, 0xD2, 0x33, 0x48, 0x1F, 0x36, 0x84, 0x01, 0x33, 0x8B,
|
||||
0x70, 0x24, 0x74, 0xA1, 0xB5, 0xD1, 0x4D, 0x28, 0x18, 0x88,
|
||||
0x00, 0xAA, 0xFF, 0xB9, 0xFB, 0x88, 0xEE, 0x9C, 0xE4, 0xAC,
|
||||
0xD1, 0xCD, 0x9A, 0x14, 0x9E, 0xD1, 0x26, 0xF6, 0x9D, 0x9A,
|
||||
0x94, 0x48, 0xAB, 0xA2, 0x60, 0x16, 0xE9, 0x47, 0xEA, 0x7E,
|
||||
0xB5, 0xFE, 0x77, 0x7C, 0xF5, 0x97, 0x51, 0xAC, 0x56, 0x32,
|
||||
0x9E, 0xEA, 0x4F, 0xD6, 0xA0, 0x9E, 0xD8, 0xE2, 0xED, 0xB8,
|
||||
0x5C, 0xAD, 0xD4, 0x55, 0x1E, 0xA4, 0xD5, 0xED, 0x85, 0xB6,
|
||||
0x2E, 0xCB, 0x38, 0x5E, 0x78, 0x81, 0x96, 0x0F, 0x3B, 0x68,
|
||||
0xF2, 0xF3, 0xEB, 0x74, 0x44, 0x45, 0x6D, 0x96, 0x8D, 0xC6,
|
||||
0x39, 0x39, 0x39, 0xB9, 0x24, 0x39, 0xBB, 0xE1, 0x11, 0x25,
|
||||
0x93, 0x45, 0x09, 0x7E, 0xDC, 0x5F, 0x86, 0xFB, 0xDB, 0xEF,
|
||||
0x30, 0x67, 0x65, 0x30, 0x62, 0xD6, 0xB3, 0x38, 0x12, 0x63,
|
||||
0xB9, 0x54, 0x17, 0xE4, 0x42, 0x65, 0x39, 0x75, 0x07, 0x2A,
|
||||
0xB1, 0xF8, 0x7F, 0x63, 0xAC, 0xE3, 0x68, 0xBF, 0x6D, 0x9F,
|
||||
0x96, 0x9F, 0xE8, 0xD8, 0x45, 0x11, 0x4D, 0xDF, 0xD8, 0x07,
|
||||
0x59, 0x2A, 0x37, 0xD8, 0x1D, 0xA6, 0x9E, 0xFD, 0xFB, 0x13,
|
||||
0x9D, 0x9A, 0x8C, 0xCD, 0x66, 0xC2, 0x73, 0xB9, 0x96, 0xFA,
|
||||
0x53, 0x55, 0xD8, 0x53, 0x13, 0x49, 0xCA, 0xCE, 0xE2, 0xDA,
|
||||
0x75, 0x1F, 0xBF, 0x1E, 0x3F, 0x8E, 0xEB, 0xF0, 0x0F, 0x04,
|
||||
0x3C, 0x7A, 0x66, 0x24, 0x7F, 0xC4, 0x84, 0xE8, 0x33, 0x15,
|
||||
0xAA, 0x89, 0x97, 0xC6, 0xAC, 0xE2, 0x5C, 0xC7, 0x80, 0x88,
|
||||
0xA6, 0xAC, 0x9F, 0x2F, 0x1A, 0xB2, 0x51, 0x1F, 0x6D, 0x25,
|
||||
0x3E, 0xAD, 0x07, 0xD1, 0x09, 0x89, 0x44, 0x75, 0x72, 0xA0,
|
||||
0x18, 0x0D, 0x04, 0xDB, 0x7C, 0x34, 0xB9, 0xEA, 0xB9, 0x7A,
|
||||
0xF1, 0x3C, 0xD7, 0xCE, 0xFE, 0x4C, 0xA8, 0xDA, 0x4B, 0xFE,
|
||||
0x58, 0x2B, 0x1F, 0xBF, 0x70, 0x84, 0x86, 0xEF, 0xBF, 0xC6,
|
||||
0x5D, 0xC7, 0x01, 0xA2, 0x18, 0x33, 0xEE, 0x0D, 0x5A, 0x3B,
|
||||
0x06, 0x30, 0x50, 0xA2, 0x78, 0xEC, 0x42, 0x71, 0x70, 0xDE,
|
||||
0x95, 0x84, 0xFF, 0x54, 0x8B, 0x45, 0x98, 0xC6, 0x84, 0x22,
|
||||
0xAC, 0x1A, 0xF0, 0xF9, 0xF1, 0x79, 0x5B, 0x08, 0xD4, 0xDF,
|
||||
0x80, 0x1B, 0x32, 0xA3, 0x72, 0x3D, 0x7C, 0x30, 0x75, 0x27,
|
||||
0xE9, 0x7D, 0x26, 0xE2, 0xBD, 0xE2, 0xE1, 0xC8, 0xB6, 0x4F,
|
||||
0xF0, 0x36, 0x85, 0x97, 0x4C, 0x28, 0xE5, 0x9D, 0xFB, 0x00,
|
||||
0xFE, 0xD2, 0xE4, 0xD5, 0x05, 0xC2, 0x59, 0xF3, 0xC5, 0x6B,
|
||||
0x60, 0x24, 0x11, 0x9B, 0x12, 0x12, 0x36, 0x15, 0x9E, 0x68,
|
||||
0x57, 0x48, 0x89, 0xF1, 0x33, 0x77, 0xB8, 0x9D, 0x19, 0x43,
|
||||
0x9B, 0xE8, 0xA2, 0x6C, 0xA5, 0x45, 0x0E, 0x61, 0xED, 0xFA,
|
||||
0x26, 0xD5, 0x7B, 0x37, 0x71, 0xBA, 0xEC, 0x64, 0x53, 0x5B,
|
||||
0x50, 0x1B, 0x3C, 0x65, 0x2D, 0x55, 0x91, 0x30, 0x4A, 0x87,
|
||||
0x80, 0xED, 0xCB, 0x77, 0x33, 0xA1, 0x44, 0xBC, 0x96, 0x49,
|
||||
0x17, 0x16, 0xEC, 0x01, 0x71, 0xBA, 0xC7, 0xB4, 0xD3, 0xDD,
|
||||
0x9E, 0x50, 0x0E, 0xCD, 0x1D, 0x9C, 0x6C, 0xB3, 0xBD, 0x9C,
|
||||
0x37, 0x42, 0x9C, 0xEA, 0x38, 0x3C, 0xAE, 0x01, 0x22, 0xAB,
|
||||
0xAF, 0xC4, 0xDF, 0x3E, 0xA3, 0xB3, 0xB3, 0x1F, 0x4A, 0xC5,
|
||||
0xD9, 0x68, 0x9F, 0xDB, 0x3F, 0x4F, 0x44, 0x98, 0x7B, 0x7F,
|
||||
0x40, 0x44, 0x3B, 0xD6, 0xB8, 0xC4, 0x35, 0x32, 0xCA, 0x22,
|
||||
0x8F, 0xAF, 0x0D, 0xC7, 0x18, 0xB4, 0x10, 0xA3, 0xB8, 0xAD,
|
||||
0xB3, 0xCE, 0x57, 0x25, 0xD1, 0xCB, 0x6C, 0x17, 0x87, 0x37,
|
||||
0x4D, 0xF4, 0x26, 0x03, 0x4F, 0xF5, 0x29, 0xEC, 0x09, 0x71,
|
||||
0xE8, 0x2D, 0x66, 0x7C, 0xB5, 0xFE, 0x89, 0xB7, 0x00, 0xF7,
|
||||
0xFD, 0x58, 0xDC, 0x4B, 0x25, 0x05, 0xF4, 0x96, 0x54, 0x69,
|
||||
0x47, 0x97, 0xD4, 0x14, 0x67, 0x7E, 0xC1, 0x30, 0xBA, 0x26,
|
||||
0x77, 0xE5, 0xBA, 0xEB, 0x0C, 0x5E, 0xF7, 0x31, 0xE2, 0xBA,
|
||||
0xA5, 0x51, 0xBE, 0xEF, 0x0C, 0x3F, 0x55, 0x35, 0xB0, 0x78,
|
||||
0xEB, 0x9F, 0xB1, 0x1F, 0x1A, 0x70, 0x13, 0x52, 0xC8, 0x6C,
|
||||
0x9D, 0x41, 0xDD, 0x94, 0xF2, 0xB8, 0xD3, 0x90, 0x93, 0x97,
|
||||
0x81, 0xC3, 0xDA, 0x26, 0xAA, 0xD8, 0x4C, 0x93, 0xD7, 0x4F,
|
||||
0xD9, 0xEE, 0x2A, 0x1A, 0x3D, 0xFE, 0xC0, 0x8A, 0x2F, 0x50,
|
||||
0x1F, 0x19, 0xB0, 0x6C, 0x22, 0xAA, 0x2C, 0x53, 0xA2, 0xA8,
|
||||
0xA6, 0x92, 0x98, 0xCE, 0x31, 0x52, 0x9A, 0xD3, 0x8E, 0x6A,
|
||||
0x94, 0x38, 0x7F, 0xEA, 0x22, 0x0D, 0x57, 0x5A, 0x45, 0x3F,
|
||||
0x58, 0x50, 0xBA, 0x9D, 0xF7, 0x1F, 0x25, 0xF6, 0x6D, 0xAD,
|
||||
0x28, 0x42, 0x5D, 0x59, 0x24, 0xBD, 0x58, 0x5A, 0xAC, 0xBF,
|
||||
0xB8, 0xAA, 0xD8, 0xA8, 0xAD, 0x28, 0x52, 0xB4, 0xE5, 0x93,
|
||||
0xA8, 0x5B, 0x31, 0x89, 0xD9, 0xE2, 0xAE, 0xFE, 0xA7, 0xE0,
|
||||
0xB7, 0x54, 0x3A, 0x19, 0x69, 0x49, 0x01, 0xCE, 0xA5, 0xE3,
|
||||
0x99, 0xB2, 0xAC, 0x90, 0xA9, 0x25, 0x13, 0x71, 0xAE, 0x2C,
|
||||
0xBA, 0xFB, 0x33, 0xFC, 0x07, 0x07, 0x66, 0xCF, 0x92, 0x85,
|
||||
0x17, 0xB4, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E,
|
||||
0x44, 0xAE, 0x42, 0x60, 0x82
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,303 +0,0 @@
|
||||
static const unsigned char toolbar_browse_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, 0x87, 0x00, 0x00, 0x00,
|
||||
0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
|
||||
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b,
|
||||
0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x25, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
|
||||
0x72, 0x65, 0x00, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x6d, 0x65, 0x64, 0x69,
|
||||
0x61, 0x20, 0x46, 0x69, 0x72, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20,
|
||||
0x4d, 0x58, 0x20, 0x32, 0x30, 0x30, 0x34, 0x87, 0x76, 0xac, 0xcf, 0x00,
|
||||
0x00, 0x00, 0x14, 0x74, 0x45, 0x58, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x00, 0x39, 0x2f, 0x37,
|
||||
0x2f, 0x30, 0x34, 0x6b, 0xeb, 0x0c, 0x3b, 0x00, 0x00, 0x0d, 0x67, 0x49,
|
||||
0x44, 0x41, 0x54, 0x78, 0x9c, 0xd5, 0x9a, 0x6b, 0x6c, 0x5c, 0xd7, 0x71,
|
||||
0xc7, 0x7f, 0xe7, 0xdc, 0xe7, 0x3e, 0xb9, 0x94, 0x44, 0xbd, 0x2c, 0x59,
|
||||
0xb4, 0x1d, 0x07, 0xae, 0x15, 0xcb, 0x8c, 0x1b, 0x07, 0x89, 0xfb, 0x30,
|
||||
0x8d, 0xe6, 0x4b, 0x01, 0x07, 0x16, 0x90, 0x0f, 0xaa, 0x11, 0xb4, 0x92,
|
||||
0x11, 0x34, 0xfa, 0x50, 0xa0, 0x56, 0x9a, 0xf6, 0x83, 0xe1, 0xc6, 0xa2,
|
||||
0x13, 0xa4, 0x89, 0x61, 0x3b, 0xb6, 0xf3, 0x4d, 0x42, 0x52, 0x4b, 0x49,
|
||||
0x1c, 0x47, 0x68, 0x0b, 0xdb, 0x40, 0xd1, 0x3a, 0x68, 0x0a, 0x33, 0x45,
|
||||
0x5a, 0xa7, 0x8e, 0x1f, 0xb4, 0x1d, 0xcb, 0x0f, 0x89, 0x12, 0x25, 0x5a,
|
||||
0xa4, 0x44, 0x8a, 0xe2, 0x63, 0x49, 0xee, 0xee, 0xbd, 0xf7, 0xcc, 0xf4,
|
||||
0xc3, 0x5d, 0x52, 0x0f, 0x4b, 0xa2, 0x02, 0xb1, 0x2d, 0x32, 0xc0, 0xe1,
|
||||
0x1e, 0xec, 0xf2, 0x9e, 0xf9, 0xff, 0xcf, 0xcc, 0x9c, 0x33, 0x33, 0xbb,
|
||||
0x46, 0x55, 0xf9, 0x6d, 0x16, 0xfb, 0xff, 0x0d, 0xe0, 0x6a, 0xc5, 0xff,
|
||||
0xdf, 0x58, 0xf4, 0x5f, 0xbf, 0x65, 0x6a, 0x22, 0x3c, 0x29, 0xc2, 0x76,
|
||||
0x11, 0x10, 0x61, 0x40, 0x94, 0xaf, 0x7c, 0xe1, 0xeb, 0xda, 0xbf, 0xdc,
|
||||
0xba, 0xcc, 0x72, 0xbb, 0xd0, 0x4f, 0x1f, 0x31, 0x35, 0x11, 0x5e, 0x12,
|
||||
0xa1, 0x47, 0x04, 0x44, 0xa1, 0x4d, 0x02, 0x11, 0xee, 0x7b, 0xe7, 0x10,
|
||||
0xfb, 0xfa, 0x0e, 0x2c, 0x9f, 0xce, 0x65, 0x77, 0x21, 0x03, 0x4f, 0x1b,
|
||||
0xe8, 0x31, 0x06, 0xe2, 0xb2, 0x21, 0x8a, 0xcc, 0xb9, 0x1f, 0x3e, 0xfd,
|
||||
0x3b, 0x1f, 0x63, 0x2b, 0xec, 0x5d, 0x3e, 0x7d, 0xcb, 0x69, 0x81, 0x9f,
|
||||
0x3d, 0x6a, 0xee, 0x17, 0xe1, 0x49, 0x51, 0xe8, 0xea, 0x36, 0x74, 0xac,
|
||||
0xb6, 0x64, 0x2d, 0xc3, 0x89, 0xc3, 0xca, 0xd4, 0xb8, 0x20, 0xaa, 0x88,
|
||||
0x30, 0x25, 0xc2, 0x75, 0xf7, 0x7e, 0x4b, 0xa7, 0x96, 0x43, 0xe7, 0xb2,
|
||||
0x59, 0xe0, 0xa5, 0xc7, 0x4d, 0x0d, 0x43, 0x1f, 0x06, 0x56, 0x6c, 0x30,
|
||||
0x6c, 0xd8, 0x72, 0x17, 0xd7, 0xff, 0xe1, 0xbf, 0xd0, 0xfd, 0xfb, 0xdf,
|
||||
0xe3, 0xda, 0x5b, 0x36, 0x11, 0x95, 0x3c, 0xc0, 0x00, 0xd4, 0x80, 0xfb,
|
||||
0x97, 0xcb, 0x0a, 0xcb, 0x46, 0x40, 0xe1, 0x69, 0x94, 0x5a, 0x10, 0xc1,
|
||||
0x35, 0xb7, 0xdc, 0xc4, 0x9a, 0x9b, 0x1f, 0xc1, 0xfa, 0x1d, 0xc4, 0x95,
|
||||
0x1b, 0xd9, 0xf8, 0xbb, 0x7d, 0xac, 0xd9, 0x54, 0xc0, 0xd8, 0x45, 0x75,
|
||||
0xbb, 0x86, 0x0e, 0x7e, 0xb0, 0x2c, 0x7a, 0x97, 0x85, 0x40, 0xff, 0x13,
|
||||
0xa6, 0x17, 0xd8, 0x0a, 0x70, 0x6d, 0x0f, 0x74, 0xdd, 0xf8, 0x30, 0xf9,
|
||||
0x01, 0xe7, 0x33, 0x7d, 0xea, 0x75, 0x8e, 0xfc, 0xea, 0x51, 0x2a, 0xab,
|
||||
0x2a, 0x94, 0x3a, 0x42, 0x30, 0xb9, 0x15, 0xfe, 0x73, 0xff, 0xe3, 0xf7,
|
||||
0x2c, 0x87, 0x15, 0x96, 0x85, 0x80, 0x2a, 0xbb, 0x55, 0xa1, 0xdc, 0x05,
|
||||
0x6b, 0x37, 0xff, 0x05, 0x61, 0x71, 0x33, 0xe0, 0xd3, 0xac, 0x1f, 0x67,
|
||||
0x68, 0xe0, 0xbb, 0x38, 0xb1, 0x88, 0xad, 0xd1, 0xb5, 0xb1, 0x82, 0x35,
|
||||
0x8b, 0x27, 0xf7, 0xd6, 0xe5, 0xd0, 0x7d, 0xd5, 0x04, 0xfa, 0x9f, 0x30,
|
||||
0xbd, 0x28, 0xbd, 0x00, 0x1b, 0x7b, 0xaa, 0x14, 0x57, 0x7c, 0x89, 0x85,
|
||||
0xdd, 0x1f, 0x3e, 0xf8, 0x14, 0x4a, 0x08, 0xb6, 0x00, 0xb6, 0x4a, 0xa5,
|
||||
0xab, 0x83, 0xb8, 0x12, 0xa2, 0x18, 0x14, 0xb6, 0x8e, 0x0d, 0x8f, 0x5c,
|
||||
0xad, 0xfa, 0xab, 0x27, 0xa0, 0xca, 0x6e, 0x51, 0x08, 0x4a, 0xd0, 0x75,
|
||||
0xc3, 0x97, 0x30, 0x76, 0x05, 0xe0, 0x33, 0x31, 0xfc, 0xf7, 0x34, 0x67,
|
||||
0x8f, 0x81, 0x09, 0xc0, 0xc6, 0xe0, 0x95, 0xc0, 0xab, 0xd1, 0xb9, 0xb6,
|
||||
0x84, 0xb5, 0x1e, 0x28, 0xb5, 0x17, 0x9f, 0x7a, 0xb8, 0xe7, 0x6a, 0xdd,
|
||||
0xe8, 0xaa, 0x08, 0xbc, 0xf4, 0x1d, 0xd3, 0xab, 0x4a, 0xaf, 0x2a, 0x74,
|
||||
0xdf, 0xde, 0x41, 0x50, 0xde, 0x09, 0xf8, 0x88, 0x9b, 0x67, 0xfa, 0xd4,
|
||||
0x01, 0x8c, 0xb5, 0x18, 0xeb, 0x61, 0xbd, 0x00, 0xeb, 0x17, 0xb0, 0x7e,
|
||||
0x95, 0x55, 0x1b, 0x6a, 0x18, 0x7f, 0xd1, 0x8d, 0x6e, 0xbd, 0x2a, 0xf4,
|
||||
0xfc, 0x86, 0xa9, 0x44, 0xff, 0x77, 0x4c, 0x2f, 0x50, 0x53, 0xe8, 0x41,
|
||||
0x41, 0x94, 0x3b, 0x55, 0xc1, 0x0b, 0x61, 0xfd, 0xe6, 0x3f, 0xc6, 0x98,
|
||||
0x15, 0x80, 0x63, 0x7e, 0x72, 0x3f, 0xe8, 0x0c, 0xc6, 0xab, 0x61, 0x14,
|
||||
0x8c, 0xb5, 0x78, 0x9e, 0x8f, 0x31, 0x05, 0x82, 0x42, 0x99, 0x4a, 0x2d,
|
||||
0xe6, 0x4c, 0xa3, 0x85, 0xa2, 0x3b, 0x9e, 0xfe, 0xab, 0x9d, 0x9d, 0x22,
|
||||
0x3b, 0x07, 0x44, 0x98, 0xfa, 0xf3, 0xef, 0xea, 0x00, 0x40, 0xdf, 0x36,
|
||||
0x73, 0x9e, 0xde, 0xcb, 0xdd, 0xdc, 0x97, 0xbd, 0xc8, 0x7e, 0xf6, 0xa8,
|
||||
0xe9, 0x31, 0x86, 0x1d, 0xc0, 0x9d, 0xc6, 0xd0, 0xb3, 0xf0, 0xfe, 0xc2,
|
||||
0x23, 0xaa, 0xf9, 0xd8, 0xd0, 0x03, 0x37, 0x7d, 0xee, 0x17, 0x18, 0x7b,
|
||||
0x33, 0x2a, 0x67, 0x98, 0x18, 0xba, 0x9d, 0xb9, 0x69, 0x47, 0x63, 0xbe,
|
||||
0x46, 0x96, 0xae, 0xc4, 0x8f, 0x56, 0xe2, 0x07, 0x45, 0xac, 0x51, 0xc8,
|
||||
0x26, 0x38, 0x3d, 0x74, 0x94, 0x0f, 0xde, 0x18, 0x27, 0x4b, 0xb3, 0x0b,
|
||||
0x53, 0x8d, 0x85, 0xbc, 0xe9, 0x4d, 0x11, 0x06, 0x44, 0x78, 0xde, 0x16,
|
||||
0x57, 0x0f, 0xc5, 0xc5, 0x02, 0x23, 0x47, 0x8e, 0x5d, 0x94, 0xcc, 0x45,
|
||||
0x2d, 0xf0, 0xe2, 0xb7, 0xcd, 0x0e, 0x63, 0xd8, 0x6d, 0xa0, 0xdb, 0x18,
|
||||
0xc0, 0x80, 0x39, 0xe7, 0x39, 0x6d, 0xff, 0x51, 0xcd, 0xe7, 0x1b, 0x7b,
|
||||
0xb6, 0x60, 0xec, 0x27, 0x01, 0x47, 0x96, 0xbc, 0x08, 0xcc, 0xe0, 0xf9,
|
||||
0x05, 0x7c, 0x3f, 0x03, 0x4d, 0x30, 0xb4, 0x40, 0xbd, 0xfc, 0x08, 0x35,
|
||||
0x96, 0x8e, 0xae, 0x02, 0x7e, 0x18, 0x21, 0x02, 0x9a, 0xb9, 0xb3, 0x0b,
|
||||
0xe5, 0xd2, 0x83, 0xd2, 0x83, 0xb2, 0x1d, 0x78, 0x22, 0x9b, 0x1d, 0x1b,
|
||||
0x98, 0x99, 0x61, 0x7f, 0x31, 0x66, 0xdf, 0xa7, 0xef, 0xbe, 0x7b, 0x2a,
|
||||
0x8f, 0x99, 0x2f, 0x5f, 0xdc, 0x02, 0x7d, 0xdb, 0x0c, 0xb7, 0x6f, 0xe1,
|
||||
0x39, 0x63, 0xd8, 0x6a, 0x4c, 0x5b, 0x9f, 0x81, 0x6a, 0x17, 0x94, 0x56,
|
||||
0x40, 0x5c, 0x85, 0x4a, 0x17, 0xc4, 0xd5, 0xdf, 0xa3, 0xb2, 0xc6, 0x60,
|
||||
0x3d, 0x83, 0xb1, 0x9d, 0x60, 0xfe, 0x12, 0x63, 0xff, 0x00, 0x48, 0x69,
|
||||
0x4c, 0x7c, 0x86, 0x46, 0xfd, 0x20, 0x49, 0x23, 0xa6, 0xd5, 0x28, 0x92,
|
||||
0x26, 0x1d, 0x60, 0x6b, 0x18, 0x53, 0xc0, 0x5a, 0x8b, 0x71, 0x4d, 0x34,
|
||||
0x9d, 0x42, 0x9a, 0x93, 0x04, 0xd1, 0x6a, 0x20, 0x60, 0xae, 0x9e, 0x31,
|
||||
0x3b, 0x7e, 0x8a, 0x99, 0xf1, 0x71, 0xea, 0xb3, 0x86, 0xb9, 0xa6, 0x61,
|
||||
0x6e, 0xde, 0x30, 0xdf, 0x50, 0x44, 0x14, 0x27, 0x20, 0x4e, 0xa7, 0x44,
|
||||
0x78, 0xf8, 0xde, 0x07, 0xbe, 0xfa, 0x64, 0xf7, 0xcd, 0x8f, 0x7d, 0x94,
|
||||
0x40, 0xdf, 0x36, 0xc3, 0x6d, 0x9f, 0x60, 0xb7, 0x31, 0xf4, 0x59, 0x03,
|
||||
0x61, 0xd1, 0xb0, 0xee, 0x63, 0xb0, 0xea, 0xba, 0xf5, 0x94, 0x57, 0x7f,
|
||||
0x8e, 0xb0, 0x74, 0x07, 0x41, 0xe1, 0x0e, 0x8c, 0x5d, 0xd5, 0x36, 0x5c,
|
||||
0x70, 0xc1, 0x48, 0x11, 0xf7, 0x1a, 0x8d, 0xf1, 0xcf, 0x92, 0xb4, 0x2c,
|
||||
0x59, 0x2b, 0x20, 0x69, 0x46, 0x64, 0x69, 0x09, 0x91, 0x32, 0x86, 0x08,
|
||||
0x55, 0x83, 0x91, 0x0c, 0x49, 0xe7, 0xd1, 0x64, 0x8e, 0x35, 0x9b, 0xef,
|
||||
0xa7, 0xbc, 0xf6, 0x36, 0x20, 0x5d, 0x1c, 0x73, 0xa7, 0x8f, 0x30, 0x37,
|
||||
0x71, 0x9c, 0xe9, 0x91, 0xc3, 0x8c, 0x0d, 0x1e, 0x64, 0x62, 0xbc, 0xce,
|
||||
0xd0, 0xf1, 0x84, 0xc6, 0x7c, 0x86, 0x88, 0x22, 0xc2, 0xbe, 0x07, 0x9f,
|
||||
0xd9, 0x73, 0xdf, 0x82, 0x15, 0xce, 0x23, 0xf0, 0xc9, 0x9b, 0x99, 0x34,
|
||||
0x86, 0x5a, 0x47, 0x97, 0x65, 0xe3, 0x96, 0x2a, 0xab, 0x3f, 0xfe, 0x55,
|
||||
0xca, 0x5d, 0x5b, 0x2f, 0x01, 0x38, 0x40, 0xb2, 0x97, 0xdb, 0x9f, 0x19,
|
||||
0x54, 0x26, 0x49, 0xe7, 0x9f, 0x22, 0x6d, 0xfc, 0x02, 0xd7, 0x32, 0x64,
|
||||
0xa9, 0x47, 0x96, 0x04, 0x64, 0x49, 0x84, 0x4a, 0x84, 0x48, 0x00, 0x62,
|
||||
0xd0, 0xcc, 0x21, 0x59, 0x82, 0x24, 0x2d, 0xc2, 0xd2, 0xc7, 0x29, 0x76,
|
||||
0x7d, 0x8a, 0xb8, 0xba, 0x11, 0x11, 0x87, 0x8a, 0x23, 0xaa, 0x74, 0x12,
|
||||
0x57, 0x2b, 0x80, 0x03, 0xe0, 0xe4, 0x7b, 0xaf, 0xf2, 0xe1, 0xab, 0x3f,
|
||||
0xe5, 0xad, 0x81, 0x31, 0x4e, 0x9d, 0x6a, 0xe1, 0x9c, 0x22, 0xca, 0x5d,
|
||||
0x0f, 0x3d, 0x9b, 0xd7, 0x16, 0xfe, 0x02, 0x78, 0x00, 0x51, 0x6a, 0x06,
|
||||
0xc3, 0xea, 0x6e, 0x8f, 0xb5, 0x37, 0x3f, 0x42, 0xb1, 0xf3, 0x53, 0x0b,
|
||||
0x1e, 0x4f, 0xd6, 0x3a, 0x41, 0x63, 0xe6, 0x3f, 0xc8, 0x5a, 0xaf, 0x90,
|
||||
0xb5, 0xfe, 0x0b, 0xeb, 0x4f, 0xe3, 0x07, 0x82, 0xb5, 0x8a, 0xb1, 0xed,
|
||||
0x88, 0x16, 0x50, 0x97, 0xcf, 0x0d, 0x82, 0x25, 0xc3, 0x33, 0x8a, 0xe0,
|
||||
0x40, 0x3d, 0xc4, 0x81, 0x3a, 0x41, 0x52, 0x87, 0x4b, 0x1d, 0x33, 0x27,
|
||||
0xdf, 0x62, 0x62, 0xe8, 0x4d, 0x92, 0x96, 0x25, 0x49, 0x7c, 0x32, 0x17,
|
||||
0xa3, 0xb6, 0x8c, 0x1f, 0x95, 0xe8, 0x58, 0xbb, 0x91, 0x4a, 0xd7, 0x1a,
|
||||
0x3a, 0x56, 0xaf, 0xe1, 0xc6, 0xbb, 0xfe, 0x84, 0xb4, 0xf9, 0x7d, 0xc6,
|
||||
0xc6, 0x53, 0xd4, 0x39, 0x54, 0xb9, 0x13, 0x38, 0x4b, 0x00, 0x60, 0xc5,
|
||||
0xda, 0xd5, 0xa8, 0x8e, 0xe5, 0xc1, 0x89, 0x47, 0xb1, 0x73, 0x0b, 0xa0,
|
||||
0xb8, 0x6c, 0x96, 0x93, 0x87, 0xbe, 0xc7, 0xcc, 0xe9, 0x7f, 0xc3, 0xf3,
|
||||
0x1c, 0x9e, 0x9f, 0xe1, 0x05, 0x42, 0x10, 0x14, 0xf1, 0xc3, 0x0c, 0x3f,
|
||||
0x70, 0x58, 0xcf, 0x61, 0x8d, 0x00, 0x8a, 0x3a, 0xcd, 0x81, 0x8a, 0x82,
|
||||
0x3a, 0x0c, 0x8a, 0xc1, 0x61, 0xc4, 0xa2, 0x19, 0x48, 0x0a, 0x59, 0x0a,
|
||||
0x69, 0x4b, 0x49, 0x5b, 0x96, 0x24, 0xf5, 0xc8, 0x5c, 0x80, 0xd3, 0x18,
|
||||
0xf5, 0x8b, 0x78, 0x51, 0x95, 0xa0, 0x58, 0x21, 0x73, 0x4a, 0x7d, 0x62,
|
||||
0x9c, 0xb9, 0x89, 0x13, 0x68, 0x6b, 0x9a, 0x20, 0x0c, 0xf2, 0x80, 0xcc,
|
||||
0xf7, 0x73, 0x31, 0x15, 0x5f, 0x24, 0xe0, 0xf9, 0x1e, 0x22, 0xf4, 0x1b,
|
||||
0x43, 0x6f, 0x7d, 0x12, 0x26, 0x86, 0x5e, 0x60, 0x65, 0xf7, 0x17, 0x18,
|
||||
0x7a, 0xe3, 0x51, 0x66, 0xa7, 0x0f, 0x61, 0x6d, 0x8d, 0xcc, 0x09, 0x5e,
|
||||
0x96, 0x61, 0xb3, 0x94, 0x2c, 0x4b, 0x08, 0xb2, 0x84, 0x20, 0x4c, 0xf0,
|
||||
0x83, 0x04, 0xcf, 0x66, 0x18, 0xe3, 0x40, 0x04, 0x71, 0x8a, 0x66, 0x8a,
|
||||
0x4a, 0x7b, 0x64, 0xe0, 0x32, 0x90, 0xcc, 0x90, 0x25, 0x96, 0xac, 0x69,
|
||||
0x48, 0x5a, 0x3e, 0x69, 0x16, 0x90, 0xba, 0x08, 0x31, 0x05, 0x4c, 0x5c,
|
||||
0x24, 0x08, 0x2b, 0x84, 0x85, 0x32, 0x51, 0xa9, 0x4c, 0x18, 0x85, 0x18,
|
||||
0x23, 0x90, 0x29, 0xae, 0xe5, 0x98, 0x98, 0x4c, 0xf3, 0x75, 0x73, 0x03,
|
||||
0xf7, 0x9f, 0x47, 0xa0, 0xef, 0x80, 0xb2, 0xf7, 0x81, 0x6e, 0x44, 0x19,
|
||||
0x30, 0x68, 0xef, 0xe8, 0xa0, 0xa3, 0x58, 0xdd, 0x4b, 0xd2, 0xac, 0x33,
|
||||
0x37, 0x7d, 0x14, 0x6b, 0x2b, 0x60, 0x7d, 0x30, 0x06, 0x51, 0x87, 0xba,
|
||||
0x14, 0x68, 0x81, 0xce, 0x63, 0xb4, 0x01, 0xda, 0x00, 0xaf, 0x99, 0x9f,
|
||||
0xf3, 0xaa, 0xb9, 0x22, 0x07, 0x92, 0x81, 0x64, 0xb9, 0x45, 0x24, 0x03,
|
||||
0x97, 0x1a, 0xb2, 0xd4, 0xd0, 0x4a, 0x03, 0xd2, 0x2c, 0x22, 0xd3, 0x02,
|
||||
0xf8, 0x45, 0xac, 0x57, 0xc6, 0x0f, 0xcb, 0x84, 0xc5, 0x32, 0x61, 0xa1,
|
||||
0x48, 0x10, 0x45, 0x58, 0x0b, 0xb8, 0x26, 0xce, 0x35, 0x69, 0xd6, 0xa7,
|
||||
0x79, 0xf7, 0xdd, 0x79, 0x44, 0x04, 0x55, 0x86, 0xfa, 0x0e, 0xec, 0x79,
|
||||
0xf3, 0x23, 0x16, 0x18, 0x39, 0x72, 0x8c, 0xea, 0x0d, 0x3c, 0x6f, 0x0c,
|
||||
0xbb, 0x92, 0x24, 0xe3, 0xe8, 0xaf, 0xe7, 0x51, 0xfe, 0x09, 0xbf, 0xb8,
|
||||
0x0a, 0xf1, 0x3c, 0xac, 0x57, 0xc0, 0xd8, 0x00, 0x63, 0x0d, 0x18, 0x87,
|
||||
0xd1, 0x26, 0x4a, 0x84, 0x53, 0x1f, 0x9b, 0x81, 0xa8, 0x03, 0xe3, 0x00,
|
||||
0x87, 0x64, 0x2c, 0x12, 0x50, 0x77, 0x76, 0xee, 0x32, 0x43, 0x9a, 0x7a,
|
||||
0x64, 0x59, 0x80, 0xd3, 0x22, 0x78, 0x15, 0xbc, 0xa0, 0x42, 0x10, 0x57,
|
||||
0x09, 0x0a, 0x25, 0xc2, 0x28, 0xc6, 0x0f, 0x03, 0xac, 0x69, 0x83, 0x6f,
|
||||
0x4d, 0x31, 0x3b, 0x3e, 0xc2, 0x6b, 0xaf, 0x9e, 0x66, 0x7e, 0xae, 0x85,
|
||||
0x88, 0x02, 0xec, 0xe2, 0x1c, 0x39, 0x2f, 0x17, 0x8a, 0x37, 0x7c, 0xf6,
|
||||
0xe7, 0xaa, 0xf4, 0x8b, 0x53, 0x1a, 0xb3, 0x2d, 0x8e, 0x0c, 0x4c, 0xd3,
|
||||
0x9c, 0x99, 0x20, 0xb0, 0x33, 0x58, 0x93, 0x60, 0x3d, 0x8b, 0x17, 0xc4,
|
||||
0x04, 0x61, 0x11, 0x3f, 0x2c, 0xe3, 0x79, 0x65, 0xac, 0x29, 0xe6, 0xa7,
|
||||
0x8c, 0xf3, 0x11, 0x67, 0x91, 0xd4, 0x22, 0x69, 0x7b, 0xf7, 0xdd, 0x39,
|
||||
0xa3, 0x4d, 0x40, 0x9c, 0x87, 0x12, 0x83, 0x57, 0xc4, 0x8f, 0xaa, 0x44,
|
||||
0xa5, 0x1a, 0x51, 0xa9, 0x42, 0x5c, 0x2c, 0x11, 0x44, 0x21, 0x16, 0x87,
|
||||
0xa6, 0x75, 0xd2, 0xfa, 0x28, 0xe3, 0xc7, 0x86, 0xf8, 0xef, 0x97, 0x47,
|
||||
0x99, 0x3c, 0x3d, 0x87, 0x73, 0x02, 0xca, 0xbe, 0xdd, 0x3f, 0xd9, 0xf3,
|
||||
0xc2, 0x45, 0x09, 0xf4, 0x1d, 0x50, 0xd2, 0x56, 0x82, 0x08, 0xbb, 0x54,
|
||||
0x99, 0x12, 0xa7, 0x34, 0x1b, 0x4d, 0x0e, 0xbf, 0x71, 0x86, 0x13, 0xef,
|
||||
0x9e, 0x80, 0xd6, 0x28, 0x56, 0xcf, 0x60, 0x69, 0x60, 0x11, 0xac, 0x35,
|
||||
0x58, 0x6b, 0x81, 0xbc, 0x54, 0x54, 0x97, 0x03, 0x77, 0xa9, 0xb6, 0x5d,
|
||||
0xe7, 0x82, 0x21, 0x06, 0x71, 0x06, 0x55, 0x0f, 0x8c, 0x8f, 0xf5, 0x22,
|
||||
0xfc, 0x30, 0x26, 0x88, 0x63, 0xc2, 0x28, 0xc4, 0xb3, 0x8a, 0x71, 0xf3,
|
||||
0xb8, 0xb9, 0x31, 0xe6, 0x4e, 0x1d, 0xe1, 0x9d, 0x57, 0x07, 0x79, 0xe5,
|
||||
0x97, 0xa3, 0xd4, 0xa7, 0xe7, 0x70, 0xb9, 0xeb, 0x0c, 0xe8, 0xe2, 0xee,
|
||||
0x5f, 0xe2, 0x26, 0x06, 0x78, 0xe7, 0x97, 0x3b, 0x19, 0x78, 0x6e, 0xef,
|
||||
0x76, 0x0c, 0xfb, 0x16, 0x52, 0x2a, 0xeb, 0x79, 0x78, 0x61, 0xc4, 0x9a,
|
||||
0xee, 0x2a, 0x6b, 0xaf, 0x5b, 0x49, 0x50, 0xac, 0x60, 0x6c, 0x88, 0x41,
|
||||
0x30, 0xcc, 0x62, 0x64, 0x1a, 0x64, 0x06, 0x5c, 0x03, 0x95, 0x16, 0xe2,
|
||||
0xa4, 0x1d, 0xc0, 0x67, 0x5d, 0x28, 0x4b, 0x0c, 0x49, 0xe2, 0x93, 0x64,
|
||||
0x25, 0x9c, 0x56, 0xc0, 0xef, 0x24, 0x2a, 0xad, 0x24, 0x88, 0x8b, 0x78,
|
||||
0x56, 0x21, 0x6b, 0xd0, 0xaa, 0x4f, 0x72, 0xec, 0xc8, 0x38, 0xc7, 0x8e,
|
||||
0x4c, 0xd1, 0x6a, 0x34, 0x49, 0x33, 0x97, 0x5b, 0x4f, 0x19, 0x50, 0xa1,
|
||||
0xf7, 0xa1, 0x9f, 0xec, 0x99, 0x3e, 0x17, 0xfc, 0x45, 0x09, 0x00, 0xf4,
|
||||
0xff, 0xc3, 0xe7, 0xf9, 0xf0, 0x57, 0xff, 0x7c, 0x4f, 0x9b, 0x44, 0x8d,
|
||||
0x73, 0x89, 0x04, 0x31, 0xab, 0xae, 0x29, 0xb2, 0x62, 0x5d, 0x99, 0xda,
|
||||
0x9a, 0x02, 0x46, 0x53, 0x54, 0xe6, 0x40, 0xe6, 0x91, 0xb4, 0x89, 0xb8,
|
||||
0x0c, 0x75, 0x9a, 0x27, 0x7c, 0x92, 0xe7, 0x38, 0x2a, 0x8a, 0x4b, 0x21,
|
||||
0x4d, 0x7c, 0x52, 0x57, 0x44, 0x4c, 0x15, 0xbc, 0x0e, 0x82, 0x62, 0x27,
|
||||
0x81, 0xef, 0x31, 0x73, 0x66, 0x92, 0xb1, 0x91, 0xd3, 0x8c, 0x0c, 0xcf,
|
||||
0xd0, 0x9c, 0x6f, 0x90, 0x26, 0x59, 0x7e, 0xad, 0xe4, 0x7d, 0xa5, 0x01,
|
||||
0x11, 0x7a, 0x1f, 0x7a, 0xf6, 0xa3, 0xe0, 0x2f, 0x49, 0x20, 0x97, 0xbd,
|
||||
0xfc, 0xe0, 0x6f, 0x76, 0x6e, 0x32, 0xb0, 0x0f, 0xf2, 0x8a, 0x0b, 0x03,
|
||||
0x28, 0x58, 0xcf, 0xa7, 0x63, 0x75, 0x89, 0x2d, 0x77, 0x74, 0x21, 0xd9,
|
||||
0x2c, 0x92, 0xb5, 0x70, 0x2e, 0xc5, 0xa5, 0x0e, 0x97, 0x29, 0x22, 0x06,
|
||||
0xd4, 0xe4, 0x97, 0x99, 0x51, 0x10, 0x87, 0x3a, 0x21, 0x4d, 0x3c, 0x32,
|
||||
0x57, 0x40, 0x28, 0x83, 0x5f, 0xc5, 0x8b, 0xaa, 0xf8, 0x1e, 0x1c, 0x7a,
|
||||
0x67, 0x94, 0x91, 0xe3, 0x63, 0xb4, 0x9a, 0xad, 0x45, 0xe0, 0xed, 0xd7,
|
||||
0x7d, 0xa2, 0xec, 0xfa, 0xda, 0x8f, 0x2f, 0x0e, 0x7e, 0x09, 0x02, 0x67,
|
||||
0x89, 0xec, 0xff, 0xeb, 0x9d, 0x77, 0x02, 0x3b, 0xc8, 0xeb, 0xd8, 0x9a,
|
||||
0xb1, 0x96, 0x5b, 0xee, 0xd8, 0xc4, 0xad, 0x77, 0xef, 0x65, 0x76, 0xec,
|
||||
0x65, 0xce, 0x1c, 0xfd, 0x47, 0x66, 0x27, 0x0e, 0x93, 0x65, 0x16, 0x27,
|
||||
0x3e, 0xe0, 0x61, 0x8c, 0xc5, 0x1a, 0xc1, 0x23, 0xc3, 0x68, 0x0a, 0x2e,
|
||||
0x25, 0x4d, 0xc0, 0xb9, 0x10, 0x67, 0x4a, 0x60, 0x2b, 0xd8, 0xb0, 0x8c,
|
||||
0xef, 0x5b, 0x26, 0xc7, 0x4e, 0xf3, 0xf6, 0xc0, 0x79, 0x04, 0x86, 0x44,
|
||||
0xd9, 0xf5, 0xe0, 0x8f, 0xf6, 0xbc, 0x70, 0x29, 0xe0, 0x8b, 0x5e, 0xb1,
|
||||
0x04, 0x7a, 0xe0, 0xcb, 0x6c, 0x7f, 0x4c, 0x7f, 0xbe, 0xfd, 0xb1, 0x3d,
|
||||
0xf7, 0x2d, 0xe4, 0xec, 0xd6, 0x28, 0x9b, 0xb6, 0x7c, 0x1e, 0xeb, 0xc7,
|
||||
0x54, 0xd7, 0xdf, 0x45, 0xd2, 0xc8, 0x68, 0x36, 0x3c, 0x9a, 0xad, 0x98,
|
||||
0x56, 0x52, 0x26, 0x75, 0x1d, 0x08, 0x1d, 0x28, 0x55, 0x44, 0x4b, 0x88,
|
||||
0x44, 0x88, 0xf8, 0xed, 0x98, 0x10, 0x34, 0x75, 0x48, 0x96, 0xe6, 0x43,
|
||||
0xa0, 0x5a, 0x0d, 0x09, 0xa3, 0x76, 0x4e, 0x95, 0x5f, 0x25, 0x4f, 0x5e,
|
||||
0x09, 0xf8, 0x2b, 0x24, 0x90, 0xcb, 0xf7, 0x77, 0xed, 0xec, 0x51, 0xa5,
|
||||
0x26, 0x02, 0x6b, 0xaf, 0x29, 0xd1, 0xb1, 0xf1, 0x8f, 0x80, 0x94, 0xfa,
|
||||
0xd8, 0x6b, 0x4c, 0x9e, 0x3c, 0x46, 0xab, 0x15, 0x93, 0xb9, 0x0a, 0x6a,
|
||||
0x6b, 0xd8, 0x70, 0x25, 0x26, 0x5c, 0x85, 0x09, 0x3a, 0x51, 0xaf, 0x8c,
|
||||
0x52, 0x40, 0x24, 0x40, 0xc5, 0xe6, 0x97, 0x9c, 0x38, 0x54, 0x04, 0x11,
|
||||
0x87, 0x13, 0x30, 0x7e, 0xcc, 0xda, 0x75, 0x05, 0x8c, 0xf5, 0xf2, 0xb0,
|
||||
0x51, 0x7a, 0xaf, 0xb4, 0x6f, 0x74, 0xc5, 0x04, 0x44, 0xd9, 0xee, 0xda,
|
||||
0xcd, 0xda, 0x1b, 0x6e, 0xfb, 0x0c, 0x5e, 0x10, 0x03, 0x29, 0xc7, 0x5f,
|
||||
0x7f, 0x86, 0x24, 0x29, 0x90, 0x69, 0x19, 0xfc, 0x1a, 0x61, 0x61, 0x15,
|
||||
0x61, 0x69, 0x25, 0x51, 0xb1, 0x13, 0x2f, 0xac, 0x62, 0xfd, 0x12, 0x98,
|
||||
0x18, 0xd5, 0x10, 0xc9, 0xbc, 0xfc, 0x52, 0x13, 0x45, 0x55, 0x72, 0x5f,
|
||||
0xc7, 0x82, 0x5f, 0x64, 0xdd, 0xfa, 0x2a, 0x36, 0x08, 0xd0, 0x5c, 0xc7,
|
||||
0xd6, 0x1f, 0x7c, 0xe3, 0xf1, 0xda, 0x95, 0x14, 0xfc, 0x4b, 0xd6, 0xc4,
|
||||
0x0b, 0x99, 0xea, 0xfa, 0xd5, 0x79, 0x1f, 0xa7, 0x56, 0x83, 0x6b, 0x7a,
|
||||
0xee, 0x05, 0x52, 0xa6, 0x47, 0xdf, 0xe5, 0xf4, 0x87, 0xc7, 0x50, 0xaf,
|
||||
0x8a, 0x17, 0xd6, 0x08, 0x8b, 0x9d, 0x44, 0xe5, 0x6a, 0x9e, 0xc7, 0x68,
|
||||
0x4a, 0x26, 0x09, 0x99, 0x5a, 0x54, 0xfd, 0xdc, 0x02, 0x78, 0x08, 0x20,
|
||||
0x6a, 0x40, 0x0c, 0xa8, 0x45, 0xf1, 0xc0, 0x8b, 0x89, 0xca, 0x55, 0xd6,
|
||||
0xad, 0x9b, 0x66, 0x68, 0x30, 0x41, 0x33, 0x87, 0x2a, 0xf7, 0x00, 0xfb,
|
||||
0x97, 0xc2, 0x77, 0x59, 0x0b, 0x2c, 0x80, 0x5f, 0xbb, 0x8a, 0x1e, 0x11,
|
||||
0xba, 0x45, 0x0d, 0x37, 0xf6, 0x6c, 0x21, 0x2c, 0x77, 0x02, 0x29, 0xc3,
|
||||
0x6f, 0xff, 0x3b, 0xea, 0xd5, 0xf0, 0xe3, 0x95, 0xc4, 0xa5, 0x95, 0x14,
|
||||
0x2a, 0x9d, 0xc4, 0xa5, 0x0a, 0x41, 0x14, 0x63, 0x8d, 0xa3, 0x7e, 0x66,
|
||||
0x8a, 0x99, 0x89, 0x59, 0x54, 0x04, 0x35, 0x1e, 0x6a, 0x02, 0xc4, 0x84,
|
||||
0x28, 0xf9, 0xab, 0xf1, 0x42, 0x8c, 0x1f, 0x63, 0xc3, 0x02, 0x36, 0xaa,
|
||||
0x71, 0xed, 0xa6, 0x1a, 0xd6, 0x0f, 0x16, 0xe2, 0x60, 0xc7, 0x52, 0xe0,
|
||||
0x97, 0x24, 0x00, 0x50, 0xeb, 0x5a, 0x89, 0x28, 0x77, 0x8a, 0x42, 0x18,
|
||||
0x5a, 0xd6, 0x6f, 0xee, 0x05, 0x32, 0x9a, 0xf5, 0x71, 0x26, 0x46, 0x86,
|
||||
0x09, 0x8a, 0xab, 0x88, 0x2b, 0x2b, 0x28, 0x54, 0x6b, 0xc4, 0xa5, 0x12,
|
||||
0x41, 0xe0, 0x63, 0x24, 0x25, 0x9d, 0x3d, 0xcd, 0xd1, 0xf7, 0x47, 0x38,
|
||||
0xfc, 0xde, 0x38, 0x59, 0xd2, 0xc8, 0x41, 0x99, 0x30, 0xef, 0x11, 0xf9,
|
||||
0x05, 0x4c, 0x50, 0xc0, 0x86, 0x05, 0xbc, 0xa8, 0x80, 0x1f, 0x16, 0xf0,
|
||||
0xe2, 0x0a, 0xd5, 0x95, 0x35, 0xaa, 0x1d, 0x31, 0xed, 0x26, 0x70, 0x6f,
|
||||
0xdf, 0xb6, 0x9d, 0xdd, 0x57, 0x4d, 0x20, 0x88, 0x42, 0x44, 0xd8, 0x21,
|
||||
0x6a, 0x58, 0xb7, 0xa1, 0x83, 0x35, 0x37, 0x7d, 0x1a, 0x48, 0x19, 0x79,
|
||||
0xff, 0x15, 0xa2, 0xca, 0x2a, 0x0a, 0xd5, 0x1c, 0x7c, 0x54, 0x28, 0xe2,
|
||||
0xf9, 0x1e, 0x2a, 0x4d, 0xd2, 0xfa, 0x28, 0x47, 0xdf, 0x1b, 0x66, 0xe2,
|
||||
0xd4, 0x19, 0x66, 0xa6, 0xea, 0x0c, 0x1e, 0xaa, 0x83, 0x24, 0xa8, 0xf1,
|
||||
0xc0, 0x8b, 0x30, 0x7e, 0x11, 0x2f, 0x28, 0x12, 0x44, 0x25, 0xc2, 0xb8,
|
||||
0x44, 0x10, 0x17, 0x09, 0x0b, 0x45, 0xfc, 0x42, 0x95, 0xeb, 0xae, 0x2f,
|
||||
0xe1, 0xf9, 0xde, 0x82, 0xfa, 0x7b, 0xae, 0x9a, 0x80, 0xab, 0x8f, 0xd6,
|
||||
0x44, 0xe8, 0x51, 0x2c, 0xeb, 0xae, 0xeb, 0x06, 0x32, 0x20, 0x63, 0xf2,
|
||||
0xe4, 0x71, 0xe2, 0x4a, 0x07, 0x85, 0x72, 0x89, 0x30, 0x8e, 0xf0, 0x3c,
|
||||
0x20, 0x9d, 0x23, 0x9d, 0x3a, 0xc1, 0xe1, 0x5f, 0x0f, 0x72, 0xf4, 0x83,
|
||||
0x31, 0x92, 0x66, 0x42, 0x9a, 0xa4, 0x8c, 0x8c, 0xce, 0x33, 0x38, 0x38,
|
||||
0x8f, 0xc5, 0x61, 0xfd, 0x00, 0x2f, 0x88, 0xf0, 0xa3, 0x02, 0x7e, 0x5c,
|
||||
0x20, 0x88, 0x22, 0xbc, 0x30, 0xc0, 0x7a, 0x7e, 0x7e, 0xcb, 0x77, 0x15,
|
||||
0xb0, 0xde, 0x22, 0x81, 0x25, 0xfb, 0xa7, 0x4b, 0x12, 0x58, 0x70, 0x1f,
|
||||
0x55, 0x43, 0x10, 0x7a, 0x40, 0x4a, 0xfd, 0xf4, 0x30, 0x7e, 0xe0, 0x11,
|
||||
0xc6, 0x21, 0x7e, 0xe0, 0x61, 0x48, 0x71, 0xad, 0x19, 0x92, 0xa9, 0x61,
|
||||
0x0e, 0xbd, 0x35, 0xc8, 0xe0, 0xfb, 0xa7, 0x68, 0x36, 0x9a, 0x38, 0xd1,
|
||||
0x29, 0x11, 0x48, 0x93, 0x8c, 0xe1, 0xe1, 0x06, 0x47, 0x8e, 0xcc, 0xe1,
|
||||
0xd1, 0xc2, 0xf7, 0x0d, 0x41, 0xe8, 0xe3, 0x07, 0x7e, 0x9e, 0x14, 0xa2,
|
||||
0xa0, 0x19, 0xa0, 0xc4, 0xe1, 0x79, 0x4d, 0xad, 0xde, 0xbe, 0x6d, 0xa6,
|
||||
0x76, 0x71, 0x64, 0xb9, 0x2c, 0x79, 0x0a, 0x89, 0x2c, 0xa4, 0x11, 0xca,
|
||||
0xdc, 0xf4, 0x19, 0x40, 0x98, 0x3e, 0x39, 0x84, 0x67, 0x05, 0xab, 0x09,
|
||||
0x9a, 0x26, 0x48, 0x3a, 0x47, 0x52, 0x1f, 0xe7, 0xe0, 0xdb, 0x27, 0x19,
|
||||
0x1d, 0x9e, 0x22, 0x6d, 0x25, 0x0b, 0x95, 0xd3, 0x80, 0xb6, 0x1b, 0xbf,
|
||||
0x59, 0xe6, 0x38, 0x76, 0x7c, 0x9e, 0x46, 0x0b, 0x36, 0x7f, 0xc2, 0x62,
|
||||
0xc2, 0x00, 0xe3, 0x42, 0x70, 0x16, 0xc1, 0xa2, 0xae, 0x85, 0x24, 0x73,
|
||||
0x34, 0xe6, 0x9b, 0xa8, 0xc8, 0xb9, 0x10, 0xee, 0x04, 0x5e, 0xe0, 0x12,
|
||||
0xb2, 0x34, 0x01, 0xcd, 0x3b, 0x72, 0x2a, 0xca, 0x89, 0xa3, 0x27, 0xa9,
|
||||
0x9f, 0x3a, 0x46, 0xe3, 0xcc, 0x87, 0x68, 0x73, 0x92, 0x2c, 0x31, 0xe0,
|
||||
0x1a, 0x9c, 0x3e, 0x39, 0xc5, 0x7b, 0x07, 0x27, 0x99, 0xad, 0xcf, 0x23,
|
||||
0x79, 0xd1, 0xbd, 0xd0, 0xbd, 0xdb, 0xa7, 0xca, 0x90, 0x2a, 0x3b, 0x54,
|
||||
0x41, 0xc5, 0x31, 0x3a, 0x32, 0xc7, 0xd4, 0xb4, 0xe3, 0xa6, 0x9b, 0x12,
|
||||
0xae, 0xd9, 0xd4, 0x80, 0xb4, 0x82, 0xe7, 0xf9, 0xa0, 0x29, 0xae, 0x31,
|
||||
0xc9, 0xa9, 0xd1, 0x3a, 0xce, 0xb9, 0x73, 0x21, 0xf4, 0x5c, 0x1d, 0x01,
|
||||
0x69, 0x67, 0xa3, 0x22, 0x0c, 0x1e, 0x69, 0x12, 0xfc, 0x70, 0x2f, 0x9d,
|
||||
0x9d, 0x05, 0x9c, 0xcb, 0x98, 0x9f, 0xcf, 0x18, 0x1e, 0x6e, 0x32, 0x33,
|
||||
0xd3, 0xc2, 0xa5, 0xe9, 0x42, 0xc5, 0xb4, 0x08, 0xfe, 0x81, 0x1f, 0xee,
|
||||
0xd9, 0xff, 0xcd, 0x2f, 0xee, 0x7c, 0x5e, 0xa1, 0x47, 0x95, 0x1e, 0x55,
|
||||
0x40, 0x85, 0xd9, 0x99, 0x06, 0xaf, 0xbf, 0x96, 0x32, 0x38, 0x38, 0xcb,
|
||||
0xf5, 0xd7, 0x17, 0xa8, 0x56, 0x02, 0x54, 0x84, 0xa9, 0xa9, 0xf9, 0xc5,
|
||||
0xd2, 0xf1, 0x02, 0x02, 0x97, 0x94, 0x25, 0x93, 0xb9, 0x6f, 0xff, 0x99,
|
||||
0x79, 0x8e, 0x76, 0x30, 0x19, 0x63, 0xf2, 0x46, 0xad, 0xef, 0x63, 0x0c,
|
||||
0x88, 0x08, 0x2e, 0x73, 0x88, 0x3b, 0xab, 0xb0, 0xdd, 0x25, 0xdc, 0xf7,
|
||||
0xe0, 0x8f, 0xce, 0x36, 0x9f, 0xbe, 0x7e, 0xaf, 0xe9, 0x00, 0xfa, 0x17,
|
||||
0x49, 0xb4, 0xc5, 0x5a, 0x8b, 0x17, 0xf8, 0x58, 0x6b, 0x51, 0x55, 0xc4,
|
||||
0x39, 0x5c, 0xe6, 0xb8, 0x00, 0xd3, 0x8e, 0xbe, 0x03, 0x7a, 0xc9, 0x0b,
|
||||
0x6d, 0x49, 0x02, 0x7f, 0xf7, 0xa7, 0xe6, 0x56, 0xa0, 0xff, 0xdc, 0xba,
|
||||
0x40, 0x2f, 0x98, 0xe8, 0xd9, 0xf9, 0x90, 0xc2, 0xae, 0xbf, 0x7d, 0x46,
|
||||
0x2f, 0x6a, 0xf2, 0xbe, 0x6d, 0x66, 0x37, 0x79, 0x55, 0x75, 0xd9, 0xc0,
|
||||
0x3c, 0x47, 0xfa, 0xfb, 0x0e, 0xe8, 0x5d, 0x97, 0xfb, 0x87, 0x2b, 0xfa,
|
||||
0x9a, 0xf5, 0x9b, 0x5f, 0x34, 0xb7, 0x02, 0x7d, 0x5c, 0x70, 0xac, 0xb5,
|
||||
0x81, 0x4f, 0x01, 0xfd, 0x0a, 0xcf, 0x7f, 0xed, 0xc7, 0x97, 0xde, 0xa9,
|
||||
0x05, 0xe9, 0xdb, 0x66, 0x3a, 0xc8, 0x53, 0xf3, 0x1d, 0x5c, 0xde, 0x3d,
|
||||
0x9e, 0xec, 0x3b, 0xa0, 0x5f, 0x59, 0x6a, 0xbd, 0xdf, 0xe8, 0x7b, 0xe2,
|
||||
0x6f, 0xe4, 0xae, 0x90, 0x07, 0x75, 0xfe, 0xd6, 0xd4, 0x43, 0xcf, 0xea,
|
||||
0x9b, 0x97, 0x79, 0xe4, 0xb2, 0xd2, 0xb7, 0xcd, 0x6c, 0x6a, 0xaf, 0x77,
|
||||
0x2e, 0x91, 0x01, 0xf2, 0x9d, 0x9f, 0xbe, 0x92, 0x35, 0x96, 0xfd, 0xa7,
|
||||
0x06, 0xff, 0xd7, 0xf2, 0x5b, 0xff, 0x6b, 0x95, 0xff, 0x01, 0x3a, 0xbb,
|
||||
0x29, 0xfe, 0x9c, 0xd4, 0x1a, 0x60, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
@@ -1,202 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *toolbar_browse_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"48 48 148 2",
|
||||
" c #14100F",
|
||||
". c #161211",
|
||||
"X c #191614",
|
||||
"o c #1C1816",
|
||||
"O c #1E1C1B",
|
||||
"+ c #24211F",
|
||||
"@ c #252322",
|
||||
"# c #292524",
|
||||
"$ c #242628",
|
||||
"% c #272829",
|
||||
"& c #2C2D2D",
|
||||
"* c #323233",
|
||||
"= c #3C3E3F",
|
||||
"- c #3D3F40",
|
||||
"; c #414345",
|
||||
": c #4A4D4F",
|
||||
"> c #4B4E50",
|
||||
", c #4E5153",
|
||||
"< c #505456",
|
||||
"1 c #50585D",
|
||||
"2 c #425C69",
|
||||
"3 c #4A626E",
|
||||
"4 c #54636B",
|
||||
"5 c #5E656A",
|
||||
"6 c #4D6672",
|
||||
"7 c #4F6A77",
|
||||
"8 c #516A76",
|
||||
"9 c #546D7B",
|
||||
"0 c #596D79",
|
||||
"q c #5D727D",
|
||||
"w c #6A6C6E",
|
||||
"e c #656E73",
|
||||
"r c #6F7274",
|
||||
"t c #61727C",
|
||||
"y c #5D7684",
|
||||
"u c #5D7E90",
|
||||
"i c #617783",
|
||||
"p c #617986",
|
||||
"a c #647C89",
|
||||
"s c #67808D",
|
||||
"d c #6C828E",
|
||||
"f c #738087",
|
||||
"g c #778288",
|
||||
"h c #628294",
|
||||
"j c #698594",
|
||||
"k c #6D8897",
|
||||
"l c #678799",
|
||||
"z c #6C8B9D",
|
||||
"x c #728691",
|
||||
"c c #758995",
|
||||
"v c #7A8C95",
|
||||
"b c #738C9A",
|
||||
"n c #798E9B",
|
||||
"m c #75909F",
|
||||
"M c #7B909C",
|
||||
"N c #6F8FA0",
|
||||
"B c #708FA0",
|
||||
"V c #7492A4",
|
||||
"C c #7A95A6",
|
||||
"Z c #7997A9",
|
||||
"A c #7D9AAA",
|
||||
"S c #869094",
|
||||
"D c #84949D",
|
||||
"F c #89969F",
|
||||
"G c #8597A1",
|
||||
"H c #8798A2",
|
||||
"J c #8C9BA5",
|
||||
"K c #829DAC",
|
||||
"L c #8B9EAA",
|
||||
"P c #939EA5",
|
||||
"I c #839FB0",
|
||||
"U c #8EA1AC",
|
||||
"Y c #91A2AD",
|
||||
"T c #9BA6AC",
|
||||
"R c #85A1B3",
|
||||
"E c #8AA4B4",
|
||||
"W c #8EA8B8",
|
||||
"Q c #93A5B1",
|
||||
"! c #96A8B3",
|
||||
"~ c #9BAAB2",
|
||||
"^ c #94ACBC",
|
||||
"/ c #9DAFBB",
|
||||
"( c #9CB0BD",
|
||||
") c #A2AEB4",
|
||||
"_ c #A0AFB8",
|
||||
"` c #A7B2B7",
|
||||
"' c #ADB1B3",
|
||||
"] c #A4B3BC",
|
||||
"[ c #AAB5BC",
|
||||
"{ c #AEB9BF",
|
||||
"} c #B0B9BF",
|
||||
"| c #BDBEBF",
|
||||
" . c #9DB3C2",
|
||||
".. c #A2B6C4",
|
||||
"X. c #A3B9C7",
|
||||
"o. c #ACBAC2",
|
||||
"O. c #A6BBC9",
|
||||
"+. c #AABECB",
|
||||
"@. c #B3BDC3",
|
||||
"#. c #B1BFC8",
|
||||
"$. c #AEC2CE",
|
||||
"%. c #B6C0C6",
|
||||
"&. c #B9C2C6",
|
||||
"*. c #B4C2CC",
|
||||
"=. c #BDC5CB",
|
||||
"-. c #BEC8CE",
|
||||
";. c #AEC2D0",
|
||||
":. c #B2C5D1",
|
||||
">. c #B9C7D0",
|
||||
",. c #B5C8D3",
|
||||
"<. c #BBCBD5",
|
||||
"1. c #B7CBD9",
|
||||
"2. c #BECED8",
|
||||
"3. c #C1C3C5",
|
||||
"4. c #C0C7CB",
|
||||
"5. c #C2CACE",
|
||||
"6. c #C4CDD2",
|
||||
"7. c #C8CFD3",
|
||||
"8. c #C0CFD9",
|
||||
"9. c #C5D1D7",
|
||||
"0. c #CCD2D6",
|
||||
"q. c #C4D2DB",
|
||||
"w. c #CBD6DD",
|
||||
"e. c #CED8DF",
|
||||
"r. c #D1D6D9",
|
||||
"t. c #D4D9DD",
|
||||
"y. c #D8DCDF",
|
||||
"u. c #C5D6E1",
|
||||
"i. c #CBD7E0",
|
||||
"p. c #CDD9E1",
|
||||
"a. c #D3DDE3",
|
||||
"s. c #DADFE2",
|
||||
"d. c #D6E0E7",
|
||||
"f. c #DCE2E6",
|
||||
"g. c #D5E1E9",
|
||||
"h. c #DBE4E9",
|
||||
"j. c #E1E4E6",
|
||||
"k. c #E1E6EA",
|
||||
"l. c #E4E9ED",
|
||||
"z. c #E9ECEE",
|
||||
"x. c #E6ECF1",
|
||||
"c. c #EAEEF1",
|
||||
"v. c #EDF1F4",
|
||||
"b. c #F2F4F6",
|
||||
"n. c #F5F7F8",
|
||||
"m. c #F7F8FA",
|
||||
"M. c #FBFCFC",
|
||||
"N. c None",
|
||||
/* pixels */
|
||||
"N.N.N.N.N.N.N.N.N.N.N.N.N.N.` @.&.=.5.7.5.4.=.@.[ N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.N.N.N.N.N.` 7.f.k.k.j.s.r.0.6.5.5.5.6.7.0.y.j.k.k.f.0.} N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.N.N.} f.l.t.5.{ [ [ { %.=.5.6.6.-.*.*.o.[ _ ~ T ~ ` &.r.k.j.&.N.N.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"[email protected].) @.6.f.x.n.M.M.m.n.v.c.x.h.d.a.p.i.q.<.:.O.( Q U ) 0.b.5.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.7.b.[ ] 9.h.x.c.v.b.n.M.M.n.v.v.l.k.h.a.a.p.w.q.<.,.:.;.$.O.( L T z.s.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.M.@.>.d.d.h.k.l.c.v.n.M.M.n.v.v.l.k.h.a.a.p.w.q.<.,.:.$.+.O.X.X.^ Q m.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.>.M.a.w.p.a.h.k.l.c.v.b.n.n.b.v.c.l.k.h.a.a.w.q.8.<.,.$.$.+.O.X. .^ ..m.x.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.8.M.h.i.a.d.h.l.z.c.v.v.v.v.v.x.l.h.d.a.p.w.q.2.<.,.$.$.+.O. .( +.c.v.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.u +.n.m.l.d.d.h.l.l.c.v.v.c.c.x.l.h.d.a.p.i.q.2.,.:.+.O.X.O.:.d.M.l.+.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.u u V $.k.m.m.b.c.x.l.l.c.l.a.9.6.6.6.-.=.*.<.2.<.<.2.i.h.v.m.c.w.+.X.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h h h B E *.a.z.b.M.M.f.6.7.0.5.=.=.4.7.0.5.6.l.M.M.M.b.l.a.q.<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z z N B Z K ^ .%.r.6.@[email protected].&.@.&.0.0.y.b.x.h.d.a.w.<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z B V Z A I K ] r.@.%.k.M.M.M.M.M.M.m.a.{ =.0.6.x.l.h.a.w.<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z B V Z A Z [ t.[ t.M.M.M.M.M.M.M.M.M.M.m.-.{ r.5.l.h.a.w.<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z B V Z Z ! y.[ [email protected].<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.h l l B V Z C [email protected].@.=.6.e.a.w.<.:.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.N.b A V V V o.7.-.f.M.M.M.M.M.M.M.M.M.M.M.M.M.M.n.t.[ 0.-.h.g.*.N.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.[ b.0.c h b [email protected].&.=.T 5.b.%.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.5.n.T q 6 2 v [email protected] 8 F z.y.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.M.Y 8 9 9 7 ) 6.w.f.k.b.n.m.M.M.M.M.M.M.m.m.n.b.b.l.a.a.#.0.x 8 8 v m.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.6.M.J y d d a @.=.s.j.l.c.n.m.M.M.M.M.M.M.M.m.n.b.v.f.s.a.=.0.L a a c n.v.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.w.b.! n M n &.=.f.k.z.v.b.m.M.M.M.M.M.M.m.m.n.b.z.j.f.s.5.7.~ c L f.b.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h [email protected] &.=.f.l.z.b.n.m.m.M.M.M.M.M.M.m.n.v.z.k.f.s.5.6.o.0.m.x.+.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.u u A >.c.z.0.=.s.l.c.b.n.m.M.M.M.M.M.M.m.m.n.v.z.k.f.f.=.5.t.n.i.+.X.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h h h V ^ o.5.0.c.c.b.n.m.m.M.M.M.M.M.m.m.n.b.z.l.f.f.%.0.<.i.<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z z z C 0.=.b.c.b.n.m.M.M.M.M.M.M.m.m.n.b.z.k.j.f.%.7.q.i.<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z B V B =.=.k.b.b.n.m.m.M.M.M.M.m.m.n.b.v.z.k.c.6.6.-.a.w.<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z B V V U [email protected].<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z B V Z V @[email protected].<.$.O.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.h l z N V Z A C 7.5.0.m.M.M.M.M.M.M.M.M.m.m.m.c.%.0.=.=.h.a.w.<.:.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.N.z C V V Z A K K [email protected].&.t.6.w.a.g.*.N.N.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.N.` z.0.n j B A R W E [email protected] * ' [email protected].",
|
||||
"N.N.=.m.) t 3 2 3 9 a k C A ! 5.r.0.5.5.5.5.6.0.0.@.[ o.n ~ r . % S v.r.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.M.Y 6 8 8 9 9 8 8 8 8 9 9 9 d Y { %.&.@.` H i 9 9 6 7 4 & ; - o $ g M.N.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.9.M.G y a a a a a a a a a a a p y y p p p y y p a a a s 0 & : e = o & 3.M.N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.t.c.L c b n n n n n n n n n n n n n n n n n n n n n n C t @ > e = X = 5 N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h 8.m.t.] Y L L U U Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y U U L Q f # : e = o @ N.N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.u u K 8.v.v.f.6.#.o.] ( ( / / / / / / / / / ( ( ( ..o.-.t.n.| # : e = O & N.N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h h h V ( 8.h.v.b.v.x.k.f.a.a.a.e.e.a.a.a.h.k.c.b.M.M.m.c.x.T # : e = O & N.N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z z z B Z E .*.2.p.h.l.x.v.b.n.m.M.M.M.M.M.M.b.x.h.d.a.g.P # : e = O & N.N.N.N.N.N.N.",
|
||||
"N.N.h h l z B V C A K R E W ^ .X.+.:.8.i.a.h.c.b.M.M.n.v.x.k.h.a.w.u.F # > e = O & N.N.N.N.N.N.",
|
||||
"N.u h h l z B V Z A I E W ^ ...O.$.,.q.p.d.k.c.n.M.M.n.v.x.k.h.a.w.<.1.D % , e = O & N.N.N.N.N.",
|
||||
"N.N.h h l z B V Z A I E W ^ ...O.$.,.q.p.d.k.c.n.M.M.n.v.x.k.h.a.w.<.$.,.1 o < e = O & N.N.N.N.",
|
||||
"N.N.x h l z B V Z A I E W ^ ...O.$.,.q.p.d.k.c.n.M.M.n.v.x.k.h.a.w.2.:.Q N.N.+ < e = O & N.N.N.",
|
||||
"N.N.N.c k z N V Z A I E W ^ ...O.$.,.q.p.d.k.c.n.M.M.n.v.x.l.h.d.w.o.H N.N.N.N.@ < e = + @ N.N.",
|
||||
"N.N.N.N.N.c b m C A R E ^ ^ .X.O.$.,.q.p.d.l.v.m.M.M.M.n.c.h.9.[ H N.N.N.N.N.N.N.@ < 5 * o N.N.",
|
||||
"N.N.N.N.N.N.N.N.v n C K E ^ / ..O.$.<.q.a.d.l.x.c.v.k.0.@.~ F N.N.N.N.N.N.N.N.N.N.N.# ; & X N.N.",
|
||||
"N.N.N.N.N.N.N.N.N.N.N.N.N.N.v D D G H J J J J J F N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.& N.N.N.N."
|
||||
};
|
||||
@@ -1,277 +0,0 @@
|
||||
static const unsigned char toolbar_pause_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, 0x87, 0x00, 0x00, 0x00,
|
||||
0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
|
||||
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b,
|
||||
0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x25, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
|
||||
0x72, 0x65, 0x00, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x6d, 0x65, 0x64, 0x69,
|
||||
0x61, 0x20, 0x46, 0x69, 0x72, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20,
|
||||
0x4d, 0x58, 0x20, 0x32, 0x30, 0x30, 0x34, 0x87, 0x76, 0xac, 0xcf, 0x00,
|
||||
0x00, 0x00, 0x14, 0x74, 0x45, 0x58, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x00, 0x39, 0x2f, 0x34,
|
||||
0x2f, 0x30, 0x34, 0x79, 0x5e, 0xa3, 0xd5, 0x00, 0x00, 0x0c, 0x2e, 0x49,
|
||||
0x44, 0x41, 0x54, 0x78, 0x9c, 0xd5, 0x9a, 0x4b, 0x6c, 0x5d, 0xd7, 0x75,
|
||||
0x86, 0xbf, 0xbd, 0xf7, 0x79, 0xdc, 0x87, 0x28, 0x5d, 0x52, 0x22, 0x29,
|
||||
0x25, 0x96, 0x2c, 0x45, 0xb0, 0x55, 0x35, 0x4e, 0xa4, 0xa2, 0xa3, 0x0c,
|
||||
0x6a, 0x2b, 0x40, 0x50, 0x4f, 0x0a, 0xc8, 0xb3, 0x0e, 0x0c, 0x23, 0xca,
|
||||
0xa4, 0x4a, 0x1c, 0xc0, 0x4a, 0x07, 0x1d, 0x09, 0x45, 0x64, 0x18, 0xa9,
|
||||
0x03, 0x03, 0xae, 0x65, 0xb5, 0x40, 0x91, 0x64, 0xa0, 0x00, 0x0d, 0xa7,
|
||||
0x85, 0xd3, 0x0e, 0xda, 0xa2, 0x69, 0xa1, 0x38, 0x9d, 0x14, 0x28, 0x50,
|
||||
0x39, 0xb1, 0x91, 0x0a, 0xb2, 0x65, 0x3d, 0x28, 0x89, 0x22, 0xef, 0x25,
|
||||
0xef, 0x9b, 0xf7, 0x3c, 0xf6, 0x5e, 0x1d, 0xec, 0x73, 0x1f, 0x94, 0x48,
|
||||
0x89, 0xb2, 0x83, 0x1a, 0xde, 0xc0, 0xc1, 0xb9, 0x8f, 0x7d, 0xcf, 0xf9,
|
||||
0xff, 0xb5, 0xfe, 0xfd, 0xaf, 0xb5, 0x0f, 0xa9, 0x44, 0x84, 0xcf, 0xf3,
|
||||
0xd0, 0x9f, 0x35, 0x80, 0x4f, 0x3b, 0x82, 0xcf, 0xf2, 0xe6, 0xa7, 0x4f,
|
||||
0xff, 0x58, 0x0d, 0x5f, 0xff, 0xe8, 0x47, 0x7f, 0xf6, 0x89, 0xa4, 0xa0,
|
||||
0x7e, 0x57, 0x12, 0xfa, 0xe1, 0x0f, 0xff, 0xe5, 0xa0, 0x88, 0x9c, 0x10,
|
||||
0x71, 0x27, 0x9c, 0x73, 0x07, 0x9d, 0x93, 0x63, 0x22, 0xae, 0xe6, 0x9c,
|
||||
0xc3, 0x39, 0x87, 0x88, 0xbb, 0xee, 0x9c, 0xbb, 0xe1, 0x9c, 0xbb, 0xe4,
|
||||
0x9c, 0x7b, 0xaf, 0xd5, 0xea, 0xff, 0x7c, 0x93, 0xcb, 0x08, 0x3c, 0x1e,
|
||||
0x99, 0x4f, 0x45, 0xe0, 0xcd, 0x37, 0xff, 0xa3, 0x26, 0xe2, 0x5e, 0x10,
|
||||
0x91, 0x33, 0x22, 0x72, 0xdc, 0x03, 0x15, 0x26, 0x40, 0x8f, 0x5e, 0x6f,
|
||||
0x7c, 0x6f, 0x71, 0xce, 0x35, 0x9d, 0x73, 0xff, 0x68, 0xad, 0xfb, 0xfb,
|
||||
0xf5, 0xf5, 0xfc, 0x97, 0x05, 0xf8, 0xe1, 0x01, 0x20, 0xdb, 0x21, 0xf2,
|
||||
0x89, 0x09, 0xbc, 0xf5, 0xd6, 0xa5, 0x73, 0x20, 0x67, 0x9c, 0x93, 0x9a,
|
||||
0x88, 0x50, 0x2a, 0xc5, 0x54, 0xab, 0x55, 0xa6, 0xa6, 0xa6, 0x50, 0x4a,
|
||||
0x11, 0x45, 0xf1, 0x08, 0x6c, 0x96, 0x65, 0xf4, 0xfb, 0x5d, 0xba, 0xdd,
|
||||
0x3e, 0x9d, 0x4e, 0x8b, 0x4e, 0xa7, 0x43, 0x9e, 0x67, 0x93, 0xe4, 0xde,
|
||||
0xb5, 0xd6, 0xfe, 0x45, 0x9a, 0x72, 0xb9, 0x20, 0xe0, 0x86, 0x64, 0x1e,
|
||||
0x45, 0xe2, 0xb1, 0xd7, 0xc0, 0xdb, 0x6f, 0xbf, 0x7b, 0x42, 0x29, 0x75,
|
||||
0x51, 0x6b, 0x7d, 0x50, 0x6b, 0xcd, 0xcc, 0xcc, 0x0c, 0x4f, 0x3e, 0xb9,
|
||||
0x97, 0xdd, 0xbb, 0xcb, 0x54, 0x2a, 0x01, 0x41, 0xa0, 0x09, 0x02, 0x83,
|
||||
0xb5, 0xe0, 0x1c, 0xf4, 0x7a, 0x29, 0xdd, 0x6e, 0x42, 0xab, 0xd5, 0xa7,
|
||||
0xd1, 0x68, 0x33, 0x33, 0x33, 0x4d, 0x9a, 0xa6, 0xb4, 0x5a, 0x6b, 0xdc,
|
||||
0xbd, 0xbb, 0x44, 0x92, 0x24, 0x00, 0xcf, 0x2a, 0xa5, 0xfe, 0x2b, 0x0c,
|
||||
0xed, 0x5f, 0x65, 0x99, 0x7e, 0x0d, 0x50, 0x05, 0x89, 0x21, 0x91, 0x2d,
|
||||
0xc7, 0x63, 0x65, 0xe0, 0xc2, 0x85, 0xff, 0x3c, 0xa7, 0x94, 0xfa, 0x3e,
|
||||
0xc0, 0xdc, 0xdc, 0x2c, 0xcf, 0x3c, 0xb3, 0x9f, 0xb9, 0xb9, 0x98, 0x38,
|
||||
0xd6, 0x38, 0xc7, 0x08, 0xf4, 0xc3, 0x5e, 0x2f, 0x2f, 0x37, 0x59, 0x5c,
|
||||
0x5c, 0xa2, 0xdf, 0x5f, 0xc7, 0xb9, 0x9c, 0x95, 0x95, 0x15, 0x96, 0x97,
|
||||
0x97, 0x47, 0x19, 0x11, 0x71, 0xbf, 0xb2, 0x56, 0xfe, 0x54, 0x24, 0x68,
|
||||
0x00, 0x16, 0x70, 0x0f, 0xcb, 0xc2, 0xb6, 0x33, 0x70, 0xe1, 0xc2, 0xaf,
|
||||
0x2e, 0x6a, 0xad, 0x4f, 0xc5, 0x71, 0xcc, 0x57, 0xbf, 0x7a, 0x84, 0xa7,
|
||||
0x9f, 0xde, 0x41, 0xa9, 0xa4, 0x46, 0xe0, 0xd6, 0xd7, 0x2d, 0xab, 0xab,
|
||||
0x29, 0xed, 0x76, 0xc6, 0x60, 0xe0, 0x0f, 0x6b, 0x2d, 0xce, 0x59, 0xa2,
|
||||
0xc8, 0x10, 0xc7, 0x21, 0xe5, 0x72, 0x4c, 0xad, 0x36, 0xc5, 0xf4, 0x74,
|
||||
0x8d, 0xbb, 0x77, 0x97, 0xf9, 0xf8, 0xe3, 0x1b, 0x4c, 0x4f, 0xcf, 0x50,
|
||||
0x2e, 0x97, 0x59, 0x5c, 0xbc, 0xc5, 0xfa, 0xfa, 0x3a, 0xc0, 0x1f, 0x29,
|
||||
0x25, 0xff, 0x2a, 0x92, 0x3f, 0x0f, 0x41, 0x83, 0x8d, 0xeb, 0xe2, 0x81,
|
||||
0xb1, 0xad, 0x0c, 0xbc, 0xfd, 0xf6, 0xbb, 0x17, 0xb5, 0xd6, 0xa7, 0xaa,
|
||||
0xd5, 0x2a, 0xcf, 0x3e, 0xfb, 0x0c, 0x07, 0x0e, 0x84, 0xa3, 0x88, 0x36,
|
||||
0x1a, 0x96, 0xa5, 0xa5, 0x94, 0x7e, 0x3f, 0xc7, 0x39, 0x8b, 0xb5, 0xae,
|
||||
0x38, 0xdb, 0x89, 0xb3, 0xc3, 0x5a, 0x8b, 0xb5, 0x39, 0x79, 0xee, 0xa8,
|
||||
0xd5, 0x76, 0x30, 0x3f, 0x3f, 0x4f, 0x9a, 0xe6, 0xbc, 0xff, 0xfe, 0x07,
|
||||
0x64, 0x59, 0x82, 0xb5, 0x96, 0xbb, 0x77, 0xef, 0xd0, 0x6a, 0x35, 0x87,
|
||||
0xeb, 0xe2, 0x37, 0x22, 0xea, 0x8f, 0x95, 0x8a, 0xea, 0x80, 0xdd, 0x2a,
|
||||
0x0b, 0x8f, 0x2c, 0x64, 0x6f, 0xbd, 0x75, 0xe9, 0x22, 0x70, 0x6a, 0xd7,
|
||||
0xae, 0x1a, 0xcf, 0x3f, 0xff, 0x15, 0xf6, 0xef, 0x0f, 0x8b, 0x88, 0xc3,
|
||||
0xd5, 0xab, 0x39, 0x8b, 0x8b, 0x39, 0x49, 0x22, 0x28, 0xa5, 0x00, 0x85,
|
||||
0x2a, 0x9c, 0xdd, 0x9f, 0x55, 0x71, 0x8c, 0xe2, 0x05, 0x40, 0xa3, 0xb1,
|
||||
0xc6, 0xaf, 0x7f, 0xfd, 0x3e, 0x6b, 0x6b, 0x6b, 0x1c, 0x3d, 0xfa, 0xfb,
|
||||
0x68, 0x6d, 0x70, 0x4e, 0x98, 0x9b, 0x9b, 0xa7, 0x54, 0xaa, 0x0c, 0x7f,
|
||||
0xf7, 0x15, 0x11, 0xfb, 0x13, 0xc0, 0xdc, 0x77, 0x91, 0xed, 0x13, 0x78,
|
||||
0xf3, 0xcd, 0x7f, 0x3f, 0x23, 0x22, 0xa7, 0x4a, 0xa5, 0x12, 0x5f, 0xff,
|
||||
0xfa, 0x11, 0x66, 0x66, 0x02, 0x9c, 0x83, 0x7a, 0x5d, 0xf8, 0xe8, 0x23,
|
||||
0x61, 0x30, 0x78, 0x14, 0x7d, 0x46, 0x84, 0xfc, 0xeb, 0xf1, 0x1b, 0x11,
|
||||
0xb8, 0x7d, 0x7b, 0x91, 0x0f, 0x3f, 0xfc, 0x90, 0xc3, 0x87, 0x9f, 0x1e,
|
||||
0xd9, 0xef, 0xfc, 0xfc, 0x3c, 0x41, 0x30, 0x52, 0xf6, 0x9f, 0xe4, 0x79,
|
||||
0xef, 0x15, 0x40, 0x4f, 0x16, 0xbd, 0x6d, 0x11, 0x78, 0xe3, 0x8d, 0x7f,
|
||||
0x3b, 0x2e, 0x22, 0xe7, 0x8d, 0x31, 0x7c, 0xed, 0x6b, 0xcf, 0x30, 0x33,
|
||||
0xe3, 0x23, 0x7f, 0xf3, 0xa6, 0xe5, 0xce, 0x1d, 0x6f, 0x7f, 0x20, 0x0c,
|
||||
0x15, 0xb8, 0xb9, 0x14, 0xc7, 0xdf, 0x0f, 0xdf, 0x8f, 0x39, 0xf8, 0xef,
|
||||
0xfa, 0xfd, 0x0e, 0x37, 0x6f, 0x5e, 0x67, 0xdf, 0xbe, 0x2f, 0x22, 0x22,
|
||||
0x28, 0xa5, 0x99, 0x9d, 0x9d, 0x65, 0x42, 0xf6, 0x67, 0xb3, 0xac, 0x7b,
|
||||
0x68, 0x2b, 0x9c, 0x0f, 0xc9, 0x80, 0x5c, 0x14, 0x81, 0xa3, 0x47, 0x9f,
|
||||
0x62, 0xff, 0xfe, 0x32, 0xce, 0xc1, 0x8d, 0x1b, 0x29, 0xab, 0xab, 0x79,
|
||||
0x51, 0x88, 0xec, 0xa8, 0x38, 0x79, 0xf0, 0x82, 0x88, 0x8c, 0x88, 0x8c,
|
||||
0x81, 0x8f, 0x19, 0xf8, 0xcf, 0x64, 0xc3, 0x77, 0x22, 0xd0, 0xe9, 0xb4,
|
||||
0x69, 0x36, 0xd7, 0x08, 0xc3, 0x12, 0x22, 0x8e, 0x38, 0x2e, 0xb1, 0x63,
|
||||
0xc7, 0xd4, 0x70, 0xd2, 0x2e, 0x11, 0xf7, 0x97, 0x6c, 0x21, 0xa3, 0x4d,
|
||||
0x5d, 0xe8, 0xf5, 0xd7, 0xff, 0xf9, 0x9b, 0x5a, 0xeb, 0xe3, 0xbb, 0x76,
|
||||
0xed, 0xe4, 0xa9, 0xa7, 0x76, 0xa3, 0x94, 0xa2, 0x5e, 0xcf, 0x68, 0x34,
|
||||
0x32, 0x94, 0xd2, 0x13, 0x52, 0x10, 0x3e, 0xf8, 0xe0, 0x32, 0x8d, 0x46,
|
||||
0x9d, 0x6e, 0xb7, 0x43, 0xb3, 0xd9, 0xe0, 0xcb, 0x5f, 0x3e, 0xce, 0xe1,
|
||||
0xc3, 0x47, 0x0a, 0x32, 0x7e, 0xd6, 0xb5, 0x6b, 0x57, 0x69, 0xb7, 0xd7,
|
||||
0xe8, 0xf7, 0xfb, 0x74, 0x3a, 0x6d, 0x0e, 0x1c, 0x38, 0xc4, 0xfc, 0xfc,
|
||||
0xbe, 0x11, 0x71, 0xf0, 0x24, 0x94, 0x52, 0x38, 0xe7, 0x3f, 0xab, 0xd5,
|
||||
0xa6, 0x69, 0xb5, 0x5a, 0xc3, 0x80, 0xbc, 0x94, 0x24, 0xcd, 0x57, 0x81,
|
||||
0x8f, 0xb6, 0x45, 0x40, 0x44, 0xce, 0x89, 0x08, 0x47, 0x8f, 0x7e, 0x89,
|
||||
0x9d, 0x3b, 0x23, 0x06, 0x03, 0xc7, 0xe2, 0xe2, 0x3a, 0xce, 0x29, 0x94,
|
||||
0x92, 0x11, 0x81, 0xf7, 0xde, 0xfb, 0x6f, 0xae, 0x5e, 0xfd, 0x0d, 0xdf,
|
||||
0xf8, 0xc6, 0x1f, 0x02, 0x7b, 0x80, 0x43, 0x54, 0xab, 0xf3, 0xa4, 0xa9,
|
||||
0x1b, 0x65, 0xe3, 0xca, 0x95, 0x0f, 0x58, 0x5c, 0xfc, 0xa8, 0x98, 0x33,
|
||||
0x1c, 0x55, 0x96, 0x97, 0x53, 0x44, 0xc0, 0x39, 0x29, 0xf4, 0x2f, 0x38,
|
||||
0x97, 0xe3, 0x9c, 0x43, 0x29, 0x30, 0xc6, 0x50, 0xad, 0x56, 0xe9, 0x76,
|
||||
0xdb, 0x43, 0xc7, 0x7b, 0x05, 0x38, 0xf3, 0x48, 0x02, 0xaf, 0xbd, 0xf6,
|
||||
0x4f, 0x27, 0xb5, 0xd6, 0x07, 0xa7, 0xa7, 0x6b, 0xcc, 0xce, 0x56, 0x71,
|
||||
0x0e, 0x6e, 0xdd, 0xea, 0x93, 0x65, 0x76, 0x14, 0xfd, 0x61, 0x02, 0x96,
|
||||
0x96, 0x6e, 0xf3, 0xf2, 0xcb, 0x27, 0x39, 0x72, 0x64, 0xff, 0xe8, 0xf7,
|
||||
0x69, 0x6a, 0xf9, 0xc5, 0x2f, 0x96, 0x0b, 0x02, 0x8e, 0x46, 0x63, 0xe5,
|
||||
0x81, 0x39, 0x49, 0x92, 0xf3, 0xb3, 0x9f, 0xfd, 0xcf, 0x28, 0x43, 0x9e,
|
||||
0x84, 0xbb, 0x6f, 0x3d, 0x29, 0x2a, 0x95, 0x2a, 0xbd, 0x6e, 0xbb, 0xc8,
|
||||
0x92, 0x3b, 0x79, 0xfa, 0xf4, 0x8f, 0xbf, 0x77, 0xbf, 0x9d, 0x3e, 0xb0,
|
||||
0x06, 0x44, 0xe4, 0x94, 0x88, 0x63, 0xcf, 0x9e, 0xdd, 0x4c, 0x4f, 0x97,
|
||||
0x69, 0xb7, 0x53, 0xd6, 0xd6, 0xd6, 0x27, 0x9a, 0x30, 0xef, 0xf5, 0xd6,
|
||||
0x3a, 0xd6, 0xd6, 0x1a, 0x1b, 0x80, 0x81, 0x77, 0x9a, 0x21, 0x78, 0x11,
|
||||
0xa1, 0xdd, 0x6e, 0x3e, 0x74, 0xce, 0x70, 0x1d, 0xf9, 0x9b, 0x3b, 0x10,
|
||||
0x41, 0x2b, 0x85, 0x42, 0xa8, 0x56, 0xca, 0x80, 0x1a, 0x8a, 0xff, 0xc9,
|
||||
0x5e, 0xaf, 0x7e, 0xfc, 0x7e, 0xbc, 0x1b, 0x08, 0x9c, 0x3b, 0xf7, 0x0f,
|
||||
0x35, 0x11, 0xf7, 0x42, 0x10, 0x84, 0xcc, 0xce, 0xce, 0x14, 0x96, 0x39,
|
||||
0x04, 0xef, 0x8a, 0x82, 0xe4, 0x89, 0x74, 0x3a, 0x2d, 0xe6, 0xe7, 0x6b,
|
||||
0x88, 0x50, 0x48, 0xc1, 0x1f, 0xad, 0xd6, 0xb0, 0x25, 0x10, 0xfa, 0xfd,
|
||||
0x1e, 0x7b, 0xf7, 0x4e, 0x3f, 0x30, 0xa7, 0x5e, 0xef, 0x8f, 0xa4, 0x33,
|
||||
0x5e, 0xf4, 0x5e, 0xfb, 0x4a, 0x15, 0x55, 0xa0, 0x90, 0x51, 0x1c, 0x97,
|
||||
0x40, 0xa9, 0xe2, 0x1a, 0x72, 0xf2, 0x7e, 0x02, 0x1b, 0x24, 0xe4, 0x9c,
|
||||
0x3c, 0xa7, 0xb5, 0x50, 0xad, 0x56, 0xa8, 0x56, 0x23, 0xb2, 0xcc, 0x51,
|
||||
0xaf, 0xf7, 0x0a, 0xcd, 0x7b, 0x8b, 0x1b, 0x46, 0xb0, 0xdb, 0xed, 0xf0,
|
||||
0xc4, 0x13, 0xb3, 0x38, 0x1f, 0xb4, 0x51, 0xfa, 0x93, 0x64, 0xdc, 0x36,
|
||||
0xf7, 0x7a, 0xdd, 0x4d, 0xe7, 0x0c, 0x06, 0x76, 0x43, 0xab, 0x2d, 0x4e,
|
||||
0x0a, 0xd0, 0x0a, 0xa5, 0x14, 0x5a, 0x29, 0x9c, 0x38, 0x9c, 0x40, 0x10,
|
||||
0x18, 0xd4, 0xd8, 0xc9, 0x8e, 0x3d, 0x34, 0x03, 0x22, 0x72, 0x5c, 0xc4,
|
||||
0x51, 0xa9, 0x54, 0x28, 0x95, 0x42, 0xda, 0xed, 0x64, 0x43, 0xe4, 0x27,
|
||||
0xdb, 0x82, 0x7b, 0xf7, 0xee, 0x32, 0x33, 0xb3, 0x13, 0x6b, 0xd9, 0x70,
|
||||
0x34, 0x9b, 0xe9, 0x48, 0x16, 0x8d, 0xc6, 0xca, 0xa6, 0x73, 0xea, 0xf5,
|
||||
0xde, 0xc4, 0xe2, 0x1d, 0xdb, 0xb0, 0x42, 0x11, 0x68, 0x4d, 0x60, 0x34,
|
||||
0x46, 0x1b, 0xb4, 0x86, 0x52, 0x29, 0x9e, 0xc8, 0x10, 0xb5, 0x87, 0x66,
|
||||
0xc0, 0xef, 0xa6, 0x34, 0x41, 0x10, 0x50, 0xa9, 0x94, 0xb8, 0x73, 0x67,
|
||||
0x15, 0xe7, 0x6c, 0x11, 0x99, 0x8d, 0x0b, 0x38, 0x4d, 0x13, 0x0e, 0x1f,
|
||||
0xfe, 0x3d, 0xac, 0x9d, 0xf4, 0x7c, 0x0a, 0x37, 0xf1, 0x04, 0xb2, 0x2c,
|
||||
0xe5, 0xf0, 0xe1, 0xfd, 0x5b, 0xce, 0x19, 0x06, 0x04, 0xf1, 0xe0, 0x8d,
|
||||
0x06, 0xa3, 0x15, 0x46, 0x6b, 0x10, 0x87, 0x28, 0x8d, 0x56, 0x3e, 0xfe,
|
||||
0xc5, 0xef, 0x4f, 0x3c, 0x82, 0x80, 0xd4, 0xc0, 0x11, 0xc7, 0x71, 0xd1,
|
||||
0xcb, 0x0f, 0x0a, 0x5b, 0xdb, 0x68, 0x9f, 0xa0, 0x68, 0x36, 0xd7, 0x28,
|
||||
0x95, 0xe2, 0x07, 0xe4, 0xe1, 0xf5, 0x3d, 0x5c, 0xc0, 0xad, 0x4d, 0xe7,
|
||||
0xdc, 0xb9, 0xd3, 0x2a, 0x9a, 0x3b, 0x87, 0x73, 0x82, 0xc2, 0x61, 0x94,
|
||||
0xf2, 0xe0, 0x8d, 0xc6, 0x68, 0x8d, 0x20, 0x38, 0xbc, 0xa4, 0xfc, 0x5d,
|
||||
0x37, 0x6f, 0x3a, 0xef, 0x5b, 0x03, 0xee, 0xf8, 0x50, 0x87, 0xce, 0x41,
|
||||
0xbb, 0xdd, 0x9b, 0x88, 0xbc, 0xbf, 0xcc, 0xf0, 0xdc, 0xef, 0x77, 0xd9,
|
||||
0xbb, 0x77, 0x6e, 0x14, 0xdd, 0xb1, 0x25, 0x8e, 0x9d, 0x65, 0x7d, 0xbd,
|
||||
0xbf, 0xc5, 0x9c, 0x71, 0xb7, 0x2a, 0x62, 0xd1, 0x4a, 0xa1, 0x15, 0x18,
|
||||
0x6d, 0x08, 0x4d, 0x80, 0x56, 0x3e, 0x4b, 0x5a, 0xb9, 0x91, 0x63, 0x6d,
|
||||
0x8b, 0x80, 0xb7, 0x33, 0x5d, 0x80, 0xa0, 0x88, 0xfe, 0x64, 0xa7, 0x39,
|
||||
0x26, 0x51, 0x2e, 0x07, 0x23, 0x57, 0xd9, 0x4a, 0x42, 0x95, 0x4a, 0xb8,
|
||||
0xe9, 0x9c, 0x3c, 0x9f, 0x94, 0x8f, 0xbf, 0x9e, 0x29, 0xb4, 0x1f, 0x18,
|
||||
0x8d, 0x02, 0x8c, 0x76, 0xe4, 0x4e, 0x91, 0x65, 0xe9, 0x16, 0x7d, 0xd6,
|
||||
0xa6, 0x19, 0x10, 0x94, 0x72, 0x63, 0x02, 0xd6, 0x47, 0x80, 0x22, 0x03,
|
||||
0xe3, 0x16, 0x19, 0x6a, 0xb5, 0x9d, 0xa3, 0xc8, 0x3a, 0x37, 0xbe, 0x46,
|
||||
0xb7, 0x9b, 0x14, 0x91, 0x95, 0x2d, 0xe7, 0xb4, 0x5a, 0x5d, 0xf2, 0xdc,
|
||||
0x4b, 0xc8, 0x28, 0xaf, 0xfb, 0xd0, 0x18, 0xa2, 0x30, 0x20, 0x0c, 0x8c,
|
||||
0x6f, 0xea, 0xac, 0xb7, 0xd2, 0x2c, 0xcb, 0x70, 0x63, 0x02, 0x97, 0x1f,
|
||||
0x99, 0x01, 0x85, 0x22, 0x49, 0x12, 0xda, 0xed, 0x5e, 0x91, 0x91, 0x71,
|
||||
0x4f, 0xef, 0x5b, 0x09, 0x3f, 0x37, 0x0c, 0xcb, 0x1b, 0xa2, 0x3b, 0xbc,
|
||||
0x47, 0x1c, 0x07, 0xf4, 0x7a, 0xeb, 0x88, 0x08, 0xc6, 0xc4, 0x9b, 0xce,
|
||||
0xf1, 0xeb, 0xa2, 0x85, 0xc2, 0xa1, 0x95, 0xf6, 0xe0, 0x83, 0x80, 0x28,
|
||||
0x30, 0x04, 0xc6, 0x90, 0xd9, 0x1c, 0xa5, 0x15, 0x0a, 0x45, 0xaf, 0xd7,
|
||||
0x9d, 0xcc, 0x40, 0xf3, 0x7e, 0x02, 0x1b, 0x6c, 0xd4, 0x39, 0x77, 0x49,
|
||||
0x44, 0x48, 0x93, 0x01, 0xfd, 0xde, 0x3a, 0xc3, 0xdd, 0x9c, 0x12, 0xc1,
|
||||
0x15, 0x05, 0x2c, 0xcf, 0xf3, 0xc2, 0x46, 0x1b, 0x0f, 0xd8, 0xa3, 0x73,
|
||||
0x3e, 0x6a, 0xd6, 0x5a, 0xf2, 0x7c, 0xeb, 0x39, 0xc6, 0x78, 0x97, 0x31,
|
||||
0x4a, 0x11, 0x05, 0x86, 0x52, 0x14, 0x50, 0x8a, 0x43, 0xe2, 0x30, 0xc0,
|
||||
0x14, 0xc0, 0x15, 0x8a, 0x24, 0x4d, 0x8a, 0xe8, 0x8f, 0x08, 0x5c, 0x7a,
|
||||
0x14, 0x81, 0xa6, 0x73, 0x42, 0xaf, 0xd7, 0x61, 0xb5, 0xb1, 0x4a, 0xb9,
|
||||
0x14, 0xa3, 0x47, 0x99, 0x11, 0x10, 0x8b, 0x38, 0x87, 0xcd, 0x73, 0x8c,
|
||||
0x31, 0x9b, 0x6e, 0xda, 0x2b, 0x95, 0x88, 0x3c, 0xcf, 0xc8, 0xf3, 0x14,
|
||||
0xad, 0xf5, 0xa6, 0x73, 0xa6, 0xa7, 0xa7, 0x30, 0x4a, 0x13, 0x87, 0x21,
|
||||
0x95, 0x38, 0xa6, 0x1c, 0x45, 0x94, 0xc2, 0x80, 0x30, 0x08, 0x50, 0xba,
|
||||
0xf0, 0x1c, 0x11, 0xd6, 0x9a, 0x4d, 0xac, 0x95, 0xc9, 0x0c, 0x3c, 0x20,
|
||||
0xa1, 0xfb, 0x0b, 0xd9, 0x65, 0x41, 0xe8, 0x75, 0x7b, 0x0c, 0x06, 0x7d,
|
||||
0xcf, 0x5c, 0x1c, 0x81, 0x02, 0x8d, 0xa0, 0x44, 0xa1, 0xf0, 0x99, 0x78,
|
||||
0xe2, 0x89, 0x27, 0xe9, 0xf7, 0x93, 0x11, 0xb0, 0xe1, 0x39, 0x49, 0x52,
|
||||
0xb2, 0x2c, 0x23, 0xcb, 0x32, 0xe6, 0xe6, 0xf6, 0x6d, 0x3a, 0x27, 0x4f,
|
||||
0x73, 0xe2, 0x30, 0xa0, 0x1c, 0x45, 0x54, 0xe2, 0x88, 0x72, 0x1c, 0x11,
|
||||
0x47, 0x61, 0xe1, 0xff, 0xe0, 0x10, 0xac, 0x38, 0x9a, 0xcd, 0xb5, 0x0d,
|
||||
0x4d, 0xde, 0x76, 0x32, 0xf0, 0x8e, 0x6f, 0x01, 0x7a, 0xd8, 0x3c, 0x27,
|
||||
0x4b, 0x32, 0x8c, 0x02, 0xad, 0x14, 0x81, 0x56, 0x04, 0x5a, 0xd0, 0x80,
|
||||
0x12, 0xa8, 0x96, 0xab, 0x5c, 0xb9, 0x72, 0x9b, 0x5e, 0x6f, 0x0c, 0x70,
|
||||
0x65, 0xa5, 0xc5, 0xb5, 0x6b, 0x77, 0xc9, 0xb2, 0x9c, 0x34, 0xcd, 0x30,
|
||||
0x26, 0xe2, 0xf2, 0xe5, 0x0f, 0xe9, 0x74, 0xd6, 0x47, 0x73, 0xee, 0x2d,
|
||||
0xad, 0xb2, 0xb4, 0x78, 0x8f, 0x6a, 0x29, 0x62, 0xaa, 0x12, 0xb3, 0xa3,
|
||||
0x1c, 0x53, 0x8a, 0x42, 0x02, 0xe3, 0xbd, 0xdf, 0x8a, 0x23, 0xb7, 0x8e,
|
||||
0xc6, 0xea, 0x1a, 0x49, 0x9a, 0x61, 0x9d, 0x1d, 0xc2, 0x7b, 0x67, 0x61,
|
||||
0xe1, 0x6c, 0xeb, 0x7e, 0x02, 0x0f, 0x3c, 0x95, 0x38, 0xf3, 0xca, 0x4f,
|
||||
0x3e, 0x0e, 0xc3, 0xe0, 0xe0, 0x17, 0xf7, 0xed, 0x63, 0xdf, 0xfc, 0x3c,
|
||||
0x51, 0x18, 0x10, 0x68, 0x0d, 0x78, 0x3f, 0xce, 0xad, 0x25, 0xcd, 0x2d,
|
||||
0xb9, 0xf5, 0x87, 0xb5, 0x0e, 0xeb, 0x7c, 0x41, 0xb2, 0x85, 0xfb, 0x88,
|
||||
0x13, 0x9c, 0xf8, 0x1e, 0x87, 0xa2, 0xeb, 0xd4, 0x28, 0x02, 0xa3, 0x08,
|
||||
0x03, 0x53, 0x48, 0x27, 0xa2, 0x1c, 0x85, 0x44, 0x61, 0x80, 0x56, 0x8a,
|
||||
0xdc, 0x39, 0x06, 0x69, 0x46, 0x77, 0x30, 0xa0, 0xb3, 0x3e, 0xe0, 0xb7,
|
||||
0x57, 0xfe, 0x97, 0x6e, 0xbf, 0x47, 0x96, 0xdb, 0xa1, 0x84, 0x5e, 0x58,
|
||||
0x58, 0x38, 0xfb, 0xc0, 0xf3, 0xd4, 0x4d, 0x36, 0x34, 0xf2, 0x73, 0x67,
|
||||
0xdd, 0x99, 0x7a, 0xbd, 0xce, 0x9e, 0x99, 0x3d, 0x44, 0x81, 0x46, 0xa1,
|
||||
0x09, 0xb4, 0x77, 0x23, 0xa3, 0x7c, 0xda, 0xb2, 0x22, 0x7d, 0xf9, 0xf0,
|
||||
0x2c, 0x16, 0xa5, 0x7d, 0x01, 0x14, 0x05, 0x1a, 0x05, 0xc6, 0xb7, 0xc5,
|
||||
0x46, 0x19, 0x8c, 0xd6, 0x44, 0x81, 0x21, 0x0e, 0x03, 0x4a, 0x51, 0x48,
|
||||
0x1c, 0x86, 0x44, 0xa1, 0x41, 0x29, 0x45, 0x5e, 0x04, 0x21, 0xcd, 0x73,
|
||||
0xd2, 0xdc, 0x72, 0xfb, 0xce, 0x22, 0x83, 0x24, 0xc1, 0x8e, 0xfa, 0x24,
|
||||
0xae, 0x6f, 0x06, 0x7e, 0x53, 0x02, 0x22, 0x72, 0xde, 0x3a, 0x7b, 0x26,
|
||||
0xcd, 0x52, 0x56, 0xea, 0xf7, 0x88, 0xbf, 0xf0, 0x05, 0x02, 0xed, 0xdb,
|
||||
0xdc, 0xc0, 0x28, 0x42, 0x09, 0x08, 0x8d, 0x26, 0x37, 0x9a, 0xcc, 0x6a,
|
||||
0xd2, 0x5c, 0x79, 0x4f, 0xd7, 0xca, 0x67, 0x62, 0x18, 0x79, 0x0c, 0x1a,
|
||||
0x30, 0x46, 0x11, 0x68, 0x43, 0x18, 0x68, 0x6f, 0x95, 0x61, 0x40, 0x14,
|
||||
0x04, 0x04, 0xc6, 0x67, 0x35, 0x77, 0x96, 0xdc, 0x59, 0x06, 0x69, 0xc6,
|
||||
0x20, 0xcb, 0x58, 0x69, 0xd4, 0x69, 0xac, 0x36, 0xc9, 0xf2, 0xbc, 0xd8,
|
||||
0x5e, 0x02, 0x70, 0x6e, 0x33, 0xf0, 0x9b, 0x4a, 0x08, 0xe0, 0xbb, 0xdf,
|
||||
0xfd, 0xbb, 0x9f, 0x86, 0x41, 0xf0, 0xcd, 0x52, 0x14, 0xf2, 0xd4, 0x97,
|
||||
0x0e, 0x31, 0xbd, 0xab, 0x46, 0x29, 0x0c, 0x88, 0xc3, 0x80, 0xa0, 0xb0,
|
||||
0x39, 0x27, 0xe2, 0xed, 0xd2, 0xba, 0x09, 0x39, 0x15, 0x1b, 0x19, 0x7c,
|
||||
0xe5, 0xd0, 0xca, 0xf7, 0x36, 0xa1, 0xd1, 0x04, 0xc6, 0x14, 0x47, 0xd1,
|
||||
0xa0, 0x89, 0x90, 0x59, 0x4b, 0x92, 0x65, 0xf4, 0x93, 0x8c, 0x5e, 0x92,
|
||||
0x70, 0xaf, 0x5e, 0xe7, 0xe3, 0x1b, 0xd7, 0x59, 0x4f, 0x92, 0x49, 0x02,
|
||||
0x97, 0x17, 0x16, 0xce, 0xfe, 0xc1, 0x56, 0x04, 0x36, 0xdd, 0x13, 0x87,
|
||||
0x46, 0xbf, 0x9a, 0xe7, 0xd9, 0xc9, 0x14, 0x6a, 0xd7, 0x6f, 0xde, 0x22,
|
||||
0x38, 0x14, 0xa0, 0xa7, 0x76, 0xf8, 0xaa, 0x19, 0x86, 0x18, 0xa3, 0x09,
|
||||
0x14, 0x50, 0x54, 0x4d, 0xe7, 0x1c, 0xae, 0xd8, 0xd7, 0x4e, 0x5a, 0x86,
|
||||
0x2e, 0xaa, 0xb7, 0xd6, 0x1a, 0x53, 0x54, 0x73, 0x41, 0xb0, 0xce, 0x15,
|
||||
0xe0, 0x73, 0xfa, 0x49, 0x46, 0x3f, 0x49, 0x58, 0x69, 0x34, 0xb8, 0x71,
|
||||
0xeb, 0x26, 0x49, 0x9a, 0x93, 0x5b, 0x3b, 0x69, 0x9d, 0xa7, 0xb6, 0x02,
|
||||
0xbf, 0x65, 0x06, 0x00, 0x5e, 0xfe, 0xce, 0xdf, 0xfe, 0xb9, 0x52, 0xfa,
|
||||
0xaf, 0x4b, 0x51, 0x44, 0xb5, 0x5c, 0xe2, 0xf0, 0xa1, 0x83, 0xd4, 0xa6,
|
||||
0xa6, 0x28, 0x47, 0x61, 0x91, 0x09, 0xdf, 0x35, 0x6a, 0xad, 0x46, 0x75,
|
||||
0xc6, 0xc3, 0x2b, 0x46, 0x91, 0x86, 0xd1, 0xf3, 0x0b, 0xf1, 0xc0, 0x73,
|
||||
0xeb, 0xb5, 0xee, 0x23, 0x9f, 0xd2, 0x4f, 0x52, 0x16, 0xef, 0xdc, 0xe5,
|
||||
0xee, 0xf2, 0x12, 0x83, 0x24, 0x25, 0xcd, 0xb2, 0x49, 0xed, 0x7f, 0x6f,
|
||||
0x61, 0xe1, 0xec, 0xdb, 0x9f, 0x88, 0x00, 0xc0, 0xb7, 0x4f, 0x5f, 0x78,
|
||||
0x27, 0x30, 0xe6, 0x64, 0x5c, 0x90, 0x38, 0x78, 0xe0, 0x00, 0xd3, 0x3b,
|
||||
0xc7, 0x24, 0xa2, 0x20, 0xc0, 0x14, 0x44, 0x86, 0x3b, 0xaa, 0x91, 0x7e,
|
||||
0xc4, 0x93, 0x71, 0xe2, 0x1d, 0xca, 0x4b, 0xcd, 0x2f, 0xd2, 0x41, 0x9a,
|
||||
0xb1, 0x9e, 0xa6, 0xb4, 0xbb, 0x5d, 0x6e, 0x2c, 0x2e, 0xd2, 0x6c, 0xb7,
|
||||
0x19, 0x24, 0x29, 0xb9, 0xcd, 0xc9, 0xed, 0x08, 0xfc, 0x4f, 0x17, 0x16,
|
||||
0xce, 0x7e, 0xeb, 0x61, 0xe0, 0xe1, 0x11, 0x4f, 0xa7, 0x03, 0x63, 0x4e,
|
||||
0x25, 0x59, 0x76, 0x49, 0x44, 0x8e, 0x39, 0x67, 0xb9, 0x7a, 0xed, 0x1a,
|
||||
0xf3, 0x7b, 0x66, 0xd9, 0x3b, 0x37, 0x4b, 0x25, 0x8e, 0x89, 0x42, 0x4b,
|
||||
0x14, 0x18, 0x42, 0x63, 0x30, 0x5a, 0xa1, 0x95, 0x46, 0xa9, 0xa2, 0xef,
|
||||
0xa1, 0xb0, 0x56, 0xeb, 0xc8, 0x9d, 0x23, 0xcd, 0xf2, 0xc2, 0x65, 0x72,
|
||||
0xba, 0xfd, 0x75, 0x96, 0x56, 0x96, 0x59, 0xa9, 0xd7, 0xe9, 0x0f, 0x52,
|
||||
0xd2, 0x2c, 0xf5, 0x6b, 0xc8, 0x3d, 0x1e, 0xf8, 0x47, 0x66, 0x00, 0xe0,
|
||||
0xe5, 0x6f, 0xff, 0x4d, 0x2d, 0xcd, 0xf3, 0x4b, 0x81, 0x31, 0xc7, 0x46,
|
||||
0x1e, 0x5e, 0x2e, 0x31, 0xb7, 0x7b, 0x0f, 0x33, 0xb5, 0x1a, 0xe5, 0x52,
|
||||
0x4c, 0x38, 0x5a, 0x9c, 0x9e, 0x00, 0x82, 0x5f, 0x13, 0xe2, 0xb7, 0xa2,
|
||||
0x99, 0xb5, 0xa4, 0x59, 0x4e, 0xab, 0xd3, 0x61, 0xad, 0xd5, 0xa4, 0xbe,
|
||||
0xba, 0xca, 0x7a, 0xe2, 0x81, 0x67, 0x79, 0xb1, 0x37, 0x18, 0x57, 0xdc,
|
||||
0x6d, 0x83, 0xdf, 0x16, 0x01, 0x80, 0xef, 0x9c, 0xbe, 0x50, 0x4b, 0xd2,
|
||||
0xf4, 0x1d, 0xad, 0xf5, 0x73, 0x51, 0x68, 0x08, 0x03, 0xdf, 0xb7, 0x44,
|
||||
0x61, 0xc8, 0xce, 0x1d, 0x3b, 0xa8, 0x56, 0xaa, 0xec, 0xa8, 0x56, 0x88,
|
||||
0xc2, 0x08, 0x63, 0x0c, 0x00, 0xd6, 0xe6, 0x24, 0x69, 0xc6, 0x60, 0x30,
|
||||
0xa0, 0xdb, 0xeb, 0xd2, 0xea, 0x74, 0x48, 0xd2, 0x94, 0x41, 0x9a, 0x91,
|
||||
0xe5, 0x99, 0xb7, 0x5e, 0x67, 0x47, 0x45, 0xb0, 0x18, 0xe7, 0x16, 0x16,
|
||||
0xce, 0xbe, 0xba, 0x5d, 0xf0, 0xdb, 0x26, 0x30, 0x1c, 0xdf, 0x3a, 0xf5,
|
||||
0xc6, 0x39, 0xa5, 0xd4, 0xf7, 0x8d, 0xd6, 0x18, 0xe3, 0x8b, 0x53, 0x50,
|
||||
0x78, 0xba, 0xdf, 0x88, 0x98, 0x91, 0x84, 0xc0, 0x2f, 0x58, 0xe7, 0x86,
|
||||
0x36, 0x9b, 0x8f, 0xec, 0xd6, 0x39, 0x37, 0x92, 0x4b, 0x71, 0xfb, 0xeb,
|
||||
0xc0, 0xa9, 0x85, 0x85, 0xb3, 0xbf, 0x7c, 0x1c, 0xf0, 0x8f, 0x4d, 0x00,
|
||||
0xe0, 0xa5, 0x97, 0x5e, 0x3f, 0xa6, 0x94, 0x3a, 0xaf, 0x95, 0x3a, 0xa1,
|
||||
0x0a, 0xdd, 0x6b, 0xa5, 0xbc, 0x1b, 0xe1, 0xb7, 0x86, 0x30, 0xec, 0xff,
|
||||
0x0b, 0x19, 0x15, 0x51, 0x76, 0x32, 0x7e, 0xe4, 0x58, 0xdc, 0xb6, 0x09,
|
||||
0x9c, 0x7f, 0xdc, 0xa8, 0x7f, 0x2a, 0x02, 0xc3, 0xf1, 0xe2, 0x8b, 0x3f,
|
||||
0x78, 0x4e, 0x29, 0x4e, 0x69, 0xa5, 0x5f, 0x50, 0x4a, 0xd5, 0xb4, 0x1e,
|
||||
0x6e, 0xc0, 0xc7, 0x0f, 0x91, 0x87, 0x80, 0x9d, 0x13, 0x84, 0x0d, 0xc0,
|
||||
0x2f, 0x03, 0xe7, 0xd9, 0xa2, 0x41, 0xfb, 0x7f, 0x21, 0x30, 0x39, 0x5e,
|
||||
0x7c, 0xf1, 0x07, 0x27, 0x81, 0xe3, 0xf8, 0xc7, 0x1e, 0x07, 0x8b, 0x63,
|
||||
0x38, 0x9a, 0x78, 0xc0, 0xd7, 0xf1, 0xed, 0xf0, 0xa5, 0x85, 0x85, 0xb3,
|
||||
0x37, 0x3e, 0xf5, 0x4d, 0x8b, 0xf1, 0x3b, 0xfb, 0x4b, 0xfd, 0x67, 0x35,
|
||||
0x3e, 0xf7, 0xff, 0xec, 0xf1, 0xb9, 0x27, 0xf0, 0x7f, 0xca, 0x8f, 0x08,
|
||||
0x2e, 0x45, 0xb6, 0x8c, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
@@ -1,278 +0,0 @@
|
||||
static const unsigned char toolbar_play_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, 0x87, 0x00, 0x00, 0x00,
|
||||
0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
|
||||
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b,
|
||||
0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x25, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
|
||||
0x72, 0x65, 0x00, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x6d, 0x65, 0x64, 0x69,
|
||||
0x61, 0x20, 0x46, 0x69, 0x72, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20,
|
||||
0x4d, 0x58, 0x20, 0x32, 0x30, 0x30, 0x34, 0x87, 0x76, 0xac, 0xcf, 0x00,
|
||||
0x00, 0x00, 0x14, 0x74, 0x45, 0x58, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x00, 0x39, 0x2f, 0x34,
|
||||
0x2f, 0x30, 0x34, 0x79, 0x5e, 0xa3, 0xd5, 0x00, 0x00, 0x0c, 0x3b, 0x49,
|
||||
0x44, 0x41, 0x54, 0x78, 0x9c, 0xd5, 0x9a, 0x5b, 0x8c, 0x5d, 0xd5, 0x79,
|
||||
0xc7, 0x7f, 0x6b, 0xad, 0xbd, 0xf7, 0x39, 0x67, 0x8e, 0xc7, 0x3e, 0x33,
|
||||
0xe3, 0xb1, 0x31, 0xc1, 0xc6, 0xc4, 0x02, 0xcb, 0x15, 0xc1, 0x6e, 0x22,
|
||||
0x45, 0xb2, 0xaa, 0x82, 0x93, 0x87, 0xf8, 0x05, 0xc5, 0x48, 0x3c, 0x54,
|
||||
0x02, 0xa1, 0x38, 0x8a, 0x5a, 0x72, 0x91, 0xb8, 0x3c, 0xf0, 0xe4, 0x54,
|
||||
0x71, 0x84, 0x52, 0x22, 0x24, 0x0a, 0x76, 0x2b, 0x55, 0x69, 0x1f, 0x8c,
|
||||
0x54, 0xcd, 0x6b, 0x45, 0xda, 0x07, 0xd2, 0x44, 0x45, 0xb6, 0xd3, 0x48,
|
||||
0xb4, 0x02, 0xc9, 0x24, 0x10, 0xf0, 0x05, 0x18, 0xdb, 0x83, 0x2f, 0x33,
|
||||
0x73, 0xe6, 0x7e, 0x2e, 0xfb, 0xb2, 0xbe, 0xaf, 0x0f, 0x7b, 0x9f, 0xcb,
|
||||
0xd8, 0x33, 0xe3, 0x31, 0x44, 0x45, 0x2c, 0x69, 0xe9, 0xdc, 0xf7, 0xfe,
|
||||
0xff, 0xbf, 0xff, 0xb7, 0xfe, 0xdf, 0xb7, 0xd6, 0x8c, 0x51, 0x55, 0xbe,
|
||||
0xc8, 0xc3, 0x7e, 0xde, 0x00, 0x3e, 0xeb, 0x08, 0x3e, 0xcf, 0x9b, 0x3f,
|
||||
0xf9, 0xe4, 0x3f, 0x9b, 0xce, 0xf3, 0x5f, 0xfc, 0xe2, 0x6f, 0x3e, 0x55,
|
||||
0x2a, 0x98, 0x3f, 0x55, 0x0a, 0xfd, 0xfc, 0xe7, 0xbf, 0xda, 0xa9, 0xaa,
|
||||
0x07, 0x54, 0xe5, 0x80, 0x88, 0xec, 0x14, 0xd1, 0xbd, 0xaa, 0x52, 0x13,
|
||||
0x11, 0x44, 0x04, 0x55, 0x19, 0x17, 0x91, 0x8b, 0x22, 0x72, 0x52, 0x44,
|
||||
0xde, 0x99, 0x9f, 0x6f, 0xfe, 0x72, 0x85, 0xcb, 0x28, 0xdc, 0x1e, 0x99,
|
||||
0xcf, 0x44, 0xe0, 0xa5, 0x97, 0xde, 0xa8, 0xa9, 0xca, 0x23, 0xaa, 0xfa,
|
||||
0xb4, 0xaa, 0xee, 0xcb, 0x81, 0x2a, 0x7d, 0xa0, 0xbb, 0xcf, 0x97, 0xbf,
|
||||
0xf6, 0x88, 0xc8, 0x9c, 0x88, 0xfc, 0xbb, 0xf7, 0xf2, 0xaf, 0xad, 0x56,
|
||||
0x76, 0xaa, 0x00, 0xdf, 0x99, 0x00, 0xba, 0x1e, 0x22, 0x9f, 0x9a, 0xc0,
|
||||
0xcb, 0x2f, 0x9f, 0x3c, 0x0a, 0xfa, 0xb4, 0x88, 0xd6, 0x54, 0x95, 0x72,
|
||||
0xb9, 0x44, 0xb5, 0x5a, 0x65, 0x70, 0x70, 0x10, 0x63, 0x0c, 0x51, 0x54,
|
||||
0xea, 0x82, 0x4d, 0xd3, 0x94, 0x66, 0x73, 0x89, 0xa5, 0xa5, 0x26, 0x8b,
|
||||
0x8b, 0xf3, 0x2c, 0x2e, 0x2e, 0x92, 0x65, 0x69, 0x3f, 0xb9, 0xd3, 0xde,
|
||||
0xfb, 0xe7, 0x92, 0x84, 0x33, 0x05, 0x01, 0xe9, 0x90, 0xb9, 0x15, 0x89,
|
||||
0xdb, 0x5e, 0x03, 0xc7, 0x8e, 0x9d, 0x3e, 0x60, 0x8c, 0x39, 0x61, 0xad,
|
||||
0xdd, 0x69, 0xad, 0x65, 0x78, 0x78, 0x98, 0xbb, 0xef, 0xbe, 0x83, 0x91,
|
||||
0x91, 0x0a, 0x03, 0x03, 0x01, 0x41, 0x60, 0x09, 0x02, 0x87, 0xf7, 0x20,
|
||||
0x02, 0x8d, 0x46, 0xc2, 0xd2, 0x52, 0xcc, 0xfc, 0x7c, 0x93, 0x7a, 0x7d,
|
||||
0x81, 0xe1, 0xe1, 0x21, 0x92, 0x24, 0x61, 0x7e, 0x7e, 0x96, 0xab, 0x57,
|
||||
0xaf, 0x11, 0xc7, 0x31, 0xc0, 0x83, 0xc6, 0x98, 0xff, 0x09, 0x43, 0xff,
|
||||
0x77, 0x69, 0x6a, 0x9f, 0x07, 0x4c, 0x41, 0xa2, 0x43, 0x64, 0xd5, 0x71,
|
||||
0x5b, 0x0a, 0x1c, 0x3f, 0xfe, 0xdf, 0x47, 0x8d, 0x31, 0x3f, 0x01, 0xd8,
|
||||
0xb2, 0x65, 0x94, 0xfb, 0xef, 0xdf, 0xce, 0x96, 0x2d, 0x25, 0x4a, 0x25,
|
||||
0x8b, 0x08, 0x5d, 0xd0, 0x6b, 0x3d, 0x9f, 0x9c, 0x9c, 0x63, 0x62, 0xe2,
|
||||
0x1a, 0xcd, 0x66, 0x0b, 0x91, 0x8c, 0xa9, 0xa9, 0x29, 0x26, 0x27, 0x27,
|
||||
0xbb, 0x8a, 0xa8, 0xca, 0x6f, 0xbd, 0xd7, 0xbf, 0x52, 0x0d, 0xea, 0x80,
|
||||
0x07, 0x64, 0x2d, 0x15, 0xd6, 0xad, 0xc0, 0xf1, 0xe3, 0xbf, 0x3d, 0x61,
|
||||
0xad, 0x3d, 0x5c, 0x2a, 0x95, 0x78, 0xe0, 0x81, 0xdd, 0xdc, 0x77, 0xdf,
|
||||
0x06, 0xca, 0x65, 0xd3, 0x05, 0xd7, 0x6a, 0x79, 0x66, 0x66, 0x12, 0x16,
|
||||
0x16, 0x52, 0xda, 0xed, 0x7c, 0x7a, 0xef, 0x11, 0xf1, 0x44, 0x91, 0xa3,
|
||||
0x54, 0x0a, 0xa9, 0x54, 0x4a, 0xd4, 0x6a, 0x83, 0x0c, 0x0d, 0xd5, 0xb8,
|
||||
0x7a, 0x75, 0x92, 0x8f, 0x3f, 0xbe, 0xc8, 0xd0, 0xd0, 0x30, 0x95, 0x4a,
|
||||
0x85, 0x89, 0x89, 0xcb, 0xb4, 0x5a, 0x2d, 0x80, 0xbf, 0x34, 0x46, 0xff,
|
||||
0x53, 0x35, 0x3b, 0x08, 0x41, 0x9d, 0xe5, 0xeb, 0xe2, 0xa6, 0xb1, 0x2e,
|
||||
0x05, 0x8e, 0x1d, 0x3b, 0x7d, 0xc2, 0x5a, 0x7b, 0xb8, 0x5a, 0xad, 0xf2,
|
||||
0xe0, 0x83, 0xf7, 0xb3, 0x63, 0x47, 0xd8, 0x8d, 0x68, 0xbd, 0xee, 0xb9,
|
||||
0x76, 0x2d, 0xa1, 0xd9, 0xcc, 0x10, 0xf1, 0x78, 0x2f, 0xc5, 0xa3, 0xef,
|
||||
0x7b, 0x14, 0xbc, 0xf7, 0x78, 0x9f, 0x91, 0x65, 0x42, 0xad, 0xb6, 0x81,
|
||||
0xad, 0x5b, 0xb7, 0x92, 0x24, 0x19, 0xef, 0xbe, 0xfb, 0x1e, 0x69, 0x1a,
|
||||
0xe3, 0xbd, 0xe7, 0xea, 0xd5, 0x2b, 0xcc, 0xcf, 0xcf, 0x75, 0xd6, 0xc5,
|
||||
0x1f, 0x54, 0xcd, 0xb7, 0x8c, 0x89, 0xa6, 0x01, 0xbf, 0x9a, 0x0a, 0xb7,
|
||||
0x2c, 0x64, 0x2f, 0xbf, 0x7c, 0xf2, 0x04, 0x70, 0x78, 0xd3, 0xa6, 0x1a,
|
||||
0x07, 0x0f, 0x7e, 0x85, 0xed, 0xdb, 0xc3, 0x22, 0xe2, 0x70, 0xfe, 0x7c,
|
||||
0xc6, 0xc4, 0x44, 0x46, 0x1c, 0x2b, 0xc6, 0x18, 0xc0, 0x60, 0x0a, 0x67,
|
||||
0xcf, 0x1f, 0x4d, 0x31, 0xbb, 0xf1, 0x02, 0xa0, 0x5e, 0x9f, 0xe5, 0xf7,
|
||||
0xbf, 0x7f, 0x97, 0xd9, 0xd9, 0x59, 0xf6, 0xec, 0xf9, 0x33, 0xac, 0x75,
|
||||
0x88, 0x28, 0x5b, 0xb6, 0x6c, 0xa5, 0x5c, 0x1e, 0xe8, 0xfc, 0xee, 0x2b,
|
||||
0xaa, 0xfe, 0x5f, 0x00, 0x77, 0xc3, 0x45, 0xd6, 0x4f, 0xe0, 0xa5, 0x97,
|
||||
0xfe, 0xeb, 0x69, 0x55, 0x3d, 0x5c, 0x2e, 0x97, 0xf9, 0xc6, 0x37, 0x76,
|
||||
0x33, 0x3c, 0x1c, 0x20, 0x02, 0xd3, 0xd3, 0xca, 0x87, 0x1f, 0x2a, 0xed,
|
||||
0xf6, 0xad, 0xe8, 0xd3, 0x25, 0x94, 0x3f, 0xef, 0xbd, 0x50, 0x85, 0x4f,
|
||||
0x3e, 0x99, 0xe0, 0xc2, 0x85, 0x0b, 0xec, 0xda, 0x75, 0x5f, 0xd7, 0x7e,
|
||||
0xb7, 0x6e, 0xdd, 0x4a, 0x10, 0x74, 0x33, 0xfb, 0xe1, 0x2c, 0x6b, 0x3c,
|
||||
0x05, 0xd8, 0xfe, 0xa2, 0xb7, 0x2e, 0x02, 0x2f, 0xbe, 0xf8, 0x9b, 0x7d,
|
||||
0xaa, 0xfa, 0x8a, 0x73, 0x8e, 0xfd, 0xfb, 0xef, 0x67, 0x78, 0x38, 0x8f,
|
||||
0xfc, 0xa5, 0x4b, 0x9e, 0x2b, 0x57, 0x72, 0xfb, 0x03, 0xa5, 0x93, 0x81,
|
||||
0x2b, 0xa7, 0x62, 0xef, 0xf3, 0xce, 0xeb, 0x1e, 0x87, 0xfc, 0xb3, 0x66,
|
||||
0x73, 0x91, 0x4b, 0x97, 0xc6, 0xd9, 0xb6, 0xed, 0x4b, 0xa8, 0x2a, 0xc6,
|
||||
0x58, 0x46, 0x47, 0x47, 0xe9, 0x4b, 0xfb, 0x23, 0x69, 0xba, 0x74, 0xcf,
|
||||
0x6a, 0x38, 0xd7, 0x50, 0x40, 0x4f, 0xa8, 0xc2, 0x9e, 0x3d, 0xf7, 0xb2,
|
||||
0x7d, 0x7b, 0x05, 0x11, 0xb8, 0x78, 0x31, 0x61, 0x66, 0x26, 0x2b, 0x0a,
|
||||
0x91, 0xef, 0x16, 0xa7, 0x5f, 0xff, 0xfa, 0x37, 0x34, 0x1a, 0x4b, 0xa8,
|
||||
0x6a, 0x97, 0x48, 0x0f, 0x78, 0x8f, 0x41, 0xfe, 0x9e, 0x2e, 0xfb, 0x4c,
|
||||
0x15, 0x16, 0x17, 0x17, 0x98, 0x9b, 0x9b, 0x25, 0x0c, 0xcb, 0xa8, 0x0a,
|
||||
0xa5, 0x52, 0x99, 0x0d, 0x1b, 0x06, 0x3b, 0x5f, 0xda, 0xa4, 0x2a, 0x7f,
|
||||
0xcb, 0x2a, 0x69, 0xb4, 0x22, 0x81, 0x17, 0x5e, 0x78, 0xfd, 0x3b, 0xaa,
|
||||
0xba, 0x6f, 0xe3, 0xc6, 0x8d, 0xdc, 0x7b, 0xef, 0x08, 0xc6, 0x18, 0xa6,
|
||||
0xa7, 0x53, 0xea, 0xf5, 0x14, 0xef, 0xa5, 0x3b, 0x3b, 0x85, 0xe8, 0xfa,
|
||||
0xf5, 0xeb, 0xbc, 0xfe, 0xfa, 0xaf, 0x38, 0x7b, 0xf6, 0x5c, 0x97, 0x44,
|
||||
0x3e, 0x3b, 0xc0, 0x6f, 0x34, 0x12, 0x2d, 0xc0, 0xf7, 0xde, 0x5f, 0x5c,
|
||||
0x5c, 0x20, 0x4d, 0x63, 0x44, 0xf2, 0xf7, 0x6b, 0xb5, 0x21, 0x54, 0xbb,
|
||||
0xca, 0x3e, 0x11, 0xc7, 0x73, 0x2b, 0xaa, 0xb0, 0x22, 0x01, 0x55, 0x3d,
|
||||
0xaa, 0xaa, 0xec, 0xd9, 0xf3, 0x65, 0x36, 0x6e, 0x8c, 0x68, 0xb7, 0x85,
|
||||
0x89, 0x89, 0x56, 0x5f, 0x1b, 0xd0, 0x53, 0x20, 0x4f, 0x25, 0x38, 0x78,
|
||||
0xf0, 0x01, 0xce, 0x9d, 0xfb, 0x23, 0xa7, 0x4e, 0x9d, 0x5e, 0xa6, 0xc6,
|
||||
0x72, 0x32, 0x5a, 0xa4, 0x89, 0x29, 0xc0, 0xd1, 0x05, 0x2c, 0xa2, 0xa4,
|
||||
0x69, 0xa7, 0x16, 0x28, 0xce, 0x39, 0xaa, 0xd5, 0x2a, 0xc6, 0x74, 0xbe,
|
||||
0xc7, 0x53, 0xeb, 0x22, 0xf0, 0xfc, 0xf3, 0xff, 0x71, 0x48, 0x55, 0x77,
|
||||
0x0e, 0x0d, 0xd5, 0x18, 0x1d, 0xad, 0x22, 0x02, 0x97, 0x2f, 0x37, 0x49,
|
||||
0xd3, 0x1e, 0xe0, 0x0e, 0x81, 0x8e, 0x45, 0x02, 0x3c, 0xfc, 0xf0, 0xd7,
|
||||
0xf8, 0xf1, 0x8f, 0x1f, 0x65, 0x68, 0x28, 0xe2, 0x8d, 0x37, 0x4e, 0xf1,
|
||||
0xe1, 0x87, 0x1f, 0xa1, 0x2a, 0x37, 0x11, 0xe9, 0x57, 0xa4, 0xa3, 0x50,
|
||||
0x4e, 0x42, 0x6e, 0x50, 0xcc, 0x30, 0x30, 0x50, 0x2d, 0xf2, 0x46, 0x01,
|
||||
0x39, 0xb4, 0xd2, 0x42, 0xbe, 0x89, 0x80, 0xaa, 0x1e, 0x56, 0x15, 0x36,
|
||||
0x6f, 0x1e, 0x61, 0x68, 0xa8, 0xc2, 0xc2, 0x42, 0xc2, 0xec, 0x6c, 0xeb,
|
||||
0x06, 0xe0, 0xd2, 0xf5, 0xfb, 0x99, 0x99, 0x3a, 0x77, 0xdd, 0x35, 0x82,
|
||||
0x08, 0x0c, 0x0d, 0x0d, 0xf2, 0xec, 0xb3, 0x0f, 0xf3, 0xd8, 0x63, 0x7f,
|
||||
0xc1, 0x47, 0x1f, 0x5d, 0xe0, 0xcd, 0x37, 0xff, 0x97, 0x66, 0xb3, 0xd9,
|
||||
0x8d, 0x7c, 0x47, 0x89, 0x4e, 0xd4, 0x3b, 0xcd, 0x9d, 0xaa, 0x14, 0x37,
|
||||
0x17, 0x50, 0xc5, 0x1a, 0x83, 0x41, 0xa9, 0x0e, 0x54, 0x00, 0xd3, 0x49,
|
||||
0xfe, 0xbb, 0x1b, 0x8d, 0xe9, 0x7d, 0x6b, 0x12, 0x38, 0x7a, 0xf4, 0xdf,
|
||||
0x6a, 0xaa, 0xf2, 0x48, 0x10, 0x84, 0x8c, 0x8e, 0x0e, 0x17, 0x96, 0xd9,
|
||||
0xa2, 0xbf, 0xa3, 0xec, 0x00, 0xef, 0xa4, 0x50, 0x1c, 0x27, 0x54, 0x2a,
|
||||
0x51, 0xb7, 0xb0, 0x89, 0xc0, 0xd7, 0xbf, 0x7e, 0x1f, 0xcf, 0x3f, 0xff,
|
||||
0x18, 0x77, 0xdd, 0xb5, 0x91, 0xdf, 0xfd, 0xee, 0x4d, 0xc6, 0xc7, 0x2f,
|
||||
0xf5, 0xa9, 0xd1, 0xe9, 0x4a, 0x57, 0x56, 0xc5, 0x98, 0xa2, 0x0a, 0x18,
|
||||
0x70, 0xce, 0x51, 0x2a, 0x95, 0xa1, 0x9b, 0x72, 0x7a, 0xe8, 0x46, 0x02,
|
||||
0xcb, 0x5a, 0x09, 0x11, 0x7d, 0xc8, 0x5a, 0xa5, 0x5a, 0x1d, 0xa0, 0x5a,
|
||||
0x8d, 0x48, 0x53, 0x61, 0x7a, 0xba, 0x51, 0xf8, 0x77, 0x6e, 0x71, 0xd0,
|
||||
0xf3, 0xf3, 0x1e, 0xa0, 0xbc, 0xdf, 0xe9, 0x1f, 0x51, 0x14, 0xf1, 0xbd,
|
||||
0xef, 0x7d, 0x8b, 0xf3, 0xe7, 0xaf, 0x30, 0x36, 0x76, 0x8a, 0xc9, 0xc9,
|
||||
0x29, 0x76, 0xef, 0xbe, 0x97, 0x30, 0x74, 0xcb, 0xa2, 0x2f, 0x22, 0xa8,
|
||||
0x68, 0x01, 0xda, 0x60, 0x8c, 0xc1, 0x1a, 0x83, 0xa8, 0x20, 0x0a, 0x41,
|
||||
0xe0, 0x30, 0x3d, 0x03, 0xd8, 0xbb, 0xa6, 0x02, 0xaa, 0xba, 0x4f, 0x55,
|
||||
0x18, 0x18, 0x18, 0xa0, 0x5c, 0x0e, 0x59, 0x58, 0x88, 0x97, 0x45, 0x7e,
|
||||
0x79, 0x5b, 0xe0, 0xbb, 0xef, 0xe7, 0xe4, 0x57, 0x9e, 0xbb, 0x76, 0xdd,
|
||||
0xc9, 0x73, 0xcf, 0x3d, 0xca, 0xde, 0xbd, 0x3b, 0x78, 0xfb, 0xed, 0x33,
|
||||
0x4c, 0x4c, 0x5c, 0x2d, 0xae, 0xd9, 0x59, 0xbc, 0xd2, 0x8b, 0x3e, 0x86,
|
||||
0xc0, 0x5a, 0x02, 0x67, 0x71, 0xd6, 0x61, 0x2d, 0x94, 0xcb, 0xa5, 0x3e,
|
||||
0x85, 0xa8, 0xdd, 0x82, 0x80, 0x1c, 0x10, 0x51, 0x82, 0x20, 0x60, 0x60,
|
||||
0xa0, 0xcc, 0xc2, 0x42, 0xeb, 0x26, 0xc7, 0x59, 0xee, 0x42, 0x9e, 0x46,
|
||||
0xa3, 0x41, 0xb9, 0x5c, 0xc2, 0x7b, 0x56, 0x9d, 0x51, 0x14, 0xf1, 0xed,
|
||||
0x6f, 0xef, 0xe7, 0xa9, 0xa7, 0x0e, 0x91, 0xa6, 0x0d, 0x3e, 0xf8, 0xe0,
|
||||
0x3c, 0xed, 0x76, 0xdc, 0x33, 0x01, 0xcd, 0xc1, 0x3b, 0x9b, 0xcf, 0xc0,
|
||||
0x5a, 0x9c, 0x31, 0x58, 0x63, 0xb1, 0x26, 0x8f, 0x7f, 0x91, 0x69, 0x07,
|
||||
0x6e, 0xa5, 0x40, 0x2d, 0x2f, 0x24, 0xa5, 0xa2, 0x97, 0x6f, 0xaf, 0xe8,
|
||||
0x3c, 0xbd, 0x5a, 0xe0, 0x69, 0x36, 0x1b, 0x6c, 0xdb, 0x36, 0xb2, 0xaa,
|
||||
0x02, 0xfd, 0x73, 0xdb, 0xb6, 0x11, 0x9e, 0x79, 0xe6, 0x51, 0xf6, 0xef,
|
||||
0xdf, 0xcd, 0xc4, 0xc4, 0x65, 0xea, 0xf5, 0xd9, 0x5c, 0x09, 0x04, 0x6b,
|
||||
0xc8, 0x09, 0x38, 0x5b, 0x4c, 0x83, 0xb5, 0x79, 0x4a, 0xf5, 0x9c, 0xe8,
|
||||
0xe6, 0x71, 0xc3, 0x1a, 0x90, 0x7d, 0x9d, 0x3c, 0x14, 0x81, 0x85, 0x85,
|
||||
0x06, 0xc6, 0xd8, 0x6e, 0x6e, 0xc2, 0xf2, 0x7e, 0x26, 0xff, 0x8d, 0xae,
|
||||
0xb8, 0x06, 0xd6, 0x1a, 0xdf, 0xfc, 0xe6, 0xd7, 0xf8, 0xea, 0x57, 0x77,
|
||||
0xf3, 0xc6, 0x1b, 0xef, 0x30, 0x39, 0x39, 0x87, 0x35, 0xa6, 0x20, 0xe0,
|
||||
0x08, 0x5d, 0x80, 0x35, 0xf9, 0x75, 0xad, 0x91, 0xa2, 0x66, 0xac, 0xde,
|
||||
0x51, 0x2f, 0x23, 0x90, 0xdb, 0x99, 0x2d, 0x22, 0x0e, 0x22, 0x82, 0x31,
|
||||
0xfd, 0x9d, 0xe6, 0x72, 0x12, 0xcb, 0xad, 0x71, 0xfd, 0x04, 0x00, 0xca,
|
||||
0xe5, 0x32, 0x43, 0x43, 0x83, 0x4c, 0x5e, 0x9f, 0xc3, 0x18, 0x83, 0x2b,
|
||||
0x72, 0x3f, 0x70, 0x16, 0x03, 0x38, 0x2b, 0x64, 0x62, 0x48, 0xd3, 0x64,
|
||||
0x95, 0x3e, 0x6b, 0x05, 0x02, 0x22, 0x8a, 0x31, 0xd2, 0x23, 0xe0, 0xf3,
|
||||
0x08, 0x50, 0x28, 0xd0, 0x6b, 0x91, 0x7b, 0xa3, 0xd5, 0x6a, 0x22, 0x32,
|
||||
0x74, 0x5b, 0x0a, 0xbc, 0xff, 0xfe, 0x25, 0xde, 0x7e, 0xfb, 0x1c, 0xad,
|
||||
0x56, 0x8c, 0x2b, 0x52, 0x27, 0x74, 0x8e, 0x28, 0x0c, 0x08, 0x83, 0xdc,
|
||||
0xa5, 0x8c, 0xcf, 0xad, 0x34, 0x4d, 0x53, 0xa4, 0x47, 0xe0, 0xcc, 0x9a,
|
||||
0x04, 0x54, 0x05, 0x83, 0x21, 0x8e, 0x63, 0x16, 0x16, 0x1a, 0x85, 0x22,
|
||||
0xbd, 0x9e, 0x5e, 0xc4, 0x70, 0x43, 0x06, 0xd1, 0x6c, 0xb6, 0xb9, 0xe3,
|
||||
0x8e, 0x91, 0x75, 0x29, 0x30, 0x35, 0x35, 0xc7, 0x5b, 0x6f, 0x9d, 0x63,
|
||||
0x6a, 0x6a, 0x96, 0x2c, 0xcb, 0x30, 0x08, 0xd6, 0xd8, 0x1c, 0x7c, 0x10,
|
||||
0x10, 0x05, 0x8e, 0xc0, 0x39, 0x52, 0x9f, 0x61, 0xac, 0xc1, 0x60, 0xba,
|
||||
0x6d, 0x49, 0x31, 0xe6, 0xd6, 0x24, 0x20, 0x22, 0x27, 0x8d, 0xb5, 0x07,
|
||||
0x92, 0xb8, 0x4d, 0xb3, 0xd1, 0xa2, 0x93, 0x77, 0xa6, 0x53, 0x3d, 0xa1,
|
||||
0xdb, 0xcb, 0x40, 0xaf, 0xf8, 0x84, 0x61, 0xb4, 0xa6, 0x02, 0xcd, 0x66,
|
||||
0xcc, 0x3b, 0xef, 0x5c, 0xe0, 0xf2, 0xe5, 0xeb, 0xa4, 0x69, 0x4a, 0x96,
|
||||
0x79, 0x50, 0xc1, 0x19, 0x43, 0x14, 0x38, 0xca, 0x51, 0x40, 0xb9, 0x14,
|
||||
0x12, 0x05, 0x0e, 0x80, 0xcc, 0xe7, 0xe0, 0xe3, 0x24, 0x2e, 0xa2, 0xdf,
|
||||
0x25, 0x70, 0xf2, 0x56, 0x04, 0xe6, 0x72, 0xd6, 0x8b, 0xcc, 0xd4, 0x67,
|
||||
0xa8, 0x94, 0x4b, 0x24, 0x71, 0x82, 0xa8, 0x60, 0xc8, 0x15, 0x52, 0x01,
|
||||
0x51, 0xed, 0x1d, 0xde, 0xdc, 0x62, 0x0d, 0x9c, 0x3d, 0x7b, 0x89, 0xf3,
|
||||
0xe7, 0x2f, 0xd3, 0x6a, 0xb5, 0xc9, 0xb2, 0x0c, 0xdf, 0x05, 0x6f, 0x29,
|
||||
0x85, 0x01, 0x03, 0xa5, 0x88, 0x4a, 0x14, 0x51, 0x0e, 0x03, 0x9c, 0x73,
|
||||
0x64, 0xe2, 0xbb, 0xd7, 0x9d, 0x9d, 0x9b, 0xc3, 0x7b, 0xed, 0x57, 0xe0,
|
||||
0x56, 0x29, 0xa4, 0x67, 0x14, 0x7d, 0xa4, 0xb1, 0xd4, 0xa0, 0xdd, 0x6e,
|
||||
0x52, 0xad, 0x0e, 0x80, 0x0a, 0x81, 0x31, 0x39, 0x68, 0x35, 0x18, 0x3c,
|
||||
0x5e, 0xa4, 0x78, 0xdd, 0xe9, 0x20, 0x6f, 0x76, 0xa1, 0x7a, 0x7d, 0x9e,
|
||||
0x33, 0x67, 0xce, 0xb2, 0xb8, 0xd8, 0xe8, 0x15, 0x3e, 0xef, 0x31, 0x28,
|
||||
0xce, 0x5a, 0xa2, 0xc0, 0x51, 0x89, 0xa2, 0x9c, 0x40, 0x29, 0x22, 0x0a,
|
||||
0x1d, 0xaa, 0x90, 0x79, 0x8f, 0xa0, 0x78, 0x15, 0xe6, 0xe6, 0x66, 0x97,
|
||||
0x35, 0x79, 0xeb, 0x51, 0xe0, 0x35, 0x63, 0xcc, 0xd1, 0x46, 0xa3, 0x81,
|
||||
0xcf, 0x32, 0xd2, 0x38, 0xc5, 0x19, 0x8a, 0xf2, 0x0e, 0x06, 0x21, 0xf3,
|
||||
0x79, 0x4a, 0x21, 0x79, 0x15, 0x6d, 0x36, 0x5b, 0xc5, 0x21, 0x56, 0x7e,
|
||||
0x8d, 0x56, 0xab, 0xcd, 0x7b, 0xef, 0x7d, 0xc8, 0x95, 0x2b, 0x93, 0x85,
|
||||
0xc5, 0x7a, 0xb4, 0x28, 0x56, 0xce, 0x1a, 0x9c, 0xc9, 0xc1, 0x97, 0xc2,
|
||||
0x80, 0x6a, 0xb9, 0xc4, 0x40, 0x29, 0x22, 0x0c, 0x02, 0xac, 0x85, 0x24,
|
||||
0xf3, 0x78, 0x15, 0x32, 0x2f, 0xd4, 0x67, 0x66, 0x89, 0x93, 0x14, 0x2f,
|
||||
0xdd, 0xc8, 0xbc, 0x36, 0x36, 0x76, 0x64, 0xfe, 0x46, 0x02, 0xcb, 0x0a,
|
||||
0xd9, 0xf1, 0xe3, 0x7f, 0xfd, 0x8e, 0x78, 0x3f, 0xee, 0xc5, 0x53, 0xaf,
|
||||
0x4f, 0xe3, 0xb3, 0x04, 0x63, 0x20, 0xb0, 0x10, 0x58, 0x4b, 0xe4, 0x1c,
|
||||
0x91, 0xb3, 0x84, 0xce, 0x10, 0x58, 0x70, 0x46, 0xd9, 0xba, 0x65, 0x33,
|
||||
0x23, 0x23, 0x23, 0x78, 0x0f, 0x67, 0xcf, 0x8e, 0x73, 0xfa, 0xd4, 0x5b,
|
||||
0x5c, 0xbb, 0x32, 0x09, 0x2a, 0x18, 0x15, 0xac, 0xe6, 0x37, 0x89, 0xac,
|
||||
0xa5, 0x12, 0x06, 0x54, 0xcb, 0x11, 0x1b, 0x2a, 0x65, 0x36, 0x55, 0x07,
|
||||
0x18, 0xac, 0x94, 0xf3, 0xe8, 0x07, 0xf9, 0xbe, 0x5d, 0x44, 0x49, 0x33,
|
||||
0x4f, 0x9c, 0xa6, 0x5c, 0x9f, 0xbc, 0x8e, 0x97, 0xac, 0x3f, 0xfa, 0xaf,
|
||||
0xde, 0x08, 0xfe, 0x26, 0x05, 0x8a, 0x44, 0xfa, 0xa5, 0x78, 0x79, 0x7a,
|
||||
0x7a, 0x7a, 0x9a, 0xcd, 0xc3, 0x9b, 0x89, 0x02, 0x8b, 0xc1, 0x12, 0xd8,
|
||||
0xdc, 0x8d, 0x9c, 0xc9, 0x01, 0xa5, 0x05, 0xfb, 0x5d, 0x77, 0x7f, 0x89,
|
||||
0xb9, 0xd9, 0x05, 0xde, 0x7f, 0xf7, 0x2c, 0xcd, 0x56, 0x0b, 0x15, 0xcd,
|
||||
0xdb, 0x00, 0x0c, 0xb8, 0xbc, 0x2d, 0x76, 0xc6, 0x75, 0xd3, 0xa6, 0x14,
|
||||
0x06, 0x94, 0xa3, 0x90, 0x52, 0x18, 0x12, 0x85, 0x0e, 0x63, 0x0c, 0x99,
|
||||
0x17, 0xbc, 0x08, 0x49, 0x96, 0x91, 0x64, 0x9e, 0x4f, 0xae, 0x4c, 0xd0,
|
||||
0x8e, 0x63, 0x7c, 0xb7, 0x4f, 0x62, 0x7c, 0x6c, 0xec, 0xc8, 0x4a, 0x87,
|
||||
0xc1, 0x37, 0x13, 0x50, 0xd5, 0x57, 0xbc, 0xf8, 0xa7, 0x93, 0x34, 0x61,
|
||||
0x6a, 0xfa, 0x3a, 0xa5, 0x3b, 0xef, 0x24, 0xb0, 0x79, 0x9b, 0x1b, 0x38,
|
||||
0x43, 0xa8, 0x01, 0xa1, 0xb3, 0x64, 0xce, 0x92, 0x7a, 0x4b, 0x92, 0x19,
|
||||
0xce, 0xbf, 0xfb, 0x01, 0xc6, 0x0b, 0xe5, 0x20, 0x40, 0x34, 0xef, 0x2e,
|
||||
0xc1, 0x61, 0x01, 0xe7, 0x0c, 0x81, 0x75, 0x84, 0x81, 0xcd, 0xad, 0x32,
|
||||
0x0c, 0x88, 0x82, 0x80, 0xc0, 0x59, 0xc0, 0x90, 0x89, 0x27, 0x13, 0x4f,
|
||||
0x3b, 0x49, 0x69, 0xa7, 0x29, 0x53, 0xf5, 0x69, 0xea, 0x33, 0x73, 0xa4,
|
||||
0x59, 0x86, 0x48, 0x37, 0xfc, 0x47, 0x57, 0x02, 0x0f, 0xab, 0x1c, 0x6c,
|
||||
0xfd, 0xe8, 0x47, 0xff, 0xf4, 0x6a, 0x18, 0x04, 0xdf, 0x29, 0x47, 0x21,
|
||||
0xf7, 0x7e, 0xf9, 0x1e, 0x86, 0x36, 0xd5, 0x28, 0x87, 0x01, 0xa5, 0x30,
|
||||
0x20, 0x28, 0xfc, 0x59, 0x54, 0xf1, 0xde, 0x93, 0x79, 0x21, 0xf3, 0x9e,
|
||||
0xcc, 0xfb, 0xc2, 0x31, 0x84, 0x7c, 0x3f, 0x05, 0xd6, 0xe4, 0xbd, 0x4d,
|
||||
0xe8, 0x2c, 0x81, 0x73, 0xc5, 0x2c, 0x1a, 0x34, 0x55, 0x52, 0x9f, 0xa7,
|
||||
0x4b, 0x33, 0x4e, 0x69, 0xc4, 0x31, 0xd7, 0xa7, 0xa7, 0xf9, 0xf8, 0xe2,
|
||||
0x38, 0xad, 0x38, 0xee, 0x27, 0x70, 0x66, 0x6c, 0xec, 0xc8, 0x9f, 0xaf,
|
||||
0x46, 0x60, 0xc5, 0xa3, 0xc5, 0xd0, 0xd9, 0x9f, 0x66, 0x59, 0x7a, 0x28,
|
||||
0x81, 0xda, 0xf8, 0xa5, 0xcb, 0x04, 0xf7, 0x04, 0xd8, 0xc1, 0x0d, 0x79,
|
||||
0xd5, 0x0c, 0x43, 0x9c, 0xb3, 0x04, 0x06, 0x28, 0xaa, 0xa6, 0x14, 0xae,
|
||||
0x24, 0xa2, 0xfd, 0xc7, 0x11, 0xf9, 0xce, 0xca, 0x80, 0x2d, 0xba, 0x4b,
|
||||
0x63, 0x0c, 0x8a, 0xe2, 0x45, 0x0a, 0xf0, 0x19, 0xcd, 0x38, 0xa5, 0x19,
|
||||
0xc7, 0x4c, 0xd5, 0xeb, 0x5c, 0xbc, 0x7c, 0x89, 0x38, 0xc9, 0xc8, 0xbc,
|
||||
0xef, 0xb7, 0xce, 0xc3, 0xab, 0x81, 0x5f, 0x55, 0x01, 0x80, 0x1f, 0xfe,
|
||||
0xe0, 0x1f, 0x9f, 0x35, 0xc6, 0xfe, 0x7d, 0x39, 0x8a, 0xa8, 0x56, 0xca,
|
||||
0xec, 0xba, 0x67, 0x27, 0xb5, 0xc1, 0x41, 0x2a, 0x51, 0x58, 0x28, 0x61,
|
||||
0x71, 0xd6, 0x62, 0xad, 0xe9, 0xd6, 0x99, 0x1c, 0x5e, 0x31, 0x0a, 0x19,
|
||||
0x3a, 0x85, 0x5b, 0x35, 0x07, 0x9e, 0xf9, 0x3c, 0xd7, 0xf3, 0xc8, 0x27,
|
||||
0x34, 0xe3, 0x84, 0x89, 0x2b, 0x57, 0xb9, 0x3a, 0x79, 0x8d, 0x76, 0x9c,
|
||||
0x90, 0xa4, 0x69, 0x7f, 0xee, 0x3f, 0x33, 0x36, 0x76, 0xe4, 0xd8, 0xa7,
|
||||
0x22, 0x00, 0xf0, 0xfd, 0x27, 0x8f, 0xbf, 0x16, 0x38, 0x77, 0xa8, 0x54,
|
||||
0x90, 0xd8, 0xb9, 0x63, 0x07, 0x43, 0x1b, 0x7b, 0x24, 0xa2, 0x20, 0xc0,
|
||||
0x15, 0x44, 0x3a, 0x3b, 0xaa, 0x6e, 0xfe, 0x14, 0xc5, 0x4e, 0x8a, 0xed,
|
||||
0x63, 0x9e, 0x6a, 0xf9, 0x22, 0x6d, 0x27, 0x29, 0xad, 0x24, 0x61, 0x61,
|
||||
0x69, 0x89, 0x8b, 0x13, 0x13, 0xcc, 0x2d, 0x2c, 0xd0, 0x8e, 0x13, 0x32,
|
||||
0x9f, 0x91, 0xf9, 0x2e, 0xf8, 0x57, 0xc7, 0xc6, 0x8e, 0x7c, 0x77, 0x2d,
|
||||
0xf0, 0x70, 0x8b, 0xd3, 0xe9, 0xc0, 0xb9, 0xc3, 0x71, 0x9a, 0x9e, 0x54,
|
||||
0xd5, 0xbd, 0x22, 0x9e, 0xf3, 0x1f, 0x7d, 0xc4, 0xd6, 0xcd, 0xa3, 0xdc,
|
||||
0xb1, 0x65, 0x94, 0x81, 0x52, 0x89, 0x28, 0xf4, 0x44, 0x81, 0x23, 0x74,
|
||||
0x0e, 0x67, 0xf3, 0x0d, 0x48, 0xe7, 0x18, 0x44, 0xc9, 0x81, 0x7b, 0x2f,
|
||||
0x64, 0x22, 0x24, 0x69, 0x56, 0xb8, 0x4c, 0xc6, 0x52, 0xb3, 0xc5, 0xb5,
|
||||
0xa9, 0x49, 0xa6, 0xa6, 0xa7, 0x69, 0xb6, 0x13, 0x92, 0x34, 0xc9, 0xd7,
|
||||
0x90, 0xdc, 0x1e, 0xf8, 0x5b, 0x2a, 0x00, 0xf0, 0xc3, 0xef, 0xff, 0x43,
|
||||
0x2d, 0xc9, 0xb2, 0x93, 0x81, 0x73, 0x7b, 0xc3, 0xc0, 0x51, 0x0a, 0x43,
|
||||
0x06, 0x2a, 0x65, 0xb6, 0x8c, 0x6c, 0x66, 0xb8, 0x56, 0xa3, 0x52, 0x2e,
|
||||
0x11, 0x76, 0x17, 0x67, 0x4e, 0x00, 0xcd, 0xdb, 0x0d, 0xd1, 0x7c, 0xe3,
|
||||
0x93, 0x7a, 0x4f, 0x92, 0x66, 0xcc, 0x2f, 0x2e, 0x32, 0x3b, 0x3f, 0xc7,
|
||||
0xf4, 0xcc, 0x0c, 0xad, 0x38, 0x07, 0x9e, 0x66, 0x45, 0x95, 0xee, 0x55,
|
||||
0xdc, 0x75, 0x83, 0x5f, 0x17, 0x01, 0x80, 0x1f, 0x3c, 0x79, 0xbc, 0x16,
|
||||
0x27, 0xc9, 0x6b, 0xd6, 0xda, 0x87, 0xa2, 0xd0, 0x11, 0x06, 0x01, 0x61,
|
||||
0x10, 0x10, 0x85, 0x21, 0x1b, 0x37, 0x6c, 0xa0, 0x3a, 0x50, 0x65, 0x43,
|
||||
0x75, 0x80, 0x28, 0x8c, 0x70, 0x2e, 0x6f, 0xc8, 0xbc, 0xcf, 0x88, 0x93,
|
||||
0x94, 0x76, 0xbb, 0xcd, 0x52, 0x63, 0x89, 0xf9, 0xc5, 0x45, 0xe2, 0x24,
|
||||
0xa1, 0x9d, 0xa4, 0xa4, 0x59, 0xde, 0xd0, 0x79, 0x29, 0xda, 0x92, 0x3e,
|
||||
0xbb, 0x1c, 0x1b, 0x3b, 0xf2, 0xd3, 0xf5, 0x82, 0x5f, 0x37, 0x81, 0xce,
|
||||
0xf8, 0xee, 0xe1, 0x17, 0x8f, 0x1a, 0x63, 0x7e, 0xe2, 0xac, 0xc5, 0xb9,
|
||||
0xbc, 0x38, 0x05, 0x85, 0xa7, 0xe7, 0x1b, 0x11, 0xd7, 0x4d, 0x21, 0xc8,
|
||||
0x17, 0xac, 0x48, 0xc7, 0x66, 0xb3, 0xae, 0xdd, 0x8a, 0x48, 0x37, 0x5d,
|
||||
0x8a, 0xdb, 0x8f, 0x03, 0x87, 0xc7, 0xc6, 0x8e, 0x9c, 0xba, 0x1d, 0xf0,
|
||||
0xb7, 0x4d, 0x00, 0xe0, 0x89, 0x27, 0x5e, 0xd8, 0x6b, 0x8c, 0x79, 0xc5,
|
||||
0x1a, 0x73, 0xc0, 0xd8, 0xde, 0xc6, 0xdb, 0x16, 0x95, 0xda, 0x16, 0xb6,
|
||||
0xd3, 0x39, 0xd7, 0x14, 0x95, 0x6e, 0x94, 0x65, 0xd9, 0x49, 0x1d, 0x90,
|
||||
0xf7, 0xf7, 0xaf, 0xdc, 0x6e, 0xd4, 0x3f, 0x13, 0x81, 0xce, 0x78, 0xfc,
|
||||
0xf1, 0x9f, 0x3d, 0x64, 0x0c, 0x87, 0xad, 0xb1, 0x8f, 0x18, 0x63, 0x6a,
|
||||
0xbd, 0x0d, 0x78, 0x6f, 0xc7, 0xd3, 0x01, 0x9c, 0xef, 0x25, 0x96, 0x01,
|
||||
0x3f, 0x03, 0xbc, 0xc2, 0x2a, 0x0d, 0xda, 0xff, 0x0b, 0x81, 0xfe, 0xf1,
|
||||
0xf8, 0xe3, 0x3f, 0x3b, 0x04, 0xec, 0x23, 0x3f, 0xf6, 0xd8, 0x59, 0xcc,
|
||||
0xce, 0x98, 0x23, 0x07, 0x3c, 0x4e, 0xde, 0x0e, 0x9f, 0x1c, 0x1b, 0x3b,
|
||||
0x72, 0xf1, 0x33, 0xdf, 0xb4, 0x18, 0x7f, 0xb2, 0xbf, 0xd4, 0x7f, 0x5e,
|
||||
0xe3, 0x0b, 0xff, 0xcf, 0x1e, 0x5f, 0x78, 0x02, 0xff, 0x07, 0xe2, 0x1a,
|
||||
0xeb, 0x6e, 0x4b, 0x67, 0x61, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
@@ -1,214 +0,0 @@
|
||||
static const unsigned char toolbar_file_open_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, 0x87, 0x00, 0x00, 0x00,
|
||||
0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
|
||||
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b,
|
||||
0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x25, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
|
||||
0x72, 0x65, 0x00, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x6d, 0x65, 0x64, 0x69,
|
||||
0x61, 0x20, 0x46, 0x69, 0x72, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20,
|
||||
0x4d, 0x58, 0x20, 0x32, 0x30, 0x30, 0x34, 0x87, 0x76, 0xac, 0xcf, 0x00,
|
||||
0x00, 0x00, 0x14, 0x74, 0x45, 0x58, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x00, 0x39, 0x2f, 0x34,
|
||||
0x2f, 0x30, 0x34, 0x79, 0x5e, 0xa3, 0xd5, 0x00, 0x00, 0x09, 0x40, 0x49,
|
||||
0x44, 0x41, 0x54, 0x78, 0x9c, 0xed, 0x99, 0x6b, 0x6c, 0x5b, 0xe5, 0x19,
|
||||
0xc7, 0x7f, 0xc7, 0x97, 0x24, 0x4d, 0xda, 0x24, 0xae, 0xe3, 0xd8, 0x0d,
|
||||
0x2d, 0x71, 0xc5, 0x56, 0x21, 0x40, 0x34, 0xd0, 0x31, 0x09, 0x6d, 0x12,
|
||||
0x01, 0xa1, 0x49, 0x9b, 0x18, 0xec, 0xc3, 0x24, 0x3e, 0x82, 0x98, 0x60,
|
||||
0x1b, 0x91, 0xa6, 0xa1, 0x49, 0x1b, 0xbb, 0x68, 0x21, 0x9a, 0xa6, 0x4d,
|
||||
0x1a, 0xdb, 0x90, 0x36, 0x36, 0xb4, 0x0f, 0x5b, 0x87, 0xd8, 0x97, 0x7d,
|
||||
0x21, 0x6c, 0x93, 0x26, 0x31, 0x09, 0x8a, 0xd6, 0x01, 0x83, 0x96, 0xa6,
|
||||
0xd5, 0x68, 0x97, 0x40, 0x49, 0xda, 0x38, 0x8d, 0x6f, 0xc7, 0xb1, 0x8f,
|
||||
0xe3, 0xbb, 0xfd, 0xbe, 0xfb, 0xf0, 0x9e, 0x9b, 0xed, 0xe3, 0xd4, 0xe5,
|
||||
0x22, 0x86, 0xc4, 0x23, 0xbd, 0x3a, 0xc7, 0xc7, 0xf6, 0xf1, 0xff, 0xff,
|
||||
0x7f, 0x6e, 0xef, 0x73, 0xac, 0x49, 0x29, 0xf9, 0x28, 0x9b, 0xef, 0xc3,
|
||||
0x06, 0xf0, 0x5e, 0xed, 0x63, 0x02, 0x1f, 0xb6, 0x7d, 0x4c, 0xe0, 0xc3,
|
||||
0xb6, 0x40, 0x3f, 0x1f, 0xfa, 0xd7, 0xaf, 0xb5, 0xb8, 0x90, 0xc4, 0x85,
|
||||
0x20, 0x2e, 0x25, 0xea, 0x5c, 0x12, 0x97, 0x92, 0xc3, 0x42, 0x30, 0x2e,
|
||||
0x25, 0x4b, 0x42, 0xb2, 0xf0, 0x85, 0xef, 0xc8, 0xc5, 0x0f, 0x1a, 0x70,
|
||||
0xa7, 0x69, 0x9d, 0x65, 0xf4, 0xf5, 0xa7, 0xb4, 0xfb, 0x25, 0xcc, 0x4a,
|
||||
0x05, 0x70, 0xda, 0x04, 0x8a, 0x90, 0x20, 0x04, 0xd8, 0xe7, 0x12, 0xa4,
|
||||
0x70, 0x9d, 0xab, 0xe3, 0xed, 0x77, 0x3d, 0x2a, 0x8f, 0xf5, 0xf3, 0xc3,
|
||||
0x4f, 0x7f, 0x4f, 0x9b, 0x11, 0x92, 0x19, 0x21, 0x89, 0x9b, 0xf7, 0x39,
|
||||
0xf6, 0xe0, 0xcf, 0xfa, 0xfb, 0x6e, 0x4f, 0x02, 0xff, 0xfe, 0xad, 0x76,
|
||||
0x0a, 0x98, 0x01, 0x07, 0xa8, 0x34, 0xd7, 0x68, 0x6c, 0x9a, 0x91, 0xd0,
|
||||
0x04, 0x23, 0xa1, 0x30, 0x43, 0x23, 0xc3, 0x8c, 0x47, 0x23, 0x20, 0xea,
|
||||
0xa4, 0xd7, 0xde, 0xe1, 0xcc, 0x3f, 0x5f, 0xa5, 0x56, 0x6b, 0x20, 0x05,
|
||||
0x4f, 0xdc, 0xf5, 0x5d, 0xf9, 0x48, 0xe7, 0x8f, 0xfc, 0xf9, 0x31, 0x6d,
|
||||
0xd6, 0x14, 0x62, 0x46, 0x08, 0x66, 0x84, 0xe4, 0x36, 0x17, 0x69, 0xb7,
|
||||
0x30, 0x0b, 0x5f, 0x7d, 0x5c, 0x3e, 0xf6, 0xae, 0x08, 0xbc, 0xfc, 0xa4,
|
||||
0x76, 0x1f, 0x70, 0x54, 0x03, 0x24, 0xb0, 0xef, 0xc6, 0x59, 0xc6, 0xf6,
|
||||
0x1d, 0x64, 0x38, 0x34, 0xc9, 0xd0, 0xc8, 0x08, 0x88, 0xba, 0x5a, 0xb2,
|
||||
0xe1, 0x9c, 0x8b, 0x3a, 0x88, 0x06, 0x6f, 0xbd, 0xb1, 0xc4, 0xca, 0xa9,
|
||||
0xb3, 0x08, 0xc9, 0x92, 0x94, 0x3c, 0x22, 0x4c, 0xa0, 0x52, 0x72, 0x58,
|
||||
0x48, 0x66, 0xdc, 0x40, 0x2d, 0xe0, 0xe3, 0x63, 0x3e, 0xa2, 0x11, 0x08,
|
||||
0xfa, 0x05, 0x2b, 0xab, 0x60, 0x6c, 0xdb, 0x9f, 0x39, 0xf8, 0xf5, 0x5f,
|
||||
0xc8, 0x35, 0x4e, 0x6a, 0xdd, 0x68, 0x8f, 0x74, 0x37, 0x5d, 0x3b, 0x07,
|
||||
0x84, 0x20, 0x8e, 0x06, 0x1a, 0x70, 0xed, 0xe7, 0x1f, 0x22, 0x1c, 0xbf,
|
||||
0xde, 0x04, 0x6b, 0x2e, 0xcb, 0x3c, 0x3a, 0xf7, 0xde, 0x58, 0x04, 0xf3,
|
||||
0xea, 0x8c, 0x94, 0xbc, 0x68, 0x7d, 0x44, 0xba, 0xbe, 0x32, 0x3c, 0x1c,
|
||||
0x60, 0x72, 0x72, 0x80, 0xc9, 0x89, 0x00, 0xfb, 0xa7, 0x34, 0x06, 0xfc,
|
||||
0xa6, 0x10, 0x52, 0x70, 0xd3, 0xf5, 0xf0, 0xb7, 0x17, 0x60, 0x23, 0x09,
|
||||
0xc0, 0x7d, 0x9c, 0xd4, 0x16, 0x3c, 0xe5, 0x76, 0x93, 0x32, 0xc9, 0x38,
|
||||
0x04, 0xa4, 0xfa, 0xc5, 0xe0, 0xe0, 0x2e, 0xc2, 0xd3, 0xd7, 0x2a, 0xf0,
|
||||
0xb2, 0xe5, 0x2c, 0x84, 0xb9, 0x5c, 0x71, 0x65, 0xc2, 0x0c, 0xc7, 0x26,
|
||||
0xec, 0x4b, 0xd6, 0xd5, 0xc0, 0x80, 0x9f, 0x89, 0xc8, 0x6e, 0xa6, 0xf6,
|
||||
0xef, 0x21, 0x12, 0x09, 0x32, 0xb2, 0x4b, 0x9a, 0x62, 0xd4, 0xcd, 0x63,
|
||||
0x3b, 0xb6, 0x1b, 0x0e, 0x41, 0x42, 0x11, 0x88, 0x7b, 0x61, 0xff, 0xf9,
|
||||
0xef, 0x19, 0x37, 0xbd, 0xba, 0xf4, 0xed, 0x07, 0xc9, 0x73, 0x52, 0x83,
|
||||
0x23, 0xb2, 0xcd, 0x03, 0x79, 0x34, 0xa8, 0x55, 0x2b, 0xea, 0x47, 0x10,
|
||||
0x2a, 0x4b, 0x65, 0xd3, 0x45, 0xc4, 0xbc, 0x66, 0x91, 0x91, 0xc2, 0x26,
|
||||
0x33, 0x1a, 0x1a, 0x65, 0xd7, 0xc8, 0x10, 0xe1, 0xe8, 0x18, 0x13, 0x91,
|
||||
0xdd, 0x8c, 0x8d, 0x07, 0x5d, 0x80, 0xcd, 0xd0, 0x43, 0x76, 0x2c, 0xc7,
|
||||
0xa6, 0x26, 0x6d, 0xaf, 0xc5, 0x01, 0x7e, 0xf5, 0x34, 0xb3, 0x66, 0xf8,
|
||||
0xcd, 0x06, 0x02, 0x1c, 0x09, 0x8f, 0xb2, 0xbf, 0x56, 0x87, 0x7c, 0x89,
|
||||
0xfc, 0x4f, 0x7f, 0xc7, 0xed, 0x8f, 0x3e, 0xc4, 0x52, 0xa7, 0x07, 0x96,
|
||||
0xec, 0x7b, 0x8a, 0x9a, 0xa9, 0xb4, 0x30, 0x81, 0x37, 0x41, 0x34, 0xbd,
|
||||
0xc9, 0x98, 0xde, 0xb9, 0xed, 0xee, 0xcf, 0x3a, 0xe1, 0x66, 0x03, 0xf6,
|
||||
0xf0, 0x9a, 0x74, 0x13, 0x70, 0xdc, 0x30, 0x30, 0x60, 0xbf, 0x35, 0xfb,
|
||||
0x9b, 0x67, 0x90, 0x7b, 0x86, 0x61, 0x78, 0x10, 0x76, 0x8f, 0x40, 0xd0,
|
||||
0x0f, 0x43, 0xbb, 0x86, 0x08, 0x85, 0xc6, 0xb8, 0xb0, 0xb1, 0x3d, 0x7e,
|
||||
0x66, 0xb9, 0xf4, 0x2c, 0x70, 0xb0, 0x9d, 0x80, 0xcb, 0xa5, 0x5b, 0x89,
|
||||
0x15, 0x42, 0x53, 0xd3, 0x2e, 0x90, 0x6e, 0xf0, 0x1d, 0x47, 0x2c, 0x92,
|
||||
0xb2, 0xa7, 0x77, 0x1c, 0xb0, 0x5e, 0x64, 0x94, 0x19, 0x45, 0x18, 0x1b,
|
||||
0x81, 0x91, 0x5d, 0x30, 0x32, 0x04, 0x03, 0x83, 0x03, 0x84, 0x26, 0x22,
|
||||
0x84, 0xc2, 0x21, 0xc2, 0x93, 0x61, 0x76, 0x0d, 0x05, 0xa8, 0x94, 0x8b,
|
||||
0xb4, 0xb8, 0xc8, 0x99, 0xe5, 0x52, 0xfc, 0xc7, 0x4f, 0x71, 0xcf, 0xf7,
|
||||
0xbf, 0xa6, 0x3d, 0x67, 0x13, 0xb8, 0xf3, 0x5b, 0xf2, 0xa5, 0xe7, 0x1f,
|
||||
0x57, 0x49, 0x22, 0x5b, 0x0d, 0x68, 0xd5, 0x4c, 0x20, 0xd2, 0xa5, 0x7a,
|
||||
0xd3, 0xe5, 0x0d, 0xf3, 0x9a, 0xfb, 0xbc, 0x87, 0x77, 0x9c, 0x6b, 0x0e,
|
||||
0xc9, 0x46, 0x43, 0x90, 0x4c, 0x49, 0xf4, 0x1c, 0xa4, 0x33, 0xd0, 0x12,
|
||||
0x70, 0x30, 0x1e, 0x25, 0x1c, 0xbd, 0x8a, 0xc9, 0xa9, 0x29, 0xc6, 0x43,
|
||||
0x63, 0x20, 0xca, 0x14, 0x72, 0x9b, 0x5c, 0xba, 0xb0, 0x4a, 0x7a, 0x33,
|
||||
0x4d, 0xb9, 0x54, 0xa5, 0xde, 0xb4, 0x83, 0x6f, 0x16, 0x78, 0xae, 0xad,
|
||||
0x13, 0x5b, 0x5e, 0xc8, 0x25, 0xd6, 0xd8, 0x1b, 0x8b, 0x7a, 0x10, 0xe8,
|
||||
0x24, 0xd1, 0xf0, 0x00, 0xdf, 0x91, 0xf8, 0x2e, 0xef, 0xe8, 0x7a, 0x8d,
|
||||
0xe4, 0x66, 0x05, 0x5d, 0x6f, 0x62, 0x18, 0x82, 0xe0, 0xe0, 0x08, 0xb1,
|
||||
0xe9, 0x9b, 0xb9, 0xfe, 0x93, 0xd3, 0x4c, 0x1e, 0xb8, 0x86, 0xa0, 0xaf,
|
||||
0x4e, 0xa5, 0x78, 0x89, 0x42, 0xf6, 0x3c, 0xe7, 0xde, 0x39, 0x45, 0x31,
|
||||
0x9f, 0xa6, 0xd5, 0x6c, 0x20, 0x24, 0xb4, 0x5a, 0xe0, 0xf3, 0x81, 0x51,
|
||||
0xb2, 0x9d, 0x37, 0xd3, 0x16, 0x42, 0x76, 0x1e, 0xc0, 0x4c, 0xbd, 0x5a,
|
||||
0xee, 0xc8, 0x03, 0xe1, 0x01, 0xb0, 0xe1, 0xe4, 0x45, 0x57, 0x7e, 0xa8,
|
||||
0x55, 0x2e, 0x55, 0x49, 0x25, 0x0c, 0xf4, 0x4c, 0x19, 0x5d, 0xaf, 0xd2,
|
||||
0x68, 0x48, 0xc2, 0x57, 0xdd, 0xc4, 0x81, 0x1b, 0x6f, 0x25, 0x3c, 0x75,
|
||||
0x88, 0xd1, 0xbd, 0x53, 0x20, 0x4a, 0xe4, 0x36, 0x4e, 0x71, 0xfe, 0xf4,
|
||||
0x3f, 0x30, 0xb2, 0x6f, 0x53, 0x29, 0xa6, 0x09, 0x04, 0xc0, 0xef, 0x57,
|
||||
0x80, 0xfd, 0x7e, 0x47, 0x47, 0x21, 0x60, 0x33, 0x67, 0x27, 0x3b, 0xdd,
|
||||
0x04, 0x04, 0x79, 0x80, 0x42, 0x26, 0xa3, 0x08, 0x58, 0xf1, 0x6b, 0xc5,
|
||||
0x76, 0x57, 0xd8, 0x58, 0x1e, 0x50, 0x04, 0x1a, 0xb5, 0x1a, 0x7a, 0x7a,
|
||||
0x0b, 0x3d, 0x65, 0x90, 0xda, 0x28, 0x50, 0x2e, 0x37, 0x18, 0x1e, 0x3b,
|
||||
0x40, 0xf4, 0x9a, 0xbb, 0x39, 0xfc, 0xe9, 0x9b, 0x09, 0x4f, 0xdd, 0x40,
|
||||
0x30, 0x18, 0xa0, 0x5c, 0x58, 0x43, 0x5f, 0x7f, 0x9d, 0x95, 0xd7, 0x9e,
|
||||
0x41, 0xdf, 0x7c, 0x13, 0xd9, 0xaa, 0x10, 0xf0, 0x43, 0x20, 0x80, 0x0d,
|
||||
0xde, 0xef, 0x53, 0x04, 0xac, 0x54, 0x11, 0x1a, 0x54, 0x6b, 0x50, 0xae,
|
||||
0xda, 0xd7, 0x16, 0xbd, 0x3c, 0xb0, 0x06, 0x50, 0xab, 0xd5, 0xcc, 0x1c,
|
||||
0xa0, 0x3d, 0x8c, 0x3c, 0x48, 0x18, 0xb9, 0x3c, 0x7a, 0x32, 0x47, 0x32,
|
||||
0xa1, 0xa3, 0xa7, 0x0d, 0x82, 0x83, 0x63, 0x84, 0xa7, 0x6f, 0xe7, 0xe0,
|
||||
0xad, 0x9f, 0x21, 0x7a, 0xcd, 0x9d, 0x0c, 0x8f, 0x46, 0x40, 0x54, 0x30,
|
||||
0x52, 0xa7, 0x58, 0x3d, 0xf5, 0x27, 0x92, 0xe7, 0x5f, 0xc4, 0xc8, 0x9e,
|
||||
0x07, 0x40, 0xd3, 0xd4, 0x0a, 0x98, 0x6a, 0xfb, 0x7c, 0x0a, 0xb8, 0xdf,
|
||||
0x54, 0x5e, 0xd3, 0x1c, 0xe5, 0x01, 0x2e, 0xe9, 0xb8, 0x7b, 0xcd, 0xb1,
|
||||
0x2e, 0x02, 0x2d, 0xa1, 0x08, 0x6c, 0x65, 0xf2, 0x66, 0x2f, 0xb0, 0x3c,
|
||||
0xd0, 0x4d, 0x60, 0xfd, 0xed, 0x0d, 0x4e, 0xbf, 0x72, 0x0e, 0x80, 0xd1,
|
||||
0xc8, 0x75, 0x84, 0xaf, 0xbe, 0x97, 0x43, 0x77, 0x7c, 0x91, 0xf0, 0xd5,
|
||||
0xb3, 0xa0, 0x69, 0x34, 0xaa, 0x59, 0x92, 0xcb, 0x8b, 0xac, 0x5c, 0x3c,
|
||||
0x4e, 0xf2, 0xfc, 0xf3, 0x34, 0x6b, 0x45, 0xbc, 0xcc, 0xa7, 0x81, 0xe6,
|
||||
0x73, 0x08, 0xb8, 0x17, 0x38, 0x85, 0xaa, 0xd9, 0x82, 0x4c, 0xde, 0x56,
|
||||
0x7f, 0xed, 0x87, 0x0f, 0x73, 0xda, 0xcb, 0x03, 0x79, 0xeb, 0xbc, 0x51,
|
||||
0xdd, 0x26, 0x38, 0x10, 0xf0, 0x0c, 0x23, 0x23, 0x67, 0x70, 0xfa, 0x95,
|
||||
0x73, 0x1c, 0xb8, 0xee, 0x2e, 0x0e, 0x7f, 0xee, 0x27, 0xe0, 0x1b, 0x04,
|
||||
0x6d, 0x10, 0x23, 0xb3, 0xcc, 0xca, 0xf1, 0x05, 0x92, 0x6f, 0xfd, 0x1d,
|
||||
0x23, 0x73, 0xd6, 0x13, 0xb0, 0x65, 0x96, 0xfa, 0x9a, 0x66, 0x92, 0xd0,
|
||||
0xda, 0xc1, 0x5b, 0xea, 0x5b, 0x2b, 0x67, 0x28, 0x12, 0x12, 0xc0, 0x0c,
|
||||
0x9f, 0xb6, 0x4e, 0x0c, 0x20, 0x84, 0xea, 0x6e, 0x00, 0xf9, 0x8c, 0x4e,
|
||||
0x64, 0x5f, 0xc8, 0x24, 0x20, 0x5c, 0xc7, 0x16, 0xc9, 0xf5, 0x34, 0xa3,
|
||||
0x91, 0x4f, 0x70, 0xf8, 0xce, 0x1f, 0x80, 0x6c, 0xd0, 0xa8, 0x6c, 0x73,
|
||||
0xe2, 0xaf, 0xdf, 0x40, 0x4f, 0xbc, 0xbe, 0x23, 0x68, 0x4f, 0x12, 0xbe,
|
||||
0xf6, 0xf0, 0xb1, 0xc0, 0x5b, 0x66, 0x6d, 0x04, 0xd7, 0x93, 0x2e, 0x42,
|
||||
0x70, 0xd4, 0x7a, 0xdf, 0xb3, 0x8c, 0x02, 0xd4, 0xab, 0xd5, 0xee, 0x3c,
|
||||
0xb0, 0x09, 0xe8, 0xc4, 0x0e, 0x7d, 0x19, 0xa4, 0x0a, 0xb3, 0x13, 0x7f,
|
||||
0x99, 0x43, 0xdf, 0x78, 0xe3, 0xca, 0xc1, 0x9b, 0xea, 0x5b, 0xe0, 0x35,
|
||||
0x9f, 0xe3, 0x0d, 0xc0, 0x9e, 0x37, 0xb6, 0xcb, 0x60, 0x94, 0x6d, 0x02,
|
||||
0xf9, 0xf9, 0x39, 0x15, 0x3e, 0xd0, 0x31, 0x52, 0xde, 0xbb, 0x20, 0x5f,
|
||||
0xb2, 0x06, 0x94, 0x9c, 0x95, 0x07, 0xa2, 0xe6, 0x1c, 0x5b, 0x35, 0xca,
|
||||
0xc5, 0x6d, 0x8c, 0x7c, 0x99, 0x58, 0xfc, 0x16, 0x10, 0x55, 0xd6, 0xdf,
|
||||
0x7c, 0xf6, 0xdd, 0x81, 0xc7, 0x01, 0xef, 0x73, 0x85, 0x8f, 0xe6, 0x8a,
|
||||
0x7d, 0x6b, 0x68, 0xda, 0xd4, 0xcd, 0x6c, 0x54, 0xf9, 0x60, 0x87, 0x0f,
|
||||
0x78, 0x8c, 0x94, 0x96, 0x17, 0xea, 0xd5, 0xba, 0xab, 0x17, 0x38, 0x79,
|
||||
0x90, 0x4a, 0xe4, 0x18, 0xde, 0x13, 0x61, 0x74, 0xef, 0x3e, 0x10, 0x65,
|
||||
0x56, 0x5e, 0x3b, 0x7a, 0xe5, 0xe0, 0x5d, 0xa1, 0xe3, 0xf7, 0x3b, 0x35,
|
||||
0xbf, 0x4d, 0x7d, 0xb3, 0xfa, 0xb4, 0x04, 0x6c, 0x64, 0xda, 0xaa, 0x4f,
|
||||
0xdb, 0xd8, 0xda, 0x35, 0xd4, 0x0b, 0x35, 0xdf, 0x92, 0xd5, 0x4b, 0x2e,
|
||||
0xf5, 0x1d, 0x4f, 0xac, 0xaf, 0xe5, 0x89, 0x4e, 0xcf, 0x80, 0xac, 0xa0,
|
||||
0x27, 0x4e, 0x50, 0x29, 0xa6, 0xfb, 0x03, 0xac, 0xb5, 0xc7, 0xba, 0x55,
|
||||
0xf7, 0x2d, 0x02, 0x16, 0x09, 0x0d, 0x47, 0x33, 0x21, 0x20, 0xa5, 0x43,
|
||||
0xa3, 0xe9, 0x54, 0xa3, 0xf9, 0x39, 0x9e, 0x73, 0xdf, 0xdf, 0xcb, 0x03,
|
||||
0x79, 0x80, 0x5a, 0xb5, 0x69, 0xee, 0x2a, 0x9d, 0xdd, 0x63, 0xb9, 0xd4,
|
||||
0xc0, 0x28, 0xd4, 0x98, 0xb9, 0xe3, 0x16, 0x10, 0x65, 0xd6, 0x97, 0x5f,
|
||||
0xe8, 0x09, 0xba, 0x8b, 0x80, 0xeb, 0xdc, 0xe7, 0x77, 0x6a, 0x7d, 0xa7,
|
||||
0xfa, 0x12, 0xd7, 0xf4, 0x26, 0x20, 0x91, 0x75, 0xc0, 0xd3, 0x11, 0x3e,
|
||||
0xde, 0x04, 0x24, 0x6b, 0x12, 0xc8, 0xea, 0xf5, 0xae, 0x24, 0x4e, 0x5d,
|
||||
0x2a, 0x31, 0xbc, 0x3b, 0xc4, 0x68, 0x68, 0x2f, 0x8d, 0x4a, 0x96, 0xc4,
|
||||
0xca, 0xcb, 0x3b, 0x83, 0x76, 0x03, 0xf7, 0x75, 0x24, 0xad, 0x5f, 0x79,
|
||||
0xc1, 0x56, 0xde, 0x1d, 0xfb, 0x42, 0xed, 0x7d, 0xca, 0x55, 0xc8, 0x15,
|
||||
0xda, 0xe0, 0x75, 0x3d, 0xf5, 0xe8, 0x22, 0x60, 0x35, 0x33, 0x80, 0xa2,
|
||||
0x51, 0x61, 0xcf, 0x6e, 0x1f, 0x96, 0x4f, 0xf5, 0x6c, 0x85, 0xe8, 0x81,
|
||||
0x9b, 0x41, 0x94, 0x48, 0xac, 0xbc, 0x7a, 0x45, 0xa0, 0xbd, 0xc2, 0xc8,
|
||||
0xef, 0xea, 0xc0, 0x16, 0x78, 0x29, 0x9c, 0xd8, 0xbf, 0x98, 0xea, 0x44,
|
||||
0xc7, 0x62, 0xe7, 0x5c, 0xdc, 0x33, 0x84, 0x14, 0x81, 0x2a, 0x7b, 0x86,
|
||||
0xfd, 0x20, 0x25, 0x8d, 0x86, 0x24, 0x99, 0x6c, 0xf0, 0xa9, 0x6b, 0x63,
|
||||
0x20, 0xb6, 0x59, 0x3d, 0xfb, 0x72, 0x5f, 0xa0, 0xad, 0xba, 0xde, 0x59,
|
||||
0x36, 0xed, 0xe5, 0x4a, 0x5a, 0xa4, 0x02, 0xde, 0x32, 0x49, 0xe4, 0xda,
|
||||
0x9b, 0xf7, 0xe2, 0xfc, 0x1c, 0xed, 0xfe, 0xf0, 0x24, 0x20, 0x9d, 0x66,
|
||||
0x56, 0x2c, 0xd6, 0x61, 0x52, 0x11, 0x48, 0x25, 0x5b, 0x0c, 0x0c, 0x0e,
|
||||
0x10, 0x9b, 0x8a, 0x92, 0xbb, 0xf4, 0x5f, 0xea, 0xd5, 0x82, 0xda, 0xaf,
|
||||
0xd0, 0x5b, 0xe9, 0xce, 0x4e, 0xdb, 0xf6, 0x9e, 0x0b, 0x3c, 0x66, 0x85,
|
||||
0xb1, 0x42, 0xa7, 0xd5, 0x84, 0xcd, 0xac, 0xaa, 0xff, 0x6d, 0xea, 0x7b,
|
||||
0x58, 0xcf, 0x32, 0x0a, 0x60, 0x18, 0x4d, 0x75, 0x37, 0x24, 0xa9, 0x34,
|
||||
0xc4, 0xf6, 0x1f, 0x04, 0x61, 0x70, 0x69, 0xed, 0x3f, 0xf6, 0x66, 0xab,
|
||||
0x5f, 0xd0, 0xee, 0x65, 0x3d, 0xfd, 0xb0, 0x92, 0xd3, 0x9d, 0xb4, 0xad,
|
||||
0x16, 0xac, 0xa7, 0x60, 0x79, 0xbd, 0x0d, 0xd6, 0xda, 0xfc, 0x1c, 0x7f,
|
||||
0xf4, 0x7a, 0xac, 0xd2, 0x55, 0x46, 0x1f, 0xfe, 0xa5, 0xd3, 0xcc, 0x0a,
|
||||
0xdb, 0xca, 0xaf, 0x8d, 0x26, 0x64, 0xb2, 0x10, 0xdb, 0x17, 0xa6, 0x51,
|
||||
0xdb, 0x22, 0x99, 0x58, 0xb5, 0x4b, 0xa1, 0xbf, 0x63, 0x1b, 0x1c, 0x70,
|
||||
0x25, 0x67, 0x57, 0x89, 0x74, 0x77, 0x58, 0x13, 0x6c, 0xb3, 0xa9, 0xca,
|
||||
0x64, 0xa9, 0xac, 0xea, 0xfd, 0xf1, 0x33, 0x5d, 0xe0, 0x01, 0x1e, 0xf3,
|
||||
0x52, 0xdf, 0xd3, 0x03, 0x96, 0x17, 0x24, 0x90, 0x37, 0xd4, 0xeb, 0x54,
|
||||
0x1a, 0x82, 0x03, 0x01, 0x26, 0xa3, 0xbb, 0x59, 0x5f, 0x7d, 0xdb, 0xde,
|
||||
0xb3, 0xb8, 0x37, 0x5e, 0x9d, 0x8a, 0x43, 0x7b, 0x53, 0xb2, 0x8e, 0x56,
|
||||
0x43, 0x6a, 0x36, 0x21, 0xb3, 0x05, 0xa9, 0x1c, 0xa4, 0xb6, 0x7a, 0xc1,
|
||||
0x03, 0xe0, 0x58, 0x2f, 0xf5, 0x7b, 0x13, 0x90, 0x2c, 0x49, 0x98, 0x29,
|
||||
0x6c, 0xab, 0xd7, 0xe9, 0x2c, 0x44, 0x63, 0x63, 0x20, 0x8a, 0x24, 0x2e,
|
||||
0xac, 0xb7, 0x55, 0x0f, 0x37, 0x81, 0x4e, 0x73, 0xef, 0x26, 0xa5, 0x84,
|
||||
0x46, 0x0b, 0xf4, 0xbc, 0x09, 0x3a, 0xe7, 0x4c, 0x55, 0x3b, 0xd8, 0x12,
|
||||
0xf0, 0xa5, 0x9d, 0x3e, 0xe0, 0x49, 0xa0, 0x65, 0x56, 0x22, 0xcb, 0x03,
|
||||
0x19, 0x1d, 0x6e, 0x3a, 0x32, 0x4c, 0x3e, 0x9b, 0xa1, 0x5e, 0xab, 0xb7,
|
||||
0x4d, 0x4c, 0x6e, 0xc5, 0xc1, 0xde, 0xee, 0x3a, 0x93, 0x94, 0x84, 0x74,
|
||||
0x0e, 0xd2, 0x5b, 0x0e, 0xe8, 0x3e, 0xff, 0x96, 0x3b, 0x0a, 0x7c, 0x73,
|
||||
0x7e, 0x8e, 0x42, 0x2f, 0xf5, 0x7b, 0x12, 0x10, 0xae, 0x5e, 0x70, 0x71,
|
||||
0x43, 0x25, 0xdc, 0xe4, 0x84, 0xc6, 0xb9, 0x73, 0xba, 0xb3, 0x5f, 0xe9,
|
||||
0xd8, 0xf2, 0xba, 0x81, 0x0b, 0x09, 0x7a, 0xc1, 0x0c, 0x91, 0x2d, 0x15,
|
||||
0xe3, 0x56, 0xa5, 0xb9, 0x8c, 0xad, 0xa1, 0xaa, 0xcd, 0x13, 0xf3, 0x73,
|
||||
0x5c, 0x00, 0x3c, 0x9f, 0x87, 0x5e, 0x9e, 0x80, 0x74, 0x08, 0x54, 0xeb,
|
||||
0x10, 0x0a, 0x05, 0x41, 0x94, 0x49, 0x6e, 0x96, 0xf0, 0xfb, 0x5d, 0x0d,
|
||||
0xc7, 0x45, 0x44, 0x4a, 0x15, 0x1e, 0x99, 0xbc, 0x02, 0xdd, 0x6c, 0xf6,
|
||||
0xad, 0xf6, 0x12, 0x6a, 0x3c, 0x3c, 0x6a, 0x6f, 0x93, 0x2f, 0x03, 0xfa,
|
||||
0xf2, 0x04, 0x5c, 0x1e, 0x38, 0xb3, 0x02, 0xf1, 0x58, 0x8b, 0x2d, 0xbd,
|
||||
0x68, 0x97, 0x58, 0x29, 0x41, 0x9a, 0xe0, 0xb7, 0x0c, 0xc8, 0x16, 0xda,
|
||||
0x41, 0xf7, 0xa1, 0xf6, 0x12, 0x2a, 0x44, 0x16, 0xfb, 0x55, 0xfa, 0xca,
|
||||
0x08, 0xa8, 0x91, 0x2d, 0x0f, 0x8c, 0x2f, 0xaf, 0x42, 0x36, 0x2b, 0x88,
|
||||
0x4d, 0xd6, 0xd4, 0x03, 0x60, 0x01, 0x5b, 0x45, 0xd0, 0x0d, 0xa5, 0x76,
|
||||
0xb3, 0xd5, 0x17, 0x60, 0x50, 0xa1, 0xb1, 0x88, 0xaa, 0x2a, 0xef, 0x09,
|
||||
0xb4, 0xdb, 0xba, 0xfe, 0xa1, 0xb1, 0xec, 0x47, 0x5f, 0xd1, 0xee, 0x91,
|
||||
0x5e, 0xdd, 0xaf, 0x3f, 0xb0, 0xa0, 0x04, 0x58, 0x44, 0x85, 0x87, 0xb3,
|
||||
0x0d, 0x78, 0x1f, 0x40, 0xbb, 0xad, 0x27, 0x01, 0x80, 0x85, 0x07, 0xb4,
|
||||
0x79, 0x76, 0x68, 0x22, 0x1e, 0x66, 0x81, 0x5e, 0x6c, 0xdb, 0xb7, 0xbf,
|
||||
0xcf, 0xa0, 0xdd, 0xb6, 0x23, 0x01, 0x4e, 0x6a, 0x2c, 0x3c, 0xc9, 0x1f,
|
||||
0x80, 0xfb, 0x77, 0xb8, 0xc7, 0x1a, 0x0a, 0xf4, 0x51, 0xf7, 0xac, 0xfa,
|
||||
0x41, 0x82, 0x76, 0xdb, 0xce, 0x04, 0x4c, 0x5b, 0x78, 0x40, 0xbb, 0x8f,
|
||||
0xf6, 0x3f, 0x1e, 0xf2, 0xa8, 0x44, 0xcc, 0xbf, 0x9b, 0xca, 0xf1, 0x7e,
|
||||
0x5a, 0x5f, 0x04, 0xfe, 0x9f, 0xed, 0x23, 0xff, 0x47, 0xf7, 0x47, 0x9e,
|
||||
0xc0, 0xff, 0x00, 0x3b, 0x1c, 0x36, 0x87, 0xb9, 0x4b, 0x27, 0xd9, 0x00,
|
||||
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
@@ -1,141 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *toolbar_file_open_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"48 48 87 1",
|
||||
" c #B09454",
|
||||
". c #B69B5C",
|
||||
"X c #BA9F5E",
|
||||
"o c #BFA45D",
|
||||
"O c #B59A65",
|
||||
"+ c #BEA263",
|
||||
"@ c #BDA269",
|
||||
"# c #C2A551",
|
||||
"$ c #C5A955",
|
||||
"% c #C9AE57",
|
||||
"& c #C2A65D",
|
||||
"* c #C5A95E",
|
||||
"= c #C8AC5B",
|
||||
"- c #CDB25C",
|
||||
"; c #D1B45F",
|
||||
": c #C6AB60",
|
||||
"> c #CBAF64",
|
||||
", c #C4A96A",
|
||||
"< c #CBB165",
|
||||
"1 c #CDB36D",
|
||||
"2 c #D2B661",
|
||||
"3 c #D6B962",
|
||||
"4 c #DABD65",
|
||||
"5 c #D4B86F",
|
||||
"6 c #C4AF79",
|
||||
"7 c #D0B971",
|
||||
"8 c #D2B978",
|
||||
"9 c #DEC167",
|
||||
"0 c #DFC272",
|
||||
"q c #DEC37A",
|
||||
"w c #E6C265",
|
||||
"e c #E3C46A",
|
||||
"r c #E7C86C",
|
||||
"t c #EACC6E",
|
||||
"y c #FBD465",
|
||||
"u c #FAD56C",
|
||||
"i c #FDD96F",
|
||||
"p c #E5C772",
|
||||
"a c #E6C975",
|
||||
"s c #EECF70",
|
||||
"d c #E6CB7A",
|
||||
"f c #E9CE7D",
|
||||
"g c #EFD071",
|
||||
"h c #F4D474",
|
||||
"j c #FAD771",
|
||||
"k c #FAD976",
|
||||
"l c #F6D778",
|
||||
"z c #F7DA7B",
|
||||
"x c #FADB7B",
|
||||
"c c #FEE07D",
|
||||
"v c #DCCC8E",
|
||||
"b c #DECE91",
|
||||
"n c #DFD099",
|
||||
"m c #E7CD81",
|
||||
"M c #EAD284",
|
||||
"N c #EAD48B",
|
||||
"B c #F7DB83",
|
||||
"V c #FBDE83",
|
||||
"C c #F4DD8E",
|
||||
"Z c #E1D395",
|
||||
"A c #EBD791",
|
||||
"S c #EBD995",
|
||||
"D c #E6D89C",
|
||||
"F c #ECDC9C",
|
||||
"G c #F6DF90",
|
||||
"H c #FBE086",
|
||||
"J c #FBE28B",
|
||||
"K c #FFE98E",
|
||||
"L c #F7E091",
|
||||
"P c #FCE592",
|
||||
"I c #FFE995",
|
||||
"U c #FCEA9B",
|
||||
"Y c #ECDFA2",
|
||||
"T c #ECE0A5",
|
||||
"R c #ECE1A8",
|
||||
"E c #FDEEA3",
|
||||
"W c #FDEFA8",
|
||||
"Q c #FFF1A5",
|
||||
"! c #FEF2AC",
|
||||
"~ c #F6EEB9",
|
||||
"^ c #FEF4B2",
|
||||
"/ c #FFF9B7",
|
||||
"( c #FFF6BA",
|
||||
") c #FFF8BD",
|
||||
"_ c #FFFBC3",
|
||||
"` c #FFFEC9",
|
||||
"' c None",
|
||||
/* pixels */
|
||||
"'''''''''''''''''''''''''''''''''''''. 6''''''''",
|
||||
"'''''''''''''''''''''''''''''.Xo&&=$#*b_`'''''''",
|
||||
"'''''''''''''''''''''+:><2222----%$<v~`__'''''''",
|
||||
"''''''''''''',150ashgttre943;--%$1Z(`____'''''''",
|
||||
"'''''''''''qVHHHcxxlhtree4322-%7D)`______'''''''",
|
||||
"''''''''''OJHVVxxxkhhtree432;<D___)))))))'''''''",
|
||||
"''''''''''@JHVVxxxkhhtree443=n`))))))))))'''''''",
|
||||
"''''''''''@JHVVxxxkhhtree443*R_))))))))))'''''''",
|
||||
"''''''''''@JHVVxxxkhhtree443*R)(((((((((('''''''",
|
||||
"''''''''''@JHVVxxxkhhtrre943*T)(((((((((('''''''",
|
||||
"''''''''''@JHVVxxxkhhtrre943*Y/^^^^^^^^^^'''''''",
|
||||
"''''''''''@JHVVxxxkhhtrre943*Y/^^^^^^^^^^'''''''",
|
||||
"''''''''''@JHVVxxxxlhstre943*F^^^^^^^^^^^'''''''",
|
||||
"''''''''''@JHVVxxxxlhstre943:F^!!!!!!!!!!'''''''",
|
||||
"''''''''''@JHVVxxxxlhstre943*F!!!!!!!!!!!'''''''",
|
||||
"''''''''''@JHVVxxxxlhstre943*S!WWWWWWWWWW'''''''",
|
||||
"''''''''''@JHVVxxxxlhstre943:SQEEEEEEEEEE'''''''",
|
||||
"''''''''''@JHVVxxxxlhstre943:SQEEEEEEEEEE'''''''",
|
||||
"''''''''''@JHVVVxxxlhstre943*SQEEEEEEEEEE'''''''",
|
||||
"''''''''''@JHVVVxxxlhstre943:AEUUUUUUUUUU'''''''",
|
||||
"''''''''''@JHVVVxxxlhstre943:NUUUUUUUUUUU'''''''",
|
||||
"''''''''''@JHVVVxxxlhstre943:NUUUUUUUUUUU'''''''",
|
||||
"''''''''''@JHVVVxxxlhstre943:NUUUUUUUUUUU'''''''",
|
||||
"''''''''''@JHVVVxxxlhstre943:NIIIIIIIIIII'''''''",
|
||||
"''''''''''@JHVVVxxxkhgtree43:NIPPPPPPPPPP'''''''",
|
||||
"''''''''''@JHVVVxxxkhgtree43:MIPPPPPPPPPP'''''''",
|
||||
"''''''''''@JHVVVxxxkhgtree43:MPJJJJJJJJJJ'''''''",
|
||||
"''''''''''@JHVVVxxxkhgtree43:MKJJJJJJJJJJ'''''''",
|
||||
"'''''''''@mJHVVVxxxkhgtree43=qKJJJJJJJJJJ'''''''",
|
||||
"''''''''8PPJHVVVxxxkhhtree432>fHJJJJJJJJJ'''''''",
|
||||
"''''''''CPJJHVVVxxxkhhtree432;&fHHHHHHHHH'''''''",
|
||||
"'''''''OLPJJHVVVxxxkhhtree432;*dHVVVVVVVV'''''''",
|
||||
"'''''''OLPJJHVVVxxxkhhtree432;*dHVVVVVVVV'''''''",
|
||||
"'''''''OLPJJHVVVxxxkhhtree432;*aHxxxxxxxx'''''''",
|
||||
"'''''''OLPJJHVVVxxxkhhtree432;*axxxxxxxxx'''''''",
|
||||
"'''''''OLPJJJHVVxxxkhhtrre4432*pxxxxxxxxx'''''''",
|
||||
"'''''''OLPJJJHVVxxxkhhtrre4432*pxxxxxxxxx'''''''",
|
||||
"'''''''OLPJJJHVVxxxkhhtrre4432*pkkkkkkkkk'''''''",
|
||||
"'''''''OGPJJJHVVxxxkhhtrre9432*rkkkkkkkkk'''''''",
|
||||
"'''''''OGPJJJHVVxxxkhhtrre9432*ekjjjjjjj''''''''",
|
||||
"'''''''OGPJJJHVVxxxkhhttre9432*ejjjjjjjj''''''''",
|
||||
"'''''''OGPJJJHVVxxxkhhttre9432*eiuuuuuu'''''''''",
|
||||
"''''''''CPJJJHVVxxxkhhttee4''''eiuuuuu''''''''''",
|
||||
"''''''''NIJJJHVVxxxkhht''''''''wuuuu''''''''''''",
|
||||
"'''''''''CPJJHVVzzl''''''''''''wyyy'''''''''''''",
|
||||
"'''''''''''MJBB''''''''''''''''wyy''''''''''''''",
|
||||
"'''''''''''''''''''''''''''''''wy'''''''''''''''",
|
||||
"'''''''''''''''''''''''''''''''3''''''''''''''''"
|
||||
};
|
||||
@@ -1,209 +0,0 @@
|
||||
static const unsigned char toolbar_fullscreen_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, 0x87, 0x00, 0x00, 0x00,
|
||||
0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
|
||||
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b,
|
||||
0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x25, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
|
||||
0x72, 0x65, 0x00, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x6d, 0x65, 0x64, 0x69,
|
||||
0x61, 0x20, 0x46, 0x69, 0x72, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20,
|
||||
0x4d, 0x58, 0x20, 0x32, 0x30, 0x30, 0x34, 0x87, 0x76, 0xac, 0xcf, 0x00,
|
||||
0x00, 0x00, 0x15, 0x74, 0x45, 0x58, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x00, 0x39, 0x2f, 0x31,
|
||||
0x32, 0x2f, 0x30, 0x34, 0x1c, 0xf3, 0x42, 0xbb, 0x00, 0x00, 0x08, 0xfd,
|
||||
0x49, 0x44, 0x41, 0x54, 0x78, 0x9c, 0xed, 0x99, 0x6d, 0x8c, 0x5c, 0x55,
|
||||
0x19, 0xc7, 0x7f, 0xe7, 0xdc, 0x3b, 0xb3, 0xd3, 0x7d, 0x9d, 0xdd, 0xae,
|
||||
0xdb, 0x97, 0xa5, 0x20, 0x45, 0x5b, 0x88, 0x06, 0x96, 0xa2, 0x89, 0x01,
|
||||
0x02, 0x09, 0x24, 0x46, 0x43, 0xd0, 0xf2, 0x45, 0xa3, 0x92, 0x40, 0x62,
|
||||
0xf4, 0x03, 0x31, 0xa1, 0x26, 0x4a, 0x8c, 0x7e, 0x32, 0xc6, 0x17, 0x34,
|
||||
0xc4, 0x7e, 0xd2, 0x4f, 0x06, 0x05, 0x85, 0xc4, 0x48, 0x42, 0x69, 0x08,
|
||||
0x46, 0x01, 0x13, 0x10, 0x50, 0x69, 0xa5, 0xa5, 0x4b, 0xb1, 0x2d, 0x76,
|
||||
0xdf, 0xcb, 0xbe, 0xbf, 0xce, 0xce, 0xdc, 0x3b, 0x33, 0xe7, 0x3c, 0x7e,
|
||||
0x38, 0x77, 0x66, 0xee, 0xbd, 0x3b, 0xb3, 0x2d, 0x12, 0x68, 0x9a, 0xf4,
|
||||
0x49, 0xce, 0x3e, 0xe7, 0x9e, 0x73, 0x77, 0xef, 0xf3, 0x3c, 0xff, 0xe7,
|
||||
0xed, 0x9c, 0x55, 0x22, 0xc2, 0xa5, 0x4c, 0xfa, 0x62, 0x0b, 0xf0, 0x7e,
|
||||
0xe9, 0xb2, 0x02, 0x17, 0x9b, 0x2e, 0x2b, 0x70, 0xb1, 0xe9, 0x92, 0x57,
|
||||
0xc0, 0x6f, 0xb5, 0xf1, 0xb7, 0x47, 0x54, 0xde, 0x0a, 0x07, 0xc4, 0xf2,
|
||||
0x45, 0x2b, 0x0c, 0x89, 0x80, 0xb5, 0x90, 0xe0, 0x02, 0x62, 0x23, 0x9e,
|
||||
0x5e, 0xdf, 0x6c, 0xef, 0xc2, 0xd7, 0x8f, 0x59, 0xe1, 0x90, 0x58, 0x0e,
|
||||
0x7e, 0xf7, 0x31, 0x59, 0x6e, 0x26, 0xa7, 0x6a, 0x56, 0x07, 0x5e, 0x7c,
|
||||
0x44, 0xdd, 0x8f, 0xf0, 0x4b, 0x11, 0xf2, 0xff, 0xb7, 0x30, 0xb1, 0xe7,
|
||||
0xf7, 0xa1, 0x40, 0x6d, 0x7d, 0x59, 0x84, 0x6f, 0x3f, 0xf4, 0xb8, 0xfc,
|
||||
0x36, 0x2d, 0xeb, 0x06, 0x17, 0x7a, 0xfe, 0x17, 0xea, 0x7e, 0xb1, 0x3c,
|
||||
0x6a, 0x85, 0x7c, 0xed, 0xe3, 0x22, 0x20, 0x00, 0xd1, 0x3c, 0x9a, 0x46,
|
||||
0x3f, 0x5a, 0x50, 0x6c, 0xaf, 0xe5, 0xef, 0x5c, 0x78, 0x0d, 0xcd, 0x0b,
|
||||
0x3c, 0xfa, 0xb3, 0x7b, 0xd5, 0xfd, 0xe9, 0x8d, 0x04, 0x02, 0x7f, 0x79,
|
||||
0x58, 0xe5, 0x15, 0x8c, 0x00, 0xf9, 0xda, 0xdf, 0xcf, 0xe5, 0xe0, 0xca,
|
||||
0x2b, 0x60, 0x6b, 0x3f, 0x64, 0x33, 0xce, 0x32, 0xd6, 0x82, 0x31, 0x49,
|
||||
0xbe, 0x61, 0x6e, 0xc1, 0x9a, 0x88, 0xbf, 0xc7, 0x79, 0x18, 0xc2, 0xf2,
|
||||
0x2a, 0xcc, 0x2f, 0xb9, 0x79, 0x1c, 0x09, 0x2b, 0x5c, 0xfd, 0xfd, 0x27,
|
||||
0x1a, 0xee, 0x94, 0x88, 0x01, 0xb1, 0x3c, 0x28, 0xca, 0x09, 0x0f, 0xd0,
|
||||
0xd5, 0x09, 0x37, 0xed, 0x83, 0x4c, 0xef, 0x6d, 0xb0, 0xed, 0x01, 0x74,
|
||||
0xfe, 0x4e, 0xc4, 0x96, 0x40, 0x4a, 0x20, 0x01, 0x62, 0x4b, 0x88, 0x04,
|
||||
0x60, 0x43, 0x44, 0x4a, 0x88, 0x0d, 0x62, 0xa3, 0x8c, 0x98, 0x10, 0x6b,
|
||||
0x03, 0xc4, 0x86, 0x58, 0x13, 0x52, 0x5a, 0x1c, 0x41, 0x6c, 0x85, 0x6a,
|
||||
0xb8, 0x4e, 0xb0, 0x3a, 0x87, 0xb5, 0x42, 0xa5, 0x58, 0x20, 0x2c, 0xae,
|
||||
0x63, 0x05, 0xd6, 0xe7, 0x67, 0x00, 0xc8, 0x64, 0x60, 0x6b, 0xde, 0x7d,
|
||||
0x7f, 0x74, 0x02, 0x4a, 0x41, 0x03, 0x09, 0xe0, 0x41, 0xe0, 0x87, 0x4d,
|
||||
0x15, 0xb0, 0xc2, 0xfe, 0x1a, 0xac, 0xb9, 0x1c, 0x0c, 0xdd, 0x00, 0xde,
|
||||
0xb6, 0x7b, 0xd1, 0xd7, 0x3c, 0x0e, 0x52, 0x74, 0x43, 0x69, 0x10, 0xe5,
|
||||
0x14, 0x36, 0x05, 0xaa, 0x6b, 0xc3, 0x4e, 0xa8, 0xe2, 0x04, 0xd5, 0xe2,
|
||||
0x39, 0xc4, 0x56, 0xa9, 0xac, 0x4f, 0x53, 0x29, 0xcd, 0x63, 0xad, 0x25,
|
||||
0x5c, 0x39, 0x47, 0xb5, 0x1c, 0x24, 0x50, 0x69, 0x35, 0x4f, 0x93, 0xa7,
|
||||
0xe1, 0xca, 0x41, 0xf8, 0xef, 0x18, 0x94, 0x2b, 0x75, 0x8f, 0xdb, 0xdf,
|
||||
0x5a, 0x01, 0xcb, 0x90, 0x72, 0xb2, 0x31, 0xb8, 0x13, 0xfc, 0xfc, 0x2d,
|
||||
0xf8, 0xbb, 0x7f, 0x0d, 0x12, 0x10, 0x14, 0x97, 0x78, 0xfd, 0xd0, 0x77,
|
||||
0x78, 0xeb, 0xb5, 0x43, 0xac, 0xad, 0x94, 0x50, 0x8a, 0xc4, 0x80, 0x26,
|
||||
0x73, 0x00, 0x15, 0x9b, 0xd7, 0x9e, 0x23, 0x1e, 0x63, 0xa0, 0x9c, 0xe5,
|
||||
0xbb, 0x3b, 0xa1, 0xa7, 0xb3, 0x21, 0x93, 0x56, 0xd0, 0xdb, 0x03, 0xd3,
|
||||
0x73, 0xf5, 0xa5, 0xa1, 0xb8, 0xcc, 0x49, 0x17, 0x8a, 0x05, 0x69, 0x5f,
|
||||
0x2f, 0xe8, 0x6d, 0x5f, 0x8f, 0x84, 0x5f, 0xe3, 0x89, 0x1f, 0xdd, 0xc6,
|
||||
0xfc, 0xbb, 0x93, 0x4e, 0x18, 0xed, 0x3e, 0xdc, 0x4a, 0x81, 0xda, 0x5e,
|
||||
0x5c, 0xd8, 0xa6, 0x3c, 0x35, 0x37, 0x55, 0x58, 0x5a, 0x86, 0xf5, 0x22,
|
||||
0x6c, 0xef, 0xa7, 0x6e, 0xf2, 0xae, 0x8e, 0x86, 0x02, 0xe9, 0xa4, 0x99,
|
||||
0x46, 0x20, 0x61, 0x0d, 0xaf, 0xef, 0x0e, 0xc4, 0x86, 0xbc, 0x7e, 0xe8,
|
||||
0x7b, 0x75, 0xe1, 0x3f, 0x7e, 0xd3, 0x0d, 0xdc, 0xbc, 0xff, 0x6e, 0x06,
|
||||
0xae, 0x18, 0xac, 0xe3, 0x2f, 0x36, 0x16, 0xbd, 0x31, 0x9f, 0x90, 0xfa,
|
||||
0x3c, 0x16, 0xa5, 0xd6, 0x22, 0xe9, 0x35, 0x63, 0x59, 0x98, 0x9b, 0xe5,
|
||||
0x8d, 0xa3, 0xff, 0x62, 0x7c, 0x7c, 0x84, 0x6a, 0x15, 0xd6, 0xd6, 0xa1,
|
||||
0xab, 0x43, 0xa1, 0xb4, 0x26, 0xe3, 0xbb, 0x9c, 0xda, 0xac, 0xf3, 0x4f,
|
||||
0xc7, 0x40, 0xa4, 0x66, 0xa4, 0x8c, 0x84, 0x40, 0x95, 0xe1, 0xd7, 0x0e,
|
||||
0x3b, 0xe1, 0xf7, 0x5d, 0xcf, 0xfe, 0x07, 0xbe, 0x09, 0x7a, 0x1f, 0xe8,
|
||||
0x1b, 0x5d, 0x12, 0xf6, 0x03, 0x94, 0x94, 0x81, 0x30, 0x7a, 0x3f, 0x04,
|
||||
0x29, 0x83, 0x84, 0x6e, 0x5d, 0xca, 0x48, 0xc4, 0xb1, 0x65, 0x90, 0x0a,
|
||||
0x2a, 0xe2, 0x58, 0x37, 0xa4, 0x52, 0xa2, 0xbf, 0xbd, 0x83, 0x3b, 0x7b,
|
||||
0xfb, 0x78, 0xf1, 0x85, 0xe7, 0x18, 0x1f, 0x1f, 0xa5, 0x58, 0x82, 0xee,
|
||||
0x2e, 0x1f, 0x4f, 0x67, 0xb0, 0x52, 0x41, 0xa8, 0x6c, 0x94, 0xbe, 0x15,
|
||||
0x02, 0x0a, 0x97, 0x12, 0xc5, 0x06, 0xa0, 0x7c, 0x0a, 0x6b, 0xce, 0xe7,
|
||||
0x6f, 0xbe, 0xeb, 0xf3, 0xa0, 0x3e, 0x01, 0xfa, 0x93, 0x80, 0x05, 0x0c,
|
||||
0x88, 0x71, 0x1c, 0x1b, 0x61, 0x2e, 0x14, 0x96, 0xa6, 0x38, 0xf2, 0xcc,
|
||||
0xcf, 0x19, 0x7f, 0xeb, 0x25, 0xfc, 0x5c, 0x27, 0xd7, 0xdd, 0xfc, 0x05,
|
||||
0x86, 0xee, 0xf8, 0x52, 0xea, 0xd3, 0x8d, 0x22, 0xa3, 0x3c, 0x0f, 0xe9,
|
||||
0xea, 0x46, 0x99, 0x2a, 0x43, 0xd7, 0xdf, 0xc4, 0xe4, 0xc4, 0x28, 0xd6,
|
||||
0x82, 0xf6, 0xb3, 0x78, 0xd9, 0x0e, 0x8c, 0x59, 0x07, 0x2a, 0xe7, 0x47,
|
||||
0x20, 0x5e, 0x70, 0xea, 0x08, 0x48, 0xa5, 0xee, 0xdb, 0x1f, 0xd9, 0xb9,
|
||||
0x1d, 0xf4, 0x6e, 0x90, 0x00, 0x50, 0x48, 0xf5, 0x38, 0x54, 0x4e, 0x3a,
|
||||
0xcb, 0x46, 0x2e, 0x51, 0x2e, 0x16, 0x79, 0xf6, 0x57, 0x0f, 0x13, 0x06,
|
||||
0x01, 0x22, 0x50, 0x2e, 0x16, 0x38, 0xf6, 0xd7, 0x27, 0x58, 0x9b, 0x1a,
|
||||
0xe6, 0xd6, 0xcf, 0xde, 0x95, 0x72, 0x9f, 0x86, 0x0b, 0x49, 0x54, 0x7a,
|
||||
0xfb, 0xfa, 0xb6, 0xa2, 0xa2, 0xf2, 0xaa, 0x74, 0x06, 0xaf, 0xad, 0x1d,
|
||||
0x1d, 0x94, 0x9b, 0x0a, 0x0f, 0xa9, 0x4a, 0x9c, 0x70, 0x63, 0x03, 0x62,
|
||||
0x43, 0x2a, 0xab, 0xc3, 0x8d, 0x2c, 0x62, 0x23, 0xab, 0x53, 0x42, 0xca,
|
||||
0x47, 0x20, 0x3c, 0x06, 0x26, 0x8c, 0xf9, 0xb9, 0x70, 0xf4, 0xf9, 0xc3,
|
||||
0x94, 0x23, 0xe1, 0x85, 0xc6, 0x38, 0x33, 0xfc, 0x26, 0x8b, 0xb3, 0xd3,
|
||||
0x8d, 0x95, 0x44, 0x89, 0x8f, 0x59, 0x50, 0x04, 0xad, 0x5c, 0xf6, 0x51,
|
||||
0x5e, 0x96, 0x4c, 0x5b, 0x27, 0xda, 0xcb, 0x36, 0x97, 0x3e, 0x8d, 0x80,
|
||||
0xb5, 0xd4, 0x53, 0x82, 0x31, 0x20, 0x12, 0x62, 0xca, 0x0b, 0x8d, 0xac,
|
||||
0x62, 0x0c, 0x48, 0x40, 0x25, 0x28, 0x70, 0xe2, 0xcf, 0x3f, 0x65, 0x69,
|
||||
0x7a, 0x82, 0x81, 0x5d, 0xbb, 0xd9, 0xf3, 0xa9, 0x5b, 0xc8, 0xb6, 0xe5,
|
||||
0xc0, 0x0a, 0xd3, 0x63, 0x23, 0xce, 0x5a, 0x71, 0x19, 0x23, 0x39, 0x47,
|
||||
0xcf, 0x9c, 0xa1, 0xb7, 0xaf, 0x1f, 0xac, 0xb0, 0xb6, 0xb2, 0xc2, 0x91,
|
||||
0x7f, 0xbc, 0xca, 0xda, 0xca, 0x2a, 0x7b, 0xf6, 0x5e, 0xcb, 0xde, 0x3d,
|
||||
0x7b, 0xea, 0x2e, 0xa0, 0x23, 0xb3, 0x6a, 0x2f, 0x83, 0x97, 0xed, 0x44,
|
||||
0xf9, 0x4b, 0x2d, 0x11, 0xd8, 0x18, 0xc4, 0x12, 0x53, 0xc0, 0x06, 0x04,
|
||||
0x0b, 0x47, 0x1b, 0xa9, 0xd2, 0x18, 0x2a, 0xa5, 0x39, 0x5e, 0xfc, 0xcd,
|
||||
0x37, 0x58, 0x3c, 0x77, 0x0a, 0x11, 0x98, 0x1e, 0x3d, 0xcb, 0xc4, 0xa9,
|
||||
0xb7, 0xf8, 0xdc, 0x7d, 0xdf, 0x02, 0xb1, 0x14, 0x96, 0x97, 0x1a, 0xe9,
|
||||
0x38, 0xa5, 0x48, 0xad, 0x27, 0x58, 0x98, 0x9d, 0xe5, 0xf0, 0x53, 0x7f,
|
||||
0x24, 0x08, 0x42, 0x44, 0x60, 0x72, 0x72, 0x8a, 0xa9, 0xc9, 0x49, 0xee,
|
||||
0xb8, 0xfd, 0x76, 0x17, 0x13, 0x91, 0x11, 0xb5, 0x9f, 0xc3, 0x6f, 0xeb,
|
||||
0x40, 0xe9, 0x4c, 0x4b, 0x04, 0x12, 0x2e, 0x24, 0xb1, 0xee, 0xd1, 0x58,
|
||||
0xe7, 0x42, 0xd6, 0x9a, 0xba, 0x02, 0x62, 0x2c, 0xa7, 0x5e, 0x79, 0x8c,
|
||||
0x85, 0xa9, 0x53, 0x09, 0xeb, 0x2e, 0xce, 0xbc, 0xcb, 0xd9, 0x37, 0x8f,
|
||||
0x82, 0xb5, 0x74, 0x74, 0xe7, 0x93, 0x96, 0x4f, 0x0c, 0x37, 0x39, 0xfa,
|
||||
0xcf, 0x57, 0x09, 0x83, 0x30, 0xa1, 0xe0, 0xdb, 0x6f, 0x9f, 0x62, 0x7e,
|
||||
0x6e, 0xbe, 0x8e, 0x80, 0xd6, 0xe0, 0x65, 0xdb, 0xf1, 0x32, 0xed, 0xa8,
|
||||
0xd6, 0x5d, 0x7f, 0x2a, 0x06, 0x24, 0x19, 0x5b, 0x62, 0x03, 0x4a, 0x73,
|
||||
0x6f, 0x02, 0x91, 0x67, 0x19, 0xc3, 0xcc, 0xd9, 0x23, 0x1b, 0x5b, 0x65,
|
||||
0x81, 0xf1, 0xd3, 0x27, 0xc1, 0x58, 0x06, 0x06, 0xaf, 0xda, 0xe0, 0x3a,
|
||||
0x35, 0xda, 0x31, 0xb8, 0x0b, 0xac, 0x65, 0x6a, 0x72, 0xb2, 0x11, 0x23,
|
||||
0x31, 0x25, 0xce, 0x8e, 0x8c, 0xba, 0x6f, 0x45, 0x06, 0xf3, 0xb3, 0x9d,
|
||||
0x68, 0x2f, 0x87, 0x6c, 0x72, 0xee, 0x3a, 0x6f, 0x10, 0x57, 0xc3, 0x42,
|
||||
0xbd, 0xaa, 0x62, 0x0d, 0xd6, 0xda, 0x84, 0xe0, 0xb5, 0xb3, 0x42, 0x39,
|
||||
0x28, 0x81, 0x35, 0x5c, 0x77, 0xe3, 0xa7, 0x13, 0xc2, 0xc7, 0x95, 0xe9,
|
||||
0xec, 0xe8, 0x04, 0x6b, 0x09, 0x83, 0xb0, 0xb1, 0xc7, 0xc6, 0xae, 0xba,
|
||||
0x16, 0xc4, 0x5e, 0xb6, 0x0b, 0x2f, 0xd3, 0x8e, 0x34, 0xea, 0xf6, 0xf9,
|
||||
0x11, 0xa8, 0xbb, 0x90, 0x01, 0x6b, 0xcb, 0x94, 0x56, 0x26, 0x12, 0x31,
|
||||
0xd0, 0x91, 0xef, 0x6f, 0x58, 0x3f, 0x76, 0x00, 0xd9, 0x75, 0xf5, 0x1e,
|
||||
0x30, 0x96, 0x97, 0x9f, 0x3b, 0xec, 0x90, 0x6c, 0xe2, 0x42, 0x4f, 0x3d,
|
||||
0xf9, 0x7b, 0xca, 0x41, 0x89, 0x1d, 0x3b, 0x07, 0x9b, 0xba, 0x58, 0xff,
|
||||
0xd6, 0xad, 0x0e, 0x01, 0xed, 0x46, 0x26, 0xd7, 0x83, 0xf6, 0xb7, 0xa4,
|
||||
0xc5, 0x6c, 0xad, 0x80, 0xa4, 0xba, 0x81, 0xca, 0xfa, 0x39, 0x4c, 0xd4,
|
||||
0x25, 0xd6, 0x5c, 0x68, 0xf7, 0x0d, 0xb7, 0x26, 0xad, 0x1f, 0xcd, 0x07,
|
||||
0x76, 0xee, 0xe2, 0xcc, 0xf0, 0x71, 0x16, 0x66, 0x67, 0x9a, 0x9f, 0xc2,
|
||||
0x04, 0xc2, 0x20, 0xe4, 0x95, 0x97, 0x5e, 0x62, 0xef, 0xde, 0x6b, 0x37,
|
||||
0x66, 0x29, 0x81, 0xc1, 0x9d, 0x3b, 0x12, 0x08, 0x64, 0xb6, 0xe4, 0xf1,
|
||||
0x32, 0x9d, 0x88, 0xb4, 0x56, 0x60, 0xd3, 0x34, 0x5a, 0x2e, 0xcc, 0x62,
|
||||
0x4d, 0xa3, 0x31, 0x13, 0x63, 0x78, 0xe7, 0xe8, 0xcb, 0xf5, 0x6c, 0x25,
|
||||
0x34, 0xf8, 0x0b, 0xcf, 0x3c, 0xe5, 0x8c, 0x90, 0xf2, 0xff, 0xf8, 0x33,
|
||||
0x02, 0x23, 0x67, 0x47, 0x98, 0x9b, 0x9d, 0xdf, 0x88, 0x10, 0xf0, 0xa7,
|
||||
0xa7, 0x9f, 0xe5, 0x6b, 0x5f, 0xbe, 0x07, 0xad, 0xdd, 0xb3, 0xdf, 0xd6,
|
||||
0x83, 0xf6, 0xdb, 0x11, 0x69, 0xed, 0x42, 0x9b, 0xa6, 0xd1, 0xd2, 0xf2,
|
||||
0x78, 0x02, 0x81, 0xe9, 0xf1, 0x31, 0x4e, 0xff, 0xfb, 0xef, 0x1b, 0x84,
|
||||
0x07, 0x58, 0x5b, 0x59, 0x69, 0x54, 0xf2, 0x16, 0x4a, 0x20, 0x10, 0x04,
|
||||
0x21, 0xc5, 0x52, 0x98, 0xc8, 0xeb, 0xb5, 0x77, 0x66, 0xe7, 0x17, 0x38,
|
||||
0xf9, 0x9f, 0x33, 0xf5, 0xc2, 0x99, 0xc9, 0xf5, 0xa2, 0xb4, 0xbf, 0x69,
|
||||
0x10, 0x6f, 0x40, 0xa0, 0xa6, 0xab, 0x35, 0x50, 0x09, 0x0a, 0x18, 0xd3,
|
||||
0x58, 0x3b, 0x79, 0xfc, 0x88, 0x4b, 0xb5, 0xb5, 0x0f, 0xcb, 0x46, 0x9e,
|
||||
0x3e, 0x3f, 0x37, 0x43, 0x22, 0xde, 0xb6, 0xa7, 0xd7, 0x86, 0x4f, 0x9e,
|
||||
0xa6, 0x63, 0x8b, 0xdb, 0xcb, 0xe4, 0x7a, 0xb0, 0x56, 0x36, 0x75, 0xa1,
|
||||
0x64, 0x0c, 0x44, 0xfe, 0x6a, 0xc5, 0xc5, 0x40, 0x61, 0x7e, 0x14, 0x53,
|
||||
0x73, 0x2b, 0x05, 0x85, 0xd5, 0xb5, 0x8d, 0xb7, 0x06, 0x31, 0x9e, 0x8e,
|
||||
0x8b, 0xd6, 0xf5, 0xa0, 0xf5, 0x7b, 0xeb, 0xc5, 0x62, 0x2c, 0x8d, 0xf6,
|
||||
0xa0, 0x74, 0x16, 0xa5, 0xde, 0x4b, 0x0c, 0x44, 0x64, 0x0c, 0x84, 0x85,
|
||||
0x65, 0x8c, 0x81, 0x6c, 0x16, 0xaa, 0x15, 0x10, 0xab, 0x92, 0xd6, 0xab,
|
||||
0x59, 0x3a, 0xcd, 0x63, 0x56, 0x4f, 0x3f, 0x9f, 0x0f, 0x95, 0x9d, 0xdb,
|
||||
0xb3, 0x88, 0x71, 0x29, 0x34, 0xb3, 0xa5, 0x8f, 0x72, 0x50, 0x42, 0xea,
|
||||
0x7d, 0xfe, 0x79, 0x10, 0xa8, 0x59, 0xdf, 0x4a, 0x4d, 0x81, 0x55, 0xac,
|
||||
0x81, 0xbe, 0x1e, 0xb7, 0x3f, 0x33, 0x3b, 0xc3, 0xc0, 0xc0, 0x76, 0xba,
|
||||
0xbb, 0xf3, 0xc9, 0x7b, 0x9c, 0x88, 0x67, 0xfc, 0x6c, 0xa2, 0x36, 0xc4,
|
||||
0x11, 0xad, 0x09, 0x98, 0xcd, 0x66, 0x9b, 0x0a, 0xde, 0xd7, 0xdb, 0xc3,
|
||||
0xbe, 0xeb, 0xb7, 0x81, 0xcc, 0xa1, 0x34, 0x6c, 0xfd, 0xe8, 0xed, 0x64,
|
||||
0x73, 0xbd, 0x54, 0xc2, 0x22, 0xc6, 0x94, 0xdf, 0x3b, 0x02, 0x41, 0xe8,
|
||||
0xae, 0x51, 0x00, 0x7a, 0xf3, 0xb0, 0x5a, 0x80, 0xb0, 0x0c, 0x33, 0x33,
|
||||
0xd3, 0x0e, 0x5e, 0x2f, 0xea, 0x18, 0xb5, 0x83, 0x5b, 0x2b, 0x50, 0xaa,
|
||||
0x4c, 0xae, 0xcd, 0xb5, 0x01, 0x35, 0x37, 0x88, 0xbf, 0xe3, 0x9e, 0xcb,
|
||||
0x89, 0xa3, 0x68, 0x7d, 0x9f, 0x15, 0xaa, 0x95, 0x15, 0xb4, 0x82, 0x6c,
|
||||
0xc7, 0x0e, 0xae, 0xf9, 0xcc, 0x83, 0x88, 0x68, 0xd6, 0x97, 0xce, 0x51,
|
||||
0x2a, 0xac, 0x5d, 0x18, 0x02, 0xf1, 0x5e, 0x68, 0x79, 0xc5, 0xa1, 0x60,
|
||||
0x8c, 0x73, 0x83, 0x5d, 0x3b, 0xa0, 0x3f, 0x0f, 0x99, 0x48, 0xe5, 0x7a,
|
||||
0x75, 0x6e, 0xb0, 0xc6, 0x7a, 0x0b, 0x4a, 0xbf, 0x17, 0x3f, 0x37, 0x3b,
|
||||
0x9f, 0xef, 0xa2, 0xff, 0x63, 0x77, 0x33, 0x74, 0xcf, 0x1f, 0xc8, 0xf5,
|
||||
0x5c, 0xc9, 0xea, 0xdc, 0x18, 0x8b, 0x93, 0x27, 0x58, 0x5e, 0x5c, 0x68,
|
||||
0xf9, 0x37, 0x5b, 0xa6, 0xd1, 0xd9, 0x05, 0x77, 0x2f, 0xe3, 0xc5, 0x54,
|
||||
0xec, 0xe9, 0x56, 0xe4, 0x7b, 0x5c, 0xa7, 0xa5, 0xb4, 0x46, 0x29, 0x0f,
|
||||
0xa5, 0xb5, 0xb3, 0x83, 0x72, 0xcf, 0x68, 0x1f, 0xa5, 0x7d, 0x77, 0x18,
|
||||
0xc9, 0x6c, 0x41, 0xfb, 0x6d, 0x28, 0xdd, 0x86, 0x9f, 0xed, 0x40, 0x67,
|
||||
0xb6, 0xa0, 0xfd, 0x76, 0xfc, 0x5c, 0x0f, 0x9e, 0xdf, 0x8e, 0x97, 0xe9,
|
||||
0x20, 0x93, 0xeb, 0xc5, 0x6f, 0xeb, 0xc6, 0xf3, 0x3b, 0x68, 0xeb, 0xdc,
|
||||
0x46, 0x5b, 0xfb, 0x00, 0xd6, 0x08, 0x8b, 0x13, 0x27, 0x98, 0x7a, 0xfb,
|
||||
0x2f, 0x2c, 0x4c, 0x9e, 0x60, 0x69, 0xb9, 0x78, 0x81, 0x0a, 0x58, 0x8e,
|
||||
0x11, 0x5d, 0x5b, 0x84, 0x21, 0x9c, 0x1d, 0x83, 0xab, 0xae, 0x68, 0x28,
|
||||
0xa1, 0x14, 0x68, 0xdf, 0x43, 0x2b, 0x1f, 0xe5, 0xf9, 0x78, 0x7e, 0x16,
|
||||
0xe5, 0x39, 0x81, 0xb5, 0x9f, 0x41, 0x7b, 0x59, 0xb4, 0xdf, 0x86, 0xf6,
|
||||
0x73, 0x68, 0xaf, 0x0d, 0xe5, 0x65, 0xd1, 0x5e, 0x16, 0xa5, 0x6b, 0x6b,
|
||||
0x6e, 0x5d, 0xfb, 0xed, 0xd1, 0x3c, 0xe7, 0xf2, 0xbc, 0x15, 0x4c, 0xb5,
|
||||
0x4c, 0x69, 0x65, 0x9a, 0xb5, 0xb9, 0x71, 0xd6, 0x16, 0xc6, 0x59, 0x18,
|
||||
0x7f, 0x83, 0xf9, 0xc9, 0xe3, 0x8c, 0x8d, 0xcd, 0x50, 0xad, 0x26, 0x82,
|
||||
0xf8, 0xd8, 0x66, 0x08, 0x3c, 0x4d, 0xec, 0xde, 0xa5, 0x18, 0xc0, 0x3b,
|
||||
0xa3, 0xee, 0x96, 0xac, 0xb3, 0xdd, 0x65, 0x23, 0x51, 0x0e, 0x24, 0x55,
|
||||
0x05, 0x94, 0x8b, 0x56, 0xad, 0x0d, 0x56, 0x34, 0xca, 0x54, 0xf0, 0x8c,
|
||||
0x46, 0x1b, 0x05, 0xda, 0x00, 0x21, 0x28, 0x0f, 0x88, 0x86, 0xf2, 0x80,
|
||||
0x5a, 0x61, 0xf2, 0x41, 0xf9, 0x80, 0x46, 0x29, 0x1f, 0xa5, 0x32, 0xa0,
|
||||
0x34, 0xa6, 0x5a, 0x61, 0x6d, 0x61, 0x8a, 0xe9, 0xf1, 0xd3, 0xcc, 0xcd,
|
||||
0xcc, 0x51, 0xa9, 0x5a, 0x52, 0xf4, 0x74, 0x4b, 0x05, 0xc4, 0x72, 0x10,
|
||||
0x38, 0x00, 0x8d, 0xeb, 0xc5, 0x72, 0x19, 0xce, 0xcd, 0xd6, 0xdf, 0x00,
|
||||
0x29, 0x23, 0x94, 0x1b, 0x8f, 0xb5, 0x9d, 0x54, 0x51, 0xfb, 0x80, 0x68,
|
||||
0x19, 0x38, 0x18, 0x5f, 0x48, 0x04, 0xf1, 0x43, 0x8f, 0xcb, 0x8a, 0x15,
|
||||
0x0e, 0xd4, 0xd3, 0x69, 0xd4, 0xd8, 0x49, 0x34, 0xe2, 0xc5, 0x2a, 0x3d,
|
||||
0x8f, 0xd7, 0x87, 0x0f, 0x90, 0x0e, 0xfc, 0xe0, 0x49, 0x59, 0x89, 0x2f,
|
||||
0x34, 0xfd, 0xff, 0xc0, 0x4f, 0xbe, 0xaa, 0xee, 0xc3, 0x69, 0x9a, 0x8f,
|
||||
0xaf, 0x7f, 0x08, 0x02, 0xb6, 0xa2, 0x65, 0x9c, 0xf0, 0xbf, 0x4b, 0x6f,
|
||||
0x34, 0x55, 0x00, 0xe0, 0xc7, 0x5f, 0x51, 0x3d, 0x38, 0x77, 0xda, 0x4f,
|
||||
0xea, 0x3e, 0xf2, 0x43, 0xa4, 0x63, 0x38, 0x9f, 0x3f, 0x98, 0xb6, 0x7c,
|
||||
0x8d, 0x5a, 0x2a, 0x70, 0xa9, 0xd0, 0x25, 0xff, 0x4f, 0xbe, 0xcb, 0x0a,
|
||||
0x5c, 0x6c, 0xba, 0xac, 0xc0, 0xc5, 0xa6, 0xff, 0x01, 0x9c, 0xeb, 0xc5,
|
||||
0xd9, 0xf7, 0xbc, 0x76, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
@@ -1,132 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *toolbar_fullscreen_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"48 48 78 1",
|
||||
" c #0EA437",
|
||||
". c #0EA539",
|
||||
"X c #3FAD34",
|
||||
"o c #74BC1D",
|
||||
"O c #7BBE1D",
|
||||
"+ c #54B332",
|
||||
"@ c #64B72E",
|
||||
"# c #6FBB29",
|
||||
"$ c #76BD25",
|
||||
"% c #7BBF24",
|
||||
"& c #73BD2A",
|
||||
"* c #7ABF29",
|
||||
"= c #7EC027",
|
||||
"- c #7DC02F",
|
||||
"; c #80C125",
|
||||
": c #83C32E",
|
||||
"> c #82C337",
|
||||
", c #88C537",
|
||||
"< c #88C53C",
|
||||
"1 c #8CC742",
|
||||
"2 c #95CB56",
|
||||
"3 c #95CC5E",
|
||||
"4 c #97CD63",
|
||||
"5 c #98CD62",
|
||||
"6 c #A3D274",
|
||||
"7 c #7FC1E3",
|
||||
"8 c #ACD78D",
|
||||
"9 c #AED88F",
|
||||
"0 c #ADD891",
|
||||
"q c #B0D994",
|
||||
"w c #B5DC9F",
|
||||
"e c #B9DDA4",
|
||||
"r c #BBDEAB",
|
||||
"t c #BDDFB0",
|
||||
"y c #BFE0B3",
|
||||
"u c #C1E1B5",
|
||||
"i c #C2E2BB",
|
||||
"p c #80C1E3",
|
||||
"a c #8BC6E5",
|
||||
"s c #8FC9E6",
|
||||
"d c #92CAE7",
|
||||
"f c #96CCE8",
|
||||
"g c #9BCEE8",
|
||||
"h c #9FD0EA",
|
||||
"j c #A3D2EB",
|
||||
"k c #ABD6EC",
|
||||
"l c #AFD8ED",
|
||||
"z c #B3DAEE",
|
||||
"x c #B8DCEF",
|
||||
"c c #B4DBF0",
|
||||
"v c #BBDEF0",
|
||||
"b c #BFE0F1",
|
||||
"n c #D1D0D0",
|
||||
"m c #C6E3C2",
|
||||
"M c #CBE6CD",
|
||||
"N c #C5E9CF",
|
||||
"B c #D3EBCE",
|
||||
"V c #DCEECC",
|
||||
"C c #CDE7D3",
|
||||
"Z c #CFE8D8",
|
||||
"A c #D2EFDE",
|
||||
"S c #D6ECE6",
|
||||
"D c #D7ECE9",
|
||||
"F c #DAEDEE",
|
||||
"G c #C4E2F3",
|
||||
"H c #CAE6F6",
|
||||
"J c #D6EBF6",
|
||||
"K c #DCEFF6",
|
||||
"L c #D4EBF9",
|
||||
"P c #DCEFFC",
|
||||
"I c #DFF0FC",
|
||||
"U c #E1E0E0",
|
||||
"Y c #ECF6EC",
|
||||
"T c #E2F1FD",
|
||||
"R c #EAF5FA",
|
||||
"E c #F4FBF7",
|
||||
"W c #F3F9FD",
|
||||
"Q c gray100",
|
||||
/* pixels */
|
||||
"nUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUn",
|
||||
"UQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU",
|
||||
"UQWJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJWQU",
|
||||
"UQT77pppppppppppppppppppppppppppppppppppppp77TQU",
|
||||
"UQTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTQU",
|
||||
"UQTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTQU",
|
||||
"UQTssddddddddddddddddddddddddddddddddddddddssTQU",
|
||||
"UQTddddddddddddddddddddddddddddddddddddddddddTQU",
|
||||
"UQRffffffffffffffffffffffffffffffffffffffffffRQU",
|
||||
"UQRgggggggggggggggggfffgjfgggggggggggggggggggRQU",
|
||||
"UQRgggggggggggggggggkHHHPcgggggggggggggggggggRQU",
|
||||
"UQRhhjjjjjjjjjjjjjhjLTTTTTvjjhjjjjjjjjjjjjjhhRQU",
|
||||
"UQRjjjjjjjjjjjjjjjjkITIIITPPLjjjjjjjjjjjjjjjjRQU",
|
||||
"UQRjjjjkkkkkkkkkkjjvPIIIIITTTGkjjkkkkkkkkkkjjRQU",
|
||||
"UQRkkjkjkkkkkkkkkkHTIIIIIIIIIIPHkkkkkkkkkkjkGWQU",
|
||||
"UQRkkGLGlkkkklkzzlLTIIIIIIIIIITPzkllllllkzGLTWQU",
|
||||
"UQWHGTTTGzHHvlGPPLLTIIIIIIIIIITPzlzzzzzzlLTTPWQU",
|
||||
"UQWIIIITLLTTIHPTTTTIIIIIIIIIIIIPGzzzzzzzzLTIPWQU",
|
||||
"UQWPIIIITTIITTIIIIIIIIIIIIIIIIITTGzxxxxvLPTIPWQU",
|
||||
"UQWPIIIIIIIIIIIIIIIIIIIIIIIIIIIITGxvvvvbITIIPWQU",
|
||||
"UQWPIIIIIIIIIIIIIIIIIIIIIIIIIIITPGvvvvvHTIIIPWQU",
|
||||
"UQWPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIILGGGGPTIIIPWQU",
|
||||
"UQWPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIITHGPPPIIIIPWQU",
|
||||
"UQWPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIPPPTIIIIIPWQU",
|
||||
"UQWPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIITTIIIIIIIPWQU",
|
||||
"UQWPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIPWQU",
|
||||
"UQWPIIIIIIIIIIIIITTTTTTTTTTTTTTTTTTTTTIIIIIIPWQU",
|
||||
"UQWPIIIIIIIITTTTTTKSZMmureeweryimMADKTTTTTTIPWQU",
|
||||
"UQWPIIIITTTTFCt9621,:=OOOOOOOOOOO;:,126qyCFTTWQU",
|
||||
"UQWPITTTDi83<=OOOO%%%=============%%%OOOO=<50YQU",
|
||||
"UQWTTAw4>$oo%%***************************%%ooVQU",
|
||||
"UQEr3-oo$***********************************$VQU",
|
||||
"UQVoo$*************************************$$VQU",
|
||||
"UQV&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&VQU",
|
||||
"UQV&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&VQU",
|
||||
"UQV##&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&##VQU",
|
||||
"UQV@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VQU",
|
||||
"UQB++++++++++++++++++++++++++++++++++++++++++BQU",
|
||||
"UQBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBQU",
|
||||
"UQN ...................................... NQU",
|
||||
"UQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQU",
|
||||
"UQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU",
|
||||
"UQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU",
|
||||
"UQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU",
|
||||
"UQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU",
|
||||
"UQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU",
|
||||
"UQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU",
|
||||
"nUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUn"
|
||||
};
|
||||
@@ -1,306 +0,0 @@
|
||||
static const unsigned char toolbar_help_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, 0x87, 0x00, 0x00, 0x00,
|
||||
0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
|
||||
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b,
|
||||
0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x25, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
|
||||
0x72, 0x65, 0x00, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x6d, 0x65, 0x64, 0x69,
|
||||
0x61, 0x20, 0x46, 0x69, 0x72, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20,
|
||||
0x4d, 0x58, 0x20, 0x32, 0x30, 0x30, 0x34, 0x87, 0x76, 0xac, 0xcf, 0x00,
|
||||
0x00, 0x00, 0x14, 0x74, 0x45, 0x58, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x00, 0x39, 0x2f, 0x34,
|
||||
0x2f, 0x30, 0x34, 0x79, 0x5e, 0xa3, 0xd5, 0x00, 0x00, 0x0d, 0x87, 0x49,
|
||||
0x44, 0x41, 0x54, 0x78, 0x9c, 0xd5, 0x9a, 0x79, 0x8c, 0x5e, 0xd5, 0x79,
|
||||
0xc6, 0x7f, 0xef, 0x39, 0x77, 0xf9, 0x96, 0xd9, 0xbc, 0x60, 0xb0, 0x01,
|
||||
0x63, 0xb3, 0x43, 0xb0, 0xec, 0xb6, 0x41, 0xcd, 0x62, 0xc0, 0x04, 0x04,
|
||||
0xaa, 0x48, 0x30, 0x25, 0x8d, 0x02, 0x6e, 0xab, 0xd8, 0x21, 0xa4, 0x49,
|
||||
0x93, 0x02, 0x8a, 0xd4, 0x26, 0x55, 0xdb, 0x64, 0xa0, 0x8b, 0x5b, 0x45,
|
||||
0x6a, 0x9c, 0x45, 0x28, 0x49, 0x17, 0x4c, 0x5a, 0xfa, 0x47, 0x91, 0x5a,
|
||||
0x20, 0x0d, 0x90, 0x88, 0x76, 0x6c, 0x52, 0xb6, 0x84, 0x80, 0x5d, 0x1b,
|
||||
0x82, 0xeb, 0x05, 0x0f, 0xe3, 0x05, 0xc6, 0xc6, 0xf6, 0xd8, 0x33, 0xdf,
|
||||
0x72, 0xef, 0x39, 0xe7, 0xed, 0x1f, 0xf7, 0x7e, 0x9f, 0xc7, 0xe3, 0x05,
|
||||
0x1b, 0xa2, 0x46, 0x1c, 0xcd, 0xd1, 0x77, 0x46, 0x73, 0xe7, 0xdc, 0xe7,
|
||||
0x39, 0xcf, 0xf3, 0xbe, 0xe7, 0x3d, 0x67, 0x46, 0x54, 0x95, 0x77, 0x73,
|
||||
0x33, 0xbf, 0x6c, 0x00, 0xef, 0xb4, 0x45, 0xbf, 0xcc, 0x97, 0xff, 0xe3,
|
||||
0xc7, 0x7a, 0xa4, 0x33, 0xfe, 0xe4, 0x83, 0xe3, 0x6f, 0xcb, 0x0a, 0xf2,
|
||||
0x8b, 0xb2, 0xd0, 0x0f, 0x7f, 0x57, 0xe6, 0xa9, 0xb2, 0x24, 0xc0, 0x92,
|
||||
0x10, 0x98, 0x17, 0x60, 0x61, 0x50, 0x06, 0x82, 0x82, 0x0f, 0x10, 0x94,
|
||||
0xed, 0x41, 0x19, 0x0e, 0xca, 0x1a, 0xaf, 0xac, 0x77, 0xb6, 0xfe, 0xf0,
|
||||
0x31, 0xa6, 0x51, 0x38, 0x35, 0x32, 0xef, 0x88, 0xc0, 0xd0, 0x72, 0x19,
|
||||
0x50, 0xb8, 0x29, 0x28, 0x77, 0xaa, 0xb2, 0x28, 0x28, 0x1c, 0xab, 0xfb,
|
||||
0xc9, 0xe3, 0xd0, 0x1d, 0x1f, 0xf0, 0xca, 0x23, 0x41, 0xe5, 0x9f, 0x4c,
|
||||
0x52, 0x5b, 0x5b, 0x82, 0xef, 0x74, 0x00, 0x3d, 0x19, 0x22, 0x6f, 0x9b,
|
||||
0xc0, 0x93, 0x9f, 0x94, 0x41, 0x2d, 0x80, 0x0f, 0x04, 0xa0, 0x12, 0x43,
|
||||
0x4f, 0x05, 0xfa, 0x6b, 0x45, 0x60, 0xd5, 0x62, 0xd0, 0x50, 0xf4, 0xcc,
|
||||
0xc1, 0x78, 0x1b, 0x0e, 0xb6, 0x60, 0x7f, 0x13, 0xf6, 0xb5, 0x21, 0xf3,
|
||||
0x87, 0xc9, 0x78, 0xe5, 0x49, 0x45, 0xfe, 0x30, 0x4e, 0x6b, 0xeb, 0x4a,
|
||||
0x02, 0xa1, 0x43, 0xe6, 0xad, 0x48, 0x9c, 0x72, 0x0c, 0x3c, 0x75, 0x9b,
|
||||
0x2c, 0x01, 0xee, 0x33, 0xc2, 0x3c, 0x63, 0x60, 0x5a, 0x0f, 0xcc, 0x3e,
|
||||
0xf7, 0x02, 0xaa, 0xf3, 0x3e, 0x80, 0x9d, 0x71, 0x09, 0x26, 0xe9, 0xc3,
|
||||
0x24, 0x75, 0x70, 0x2d, 0xc8, 0x1b, 0xb8, 0x7d, 0xdb, 0x70, 0xfb, 0x87,
|
||||
0xe9, 0xdd, 0xb3, 0x95, 0x81, 0xdd, 0x5b, 0x98, 0x93, 0xb5, 0x69, 0x67,
|
||||
0xb0, 0xb7, 0x09, 0x5b, 0xc7, 0xa0, 0xe1, 0x04, 0x81, 0x2b, 0x83, 0xf2,
|
||||
0x5c, 0xbb, 0xd5, 0xf8, 0xab, 0xb4, 0x52, 0xfb, 0x73, 0x40, 0x4a, 0x12,
|
||||
0x1d, 0x22, 0xc7, 0x6d, 0xa7, 0xa4, 0xc0, 0xd3, 0xb7, 0xc9, 0xa0, 0x08,
|
||||
0x5f, 0x01, 0x98, 0xd1, 0x0f, 0x67, 0x7f, 0xe0, 0x66, 0xd2, 0x4b, 0x6f,
|
||||
0xc1, 0xf4, 0xce, 0x05, 0xd7, 0x80, 0xbc, 0x59, 0xf4, 0x13, 0x8c, 0x1b,
|
||||
0x23, 0x1b, 0x18, 0xdb, 0xf6, 0x02, 0xd9, 0xc4, 0x04, 0xde, 0x0b, 0x23,
|
||||
0x87, 0x60, 0xdb, 0x21, 0x68, 0x97, 0x16, 0x53, 0xe5, 0xc7, 0x62, 0xec,
|
||||
0xc7, 0x2b, 0x69, 0xfa, 0x26, 0xe0, 0x81, 0x70, 0x22, 0x15, 0x4e, 0x5a,
|
||||
0x81, 0xa7, 0x6e, 0x93, 0xfb, 0xac, 0xb0, 0x3c, 0x89, 0xe1, 0xbc, 0x85,
|
||||
0x97, 0xd1, 0x7b, 0xdd, 0x57, 0x31, 0xfd, 0xe7, 0x96, 0xc0, 0x9a, 0x84,
|
||||
0xfd, 0x9b, 0x71, 0x23, 0x6b, 0xf1, 0x6f, 0xac, 0x23, 0x1c, 0x1a, 0xc5,
|
||||
0x4d, 0xec, 0x45, 0x3d, 0x84, 0x00, 0xa6, 0x76, 0x3a, 0xb6, 0x3a, 0x93,
|
||||
0xa8, 0xf7, 0x74, 0x2a, 0x33, 0xe7, 0x52, 0x9b, 0x31, 0x87, 0x83, 0xaf,
|
||||
0xbd, 0xc4, 0xde, 0xcd, 0x2f, 0x31, 0xa7, 0x0e, 0x03, 0x09, 0x6c, 0xdc,
|
||||
0x0f, 0x07, 0x1d, 0x28, 0x5c, 0xe1, 0xbd, 0xff, 0x61, 0xb3, 0xd5, 0xbe,
|
||||
0xbe, 0x5a, 0x49, 0xdf, 0xe4, 0xc8, 0xb8, 0x78, 0x7b, 0x0a, 0xfc, 0xf7,
|
||||
0x6d, 0x72, 0x9f, 0x11, 0x96, 0xd7, 0x53, 0xb8, 0xe8, 0x23, 0x9f, 0xa1,
|
||||
0xb2, 0xf8, 0xcb, 0x85, 0x45, 0x5c, 0x0b, 0xbf, 0xe9, 0x5f, 0x71, 0x9b,
|
||||
0xfe, 0x99, 0xb0, 0x6f, 0x0b, 0x68, 0x01, 0xb8, 0xe3, 0xfd, 0x50, 0x12,
|
||||
0x50, 0x5f, 0x8c, 0x7d, 0xf9, 0x99, 0xce, 0x98, 0x47, 0xdf, 0xec, 0xf3,
|
||||
0xf0, 0xcd, 0x71, 0x46, 0x36, 0xbc, 0x80, 0xcb, 0x1d, 0xc1, 0xc3, 0x2b,
|
||||
0x07, 0x61, 0x77, 0xab, 0x1b, 0xec, 0x1b, 0xac, 0xb5, 0xd7, 0xd5, 0xab,
|
||||
0xe9, 0x5e, 0xc0, 0x1f, 0x4f, 0x85, 0xb7, 0x54, 0xe0, 0xc9, 0x15, 0x72,
|
||||
0x9f, 0x31, 0x2c, 0xef, 0xab, 0xc3, 0x45, 0xbf, 0xfd, 0x35, 0xe2, 0x8b,
|
||||
0x3f, 0x06, 0xae, 0x8d, 0xee, 0xf9, 0x1f, 0xdc, 0xd3, 0x5f, 0x44, 0x0f,
|
||||
0x6c, 0x42, 0x14, 0x8c, 0x2d, 0x40, 0x1b, 0x0a, 0xe3, 0xa2, 0x20, 0x52,
|
||||
0x74, 0x2d, 0x3f, 0xa5, 0xfc, 0x61, 0x63, 0xcf, 0x30, 0x87, 0x76, 0x0f,
|
||||
0xd3, 0x7b, 0xc6, 0x7c, 0xce, 0xbe, 0xf4, 0x52, 0xb6, 0x6f, 0x78, 0x99,
|
||||
0xe0, 0x3d, 0x17, 0xd4, 0xa1, 0xe9, 0x95, 0x7d, 0x19, 0x00, 0x0b, 0x72,
|
||||
0xe7, 0xff, 0x0e, 0xf8, 0x2d, 0x4e, 0x10, 0x0b, 0x27, 0xdc, 0x89, 0x87,
|
||||
0x96, 0xcb, 0x9d, 0x0a, 0xcb, 0x2b, 0x09, 0x5c, 0x78, 0xcb, 0xdf, 0x10,
|
||||
0x5f, 0x70, 0x23, 0xb8, 0x26, 0x7e, 0xe3, 0x77, 0x71, 0x8f, 0xdd, 0x84,
|
||||
0x1c, 0xdc, 0x84, 0xb1, 0x74, 0xbb, 0xd8, 0x02, 0xa4, 0x48, 0x31, 0x73,
|
||||
0x67, 0x2c, 0x02, 0x48, 0x11, 0x99, 0x42, 0x49, 0x0a, 0xd8, 0xb7, 0xf3,
|
||||
0x55, 0x76, 0x6d, 0xdb, 0xca, 0x9c, 0x73, 0xcf, 0x29, 0x7c, 0x22, 0x70,
|
||||
0x49, 0x8f, 0x50, 0x39, 0x8c, 0xea, 0xc3, 0xfb, 0x0e, 0x36, 0xee, 0x00,
|
||||
0xcc, 0xe4, 0x4d, 0x6f, 0x72, 0x3b, 0xae, 0x85, 0x9e, 0xf8, 0x84, 0x2c,
|
||||
0x32, 0xc2, 0x8b, 0xb1, 0x85, 0x5f, 0xbb, 0xee, 0x46, 0x6a, 0x57, 0xff,
|
||||
0x25, 0x20, 0xe4, 0x4f, 0xff, 0x09, 0x3a, 0xfc, 0x70, 0x01, 0xb8, 0x04,
|
||||
0xa8, 0x0a, 0xad, 0x4c, 0xd8, 0x30, 0x92, 0xb0, 0x65, 0x34, 0x66, 0xcf,
|
||||
0xb8, 0xa5, 0xed, 0x0e, 0xbf, 0x6f, 0x76, 0xaf, 0x63, 0x46, 0xea, 0x79,
|
||||
0xcf, 0x8c, 0x36, 0x35, 0x13, 0x70, 0x5e, 0xc8, 0x1d, 0x38, 0x07, 0xce,
|
||||
0x0b, 0x71, 0x52, 0xa5, 0xd2, 0xd3, 0xc3, 0xe8, 0xce, 0x3d, 0x10, 0x60,
|
||||
0x2c, 0x83, 0xf5, 0x87, 0x14, 0x1f, 0xc0, 0x2b, 0x63, 0x22, 0x72, 0xf9,
|
||||
0xf4, 0xde, 0xea, 0x96, 0x63, 0xd9, 0xe8, 0xb8, 0x16, 0x52, 0xe5, 0x3e,
|
||||
0x05, 0x2e, 0x38, 0x6f, 0x36, 0xd5, 0xcb, 0xff, 0x00, 0x5c, 0x93, 0xec,
|
||||
0x99, 0x7b, 0xd0, 0xe1, 0xff, 0xc0, 0xd8, 0x92, 0xbd, 0x14, 0x2b, 0xff,
|
||||
0x93, 0x2d, 0x29, 0x4f, 0x6d, 0xae, 0x20, 0xe9, 0x00, 0x0b, 0xae, 0x5d,
|
||||
0xc6, 0x95, 0xef, 0xbb, 0x81, 0xd3, 0xe7, 0x2f, 0x20, 0xad, 0xf7, 0x75,
|
||||
0xe7, 0x7b, 0x6d, 0xe3, 0x53, 0x8c, 0x6e, 0xdb, 0xc0, 0xd6, 0xb5, 0x5f,
|
||||
0xe7, 0x12, 0x36, 0x15, 0xef, 0x28, 0xde, 0x43, 0xa3, 0xd1, 0xc4, 0x05,
|
||||
0x21, 0x4a, 0x53, 0xb2, 0x66, 0x46, 0x5f, 0xa4, 0xcc, 0x4a, 0x84, 0xdd,
|
||||
0x6d, 0x05, 0xa5, 0xdf, 0x05, 0xfd, 0x33, 0x60, 0x39, 0xc7, 0xb0, 0xd1,
|
||||
0x31, 0x15, 0x78, 0xfc, 0x77, 0xe4, 0x13, 0x46, 0x58, 0x3d, 0xbd, 0x07,
|
||||
0x16, 0xde, 0x7a, 0x0f, 0xf1, 0xdc, 0x2b, 0x71, 0xaf, 0x3e, 0x4e, 0xfe,
|
||||
0xfc, 0x5f, 0x23, 0x93, 0x2d, 0x63, 0xe0, 0xb1, 0x0d, 0x35, 0x36, 0xee,
|
||||
0x48, 0xb8, 0x7c, 0xe9, 0x67, 0xb9, 0x62, 0xd9, 0x97, 0x48, 0x6a, 0x7d,
|
||||
0x47, 0xcd, 0x37, 0xb5, 0xbd, 0xf2, 0xd8, 0xbd, 0x54, 0x1e, 0xff, 0x3c,
|
||||
0xb9, 0x83, 0xdc, 0x09, 0xce, 0x17, 0x4a, 0x88, 0x58, 0x5c, 0xe6, 0x91,
|
||||
0xa0, 0x64, 0x1e, 0x9e, 0x3d, 0x58, 0xaa, 0x10, 0x14, 0x55, 0x39, 0xff,
|
||||
0x8f, 0x9f, 0x08, 0x5b, 0x4f, 0x4a, 0x81, 0x00, 0x83, 0x00, 0xe7, 0x5e,
|
||||
0x7a, 0x19, 0xf1, 0x19, 0xbf, 0x4a, 0x18, 0xdb, 0x4e, 0xfb, 0x85, 0x6f,
|
||||
0x22, 0x0a, 0x52, 0xe4, 0x6a, 0x34, 0xc0, 0xc6, 0x9d, 0x09, 0x1b, 0x77,
|
||||
0x24, 0xdc, 0x70, 0xd7, 0xbd, 0x2c, 0xb8, 0xe6, 0xd6, 0x62, 0x55, 0x0f,
|
||||
0x0e, 0x93, 0x3f, 0xbf, 0x0a, 0x37, 0xbc, 0x06, 0xbf, 0x6b, 0x1d, 0xc1,
|
||||
0x83, 0xc6, 0x03, 0xd8, 0xb9, 0x4b, 0xc8, 0xdf, 0xfb, 0x05, 0xa6, 0x5f,
|
||||
0x74, 0x05, 0x17, 0xff, 0xc6, 0xef, 0xb3, 0xf7, 0x8c, 0xb3, 0xd9, 0xff,
|
||||
0xf7, 0x4b, 0xcb, 0x1c, 0x29, 0x28, 0xe0, 0x9c, 0x2f, 0xe6, 0x10, 0x43,
|
||||
0x22, 0x81, 0x19, 0x91, 0x30, 0x9a, 0x29, 0x20, 0x04, 0xf4, 0x0e, 0xe0,
|
||||
0xce, 0xa9, 0x58, 0x8f, 0x0a, 0xe2, 0xef, 0x2f, 0x93, 0xa5, 0xaa, 0xcc,
|
||||
0x9b, 0x51, 0x87, 0xfa, 0xfc, 0x2b, 0xc0, 0xb5, 0x68, 0x3d, 0x7f, 0x2f,
|
||||
0xda, 0x9e, 0xe8, 0x02, 0xef, 0xa4, 0xc5, 0x9f, 0x6d, 0x4f, 0x59, 0x70,
|
||||
0xcd, 0xb2, 0x2e, 0x78, 0xff, 0xd2, 0xfd, 0xb4, 0x57, 0x2f, 0x22, 0xff,
|
||||
0xe9, 0x2a, 0xc2, 0xee, 0x75, 0xc5, 0xb3, 0x0a, 0xa1, 0x79, 0x80, 0xec,
|
||||
0xe5, 0x87, 0xf0, 0xab, 0xaf, 0xe4, 0x67, 0x0f, 0xae, 0x04, 0x60, 0xe6,
|
||||
0xaf, 0x7c, 0x84, 0xde, 0x5f, 0x5f, 0x0e, 0xe5, 0x82, 0x04, 0x04, 0xc5,
|
||||
0xa0, 0x65, 0x60, 0xa9, 0x18, 0x66, 0xc6, 0x9d, 0x0c, 0x00, 0x28, 0x4b,
|
||||
0x8f, 0x15, 0xc8, 0x47, 0x11, 0x50, 0x58, 0xae, 0x0a, 0xa7, 0x0d, 0xd4,
|
||||
0x48, 0xcf, 0x7e, 0x1f, 0x6e, 0xf7, 0x8b, 0xe4, 0x3b, 0x7f, 0xd2, 0x05,
|
||||
0x1f, 0x26, 0xe5, 0xf8, 0x3d, 0xe3, 0x96, 0xcb, 0x97, 0x7e, 0xb6, 0x50,
|
||||
0x6d, 0x6c, 0x98, 0x6d, 0xff, 0xf2, 0x29, 0x7c, 0xf3, 0x40, 0x17, 0x78,
|
||||
0xa7, 0x33, 0x49, 0xb5, 0x3d, 0x8f, 0xde, 0xc3, 0xe8, 0xab, 0x1b, 0x01,
|
||||
0x98, 0xf6, 0xa1, 0x3b, 0x8b, 0xdd, 0x97, 0x22, 0xd7, 0x86, 0x12, 0x78,
|
||||
0x41, 0xc2, 0x30, 0x23, 0x12, 0x8c, 0x08, 0x22, 0x82, 0xc2, 0x39, 0x3b,
|
||||
0xf6, 0x4e, 0x2c, 0x3a, 0x21, 0x81, 0x7f, 0xbb, 0x45, 0x06, 0x82, 0x72,
|
||||
0x53, 0x1c, 0xc1, 0xf4, 0x39, 0xe7, 0x83, 0x6b, 0xd1, 0x7e, 0x75, 0xe8,
|
||||
0x08, 0xe0, 0x93, 0xc7, 0x00, 0xb3, 0xe6, 0x5f, 0x06, 0xc0, 0xe6, 0xb5,
|
||||
0x0f, 0xf0, 0x83, 0xad, 0x67, 0xf2, 0xa2, 0x5c, 0x7f, 0xd4, 0xf3, 0x53,
|
||||
0x89, 0xfc, 0xef, 0xb3, 0x3f, 0x00, 0x20, 0x3d, 0x6b, 0x61, 0x37, 0x90,
|
||||
0x15, 0x83, 0x88, 0x01, 0xb1, 0x88, 0xb1, 0x60, 0x2d, 0xd6, 0x1a, 0x7a,
|
||||
0xad, 0xe9, 0x46, 0x6e, 0x80, 0xa5, 0x27, 0x24, 0xa0, 0xca, 0x55, 0xaa,
|
||||
0xd0, 0x13, 0x43, 0x34, 0x7d, 0x3e, 0xda, 0xdc, 0x4f, 0x6b, 0xfb, 0xd3,
|
||||
0x47, 0xee, 0xac, 0x93, 0xfa, 0xc5, 0xb3, 0xb2, 0xee, 0xef, 0xfa, 0x9e,
|
||||
0xf9, 0x5c, 0x73, 0xfb, 0x4a, 0x16, 0xff, 0xd1, 0xe3, 0xa4, 0x1f, 0x5e,
|
||||
0x7d, 0x18, 0xfc, 0x14, 0x22, 0x5b, 0xc6, 0x92, 0x23, 0x00, 0x84, 0x20,
|
||||
0x85, 0x7d, 0xc4, 0xa0, 0x62, 0xc1, 0x46, 0x88, 0x8d, 0x11, 0xb1, 0x88,
|
||||
0x58, 0x2a, 0x46, 0x90, 0x32, 0x46, 0x80, 0x85, 0x27, 0x24, 0x10, 0xca,
|
||||
0x9a, 0xbe, 0x2f, 0x81, 0xa8, 0xe7, 0x34, 0xb2, 0xd7, 0x5f, 0x3a, 0xbc,
|
||||
0x9a, 0x9e, 0xa3, 0x88, 0x7c, 0x70, 0x6e, 0x93, 0xad, 0x3f, 0x7e, 0x00,
|
||||
0x80, 0x4b, 0x3f, 0x74, 0x2b, 0x17, 0xbe, 0xff, 0x06, 0x00, 0x24, 0x1d,
|
||||
0xe8, 0xd6, 0x41, 0x9d, 0xdf, 0x69, 0x3b, 0xe1, 0x3f, 0x77, 0xd4, 0x99,
|
||||
0x70, 0x86, 0x05, 0xd7, 0x2c, 0x03, 0xa0, 0x35, 0xb2, 0xbe, 0x78, 0x06,
|
||||
0x5b, 0xd8, 0xc6, 0x44, 0x88, 0x8d, 0x90, 0x28, 0x46, 0xa2, 0x08, 0x31,
|
||||
0x86, 0xde, 0xc8, 0x80, 0x74, 0xf3, 0xe7, 0xc0, 0x89, 0x15, 0x80, 0x25,
|
||||
0x41, 0x21, 0x16, 0x48, 0xfa, 0x67, 0x93, 0x8d, 0x6e, 0x3e, 0xc2, 0x36,
|
||||
0x1d, 0xe0, 0x9d, 0x20, 0x8e, 0x51, 0x4e, 0x7b, 0xe6, 0xf3, 0x34, 0xb7,
|
||||
0x3d, 0x59, 0x58, 0xa2, 0xd6, 0x87, 0xb6, 0xc6, 0x68, 0xfc, 0xd7, 0xe0,
|
||||
0x11, 0xe0, 0x37, 0xed, 0x4f, 0x78, 0x70, 0x4b, 0x1f, 0xa3, 0x3a, 0x93,
|
||||
0x8f, 0xfe, 0xe9, 0x03, 0xf4, 0xcf, 0x3a, 0x1b, 0x80, 0x7d, 0x4f, 0xdd,
|
||||
0x4f, 0xa0, 0x50, 0x00, 0xb1, 0x18, 0x6b, 0x31, 0x51, 0x8c, 0x89, 0x22,
|
||||
0xc4, 0x94, 0x56, 0x12, 0x41, 0xb5, 0xcb, 0x60, 0xc9, 0x54, 0x02, 0x47,
|
||||
0xa4, 0xd1, 0xa0, 0x0c, 0x08, 0x50, 0xb5, 0x80, 0x6b, 0x91, 0x1f, 0xd8,
|
||||
0x49, 0x08, 0xe5, 0xf6, 0xaf, 0xe5, 0xce, 0xab, 0x47, 0x96, 0x06, 0x7e,
|
||||
0xfc, 0x00, 0x7e, 0xf5, 0x55, 0x64, 0x67, 0x2c, 0xc2, 0x54, 0x06, 0xc8,
|
||||
0xb6, 0xad, 0xe9, 0x06, 0xec, 0xae, 0xf1, 0x88, 0xe7, 0x5e, 0xaf, 0xb2,
|
||||
0xaf, 0x65, 0x59, 0x70, 0xcd, 0x32, 0xae, 0xbd, 0x7d, 0x65, 0x77, 0x73,
|
||||
0x6b, 0x8d, 0xac, 0xe7, 0xf5, 0x1f, 0x7d, 0x83, 0x10, 0x2c, 0x6a, 0x0d,
|
||||
0x18, 0x8b, 0xd8, 0x08, 0x63, 0x23, 0xac, 0x08, 0x6a, 0x02, 0x2a, 0xbe,
|
||||
0xfb, 0xa2, 0xe3, 0x95, 0x9c, 0x53, 0x09, 0x2c, 0x32, 0x02, 0x56, 0x80,
|
||||
0xbc, 0x49, 0x6b, 0xcf, 0x08, 0xc6, 0x14, 0xd2, 0x50, 0x7e, 0xea, 0x94,
|
||||
0xda, 0xa6, 0xd3, 0xfc, 0xce, 0x75, 0xdd, 0x20, 0x45, 0xe1, 0x85, 0xd1,
|
||||
0x0a, 0x2f, 0xee, 0xa9, 0x30, 0x77, 0xc1, 0x62, 0x6e, 0xba, 0x7d, 0x65,
|
||||
0x37, 0xd8, 0x01, 0xc6, 0xd7, 0x3d, 0xc2, 0xf0, 0x3f, 0xac, 0x28, 0x4e,
|
||||
0x64, 0x08, 0x5a, 0x06, 0xae, 0xb1, 0x31, 0x36, 0x8a, 0x8b, 0x82, 0xd0,
|
||||
0x7a, 0x10, 0xd3, 0xad, 0x9b, 0x8e, 0xc7, 0x60, 0x2a, 0x81, 0x62, 0xf5,
|
||||
0x7c, 0xa1, 0x80, 0x86, 0xa2, 0x0c, 0xec, 0x2a, 0xd0, 0x01, 0x7e, 0x0c,
|
||||
0x02, 0x9d, 0x97, 0xa8, 0xc2, 0x73, 0xaf, 0x57, 0x79, 0x79, 0x7f, 0xca,
|
||||
0xe2, 0x65, 0x5f, 0x62, 0xf1, 0xad, 0x5f, 0xec, 0x3e, 0xd3, 0xda, 0xbc,
|
||||
0x96, 0x3d, 0x8f, 0xdc, 0xcd, 0xd8, 0xcf, 0xd7, 0xd2, 0xf6, 0x42, 0x50,
|
||||
0x43, 0x30, 0xa6, 0xb0, 0x4b, 0x09, 0xde, 0x46, 0x11, 0x26, 0x14, 0x72,
|
||||
0x7b, 0x84, 0x56, 0x27, 0x8b, 0x9d, 0xa4, 0x02, 0x18, 0x81, 0xa0, 0x02,
|
||||
0xae, 0x45, 0x50, 0x41, 0x3a, 0x16, 0x42, 0x8f, 0x28, 0x8f, 0x8f, 0x47,
|
||||
0x60, 0x3c, 0x33, 0xbc, 0xbc, 0x3f, 0xe5, 0xda, 0xdb, 0x57, 0xf2, 0xde,
|
||||
0x1b, 0x3f, 0xd3, 0x05, 0x3e, 0xfa, 0xbd, 0x15, 0xb4, 0x46, 0xb7, 0x93,
|
||||
0x7b, 0xc1, 0x79, 0xc1, 0xa9, 0xe0, 0xd5, 0x10, 0x24, 0x22, 0xb2, 0x31,
|
||||
0x51, 0x7c, 0x98, 0x80, 0x38, 0x87, 0x22, 0x18, 0x85, 0x86, 0x87, 0x70,
|
||||
0xb8, 0xdc, 0x59, 0xf7, 0x96, 0x04, 0x44, 0x84, 0x56, 0x2e, 0xb4, 0xf6,
|
||||
0x8e, 0x40, 0x30, 0x65, 0x81, 0xaf, 0xc5, 0x76, 0x2f, 0xe5, 0xa6, 0xdf,
|
||||
0x21, 0x32, 0x65, 0x32, 0x55, 0x18, 0x3e, 0x14, 0xd3, 0x3f, 0x6b, 0x6e,
|
||||
0x17, 0xfc, 0xf8, 0xb3, 0xf7, 0x33, 0x7a, 0xff, 0x0a, 0xbc, 0x07, 0x17,
|
||||
0x84, 0x3c, 0x40, 0x1e, 0xc0, 0x63, 0x50, 0x13, 0x61, 0x6c, 0x8c, 0x89,
|
||||
0x13, 0xa2, 0x24, 0x25, 0x8a, 0x13, 0x22, 0x31, 0xa8, 0x0f, 0x84, 0x72,
|
||||
0x83, 0xd8, 0xe7, 0x94, 0x49, 0xf5, 0xda, 0x81, 0xa9, 0x04, 0xa6, 0xa6,
|
||||
0xd1, 0x35, 0x8a, 0xd0, 0x74, 0x42, 0x36, 0xf6, 0x66, 0x91, 0xde, 0x88,
|
||||
0x08, 0x6a, 0x09, 0x18, 0x82, 0x0a, 0x5e, 0x05, 0xef, 0xc1, 0xbb, 0xe2,
|
||||
0x84, 0xd5, 0xed, 0xe5, 0xf7, 0x2d, 0x27, 0xdd, 0x74, 0x0a, 0xf0, 0xe6,
|
||||
0xf7, 0xef, 0x26, 0x77, 0x90, 0x79, 0x21, 0xf3, 0x65, 0xf1, 0x86, 0x25,
|
||||
0x48, 0x84, 0xda, 0x18, 0x1b, 0x57, 0x88, 0xd3, 0x94, 0x38, 0x49, 0x89,
|
||||
0xe3, 0x18, 0x63, 0x2c, 0x52, 0xde, 0x4b, 0x4c, 0xe4, 0x5a, 0xac, 0xfe,
|
||||
0xe1, 0x95, 0x5a, 0xf3, 0x56, 0x0a, 0x1c, 0x08, 0x0a, 0x07, 0x9c, 0x61,
|
||||
0xfc, 0x8d, 0x5d, 0x24, 0xf5, 0x7e, 0xb2, 0x66, 0x83, 0xee, 0x8c, 0x21,
|
||||
0xa0, 0xc1, 0x13, 0xca, 0xca, 0x65, 0x6a, 0x53, 0x85, 0x99, 0xb1, 0x27,
|
||||
0xf4, 0x1c, 0xae, 0x48, 0x1b, 0x6f, 0x6c, 0xc7, 0x07, 0xc1, 0x05, 0xc8,
|
||||
0xd5, 0x90, 0x63, 0x08, 0xc4, 0x60, 0x63, 0xa2, 0xa4, 0x4a, 0x5c, 0xa9,
|
||||
0x92, 0xa4, 0x55, 0xe2, 0x24, 0xc5, 0x1a, 0x83, 0x66, 0x39, 0x1a, 0x02,
|
||||
0x78, 0xcf, 0xee, 0xcc, 0xe3, 0x83, 0x3f, 0xa1, 0x85, 0xa6, 0x2a, 0xb0,
|
||||
0xde, 0x2b, 0x8c, 0xe5, 0x42, 0x7b, 0xa2, 0x05, 0x2a, 0x88, 0x49, 0xc0,
|
||||
0xa6, 0x60, 0x52, 0xd4, 0x24, 0x04, 0x49, 0x50, 0x8d, 0xf0, 0xc1, 0xe2,
|
||||
0x82, 0xc1, 0x39, 0x21, 0x77, 0x42, 0x9e, 0x0b, 0xce, 0x09, 0xd3, 0xac,
|
||||
0xe3, 0xcc, 0x1d, 0x3f, 0x22, 0x34, 0xc7, 0x68, 0x8d, 0xac, 0x27, 0x73,
|
||||
0x42, 0x16, 0x0c, 0xb9, 0x5a, 0x1c, 0x11, 0x6a, 0x12, 0x24, 0x4e, 0x88,
|
||||
0xd3, 0x1a, 0x49, 0xb5, 0x46, 0x5a, 0xad, 0x93, 0x56, 0xaa, 0xc4, 0x49,
|
||||
0x82, 0x35, 0x16, 0x09, 0x8a, 0x3a, 0x4f, 0xc8, 0x3d, 0x3b, 0x32, 0x4f,
|
||||
0xe8, 0x64, 0x96, 0x93, 0x51, 0x00, 0x31, 0x0f, 0x05, 0xe5, 0x2b, 0xfb,
|
||||
0xbd, 0xe0, 0x82, 0x21, 0xcf, 0x3d, 0xd8, 0x42, 0xd6, 0xd0, 0x39, 0xb1,
|
||||
0x93, 0xa3, 0xe4, 0xa8, 0x77, 0x04, 0x0d, 0x04, 0xf5, 0xc5, 0x61, 0xbe,
|
||||
0xf4, 0x6c, 0x3b, 0x08, 0xaf, 0x3c, 0xff, 0x0c, 0x2f, 0xac, 0x98, 0xcd,
|
||||
0x99, 0xa9, 0x47, 0x24, 0x2a, 0xfd, 0x6e, 0xc1, 0x94, 0x69, 0x32, 0xa9,
|
||||
0x10, 0xa7, 0x15, 0xd2, 0x6a, 0xad, 0x00, 0x1f, 0xc7, 0x88, 0x2a, 0x21,
|
||||
0xcf, 0x08, 0xb9, 0x23, 0x64, 0x39, 0x3b, 0xda, 0x39, 0x2d, 0xef, 0x08,
|
||||
0x3e, 0x74, 0xb4, 0x7e, 0x68, 0x70, 0x48, 0xc7, 0x4e, 0xa8, 0xc0, 0xa7,
|
||||
0x1f, 0xf6, 0xeb, 0x42, 0x60, 0x38, 0x04, 0x65, 0x57, 0x0b, 0x9c, 0x13,
|
||||
0x90, 0x18, 0x89, 0x52, 0x4c, 0x5c, 0xc3, 0x26, 0x35, 0x4c, 0x5a, 0x47,
|
||||
0x92, 0x1a, 0x44, 0x55, 0xd4, 0x54, 0x50, 0x5b, 0xc1, 0x4b, 0x42, 0x90,
|
||||
0x18, 0x47, 0xcc, 0x4f, 0xc7, 0xea, 0x6c, 0xe3, 0x74, 0x7a, 0xaf, 0xbd,
|
||||
0x8b, 0xfc, 0xaa, 0x2f, 0x20, 0xbd, 0xb3, 0x20, 0xae, 0x20, 0x49, 0x0d,
|
||||
0x5b, 0xad, 0x11, 0xd7, 0x7a, 0xa9, 0xf6, 0xf4, 0x52, 0xeb, 0xe9, 0xa3,
|
||||
0x5a, 0xef, 0x21, 0xad, 0x54, 0xb0, 0x36, 0x2a, 0xce, 0x19, 0xb9, 0xc3,
|
||||
0xb7, 0x33, 0xf2, 0x56, 0xc6, 0xd6, 0xa6, 0xc3, 0xfb, 0x30, 0x39, 0x80,
|
||||
0x57, 0x1f, 0xe5, 0xd9, 0xa3, 0x14, 0x00, 0x14, 0x79, 0xd8, 0x07, 0xbd,
|
||||
0x63, 0x67, 0x5b, 0x99, 0xe3, 0x15, 0xab, 0x02, 0x12, 0x61, 0xe2, 0xb8,
|
||||
0x48, 0x3d, 0x21, 0x20, 0x3e, 0xc7, 0x59, 0x87, 0xfa, 0x42, 0x09, 0xf1,
|
||||
0x1e, 0x2d, 0x2f, 0x3c, 0xf7, 0xe5, 0xca, 0xb2, 0x7b, 0x1e, 0x60, 0xee,
|
||||
0x65, 0x1f, 0x04, 0xe0, 0xd0, 0xe6, 0x1b, 0xd9, 0xfc, 0xcd, 0x8f, 0x23,
|
||||
0x51, 0x5c, 0x64, 0x9a, 0x24, 0x25, 0x49, 0x8b, 0xc0, 0x8d, 0xa2, 0x18,
|
||||
0x01, 0xd4, 0x39, 0x7c, 0x96, 0xe3, 0x5a, 0x2d, 0x42, 0xb3, 0xc5, 0xcf,
|
||||
0x27, 0x32, 0x1a, 0x2e, 0x9f, 0x4c, 0x60, 0xfb, 0xe0, 0x90, 0x1e, 0xeb,
|
||||
0x32, 0xf8, 0x68, 0x02, 0x62, 0xec, 0x2a, 0x1f, 0xc2, 0x1d, 0x2d, 0x17,
|
||||
0x78, 0xad, 0x11, 0x38, 0x3f, 0x51, 0x54, 0x05, 0x31, 0x51, 0x51, 0xa7,
|
||||
0x88, 0x10, 0x54, 0x91, 0xc4, 0x61, 0x5c, 0x8e, 0x71, 0x0e, 0xe7, 0x3c,
|
||||
0x12, 0x3c, 0xa2, 0xca, 0x8c, 0xea, 0x44, 0x17, 0x3c, 0x40, 0xef, 0x05,
|
||||
0xef, 0xa7, 0xd2, 0xdb, 0x8f, 0x4d, 0x12, 0xa2, 0x38, 0x21, 0x4e, 0xd2,
|
||||
0x22, 0xe7, 0xdb, 0x08, 0x50, 0x42, 0x96, 0x13, 0xda, 0x19, 0xae, 0xd1,
|
||||
0xc4, 0x35, 0x9a, 0x8c, 0x4c, 0xb4, 0xd8, 0xd5, 0xce, 0x70, 0xb9, 0x27,
|
||||
0x84, 0xae, 0x7d, 0x06, 0x8f, 0x05, 0xfe, 0x28, 0x0b, 0x01, 0xfc, 0xde,
|
||||
0xa7, 0x3f, 0xb5, 0xdd, 0x07, 0xfd, 0x5e, 0xe6, 0x3c, 0x23, 0x4d, 0xc7,
|
||||
0xfe, 0x66, 0x8e, 0xcf, 0x5d, 0x71, 0xc5, 0x2c, 0x06, 0x13, 0xa7, 0x44,
|
||||
0x95, 0x1a, 0x49, 0xbd, 0x8f, 0xb4, 0x77, 0x80, 0xb4, 0x6f, 0x1a, 0xd5,
|
||||
0xfe, 0x69, 0x54, 0xfa, 0x8a, 0xbe, 0xf8, 0xc2, 0x39, 0xec, 0xdb, 0xfc,
|
||||
0x5c, 0x77, 0xbe, 0xd6, 0x6b, 0x2f, 0xd2, 0x33, 0x30, 0x9d, 0x7a, 0xdf,
|
||||
0x00, 0xb5, 0xde, 0x3e, 0x2a, 0xb5, 0x3a, 0x49, 0x92, 0x62, 0x44, 0xc0,
|
||||
0xf9, 0xc2, 0x32, 0x13, 0x0d, 0xdc, 0xc4, 0x04, 0xaf, 0x8f, 0x37, 0x78,
|
||||
0x79, 0xa2, 0x4d, 0x96, 0xe5, 0x78, 0xef, 0x3b, 0xab, 0xbf, 0x6e, 0x70,
|
||||
0x48, 0xef, 0x3f, 0x1e, 0x81, 0x63, 0x1e, 0xea, 0xbf, 0x73, 0x73, 0xed,
|
||||
0xdc, 0x3c, 0xcf, 0x5f, 0x48, 0xe2, 0xb8, 0xbf, 0xa7, 0x5a, 0x61, 0x61,
|
||||
0x7f, 0x8d, 0xde, 0xde, 0x3a, 0x51, 0xbd, 0x4e, 0x94, 0x56, 0x31, 0x69,
|
||||
0x82, 0xd8, 0x42, 0x3c, 0xa5, 0xd8, 0x29, 0x55, 0xb5, 0xbb, 0xe5, 0x9b,
|
||||
0x4a, 0x2f, 0xd5, 0x4b, 0xaf, 0x47, 0x44, 0x68, 0x6e, 0x7a, 0x02, 0xc9,
|
||||
0x5b, 0x88, 0x31, 0x48, 0x79, 0x07, 0xa3, 0xbe, 0x04, 0xde, 0x6c, 0x92,
|
||||
0x8f, 0x4f, 0x90, 0x8f, 0x8f, 0xb3, 0xfb, 0xe0, 0x38, 0xeb, 0xc7, 0x9a,
|
||||
0xb4, 0xda, 0x2d, 0xb2, 0xcc, 0xe1, 0x43, 0xd7, 0x3e, 0x8b, 0x06, 0x87,
|
||||
0x74, 0xfd, 0x29, 0x11, 0xe0, 0xd1, 0xcf, 0xc9, 0x37, 0xee, 0xfd, 0xee,
|
||||
0x5d, 0x22, 0xf2, 0xb7, 0x95, 0x24, 0xa1, 0xde, 0x25, 0xd1, 0x43, 0x5c,
|
||||
0xab, 0x63, 0xab, 0x15, 0x6c, 0x92, 0x16, 0x35, 0xbb, 0xb5, 0x80, 0x14,
|
||||
0x35, 0x48, 0x77, 0x77, 0x90, 0xf2, 0x6b, 0xf2, 0x99, 0x56, 0x09, 0xde,
|
||||
0x13, 0x5c, 0x19, 0xa8, 0x8d, 0x06, 0x6e, 0xa2, 0x41, 0x3e, 0x3e, 0xce,
|
||||
0xd6, 0x83, 0x0d, 0x36, 0x8f, 0x37, 0x69, 0xb5, 0x8b, 0xd5, 0x0f, 0x3e,
|
||||
0x74, 0x72, 0xff, 0x5d, 0x83, 0x43, 0xfa, 0xf5, 0xe3, 0x81, 0x3f, 0x3e,
|
||||
0x81, 0x92, 0xc4, 0xaa, 0x6f, 0x7d, 0xe7, 0x21, 0x6b, 0xed, 0x8d, 0x69,
|
||||
0x9a, 0xd0, 0x53, 0xa9, 0xf0, 0x9e, 0xbe, 0x1a, 0x03, 0x3d, 0x75, 0xa2,
|
||||
0x5a, 0x8d, 0xa8, 0x5a, 0xc1, 0xa6, 0x15, 0x4c, 0x1c, 0x23, 0xd6, 0x22,
|
||||
0xc6, 0x94, 0xd5, 0x63, 0x59, 0xfe, 0x6a, 0x07, 0x77, 0xb1, 0xe2, 0xc1,
|
||||
0x39, 0x7c, 0xee, 0xf0, 0xad, 0x16, 0x79, 0xb3, 0x85, 0x6b, 0x4c, 0x70,
|
||||
0x68, 0xbc, 0xc1, 0xcb, 0x07, 0x9b, 0xec, 0x69, 0x36, 0x69, 0xb7, 0x32,
|
||||
0x72, 0xe7, 0xbb, 0xd6, 0x51, 0x58, 0x3d, 0x38, 0xa4, 0x2b, 0x4e, 0x04,
|
||||
0xfe, 0xc4, 0x04, 0x80, 0x6f, 0x7f, 0xb4, 0x77, 0x5a, 0xa3, 0xd1, 0x1c,
|
||||
0xb2, 0xd6, 0x2e, 0x4c, 0xd2, 0x98, 0x6a, 0x9a, 0x72, 0x4e, 0xbd, 0xca,
|
||||
0x59, 0x3d, 0x35, 0xd2, 0x5a, 0x15, 0x5b, 0xa9, 0x10, 0xa5, 0x29, 0x26,
|
||||
0x4e, 0xca, 0x43, 0x88, 0xa1, 0xa8, 0xbf, 0x41, 0x83, 0xa2, 0x21, 0x10,
|
||||
0x82, 0x27, 0xe4, 0x0e, 0x9f, 0x65, 0xf8, 0x76, 0x1b, 0xd7, 0x6a, 0xd1,
|
||||
0x98, 0x68, 0x32, 0x3c, 0xd1, 0x62, 0x64, 0xa2, 0x45, 0xb3, 0xdd, 0x26,
|
||||
0x6b, 0xe7, 0xe4, 0x9d, 0x9c, 0x7f, 0x0a, 0xe0, 0xdf, 0x92, 0x00, 0xc0,
|
||||
0xbd, 0x37, 0xf7, 0x4e, 0x9b, 0x68, 0x34, 0x87, 0x22, 0x6b, 0x16, 0xc6,
|
||||
0x51, 0x4c, 0x92, 0xc4, 0xf4, 0x54, 0x53, 0xce, 0xaa, 0x56, 0x99, 0x55,
|
||||
0x4d, 0xa9, 0xa4, 0x29, 0x36, 0x2d, 0x09, 0x44, 0x51, 0x79, 0x30, 0x2f,
|
||||
0x08, 0x04, 0xef, 0x8b, 0x14, 0x99, 0x67, 0xf8, 0x76, 0xc6, 0xfe, 0x56,
|
||||
0xc6, 0x68, 0xb3, 0xcd, 0x8e, 0x46, 0xbb, 0x6b, 0x97, 0xdc, 0x39, 0x9c,
|
||||
0x2f, 0x76, 0xdc, 0x12, 0xcb, 0x49, 0x83, 0x3f, 0x29, 0x02, 0x00, 0xdf,
|
||||
0xfa, 0xcd, 0xde, 0x69, 0x8d, 0x46, 0xe3, 0xdf, 0x8d, 0x98, 0xab, 0xa2,
|
||||
0xc8, 0x12, 0xc5, 0x31, 0x69, 0x5c, 0x90, 0x99, 0x9e, 0xc6, 0xf4, 0xc7,
|
||||
0x31, 0xfd, 0x71, 0x44, 0x6a, 0x2d, 0xb1, 0x29, 0x3c, 0x9f, 0xab, 0xd2,
|
||||
0xf6, 0x81, 0xf1, 0xdc, 0x73, 0x20, 0xcb, 0x79, 0xb3, 0xed, 0x68, 0xe4,
|
||||
0x39, 0x59, 0x9e, 0x93, 0x67, 0x79, 0xd7, 0x2e, 0x3e, 0x04, 0x74, 0x52,
|
||||
0xba, 0x1c, 0x1c, 0xd2, 0xbb, 0x4f, 0x16, 0xfc, 0x49, 0x13, 0x00, 0xe0,
|
||||
0xd1, 0xcf, 0xc9, 0xca, 0xaf, 0x7d, 0x7b, 0x50, 0x84, 0x2f, 0x5b, 0x53,
|
||||
0x5c, 0x79, 0xd8, 0x28, 0x22, 0xb2, 0x96, 0x28, 0xb2, 0x58, 0x6b, 0x31,
|
||||
0xc6, 0x74, 0x83, 0x56, 0x55, 0xf1, 0x41, 0xf1, 0xde, 0xe3, 0xbc, 0xc7,
|
||||
0x3b, 0x7f, 0x18, 0xb4, 0x0f, 0x84, 0x50, 0x06, 0x6a, 0x61, 0x99, 0xed,
|
||||
0xc0, 0xf2, 0xc1, 0x21, 0x5d, 0x7b, 0x2a, 0xe0, 0x4f, 0x8d, 0x40, 0xd9,
|
||||
0xfe, 0xe2, 0x5a, 0xbb, 0x48, 0x55, 0x57, 0x19, 0x23, 0x57, 0x19, 0x63,
|
||||
0x30, 0x62, 0x30, 0x46, 0x8a, 0x34, 0x49, 0x71, 0x09, 0x05, 0x9d, 0x8b,
|
||||
0x5b, 0x2d, 0x80, 0x86, 0x40, 0x08, 0xda, 0x05, 0xad, 0xda, 0xb5, 0xcb,
|
||||
0x01, 0x60, 0xd5, 0xa9, 0xae, 0xfa, 0x3b, 0x22, 0xd0, 0x69, 0x83, 0x57,
|
||||
0xcb, 0x55, 0x46, 0x64, 0x85, 0x18, 0x59, 0x2a, 0x22, 0x03, 0x66, 0x0a,
|
||||
0x01, 0x80, 0xa0, 0xa1, 0x4b, 0xa2, 0x58, 0xec, 0x2e, 0xf0, 0x75, 0xc0,
|
||||
0x2a, 0x8e, 0x53, 0xa0, 0xfd, 0xbf, 0x10, 0x98, 0xdc, 0x06, 0xaf, 0x96,
|
||||
0xa5, 0xc0, 0x22, 0x8a, 0x6b, 0x8f, 0x79, 0x65, 0xef, 0xb4, 0x03, 0x14,
|
||||
0x80, 0xb7, 0x53, 0x94, 0xc3, 0x6b, 0x06, 0x87, 0x74, 0xf8, 0x1d, 0xbf,
|
||||
0xb4, 0x6c, 0xbf, 0xb0, 0xbf, 0xd4, 0xff, 0xb2, 0xda, 0xbb, 0xfe, 0x9f,
|
||||
0x3d, 0xde, 0xf5, 0x04, 0xfe, 0x0f, 0x54, 0x13, 0xec, 0xcc, 0x99, 0x7c,
|
||||
0x3d, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
|
||||
0x60, 0x82,
|
||||
};
|
||||
@@ -1,283 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *toolbar_help_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"48 48 229 2",
|
||||
" c #121F74",
|
||||
". c #0F2276",
|
||||
"X c #062D7C",
|
||||
"o c #092D7C",
|
||||
"O c #132376",
|
||||
"+ c #192677",
|
||||
"@ c #152678",
|
||||
"# c #192678",
|
||||
"$ c #132D7C",
|
||||
"% c #1C2E7D",
|
||||
"& c #04307F",
|
||||
"* c #08317F",
|
||||
"= c #16317F",
|
||||
"- c #232F7E",
|
||||
"; c #292D7E",
|
||||
": c #362F7F",
|
||||
"> c #22317E",
|
||||
", c #012F83",
|
||||
"< c #0A2E81",
|
||||
"1 c #023483",
|
||||
"2 c #093384",
|
||||
"3 c #00398A",
|
||||
"4 c #163C87",
|
||||
"5 c #143D8A",
|
||||
"6 c #013F90",
|
||||
"7 c #233482",
|
||||
"8 c #2B3581",
|
||||
"9 c #2D3D87",
|
||||
"0 c #223C88",
|
||||
"q c #293F88",
|
||||
"w c #373784",
|
||||
"e c #303C86",
|
||||
"r c #473E89",
|
||||
"t c #00408D",
|
||||
"y c #0E4089",
|
||||
"u c #03488F",
|
||||
"i c #16438B",
|
||||
"p c #014493",
|
||||
"a c #014B94",
|
||||
"s c #0B4D92",
|
||||
"d c #004F9A",
|
||||
"f c #134F93",
|
||||
"g c #055097",
|
||||
"h c #0B5094",
|
||||
"j c #01559C",
|
||||
"k c #00589E",
|
||||
"l c #085A9E",
|
||||
"z c #125094",
|
||||
"x c #115698",
|
||||
"c c #22458D",
|
||||
"v c #2C448B",
|
||||
"b c #2D4A8F",
|
||||
"n c #33478D",
|
||||
"m c #3B448B",
|
||||
"M c #35498F",
|
||||
"N c #224F95",
|
||||
"B c #255596",
|
||||
"V c #2A5194",
|
||||
"C c #245C9D",
|
||||
"Z c #2C5E9D",
|
||||
"A c #395495",
|
||||
"S c #375798",
|
||||
"D c #355A9A",
|
||||
"F c #3A5B9A",
|
||||
"G c #2D619E",
|
||||
"H c #3E639E",
|
||||
"J c #005CA3",
|
||||
"K c #0D5EA1",
|
||||
"L c #0262A6",
|
||||
"P c #0065AB",
|
||||
"I c #0069AE",
|
||||
"U c #1563A5",
|
||||
"Y c #1C66A5",
|
||||
"T c #1F68A6",
|
||||
"R c #176BAB",
|
||||
"E c #0064B2",
|
||||
"W c #006DB2",
|
||||
"Q c #106FB0",
|
||||
"! c #0071B6",
|
||||
"~ c #0C73B5",
|
||||
"^ c #0074B9",
|
||||
"/ c #1273B3",
|
||||
"( c #1C79B6",
|
||||
") c #2666A3",
|
||||
"_ c #2C65A2",
|
||||
"` c #2569A6",
|
||||
"' c #2A6AA6",
|
||||
"] c #266EA9",
|
||||
"[ c #2C6EA9",
|
||||
"{ c #3567A2",
|
||||
"} c #3A65A1",
|
||||
"| c #336BA5",
|
||||
" . c #3A69A3",
|
||||
".. c #336EA8",
|
||||
"X. c #2C71AA",
|
||||
"o. c #3373AB",
|
||||
"O. c #3579AF",
|
||||
"+. c #3D79AF",
|
||||
"@. c #2176B2",
|
||||
"#. c #297DB7",
|
||||
"$. c #207FBB",
|
||||
"%. c #3577B0",
|
||||
"&. c #347AB2",
|
||||
"*. c #3D7CB2",
|
||||
"=. c #4F4A91",
|
||||
"-. c #5B4E92",
|
||||
";. c #435495",
|
||||
":. c #465E9B",
|
||||
">. c #4A5D9B",
|
||||
",. c #555597",
|
||||
"<. c #644E91",
|
||||
"1. c #665898",
|
||||
"2. c #43629E",
|
||||
"3. c #49609D",
|
||||
"4. c #55639E",
|
||||
"5. c #4165A0",
|
||||
"6. c #4B6DA5",
|
||||
"7. c #566FA7",
|
||||
"8. c #5A6BA4",
|
||||
"9. c #536FAA",
|
||||
"0. c #5670A7",
|
||||
"q. c #5778AC",
|
||||
"w. c #427CB1",
|
||||
"e. c #517EB0",
|
||||
"r. c #6E69A3",
|
||||
"t. c #6B76AA",
|
||||
"y. c #7174A9",
|
||||
"u. c #8272A7",
|
||||
"i. c #8476AA",
|
||||
"p. c #8872A8",
|
||||
"a. c #2580BB",
|
||||
"s. c #2C83BD",
|
||||
"d. c #3386BD",
|
||||
"f. c #3488BF",
|
||||
"g. c #398ABF",
|
||||
"h. c #4585B7",
|
||||
"j. c #4884B7",
|
||||
"k. c #448BBD",
|
||||
"l. c #488DBF",
|
||||
"z. c #5282B3",
|
||||
"x. c #5B81B1",
|
||||
"c. c #5688B7",
|
||||
"v. c #5488B8",
|
||||
"b. c #7C89B6",
|
||||
"n. c #738DB8",
|
||||
"m. c #6091BD",
|
||||
"M. c #348AC0",
|
||||
"N. c #3692C8",
|
||||
"B. c #3E95C9",
|
||||
"V. c #428DC1",
|
||||
"C. c #569ECA",
|
||||
"Z. c #6295C0",
|
||||
"A. c #679AC4",
|
||||
"S. c #729CC5",
|
||||
"D. c #7C9BC2",
|
||||
"F. c #60A3CE",
|
||||
"G. c #7DACCF",
|
||||
"H. c #6CA7D1",
|
||||
"J. c #6FABD3",
|
||||
"K. c #8F84B4",
|
||||
"L. c #998AB7",
|
||||
"P. c #9B8FB9",
|
||||
"I. c #A397BE",
|
||||
"U. c #83ACCE",
|
||||
"Y. c #8FAFCE",
|
||||
"T. c #94A7C9",
|
||||
"R. c #9DA7C9",
|
||||
"E. c #97AECE",
|
||||
"W. c #9BABCB",
|
||||
"Q. c #92B4D2",
|
||||
"!. c #93BFDC",
|
||||
"~. c #99BFDA",
|
||||
"^. c #A2A5C8",
|
||||
"/. c #A0ABCB",
|
||||
"(. c #B2A7C9",
|
||||
"). c #B6AECD",
|
||||
"_. c #A3B1CF",
|
||||
"`. c #A6B4D1",
|
||||
"'. c #AAB5D1",
|
||||
"]. c #A7B8D4",
|
||||
"[. c #ABBAD5",
|
||||
"{. c #A0BED9",
|
||||
"}. c #AEBFD8",
|
||||
"|. c #B2BED7",
|
||||
" X c #95C3DF",
|
||||
".X c #A3C4DD",
|
||||
"XX c #B7C2D9",
|
||||
"oX c #B9C4DC",
|
||||
"OX c #95C4E0",
|
||||
"+X c #9DC7E2",
|
||||
"@X c #9DC9E4",
|
||||
"#X c #A2C7E0",
|
||||
"$X c #A5CAE2",
|
||||
"%X c #AECDE3",
|
||||
"&X c #B0CCE2",
|
||||
"*X c #BACCE0",
|
||||
"=X c #BFD7E8",
|
||||
"-X c #CDCCCC",
|
||||
";X c #D0CFCF",
|
||||
":X c #C7C5DB",
|
||||
">X c #CDC4DB",
|
||||
",X c #D4D3D3",
|
||||
"<X c #DCDBDB",
|
||||
"1X c #E0DFDF",
|
||||
"2X c #D6CFE2",
|
||||
"3X c #C1D3E4",
|
||||
"4X c #DAD3E3",
|
||||
"5X c #D3DEEB",
|
||||
"6X c #D6E2EE",
|
||||
"7X c #DBE3EE",
|
||||
"8X c #D1E4F0",
|
||||
"9X c #DFE6F0",
|
||||
"0X c #DBE9F2",
|
||||
"qX c #E3E3E3",
|
||||
"wX c #E8E7E7",
|
||||
"eX c #EAE3EE",
|
||||
"rX c #ECEBEB",
|
||||
"tX c #E0E6F0",
|
||||
"yX c #E4EDF4",
|
||||
"uX c #E8EBF3",
|
||||
"iX c #F2EDF2",
|
||||
"pX c #EBF1F7",
|
||||
"aX c #EFF5F9",
|
||||
"sX c #F5F4F4",
|
||||
"dX c #F8F7F7",
|
||||
"fX c #F2F4F8",
|
||||
"gX c #F6FAFC",
|
||||
"hX c #FFFFFF",
|
||||
"jX c None",
|
||||
/* pixels */
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX,X,X,X,X,X,X;X-XjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX,X<XqXrXsXdXhXhXhXhXdXsXrXqX,X-XjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjXjXjX<XwXsXhXhXhXgXfXuX5X5XuXfXgXhXhXhXsXqX,XjXjXjXjXjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjX<XrXhXhXhX5XR.t.;.e 8 - - 8 e ;.t.R.5XhXhXdXwX,XjXjXjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjX,XwXhXhXgX'.4.> O # % > > > > % + O > 4.'.gXhXdXqX-XjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjX<XsXhXhX'.;.O O - 9 M ;.;.>.>.>.>.;.;.M 9 > O O ;.'.hXhXrX,XjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXqXdXhX7X8.@ @ 7 M ;.>.>.>.>.>.>.>.>.>.>.>.>.;.M 7 @ @ 8.7XhXsX,XjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXqXhXhXXXv . 7 M >.>.>.:.:.:.:.:.:.:.:.:.:.:.:.>.>.>.M 7 . v XXhXsX<XjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXqXhXhX_.% $ q ;.3.:.:.2.2.:.F S S S S S S F F 2.3.:.:.>.;.q @ % _.hXsX,XjXjXjXjXjXjX",
|
||||
"jXjXjXjXjX<XgXhX_.$ $ b :.3.2.2.2.F D 6.n.T.`.|.oX|./.b.8.A D 2.2.2.3.:.b $ $ _.hXsX,XjXjXjXjXjX",
|
||||
"jXjXjXjX,XdXhXXX= $ b 2.2.2.2.H D q.}.pXhXhXhXhXhXhXhXhXdX:Xy.n H 5.2.2.3.n $ = oXhXrX-XjXjXjXjX",
|
||||
"jXjXjXjXrXhX9Xv $ b 2.2.2.H } D D.fXhXhXhXhXhXhXhXhXhXhXhXhXhX).m D 5.2.2.2.b $ v tXhX1XjXjXjXjX",
|
||||
"jXjXjX1XhXhX0.X c 2.2.H } } Z D.hXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhX>Xw D } H 2.2.c o 7.hXdX,XjXjXjX",
|
||||
"jXjXjXsXhX[.o 4 F 5.} } { G e.gXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhX(.7 { } } 5.F 4 o [.hXwXjXjXjX",
|
||||
"jXjXqXhXgXD 2 V } } { { { _ *XhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhX-.V | { } 5.V * S gXdX,XjXjX",
|
||||
"jXjXsXhX].& i } .{ { | _ z.hXhXhXhXhXhXhXhXeX^.E.3XhXhXhXhXhXhXhXhXI.7 ..{ { } } i X ].hXqXjXjX",
|
||||
"jX<XhXhX6.1 B .{ | | | ) Y.hXhXhXhXhXhXhX2Xm C ` ) {.hXhXhXhXhXhXhX>X; ..| { { .B 1 6.hXsX-XjX",
|
||||
"jXwXhX6Xy j _ { | | | | _ 3XhXhXhXhXhXhXhX1.N O.o.' m.hXhXhXhXhXhXhX4X; | | | | { { j y 6XhX,XjX",
|
||||
"jXrXhXE.1 / %.{ | .........X6XuXgXhXhXhXiX: [ o.X.T U.hXhXhXhXhXhXhX>X; o...| | { O.Q 1 E.hXqXjX",
|
||||
"jXdXhXx.t ( d...| ....o.o.[ o.w.v.Z.S.U.D.5 l l d *.pXhXhXhXhXhXhXhXL.0 o.....| ..d.( t x.hXrXjX",
|
||||
"<XhXgXG d a.M.&.| ..o.o.o.o.o.X.Y l d a d k j a j.pXhXhXhXhXhXhXhXsXr _ o.o...| &.f.a.d G gXsX-X",
|
||||
"<XhXaXz k s.f.M.%...o.o.o.o.T l j j j j k k j A.gXhXhXhXhXhXhXhXhXi.c %.o.o...%.M.f.s.k f fXdX-X",
|
||||
"qXhXyXs J d.f.f.f.O.o.O.X.K j j j k k k k j G.hXhXhXhXhXhXhXhXhXP.< K [ o.o.O.f.f.f.d.J s yXhX,X",
|
||||
"qXhX5Xp L d.f.f.M.M.&.` j j j k k J J J j G.hXhXhXhXhXhXhXhXhXK.2 j j j ` &.f.M.f.f.d.L u 5XhX,X",
|
||||
"qXhX5Xa L d.f.f.f.M.$.J j j k J J J J k k.hXhXhXhXhXhXhXhXsXr.3 J k j j J $.M.f.f.f.d.L a 5XhX,X",
|
||||
"qXhXyXh L d.f.f.M.a.W W P k k J J J J J =XhXhXhXhXhXhXhXeX,.p L J k k L W W a.M.f.f.d.J s yXhX,X",
|
||||
"qXhXaXx J s.f.f.s.W W W ! W L J J J J @.gXhXhXhXhXhXhXiX=.p L J J L W ! W W W s.f.f.s.J x fXdX,X",
|
||||
"1XhXgX' j a.f.d.~ I W W W ! ! W P L J k.hXhXhXhXhXhXhXL., P L P W ! ! W W W I ~ d.f.a.j _ gXsX;X",
|
||||
"jXdXhXc.a ( g.( I W W W W ! ! ! ^ ! I C.hXhXhXhXhXhXhX<.d ! ! ^ ! ! W W W W I I ( g.( a c.hXrXjX",
|
||||
"jXsXhXQ.p / d.I I W W W W W ! ! ! ^ ! N.@X@X@X@X@X@X+XD E ^ ! ! ! ! W W W W I I I d./ p Q.hXqXjX",
|
||||
"jXwXhX6Xg L / I I I W W W W W ! ! ! ^ W E E E E E E E ^ ^ ! ! ! ! W W W W I I I I / L g 6XhX<XjX",
|
||||
"jXqXhXhX*.j I I I I I W W W W ! ! ! W B.J.H.H.H.H.H.J.o.L ^ ! ! W W W W W I I I I I j +.hXdX,XjX",
|
||||
"jXjXsXhX{.a P I I I I W W W W W ! ! W @XhXhXhXhXhXhXhXp.p ^ ! W W W W W W I I I I P a {.hXwXjXjX",
|
||||
"jXjXwXhXgX] k I I I I I W W W W W W W OXhXhXhXhXhXhXhXu.p ^ W W W W W W I I I I I j ] gXhX<XjXjX",
|
||||
"jXjXjXdXhX.Xd L I I I I I W W W W W E OXhXhXhXhXhXhXhXu.p ^ W W W W W I I I I I L a .XhXrXjXjXjX",
|
||||
"jXjXjXwXhXhXh.j P I I I I I W W W W I OXhXhXhXhXhXhXhXu.p ! W W W W I I I I I P j h.hXgX<XjXjXjX",
|
||||
"jXjXjXjXsXhX0XU J I I I I I I W W W P XhXhXhXhXhXhXhXu.p ! W W W I I I I I I J U 0XhXwXjXjXjXjX",
|
||||
"jXjXjXjX1XgXhX&Xk J I I I I I I I W P +XhXhXhXhXhXhXhXp.6 ! W I I I I I I I J k &XhXsX,XjXjXjXjX",
|
||||
"jXjXjXjXjXwXhXhX~.k J I I I I I I I P F.$X$X$X$X$X$X$X9.j W I I I I I I P J k ~.hXdX<XjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXrXhXhX~.J J P I I I I I I P P P P P P P P I W I I I I I P P J J ~.hXhXqXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXrXhXhX%XR J P P I I I I I I I I I I I I I I I I I I P P J R %XhXhXqXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXrXhXhX0Xl.J L P P P I I I I I I I I I I I I I P P L J l.0XhXgXqXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXwXgXhXhX.X#.L L P P P P P I I I I P P P P P L J #..XhXhXdX<XjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXqXsXhXhXgX#XV.I P P P P P P P P P P P P I V..XgXhXhXrX,XjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjXwXdXhXhXhX8X!.C.s./ ~ ! ! ~ / s.C.!.8XhXhXhXsX1XjXjXjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjXjXjXwXsXhXhXhXhXgXaXyX8X8XyXaXgXhXhXhXgXiXqXjXjXjXjXjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXqXwXsXdXhXhXhXhXhXhXhXhXdXrXwX<XjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX",
|
||||
"jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXqXqXqXqXqXqX1X<XjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX"
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user