{"id":16607740,"url":"https://github.com/kiwigrenade/chip-8","last_synced_at":"2026-06-06T10:31:15.907Z","repository":{"id":241643303,"uuid":"806258454","full_name":"KiwiGrenade/CHIP-8","owner":"KiwiGrenade","description":"CHIP-8 emulator in C++. POC for my Bachelor's Degree Thesis.","archived":false,"fork":false,"pushed_at":"2024-08-31T17:49:55.000Z","size":2583,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T14:11:17.661Z","etag":null,"topics":["chip-8","chip-8-emulator","chip8","cmake","cpp","emulation","emulator","proof-of-concept"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KiwiGrenade.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}},"created_at":"2024-05-26T20:00:51.000Z","updated_at":"2024-08-31T17:49:50.000Z","dependencies_parsed_at":"2025-02-14T14:45:07.352Z","dependency_job_id":null,"html_url":"https://github.com/KiwiGrenade/CHIP-8","commit_stats":null,"previous_names":["kiwigrenade/chip-8"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/KiwiGrenade/CHIP-8","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KiwiGrenade%2FCHIP-8","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KiwiGrenade%2FCHIP-8/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KiwiGrenade%2FCHIP-8/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KiwiGrenade%2FCHIP-8/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KiwiGrenade","download_url":"https://codeload.github.com/KiwiGrenade/CHIP-8/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KiwiGrenade%2FCHIP-8/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33979274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["chip-8","chip-8-emulator","chip8","cmake","cpp","emulation","emulator","proof-of-concept"],"created_at":"2024-10-12T01:23:42.725Z","updated_at":"2026-06-06T10:31:15.863Z","avatar_url":"https://github.com/KiwiGrenade.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CHIP-8\nCHIP-8 emulator in C++.\nPOC for my Bachelor's Degree Thesis.\n\n## Opcodes\n- [x] ```0x00E0: Clear screen```\n- [x] ```0x00EE: Return from subroutine```\n- [x] ```0x1NNN: Jump to location```\n- [x] ```0x2NNN: Call a subroutine at address NNN```\n- [x] ```0x3XKK: Skip next instr. if V[X] == KK```\n- [x] ```0x4XKK: Skip next instr. if V[X] != KK```\n- [x] ```0x5XY0: Skip next instr. if V[X] == V[Y]```\n- [x] ```0x6XKK: V[X] = KK```\n- [x] ```0x7XKK: V[X] += KK```\n- [x] ```0x8XY0: V[X] = V[Y]```\n- [x] ```0x8XY1: V[X] OR V[Y]```\n- [x] ```0x8XY2: V[X] AND V[Y]```\n- [x] ```0x8XY3: V[X] XOR V[Y]```\n- [x] ```0x8XY4: V[X] ADD V[Y]```\n- [x] ```0x8XY5: V[X] SUB V[Y]```\n- [x] ```0x8XY6: V[X] = V[X] / 2```\n- [x] ```0x8XY7: V[X] SUBN V[X]```\n- [x] ```0x8XYE: V[X] = V[X] * 2```\n- [x] ```0x9XY0: Skip next instr. if V[X] != V[Y]```\n- [x] ```0xANNN: I = NNN```\n- [x] ```0xBNNN: pc = NNN + V[0x0]```\n- [x] ```0xCXKK: V[X] = random byte AND KK```\n- [x] ```0xDXYN: Display n-byte sprite starting at memory location I (V[X, V[Y]), V[F] = collision```\n- [x] ```0xEX9E: Skip next instr. if key with value of V[X] is pressed```\n- [x] ```0xEXA1: Skip next instr. if key with value of V[X] is NOT pressed```\n- [x] ```0xFX07: V[X] = delay_timer```\n- [x] ```0xFX0A: Wait for key press, store value of pressed key in V[X]```\n- [x] ```0xFX15: delay_timer = V[X]```\n- [x] ```0xFX18: sound_timer = V[X]```\n- [x] ```0xFX1E: I = I + V[X]```\n- [x] ```0xFX29: I + location_of_sprite_for_digit_V[X]```\n- [x] ```0xFX33: Store BCD representation of V[X] in memory locations I, I+1 and I+2```\n- [x] ```0xFX55: Store registers V[0x0] through V[X] in memory starting at location I```\n- [x] ```0xFX65: Read registers V[0x0] through V[X] from memory starting at location I```\n\n## Roms\n### Tests\n- [x] CHIP-8 splash screen\n- [x] IBM logo\n- [x] Corax+ opcode test\n- [x] Flags test\n- [x] Quirks test\n- [x] Keypad test\n- [x] Beep test\n\n### Games\nT.B.A.\n\n## Side Quests\n- [ ] Add debug mode\n- [ ] Add telemetry\n- [ ] Translate C++ code into WebAssembly\n- [ ] Host assembly code on server\n\n## Materials\n- [Timendus/chip8-test-suite](https://github.com/Timendus/chip8-test-suite)\n- [CHIP-8 Specification](http://devernay.free.fr/hacks/chip8/C8TECH10.HTM#1.0)\n- [CHIP-8 Wikipedia Page](https://en.wikipedia.org/wiki/CHIP-8#Virtual_machine_description)\n- [CHIP-8 Emulator Guide in C++](https://multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter)\n- [CHIP-8 Emulator Guide](https://chip-8.github.io/links/#emulatorinterpreter-development)\n- [CHIP-8 Instruction Scheduling and Frequency](https://jackson-s.me/2019/07/13/Chip-8-Instruction-Scheduling-and-Frequency.html)\n\n## [Notes](notes.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwigrenade%2Fchip-8","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiwigrenade%2Fchip-8","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwigrenade%2Fchip-8/lists"}