The long awaited Pimoroni PicoSystem is finally here. The $80 (£58.50) games console was announced at the same time as the Raspberry Pi Pico even featuring on the launch home page, way back at the start of 2021. PicoSystem offers an RP2040 based portable game console. Before you head off to find your favorite retro games, PicoSystem is not that type of console. We can write our own games using a choice of C++, MicroPython or CircuitPython or we can download pre-made games from community members, but it’s not designed to be an emulator or run commercial titles.
In reality, PicoSystem is a custom RP2040 board with an IPS screen connected using the SPI protocol, typical D-pad controls and an onboard LiPo battery and charging circuit. But with this meagre amount of power we can make wonderful things; we just need to invest a little of our time and energy to do so.
Pimoroni PicoSystem Specifications
|SoC||Raspberry Pi RP2040 (Dual Arm Cortex M0+ running at up to 133 Mhz with 264kB of SRAM)|
|Storage||16MB of QSPI flash supporting XiP|
|Screen||1.54" colour SPI IPS LCD (240 x 240 pixels)|
|Controls||D-pad and four face buttons|
|Power / Data||USB-C Input, 525mAh LiPo battery|
|GPIO||UART and SWD pins for debug|
|Case||CNC milled aluminum|
|Programming Languages||C++, MicroPython, CircuitPython|
|Dimensions||96.6 x 42.7 x 15.5mm|
In the hand, PicoSystem is far removed from a cheap plastic retro console. The aluminum construction adds a little weight but plenty of quality to PicoSystem. On the face of PicoSystem, we have a bright and clear 1.54 inch IPS screen with a resolution of 240 x 240 pixels. Flanking the screen are a traditional D-pad and four face buttons. With the exception of a single power button there are no shoulder buttons for game use. Power and data connectivity is provided via a USB-C port. A neat function is how we make PicoSystem ready to receive a new firmware image / game. Pressing the X key and tapping the power button will enable us to drop a UF2 firmware image directly onto PicoSystem.
We took our PicoSystem apart, not something that one would normally do. So why did we? Along the right side of the board are SWD debug pins and a serial interface. The Raspberry Pi Pico has three debug pins at one edge of the board. These are software debug pins that can be used to debug running code. In the case of Pimoroni’s PicoSystem these pins are broken out inside the chassis and connecting those pins to an external Raspberry Pi Pico means that we can debug running code, useful when developing complex games.
PicoSystem’s PCB is thick, comprised of two boards sandwiched together for a total of 3mm thickness. The PCB is strong, and it has to be as it is the center of the build. At the bottom right of the board, we see the RP2040 (the later B1 stepping model) and just above that we see a 16MB QSPI flash storage chip.
Dominating the PCB is the 525 mAh LiPo battery which Pimoroni claims will offer up to six hours of gaming. The IPS screen connects to the PCB using a flat flex cable that is precariously close to where we would remove the battery, so do take care. Holding PicoSystem inside of its svelte aluminum shell are four countersunk crosshead screws which securely hold the aluminum case to the front PCB. More importantly the choice of screws affords us easy access to PicoSystem’s innards.
Games and applications for PicoSystem can be written using C++, MicroPython or CircuitPython and here is where you make your first choice. If you are a confident C++ coder and understand the workflow then the best results will come from this choice.
Pimoroni has online documentation covering the installation and C++ development process. At first, we found this documentation difficult to follow, because of both conflicting instructions and our overall unfamiliarity with C++. Happily, after we spoke with Pimoroni, the company published a quick-start guide that taught us to write, build and deploy our code to the Picosystem. While we didn’t have the time or expertise to create a new game from scratch, we were able to edit the example files to produce our desired output.
If you aren’t a C++ coder, you can use MicroPython and CircuitPython. We tested out CircuitPython, writing a short script which used the DisplayIO module to render an image to the screen. We used the Tom’s Hardware logo, and changed to an inverted logo everytime the A button was pressed.
Can you really make a game with CircuitPython? It may not be the first choice for high performance gaming, but, looking around the PicoSystem Discord group, we can see that people are using CircuitPython to create classic arcade games such as Deshipu’s Space Invaders clone “Vacuum Invaders'' and platformer “Jumper Wire”.
MakeCode Arcade Compatibility
Microsoft’s MakeCode Arcade is a block based coding language that works with hardware such as Adafruit’s PyGamer, BrainPad Arcade and Meowbit. It simplifies game creation enabling anyone to make 8-bit era games.
So does PicoSystem work with MakeCode Arcade? The short answer is no. We asked PicoSystem Lead Developer, Phil Howard and his response indicated two things: that PicoSystem was never designed with MakeCode in mind, and that MakeCode Arcade is not compatible with the RP2040, but that Microsoft may be adding support.
Use Cases for PicoSystem
PicoSystem is all about games, be that creating or enjoying them. Here we have a “limited” platform, akin to the meagre hardware on offer in the 1980s bedroom coder scene, but one that’s focused on entertainment and learning.
What you do with PicoSystem depends on your skills and your time. Skilled coders will soon have their games running no matter the language, but for those of us without the skills, we are best off taking our time and learning the ropes. We found that CircuitPython gave the most immediate results but, at the time of writing, the only firmware images were far from release candidate ready. The same can be said for MicroPython which is currently in alpha and is showing great promise.
We can also look at this from the C++ point of view. The low spec hardware of the PicoSystem provides a great incentive to learn C++ which works extremely well on low powered machines.
Compared to Adafruit Pygamer
While there are many handheld consoles on the market, there’s one that stands out as the Pimoroni Picosystem’s most direct competitor, the Adafruit Pygamer. Released in 2019, Pygamer is powered by a ATSAMD51J19 CPU running at 120 Mhz with 192KB of RAM and 8MB of onboard flash, along with a microSD card slot for additional storage. It has a larger, 1.8-inch screen with a 160 x 128 resolution, a thumbstick instead of a D-pad and four buttons, two for gaming and two for menu usage.
Available for $45 for the bare board and $60 in a kit that includes the batteries, buttons and casing, the Pygamer is a bit cheaper than the Picosystem, which goes for £58.50 ($80.51) and it has some additional features such as an accelerometer, light sensor, microSD card slot and 5 RGB Neopixels. The Pygamer is quite a bit larger at 101.6mm x 60.0mm x 19.5mm versus 96.6 x 42.7 x 15.5mm for Pimoroni’s handheld.
However, the build quality of the Picosystem, which comes pre-assembled, is far superior as it has a CNC milled aluminum case as opposed to a cheap acrylic case that you must snap on yourself. The RP2040 chip inside is more powerful than the ATMSAMD51J19 in the Pygamer and we have double the amount of on-board storage with 16MB rather than just 8MB. The 1.54-inch screen is higher resolution at 240 x 240 too.
The biggest difference between the Pygamer and Picosystem is in what they support. A product from Adafruit, Pygamer is made to work really well with the company’s CircuitPython language and it also performs excellently with MakeCode Arcade while Arduino IDE is also an option. On Picosystem, at present, MakeCode Arcade is not an option, but with a combination of C++, a faster processor and a better screen, you can build more complex games and play them on a more compact and solid system.
Pimoroni’s PicoSystem is a great example of “you only get what you give.” If you have the time and skill, then you can make excellent games on the low power handheld. Don’t expect PicoSystem to play your back catalog of ROMs, though. Instead use it as inspiration to learn games programming and perhaps we could see a resurgence of the 1980s bedroom coding scene. Once the MicroPython and CircuitPython platforms mature a little, they will be ready for everyone to make their first game.