# DIY Arcade Console with Rp2040 Pico

**URL:** <https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969>\
**Category:** Arcade\
**Tags:** maker\
**Created:** [October 2, 2023, 11:44pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969 "2023-10-02T23:44:22Z")\
**Posts on this page:** 16\
**Page:** 2

<div class="post-metadata">

**Author:** ![Vegz78](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/vegz78/32/1201_2.png) [@Vegz78](https://forum.makecode.com/u/Vegz78)\
**Post date:** [May 9, 2024, 3:46pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/21 "2024-05-09T15:46:20Z")

</div>

So satisfying to follow this thread! Amazing work!

How close are you, @AqeeAqee, and/or the others here to maybe release one or more cheap DIY sets or shopping lists, or readymade handhelds based on the Pico and with a common and official hardware/compile entry for easy programming here?:

> **[Hardware](https://arcade.makecode.com/hardware)**
>
> These boards run MakeCode Arcade games. They are based on our guidelines, adhere to open source hardware reference designs (see Adding a New Board to Arcade section below), and have been user tested. However, each hardware manufacturer is...

PS: By the way, I am really stuck here with ARM Linux .elf compilations no longer running on newer Recalbox distros or smaller RPi boards or in the GPi case(Haven’t found the culprit yet). Anything here already familiar to you or that you would recommend me to do next?:  
[https://forum.makecode.com/t/makecode-arcade-on-raspberry-pi-including-retropie-recalbox-batocera-etc/14267/12](https://forum.makecode.com/t/makecode-arcade-on-raspberry-pi-including-retropie-recalbox-batocera-etc/14267/12)

---

<div class="post-metadata">

**Author:** ![AqeeAqee](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/aqeeaqee/32/5424_2.png) [@AqeeAqee](https://forum.makecode.com/u/AqeeAqee)\
**Post date:** [May 13, 2024, 4:53pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/22 "2024-05-13T16:53:39Z")

</div>

Following the video link of @MasonChen, I found he had made a PCB for Pico, PicoGame. Looks nice, running Arcade game or general programs on Pico, with unplugable screen&Pico slot. It’s just what I am tending to do, but not yet. Not sure whether it for selling.

As to RPi, I am using RetroPie, it work well, except unsteady terminate sometime. And never tried Recalbox, have no any experience about Recalbox, sorry 😂

---

<div class="post-metadata">

**Author:** ![SoftTalker](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/softtalker/32/10776_2.png) [@SoftTalker](https://forum.makecode.com/u/SoftTalker)\
**Post date:** [June 9, 2024, 4:29am UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/23 "2024-06-09T04:29:43Z")

</div>

Hi is it possible to put multipul games on the pico? Thx

---

<div class="post-metadata">

**Author:** ![AqeeAqee](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/aqeeaqee/32/5424_2.png) [@AqeeAqee](https://forum.makecode.com/u/AqeeAqee)\
**Post date:** [June 22, 2024, 8:32pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/24 "2024-06-22T20:32:36Z")

</div>

[Just replied your another thread]

> [@A project im doing fr this time](https://forum.makecode.com/t/a-project-im-doing-fr-this-time/29165):
>
> im making a mca gameboy bassically and i was wondering if anyone could make it so that the pi pico can run multiple games thx! shout out to @AqeeAqee, @MasonChen, @Vegz78 and @tobysimonds for doing all the hard work

Multiple game on Pico is impossible based on current MCA framework. Bootloader firmware(in where my multiple games store/load program laid) is read only, instead of programable like other chips(STM32F4 and SAMD51).

---

<div class="post-metadata">

**Author:** ![SoftTalker](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/softtalker/32/10776_2.png) [@SoftTalker](https://forum.makecode.com/u/SoftTalker)\
**Post date:** [September 4, 2024, 4:31pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/25 "2024-09-04T16:31:03Z")

</div>

Hi @AqeeAqee was wondering if u could use one of these psp joysticks for the project? It looks something like this

 ![1PCS-3V-5V-PSP-2-Axis-Analog-Thumb-GAME-Joystick](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/9/4/9412a62deb436c0c5d551cd28b7c006b89c449d4.webp)

thx,  
SoftTalker

---

<div class="post-metadata">

**Author:** ![AqeeAqee](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/aqeeaqee/32/5424_2.png) [@AqeeAqee](https://forum.makecode.com/u/AqeeAqee)\
**Post date:** [September 4, 2024, 6:24pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/26 "2024-09-04T18:24:42Z")

</div>

This kind of analog joysticks are supported by Makecode Arcade. I use them on my custom board to replace dirction buttons, with STM32F412 chip(like the one on Meowbit, but more powerful).  
But we cant make it work on RP2040 right now, cause the analog read function doesn’t implemented in RP2040 core(codal-rp2040). I have submit an issue for a long time, but no any response yet.

> <https://github.com/lancaster-university/codal-rp2040/issues/3>
>
> Hi,
> I am trying to read a analog pin on Pico, via analogRead() on Makecode Arca…de with rp2040(or r2 variant), but always got 0. So digged codes of arcade, then codal-pico, then this repo, I found the RP2040Pin::getAnalogValue() function just return 0 at last. Hope my understanding is correct, this is the reason why I got 0.
> 
> https://github.com/lancaster-university/codal-rp2040/blame/ca54f854754d4cd2aad993f6c8027b8ecb9fb1a1/source/RP2040Pin.cpp#L363-L376
> 
> If so, hope this can be fixed ASAP, I need analog pin features for analog joystick on new board of Pico.
> Thanks a lot in advance !

---

<div class="post-metadata">

**Author:** ![Brohann](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/brohann/32/17380_2.png) [@Brohann](https://forum.makecode.com/u/Brohann)\
**Post date:** [September 4, 2024, 8:24pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/27 "2024-09-04T20:24:29Z")

</div>

I’m excited to see the performance on the rp2350!

---

<div class="post-metadata">

**Author:** ![SoftTalker](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/softtalker/32/10776_2.png) [@SoftTalker](https://forum.makecode.com/u/SoftTalker)\
**Post date:** [September 5, 2024, 4:36pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/28 "2024-09-05T16:36:29Z")

</div>

Aww dang it

---

<div class="post-metadata">

**Author:** ![macifom](https://avatars.discourse-cdn.com/v4/letter/m/3ec8ea/32.png) [@macifom](https://forum.makecode.com/u/macifom)\
**Post date:** [September 26, 2024, 5:27pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/29 "2024-09-26T17:27:03Z")

</div>

Inspired by this thread, I ran a Summer workshop for a handful of kids who built Pi Pico-based MakeCode Arcade handhelds and created original games for them. The kids had a blast but the ‘3D-printed Game Boy’ models I repurposed for the project were a pain to produce and assemble. To save others grief I designed a new handheld from scratch and documented the complete build the process. You can read the instructions [here](https://drive.google.com/file/d/1F3W_o1ae1DH8ZkoQVnmamVsNYcqBAD8T/view?usp=drive_link) and download the 3D models from [cults3D](https://cults3d.com/en/3d-model/gadget/maketato-a-diy-handheld-for-kids-learning-game-development). If you’re an educator and want a free non-commercial license just ping me.

Here’s my daughter rocking some Jumpy Platformer:

 ![inhand_open_med](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/c/7/c7fadd611789ad0023ec084a7dfe8ef8ed0cfc33.jpeg)

Big thanks to @AqeeAqee and the others who’ve explored and documented the state of RP2040 compatibility!

---

<div class="post-metadata">

**Author:** ![MasonChen](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/masonchen/32/13921_2.png) [@MasonChen](https://forum.makecode.com/u/MasonChen)\
**Post date:** [September 27, 2024, 3:32pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/30 "2024-09-27T15:32:24Z")

</div>

Hi all, I recently saw an interesting video [https://www.youtube.com/watch?v=tMfg4Eu8SMw](https://www.youtube.com/watch?v=tMfg4Eu8SMw) . It seems that makecode arcade supports esp32-s3? The hardware uses vm to save files. Does anyone know how to do it?

---

<div class="post-metadata">

**Author:** ![wendre-prog](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/wendre-prog/32/16415_2.png) [@wendre-prog](https://forum.makecode.com/u/wendre-prog)\
**Post date:** [November 3, 2024, 6:24am UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/31 "2024-11-03T06:24:35Z")

</div>

Did you manage to solve the problem? I have the same problem, it’s black and white.

---

<div class="post-metadata">

**Author:** ![SoftTalker](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/softtalker/32/10776_2.png) [@SoftTalker](https://forum.makecode.com/u/SoftTalker)\
**Post date:** [November 6, 2024, 3:13pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/32 "2024-11-06T15:13:43Z")

</div>

most likely smooooth as butter

---

<div class="post-metadata">

**Author:** ![AqeeAqee](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/aqeeaqee/32/5424_2.png) [@AqeeAqee](https://forum.makecode.com/u/AqeeAqee)\
**Post date:** [November 7, 2024, 5:07pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/33 "2024-11-07T17:07:34Z")

</div>

@tobysimonds @wendre-prog

> [@tobysimonds](#):
>
> Here’s what the black and white looks like
> 
> ![IMG_8059](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/2X/d/d85958dc18e25642800ccec9db017e9a387ca026.jpeg)

This looks like all colors are shown in a kind of “grayscale mode”, by its color index in MCA. **White** , index=1, shows black; and **Black** , index=15, show white; and other colors show a gray, more higher index is, more dark. Right?  
Later, I happened know that MCA using a feature of ST7735, called LAT, look-up table (for colors). When refresh each frame, instead of send color value(RGB) to the LCD, MCA send RGB indexes, 4-bit each, like 0x000 for color 0, 0xAAA for color 10. Ofcause, MCA should set exactly RGB values for these RGB indexes, at init and before first frame be send out, this is RGBSET cmd (command ID=0x2D) of ST7735.  
So your case is probably cause: MCA send this command, by LCD doesn’t received, or not support, I guess.

This never happend on my ST7735 screens, so I can’t prove that right now.  
A quick test: set color palette in your code.

- If it works, that means RGBSET command works, but failed in init phase. You need add palette set at first of each project.
- If not, your LCD not support this command, which MCA required. Change another LCD. As far as I know the most popular ST7735R and ST7735S supports.

---

<div class="post-metadata">

**Author:** ![AqeeAqee](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/aqeeaqee/32/5424_2.png) [@AqeeAqee](https://forum.makecode.com/u/AqeeAqee)\
**Post date:** [November 7, 2024, 6:57pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/34 "2024-11-07T18:57:16Z")

</div>

> [@tobysimonds](#):
>
> You can see though that when I throw an error the color on the screen works perfectly though
> 
> ![IMG_8060](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/2X/a/a2afe84f2d9b2e23b33bf77ce5ca272aed7987ab.jpeg)

In Panic Screen, MCA make a fresh start, init screen in kind of “Safe mode”. It doesn’t set color palette, just send color 12-bit RGB values (4bit-4bit-4bit), (which actually mapping to LAT default values). MCA draw pixel color with color RGB values directly (White=0xFFF; Black=0x000; Red=0xF00; Yellow=0xFF0, etc.).

---

<div class="post-metadata">

**Author:** ![acorn80](https://avatars.discourse-cdn.com/v4/letter/a/8edcca/32.png) [@acorn80](https://forum.makecode.com/u/acorn80)\
**Post date:** [September 5, 2025, 4:22pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/35 "2025-09-05T16:22:46Z")

</div>

Hi, thanks for you info - i’ve managed to make a basic device (standard buttons/screen and sound) Did you manage to make any GP connections work? I’ve been trying to use Pins to light up a LED connected to GP26 but no joy. I was also hoping that I could add some extra buttons!

pins.setPull(26, PinPullMode.PullNone);

pins.digitalWritePin(26, 1)

---

<div class="post-metadata">

**Author:** ![acorn80](https://avatars.discourse-cdn.com/v4/letter/a/8edcca/32.png) [@acorn80](https://forum.makecode.com/u/acorn80)\
**Post date:** [September 5, 2025, 6:12pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/36 "2025-09-05T18:12:34Z")

</div>

sorry should @AqeeAqee as I appreciate this is an old post.

[Previous page](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969.md?page=1)
