Skip to content
PORTSNATIVE.
HomeCatalog
Web GamesEmulatorsToolsNews
PORTSNATIVE.

A catalog for discovering ports and related projects. We link to official sources and do not host original game files.

ExploreCatalogMy list
InformationAbout usSuggest a portSupportDonationsLegal notice
© 2026 PortsNative
Back to catalog
Prince of Persia Classic (PS Vita)
PORTSNATIVE

Prince of Persia Classic (PS Vita)

NATIVE PORTACTION / ADVENTUREBETA

Prince of Persia Classic (PS Vita)

Prince of Persia Classic

OriginOther

TechnologyNative C/C++ port (engine reimplementation)

View official project

About the project

Prince of Persia Classic es un videojuego de acción y aventura en 2007.

Official project information

Author's original READMEOpen on GitHub ↗
<h1 align="center"> Prince of Persia Classic · PSVita Port </h1> <p align="center"> <a href="#installation-instructions">How to install</a> • <a href="#known-issues--current-limitations">Known Issues</a> • <a href="#controls">Controls</a> • <a href="#build-instructions-for-developers">How to compile</a> • <a href="#beta-testing--contributing">Beta Testing / Contributing</a> • <a href="Docs/README_ES.md">Versión en Español</a> </p> <p align="center"> <img src="extras/livearea/pic0.png" width="600" alt="Prince of Persia Classic — PS Vita LiveArea background"> </p>

Prince of Persia Classic is a 2012 release for Android and iOS devices that recreates the levels of the legendary 1989 classic game with modernized 3D graphics.

This repository contains a wrapper/loader for the Android version of Prince of Persia Classic (based on Cocos2d-x), adapting the environment to run the native ARM dynamic libraries (.so) on the PS Vita using TheFloW's Android SO Loader base.

This is my first PS Vita port and my first homebrew project of this scale — see Beta Testing / Contributing below, I could really use the help.

⚠️ Legal & DMCA Disclaimer

Prince of Persia Classic is the intellectual property of Ubisoft Entertainment. This repository does NOT contain any original code, executables, protected binaries, or game assets. It strictly provides the open-source "wrapper" code. The included LiveArea assets are AI-generated or open-source images, free from copyright restrictions. On-screen text is currently rendered with a bundled open-source font (DejaVu Serif, Bitstream Vera license) instead of the game's original typeface — see Known Issues.

