Metadata-Version: 2.4
Name: chipmul8
Version: 0.2.0
Summary: A simple CHIP-8 emulator written in Python.
Project-URL: Repository, https://github.com/jbfenton/chipmul8
Author-email: Josh Fenton <josh@jbfenton.dev>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Games/Entertainment
Requires-Python: >=3.11.0
Requires-Dist: click>=8.3.1
Requires-Dist: numpy>=2.4.3
Requires-Dist: pygame>=2.6.1
Requires-Dist: pyopengl>=3.1.7
Description-Content-Type: text/markdown

# chipmul8

> CHIP-8 is an interpreted programming language, developed by Joseph Weisbecker.
> It was initially used on the COSMAC VIP and Telmac 1800 8-bit microcomputers in the mid-1970s.
> CHIP-8 programs are run on a CHIP-8 virtual machine.
> It was made to allow video games to be more easily programmed for these computers.
> [CHIP-8](https://en.wikipedia.org/wiki/CHIP-8)

This project aims to replicate the CHIP-8 interpreter using Python, in the hopes that we can play Pong as it ran on the CHIP-8 virtual machine in the 1970's.

# Installation

## Developer Installation
1. Download / clone the repo
2. In the root of the repository run: ```make bootstrap```
   - This will create a virtual environment and install the required dependencies for the project.

## Execution
1. Run the `chipmul8` command while providing a path to a chip8 rom:
    
    ```$ chipmul8 /path/to/rom/pong.c8```
    
    ![chipmul8 GUI](media/normal-colors.png "chipmul8 GUI")
2. The '--invert_colors' switch can also be provided to invert the color palette of the display

    ```$ chipmul8 /path/to/rom/pong.c8 --invert_colors```
    
    ![chipmul8 GUI](media/inverted-colors.png "chipmul8 inverted GUI")
    
## References
The primary reference for this project was [Cowgod's Chip-8 Technical Reference v1.0](http://devernay.free.fr/hacks/chip8/C8TECH10.HTM)
This technical reference is incredibly detailed, the emulator would not have taken shape without it.

For testing [corax89's](https://github.com/corax89/chip8-test-rom) test roms were hugely helpful.
