Skip to content

Releases: xmiguel911x/PSX3IOS

beta 0.2.5

beta 0.2.5 Pre-release
Pre-release

Choose a tag to compare

@xmiguel911x xmiguel911x released this 24 Aug 23:07
6f56d93

File selector fixed, TrollStore version added

beta 0.3

beta 0.3 Pre-release
Pre-release

Choose a tag to compare

@xmiguel911x xmiguel911x released this 23 Aug 03:07
6f56d93

beta 0.3

the per-game core settings translated
into every language the app speaks, and two texts that were confidently telling
people the wrong thing.

Language

  • The per-game core settings are readable in all fourteen languages. The
    explanations under LLVM precompilation, SPU block size, resolution scale and the
    decoder mix existed only in English and Spanish, which meant that everyone else
    was choosing between values whose consequences were not written down anywhere
    they could read. Those, the two memory warnings, the settings notebook and the
    "this device cannot emulate" notice are now translated: 240 strings across the
    twelve remaining languages. What is still identical to English after this pass
    is the set of words that are the same word in that language — Mono, Auto,
    Normal, Panel, Version in German, Options in French — and changing those
    would only make them worse.

Text

  • The memory warning no longer promises that 8 GB of RAM is enough. It ended
    by saying that devices with 8 GB or more need none of this, which is false and
    was reported by someone holding a phone with 12 GB who had just been blocked by
    it. The extended virtual addressing entitlement governs address space, not
    physical memory; extra RAM does not widen it. The notice now says the outcome
    depends on how the app was installed, which is the part the reader can act on.
  • The credits show the version you are actually running. The version was a
    translatable string copied by hand into all fourteen language blocks, and it had
    been left at beta.0.1 while beta.0.2 was being handed out — three releases

beta 0.2

beta 0.2 Pre-release
Pre-release

Choose a tag to compare

@xmiguel911x xmiguel911x released this 22 Aug 20:34
6f56d93

beta 0.2

Emulation

  • A cache-maintenance call no longer kills the thread that makes it.
    sys_icache_invalidate touches memory to do its work, so a null pointer takes
    the caller down with a segfault at address 0. One of the two calls in the SPU
    recompiler's dispatch path sits on the common exit, where the patch-point
    pointer is legitimately null because nothing was rewritten. It was killing all
    five SPURS kernels one after another, which left the game's twelve PPU threads
    waiting on them forever. From the outside it looked exactly like a hang: no
    error, CPU at 16 %, millions of idle sleeps. Fixed at the call site, and
    psx3ios_jit_flush now refuses an invalid address and records it instead of
    dying.
  • The graphics layer is back to a state that draws. A merge from another
    ARM64 port had left 28 files of the RSX and Vulkan code changed, among them the
    swapchain, the image-layout transitions and the pipeline compiler. The result
    was a game that ran perfectly and displayed nothing — broken geometry or a
    black screen — which is a hard symptom to read, because the emulator looks
    healthy: it compiles shaders, counts frames and uses CPU. Two additions that
    had no business in an iOS app went with it: an Android Vulkan loader and a
    profiler's GPU timer.
  • x18 is always reserved on Apple hardware. It is the platform register and
    the system may overwrite it at any moment, but LLVM only infers that from the
    target triple, and ours deliberately says linux so that its runtime linker
    emits ELF and builds the branch islands a 266 MiB code arena needs. It is now
    reserved in the backend itself, where no chain of options can leave it open,
    and every launch records whether it took effect.

Settings

  • Your settings now win over the recommended database. Turning something off
    for a game was being silently undone at boot: the emulator applies its
    recommended per-game configuration after everything else, so the database
    overwrote the user's own choice with no indication anywhere. The recommended
    values still fill in what you have not touched, but the keys you set for that
    game are removed from them before they are applied, and the log says how many
    were dropped.
  • The recommended database can be switched off entirely, and ships off, so a
    game starts with your settings and nothing else

