pushfoo / eightdad

A Chip-8 interpreter in python that may include other tools in the future

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EightDAD

PyTest License

Overview

What

For now, it's only a Chip-8 Virtual Machine in python.

The name comes from the tools I hope to add:

  • Eight, as in Chip-8 VM
  • Debugger
  • Assembler
  • Disassembler

Only the classic CHIP-8 instruction set is currently supported. XO-CHIP and other extensions are not currently supported, but may be added one day.

How

Requirements

  1. Python Version >= 3.8
  2. (GUI only) OpenGL 3.3+, Python version < 3.12
  3. (TUI only) Unicode support in your terminal

The GUI does not yet work with Python 3.11 due to arcade's dependencies not yet supporting it.

Installing

  1. Clone this repo locally
  2. Make a new virtualenv and activate it
  3. Change directories into the repo copy
  4. pip install . if you only want to run ROMs, or pip install -e . to install an editable copy.

Dependencies will be automatically installed.

Running roms

Reminder: only the original CHIP-8 instruction set is supported.

To run a ROM, make sure you're in the activated virtual environment, then use the following:

eightdad -r path/to/chip8.rom

If you want to use the TUI, run eightdad-tui instead.

eightdad-tui -r path/to/chip8.rom

For additional information, use the help option:

eightdad --help

Why

I want to learn more about assemblers, Virtual Machines, and implementing languages! This is a step toward other projects and becoming a better developer.

But Octo already exists!

I know. I like it, and I've contributed to both Octo and its more resource-effiicent C implementation, c-octo. Writing my own tools will help me more with the goals above.

About

A Chip-8 interpreter in python that may include other tools in the future

License:BSD 2-Clause "Simplified" License


Languages

Language:Python 98.8%Language:GLSL 1.2%