WiiUSharp.Audio
0.4.0
See the version list below for details.
dotnet add package WiiUSharp.Audio --version 0.4.0
NuGet\Install-Package WiiUSharp.Audio -Version 0.4.0
<PackageReference Include="WiiUSharp.Audio" Version="0.4.0" />
<PackageVersion Include="WiiUSharp.Audio" Version="0.4.0" />
<PackageReference Include="WiiUSharp.Audio" />
paket add WiiUSharp.Audio --version 0.4.0
#r "nuget: WiiUSharp.Audio, 0.4.0"
#:package WiiUSharp.Audio@0.4.0
#addin nuget:?package=WiiUSharp.Audio&version=0.4.0
#tool nuget:?package=WiiUSharp.Audio&version=0.4.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. |
WiiUSharp.Audio |
net48, net6.0, net8.0, net10.0 | Turns WAV, MP3 or AIFF into bootSound.btsnd: 48 kHz stereo 16-bit, six seconds. NAudio.Core + NLayer; no Windows codecs. |
dotnet add package WiiUSharp
dotnet add package WiiUSharp.Nfs
dotnet add package WiiUSharp.Imaging
dotnet add package WiiUSharp.Audio
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
Boot sound
using WiiUSharp.Audio;
BootSoundConverter.Convert("boot.mp3", @"title\meta\bootSound.btsnd"); // resampled, stereo, first six seconds
BootSound sound = BootSound.Load(@"title\meta\bootSound.btsnd"); // header + samples of an existing one
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
- NAudio.Core (>= 2.2.1)
- NLayer (>= 2.0.0)
- NLayer.NAudioSupport (>= 2.0.0)
- WiiUSharp (>= 0.4.0)
-
net10.0
- NAudio.Core (>= 2.2.1)
- NLayer (>= 2.0.0)
- NLayer.NAudioSupport (>= 2.0.0)
- WiiUSharp (>= 0.4.0)
-
net6.0
- NAudio.Core (>= 2.2.1)
- NLayer (>= 2.0.0)
- NLayer.NAudioSupport (>= 2.0.0)
- WiiUSharp (>= 0.4.0)
-
net8.0
- NAudio.Core (>= 2.2.1)
- NLayer (>= 2.0.0)
- NLayer.NAudioSupport (>= 2.0.0)
- WiiUSharp (>= 0.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
0.4.0: initial release.