DIY Arcade Console with Rp2040 Pico

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! :stuck_out_tongue:
  • 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
  • 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)
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.*
6 Likes

some photos:

5 Likes

and the ILI9341 config file:

2 Likes

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!)

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! :wink:

I can only respond with ditto thanks for all your contribution like here, your amazing extensions 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.
(Sadly, my own abilities are put to best use as audience and fan in this particular matter.)

3 Likes

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

1 Like

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

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

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?

Still black&white?

I wired following the mapping I provided:

Can you take photo to show how you wired them?

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

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

1 Like

Hi Sorry for the delay getting back to you

Here’s what the black and white looks like

You can see though that when I throw an error the color on the screen works perfectly though

Here’s what the wiring looks like for reference

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

Any help would be much appreciated

1 Like

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”.

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

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

4 Likes

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

1 Like

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

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.

1 Like

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.

1 Like

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

2 Likes