Snap! Arcade

We would like to develop a table-top Snap! arcade. @bromagosa reported on development of one using a custom build of Linux in 2019:

https://forum.snap.berkeley.edu/t/build-your-own-snap-arcade/

Have there been other developments since that time? There's a Windows mini-PC on Amazon for $100:

Windows Mini-PC

We're thinking of using something like that combined with an 8-inch LCD screen, but would not be adverse to using a Linux micromachine or a Raspberry Pi if someone is already working on a Snap! arcade for one of those platforms.

We envision students creating the cabinet out of cardboard. There are several examples of desktop arcades constructed from cardboard posted on YouTube, and that seems like an inexpensive and versatile medium.

Any thoughts, suggestions, or recommendations would be welcome. (Thanks!)

Your $100 PC will run Linux if you want. There's nothing in its hardware that requires you to run Windows.

We are currently using Snap!Bridge to enable Snap! to talk to with MicroBlocks on a BBC micro:bit to interact with the arcade controls (joystick and buttons, etc.). John Maloney will no doubt be able to tell us whether the current implementation of Snap!Bridge will work equally well on Linux.

Hi, Glen.

It will work on Linux, yes. You don't need Snap!Bridge, though, if you use the new Keyboard library for MicroBlocks. You could just program your board to pretend it's a keyboard and send keystrokes when a button is pressed or a joystick is moved.

This is the method we used for our two Snap! Arcade Machines, although back then MicroBlocks didn't have support for keyboard emulation, so we wrote the code in C (Arduino).

The only sort of downside is you need to use a board that supports the Keyboard library. Currently, we're supporting the Trinket M0 and the Metro M0, but it's easy to extend that support to other samd boards such as the Circuit Playground Express, the ItsyBitsy, the Due, etc. I believe the Pico should also work, but I haven't tried.

We have a MetroM0, so we'll try this out today.

Now all we need is an inexpensive Linux computer. Here is a:

Libre Computer

on Amazon for $35. Does that seem like that would work well? Does anyone running Linux have a specific recommendation for a board that they are using?

The MicroBlocks keyboard emulator worked great.

How do we enter an arrow key?

Is there an ASCII function to specify key equivalents or is there some other method?

Here’s an example of why Snap! + MicroBlocks make a great combination. This 20-second video clip shows @loucheman 's remix of Pacman with arcade controls added:


=

The arcade controls use the MicroBlocks "Keyboard & Mouse" library mentioned by @bromagosa (above) to emulate keyboard input using a MetroM0 microcontroller.

image

When an arcade button is pressed, Microblocks sends a keypress to Snap!

We have a mechanical joystick on order that should come tomorrow. When it arrives, we’ll replace the arcade buttons with a joystick.

Just use the key code inside of the [scratchblocks]press key ( )[/scratchblocks] block, like this:

[scratchblocks]
press key (37) // left arrow
[/scratchblocks]

[scratchblocks]
press key (38) // up arrow
[/scratchblocks]

[scratchblocks]
press key (39) // right arrow
[/scratchblocks]

[scratchblocks]
press key (40) // down arrow
[/scratchblocks]

very cool

The Press Key codes are generating characters (for example, Press Key [38] in MicroBlocks produces an ampersand (&) ) rather than arrow movements, so there's still something that we're missing.

We found that 215, 216, 217, and 218 generate the arrow movements using MicroBlocks with a MetroM0. (Thanks for the assistance.)

By the way, here's the documentation for our Snap! Arcade projects from 2017 and 2019: https://snaparcade.cat/

This is great! Thanks so much for sharing.

We have a Raspberry Pi 3 (if we can locate it) and hope to try it later today. If we need more capacity, we'll order a Raspberry Pi 4.

We're planning to prototype the cabinet in cardboard initially, and then consider other materials.

BTW, the artwork on your arcade is fantastic!

They aren't really available through normal channels at the moment - just available from rip-off outfits at inflated prices as you've noticed :frowning:

They do pop up on the normal retail sites from time to time but you'd stand more chance of grabbing a ticket to a Beyonce concert than being quick enough to grab one :slight_smile:

We finally located a Raspberry Pi 3. We were delighted to find that it had more than enough power / capacity to run the Snap! Pacman game without difficulty. While both the Pi 3 and Pi 4 are out of stock in the usual retail supply channels like Adafruit, etc., there are some Raspberry PI 3 units available on eBay for $50 (versus the normal list price of $35).

A $15 markup does not seem to be too much of a premium, especially compared with the 300 and 400 percent markups for the Raspberry Pi 4. Hopefully the supply constraint will ease by the beginning of the school year.

So now we need to order a screen for the Raspberry Pi 3 to put into the prototype arcade cabinet. There appear to be some 10-inch screens for around $50. Does anyone have a recommendation for a screen?

I've had an excellent experience with this one:

https://www.aliexpress.com/item/1005004930844232.html?spm=a2g0o.order_list.order_list_main.10.178e18026ArgOc

It works out of the box without installing any drivers, doesn't require an external power supply, it plugs right into the ribbon connector on the RPi, it's big enough, has a decent 800x480 resolution, and it's actually a touch screen!

We put together a prototype of the Snap! arcade today:

We are using a Raspberry Pi 3. It works well with the Snap! Pacman game.

We would like to run it in an "arcade mode" in which the title bar (on the right) does not appear. That may be a question for a Raspberry Pi forum, but we thought that we would check here first to see if anyone has any suggestions? (Thanks!)

Looks great :slight_smile:

Fantastic progress!

We used kiosk mode on Chromium. From the command line, just run chromium-browser --kiosk [your-url]. You can do the same with Firefox: firefox --kiosk [your-url].

Is the top of the screen pointing to the right?