Skip to content

Build game with atmosphere mods? #350

Closed

Description

@LovecraftianGodsKiller

Any chance it's possible to build a game with atmosphere mods?

For example, Mario Kart 8 Deluxe with CTGP Deluxe, or Smash Ultimate with some UI change mods and/or mods that change skins andor mods that change the gameplay?

Activity

  1. Jacob-Tate commented on Oct 31, 2026

    @Jacob-Tate

    Ive gotten the linkle mod to work on BoTW, tested on the Mac and Iphone Duo so far, so it's possible for some mods. It depends on what kind of mod it is.

    Mods that only replace game files have the best chance. nxnative has a switch, DM_ROMFS_OVERLAY, that points at a folder of replacement files. The game reads from that folder first and falls back to its original data, a lot like Atmosphere's romfs folder. Those files can change without rebuilding the game. Textures, models, audio and UI files should work this way, as long as the mod doesn't need new shaders, because shaders are translated ahead of time.

    Linkle took some extra work because it's a BCML .bnp, which holds partial packs and diffs rather than finished files. BCML wouldn't install for me, so I wrote a small script that merges it onto the original 1.9.0 files, rebuilds the packs and updates the game's size table. That table caused the hard failures: a file over its limit gives a black screen with no error. The merge script is BotW specific and isn't in the repo.

    So look at what's in the mod:

    • Only a romfs folder: best chance.
    • exefs with small .ips patches: no automatic support, but they could be converted by hand into per-build patches, followed by a rebuild.
    • Skyline-style code mods: effectively no. As I understand it they inject code and hook the game at run time, and iOS blocks unsigned code at run time.

    CTGP Deluxe: I looked through v1.1.1 and it's a code mod. It ships a Skyline loader in exefs plus a Skyline plugin that hooks the game, so it won't work as is. The plugin's strings also suggest it targets a 32-bit build, which nxnative can't run. Its tracks and UI are ordinary files, but using them would mean reimplementing the plugin's hooks for a 64-bit version, and I haven't tried that.

    Smash Ultimate: not today. Almost everything is in one 17.6 GB data.arc, so loose replacement files don't apply as they are, and the repo's archive tool only reads it. ARCropolis, the usual mod loader, runs on Skyline. Skins, UI and data-based balance changes would need a new tool to rebuild that archive, plus new shaders for any that add them. Fighter code lives in NROs that get rewritten at pack time, so code-level gameplay mods would also need a repack.

    I haven't tried CTGP or any Smash mods, so those two are from reading the code and notes, not from testing.

  2. MCJEModder2026 commented on Nov 1, 2026

    @MCJEModder2026

    TOTK Challenge Mode has romfs patches, but also exefs patches that contain:

    • an ips file
    • main.npdm
    • subsdk1, subsdk2, subsdk3
      is there a good way to apply that?
  3. Jacob-Tate commented on Nov 1, 2026

    @Jacob-Tate

    @MCJEModder2026 There's no good way to apply the exefs part yet, but the romfs part is worth trying on its own.

    I looked through the "Challenge Mode 1.8.0 Recommended" download. That copy has subsdk1 and subsdk2, not subsdk3, so yours may be a different variant, and I haven't seen what subsdk3 does. I also haven't run any of this, so it's from inspecting the files and the host code, not from testing.

    exefs

    • subsdk1/subsdk2: these are exlaunch code mods, both named true_damage_display. They hook the game at run time and use system calls the host doesn't implement, so I'd expect a crash at boot if they were loaded. The profile wouldn't load them anyway because they aren't in its module list. Even if the host added those calls, iOS won't run code written at run time.
    • .ips: nothing applies IPS files automatically. Mine is named for main build 5CB42B1C…, while the 1.4.3 build nxnative's profile supports is 277178b7…, so it wouldn't apply there even on a real Switch. It could be converted by hand into per-build patches, but the addresses first have to be carried over to 1.4.3 and checked, then the game rebuilt.
    • main.npdm: as far as I can tell it isn't needed. It mainly allows nearly every system call.

    romfs
    DM_ROMFS_OVERLAY can point at the mod's romfs folder, so the game reads those files first. Two things could stop it working:

    • The mod's tables are named Product.142 (RSDB, Mals, ResourceSizeTable). Check that your game's RomFS uses the same names. If 1.4.3 renamed them to 143, the game would ignore those tables while still reading the mod's other files, and they'd need porting.
    • The mod may rely on its exefs patches. The IPS raises a few values and stubs out a function, and I can't tell what those do without a matching main, so some content could break without them. The mod also replaces HeapDef, and TOTK is already tight on memory on iPhone.

    If you try it, I'd test on the Mac first with a save and a fight against one of the modded enemies, because just reaching the title screen proves very little. If something specific is missing, the hooks could be rewritten as patches applied at pack time, which also work on iOS, but that's real porting work per build. We have already seen some mods ported in the patches.py file they use for 60 FPS.

    To be honest you could probably create a baked patch for this with something like claude in an hour or so but itd be at compile time not runtime.

    If you do try it, let me know which game version you used and how far it got.

  4. Repository owner locked and limited conversation to collaborators on Nov 9, 2026
  5. converted this issue into a discussion #1913 on Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions