Merge pull request #9479 from hrydgard/uwp-initial-support

UWP initial support
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2017-03-23 10:03:22 +01:00
commit f5e5614645
155 files changed
+12449 -232

No files matched your search

+10 -2
View File
@@ -2,6 +2,8 @@
// Licensed under GPLv2
// Refer to the license.txt file included.
#include "ppsspp_config.h"
#include <limits>
#include <algorithm>
#include <vector>
@@ -12,13 +14,15 @@
#include <string.h>
#include "base/basictypes.h"
#include "ppsspp_config.h"
#include "Arm64Emitter.h"
#include "MathUtil.h"
#include "CommonTypes.h"
#include "CommonWindows.h"
#include "CPUDetect.h"
#include "CommonWindows.h"
#ifdef IOS
#include <libkern/OSCacheControl.h>
#endif
@@ -322,7 +326,11 @@ void ARM64XEmitter::FlushIcacheSection(u8* start, u8* end)
#if defined(IOS)
// Header file says this is equivalent to: sys_icache_invalidate(start, end - start);
sys_cache_control(kCacheFunctionPrepareForExecution, start, end - start);
#elif PPSSPP_ARCH(ARM64)
#elif PPSSPP_PLATFORM(WINDOWS)
#if !PPSSPP_PLATFORM(UWP) // Not available on UWP, which is very bad!
FlushInstructionCache(GetCurrentProcess(), start, end - start);
#endif
#elif PPSSPP_ARCH(ARM64)
// Code from Dolphin, contributed by the Mono project.
// Don't rely on GCC's __clear_cache implementation, as it caches
+13 -3
View File
@@ -15,6 +15,8 @@
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "ppsspp_config.h"
#include "base/logging.h"
#include <assert.h>
@@ -33,6 +35,10 @@
#include "ArmEmitter.h"
#include "CPUDetect.h"
#ifdef _WIN32
#include "CommonWindows.h"
#endif
// Want it in release builds too
#ifdef __ANDROID__
#undef _dbg_assert_msg_
@@ -626,14 +632,18 @@ void ARMXEmitter::FlushIcacheSection(u8 *start, u8 *end)
#if defined(IOS)
// Header file says this is equivalent to: sys_icache_invalidate(start, end - start);
sys_cache_control(kCacheFunctionPrepareForExecution, start, end - start);
#elif !defined(_WIN32)
#if defined(ARM)
#elif PPSSPP_PLATFORM(WINDOWS)
#if !PPSSPP_PLATFORM(UWP) // Not available on UWP, which is very bad!
FlushInstructionCache(GetCurrentProcess(), start, end - start);
#endif
#elif PPSSPP_ARCH(ARM)
#if defined(__clang__) || defined(__ANDROID__)
__clear_cache(start, end);
#else
__builtin___clear_cache(start, end);
#endif
#endif
#endif
}
+3 -4
View File
@@ -108,14 +108,13 @@ void CPUInfo::Detect() {
#endif
num_cores = 1;
#ifdef _WIN32
#ifdef _M_IX86
#if PPSSPP_PLATFORM(UWP)
OS64bit = Mode64bit; // TODO: Not always accurate!
#elif defined(_WIN32) && defined(_M_IX86)
BOOL f64 = false;
IsWow64Process(GetCurrentProcess(), &f64);
OS64bit = (f64 == TRUE) ? true : false;
#endif
#endif
// Set obvious defaults, for extra safety
if (Mode64bit) {
bSSE = true;
+15 -16
View File
@@ -123,17 +123,20 @@ bool Exists(const std::string &filename) {
StripTailDirSlashes(fn);
#if defined(_WIN32)
#if PPSSPP_PLATFORM(UWP)
return false;
#else
std::wstring copy = ConvertUTF8ToWString(fn);
// Make sure Windows will no longer handle critical errors, which means no annoying "No disk" dialog
#if !PPSSPP_PLATFORM(UWP)
int OldMode = SetErrorMode(SEM_FAILCRITICALERRORS);
bool success = GetFileAttributes(copy.c_str()) != INVALID_FILE_ATTRIBUTES;
SetErrorMode(OldMode);
return success;
#endif
WIN32_FILE_ATTRIBUTE_DATA data{};
if (!GetFileAttributesEx(copy.c_str(), GetFileExInfoStandard, &data) || data.dwFileAttributes == INVALID_FILE_ATTRIBUTES) {
return false;
}
#if !PPSSPP_PLATFORM(UWP)
SetErrorMode(OldMode);
#endif
return true;
#else
struct stat64 file_info;
return stat64(fn.c_str(), &file_info) == 0;
@@ -149,7 +152,7 @@ bool IsDirectory(const std::string &filename)
#if defined(_WIN32)
std::wstring copy = ConvertUTF8ToWString(fn);
WIN32_FILE_ATTRIBUTE_DATA data{};
if (!GetFileAttributesEx(copy.c_str(), GetFileExInfoStandard, &data)) {
if (!GetFileAttributesEx(copy.c_str(), GetFileExInfoStandard, &data) || data.dwFileAttributes == INVALID_FILE_ATTRIBUTES) {
WARN_LOG(COMMON, "GetFileAttributes failed on %s: %08x", fn.c_str(), GetLastError());
return false;
}
@@ -170,28 +173,24 @@ bool IsDirectory(const std::string &filename)
// Deletes a given filename, return true on success
// Doesn't supports deleting a directory
bool Delete(const std::string &filename)
{
bool Delete(const std::string &filename) {
INFO_LOG(COMMON, "Delete: file %s", filename.c_str());
// Return true because we care about the file no
// being there, not the actual delete.
if (!Exists(filename))
{
if (!Exists(filename)) {
WARN_LOG(COMMON, "Delete: %s does not exists", filename.c_str());
return true;
}
// We can't delete a directory
if (IsDirectory(filename))
{
if (IsDirectory(filename)) {
WARN_LOG(COMMON, "Delete failed: %s is a directory", filename.c_str());
return false;
}
#ifdef _WIN32
if (!DeleteFile(ConvertUTF8ToWString(filename).c_str()))
{
if (!DeleteFile(ConvertUTF8ToWString(filename).c_str())) {
WARN_LOG(COMMON, "Delete: DeleteFile failed on %s: %s",
filename.c_str(), GetLastErrorMsg());
return false;
@@ -680,7 +679,7 @@ void openIniFile(const std::string fileName) {
std::string iniFile;
#if defined(_WIN32)
#if PPSSPP_PLATFORM(UWP)
// Not supported
// Do nothing.
#else
iniFile = fileName;
// Can't rely on a .txt file extension to auto-open in the right editor,
+19 -11
View File
@@ -15,6 +15,8 @@
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "ppsspp_config.h"
#include <algorithm>
#include "base/logging.h"
@@ -31,9 +33,11 @@ const char *hleCurrentThreadName = nullptr;
static const char level_to_char[8] = "-NEWIDV";
// Unfortunately this is quite slow.
#if PPSSPP_PLATFORM(UWP) && defined(_DEBUG)
#define LOG_MSC_OUTPUTDEBUG true
#else
#define LOG_MSC_OUTPUTDEBUG false
// #define LOG_MSC_OUTPUTDEBUG true
#endif
void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char* fmt, ...) {
if (!g_Config.bEnableLogging)
@@ -106,23 +110,27 @@ LogManager::LogManager() {
#endif
}
// Remove file logging on small devices
// Remove file logging on small devices in Release mode.
#if PPSSPP_PLATFORM(UWP)
if (IsDebuggerPresent())
debuggerLog_ = new OutputDebugStringLogListener();
#else
#if !defined(MOBILE_DEVICE) || defined(_DEBUG)
fileLog_ = new FileLogListener("");
consoleLog_ = new ConsoleListener();
debuggerLog_ = new DebuggerLogListener();
#else
fileLog_ = nullptr;
consoleLog_ = nullptr;
debuggerLog_ = nullptr;
#ifdef _WIN32
if (IsDebuggerPresent())
debuggerLog_ = new OutputDebugStringLogListener();
#endif
#endif
ringLog_ = new RingbufferLogListener();
#endif
#if !defined(MOBILE_DEVICE) || defined(_DEBUG)
AddListener(fileLog_);
AddListener(consoleLog_);
#if defined(_MSC_VER) && defined(USING_WIN_UI)
if (IsDebuggerPresent() && debuggerLog_ != NULL && LOG_MSC_OUTPUTDEBUG)
#if defined(_MSC_VER) && (defined(USING_WIN_UI) || PPSSPP_PLATFORM(UWP))
if (IsDebuggerPresent() && debuggerLog_ && LOG_MSC_OUTPUTDEBUG)
AddListener(debuggerLog_);
#endif
AddListener(ringLog_);
@@ -288,7 +296,7 @@ void FileLogListener::Log(const LogMessage &message) {
m_logfile << message.header << " " << message.msg << std::flush;
}
void DebuggerLogListener::Log(const LogMessage &message) {
void OutputDebugStringLogListener::Log(const LogMessage &message) {
#if _MSC_VER
OutputDebugStringUTF8(message.msg.c_str());
#endif
+20 -19
View File
@@ -17,6 +17,8 @@
#pragma once
#include "ppsspp_config.h"
#include <vector>
#include <mutex>
@@ -64,7 +66,7 @@ private:
bool m_enable;
};
class DebuggerLogListener : public LogListener {
class OutputDebugStringLogListener : public LogListener {
public:
void Log(const LogMessage &msg);
};
@@ -102,6 +104,20 @@ struct LogChannel {
class ConsoleListener;
class LogManager : NonCopyable {
private:
LogManager();
~LogManager();
LogChannel log_[LogTypes::NUMBER_OF_LOGS];
FileLogListener *fileLog_ = nullptr;
ConsoleListener *consoleLog_ = nullptr;
OutputDebugStringLogListener *debuggerLog_ = nullptr;
RingbufferLogListener *ringLog_ = nullptr;
static LogManager *logManager_; // Singleton. Ugh.
std::mutex log_lock_;
std::mutex listeners_lock_;
std::vector<LogListener*> listeners_;
public:
void AddListener(LogListener *listener);
void RemoveListener(LogListener *listener);
@@ -139,7 +155,7 @@ public:
return consoleLog_;
}
DebuggerLogListener *GetDebuggerListener() const {
OutputDebugStringLogListener *GetDebuggerListener() const {
return debuggerLog_;
}
@@ -160,21 +176,6 @@ public:
void ChangeFileLog(const char *filename);
void SaveConfig(IniFile::Section *section);
void LoadConfig(IniFile::Section *section, bool debugDefaults);
private:
LogChannel log_[LogTypes::NUMBER_OF_LOGS];
FileLogListener *fileLog_;
ConsoleListener *consoleLog_;
DebuggerLogListener *debuggerLog_;
RingbufferLogListener *ringLog_;
static LogManager *logManager_; // Singleton. Ugh.
std::mutex log_lock_;
std::mutex listeners_lock_;
std::vector<LogListener*> listeners_;
LogManager();
~LogManager();
void SaveConfig(IniFile::Section *section);
void LoadConfig(IniFile::Section *section, bool debugDefaults);
};
+8 -4
View File
@@ -29,8 +29,12 @@ size_t MemArena::roundup(size_t x) {
}
void MemArena::GrabLowMemSpace(size_t size) {
#if !PPSSPP_PLATFORM(UWP)
hMemoryMapping = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, (DWORD)(size), NULL);
GetSystemInfo(&sysInfo);
#else
hMemoryMapping = 0;
#endif
}
void MemArena::ReleaseSpace() {
@@ -38,13 +42,13 @@ void MemArena::ReleaseSpace() {
hMemoryMapping = 0;
}
void *MemArena::CreateView(s64 offset, size_t size, void *base) {
void *MemArena::CreateView(s64 offset, size_t size, void *viewbase) {
size = roundup(size);
#if PPSSPP_PLATFORM(UWP)
// TODO
void *ptr = nullptr;
// We just grabbed some RAM before using RESERVE. This commits it.
void *ptr = VirtualAllocFromApp(viewbase, size, MEM_COMMIT, PAGE_READWRITE);
#else
void *ptr = MapViewOfFileEx(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size, base);
void *ptr = MapViewOfFileEx(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size, viewbase);
#endif
return ptr;
}
+11 -1
View File
@@ -16,6 +16,7 @@
// http://code.google.com/p/dolphin-emu/
#include "ppsspp_config.h"
#include "Common.h"
#include "MemoryUtil.h"
#include "StringUtils.h"
@@ -280,7 +281,7 @@ void FreeAlignedMemory(void* ptr) {
bool PlatformIsWXExclusive() {
// Only iOS really needs this mode currently. Even without block linking, still should be much faster than IR JIT.
// This might also come in useful for UWP (Universal Windows Platform) if I'm understanding things correctly.
#ifdef IOS
#if defined(IOS) || PPSSPP_PLATFORM(UWP)
return true;
#else
// Returning true here lets you test the W^X path on Windows and other non-W^X platforms.
@@ -302,11 +303,20 @@ bool ProtectMemoryPages(const void* ptr, size_t size, uint32_t memProtFlags) {
// mprotect does not seem to, at least not on Android unless I made a mistake somewhere, so we manually round.
#ifdef _WIN32
uint32_t protect = ConvertProtFlagsWin32(memProtFlags);
#if PPSSPP_PLATFORM(UWP)
DWORD oldValue;
if (!VirtualProtectFromApp((void *)ptr, size, protect, &oldValue)) {
PanicAlert("WriteProtectMemory failed!\n%s", GetLastErrorMsg());
return false;
}
#else
DWORD oldValue;
if (!VirtualProtect((void *)ptr, size, protect, &oldValue)) {
PanicAlert("WriteProtectMemory failed!\n%s", GetLastErrorMsg());
return false;
}
#endif
return true;
#else
uint32_t protect = ConvertProtFlagsUnix(memProtFlags);
-1
View File
@@ -16,4 +16,3 @@ void GlobalThreadPool::Inititialize() {
initialized = true;
}
}
+6 -4
View File
@@ -21,15 +21,17 @@
#ifndef _WIN32_WINNT
#if _MSC_VER < 1700
#define _WIN32_WINNT 0x501 // Compile for XP on Visual Studio 2010 and below
#error You need a newer version of Visual Studio.
#else
#define _WIN32_WINNT 0x600 // Compile for Vista on Visual Studio 2012 and above
#endif // #if _MSC_VER < 1700
#define _WIN32_WINNT 0x600
#endif
#endif // #ifndef _WIN32_WINNT
#undef WINVER
#define WINVER 0x0600
#ifndef _WIN32_IE
#define _WIN32_IE 0x0500 // Default value is 0x0400
#define _WIN32_IE 0x0600 // Default value is 0x0400
#endif
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-1
View File
@@ -155,7 +155,6 @@ void CWCheatEngine::CreateCheatFile() {
I18NCategory *err = GetI18NCategory("Error");
host->NotifyUserMessage(err->T("Unable to create cheat file, disk may be full"));
}
}
}
+3 -3
View File
@@ -36,12 +36,12 @@ BlockDevice *constructBlockDevice(FileLoader *fileLoader) {
// Check for CISO
if (!fileLoader->Exists())
return nullptr;
char buffer[4];
char buffer[4]{};
size_t size = fileLoader->ReadAt(0, 1, 4, buffer);
fileLoader->Seek(0);
if (!memcmp(buffer, "CISO", 4) && size == 4)
if (size == 4 && !memcmp(buffer, "CISO", 4))
return new CISOFileBlockDevice(fileLoader);
else if (!memcmp(buffer, "\x00PBP", 4) && size == 4)
else if (size == 4 && !memcmp(buffer, "\x00PBP", 4))
return new NPDRMDemoBlockDevice(fileLoader);
else
return new FileBlockDevice(fileLoader);
+1 -1
View File
@@ -187,7 +187,7 @@ ISOFileSystem::ISOFileSystem(IHandleAllocator *_hAlloc, BlockDevice *_blockDevic
treeroot->valid = false;
if (memcmp(desc.cd001, "CD001", 5)) {
ERROR_LOG(FILESYS, "ISO looks bogus? Giving up...");
ERROR_LOG(FILESYS, "ISO looks bogus, expected CD001 signature not present? Giving up...");
return;
}
+6 -2
View File
@@ -809,11 +809,16 @@ void VirtualDiscFileSystem::HandlerLogger(void *arg, HandlerHandle handle, LogTy
}
VirtualDiscFileSystem::Handler::Handler(const char *filename, VirtualDiscFileSystem *const sys) {
#if !PPSSPP_PLATFORM(UWP)
#ifdef _WIN32
#if PPSSPP_PLATFORM(UWP)
#define dlopen(name, ignore) (void *)LoadPackagedLibrary(ConvertUTF8ToWString(name).c_str(), 0)
#define dlsym(mod, name) GetProcAddress((HMODULE)mod, name)
#define dlclose(mod) FreeLibrary((HMODULE)mod)
#else
#define dlopen(name, ignore) (void *)LoadLibrary(ConvertUTF8ToWString(name).c_str())
#define dlsym(mod, name) GetProcAddress((HMODULE)mod, name)
#define dlclose(mod) FreeLibrary((HMODULE)mod)
#endif
#endif
library = dlopen(filename, RTLD_LOCAL | RTLD_NOW);
@@ -842,7 +847,6 @@ VirtualDiscFileSystem::Handler::Handler(const char *filename, VirtualDiscFileSys
#undef dlsym
#undef dlclose
#endif
#endif
}
VirtualDiscFileSystem::Handler::~Handler() {
+1 -1
View File
@@ -407,7 +407,7 @@ void __AudioUpdate() {
// numFrames is number of stereo frames.
// This is called from *outside* the emulator thread.
int __AudioMix(short *outstereo, int numFrames, int sampleRate) {
return resampler.Mix(outstereo, numFrames, false, sampleRate);
return resampler.Mix(outstereo, numFrames, false, sampleRate);
}
const AudioDebugStats *__AudioGetDebugStats() {
+8 -8
View File
@@ -434,11 +434,11 @@ struct Atrac {
PSPPointer<SceAtracId> context_;
#ifdef USE_FFMPEG
AVCodecContext *codecCtx_;
SwrContext *swrCtx_;
AVFrame *frame_;
AVCodecContext *codecCtx_ = nullptr;
SwrContext *swrCtx_ = nullptr;
AVFrame *frame_ = nullptr;
AVPacket *packet_ = nullptr;
#endif // USE_FFMPEG
AVPacket *packet_;
#ifdef USE_FFMPEG
void ReleaseFFMPEGContext() {
@@ -470,10 +470,10 @@ struct Atrac {
void ForceSeekToSample(int sample) {
#ifdef USE_FFMPEG
avcodec_flush_buffers(codecCtx_);
#endif
// Discard any pending packet data.
packet_->size = 0;
#endif
currentSample_ = sample;
}
@@ -483,6 +483,7 @@ struct Atrac {
}
void SeekToSample(int sample) {
#ifdef USE_FFMPEG
// Discard any pending packet data.
packet_->size = 0;
@@ -491,7 +492,6 @@ struct Atrac {
const u32 unalignedSamples = (offsetSamples + sample) % SamplesPerFrame();
int seekFrame = sample + offsetSamples - unalignedSamples;
#ifdef USE_FFMPEG
if ((sample != currentSample_ || sample == 0) && codecCtx_ != nullptr) {
// Prefill the decode buffer with packets before the first sample offset.
avcodec_flush_buffers(codecCtx_);
@@ -524,10 +524,10 @@ struct Atrac {
if (off < first_.size) {
#ifdef USE_FFMPEG
av_init_packet(packet_);
#endif // USE_FFMPEG
packet_->data = BufferStart() + off;
packet_->size = std::min((u32)bytesPerFrame_, first_.size - off);
packet_->pos = off;
#endif // USE_FFMPEG
return true;
} else {
@@ -540,11 +540,11 @@ struct Atrac {
bool FillLowLevelPacket(u8 *ptr) {
#ifdef USE_FFMPEG
av_init_packet(packet_);
#endif // USE_FFMPEG
packet_->data = ptr;
packet_->size = bytesPerFrame_;
packet_->pos = 0;
#endif // USE_FFMPEG
return true;
}
-2
View File
@@ -291,13 +291,11 @@ void __DisplayDoState(PointerWrap &p) {
// Maybe a bit tricky to move at this point, though...
gstate_c.DoState(p);
#ifndef _XBOX
if (s < 2) {
// This shouldn't have been savestated anyway, but it was.
// It's unlikely to overlap with the first value in gpuStats.
p.ExpectVoid(&gl_extensions.gpuVendor, sizeof(gl_extensions.gpuVendor));
}
#endif
if (s < 6) {
GPUStatistics_v0 oldStats;
p.Do(oldStats);
+12
View File
@@ -35,9 +35,21 @@
#include "Core/ELF/PBPReader.h"
#include "Core/ELF/ParamSFO.h"
static std::map<std::string, std::unique_ptr<FileLoaderFactory>> factories;
void RegisterFileLoaderFactory(std::string prefix, std::unique_ptr<FileLoaderFactory> factory) {
factories[prefix] = std::move(factory);
}
FileLoader *ConstructFileLoader(const std::string &filename) {
if (filename.find("http://") == 0 || filename.find("https://") == 0)
return new CachingFileLoader(new DiskCachingFileLoader(new RetryingFileLoader(new HTTPFileLoader(filename))));
for (auto &iter : factories) {
if (startsWith(iter.first, filename)) {
return iter.second->ConstructFileLoader(filename);
}
}
return new LocalFileLoader(filename);
}
+10 -1
View File
@@ -18,6 +18,9 @@
#pragma once
#include <string>
#include <memory>
#include "Common/CommonTypes.h"
enum class IdentifiedFileType {
ERROR_IDENTIFYING,
@@ -46,7 +49,7 @@ enum class IdentifiedFileType {
PSP_SAVEDATA_DIRECTORY,
PPSSPP_SAVESTATE,
UNKNOWN
UNKNOWN,
};
class FileLoader {
@@ -100,5 +103,11 @@ std::string ResolvePBPFile(const std::string &filename);
IdentifiedFileType Identify_File(FileLoader *fileLoader);
class FileLoaderFactory {
public:
virtual FileLoader *ConstructFileLoader(const std::string &filename) = 0;
};
void RegisterFileLoaderFactory(std::string name, std::unique_ptr<FileLoaderFactory> factory);
// Can modify the string filename, as it calls IdentifyFile above.
bool LoadFile(FileLoader **fileLoaderPtr, std::string *error_string);
+1
View File
@@ -57,6 +57,7 @@ extern volatile CoreState coreState;
void ShowPC(u32 sp) {
ERROR_LOG(JIT, "ShowPC : %08x ArmSP : %08x", currentMIPS->pc, sp);
// Sleep(1);
}
void DisassembleArm(const u8 *data, int size);
+4
View File
@@ -2171,6 +2171,10 @@ namespace MIPSComp
DISABLE;
}
#if PPSSPP_ARCH(ARM_HARDFP)
DISABLE;
#endif
int vd = _VD;
int vs = _VS;
+13 -1
View File
@@ -83,7 +83,7 @@ ArmJit::ArmJit(MIPSState *mips) : blocks(mips, this), gpr(mips, &js, &jo), fpr(m
AllocCodeSpace(1024 * 1024 * 16); // 32MB is the absolute max because that's what an ARM branch instruction can reach, backwards and forwards.
GenerateFixedCode();
INFO_LOG(JIT, "ARM JIT initialized: %d MB of code space", GetSpaceLeft() / 1024 * 1024);
INFO_LOG(JIT, "ARM JIT initialized: %d MB of code space", GetSpaceLeft() / (1024 * 1024));
js.startDefaultPrefix = mips_->HasDefaultPrefix();
}
@@ -197,6 +197,18 @@ void ArmJit::CompileDelaySlot(int flags)
void ArmJit::Compile(u32 em_address) {
PROFILE_THIS_SCOPE("jitc");
#if PPSSPP_PLATFORM(UWP)
// INFO_LOG(JIT, "Compiling at %08x", em_address);
// Unfortunately Microsoft forgot to expose FlushInstructionCache to UWP applications... even though they expose
// the ability to generate code :( This works great on x86 but on ARM we're out of luck.
// This seems to be enough to flush the instruction cache:
// If this OutputDebugStringUTF8 is not called, we crash.
// But it only helps if the debugger is attached :( If not, we still crash.
// So really, the JIT is broken on Windows UWP ARM.
OutputDebugStringUTF8("JITHACK");
#endif
if (GetSpaceLeft() < 0x10000 || blocks.IsFull()) {
ClearCache();
}
+4 -1
View File
@@ -170,8 +170,11 @@ void Jit::GenerateFixedCode(JitOptions &jo) {
MOV(32, R(EAX), M(&mips_->pc));
dispatcherInEAXNoCheck = GetCodePtr();
#ifdef _M_IX86
#ifdef MASKED_PSP_MEMORY
AND(32, R(EAX), Imm32(Memory::MEMVIEW32_MASK));
#endif
#ifdef _M_IX86
_assert_msg_(CPU, Memory::base != 0, "Memory base bogus");
MOV(32, R(EAX), MDisp(EAX, (u32)Memory::base));
#elif _M_X64
+1 -1
View File
@@ -314,7 +314,7 @@ void Jit::Comp_SVQ(MIPSOpcode op)
GetVectorRegs(vregs, V_Quad, vt);
MOV(32, R(EAX), gpr.R(rs));
ADD(32, R(EAX), Imm32(imm));
#ifdef _M_IX86
#ifdef MASKED_PSP_MEMORY
AND(32, R(EAX), Imm32(Memory::MEMVIEW32_MASK));
#endif
MOV(32, R(ECX), R(EAX));
+30 -18
View File
@@ -16,6 +16,7 @@
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#include "ppsspp_config.h"
#if PPSSPP_ARCH(X86) || PPSSPP_ARCH(AMD64)
#include "Core/Config.h"
@@ -84,11 +85,15 @@ bool JitSafeMem::PrepareWrite(OpArg &dest, int size)
if (ImmValid())
{
MemCheckImm(MEM_WRITE);
u32 addr = (iaddr_ & alignMask_);
#ifdef MASKED_PSP_MEMORY
addr &= Memory::MEMVIEW32_MASK;
#endif
#ifdef _M_IX86
dest = M(Memory::base + (iaddr_ & Memory::MEMVIEW32_MASK & alignMask_));
#if PPSSPP_ARCH(32BIT)
dest = M(Memory::base + addr);
#else
dest = MDisp(MEMBASEREG, iaddr_ & alignMask_);
dest = MDisp(MEMBASEREG, addr);
#endif
return true;
}
@@ -109,11 +114,15 @@ bool JitSafeMem::PrepareRead(OpArg &src, int size)
if (ImmValid())
{
MemCheckImm(MEM_READ);
u32 addr = (iaddr_ & alignMask_);
#ifdef MASKED_PSP_MEMORY
addr &= Memory::MEMVIEW32_MASK;
#endif
#ifdef _M_IX86
src = M(Memory::base + (iaddr_ & Memory::MEMVIEW32_MASK & alignMask_));
#if PPSSPP_ARCH(32BIT)
src = M(Memory::base + addr);
#else
src = MDisp(MEMBASEREG, iaddr_ & alignMask_);
src = MDisp(MEMBASEREG, addr);
#endif
return true;
}
@@ -130,9 +139,12 @@ OpArg JitSafeMem::NextFastAddress(int suboffset)
if (iaddr_ != (u32) -1)
{
u32 addr = (iaddr_ + suboffset) & alignMask_;
#ifdef MASKED_PSP_MEMORY
addr &= Memory::MEMVIEW32_MASK;
#endif
#ifdef _M_IX86
return M(Memory::base + (addr & Memory::MEMVIEW32_MASK));
#if PPSSPP_ARCH(32BIT)
return M(Memory::base + addr);
#else
return MDisp(MEMBASEREG, addr);
#endif
@@ -140,7 +152,7 @@ OpArg JitSafeMem::NextFastAddress(int suboffset)
_dbg_assert_msg_(JIT, (suboffset & alignMask_) == suboffset, "suboffset must be aligned");
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
return MDisp(xaddr_, (u32) Memory::base + offset_ + suboffset);
#else
return MComplex(MEMBASEREG, xaddr_, SCALE_1, offset_ + suboffset);
@@ -152,7 +164,7 @@ OpArg JitSafeMem::PrepareMemoryOpArg(MemoryOpType type)
// We may not even need to move into EAX as a temporary.
bool needTemp = alignMask_ != 0xFFFFFFFF;
#ifdef _M_IX86
#ifdef MASKED_PSP_MEMORY
bool needMask = true; // raddr_ != MIPS_REG_SP; // Commented out this speedhack due to low impact
// We always mask on 32 bit in fast memory mode.
needTemp = needTemp || (fast_ && needMask);
@@ -184,7 +196,7 @@ OpArg JitSafeMem::PrepareMemoryOpArg(MemoryOpType type)
}
else
{
#ifdef _M_IX86
#ifdef MASKED_PSP_MEMORY
if (needMask) {
jit_->AND(32, R(EAX), Imm32(Memory::MEMVIEW32_MASK));
}
@@ -200,7 +212,7 @@ OpArg JitSafeMem::PrepareMemoryOpArg(MemoryOpType type)
jit_->SUB(32, R(xaddr_), Imm32(offset_));
}
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
return MDisp(xaddr_, (u32) Memory::base + offset_);
#else
return MComplex(MEMBASEREG, xaddr_, SCALE_1, offset_);
@@ -249,7 +261,7 @@ void JitSafeMem::DoSlowWrite(const void *safeFunc, const OpArg& src, int suboffs
jit_->AND(32, R(EAX), Imm32(alignMask_));
}
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
jit_->PUSH(EDX);
#endif
if (!src.IsSimpleReg(EDX)) {
@@ -260,7 +272,7 @@ void JitSafeMem::DoSlowWrite(const void *safeFunc, const OpArg& src, int suboffs
}
// This is a special jit-ABI'd function.
jit_->CALL(safeFunc);
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
jit_->POP(EDX);
#endif
needsCheck_ = true;
@@ -449,7 +461,7 @@ void JitSafeMemFuncs::CreateReadFunc(int bits, const void *fallbackFunc) {
CheckDirectEAX();
// Since we were CALLed, we need to align the stack before calling C++.
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
SUB(32, R(ESP), Imm8(16 - 4));
ABI_CallFunctionA(thunks_->ProtectFunction(fallbackFunc, 1), R(EAX));
ADD(32, R(ESP), Imm8(16 - 4));
@@ -463,7 +475,7 @@ void JitSafeMemFuncs::CreateReadFunc(int bits, const void *fallbackFunc) {
StartDirectAccess();
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
MOVZX(32, bits, EAX, MDisp(EAX, (u32)Memory::base));
#else
MOVZX(32, bits, EAX, MRegSum(MEMBASEREG, EAX));
@@ -476,7 +488,7 @@ void JitSafeMemFuncs::CreateWriteFunc(int bits, const void *fallbackFunc) {
CheckDirectEAX();
// Since we were CALLed, we need to align the stack before calling C++.
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
// 4 for return, 4 for saved reg on stack.
SUB(32, R(ESP), Imm8(16 - 4 - 4));
ABI_CallFunctionAA(thunks_->ProtectFunction(fallbackFunc, 2), R(EDX), R(EAX));
@@ -491,7 +503,7 @@ void JitSafeMemFuncs::CreateWriteFunc(int bits, const void *fallbackFunc) {
StartDirectAccess();
#ifdef _M_IX86
#if PPSSPP_ARCH(32BIT)
MOV(bits, MDisp(EAX, (u32)Memory::base), R(EDX));
#else
MOV(bits, MRegSum(MEMBASEREG, EAX), R(EDX));
+17 -2
View File
@@ -17,6 +17,10 @@
#include "ppsspp_config.h"
#if PPSSPP_PLATFORM(UWP)
#include "Common/CommonWindows.h"
#endif
#include <algorithm>
#include <mutex>
@@ -152,7 +156,7 @@ static bool Memory_TryBase(u32 flags) {
if (view.flags & MV_MIRROR_PREVIOUS) {
position = last_position;
}
#if PPSSPP_ARCH(64BIT)
#ifndef MASKED_PSP_MEMORY
*view.out_ptr = (u8*)g_arena.CreateView(
position, view.size, base + view.virtual_address);
if (!*view.out_ptr) {
@@ -177,7 +181,6 @@ static bool Memory_TryBase(u32 flags) {
}
return true;
bail:
// Argh! ERROR! Free what we grabbed so far so we can try again.
for (int j = 0; j <= i; j++) {
@@ -195,6 +198,11 @@ bail:
}
bool MemoryMap_Setup(u32 flags) {
#if PPSSPP_PLATFORM(UWP)
// We reserve the memory, then simply commit in TryBase.
base = (u8*)VirtualAllocFromApp(0, 0x10000000, MEM_RESERVE, PAGE_READWRITE);
#else
// Figure out how much memory we need to allocate in total.
size_t total_mem = 0;
for (int i = 0; i < num_views; i++) {
@@ -207,6 +215,7 @@ bool MemoryMap_Setup(u32 flags) {
// Grab some pagefile backed memory out of the void ...
g_arena.GrabLowMemSpace(total_mem);
#endif
#if !PPSSPP_PLATFORM(ANDROID)
if (g_arena.NeedsProbing()) {
@@ -237,7 +246,9 @@ bool MemoryMap_Setup(u32 flags) {
else
#endif
{
#if !PPSSPP_PLATFORM(UWP)
base = g_arena.Find4GBBase();
#endif
}
// Should return true...
@@ -254,6 +265,10 @@ void MemoryMap_Shutdown(u32 flags) {
*views[i].out_ptr = nullptr;
}
g_arena.ReleaseSpace();
#if PPSSPP_PLATFORM(UWP)
VirtualFree(base, 0, MEM_RELEASE);
#endif
}
void Init() {
+23 -18
View File
@@ -81,6 +81,12 @@ extern u8 *m_pUncachedRAM;
extern u32 g_MemorySize;
extern u32 g_PSPModel;
// UWP has such limited memory management that we need to mask
// even in 64-bit mode.
#if PPSSPP_ARCH(32BIT) || PPSSPP_PLATFORM(UWP)
#define MASKED_PSP_MEMORY
#endif
enum
{
// This may be adjusted by remaster games.
@@ -92,7 +98,7 @@ enum
SCRATCHPAD_SIZE = 0x00004000,
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
// This wraparound should work for PSP too.
MEMVIEW32_MASK = 0x3FFFFFFF,
#endif
@@ -126,8 +132,7 @@ void Clear();
// False when shutdown has already been called.
bool IsActive();
class MemoryInitedLock
{
class MemoryInitedLock {
public:
MemoryInitedLock();
~MemoryInitedLock();
@@ -156,7 +161,7 @@ u64 Read_U64(const u32 _Address);
#endif
inline u8* GetPointerUnchecked(const u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return (u8 *)(base + (address & MEMVIEW32_MASK));
#else
return (u8 *)(base + address);
@@ -174,7 +179,7 @@ void WriteUnchecked_U32(const u32 _Data, const u32 _Address);
#else
inline u32 ReadUnchecked_U32(const u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return *(u32_le *)(base + (address & MEMVIEW32_MASK));
#else
return *(u32_le *)(base + address);
@@ -182,7 +187,7 @@ inline u32 ReadUnchecked_U32(const u32 address) {
}
inline float ReadUnchecked_Float(const u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return *(float *)(base + (address & MEMVIEW32_MASK));
#else
return *(float *)(base + address);
@@ -190,7 +195,7 @@ inline float ReadUnchecked_Float(const u32 address) {
}
inline u16 ReadUnchecked_U16(const u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return *(u16_le *)(base + (address & MEMVIEW32_MASK));
#else
return *(u16_le *)(base + address);
@@ -198,15 +203,15 @@ inline u16 ReadUnchecked_U16(const u32 address) {
}
inline u8 ReadUnchecked_U8(const u32 address) {
#if PPSSPP_ARCH(32BIT)
return (*(u8 *)(base + (address & MEMVIEW32_MASK)));
#ifdef MASKED_PSP_MEMORY
return (*(u8 *)(base + (address & MEMVIEW32_MASK)));
#else
return (*(u8 *)(base + address));
#endif
}
inline void WriteUnchecked_U32(u32 data, u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
*(u32_le *)(base + (address & MEMVIEW32_MASK)) = data;
#else
*(u32_le *)(base + address) = data;
@@ -214,7 +219,7 @@ inline void WriteUnchecked_U32(u32 data, u32 address) {
}
inline void WriteUnchecked_Float(float data, u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
*(float *)(base + (address & MEMVIEW32_MASK)) = data;
#else
*(float *)(base + address) = data;
@@ -222,7 +227,7 @@ inline void WriteUnchecked_Float(float data, u32 address) {
}
inline void WriteUnchecked_U16(u16 data, u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
*(u16_le *)(base + (address & MEMVIEW32_MASK)) = data;
#else
*(u16_le *)(base + address) = data;
@@ -230,7 +235,7 @@ inline void WriteUnchecked_U16(u16 data, u32 address) {
}
inline void WriteUnchecked_U8(u8 data, u32 address) {
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
(*(u8 *)(base + (address & MEMVIEW32_MASK))) = data;
#else
(*(u8 *)(base + address)) = data;
@@ -337,7 +342,7 @@ struct PSPPointer
inline T &operator*() const
{
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return *(T *)(Memory::base + (ptr & Memory::MEMVIEW32_MASK));
#else
return *(T *)(Memory::base + ptr);
@@ -346,7 +351,7 @@ struct PSPPointer
inline T &operator[](int i) const
{
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return *((T *)(Memory::base + (ptr & Memory::MEMVIEW32_MASK)) + i);
#else
return *((T *)(Memory::base + ptr) + i);
@@ -355,7 +360,7 @@ struct PSPPointer
inline T *operator->() const
{
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return (T *)(Memory::base + (ptr & Memory::MEMVIEW32_MASK));
#else
return (T *)(Memory::base + ptr);
@@ -424,7 +429,7 @@ struct PSPPointer
inline operator T*()
{
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return (T *)(Memory::base + (ptr & Memory::MEMVIEW32_MASK));
#else
return (T *)(Memory::base + ptr);
@@ -433,7 +438,7 @@ struct PSPPointer
inline operator const T*() const
{
#if PPSSPP_ARCH(32BIT)
#ifdef MASKED_PSP_MEMORY
return (const T *)(Memory::base + (ptr & Memory::MEMVIEW32_MASK));
#else
return (const T *)(Memory::base + ptr);
+2 -3
View File
@@ -629,14 +629,12 @@ void InitSysDirectories() {
// Detect the "My Documents"(XP) or "Documents"(on Vista/7/8) folder.
#if PPSSPP_PLATFORM(UWP)
const std::string myDocsPath = ""; // TODO UWP
const HRESULT result = E_FAIL;
// We set g_Config.memStickDirectory outside.
#else
wchar_t myDocumentsPath[MAX_PATH];
const HRESULT result = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, myDocumentsPath);
const std::string myDocsPath = ConvertWStringToUTF8(myDocumentsPath) + "/PPSSPP/";
#endif
const std::string installedFile = path + "installed.txt";
const bool installed = File::Exists(installedFile);
@@ -686,6 +684,7 @@ void InitSysDirectories() {
// Clean up our mess.
if (File::Exists(testFile))
File::Delete(testFile);
#endif
// Create the default directories that a real PSP creates. Good for homebrew so they can
// expect a standard environment. Skipping THEME though, that's pointless.
+11
View File
@@ -15,6 +15,8 @@
// Official git repository and contact information can be found at
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#include "ppsspp_config.h"
#if !defined(ANDROID)
#include <memory>
@@ -55,10 +57,15 @@ static EShLanguage GetLanguage(const Draw::ShaderStage stage) {
}
void ShaderTranslationInit() {
// TODO: We have TLS issues on UWP
#if !PPSSPP_PLATFORM(UWP)
glslang::InitializeProcess();
#endif
}
void ShaderTranslationShutdown() {
#if !PPSSPP_PLATFORM(UWP)
glslang::FinalizeProcess();
#endif
}
std::string Preprocess(std::string code, ShaderLanguage lang, Draw::ShaderStage stage) {
@@ -167,6 +174,10 @@ bool TranslateShader(std::string *dest, ShaderLanguage destLang, TranslatedShade
if (srcLang != GLSL_300 && srcLang != GLSL_140)
return false;
#if PPSSPP_PLATFORM(UWP)
return false;
#endif
glslang::TProgram program;
const char *shaderStrings[1];
+4
View File
@@ -177,7 +177,11 @@ UI::EventReturn CwCheatScreen::OnEditCheatFile(UI::EventParams &params) {
MIPSComp::jit->ClearCache();
}
TriggerFinish(DR_OK);
#if PPSSPP_PLATFORM(UWP)
LaunchBrowser(activeCheatFile.c_str());
#else
File::openIniFile(activeCheatFile);
#endif
return UI::EVENT_DONE;
}
+6
View File
@@ -391,6 +391,12 @@ void SystemInfoScreen::CreateViews() {
deviceSpecs->Add(new InfoItem("Memory Page Size", StringFromFormat("%d bytes", GetMemoryProtectPageSize())));
deviceSpecs->Add(new InfoItem("RW/RX exclusive: ", PlatformIsWXExclusive() ? "Yes" : "No"));
const char *build = "Release";
#ifdef _DEBUG
build = "Debug";
#endif
deviceSpecs->Add(new InfoItem("PPSSPP build: ", build));
#ifdef __ANDROID__
deviceSpecs->Add(new ItemHeader("Audio Information"));
deviceSpecs->Add(new InfoItem("Sample rate", StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_SAMPLE_RATE))));
+3
View File
@@ -77,6 +77,9 @@
#if !PPSSPP_PLATFORM(UWP)
#include "gfx/gl_common.h"
#endif
#if !PPSSPP_PLATFORM(UWP)
#include "gfx/gl_common.h"
#endif
#ifndef MOBILE_DEVICE
AVIDump avi;
+6 -2
View File
@@ -222,13 +222,15 @@ bool GameInfo::LoadFromPath(const std::string &gamePath) {
if (filePath_ != gamePath) {
delete fileLoader;
fileLoader = ConstructFileLoader(gamePath);
if (!fileLoader)
return false;
filePath_ = gamePath;
// This is a fallback title, while we're loading / if unable to load.
title = File::GetFilename(filePath_);
}
return GetFileLoader()->Exists();
return fileLoader ? fileLoader->Exists() : true;
}
FileLoader *GameInfo::GetFileLoader() {
@@ -413,7 +415,6 @@ public:
pbp.GetSubFileAsString(PBP_ICON0_PNG, &info_->iconTextureData);
} else {
// Read standard icon
DEBUG_LOG(LOADER, "Loading unknown.png because a PBP was missing an icon");
ReadVFSToString("unknown.png", &info_->iconTextureData, &info_->lock);
}
info_->iconDataLoaded = true;
@@ -531,6 +532,9 @@ handleELF:
// Let's assume it's an ISO.
// TODO: This will currently read in the whole directory tree. Not really necessary for just a
// few files.
FileLoader *fl = info_->GetFileLoader();
if (!fl)
return; // Happens with UWP currently, TODO...
BlockDevice *bd = constructBlockDevice(info_->GetFileLoader());
if (!bd)
return; // nothing to do here..
+9 -8
View File
@@ -620,11 +620,6 @@ UI::ViewGroup *CreatePadLayout(float xres, float yres, bool *pause) {
const int roundImage = g_Config.iTouchButtonStyle ? I_ROUND_LINE : I_ROUND;
// These platforms always need the pause menu button to be shown.
#if defined(IOS)
root->Add(new BoolButton(pause, roundImage, I_ARROW, 1.0f, new AnchorLayoutParams(halfW, 20, NONE, NONE, true)))->SetAngle(90);
#endif
if (g_Config.bShowTouchControls) {
const int rectImage = g_Config.iTouchButtonStyle ? I_RECT_LINE : I_RECT;
const int shoulderImage = g_Config.iTouchButtonStyle ? I_SHOULDER_LINE : I_SHOULDER;
@@ -633,10 +628,10 @@ UI::ViewGroup *CreatePadLayout(float xres, float yres, bool *pause) {
const int stickBg = g_Config.iTouchButtonStyle ? I_STICK_BG_LINE : I_STICK_BG;
static const int comboKeyImages[5] = { I_1, I_2, I_3, I_4, I_5 };
#if !defined(IOS)
if (g_Config.bShowTouchPause)
if (!System_GetPropertyInt(SYSPROP_HAS_BACK_BUTTON)) {
root->Add(new BoolButton(pause, roundImage, I_ARROW, 1.0f, new AnchorLayoutParams(halfW, 20, NONE, NONE, true)))->SetAngle(90);
#endif
}
if (g_Config.bShowTouchCircle)
root->Add(new PSPButton(CTRL_CIRCLE, roundImage, I_CIRCLE, Action_button_scale, new AnchorLayoutParams(Action_circle_button_X, Action_circle_button_Y, NONE, NONE, true)));
@@ -685,6 +680,12 @@ UI::ViewGroup *CreatePadLayout(float xres, float yres, bool *pause) {
if (g_Config.bShowComboKey4)
root->Add(new ComboKey(g_Config.iCombokey4, roundImage, comboKeyImages[4], combo4_key_scale, new AnchorLayoutParams(combo4_key_X, combo4_key_Y, NONE, NONE, true)));
}
else {
// If there's no hardware back button (or ESC key), add a soft button.
if (!System_GetPropertyInt(SYSPROP_HAS_BACK_BUTTON)) {
root->Add(new BoolButton(pause, roundImage, I_ARROW, 1.0f, new AnchorLayoutParams(halfW, 20, NONE, NONE, true)))->SetAngle(90);
}
}
return root;
}
+7
View File
@@ -18,6 +18,7 @@
#include <cmath>
#include <algorithm>
#include "ppsspp_config.h"
#include "base/colorutil.h"
#include "base/display.h"
#include "base/timeutil.h"
@@ -857,8 +858,12 @@ void MainScreen::CreateViews() {
gold->OnClick.Handle(this, &MainScreen::OnSupport);
gold->SetIcon(I_ICONGOLD);
#endif
#if !PPSSPP_PLATFORM(UWP)
// Having an exit button is against UWP guidelines.
rightColumnItems->Add(new Spacer(25.0));
rightColumnItems->Add(new Choice(mm->T("Exit")))->OnClick.Handle(this, &MainScreen::OnExit);
#endif
if (vertical) {
root_ = new LinearLayout(ORIENT_VERTICAL);
@@ -972,6 +977,8 @@ UI::EventReturn MainScreen::OnLoadFile(UI::EventParams &e) {
g_Config.Save();
screenManager()->switchScreen(new EmuScreen(fileName.toStdString()));
}
#elif PPSSPP_PLATFORM(UWP)
System_SendMessage("browse_file", "");
#elif defined(USING_WIN_UI)
MainWindow::BrowseAndBoot("");
#endif
+4 -1
View File
@@ -15,6 +15,8 @@
// Official git repository and contact information can be found at
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#include "ppsspp_config.h"
#include <algorithm>
#include <functional>
@@ -482,7 +484,8 @@ void LogoScreen::render() {
dc.DrawTextShadow(boot_filename.c_str(), bounds.centerX(), bounds.centerY() + 180, colorAlpha(0xFFFFFFFF, alphaText), ALIGN_CENTER);
}
#ifdef _WIN32
#if defined(_WIN32) && !PPSSPP_PLATFORM(UWP)
// Draw the graphics API, except on UWP where it's always D3D11
dc.DrawText(screenManager()->getDrawContext()->GetInfoString(InfoField::APINAME).c_str(), bounds.centerX(), bounds.y2() - 100, colorAlpha(0xFFFFFFFF, alphaText), ALIGN_CENTER);
#endif
+1 -1
View File
@@ -636,7 +636,7 @@ void NativeInitGraphics(GraphicsContext *graphicsContext) {
#ifdef _WIN32
winAudioBackend = CreateAudioBackend((AudioBackendType)g_Config.iAudioBackend);
#if PPSSPP_PLATFORM(UWP)
// TODO UWP
winAudioBackend->Init(0, &Win32Mix, 44100);
#else
winAudioBackend->Init(MainWindow::GetHWND(), &Win32Mix, 44100);
#endif
+6
View File
@@ -0,0 +1,6 @@
# We copy other files on top of these at build time, depending on configuration (Normal/Gold)
Package.appxmanifest
Assets
x64
*.VC.db
+265
View File
@@ -0,0 +1,265 @@
#include "ppsspp_config.h"
#include "pch.h"
#include "App.h"
#include <mutex>
#include "input/input_state.h"
#include <ppltasks.h>
using namespace UWP;
using namespace concurrency;
using namespace Windows::ApplicationModel;
using namespace Windows::ApplicationModel::Core;
using namespace Windows::ApplicationModel::Activation;
using namespace Windows::UI::Core;
using namespace Windows::UI::Input;
using namespace Windows::System;
using namespace Windows::Foundation;
using namespace Windows::Graphics::Display;
// The main function is only used to initialize our IFrameworkView class.
[Platform::MTAThread]
int main(Platform::Array<Platform::String^>^) {
auto direct3DApplicationSource = ref new Direct3DApplicationSource();
CoreApplication::Run(direct3DApplicationSource);
return 0;
}
IFrameworkView^ Direct3DApplicationSource::CreateView() {
return ref new App();
}
App::App() :
m_windowClosed(false),
m_windowVisible(true)
{
}
// The first method called when the IFrameworkView is being created.
void App::Initialize(CoreApplicationView^ applicationView) {
// Register event handlers for app lifecycle. This example includes Activated, so that we
// can make the CoreWindow active and start rendering on the window.
applicationView->Activated +=
ref new TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &App::OnActivated);
CoreApplication::Suspending +=
ref new EventHandler<SuspendingEventArgs^>(this, &App::OnSuspending);
CoreApplication::Resuming +=
ref new EventHandler<Platform::Object^>(this, &App::OnResuming);
// At this point we have access to the device.
// We can create the device-dependent resources.
m_deviceResources = std::make_shared<DX::DeviceResources>();
}
// Called when the CoreWindow object is created (or re-created).
void App::SetWindow(CoreWindow^ window) {
window->SizeChanged +=
ref new TypedEventHandler<CoreWindow^, WindowSizeChangedEventArgs^>(this, &App::OnWindowSizeChanged);
window->VisibilityChanged +=
ref new TypedEventHandler<CoreWindow^, VisibilityChangedEventArgs^>(this, &App::OnVisibilityChanged);
window->Closed +=
ref new TypedEventHandler<CoreWindow^, CoreWindowEventArgs^>(this, &App::OnWindowClosed);
DisplayInformation^ currentDisplayInformation = DisplayInformation::GetForCurrentView();
currentDisplayInformation->DpiChanged +=
ref new TypedEventHandler<DisplayInformation^, Object^>(this, &App::OnDpiChanged);
currentDisplayInformation->OrientationChanged +=
ref new TypedEventHandler<DisplayInformation^, Object^>(this, &App::OnOrientationChanged);
DisplayInformation::DisplayContentsInvalidated +=
ref new TypedEventHandler<DisplayInformation^, Object^>(this, &App::OnDisplayContentsInvalidated);
window->KeyDown += ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &App::OnKeyDown);
window->KeyUp += ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &App::OnKeyUp);
window->PointerMoved += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerMoved);
window->PointerEntered += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerEntered);
window->PointerExited += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerExited);
window->PointerPressed += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerPressed);
window->PointerReleased += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerReleased);
window->PointerCaptureLost += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerCaptureLost);
window->PointerWheelChanged += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerWheelChanged);
if (Windows::Foundation::Metadata::ApiInformation::IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")) {
m_hardwareButtons.insert(HardwareButton::BACK);
}
Windows::UI::Core::SystemNavigationManager::GetForCurrentView()->
BackRequested += ref new Windows::Foundation::EventHandler<
Windows::UI::Core::BackRequestedEventArgs^>(
this, &App::App_BackRequested);
m_deviceResources->SetWindow(window);
}
bool App::HasBackButton() {
return m_hardwareButtons.find(HardwareButton::BACK) != m_hardwareButtons.end();
}
void App::App_BackRequested(Platform::Object^ sender, Windows::UI::Core::BackRequestedEventArgs^ e) {
e->Handled = m_main->OnHardwareButton(HardwareButton::BACK);
}
void App::OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args) {
m_main->OnKeyDown(args->KeyStatus.ScanCode, args->VirtualKey, args->KeyStatus.RepeatCount);
}
void App::OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args) {
m_main->OnKeyUp(args->KeyStatus.ScanCode, args->VirtualKey);
}
void App::OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) {
int pointerId = touchMap_.TouchId(args->CurrentPoint->PointerId);
if (pointerId < 0)
return;
float X = args->CurrentPoint->Position.X;
float Y = args->CurrentPoint->Position.Y;
int64_t timestamp = args->CurrentPoint->Timestamp;
m_main->OnTouchEvent(TOUCH_MOVE, pointerId, X, Y, timestamp);
}
void App::OnPointerEntered(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) {
}
void App::OnPointerExited(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) {
}
void App::OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) {
int pointerId = touchMap_.TouchId(args->CurrentPoint->PointerId);
if (pointerId < 0)
pointerId = touchMap_.AddNewTouch(args->CurrentPoint->PointerId);
float X = args->CurrentPoint->Position.X;
float Y = args->CurrentPoint->Position.Y;
int64_t timestamp = args->CurrentPoint->Timestamp;
m_main->OnTouchEvent(TOUCH_DOWN|TOUCH_MOVE, pointerId, X, Y, timestamp);
#if !PPSSPP_ARCH(ARM)
sender->SetPointerCapture();
#endif
}
void App::OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) {
int pointerId = touchMap_.RemoveTouch(args->CurrentPoint->PointerId);
if (pointerId < 0)
return;
float X = args->CurrentPoint->Position.X;
float Y = args->CurrentPoint->Position.Y;
int64_t timestamp = args->CurrentPoint->Timestamp;
m_main->OnTouchEvent(TOUCH_UP|TOUCH_MOVE, pointerId, X, Y, timestamp);
#if !PPSSPP_ARCH(ARM)
sender->ReleasePointerCapture();
#endif
}
void App::OnPointerCaptureLost(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) {
}
void App::OnPointerWheelChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) {
int pointerId = 0; // irrelevant
float delta = args->CurrentPoint->GetCurrentPoint(args->CurrentPoint->PointerId)->Properties->MouseWheelDelta;
m_main->OnMouseWheel(delta);
}
// Initializes scene resources, or loads a previously saved app state.
void App::Load(Platform::String^ entryPoint) {
if (m_main == nullptr) {
m_main = std::unique_ptr<PPSSPP_UWPMain>(new PPSSPP_UWPMain(this, m_deviceResources));
}
}
// This method is called after the window becomes active.
void App::Run() {
while (!m_windowClosed) {
if (m_windowVisible) {
CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent);
if (m_main->Render()) {
m_deviceResources->Present();
}
} else {
CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessOneAndAllPending);
}
}
}
// Required for IFrameworkView.
// Terminate events do not cause Uninitialize to be called. It will be called if your IFrameworkView
// class is torn down while the app is in the foreground.
void App::Uninitialize() {
}
// Application lifecycle event handlers.
void App::OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args) {
// Run() won't start until the CoreWindow is activated.
CoreWindow::GetForCurrentThread()->Activate();
// On mobile, we force-enter fullscreen mode.
#ifdef _ARM
Windows::UI::ViewManagement::ApplicationView::GetForCurrentView()->TryEnterFullScreenMode();
#endif
}
void App::OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ args) {
// Save app state asynchronously after requesting a deferral. Holding a deferral
// indicates that the application is busy performing suspending operations. Be
// aware that a deferral may not be held indefinitely. After about five seconds,
// the app will be forced to exit.
SuspendingDeferral^ deferral = args->SuspendingOperation->GetDeferral();
create_task([this, deferral]() {
m_deviceResources->Trim();
deferral->Complete();
});
}
void App::OnResuming(Platform::Object^ sender, Platform::Object^ args) {
// Restore any data or state that was unloaded on suspend. By default, data
// and state are persisted when resuming from suspend. Note that this event
// does not occur if the app was previously terminated.
// Insert your code here.
}
// Window event handlers.
void App::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEventArgs^ args) {
m_deviceResources->SetLogicalSize(Size(sender->Bounds.Width, sender->Bounds.Height));
m_main->CreateWindowSizeDependentResources();
}
void App::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEventArgs^ args) {
m_windowVisible = args->Visible;
}
void App::OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args) {
m_windowClosed = true;
}
// DisplayInformation event handlers.
void App::OnDpiChanged(DisplayInformation^ sender, Object^ args) {
// Note: The value for LogicalDpi retrieved here may not match the effective DPI of the app
// if it is being scaled for high resolution devices. Once the DPI is set on DeviceResources,
// you should always retrieve it using the GetDpi method.
// See DeviceResources.cpp for more details.
m_deviceResources->SetDpi(sender->LogicalDpi);
m_main->CreateWindowSizeDependentResources();
}
void App::OnOrientationChanged(DisplayInformation^ sender, Object^ args) {
m_deviceResources->SetCurrentOrientation(sender->CurrentOrientation);
m_main->CreateWindowSizeDependentResources();
}
void App::OnDisplayContentsInvalidated(DisplayInformation^ sender, Object^ args) {
m_deviceResources->ValidateDevice();
}
+113
View File
@@ -0,0 +1,113 @@
#pragma once
#include <set>
#include "pch.h"
#include "Common/DeviceResources.h"
#include "PPSSPP_UWPMain.h"
namespace UWP {
struct Touch {
bool inUse = false;
unsigned uid;
};
class TouchMapper {
public:
int TouchId(unsigned touch) {
for (int touchIx = 0; touchIx < maxTouches; touchIx++)
if (touches[touchIx].inUse && touches[touchIx].uid == touch)
return touchIx;
return -1;
}
int AddNewTouch(unsigned touch) {
for (int touchIx = 0; touchIx < maxTouches; touchIx++) {
if (!touches[touchIx].inUse) {
touches[touchIx].inUse = true;
touches[touchIx].uid = touch;
return touchIx;
}
}
return -1;
}
int RemoveTouch(unsigned touch) {
for (int touchIx = 0; touchIx < maxTouches; touchIx++) {
if (touches[touchIx].inUse && touches[touchIx].uid == touch) {
touches[touchIx].inUse = false;
return touchIx;
}
}
return -1;
}
private:
enum { maxTouches = 11 };
Touch touches[maxTouches]{};
};
enum class HardwareButton {
BACK,
};
// Main entry point for our app. Connects the app with the Windows shell and handles application lifecycle events.
ref class App sealed : public Windows::ApplicationModel::Core::IFrameworkView {
public:
App();
// IFrameworkView Methods.
virtual void Initialize(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView);
virtual void SetWindow(Windows::UI::Core::CoreWindow^ window);
virtual void Load(Platform::String^ entryPoint);
virtual void Run();
virtual void Uninitialize();
bool HasBackButton();
protected:
// Application lifecycle event handlers.
void OnActivated(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView, Windows::ApplicationModel::Activation::IActivatedEventArgs^ args);
void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ args);
void OnResuming(Platform::Object^ sender, Platform::Object^ args);
// Window event handlers.
void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args);
// DisplayInformation event handlers.
void OnDpiChanged(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args);
void OnOrientationChanged(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args);
void OnDisplayContentsInvalidated(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args);
// Input
void OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
void OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
void OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
void OnPointerEntered(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
void OnPointerExited(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
void OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
void OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
void OnPointerCaptureLost(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
void OnPointerWheelChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
void App_BackRequested(Platform::Object^ sender, Windows::UI::Core::BackRequestedEventArgs^ e);
private:
std::shared_ptr<DX::DeviceResources> m_deviceResources;
std::set<HardwareButton> m_hardwareButtons;
std::unique_ptr<PPSSPP_UWPMain> m_main;
bool m_windowClosed;
bool m_windowVisible;
TouchMapper touchMap_;
};
}
ref class Direct3DApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource
{
public:
virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView();
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

+670
View File
@@ -0,0 +1,670 @@
#include "pch.h"
#include <algorithm>
#include "DeviceResources.h"
#include "DirectXHelper.h"
using namespace D2D1;
using namespace DirectX;
using namespace Microsoft::WRL;
using namespace Windows::Foundation;
using namespace Windows::Graphics::Display;
using namespace Windows::UI::Core;
using namespace Windows::UI::Xaml::Controls;
using namespace Platform;
namespace DisplayMetrics
{
// High resolution displays can require a lot of GPU and battery power to render.
// High resolution phones, for example, may suffer from poor battery life if
// games attempt to render at 60 frames per second at full fidelity.
// The decision to render at full fidelity across all platforms and form factors
// should be deliberate.
static const bool SupportHighResolutions = true;
// The default thresholds that define a "high resolution" display. If the thresholds
// are exceeded and SupportHighResolutions is false, the dimensions will be scaled
// by 50%.
static const float DpiThreshold = 192.0f; // 200% of standard desktop display.
static const float WidthThreshold = 1920.0f; // 1080p width.
static const float HeightThreshold = 1080.0f; // 1080p height.
};
// Constants used to calculate screen rotations
namespace ScreenRotation
{
// 0-degree Z-rotation
static const XMFLOAT4X4 Rotation0(
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f
);
// 90-degree Z-rotation
static const XMFLOAT4X4 Rotation90(
0.0f, 1.0f, 0.0f, 0.0f,
-1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f
);
// 180-degree Z-rotation
static const XMFLOAT4X4 Rotation180(
-1.0f, 0.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f
);
// 270-degree Z-rotation
static const XMFLOAT4X4 Rotation270(
0.0f, -1.0f, 0.0f, 0.0f,
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f
);
};
// Constructor for DeviceResources.
DX::DeviceResources::DeviceResources() :
m_screenViewport(),
m_d3dFeatureLevel(D3D_FEATURE_LEVEL_9_1),
m_d3dRenderTargetSize(),
m_outputSize(),
m_logicalSize(),
m_nativeOrientation(DisplayOrientations::None),
m_currentOrientation(DisplayOrientations::None),
m_dpi(-1.0f),
m_effectiveDpi(-1.0f),
m_deviceNotify(nullptr)
{
CreateDeviceIndependentResources();
CreateDeviceResources();
}
// Configures resources that don't depend on the Direct3D device.
void DX::DeviceResources::CreateDeviceIndependentResources()
{
// Initialize Direct2D resources.
D2D1_FACTORY_OPTIONS options;
ZeroMemory(&options, sizeof(D2D1_FACTORY_OPTIONS));
#if defined(_DEBUG)
// If the project is in a debug build, enable Direct2D debugging via SDK Layers.
options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;
#endif
// Initialize the Direct2D Factory.
DX::ThrowIfFailed(
D2D1CreateFactory(
D2D1_FACTORY_TYPE_SINGLE_THREADED,
__uuidof(ID2D1Factory3),
&options,
&m_d2dFactory
)
);
// Initialize the DirectWrite Factory.
DX::ThrowIfFailed(
DWriteCreateFactory(
DWRITE_FACTORY_TYPE_SHARED,
__uuidof(IDWriteFactory3),
&m_dwriteFactory
)
);
// Initialize the Windows Imaging Component (WIC) Factory.
DX::ThrowIfFailed(
CoCreateInstance(
CLSID_WICImagingFactory2,
nullptr,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&m_wicFactory)
)
);
}
// Configures the Direct3D device, and stores handles to it and the device context.
void DX::DeviceResources::CreateDeviceResources()
{
// This flag adds support for surfaces with a different color channel ordering
// than the API default. It is required for compatibility with Direct2D.
UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
#if defined(_DEBUG)
if (DX::SdkLayersAvailable())
{
// If the project is in a debug build, enable debugging via SDK Layers with this flag.
creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
}
#endif
// This array defines the set of DirectX hardware feature levels this app will support.
// Note the ordering should be preserved.
// Don't forget to declare your application's minimum required feature level in its
// description. All applications are assumed to support 9.1 unless otherwise stated.
D3D_FEATURE_LEVEL featureLevels[] =
{
D3D_FEATURE_LEVEL_12_1,
D3D_FEATURE_LEVEL_12_0,
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_10_0,
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1
};
// Create the Direct3D 11 API device object and a corresponding context.
ComPtr<ID3D11Device> device;
ComPtr<ID3D11DeviceContext> context;
HRESULT hr = D3D11CreateDevice(
nullptr, // Specify nullptr to use the default adapter.
D3D_DRIVER_TYPE_HARDWARE, // Create a device using the hardware graphics driver.
0, // Should be 0 unless the driver is D3D_DRIVER_TYPE_SOFTWARE.
creationFlags, // Set debug and Direct2D compatibility flags.
featureLevels, // List of feature levels this app can support.
ARRAYSIZE(featureLevels), // Size of the list above.
D3D11_SDK_VERSION, // Always set this to D3D11_SDK_VERSION for Windows Store apps.
&device, // Returns the Direct3D device created.
&m_d3dFeatureLevel, // Returns feature level of device created.
&context // Returns the device immediate context.
);
if (FAILED(hr))
{
// If the initialization fails, fall back to the WARP device.
// For more information on WARP, see:
// http://go.microsoft.com/fwlink/?LinkId=286690
DX::ThrowIfFailed(
D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_WARP, // Create a WARP device instead of a hardware device.
0,
creationFlags,
featureLevels,
ARRAYSIZE(featureLevels),
D3D11_SDK_VERSION,
&device,
&m_d3dFeatureLevel,
&context
)
);
}
// Store pointers to the Direct3D 11.3 API device and immediate context.
DX::ThrowIfFailed(
device.As(&m_d3dDevice)
);
DX::ThrowIfFailed(
context.As(&m_d3dContext)
);
// Create the Direct2D device object and a corresponding context.
ComPtr<IDXGIDevice3> dxgiDevice;
DX::ThrowIfFailed(
m_d3dDevice.As(&dxgiDevice)
);
DX::ThrowIfFailed(
m_d2dFactory->CreateDevice(dxgiDevice.Get(), &m_d2dDevice)
);
DX::ThrowIfFailed(
m_d2dDevice->CreateDeviceContext(
D2D1_DEVICE_CONTEXT_OPTIONS_NONE,
&m_d2dContext
)
);
}
// These resources need to be recreated every time the window size is changed.
void DX::DeviceResources::CreateWindowSizeDependentResources()
{
// Clear the previous window size specific context.
ID3D11RenderTargetView* nullViews[] = {nullptr};
m_d3dContext->OMSetRenderTargets(ARRAYSIZE(nullViews), nullViews, nullptr);
m_d3dRenderTargetView = nullptr;
m_d2dContext->SetTarget(nullptr);
m_d2dTargetBitmap = nullptr;
m_d3dContext->Flush1(D3D11_CONTEXT_TYPE_ALL, nullptr);
UpdateRenderTargetSize();
// The width and height of the swap chain must be based on the window's
// natively-oriented width and height. If the window is not in the native
// orientation, the dimensions must be reversed.
DXGI_MODE_ROTATION displayRotation = ComputeDisplayRotation();
bool swapDimensions = displayRotation == DXGI_MODE_ROTATION_ROTATE90 || displayRotation == DXGI_MODE_ROTATION_ROTATE270;
m_d3dRenderTargetSize.Width = swapDimensions ? m_outputSize.Height : m_outputSize.Width;
m_d3dRenderTargetSize.Height = swapDimensions ? m_outputSize.Width : m_outputSize.Height;
if (m_swapChain != nullptr)
{
// If the swap chain already exists, resize it.
HRESULT hr = m_swapChain->ResizeBuffers(
2, // Double-buffered swap chain.
lround(m_d3dRenderTargetSize.Width),
lround(m_d3dRenderTargetSize.Height),
DXGI_FORMAT_B8G8R8A8_UNORM,
0
);
if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET)
{
// If the device was removed for any reason, a new device and swap chain will need to be created.
HandleDeviceLost();
// Everything is set up now. Do not continue execution of this method. HandleDeviceLost will reenter this method
// and correctly set up the new device.
return;
}
else
{
DX::ThrowIfFailed(hr);
}
}
else
{
// Otherwise, create a new one using the same adapter as the existing Direct3D device.
DXGI_SCALING scaling = DisplayMetrics::SupportHighResolutions ? DXGI_SCALING_NONE : DXGI_SCALING_STRETCH;
DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0};
swapChainDesc.Width = lround(m_d3dRenderTargetSize.Width); // Match the size of the window.
swapChainDesc.Height = lround(m_d3dRenderTargetSize.Height);
swapChainDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; // This is the most common swap chain format.
swapChainDesc.Stereo = false;
swapChainDesc.SampleDesc.Count = 1; // Don't use multi-sampling.
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swapChainDesc.BufferCount = 2; // Use double-buffering to minimize latency.
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; // All Windows Store apps must use this SwapEffect.
swapChainDesc.Flags = 0;
swapChainDesc.Scaling = scaling;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
// This sequence obtains the DXGI factory that was used to create the Direct3D device above.
ComPtr<IDXGIDevice3> dxgiDevice;
DX::ThrowIfFailed(
m_d3dDevice.As(&dxgiDevice)
);
ComPtr<IDXGIAdapter> dxgiAdapter;
DX::ThrowIfFailed(
dxgiDevice->GetAdapter(&dxgiAdapter)
);
ComPtr<IDXGIFactory4> dxgiFactory;
DX::ThrowIfFailed(
dxgiAdapter->GetParent(IID_PPV_ARGS(&dxgiFactory))
);
ComPtr<IDXGISwapChain1> swapChain;
DX::ThrowIfFailed(
dxgiFactory->CreateSwapChainForCoreWindow(
m_d3dDevice.Get(),
reinterpret_cast<IUnknown*>(m_window.Get()),
&swapChainDesc,
nullptr,
&swapChain
)
);
DX::ThrowIfFailed(
swapChain.As(&m_swapChain)
);
// Ensure that DXGI does not queue more than one frame at a time. This both reduces latency and
// ensures that the application will only render after each VSync, minimizing power consumption.
DX::ThrowIfFailed(
dxgiDevice->SetMaximumFrameLatency(1)
);
}
// Set the proper orientation for the swap chain, and generate 2D and
// 3D matrix transformations for rendering to the rotated swap chain.
// Note the rotation angle for the 2D and 3D transforms are different.
// This is due to the difference in coordinate spaces. Additionally,
// the 3D matrix is specified explicitly to avoid rounding errors.
switch (displayRotation)
{
case DXGI_MODE_ROTATION_IDENTITY:
m_orientationTransform2D = Matrix3x2F::Identity();
m_orientationTransform3D = ScreenRotation::Rotation0;
break;
case DXGI_MODE_ROTATION_ROTATE90:
m_orientationTransform2D =
Matrix3x2F::Rotation(90.0f) *
Matrix3x2F::Translation(m_logicalSize.Height, 0.0f);
m_orientationTransform3D = ScreenRotation::Rotation270;
break;
case DXGI_MODE_ROTATION_ROTATE180:
m_orientationTransform2D =
Matrix3x2F::Rotation(180.0f) *
Matrix3x2F::Translation(m_logicalSize.Width, m_logicalSize.Height);
m_orientationTransform3D = ScreenRotation::Rotation180;
break;
case DXGI_MODE_ROTATION_ROTATE270:
m_orientationTransform2D =
Matrix3x2F::Rotation(270.0f) *
Matrix3x2F::Translation(0.0f, m_logicalSize.Width);
m_orientationTransform3D = ScreenRotation::Rotation90;
break;
default:
throw ref new FailureException();
}
DX::ThrowIfFailed(
m_swapChain->SetRotation(displayRotation)
);
// Create a render target view of the swap chain back buffer.
ComPtr<ID3D11Texture2D1> backBuffer;
DX::ThrowIfFailed(
m_swapChain->GetBuffer(0, IID_PPV_ARGS(&backBuffer))
);
DX::ThrowIfFailed(
m_d3dDevice->CreateRenderTargetView1(
backBuffer.Get(),
nullptr,
&m_d3dRenderTargetView
)
);
// Set the 3D rendering viewport to target the entire window.
m_screenViewport = CD3D11_VIEWPORT(
0.0f,
0.0f,
m_d3dRenderTargetSize.Width,
m_d3dRenderTargetSize.Height
);
m_d3dContext->RSSetViewports(1, &m_screenViewport);
// Create a Direct2D target bitmap associated with the
// swap chain back buffer and set it as the current target.
D2D1_BITMAP_PROPERTIES1 bitmapProperties =
D2D1::BitmapProperties1(
D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW,
D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED),
m_dpi,
m_dpi
);
ComPtr<IDXGISurface2> dxgiBackBuffer;
DX::ThrowIfFailed(
m_swapChain->GetBuffer(0, IID_PPV_ARGS(&dxgiBackBuffer))
);
DX::ThrowIfFailed(
m_d2dContext->CreateBitmapFromDxgiSurface(
dxgiBackBuffer.Get(),
&bitmapProperties,
&m_d2dTargetBitmap
)
);
m_d2dContext->SetTarget(m_d2dTargetBitmap.Get());
m_d2dContext->SetDpi(m_effectiveDpi, m_effectiveDpi);
// Grayscale text anti-aliasing is recommended for all Windows Store apps.
m_d2dContext->SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE);
}
// Determine the dimensions of the render target and whether it will be scaled down.
void DX::DeviceResources::UpdateRenderTargetSize()
{
m_effectiveDpi = m_dpi;
// To improve battery life on high resolution devices, render to a smaller render target
// and allow the GPU to scale the output when it is presented.
if (!DisplayMetrics::SupportHighResolutions && m_dpi > DisplayMetrics::DpiThreshold)
{
float width = DX::ConvertDipsToPixels(m_logicalSize.Width, m_dpi);
float height = DX::ConvertDipsToPixels(m_logicalSize.Height, m_dpi);
// When the device is in portrait orientation, height > width. Compare the
// larger dimension against the width threshold and the smaller dimension
// against the height threshold.
if (std::max(width, height) > DisplayMetrics::WidthThreshold && std::min(width, height) > DisplayMetrics::HeightThreshold)
{
// To scale the app we change the effective DPI. Logical size does not change.
m_effectiveDpi /= 2.0f;
}
}
// Calculate the necessary render target size in pixels.
m_outputSize.Width = DX::ConvertDipsToPixels(m_logicalSize.Width, m_effectiveDpi);
m_outputSize.Height = DX::ConvertDipsToPixels(m_logicalSize.Height, m_effectiveDpi);
// Prevent zero size DirectX content from being created.
m_outputSize.Width = std::max(m_outputSize.Width, 1.0f);
m_outputSize.Height = std::max(m_outputSize.Height, 1.0f);
}
// This method is called when the CoreWindow is created (or re-created).
void DX::DeviceResources::SetWindow(CoreWindow^ window)
{
DisplayInformation^ currentDisplayInformation = DisplayInformation::GetForCurrentView();
m_window = window;
m_logicalSize = Windows::Foundation::Size(window->Bounds.Width, window->Bounds.Height);
m_nativeOrientation = currentDisplayInformation->NativeOrientation;
m_currentOrientation = currentDisplayInformation->CurrentOrientation;
m_dpi = currentDisplayInformation->LogicalDpi;
m_d2dContext->SetDpi(m_dpi, m_dpi);
CreateWindowSizeDependentResources();
}
// This method is called in the event handler for the SizeChanged event.
void DX::DeviceResources::SetLogicalSize(Windows::Foundation::Size logicalSize)
{
if (m_logicalSize != logicalSize)
{
m_logicalSize = logicalSize;
CreateWindowSizeDependentResources();
}
}
// This method is called in the event handler for the DpiChanged event.
void DX::DeviceResources::SetDpi(float dpi)
{
if (dpi != m_dpi)
{
m_dpi = dpi;
// When the display DPI changes, the logical size of the window (measured in Dips) also changes and needs to be updated.
m_logicalSize = Windows::Foundation::Size(m_window->Bounds.Width, m_window->Bounds.Height);
m_d2dContext->SetDpi(m_dpi, m_dpi);
CreateWindowSizeDependentResources();
}
}
// This method is called in the event handler for the OrientationChanged event.
void DX::DeviceResources::SetCurrentOrientation(DisplayOrientations currentOrientation)
{
if (m_currentOrientation != currentOrientation)
{
m_currentOrientation = currentOrientation;
CreateWindowSizeDependentResources();
}
}
// This method is called in the event handler for the DisplayContentsInvalidated event.
void DX::DeviceResources::ValidateDevice()
{
// The D3D Device is no longer valid if the default adapter changed since the device
// was created or if the device has been removed.
// First, get the information for the default adapter from when the device was created.
ComPtr<IDXGIDevice3> dxgiDevice;
DX::ThrowIfFailed(m_d3dDevice.As(&dxgiDevice));
ComPtr<IDXGIAdapter> deviceAdapter;
DX::ThrowIfFailed(dxgiDevice->GetAdapter(&deviceAdapter));
ComPtr<IDXGIFactory4> deviceFactory;
DX::ThrowIfFailed(deviceAdapter->GetParent(IID_PPV_ARGS(&deviceFactory)));
ComPtr<IDXGIAdapter1> previousDefaultAdapter;
DX::ThrowIfFailed(deviceFactory->EnumAdapters1(0, &previousDefaultAdapter));
DXGI_ADAPTER_DESC1 previousDesc;
DX::ThrowIfFailed(previousDefaultAdapter->GetDesc1(&previousDesc));
// Next, get the information for the current default adapter.
ComPtr<IDXGIFactory4> currentFactory;
DX::ThrowIfFailed(CreateDXGIFactory1(IID_PPV_ARGS(&currentFactory)));
ComPtr<IDXGIAdapter1> currentDefaultAdapter;
DX::ThrowIfFailed(currentFactory->EnumAdapters1(0, &currentDefaultAdapter));
DXGI_ADAPTER_DESC1 currentDesc;
DX::ThrowIfFailed(currentDefaultAdapter->GetDesc1(&currentDesc));
// If the adapter LUIDs don't match, or if the device reports that it has been removed,
// a new D3D device must be created.
if (previousDesc.AdapterLuid.LowPart != currentDesc.AdapterLuid.LowPart ||
previousDesc.AdapterLuid.HighPart != currentDesc.AdapterLuid.HighPart ||
FAILED(m_d3dDevice->GetDeviceRemovedReason()))
{
// Release references to resources related to the old device.
dxgiDevice = nullptr;
deviceAdapter = nullptr;
deviceFactory = nullptr;
previousDefaultAdapter = nullptr;
// Create a new device and swap chain.
HandleDeviceLost();
}
}
// Recreate all device resources and set them back to the current state.
void DX::DeviceResources::HandleDeviceLost()
{
m_swapChain = nullptr;
if (m_deviceNotify != nullptr)
{
m_deviceNotify->OnDeviceLost();
}
CreateDeviceResources();
m_d2dContext->SetDpi(m_dpi, m_dpi);
CreateWindowSizeDependentResources();
if (m_deviceNotify != nullptr)
{
m_deviceNotify->OnDeviceRestored();
}
}
// Register our DeviceNotify to be informed on device lost and creation.
void DX::DeviceResources::RegisterDeviceNotify(DX::IDeviceNotify* deviceNotify)
{
m_deviceNotify = deviceNotify;
}
// Call this method when the app suspends. It provides a hint to the driver that the app
// is entering an idle state and that temporary buffers can be reclaimed for use by other apps.
void DX::DeviceResources::Trim()
{
ComPtr<IDXGIDevice3> dxgiDevice;
m_d3dDevice.As(&dxgiDevice);
dxgiDevice->Trim();
}
// Present the contents of the swap chain to the screen.
void DX::DeviceResources::Present()
{
// The first argument instructs DXGI to block until VSync, putting the application
// to sleep until the next VSync. This ensures we don't waste any cycles rendering
// frames that will never be displayed to the screen.
DXGI_PRESENT_PARAMETERS parameters = { 0 };
HRESULT hr = m_swapChain->Present1(1, 0, &parameters);
// Discard the contents of the render target.
// This is a valid operation only when the existing contents will be entirely
// overwritten. If dirty or scroll rects are used, this call should be removed.
m_d3dContext->DiscardView1(m_d3dRenderTargetView.Get(), nullptr, 0);
// If the device was removed either by a disconnection or a driver upgrade, we
// must recreate all device resources.
if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET)
{
HandleDeviceLost();
}
else
{
DX::ThrowIfFailed(hr);
}
}
// This method determines the rotation between the display device's native orientation and the
// current display orientation.
DXGI_MODE_ROTATION DX::DeviceResources::ComputeDisplayRotation()
{
DXGI_MODE_ROTATION rotation = DXGI_MODE_ROTATION_UNSPECIFIED;
// Note: NativeOrientation can only be Landscape or Portrait even though
// the DisplayOrientations enum has other values.
switch (m_nativeOrientation)
{
case DisplayOrientations::Landscape:
switch (m_currentOrientation)
{
case DisplayOrientations::Landscape:
rotation = DXGI_MODE_ROTATION_IDENTITY;
break;
case DisplayOrientations::Portrait:
rotation = DXGI_MODE_ROTATION_ROTATE270;
break;
case DisplayOrientations::LandscapeFlipped:
rotation = DXGI_MODE_ROTATION_ROTATE180;
break;
case DisplayOrientations::PortraitFlipped:
rotation = DXGI_MODE_ROTATION_ROTATE90;
break;
}
break;
case DisplayOrientations::Portrait:
switch (m_currentOrientation)
{
case DisplayOrientations::Landscape:
rotation = DXGI_MODE_ROTATION_ROTATE90;
break;
case DisplayOrientations::Portrait:
rotation = DXGI_MODE_ROTATION_IDENTITY;
break;
case DisplayOrientations::LandscapeFlipped:
rotation = DXGI_MODE_ROTATION_ROTATE270;
break;
case DisplayOrientations::PortraitFlipped:
rotation = DXGI_MODE_ROTATION_ROTATE180;
break;
}
break;
}
return rotation;
}
+102
View File
@@ -0,0 +1,102 @@
#pragma once
namespace DX
{
// Provides an interface for an application that owns DeviceResources to be notified of the device being lost or created.
interface IDeviceNotify
{
virtual void OnDeviceLost() = 0;
virtual void OnDeviceRestored() = 0;
};
// Controls all the DirectX device resources.
class DeviceResources
{
public:
DeviceResources();
void SetWindow(Windows::UI::Core::CoreWindow^ window);
void SetLogicalSize(Windows::Foundation::Size logicalSize);
void SetCurrentOrientation(Windows::Graphics::Display::DisplayOrientations currentOrientation);
void SetDpi(float dpi);
void ValidateDevice();
void HandleDeviceLost();
void RegisterDeviceNotify(IDeviceNotify* deviceNotify);
void Trim();
void Present();
// The size of the render target, in pixels.
Windows::Foundation::Size GetOutputSize() const { return m_outputSize; }
// The size of the render target, in dips.
Windows::Foundation::Size GetLogicalSize() const { return m_logicalSize; }
float GetDpi() const { return m_effectiveDpi; }
float GetActualDpi() const { return m_dpi; }
// D3D Accessors.
ID3D11Device3* GetD3DDevice() const { return m_d3dDevice.Get(); }
ID3D11DeviceContext3* GetD3DDeviceContext() const { return m_d3dContext.Get(); }
IDXGISwapChain3* GetSwapChain() const { return m_swapChain.Get(); }
D3D_FEATURE_LEVEL GetDeviceFeatureLevel() const { return m_d3dFeatureLevel; }
ID3D11RenderTargetView1* GetBackBufferRenderTargetView() const { return m_d3dRenderTargetView.Get(); }
D3D11_VIEWPORT GetScreenViewport() const { return m_screenViewport; }
DirectX::XMFLOAT4X4 GetOrientationTransform3D() const { return m_orientationTransform3D; }
// D2D Accessors.
ID2D1Factory3* GetD2DFactory() const { return m_d2dFactory.Get(); }
ID2D1Device2* GetD2DDevice() const { return m_d2dDevice.Get(); }
ID2D1DeviceContext2* GetD2DDeviceContext() const { return m_d2dContext.Get(); }
ID2D1Bitmap1* GetD2DTargetBitmap() const { return m_d2dTargetBitmap.Get(); }
IDWriteFactory3* GetDWriteFactory() const { return m_dwriteFactory.Get(); }
IWICImagingFactory2* GetWicImagingFactory() const { return m_wicFactory.Get(); }
D2D1::Matrix3x2F GetOrientationTransform2D() const { return m_orientationTransform2D; }
DXGI_MODE_ROTATION ComputeDisplayRotation();
private:
void CreateDeviceIndependentResources();
void CreateDeviceResources();
void CreateWindowSizeDependentResources();
void UpdateRenderTargetSize();
// Direct3D objects.
Microsoft::WRL::ComPtr<ID3D11Device3> m_d3dDevice;
Microsoft::WRL::ComPtr<ID3D11DeviceContext3> m_d3dContext;
Microsoft::WRL::ComPtr<IDXGISwapChain3> m_swapChain;
// Direct3D rendering objects. Required for 3D.
Microsoft::WRL::ComPtr<ID3D11RenderTargetView1> m_d3dRenderTargetView;
D3D11_VIEWPORT m_screenViewport;
// Direct2D drawing components.
Microsoft::WRL::ComPtr<ID2D1Factory3> m_d2dFactory;
Microsoft::WRL::ComPtr<ID2D1Device2> m_d2dDevice;
Microsoft::WRL::ComPtr<ID2D1DeviceContext2> m_d2dContext;
Microsoft::WRL::ComPtr<ID2D1Bitmap1> m_d2dTargetBitmap;
// DirectWrite drawing components.
Microsoft::WRL::ComPtr<IDWriteFactory3> m_dwriteFactory;
Microsoft::WRL::ComPtr<IWICImagingFactory2> m_wicFactory;
// Cached reference to the Window.
Platform::Agile<Windows::UI::Core::CoreWindow> m_window;
// Cached device properties.
D3D_FEATURE_LEVEL m_d3dFeatureLevel;
Windows::Foundation::Size m_d3dRenderTargetSize;
Windows::Foundation::Size m_outputSize;
Windows::Foundation::Size m_logicalSize;
Windows::Graphics::Display::DisplayOrientations m_nativeOrientation;
Windows::Graphics::Display::DisplayOrientations m_currentOrientation;
float m_dpi;
// This is the DPI that will be reported back to the app. It takes into account whether the app supports high resolution screens or not.
float m_effectiveDpi;
// Transforms used for display orientation.
D2D1::Matrix3x2F m_orientationTransform2D;
DirectX::XMFLOAT4X4 m_orientationTransform3D;
// The IDeviceNotify can be held directly as it owns the DeviceResources.
IDeviceNotify* m_deviceNotify;
};
}
+63
View File
@@ -0,0 +1,63 @@
#pragma once
#include <ppltasks.h> // For create_task
namespace DX
{
inline void ThrowIfFailed(HRESULT hr)
{
if (FAILED(hr))
{
// Set a breakpoint on this line to catch Win32 API errors.
throw Platform::Exception::CreateException(hr);
}
}
// Function that reads from a binary file asynchronously.
inline Concurrency::task<std::vector<byte>> ReadDataAsync(const std::wstring& filename)
{
using namespace Windows::Storage;
using namespace Concurrency;
auto folder = Windows::ApplicationModel::Package::Current->InstalledLocation;
return create_task(folder->GetFileAsync(Platform::StringReference(filename.c_str()))).then([] (StorageFile^ file)
{
return FileIO::ReadBufferAsync(file);
}).then([] (Streams::IBuffer^ fileBuffer) -> std::vector<byte>
{
std::vector<byte> returnBuffer;
returnBuffer.resize(fileBuffer->Length);
Streams::DataReader::FromBuffer(fileBuffer)->ReadBytes(Platform::ArrayReference<byte>(returnBuffer.data(), fileBuffer->Length));
return returnBuffer;
});
}
// Converts a length in device-independent pixels (DIPs) to a length in physical pixels.
inline float ConvertDipsToPixels(float dips, float dpi)
{
static const float dipsPerInch = 96.0f;
return floorf(dips * dpi / dipsPerInch + 0.5f); // Round to nearest integer.
}
#if defined(_DEBUG)
// Check for SDK Layer support.
inline bool SdkLayersAvailable()
{
HRESULT hr = D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_NULL, // There is no need to create a real hardware device.
0,
D3D11_CREATE_DEVICE_DEBUG, // Check for the SDK layers.
nullptr, // Any feature level will do.
0,
D3D11_SDK_VERSION, // Always set this to D3D11_SDK_VERSION for Windows Store apps.
nullptr, // No need to keep the D3D device reference.
nullptr, // No need to know the feature level.
nullptr // No need to keep the D3D device context reference.
);
return SUCCEEDED(hr);
}
#endif
}
+2
View File
@@ -0,0 +1,2 @@
#include "pch.h"
#include "CommonUWP.h"
+1
View File
@@ -0,0 +1 @@
#pragma once
+396
View File
@@ -0,0 +1,396 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|ARM">
<Configuration>UWP Gold</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|Win32">
<Configuration>UWP Gold</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|x64">
<Configuration>UWP Gold</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{acb316ca-3ecb-48e5-be0a-91e72d5b0f12}</ProjectGuid>
<Keyword>StaticLibrary</Keyword>
<RootNamespace>CommonUWP</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>../..;../../ext/native;../../ext/snappy;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\Common\ABI.h" />
<ClInclude Include="..\..\Common\Arm64Emitter.h" />
<ClInclude Include="..\..\Common\ArmCommon.h" />
<ClInclude Include="..\..\Common\ArmEmitter.h" />
<ClInclude Include="..\..\Common\Atomics.h" />
<ClInclude Include="..\..\Common\Atomic_GCC.h" />
<ClInclude Include="..\..\Common\Atomic_Win32.h" />
<ClInclude Include="..\..\Common\BitSet.h" />
<ClInclude Include="..\..\Common\ChunkFile.h" />
<ClInclude Include="..\..\Common\CodeBlock.h" />
<ClInclude Include="..\..\Common\ColorConv.h" />
<ClInclude Include="..\..\Common\ColorConvNEON.h" />
<ClInclude Include="..\..\Common\Common.h" />
<ClInclude Include="..\..\Common\CommonFuncs.h" />
<ClInclude Include="..\..\Common\CommonTypes.h" />
<ClInclude Include="..\..\Common\CommonWindows.h" />
<ClInclude Include="..\..\Common\ConsoleListener.h" />
<ClInclude Include="..\..\Common\CPUDetect.h" />
<ClInclude Include="..\..\Common\Crypto\md5.h" />
<ClInclude Include="..\..\Common\Crypto\sha1.h" />
<ClInclude Include="..\..\Common\Crypto\sha256.h" />
<ClInclude Include="..\..\Common\DbgNew.h" />
<ClInclude Include="..\..\Common\FileUtil.h" />
<ClInclude Include="..\..\Common\FixedSizeQueue.h" />
<ClInclude Include="..\..\Common\GraphicsContext.h" />
<ClInclude Include="..\..\Common\KeyMap.h" />
<ClInclude Include="..\..\Common\Log.h" />
<ClInclude Include="..\..\Common\LogManager.h" />
<ClInclude Include="..\..\Common\MathUtil.h" />
<ClInclude Include="..\..\Common\MemArena.h" />
<ClInclude Include="..\..\Common\MemoryUtil.h" />
<ClInclude Include="..\..\Common\MipsEmitter.h" />
<ClInclude Include="..\..\Common\MsgHandler.h" />
<ClInclude Include="..\..\Common\OSVersion.h" />
<ClInclude Include="..\..\Common\stdafx.h" />
<ClInclude Include="..\..\Common\StringUtils.h" />
<ClInclude Include="..\..\Common\Swap.h" />
<ClInclude Include="..\..\Common\ThreadPools.h" />
<ClInclude Include="..\..\Common\ThreadSafeList.h" />
<ClInclude Include="..\..\Common\Thunk.h" />
<ClInclude Include="..\..\Common\Timer.h" />
<ClInclude Include="..\..\Common\x64Analyzer.h" />
<ClInclude Include="..\..\Common\x64Emitter.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Common\ABI.cpp" />
<ClCompile Include="..\..\Common\Arm64Emitter.cpp" />
<ClCompile Include="..\..\Common\ArmCPUDetect.cpp" />
<ClCompile Include="..\..\Common\ArmEmitter.cpp" />
<ClCompile Include="..\..\Common\ChunkFile.cpp" />
<ClCompile Include="..\..\Common\ColorConv.cpp" />
<ClCompile Include="..\..\Common\ColorConvNEON.cpp" />
<ClCompile Include="..\..\Common\ConsoleListener.cpp" />
<ClCompile Include="..\..\Common\CPUDetect.cpp" />
<ClCompile Include="..\..\Common\Crypto\md5.cpp" />
<ClCompile Include="..\..\Common\Crypto\sha1.cpp" />
<ClCompile Include="..\..\Common\Crypto\sha256.cpp" />
<ClCompile Include="..\..\Common\FileUtil.cpp" />
<ClCompile Include="..\..\Common\KeyMap.cpp" />
<ClCompile Include="..\..\Common\LogManager.cpp" />
<ClCompile Include="..\..\Common\MemArenaAndroid.cpp" />
<ClCompile Include="..\..\Common\MemArenaDarwin.cpp" />
<ClCompile Include="..\..\Common\MemArenaPosix.cpp" />
<ClCompile Include="..\..\Common\MemArenaWin32.cpp" />
<ClCompile Include="..\..\Common\MemoryUtil.cpp" />
<ClCompile Include="..\..\Common\MipsCPUDetect.cpp" />
<ClCompile Include="..\..\Common\MipsEmitter.cpp" />
<ClCompile Include="..\..\Common\Misc.cpp" />
<ClCompile Include="..\..\Common\MsgHandler.cpp" />
<ClCompile Include="..\..\Common\OSVersion.cpp" />
<ClCompile Include="..\..\Common\stdafx.cpp" />
<ClCompile Include="..\..\Common\StringUtils.cpp" />
<ClCompile Include="..\..\Common\ThreadPools.cpp" />
<ClCompile Include="..\..\Common\Thunk.cpp" />
<ClCompile Include="..\..\Common\Timer.cpp" />
<ClCompile Include="..\..\Common\x64Analyzer.cpp" />
<ClCompile Include="..\..\Common\x64Emitter.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+102
View File
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Crypto">
<UniqueIdentifier>{da855697-f7aa-49bf-b969-7a90c5b4d259}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp" />
<ClCompile Include="..\..\Common\ABI.cpp" />
<ClCompile Include="..\..\Common\Arm64Emitter.cpp" />
<ClCompile Include="..\..\Common\ArmCPUDetect.cpp" />
<ClCompile Include="..\..\Common\ArmEmitter.cpp" />
<ClCompile Include="..\..\Common\ChunkFile.cpp" />
<ClCompile Include="..\..\Common\ColorConv.cpp" />
<ClCompile Include="..\..\Common\ColorConvNEON.cpp" />
<ClCompile Include="..\..\Common\ConsoleListener.cpp" />
<ClCompile Include="..\..\Common\CPUDetect.cpp" />
<ClCompile Include="..\..\Common\FileUtil.cpp" />
<ClCompile Include="..\..\Common\KeyMap.cpp" />
<ClCompile Include="..\..\Common\LogManager.cpp" />
<ClCompile Include="..\..\Common\MemArenaAndroid.cpp" />
<ClCompile Include="..\..\Common\MemArenaDarwin.cpp" />
<ClCompile Include="..\..\Common\MemArenaPosix.cpp" />
<ClCompile Include="..\..\Common\MemArenaWin32.cpp" />
<ClCompile Include="..\..\Common\MemoryUtil.cpp" />
<ClCompile Include="..\..\Common\MipsCPUDetect.cpp" />
<ClCompile Include="..\..\Common\MipsEmitter.cpp" />
<ClCompile Include="..\..\Common\Misc.cpp" />
<ClCompile Include="..\..\Common\MsgHandler.cpp" />
<ClCompile Include="..\..\Common\OSVersion.cpp" />
<ClCompile Include="..\..\Common\stdafx.cpp" />
<ClCompile Include="..\..\Common\StringUtils.cpp" />
<ClCompile Include="..\..\Common\ThreadPools.cpp" />
<ClCompile Include="..\..\Common\Thunk.cpp" />
<ClCompile Include="..\..\Common\Timer.cpp" />
<ClCompile Include="..\..\Common\x64Analyzer.cpp" />
<ClCompile Include="..\..\Common\x64Emitter.cpp" />
<ClCompile Include="..\..\Common\Crypto\md5.cpp">
<Filter>Crypto</Filter>
</ClCompile>
<ClCompile Include="..\..\Common\Crypto\sha1.cpp">
<Filter>Crypto</Filter>
</ClCompile>
<ClCompile Include="..\..\Common\Crypto\sha256.cpp">
<Filter>Crypto</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="..\..\Common\ABI.h" />
<ClInclude Include="..\..\Common\Arm64Emitter.h" />
<ClInclude Include="..\..\Common\ArmCommon.h" />
<ClInclude Include="..\..\Common\ArmEmitter.h" />
<ClInclude Include="..\..\Common\Atomic_GCC.h" />
<ClInclude Include="..\..\Common\Atomic_Win32.h" />
<ClInclude Include="..\..\Common\Atomics.h" />
<ClInclude Include="..\..\Common\BitSet.h" />
<ClInclude Include="..\..\Common\ChunkFile.h" />
<ClInclude Include="..\..\Common\CodeBlock.h" />
<ClInclude Include="..\..\Common\ColorConv.h" />
<ClInclude Include="..\..\Common\ColorConvNEON.h" />
<ClInclude Include="..\..\Common\Common.h" />
<ClInclude Include="..\..\Common\CommonFuncs.h" />
<ClInclude Include="..\..\Common\CommonTypes.h" />
<ClInclude Include="..\..\Common\CommonWindows.h" />
<ClInclude Include="..\..\Common\ConsoleListener.h" />
<ClInclude Include="..\..\Common\CPUDetect.h" />
<ClInclude Include="..\..\Common\DbgNew.h" />
<ClInclude Include="..\..\Common\FileUtil.h" />
<ClInclude Include="..\..\Common\FixedSizeQueue.h" />
<ClInclude Include="..\..\Common\GraphicsContext.h" />
<ClInclude Include="..\..\Common\KeyMap.h" />
<ClInclude Include="..\..\Common\Log.h" />
<ClInclude Include="..\..\Common\LogManager.h" />
<ClInclude Include="..\..\Common\MathUtil.h" />
<ClInclude Include="..\..\Common\MemArena.h" />
<ClInclude Include="..\..\Common\MemoryUtil.h" />
<ClInclude Include="..\..\Common\MipsEmitter.h" />
<ClInclude Include="..\..\Common\MsgHandler.h" />
<ClInclude Include="..\..\Common\OSVersion.h" />
<ClInclude Include="..\..\Common\stdafx.h" />
<ClInclude Include="..\..\Common\StringUtils.h" />
<ClInclude Include="..\..\Common\Swap.h" />
<ClInclude Include="..\..\Common\ThreadPools.h" />
<ClInclude Include="..\..\Common\ThreadSafeList.h" />
<ClInclude Include="..\..\Common\Thunk.h" />
<ClInclude Include="..\..\Common\Timer.h" />
<ClInclude Include="..\..\Common\x64Analyzer.h" />
<ClInclude Include="..\..\Common\x64Emitter.h" />
<ClInclude Include="..\..\Common\Crypto\md5.h">
<Filter>Crypto</Filter>
</ClInclude>
<ClInclude Include="..\..\Common\Crypto\sha1.h">
<Filter>Crypto</Filter>
</ClInclude>
<ClInclude Include="..\..\Common\Crypto\sha256.h">
<Filter>Crypto</Filter>
</ClInclude>
</ItemGroup>
</Project>
+1
View File
@@ -0,0 +1 @@
#include "pch.h"
+9
View File
@@ -0,0 +1,9 @@
#pragma once
#include "targetver.h"
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
+8
View File
@@ -0,0 +1,8 @@
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+164
View File
@@ -0,0 +1,164 @@
# ========================================================================================
# compat.ini for PPSSPP
# ========================================================================================
#
# This file is not meant to be user-editable, although is kept as a separate ini
# file instead of compiled into the code for debugging purposes.
#
# The uses cases are strict:
# * Enable fixes for things we can't reasonably emulate without completely ruining
# performance for other games, such as the screen copies in Dangan Ronpa
# * Disabling accuracy features like 16-bit depth rounding, when we can't seem to
# implement them at all in a 100% compatible way
# * Emergency game-specific compatibility fixes before releases, such as the GTA
# music problem where every attempted fix has reduced compatibility with other games
# * Enable "unsafe" performance optimizations that some games can tolerate and
# others cannot. We do not currently have any of those.
#
# This functionality should NOT be used for any of the following:
# * Cheats
# * Fun hacks, like enlarged heads or whatever
# * Fixing general compatibility issues. First try to find a general solution. Try hard.
#
# Game IDs can be looked up at GameFAQs, for example:
# http://www.gamefaqs.com/psp/925776-grand-theft-auto-liberty-city-stories/data
# Sometimes the information may be incomplete though.
#
# ========================================================================================
# Issue numbers refer to issues on https://github.com/hrydgard/ppsspp/issues
# ========================================================================================
[VertexDepthRounding]
# Phantasy Star Portable needs depth rounding to 16-bit precision for text to show up.
# It's enough to do it at the vertex granularity. #3777
ULJM05309 = true
ULUS10410 = true
ULES01218 = true
ULJM08023 = true
ULES01218 = true
# Phantasy Star Portable 2 JP (missing text)
ULJM05493 = true
NPJH50043 = true
ULJM08030 = true
# Puyo Puyo Fever 2 #3663 (layering)
ULJM05058 = true
# NBA 2K13 #6603 (menu glitches)
ULAS42332 = true
ULJS00551 = true
NPJH50713 = true
ULJS00596 = true
ULES01578 = true
# Power Stone Collection #6257 (map arrow)
ULES00496 = true
ULUS10171 = true
ULJM05178 = true
# Taiko no Tatsujin Portable DX #7920 (missing text)
ULJS00383 = true
NPJH50426 = true
ULAS42282 = true
# PhotoKano #7920 (missing text)
ULJS00378 = true
NPJH50579 = true
ULJS19069 = true
NPJH50579 = true
[PixelDepthRounding]
# Heroes Phantasia requires pixel depth rounding. #6485 (flickering overlaid sprites)
NPJH50558 = true
ULJS00456 = true
ULJS00454 = true
# Heroes Phantasia Limited Edition Disc requires pixel depth rounding.
ULJS00455 = true
# Phantasy Star games flickering
# Phantasy Star Portable 1
ULJM05309 = true
ULUS10410 = true
ULES01218 = true
ULJM08023 = true
ULES01218 = true
# Phantasy Star Portable 2 JP
ULJM05493 = true
NPJH50043 = true
ULJM08030 = true
# Phantasy Star Portable 1 Demo
NPUH90023 = true
ULJM91014 = true
NPJH90002 = true
# Phantasy Star Portable 2 JP Demo
ULJM91018 = true
NPJH90062 = true
[DepthRangeHack]
# Phantasy Star Portable 2 and Infinity both use viewport depth outside [0, 1].
# This gets clamped in our current implementation, but attempts to fix it run into
# Other bugs, so we've restored this hack for now.
ULJM05493 = true
NPJH50043 = true
ULJM08030 = true
ULES01439 = true
ULUS10529 = true
ULJM91018 = true # Infinity demo disc?
NPJH90157 = true # Infinity demo
ULJM05732 = true
NPJH50332 = true
[ClearToRAM]
# SOCOM Navy Seals games require this. See issue #8973.
# Navy Seals
UCUS98615 = true
ULES00038 = true
UCKS45021 = true
# Fireteam Bravo 3
UCJS10102 = true
NPJG00035 = true
UCUS98716 = true
UCES01242 = true
[Force04154000Download]
# This applies a hack to Dangan Ronpa, its demo, and its sequel.
# The game draws solid colors to a small framebuffer, and then reads this directly in VRAM.
# We force this framebuffer to 1x and force download it automatically.
NPJH50631 = true
NPJH50372 = true
NPJH90164 = true
NPJH50515 = true
# Let's also apply to Me & My Katamari.
ULUS10094 = true
ULES00339 = true
ULJS00033 = true
UCKS45022 = true
ULJS19009 = true
NPJH50141 = true
[DrawSyncEatCycles]
# This replaced Crash Tag Team Racing hack to also fix Gundam games
# It makes sceGeDrawSync eat a lot of cycles which can affect timing in lots of games,
# might be negative for others, but happens to fix games below.
# Crash Tag Team Racing needs it to pass checking memory stick screen.
ULUS10044 = true
ULES00168 = true
ULJM05036 = true
# Gundam Battle Royale might need it to avoid crashes when certain Ace enemies shows up
ULJS00083 = true
ULKS46104 = true
ULJS19015 = true
# Gundam Battle Chronicle needs it to avoid crashes after most battles
ULJS00122 = true
ULKS46158 = true
ULJS19021 = true
# Gundam Battle Universe same problem as above
ULJS00145 = true
ULKS46183 = true
ULJS00260 = true
ULJS19041 = true
NPJH50843 = true
[FakeMipmapChange]
# This hacks separates each mipmap to independent textures to display wrong-size mipmaps.
# For example this requires games like Tactics Ogre(Japanese) to display multi bytes fonts stored in mipmaps.
# See issue #5350.
# Tactics Ogre(Japanese)
ULJM05753 = true
NPJH50348 = true
ULJM06009 = true
+153
View File
@@ -0,0 +1,153 @@
# Windows - DINPUT
8f0e1200000000000000504944564944,Acme,platform:Windows,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
0d0f6e00000000000000504944564944,HORIPAD 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,
4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows,
25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,
4c05c405000000000000504944564944,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
6d0418c2000000000000504944564944,Logitech RumblePad 2 USB,platform:Windows,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
36280100000000000000504944564944,OUYA Controller,platform:Windows,a:b0,b:b3,y:b2,x:b1,start:b14,guide:b15,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b8,dpleft:b10,dpdown:b9,dpright:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b12,righttrigger:b13,
4f0400b3000000000000504944564944,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Windows,
00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
28040140000000000000504944564944,GamePad Pro USB,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,
ff113133000000000000504944564944,SVEN X-PAD,platform:Windows,a:b2,b:b3,y:b1,x:b0,start:b5,back:b4,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b8,righttrigger:b9,
8f0e0300000000000000504944564944,Piranha xtreme,platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
8f0e0d31000000000000504944564944,Multilaser JS071 USB,platform:Windows,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
10080300000000000000504944564944,PS2 USB,platform:Windows,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a4,righty:a2,lefttrigger:b4,righttrigger:b5,
79000600000000000000504944564944,G-Shark GS-GP702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows,
4b12014d000000000000504944564944,NYKO AIRFLO,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b10,start:b9,leftstick:a0,rightstick:a2,leftshoulder:a3,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:h0.6,lefty:h0.12,rightx:h0.9,righty:h0.4,lefttrigger:b6,righttrigger:b7,platform:Windows,
d6206dca000000000000504944564944,PowerA Pro Ex,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
a3060cff000000000000504944564944,Saitek P2500,a:b2,b:b3,y:b1,x:b0,start:b4,guide:b10,back:b5,leftstick:b8,rightstick:b9,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows,
4f0415b3000000000000504944564944,Thrustmaster Dual Analog 3.2,platform:Windows,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
6f0e1e01000000000000504944564944,Rock Candy Gamepad for PS3,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
83056020000000000000504944564944,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,y:b2,x:b3,start:b7,back:b6,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Windows,
10080100000000000000504944564944,PS1 USB,platform:Windows,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
49190204000000000000504944564944,Ipega PG-9023,a:b0,b:b1,x:b3,y:b4,back:b10,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b8,righttrigger:b9,platform:Windows,
4f0423b3000000000000504944564944,Dual Trigger 3-in-1,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Windows,
0d0f4900000000000000504944564944,Hatsune Miku Sho Controller,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
79004318000000000000504944564944,Mayflash GameCube Controller Adapter,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b0,start:b9,guide:b0,leftshoulder:b4,rightshoulder:b7,leftstick:b0,rightstick:b0,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
79000018000000000000504944564944,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
2509e803000000000000504944564944,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
300f1001000000000000504944564944,Saitek P480 Rumble Pad,a:b2,b:b3,x:b0,y:b1,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b5,righttrigger:b7,platform:Windows,
10280900000000000000504944564944,8Bitdo SFC30 GamePad,a:b1,b:b0,y:b3,x:b4,start:b11,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,platform:Windows,
63252305000000000000504944564944,USB Vibration Joystick (BM),platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
20380900000000000000504944564944,8Bitdo NES30 PRO Wireless,platform:Windows,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,
02200090000000000000504944564944,8Bitdo NES30 PRO USB,platform:Windows,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,
ff113133000000000000504944564944,Gembird JPD-DualForce,platform:Windows,a:b2,b:b3,x:b0,y:b1,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,leftstick:b10,rightstick:b11,
341a0108000000000000504944564944,EXEQ RF USB Gamepad 8206,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,leftstick:b8,rightstick:b7,back:b8,start:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows,
c0111352000000000000504944564944,Battalife Joystick,platform:Windows,x:b4,a:b6,b:b7,y:b5,back:b2,start:b3,leftshoulder:b0,rightshoulder:b1,leftx:a0,lefty:a1,
# OS X
0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
6d0400000000000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
6d0400000000000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,
4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
891600000000000000fd000000000000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b8,guide:b10,back:b9,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Mac OS X,
4f0400000000000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Mac OS X,
8f0e0000000000000300000000000000,Piranha xtreme,platform:Mac OS X,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
0d0f0000000000004d00000000000000,HORI Gem Pad 3,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
79000000000000000600000000000000,G-Shark GP-702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
4f0400000000000015b3000000000000,Thrustmaster Dual Analog 3.2,platform:Mac OS X,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
AD1B00000000000001F9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,y:b9,x:b10,start:b6,guide:b8,back:b7,dpup:b2,dpleft:b0,dpdown:b3,dpright:b1,leftx:a0,lefty:a1,lefttrigger:b12,righttrigger:,leftshoulder:b11,platform:Mac OS X,
83050000000000006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Mac OS X,
5e04000000000000dd02000000000000,Xbox One Wired Controller,platform:Mac OS X,x:b2,a:b0,b:b1,y:b3,back:b9,guide:b10,start:b8,dpleft:b13,dpdown:b12,dpright:b14,dpup:b11,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b6,rightstick:b7,leftx:a0,lefty:a1,rightx:a3,righty:a4,
050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,x:b18,y:b17,back:b7,guide:b8,start:b6,leftstick:b23,rightstick:b24,leftshoulder:b19,rightshoulder:b20,dpup:b11,dpdown:b12,dpleft:b13,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b21,righttrigger:b22,platform:Mac OS X,
79000000000000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,x:b0,y:b12,back:b32,start:b36,leftstick:b40,rightstick:b44,leftshoulder:b16,rightshoulder:b20,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a4,rightx:a8,righty:a12,lefttrigger:b24,righttrigger:b28,platform:Mac OS X,
2509000000000000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
351200000000000021ab000000000000,SFC30 Joystick,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X,
b4040000000000000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,x:b3,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X,
10280000000000000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X,
d814000000000000cecf000000000000,MC Cthulhu,platform:Mac OS X,leftx:,lefty:,rightx:,righty:,lefttrigger:b6,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,righttrigger:b7,
0d0f0000000000006600000000000000,HORIPAD FPS PLUS 4,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:a4,
# Linux
0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
030000004c050000c405000011010000,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Linux,
030000006f0e00003001000001010000,EA Sports PS3 Controller,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,y:b0,x:b3,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux,
03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Linux,
030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,y:b3,x:b1,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,
030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
030000006d04000016c2000010010000,Logitech Logitech Dual Action,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
03000000260900008888000000010000,GameCube {WiseGroup USB box},a:b0,b:b2,y:b3,x:b1,start:b7,leftshoulder:,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,rightstick:,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,platform:Linux,
030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,y:b4,x:b3,start:b8,guide:b5,back:b2,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b9,righttrigger:b10,platform:Linux,
030000006d04000018c2000010010000,Logitech Logitech RumblePad 2 USB,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
05000000d6200000ad0d000001000000,Moga Pro,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,
030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,
0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
030000006f0e00001f01000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
03000000280400000140000000010000,Gravis GamePad Pro USB ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,
030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,
030000005e0400008502000000010000,Microsoft X-Box pad (Japan),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,
030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,platform:Linux,a:b2,b:b1,y:b0,x:b3,start:b8,back:b9,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,
030000008916000000fd000024010000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
050000004c050000c405000000010000,PS4 Controller (Bluetooth),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
060000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux,
050000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux,
03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,
03000000666600000488000000010000,Super Joy Box 5 Pro,platform:Linux,a:b2,b:b1,x:b3,y:b0,back:b9,start:b8,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,dpup:b12,dpleft:b15,dpdown:b14,dpright:b13,
05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
030000008916000001fd000024010000,Razer Onza Classic Edition,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:b11,dpdown:b14,dpright:b12,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
030000005e040000d102000001010000,Microsoft X-Box One pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
030000005e040000dd02000003020000,Microsoft X-Box One pad v2,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,platform:Linux,
03000000790000001100000010010000,RetroLink Saturn Classic Controller,platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,
050000007e0500003003000001000000,Nintendo Wii U Pro Controller,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b8,start:b9,guide:b10,leftshoulder:b4,rightshoulder:b5,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:b13,dpleft:b15,dpdown:b14,dpright:b16,
030000005e0400008e02000004010000,Microsoft X-Box 360 pad,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
030000000d0f00002200000011010000,HORI CO. LTD. REAL ARCADE Pro.V3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,
030000000d0f00001000000011010000,HORI CO. LTD. FIGHTING STICK 3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7
03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b7,back:b6,guide:b8,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,lefttrigger:a5,righttrigger:a4,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a2,righty:a3,
03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Linux,
030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
030000006f0e00001304000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:a0,rightstick:a3,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,
03000000830500006020000010010000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Linux,
03000000c9110000f055000011010000,HJC Game GAMEPAD,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b11,rightshoulder:b5,rightx:a2,start:b9,righty:a3,dpleft:h0.8,lefttrigger:b6,x:b2,dpup:h0.1,back:b8,leftstick:b10,leftshoulder:b4,y:b3,a:b0,dpright:h0.2,righttrigger:b7,b:b1,platform:Linux,
03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux,
03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,y:b3,x:b0,start:b9,guide:,back:,leftstick:,rightstick:,leftshoulder:,dpleft:b15,dpdown:b14,dpright:b13,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,rightshoulder:b7,dpup:b12,platform:Linux,
030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,platform:Linux,x:b0,a:b2,b:b3,y:b1,back:b10,guide:b12,start:b11,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,
030000006f0e00004601000001010000,Rock Candy Wired Controller for Xbox One,platform:Linux,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,guide:b8,leftstick:b9,rightstick:b10,lefttrigger:a2,righttrigger:a5,leftx:a0,lefty:a1,rightx:a3,righty:a4,
03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
030000006f0e00003901000020060000,Afterglow Wired Controller for Xbox One,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,platform:Linux,
030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,platform:Linux,a:b0,b:b2,x:b1,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,
05000000102800000900000000010000,8Bitdo SFC30 GamePad,platform:Linux,x:b4,a:b1,b:b0,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,
03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftshoulder:b4,rightshoulder:b5,lefttrigger:b6,righttrigger:b7,leftx:a0,lefty:a1,
030000000d0f00000d00000000010000,hori,platform:Linux,a:b0,b:b6,y:b2,x:b1,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,start:b9,guide:b10,back:b8,leftshoulder:b3,rightshoulder:b7,leftx:b4,lefty:b5,
03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,
03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,platform:Linux,a:b0,b:b1,y:b2,x:b3,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,
03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),platform:Linux,a:b3,b:b4,y:b1,x:b0,start:b7,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,
05000000010000000100000003000000,Nintendo Wiimote,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b9,guide:b10,back:b8,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
030000005e0400008e02000062230000,Microsoft X-Box 360 pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,y:b1,x:b0,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b6,righttrigger:b7,platform:Linux,
030000006f0e00000103000000020000,Logic3 Controller,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
05000000380700006652000025010000,Mad Catz C.T.R.L.R ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
+337
View File
@@ -0,0 +1,337 @@
006b570008068310:184 = strtok_r
019ba2099fb88f3c:48 = vector_normalize_t
0266f96d740c7e03:912 = memcpy
02bd2859045d2383:240 = bcmp
030507c9a1f0fc85:92 = matrix_rot_x
0483fceefa4557ff:1360 = __udivdi3
0558ad5c5be00ca1:76 = vtfm_t
05aedd0c04b451a1:356 = sqrt
0654fc8adbe16ef7:28 = vmul_q
06b243c926fa6ab5:24 = vf2in_q
06e2826e02056114:56 = wcslen
075fa9b234b41e9b:32 = fmodf
0a051019bdd786c3:184 = strcasecmp
0a46dc426054bb9d:24 = vector_add_t
0c0173ed70f84f66:48 = vnormalize_t
0c65188f5bfb3915:24 = vsgn_q
0d898513a722ea3c:40 = copysignf
0e99b037b852c8ea:68 = isnan
0eb5f2e95f59276a:40 = dl_write_lightmode
0f1e7533a546f6a1:228 = dl_write_bone_matrix_4
0f2a1106ad84fb74:52 = strcmp
0ffa5db8396d4274:64 = memcpy_jak
1252e902d0b49bfb:44 = vector_sub_q_2
12df3d33a58d0298:52 = vmidt_t
12feef7b017d3431:700 = memmove
1322c7e3fe6dff4d:784 = _free_r
1376c115d5f1d90c:36 = strlen
1448134dd3acd1f9:240 = memchr
14800e59c04968d7:100 = wcsstr
14b56e858a27a8a4:24 = vi2f_q
15c4662d5d3c728e:308 = acosf
1616ee7052542059:48 = vtfm_t
16965ca11a4e7dac:104 = vmmul_q_transp
16afe830a5dd2de2:40 = vdiv_q
184e834a63a79016:32 = isnanf
189212bda9c94df1:736 = atanf
199821ce500ef9d2:24 = vocp_t
1a3c8e9d637ed421:104 = __adddf3
1a7564fa3e25c992:844 = memcpy
1aad94c0723edfc0:124 = vmmul_t_transp
1ab33b12b3cb8cb0:28 = vqmul_q
1ac05627df1f87f4:112 = memcpy16
1bdf3600844373fd:112 = strstr
1c967be07917ddc9:92 = strcat
1d03fa48334ca966:556 = _strtol_r
1e1525e3bc2f6703:676 = rint
1ec055f28bb9f4d1:88 = gu_update_stall
1ef9cfe6afd3c035:180 = memset
1f53eac122f96b37:224 = cosf
2097a8b75c8fe651:436 = atan2
21411b3c860822c0:36 = matrix_scale_q_t
24d82a8675800808:220 = ceilf
26cc90cb25af9d27:476 = log10
2774614d57d4baa2:28 = vsub_q
279c6bf9cf99cc85:436 = strncpy
2876ed93c5fd1211:328 = dl_write_matrix_4
2965b1ad3ca15cc1:44 = vtfm_t
299a370587df078f:116 = strange_copy_routine
2abca53599f09ea7:608 = dl_write_matrix_3
2adb92e8855c454e:48 = vtfm_q
2adc229bef7bbc75:40 = isnan
2bcf5268dd26345a:340 = acos
2c4cb2028a1735bf:600 = floor
2ca5958bb816c72e:44 = vector_i2f_t
2e7022d9767c9018:2100 = atan
2f10d3faec84b5bb:276 = sinf
2f639673670caa0e:772 = dl_write_matrix_2
2f718936b371fc44:40 = vcos_s
3024e961d1811dea:396 = fmod
30c9c4f420573eb6:540 = expf
317afeb882ff324a:212 = memcpy
31ea2e192f5095a1:52 = vector_add_t
31f523ef18898e0e:420 = logf
32806967fe81568b:40 = vector_sub_t_2
32ceb9a7f72b9385:440 = _strtoul_r
32e6bc7c151491ed:68 = memchr
335df69db1073a8d:96 = wcscpy
33dc6b144cb302c1:304 = memmove
35d3527ff8c22ff2:56 = matrix_scale_q
373ce518eee5a2d2:20 = matrix300_store_q
388043e96b0e11fd:144 = dl_write_material_2
38f19bc3be215acc:388 = log10f
393047f06eceaba1:96 = strcspn
39a651942a0b3861:204 = tan
3a3bc2b20a55bf02:68 = memchr
3ab08b5659de1746:40 = vsin_s
3c421a9265f37ebc:700 = memmove
3cbc2d50a3db59e9:100 = strncmp
3ce1806699a91d9d:148 = dl_write_light
3d5e914011c181d4:444 = scalbnf
3ea41eafb53fc99a:388 = logf
3fe38bff09ac3da0:436 = _strtoul_r
40a25c7e1fd44fe2:24 = fabsf
410d48d9b6580b4a:36 = dl_write_ztest
42dc17c8018f30f2:44 = vtan.s
436b07caa2aab931:352 = acos
444472537eedf966:32 = vmzero_q
449ff96982626338:28 = vmidt_q
44f65b1a72c45703:36 = strlen
45528de3948615dc:64 = memcpy
456a0d78ac318d15:164 = gta_dl_write_matrix
497248c9d12f44fd:68 = strcpy
4a70207212a4c497:24 = strlen
4b16a5c602c74c6c:24 = vsub_t
4bb677dace6ca526:184 = memset
4c4bdedcc13ac77c:624 = dl_write_matrix_5
4c91c556d1aa896b:104 = dl_write_material_3
4cf38c368078181e:616 = dl_write_matrix
4d72b294501cddfb:80 = copysign
4ddd83b7f4ed8d4e:844 = memcpy
4e266783291b0220:28 = vsub_t
4e5950928c0bb082:44 = vmmul_q_transp4
4f34fc596ecf5b25:40 = vdiv_t
500a949afb39133f:24 = vf2iu_q
50d8f01ea8fa713d:48 = send_commandi
50fa6db2fb14814a:544 = rint
513ce13cd7ce97ea:332 = scalbnf
514161da54d37416:1416 = __umoddi3
51c52d7dd4d2191c:360 = cos
5287d4b8abd5806b:768 = _strtoll_r
52d5141545a75eda:60 = dl_write_clutformat
530cbe1ce9b45d58:108 = dl_write_light_vector
53c9aa23504a630f:96 = vmmul_q_5
54015ccbcbc75374:24 = strlen
5550d87a851c218c:168 = dl_write_viewport
55c1294280bfade0:88 = dl_write_blend_fixed
56c9929e8c8c5768:24 = fabsf
572b2d9e57e6e363:788 = memcpy_thingy
580200b840b47c58:1856 = _realloc_r
5961f681bbd69035:28 = vfad_q
598b91c64cf7e036:2388 = qsort
59a0cb08f5ecf8b6:28 = copysignf
5ae4ec2a5e133de3:28 = vector_cross_t
5b005f8375d7c364:236 = floorf
5b103d973fd1dd94:92 = matrix_rot_y
5b9d7e9d4c905694:196 = _calloc_r
5bf7a77b028e9f66:324 = sqrtf
5c0b3edc0e48852c:148 = memmove
5e898df42c4af6b8:76 = wcsncmp
5f473780835e3458:52 = vclamp_q
5fc58ed2c4d48b79:40 = vtfm_q_transp
6145029ef86f0365:76 = __extendsfdf2
62815f41fa86a131:656 = scalbn
6301fa5149bd973a:120 = wcscat
658b07240a690dbd:36 = strlen
66122f0ab50b2ef9:296 = dl_write_dither_matrix_5
66f7f1beccbc104a:256 = memcpy_swizzled
679e647e34ecf7f1:132 = roundf
67afe74d9ec72f52:4380 = _strtod_r
68b22c2aa4b8b915:400 = sqrt
6962da85a6dad937:60 = strrchr
69a3c4f774859404:64 = vmmul_q_transp2
6b022e20ee3fa733:68 = __negdf2
6b2a6347c0dfcb57:152 = strcpy
6b4148322c569cb3:240 = wmemchr
6c4cb6d25851553a:44 = vtfm_t
6c7b2462b9ec7bc7:56 = vmmul_q
6ca9cc8fa485d096:304 = __ieee754_sqrtf
6ccffc753d2c148e:96 = strlwr
6e40ec681fb5c571:40 = matrix_copy_q
6e9884c842a51142:236 = strncasecmp
6f101c5c4311c144:276 = floorf
6f1731f84bbf76c3:116 = strcmp
6f4e1a1a84df1da0:68 = dl_write_texmode
70649c7211f6a8da:16 = fabsf
7245b74db370ae72:64 = vmmul_q_transp3
7259d52b21814a5a:40 = vtfm_t_transp
736b34ebc702d873:104 = vmmul_q_transp
7499a2ce8b60d801:12 = abs
74ebbe7d341463f3:72 = dl_write_colortest
755a41f9183bb89a:60 = vmmul_q
759834c69bb12c12:68 = strcpy
75c5a88d62c9c99f:276 = sinf
76c661fecbb39990:364 = sin
770c9c07bf58fd14:16 = fabsf
774e479eb9634525:464 = _strtol_r
77aeb1c23f9aa2ad:56 = strchr
78e8c65b5a458f33:148 = memcmp
794d1b073c183c77:24 = fabsf
7978a886cf70b1c9:56 = wcschr
79faa339fff5a80c:28 = finitef
7c50728008c288e3:36 = vector_transform_q_4x4
7f1fc0dce6be120a:404 = fmod
828b98925af9ff8f:40 = vector_distance_t
83ac39971df4b966:336 = sqrtf
84c6cd47834f4c79:1284 = powf
8734dc1d155ea493:24 = vf2iz_q
87fe3f7e621ddebb:212 = memcpy
891ca854e1c664e9:2392 = qsort
8965d4b004adad28:420 = log10f
89e1858ba11b84e4:52 = memset
8a00e7207e7dbc81:232 = _exit
8a1f9daadecbaf7f:104 = vmmul_q_transp
8a610f34078ce360:32 = vector_copy_q_t
8c3fd997a544d0b1:268 = memcpy
8df2928848857e97:164 = strcat
8e48cabd529ca6b5:52 = vector_multiply_t
8e97dcb03fbaba5c:104 = vmmul_q_transp
8ee81b03d2eef1e7:28 = vmul_t
8f19c41e8b987e18:100 = matrix_mogrify
8ff11e9bed387401:700 = memmove
910140c1a07aa59e:256 = rot_matrix_euler_zyx
91606bd72ae90481:44 = wmemcpy
92c7d2de74068c9c:32 = vcross_t
93d8a275ba288b26:32 = vdot_t
94c7083b64a946b4:2028 = powf
95a52ce1bc460108:2036 = _malloc_r
95bd33ac373c019a:24 = fabsf
9705934b0950d68d:280 = dl_write_framebuffer_ptr
9734cf721bc0f3a1:732 = atanf
9a06b9d5c16c4c20:76 = dl_write_clut_ptrload
9b88b739267d189e:88 = strrchr
9ce53975bb88c0e7:96 = strncpy
9d4f5f56b52f07f2:808 = memmove
9e2941c4a5c5e847:792 = memcpy
9e6ce11f9d49f954:292 = memcpy
9f269daa6f0da803:128 = dl_write_scissor_region
9f7919eeb43982b0:208 = __fixdfsi
a1ca0640f11182e7:72 = strcspn
a243486be51ce224:272 = cosf
a2bcef60a550a3ef:92 = matrix_rot_z
a41989db0f9bf97e:1304 = pow
a44f6227fdbc12b1:132 = memcmp
a46cc6ea720d5775:44 = dl_write_cull
a54967288afe8f26:600 = ceil
a5ddbbc688e89a4d:56 = isinf
a662359e30b829e4:148 = memcmp
a8390e65fa087c62:140 = vtfm_t_q
a85fe8abb88b1c6f:52 = vector_sub_t
a9194e55cc586557:268 = memcpy
a91b3d60bd75105b:28 = vadd_t
ab97ec58c58a7c75:52 = vector_divide_t
acc2c11c3ea28320:268 = ceilf
ad67add5122b8c64:52 = matrix_q_translate_t
ada952a1adcea4f5:60 = vmmul_q_transp5
adfbf8fb8c933193:56 = fabs
ae50226363135bdd:24 = vector_sub_t
ae6cd7dfac82c244:48 = vpow_s
af85d47f95ad2921:1936 = pow
afb2c7e56c04c8e9:48 = vtfm_q
afc9968e7d246a5e:1588 = atan
afcb7dfbc4d72588:44 = vector_transform_3x4
b0db731f27d3aa1b:40 = vmax_s
b0ef265e87899f0a:32 = vector_divide_t_s
b183a37baa12607b:32 = vscl_t
b1a3e60a89af9857:20 = fabs
b3fef47fb27d57c9:44 = vector_scale_t
b43fd5078ae78029:84 = send_commandi_stall
b43ffbd4dc446dd2:324 = atan2f
b5fdb3083e6f4b3f:36 = vhtfm_t
b6a04277fb1e1a1a:104 = vmmul_q_transp
b7448c5ffdd3b0fc:356 = atan2f
b7d88567dc22aab1:820 = memcpy
b877d3c37a7aaa5d:60 = vmmul_q_2
b89aa73b6f94ba95:52 = vclamp_t
b8bd1f0e02e9ad87:156 = dl_write_light_dir
b8cfaeebfeb2de20:7548 = _vfprintf_r
b97f352e85661af6:32 = finitef
bb3c6592ed319ba4:132 = dl_write_fog_params
bb7d7c93e4c08577:124 = __truncdfsf2
bdf54d66079afb96:200 = dl_write_bone_matrix_3
be773f78afd1a70f:128 = rand
bf5d02ccb8514881:108 = strcmp
bf791954ebef4afb:396 = expf
bfe07e305abc4cd1:808 = memmove
c0feb88cc04a1dc7:48 = vector_negate_t
c1f34599d0b9146b:116 = __subdf3
c319f0d107dd2f45:888 = __muldf3
c35c10300b6b6091:620 = floor
c3dbf3e6c80a0a51:164 = dl_write_bone_matrix
c51519f5dab342d4:224 = cosf
c52c14b9af8c3008:76 = memcmp
c54eae62622f1e11:164 = dl_write_bone_matrix_2
c96e3a087ebf49a9:100 = dl_write_light_color
cb7a2edd603ecfef:48 = vtfm_p
cdf64d21418b2667:24 = vzero_q
ce1c95ee25b8e2ea:448 = fmod
ce4d18a75b98859f:40 = vector_add_t_2
ceb5372d0003d951:52 = dl_write_stenciltest
cee11483b550ce8f:24 = vocp_q
cfecf208769ed5fd:272 = cosf
d019b067b58cf6c3:700 = memmove
d12a3a91e0040229:524 = dl_write_enable_disable
d1faacfc711d61e8:68 = __negdf2
d207b0650a41dd9c:28 = vmin_q
d6d6e0bb21654778:24 = vneg_t
d7229fee680e7851:40 = vmin_s
d75670860a7f4b05:144 = wcsncpy
d76d1a8804c7ec2c:100 = dl_write_material
d7d350c0b33a4662:28 = vadd_q
d80051931427dca0:116 = __subdf3
da51dab503b06979:32 = vmidt_q
dc0cc8b400ecfbf2:36 = strcmp
dcab869acf2bacab:292 = strncasecmp
dcdf7e1c1a3dc260:372 = strncmp
dcfc28e624a81bf1:5476 = _dtoa_r
ddfa5a85937aa581:32 = vdot_q
e0214719d8a0aa4e:104 = strstr
e029f0699ca3a886:76 = matrix300_transform_by
e1107cf3892724a0:460 = _memalign_r
e1724e6e29209d97:24 = vector_length_t_2
e1a5d939cc308195:68 = wcscmp
e2d9106e5b9e39e6:80 = strnlen
e32cb5c062d1a1c4:700 = _strtoull_r
e3835fb2c9c04e59:44 = vmmul_q
e527c62d8613f297:136 = strcpy
e7b36c2c1348551d:148 = tan
e83a7a9d80a21c11:4448 = _strtod_r
e894bda909a8a8f9:1064 = expensive_wipeout_pulse
e8ad7719be44e7c8:276 = strchr
eabb9c1b4f83d2b4:52 = memset
eb0f7bf63d52ece9:88 = strncat
eb8c0834d8bbc28c:416 = fmodf
edbbe9bf9fbceca8:172 = dl_write_viewport2
edc3f476221f96e6:148 = tanf
f1f660fdf349eac2:1588 = _malloc_r
f38a356a359dbe06:28 = vmax_q
f3fc2220ed0f2703:32 = send_commandf
f4d797cef4ac88cd:684 = _free_r
f4ea7d2ec943fa02:224 = sinf
f4f8cdf479dfc4a4:224 = sinf
f52f993e444b6c52:44 = dl_write_shademode
f56641884b36c638:468 = scalbn
f5f7826b4a61767c:40 = matrix_copy_q
f73c094e492bc163:396 = hypot
f7fc691db0147e25:96 = strspn
f842aea3baa61f29:32 = vector_length_t
f8e0902f4099a9d6:2260 = qsort
f972543ab7df071a:32 = vsqrt_s
f9b00ef163e8b9d4:32 = vscl_q
f9ea1bf2a897ef24:588 = ceil
fa156c48461eeeb9:24 = vf2id_q
fb4253a1d9d9df9f:20 = isnanf
fd34a9ad94fa6241:76 = __extendsfdf2
fe4f0280240008e9:28 = vavg_q
fe5dd338ab862291:216 = memset
ffc8f5f8f946152c:192 = dl_write_light_color
+59
View File
@@ -0,0 +1,59 @@
[LangRegionNames]
ja_JP = "日本語"
en_US = "English"
fi_FI = "Suomi"
fr_FR = "Français"
es_ES = "Castellano (España)"
es_LA = "Español (América Latina)"
de_DE = "Deutsch"
it_IT = "Italiano"
nl_NL = "Nederlands"
pt_PT = "Português"
pt_BR = "Português Brasileiro"
ru_RU = "Русский"
ko_KR = "한국어"
zh_TW = "繁體中文"
zh_CN = "简体中文"
ar_AE = "العربية"
az_AZ = "Azeri"
ca_ES = "Català"
gl_ES = "Galego"
gr_EL = "Ελληνικά"
he_IL = "עברית"
hu_HU = "Magyar"
id_ID = "Indonesia"
pl_PL = "Polski"
ro_RO = "Român"
sv_SE = "Svenska"
tr_TR = "Türk"
uk_UA = "Українська"
vi_VN = "Tiếng Việt"
cz_CZ = "Česky"
tg_PH = "Tagalog"
th_TH = "ไทย"
dr_ID = "Duri"
fa_IR = "فارسی"
ms_MY = "Melayu"
da_DK = "Dansk"
no_NO = "Norsk"
bg_BG = "български език"
lt-LT = "Lithuanian"
jv_ID = "Jawa"
[SystemLanguage]
ja_JP = "JAPANESE"
en_US = "ENGLISH"
fr_FR = "FRENCH"
es_ES = "SPANISH"
gl_ES = "SPANISH"
es_LA = "SPANISH"
de_DE = "GERMAN"
it_IT = "ITALIAN"
nl_NL = "DUTCH"
pt_PT = "PORTUGUESE"
pt_BR = "PORTUGUESE"
ru_RU = "RUSSIAN"
ko_KR = "KOREAN"
th_TH = "THAI"
zh_TW = "CHINESE_TRADITIONAL"
zh_CN = "CHINESE_SIMPLIFIED"
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

+790
View File
@@ -0,0 +1,790 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|ARM">
<Configuration>UWP Gold</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|Win32">
<Configuration>UWP Gold</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|x64">
<Configuration>UWP Gold</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{40b76674-02de-40ef-889b-fad1489685e7}</ProjectGuid>
<Keyword>StaticLibrary</Keyword>
<RootNamespace>CoreUWP</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/x86/include;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/x86/include;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/x86/include;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/ARM/include;../../ffmpeg/WindowsInclude;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/ARM/include;../../ffmpeg/WindowsInclude;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/ARM/include;../../ffmpeg/WindowsInclude;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/x64/include;../../ffmpeg/WindowsInclude;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/x64/include;../../ffmpeg/WindowsInclude;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../../ffmpeg/Windows10/x64/include;../../ffmpeg/WindowsInclude;../..;../../ext/native;../../ext/snappy;../../Common;../../ext/zlib;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>USE_FFMPEG;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\Core\AVIDump.h" />
<ClInclude Include="..\..\Core\Compatibility.h" />
<ClInclude Include="..\..\Core\Config.h" />
<ClInclude Include="..\..\Core\Core.h" />
<ClInclude Include="..\..\Core\CoreParameter.h" />
<ClInclude Include="..\..\Core\CoreTiming.h" />
<ClInclude Include="..\..\Core\CwCheat.h" />
<ClInclude Include="..\..\Core\Debugger\Breakpoints.h" />
<ClInclude Include="..\..\Core\Debugger\DebugInterface.h" />
<ClInclude Include="..\..\Core\Debugger\DisassemblyManager.h" />
<ClInclude Include="..\..\Core\Debugger\SymbolMap.h" />
<ClInclude Include="..\..\Core\Dialog\PSPDialog.h" />
<ClInclude Include="..\..\Core\Dialog\PSPGamedataInstallDialog.h" />
<ClInclude Include="..\..\Core\Dialog\PSPMsgDialog.h" />
<ClInclude Include="..\..\Core\Dialog\PSPNetconfDialog.h" />
<ClInclude Include="..\..\Core\Dialog\PSPOskDialog.h" />
<ClInclude Include="..\..\Core\Dialog\PSPPlaceholderDialog.h" />
<ClInclude Include="..\..\Core\Dialog\PSPSaveDialog.h" />
<ClInclude Include="..\..\Core\Dialog\PSPScreenshotDialog.h" />
<ClInclude Include="..\..\Core\Dialog\SavedataParam.h" />
<ClInclude Include="..\..\Core\ELF\ElfReader.h" />
<ClInclude Include="..\..\Core\ELF\ElfTypes.h" />
<ClInclude Include="..\..\Core\ELF\ParamSFO.h" />
<ClInclude Include="..\..\Core\ELF\PBPReader.h" />
<ClInclude Include="..\..\Core\ELF\PrxDecrypter.h" />
<ClInclude Include="..\..\Core\FileLoaders\CachingFileLoader.h" />
<ClInclude Include="..\..\Core\FileLoaders\DiskCachingFileLoader.h" />
<ClInclude Include="..\..\Core\FileLoaders\HTTPFileLoader.h" />
<ClInclude Include="..\..\Core\FileLoaders\LocalFileLoader.h" />
<ClInclude Include="..\..\Core\FileLoaders\RamCachingFileLoader.h" />
<ClInclude Include="..\..\Core\FileLoaders\RetryingFileLoader.h" />
<ClInclude Include="..\..\Core\FileSystems\BlockDevices.h" />
<ClInclude Include="..\..\Core\FileSystems\DirectoryFileSystem.h" />
<ClInclude Include="..\..\Core\FileSystems\FileSystem.h" />
<ClInclude Include="..\..\Core\FileSystems\ISOFileSystem.h" />
<ClInclude Include="..\..\Core\FileSystems\MetaFileSystem.h" />
<ClInclude Include="..\..\Core\FileSystems\VirtualDiscFileSystem.h" />
<ClInclude Include="..\..\Core\Font\PGF.h" />
<ClInclude Include="..\..\Core\HDRemaster.h" />
<ClInclude Include="..\..\Core\HLE\FunctionWrappers.h" />
<ClInclude Include="..\..\Core\HLE\HLE.h" />
<ClInclude Include="..\..\Core\HLE\HLEHelperThread.h" />
<ClInclude Include="..\..\Core\HLE\HLETables.h" />
<ClInclude Include="..\..\Core\HLE\KernelWaitHelpers.h" />
<ClInclude Include="..\..\Core\HLE\KUBridge.h" />
<ClInclude Include="..\..\Core\HLE\proAdhoc.h" />
<ClInclude Include="..\..\Core\HLE\proAdhocServer.h" />
<ClInclude Include="..\..\Core\HLE\ReplaceTables.h" />
<ClInclude Include="..\..\Core\HLE\sceAdler.h" />
<ClInclude Include="..\..\Core\HLE\sceAtrac.h" />
<ClInclude Include="..\..\Core\HLE\sceAudio.h" />
<ClInclude Include="..\..\Core\HLE\sceAudiocodec.h" />
<ClInclude Include="..\..\Core\HLE\sceAudioRouting.h" />
<ClInclude Include="..\..\Core\HLE\sceCcc.h" />
<ClInclude Include="..\..\Core\HLE\sceChnnlsv.h" />
<ClInclude Include="..\..\Core\HLE\sceCtrl.h" />
<ClInclude Include="..\..\Core\HLE\sceDeflt.h" />
<ClInclude Include="..\..\Core\HLE\sceDisplay.h" />
<ClInclude Include="..\..\Core\HLE\sceDmac.h" />
<ClInclude Include="..\..\Core\HLE\sceFont.h" />
<ClInclude Include="..\..\Core\HLE\sceG729.h" />
<ClInclude Include="..\..\Core\HLE\sceGameUpdate.h" />
<ClInclude Include="..\..\Core\HLE\sceGe.h" />
<ClInclude Include="..\..\Core\HLE\sceHeap.h" />
<ClInclude Include="..\..\Core\HLE\sceHprm.h" />
<ClInclude Include="..\..\Core\HLE\sceHttp.h" />
<ClInclude Include="..\..\Core\HLE\sceImpose.h" />
<ClInclude Include="..\..\Core\HLE\sceIo.h" />
<ClInclude Include="..\..\Core\HLE\sceJpeg.h" />
<ClInclude Include="..\..\Core\HLE\sceKernel.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelAlarm.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelEventFlag.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelInterrupt.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelMbx.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelMemory.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelModule.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelMsgPipe.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelMutex.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelSemaphore.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelThread.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelTime.h" />
<ClInclude Include="..\..\Core\HLE\sceKernelVTimer.h" />
<ClInclude Include="..\..\Core\HLE\sceMd5.h" />
<ClInclude Include="..\..\Core\HLE\sceMp3.h" />
<ClInclude Include="..\..\Core\HLE\sceMp4.h" />
<ClInclude Include="..\..\Core\HLE\sceMpeg.h" />
<ClInclude Include="..\..\Core\HLE\sceMt19937.h" />
<ClInclude Include="..\..\Core\HLE\sceNet.h" />
<ClInclude Include="..\..\Core\HLE\sceNetAdhoc.h" />
<ClInclude Include="..\..\Core\HLE\sceNp.h" />
<ClInclude Include="..\..\Core\HLE\sceOpenPSID.h" />
<ClInclude Include="..\..\Core\HLE\sceP3da.h" />
<ClInclude Include="..\..\Core\HLE\sceParseHttp.h" />
<ClInclude Include="..\..\Core\HLE\sceParseUri.h" />
<ClInclude Include="..\..\Core\HLE\scePauth.h" />
<ClInclude Include="..\..\Core\HLE\scePower.h" />
<ClInclude Include="..\..\Core\HLE\scePsmf.h" />
<ClInclude Include="..\..\Core\HLE\scePspNpDrm_user.h" />
<ClInclude Include="..\..\Core\HLE\sceRtc.h" />
<ClInclude Include="..\..\Core\HLE\sceSas.h" />
<ClInclude Include="..\..\Core\HLE\sceSfmt19937.h" />
<ClInclude Include="..\..\Core\HLE\sceSha256.h" />
<ClInclude Include="..\..\Core\HLE\sceSsl.h" />
<ClInclude Include="..\..\Core\HLE\sceUmd.h" />
<ClInclude Include="..\..\Core\HLE\sceUsb.h" />
<ClInclude Include="..\..\Core\HLE\sceUsbGps.h" />
<ClInclude Include="..\..\Core\HLE\sceUtility.h" />
<ClInclude Include="..\..\Core\HLE\sceVaudio.h" />
<ClInclude Include="..\..\Core\HLE\ThreadQueueList.h" />
<ClInclude Include="..\..\Core\HLE\__sceAudio.h" />
<ClInclude Include="..\..\Core\Host.h" />
<ClInclude Include="..\..\Core\HW\AsyncIOManager.h" />
<ClInclude Include="..\..\Core\HW\BufferQueue.h" />
<ClInclude Include="..\..\Core\HW\MediaEngine.h" />
<ClInclude Include="..\..\Core\HW\MemoryStick.h" />
<ClInclude Include="..\..\Core\HW\MpegDemux.h" />
<ClInclude Include="..\..\Core\HW\SasAudio.h" />
<ClInclude Include="..\..\Core\HW\SasReverb.h" />
<ClInclude Include="..\..\Core\HW\SimpleAudioDec.h" />
<ClInclude Include="..\..\Core\HW\StereoResampler.h" />
<ClInclude Include="..\..\Core\Loaders.h" />
<ClInclude Include="..\..\Core\MemMap.h" />
<ClInclude Include="..\..\Core\MemMapHelpers.h" />
<ClInclude Include="..\..\Core\MIPS\ARM\ArmCompVFPUNEONUtil.h" />
<ClInclude Include="..\..\Core\MIPS\ARM\ArmJit.h" />
<ClInclude Include="..\..\Core\MIPS\ARM\ArmRegCache.h" />
<ClInclude Include="..\..\Core\MIPS\ARM\ArmRegCacheFPU.h" />
<ClInclude Include="..\..\Core\MIPS\IR\IRFrontend.h" />
<ClInclude Include="..\..\Core\MIPS\IR\IRInst.h" />
<ClInclude Include="..\..\Core\MIPS\IR\IRInterpreter.h" />
<ClInclude Include="..\..\Core\MIPS\IR\IRJit.h" />
<ClInclude Include="..\..\Core\MIPS\IR\IRPassSimplify.h" />
<ClInclude Include="..\..\Core\MIPS\IR\IRRegCache.h" />
<ClInclude Include="..\..\Core\MIPS\JitCommon\JitBlockCache.h" />
<ClInclude Include="..\..\Core\MIPS\JitCommon\JitCommon.h" />
<ClInclude Include="..\..\Core\MIPS\JitCommon\JitState.h" />
<ClInclude Include="..\..\Core\MIPS\MIPS.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSAnalyst.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSAsm.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSCodeUtils.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSDebugInterface.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSDis.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSDisVFPU.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSInt.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSIntVFPU.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSStackWalk.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSTables.h" />
<ClInclude Include="..\..\Core\MIPS\MIPSVFPUUtils.h" />
<ClInclude Include="..\..\Core\MIPS\x86\IRToX86.h" />
<ClInclude Include="..\..\Core\MIPS\x86\Jit.h" />
<ClInclude Include="..\..\Core\MIPS\x86\JitSafeMem.h" />
<ClInclude Include="..\..\Core\MIPS\x86\RegCache.h" />
<ClInclude Include="..\..\Core\MIPS\x86\RegCacheFPU.h" />
<ClInclude Include="..\..\Core\Opcode.h" />
<ClInclude Include="..\..\Core\PSPLoaders.h" />
<ClInclude Include="..\..\Core\Reporting.h" />
<ClInclude Include="..\..\Core\SaveState.h" />
<ClInclude Include="..\..\Core\Screenshot.h" />
<ClInclude Include="..\..\Core\System.h" />
<ClInclude Include="..\..\Core\TextureReplacer.h" />
<ClInclude Include="..\..\Core\ThreadEventQueue.h" />
<ClInclude Include="..\..\Core\Util\AudioFormat.h" />
<ClInclude Include="..\..\Core\Util\AudioFormatNEON.h" />
<ClInclude Include="..\..\Core\Util\BlockAllocator.h" />
<ClInclude Include="..\..\Core\Util\DisArm64.h" />
<ClInclude Include="..\..\Core\Util\GameManager.h" />
<ClInclude Include="..\..\Core\Util\PPGeDraw.h" />
<ClInclude Include="..\..\Core\Util\ppge_atlas.h" />
<ClInclude Include="..\..\Core\WaveFile.h" />
<ClInclude Include="..\..\ext\disarm.h" />
<ClInclude Include="..\..\ext\sfmt19937\SFMT-common.h" />
<ClInclude Include="..\..\ext\sfmt19937\SFMT-params.h" />
<ClInclude Include="..\..\ext\sfmt19937\SFMT-params19937.h" />
<ClInclude Include="..\..\ext\sfmt19937\SFMT.h" />
<ClInclude Include="..\..\ext\snappy\snappy-c.h" />
<ClInclude Include="..\..\ext\snappy\snappy-internal.h" />
<ClInclude Include="..\..\ext\snappy\snappy-sinksource.h" />
<ClInclude Include="..\..\ext\snappy\snappy-stubs-internal.h" />
<ClInclude Include="..\..\ext\snappy\snappy-stubs-public.h" />
<ClInclude Include="..\..\ext\snappy\snappy.h" />
<ClInclude Include="..\..\ext\udis86\decode.h" />
<ClInclude Include="..\..\ext\udis86\extern.h" />
<ClInclude Include="..\..\ext\udis86\itab.h" />
<ClInclude Include="..\..\ext\udis86\syn.h" />
<ClInclude Include="..\..\ext\udis86\types.h" />
<ClInclude Include="..\..\ext\udis86\udint.h" />
<ClInclude Include="..\..\ext\udis86\udis86.h" />
<ClInclude Include="..\..\ext\xbrz\config.h" />
<ClInclude Include="..\..\ext\xbrz\xbrz.h" />
<ClInclude Include="..\..\ext\xxhash.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Core\AVIDump.cpp" />
<ClCompile Include="..\..\Core\Compatibility.cpp" />
<ClCompile Include="..\..\Core\Config.cpp" />
<ClCompile Include="..\..\Core\Core.cpp" />
<ClCompile Include="..\..\Core\CoreTiming.cpp" />
<ClCompile Include="..\..\Core\CwCheat.cpp" />
<ClCompile Include="..\..\Core\Debugger\Breakpoints.cpp" />
<ClCompile Include="..\..\Core\Debugger\DisassemblyManager.cpp" />
<ClCompile Include="..\..\Core\Debugger\SymbolMap.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPGamedataInstallDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPMsgDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPNetconfDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPOskDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPPlaceholderDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPSaveDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\PSPScreenshotDialog.cpp" />
<ClCompile Include="..\..\Core\Dialog\SavedataParam.cpp" />
<ClCompile Include="..\..\Core\ELF\ElfReader.cpp" />
<ClCompile Include="..\..\Core\ELF\ParamSFO.cpp" />
<ClCompile Include="..\..\Core\ELF\PBPReader.cpp" />
<ClCompile Include="..\..\Core\ELF\PrxDecrypter.cpp" />
<ClCompile Include="..\..\Core\FileLoaders\CachingFileLoader.cpp" />
<ClCompile Include="..\..\Core\FileLoaders\DiskCachingFileLoader.cpp" />
<ClCompile Include="..\..\Core\FileLoaders\HTTPFileLoader.cpp" />
<ClCompile Include="..\..\Core\FileLoaders\LocalFileLoader.cpp" />
<ClCompile Include="..\..\Core\FileLoaders\RamCachingFileLoader.cpp" />
<ClCompile Include="..\..\Core\FileLoaders\RetryingFileLoader.cpp" />
<ClCompile Include="..\..\Core\FileSystems\BlockDevices.cpp" />
<ClCompile Include="..\..\Core\FileSystems\DirectoryFileSystem.cpp" />
<ClCompile Include="..\..\Core\FileSystems\FileSystem.cpp" />
<ClCompile Include="..\..\Core\FileSystems\ISOFileSystem.cpp" />
<ClCompile Include="..\..\Core\FileSystems\MetaFileSystem.cpp" />
<ClCompile Include="..\..\Core\FileSystems\tlzrc.cpp" />
<ClCompile Include="..\..\Core\FileSystems\VirtualDiscFileSystem.cpp" />
<ClCompile Include="..\..\Core\Font\PGF.cpp" />
<ClCompile Include="..\..\Core\HDRemaster.cpp" />
<ClCompile Include="..\..\Core\HLE\HLE.cpp" />
<ClCompile Include="..\..\Core\HLE\HLEHelperThread.cpp" />
<ClCompile Include="..\..\Core\HLE\HLETables.cpp" />
<ClCompile Include="..\..\Core\HLE\KUBridge.cpp" />
<ClCompile Include="..\..\Core\HLE\proAdhoc.cpp" />
<ClCompile Include="..\..\Core\HLE\proAdhocServer.cpp" />
<ClCompile Include="..\..\Core\HLE\ReplaceTables.cpp" />
<ClCompile Include="..\..\Core\HLE\sceAdler.cpp" />
<ClCompile Include="..\..\Core\HLE\sceAtrac.cpp" />
<ClCompile Include="..\..\Core\HLE\sceAudio.cpp" />
<ClCompile Include="..\..\Core\HLE\sceAudiocodec.cpp" />
<ClCompile Include="..\..\Core\HLE\sceAudioRouting.cpp" />
<ClCompile Include="..\..\Core\HLE\sceCcc.cpp" />
<ClCompile Include="..\..\Core\HLE\sceChnnlsv.cpp" />
<ClCompile Include="..\..\Core\HLE\sceCtrl.cpp" />
<ClCompile Include="..\..\Core\HLE\sceDeflt.cpp" />
<ClCompile Include="..\..\Core\HLE\sceDisplay.cpp" />
<ClCompile Include="..\..\Core\HLE\sceDmac.cpp" />
<ClCompile Include="..\..\Core\HLE\sceFont.cpp" />
<ClCompile Include="..\..\Core\HLE\sceG729.cpp" />
<ClCompile Include="..\..\Core\HLE\sceGameUpdate.cpp" />
<ClCompile Include="..\..\Core\HLE\sceGe.cpp" />
<ClCompile Include="..\..\Core\HLE\sceHeap.cpp" />
<ClCompile Include="..\..\Core\HLE\sceHprm.cpp" />
<ClCompile Include="..\..\Core\HLE\sceHttp.cpp" />
<ClCompile Include="..\..\Core\HLE\sceImpose.cpp" />
<ClCompile Include="..\..\Core\HLE\sceIo.cpp" />
<ClCompile Include="..\..\Core\HLE\sceJpeg.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernel.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelAlarm.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelEventFlag.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelInterrupt.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelMbx.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelMemory.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelModule.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelMsgPipe.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelMutex.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelSemaphore.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelThread.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelTime.cpp" />
<ClCompile Include="..\..\Core\HLE\sceKernelVTimer.cpp" />
<ClCompile Include="..\..\Core\HLE\sceMd5.cpp" />
<ClCompile Include="..\..\Core\HLE\sceMp3.cpp" />
<ClCompile Include="..\..\Core\HLE\sceMp4.cpp" />
<ClCompile Include="..\..\Core\HLE\sceMpeg.cpp" />
<ClCompile Include="..\..\Core\HLE\sceMt19937.cpp" />
<ClCompile Include="..\..\Core\HLE\sceNet.cpp" />
<ClCompile Include="..\..\Core\HLE\sceNetAdhoc.cpp" />
<ClCompile Include="..\..\Core\HLE\sceNp.cpp" />
<ClCompile Include="..\..\Core\HLE\sceOpenPSID.cpp" />
<ClCompile Include="..\..\Core\HLE\sceP3da.cpp" />
<ClCompile Include="..\..\Core\HLE\sceParseHttp.cpp" />
<ClCompile Include="..\..\Core\HLE\sceParseUri.cpp" />
<ClCompile Include="..\..\Core\HLE\scePauth.cpp" />
<ClCompile Include="..\..\Core\HLE\scePower.cpp" />
<ClCompile Include="..\..\Core\HLE\scePsmf.cpp" />
<ClCompile Include="..\..\Core\HLE\scePspNpDrm_user.cpp" />
<ClCompile Include="..\..\Core\HLE\sceRtc.cpp" />
<ClCompile Include="..\..\Core\HLE\sceSas.cpp" />
<ClCompile Include="..\..\Core\HLE\sceSfmt19937.cpp" />
<ClCompile Include="..\..\Core\HLE\sceSha256.cpp" />
<ClCompile Include="..\..\Core\HLE\sceSsl.cpp" />
<ClCompile Include="..\..\Core\HLE\sceUmd.cpp" />
<ClCompile Include="..\..\Core\HLE\sceUsb.cpp" />
<ClCompile Include="..\..\Core\HLE\sceUsbGps.cpp" />
<ClCompile Include="..\..\Core\HLE\sceUtility.cpp" />
<ClCompile Include="..\..\Core\HLE\sceVaudio.cpp" />
<ClCompile Include="..\..\Core\HLE\__sceAudio.cpp" />
<ClCompile Include="..\..\Core\Host.cpp" />
<ClCompile Include="..\..\Core\HW\AsyncIOManager.cpp" />
<ClCompile Include="..\..\Core\HW\MediaEngine.cpp" />
<ClCompile Include="..\..\Core\HW\MemoryStick.cpp" />
<ClCompile Include="..\..\Core\HW\MpegDemux.cpp" />
<ClCompile Include="..\..\Core\HW\SasAudio.cpp" />
<ClCompile Include="..\..\Core\HW\SasReverb.cpp" />
<ClCompile Include="..\..\Core\HW\SimpleAudioDec.cpp" />
<ClCompile Include="..\..\Core\HW\StereoResampler.cpp" />
<ClCompile Include="..\..\Core\Loaders.cpp" />
<ClCompile Include="..\..\Core\MemMap.cpp" />
<ClCompile Include="..\..\Core\MemMapFunctions.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmAsm.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompALU.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompBranch.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompLoadStore.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompReplace.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompVFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompVFPUNEON.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmCompVFPUNEONUtil.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmJit.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmRegCache.cpp" />
<ClCompile Include="..\..\Core\MIPS\ARM\ArmRegCacheFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRAsm.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRCompALU.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRCompBranch.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRCompFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRCompLoadStore.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRCompVFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRFrontend.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRInst.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRInterpreter.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRJit.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRPassSimplify.cpp" />
<ClCompile Include="..\..\Core\MIPS\IR\IRRegCache.cpp" />
<ClCompile Include="..\..\Core\MIPS\JitCommon\JitBlockCache.cpp" />
<ClCompile Include="..\..\Core\MIPS\JitCommon\JitCommon.cpp" />
<ClCompile Include="..\..\Core\MIPS\JitCommon\JitState.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPS.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSAnalyst.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSAsm.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSCodeUtils.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSDebugInterface.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSDis.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSDisVFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSInt.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSIntVFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSStackWalk.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSTables.cpp" />
<ClCompile Include="..\..\Core\MIPS\MIPSVFPUUtils.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\Asm.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\CompALU.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\CompBranch.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\CompFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\CompLoadStore.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\CompReplace.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\CompVFPU.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\IRToX86.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\Jit.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\JitSafeMem.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\RegCache.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\RegCacheFPU.cpp" />
<ClCompile Include="..\..\Core\PSPLoaders.cpp" />
<ClCompile Include="..\..\Core\Reporting.cpp" />
<ClCompile Include="..\..\Core\SaveState.cpp" />
<ClCompile Include="..\..\Core\Screenshot.cpp" />
<ClCompile Include="..\..\Core\System.cpp" />
<ClCompile Include="..\..\Core\TextureReplacer.cpp" />
<ClCompile Include="..\..\Core\Util\AudioFormat.cpp" />
<ClCompile Include="..\..\Core\Util\AudioFormatNEON.cpp" />
<ClCompile Include="..\..\Core\Util\BlockAllocator.cpp" />
<ClCompile Include="..\..\Core\Util\DisArm64.cpp" />
<ClCompile Include="..\..\Core\Util\GameManager.cpp" />
<ClCompile Include="..\..\Core\Util\PPGeDraw.cpp" />
<ClCompile Include="..\..\Core\Util\ppge_atlas.cpp" />
<ClCompile Include="..\..\Core\WaveFile.cpp" />
<ClCompile Include="..\..\ext\disarm.cpp" />
<ClCompile Include="..\..\ext\sfmt19937\SFMT.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ext\snappy\snappy-c.cpp" />
<ClCompile Include="..\..\ext\snappy\snappy.cpp" />
<ClCompile Include="..\..\ext\udis86\decode.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ext\udis86\itab.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ext\udis86\syn-att.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ext\udis86\syn-intel.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ext\udis86\syn.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ext\udis86\udis86.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ext\xbrz\xbrz.cpp" />
<ClCompile Include="..\..\ext\xxhash.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CommonUWP\CommonUWP.vcxproj">
<Project>{acb316ca-3ecb-48e5-be0a-91e72d5b0f12}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
#include "pch.h"
+9
View File
@@ -0,0 +1,9 @@
#pragma once
#include "targetver.h"
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
+8
View File
@@ -0,0 +1,8 @@
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>
+431
View File
@@ -0,0 +1,431 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|ARM">
<Configuration>UWP Gold</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|Win32">
<Configuration>UWP Gold</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|x64">
<Configuration>UWP Gold</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{5d271429-c288-4534-98af-94475d940058}</ProjectGuid>
<Keyword>StaticLibrary</Keyword>
<RootNamespace>GPU_UWP</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>../..;../../ext/native;../../Common;../../ext/native/ext;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\GPU\Common\DepalettizeShaderCommon.h" />
<ClInclude Include="..\..\GPU\Common\DrawEngineCommon.h" />
<ClInclude Include="..\..\GPU\Common\FramebufferCommon.h" />
<ClInclude Include="..\..\GPU\Common\GPUDebugInterface.h" />
<ClInclude Include="..\..\GPU\Common\GPUStateUtils.h" />
<ClInclude Include="..\..\GPU\Common\IndexGenerator.h" />
<ClInclude Include="..\..\GPU\Common\PostShader.h" />
<ClInclude Include="..\..\GPU\Common\ShaderCommon.h" />
<ClInclude Include="..\..\GPU\Common\ShaderId.h" />
<ClInclude Include="..\..\GPU\Common\ShaderTranslation.h" />
<ClInclude Include="..\..\GPU\Common\ShaderUniforms.h" />
<ClInclude Include="..\..\GPU\Common\SoftwareLighting.h" />
<ClInclude Include="..\..\GPU\Common\SoftwareTransformCommon.h" />
<ClInclude Include="..\..\GPU\Common\SplineCommon.h" />
<ClInclude Include="..\..\GPU\Common\TextureCacheCommon.h" />
<ClInclude Include="..\..\GPU\Common\TextureDecoder.h" />
<ClInclude Include="..\..\GPU\Common\TextureDecoderNEON.h" />
<ClInclude Include="..\..\GPU\Common\TextureScalerCommon.h" />
<ClInclude Include="..\..\GPU\Common\TransformCommon.h" />
<ClInclude Include="..\..\GPU\Common\VertexDecoderCommon.h" />
<ClInclude Include="..\..\GPU\D3D11\D3D11Util.h" />
<ClInclude Include="..\..\GPU\D3D11\DepalettizeShaderD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\DrawEngineD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\FragmentShaderGeneratorD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\FramebufferManagerD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\GPU_D3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\ShaderManagerD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\StateMappingD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\TextureCacheD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\TextureScalerD3D11.h" />
<ClInclude Include="..\..\GPU\D3D11\VertexShaderGeneratorD3D11.h" />
<ClInclude Include="..\..\GPU\Debugger\Breakpoints.h" />
<ClInclude Include="..\..\GPU\Debugger\Stepping.h" />
<ClInclude Include="..\..\GPU\Directx9\PixelShaderGeneratorDX9.h" />
<ClInclude Include="..\..\GPU\Directx9\VertexShaderGeneratorDX9.h" />
<ClInclude Include="..\..\GPU\GeDisasm.h" />
<ClInclude Include="..\..\GPU\ge_constants.h" />
<ClInclude Include="..\..\GPU\GPU.h" />
<ClInclude Include="..\..\GPU\GPUCommon.h" />
<ClInclude Include="..\..\GPU\GPUInterface.h" />
<ClInclude Include="..\..\GPU\GPUState.h" />
<ClInclude Include="..\..\GPU\Math3D.h" />
<ClInclude Include="..\..\GPU\Software\Clipper.h" />
<ClInclude Include="..\..\GPU\Software\Lighting.h" />
<ClInclude Include="..\..\GPU\Software\Rasterizer.h" />
<ClInclude Include="..\..\GPU\Software\SoftGpu.h" />
<ClInclude Include="..\..\GPU\Software\TransformUnit.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\GPU\Common\DepalettizeShaderCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\DrawEngineCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\FramebufferCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\GPUDebugInterface.cpp" />
<ClCompile Include="..\..\GPU\Common\GPUStateUtils.cpp" />
<ClCompile Include="..\..\GPU\Common\IndexGenerator.cpp" />
<ClCompile Include="..\..\GPU\Common\PostShader.cpp" />
<ClCompile Include="..\..\GPU\Common\ShaderCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\ShaderId.cpp" />
<ClCompile Include="..\..\GPU\Common\ShaderTranslation.cpp" />
<ClCompile Include="..\..\GPU\Common\ShaderUniforms.cpp" />
<ClCompile Include="..\..\GPU\Common\SoftwareTransformCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\SplineCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\TextureCacheCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\TextureDecoder.cpp" />
<ClCompile Include="..\..\GPU\Common\TextureDecoderNEON.cpp" />
<ClCompile Include="..\..\GPU\Common\TextureScalerCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\TransformCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\VertexDecoderArm.cpp" />
<ClCompile Include="..\..\GPU\Common\VertexDecoderArm64.cpp" />
<ClCompile Include="..\..\GPU\Common\VertexDecoderCommon.cpp" />
<ClCompile Include="..\..\GPU\Common\VertexDecoderFake.cpp" />
<ClCompile Include="..\..\GPU\Common\VertexDecoderX86.cpp" />
<ClCompile Include="..\..\GPU\D3D11\D3D11Util.cpp" />
<ClCompile Include="..\..\GPU\D3D11\DepalettizeShaderD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\DrawEngineD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\FragmentShaderGeneratorD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\FramebufferManagerD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\GPU_D3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\ShaderManagerD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\StateMappingD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\StencilBufferD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\TextureCacheD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\TextureScalerD3D11.cpp" />
<ClCompile Include="..\..\GPU\D3D11\VertexShaderGeneratorD3D11.cpp" />
<ClCompile Include="..\..\GPU\Debugger\Breakpoints.cpp" />
<ClCompile Include="..\..\GPU\Debugger\Stepping.cpp" />
<ClCompile Include="..\..\GPU\Directx9\PixelShaderGeneratorDX9.cpp" />
<ClCompile Include="..\..\GPU\Directx9\VertexShaderGeneratorDX9.cpp" />
<ClCompile Include="..\..\GPU\GeDisasm.cpp" />
<ClCompile Include="..\..\GPU\GPU.cpp" />
<ClCompile Include="..\..\GPU\GPUCommon.cpp" />
<ClCompile Include="..\..\GPU\GPUState.cpp" />
<ClCompile Include="..\..\GPU\Math3D.cpp" />
<ClCompile Include="..\..\GPU\Software\Clipper.cpp" />
<ClCompile Include="..\..\GPU\Software\Lighting.cpp" />
<ClCompile Include="..\..\GPU\Software\Rasterizer.cpp" />
<ClCompile Include="..\..\GPU\Software\SoftGpu.cpp" />
<ClCompile Include="..\..\GPU\Software\TransformUnit.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CommonUWP\CommonUWP.vcxproj">
<Project>{acb316ca-3ecb-48e5-be0a-91e72d5b0f12}</Project>
</ProjectReference>
<ProjectReference Include="..\CoreUWP\CoreUWP.vcxproj">
<Project>{40b76674-02de-40ef-889b-fad1489685e7}</Project>
</ProjectReference>
<ProjectReference Include="..\glslang_UWP\glslang_UWP.vcxproj">
<Project>{d326891e-ece4-4b94-b5e7-8aa0a8e8ecbc}</Project>
</ProjectReference>
<ProjectReference Include="..\SPIRVCross_UWP\SPIRVCross_UWP.vcxproj">
<Project>{2b2d16bd-1d37-46af-a3f8-552900951b26}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+291
View File
@@ -0,0 +1,291 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Common">
<UniqueIdentifier>{73b2cfa4-f51e-48f5-a9fd-2c4df203a4f0}</UniqueIdentifier>
</Filter>
<Filter Include="D3D11">
<UniqueIdentifier>{7634891c-a60e-48d4-abdb-d8fe347dfef5}</UniqueIdentifier>
</Filter>
<Filter Include="D3D9">
<UniqueIdentifier>{508714cf-18c6-4a82-b92d-1527d9a100f0}</UniqueIdentifier>
</Filter>
<Filter Include="Software">
<UniqueIdentifier>{15dc3187-4c49-46a7-8027-6ff23564cc22}</UniqueIdentifier>
</Filter>
<Filter Include="Debugger">
<UniqueIdentifier>{b5c82a80-e146-4133-b199-a07a427f04cc}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp" />
<ClCompile Include="..\..\GPU\Common\DepalettizeShaderCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\DrawEngineCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\FramebufferCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\GPUDebugInterface.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\GPUStateUtils.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\IndexGenerator.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\PostShader.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\ShaderId.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\ShaderTranslation.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\ShaderUniforms.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\SoftwareTransformCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\SplineCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\TextureCacheCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\TextureDecoder.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\TextureDecoderNEON.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\TextureScalerCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\TransformCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\VertexDecoderArm.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\VertexDecoderArm64.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\VertexDecoderCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\VertexDecoderFake.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\VertexDecoderX86.cpp">
<Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\D3D11Util.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\DepalettizeShaderD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\DrawEngineD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\FragmentShaderGeneratorD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\FramebufferManagerD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\GPU_D3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\ShaderManagerD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\StateMappingD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\StencilBufferD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\TextureCacheD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\TextureScalerD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\D3D11\VertexShaderGeneratorD3D11.cpp">
<Filter>D3D11</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Directx9\PixelShaderGeneratorDX9.cpp">
<Filter>D3D9</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Directx9\VertexShaderGeneratorDX9.cpp">
<Filter>D3D9</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\GeDisasm.cpp" />
<ClCompile Include="..\..\GPU\GPU.cpp" />
<ClCompile Include="..\..\GPU\GPUCommon.cpp" />
<ClCompile Include="..\..\GPU\GPUState.cpp" />
<ClCompile Include="..\..\GPU\Math3D.cpp" />
<ClCompile Include="..\..\GPU\Software\Clipper.cpp">
<Filter>Software</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Software\Lighting.cpp">
<Filter>Software</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Software\Rasterizer.cpp">
<Filter>Software</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Software\SoftGpu.cpp">
<Filter>Software</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Software\TransformUnit.cpp">
<Filter>Software</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Debugger\Breakpoints.cpp">
<Filter>Debugger</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Debugger\Stepping.cpp">
<Filter>Debugger</Filter>
</ClCompile>
<ClCompile Include="..\..\GPU\Common\ShaderCommon.cpp">
<Filter>Common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="..\..\GPU\Common\DepalettizeShaderCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\DrawEngineCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\FramebufferCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\GPUDebugInterface.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\GPUStateUtils.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\IndexGenerator.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\PostShader.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\ShaderCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\ShaderId.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\ShaderTranslation.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\ShaderUniforms.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\SoftwareLighting.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\SoftwareTransformCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\SplineCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\TextureCacheCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\TextureDecoder.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\TextureDecoderNEON.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\TextureScalerCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\TransformCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Common\VertexDecoderCommon.h">
<Filter>Common</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\D3D11Util.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\DepalettizeShaderD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\DrawEngineD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\FragmentShaderGeneratorD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\FramebufferManagerD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\GPU_D3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\ShaderManagerD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\StateMappingD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\TextureCacheD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\TextureScalerD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\D3D11\VertexShaderGeneratorD3D11.h">
<Filter>D3D11</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Directx9\PixelShaderGeneratorDX9.h">
<Filter>D3D9</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Directx9\VertexShaderGeneratorDX9.h">
<Filter>D3D9</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\ge_constants.h" />
<ClInclude Include="..\..\GPU\GeDisasm.h" />
<ClInclude Include="..\..\GPU\GPU.h" />
<ClInclude Include="..\..\GPU\GPUCommon.h" />
<ClInclude Include="..\..\GPU\GPUInterface.h" />
<ClInclude Include="..\..\GPU\GPUState.h" />
<ClInclude Include="..\..\GPU\Math3D.h" />
<ClInclude Include="..\..\GPU\Software\Clipper.h">
<Filter>Software</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Software\Lighting.h">
<Filter>Software</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Software\Rasterizer.h">
<Filter>Software</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Software\SoftGpu.h">
<Filter>Software</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Software\TransformUnit.h">
<Filter>Software</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Debugger\Breakpoints.h">
<Filter>Debugger</Filter>
</ClInclude>
<ClInclude Include="..\..\GPU\Debugger\Stepping.h">
<Filter>Debugger</Filter>
</ClInclude>
</ItemGroup>
</Project>
+1
View File
@@ -0,0 +1 @@
#include "pch.h"
+9
View File
@@ -0,0 +1,9 @@
#pragma once
#include "targetver.h"
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
+8
View File
@@ -0,0 +1,8 @@
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>
+110
View File
@@ -0,0 +1,110 @@
#include "pch.h"
#include "NKCodeFromWindowsSystem.h"
using namespace Windows::System;
std::map<Windows::System::VirtualKey, int> virtualKeyCodeToNKCode{
{ VirtualKey::A, NKCODE_A },
{ VirtualKey::B, NKCODE_B },
{ VirtualKey::C, NKCODE_C },
{ VirtualKey::D, NKCODE_D },
{ VirtualKey::E, NKCODE_E },
{ VirtualKey::F, NKCODE_F },
{ VirtualKey::G, NKCODE_G },
{ VirtualKey::H, NKCODE_H },
{ VirtualKey::I, NKCODE_I },
{ VirtualKey::J, NKCODE_J },
{ VirtualKey::K, NKCODE_K },
{ VirtualKey::L, NKCODE_L },
{ VirtualKey::M, NKCODE_M },
{ VirtualKey::N, NKCODE_N },
{ VirtualKey::O, NKCODE_O },
{ VirtualKey::P, NKCODE_P },
{ VirtualKey::Q, NKCODE_Q },
{ VirtualKey::R, NKCODE_R },
{ VirtualKey::S, NKCODE_S },
{ VirtualKey::T, NKCODE_T },
{ VirtualKey::U, NKCODE_U },
{ VirtualKey::V, NKCODE_V },
{ VirtualKey::W, NKCODE_W },
{ VirtualKey::X, NKCODE_X },
{ VirtualKey::Y, NKCODE_Y },
{ VirtualKey::Z, NKCODE_Z },
{ VirtualKey::Number0, NKCODE_0 },
{ VirtualKey::Number1, NKCODE_1 },
{ VirtualKey::Number2, NKCODE_2 },
{ VirtualKey::Number3, NKCODE_3 },
{ VirtualKey::Number4, NKCODE_4 },
{ VirtualKey::Number5, NKCODE_5 },
{ VirtualKey::Number6, NKCODE_6 },
{ VirtualKey::Number7, NKCODE_7 },
{ VirtualKey::Number8, NKCODE_8 },
{ VirtualKey::Number9, NKCODE_9 },
{ VirtualKey::Decimal, NKCODE_PERIOD },
// { VirtualKey::Comma, NKCODE_COMMA },
{ VirtualKey::NumberPad0, NKCODE_NUMPAD_0 },
{ VirtualKey::NumberPad1, NKCODE_NUMPAD_1 },
{ VirtualKey::NumberPad2, NKCODE_NUMPAD_2 },
{ VirtualKey::NumberPad3, NKCODE_NUMPAD_3 },
{ VirtualKey::NumberPad4, NKCODE_NUMPAD_4 },
{ VirtualKey::NumberPad5, NKCODE_NUMPAD_5 },
{ VirtualKey::NumberPad6, NKCODE_NUMPAD_6 },
{ VirtualKey::NumberPad7, NKCODE_NUMPAD_7 },
{ VirtualKey::NumberPad8, NKCODE_NUMPAD_8 },
{ VirtualKey::NumberPad9, NKCODE_NUMPAD_9 },
{ VirtualKey::Decimal, NKCODE_NUMPAD_DOT },
{ VirtualKey::Divide, NKCODE_NUMPAD_DIVIDE },
{ VirtualKey::Multiply, NKCODE_NUMPAD_MULTIPLY },
{ VirtualKey::Subtract, NKCODE_NUMPAD_SUBTRACT },
{ VirtualKey::Add, NKCODE_NUMPAD_ADD },
{ VirtualKey::Separator, NKCODE_NUMPAD_COMMA },
{ VirtualKey::LeftControl, NKCODE_CTRL_LEFT },
{ VirtualKey::RightControl, NKCODE_CTRL_RIGHT },
{ VirtualKey::LeftShift, NKCODE_SHIFT_LEFT },
{ VirtualKey::RightShift, NKCODE_SHIFT_RIGHT },
//{ VK_LMENU, NKCODE_ALT_LEFT },
//{ VK_RMENU, NKCODE_ALT_RIGHT },
{ VirtualKey::GoBack, NKCODE_BACK },
{ VirtualKey::Space, NKCODE_SPACE },
{ VirtualKey::Escape, NKCODE_ESCAPE },
{ VirtualKey::Up, NKCODE_DPAD_UP },
{ VirtualKey::Insert, NKCODE_INSERT },
{ VirtualKey::Home, NKCODE_MOVE_HOME },
{ VirtualKey::PageUp, NKCODE_PAGE_UP },
{ VirtualKey::PageDown, NKCODE_PAGE_DOWN },
{ VirtualKey::Delete, NKCODE_FORWARD_DEL },
{ VirtualKey::End, NKCODE_MOVE_END },
{ VirtualKey::Tab, NKCODE_TAB },
{ VirtualKey::Down, NKCODE_DPAD_DOWN },
{ VirtualKey::Left, NKCODE_DPAD_LEFT },
{ VirtualKey::Right, NKCODE_DPAD_RIGHT },
{ VirtualKey::CapitalLock, NKCODE_CAPS_LOCK },
{ VirtualKey::Clear, NKCODE_CLEAR },
// { VirtualKey::, NKCODE_SYSRQ },
{ VirtualKey::Scroll, NKCODE_SCROLL_LOCK },
// { , NKCODE_SEMICOLON },
// { VK_OEM_2, NKCODE_SLASH },
// { VK_OEM_3, NKCODE_GRAVE },
// { VK_OEM_4, NKCODE_LEFT_BRACKET },
// { VK_OEM_5, NKCODE_BACKSLASH },
// { VK_OEM_6, NKCODE_RIGHT_BRACKET },
// { VK_OEM_7, NKCODE_APOSTROPHE },
{ VirtualKey::Enter, NKCODE_ENTER },
// { VK_APPS, NKCODE_MENU }, // Context menu key, let's call this "menu".
{ VirtualKey::Pause, NKCODE_BREAK },
{ VirtualKey::F1, NKCODE_F1 },
{ VirtualKey::F2, NKCODE_F2 },
{ VirtualKey::F3, NKCODE_F3 },
{ VirtualKey::F4, NKCODE_F4 },
{ VirtualKey::F5, NKCODE_F5 },
{ VirtualKey::F6, NKCODE_F6 },
{ VirtualKey::F7, NKCODE_F7 },
{ VirtualKey::F8, NKCODE_F8 },
{ VirtualKey::F9, NKCODE_F9 },
{ VirtualKey::F10, NKCODE_F10 },
{ VirtualKey::F11, NKCODE_F11 },
{ VirtualKey::F12, NKCODE_F12 },
//{ VK_OEM_102, NKCODE_EXT_PIPE },
//{ VK_LBUTTON, NKCODE_EXT_MOUSEBUTTON_1 },
//{ VK_RBUTTON, NKCODE_EXT_MOUSEBUTTON_2 },;
};
+7
View File
@@ -0,0 +1,7 @@
#pragma once
#include <map>
#include "input/keycodes.h"
extern std::map<Windows::System::VirtualKey, int> virtualKeyCodeToNKCode;
File diff suppressed because it is too large. Load diff
+729
View File
@@ -0,0 +1,729 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="base">
<UniqueIdentifier>{903dae00-880d-4c12-bd10-29fca750376f}</UniqueIdentifier>
</Filter>
<Filter Include="thin3d">
<UniqueIdentifier>{98343696-3517-451a-9b47-94d462263e3e}</UniqueIdentifier>
</Filter>
<Filter Include="thread">
<UniqueIdentifier>{63177c91-8ebd-4e87-ad4e-e6b8b52879c8}</UniqueIdentifier>
</Filter>
<Filter Include="util">
<UniqueIdentifier>{58d2f6cf-2448-4095-8479-9fe5d765b573}</UniqueIdentifier>
</Filter>
<Filter Include="gfx">
<UniqueIdentifier>{8a254b8c-46f2-4ff1-bc53-deea7e614276}</UniqueIdentifier>
</Filter>
<Filter Include="file">
<UniqueIdentifier>{244992ec-8dcf-49f4-b63c-cae6ac437c58}</UniqueIdentifier>
</Filter>
<Filter Include="input">
<UniqueIdentifier>{6f098c49-cf71-466b-9b1e-c4287681ab26}</UniqueIdentifier>
</Filter>
<Filter Include="ui">
<UniqueIdentifier>{9d02a269-6cdd-4726-ab58-34c012e37d37}</UniqueIdentifier>
</Filter>
<Filter Include="math">
<UniqueIdentifier>{8292cb5c-02c9-46a4-a8d5-ea5e8f362688}</UniqueIdentifier>
</Filter>
<Filter Include="net">
<UniqueIdentifier>{d8c0dd74-7ad2-440a-a3e0-5dbf3435a2fc}</UniqueIdentifier>
</Filter>
<Filter Include="i18n">
<UniqueIdentifier>{a522f449-7873-4af7-908e-7cc91eb8bfc0}</UniqueIdentifier>
</Filter>
<Filter Include="ext">
<UniqueIdentifier>{2be24387-0b6a-4253-97fa-b8b6f75a8a4c}</UniqueIdentifier>
</Filter>
<Filter Include="ext\vjson">
<UniqueIdentifier>{7fdd3320-a8e0-42ed-b08b-2d86ba2ff414}</UniqueIdentifier>
</Filter>
<Filter Include="ext\libzip">
<UniqueIdentifier>{1a486fc4-bac0-4b33-9139-262272690c74}</UniqueIdentifier>
</Filter>
<Filter Include="ext\libpng17">
<UniqueIdentifier>{f3b2701a-3ddc-4604-a867-2ee9a0600dab}</UniqueIdentifier>
</Filter>
<Filter Include="ext\jpge">
<UniqueIdentifier>{34445680-c1be-4aec-a716-1e118ef48906}</UniqueIdentifier>
</Filter>
<Filter Include="image">
<UniqueIdentifier>{96ac6deb-ad00-4ee4-9f0d-515d78d1886b}</UniqueIdentifier>
</Filter>
<Filter Include="ext\cityhash">
<UniqueIdentifier>{3ffe0470-9652-4d89-a3d1-7eb989d266ab}</UniqueIdentifier>
</Filter>
<Filter Include="data">
<UniqueIdentifier>{4d23e7d3-0b9b-4dbe-95df-6ab250782a66}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp" />
<ClCompile Include="..\..\ext\native\base\backtrace.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\base\buffer.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\base\colorutil.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\base\compat.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\base\display.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\base\stringutil.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\base\timeutil.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\thin3d\thin3d.cpp">
<Filter>thin3d</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\thin3d\thin3d_d3d11.cpp">
<Filter>thin3d</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\thread\executor.cpp">
<Filter>thread</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\thread\prioritizedworkqueue.cpp">
<Filter>thread</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\thread\threadpool.cpp">
<Filter>thread</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\thread\threadutil.cpp">
<Filter>thread</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\util\hash\hash.cpp">
<Filter>util</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\util\text\parsers.cpp">
<Filter>util</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\util\text\utf8.cpp">
<Filter>util</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\util\text\wrap_text.cpp">
<Filter>util</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\gfx\texture_atlas.cpp">
<Filter>gfx</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\gfx_es2\draw_buffer.cpp">
<Filter>gfx</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\file\chunk_file.cpp">
<Filter>file</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\file\fd_util.cpp">
<Filter>file</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\file\file_util.cpp">
<Filter>file</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\file\free.cpp">
<Filter>file</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\file\ini_file.cpp">
<Filter>file</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\file\path.cpp">
<Filter>file</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\file\zip_read.cpp">
<Filter>file</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\input\gesture_detector.cpp">
<Filter>input</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\input\input_state.cpp">
<Filter>input</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ui\screen.cpp">
<Filter>ui</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ui\ui.cpp">
<Filter>ui</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ui\ui_context.cpp">
<Filter>ui</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ui\ui_screen.cpp">
<Filter>ui</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ui\view.cpp">
<Filter>ui</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ui\viewgroup.cpp">
<Filter>ui</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\lin\matrix4x4.cpp">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\lin\plane.cpp">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\lin\quat.cpp">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\lin\vec3.cpp">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\curves.cpp">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\expression_parser.cpp">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\math_util.cpp">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\fast\fast_math.c">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\fast\fast_matrix.c">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\math\fast\fast_matrix_sse.c">
<Filter>math</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\net\http_client.cpp">
<Filter>net</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\net\http_headers.cpp">
<Filter>net</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\net\http_server.cpp">
<Filter>net</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\net\resolve.cpp">
<Filter>net</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\net\sinks.cpp">
<Filter>net</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\net\url.cpp">
<Filter>net</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\i18n\i18n.cpp">
<Filter>i18n</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\vjson\block_allocator.cpp">
<Filter>ext\vjson</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\vjson\json.cpp">
<Filter>ext\vjson</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\mkstemp.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_add.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_add_dir.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_close.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_delete.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_dirent.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_entry_free.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_entry_new.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_err_str.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_error.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_error_clear.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_error_get.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_error_get_sys_type.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_error_strerror.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_error_to_str.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_fclose.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_file_error_clear.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_file_error_get.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_file_get_offset.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_file_strerror.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_filerange_crc.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_fopen.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_fopen_index.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_fread.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_free.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_get_archive_comment.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_get_archive_flag.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_get_file_comment.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_get_name.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_get_num_files.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_memdup.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_name_locate.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_new.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_open.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_rename.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_replace.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_set_archive_comment.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_set_archive_flag.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_set_file_comment.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_set_name.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_source_buffer.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_source_file.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_source_filep.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_source_free.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_source_function.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_source_zip.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_stat.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_stat_index.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_stat_init.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_strerror.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_unchange.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_unchange_all.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_unchange_archive.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libzip\zip_unchange_data.c">
<Filter>ext\libzip</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\png.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngerror.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngget.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngmem.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngpread.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngread.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngrio.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngrtran.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngrutil.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngset.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngtrans.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngwio.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngwrite.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngwtran.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\libpng17\pngwutil.c">
<Filter>ext\libpng17</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\jpge\jpgd.cpp">
<Filter>ext\jpge</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\jpge\jpge.cpp">
<Filter>ext\jpge</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\gfx_es2\draw_text.cpp">
<Filter>gfx</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\image\png_load.cpp">
<Filter>image</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\image\zim_load.cpp">
<Filter>image</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\ext\cityhash\city.cpp">
<Filter>ext\cityhash</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\gfx_es2\gpu_features.cpp">
<Filter>gfx</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\data\compression.cpp">
<Filter>data</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\gfx\gl_lost_manager.cpp">
<Filter>gfx</Filter>
</ClCompile>
<ClCompile Include="..\..\ext\native\base\logging.cpp">
<Filter>base</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="..\..\ext\native\base\arch.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\backtrace.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\basictypes.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\buffer.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\colorutil.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\compat.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\display.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\linked_ptr.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\logging.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\NativeApp.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\NKCodeFromQt.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\NKCodeFromSDL.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\stringutil.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\base\timeutil.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\thin3d\thin3d.h">
<Filter>thin3d</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\thread\executor.h">
<Filter>thread</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\thread\prioritizedworkqueue.h">
<Filter>thread</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\thread\threadpool.h">
<Filter>thread</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\thread\threadutil.h">
<Filter>thread</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\const_map.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\hash\hash.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\random\rng.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\text\parsers.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\text\shiftjis.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\text\utf8.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\text\utf16.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\util\text\wrap_text.h">
<Filter>util</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\gfx\texture_atlas.h">
<Filter>gfx</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\gfx_es2\draw_buffer.h">
<Filter>gfx</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\chunk_file.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\fd_util.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\file_util.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\free.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\ini_file.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\path.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\vfs.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\file\zip_read.h">
<Filter>file</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\input\gesture_detector.h">
<Filter>input</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\input\input_state.h">
<Filter>input</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\input\keycodes.h">
<Filter>input</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ui\screen.h">
<Filter>ui</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ui\ui.h">
<Filter>ui</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ui\ui_context.h">
<Filter>ui</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ui\ui_screen.h">
<Filter>ui</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ui\view.h">
<Filter>ui</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ui\viewgroup.h">
<Filter>ui</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\lin\matrix4x4.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\lin\plane.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\lin\quat.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\lin\ray.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\lin\vec3.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\curves.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\dataconv.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\expression_parser.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\geom2d.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\math_util.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\fast\fast_math.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\math\fast\fast_matrix.h">
<Filter>math</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\net\http_client.h">
<Filter>net</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\net\http_headers.h">
<Filter>net</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\net\http_server.h">
<Filter>net</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\net\resolve.h">
<Filter>net</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\net\sinks.h">
<Filter>net</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\net\url.h">
<Filter>net</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\i18n\i18n.h">
<Filter>i18n</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\vjson\block_allocator.h">
<Filter>ext\vjson</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\vjson\json.h">
<Filter>ext\vjson</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libzip\config.h">
<Filter>ext\libzip</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libzip\zip.h">
<Filter>ext\libzip</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libzip\zipint.h">
<Filter>ext\libzip</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libpng17\png.h">
<Filter>ext\libpng17</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libpng17\pngconf.h">
<Filter>ext\libpng17</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libpng17\pngdebug.h">
<Filter>ext\libpng17</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libpng17\pnginfo.h">
<Filter>ext\libpng17</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libpng17\pnglibconf.h">
<Filter>ext\libpng17</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libpng17\pngpriv.h">
<Filter>ext\libpng17</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\libpng17\pngstruct.h">
<Filter>ext\libpng17</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\jpge\jpgd.h">
<Filter>ext\jpge</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\jpge\jpge.h">
<Filter>ext\jpge</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\gfx_es2\draw_text.h">
<Filter>gfx</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\image\png_load.h">
<Filter>image</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\image\zim_load.h">
<Filter>image</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\cityhash\city.h">
<Filter>ext\cityhash</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\ext\cityhash\citycrc.h">
<Filter>ext\cityhash</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\gfx_es2\gpu_features.h">
<Filter>gfx</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\data\compression.h">
<Filter>data</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\data\listable.h">
<Filter>data</Filter>
</ClInclude>
<ClInclude Include="..\..\ext\native\gfx\gl_lost_manager.h">
<Filter>gfx</Filter>
</ClInclude>
</ItemGroup>
</Project>
+1
View File
@@ -0,0 +1 @@
#include "pch.h"
+9
View File
@@ -0,0 +1,9 @@
#pragma once
#include "targetver.h"
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
+8
View File
@@ -0,0 +1,8 @@
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>
+309
View File
@@ -0,0 +1,309 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonUWP", "CommonUWP\CommonUWP.vcxproj", "{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CoreUWP", "CoreUWP\CoreUWP.vcxproj", "{40B76674-02DE-40EF-889B-FAD1489685E7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GPU_UWP", "GPU_UWP\GPU_UWP.vcxproj", "{5D271429-C288-4534-98AF-94475D940058}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NativeUWP", "NativeUWP\NativeUWP.vcxproj", "{935028AF-B850-4AD7-A00E-7BA84FB97D05}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UI_UWP", "UI_UWP\UI_UWP.vcxproj", "{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libkirk_UWP", "libkirk_UWP\libkirk_UWP.vcxproj", "{2F911C05-B341-4291-8BF5-09EDECBDD5F5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib_UWP", "zlib_UWP\zlib_UWP.vcxproj", "{DDF90203-0AAE-4F38-B589-2E9637658CE6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPSSPP_UWP", "UWP.vcxproj", "{01D7D581-09A3-4A26-94BD-A7C529B29329}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glslang_UWP", "glslang_UWP\glslang_UWP.vcxproj", "{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRVCross_UWP", "SPIRVCross_UWP\SPIRVCross_UWP.vcxproj", "{2B2D16BD-1D37-46AF-A3F8-552900951B26}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|ARM = Release|ARM
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Tests|ARM = Tests|ARM
Tests|Win32 = Tests|Win32
Tests|x64 = Tests|x64
UWP Gold|ARM = UWP Gold|ARM
UWP Gold|Win32 = UWP Gold|Win32
UWP Gold|x64 = UWP Gold|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|ARM.ActiveCfg = Debug|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|ARM.Build.0 = Debug|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|Win32.ActiveCfg = Debug|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|Win32.Build.0 = Debug|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|x64.ActiveCfg = Debug|x64
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|x64.Build.0 = Debug|x64
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Release|ARM.ActiveCfg = Release|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Release|ARM.Build.0 = Release|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Release|Win32.ActiveCfg = Release|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Release|Win32.Build.0 = Release|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Release|x64.ActiveCfg = Release|x64
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Release|x64.Build.0 = Release|x64
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Tests|ARM.ActiveCfg = Release|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Tests|ARM.Build.0 = Release|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Tests|Win32.ActiveCfg = Release|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Tests|Win32.Build.0 = Release|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Tests|x64.ActiveCfg = Release|x64
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Tests|x64.Build.0 = Release|x64
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.UWP Gold|x64.Build.0 = UWP Gold|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.Debug|ARM.ActiveCfg = Debug|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.Debug|ARM.Build.0 = Debug|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.Debug|Win32.ActiveCfg = Debug|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.Debug|Win32.Build.0 = Debug|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.Debug|x64.ActiveCfg = Debug|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.Debug|x64.Build.0 = Debug|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.Release|ARM.ActiveCfg = Release|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.Release|ARM.Build.0 = Release|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.Release|Win32.ActiveCfg = Release|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.Release|Win32.Build.0 = Release|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.Release|x64.ActiveCfg = Release|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.Release|x64.Build.0 = Release|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.Tests|ARM.ActiveCfg = Release|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.Tests|ARM.Build.0 = Release|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.Tests|Win32.ActiveCfg = Release|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.Tests|Win32.Build.0 = Release|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.Tests|x64.ActiveCfg = Release|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.Tests|x64.Build.0 = Release|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{40B76674-02DE-40EF-889B-FAD1489685E7}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{40B76674-02DE-40EF-889B-FAD1489685E7}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{40B76674-02DE-40EF-889B-FAD1489685E7}.UWP Gold|x64.Build.0 = UWP Gold|x64
{5D271429-C288-4534-98AF-94475D940058}.Debug|ARM.ActiveCfg = Debug|ARM
{5D271429-C288-4534-98AF-94475D940058}.Debug|ARM.Build.0 = Debug|ARM
{5D271429-C288-4534-98AF-94475D940058}.Debug|Win32.ActiveCfg = Debug|Win32
{5D271429-C288-4534-98AF-94475D940058}.Debug|Win32.Build.0 = Debug|Win32
{5D271429-C288-4534-98AF-94475D940058}.Debug|x64.ActiveCfg = Debug|x64
{5D271429-C288-4534-98AF-94475D940058}.Debug|x64.Build.0 = Debug|x64
{5D271429-C288-4534-98AF-94475D940058}.Release|ARM.ActiveCfg = Release|ARM
{5D271429-C288-4534-98AF-94475D940058}.Release|ARM.Build.0 = Release|ARM
{5D271429-C288-4534-98AF-94475D940058}.Release|Win32.ActiveCfg = Release|Win32
{5D271429-C288-4534-98AF-94475D940058}.Release|Win32.Build.0 = Release|Win32
{5D271429-C288-4534-98AF-94475D940058}.Release|x64.ActiveCfg = Release|x64
{5D271429-C288-4534-98AF-94475D940058}.Release|x64.Build.0 = Release|x64
{5D271429-C288-4534-98AF-94475D940058}.Tests|ARM.ActiveCfg = Release|ARM
{5D271429-C288-4534-98AF-94475D940058}.Tests|ARM.Build.0 = Release|ARM
{5D271429-C288-4534-98AF-94475D940058}.Tests|Win32.ActiveCfg = Release|Win32
{5D271429-C288-4534-98AF-94475D940058}.Tests|Win32.Build.0 = Release|Win32
{5D271429-C288-4534-98AF-94475D940058}.Tests|x64.ActiveCfg = Release|x64
{5D271429-C288-4534-98AF-94475D940058}.Tests|x64.Build.0 = Release|x64
{5D271429-C288-4534-98AF-94475D940058}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{5D271429-C288-4534-98AF-94475D940058}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{5D271429-C288-4534-98AF-94475D940058}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{5D271429-C288-4534-98AF-94475D940058}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{5D271429-C288-4534-98AF-94475D940058}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{5D271429-C288-4534-98AF-94475D940058}.UWP Gold|x64.Build.0 = UWP Gold|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|ARM.ActiveCfg = Debug|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|ARM.Build.0 = Debug|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|Win32.ActiveCfg = Debug|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|Win32.Build.0 = Debug|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|x64.ActiveCfg = Debug|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|x64.Build.0 = Debug|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|ARM.ActiveCfg = Release|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|ARM.Build.0 = Release|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|Win32.ActiveCfg = Release|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|Win32.Build.0 = Release|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|x64.ActiveCfg = Release|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|x64.Build.0 = Release|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Tests|ARM.ActiveCfg = Release|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Tests|ARM.Build.0 = Release|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Tests|Win32.ActiveCfg = Release|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Tests|Win32.Build.0 = Release|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Tests|x64.ActiveCfg = Release|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.Tests|x64.Build.0 = Release|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|x64.Build.0 = UWP Gold|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|ARM.ActiveCfg = Debug|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|ARM.Build.0 = Debug|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|Win32.ActiveCfg = Debug|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|Win32.Build.0 = Debug|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|x64.ActiveCfg = Debug|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|x64.Build.0 = Debug|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Release|ARM.ActiveCfg = Release|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Release|ARM.Build.0 = Release|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Release|Win32.ActiveCfg = Release|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Release|Win32.Build.0 = Release|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Release|x64.ActiveCfg = Release|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Release|x64.Build.0 = Release|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Tests|ARM.ActiveCfg = Release|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Tests|ARM.Build.0 = Release|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Tests|Win32.ActiveCfg = Release|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Tests|Win32.Build.0 = Release|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Tests|x64.ActiveCfg = Release|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Tests|x64.Build.0 = Release|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.UWP Gold|x64.Build.0 = UWP Gold|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Debug|ARM.ActiveCfg = Debug|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Debug|ARM.Build.0 = Debug|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Debug|Win32.ActiveCfg = Debug|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Debug|Win32.Build.0 = Debug|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Debug|x64.ActiveCfg = Debug|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Debug|x64.Build.0 = Debug|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Release|ARM.ActiveCfg = Release|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Release|ARM.Build.0 = Release|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Release|Win32.ActiveCfg = Release|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Release|Win32.Build.0 = Release|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Release|x64.ActiveCfg = Release|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Release|x64.Build.0 = Release|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Tests|ARM.ActiveCfg = Release|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Tests|ARM.Build.0 = Release|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Tests|Win32.ActiveCfg = Release|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Tests|Win32.Build.0 = Release|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Tests|x64.ActiveCfg = Release|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.Tests|x64.Build.0 = Release|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{2F911C05-B341-4291-8BF5-09EDECBDD5F5}.UWP Gold|x64.Build.0 = UWP Gold|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Debug|ARM.ActiveCfg = Debug|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Debug|ARM.Build.0 = Debug|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Debug|Win32.ActiveCfg = Debug|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Debug|Win32.Build.0 = Debug|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Debug|x64.ActiveCfg = Debug|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Debug|x64.Build.0 = Debug|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Release|ARM.ActiveCfg = Release|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Release|ARM.Build.0 = Release|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Release|Win32.ActiveCfg = Release|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Release|Win32.Build.0 = Release|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Release|x64.ActiveCfg = Release|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Release|x64.Build.0 = Release|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Tests|ARM.ActiveCfg = Release|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Tests|ARM.Build.0 = Release|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Tests|Win32.ActiveCfg = Release|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Tests|Win32.Build.0 = Release|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Tests|x64.ActiveCfg = Release|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.Tests|x64.Build.0 = Release|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|x64.Build.0 = UWP Gold|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.ActiveCfg = Debug|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.Build.0 = Debug|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.Deploy.0 = Debug|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.ActiveCfg = Debug|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.Build.0 = Debug|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.Deploy.0 = Debug|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.ActiveCfg = Debug|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.Build.0 = Debug|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.Deploy.0 = Debug|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.ActiveCfg = Release|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.Build.0 = Release|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.Deploy.0 = Release|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.ActiveCfg = Release|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.Build.0 = Release|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.Deploy.0 = Release|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.ActiveCfg = Release|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.Build.0 = Release|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.Deploy.0 = Release|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|ARM.ActiveCfg = Release|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|ARM.Build.0 = Release|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|ARM.Deploy.0 = Release|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|Win32.ActiveCfg = Release|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|Win32.Build.0 = Release|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|Win32.Deploy.0 = Release|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|x64.ActiveCfg = Release|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|x64.Build.0 = Release|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.Tests|x64.Deploy.0 = Release|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.Deploy.0 = UWP Gold|ARM
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.Deploy.0 = UWP Gold|Win32
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.Build.0 = UWP Gold|x64
{01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.Deploy.0 = UWP Gold|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|ARM.ActiveCfg = Debug|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|ARM.Build.0 = Debug|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|Win32.ActiveCfg = Debug|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|Win32.Build.0 = Debug|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|x64.ActiveCfg = Debug|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|x64.Build.0 = Debug|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Release|ARM.ActiveCfg = Release|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Release|ARM.Build.0 = Release|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Release|Win32.ActiveCfg = Release|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Release|Win32.Build.0 = Release|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Release|x64.ActiveCfg = Release|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Release|x64.Build.0 = Release|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Tests|ARM.ActiveCfg = Release|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Tests|ARM.Build.0 = Release|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Tests|Win32.ActiveCfg = Release|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Tests|Win32.Build.0 = Release|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Tests|x64.ActiveCfg = Release|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Tests|x64.Build.0 = Release|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.UWP Gold|x64.Build.0 = UWP Gold|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Debug|ARM.ActiveCfg = Debug|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Debug|ARM.Build.0 = Debug|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Debug|Win32.ActiveCfg = Debug|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Debug|Win32.Build.0 = Debug|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Debug|x64.ActiveCfg = Debug|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Debug|x64.Build.0 = Debug|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Release|ARM.ActiveCfg = Release|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Release|ARM.Build.0 = Release|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Release|Win32.ActiveCfg = Release|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Release|Win32.Build.0 = Release|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Release|x64.ActiveCfg = Release|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Release|x64.Build.0 = Release|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Tests|ARM.ActiveCfg = Release|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Tests|ARM.Build.0 = Release|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Tests|Win32.ActiveCfg = Release|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Tests|Win32.Build.0 = Release|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Tests|x64.ActiveCfg = Release|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.Tests|x64.Build.0 = Release|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.UWP Gold|ARM.Build.0 = UWP Gold|ARM
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.UWP Gold|Win32.Build.0 = UWP Gold|Win32
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.UWP Gold|x64.ActiveCfg = UWP Gold|x64
{2B2D16BD-1D37-46AF-A3F8-552900951B26}.UWP Gold|x64.Build.0 = UWP Gold|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{40B76674-02DE-40EF-889B-FAD1489685E7} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{5D271429-C288-4534-98AF-94475D940058} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{935028AF-B850-4AD7-A00E-7BA84FB97D05} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{5FAC15BD-7397-4512-99D5-66CDC03AF5B7} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{2F911C05-B341-4291-8BF5-09EDECBDD5F5} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{DDF90203-0AAE-4F38-B589-2E9637658CE6} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{01D7D581-09A3-4A26-94BD-A7C529B29329} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
{2B2D16BD-1D37-46AF-A3F8-552900951B26} = {13ED48E6-7BC8-474F-8A8D-195B57921353}
EndGlobalSection
EndGlobal
+455
View File
@@ -0,0 +1,455 @@
#include "pch.h"
#include "PPSSPP_UWPMain.h"
#include <mutex>
#include "base/basictypes.h"
#include "Common/FileUtil.h"
#include "Common/Log.h"
#include "Common/LogManager.h"
#include "Core/System.h"
#include "Core/Loaders.h"
#include "base/NativeApp.h"
#include "base/timeutil.h"
#include "input/input_state.h"
#include "file/vfs.h"
#include "file/zip_read.h"
#include "file/file_util.h"
#include "net/http_client.h"
#include "net/resolve.h"
#include "base/display.h"
#include "thread/threadutil.h"
#include "util/text/utf8.h"
#include "Common/DirectXHelper.h"
#include "NKCodeFromWindowsSystem.h"
#include "XAudioSoundStream.h"
#include "UWPHost.h"
#include "UWPUtil.h"
#include "StorageFileLoader.h"
#include "App.h"
using namespace UWP;
using namespace Windows::Foundation;
using namespace Windows::Storage;
using namespace Windows::Storage::Streams;
using namespace Windows::System::Threading;
using namespace Windows::ApplicationModel::DataTransfer;
using namespace Concurrency;
// UGLY!
PPSSPP_UWPMain *g_main;
extern WindowsAudioBackend *winAudioBackend;
// TODO: Use Microsoft::WRL::ComPtr<> for D3D11 objects?
// TODO: See https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WindowsAudioSession for WASAPI with UWP
// TODO: Low latency input: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/LowLatencyInput/cpp
// Loads and initializes application assets when the application is loaded.
PPSSPP_UWPMain::PPSSPP_UWPMain(App ^app, const std::shared_ptr<DX::DeviceResources>& deviceResources) :
app_(app),
m_deviceResources(deviceResources)
{
g_main = this;
net::Init();
host = new UWPHost();
// Register to be notified if the Device is lost or recreated
m_deviceResources->RegisterDeviceNotify(this);
// create_task(KnownFolders::GetFolderForUserAsync(nullptr, KnownFolderId::RemovableDevices)).then([this](StorageFolder ^));
// TODO: Change the timer settings if you want something other than the default variable timestep mode.
// e.g. for 60 FPS fixed timestep update logic, call:
/*
m_timer.SetFixedTimeStep(true);
m_timer.SetTargetElapsedSeconds(1.0 / 60);
*/
ctx_.reset(new UWPGraphicsContext(deviceResources));
const std::string &exePath = File::GetExeDirectory();
VFSRegister("", new DirectoryAssetReader((exePath + "/Content/").c_str()));
VFSRegister("", new DirectoryAssetReader(exePath.c_str()));
wchar_t lcCountry[256];
std::string langRegion;
if (0 != GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SNAME, lcCountry, 256)) {
langRegion = ConvertWStringToUTF8(lcCountry);
for (size_t i = 0; i < langRegion.size(); i++) {
if (langRegion[i] == '-')
langRegion[i] = '_';
}
} else {
langRegion = "en_US";
}
char configFilename[MAX_PATH] = { 0 };
char controlsConfigFilename[MAX_PATH] = { 0 };
std::wstring memstickFolderW = ApplicationData::Current->LocalFolder->Path->Data();
g_Config.memStickDirectory = ReplaceAll(ConvertWStringToUTF8(memstickFolderW), "\\", "/");
if (g_Config.memStickDirectory.back() != '/')
g_Config.memStickDirectory += "/";
// On Win32 it makes more sense to initialize the system directories here
// because the next place it was called was in the EmuThread, and it's too late by then.
InitSysDirectories();
LogManager::Init();
// Load config up here, because those changes below would be overwritten
// if it's not loaded here first.
g_Config.AddSearchPath(GetSysDirectory(DIRECTORY_SYSTEM));
g_Config.SetDefaultPath(GetSysDirectory(DIRECTORY_SYSTEM));
g_Config.Load(configFilename, controlsConfigFilename);
bool debugLogLevel = false;
g_Config.iGPUBackend = GPU_BACKEND_DIRECT3D11;
g_Config.bSeparateCPUThread = false;
if (debugLogLevel) {
LogManager::GetInstance()->SetAllLogLevels(LogTypes::LDEBUG);
}
const char *argv[2] = { "fake", nullptr };
std::string cacheFolder = ConvertWStringToUTF8(ApplicationData::Current->LocalFolder->Path->Data());
NativeInit(1, argv, "", "", cacheFolder.c_str(), false);
NativeInitGraphics(ctx_.get());
NativeResized();
int width = m_deviceResources->GetScreenViewport().Width;
int height = m_deviceResources->GetScreenViewport().Height;
ctx_->GetDrawContext()->HandleEvent(Draw::Event::GOT_BACKBUFFER, width, height, m_deviceResources->GetBackBufferRenderTargetView());
}
PPSSPP_UWPMain::~PPSSPP_UWPMain() {
ctx_->GetDrawContext()->HandleEvent(Draw::Event::LOST_BACKBUFFER, 0, 0, nullptr);
NativeShutdownGraphics();
NativeShutdown();
// Deregister device notification
m_deviceResources->RegisterDeviceNotify(nullptr);
net::Shutdown();
}
// Updates application state when the window size changes (e.g. device orientation change)
void PPSSPP_UWPMain::CreateWindowSizeDependentResources() {
ctx_->GetDrawContext()->HandleEvent(Draw::Event::LOST_BACKBUFFER, 0, 0, nullptr);
NativeResized();
int width = m_deviceResources->GetScreenViewport().Width;
int height = m_deviceResources->GetScreenViewport().Height;
ctx_->GetDrawContext()->HandleEvent(Draw::Event::GOT_BACKBUFFER, width, height, m_deviceResources->GetBackBufferRenderTargetView());
}
// Renders the current frame according to the current application state.
// Returns true if the frame was rendered and is ready to be displayed.
bool PPSSPP_UWPMain::Render() {
ctx_->GetDrawContext()->HandleEvent(Draw::Event::PRESENTED, 0, 0, nullptr, nullptr);
NativeUpdate();
static bool hasSetThreadName = false;
if (!hasSetThreadName) {
setCurrentThreadName("UWPRenderThread");
hasSetThreadName = true;
}
time_update();
auto context = m_deviceResources->GetD3DDeviceContext();
auto bounds = Windows::UI::ViewManagement::ApplicationView::GetForCurrentView()->VisibleBounds;
int boundTop = bounds.Top;
int boundLeft = bounds.Left;
int boundedWidth = bounds.Width;
int boundedHeight = bounds.Height;
switch (m_deviceResources->ComputeDisplayRotation()) {
case DXGI_MODE_ROTATION_IDENTITY: g_display_rotation = DisplayRotation::ROTATE_0; break;
case DXGI_MODE_ROTATION_ROTATE90: g_display_rotation = DisplayRotation::ROTATE_90; break;
case DXGI_MODE_ROTATION_ROTATE180: g_display_rotation = DisplayRotation::ROTATE_180; break;
case DXGI_MODE_ROTATION_ROTATE270: g_display_rotation = DisplayRotation::ROTATE_270; break;
}
// Not super elegant but hey.
memcpy(&g_display_rot_matrix, &m_deviceResources->GetOrientationTransform3D(), sizeof(float) * 16);
// Reset the viewport to target the whole screen.
auto viewport = m_deviceResources->GetScreenViewport();
pixel_xres = viewport.Width;
pixel_yres = viewport.Height;
if (g_display_rotation == DisplayRotation::ROTATE_90 || g_display_rotation == DisplayRotation::ROTATE_270) {
// We need to swap our width/height.
std::swap(pixel_xres, pixel_yres);
}
g_dpi = m_deviceResources->GetActualDpi();
pixel_xres = (g_dpi / 96.0f) * boundedWidth;
pixel_yres = (g_dpi / 96.0f) * boundedHeight;
if (System_GetPropertyInt(SYSPROP_DEVICE_TYPE) == DEVICE_TYPE_MOBILE) {
// Boost DPI a bit to look better.
g_dpi *= 96.0f / 136.0f;
}
g_dpi_scale = 96.0f / g_dpi;
pixel_in_dps = 1.0f / g_dpi_scale;
dp_xres = pixel_xres * g_dpi_scale;
dp_yres = pixel_yres * g_dpi_scale;
context->RSSetViewports(1, &viewport);
ctx_->GetDrawContext()->BindBackbufferAsRenderTarget();
NativeRender(ctx_.get());
return true;
}
// Notifies renderers that device resources need to be released.
void PPSSPP_UWPMain::OnDeviceLost() {
ctx_->GetDrawContext()->HandleEvent(Draw::Event::LOST_DEVICE, 0, 0, nullptr);
}
// Notifies renderers that device resources may now be recreated.
void PPSSPP_UWPMain::OnDeviceRestored() {
CreateWindowSizeDependentResources();
ctx_->GetDrawContext()->HandleEvent(Draw::Event::GOT_DEVICE, 0, 0, nullptr);
}
void PPSSPP_UWPMain::OnKeyDown(int scanCode, Windows::System::VirtualKey virtualKey, int repeatCount) {
auto iter = virtualKeyCodeToNKCode.find(virtualKey);
if (iter != virtualKeyCodeToNKCode.end()) {
KeyInput key{};
key.deviceId = DEVICE_ID_KEYBOARD;
key.keyCode = iter->second;
key.flags = KEY_DOWN | (repeatCount > 1 ? KEY_IS_REPEAT : 0);
NativeKey(key);
}
}
void PPSSPP_UWPMain::OnKeyUp(int scanCode, Windows::System::VirtualKey virtualKey) {
auto iter = virtualKeyCodeToNKCode.find(virtualKey);
if (iter != virtualKeyCodeToNKCode.end()) {
KeyInput key{};
key.deviceId = DEVICE_ID_KEYBOARD;
key.keyCode = iter->second;
key.flags = KEY_UP;
NativeKey(key);
}
}
void PPSSPP_UWPMain::OnMouseWheel(float delta) {
int key = NKCODE_EXT_MOUSEWHEEL_UP;
if (delta < 0) {
key = NKCODE_EXT_MOUSEWHEEL_DOWN;
} else if (delta == 0) {
return;
}
KeyInput keyInput{};
keyInput.keyCode = key;
keyInput.deviceId = DEVICE_ID_MOUSE;
keyInput.flags = KEY_DOWN | KEY_UP;
NativeKey(keyInput);
}
bool PPSSPP_UWPMain::OnHardwareButton(HardwareButton button) {
KeyInput keyInput{};
keyInput.deviceId = DEVICE_ID_KEYBOARD;
keyInput.flags = KEY_DOWN | KEY_UP;
switch (button) {
case HardwareButton::BACK:
keyInput.keyCode = NKCODE_BACK;
return NativeKey(keyInput);
default:
return false;
}
}
void PPSSPP_UWPMain::OnTouchEvent(int touchEvent, int touchId, float x, float y, double timestamp) {
// We get the coordinate in Windows' device independent pixels already. So let's undo that,
// and then apply our own "dpi".
float dpiFactor = m_deviceResources->GetActualDpi() / 96.0f;
dpiFactor /= pixel_in_dps;
TouchInput input{};
input.id = touchId;
input.x = x * dpiFactor;
input.y = y * dpiFactor;
input.flags = touchEvent;
input.timestamp = timestamp;
NativeTouch(input);
KeyInput key{};
key.deviceId = DEVICE_ID_MOUSE;
if (touchEvent & TOUCH_DOWN) {
key.keyCode = NKCODE_EXT_MOUSEBUTTON_1;
key.flags = KEY_DOWN;
NativeKey(key);
}
if (touchEvent & TOUCH_UP) {
key.keyCode = NKCODE_EXT_MOUSEBUTTON_1;
key.flags = KEY_UP;
NativeKey(key);
}
}
void PPSSPP_UWPMain::OnSuspend() {
// TODO
}
void PPSSPP_UWPMain::LoadStorageFile(StorageFile ^file) {
std::unique_ptr<FileLoaderFactory> factory(new StorageFileLoaderFactory(file, IdentifiedFileType::PSP_ISO));
RegisterFileLoaderFactory("override://", std::move(factory));
NativeMessageReceived("boot", "override://");
}
UWPGraphicsContext::UWPGraphicsContext(std::shared_ptr<DX::DeviceResources> resources) {
draw_ = Draw::T3DCreateD3D11Context(
resources->GetD3DDevice(), resources->GetD3DDeviceContext(), resources->GetD3DDevice(), resources->GetD3DDeviceContext(), resources->GetDeviceFeatureLevel(), 0);
}
void UWPGraphicsContext::Shutdown() {
delete draw_;
}
void UWPGraphicsContext::SwapInterval(int interval) {
}
std::string System_GetProperty(SystemProperty prop) {
static bool hasCheckedGPUDriverVersion = false;
switch (prop) {
case SYSPROP_NAME:
return "Windows 10 Universal";
case SYSPROP_LANGREGION:
return "en_US"; // TODO UWP
case SYSPROP_CLIPBOARD_TEXT:
/* TODO: Need to either change this API or do this on a thread in an ugly fashion.
DataPackageView ^view = Clipboard::GetContent();
if (view) {
string text = await view->GetTextAsync();
}
*/
return "";
case SYSPROP_GPUDRIVER_VERSION:
return "";
default:
return "";
}
}
int System_GetPropertyInt(SystemProperty prop) {
switch (prop) {
case SYSPROP_AUDIO_SAMPLE_RATE:
return winAudioBackend ? winAudioBackend->GetSampleRate() : -1;
case SYSPROP_DISPLAY_REFRESH_RATE:
return 60000;
case SYSPROP_DEVICE_TYPE:
// TODO: Detect touch screen instead.
#ifdef _M_ARM
return DEVICE_TYPE_MOBILE;
#else
return DEVICE_TYPE_DESKTOP;
#endif
case SYSPROP_HAS_BACK_BUTTON:
return 1;
case SYSPROP_HAS_FILE_BROWSER:
return 1;
default:
return -1;
}
}
void System_SendMessage(const char *command, const char *parameter) {
using namespace concurrency;
if (!strcmp(command, "finish")) {
// Not really supposed to support this under UWP.
} else if (!strcmp(command, "browse_file")) {
auto picker = ref new Windows::Storage::Pickers::FileOpenPicker();
picker->ViewMode = Pickers::PickerViewMode::List;
// These are single files that can be loaded directly using StorageFileLoader.
picker->FileTypeFilter->Append(".cso");
picker->FileTypeFilter->Append(".iso");
// Can't load these this way currently, they require mounting the underlying folder.
// picker->FileTypeFilter->Append(".bin");
// picker->FileTypeFilter->Append(".elf");
picker->SuggestedStartLocation = Pickers::PickerLocationId::DocumentsLibrary;
create_task(picker->PickSingleFileAsync()).then([](StorageFile ^file){
if (file) {
g_main->LoadStorageFile(file);
}
});
}
}
void LaunchBrowser(const char *url) {
auto uri = ref new Windows::Foundation::Uri(ToPlatformString(url));
create_task(Windows::System::Launcher::LaunchUriAsync(uri)).then([](bool b) {});
}
void Vibrate(int length_ms) {
#if _M_ARM
if (length_ms == -1 || length_ms == -3)
length_ms = 50;
else if (length_ms == -2)
length_ms = 25;
else
return;
auto timeSpan = Windows::Foundation::TimeSpan();
timeSpan.Duration = length_ms * 10000;
// TODO: Can't use this?
// Windows::Phone::Devices::Notification::VibrationDevice::GetDefault()->Vibrate(timeSpan);
#endif
}
void System_AskForPermission(SystemPermission permission) {
// Do nothing
}
PermissionStatus System_GetPermissionStatus(SystemPermission permission) {
return PERMISSION_STATUS_GRANTED;
}
bool System_InputBoxGetString(const char *title, const char *defaultValue, char *outValue, size_t outLength) {
return false;
}
bool System_InputBoxGetWString(const wchar_t *title, const std::wstring &defaultvalue, std::wstring &outvalue) {
return false;
}
// Emulation of TlsAlloc for Windows 10. Used by glslang. Doesn't actually seem to work, other than fixing the linking errors?
extern "C" {
DWORD WINAPI __imp_TlsAlloc() {
return FlsAlloc(nullptr);
}
BOOL WINAPI __imp_TlsFree(DWORD index) {
return FlsFree(index);
}
BOOL WINAPI __imp_TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue) {
return FlsSetValue(dwTlsIndex, lpTlsValue);
}
LPVOID WINAPI __imp_TlsGetValue(DWORD dwTlsIndex) {
return FlsGetValue(dwTlsIndex);
}
}
+73
View File
@@ -0,0 +1,73 @@
#pragma once
#include <mutex>
#include "thin3d/thin3d.h"
#include "input/input_state.h"
#include "Common/GraphicsContext.h"
#include "Common/DeviceResources.h"
// Renders Direct2D and 3D content on the screen.
namespace UWP {
ref class App;
enum class HardwareButton;
class UWPGraphicsContext : public GraphicsContext {
public:
UWPGraphicsContext(std::shared_ptr<DX::DeviceResources> resources);
void Shutdown() override;
void SwapInterval(int interval) override;
void SwapBuffers() override {}
void Resize() override {}
Draw::DrawContext * GetDrawContext() override {
return draw_;
}
private:
Draw::DrawContext *draw_;
std::shared_ptr<DX::DeviceResources> resources_;
};
class PPSSPP_UWPMain : public DX::IDeviceNotify {
public:
PPSSPP_UWPMain(App ^app, const std::shared_ptr<DX::DeviceResources>& deviceResources);
~PPSSPP_UWPMain();
void CreateWindowSizeDependentResources();
bool Render();
// IDeviceNotify
virtual void OnDeviceLost();
virtual void OnDeviceRestored();
// Various forwards from App, in simplified format.
// Not sure whether this abstraction is worth it.
void OnKeyDown(int scanCode, Windows::System::VirtualKey virtualKey, int repeatCount);
void OnKeyUp(int scanCode, Windows::System::VirtualKey virtualKey);
void OnTouchEvent(int touchEvent, int touchId, float x, float y, double timestamp);
void OnMouseWheel(float delta);
bool OnHardwareButton(HardwareButton button);
void RotateXYToDisplay(float &x, float &y);
// Save state fast if we can!
void OnSuspend();
void Close();
void LoadStorageFile(Windows::Storage::StorageFile ^file);
private:
App ^app_;
// Cached pointer to device resources.
std::shared_ptr<DX::DeviceResources> m_deviceResources;
std::unique_ptr<UWPGraphicsContext> ctx_;
};
}
+37
View File
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
<Identity Name="32617401-c880-44d1-ba5a-c0b46feba525" Publisher="CN=Henrik" Version="1.4.0.0" />
<mp:PhoneIdentity PhoneProductId="32617401-c880-44d1-ba5a-c0b46feba525" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>PPSSPP Gold - PSP emulator</DisplayName>
<PublisherDisplayName>Henrik Rydgård</PublisherDisplayName>
<Logo>AssetsGold\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="PPSSPPGold.App">
<uap:VisualElements DisplayName="PPSSPP Gold" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="PPSSPP Gold - PSP emulator" BackgroundColor="transparent">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo" />
<uap:ShowOn Tile="wide310x150Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:SplashScreen Image="Assets\SplashScreen.png" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="landscape" />
</uap:InitialRotationPreference>
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="codeGeneration" />
<Capability Name="internetClient" />
<uap:Capability Name="removableStorage" />
</Capabilities>
</Package>
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
<Identity Name="0ad29e1a-1069-4cf5-8c97-620892505f0c" Publisher="CN=Henrik" Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="0ad29e1a-1069-4cf5-8c97-620892505f0c" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>PPSSPP - PSP emulator</DisplayName>
<PublisherDisplayName>Henrik Rydgård</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="PPSSPP.App">
<uap:VisualElements DisplayName="PPSSPP" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="PPSSPP - PSP emulator" BackgroundColor="transparent">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
</uap:DefaultTile>
<uap:SplashScreen Image="Assets\SplashScreen.png" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="landscape" />
</uap:InitialRotationPreference>
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="codeGeneration" />
<Capability Name="internetClient" />
<uap:Capability Name="removableStorage" />
</Capabilities>
</Package>
+315
View File
@@ -0,0 +1,315 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|ARM">
<Configuration>UWP Gold</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|Win32">
<Configuration>UWP Gold</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UWP Gold|x64">
<Configuration>UWP Gold</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2b2d16bd-1d37-46af-a3f8-552900951b26}</ProjectGuid>
<Keyword>StaticLibrary</Keyword>
<RootNamespace>SPIRVCross_UWP</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_cfg.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_common.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_cross.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_glsl.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_hlsl.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_msl.hpp" />
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_cfg.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_cross.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_glsl.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_hlsl.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_msl.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='UWP Gold|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_cfg.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_cross.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_glsl.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_hlsl.cpp" />
<ClCompile Include="..\..\ext\SPIRV-Cross\spirv_msl.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_cfg.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_common.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_cross.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_glsl.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_hlsl.hpp" />
<ClInclude Include="..\..\ext\SPIRV-Cross\spirv_msl.hpp" />
</ItemGroup>
</Project>
+1
View File
@@ -0,0 +1 @@
#include "pch.h"
Loaded 100 of 155 files, more files were not shown because too many files have changed in this diff. Show more