Setup

  • The guided setup finishes the job. Everything under Settings → JIT can now
    be completed without leaving it: enabling JIT, choosing the StikDebug script,
    and turning on the launch handoff, alongside firmware and the memory
    entitlements — seven steps instead of five. Each action button shows the real
    state rather than an instruction, so "JIT enabled" and a script's filename tell
    you there is nothing left to do on that page.
  • Installing firmware no longer closes the setup screen. It used to dismiss
    itself so the library could do the work, which dropped the user out halfway
    through configuration with the distinct impression they had broken something.
    The file picker is now presented over the guide and the install runs inside it,
    spinner and all, returning to the same card with the button reading
    "Firmware installed".

Interface

  • The background colour can be changed, in Settings → Theme. It tints the
    gradient, the waves and the specks without touching the theme itself: the two
    are separate on purpose, since wanting a different colour is not a reason to
    be given a different layout. Six to choose from, all dark enough to keep what
    sits on top readable.
  • Everything decorative stops while a game runs. The waves and the specks
    kept animating behind a game that covered them completely — GPU and battery
    taken from the emulation to draw something nobody can see. They now suspend
    when a game starts and resume when you leave it, and coming back from the
    background does not restart them while a game is still running. The game's
    music stops at the same point, when the compilation screen gives way.
  • Only the selected cover lights up. Every cover in the row was getting the
    blue edge and the halo, which meant none of them stood out: twenty highlighted
    covers are twenty ordinary covers, and the one actually selected was lost among
    them. The chosen one now takes the lit edge, the glow and full size while the
    rest step back a little, dimmer and slightly smaller. Contrast only works if
    something gives way.
  • The background moves the way it should. The waves used to bounce back and
    forth, which reads as a pendulum rather than a current. Each one is now drawn
    two screens

beta 0.1

beta 0.1 Pre-release
Pre-release

Choose a tag to compare

@xmiguel911x xmiguel911x released this 22 Aug 20:21
6f56d93

It was never launched

beta 0.1

First beta. The app moves out of alpha with wider device support, a rebuilt
interface and full access to the emulator core.

Compatibility

  • Runs on iOS 15.0 and later. The deployment target was lowered from 17.0.
  • Updated to the latest RPCS3 core

Emulation

  • Every core setting is now exposed — all 273 options from the RPCS3
    configuration tree, grouped as the emulator groups them, with the value shown
    and anything changed from default highlighted.
  • Plain-language explanations under the most-used core settings, translated
    into all 14 app languages. The setting names stay in English on purpose:
    they are the terms every RPCS3 guide and forum post uses, so translating them
    would leave users unable to search for help.
  • Community game patches. Download the official RPCS3 patch list and enable
    or disable individual patches per game, using the emulator's own patch engine
    and configuration file.
  • External game folders. Add any folder on the device — an attached drive, a
    Files provider, or local storage — and launch games straight from it. Nothing
    is copied into the emulator's own folder, so games are not stored twice.

Interface

  • Rebuilt library: a cover carousel with a detail card showing an interactive
    3D Blu-ray case that can be rotated, opened, and have its disc taken out.
  • Full iPad support. Layouts now adapt by proportion rather than by width in
    points, which is what broke iPad portrait: at 834 points wide it was being
    treated as landscape. Verified by calculation across 28 real screen sizes,
    including iPad Split View widths.
  • Gamepad control of the interface. With a controller connected the library
    is fully navigable: change game, play, open options, and rotate the 3D case
    with the right stick. Input is released entirely while a game is running.
  • Arrows to switch games on either side of the cover, in portrait, leaving
    the artwork free for its own gestures.
  • Swipe back through the settings screens instead of only the back arrow.
  • Guided setup screen on first launch, walking through firmware, JIT and the
    memory entitlements, and reopenable at any time from Settings.
  • Performance panel over the game, switched on from the PS button menu:
    frames per second, RSX load and memory, each with a coloured bar. Every figure
    is measured rather than estimated — the RSX load is the emulator's own, and
    memory is the physical footprint iOS actually enforces. A reading that cannot
    be taken shows a dash, never a zero.
  • The translation button can be turned on and off from the PS button menu,
    and stays as you left it instead of appearing on every launch.
  • The performance panel can be dragged anywhere on screen and remembers where
    you left it, and carries a lightning bolt showing whether JIT is active.
  • Start with or without JIT from the game card: the play button starts with
    the interpreter, the bolt starts with the recompiler. The choice applies to
    that launch only and does not change the game's settings. In the classic theme
    the same two options appear when you tap a cover.
  • Core settings per game. All 273 options, browsed by the emulator's own
    categories, saved as overrides that apply only to that game and on top of the
    general settings. Values are picked from the list the core itself offers, and
    numeric ranges use a slider — no typing values from memory. Anything you change
    is marked on the cover, and a single button removes it all again.
  • Display and Controls in the PS button menu: aspect ratio and resolution
    without leaving the game, the connected controllers, the touch-control skin and
    button placement. Closing the game is now the last entry in that menu, since it
    is the only irreversible one.
  • The notebook starts empty and is yours. Save a game's current settings into
    it with one button from its options, and swipe to remove an entry.
  • Trophy names and descriptions follow the app language, read from the
    per-language trophy files a game ships rather than always showing English.
  • Game version now reflects the installed update instead of always reporting
    the version printed on the disc.
  • Play and Options became icons, so they no longer distort at any window size.

Fixes

  • JIT fixed. Just-in-time recompilation works again, which is the difference
    between playable and unusable on this hardware.
  • Shoulder buttons (L1/L2 and R1/R2) no longer overlap in any skin or
    orientation, whatever layout was previously saved.
  • The circle button now responds across its whole area in portrait. It was
    sitting four points from the screen edge, inside the strip iOS reserves for
    its own gestures.
  • The D-pad is drawn with its arms pointing inward, matching a real controller,
    in ever

alpha 0.0.3 — initial release

Pre-release

Choose a tag to compare

@xmiguel911x xmiguel911x released this 22 Aug 20:09
6f56d93

First public build, kept here for the record. RPCS3's core running on iOS with
a JIT that survives Apple's memory rules, a touch controller, and a game
library — enough to boot a game and not much more. No binary is attached: the
build it describes was published in reddit, and anything from that period is
superseded by the releases below.

beta 0.4

beta 0.4 Pre-release
Pre-release

Choose a tag to compare

@xmiguel911x xmiguel911x released this 23 Aug 11:08
6f56d93

beta 0.4

Two reports from people running the app in ways I do not: JIT that the system had
already granted was being thrown away, and the bundle was missing keys that every
iOS app carries.

JIT

  • JIT that was already granted is no longer discarded. Setting up the JIT
    ground asks the attached debugger to register each chunk of executable memory,
    and any chunk it did not register aborted the whole thing. But the registration
    call also reports failure when no debugger is attached at all — which is the
    normal state for two of the three ways this app gets JIT. LiveContainer grants
    it by attaching a debugger that then detaches, and TrollStore grants it through
    an entitlement with no debugger ever involved. In both cases the permission is
    real and the memory works; there is simply nobody left to notify. The app was
    throwing that away and falling back to the interpreter, while telling the user
    "JIT unavailable" on a device where JIT was working. It now measures instead of
    inferring: with no debugger present it writes a minimal function through the
    write alias and calls it through the executable view, under a signal guard so
    that a refusal degrades instead of taking the process down. If it runs, there is
    JIT. The path with a debugger attached is unchanged, and a registration failure
    there is still fatal.
  • Attaching JIT after the app is open now works. The ground was probed once
    per session, so the first answer was cached for good. Under LiveContainer the
    natural order is to open the app and enable JIT afterwards, which meant the
    answer being cached was always "no" — and nothing the user did could change it
    short of relaunching. The status pill re-measures now, and it also refreshes
    when you return to the app, which is exactly the moment the permission has just
    been granted somewhere else.