A Small Matter of Programming (and Escape Rooms)

Wrapping Up

One month late isn’t bad for a software project, eh?

Real-Time Interrupt-driven Concurrency

So far, all of my hardware examples have run directly on the microcontroller. To combine the rendering, input and sound features of Quinti-Maze 2022 on the microcontroller I’ve decided to use RTIC, “A concurrency framework for building real-time systems”.

Maze Generation

Since I need to run Quinti-Maze in a Rust no_std environment, none of the existing maze generation crates can be used directly. I derived my version from the Knossos crate and its version of the Growing Tree generation algorithm, adapting it to no_std and generating the maze in three dimensions.

Keyboard Input

The Apple II had an attached keyboard, which Quinti-Maze used as its input device.

Hardware Sound

Now the fun begins, making the Feather M4 beep.

The Feather M4 Express

I realize I’ve dived so deep into this sound rathole that I want to talk about sound on the device before I’ve really talked about the device itself. To correct that, this post is all about the Feather M4 Express and how to write software for it in Rust.

Simulator Sound

I’m not sure I would have taken the trouble of implementing sound in the simulator version of Quinti-Maze if I’d not already done it in 2020. I used it then to emulate the hardware for a Simon-style game I was implementing to experiment with a system for escape room props using MQTT. That experiment might make for an interesting future post.

Apple II Sound

I remember that Quinti-Maze played a tune when one won, but could not remember how. This post is all about my research into Apple II sound. A follow up post will be about how I’ll produce the same sounds in Rust.

Graphics

One of the appeals to me of writing the 2022 version of Quinti-Maze in embedded Rust is that there is a graphics crate, embedded-graphics, that is not too different from what existed in 1982. An added bonus is that it already has support for the LCD display I had laying around. But the real kicker is its desktop simulator,