To play the game, you MUST possess a legitimate, legally obtained copy of the Android game. Users must manually extract and provide their own files (the .so libraries, plus the game's data — either as .apk/.obb, or as the equivalent files extracted loose, see step 5 below). None of that copyrighted content is tracked in this repository — see .gitignore (*.so, *.apk, *.obb, *.suprx, ux0_data/, original/, bin/).


Known Issues / Current Limitations

This is an early, actively-developed port. Please read this list before reporting a bug — it may already be a known/tracked issue (see Docs/Fixes_Log.md and Docs/plan_portabilidad.md for the full technical history).

  • Exit crash fix: Fixed an issue where selecting 'Yes' in the game's in-game Exit dialog crashed instead of returning cleanly to the LiveArea (Cocos2dxActivity_terminateProcess).
  • In-game controls remapping overlay: Press START + SELECT at any time to open the configuration menu. Allows remapping any action, binding PS Vita rear touch quadrants (L2/R2/L3/R3), tuning analog deadzone, and saving directly to ux0:data/popclassic/controls.txt.
  • Native PS Vita trophies (v01.55): 18 trophies (17 + Platinum) install on first launch and pop the system notification when unlocked. Requires NoTrpDrm.suprx (see Setup).
  • Store without real money (v01.55): life potions/revives are bought with coins, and coins are earned from in-game score (1 point = 1 coin, paid out when the main or pause menu opens). Screens that asked for real-money purchases are no longer shown.
  • Not using the game's official fonts yet. Since Sony's native font APIs (ScePvf/ScePgf) aren't implemented on Vita3K and pulling in the original Android font assets raised licensing questions, text is currently rendered with the open-source, freely-licensed DejaVu Serif font via stb_truetype. On-screen text would look closer to the original Ubisoft style with the real font.
  • Not compatible with Vita3K (emulator). This is a confirmed bug in Vita3K itself, not in this port: the menu, text, and audio all work correctly, but starting a real game ("New Game"/"Quick Game") crashes because Vita3K's renderer mishandles non-power-of-2 swizzled textures (confirmed by reading Vita3K's own source, reproducible 3/3 times, and still present on Vita3K's latest master at the time of testing). This port targets real PS Vita hardware. Technical details in Docs/plan_portabilidad.md §9.17.

As of the current build (v01.55), controls remapping, exit crash fixes, full Simplified Chinese text, native trophies and the coin store are functional.

Found something not on this list? Please open an issue — see Beta Testing / Contributing.


Installation Instructions

Choosing a VPK: Debug vs. Play build

This project can produce two different VPK builds from the same source, controlled by the CMake option ENABLE_VERBOSE_LOG:

BuildCMake flagUse it forNotes
Play (recommended)-DENABLE_VERBOSE_LOG=OFF (default)Actually playing the gameBest performance, no logging overhead.
Debug-DENABLE_VERBOSE_LOG=ONReporting a bug / helping testWrites a detailed, timestamped trace (module loads, JNI calls, audio/video/scene events) to a log file on the memory card, at the cost of extra I/O and occasional FPS drops.

If you're not sure which one you need: install the Play build. Only switch to the Debug build if something is going wrong and you want to grab a log file to attach to a bug report.

Steps

To install the port on a real PS Vita:

  1. Ensure your console is running a CFW that allows signed homebrew (Enso, HENkaku/h-encore², etc. — firmware 3.60/3.65 or the currently supported h-encore² range).
  2. Install the kubridge, FdFix, and NoTrpDrm plugins by adding them to your config.txt:
    *KERNEL
    ur0:tai/kubridge.skprx
    ur0:tai/fd_fix.skprx
    
    *main
    ur0:tai/NoTrpDrm.suprx
    

    ⚠️ Important for Trophies: NoTrpDrm.suprx is required under *main for the console to install and pop native PS Vita trophies without DRM errors (NP-6185-0). Be sure to reboot the console after editing config.txt.

  3. Install libshacccg.suprx (Sony's shader compiler). You can obtain a legitimate copy from your own console using the ShaRKBR33D homebrew — it can never be redistributed, so it is not included in this repository (.gitignore: *.suprx).
  4. Install the generated .vpk (see the table above for Debug vs. Play).
  5. Obtain your own legal copy of the Android game. Extract its data and lay it out on the console under ux0:data/popclassic/ with exactly this structure — original.apk/the .obb are not needed at all, just the loose files below:
    ux0:data/popclassic/
    ├── libcocos2d.so
    ├── libcocosdenshion.so
    ├── libgame_logic.so
    ├── appConfig.txt                 <- required (either here or inside Data_960_576/)
    ├── controls.txt                  <- optional: custom controller mapping (auto-generated)
    ├── save/                         <- empty folder, the game writes its saves here
    ├── logs/                         <- only used by the Debug build; created automatically if missing
    ├── Data/
    │   ├── Audio/                    <- Ambiance/, Music/, SFX/ (mirrors the game's own folder layout, .mp3 files)
    │   ├── font/                     <- .ttf files, flat (no subfolders)
    │   └── Video/Mid/                <- cutscenes as .mp4, flat (no subfolders)
    └── Data_960_576/                 <- Animations, Effects, Localization, Logo, Maps, Particles, Texture, appConfig.txt
    

    Everything the game needs is now served loose from the memory card — the engine's own file-loading function used to route every relative-path request straight into the .apk/.obb ZIP with no loose-file check, unlike textures/maps/animations which already worked loose; this port now hooks that function to serve a loose file for anything, so the .apk/.obb are never consulted as long as Data_960_576/ (with Localization/ and appConfig.txt) is present. You can still point it at original.apk/the .obb instead if you'd rather not extract the full loose tree — both paths remain supported, the hook falls back to them automatically if a loose file isn't found. See Docs/Fixes_Log.md #19 for the technical detail.

  6. Extract the three native libraries from the lib/armeabi/ (or lib/armeabi-v7a/) folder of your .apk and place them directly under ux0:data/popclassic/ as shown above:
    • libcocos2d.so
    • libcocosdenshion.so
    • libgame_logic.so

For a full step-by-step FTP transfer walkthrough (using VitaShell), see Docs/en/INSTALL_HARDWARE.md.

(Note: check community forums for patching scripts and tools to prepare your legal APK/OBB files, or extract the equivalent loose folder structure directly.)

Controls

The port includes a full physical controls remapping system and an in-game configuration overlay:

In-Game Remapping Menu

  • Press START + SELECT together at any time to open the remapping overlay.
  • Navigate with D-Pad Up/Down.
  • Press Cross to replace a button binding, Square to add a secondary button binding, or Triangle to unbind.
  • Adjust Analog Stick Deadzone (left/right to calibrate).
  • Supports Vita physical buttons, PlayStation TV controllers (DualShock 3/4 with native L2/R2), and PS Vita Rear Touch quadrants (L2, R2, L3, R3).
  • Bindings are saved automatically to ux0:data/popclassic/controls.txt.

Default Controls

ButtonPlatform modeCombat mode
Left Analog Stick / D-PadMove Prince — tap for one careful step, hold to runsame
CrossJumpAttack
SquareCrouchDefend / parry
TriangleInteract (grab, levers)Sheath sword
Circle / DownCrouch / Roll—
UpJump / climb—
StartPause Menu (Android KEYCODE_BACK)Pause Menu
SelectMenu (Android KEYCODE_MENU)Menu
Start + SelectOpen Controls Configuration Overlaysame
L + R togetherShow/hide the on-screen touch buttonssame
Cross / StartSkip cutscene (during video playback)—
TouchscreenStill works for menu navigation—

Coming from v01.20 or earlier: Square used to be a "walk" modifier and is now crouch/defend. Walking no longer needs a modifier. Full details in Docs/RELEASE_v01.28.md.

Build Instructions (For Developers)

You need the PS Vita SDK compiled with softfp support:

git clone https://github.com/vitasdk-softfp/vdpm

Development workflow used for this port:

  1. Set up the toolchain. Install vitasdk (softfp) and export VITASDK to point to it.
  2. Clone this repo and, to run it on your own hardware, rebuild the ux0_data/popclassic/ asset tree from your own legal APK/OBB (see Installation Instructions — this folder is gitignored and never shipped).
  3. Build.
    cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DENABLE_VERBOSE_LOG=OFF
    cmake --build build
    
    This generates build/popclassic_audio.vpk. See Known Issues regarding real gameplay on Vita3K.
  4. Deploy to real hardware over FTP with VitaShell and iterate on just the eboot.bin (no full reinstall needed per change) — full walkthrough in Docs/en/INSTALL_HARDWARE.md.
  5. Debug. Build with -DENABLE_VERBOSE_LOG=ON for a detailed trace log on the memory card; if the game crashes with no dialog, use the dump CMake target (make dump) to pull a core dump over FTP and symbolize it against build/so_loader.elf with vita-parse-core.
  6. Check Docs/CHANGELOG.md and Docs/Fixes_Log.md before starting work on a bug — there's a good chance it's already been investigated.

Beta Testing / Contributing

This is my first time porting anything to a console, and my first Vita homebrew project — I'm sure there's a lot of room for improvement. I'm actively looking for beta testers on real PS Vita hardware to help chase down the issues listed above (especially the action-loop bug, cutscene playback, and D-Pad running). Bug reports with a log file from the Debug build are extremely helpful.

Pull requests are very welcome — fixes, cleanups, documentation, translations, anything. If you're picking up one of the Known Issues, feel free to open an issue first to say you're on it, but it's not required.

Credits

Port / wrapper development: MetalSyntax

This project is built on top of soloader-boilerplate by v-atamanenko, itself based on TheFloW's Android SO Loader approach for the PS Vita. Please keep this credit if you fork or redistribute this wrapper.

This port was made with AI support, using the following models: Claude Sonnet 5, Fable 5, and Gemini Pro 3.1.

License

This loader is distributed under the MIT License. See the LICENSE file for more details.

Read official guide
CALIFICACIÓN
—
Loading votes…
Advertisement

PROJECT FILE

Project type
NATIVE PORT
Genre
Action / Adventure
Status
beta
Original platform
Other
Technology
Native C/C++ port (engine reimplementation)
Version
—
Updated
—

Target platforms 0

View on GitHub
Advertisement