Skip to content

v0.4.0 "Rasteriser" — the first picture

Choose a tag to compare

@doublegate doublegate released this 24 Jul 01:18
6176d23

The first RustyN64 release that produces a picture. The low-level Reality Display Processor renders through the per-pixel pipeline and the Video Interface scans it out. Phase 3 of the cycle-accurate N64 emulator is complete.

Cut criteria — both met (each an oracle result with a committed runner)

  • The conformance suite bit-matches Angrylion164 committed .rvec vectors replay byte-for-byte against the Angrylion-Plus software RDP: FILL rectangles, the asymmetric scissor clip, FILL / shaded / textured triangles, the colour combiner, the divide-free blender, dither, alpha-compare, coverage write-back, the combiner primitive mux, and copy-mode texture rectangles.
    cargo test -p rustyn64-test-harness --test rdp_conformance
  • A real ROM renders a stable golden frame — a license-clean homebrew ROM boots on the cycle-accurate VR4300, programs the VI, CPU-fills a framebuffer, and the VI scans it out to a verified 32×24 frame, bit-identical across two boots (ADR 0004).
    cargo test -p rustyn64-test-harness --test real_rom_frame

Highlights

  • The LLE RDP rasteriser (triangle edge-walk, sub-pixel coverage, the (A−B)·C+D combiner, the divide-free blender, TMEM loads + texel decoders, copy-mode texture rectangles, textured triangles) and VI scan-out — the first-picture loop RDP → framebuffer → VI → frontend is closed.
  • A seeded-fuzz conformance harness that found and fixed two real accuracy bugs — the FILL rectangle inclusive lower-right edge (R-3) and the asymmetric scissor clip (R-15) — and textured triangles resolved (R-13: the bi_lerp0 YUV-convert vector bug plus the s.5 texel-coordinate scale).

Not yet (later phases)

Perspective-correct and bilinear texturing, an RDP-driven real-ROM frame, AI audio (v0.5.0), and cartridge boot + saves (v0.6.0). docs/STATUS.md is authoritative — a green test run does not mean a subsystem works.

Build

Pure Rust, toolchain pinned to 1.96.0, edition 2024. cargo build --release. Linux frontend needs libxkbcommon wayland alsa-lib systemd-libs. Dual-licensed MIT OR Apache-2.0.

Full changelog: CHANGELOG.md.