NTSCRT 0.5.0
Animated GIF export, and a round of rendering fixes.
- GIF export — GIF joins the codecs in the export panel, for stills (with keyframe animation) and for video sources. It gets its own width and frame rate, because it behaves nothing like the video codecs: 256 colours and run-length compression against full-frame analog noise means files run large. A 5-second 480px GIF at 12 fps lands near 8 MB; the panel estimates the size before you export and warns past 10 MB. Frame delays are stored in hundredths of a second, so the rates land on that grid (12 fps plays at 12.5, 24 at 25) and the panel tells you.
- Scanline banding in exports — CRT shaders draw scanlines in output pixels, so an export size that isn't a whole multiple of the downscale height gave one source line a fractional number of rows, and the scanlines grouped into visible bands. Exports now render at a whole multiple and average down, so any size works. Snap size to scanline grid takes the other route: it rounds the output to a size where every source line gets the same whole number of rows.
- Preview banding with integer scale — the integer-scale letterbox centred on a half pixel whenever the drawable and the render differed by an odd number, putting every sample on a texel boundary and duplicating rows. It now letterboxes on whole pixels.
- Window size no longer changes the look — with integer scale on, the chain rendered at whatever multiple fit the window, and since CRT shaders work in output pixels, that multiple was the look: small windows lost their scanlines entirely and blew out the highlights. The multiple now has a floor independent of the window, and oversized renders are downsampled for display. The preview matches the export at any window size.
Universal binary (Apple Silicon + Intel), signed and notarized. The Intel half remains community-tested — see the README.