{"id":23391364,"url":"https://github.com/dnutiu/chip8-rust","last_synced_at":"2026-03-04T07:05:32.673Z","repository":{"id":263327603,"uuid":"890036544","full_name":"dnutiu/chip8-rust","owner":"dnutiu","description":"A chip8 emulator writen in Rust","archived":false,"fork":false,"pushed_at":"2025-09-05T01:19:02.000Z","size":129,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-18T09:53:41.835Z","etag":null,"topics":["chip8","emulation","emulator","rust","rustlang"],"latest_commit_sha":null,"homepage":"https://nuculabs.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dnutiu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2024-11-17T21:07:43.000Z","updated_at":"2025-09-05T01:19:06.000Z","dependencies_parsed_at":"2024-11-17T22:19:05.344Z","dependency_job_id":"3593e70e-c6ec-4e18-9bf9-aea220059b78","html_url":"https://github.com/dnutiu/chip8-rust","commit_stats":null,"previous_names":["dnutiu/chip8-rust"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dnutiu/chip8-rust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnutiu%2Fchip8-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnutiu%2Fchip8-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnutiu%2Fchip8-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnutiu%2Fchip8-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dnutiu","download_url":"https://codeload.github.com/dnutiu/chip8-rust/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnutiu%2Fchip8-rust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30075425,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","emulation","emulator","rust","rustlang"],"created_at":"2024-12-22T04:16:00.416Z","updated_at":"2026-03-04T07:05:32.654Z","avatar_url":"https://github.com/dnutiu.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chip8 Emulator\n\n![logo](./chip8-project.png)\n\nA Chip8 emulator written in [Rust](https://www.rust-lang.org/) (1.83.0) for learning and educational purposes.\n\nIn turns inside your Terminal and under SDL2 and the code can be easily modified to run in other envionments.\n\nSee it in action:\n\n### Breakout (Sdl2)\n\nhttps://videos.nuculabs.dev/w/pD1U8aXToVmNhuZdrCe8qV\n\n### Space Invaders (Terminal Old)\n\n[![asciicast](https://asciinema.org/a/694431.svg)](https://asciinema.org/a/694431)\n\n### Pong (Terminal Old)\n\n[![asciicast](https://asciinema.org/a/Q7TCN6e1V2y2Vfm2tCiCSzsAd.svg)](https://asciinema.org/a/Q7TCN6e1V2y2Vfm2tCiCSzsAd)\n\n# Project organization\n\nThe project is organized under three crates.\n\nThe `chip8_core` crate contains the core functionality for the emulator and can be compiled without\ndepending on Rust's std (standard) library, this makes it possible to run it on embedded systems.\n\nThe `chip8_sdl` crate is an emulator implementation that uses sdl for graphics and audio.\n\nThe `chip8_tui` crate is an emulator implementation that runs inside the terminal.\n\n## Tests\n\nYou can run tests with `cargo test`\n\n---\n\n## About Chip8\n\nCHIP-8 is an interpreted programming language and a simple virtual machine designed primarily for running on 8-bit microcomputers and other systems in the late 1970s and early 1980s. Created by Joseph Weisbecker for RCA's COSMAC VIP microcomputer, CHIP-8 was intended to make programming more accessible by providing a higher-level language that could abstract away the complexities of direct hardware manipulation.\n\nThe CHIP-8 architecture features a straightforward design:\n\n    CPU: It uses a 16-bit address space and has 16 8-bit registers (V0-VF), where VF often serves as a flag register. Instructions are 2 bytes long, allowing for 35 possible opcodes.\n    Memory: There are 4KB (4096 bytes) of RAM, with the first 512 bytes reserved for the interpreter itself, leaving 3584 bytes for programs and data.\n    Display: A 64x32 pixel monochrome display where each pixel can be either on or off.\n    Input: It handles input through a 16-key hexadecimal keypad.\n    Timers: Two timers (delay and sound) decrement at 60 Hz, providing simple timing mechanisms.\n\n\nCHIP-8 games and programs were typically small, often fitting within the limited memory constraints, and included classics like \"Pong\", \"Space Invaders\", and \"Tetris\" adaptations. The simplicity of CHIP-8 has made it a popular choice for educational purposes, teaching fundamentals of computer architecture, programming, and emulation. Modern emulators and interpreters for CHIP-8 exist on various platforms, including web browsers, allowing enthusiasts to run and even develop new games for this vintage system. This has kept CHIP-8 relevant as a tool for understanding basic computing concepts and low-level programming.\n\n## How is this project organized\n\nThe project is written in Rust and it's organized in the following modules:\n\n```shell\n.\n├── Cargo.lock\n├── Cargo.toml\n├── LICENSE\n├── proprietary_roms # Roms which I have no permission to share here.\n├── README.md\n├── roms\n│   ├── 1-chip8-logo.ch8 # Chip8 Logo Test ROM\n│   ├── 3-corax+.ch8 # Corax+ Instructions Test ROM\n│   └── ibm-logo.ch8 # IBM Logo Test ROM\n├── src\n│   ├── display.rs # The screen / display module.\n│   ├── chip8_core.rs # The chip8_core logic which emulates the CPU.\n│   ├── input.rs # The input logic.\n│   ├── instruction.rs # The instruction decoding logic.\n│   ├── main.rs # The main file. This is the entrypoint.\n│   ├── sound.rs # The sound module.\n│   └── stack.rs # A stack implementation.\n```\n\n## Resources\n\nI've used the following resources to implement the project:\n\n- https://tobiasvl.github.io/blog/write-a-chip-8-emulator/\n- https://github.com/Timendus/chip8-test-suite\n\nand got inspired by other people's code when I was confused by an instruction. \n\n\n---\nMade with ❤️ by [NucuLabs.dev](https://blog.nuculabs.dev)\n\nFollow me on 🦋 or 🐘 and let's chat: \n- BlueSky: [@nuculabs.dev](https://bsky.app/profile/nuculabs.dev)\n- Mastodon: [@nuculabs](https://mastodon.social/@nuculabs)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnutiu%2Fchip8-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnutiu%2Fchip8-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnutiu%2Fchip8-rust/lists"}