Coder Social home page Coder Social logo

octo's Introduction

Octo

Title Image

Octo is a high-level assembler for the Chip8 virtual machine, complete with an environment for testing programs, and tools for sharing your creations. Read about the project on Itch.io!

IDE Screenshot

Links

General information:

Third-party tools and references:

Third-party games, programs and libraries:

If you've built a project on, with, or for Octo and you'd like to have a link added to this list, submit a pull request!

Command Line Mode

The Octo assembler can also be used as a command-line tool via a Node.js frontend:

$ ./octo
usage: octo [--decompile] [--options <file.json>] <source> [<destination>]
       if <source> has a .gif extension, unpack an existing octo cartridge.
       if <destination> has a .gif extension, create an octo cartridge file.
       if <destination> has an .html extension, create a standalone HTML5 build.
       if the specified options file does not exist, a new template will be created.

$ cat simple.8o
	: main
		va := 1
		vb := 2

$ ./octo simple.8o simple.ch8

$ hexdump simple.ch8
	0000000 6a 01 6b 02
	0000004

The --decompile option can be used to send an existing Chip8 binary through Octo's general-purpose decompiler.

The --options option allows you to specify a JSON file with settings for all of Octo's feature flags and palette configuration, which will be used for exports and as hints during decompilation. If the specified file does not exist, a template will be created with default settings.

If you're interested in using Octo from the command line, you might like c-octo.

Sharing Your Programs

Octo has a share feature which stores source code and configuration metadata and produces a URL you can share with others. By default, Octo stores programs in its own backend, indexed based on a key.

Using the "Save HTML" button in the "Binary Tools" panel of the toolbox, you can generate a single HTML file containing the Octo emulator and your program, allowing you to easily host a game yourself or on sites like Itch.io. Octo can be configured to offer adaptive multitouch controls, making your games playable on mobile devices and tablets!

Screenshot of HTML export dialog

Octo can also save "Cartridges" which embed programs and their metadata in an animated GIF. Cartridges are easy to share via email or image hosting sites, and include the source code of your programs, so others can riff on your creations:

Cartridge Example

Finally, Doct is an experimental tool for building standalone binaries which run Octo programs. Give it a whirl!

Licensing

Octo, along with all its associated documentation, examples and tooling, are made available under the MIT license. See LICENSE.txt for additional details. If for any reason this is insufficiently flexible or permissive for some application, please contact John Earnest with your request. Contributions to this repository are welcome, with the understanding that they will fall under the same licensing conditions.

octo's People

Contributors

andyzickler avatar blastron avatar cameron-pascal avatar chromatophore avatar colourtann avatar comrat avatar cryon avatar james0x0a avatar jameskohli avatar jdeeny avatar johnearnest avatar mattmikolay avatar phlosioneer avatar pushfoo avatar rmmh avatar sharpenedspoon avatar supsuper avatar tobiasvl avatar whoozle avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.