🎮 PicoPad Arcade UF2 Patcher

Co to dělá
Vezme UF2 soubor s hrou z MakeCode Arcade (Raspberry Pi Pico target) a aplikuje binární patche které ho zprovozní na Pájeníčko PicoPad s ST7789 320×240 displejem.
Vstupní soubor stáhneš z MakeCode Arcade — vyber Raspberry Pi Pico jako target. Output (~2 MB) flashneš na PicoPad přes BOOTSEL drive.
📁 Přetáhni UF2 soubor sem nebo klikni pro výběr
arcade-*.uf2 z arcade.makecode.com (Raspberry Pi Pico target)
📋 Postup — jak flashnout output
- Drž tlačítko BOOTSEL na PicoPadu
- Připoj USB → na PC se objeví drive RPI-RP2
- Pusť BOOTSEL
- Zkopíruj patched UF2 na ten drive (přetažením v Průzkumníku, Finderu, atd.)
- Drive se odpojí, PicoPad se restartuje s patchovanou hrou
Pokud něco nefunguje: drž BOOTSEL znovu, flashni jiný UF2 (např. originální MakeCode UF2 nebo CircuitPython). Recovery jde vždy.
⚠️ Známá omezení
- Hardcoded palette LUT — náš patcher zaměňuje grayscale init paletu za hardcoded MakeCode Arcade default paletu. Pokud hra mění barvy přes
setPalette()(custom themed games, visual effects), uvidíš rozbité barvy. Většina běžných MakeCode demo her používá default paletu a funguje OK. - Konkrétní MakeCode Arcade verze — patcher hledá signatury runtime kódu na fixních adresách (
0x10017190,0x10013018). Pokud Microsoft vydá novou verzi runtime s posunutými symboly, signature check selže — patcher to nahlásí, ale UF2 z té verze nezpracuje. - Pouze 320×240 ST7789 displaye s PicoPad pin layoutem — CFG hodnoty (piny, MADCTL=0x40, MV=0) jsou specifické pro Pajenicko PicoPad. Pro jiný hardware s ST7789 by potřeba jiný setup.
- Jen RP2040 — RP2350 by potřeboval jiné family ID a možná posunuté offsety.
🔧 Co patcher dělá technicky (4 binární patche)
- ST7789 init sekvence na flash
0x10017190— Originální MakeCode firmware tam má 114-bytovou ILI9341 init sekvenci. Některé příkazy v ní (C0,C5,C7,B1,B6) ale na ST7789 znamenají jiné registry, takže panel skončí v divném stavu. Patcher tu sekvenci nahradí 23-bytovou minimální ST7789-friendly sekvencí:SWRESET → SLPOUT → COLMOD=0x55 → MADCTL → INVON → NORON → DISPON. - Palette workaround na flash
0x10013018— V CODALST7735.cppje bug: vdouble16módu seexpPalette[16]inicializuje grayscale hodnotami přesENC16(i,i,i)a nikdy se neaktualizuje ze skutečné palety hry → vše se renderuje fialově. Patcher přepíše 30-bytový init loop ARM Thumb kódem co zkopíruje hardcoded Arcade default paletu (LUT na0x10080000) místo grayscale počítání. - CF2 hardware konfigurace na flash
0x100FF000— Zapíše 4 KB sektor s pin assignments PicoPad (BL=GPIO16, CS=21, atd.), DISPLAY_TYPE=9341 (ILI9341 path = aktivuje doubleSize=true scaling), MADCTL=0x40 (empiricky zvolená orientace), SPI 40 MHz, rozlišení 320×240, a sentinelCFG1=0xFFFFFFco řekne firmwaru aby přeskočil odeslání RGBCTRL příkazu. - Monolithic UF2 layout — Výsledek je 2 MB UF2 s kontinuální flash adresací
0x10000000..0x100FFFFF. Mezery (~750 KB mezi firmwarem a CF2) vyplněné0xFF. Tohle obchází RP2040-E14 — dokumentovaný silikonový bug RP2040 ROM (datasheet 2.8.4.2): "partially-filled sectors other than at the end may not be written correctly". Pico-sdkelf2uf2v 1.3.1+ to dělá identicky.
🔒 Bezpečnost a privacy
✅ Vše proběhne v prohlížeči. Vstupní soubor se nikam neuploaduje — patcher ho zpracuje lokálně v paměti a vrátí výstup k stažení.
✅ Funguje offline — uložením stránky (Save Page As) vznikne self-contained HTML co spustíš bez internetu.
✅ Open source — JavaScript kód patcheru je celý viditelný v page source. Zkopírujte si ho a auditujte sami.
✅ No external dependencies — žádné knihovny, žádné fonty z CDN, žádný tracking.
⚠️ No warranty — patcher může v některých případech vyrobit nefunkční UF2 (zejména pro novější verze MakeCode Arcade runtime). Pokud by se PicoPad zasekl po flashe, drž BOOTSEL a flashni jiný UF2.
📚 Související dokumenty a reference
- UF2 spec (microsoft/uf2) — formát, reference impl, CF2 dokumentace
- RP2040 datasheet — sekce 2.8.4.2 popisuje UF2 format details a bug RP2040-E14
- CODAL (lancaster-university/codal-core) — runtime framework MakeCode Arcade, obsahuje ST7735/ILI9341 drivery
- pxt-common-packages — Microsoft PXT runtime, screen.cpp, configkeys.h
- PicoLibSDK (Pajenicko / Panda381) — alternativní SDK pro Pico/PicoPad s vlastním boot3 loaderem ze SD karty
- arcade.makecode.com — kde stáhneš UF2 hry (Raspberry Pi Pico target)
PicoPad Arcade Launcher
