{"id":20181309,"url":"https://github.com/codepope/picoplay","last_synced_at":"2026-07-18T21:31:27.416Z","repository":{"id":75009300,"uuid":"418179373","full_name":"codepope/picoplay","owner":"codepope","description":null,"archived":false,"fork":false,"pushed_at":"2021-10-17T15:50:41.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T07:39:04.629Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codepope.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-17T15:50:39.000Z","updated_at":"2021-10-17T15:50:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"f6d4fcb6-66a1-4012-8300-38142b2122c1","html_url":"https://github.com/codepope/picoplay","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"32blit/picosystem-boilerplate","purl":"pkg:github/codepope/picoplay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codepope%2Fpicoplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codepope%2Fpicoplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codepope%2Fpicoplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codepope%2Fpicoplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codepope","download_url":"https://codeload.github.com/codepope/picoplay/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codepope%2Fpicoplay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35632492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-18T02:00:07.223Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T02:35:03.584Z","updated_at":"2026-07-18T21:31:27.400Z","avatar_url":"https://github.com/codepope.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PicoSystem 32blit Boilerplate \u003c!-- omit in toc --\u003e\n\n![Build](https://github.com/32blit/32blit-boilerplate/workflows/Build/badge.svg)\n\nThis is a basic template for starting 32blit projects for the Pimoroni PicoSystem.\n\nIt shows a minimal code layout and asset pipeline, giving you a starting point\nfor a new project.\n\nIt's based on the original `template` project from the \n[32blit beta](https://github.com/pimoroni/32blit-beta), with added asset\nhandling, and some tidying up to fit in with how I do things.\n\n- [Why use 32blit SDK on PicoSystem?](#why-use-32blit-sdk-on-picosystem)\n- [How to use this template](#how-to-use-this-template)\n  - [Documentation](#documentation)\n  - [Examples](#examples)\n- [Requirements](#requirements)\n  - [Compilers \u0026 Libraries](#compilers--libraries)\n  - [32blit Tools](#32blit-tools)\n  - [32blit \u0026 Pico SDKs](#32blit--pico-sdks)\n- [Building](#building)\n- [Copying your game to your PicoSystem](#copying-your-game-to-your-picosystem)\n- [Extra configuration](#extra-configuration)\n- [API Limitations \u0026 Board Details](#api-limitations--board-details)\n  - [Unsupported Features](#unsupported-features)\n  - [Limitations](#limitations)\n\n## Why use 32blit SDK on PicoSystem?\n\nThe number 1 reason is portability! 32blit SDK will build for:\n\n* Windows\n* macOS\n* Linux\n* Emscripten (Web assembly)\n* PicoSystem\n* 32blit\n\nAnd is portable to any platform supporting SDL2.\n\nThis means you can ship your game to more people on more platforms, share it online to play, and reach a little further than the confines of PicoSystem!\n\nAdditionally the 32blit SDK has some conveniences:\n\n* Tiled editor .tmx support for levels\n* An asset pipeline for converting fonts \u0026 spritesheets for use on device\n* A boilerplate project with GitHub Actions\n\n## How to use this template\n\n[Use this template](https://github.com/32blit/picosystem-boilerplate/generate) to\ngenerate your own project.\n\n1. Edit the CMakeList.txt file to set the name of your project\n2. Edit the metadata.yml file to set the information for your project\n3. Edit the LICENSE file to set your name on the license\n4. Delete the contents of this README.md and tell us about your game!\n5. Write lots of super cool code!\n\n### Documentation\n\nConsult the [32blit wiki](https://github.com/32blit/32blit-sdk/wiki) for guides on various parts of the SDK:\n\n* [Drawing Sprites](https://github.com/32blit/32blit-sdk/wiki/Sprites)\n* [Drawing Text](https://github.com/32blit/32blit-sdk/wiki/Text)\n* [Playing Sounds](https://github.com/32blit/32blit-sdk/wiki/Audio) - Note, PicoSystem is a mono buzzer only!\n* [Timers \u0026 Tweens](https://github.com/32blit/32blit-sdk/wiki/Timers-\u0026-Tweens)\n* [Working With Files](https://github.com/32blit/32blit-sdk/wiki/File) - 4MB of PicoSystem's flash is reserved as a filesystem\n* [Adding Metadata](https://github.com/32blit/32blit-sdk/wiki/Metadata)\n\n### Examples\n\n* [Snake](https://github.com/32blit/snake/)\n* [Rocks \u0026 Diamonds](https://github.com/32blit/rocks-and-diamonds)\n* [Dots](https://github.com/gadgetoid/32blit-dots)\n* [SDK Examples](https://github.com/32blit/32blit-sdk/tree/master/examples)\n\n## Requirements\n\nWe recommend using Linux to work with PicoSystem/Pico SDK. It's the path of least resistance!\n\nThis guide was tested with Ubuntu 21.04, and most of these instructions will work in its WSL\n(Windows Subsystem for Linux) equivalent.\n\n### Compilers \u0026 Libraries\n\nYou'll need a compiler and a few other dependencies to get started building C++ for PicoSystem:\n\n```\nsudo apt install git gcc g++ gcc-arm-none-eabi cmake make \\\npython3 python3-pip python3-setuptools \\\nlibsdl2-dev libsdl2-image-dev libsdl2-net-dev unzip\n```\n\n### 32blit Tools\n\nAnd the 32blit tools:\n\n```\npip3 install 32blit\n```\n\nIf pip gives you warnings about 32blit being installed in a directory not on PATH, make sure you add it, eg:\n\n```\nexport PATH=$PATH:~/.local/bin\n```\n\nYou might also want to add this to the bottom of your `~/.bashrc`.\n\n### 32blit \u0026 Pico SDKs\n\nYou'll also need the various SDKs for PicoSystem and 32blit.\n\nIt's recommended you keep all of the SDKs in a directory alongside your project,\nthis makes it easier for CMake to find them:\n\n* 32blit SDK - `git clone https://github.com/32blit/32blit-sdk`\n* Pico SDK - `git clone https://github.com/raspberrypi/pico-sdk`\n* Pico Extras - `git clone https://github.com/raspberrypi/pico-extras`\n\n## Building\n\nIf you've got local copies of the Pico SDK, Pico Extras and 32blit SDK alongside your project,\nthen you can configure and build your .uf2 like so:\n\n```\nmkdir build.pico\ncd build.pico\ncmake .. -DCMAKE_TOOLCHAIN_FILE=../../32blit-sdk/pico.toolchain -DPICO_BOARD=pimoroni_picosystem\n```\n\nIf you'd like the Pico SDK to handle grabbing Pico SDK and Pico Extras for you, you can use:\n\n```\nmkdir build.pico\ncd build.pico\ncmake .. -DCMAKE_TOOLCHAIN_FILE=../../32blit-sdk/pico.toolchain -DPICO_BOARD=pimoroni_picosystem -DPICO_SDK_FETCH_FROM_GIT=true -DPICO_EXTRAS_FETCH_FROM_GIT=true ..\n```\n\n:warning: Note: This approach is not recommended, since you might be reconfiguring a few times during\nyour project and re-downloading things unecessarily!\n\n## Copying your game to your PicoSystem\n\nConnect your PicoSystem to your computer using a USB Type-C cable.\n\nFrom a power-off state, hold down X (the top face button) and press Power (the button at the top left, next to the USB Type-C port).\n\nYour PicoSystem should mount as \"RPI-RP2\". On Linux this might be `/media/\u003cusername\u003e/RPI-RP2`:\n\n```\ncp your-project-name.uf2 /media/`whoami`/RPI-RP2\n```\n\nThe file should copy over, and your PicoSystem should automatically reboot into your game.\n\n## Extra configuration\n\nIf you're not using `hires` mode and need some more RAM, it can be disabled:\n```cmake\n...\n\nblit_executable(amazing-lores-game ...)\n\n...\n\ntarget_compile_definitions(amazing-lores-game PRIVATE ALLOW_HIRES=0)\n```\n\n## API Limitations \u0026 Board Details\n\n### Unsupported Features\n\nThese features of the 32blit API are currently unsupported on any pico-based device:\n\n- Joystick\n- `HOME` and `MENU` buttons\n- Accelerometer\n- Vibration\n- Paletted screen mode\n- JPEG decoding\n- `OpenMode::cached`\n\n### Limitations\n\nAdditionally some supported features have limitations:\n\n- The `screen` surface is RGB565 instead of RGB888\n- `hires` screen mode is not double-buffered, usually resulting in a lower framerate\n- `get_metadata` is missing the `author` and `category` fields\n- `blit::random` is not a hardware generator\n- Multiplayer has no host support\n- Using the MP3 decoder is probably not a good idea\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodepope%2Fpicoplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodepope%2Fpicoplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodepope%2Fpicoplay/lists"}