Repository navigation
Conversation
A build with a mods folder stopped at the app build with "mods' RomFS folders are laid over a RomFS folder, and this extraction is one RomFS image (RomFS.img)", and a split build (--split-data) stopped the same way. The NSP script now extracts every version with nx_extract --romfs-image, so the extraction never holds a RomFS folder, and both steps lay the RomFS out as one. build_app.py now unpacks the image into <work>/build/romfs_unpacked when mods or split data ask for a folder, and reuses that folder while the image's size and time are unchanged. A bundled build without mods still packs the image as before. With the image unpacked, the overlay hit a second error: main() imported win/mods.py as "mods", which replaced its list of code modules, and gen_embed.py then failed with "Value after * must be an iterable, not module". The module is imported as mod_overlay now. Checked: win/tests/test_win.py with a new test that packs a folder with romfs_image.py, unpacks it and compares every file, and checks the reuse (PackIpa.test_exec_bit_on_windows fails the same on main when run on Linux). Pokémon Legends: Z-A 2.0.2 + DLC with a RomFS translation mod, split data build on Windows 11: the 5.6 GB image unpacked in 10 s, the mod laid over it (1 file replaced, 1,561 added), the IPA and data folder built, and the game ran translated on an iPhone (A18 Pro, iOS 27.2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VDGHF5LyEKSqoK23EvYr6W
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.
What and why
A build with a
modsfolder (win/mods.py) stopped at the app build:A split build (
--split-data, "App + data folder" in the window) stops the same way. The NSP script now extracts every version withnx_extract --romfs-image, so the extraction never holds a RomFS folder, while both steps lay the RomFS out as a folder.win/build_app.pynow unpacks the image into<work>/build/romfs_unpackedwhen mods or split data need a folder, and reuses it while the image's size and modification time are unchanged. A bundled build without mods still packs the image as before. The twodie()lines that refused these builds can no longer be reached, so they are removed.With the image unpacked, the overlay hit a second error:
main()importedwin/mods.pyasmods, which replaced its list of code modules (main sdk), andgen_embed.pythen failed withTypeError: Value after * must be an iterable, not module. The module is now imported asmod_overlay.Checked
python3 win/tests/test_win.py, with a newUnpackRomfsImagetest that packs a folder withromfs_image.py, unpacks it, compares every file and checks that the folder is reused.PackIpa.test_exec_bit_on_windowsfails the same way onmainwhen run on Linux, so that failure is unrelated.Docs
🤖 Generated with Claude Code
https://claude.ai/code/session_01VDGHF5LyEKSqoK23EvYr6W