WPR 0.1.01
Prebuilt WPR 0.1.01.
| Download | Platform |
|---|---|
WPR-Setup-0.1.01.exe |
Windows x64 — self-contained, no .NET install required |
WPR-0.1.01.apk |
Android — API 21+, arm64-v8a / x86_64 |
What's changed
Changes since v0.1.0.
Highlights
The Mirror's Edge fixes release. Everything below is Android; Windows is unchanged apart from
shared plumbing.
| 🕺 | Characters are no longer stuck in a T-pose. Wrong graphics driver — this hit every 3D game with animated characters, not just this one |
| 🎵 | Music plays. The soundtrack conversion had never once run on Android, so games installed silently mute |
| 🔊 | The once-a-second click during music is gone |
| 🏠 | Music stops when you leave the app instead of playing over your home screen |
| 🚀 | Games no longer refuse to start when a graphics driver turns out to be unavailable |
| 💥 | Fixed a crash on launch introduced in 0.1.0 |
Upgrading from 0.1.0? Repatch or reinstall your games to get their soundtracks — the audio
conversion happens at install time.
Almost all of it started as two reports about a single game: characters frozen in a T-pose, and no
music. Neither turned out to be specific to Mirror's Edge — one was the graphics driver every 3D
Android title was getting, the other an install step that had never run on Android at all. If you
have that game, this is the release to install; if you don't, it very likely fixes yours too.
Characters are no longer stuck in a T-pose
Every animated character in every 3D game on Android was rendering in its bind pose.
FNA3D picks a graphics driver by walking its compiled-in list and taking the first that accepts the
window. On Android that landed on the Vulkan driver — the one FNA3D's own source still gates behind
a "not done yet" comment. It mistranslates the stock SkinnedEffect shader's bone array, which is
exactly what skinned character animation runs on. The world, lighting and reflections all drew
perfectly, which is why this read as an animation bug rather than a driver one. Windows was never
affected: it uses Direct3D 11.
Android now runs on the OpenGL driver, and animation is correct on real hardware.
This was never Mirror's Edge specific. Any XNA title using SkinnedEffect for character
animation had the same problem, so the Android column of the
compatibility list is worth revisiting.
Music plays on Android
WP7 games ship their soundtracks as .wma, and the song player decodes Ogg Vorbis only, so tracks
are converted when a game is installed. On Android that conversion had never worked: it ran through
a component that launches ffmpeg as a separate program, and an Android app has no such program to
launch. Every track failed, each failure was swallowed, the install reported success, and the game
was silently mute. Sound effects still worked — they need no conversion — which is precisely why
this looked like a mixing problem rather than a missing step.
Conversion now has a real Android implementation, and:
- A broken converter fails the install instead of quietly producing a silent game. A single bad
track is still only a warning; a game that installs cleanly and plays no music is the outcome
worth refusing. - Already-installed games can be repaired with a repatch, which is much quicker than a full
reinstall and is already offered in the Android UI.
The once-a-second click during music is gone
Songs were audibly ticking once per second. The underlying song player decodes a full second of
audio into a single buffer, with nothing queued behind it, and only refills once that buffer has
already finished — so at every boundary the audio device had nothing to play while a second of
audio was being decoded. Desktop machines absorb it; a phone does not.
Songs on Android now play through Android's own media player. Sound effects are unchanged.
Music stops when you leave the app
Backgrounding the app left the music playing over the home screen and other apps. Sound effects had
always stopped correctly, which made this easy to miss.
Music now pauses with the app and resumes when you return. Games that pause their own soundtrack
resume exactly where they left off, including when Android reclaims audio while the app is away.
Note that many WP7 titles — Mirror's Edge among them — stop their music when deactivated and
start it again on return, because on real hardware being backgrounded meant being shut down. Those
games restart their track from the beginning. That is the original behaviour, and it is preserved
deliberately.
Graphics driver selection is much harder to break
- A driver that cannot run no longer fails the launch. Each driver is now tried by name in
turn, and every attempt is logged. Previously a declined driver produced
No supported FNA3D driver found!and the game refused to start. - The emulator renders again. It cannot run the OpenGL path, so it is detected and allowed to
choose for itself, while physical devices keep the driver that animates correctly. The detection
deliberately errs towards treating a device as real hardware. - The driver can be changed on a device without a new build, by dropping a file next to the
app's data. Intended for diagnosing a phone whose driver misbehaves.
Also fixed
- The app crashed on launch on Android. Two dependency exclusions carried in with 0.1.0 removed
a library AndroidX needed, and the app died before showing anything. - A failure inside an Android lifecycle callback could take the running game down. These are now
contained. - The FFmpegKit Java bindings produced empty assemblies — they were built for the wrong target,
so no code was generated and nothing could call them. - Android audio output now runs at 48 kHz with a larger mixing block, matching what the platform
actually wants.
Known issues
- Android emulator only: returning to a running game shows a black screen. Android destroys the
drawing surface when an app is backgrounded, and the Vulkan driver the emulator uses does not
rebuild against the new one. Physical devices use OpenGL and are unaffected. Fixing it needs a
rebuilt native graphics library. - On desktop, songs still use the single-buffered player described above. The same starvation
exists in principle but is inaudible at desktop speeds.
Upgrading
Games installed before this release need a repatch or reinstall to gain their soundtrack — the
audio conversion happens at install time. No game IL changed, so nothing else needs reinstalling.
All changes
Fixes
- Mirror's Edge on Android - animation, music and driver selection
Built from commit e03c8bf.