This commit is contained in:
Miloslav Ciz 2021-11-11 20:01:19 -06:00
parent c09d41a8e4
commit 63fd9501aa

44
open_console.md Normal file
View file

@ -0,0 +1,44 @@
# Open Console
Open consoles are tiny Gameboy-like gaming consoles powered by [free software](free_software.md) and [hardware](free_hardware.md), which have relatively recently seen a small boom. Examples include [Arduboy](arduboy.md), [Pokitto](pokitto.md) or [Gamebuino](gamebuino.md). These are **NOT** the raspberry pi handhelds that run Gameboy emulators.
In summary, open consoles are:
- **Gameboy-like gaming consoles** (but also allow and encourage non-gaming uses).
- Powered by **[free hardware](free_hardware.md) and [free software](free_software.md)** (usually [Arduino](arduino.md) plus a custom library, although mostly advertised as [open source](open_source.md) and not so strict about freedom).
- **Retro**.
- **Indie** (sometimes developed by a single guy), often [crowd-funded](crowd_funding.md).
- **Educational**.
- **[DIY](dyi.md)**, often leaving assembly to the customer.
- **Cheap** (compared to proprietary mainstream consoles).
- **Hacking friendly**.
- Typically **[embedded](embedded.md) [ARM](arm.md)**.
- **[Bare metal](bare_metal.md)** (no operating system).
- Pretty **low spec** hardware (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 [Arduboy](arduboy.md) and [Pokitto](pokitto.md) 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-[modern](modern.md), [simple](minimalism.md), out of the toxic mainstream, like the oldschool bullshit-free computers. This supports (and by the low specs kind of "forces") [suckless](suckless.md) 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 [ISA](isa.md), a non-x86 platform without botnet and [bloat](bloat.md) usable for any purpose, not just games. Besides that, this hobby teaches low level, efficiency-focused programming skills.
## Programming
Open consoles can be programmed without proprietary software, GNU/[Linux](linux.md) works just fine. Most of the consoles are [Arduino](arduino.md)-based so the Arduino IDE is the official development tool with [C++](cpp.md) as a language ([C](c.md) being thankfully an option as well). The IDE is "open-source" but also [bloat](bloat.md); thankfully CLI development workflow can be set up without greater issues (Arduino comes with CLI tools and for other platforms gcc cross-compiler can be used) so comfy programming with [vim](vim.md) 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 [emulators](emulator.md) 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 [LRS](lrs.md) library such as [SAF](saf.md) 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 [Anarch](anarch.md) does it).
## Open Console List
Most notable open consoles are listed here.
- **[Arduboy](arduboy.md)**: ultra tiny, Arduino, 8bit 16 MHz, 2.5 KB RAM, 32 KB ROM, 1bit 64x32 display, great active community, many games
- **[Pokitto](pokitto.md)**: NON-Arduino MCU, 32bit 48 MHz (can overclock), 36 KB RAM, 256 KB ROM, color 220x176 display, SD card, extension hats, great active community
- **[Gamebuino](gamebuino.md)**:
- **[Gamebuino META](gamebuino.md)**: Arduino, 32bit, 48 MHz, 32 KB RAM, 256 KB ROM, SD card, color 168x120 display
- **[Nibble](nibble.md)**: not very successful
- **ESPboy**:
- **Tiny Arcade**:
- **UzeBox**: