Skip to main content

PPU_SNAPSHOT_SLIM_FLAG

Constant PPU_SNAPSHOT_SLIM_FLAG 

Source
pub const PPU_SNAPSHOT_SLIM_FLAG: u8 = 0x80;
Expand description

v2.3.3 — high bit of the version byte, marking a slim snapshot: every field except the 245,760-byte framebuffer.

Exists for the rewind ring, which snapshots on every frame inside the frame budget and then XORs and LZ4-compresses the result. The framebuffer is 94% of those bytes and the worst possible payload for that scheme — it changes every frame, so the XOR never zeroes and the delta never compresses. Measured, rewind roughly doubled the produce-interval p95 (31.17 ms against 17.12 ms with it off) and was the cause of a user-visible judder report; see docs/performance.md v2.3.3 F3/F4.

Encoded as a flag on the version byte rather than a new version number so the on-disk format is untouched: every .rns ever written has the high bit clear and still parses on exactly the path it always did. Slim snapshots are in-memory only and are never written to a file.

A slim blob restores every other field and leaves the framebuffer untouched, so the caller is responsible for producing an image — see Nes::rewind_step_back, which runs one frame to regenerate it.