32 Commits

Author SHA1 Message Date
910e5cd23b Updated Ticket fakesigning to match libWiiPy/libWiiSharp 2026-03-11 14:46:16 -04:00
755b6583f1 Applied a couple of Clippy lints 2026-03-11 14:21:10 -04:00
9472c049ee Finished cIOS building 2026-03-10 22:10:32 -04:00
326bb56ece Refactored entire way that title content is handled
The ContentRegion has been entirely dissolved. Its fields were not particularly useful, as the content records were just a duplicate from the TMD, the file data itself, and then two integers that were assigned during construction and then literally never referenced.
Instead, the only copy of the content records now lives in the TMD, and the content is stored within the title directly since that was the only meaningful field. All the content related methods were moved from the ContentRegion struct over to the Title struct, since the content just lives there now.
This should hopefully make things much easier to deal with as you no longer need to worry about keeping two separate copies of the content records in sync.
This also might all change again in the future idk
2026-03-02 00:31:53 -05:00
0d34fbc383 Added iospatcher to lib and CLI
Everything but the no-shared flag is working right now. Getting no-shared to work properly will take a little more work because right now there's nothing to guarantee that the content records are synced between the TMD and content objects in a title. This means that updating any content in a title will result in the records being out of sync and the written TMD will not match the actual state of the content when it was dumped.
To mitigate this, I intend on making the content records in the content struct a reference to the content records in the TMD, so that they are the same object and therefore always in sync.
2026-02-27 19:05:24 -05:00
7c8484edaa Correct lots of weak warnings, fix CI 2026-02-22 23:46:49 -05:00
836d5e912a Made a bunch of fields that should be private private 2026-02-22 22:21:37 -05:00
94e0be0eef Added emunand info and install-missing commands to rustii CLI
These were grueling to port. There's just so much printing and format converting to deal with. Ugh. At least it's done now.
2025-05-03 23:43:02 -04:00
26138c02be Added base for rustii CLI EmuNAND commands (mostly library-side)
The rustii CLI now offers setting decrypt/encrypt commands, as well as a WIP emunand install-title command. This command currently only supports installing single WADs and not a folder of WADs like WiiPy.
To make EmuNANDs happen, library modules for parsing and editing setting.txt, uid.sys, and content.map have been added and have feature parity with libWiiPy. The basics of the library EmuNAND module also exist, offering the code for title installation and not much else yet.
2025-05-01 19:55:15 -04:00
a30a0f2c5b Added rustii CLI wad edit command and required library features
This required a LOT more backend work than I expected. But hey, some of this stuff is being done better than it was in libWiiPy/WiiPy, so that's a win in my book.
When changing both the Title ID and type of a WAD, the updated TID will only be written once (which also means the Title Key will only be re-encrypted once). This is an improvement over WiiPy where it will be updated as part of both changes.
Some TMD fields have been made private and moved to getter/setter methods only as they are actually in use now and should only be set through the correct means.
2025-04-29 22:03:55 -04:00
481594345d Use Rc<RefCell<T>>> for content_records so that they sync in a Title
When using a Title, the content_records value stored in the TMD and ContentRegion instances will now point to the same data, meaning that they stay in sync. Previously, you had to manually sync the content records between them as they were modified, and not doing so would cause problems when editing a WAD.
2025-04-27 21:30:31 -04:00
277c5d6439 Added rustii CLI commands to add and remove content from a WAD
Also added required library features to make this possible, again.
2025-04-27 15:25:47 -04:00
577d5a0efa Added rustii CLI command to replace content in a WAD
Also added required library features to make this possible. Rust makes the whole "getting content's index from its CID" thing so much easier.
2025-04-25 14:45:38 -04:00
96ace71546 Added set_content/set_enc_content to load modified content into a ContentRegion
This means that the rustii CLI wad pack command is now actually useful, as it supports loading modified content.
2025-04-23 18:21:26 -04:00
884657268b Added single content download command to rustii CLI 2025-04-08 22:27:42 -04:00
be9148fcfa Ported all NUS download functions from libWiiPy and corresponding CLI commands
Also adds the basics of U8 archive packing/unpacking, however they are not in a usable state yet and there are no working CLI commands associated with them.
2025-04-08 20:47:35 -04:00
c2169f84c4 Implement thiserror for library errors 2025-04-03 19:09:56 -04:00
0bda6dabf3 Make is_dev for get_common_key() non-optional 2025-04-03 13:41:44 -04:00
3fd701cac6 Ported wad convert command from WiiPy 2025-04-02 19:51:19 -04:00
e147a953a5 Added basic doc strings to all major structs and functions
Some checks failed
Build rustii / build-linux-x86_64 (push) Has been cancelled
Build rustii / build-macos-arm64 (push) Has been cancelled
Build rustii / build-macos-x86_64 (push) Has been cancelled
Build rustii / build-windows-x86_64 (push) Has been cancelled
2025-03-28 14:02:03 -04:00
edf3af0f7c Added signature verification, info command now has WiiPy feature parity
Some checks are pending
Build rustii / build-linux-x86_64 (push) Waiting to run
Build rustii / build-macos-arm64 (push) Waiting to run
Build rustii / build-macos-x86_64 (push) Waiting to run
Build rustii / build-windows-x86_64 (push) Waiting to run
rustii CLI info command now displays the signing status of TMDs/Tickets/WADs like WiiPy does, and displays the ASCII TID for a title when applicable. This means that this command now has full feature parity with WiiPy.
2025-03-27 21:06:59 -04:00
444c3def54 Improved title version and region info in CLI
Some checks failed
Build rustii / build-linux-x86_64 (push) Has been cancelled
Build rustii / build-macos-arm64 (push) Has been cancelled
Build rustii / build-macos-x86_64 (push) Has been cancelled
Build rustii / build-windows-x86_64 (push) Has been cancelled
2025-03-26 09:17:43 -04:00
ac1368053b Added title size calculation methods (sizes now shown in info as well)
Some checks are pending
Build rustii / build-linux-x86_64 (push) Waiting to run
Build rustii / build-macos-arm64 (push) Waiting to run
Build rustii / build-macos-x86_64 (push) Waiting to run
Build rustii / build-windows-x86_64 (push) Waiting to run
2025-03-25 21:33:41 -04:00
3178063a07 Filled in many info command blanks 2025-03-25 21:06:14 -04:00
8c7cd48dff Add WIP info command to rustii CLI, currently has a lot of blanks 2025-03-25 20:19:59 -04:00
839e33b911 Added fakesigning and fakesigning detection, command is in CLI 2025-03-25 18:28:37 -04:00
561ada3d92 Added support for dev WADs, Ticket now throws error for v1 Tickets 2025-03-20 10:38:33 -04:00
62f6e6c0ec Added WAD packing command to rustii CLI
Also added lots of required library magic to make WAD packing possible. This includes the high-level Title object from libWiiPy, the ability to set content in a WAD, the ability to generate a WADHeader from a WADBody, and more.
2025-03-19 18:50:37 -04:00
6ab9993dd9 Fixed content decryption, created base for real rustii CLI
rustii currently only supports unpacking WADs, with packing support being a work-in-progress.
2025-03-18 20:39:38 -04:00
83dc83d2d6 Added WAD parsing, allows for WAD packing/unpacking 2025-03-18 18:01:17 -04:00
93f2103763 Added content region parsing and content encryption/decryption 2025-03-18 09:13:34 -04:00
522e42a749 Basic TMD/Ticket structs, Title Key encryption handling 2025-03-17 20:05:01 -04:00