A downloadable tool

Galapagos is a system for creating and playing games with unique, well-specified technical limitations. Release is planned for October.

People who talk about old video games often talk about how the hardware defines the game. The limitations and the workflow of programming directly against the hardware make the experience more focused in a way that is mostly absent from contemporary gaming.

At the same time, it's difficult to justify actually coding new games for old hardware. Many of the limitations result in tedious logistics puzzles, fitting things into available memory or formatting things optimally for the graphics hardware.

With modern game engines, ease of development and deployment is favored: you are not expected to know how they work, except when they break, and this makes them difficult to maintain. High level and low level concepts mingle together uneasily, making them easy to start with but difficult to master.

Galapagos is built on the "fantasy" computing concept: define a selected set of limitations for hardware that isn't real, but can be emulated as if it were. Alan Kay defines the future as the past plus the present, and this merger of past and present makes Galapagos a "future fantasy computer" - not just a games device, but a flexible system for experimentation.

Galapagos is designed in a principled fashion. Its goal is not to be minimal or retro or to prefer any particular technology, but to combine these ideas:

  • Sustainable: It should last a long time and ease sharing
  • Linear: It should avoid excessive configuration and indirection
  • Musical: It should be like playing an instrument
  • Diverse: It should support different perspectives and changes in perspective

To support these goals, Galapagos has a semi-modular architecture supporting different types of cores:

CPU cores contain a complete runtime environment for your code. Because compiled binary formats lose information,  hindering both sustainability and development(build tools, debugging etc.), they are avoided in favor of source code in a specific language. Further, because languages may have different implementations and incompatibilities, a Galapagos CPU core is defined not just as a language but a specific implementation and version, maximizing the chances of restoring compatibility later.

For 2019, Galapagos ships with two CPU cores: GopherLua(PUC-Rio compatible Lua) and Duktape(Javascript).

Graphics cores define how you display images and animation, and have a fixed amount of memory space and bandwidth. All graphics cores in Galapagos are defined to run at 120hz by default to enable high refresh rate gaming, but may drop to lower rates for efficiency.

For 2019, the Raster core will be available. This core supports variable resolutions and color palettes across eight layers of 256x256 at 8-bit color depth, with up to 4096 colors simultaneously. Each layer may be transformed with a 3D matrix, allowing for "Mode 7" style effects and more. Additionally, a graphics command system is built into Raster. You can send up to 256 commands per frame, including complex raster commands like solid triangle drawing, flood fills, tilemaps and multiple scaled sprites. Higher display resolutions than 256x256 are possible by tiling multiple layers.

In 2020, Renaissance is planned. This is a 3D core supporting "shape fonts" - a set of small, reusable 3D models, like how 2D fonts are used for text. Up to 8192 shapes can be drawn simultaneously, and shapes can be reskinned with different texture maps to create variety. The basic system is proven but the texture mapping system is still in flux, so this core needs more time to "bake".

Audio cores are like the graphics cores, but for playing back sound and music. Two cores are currently planned - their specifications will be revealed soon!

Lastly, Galapagos has a BIOS core and a soft storage system. The BIOS contains inputs for keyboard, joysticks and mice, clocks to do timing, and other miscellaneous features. The soft storage works like a minature file system, much like how PAK files in Quake operate: you can load up Galapagos with several softs with a loading priority and read/write access, to run "mods", build editors, and support save data. The BIOS looks for a boot header file to understand which cores to use to run the soft, and to provide useful publishing information so that your work is more easily shared!

Programming the I/O cores of Galapagos(BIOS, graphics, audio) is done through a memory map interface: every byte has a known position and meaning, and the API interfaces provided to the CPU cores are a simple wrapper around the memory map. This makes it possible to "know the hardware" like in a real system, and to reproduce the hardware in the future. 

The plan for Galapagos is to grow from a toy into a fully sustainable environment over time. The first release is programming centric. Gradually more cores will be written, more tools will be made, and it will become easier to publish with Galapagos.

Purchasing Galapagos means that you will get faster access to updates: the free releases have no strings attached and are the same code, but you will miss out on the new stuff.

Development log