<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0"><channel><title>gotnull</title><description>The development blog of gotnull. Low-level firmware, fantasy consoles, games, and whatever else I am building.</description><link>https://blog.gotnull.com/</link><language>en-us</language><item><title>I keep choosing hard mode (the SPI panel and me)</title><link>https://blog.gotnull.com/i-keep-choosing-hard-mode/</link><guid isPermaLink="true">https://blog.gotnull.com/i-keep-choosing-hard-mode/</guid><description>I had a working HDMI path at 12:48 in the morning. Then at 10am, well rested and full of hope, I picked up the tiny SPI screen instead and spent nine hours reinventing flicker. A note on patience, and on why hardware scanout is the thing I should have just waited for.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>rusty-nail</category><category>firmware</category><category>displays</category><category>hdmi</category><category>stm32</category></item><item><title>The SPI panel saga: from a blank screen to 25 MHz</title><link>https://blog.gotnull.com/the-spi-panel-saga/</link><guid isPermaLink="true">https://blog.gotnull.com/the-spi-panel-saga/</guid><description>Getting the desktop off the USB stream and onto a real LCD. A dead-end controller that latches on the wrong clock edge, a switch to the ST7735, and climbing from 1 MHz to 25 MHz without losing the audio.</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><category>rusty-nail</category><category>firmware</category><category>displays</category><category>stm32</category></item><item><title>Getting sound out of it</title><link>https://blog.gotnull.com/getting-sound-out-of-it/</link><guid isPermaLink="true">https://blog.gotnull.com/getting-sound-out-of-it/</guid><description>An I2S DAC, SAI plus DMA, and three gotchas that each ate a session: a mute pin nobody pulls high, a data cache fighting the DMA, and an async executor that starved the audio to silence.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><category>rusty-nail</category><category>audio</category><category>firmware</category><category>stm32</category></item><item><title>Running real PICO-8 Lua on a Cortex-M7</title><link>https://blog.gotnull.com/real-pico8-lua-on-a-cortex-m7/</link><guid isPermaLink="true">https://blog.gotnull.com/real-pico8-lua-on-a-cortex-m7/</guid><description>Vendoring Lua 5.4 into a bare-metal firmware, the 64-bit integer bug that printed 42 minus two-to-the-32, and why a hardware watchdog beat an instruction-count hook for stopping runaway carts.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>rusty-nail</category><category>lua</category><category>firmware</category><category>pico-8</category></item><item><title>A fantasy console that boots on a dev board</title><link>https://blog.gotnull.com/a-fantasy-console-on-a-dev-board/</link><guid isPermaLink="true">https://blog.gotnull.com/a-fantasy-console-on-a-dev-board/</guid><description>Rusty Nail is a windowed pixel-desktop OS running bare-metal on a Nucleo-H753ZI. How it is put together, and why the display layer is an abstraction from day one.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><category>rusty-nail</category><category>firmware</category><category>rust</category><category>architecture</category></item><item><title>Starting this blog</title><link>https://blog.gotnull.com/starting-this-blog/</link><guid isPermaLink="true">https://blog.gotnull.com/starting-this-blog/</guid><description>A place to write up the things I build, mostly low-level. Short note on why it exists.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><category>meta</category></item></channel></rss>