Repository navigation
The console's firmware: pinyol cfab1d1, with seventeen games in its flash and the Cirera menu, so a console with no microSD has something to play.
New since 0.5.0 (17 commits):
- A new example for each look. Cerezo (Game Boy: an island adventure in four greens), Socavón (ZX Spectrum: colour clash and the beeper), Tumba (PICO-8: a sliding-tomb puzzle with solver-checked pars), Malabarista (pocket LCD), Botín (Game Boy Advance: a four-world loot platformer, 50-57 fps on the board) and Paella de combate (Neo Geo: a run and gun with cooks, a tractor and a giant seagull, painted with gpt-image and fitted in code; 41-60 fps, mostly 48-55, played from the microSD because its 8 MB do not fit the flash). Pozo (vector) stays. The old examples they replace moved to the test games.
- New in the engine:
img(..., {outline, outline_width})draws a ring round a sprite;distort(x, y, w, h, {kind = "heat" | "water", amp, period, speed})sways or wobbles a rectangle of the world's picture (four a frame);crt({scan, persist})puts scanlines and a phosphor afterglow on the world. Measured on the board with the sound off: scanlines are free (60 fps), a water zone of 80 rows plus a heat zone of 40 about 5 ms, an outline on six 176x120 sprites no extra frame, and persistence 3 to 9 ms (it keeps a 77 KB copy in PSRAM), see docs/measurements.md. Alsolib/slices.luawithtools/slice_pic.py(a wide picture as columns, only the visible ones in memory) andlib/sheets.lua(png2assetnow writes strips of more than 64 frames in pieces). - Looks as data.
tools/looks.jsondescribes the twelve looks (aliases in three languages, limits, rules, example, font pack);tools/looks.py "un juego de metal slug"turns a phrase into a look,tools/new_game.py --lua --look "game boy"starts a game made for it, andtools/look_check.pychecks its palettes, sprite sizes and forbidden code. - The flash games are now: cerezo, socavon, tumba, malabar, pozo, botin, gotico, veloz, tormenta, costa_relampago, laberinto, museo_nocturno, raton_de_biblioteca, selva, niebla, recortes and cajas. Torneo, Duelo, Oxigeno, Paletes and the older small ones are no longer in the flash (they are in the site's gallery and play from a microSD).
Easiest: install it from the browser. Open https://pinyol.ipaud.dev/consola/#instalar in Chrome or Edge on a computer, plug the board in over USB and press Instalar en la consola.
With esptool, the whole flash in one image:
esptool.py --chip esp32s3 -b 921600 write_flash 0x0 pinyol-console-0.6.0-full.binor the five pieces where idf.py flash puts them:
esptool.py --chip esp32s3 -b 921600 write_flash 0x0 bootloader.bin 0x8000 partition-table.bin \
0xf000 ota_data_initial.bin 0x20000 pinyol_console.bin 0x420000 game.binBuilt from a clean copy of commit cfab1d1 with ESP-IDF 5.4.2.
Tested on a Freenove FNK0104N (ESP32-S3R8, 16 MB flash): this release's pinyol_console.bin and ota_data_initial.bin were written to it, keeping the board's own bootloader and flash games; it booted (firmware cfab1d1 in ota_0) and ran at 59.6-60 fps with about 63 KB of internal RAM free and no error in its log. The full image itself was not written to a blank board.