Přeskočit na obsah

Podporovaný hardware

picogame je nativní modul uvnitř forku CircuitPythonu, takže běží na deskách, pro které existuje picogame firmware — ten potřebuje SPI displej, pár tlačítek a (volitelně) PWM reproduktor. Pro desky níže existují hotové buildy; jiné desky CircuitPythonu s SPI displejem lze přidat (viz Postav si vlastní desku). Referenční zařízení, na kterém se všechno ladí a měří, je PicoPad.

ZařízeníMCUPoznámky
Pajenicko PicoPadRP2040Primární / referenční zařízení. 320×240 ST7789, D-pad + A/B/X/Y, reproduktor, SD, NVM. K dispozici je hotový firmware a profil tlačítek.
PicoPad 2 / desky s RP2350RP2350Pouze build, na tomto hardwaru zatím neověřené. Stejné rozložení a větší halda než u buildu pro RP2040.
Desky s ESP32-S3 (např. Feather TFT)ESP32-S3Pouze build, na tomto hardwaru zatím neověřené. Tlačítka zapoj podle konkrétní desky.
Desktopový simulátortvůj počítačVývojový nástroj, ne cílové zařízení. Nabízí stejné API hry, ale nereprodukuje omezení RAM ani časování desky.

Engine je nativní C modul ve forku CircuitPythonu. PicoPad má hotový firmware; pro ostatní desky si fork pro danou desku sestavíš, viz Build firmwaru.

Každý odkaz níže vede na build firmwaru pro jednu desku. Nahraj jej a potom zkopíruj code.py a potřebné moduly v lib/ z picogame-libs.

DeskaFirmware
Pajenicko PicoPad (RP2040) — testovánopicopad.uf2
PicoPad 2 (RP2350) — DIYpicopad2.uf2
PicoPad 2 W (RP2350) — DIYpicopad2w.uf2
Pimoroni PicoSystem (RP2040)picosystem.uf2
µGame22 (RP2040)ugame22.uf2
Raspberry Pi Pico (RP2040)pico.uf2
Raspberry Pi Pico W (RP2040)pico_w.uf2
Raspberry Pi Pico 2 (RP2350)pico2.uf2
Raspberry Pi Pico 2 W (RP2350)pico2_w.uf2
TinyCircuits Thumby Color (RP2350)thumby_color.uf2
Adafruit Fruit Jam (RP2350B, DVI/HDMI výstup) — testováno: DVI displej, audio TLV320, USB vstup, launcherfruitjam.uf2
ESP32-S3 — obecné (Adafruit Feather TFT)feather_s3.uf2
µGame S3 (ESP32-S3)ugame_s3.uf2
VIDI X (ESP32)vidi_x.bin

Oba PicoPad 2 buildy jsou DIY / neoficiální, pro PicoPad, kterému byl Pico modul vyměněn za Pico 2 / Pico 2 W (RP2350). Oficiální Pico 2 PicoPad produkt neexistuje a není pro něj oficiální CircuitPython: stejný hardware PicoPadu, jen víc RAM (~520 KB heap). Na vlastní riziko.

Build pro Fruit Jam vykresluje přes DVI framebuffer místo SPI panelu a je to dobře otestovaná platforma — DVI vykreslování, audio TLV320, USB gamepad/klávesnice i launcher běží na hardwaru. Nastav ho v settings.toml (CIRCUITPY_DISPLAY_WIDTH/_HEIGHT/_ROTATION) s jednou ze dvou barevných hloubek — setup() zvládne obě automaticky: CIRCUITPY_DISPLAY_COLOR_DEPTH=16 pro plnobarevné RGB565 (např. 320×240), nebo =8 pro RGB332, jedinou hloubku, kterou picodvi nabízí při 640×480 (plné rozlišení). Detaily o framebufferu a barevné hloubce viz Spuštění na hardwaru. Zvuk na Fruit Jamu je I2S DAC TLV320 — nainstaluj adafruit_tlv320 + adafruit_bus_device do CIRCUITPY/lib (nedodávají se) a zvedni volume klíče, jinak je ticho; PICOGAME_DEBUG=1 vypíše proč. Vstup je USB gamepad nebo klávesnice (deska nemá herní tlačítka) — viz Vstup a ovládání.

Experimentální build s oblastí ROMFS pro grafiku

Sekce “Experimentální build s oblastí ROMFS pro grafiku”

Každá deska RP2040/RP2350 výše má i variantu <board>-romfs, která ve flashi rezervuje 64 KB oblast ROMFS pro grafická data: picogame.romfs_program("/assets.romfs") do ní jednou zapíše herní soubory a bitmapy pak používají obrazová data přímo z flash bez kopírování na haldu (romfs_mount + pg.Bitmap nad bufferem souboru). ESP32 port region zatím nepodporuje.

DeskaFirmware
Pajenicko PicoPadROMFS otestováno na zařízenípicopad-romfs.uf2
PicoPad 2 (DIY)picopad2-romfs.uf2
PicoPad 2 W (DIY)picopad2w-romfs.uf2
Pimoroni PicoSystempicosystem-romfs.uf2
µGame22ugame22-romfs.uf2
Raspberry Pi Picopico-romfs.uf2
Raspberry Pi Pico Wpico_w-romfs.uf2
Raspberry Pi Pico 2pico2-romfs.uf2
Raspberry Pi Pico 2 Wpico2_w-romfs.uf2
TinyCircuits Thumby Colorthumby_color-romfs.uf2

