NEX Snapshot
NEX is a snapshot format for the ZX Spectrum Next. In addition to the standard CPU registers and RAM banks, it supports Next-specific features including multiple screen types (Layer 2, ULA, LoRes, HiRes, HiColour), copper code, and a palette. NEX does not store shadow register data.
Details about the NEX format can be found at https://wiki.specnext.dev/NEX_file_format.
API
| Class | Description |
|---|---|
NexFormat |
Singleton format for reading and writing NEX snapshots. |
NexFile |
Represents a NEX snapshot file. |
NexHeader |
512-byte header containing registers and hardware configuration. |
NexBank |
A 16 KB RAM bank. |
NexScreen |
An attached screen buffer. |
Reading and Writing
// Read
using var stream = File.OpenRead("snapshot.nex");
NexFile nex = NexFormat.Instance.Read(stream);
// Write
using var output = File.Create("output.nex");
NexFormat.Instance.Write(nex, output);
Accessing State
// CPU registers
var regs = nex.Registers;
Console.WriteLine($"PC: 0x{regs.PC:X4} SP: 0x{regs.SP:X4}");
// Header fields
Console.WriteLine($"Version: {nex.Header.VersionString}");
Console.WriteLine($"RAM Required: {nex.Header.RamRequired}");
Console.WriteLine($"Entry Bank: {nex.Header.EntryBank}");
// Banks
foreach (NexBank bank in nex.Banks)
Console.WriteLine($"Bank {bank.BankNumber}: {bank.Data.Length} bytes");
// Screens
foreach (NexScreen screen in nex.Screens)
Console.WriteLine($"Screen: {screen.Type}");