You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
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.
Feature overview
Blob abstraction — every format is opened through the same
IBlobReader interface; the format is auto-detected from its magic bytes, so info,
decode and convert accept 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.