9 releases
0.0.9 | Jul 25, 2022 |
---|---|
0.0.8 | Jul 25, 2022 |
0.0.7 | Nov 15, 2021 |
0.0.3 | Oct 22, 2021 |
#1230 in Encoding
26 downloads per month
17KB
90 lines
decart
decart
is a library and a command-line tool for reading and (in the future) generating "Octocarts",
CHIP-8 game cartridges for the Octo environment, written in Rust.
Use cases
- Decoding: You can extract the program source code and runtime settings from an
Octocart file. The source code can be assembled into CHIP-8 bytecode with Octo or
decasm
. The runtime settings can be given to a CHIP-8 interpreter like Octo ordeca
, or saved as JSON for the CHIP-8 Archive or an.octo.rc
file for C-Octo ortermin-8
, etc. - Encoding: TODO
Octocarts
Octo cartridge files, or Octocarts, are GIF89a images with a payload steganographically embedded in one or more animation frames. Data is stored in the least significant bits of colors – 1 from the red/blue channels and 2 from the green channel – allowing us to pack a hidden byte into every 2 successive pixels.
The payload consists of a 32-bit length, followed by a sequence of ASCII bytes consisting of the JSON-encoded options dictionary and source text.
An Octo cartridge contains the source code of an Octo program, and a set of
configuration options (parsed by octopt
)
for the CHIP-8 interpreter telling it how to run the program.
See also
Dependencies
~1.6–2.6MB
~53K SLoC