less_retarded_wiki/pokitto.md
2024-02-10 12:19:55 +01:00

4.8 KiB

Pokitto

Pokitto is a very nice educational open gaming console friendly to hacking and FOSS. It is also very family friendly, aiming to be used as an educational device for kids on schools, which doesn't at all take away any of its value for hardcore hackers. Its website is https://www.pokitto.com/. As of writing this Pokitto is unavailable for purchase as a new version is being developed.

Its great advantage is its nice, active and friendly community that's constantly writing software, documenting Pokitto and helping newcomers. There have even appeared a few issues of Pokitto magazine.

The console was created by Jonne Valola from Finland. He started the project on Kickstarter on April 28 2017, pledged over $27000 and released Pokitto in February 2018. { Jonne is a really nice guy who loves the project, puts his soul into the project and always personally helps people and shares technical details of the console. ~drummyfish }

Pokito, unlike most other open consoles, is NOT based on Arduino, but on NXP's LPC11U6x microcontroller (MCU). Some features and specs of Pokitto are:

  • Up to 220x176 color TFT display (ST7775R). (Resolution and color depth depends on chosen mode and how much RAM you want to dedicate to screen buffer).
  • Up to 72 MHz ARM CPU (LPC11U6x). The base frequency is 48 MHz but the hardware is easily overclocked.
  • 256 kB ROM (program storage space).
  • 36 kB RAM (working memory).
  • 4 kB EEPROM (persistent storage).
  • 7 buttons.
  • Speaker and headphone jack.
  • Both emulator and simulator which make programming much more efficient and comfortable.
  • Custom library -- PokittoLib -- free-licensed { even though it contains a few small "fair use" files from the MCU vendor. ~drummyfish }. It has many features, unfortunately it's also kind of bloated.
  • SD card support.
  • Hardware extensions called hats. Available is e.g. a hat with joystick and extra buttons.
  • Programming via USB, works on GNU/Linux with gcc ARM cross compiler. Supports a few languages: C++, C, MicroPython and Java.
  • Custom IDE for noobs: FemtoIde.
  • Schematics and 3D print files available.
  • A huge number of games and other software has already been written.

How free is Pokitto? Quite freedom friendly, but not nearly 100% free; It is made out of proprietary hardware, but it's quite KISS, the Pokitto library, emulator and most tools as well as many games are FOSS, however the library contains a few proprietary pieces of code (short vendor source code without license), though these are almost certainly not harmful and could easily be replaced. Schematics and printable STL files are available, though license seems to be non-present. No Pokitto trademarks were surprisingly found during brief search.

Downsides of Pokitto are that the community is an open source community rather than free software one, purists like us will find they lean towards bloated solutions even though the technical limitation of the console largely prevent their implementation. The web forums runs on discourse and requires JavaScript for interactivity. Discord is also actively used for communication, even though some community members bridged it to free alternatives. The official library is relatively bloated and even contains some small pieces of unlicensed code from the MCU manufacturer -- they are very simple assembly snippets that may be easily replacaeble, but we should be cautious even about this. Anyway, a reasonably dedicated programmer might create a suckless Pokitto library without greater problems.

Some quite nice hacks were achieved with Pokitto, e.g. using it as a display for a PC or even running GameBoy games on it -- this was done thank to a small FOSS GameBoy emulator and a tool that packs this emulator along with selected GameBoy ROM into a Pokitto executable -- this of course comes with some limitations, e.g. on sound or game size. Yes, Pokitto quite comfortably runs Anarch.

How To, Tips'N'Tricks

TODO

Uploading programs to Pokitto under GNU/Linux can be done e.g. with dd (or mcopy etc.) like this:

sudo mount /dev/sdb ~/mnt
sudo dd bs=256 conv=nocreat,notrunc,sync,fsync if=~/git/Anarch/bin/Anarch_pokitto_nonoverclock_1-01.bin of=~/mnt/firmware.bin
sudo umount ~/mnt