PSVita Home
What's New
Homebrew
Plugins

Illusia Vita v1.0.1 by MetalSyntax
Last Release: Sep 2, 2026
Downloads: 104

Native port of ILLUSIA (Android, com.gamevil.illusia, Gamevil Nexus2 engine) to the PS Vita. Runs the original libgameDSO.so unmodified through a SoLoader + FalsoJNI bridge.
Name Version Released Hits DL Link QR
illusia.vpk v1.0.1 09/02/26 8 Download QR
*ILLUSIA** for the PS Vita is out of Beta! This release builds directly on
the v0.9.0-beta foundation -- same unmodified original ARMv6 Android
executable (`libgameDSO.so`, Gamevil's **Nexus2** engine), running natively
through a custom SoLoader/FalsoJNI bridge with OpenGL ES 1.1 fixed-function
rendering on **vitaGL** -- with a full rewrite of the audio engine and a
round of real, root-caused bug fixes found and confirmed since the Beta,
each one cross-checked against the decompiled `.so` and real console logs,
not guessed. Full history in [`port_progress.md`](port_progress.md).

## 🔊 Audio Engine Rewrite (the big one this release)

The Beta's custom WAV mixer got replaced end to end after finding it was
silently playing the wrong content in several situations:

- **Real music, not sound effects, in-game and in cutscenes.** The `.so`
never sends a literal sound-file number across the JNI boundary -- it
resolves it to its position in an internal 70-entry registered-id list and
sends *that index* instead (confirmed byte-for-byte by reading the real
table straight out of `libgameDSO.so`'s `.data` section). Our old code
treated that index as a literal filename, so it played unrelated
low-numbered files instead of the actual BGM tracks the game intended --
including the title screen's own theme. Fixed by translating the index
back to the real id before every playback.
- **Higher-fidelity audio.** Switched from the bundled 8kHz mono `.wav`
assets to the bundled 22050Hz stereo `.caf` (IMA4 ADPCM) assets -- the same
recordings, noticeably crisper -- with a from-scratch IMA4/CAF decoder.
- **Correct volume, no more clipping/distortion.** A real gameplay log
showed the engine always sends volume on a 0-100 scale, not the 0-10 the
mixer assumed -- every sound was being amplified 10x and hard-clipping.
Fixed to match the real scale.
- **No more overlapping ambient loops going silent after one playthrough**
(fixed routing to match the real engine's own loop-vs-one-shot logic
instead of a guessed id range).
- **The Gamevil boot jingle no longer plays ahead of its own logo** --
audio output is now gated to start exactly in sync with the first real
frame shown on screen.
- **Rebuilt on SDL2** (`SDL_OpenAudioDevice`) instead of a hand-rolled
`sceAudioOut` thread, for a more standard, maintainable audio backend.

## ⚡ Performance

- Reduced file I/O overhead during stage/area transitions: removed a
redundant existence-check syscall before every asset open, and gave the
game's own file reads a larger buffer to cut down on small, repeated I/O
calls. Confirmed smoother on real hardware, though very large or
asset-heavy areas may still show a brief pause while loading -- still
being profiled, see Known Issues.

## 🐛 Also Fixed Since the Beta

- **Save/load hardened further:** the `struct stat` layout fix from the
Beta got a stricter, compile-time-verified version (`_Static_assert` on
the real field offset), closing the door on the same class of corruption
resurfacing on a toolchain update.
- **`CMvNetworkMenu::DrawMissionMode()` crash** during normal gameplay,
caused by an over-broad "offline mode" stub that zeroed out UI state the
renderer still expected to read every frame.
- A couple of build-only fixes (missing `sceIoMkdir` declaration, an SDL2
vitasdk dependency needed for the audio rewrite above).

## ✨ Carried Over From the Beta

- **Full physical + touch controls**, including a SELECT-to-skip-cutscene
mapping added specifically for this port (no original input the game
exposes could otherwise advance a scripted cutscene).
- **Persistent save games** (`ux0:data/illusia/saves/`).
- **Clean boot** with vitaGL's own splashscreen disabled -- straight to the
title screen.
- **30 FPS cap** matching the original engine's intended pacing.

## ⚠️ Known Issues

- One reported cutscene sound that may still be playing an unexpected id --
under investigation with diagnostic logging in place, not yet reproduced
with a confirmed root cause.
- Stage transitions are noticeably better after this release's I/O fix, but
not fully profiled -- a brief pause is still possible on heavier areas.

Neither blocks normal play. If you hit either (or anything else), a console
log goes a long way -- see [`port_progress.md`](port_progress.md) for how
every other bug in this list was actually diagnosed.

## 🛠️ Installation Instructions

1. Install `kubridge.skprx` if you don't already have it (checked explicitly
at boot, see `source/utils/init.c`).
2. Install `libshacccg.suprx` if you don't already have it (standard
requirement for any homebrew using vitaGL/SceShaccCg to compile shaders).
3. Install the provided `illusia.vpk`.
4. Extract the `assets/` folder from your own legally obtained copy of the
original ILLUSIA Android APK and copy it to `ux0:data/illusia/assets/`.
(Note: game data files are **not** provided with this release -- this repo
only distributes the port's code, never the original game's assets.)
5. Launch the game and enjoy! The first run automatically creates
`ux0:data/illusia/saves/` for save data.

A huge thanks to the PS Vita homebrew community and the vitaGL contributors
for making this possible! Let us know your feedback and bug reports.
Name Version Released Hits DL Link QR
ILLUSIA Vita v1.0.1 09/02/26 44 Download QR
Illusia Vita v1.0.0 08/31/26 51 Download QR