Skip to content

Releases: DevZer0D4Y/MarathonRecompilediOS

Sonic (2006) — Sonic '06 Mod Manager patches, build 1.0.11

Choose a tag to compare

@DevZer0D4Y DevZer0D4Y released this 16 Oct 17:57

Build 1.0.11. Install over the existing Sonic (2006) app and keep the bundle ID com.devz.sonic2006. The IPA is unsigned and contains no game files or patches.

Sonic '06 Mod Manager patches (.mlua)

The mod manager has a new Patches section for patches written for the Sonic '06 Mod Manager, such as Knuxfan24/Sonic-06-Mod-Manager-Patches.

  1. Download that repository as a ZIP and extract it in Files.
  2. In the mod manager, tap Import folder and select the extracted folder.
  3. Tap the patches you want, then tap Play.

Patches run at launch on top of your mods. The installed game is never modified. Edited files go to mod-cache/patches and are reused until you change the selection.

What works: patches that edit archives, packages (.pkg) or files, and patches that change data in the executable. 39 of the 150 patches in Knuxfan24's collection run, for example Disable Fog, Disable Character Stumble, Disable Hint Rings, Disable Music, E3 Timers, Correct Sonic Jump Animation and Opposite Button Prompts. Another 17 already exist as built-in codes.

What doesn't (yet):

  • Patches that rewrite game code (82 in that collection) can't run, because the game's code is recompiled ahead of time. Each shows the address it would change, and can be ported as a built-in code.
  • Patches that edit Lua scripts as text (29 of them) need decompiled scripts. The game ships compiled ones.

Both kinds stay listed with the reason, instead of failing silently.

Validation

The ASan/UBSan mod suite passes. It covers package round trips, edits on compressed and raw archive members, renames, data writes, cache reuse, import, and the file overlay. All 31 real packages from a Sonic '06 mod re-serialise byte for byte. The Knuxfan24 collection classifies as 39 runnable out of 150. The Release arm64 iPhoneOS build and the IPA checks passed. Not yet played on a device with patches enabled.

Sonic (2006) — mod manager layout fix, build 1.0.10

Choose a tag to compare

@DevZer0D4Y DevZer0D4Y released this 16 Oct 05:16

Build 1.0.10. Install over the existing Sonic (2006) app and keep the bundle ID com.devz.sonic2006. The IPA is unsigned and contains no game files.

  • Mod manager: a mod's "can't be enabled" reason no longer spills into the next row. Rows now grow to fit the text.

Everything from build 1.0.9 is included: the floating stick, the 120 FPS cap, the fix for stretched buttons after switching apps, and the check that stops Khronos-based mods from crashing the game.

Khronos, Physics and Physics Companion still can't be enabled. They need the Khronos DLL, which patches the game executable, and the recompiled game can't run it yet.

Sonic (2006) — floating stick, 120 FPS cap and mod crash fix, build 1.0.9

Choose a tag to compare

@DevZer0D4Y DevZer0D4Y released this 16 Oct 04:44

Build 1.0.9. Install over the existing Sonic (2006) app with your sideloading tool and keep the bundle ID com.devz.sonic2006, so your game files, mods and saves stay in place. The IPA is unsigned and contains no game files.

New

  • Floating stick. The movement stick stays hidden until your thumb touches the lower left of the screen, then appears right under it and follows your thumb. Let go and it disappears. Tap EDIT → STICK to switch back to the fixed stick with its D-Pad ring. Resizing the stick in the editor also sets the floating stick's size.
  • 120 FPS cap. The game now runs at up to 120 FPS on ProMotion iPhones and iPads, and never above that. The old 60 FPS cap code is gone. If your frame rate was still at the old default of 60, it moves to 120 once. You can lower it any time under Options → Frame Rate. Upstream warns that frame rates other than 60 can cause glitches in places, and 120 FPS makes the phone warmer.

Fixes

  • Stretched touch buttons after switching apps or taking a screenshot. iOS kept reporting the screen as portrait, and the buttons were drawn several times too tall. They now follow the orientation the game is drawn in.

  • Crash while loading a stage with Khronos-based mods. Khronos patches the game executable so that it loads its Core.xex DLL. Physics and Physics Companion are Lua scripts that call into that DLL. The recompiled game can't load Xbox DLLs or apply executable patches, so with those mods enabled the game crashed after Episode Select. The mod manager now refuses to enable these mods and says why:

    • Khronos: loads the Core.xex DLL by patching the executable.
    • Physics Companion: its patch.mlua patches the executable.
    • Physics: requires patches that Marathon doesn't include (CorrectFastSonicGoalAnimation, DisableCharacterStumble, RestoreRotationInterpolation).

    Required patches that Marathon has as built-in codes (for example ControllableBoundAttack) no longer block a mod and are switched on when you tap Play. Running Khronos mods would need a port of its DLL to the recompiled game.

