diff --git a/content/news/044/index.md b/content/news/044/index.md index 5c977b640..8d92d9e9f 100644 --- a/content/news/044/index.md +++ b/content/news/044/index.md @@ -260,6 +260,35 @@ Editor with egui. ["Editors (2/3): Editing entries"]: https://thegrimsey.net/2023/03/12/Bevy-Five-Editor-Two.html ["Editors (3/3): Selection dialog & new entries"]: https://thegrimsey.net/2023/03/21/Bevy-Six-Editor-Three.html +### [Writing NES assembly programs in a Rust DSL][writing-nes-programs-in-rust-video] + +[![Title slide from presentation about writing NES assembly programs in Rust](nes-programming-in-rust-cover.jpg) +_Video: Talk about writing NES assembly programs in Rust_][writing-nes-programs-in-rust-video] + +This is a talk about writing a program for the Nintendo Entertainment System +that exposes all of its audio processor registers through an interface that lets +the user flip bits using the controller and hear the result in real time. The +program is written in Rust using an Embedded Domain-Specific Language. The talk +demonstrates the features of the language and how they can be used to help +express NES assembly programs in Rust. + +Some features of the EDSL: + +- defining and calling assembly functions by string labels +- using Rust as a powerful macro language (e.g. generate code inside a for-loop) +- using Rust's type system to catch invalid combinations of instruction and + addressing mode + +The source code for the NES program described in the talk is +[here][nes-audio-playground-github] and there is a [demo of the tool on +youtube][nes-audio-tool-demo-video]. The PDF of the slides from the talk are +[here][writing-nes-programs-in-rust-pdf]. + +[writing-nes-programs-in-rust-video]: https://www.youtube.com/watch?v=hs-MrEoOX5Y +[nes-audio-playground-github]: https://github.com/gridbugs/nes-audio-playground +[writing-nes-programs-in-rust-pdf]: https://raw.githubusercontent.com/gridbugs/nes-programming-in-rust-sydney-rust-meetup-2023-03-01/main/slides.pdf +[nes-audio-tool-demo-video]: https://www.youtube.com/watch?v=QHoISiWdPXo + ## Tooling Updates ### Tiger diff --git a/content/news/044/nes-programming-in-rust-cover.jpg b/content/news/044/nes-programming-in-rust-cover.jpg new file mode 100644 index 000000000..20d269d5d Binary files /dev/null and b/content/news/044/nes-programming-in-rust-cover.jpg differ