diff --git a/soh-uwp/Package.appxmanifest b/soh-uwp/Package.appxmanifest
new file mode 100644
index 00000000..2dd6e250
--- /dev/null
+++ b/soh-uwp/Package.appxmanifest
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+ soh_uwp
+ danwo
+ Assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh-uwp/main.cpp b/soh-uwp/main.cpp
new file mode 100644
index 00000000..b60468da
--- /dev/null
+++ b/soh-uwp/main.cpp
@@ -0,0 +1,94 @@
+/*
+ SDL_winrt_main_NonXAML.cpp, placed in the public domain by David Ludwig 3/13/14
+*/
+
+/* At least one file in any SDL/WinRT app appears to require compilation
+ with C++/CX, otherwise a Windows Metadata file won't get created, and
+ an APPX0702 build error can appear shortly after linking.
+
+ The following set of preprocessor code forces this file to be compiled
+ as C++/CX, which appears to cause Visual C++ 2012's build tools to
+ create this .winmd file, and will help allow builds of SDL/WinRT apps
+ to proceed without error.
+
+ If other files in an app's project enable C++/CX compilation, then it might
+ be possible for SDL_winrt_main_NonXAML.cpp to be compiled without /ZW,
+ for Visual C++'s build tools to create a winmd file, and for the app to
+ build without APPX0702 errors. In this case, if
+ SDL_WINRT_METADATA_FILE_AVAILABLE is defined as a C/C++ macro, then
+ the #error (to force C++/CX compilation) will be disabled.
+
+ Please note that /ZW can be specified on a file-by-file basis. To do this,
+ right click on the file in Visual C++, click Properties, then change the
+ setting through the dialog that comes up.
+*/
+
+/* Prevent MSVC++ from warning about threading models when defining our
+ custom WinMain. The threading model will instead be set via a direct
+ call to Windows::Foundation::Initialize (rather than via an attributed
+ function).
+
+ To note, this warning (C4447) does not seem to come up unless this file
+ is compiled with C++/CX enabled (via the /ZW compiler flag).
+*/
+#ifdef _MSC_VER
+#pragma warning(disable : 4447)
+#endif
+
+/* Make sure the function to initialize the Windows Runtime gets linked in. */
+#ifdef _MSC_VER
+#pragma comment(lib, "runtimeobject.lib")
+#endif
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+using namespace winrt::Windows;
+using namespace winrt::Windows::ApplicationModel::Core;
+using namespace winrt::Windows::Graphics::Display::Core;
+using namespace winrt::Windows::Foundation::Numerics;
+using namespace winrt::Windows::UI;
+using namespace winrt::Windows::UI::Core;
+using namespace winrt::Windows::UI::Composition;
+using namespace winrt::Windows::Storage;
+
+#include "../libultraship/src/graphic/Fast3D/wininfo.h"
+
+#include "SDL2/SDL.h"
+void* WinInfo::getCurrentWindow() {
+ void* ptr = nullptr;
+ while (ptr == nullptr) {
+ ptr = winrt::get_abi(CoreWindow::GetForCurrentThread());
+ Sleep(10);
+ }
+
+ return ptr;
+}
+
+std::string WinInfo::getSavePath() {
+ return winrt::to_string(ApplicationData::Current().LocalFolder().Path());
+}
+
+int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
+{
+ char* args[] = {
+ (char*) "example",
+ NULL
+ };
+
+
+ winrt::init_apartment();
+ return SDL_WinRTRunApp(SDL_main, args);
+ winrt::uninit_apartment();
+}
\ No newline at end of file