Pushing Crates In 8-bit Color

Moore’s law isn’t strictly holding anymore, but it is still true that most computing systems are at least trending towards lower cost over time, if not also slightly smaller size. This means wider access to less expensive hardware, even if that hardware is still an 8-bit microcontroller. While some move on to more powerful platforms as a result of this trend, there are others still fighting to push these platforms to the edge. [lcamtuf] has been working to this end, stretching a small AVR microcontroller to not only play a classic video game, but to display it on a color display.

The video game that [lcamtuf] is recreating is known as Sokoban, a puzzle game which involves pushing crates to their assigned spaces without accidentally pinning yourself into a no-win situation. It’s much less common than the Snake builds we’ve seen plenty of, but still lends itself to the platform quite well. It’s based on a AVR128DA28 microcontroller which not only handles the game but also drives a 160×128 color OLED display. Making room for the display on the relatively small microcontroller was a challenge, but after several clever workarounds to make the most of memory and processor cycles, the game is up and running on about as small of a device as is possible.

[lcamtuf] does claim that this project was done mostly as a challenge, but also to instruct his children in some of the more enjoyable aspects of efficient game design. For those less interested in the game design aspect and more in the best ways to cram as much processing power into a small package as possible, take a look at this build which implements VGA with nothing more than an ESP32.

6 thoughts on “Pushing Crates In 8-bit Color

  1. > The video game that lcamtuf is recreating is known as Sokoban, a puzzle game which involves pushing crates to their assigned spaces without accidentally pinning yourself into a no-win situation.

    And those crates have nothing to do with the crates at https://crates.io/ (what I, Rust fanboy, hoped for ;-)

Leave a Reply to OrzelCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.