Repository navigation
Releases: SansNope/MarathonRecomp-Android
Release list
MarathonRecomp-Android v0.1.6
MarathonRecomp-Android v0.1.6
The game now starts on Mali GPUs. ARM64, Android 10 (API 29) or newer, Vulkan. Game files are imported from your own Xbox 360 copy.
Important
Mali support is still early. It works on the Mali devices we could test, but performance on Mali is not good yet — we will keep working on it. We do not promise that the port works on every device. Please report problems in an issue with your phone, GPU and log.txt.
Changes
Found with Mali testers (Mali-G57 MC2 on Helio G99, Mali-G710 on Pixel 7 Pro):
- Startup crash on older Mali drivers fixed. Marathon used 5 descriptor sets, while these drivers allow 4. On such GPUs the conditional-survey buffer now shares the sampler set, and shaders are remapped when they load.
- Driver crash while compiling shaders, and broken graphics, fixed. Every vertex shader of the game writes
ClipDistance(Xbox user clip planes), which Mali-G57 and G710 do not support. On GPUs withoutshaderClipDistanceit is removed from the shaders when they load. User clip planes are then disabled; we have not seen a visible difference yet. - 2D textures read as 2D arrays now get a proper 2D-array view (Vulkan requires the view type to match the shader).
- A broken graphics pipeline is no longer handed to the driver.
- Diagnostics in
log.txt: GPU, driver and Vulkan version, limits and features; initialization steps; the exact pipeline that fails or crashes; a call stack in crash reports; the app's own logcat lines after the first pipeline failure. - Timing summary on by default: the first launch creates
perf_capture.enabledin the game folder, solog.txtcontains a[perf]line every 2 seconds. This helps us compare performance across devices. Delete the file to turn it off; it is not created again. - Version 0.1.6 (code 5), same signing key as v0.1.0/v0.1.5: installs over them and keeps your data.
Tested
- Pixel 7 Pro / Mali-G710 / Android 17: starts and plays (Wave Ocean). Strong slowdowns in the orca chase; not measured yet.
- Helio G99 / Mali-G57 MC2 (Samsung Galaxy Tab A9 / Android 15 and an OPPO phone / Android 16): starts and plays, no graphics artifacts after the fixes. Strong slowdowns reported; not measured yet.
- POCO F5 / Adreno 725: the same changes were checked with every Mali workaround forced on (test markers), picture correct and no errors.
Known issues
- Performance on Mali — slow, especially in heavy scenes. To be investigated with the new
[perf]logs. - Frame-rate cap below 60 may slow down scripted scenes such as the orca chase (suspected: parts of the game logic are tied to the frame). On weak devices try a 60 FPS cap with a lower render scale instead.
- First loads on Mali are slower — textures are converted to ETC2 on the CPU.
- Adreno 610 (Snapdragon 680) — broken 2D graphics on the title screen (#2).
- Bifrost Mali GPUs (G31, G51, G52, G71, G72, G76) are not supported.
- Full list: STATUS.
Thanks to the Mali testers for the logs and screenshots.
Русский
Игра запускается на GPU Mali. ARM64, Android 10 (API 29) и новее, Vulkan. Файлы игры импортируются из своей копии для Xbox 360.
Important
Поддержка Mali пока ранняя. На проверенных устройствах Mali игра работает, но производительность пока плохая — мы продолжим над ней работать. Мы не обещаем работу на всех устройствах. О проблемах пишите в issue с моделью телефона, GPU и log.txt.
Изменения (найдено вместе с тестировщиками Mali: Mali-G57 MC2 на Helio G99 и Mali-G710 на Pixel 7 Pro):
- Исправлено падение при запуске на старых драйверах Mali. Марафон использовал 5 наборов дескрипторов, а эти драйверы разрешают 4. На таких GPU буфер conditional survey перенесён в набор сэмплеров, шейдеры перепривязываются при загрузке.
- Исправлены падение драйвера при компиляции шейдеров и сломанная графика. Все вершинные шейдеры игры пишут
ClipDistance(пользовательские плоскости отсечения Xbox), а Mali-G57 и G710 это не поддерживают. На GPU безshaderClipDistanceон убирается из шейдеров при загрузке. Пользовательские плоскости отсечения при этом выключены; видимой разницы пока не замечено. - 2D-текстуры, которые читаются как массив, получают отдельный вид «массив 2D» (Vulkan требует совпадения типа вида с шейдером).
- Сломанный графический конвейер больше не передаётся драйверу.
- Диагностика в
log.txt: GPU, драйвер и версия Vulkan, лимиты и возможности; шаги инициализации; какой именно конвейер не создаётся или роняет драйвер; стек вызовов в отчёте о сбое; строки logcat приложения после первой ошибки конвейера. - Сводка производительности включена по умолчанию: при первом запуске в папке игры создаётся
perf_capture.enabled, и вlog.txtраз в 2 секунды пишется строка[perf]. Это поможет сравнивать производительность на разных устройствах. Чтобы выключить — удалите файл, повторно он не создаётся. - Версия 0.1.6 (код 5), тот же ключ подписи: ставится поверх v0.1.0/v0.1.5 с сохранением данных.
Проверено: Pixel 7 Pro (Mali-G710, Android 17) — запускается и играется (Wave Ocean), сильные просадки в погоне косатки, не измерялись. Helio G99 / Mali-G57 MC2 (Samsung Galaxy Tab A9 / Android 15 и телефон OPPO / Android 16) — запускается и играется, артефактов графики после исправлений нет; сообщают о сильных тормозах, не измерялись. POCO F5 (Adreno 725) — те же изменения проверены с принудительно включёнными обходами Mali, картинка правильная, ошибок нет. Проверялись тестовые сборки этой версии; realme RMX5090 (Snapdragon 8 Elite) с v0.1.0 повторно не проверялся.
Известные проблемы: производительность на Mali (будем разбирать по новым логам [perf]); лимит FPS ниже 60 может замедлять скриптовые сцены вроде погони косатки (предположение: часть логики игры привязана к кадру) — на слабых устройствах лучше лимит 60 и меньший масштаб рендера; первые загрузки на Mali медленнее из-за перекодирования текстур; Adreno 610 — сломанная 2D-графика (#2); Mali поколения Bifrost (G31, G51, G52, G71, G72, G76) не поддерживаются.
Спасибо тестировщикам Mali за логи и скриншоты.
MarathonRecomp-Android v0.1.5
MarathonRecomp-Android v0.1.5
Experimental support for Mali GPUs, ported from UnleashedRecomp-Android. ARM64, Android 10 (API 29) or newer, Vulkan. Game files are imported from your own Xbox 360 copy.
Important
Mali support needs testing. It has not been run on any Mali device yet. If you have a phone with a Mali GPU, please try this release and open an issue with your phone, GPU, Android version and log.txt — whether the game works or not.
Changes
- GPUs without BC textures (Mali, PowerVR): the game's BC (DXT) textures are converted to ETC2/EAC on the CPU when they load (bcdec + etcpak), or to RGBA if the GPU has no ETC2. Loading takes longer on these GPUs.
- Vulkan 1.2 feature path: descriptor indexing, scalar block layout, buffer device address and mirror-clamp sampling are enabled through the Vulkan 1.2 core features, so drivers that do not list the old extension names (such as stock Mali) are accepted. A GPU without the required features now stops with a clear message in
log.txt. - Texture/sampler descriptor sets are limited to what the device reports;
MIRROR_ONCEsampling falls back toMIRRORED_REPEATwhen unsupported. - Non-Adreno GPUs keep using the system Vulkan driver in Auto (unchanged).
- For testing on Adreno: an empty
bc_fallback.enabledfile in the game folder forces the ETC2 path; with the worddecodeinside it forces the RGBA path. - Version 0.1.5 (code 4), same signing key as v0.1.0: installs over v0.1.0 and keeps your data.
Tested
- POCO F5 / Snapdragon 7+ Gen 2 / Adreno 725 / Android 17: v0.1.5 starts and plays normally (the Vulkan 1.2 path is also used by Turnip on Adreno).
- Mali: not tested before the release. In UnleashedRecomp-Android, Valhall GPUs work (confirmed there: Mali-G57 MC2, G68 MP5, G77 MC9 and newer); Bifrost GPUs (G31, G51, G52, G71, G72, G76) are not supported. Correction: the first version of these notes wrongly listed G57, G68 and G77 as Bifrost.
- Update: the first reports from two Helio G99 devices (Mali-G57 MC2) show that the game does not start on them yet (a crash in the Mali driver / failed pipeline creation). This is being investigated; see STATUS.
- realme RMX5090 (Snapdragon 8 Elite) was tested with v0.1.0, not yet with v0.1.5.
Known issues
- Adreno 610 (Snapdragon 680): broken 2D title/menu graphics reported with the default driver (#2).
- Scene transitions can briefly lower FPS. Full list: STATUS.
- We do not promise that the port works on every device.
Credits
Mali support and the texture fallback come from UnleashedRecomp-Android 1.5.0. Texture conversion uses bcdec (MIT/Unlicense) and etcpak (BSD-3-Clause). Full credits: INFO, third-party notices.
Русский
Экспериментальная поддержка GPU Mali, перенесённая из UnleashedRecomp-Android. ARM64, Android 10 (API 29) и новее, Vulkan. Файлы игры импортируются из своей копии для Xbox 360.
Important
Поддержку Mali нужно протестировать. Ни на одном устройстве с Mali она ещё не запускалась. Если у вас телефон с GPU Mali, попробуйте этот релиз и откройте issue с моделью телефона, GPU, версией Android и log.txt — и если игра работает, и если нет.
Изменения:
- GPU без текстур BC (Mali, PowerVR): текстуры игры в формате BC (DXT) при загрузке перекодируются на CPU в ETC2/EAC (bcdec + etcpak), а если GPU не поддерживает ETC2 — распаковываются в RGBA. Загрузка на таких GPU дольше.
- Путь Vulkan 1.2: descriptor indexing, scalar block layout, buffer device address и mirror clamp включаются через возможности ядра Vulkan 1.2, поэтому подходят драйверы, которые не перечисляют старые имена расширений (например, стоковый Mali). GPU без нужных возможностей теперь завершает запуск с понятным сообщением в
log.txt. - Наборы дескрипторов текстур и сэмплеров ограничены лимитами устройства;
MIRROR_ONCEзаменяется наMIRRORED_REPEAT, если не поддерживается. - GPU не от Adreno в режиме «Авто» по-прежнему используют системный драйвер Vulkan.
- Для проверки на Adreno: пустой файл
bc_fallback.enabledв папке игры включает путь ETC2, со словомdecodeвнутри — путь RGBA. - Версия 0.1.5 (код 4), тот же ключ подписи, что у v0.1.0: ставится поверх v0.1.0 с сохранением данных.
Проверено: POCO F5 (Adreno 725, Android 17) — v0.1.5 запускается и играется нормально. Mali не проверялся. В UnleashedRecomp-Android поколение Valhall работает (там подтверждены Mali-G57 MC2, G68 MP5, G77 MC9 и новее); Bifrost (G31, G51, G52, G71, G72, G76) не поддерживается. Исправление: в первой версии этого текста G57, G68 и G77 ошибочно названы Bifrost. Обновление: первые отчёты с двух устройств на Helio G99 (Mali-G57 MC2) — игра на них пока не запускается (падение в драйвере Mali / ошибки создания конвейеров); разбираемся, подробности в STATUS. realme RMX5090 (Snapdragon 8 Elite) проверялся на v0.1.0, на v0.1.5 ещё нет.
Известные проблемы: Adreno 610 (Snapdragon 680) — сломанная 2D-графика титульного экрана и меню со встроенным драйвером (#2); просадки FPS при переходах между сценами. Мы не обещаем работу на всех устройствах.
MarathonRecomp-Android v0.1.0
MarathonRecomp-Android v0.1.0
First Android release of the unofficial MarathonRecomp port. ARM64, Android10/API29 or newer, Vulkan. Game resource files are supplied separately from your own Xbox360 copy.
Included
- Sonic2006-style launcher with Russian/English text, the new icon and Info/credits.
- Touch controls and layout editor, game/DLC import, storage and graphics settings.
- Four bundled Turnip driver profiles, automatic selection and recovery after a failed driver start.
- XenonRecomp register-local optimization group1, Vulkan swapchain pre-rotation and topology-aware worker affinity.
- Render scale with native-resolution HUD, quieter loading logs, driver provisioning stamp and crash diagnostics.
- Non-debuggable Release packaging, versionName0.1.0/versionCode3 and dedicated signing key with the development-to-release certificate lineage.
- Third-party notices and license texts in APK
assets/licenses/.
The native game libraries and bundled drivers are compared byte-for-byte with the owner-tested development APK 63b87707… before publication. This release changes packaging/version/signing and adds license texts; it introduces no new native optimizations.
Tested scope
- POCO F5 / SM7475 / Adreno725 / Android17: menus, HUB/events, a boss, Wave Ocean and Dusty Desert; sound, touch and saves. Saved measurements show about60FPS outside loading transitions at60% render scale.
- realme RMX5090 / Snapdragon8Elite / Adreno830 / Android16: HUB/events and a level at125% render scale, working surface recreation after backgrounding. Performance was reported as excellent by the tester; numerical FPS was not measured.
- v0.1.0 release APK: installed over an earlier development build on a test phone; saves were kept and the game works. This confirms the certificate-lineage update path on a device.
Known limitations
- Compatibility/performance on every Android device is not promised. This is an early release.
Installation and verification
Install MarathonRecomp-Android-v0.1.0-arm64-v8a.apk, then use the launcher to import your game folder/ZIP. Keep Vulkan driver on Auto initially. SHA-256 is supplied in SHA256SUMS.
The package identity stays io.github.sansnope.marathonrecomp.android. The signed certificate lineage preserves the update path from the maintainer's development builds. Independently built APKs can use different certificates. If Android rejects an update, retain your data and report the error instead of uninstalling first.
Please attach log.txt to Android bug reports, with the phone, Android version, driver/render mode and reproduction steps. Credits: SansNope, Anthropic Opus5.5, ITSeny, MarathonRecomp and the upstream component authors, testers; launcher artwork by GSNReboot (GameBanana). Details: INFO, notices, signing.