-
Notifications
You must be signed in to change notification settings - Fork 0
Home
drpetersonfernandes edited this page Aug 15, 2026
·
1 revision
RVZSharp is a .NET 8 / 9 / 10 library and command-line tool for GameCube and Wii disc images. It reads the modern RVZ container (and its predecessor WIA), decodes the classic legacy formats (GCZ, CISO/WBI, WBFS, TGC, NFS) into a canonical ISO view, and writes RVZ files from any of them — mirroring the behaviour of the reference implementations in Dolphin (C++) and the Go rvz reader.
| Target frameworks |
net8.0, net9.0, net10.0
|
| Solution file | CSharp_RVZSharp.sln |
| Tests | 313 fast (every framework, ~30 s) + 97 real-file slow tests — the solution runs fast-only by default (dotnet test CSharp_RVZSharp.sln -c Release); run the slow suite explicitly with dotnet test RVZSharp.Slow.Tests -c Release
|
| Read support | RVZ, WIA, GCZ, CISO/WBI, WBFS, TGC, NFS, plain ISO |
| Write support | RVZ (None, Zstd, Bzip2, LZMA1, LZMA2; optional PRNG-junk packing) |
| Reference sources |
References/dolphin-master/ (C++), References/rvz-1.0.3/ (Go) |
| Page | What it covers |
|---|---|
| Getting started | Prerequisites, build, test, first commands |
| Packaging & distribution | NuGet package contents, build, publish, versioning |
| CLI reference |
info, decode, convert — options and examples |
| Library API |
Blob, RvzReader, RvzWriter, codecs, packing API |
| Architecture | Module map, read/write pipelines, design decisions |
| RVZ container format | File head, disc struct, tables, groups, chunking |
| Compression & packing | Codec details and the Lagged-Fibonacci junk packing |
| Wii partitions | Encryption, hash tree, hash exceptions, tickets |
| Legacy formats | GCZ, CISO/WBI, WBFS, TGC, NFS byte layouts |
| Testing | Test strategy and synthetic image builders |
| Release notes | 1.0.0 announcement content (GitHub release post) |
| Roadmap & status | Milestones, limitations, open questions |
| FAQ | Common questions |
- Byte offsets and sizes are hexadecimal unless stated otherwise (
0x…). - Multi-byte integers are big-endian (network order) unless a page says otherwise.
- The format pages describe the on-disk layout as implemented by Dolphin and verified by
this project's tests; they are an implementation companion to
References/dolphin-master/docs/WiaAndRvz.md.
-
Blob abstraction — every format is opened through the same
IBlobReaderinterface; the format is auto-detected from its magic bytes, soinfo,decodeandconvertaccept any supported file. - Canonical ISO view — all readers expose the decoded disc as a random-access stream of ISO bytes, so a GCZ, a WIA and an RVZ of the same disc are interchangeable inputs.
- RVZ writing — the writer stores Wii partition data decrypted with hash exceptions (the same space-saving trick Dolphin uses), detects and packs PRNG junk with a recovered seed, and emits fully checksummed tables (SHA-1 everywhere Dolphin puts them).
-
Verifiable — every conversion is byte-exact: the test suite round-trips synthetic
discs through every codec, packing setting and chunk size, decodes 30 real GameCube/Wii
RVZ files byte-for-byte against their official No-Intro SHA-1s, re-encodes real GC/Wii
images back to RVZ, and the CLI can verify decoded output with
--sha1.