Repository navigation
Conversation
…ata, keep the shaders out of the IPA (LNPANDY#994) Step 1 only built: making the IPA again (to add a game built earlier, or after a fix) meant building the selected game first, under a button that said "Export IPA". Step 3 sent the data of the game just built only. And the shader libraries made most of the IPA: Ocarina of Time's is 7 GB in one file, which SideStore cannot read (its archive reader has no ZIP64 and loads each file whole into memory), so the IPA did not install (LNPANDY#947). - shell.json records each game's data folder when the game is built; a game built before that is found from the launcher's library (its build folder, its inputs: ShellGameData). - "Export these games" under step 1 makes the IPA from the games built before, with no build, and stays after an export. Step 1's own button says what it does: "Build and export". The stale-shader prompt asks before an export without a build too. - Step 3 sends the data of every game of the app, to the device or a drive, with a tick per game (kept), and names the games whose data is not on this Mac. - The export leaves each game's msl/ out of the IPA and puts it in the game's data folder (an APFS clone, skipped when unchanged); step 3 sends it with romfs.img. The shell reads Documents/games/<title ID>/msl already, and now msl/ beside a data folder picked elsewhere too. A game with no recorded data folder keeps its shaders in the IPA. Checked on a MacBook Pro M1 Pro (macOS 27.2) and an iPhone 15 Pro with SideStore 0.7.0: Ocarina's IPA went from 6.9 GB to 65 MB and installed, and the shell took its shaders from Documents. Tests cover the export without a build, the data folders, the send of every game with ticks, and the shaders leaving the IPA. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 of 6 tasks
1 task done
Owner
|
Closing as bulk data and shader export is being integrated into the native batch refresh and build queue workflow. Thank you for your work on this! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix or feature
Feature from outside: #994 has no milestone yet. It needs a maintainer's yes before this can merge.
Tested locally
What and why
Closes #994 . Fixes #947 .
Problem. Making the shared app's IPA again meant building a game first ("Export IPA" builds), and step 3 sent only the game just built. The shaders made the IPA too big for SideStore: Ocarina of Time's are 7 GB in one file (#947 ).
Change. "Export these games" makes the IPA from the games built before, with no build. Step 3 sends every game's data, with a tick per game. The export moves each game's
msl/out of the IPA into its data folder, and step 3 sends it withromfs.img.Details
ShellGameData).Archive.swift) has no ZIP64 and loads each file whole into memory: it fails past 4 GB and closes on a 2 GB file.msl/copy is an APFS clone, skipped when unchanged. A game with no recorded data folder keeps its shaders in the IPA.Documents/games/<title ID>/mslalready; it now also readsmsl/beside a data folder picked elsewhere.Checked
frontend922,frontend-ios242,frontend-qt420, all pass. Rebased on main after frontend: show iPhone activity title and preserve library state during iOS re-sign #1028.msl/beside the data.NX_LAUNCHER_CAPTURE_DIRcaptures of the export card, below.Screenshots
Before (main):


After:
Scope
dm/,scripts/,docs/,ref/) is added to the repository: a change there is a patch inpatches/(a commit inengine/, thentools/engine.py export, andtools/engine.py checkpasses), with itsUpstream-Statusforwarded seedds/nxnative#..., orpendinguntil that PR is open🤖 Generated with Claude Code