# 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:** 20\
**Page:** 1

<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:** [October 2, 2023, 11:44pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/1 "2023-10-02T23:44:22Z")

</div>

Hi all:

Recently, I saw some questions about how to running Arcade game on Pico, especially @Vegz78 . (BTW thanks for your great efforts on running Arcade game on RPi, it’s really valuable for me)  
Here is what I got after playing Pico with Arcade for a few days. Hope this helped.

**Good news:**

- work with both Pico & PicoW
- works well with screen(ST7735 160x128) & btn & speaker
- bootloader in rom, very very safe
- UF2 format supported by bootloader naturally !!! Not require compile bootloader anymore! 😛
- Pico is faster, and very cheap about 1.5~4$
- can work with 9341(320x240) in spi mode (with a little laggy)

**Bad news:** (my test result)

- CFG\_PIN\_LED can’t sign to on-board led on PicoW, cause it not be driven by any GPIO directly.
- botton pins need pull-up for steady
- no parallel solution yet, can’t setup parallel screen (bigger screen eg: 9341 )
- WebApp don’t support, device appeared but panic(050) when download directly.
  - enter MSD mode first every time to upload game ( holding bootsel btn and re-plug usb cable of Pico)
  - can’t transfer serial msg via console.log()

- pin.analogRead() always return 0, whatever the pin config I set.

**How to do:**

- Download my configuration v01: [https://github.com/AqeeAqee/Arcade-Pico/blob/main/Arcade-Rp2040Pico\_Aqee\_v01.uf2](https://github.com/AqeeAqee/Arcade-Pico/blob/main/Arcade-Rp2040Pico_Aqee_v01.uf2)
- holding bootsel btn and re-plug Pico into usb port of computer.
- Drag&drop this config file into Pico drive.
- In arcade, choose hardware of R2 (need enabled experience hardwares first in About)
- Before ready to download game, again, holding bootsel btn and re-plug Pico into usb port of computer.
- Click download in Arcade and save file in Pico drive.
- done, have fun!

**Pins connection in this version:**

```
    Buttons:s
    pin 6 : MENU
    pin 10 : LEFT
    pin 11 : RIGHT
    pin 12 : UP
    pin 13 : DOWN
    pin 14 : A
    pin 15 : B

    Screen - ST7735
    pin 16 : MISO (optional)
    pin 17 : CS (or directly to GND)
    pin 18 : SCK
    pin 19 : MOSI
    pin 20 : DC
    pin 21 : RST
    pin 22 : BL (or directly to 3v3)

    speaker 
    pin 7 (and a GND)

```

- Other settings(GPIOs, I2C, SPI, etc) will be added later, I will share here also when updated.

- Further more:  
Go [https://microsoft.github.io/uf2/patcher/](https://microsoft.github.io/uf2/patcher/) , to add or edit settings for your board.

> **Note:**
>
> - In this config file, only 1 section included. In theory, configu settings should placed at 4k before 1 megabyte, and also at 4k before 2MB, 4MB, etc. In fact. Simplified to 1 section for convience of edit&try, and Arcade works well with first one only.\*

---

<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:** [October 3, 2023, 4:39pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/2 "2023-10-03T16:39:22Z")

</div>

some photos:

 ![arcade-pico-st7735](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/2X/5/5f92ebb699224dc4712557b374ebeb8b2c68d803.jpeg)

 ![arcade-pico-9341spi](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/2X/0/0b2a0807adb5844a6c3670484af00ac2becc3d4b.jpeg)

---

<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:** [October 3, 2023, 4:50pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/3 "2023-10-03T16:50:54Z")

</div>

and the ILI9341 config file:

> <https://github.com/AqeeAqee/Arcade-Pico/blob/main/Arcade-Rp2040Pico_9341spi_Aqee_v01.uf2>

---

<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:** [October 3, 2023, 4:51pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/4 "2023-10-03T16:51:49Z")

</div>

This is out of this world impressive work and fun to read about, @AqeeAqee!!! Thanks for your efforts and this update with detailed descriptions!

-No doubt very good news and a great help for everyone interested in getting MCA games playable on the Pico(and getting these two great tinker communities(MakeCode and Raspberry Pi) closer to eachother and sharing great ideas and inventions!)

> [@AqeeAqee](#):
>
> (BTW thanks for your great efforts on running Arcade game on RPi, it’s really valuable for me)

That was nice to read, thanks; nothing is more motivating when programming than knowing that at least one other person on the planet finds it useful! 😉

I can only respond with ditto thanks for all your contribution like here, [your amazing extensions](https://forum.makecode.com/search?q=%40AqeeAqee%20tags%3Aextension%20in%3Afirst) and lately for the advances in MCA 3D graphics. It is no secret that I would love to see you and some other people on this forum who know who they are collaborate on a [_first ever_ demo compo entry](https://forum.makecode.com/t/makecode-arcade-demoscene/16250/9).  
(Sadly, my own abilities are put to best use as audience and fan in this particular matter.)

---

<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:** [October 3, 2023, 5:20pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/5 "2023-10-03T17:20:22Z")

</div>

> [@Vegz78](#):
>
> nothing is more motivating when programming than knowing that at least one other person on the planet finds it useful! 😉

Yup! Really, that’s what pushed me ahead everytime I met a tough difficulty.

---

<div class="post-metadata">

**Author:** ![tobysimonds](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/tobysimonds/32/12703_2.png) [@tobysimonds](https://forum.makecode.com/u/tobysimonds)\
**Post date:** [January 2, 2024, 9:28pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/6 "2024-01-02T21:28:47Z")

</div>

Thanks so much for all your work getting MCA working on the pico

Everything worked perfectly for me except for one slight issue. My screen(ST7735S ) is only black and white. I’ve tried multiple ST7735S and had the same issue on all of them

I’d really appreciate any guidance on this

---

<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:** [January 4, 2024, 9:52pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/7 "2024-01-04T21:52:30Z")

</div>

Gald to know you playing with this, and make it work.  
As to the black&white color issue, sorry, I never met before. So I can’t infer where the problem is.  
The only suggestion I can give is the Red one is more compatible with MCA than the Blue one, in my picture.  
 ![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/2X/0/0ebdaaa24e8c724a78ab766fb5cccb8fadbd5b13.jpeg)

---

<div class="post-metadata">

**Author:** ![tobysimonds](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/tobysimonds/32/12703_2.png) [@tobysimonds](https://forum.makecode.com/u/tobysimonds)\
**Post date:** [January 17, 2024, 7:18pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/8 "2024-01-17T19:18:07Z")

</div>

Thanks for the response

I purchased the red ST7735S variant but couldn’t seem to get it to work still

Could you provide more detail on how you wired up the red ST7735S?

---

<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:** [January 18, 2024, 5:23pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/9 "2024-01-18T17:23:45Z")

</div>

Still black&white?

I wired following the mapping I provided:

> [@AqeeAqee](#):
>
> ```auto
> Screen - ST7735
> pin 16 : MISO (optional)
> pin 17 : CS (or directly to GND)
> pin 18 : SCK
> pin 19 : MOSI
> pin 20 : DC
> pin 21 : RST
> pin 22 : BL (or directly to 3v3)
> 
> ```

Can you take photo to show how you wired them?

---

<div class="post-metadata">

**Author:** ![Dale](https://avatars.discourse-cdn.com/v4/letter/d/ecd19e/32.png) [@Dale](https://forum.makecode.com/u/Dale)\
**Post date:** [February 6, 2024, 5:47pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/10 "2024-02-06T17:47:46Z")

</div>

while I modify your config, it seems not working. I just change Buttons with patcher [https://microsoft.github.io/uf2/patcher/#](https://microsoft.github.io/uf2/patcher/#). How to create the uf2 file for your configuration? Thanks

---

<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:** [February 8, 2024, 7:40pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/11 "2024-02-08T19:40:52Z")

</div>

> [@AqeeAqee](#):
>
> Download my configuration v01: [https://github.com/AqeeAqee/Arcade-Pico/blob/main/Arcade-Rp2040Pico\_Aqee\_v01.uf2](https://github.com/AqeeAqee/Arcade-Pico/blob/main/Arcade-Rp2040Pico_Aqee_v01.uf2)

Here’s the UF2 of my configuration.  
To modify, just drag it into the patcher page, then modify, and download the new one.

---

<div class="post-metadata">

**Author:** ![tobysimonds](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/tobysimonds/32/12703_2.png) [@tobysimonds](https://forum.makecode.com/u/tobysimonds)\
**Post date:** [February 16, 2024, 5:33pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/12 "2024-02-16T17:33:29Z")

</div>

Hi Sorry for the delay getting back to you

Here’s what the black and white looks like

 ![IMG_8059](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/2X/d/d85958dc18e25642800ccec9db017e9a387ca026.jpeg)

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)

Here’s what the wiring looks like for reference

 ![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/2X/3/3080ec86f08090e2d2d7ffe3c450ece9b15af220.png)

I’ve tried wiring both on pcb and with just wires and had same black and white issue

Any help would be much appreciated

---

<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:** [February 20, 2024, 5:45pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/13 "2024-02-20T17:45:29Z")

</div>

I didn’t found any problem in you schema, wires should be OK.  
But I noticed a green pcb underneath your lcd screen, what’s that? It’s possible that some layout on that “redefined” the logic?  
As to the panic screen, it re-init the screen before showing the error, but as far as I know the init procession is almost same with normal game screen. As I said before the blue pcb 7735 screen not very compatible with MCA, sometime it need init twice. So maybe the panic screen worked just because it after the “2nd init”.

---

<div class="post-metadata">

**Author:** ![Jedi](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/jedi/32/14307_2.png) [@Jedi](https://forum.makecode.com/u/Jedi)\
**Post date:** [February 23, 2024, 10:44pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/14 "2024-02-23T22:44:20Z")

</div>

could you reccomend what type of screen and buttons i should get?  
and make it as cheap as possible?

---

<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:** [March 1, 2024, 5:19pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/15 "2024-03-01T17:19:04Z")

</div>

I first used 3D to make experimental products, and later I also made a pcb for pico and esp32-s3 to use.

[![](https://img.youtube.com/vi/W1tkBEw5GhM/maxresdefault.jpg "Makecode Arcade for Pi Pico") ](https://www.youtube.com/watch?v=W1tkBEw5GhM)

---

<div class="post-metadata">

**Author:** ![Jedi](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/jedi/32/14307_2.png) [@Jedi](https://forum.makecode.com/u/Jedi)\
**Post date:** [March 1, 2024, 10:23pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/16 "2024-03-01T22:23:05Z")

</div>

where would i find the joystick and buttons you use?  
i could REALLY use an upgrade for hardware and this seems like a fun project

---

<div class="post-metadata">

**Author:** ![tobysimonds](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/tobysimonds/32/12703_2.png) [@tobysimonds](https://forum.makecode.com/u/tobysimonds)\
**Post date:** [March 4, 2024, 6:09pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/17 "2024-03-04T18:09:16Z")

</div>

Hi @MasonChen, would you mind sending over the schematic and part list for the project?

---

<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:** [March 6, 2024, 5:35pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/18 "2024-03-06T17:35:22Z")

</div>

You can google and find 5 way joystick module to DIY. But this is not a good choice. I ended up designing a PCB myself for school use.

---

<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 6, 2024, 3:32pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/19 "2024-05-06T15:32:11Z")

</div>

Hi @tobysimonds !  
I just thought of one of a possibility. That, the screen maybe not ready yet, when your RP2 send init data. It is worth to have a try: power your screen first, then power your RP2.

---

<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:** [May 9, 2024, 1:57pm UTC](https://forum.makecode.com/t/diy-arcade-console-with-rp2040-pico/22969/20 "2024-05-09T13:57:37Z")

</div>

I found that arcade i2c is worked. So I can be used to expand the WiFi module. Next, I successfully used Arcade to send scores to the MQTT server. You can see the following demo. [https://www.youtube.com/watch?v=Q77A\_0kaqqM](https://www.youtube.com/watch?v=Q77A_0kaqqM)

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