Skip to content

pinyol 0.3.0 — the console's firmware

Choose a tag to compare

@ipaud ipaud released this 20 Oct 16:48
· 86 commits to main since this release

The console's firmware: pinyol 0a6687c, with seventeen games in its flash (the twelve looks' examples and the five games Codex made from one request each) and the Cirera menu, so a console with no microSD has something to play.

New since 0.2.0 (154 commits):

  • Smoother on the console. The panel's refresh is timed at start-up and set to 60.00 Hz (it ran at 61.14 on the first board, against the game's 60), and the game loop ticks with the panel's scans: the 24 ms jolts every second are gone. Lua runs twice as fast (the sandbox's guard against endless loops is now counted by the VM itself, not by a hook on every instruction), and its garbage is collected in generational mode, so a game that makes tables every frame no longer drops frames on a collection. A save no longer stalls the picture.
  • Every game opens with the careta, POWERED BY PINYOL.
  • New in the engine: a palette replaced line by line (line_pal, line_ramp), line_fx, the wall clock (clock(), set on the console whenever a game is sent over the cable), physics bodies the game drives (flippers, doors), instruments, sends and delay on sounds and the GBA's PSG options on tone, songs as MIDI with ADPCM samples, ADPCM music streams, lights, warp and linetint, perspective quads, cut-out animation (rig), particles and transitions, and saves with a checksum that never replace the last good one with a broken one.
  • Blocks: a platformer made in the editor whose player falls off the map now loses instead of stopping on an error.

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.3.0-full.bin

or 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.bin

Tested on a Freenove FNK0104N (ESP32-S3R8, 16 MB flash): the full image flashed in 104 s at 921600 baud and the console booted "firmware 0a6687c in ota_0", set its panel's rate and ran the Cirera menu at 60 fps with no error in its log; with no microSD, the menu listed the flash games and a game opened with its careta. Games on a microSD (games/<id>/, or any game's zip from the site unzipped there) are listed too.