All Projects → JohnEarnest → Mako

JohnEarnest / Mako

Licence: other
A simple virtual game console

Programming Languages

forth
179 projects

Projects that are alternatives of or similar to Mako

mima
MIninmal MAchine Assembler and Simulator
Stars: ✭ 19 (-95.63%)
Mutual labels:  toolchain, virtual-machine
Cc Oci Runtime
OCI (Open Containers Initiative) compatible runtime for Intel® Architecture
Stars: ✭ 418 (-3.91%)
Mutual labels:  virtual-machine
Rubinius
The Rubinius Language Platform
Stars: ✭ 3,006 (+591.03%)
Mutual labels:  virtual-machine
Simple.vm
Simple virtual machine which inteprets bytecode.
Stars: ✭ 346 (-20.46%)
Mutual labels:  virtual-machine
Umka Lang
Umka: a statically typed embeddable scripting language
Stars: ✭ 308 (-29.2%)
Mutual labels:  virtual-machine
Cingulata
Cingulata (pronounced "tchingulata") is a compiler toolchain and RTE for running C++ programs over encrypted data by means of fully homomorphic encryption techniques.
Stars: ✭ 369 (-15.17%)
Mutual labels:  toolchain
Virtualbox Python
Complete implementation of VirtualBox's COM API with a Pythonic interface.
Stars: ✭ 277 (-36.32%)
Mutual labels:  virtual-machine
Ph7
An Embedded Implementation of PHP (C Library)
Stars: ✭ 422 (-2.99%)
Mutual labels:  virtual-machine
Phantomuserland
Phantom: Persistent Operating System
Stars: ✭ 412 (-5.29%)
Mutual labels:  virtual-machine
Como Lang Ng
como-lang-ng is now ana-lang, located at https://github.com/analang/ana
Stars: ✭ 342 (-21.38%)
Mutual labels:  virtual-machine
Wasm3
🚀 The fastest WebAssembly interpreter, and the most universal runtime
Stars: ✭ 4,375 (+905.75%)
Mutual labels:  virtual-machine
Ark
ArkScript is a small, fast, functional and scripting language for C++ projects
Stars: ✭ 312 (-28.28%)
Mutual labels:  virtual-machine
Simplify
Android virtual machine and deobfuscator
Stars: ✭ 3,865 (+788.51%)
Mutual labels:  virtual-machine
Aqemu
Official AQEMU repository - a GUI for virtual machines using QEMU as the backend
Stars: ✭ 301 (-30.8%)
Mutual labels:  virtual-machine
Tagua Vm
Tagua VM is an experimental PHP Virtual Machine that guarantees safety and quality by removing large classes of vulnerabilities thanks to the Rust language and the LLVM Compiler Infrastructure.
Stars: ✭ 419 (-3.68%)
Mutual labels:  virtual-machine
Jikesrvm
Jikes RVM (Research Virtual Machine)
Stars: ✭ 281 (-35.4%)
Mutual labels:  virtual-machine
Comp Cpp
Simple 4-bit virtual computer
Stars: ✭ 329 (-24.37%)
Mutual labels:  virtual-machine
Vultr
🐧 Vultr CLI and API client library
Stars: ✭ 357 (-17.93%)
Mutual labels:  virtual-machine
16bitjs
💻 A 16-bit virtual machine, including assembly language with 37 instructions, binary assembler, and a step through debugger
Stars: ✭ 427 (-1.84%)
Mutual labels:  virtual-machine
Octo
A Chip8 IDE
Stars: ✭ 419 (-3.68%)
Mutual labels:  toolchain

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].