Open Console

   { Open consoles are how I got into [1]suckless programming, they taught me
   about the low-level, optimizations and how to actually program efficiently
   on very limited hardware. I recommend you grab one of these. ~drummyfish }

   Open consoles (also indie handhelds etc.) are tiny [2]GameBoy-like
   [3]gaming consoles mostly powered by [4]free software and [5]free
   hardware, which have relatively recently (some time after 2015) seen a
   small boom. Examples include [6]Arduboy, [7]Pokitto or [8]Gamebuino. These
   are NOT to be confused with the [9]Raspberry Pi (and similar) handhelds
   that run GameBoy/PS1/DOS [10]emulators (though some open consoles may use
   e.g. the RP2040 Raspberry pi processor) but rather custom, mostly [11]FOSS
   platforms running mostly their own community made [12]homebrew games. Open
   consoles are also similar to the old consoles/computers such as [13]NES,
   [14]GameBoy etc., however again there is a difference in being more indie,
   released more recently and being "open", directly made for tinkering, so
   it's e.g. much easier to program them (old consoles/computers very often
   require some unofficial hacks, obscure libraries, gcc patches etc. to just
   get your code working).

   In summary, open consoles are:

     * GameBoy-like gaming consoles (but also allow and encourage non-gaming
       uses).
     * Powered by [15]free hardware and [16]free software (usually
       [17]Arduino plus a custom library, although mostly advertised as
       [18]open source and not so strict about freedom). Schematics are a lot
       of times available.
     * Retro.
     * Indie (sometimes developed by a single guy), often [19]crowd-funded.
     * Educational.
     * [20]DIY, sometimes leaving assembly of the kit to the customer
       (assembled kits can usually be ordered for extra price).
     * Very cheap (compared to proprietary mainstream consoles).
     * [21]Hacking friendly.
     * Typically [22]embedded [23]ARM.
     * [24]Bare metal (no operating system).
     * Pretty low spec hardware ([25]RAM amount in kilobytes, CPU frequency
       in MHz).
     * Relying on user created games which are many times also free-licensed.

   Recommended consoles for starters are [26]Arduboy and [27]Pokitto which
   are not only very well designed, but most importantly have actual friendly
   active communities.

   These nice little toys are great because they are anti-[28]modern,
   [29]simple, out of the toxic mainstream, like the oldschool bullshit-free
   computers. This supports (and by the low specs kind of "forces")
   [30]suckless programming and brings the programmer the joy of programming
   (no headaches of resizable windows, multithreading etc., just plain
   programming of simple things with direct access to hardware). They offer
   an alternative [31]ISA, a non-x86 platform without botnet and [32]bloat
   usable for any purpose, not just games. Besides that, this hobby teaches
   low level, efficiency-focused programming skills.

   Watch out (2024 update): having been successful on the market, the world
   of open consoles is now flooded by corporations and [33]SJWs bringing in
   the [34]toxicity, they are going to go to shit very soon, get the old ones
   while you still can. New consoles already try to employ web-only IDEs in
   micropython, they're websites are full of suicide inducing diversity
   propaganda and unusable on computers with less than 1 TB of RAM.

Programming

   Open consoles can typically be programmed without proprietary software
   (though officially they may promote something involving proprietary
   software), GNU/[35]Linux mostly works just fine (sometimes it requires a
   bit of extra work but not much). Most of the consoles are
   [36]Arduino-based so the Arduino IDE is the official development tool with
   [37]C++ as a language ([38]C being thankfully an option as well). The IDE
   is "open-source" but also [39]bloat; thankfully [40]CLI development
   workflow can be set up without greater issues (Arduino comes with CLI
   tools and for other platforms [41]gcc cross-compiler can be used) so comfy
   programming with [42]vim is nicely possible.

   If normies can do it, you can do it too.

   Some consoles (e.g. Arduboy, Pokitto and Gamebuino META) have their own
   [43]emulators which make the development much easier... or rather
   bearable. Without an emulator you're forced to constantly reupload the
   program to the real hardware which is a pain, so you want to either use a
   nice [44]LRS library such as [45]SAF or write your game to be
   platform-independent and just make it run on your development PC as well
   as on the console (just abstract the I/O and use SDL for the PC and the
   console's library for the console -- see how [46]Anarch does it).

Open Console List

   Some notable open consoles (which fit the definition at least loosely) are
   listed here. Symbol meaning:

     * A = Arduino
     * C = great active community
     * * = recommended
     * + = many games/programs
     * - = discontinued

   name                 CPU     RAM ROM (K) display  year notes               
                                (K) 
   [47]Arduboy          8b 16   2.5 32      64x32 1b 2015 * A C +, tiny       
                        MHz     
   [48]Gamebuino        8b 16   2   32      84x48 1b 2014 + A -, SD           
                        MHz     
   [49]Pokitto          32b 48  36  256     220x176  2018 * C +, ext. hats,   
                        MHz                               SD                  
   [50]ESPboy           32b 160 80  4000    128x128  2019 A                   
                        MHz     
   [51]GB META          32b 48  32  256     168x120  2018 A + -, SD           
                        MHz     
   [52]Nibble           32b 160 80  4000    128x128  2021 A, AAA bat.         
                        MHz     
   [53]UzeBox           8b 28   4   64      360x240  2008 C, +                
                        MHz     
   [54]Tiny Arcade      32b                               A                   
                        32b 133                           RPI (RP2040),       
   [55]Thumby           MHz     264 2000    72x40 1b 2022 mainly web editor   
                                                          :(                  
   [56]Pocket Arcade    
   Ringo/[57]MakerPhone 32b 160 520 4000    160x128  2018 A -, phone, SD      
                        MHz     
   [58]Agon             8b 18   512         640x480  
                        MHz     

   TODO: BBC micro:bit, Vircon32 (fantasy console implementable in HW, not
   sure about license), Retro Game Tiny, Adafruit PyGamer, ... see also
   https://github.com/ESPboy-edu/awesome-indie-handhelds

See Also

     * programmable [59]calculator
     * [60]fantasy console

Links:
1. suckless.md
2. gameboy.md
3. game.md
4. free_software.md
5. free_hardware.md
6. arduboy.md
7. pokitto.md
8. gamebuino.md
9. rpi.md
10. emulator.md
11. foss.md
12. homebrew.md
13. nes.md
14. gameboy.md
15. free_hardware.md
16. free_software.md
17. arduino.md
18. open_source.md
19. crowd_funding.md
20. dyi.md
21. hacking.md
22. embedded.md
23. arm.md
24. bare_metal.md
25. ram.md
26. arduboy.md
27. pokitto.md
28. modern.md
29. minimalism.md
30. suckless.md
31. isa.md
32. bloat.md
33. sjw.md
34. toxic.md
35. linux.md
36. arduino.md
37. cpp.md
38. c.md
39. bloat.md
40. cli.md
41. gcc.md
42. vim.md
43. emulator.md
44. lrs.md
45. saf.md
46. anarch.md
47. arduboy.md
48. gamebuino.md
49. pokitto.md
50. espboy.md
51. gamebuino.md
52. nibble.md
53. uzebox.md
54. tiny_arcade.md
55. thumby.md
56. pocket_arcase.md
57. makerphone.md
58. agon.md
59. calculator.md
60. fantasy_console.md