June 16, 2025
I also thought I would post an alternative setup to the one that I posted originally. This one is much more compact and only requires the Pico and the display to be connected together. However, it requires powering by USB and also can't record the screen to an SD card.
So, I finally added a difficulty selector to the snake game. With that I fixed a few bugs as well (for example in the vertical scrolling menu, where the selected button did not render as selected if it was selected by the joystick center button).
I also realized that I forgot to put out a devlog about adding a horizontal scrolling menu function that I added and it is used for example for the difficulty selection.
However there is still a bug that causes the buttons not to center correctly.
I added a scrolling menu function. Now there can literally be an unlimited amount of options in one menu. (granted as long as the fit into the rather limited RAM of the pico)
Now I only need to add a brightness and difficulty option and I think I'll be ready to ship this project.
So after three painful hours and almost designing my own tool to export images to the pico I discovered that the problem was partially me and partially in the fact that there probably is a bug in the micropython framebuf library.
Specifically in the way it processes RGB565 colors. In the image below you can see that I am setting the pixel 0, 0 to the color code #F800 which in the RGB565 color space corresponds to red.
However as you can see in the console the data written to the bytearray is actually #00F8 which is in fact not #F800 as one would expect. This, I believe is caused by the fact that the library treats the second byte as the higher byte when it should be the other way around.
All this now means that I will have to come up with a new color conversion function that works around this and also I will have to fix the new function that displays images from files.
I thought I should also show off the current setup of the pi pico. As it is the project is currently fully compatible with the raspberry PI pico, pico 2, and pico 2 W. It also fully works if you flash the normal pico firmware onto the pico W. It however does have issues with insufficient memory on the normal pico W. But I do have plans to try to fix this.
I added better key press handling using IRQ interrupts in order to fix the issue where some key presses were not registered.
I have also discovered that the joystick button on the display that I chose tends to multiple-click. I will try to rectify this in the software in the future.
I have added a screenshot function. I will have to implement it properly now in order to allow for recording as well. And I also added the possibility to save the screenshots to an SD card.
Now, I will focus on creating a proper tool to export those screenshots and I will try to add the posibility to record GIFs.
(The screenshot here is upscaled from the original 240*240 size)
So, after more than 7 hours of work this is my first devlog. I've started refactoring my old code and so far the main menu is mostly done. I have also made a new logo for this project of mine. Now I'll work on actually adding some basic settings and rewriting my old snake game to make it compatible with this new version of the code.
A project in MicroPython that includes games and tools for making games (or other programs that can utilize a GUI) for the original Raspberry Pi Pico equipped with a 240px*240px LCD display. See the GitHub repository and readme for all the details.
This was widely regarded as a great move by everyone.