Skip to content

Android Beta 0.9.1

Choose a tag to compare

@sergiomanzur sergiomanzur released this 16 Aug 20:28
· 24 commits to master since this release

Castlevania: Symphony of the Night, running natively on Android. Not an emulator — the
PlayStation code is statically recompiled into C# and built into a real app.

A fix release on top of Beta 0.9, tested on a Retroid Pocket 6.


Fixed

16:9 and fit-to-screen no longer stretch the picture. Choosing a wider ratio used to
widen the rectangle the frame was drawn into without changing the frame itself, so a 4:3
picture was pulled sideways to fill it. The game now genuinely renders wider, so widescreen
shows more of the level instead of a distorted version of the same view.

The aspect modes now mean what they say:

  • 4:3 original — the framing the game was made for
  • 16:9 widescreen — true 16:9, more level visible left and right
  • Fit device — renders at your screen's own ratio, filling it exactly with no bars
  • Stretch to fill — still stretches, for anyone who wants it

Glitched text and warped sprites are gone. Both were the stretching above: scaling
unevenly duplicates some pixel columns and not others, which breaks up small text and makes
a symmetrical object's edges disagree. Nothing looks squashed now, so neither happens.

The d-pad no longer presses L1 or L2 with it. The movement and action pads are
hit-tested by radius, and that radius reached past their artwork into the shoulder buttons
above — while nothing stopped a single touch from matching more than one control. Pressing
Up would fire L2 along with it, since L2 sits directly above. One touch now activates one
control, and the shoulders sit further clear of the pad.

Audio delay roughly halved. The buffer was pinned at a tenth of a second no matter what
the device could manage. It now sizes itself from the device's own minimum and asks for the
platform's low-latency path where that exists.

Audio crackling fixed. Separate cause: the mixer ran as an ordinary background thread, so
Android's scheduler could interrupt it mid-frame and the sound buffer would run dry between
writes. It now runs at the priority the system reserves for audio.


Added

Import and export memory cards, under ⚙ MENU → Save → Memory cards.

Saves live in the app's private storage, so until now there was no way to back one up, move
it to another device, or bring one over from the desktop build.

  • Export writes the card anywhere you choose, and flushes the live card first so it is
    never a save behind what you just did
  • Import accepts the raw 128 KB card used by .mcr, .mcd and .sav, plus DexDrive and
    VGS files
  • A file that is not a formatted card is refused rather than written, so a mis-tap cannot
    wipe a save, and the card being replaced is kept beside the new one
  • The app restarts after importing, which is what makes the imported card load

Installing

  • Android 5.0 (API 21) or newer, arm64 or x64
  • Download the APK below and open it
  • If the install is blocked, allow "install unknown apps" for whichever browser or file
    manager you downloaded it with

Upgrading from 0.9 keeps your disc, saves and settings.


You still need your own copy of the game

This APK contains no game data, and never will. You need a legally owned copy of the
North American PlayStation release, dumped to .cue + .bin.

On first launch the app asks for it: select the .cue and both .bin tracks together
(long-press to multi-select) and it copies them in, once. Keep about 600 MB free for the
copy; the originals can be deleted afterwards.


Please read this before reporting anything

The BlackLabelHQ team does not endorse this port, and it is not affiliated with them.
It was built with heavy AI assistance and verified by hand on real devices. They intend to
release their own Android port in their own time — if you want the official one, wait for
theirs.

Don't open issues about this build on their repo, don't ask their Discord for support with
it, and don't take it to the SOTN Decomp project either. Bugs in this build are mine. Report
them here.

Full details, build instructions and credits are in the
README.