3 releases (breaking)

Uses new Rust 2024

0.3.0 Apr 4, 2026
0.2.0 Mar 14, 2026
0.1.0 Jul 19, 2025

#90 in #mouse


Used in 3 crates

MPL-2.0 license

280KB
8K SLoC

Rust 4.5K SLoC // 0.0% comments GNU Style Assembly 4K SLoC // 0.0% comments

Design

The raven-varvara crate is independent of any specific GUI / windowing implementation. Instead, the application using the crate is responsible for running the event loop, sending keyboard / mouse state, and drawing the returned frames. This makes the library very flexible!

Devices

Console

Limitations

Output streams are buffered and printing is delegated to the caller. For example, a program that prints many lines before halting will run to completion, then the caller is responsible for printing those lines

Audio

Implementation notes

The reference implementation is very different from the specification; raven-varvara attempt to match the behavior of the reference implementation.

Controller

Implementation notes

The key port must be cleared after the vector is called. Otherwise, button handling is broken in some ROMs.

File

Implementation notes

The directory output format must be zero-terminated; otherwise, the Potato ROM prints junk data left in memory.

Datetime

Limitations

The IS_DST bit always returns 0 (see chrono#1562)

Dependencies

~1.5–2.4MB
~38K SLoC