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
NinjaCheetah2026-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.
NinjaCheetah2026-02-27 19:05:24 -05:00
02db260138
Added theming command to rustwii CLI This version is more capable than the version in WiiPy, and supports extracted and repacking containers as part of theme application. This was not implemented in WiiPy because the LZ77 compression required was far too slow to make it feasible, but here in Rust the compression is totally reasonable to actually use.
NinjaCheetah2026-02-26 16:42:35 -05:00
836d5e912a
Made a bunch of fields that should be private private
NinjaCheetah2026-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.
NinjaCheetah2025-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.
NinjaCheetah2025-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.
NinjaCheetah2025-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.
NinjaCheetah2025-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.
NinjaCheetah2025-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.
NinjaCheetah2025-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.
NinjaCheetah2025-04-23 18:21:26 -04:00
66476e2c98
Added basic support for displaying info about U8 archives to rustii CLI
NinjaCheetah2025-04-17 20:33:44 -04:00
52e11795d3
Redesigned how U8 archives are represented in memory This replaces the old 1D array with an actual directory tree that can be used to make packing, unpacking, and editing U8 archives much much easier than the old libWiiPy implementation.
NinjaCheetah2025-04-17 18:30:23 -04:00
7cef25d8f0
U8 archive unpacking command now functional
NinjaCheetah2025-04-09 09:18:29 -04:00
884657268b
Added single content download command to rustii CLI
NinjaCheetah2025-04-08 22:27:42 -04:00
5f578fbfd8
Updated README to better represent current features
NinjaCheetah2025-04-08 20:57:44 -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.
NinjaCheetah2025-04-08 20:47:35 -04:00
e55edc10fd
Added ASH decompression, added corresponding CLI command Also cleaned up some minor parts of the LZ77 (de)compression library and CLI code
NinjaCheetah2025-04-06 17:21:33 -04:00
97fe838b8c
Fix for possible crash when getting info for some TMDs
NinjaCheetah2025-04-01 21:09:54 -04:00
e147a953a5
Added basic doc strings to all major structs and functions
NinjaCheetah2025-03-28 14:02:03 -04:00
edf3af0f7c
Added signature verification, info command now has WiiPy feature parity 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.
NinjaCheetah2025-03-27 21:06:59 -04:00
444c3def54
Improved title version and region info in CLI
NinjaCheetah2025-03-26 09:17:43 -04:00
ac1368053b
Added title size calculation methods (sizes now shown in info as well)
NinjaCheetah2025-03-25 21:33:41 -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.
NinjaCheetah2025-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.
NinjaCheetah2025-03-18 20:39:38 -04:00