Fix common setup problems

This reference addresses the most common installation and runtime errors encountered in D2R Mobile, including missing 18 RomFS resource archives, A14–A16 ASTC Legacy Device Pack requirements, first-launch shader compilation conditions, 6 GB memory thresholds, and JIT misconceptions.

Resource Location & Missing Archives

\"No game resources yet. 0/18 archives found\"

  • Root Cause: The iOS host cannot locate the required 18 .data archives extracted from RomFS/data (totaling approximately 5.6 GB).
  • Resolution:
  • Open the Apple Files app and navigate to On My iPhone > D2R Mobile.
  • Ensure the 18 .data files (00-00000001.data through 17-00000002.data) are placed inside a folder (such as D2R Mobile Resources) directly within the app container.
  • Return to the application and tap Retry. The host validates file counts and byte sizes, entering the game once verified.

Older Devices & BC Texture Support (A16 and Earlier)

\"One More Step for This Device\" / \"Supplementary Pack Required\"

  • Root Cause: Apple GPUs prior to the A17 Pro (including A14, A15, and A16 Bionic found in iPhone 14, iPhone 14 Pro, iPhone 15 base, and iPad mini 6) lack hardware decompression for BC-compressed textures.
  • Resolution: Generate the ASTC Legacy Device Pack offline from your purchased game files via the upstream 3-step pipeline: bash # 1. Transcode BC3 textures to ASTC via astcenc python3 dm/tools/astc_pack.py <RomFS> <output>/work --preset thorough # 2. Write the data archive python3 dm/tools/casc_overlay.py pack <RomFS> <output>/pack <output>/work/repl.tsv 0-8 # 3. Finalize sizes and pack checksum python3 dm/tools/astc_pack.py finalize <output>/pack Use the complete upstream instructions for the encoder prerequisite and build-time DM_ASTC_PACK metadata, or D2RM_ASTC_PACK for no-Xcode packaging. Then copy the resulting Legacy Device Pack folder into On My iPhone > D2R Mobile beside the main resource folder. The three commands alone do not update the app.

First-Launch Shader Preparation

Shader Compilation Stalls

  • Scope & Condition: This screen only appears on packages created without Apple's Metal shader compiler (assembled on Windows, Linux, or a Mac lacking Xcode). Packages compiled through Xcode or downloaded from automated cloud build workflows include precompiled Metal shader libraries and skip this stage entirely.
  • Behavior: On compilerless packages, the app compiles all 7,212 MSL shaders on-device during the initial launch, displaying a progress bar. On an iPhone 17 Pro Max, this was measured at approximately 7 minutes (410 seconds). All four performance cores run under heavy load and the device will feel warm.
  • Action: Let shader preparation finish when convenient. Upstream says switching apps or closing and reopening is supported: completed shaders are cached and reused. Do not assume a fixed duration or promise that all later launches take only seconds.

Memory Thresholds & OOM Termination

Immediate Crash on Launch (Jetsam Out-of-Memory)

  • Root Cause: The device possesses only 4 GB of RAM (such as iPhone 12 base/mini, iPhone 13 base/mini, and iPad Air 4).
  • Explanation: The game engine currently requires at least 6 GB of unified memory. On 4 GB hardware, the operating system kernel triggers a Jetsam memory pressure termination. Devices with under 6 GB RAM are currently unsupported.

Native Execution vs JIT Misconceptions

A frequent misconception is that D2R Mobile requires Just-In-Time (JIT) compilation or active debugger tools (like SideJITServer).

D2R Mobile does not use JIT: - Emulators rely on JIT to dynamically translate foreign processor architectures (like PowerPC or x86) into ARM instructions. - D2R Mobile runs the Switch version's original ARM64 instructions natively on Apple Silicon. The executable is rewritten offline ahead of time into standard Mach-O binaries. - The app requires zero JIT entitlements, zero debugger attachments, and zero network helper utilities.

Frequently Asked Questions

Does D2R Mobile require JIT (Just-In-Time) compilation?

No. D2R Mobile does not require JIT compilation or any debugger attach tools (such as SideJITServer). The game binary is rewritten ahead of time into valid native ARM64 Mach-O instructions that execute directly on Apple Silicon CPUs without JIT entitlements.

Why does the app show a shader preparation progress bar on first launch?

This step only occurs in packages assembled on computers lacking Apple's Metal shader compiler (Windows, Linux, or Macs without Xcode). Packages built with Xcode or prepared via CI pipelines ship with precompiled Metal libraries and boot directly to the menu. On compilerless packages, the device must compile all 7,212 shaders once (measured at ~7 minutes on iPhone 17 Pro Max).

How do I resolve 'One More Step for This Device' or 'Supplementary Pack Required'?

Devices with A14, A15, or A16 chips lack hardware support for BC textures. Generate the matching Legacy Device Pack from your own files and include its metadata when building or packaging the app. Copy the complete pack next to the game-resource folder. A pack without matching app metadata does not fix One More Step for This Device.