223 lines
9.6 KiB
HTML
223 lines
9.6 KiB
HTML
<h1 id="awesome-chip-8-awesome">Awesome CHIP-8 <a
|
||
href="https://awesome.re"><img src="https://awesome.re/badge-flat.svg"
|
||
alt="Awesome" /></a></h1>
|
||
<p><a
|
||
href="https://chip-8.github.io"><img src="c8.png" align="right" width="100"></a></p>
|
||
<blockquote>
|
||
<p>Virtual computer game machine from the 70s</p>
|
||
</blockquote>
|
||
<p>A curated list of awesome CHIP-8 resources, tools, documentation,
|
||
related projects and open source ROMs.</p>
|
||
<p>Created in 1977, <a
|
||
href="https://en.wikipedia.org/wiki/CHIP-8">CHIP-8</a> is the original
|
||
fantasy console. Initially designed to ease game development for the
|
||
COSMAC VIP kit computer, it has enjoyed several revivals over the
|
||
decades for new and exciting platforms. Today, creating a CHIP-8
|
||
implementation is a rite of passage for anyone interested in learning
|
||
about emulation.</p>
|
||
<p>To add something to this list, please see the <a
|
||
href="CONTRIBUTING.md">contribution guidelines</a>.</p>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#community">Community</a></li>
|
||
<li><a href="#documentation">Documentation</a></li>
|
||
<li><a href="#emulatorinterpreter-development">Emulator/interpreter
|
||
development</a>
|
||
<ul>
|
||
<li><a href="#testing">Testing</a></li>
|
||
</ul></li>
|
||
<li><a href="#emulatorsinterpreters">Emulators/interpreters</a></li>
|
||
<li><a href="#software-development">Software development</a>
|
||
<ul>
|
||
<li><a href="#tools">Tools</a></li>
|
||
<li><a href="#guides-and-snippets">Guides and snippets</a></li>
|
||
<li><a href="#postmortems">Postmortems</a></li>
|
||
</ul></li>
|
||
<li><a href="#games">Games</a></li>
|
||
</ul>
|
||
<h2 id="community">Community</h2>
|
||
<ul>
|
||
<li><a href="https://groups.io/g/cosmacelf">COSMAC Elf Group</a> - Group
|
||
for discussion of the COSMAC Elf, as well as anything else RCA
|
||
1802-related, including COSMAC VIP and CHIP-8.</li>
|
||
<li><a href="https://discordapp.com/invite/Gf7cP3w">#chip8 channel on
|
||
the Emulation Development Discord server</a> - Chat for discussing
|
||
development of CHIP-8 emulators/interpreters.</li>
|
||
<li><a href="http://octojam.com/">OctoJam</a> - An Octo-centric game jam
|
||
held every October.</li>
|
||
</ul>
|
||
<h2 id="documentation">Documentation</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/mattmikolay/chip-8/wiki/Mastering-CHIP%E2%80%908">Mastering
|
||
CHIP-8</a> - In-depth overview of the CHIP-8 instruction set.</li>
|
||
<li><a href="http://johnearnest.github.io/Octo/docs/chip8ref.pdf">CHIP-8
|
||
Instruction Set</a> - Quick cheat sheet for CHIP-8 instructions.</li>
|
||
<li><a
|
||
href="https://github.com/mattmikolay/chip-8/wiki/CHIP%E2%80%908-Instruction-Set">CHIP-8
|
||
Instruction Set</a> - A comprehensive instruction/opcode table.</li>
|
||
<li><a
|
||
href="https://github.com/mattmikolay/chip-8/wiki/CHIP%E2%80%908-Technical-Reference">CHIP-8
|
||
Technical Reference</a> - Overview of how the CHIP-8 interpreter
|
||
works.</li>
|
||
<li><a
|
||
href="https://github.com/mattmikolay/chip-8/wiki/CHIP%E2%80%908-Extensions-Reference">CHIP-8
|
||
Extensions Reference</a> - A list of CHIP-8 variants and
|
||
extensions.</li>
|
||
<li><a
|
||
href="https://laurencescotford.com/chip-8-on-the-cosmac-vip-index/">Chip-8
|
||
on the COSMAC VIP</a> - An in-depth disassembly and analysis of the
|
||
original CHIP-8 interpreter on the COSMAC VIP.</li>
|
||
<li><a
|
||
href="https://github.com/Chromatophore/HP48-Superchip">HP48-Superchip</a>
|
||
- An in-depth look at CHIP48 and Super-CHIP for the HP48 calculators,
|
||
and modifications to make them CHIP-8 compatible.</li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/XO-ChipSpecification.html">Octo
|
||
Extensions</a> - Specification for Octo’s XO-CHIP extension.</li>
|
||
</ul>
|
||
<h2 id="emulatorinterpreter-development">Emulator/interpreter
|
||
development</h2>
|
||
<ul>
|
||
<li><a
|
||
href="http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/">How
|
||
to write an emulator (CHIP-8 interpreter)</a> - A guide to developing a
|
||
CHIP-8 interpreter in C/C++.</li>
|
||
<li><a
|
||
href="http://www.emulator101.com/introduction-to-chip-8.html">Emulator
|
||
101: CHIP-8</a> - A guide to developing a CHIP-8 disassembler and
|
||
interpreter in C.</li>
|
||
<li><a
|
||
href="https://jackson-s.me/2019/07/13/Chip-8-Instruction-Scheduling-and-Frequency.html">Chip
|
||
8 Instruction Scheduling and Frequency</a> - Timing of CHIP-8
|
||
instructions on the COSMAC VIP.</li>
|
||
<li><a
|
||
href="https://tobiasvl.github.io/blog/write-a-chip-8-emulator/">High-level
|
||
guide to making a CHIP-8 emulator</a> - A guide for developing a CHIP-8
|
||
interpreter, without code.</li>
|
||
</ul>
|
||
<h3 id="testing">Testing</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/corax89/chip8-test-rom">chip8-test-rom</a> -
|
||
corax89’s CHIP-8 test program, which tests most instructions for correct
|
||
(Super-CHIP compliant) behavior.</li>
|
||
<li><a href="https://github.com/Timendus/chip8-test-suite">CHIP-8 test
|
||
suite</a> - Timendus’ collection of tests, including an improved version
|
||
of corax89’s test rom, a test for the behaviour of the flags and a
|
||
CHIP-8 / Super-CHIP / XO-CHIP quirks test.</li>
|
||
<li><a
|
||
href="https://github.com/mattmikolay/chip-8/tree/master/delaytimer">Delay
|
||
timer test</a> - Test program that checks the delay timer’s
|
||
behavior.</li>
|
||
<li><a
|
||
href="https://github.com/mattmikolay/chip-8/tree/master/randomnumber">Random
|
||
number test</a> - Test program that checks the spread and mask for
|
||
random number generation.</li>
|
||
</ul>
|
||
<h2 id="emulatorsinterpreters">Emulators/interpreters</h2>
|
||
<ul>
|
||
<li><a href="http://johnearnest.github.io/Octo/">Octo</a> - An IDE for
|
||
development of CHIP-8, Super-CHIP and XO-Chip games.</li>
|
||
<li><a href="https://www.emma02.hobby-site.com/">Emma02</a> - An
|
||
emulator for many old microcomputers, including COSMAC VIP, Telmac 1800
|
||
and ETI 660, which ran early CHIP-8 interpreters (which are included in
|
||
the emulator).</li>
|
||
<li><a href="https://github.com/Ersanio/Super-Chip8x">Super-Chip8x</a> -
|
||
CHIP-8 emulator for the SNES.</li>
|
||
<li><a href="https://github.com/pwmarcz/fpga-chip8">CHIP-8 console on
|
||
FPGA</a> - A CHIP-8 emulator for the TinyFPGA BX chip.</li>
|
||
<li><a href="http://benryves.com/bin/vinegar/">Vinegar</a> -
|
||
CHIP-8/Super-CHIP interpreter for TI-83 (Plus) calculators.</li>
|
||
<li><a
|
||
href="https://lowresnx.inutilis.com/topic.php?id=1648">LowResNX</a> -
|
||
CHIP-8 interpreter and debugger programmed in BASIC inside another retro
|
||
fantasy console.</li>
|
||
</ul>
|
||
<h2 id="software-development">Software development</h2>
|
||
<h3 id="tools">Tools</h3>
|
||
<ul>
|
||
<li><a href="http://github.com/johnearnest/Octo/">Octo</a> - A
|
||
high-level assembler for CHIP-8, Super-CHIP and XO-CHIP, complete with
|
||
an environment for testing programs, and tools for sharing your
|
||
creations.</li>
|
||
<li><a href="https://github.com/wernsey/chip8">wernsey chip8</a> - A
|
||
CHIP-8 assembler/disassembler.</li>
|
||
<li><a href="http://beyondloom.com/tools/ezbake.html">EZ-Bake
|
||
Animator</a> - A graphics preparation tool that creates XOR-ed
|
||
animations.</li>
|
||
<li><a href="http://beyondloom.com/tools/ezwriter.html">EZ-Writer</a> -
|
||
A tool for converting text into CHIP-8 sprites.</li>
|
||
<li><a href="http://beyondloom.com/tools/ezpack.html">EZ-Pack</a> - An
|
||
image slicing/repaletting tool.</li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/tools/Chipify/">Chipify</a> - A
|
||
script that filters and encodes mono-channel WAV audio to XO-CHIP
|
||
audio.</li>
|
||
<li><a href="https://github.com/jdeeny/octofont/">octofont</a> - Convert
|
||
TrueType (ttf) fonts to Octo code for CHIP-8.</li>
|
||
</ul>
|
||
<h3 id="guides-and-snippets">Guides and snippets</h3>
|
||
<ul>
|
||
<li><a href="https://johnearnest.github.io/Octo/docs/Manual.html">Octo
|
||
manual</a> - The manual for Octo.</li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/BeginnersGuide.html">A
|
||
Beginner’s Guide to Programming with Chip8</a> - An introductory guide
|
||
to CHIP-8 programming in Octo.</li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/IntermediateGuide.html">An
|
||
Intermediate Guide to Game Development with Chip8</a> - Remaking the
|
||
Atari 2600 game “Outlaw” for CHIP-8 in Octo.</li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/Chip8%20Programming.html">Chip8
|
||
Programming Techniques</a> - Many different programming tips for
|
||
CHIP-8.</li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/MetaProgramming.html">Octo
|
||
Metaprogramming Cookbook</a> - How to use Octo’s assembly directives for
|
||
meta-programming.</li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/SuperChip.html">Mastering
|
||
SuperChip</a> - How to make games compatible with CHIP-8 and Super-CHIP,
|
||
as well as some Super-CHIP specific techniques.</li>
|
||
<li><a
|
||
href="https://johnearnest.github.io/Octo/docs/Sorting.html">Adventures
|
||
in Sorting</a> - Implementing efficient sorting algorithms in Octo for
|
||
CHIP-8.</li>
|
||
<li><a
|
||
href="https://github.com/jdeeny/chip8-multiply">chip8-multiply</a> -
|
||
Multiplication routines for CHIP-8, written in Octo.</li>
|
||
</ul>
|
||
<h3 id="postmortems">Postmortems</h3>
|
||
<p>Postmortems detailing the development of specific games, written by
|
||
the developers.</p>
|
||
<ul>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/EatyTheAlien.html">Inside
|
||
Eaty the Alien</a></li>
|
||
<li><a href="http://www.awfuljams.com/octojam-ii/games/octopeg">Octopeg
|
||
Post Mortem</a></li>
|
||
<li><a
|
||
href="https://abitoutofplace.wordpress.com/2015/05/02/cosmaccalc-the-cosmac-vip-s-place-in-spreadsheet-history/">CosmacCalc:
|
||
The COSMAC VIP’s place in Spreadsheet History</a></li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/CaveExplorer.html">Inside
|
||
Cave Explorer</a></li>
|
||
<li><a
|
||
href="http://johnearnest.github.io/Octo/docs/BlackRainbow.html">Inside
|
||
Black Rainbow</a></li>
|
||
<li><a
|
||
href="https://tobiasvl.itch.io/mini-lights-out/devlog/102679/postmortem-mini-lights-out">Postmortem:
|
||
Mini Lights Out</a></li>
|
||
</ul>
|
||
<h2 id="games">Games</h2>
|
||
<ul>
|
||
<li><a href="https://johnearnest.github.io/chip8Archive/">CHIP-8
|
||
Archive</a> - A collection of public domain (CC0) games, all playable
|
||
online.</li>
|
||
<li><a href="https://github.com/mattmikolay/chip-8">A collection of
|
||
CHIP-8 programs and documentation</a> - Matt Mikolay’s games, programs
|
||
and documentation.</li>
|
||
</ul>
|