Native Windows x64 Binary Retranslation

Prince of Persia
The Shadow and the Flame

Native Windows PC Port · ShiVa3D Engine · Dynarmic JIT Runtime

An authentic, native Windows x64 PC port of the classic 2013 remake of Prince of Persia: The Shadow and the Flame. Rather than relying on heavy Android emulators that virtualize an entire operating system and kernel, this project runs the original ARMv7 client library (libS3DClient.so) natively as a standalone 64-bit Windows executable through Dynarmic dynamic retranslation, Desktop OpenGL, OpenAL Soft, and a dedicated 2000s-style configurator.

Core Engineering Highlights

Zero OS Emulation Overhead

No BlueStacks, Nox, or Android VM hypervisors. The game's ARMv7 ELF binary runs directly inside Windows user space with near-zero latency, negligible CPU footprint, and instant startup times.

Dynarmic Dynamic Retranslation

Employs a custom precompiled Dynarmic JIT fat library to retranslate 32-bit ARM machine code directly into host x86-64 machine instructions on the fly with optimized register mapping.

4K UHD & Desktop OpenGL

Bridges mobile OpenGL ES 2.0 to Desktop OpenGL compatibility profile. Features real-time software ETC1 texture decompression, true 16:9 widescreen resolutions up to 3840x2160, MSAA 8x, and 16x Anisotropic Filtering.

OpenAL Soft 3D Spatial Audio

Intercepts Android OpenSL ES and OpenAL calls and bridges them directly to modern 64-bit OpenAL Soft, preserving authentic surround sound, environmental reverb, and crystal-clear music.

Full Controls & Gamepad Support

Powered by SDL2 with support for XInput/DirectInput controllers, mouse buttons (Left, Right, Middle, Extra buttons, Scroll wheel), and customizable keyboard layouts with conflict resolution.

Nostalgic Config Launcher

Includes PoPSnF_Launcher.exe, a retro 2000s Prince of Persia style launcher with 1-click APK asset extraction, Dolphin-style key binding, and full undo/redo configuration history.

Subsystem Bridge Architecture

GUEST EXECUTION LAYER

Prince of Persia: SnF Engine

libS3DClient.so ARMv7 ShiVa3D Game Logic & Assets
SVC Trampolines & Memory Hooks
HOST BRIDGE SUBSYSTEMS
bridge_gles Translates GLES 2.0 to Desktop GL; on-the-fly ETC1 software decompression
bridge_libc Bionic libc emulation, 28-bin segregated heap, POSIX VFS & STK loader
bridge_openal Bridges sound calls to 64-bit OpenAL Soft with 3D spatial listener positioning
bridge_jni Lightweight user-space Android JNIEnv & JavaVM virtual interface structs
Native x64 System Calls
NATIVE WINDOWS PLATFORM

Modern PC Hardware & OS

SDL2 Windowing & Events Hardware OpenGL Driver OpenAL Audio Device Win32 Filesystem XInput / DirectInput

Guest Address Space Layout (512 MB Arena)

All ARM code, stacks, heaps, and mock Android structures reside inside a deterministic 512 MB virtual memory window:

Address Range Region Description
0x00000000 - 0x0000FFFF Low Scratch Scratchpad memory & argument staging buffers
0x00010000 - 0x0001FFFF SVC Trampolines Supervisor Call trampolines (0xEF000000 | idx → BX LR)
0x00020000 - 0x0002FFFF Data Imports __stack_chk_guard, _ctype_, __sF, stdout, stderr
0x00030000 - 0x0003FFFF JNI Structs Virtual JNIEnv & JavaVM pointer tables
0x01000000 - 0x01BD0B6C ELF Image Original libS3DClient.so game logic, code segments & static data
0x02000000 - 0x1E000000 Segregated Heap Dynamic 28-bin segregated free-list heap with 448 MB memory capacity
0x1E000000 - 0x1FFFFFE0 Guest Stack 32 MB downward-growing ARM stack arena with page guards

Dedicated Retro Launcher & Configurator

1-Click Asset Extractor

Seamless APK Setup

Drop the original game APK directly onto PoPSnF_Launcher.exe. In under 1 second, it inspects, verifies, and unpacks libS3DClient.so, S3DMain.stk, and game splash screens automatically into the game directory.

Visual Fidelity Controls

Modern Display Settings

Select native 16:9 widescreen resolutions from 720p up to full 4K UHD (3840x2160). Toggle Borderless Fullscreen, VSync, MSAA up to 8x, 16x Anisotropic Filtering, and customizable frame limiters (30, 60, 120, 144, 165, 240, or Unlimited).

Dolphin-Style Remapping

Advanced Input Mapping

Map any action to keyboard keys, mouse buttons (Left, Right, Middle, Mouse 4/5, Wheel Up/Down), or gamepads. Duplicate bindings automatically swap without collision. Supports Dolphin-style Escape key binding and full Undo/Redo (Ctrl+Z / Ctrl+Y).

Default Controls Scheme

Bindings can be customized in Launcher or in game/config.ini
Action Keyboard & Mouse Default Gamepad Default (Xbox / Generic) Description
Move Left / Right A / D or ← / → Left Stick / D-Pad Left & Right Horizontal movement across platforms
Jump / Climb Up W or ↑ or Space A Button / Left Stick Up Ascend ledges, leap across chasms, wall run upward
Crouch / Roll / Drop S or ↓ or Left Ctrl B Button / Left Stick Down Roll through narrow passages, drop down ledges
Attack / Strike Mouse Left or J X Button Execute sword attack combo sequences
Block / Parry Mouse Right or K Y Button / Left Trigger Deflect enemy strikes and prepare counter-attacks
Drink Health Potion E or H Right Shoulder (RB) Restore health from inventory vials
Interact / Action F X Button (Contextual) Pull levers, inspect pressure plates, open gates
Pause / In-Game Menu Escape Start / Menu Button Open game pause menu and options

Setup & Installation Guide

01

Requirements

- 64-bit Windows 10 or 11
- OpenGL 3.3 compatible graphics card
- Microsoft Visual C++ 2015-2022 Redistributable (x64)
- A legitimate Android .apk of Prince of Persia: The Shadow and the Flame (v1.0.0 or later)

02

Extract Game Files

Download the latest release from GitHub. Launch PoPSnF_Launcher.exe and drag-and-drop your game .apk into the extraction prompt. The launcher will automatically unpack and verify the required assets in seconds.

03

Configure & Play

Choose your preferred resolution (e.g. 1080p, 1440p, or 4K UHD), toggle VSync or MSAA, adjust your keybindings or controller layout, and click Launch Game!