[PR #2359] [MERGED] Port DuckStation to UWP (and Xbox) #1013

Open
opened 2026-01-29 19:10:36 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/stenzek/duckstation/pull/2359
Author: @stenzek
Created: 7/4/2021
Status: Merged
Merged: 7/11/2021
Merged by: @stenzek

Base: masterHead: uwp


📝 Commits (9)

  • 281f7c5 Build: Add UWP configurations
  • 03ab189 Common: Add UWP support for helper classes
  • 6251894 Common/JitCodeBuffer: Add ability to reserve non-code space
  • 0f911e9 Common/PageFaultHandler: Support for unwind exceptions
  • ca747d8 CPU/CodeCache: Support UWP
  • b35a130 Core: Make XAudio2 the default backend for UWP
  • 99018b5 FrontendCommon: Support UWP in helper classes
  • b0adcb5 FrontendCommon: Add HTTPDownloaderUWP
  • 9affb03 Add UWP frontend

📊 Changes

98 files changed (+2958 additions, -125 deletions)

View changed files

📝 .gitignore (+4 -0)
📝 dep/msvc/vsprops/Base.props (+12 -4)
📝 dep/msvc/vsprops/Configurations.props (+42 -1)
📝 dep/msvc/vsprops/StaticLibrary.props (+7 -1)
📝 dep/msvc/vsprops/Targets.props (+11 -1)
📝 dep/msvc/vsprops/Toolkit.props (+2 -2)
📝 dep/vulkan-loader/include/vulkan_loader.h (+2 -0)
duckstation-uwp.sln (+376 -0)
📝 src/common/assert.cpp (+5 -5)
📝 src/common/byte_stream.cpp (+11 -4)
📝 src/common/common.vcxproj (+12 -8)
📝 src/common/crash_handler.cpp (+1 -1)
📝 src/common/file_system.cpp (+258 -26)
📝 src/common/jit_code_buffer.cpp (+47 -5)
📝 src/common/jit_code_buffer.h (+10 -6)
📝 src/common/memory_arena.cpp (+13 -0)
📝 src/common/page_fault_handler.cpp (+167 -17)
📝 src/common/page_fault_handler.h (+5 -3)
📝 src/common/timer.cpp (+2 -0)
📝 src/common/window_info.cpp (+1 -1)

...and 78 more files

📄 Description

What the title says. This is a port of the fullscreen UI.

Still a few things left:

  • Create a UWP port.
  • Make sure it runs on Xbox.
  • Write D3D12 renderer.
  • Add UWP HTTPDownloader for RetroAchievements.
  • Add XAudio2 audio backend.
  • Fix up fastmem when running under UWP.
  • Handle suspending/resuming automatically.
  • Automatically set reasonable settings for Xbox (host sync on, default to controller bindings, D3D12 renderer, MaxFPS 60).
  • Create CI builds/AppX packages?
  • Provide a file opener so that games can be run off external/removable storage. unnecessary, imgui directory browser works now.

Initial results look promising, with decent performance on an Xbox One S (5x resolution scale, limited by ESRAM). I don't have a series console to test with myself, but others have said it works fine at 4K.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/stenzek/duckstation/pull/2359 **Author:** [@stenzek](https://github.com/stenzek) **Created:** 7/4/2021 **Status:** ✅ Merged **Merged:** 7/11/2021 **Merged by:** [@stenzek](https://github.com/stenzek) **Base:** `master` ← **Head:** `uwp` --- ### 📝 Commits (9) - [`281f7c5`](https://github.com/stenzek/duckstation/commit/281f7c57898367da64c1f34edd4e9a6b2e012826) Build: Add UWP configurations - [`03ab189`](https://github.com/stenzek/duckstation/commit/03ab18909a63c5ddf8b375767a8ca137f236cc83) Common: Add UWP support for helper classes - [`6251894`](https://github.com/stenzek/duckstation/commit/6251894d3c7e9a424194c6540808eea251bcd25f) Common/JitCodeBuffer: Add ability to reserve non-code space - [`0f911e9`](https://github.com/stenzek/duckstation/commit/0f911e9dbfb947c4729ec622922b1adbef8a4bfd) Common/PageFaultHandler: Support for unwind exceptions - [`ca747d8`](https://github.com/stenzek/duckstation/commit/ca747d8d7a095d8507b7a14c5d7b6321adbea9da) CPU/CodeCache: Support UWP - [`b35a130`](https://github.com/stenzek/duckstation/commit/b35a1308c4ee662fab8583bbecb5a943d9ed5ebf) Core: Make XAudio2 the default backend for UWP - [`99018b5`](https://github.com/stenzek/duckstation/commit/99018b51b4b135513fc98c6dcf1447729a81ab79) FrontendCommon: Support UWP in helper classes - [`b0adcb5`](https://github.com/stenzek/duckstation/commit/b0adcb5ea6e1557a2ea2db92cc5a7971eb620616) FrontendCommon: Add HTTPDownloaderUWP - [`9affb03`](https://github.com/stenzek/duckstation/commit/9affb035f8ef5f7dea5b75fdd27461d05e1d8e89) Add UWP frontend ### 📊 Changes **98 files changed** (+2958 additions, -125 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+4 -0) 📝 `dep/msvc/vsprops/Base.props` (+12 -4) 📝 `dep/msvc/vsprops/Configurations.props` (+42 -1) 📝 `dep/msvc/vsprops/StaticLibrary.props` (+7 -1) 📝 `dep/msvc/vsprops/Targets.props` (+11 -1) 📝 `dep/msvc/vsprops/Toolkit.props` (+2 -2) 📝 `dep/vulkan-loader/include/vulkan_loader.h` (+2 -0) ➕ `duckstation-uwp.sln` (+376 -0) 📝 `src/common/assert.cpp` (+5 -5) 📝 `src/common/byte_stream.cpp` (+11 -4) 📝 `src/common/common.vcxproj` (+12 -8) 📝 `src/common/crash_handler.cpp` (+1 -1) 📝 `src/common/file_system.cpp` (+258 -26) 📝 `src/common/jit_code_buffer.cpp` (+47 -5) 📝 `src/common/jit_code_buffer.h` (+10 -6) 📝 `src/common/memory_arena.cpp` (+13 -0) 📝 `src/common/page_fault_handler.cpp` (+167 -17) 📝 `src/common/page_fault_handler.h` (+5 -3) 📝 `src/common/timer.cpp` (+2 -0) 📝 `src/common/window_info.cpp` (+1 -1) _...and 78 more files_ </details> ### 📄 Description What the title says. This is a port of the fullscreen UI. Still a few things left: - [x] Create a UWP port. - [x] Make sure it runs on Xbox. - [x] Write D3D12 renderer. - [x] Add UWP HTTPDownloader for RetroAchievements. - [x] Add XAudio2 audio backend. - [x] Fix up fastmem when running under UWP. - [x] Handle suspending/resuming automatically. - [x] Automatically set reasonable settings for Xbox (host sync on, default to controller bindings, D3D12 renderer, MaxFPS 60). - [ ] Create CI builds/AppX packages? - [x] ~~Provide a file opener so that games can be run off external/removable storage.~~ unnecessary, imgui directory browser works now. Initial results look promising, with decent performance on an Xbox One S (5x resolution scale, limited by ESRAM). I don't have a series console to test with myself, but others have said it works fine at 4K. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-29 19:10:36 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/duckstation#1013