WiiUSharp 0.3.0
See the version list below for details.
dotnet add package WiiUSharp --version 0.3.0
NuGet\Install-Package WiiUSharp -Version 0.3.0
<PackageReference Include="WiiUSharp" Version="0.3.0" />
<PackageVersion Include="WiiUSharp" Version="0.3.0" />
<PackageReference Include="WiiUSharp" />
paket add WiiUSharp --version 0.3.0
#r "nuget: WiiUSharp, 0.3.0"
#:package WiiUSharp@0.3.0
#addin nuget:?package=WiiUSharp&version=0.3.0
#tool nuget:?package=WiiUSharp&version=0.3.0
WiiUSharp
.NET libraries for Wii U file formats and title concepts.
Not affiliated with or endorsed by Nintendo. Wii U is a trademark of Nintendo.
The NFS container format was worked out from nfs2iso2nfs by sabykos, piratesephiroth and FIX94. WiiUSharp.Nfs is a new implementation of that format, not a port of their code.
Packages
| Package | Targets | Purpose |
|---|---|---|
WiiUSharp |
net48, net6.0, net8.0, net10.0 | Title identity and presentation: TitleId, GroupId, ProductCode, Region, Language, per-language names, and the ImageSlot / BootSound formats a title ships with. |
WiiUSharp.Nfs |
net48, net6.0, net8.0, net10.0 | The vWii disc container (content/hif_*.nfs): header, sparse part table, per-sector AES, 250 MB split. |
WiiUSharp.Imaging |
net48, net6.0, net8.0, net10.0 | Turns PNG, JPEG, BMP, WebP or TGA into the exact TGA an ImageSlot needs. SkiaSharp + TargaSharp; no System.Drawing. |
dotnet add package WiiUSharp
dotnet add package WiiUSharp.Nfs
dotnet add package WiiUSharp.Imaging
Usage
Title metadata
using WiiUSharp;
var game = new Game(
new TitleId(TitleType.Demo, 0x12345678),
new GroupId(0x5678),
new ProductCode(ProductCode.EShop, "FAAE"))
{
Region = Region.All,
Names = LocalizedName.ForAllLanguages(new LocalizedName("Super Metroid")),
};
string id = game.TitleId.ToString(); // "0005000212345678"
ImageSlot icon = ImageSlot.Icon; // iconTex.tga, 128x128, 32 bpp
Title images
using WiiUSharp.Imaging;
TitleImage.Convert("icon.png", ImageSlot.Icon, @"title\meta\iconTex.tga"); // resized to 128x128, 32 bpp, uncompressed, no footer
var problems = TitleImage.Problems(new TgaFile("bootTvTex.tga"), ImageSlot.BootTv); // empty when it fits
NFS container
using WiiUSharp.Nfs;
var key = NfsKey.FromFile(@"title\code\htk.bin");
// read: a seekable stream of the decrypted payload, no temp file
using Stream payload = NfsReader.Open(@"title\content", key).OpenPayload();
// write: pack, encrypt and split in one pass
new NfsWriter(key).Write(payload, new DiscDataSpan(0xF800000, gameLength), @"out\content");
The payload is a Wii disc image with its game partitions decrypted. Converting to or from a normal ISO needs Wii partition crypto, which WiiUSharp.Nfs does not implement — supply an IPartitionCipher and use NfsConverter. See .docs/WiiUSharp.Nfs.md.
Building
dotnet build WiiUSharp.sln
dotnet test WiiUSharp.sln
Requires the .NET 10 SDK (global.json). dotnet pack -c Release produces the NuGet packages.
License
MIT — see LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- No dependencies.
-
net10.0
- No dependencies.
-
net6.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (4)
Showing the top 4 NuGet packages that depend on WiiUSharp:
| Package | Downloads |
|---|---|
|
WiiUSharp.Imaging
Turns PNG, JPEG, BMP, WebP or TGA sources into the exact TGA images a Wii U title needs (icon, boot screens, logo). Cross-platform via SkiaSharp. |
|
|
WiiUSharp.Audio
Turns WAV, MP3 or AIFF into the bootSound.btsnd a Wii U title plays at launch: 48 kHz stereo 16-bit, trimmed to six seconds. Cross-platform via NAudio.Core and NLayer. |
|
|
WiiUSharp.Rpx
Reads and writes Wii U RPX/RPL executables: ELF sections with zlib compression and the per-section CRC table. |
|
|
WiiUSharp.Nus
Packs an unpacked Wii U title (code, content, meta) into the installable NUS layout: FST, hashed and plain contents, fake-signed TMD and ticket. Downloads a title's package from the update server and unpacks it back into those folders with every hash verified. |
GitHub repositories
This package is not used by any popular GitHub repositories.
0.3.0: version aligned with WiiUSharp.Imaging; no changes.