Flashování: přepni desku do bootloaderu. Pico/PicoPad: drž BOOTSEL při připojení USB (nebo 2× RESET) → objeví se USB disk RPI-RP2 → přetáhni na něj .uf2 → deska se restartuje jako CIRCUITPY. Pak zkopíruj code.py + lib/ moduly, které importuje. Na holém Picu ještě zapoj displej + tlačítka a sestav displej v kódu (viz Postav si vlastní níže).

K .mpy souborům: složka hry může mít podsložku mpy/. To jsou zkompilované MicroPython moduly (datové a grafické moduly hry přeložené přes mpy-cross): importují se rychleji, zaberou méně úložiště a, hlavně na desce s málo RAM, vynechají nárazovou spotřebu RAM při parsování, kterou velký .py při importu způsobí. Na zařízení kopíruj soubory z mpy/ vedle code.py (ne zdrojové .py moduly s grafikou); volné .py jsou zdroj, který přímo spouští simulátor. Stejný princip jako přibalené lib/*.mpy.

Klasický ESP32 (VIDI X) se distribuuje jako .bin a flashuje přes esptool (nemá UF2 bootloader); desky ESP32-S3 používají běžné kopírování souboru UF2 na připojený disk.

  • MCU podporované CircuitPythonem — testované rodiny jsou RP2040, RP2350 a ESP32-S3.
  • RAM obvykle určuje rozpočet na grafiku. Aktuálně měřené buildy poskytují přibližně 190 KB haldy na RP2040 a 520 KB na RP2350. Největší souvislý blok je menší a mění se podle konfigurace firmwaru, proto svůj build změř (viz Vejít se do paměti).
  • SPI displej ovládaný přes displayio (nebo DVI/HSTX framebuffer na RP2350 deskách jako Fruit Jam).
  • Pár tlačítek na GPIO — základ je D-pad + A/B; X/Y jsou volitelné. Nebo USB gamepad/klávesnice na desce s USB hostem.
  • Volitelně: pin s PWM pro malý reproduktor, nebo I2S DAC (zvuk je opt-in).

picogame používá SPI vrstvu displayio. Níže uvedené řadiče jsou současné testované nebo podporované cíle; jiné SPI displeje podporované v displayio je potřeba ověřit.

  • Rozlišení je flexibilní, pokud si ho hra přečte. 320×240 je referenční velikost. Engine a Scene vykreslí na jakoukoli velikost, kterou displej hlásí, ale hra se z té velikosti musí rozvrhnout sama, ne mít 320×240 napevno: přečti board.DISPLAY.width/height a layout z toho odvoď. Příklad arkanoid to dělá přesně tak (šířka cihly = šířka displeje ÷ počet sloupců), takže stejný soubor běží na 240px i 320px obrazovce. Menší šířka/výška jen znamená menší hrací plochu.
  • Řadiče: ST7789 je referenční (PicoPad). Fungují i ST7735 (menší panely) a ILI9341, stejně jako další SPI řadiče podporované displayio.
  • 12bitová barva (RGB444): firmware umí posílat 12 bitů místo 16, aby snížil provoz na SPI u scén omezených přenosem. Jde o volitelnou schopnost danou při kompilaci: výchozí je všude RGB565 a hra 12 bitů zapne jen tam, kde to deska inzeruje (picogame.RGB444_SUPPORTED, např. rgb444="auto" v picogame_game.setup). Požadavek rgb444=True v buildu bez podpory vyvolá chybu, místo aby špatně řídil panel (ST7789/ST7735 mají COLMOD 12-bit, ILI9341 ne). Detaily v Hodiny, SPI a limity displeje.

Postav si vlastní na nepájivém poli

Sekce “Postav si vlastní na nepájivém poli”

Žádná deska ze seznamu? Vlastní picogame konzoli si postavíš levně sám. Minimum je:

  • Raspberry Pi Pico — funguje Pico 1, Pico W i Pico 2;
  • displej 320×240 po SPI s řadičem ST7789 nebo ILI9341;
  • aspoň 6 tlačítek — D-pad + A/B (přidej X/Y pro další dvě);
  • malý piezo bzučák na zvuk (volitelně).

To stačí na všechno na tomhle webu. Kompletní pinovou mapu, tři způsoby, jak získat board.DISPLAY, konfiguraci tlačítek v settings.toml a ladění orientace/barev najdeš v Postav si vlastní desku.

Zapojení na nepájivém poli — Raspberry Pi Pico, displej 320×240 ST7789/ILI9341, šest tlačítek a piezo bzučák

Zapoj vcc / gnd / cs / res / dc / mosi / sck / bl displeje, šest tlačítek a piezo podle schématu. Konkrétní GPIO piny a odpovídající mapu tlačítek v settings.toml najdeš na stránce Postav si vlastní desku; video s postavením chystáme.