{"id":16096464,"url":"https://github.com/paarthmadan/chip8","last_synced_at":"2025-04-05T20:29:48.697Z","repository":{"id":86041810,"uuid":"274500656","full_name":"paarthmadan/chip8","owner":"paarthmadan","description":"A CHIP-8 emulator, written in Rust.","archived":false,"fork":false,"pushed_at":"2020-07-07T00:10:50.000Z","size":151,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-11T20:50:08.990Z","etag":null,"topics":["chip8","rust","termion"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paarthmadan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-23T20:18:25.000Z","updated_at":"2020-07-14T14:49:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"61e91adf-c908-4d51-996c-f9b1bf0629b2","html_url":"https://github.com/paarthmadan/chip8","commit_stats":{"total_commits":43,"total_committers":1,"mean_commits":43.0,"dds":0.0,"last_synced_commit":"c31cca709f9d22bcd1aa5e5d94099f0c7293f7ec"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paarthmadan%2Fchip8","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paarthmadan%2Fchip8/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paarthmadan%2Fchip8/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paarthmadan%2Fchip8/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paarthmadan","download_url":"https://codeload.github.com/paarthmadan/chip8/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247398283,"owners_count":20932702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chip8","rust","termion"],"created_at":"2024-10-09T17:14:01.641Z","updated_at":"2025-04-05T20:29:48.674Z","avatar_url":"https://github.com/paarthmadan.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Chip8 Emulator, written in _Rust_\n\n\u003cp\u003e\n  \u003cimg src=\"assets/maze.png\" width=\"250\", height=\"250\"\u003e\n  \u003cimg src=\"assets/space1.png\" width=\"250\", height=\"250\"\u003e\n  \u003cimg src=\"assets/space2.png\" width=\"250\", height=\"250\"\u003e\n  \u003cimg src=\"assets/ibm.png\" width=\"250\", height=\"250\"\u003e\n  \u003cimg src=\"assets/chip8.png\" width=\"250\", height=\"250\"\u003e\n  \u003cimg src=\"assets/tetris.png\" width=\"250\", height=\"250\"\u003e\n\u003c/p\u003e\n\n_A set of ROMs run on this emulator (The maze, \"IBM\", and \"Chip8\" are pictures, while \"Space Invaders\" and \"Tetris\" are playable)._\n\n#### What is it?\n- CHIP-8, is an interpreted programming language, that was designed for the COSMAC VIP and Telmac computers.\n- The programs are run on a CHIP-8 virtual machine, which each of the respective computers implemented. \n- This project then, is _really_ an emulator _for_ the virtual machine.\n\n#### Why I'd build this? (spoiler: to learn)\n- There's nothing new here, not much value other than it being a learning experience for myself both in exploring the architecture of older computers, and _Rust_ as a programming language.\n- The CHIP-8 VM is arguably the best entry point for building an emulator, as it consists of a minimal instruction set, and an extensive set of resources to learn from.\n\n#### Features\n- This emulator is capable of running a handful of the most popular ROMs. I've personally tested _Pong_, _Tetris_, _Space Invaders_ and a few others, all of which can be found [here](https://github.com/dmatlack/chip8/tree/master/roms).\n\n#### Installation\n```sh\n  $ git clone https://github.com/paarthmadan/chip8.git \u0026\u0026 cd chip8\n  $ cargo install --path .\n```\n\n#### Usage\n```\n  chip8 0.1.0\n  A CHIP-8 VM emulator.\n\n  USAGE:\n      chip8 [OPTIONS] \u003cPATH_TO_ROM\u003e\n\n  FLAGS:\n      -h, --help       Prints help information\n      -V, --version    Prints version information\n\n  OPTIONS:\n      -c, --clock-rate \u003cclock-rate\u003e     [default: 250]\n      -s, --symbol \u003csymbol\u003e             [default: █]\n\n  ARGS:\n      \u003cPATH_TO_ROM\u003e    \n```\n\n#### What's Left?\n- [ ] Custom colours and output symbol\n- [ ] Scale \"hardware\" display (apply a linear scale on the display matrix)\n- [x] Refactor to opt for idiomatic Rust\n- [x] Custom clock rate\n- [ ] Add terminate path\n- [ ] Handle finished execution\n\n\n#### Resources\nTo build this project I relied heavily on this [Cowgod's CHIP-8 spec](http://devernay.free.fr/hacks/chip8/C8TECH10.HTM#8xy6). I later learned that there are some minor inconsistencies and errors, so in the latter half of the project I relied on [mattmik's resource](http://mattmik.com/files/chip8/mastering/chip8.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaarthmadan%2Fchip8","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaarthmadan%2Fchip8","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaarthmadan%2Fchip8/lists"}