Validation

Touch and mod regression suites pass (UBSan/ASan), including the floating stick, a stale portrait window size, and executable-patch detection against the real Khronos and Physics packages. Release arm64 iPhoneOS build and IPA integrity checks passed. Not yet tested on a device: the floating stick feel, the 120 FPS cap and the app-switcher fix.

Sonic (2006) — U8 mod archive compatibility, build 1.0.8

Choose a tag to compare

General U8 archive compatibility update for the iOS mod loader, following the “Invalid Sonic '06 U8 root (16-byte entries required)” report. This changes the shared reader for all enabled mods; there are no title- or author-specific exceptions.

  • Accept validated ordinary 12-byte raw U8 nodes as well as extended 16-byte Sonic '06 nodes. Convert input into the extended game layout.
  • Accept root labels and unused root/directory metadata instead of requiring every such field to be zero. Continue validating table bounds, member names, hierarchy, duplicates and payload bounds.
  • Write the extended U8 compatibility marker expected by archive tools. A new cache revision regenerates archives from earlier builds.
  • Identify whether an archive read error originated from the installed original, a complete replacement, or a mod archive. Keep the manager open for retries.

Validation: ASan/UBSan mod/archive regression suite passed, including flat/nested ordinary U8 conversion, named roots, nonzero metadata, mixed input layouts, priority, compressed payload preservation and malformed data. The public Werehog package matching the screenshot's title/author passed import, selection and archive merging against synthetic originals; an independent decoder compared every mod member and verified preservation of an original-only member. A supplied real shader.arc round trip passed. Full Release arm64 iPhoneOS build and IPA integrity checks passed.

The public Werehog archive itself already passed the previous parser. The tester's installed original archive was unavailable, so the exact screenshot failure and in-game behavior remain unverified. This release addresses shared format assumptions rather than claiming every mod has been gameplay-tested. Native plugins, executable patches and custom HMM code still require ports.

Build 1.0.8: original com.devz.sonic2006, Sonic (2006) name and original icon PNGs verified. Keep this bundle ID when signing. The IPA is unsigned; no downloaded mod or original game archive is bundled.

Commit: 2b09bed on ios-mods-performance-20261015.
SHA-256 (Sonic06-iOS.ipa): 1ebf3ee96b5347d15fde19afdbb5ca021a9c073c4fd369220973718f48c2f9e3

Sonic (2006) — iOS archive merging support

Choose a tag to compare

Superseded by build 1.0.8 with the shared U8 reader compatibility update.

Replaces the blanket “Archive merging needs a Sonic ’06 port” rejection with real Sonic ’06 U8 archive merging. This is a general asset-mod implementation, not a special case for Super Sonic.

  • Merge partial packed .arc files, extracted .arc directories, and extensionless extracted folders when the matching original archive exists.
  • Match loose replacements against archive member paths, including members introduced by other enabled archive patches.
  • Preserve untouched members and original compression; the top enabled mod wins each member conflict. Respect complete replacements and UMM Read-only archive paths.
  • Prepare archives in the background with a “Preparing mods…” title. Errors keep the manager open so the selection can be changed and retried.
  • Cache verified merged archives without modifying installed game files or imported mod assets. Preparation uses bounded payload buffers.

App identity: original com.devz.sonic2006, display name/icon Sonic (2006), build 1.0.7. Keep this bundle ID when signing to update the existing app. The IPA is unsigned and needs your sideloading signature. Game data is not included.

Validation: ASan/UBSan mod/archive tests passed, including independent U8/zlib decoding and a round trip of a supplied real shader.arc; existing port regressions passed; UIKit SDK compile and full Release arm64 iPhoneOS build passed. Packaged IPA integrity, original icon PNGs, bundle identity and required scene/Bluetooth metadata verified.

Scope: Sonic ’06 asset mods using the supported layouts. DLL plugins, custom HMM code, executable patches and Unleashed archive formats still require source ports. The tester’s specific Super Sonic package and gameplay with real mods have not been tested on a device. Older generated selections remain in mod-cache; it may be removed while the game is closed to reclaim storage.

