hackclub / gamelab-beaker

MIT License
16 stars 0 forks source link

image

Game Lab Beaker

People learn best when they are making things that they are proud of, things that can share with others. We made gamelab to help facilitate this style of learning. People who have never written code before can use it to get started right away changing real code and eventually making their own games. The Beaker is a handheld console meant to further enhance and popularize this style of learning; we will send them to technical teenagers who make games to run on one, and they will be able to show their games running on this device to anyone.

https://user-images.githubusercontent.com/25539554/169143730-565797fc-a0e5-44eb-96f9-02093b27bbcb.mp4

Kaluma is a JS runtime implemented on top of JerryScript, which we've been extending with the parts of this project that require C optimization.

our fork: https://github.com/hackclub/kaluma/tree/ced

the original repo: https://github.com/kaluma-project/kaluma

Upload Flow

Similar to Kaluma's web IDE, one will be able to upload their games directly to the device through a web interface. That will be on the Game Lab repo.

The Repo

We've been testing various runtimes and their hardware drivers as we make sure all of our components work and are configured correctly, hence micropython_tests/ and kaluma-tests/. The file extension for the executables which run on these devices is .uf2, the uf2/ folder contains the kaluma and micropython runtimes we've used to run the code in their respective files. This folder also contains flash_nuke.uf2 which was compiled from a small C program designed to wipe the persistent memory on the chip, which is useful for recoverring from invalid states.

Fear all ye who enter here

The remainder of the README is used for note taking, and is not intended to be particularly presentable.

Parts

Raspberry Pi Pico, rp2040

We're planning on using this chip.

Here is a pinout diagram.

Hooking Up the Screen, ST7735

We're planning on using this screen.

This video and repo were very helpful in setting up the screen:

It uses this version of the screen.

This c library may also be relevant.

Naming conventions vary slightly the below snippet from this thread could help clear up some confusion here:

LED - GPIO18 - pin 12
SCK - GPIO11 - pin 23
SDA (MOSI) - GPIO10 - pin 19
A0 (D/C) - GPIO24 - pin 18
RESET - GPIO25 - pin 22
CS - GPIO8 - pin 24
GND - pin 6
VCC - pin 2

Other possibly useful links:

Kuluma

Instructions on how to build Kuluma.

https://github-wiki-see.page/m/kaluma-project/kaluma/wiki/Build

Which uses Jerryscript.

It has a nice web IDE.

Wiping Flash Memory

Load flash_nuke.uf2 onto the Pico.

Can also refer to this example from Raspberry Pi.