PSVita Home
What's New
Homebrew
Plugins

Rayman Fiesta Run Vita v0.1 by MetalSyntax
Last Release: Nov 12, 2026
Downloads: 2

An unofficial, native iOS-to-PS Vita wrapper port of Rayman Fiesta Run (originally developed by Ubisoft Montpellier and Pastagames). There is no Android .so and no JNI here: the port ships its own Mach-O loader and Objective-C runtime that map the official iOS ARMv7 executable (rfr_dev, from the 1.2.3 IPA) into PS Vita RAM and replace the Apple frameworks it uses (Foundation, UIKit, GLKit, CoreGraphics, OpenAL/AudioToolbox, GCD/Blocks, sqlite) with native implementations on top of vitaGL, openal-soft, FreeType and the Vita system libraries.
Name Version Released Hits DL Link QR
raymanfiesta.vpk v0.1 11/12/26 2 Download QR
# Rayman Fiesta Run (PS Vita) — Beta Release v0.1

First public build of the native iOS → PS Vita port of *Rayman Fiesta Run* (iOS 1.2.3). A custom Mach-O loader and Objective-C runtime run the original ARMv7 executable; on physical hardware the game boots to the main menu and the world map, and plays levels with music, touch and working saves.

## 📦 Release Package Contents

1. **`raymanfiesta.vpk`** (`PSVRFR001`, version `01.00`): the Mach-O loader with its Foundation / UIKit / GLKit / CoreGraphics / AudioToolbox / AVFoundation / OpenAL replacements, vitaGL presentation and a Rayman Fiesta Run LiveArea.
2. **`rebase.bin`**: relocation table of 62,150 absolute 32-bit pointers for the 1.2.3 `rfr_dev` executable (armv7 slice).
3. **`binds.bin`**: 6,388 import slots (862 symbols) that point into Apple frameworks, resolved by the loader at startup.
4. **`controls.txt`**: button → touch mapping (not calibrated yet; the game is played with touch).

No game code or assets are included.

---

## 🛠️ What are `rebase.bin` and `binds.bin`?

The loader maps the executable at `MACHO_SLIDE = 0x98000000` above its link address, so every absolute pointer in the code's literal pools and in `__DATA` has to be moved by hand.

- **`rebase.bin`**: `'RBS1'`, `u32 count`, then `count × u32 vmaddr` of words that hold an absolute address (`+ MACHO_SLIDE`).
- **`binds.bin`**: `'BND1'`, `u32 count`, then `count × {u32 vmaddr, u32 addend, u8 lazy, char name[]}` for each slot bound to an external symbol.

Both are generated by `tools/ios_prep.py`; `tools/stage_data.sh` runs the whole pipeline.

---

## 🚀 Player Installation Guide

1. **Requirements**: Enso 3.60/3.65, `kubridge.skprx` in `ur0:tai/config.txt` (`*KERNEL`), `libshacccg.suprx` in `ur0:data/` (ShaRKBR33D).
2. **Game files**: your own decrypted *Rayman Fiesta Run* 1.2.3 IPA. Run `tools/stage_data.sh path/to/rfr_dev.app` (Python 3 + capstone, ffmpeg for the music) to build `ux0_data/raymanfiesta/` and copy it to **`ux0:raymanfiesta/`** (not `ux0:data/`: `casa_gamedata` nests one folder deeper than `ux0:data/` allows), together with `controls.txt`.
3. **Install** `raymanfiesta.vpk` with VitaShell.

---

## 🎮 Controls

| Input | Action |
| :---: | :--- |
| **Touch screen** | Game touch controls (jump, menus, world map) |
| **Buttons** | Mapped to touch points in `controls.txt` (default layout not calibrated) |

---

## 📋 Changelog (v0.1)

- **Loader**: armv7 slice loaded with 62,150 rebases and 6,388 binds; 231 ObjC classes, 6 categories, 97 initializers.
- **Screen**: the game runs as an iPhone 5 (`GameViewController_iPhone5`, 16:9) at 1136×640, scaled to 960×544 with no black bars.
- **Saves**: `UIDocument` and `NSFileHandle` implemented, plus `-[NSData getBytes:]` (its absence made the `Activities` parser read garbage and crash).
- **Audio**: OpenAL SFX; music through `AVAudioPlayer` (`.ogg` converted when staging).
- **Touch**: a 4 pt slop before `touchesMoved:` — panel jitter was read as a drag and cancelled entering a world on the map.
- **Time functions**: `gettimeofday`, `time`, `difftime`, `localtime`/`gmtime` now use iOS's 32-bit `time_t`/`timeval` (the Vita's newlib uses 64-bit: the game's loading-screen clock was broken and its stack was overwritten).
- **Loading**: single-read `NSData` files, 64 KB `fopen` buffers, cached `pathForResource:`, `CGContextDrawImage` without per-pixel divisions.
- **Performance**: duplicate GLKView presents removed (levels ~45–50 FPS); VBO shadow copies looked up through a hash table.
- **Map crash**: the teensy counter's UV table is filled late (its texture atlas isn't ready when the map first draws it).

---

## ⚠️ Known Issues

- The world map runs at about 19 FPS (CPU-bound); levels run at ~45–50 FPS.
- The first load from the Ubisoft logos to the main menu takes about 30 s.
- Not yet confirmed on console in this build: the "Loading.." screen before the menu (it was black), faster image decoding, music read with larger buffers.
- The teensy counter on the world map is not drawn.
- Game Center, in-app purchases, Facebook and online downloads are stubbed.

Installation and build instructions: see [README.md](README.md).
Name Version Released Hits DL Link QR