Source commit: 49bce32 on ios-mods-performance-20261015.

SHA-256 (Sonic06-iOS.ipa): be5965716fa3a5cd1819774d75957cccfeaae6cdc6decc5741c138eeab8fa205

Sonic (2006) — original identity, current runtime and mods

Choose a tag to compare

@DevZer0D4Y DevZer0D4Y released this 15 Oct 12:53

Superseded by build 1.0.8 with the shared U8 reader compatibility update.

Superseded by the archive-merging build (1.0.7), which replaces the blanket Merge=true rejection.

Updates the original Sonic (2006) app identity: com.devz.sonic2006, display name Sonic (2006), original R1 icon, build 1.0.6. Both compiled icon PNGs were checked byte-for-byte against R1.

The native mod manager is now built on the current iOS port instead of the older integration snapshot. This restores the dedicated GPU-wait command list/fence, ARM synchronization fixes, guest-memory page reclamation, Metal render-pass optimization, asynchronous pipeline compilation, reduced CPU spinning, hidden guest symbols and optimized texture uploads.

Release arm64 compilation/linking and mod, portable port/touch/fade and read-only input regressions passed. The reported gameplay slowdown/freeze has not been reproduced or measured on-device for this build. These changes restore existing runtime fixes relevant to that report; they are not a verified performance guarantee.

Download Sonic06-iOS.ipa (unsigned, iOS 17+, about 33.9 MiB) and sign while preserving the bundle ID to update R1. No game files or personal signing data are included. The earlier MarathonRecomp-identity prereleases are separate apps; their player data is not automatically migrated by changing back to the original identity.

iOS mod manager — launch crash fix

Pre-release

Choose a tag to compare

Superseded: use the original-identity/current-runtime mod release. This older package uses com.devz.MarathonRecomp; the replacement restores R1's com.devz.sonic2006, name and icon, and includes the current port runtime fixes.

Fixes two reproducible startup crashes in the October 13 mod-enabled IPA:

  • Restores the required scene lifecycle, waits for the scene and attaches SDL's window. The previous IPA aborted in UIKit's missing-scene-lifecycle check on iOS 27.
  • Adds the Bluetooth usage description required by controller discovery. Its omission caused a second Core Bluetooth privacy abort.
  • Rejects packages missing these launch requirements. Adds an optional entitlement switch for personal-team device testing.

The previous IPA's crash was reproduced on an iPhone 14 Pro Max running iOS 27.0.1. The corrected signed test app launched, initialized UIKit/Metal/Bluetooth, and remained running in subsequent process checks with no new crash report. Gameplay and mod import/selection have not been tested.

Download MarathonRecomp-mods-launchfix.ipa: unsigned arm64, iOS 17+, about 44.7 MiB. Sign it before installation. It retains com.devz.MarathonRecomp and contains no original game files. Checksums, manifest, validation report and source patch are attached.

Source: ios-mod-integration-20261013. This experimental build does not include newer unrelated changes on main.

iOS native mod manager — experimental 2026-10-13

Choose a tag to compare

@DevZer0D4Y DevZer0D4Y released this 13 Oct 19:37

Superseded: use the original-identity/current-runtime mod release. This older package uses com.devz.MarathonRecomp; the replacement restores R1's com.devz.sonic2006, name and icon, and includes the current port runtime fixes.

Superseded due to confirmed launch crashes. Use the launch-fixed prerelease. The replacement addresses the required scene lifecycle and Bluetooth privacy metadata and was launch-tested on an iPhone.

Experimental iOS build with a native mod manager for Sonic (2006) asset overlays. Import extracted mod folders, enable or disable mods, reorder priority, and select built-in codes before playing.

Assets:

  • MarathonRecomp-mods.ipa: unsigned Release arm64 app, iOS 17+, approximately 44.7 MiB. Sign it before installation.
  • SHA-256 checksum, package manifest, validation report and resolved source patch bundle.

Xcode 27.0 compilation and linking succeeded. Mod, portable port, touch/fade and read-only input regressions passed. Package integrity, architecture and absence of signing/provisioning data were checked. Original game files are not included.

This prerelease was built from the local iOS port snapshot on ios-mod-integration-20261013; newer changes on main are not included. Dev Zero's mod-support authorship is preserved. No device installation or gameplay/performance testing was performed for this build.

v1.0

Choose a tag to compare

@DevZer0D4Y DevZer0D4Y released this 05 Oct 18:29
6d5c7aa

First release!