Skip to content
Bubbleshum edited this page Jun 27, 2026 · 3 revisions

FAQ


What is WPR?

WPR (Windows Phone Runner) is a runtime compatibility layer that re-hosts Windows Phone 7/8 XNA games — and a growing subset of Silverlight titles — on modern Windows desktop and (eventually) Android. It takes an unmodified .xap package, IL-rewrites the game's assemblies at install time to redirect WP / Silverlight / XNA API calls to in-tree shims, then runs the game on FNA (XNA reimplementation) or an Avalonia-based Silverlight runtime.

This wiki covers the .NET 8 + Avalonia 11.3.9 fork at https://github.com/Bubbleshum/WPR.


Is WPR an emulator?

No. WPR doesn't emulate ARM, the OS kernel, or the Windows Phone hardware. It runs the game's original .NET assemblies on modern .NET, with the WP/XNA APIs reimplemented as shims. Think of it as a compatibility layer in the style of Wine for .NET-targeted WP games, not Bochs / QEMU.

See Architecture for the pipeline detail.


What platforms does WPR support?

Platform Status
Windows 10 (1809+) / 11 Active development — primary target
Android Experimental; currently launches to a white screen on this fork
Linux Untested (FNA / SDL2 / FFmpeg backend nominally supports it)
macOS Not planned

See Windows Setup and Android Setup.


What types of games are supported?

WPR's main path is XNA .xap packages for Windows Phone 7. Silverlight support is experimental — a subset of controls + the Panorama / Pivot state machine has been written in-tree; many titles still hit unimplemented controls (LongListSelector, WrapPanel, PhoneTextBox, etc.).

Native WinRT applications (C++/CX) are out of scope — they ship as native PE binaries, not .NET assemblies, so the IL-rewrite approach doesn't apply.


Does WPR require Vulkan?

No. WPR's graphics backend is FNA3D, which picks Direct3D 11 on Windows by default. The native deps (FNA3D.dll, SDL2.dll, FAudio.dll, FNWP72.dll, ffmpeg.exe) ship next to the executable — there's no system Vulkan or DirectX prerequisite.


Why does my game fail to boot?

Common patterns:

  • Missing API shimMissingMethodException on a method that's referenced by the game but isn't in our Microsoft.* / System.* shims yet.
  • Patcher table miss — type references in the game's IL that we don't redirect to a shim. The IL is rewritten at install time, so adding a redirect needs a reinstall of the affected game (see Architecture).
  • Silverlight control gap — the title uses a Silverlight 4 / WP toolkit control that's not in WPR.SilverlightCompability yet.
  • Game-specific assumption about WP7 hardware — accelerometer orientation, memory budget, gamer services, etc.

The first [wpr-ex] line in %LocalAppData%\WPR\Apps\<ProductId>\wpr_game_debug.log will point at the proximate cause. See Troubleshooting.


Where are the logs?

Channel Path When
Host log UI console / standard Trace listener Always
Per-game debug log %LocalAppData%\WPR\Apps\<ProductId>\wpr_game_debug.log Debug builds only

The per-game log is gated by the WprDebugTrace wrapper — Release builds elide it entirely. Use Debug builds for compat work.


Why are achievements showing 0?

Two paths populate the per-game achievements DB at install time:

  1. XnaAchievementCodeExtractor — scans the game's install folder for known patterns (hardcoded catalogue keyed by ProductId, XNA XML socialnetworks.xml.xnb, IL ldstr near AwardAchievement*, or Content/Achievements/*.xnb filenames).
  2. TrueAchievements scrape — best-effort backfill for descriptions and icons.

If your install log shows XnaAchievementCodeExtractor: 0 achievement(s), all four extractor sources missed for that game. For titles that stash keys in an inline static array (like PvZ's Sexy.Achievements.ACHIEVEMENT_KEYS), add an entry to KnownProductCatalogues in XnaAchievementCodeExtractor.cs.

The runtime log line [wpr-trace] BeginGetAchievements: N rows for <ProductId> confirms what made it into the DB.


Why does sound work / not work?

Audio path Status
MediaPlayer (background songs) Working — Game.Tick auto-pumps FrameworkDispatcher.Update()
Sound effects via SoundEffect/SoundEffectInstance Working via FAudio
XACT (sound banks / wave banks) Partial — works for some titles, missing features in others

If a song never plays past the splash, you're probably on a build older than 21/05/2026 — the FrameworkDispatcher pump fix landed then.


Is Silverlight supported?

Experimental. The in-tree WPR.SilverlightCompability is a from-scratch reimplementation of Silverlight 4 / Windows Phone XAML on top of Avalonia. A small set of controls and the Panorama / Pivot parallax state machine have been written. Boots a handful of XAPs; the rest hit unimplemented controls. See the Compatibility List.


Are Xbox Live features supported?

Feature Status
Gamer profile (single signed-in gamer) Implemented enough to satisfy SignedInGamer / Gamer.SignedInGamers[0]
Achievement read/award (local) Implemented — backed by SQLite
Achievement metadata scrape Best-effort via TrueAchievements
Online multiplayer / friends / messaging Not implemented; not planned
Leaderboards Partial — LeaderboardReader.get_TotalLeaderboardSize is a notable missing method that breaks Dig It

Where do I get games?

WPR does not include or distribute any commercial Windows Phone games. Users are responsible for legally owning any .xap they import.


Are encrypted XAPs supported?

Depends on the title. Some .xaps shipped through the Marketplace are signed but not encrypted, and our installer handles them. Others used additional DRM that's outside the scope of this project.


Is WPR open source?

Yes — MIT-style permissive licence (see LICENSE in the repo).


Can I contribute?

Yes. Compat reports, bug reports with logs, missing-shim patches, and documentation improvements are all welcome. See Contributing.


Why was WPR rewritten for .NET 8 / Avalonia?

The upstream WPR targeted older .NET + Avalonia 0.9/0.10. The .NET 8 + Avalonia 11.3.9 port modernises the runtime, gives us better tooling (notably the modern Mono.Cecil), and unblocks the Android target rebuild. See the Update History for the migration details.


Is WPR affiliated with Microsoft?

No. Independent preservation project, not affiliated with Microsoft, Xbox, or Windows Phone.


Is using WPR legal?

WPR itself is open-source software. Whether it's legal for you to import a particular .xap depends on whether you own a licence to that game and on your jurisdiction. WPR doesn't help with either side of that question.


Related pages