Features - Nanook/NKit GitHub Wiki

NKit 2 is a multiplatform (CLI + UI) disc image processor written in C#/dotnet8.0. Primarily aimed at game preservation; capable of reading multiple formats, containers and archives for various systems.

System Summary

The following features are currently supported. See the Roadmap document for other features awaiting implementation.

  • GameCube
    • Retail / Non-Retail (e.g. System images / Action Replay) / Customs
    • Reads ISO / GCM / CISO / WBFS (+ split) / ISO.DEC / WIA / RVZ / NKit (ISO / GCZ)
    • Writes Lossless ISO / CISO / WBFS / RVZ (ZStandard / LZMA/2 / Uncompressed)
    • Writes Lossy (Regular) CISO / WBFS
    • File Extract for all formats (Masks and Regex)
    • Fix region hacks / Unscrub reordered files
    • Truncated / Oversized images
    • ISO Dedupe and reconstruct
    • File system support
    • NKit Scan Output
    • Dedupe and recreate images
    • Process from archives without temp file or caching ISO / GCM / CISO / WBFS / ISO.DEC / RVZ (All nkit created / most dolphin created)
    • Optional Rename to matched dat item
    • Verify against internal checksums (where available) / dat / nkit scan
  • Wii
    • Retail / RVT-R / RVT-H / Non-Retail (e.g. Freeloader) / Customs
    • Reads ISO / CISO / WBFS (+ split) / WIA / RVZ / ISO.DEC / NKIT (ISO / GCZ)
    • Writes Lossless ISO / CISO / WBFS / RVZ (ZStandard / LZMA/2 / Uncompressed)
    • Writes Lossy (Regular) CISO / WBFS
    • File Extract for all formats (Masks and Regex)
    • Fix region hacks / Unscub / Correct Update Partition insert / add missing channel/VCs to match dat
    • Missing + Filled Update Partitions - including system images with incrementing Int32s
    • Truncated / Oversized images
    • Scrub Detection
    • Ticket / TMD Cert Validation and Fake signing detection
    • ISO Dedupe and reconstruct
    • File system support
    • NKit Scan Output
    • Read from archives without temp file or caching ISO / GCM / CISO / WBFS / ISO.DEC / RVZ (All nkit created / most dolphin created)
    • Optional Rename to matched dat item
    • Verify against internal checksums / dat / nkit scan
  • WiiU
    • Reads WUD / WUX / CDN / APP
    • Writes WUD / WUX / APP
    • File Extract for WUD / WUX / CDN / APP (Masks and Regex)
    • Retail / Non-Retail (e.g. Dev Discs)
    • Key lookup (files / zip)
    • Key validation
    • Ticket / TMD Cert Validation
    • File system support
    • NKit Scan Output
    • Process from archives without temp file or caching WUD / WUX
    • Optional Rename to matched dat item
    • Verify against dat / nkit scan
  • ISO9660 Formats
    • Including PS1 / PS2 / PS3 / PSP / Dreamcast / Saturn / Sega CD / CD-i ...
    • File Systems and Extensions UDF / ISO9660 / CD-XA / Joliet / Romeo / RockRidge / El Torito
    • Reads ISO (Mode 1 / 2 +Form2) / Cue+Bin / GDI (Dreamcast)
    • Reads ZSO / CSO (+CSO2) / JSO / DAX
    • Reads CHD (all versions)
    • Writes ZSO / CSO (+CSO2) - PS3 compressed as decrypted
    • File Extract (Masks and Regex) - Form2 needs more work
    • Key lookup - PS3 (files / zip)
    • PS3 Key validation
    • PS3 Encrypt / Decrypt
    • PS3 3k3y header support
    • PS3 IRD+Files -> ISO (Fix Task)
    • PS3 IRD creation (FixExtract Task)
    • Dreamcast - Convert between Redump(CUE) <-> Tosec(GDI) - including From CHD and Redump GDI
    • All filesystems scan in one pass
    • ECC / EDC Validation
    • Multi Session
    • NKit Scan Output
    • Process from archives without temp file or caching
    • Optional Rename to matched dat item
    • Verify against dat / nkit scan

Archive Support

NKit is a forward reading processor. Where possible images can be processed from archives without saving to disk or extracting to memory. The following archives are supported:

  • Rar
    • Rar 1,2,3,4,5
    • Split - a single file archive that's been split in to parts - file.001, file.002 ...
    • Multi Volume / Part - file.rar, file.r01 ... - file.part001.rar, file.part002.rar ...
    • Solid mode - single file, split, multi volume
  • Zip / ZipX
    • Single file
    • Split - a single file archive that's been split in to parts - file.001, file.002 ...
    • Multi Volume / Part - file.zip, file.z01 ... - file.zipx, file.zx01
    • ZStandard and XZ compression is supported
  • 7Zip
    • Single file
    • Split - a single file archive that's been split in to parts - file.001, file.002 ...
    • Solid mode - single file, split
    • ZStandard compression is supported
  • GZip
    • Single file
    • Split - a single file archive that's been split in to parts - file.001, file.002 ...

Batch Processing

Images can be processed in batches or singularly. Images can reside in the filesystem or within archives. NKit will scan the paths / files provided and collate them all before processing. Split images, multi part archives and Cue/Bin/GDI are processed as if one whole image even within split archives.

NKit Scans

NKit creates .nkit files that contain a map of a full image. Scans are xml and are a logical hybrid view of image parts, layout and filesystem. Useful for quickly identifying differences between similar images and what those differences are. E.g. A corruption in a file within the filesystem, disc / partition headers, filled space etc.

Originally created for debugging then promoted to a full feature. Scanning images in different containers will produce the same scan if the encoded image data is equal. For example, a Wii encoded with WIT as scrubbed ISO, WBFS, CISO and WIA all create the exact same nkit scan. Making it useful to find duplicates and diffs. Likewise scanning a PS3 ISO in encrypted and decrypted formats will produce the same scans.

NKit scans are required by the dedupe feature to reconstruct an image on-the-fly. Exactly matching the source pre deduped image.

Result Output

Processed image results can be logged to a file where each line holds information about the image. CRCs and any verification results are included. This allows batch processing to be looked over easily upon completion.