I thought I'd share some progress on the final touches to the Retro Lite CM4 - a small little accessory, if you will!
I always thought it would be pretty cool to integrate an OLED display into a docking station that gave you relevant information about the game/consoles you could potentially play that game on (because we all know emulation is for chumps). And so, we're creating a very small docking station that allows you to connect up to 4 USB peripherals via a USB hub (I'm using the CY7C65642 from Cypress - a very low powered hub that splits the single CM4 USB bus into 4 channels). The end goal is to allow you to dock the CM4 and use it in a regular linux desktop environment, connect up a keyboard, mouse, whatever (i.e with Raspbian, browsing the web, watching YouTube, using VS code... etc).
The dock also supports 1080p HDMI out (unfortunately no hot docking with FKMS drivers, but the Pi automatically reboots upon hotplug detect) as well as USB-C charging and has a pretty cool OLED 128x128 display that accepts 16-bit raster images over USB from the CM4, communicates to the Pico over SPI, piping the relevant information to the display based on the game you've just launched.
YveltalGriffin is helping me with the OLED code on the RP2040 side, since he is a lot more experienced than I am when it comes to using the Raspberry Pi Pico based on his previous project work. Thanks to him we already had a great starting point to go off - I can't thank him enough for the help and his work effort + time to help me make it happen! I've been trying to piece together small bits for the python script to extract the relevant information we want to be displayed too but my coding skills are to put it bluntly, pretty crap.
The PCB design. Currently the Pico is not integrated onto the board for the first prototype, however I would like to have it all on a single PCB for the final product eventually, of course.
The OLED is going to have a few cool "modes", which will be togglable with a push button by the user on the side of the dock. Some of them we had in mind include:
a) A Retro Lite CM4 splashscreen on power detect
b) Raspberry Pi CM4 stat menu (CPU temperature, RAM usage, CPU usage, disk space) - automatically runs when no game is playing/you're using the Pico in desktop mode as a regular PC
c) Game marquee/box art view (automatically loads depending on the game launched) - selectable in code
d) Game metadata menu (shows the game description, copies sold, year released, number of players - basically a lot of information about the game you're playing. Text will hopefully scroll vertically across the panel).
e) Automatic screen timeout after 30 seconds of inactivity to prevent OLED burn-in (wakeable with a push button)
f) All possible variants of the console released (including limited editions) in raster form (scaled down to a 5:6:5 RGB @ 128x128 resolution). For example, if you launch a GBA title, one of the following images could be displayed at random from the given system directory. It's taking a while to make all these images, but I think it'll be worth it in the end! I'd like to thank Ampersand for kindly providing me with the awesome vector images to use in my project.
Or if you launch an NDS title... for example:
Or a Game Boy Color title:
And so on...!
Here's a few pictures of it working inside the dock. The python script does all of the image conversion before it's piped over USB serial to the Pico to send over the raw bitstream: