Repository navigation
Releases
reSOT v0.5.0
reSOT v0.5.0
European Xbox ROM support is finally here, together with German and Italian. The PAL European retail disc is now recognised by the Windows and Android launchers, and its files can be installed directly from ISO without replacing default.xbe or moving movies between folders.
Windows demo and retail executables and the Android APK are version 0.5.0 (Android versionCode 15). As always, you need your own Xbox game files.
European ROM support
- European retail disc recognised on Windows and Android. Install your EU ISO through the launcher and use Start Game. No manual XBE replacement is needed.
- Fixed the European disc’s “dirty or damaged” startup error. The EU disc stores its movies inside VIDEO/30fps and VIDEO/25fps. reSOT now finds them automatically while keeping support for the USA disc’s original paths.
- Original disc files stay untouched. Both platforms use the checked NTSC runtime with the European disc’s assets.
- Windows remembers your chosen installation. A selected or remembered EU folder is no longer replaced by an automatically detected USA installation.
Languages - German and Italian added to reSOT Options → Language. The retail game now offers English, French, Spanish, Deutsch and Italiano on Windows and Android.
- All five languages stay available in the settings on either disc. German and Italian remain selectable even when using the USA ROM.
- English fallback when language data is missing. If the installed disc does not contain the German or Italian sound banks, the game uses English for that run while keeping your selected preference.
- Language changes apply at the next start. Your choice is saved immediately in resot-options.ini.
- The demo continues to use English.
Windows cursor - New light-halo pointer. The Windows launcher, native game menus and F7 options now use a luminous cursor derived from the game’s own light effect. The pointer remains hidden during camera control.
Validation - Windows demo and retail builds, the Android release build, shader checks and loader/language preference tests passed.
- European startup, movies, menus and an existing cave-area save were checked on Windows.
- The Italian menu was confirmed in game. German startup loaded its language banks and rendered the initial Prince scene.
- The USA disc was checked with Italian selected: it correctly used English without clearing the preference.
Known limits - Android was built and its embedded runtime verified, but this release has not yet been tested on a device.
- A full playthrough with the European ROM remains to be completed.
- German and Italian dialogue, subtitles, movies and gameplay have not been checked throughout the entire game.
- Android accepts the known USA and European retail executable revisions; other XBE revisions remain unsupported.
- In the retail Magic Fountain teleport, the fade to black does not appear and the camera stays at the bridge entrance until the view is changed.
Full Changelog: reSOTv0.4.4...reSOTv0.5.0
reSOT v0.4.4
reSOT v0.4.4
A big performance release. The direct renderer is now on by default on every
renderer, most of the retail game's drawing skips the old Xbox command
interpreter, and the game and the renderer now work in parallel.
On the test PC (Windows, retail, Vulkan, RTX 3060, 225% internal resolution),
in a heavy scene of about 1,600 draws a frame:
- about 64 fps before this release, about 143 fps now
- an empty view runs at about 700 fps
Windows demo and retail executables and the Android APK are version 0.4.4
(Android versionCode 14). As always, you need your own supported Xbox game files.
Performance
- Direct renderer on by default, on every renderer. Direct3D 11, Direct3D 12,
Vulkan and Android. The games' Direct3D routines hand reSOT's renderer the draws
and state directly, instead of Xbox GPU commands that had to be decoded first.
SetRESOT_DIRECT_DRAW=0to go back to the old path. - Retail level geometry drawn directly. About two thirds of the retail game's
draws came from command buffers it records once and replays every frame. reSOT
now keeps them, checks them against the game's copy each time, and reuses
the geometry already on the GPU. Renderer time in the heavy scene went from
8.95 to 6.2 ms a frame. - Game and renderer in parallel (retail). The game can prepare the next frames
while the previous ones are drawn: up to 32 submissions and at most two frames
ahead (RESOT_KICK_AHEAD,RESOT_FLIP_AHEAD). - Faster presentation on Vulkan. The display mode is no longer queried every
frame; on NVIDIA this took about 13% of the renderer's time. - Faster memory checks (Windows). reSOT's own per-frame checks of game objects
no longer ask Windows about the memory first (about 10% of the game thread in
heavy scenes, 28% in menus). - Smaller CPU savings: faster vertex conversion and geometry caching, and the
retail matrix multiply in native code (9% of the game thread down to 0.9%).
Fixes
- Light halos turning green or flashing white (retail). At a raised internal
resolution the two tiny probes behind each light halo could count a different
number of pixels, pushing the halo's brightness out of range. It now stays
within range.
Launchers
- The game language is now chosen in reSOT Options only. The Windows and
Android launchers no longer show the "Game language" button. Use the Language
page of reSOT Options (retail); the choice is still saved inresot-options.ini
and applies at the next start.
Known limits
- Android was built but not yet tested with this release.
- The demo gets the direct renderer, but keeps waiting for the renderer at every
submission. - Direct3D 11 and Direct3D 12 have not been re-tested with the last changes.
- The halo fix and the hidden launcher button have not been confirmed in game yet.
- The two-frame limit was tested for about 33,000 frames. If parts of a level
turn black after a long session, setRESOT_FLIP_AHEAD=1: slower, but it
prevents it. - In the retail Magic Fountain teleport the fade to black does not appear and the
camera stays at the bridge entrance until the view is changed.
reSOT v0.4.3
reSOT v0.4.3
Windows demo and retail executables and the shared Android APK use version
0.4.3; Android versionCode is 13. Both targets still require the user's supported
Xbox game files.
Languages
- Game language: English, French or Spanish (retail). The supported USA retail
disc contains all three. The game starts in the language saved as
[Game] Languageinresot-options.ini; English is the default on Windows and
Android. Contributed by GrandaCoder (Camilo Granda), pull request #19. - Language in reSOT Options (retail). A new Language page in reSOT Options
(main and pause menus) offers English, French and Spanish. The choice is saved
at once and applies the next time the game starts. - Launchers in English, French and Spanish. The Windows and Android launchers
follow the system language when it is one of the three (English otherwise), and
have a "Game language" button for the same setting. Also from pull request #19. - The demo always runs in English: its languages have not been checked.
Performance
- Guest memory reads without system calls (Windows, both games). reSOT's own
per-frame checks asked Windows about the memory before every word they read: 17%
of the game thread's time in a heavy retail scene. Guest RAM is now read directly,
as on Android. On the user's PC the game thread's work per frame fell from 6.0 to
4.6 ms in that scene. - Direct3D 11 and 12: one shader per render state, D3D12 vertex program
translation and less D3D12 stutter in effect-heavy scenes. The user reported
excellent performance on D3D11, Vulkan and the demo. - Fewer render passes: full clears become the next pass's load operation;
visibility queries stay inside one pass. - Android: big cores and an optional GPU turbo (
GpuTurbo=1, off by default).
Not tested on a device.
Experimental: direct renderer
RESOT_DIRECT_DRAW=1 (off by default, Windows) sends the game's graphics calls to
the renderer as typed operations instead of Xbox GPU commands, on both games. The
user played the demo and several retail scenes with no visible defect. With it on,
retail runs 8 submissions ahead: in a heavy retail scene (about 1,600 draws a frame)
the user saw 82-88 fps against 64 before. See docs/DIRECT-RENDERER.md.
Debug views (Windows)
- F8 cycles the normal view, No lighting, Vertex and Show triggers (volumes of
detection zones, logic objects and hidden meshes). Confirmed by the user.
Android
- New app icon background: a square of the launcher's night-blue ground with
its rosettes and stars, behind the reSOT logo.
Tools
- The sampling profiler (
RESOT_PROFILE_MS) now unwinds frames correctly in the
GPU driver, names the runtime's internal functions and reports time by module.
Known issues and what was not checked
- Retail Magic Fountain teleport: the fade to black does not appear and the camera
stays on the bridge until the view changes. Long-standing, left open. - The Language page and the translated launchers were built but not run; French and
Spanish game text has not been seen in game. - Android was not tested on a device for this release (icon, language selector,
big cores, GPU turbo). - The direct renderer is off by default and was not tried on Android.
- These final builds were not run.
Full Changelog: reSOTv0.4.2...reSOTv0.4.3
reSOT v0.4.2
reSOT v0.4.2
Windows demo and retail executables and the shared Android APK use version
0.4.2; Android versionCode is 12. Both targets still require the user's supported
Xbox game files. Game content, logs and compiled packages are not committed.
Retail
- HD main menu logo. The low-resolution title logo is replaced on the host
by an HD image, on D3D11, D3D12, Vulkan and Android. Confirmed by the user. - Name keyboard with mouse and touch. On the profile-name keyboard, pointing
or tapping only reached letters in the middle, so a name could not be typed.
The pointer now walks to the row and then along it. Confirmed by the user. - Sand tanks stay at the widescreen HUD position. With many tanks, full
tanks and forming empty rings went back to the old centred 4:3 position. The
whole column is now anchored, however long it grows. - Vulkan black flashes. Certain places alternated gameplay with a black
screen for about half a second. Confirmed fixed by the user on Windows. - Farah Room door. Both leaves of the door are visible again on D3D11
(confirmed by the user). Not checked on Vulkan, D3D12 or Android. - Light halos (candidate). Halo visibility tests are compared at a slightly
nearer depth and dim halos are raised. Built, not confirmed: on the last test
D3D11 still showed no halos and Vulkan only some. - Fewer shader hitches on D3D11. Vertex shaders now compile in the
background instead of on the GPU thread. No frame-rate gain has been measured.
Demo
- HD main menu logo. The menu logo is replaced by an HD image, keeping the
game's yellow tint. It stays hidden during play. - 6201 PrisonA in Special Load Map. This entry showed the Prince as a head
only, because its map loads neither his costume nor his set-up. It now loads
the 08_GP62_E3_Cour map, which has the same areas and both, so the starting
point can differ from the original entry. - Closing E3 clip. It has no sound because the clip itself has no audio
track; this is documented and not a bug.
Both games
- Vulkan queries are reused again, removing about 2400 create/destroy pairs
per second from the driver. This aims at a rare crash in the NVIDIA driver,
whose cause has not been established. - Crash reports now name the faulting thread and list stack words pointing
into loaded modules.
Known issues and what was not checked
The demo's HD logo and its 6201 PrisonA change, and the retail sand tank change,
were built but have not been confirmed in game by the user. The agent did not
run the game. Android was not tested on a device for this release. The Farah
Room gate remains under investigation outside the D3D11 result above. The
issues listed as known in v0.4.1 still apply.
The HD logos are compiled into these executables, but the images and their
generated headers are not in the repository; a build from a clean checkout
draws the games' own logos. See LICENSING.md and VALIDATION.md for commands
and results.
Full Changelog: reSOTv0.4.1...reSOTv0.4.2
reSOT v0.4.1
reSOT v0.4.1
Windows demo and retail executables and the shared Android APK use version
0.4.1; Android versionCode is 11. Both targets still require the user's supported
Xbox game files. Game content, logs and compiled packages are not committed.
- Retail flicker, black scenes and textures that stopped loading. The
retail ran the game up to 16 GPU submissions ahead of the executor, and the
game reused memory those submissions still pointed to: vertex data was read
as GPU commands, which made objects and textures flicker, turned whole
scenes black (only the menus and overlays left) until the app restarted,
or crashed. The retail now runs at most one submission ahead
(RESOT_KICK_AHEAD=16restores the old behaviour). In the user's test of
every retail map, the logs no longer show this. - Two Android crashes on the GPU thread (seen in the dagger area): a
visibility report sent to a misaligned address, and a texture palette
outside the game's memory. Both are now rejected and logged instead. - Textures replaced by old render targets. After a map change, a new
texture placed where an old render target used to be could show that old
image until the app restarted. The renderer now notices when the game has
rewritten that memory and uses the texture. - Special Load Map crashes (Windows, several maps in a row). After a load
the Prince could keep the previous world's sector, and the next load
crashed. The sector is now taken from the map's checkpoint when that
happens. The user then loaded all 30 retail maps without a crash. - Loading screen that never ended after many loads (about 30 maps and
returns to the menu in one session). Each loading screen starts a new game
thread; after 63 of them the game could no longer see that the thread had
finished and waited forever. Fixed for the retail. - Android launcher: logs tip. Shortly after the launcher opens, a small
bubble beside the version shows "The game crashed? Tap here for logs!" for
a few seconds. Tapping it, or the version, shares the logs as before. - Windows: hang diagnostics. If the game stops sending work to the GPU for
20 seconds, the log gets one dump of every thread's call chain
(RESOT_STALL_DUMP=0turns it off).
Known, not fixed: for about a second on entering a level some surfaces can
show pink and green; objects can still flicker between black and visible
while the opening camera shows the map; some vertices, the Prince's too, can
be out of place for half a second (present since the project's start). The
loading-screen and render-target fixes were built but not yet checked in
game. The demo keeps 0.4.0's behaviour except the palette check.
See VALIDATION.md for commands and results.
Full Changelog: reSOTv0.4.0...reSOTv0.4.1
reSOT v0.4.0
reSOT v0.4.0
Windows demo and retail executables and the shared Android APK use version 0.4.0; Android versionCode is 10. Both targets still require the user’s supported Xbox game files. Game content, logs and compiled packages are not committed.
Special Load Map. In reSOT Options on the main menu, on both games. The demo lists every map of its BF (20) and sends the title’s own Load Map message. The retail lists 30 area maps, with the original keys of the BF’s WOLInfo.bin. A map is loaded the way a saved game is: Start New Game only closes the menu, then the map is requested with one of its own checkpoints and no intro movie, before the balcony scene. 1401 and 8101 are entered at 1401 Cour and 8101 Bridge Support: loaded without a usable checkpoint, 1401 Corridor Start and 8101 Tower Base crashed.
Built-in cheats switch. Both games keep their developers’ cheats behind a variable of the universe AI that no menu set. “Cheats: On/Off” in reSOT Options (main and pause menus) and in the Windows F7 panel changes it while the game runs.
reSOT Options in the pause menu of both games. The demo hides “Quit to Demos Menu” (RESOT_DEMOS_QUIT=1 brings it back).
F7 Game behavior (Windows): tutorials on or off (retail; also on Android) and the dagger.
HD menu font. The menu font sheet of each game (512x128) is enlarged four times on the host with sharp edges, so menu text stays crisp at high resolutions; every letter keeps its place. Direct3D 12 and Vulkan renderers, Windows and Android. RESOT_HD_FONT=0 keeps the original.
Retail 7601 Salle no longer crashes. The title makes texture pages read-only, and the GPU executor then faulted writing to one of them. Those pages now keep write access.
Prince with a body after a map change. When a level brings a costume that is not loaded, the Prince’s set-up now picks a costume that is. Before, the Prince showed only his head.
Demo menu as in the E3 build. The main menu has its “E3 Demo” title above the choices again, and the “Prince of Persia / The Sands of Time” logo at the top left, drawn from the game’s own logo texture (Direct3D 12 and Vulkan). In play, that logo was drawn partly past the right edge once the reSOT menu entries existed (cause not found), so it is no longer drawn there.
Mali crash on Start Game (GitHub #8, #9). The Vulkan shaders no longer declare SPIR-V extensions that those drivers reject at the first pipeline.
Window icon. The game window’s title bar has its own icon.
Not yet validated by a person: the retail Speci
Full Changelog: reSOTv0.3.4...reSOTv0.4.0
reSOT v0.3.4
reSOT v0.3.4
Windows demo and retail executables and the shared Android APK are version 0.3.4 (Android versionCode 9). You still need your own Xbox game files.
Fixes
- Fewer crashes after "Start Game" on Mali GPUs (#8, #9). If the GPU driver refused to compile a single graphics pipeline, reSOT used to close the game. Now that draw falls back to the reference shaders, and is skipped only if those are refused too, so the game keeps running. This is the most likely cause of the crashes reported on Exynos 2100 (Mali-G78) and Helio G96 (Mali-G57), but it is not yet confirmed on those devices. If it still crashes, please attach the diagnostic archive from the launcher including the game logs.
- No more hang while the game waits for the GPU (demo and retail). When the game thinks the GPU is far behind, it waits for a GPU signal that reSOT could miss, which left the game frozen. The wait now also ends as soon as reSOT's renderer has processed everything the game sent, as the real GPU signal would.
Performance
- The parallel game/renderer mode introduced in v0.3.3 remains retail-only. It was tried on the demo, where it made the first level render almost black, so the demo keeps the previous mode.
New look
- Definitive reSOT logo in the README, in both launchers and as the app icon.
- The Android icon is adaptive: the logo sits on the launcher's night-blue ornament, so it fits round, rounded and square icon shapes. It also works as a themed (monochrome) icon on Android 13+.
- Both launchers now show the Prince of Persia title, with its sand cloud drifting behind the letters and shedding glowing grains, followed by "the sands of time" and a "Recompiled" badge.
Known issues
- Constant flickering on Galaxy S25 / S25 Ultra (#7) is not fixed yet: a log or screen recording from those devices is needed.
- Not yet validated on the reporting Mali devices.
Full Changelog: reSOTv0.3.3...reSOTv0.3.4
reSOT v0.3.3
reSOT v0.3.3
Windows demo and retail executables and the shared Android APK are version 0.3.3 (Android versionCode 8). You still need your own Xbox game files.
Performance
- Game and GPU now run in parallel (retail). Before, the game stopped at every GPU submission (KickOff) and waited until the renderer had finished drawing the previous batch and presenting it, so the two never worked at the same time. Now the game keeps building the next frame while the renderer draws the current one, up to 16 submissions ahead. In a scripted Windows Vulkan run, menu FPS went from 174–221 to 226–275 and the first level from 134–192 to 177–216. Setting
RESOT_KICK_AHEAD=0restores the old behaviour. - Android: calls between the game's recompiled functions are now direct instead of going through the library's indirect-call table.
Fixes
- Mid-game freeze with only the audio playing (retail). When the GPU fell far behind, the game's Direct3D code waited for a GPU interrupt that reSOT did not emulate, so it could stop forever. This matches the freeze reported in chapter 25 around the Gear Room. reSOT now emulates that interrupt and the GPU status register the game checks.
- Audio crackle (Windows and Android). The emulated sound chip and your sound device run on slightly different clocks. That drift used to be handled by clearing the audio queue or inserting silence, and each of those was an audible click. The playback speed now adjusts by at most 0.8%, which you cannot hear, to keep the queue steady.
New look
- New reSOT logo in the README, in both launchers and as the app icon on Windows and Android.
- In both launchers the sand around the logo is animated: it streams and sheds glowing grains.
- The previous logos and icons are kept in
docs/media.
Not yet validated
- Android in-game frame rate with this version.
- Replaying the places where the freeze occurred.
- Listening tests for the audio fix.
- The demo with these changes: it keeps the old way of submitting GPU work until it is checked on its own executable.
See VALIDATION.md for the commands and results.
Full Changelog: reSOTv0.3.2...reSOTv0.3.3
reSOT v0.3.2
reSOT v0.3.2
- Fixed colored-pixel corruption on Poco X3 Pro and restored operation on the tested MediaTek/Samsung device.
- Restored character shadows while preserving the fix for objects incorrectly showing through geometry.
- Replaced the separate post-processing and texture-glow options with Graphics preset, available in demo and retail on Windows and Android.
| Preset | Behavior |
|---|---|
| Reduced | Lower effect resolution, with character shadows disabled. |
| Standard | Previous High quality without texture glow. The new default. |
| Full | Standard quality with texture glow enabled. |
Debug Off remains available through the INI and Windows F7 menu. Existing settings migrate automatically.
- Added Android diagnostic sharing: tap the launcher version to generate a temporary ZIP containing demo and retail logs and open Android’s share menu.
- Added offline APK signature and publisher-certificate verification to detect altered or re-signed packages, while preserving compatibility with existing official installations.
- Added optional GitHub update notifications to both launchers, with Update and Close buttons styled to match the launcher. Network failures do not prevent startup.
Both Windows targets and the Android APK build successfully. All 14 GPU regression tests and the menu, integrity and update-check tests pass. The new presets and Android startup dialogs still require device validation.
Full Changelog: reSOTv0.3.1...reSOTv0.3.2
reSOT v0.3.1
reSOT v0.3.1
This update fixes scene rendering, HUD alignment and touch navigation, and refreshes the launcher on Windows and Android.
Rendering fixes
- Fixed incorrect depth handling for triangles crossing the camera plane, resolving the transparent bridge issue in the demo.
- Fixed LowerBath light halos that remained excessively bright or visible through geometry.
- Corrected partial depth clears and improved vertex precision.
- Fixed an uninitialized-value issue in DXT texture decoding.
HUD and touch controls - Fixed the upgraded retail health-bar background becoming misaligned as the maximum health increases.
- Added touch support for literal-text menu choices, including Yes/No confirmation dialogs.
- Added support for tapping the left and right arrows in the retail save selector.
- Improved hit detection for side-by-side menu choices.
- Kept the overlay toggle visible while touch controls are shown. The FPS button becomes invisible when the overlay is hidden, while its touch area remains active.
Launcher updates - Added the current app version in the upper-left corner.
- Updated the headings to reSOT, Prince of Persia and The Sands of Time.
- Preserved Atlantis lettering for the first two headings and the regular font for the final subtitle.
Builds and validation - Windows demo and retail executables: v0.3.1
- Android APK: v0.3.1, versionCode 6
- All 14 native GPU tests, both menu-pointer test suites and touch-overlay tests passed.
- The bridge, LowerBath lights, extended health bar, menu touch controls and launcher changes were confirmed on the Android test device.
Other devices, remaining scene-specific graphical issues and full-game completion remain under validation. Your own supported Xbox game files are required.
Full Changelog: v0.3.0...reSOTv0.3.1