Need help with Mako?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

JohnEarnest
490 Stars 36 Forks Other 448 Commits 2 Opened issues

Description

A simple virtual game console

Services available

!
?

Need anything else?

Contributors list

# 98,194
Homebre...
chip-8
forth
repl
407 commits
# 166,443
Homebre...
chip-8
forth
repl
4 commits
# 635,089
Java
Shell
virtual...
toolcha...
2 commits
# 19,635
forth
gba
c-plus-...
3ds
1 commit
# 505,301
Shell
virtual...
toolcha...
forth
1 commit
# 25,142
fantasy...
specifi...
forth
webfram...
1 commit
# 316,833
Shell
forth
mixins
Git
1 commit

Mako

Mako VM Logo

Mako is a portable stack-based virtual game console. Mako was designed to be simple to port and implement: even including optional features, the reference implementation is only a few pages of Java. All the games and demos written for Mako can now be tried directly in your browser thanks to Mako.JS.

Deep Screenshot

The Mako platform includes a complete development toolchain centered around Maker, a Forth-like systems programming language. Maker comes with an extensive standard library, including such highlights as a modular garbage collector, a cooperative multitasking system, an entity management system, and audio synthesis utilities. Where applicable, libraries have test harnesses based on the Test Anything Protocol.

Forth Warrior Screenshot

Other programming tools targeting the Mako VM include FiveTran, a historically-inspired FORTRAN compiler, and Stroyent, a C-like systems language. Other programming environments run directly on the Mako VM, like MASICA, a TinyBASIC, Loko, a powerful Logo environment, and MakoForth, a proper Forth which powers the game Forth Warrior.

Most work on Mako ceased in 2013, but the repository here is maintained for inspiration and educational purposes.

Using Maker

Mako's toolchain requires Java and Apache Ant. The Maker source files provided in the examples directory can be executed by compiling Maker and then invoking it with a filename and the '--run' flag. Without the flag, Maker will simply print a disassembly of the prepared Mako memory image.

To compile, run

ant
from the top directory.

To run an example, invoke Maker from the command line:

java -jar dist/Maker.jar /games/Pong/Pong.fs --run

Or use the 'maker' script to save a little typing:

./maker /games/Pong/Pong.fs --run

Hardware Overview

  • All registers are memory-mapped, simplifying save-states and metaprogramming.
  • Dual-stack architecture (parameter stack and return stack).
  • 32-bit word-oriented memory.
  • 320x240 pixel 24-bit display at 60hz.
  • 256 variable-sized sprites with flags for mirroring.
  • Scrollable 31x41 grid of 8x8 background tiles, with draw-priority flags.
  • Keyboard and "virtual gamepad" input.
  • 8khz sampled audio output.
  • Memory-mapped RNG.
  • Optional console and filesystem I/O.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.