Skip to content

Goemon64Recomp Android v1.0.3

Choose a tag to compare

@github-actions github-actions released this 24 Jul 03:48

Mali GPU support

Fixed the white screen on devices with Mali GPUs (#15). On affected devices the
game booted and played audio, but rendered almost entirely white with most textures
missing.

The renderer required a Vulkan feature called dual-source blending, which no Mali GPU
supports. The driver accepted the resulting pipeline anyway and then produced undefined
output, which is why nothing appeared in any log. This release adds a fallback rendering
path that is selected automatically on devices without that feature.

Devices that do support dual-source blending, including every Adreno device, take
exactly the same code path as before and are unaffected.

Known limitation: on GPUs without dual-source blending, N64 coverage-based effects
such as anti-aliased edges are approximated rather than exact, because the fallback
reuses the channel that would otherwise carry coverage. No visible difference was found
in testing, but if you see edge or transparency artifacts on a Mali device, this is the
first thing to report.

What this was tested on. The fix was developed and verified on a Samsung Galaxy A15
(Mali-G57). It has not been tested on the Retroid Pocket 4 Pro (Mali-G77) that the
issue was reported from, because that hardware is not available here. Both are Arm Mali
GPUs built on the Valhall architecture, but they are different models with different
drivers, so this is a related device rather than an equivalent one.

What makes the fix likely to carry across anyway is that it is not keyed to any device
model: it asks the GPU at startup whether it supports dual-source blending and picks the
fallback when the answer is no. No Mali GPU reports support for it. So the fallback
should engage on any Mali device, including the G77 — but "should" is the honest word
until someone confirms it on one.

Adreno hardware was checked separately, on an Adreno 650, to confirm this release changes
nothing for devices that were already working.

Stability

v1.0.2 shipped the major crash fixes from the code review. These are the remaining
items from the same review — smaller, rarer cases, in some of the same areas.

  • A failed settings write no longer destroys your configuration. If saving settings
    failed partway through, for example with storage full, the truncated temporary file
    could replace the existing good one. It is now discarded instead.
  • Fixed a hang when cancelling a prompt that opened another prompt.
  • Fixed a crash when closing the settings menu if the data directory had gone away
    while the app was running — for example if the SD card was removed mid-session. This
    is a different case from the cold-start SD card fix in v1.0.2.
  • The app now recovers if Android recreates it mid-session, for example under memory
    pressure or with the "don't keep activities" developer option enabled. This previously
    gave a black screen or an error about missing symbols. v1.0.2 stopped the app closing
    on an accessibility font or display-size change; this covers the remaining cases,
    which needed a different fix.
  • Fixed further races between the UI, input and render threads when opening and
    closing menus, and when controllers are added or removed. v1.0.2 fixed the
    connect/disconnect race; these are additional ones found in the same sweep, including
    a stale entry left behind by a removed controller.

Fixes

  • Autosave no longer runs while you are in the settings menu.
  • Fixed a decorative background layer keeping the wrong scale after the aspect ratio
    changed while the game was running.
  • Fixed the analog camera being able to latch onto the wrong angle when first engaged,
    which left the free-look camera offset for the rest of the area.
  • Quickly toggling the config menu no longer shows a spurious error dialog.

Notes

Installing over an existing release keeps your saves. This build is signed with the same
key as v1.0.0 through v1.0.2.