{"id":13782901,"url":"https://github.com/lucas-akira/chip8-emu","last_synced_at":"2026-03-06T10:34:16.172Z","repository":{"id":138169276,"uuid":"183492114","full_name":"lucas-akira/chip8-emu","owner":"lucas-akira","description":"CHIP-8 interpreter in C","archived":false,"fork":false,"pushed_at":"2019-05-08T16:08:25.000Z","size":195,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-08-03T18:16:57.913Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucas-akira.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}},"created_at":"2019-04-25T18:50:25.000Z","updated_at":"2019-05-08T16:08:27.000Z","dependencies_parsed_at":"2024-01-07T23:08:19.827Z","dependency_job_id":"d94a7693-7c24-43a9-93d5-b0cc238fb000","html_url":"https://github.com/lucas-akira/chip8-emu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas-akira%2Fchip8-emu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas-akira%2Fchip8-emu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas-akira%2Fchip8-emu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucas-akira%2Fchip8-emu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucas-akira","download_url":"https://codeload.github.com/lucas-akira/chip8-emu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253596021,"owners_count":21933495,"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":[],"created_at":"2024-08-03T18:01:47.568Z","updated_at":"2026-03-06T10:34:16.120Z","avatar_url":"https://github.com/lucas-akira.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# chip8-emu\n![screenshot1](/imgs/screenshot1.png)\n![screenshot2](/imgs/screenshot2.png)\n\nCHIP-8 emulator written in C, using OpenGL.\n\n## Brief description\n\nFrom Wikipedia: CHIP-8 is an interpreted programming language developed by Joseph Weisbecker, initially used in the mid 1970s to allow easier programming of games. There are a number of classic video games ported to CHIP-8 such as Pong, Space Invaders and Tetris.\n\nIt is considered one of the easiest emulation projects to undertake, given its simplicity.\n\n## Input\nCHIP-8 uses a hexadecimal keyboard:\n\n| **1** | **2** | **3** | **C** |\n|---|---|---|---|\n| **4** | **5** | **6** | **D** |\n| **7** | **8** | **9** | **E** |\n| **A** | **0** | **B** | **F** |\n\nWhich this emulator maps to:\n\n#### QWERTY\n| **1** | **2** | **3** | **4** |\n|---|---|---|---|\n| **Q** | **W** | **E** | **R** |\n| **A** | **S** | **D** | **F** |\n| **Z** | **X** | **C** | **V** |\n\nor\n\n#### AZERTY\n| **1** | **2** | **3** | **4** |\n|---|---|---|---|\n| **A** | **Z** | **E** | **R** |\n| **Q** | **S** | **D** | **F** |\n| **W** | **X** | **C** | **V** |\n\nDefault combination on startup is QWERTY. Press TAB to change between QWERTY and AZERTY, if needed.\n\n\n## Current state\n\nRight now the emulator can boot some ROMs successfully, like Pong (1 player), Tetris, Tic-tac-toe and Breakout. Some demos and programs don't execute correctly (like the clock by Bill Fisher). \n\n## TODO:\n* ~~Fix freezes on some ROMs;~~ *Done. This was due to a wrong implementation of the 0xFX0A opcode.*\n* Clear and organize code; (*Partially done*)\n* Implement sound effect (beep) and delay timer;\n* ~~Optimize code to run better on higher resolutions.~~ *Done. While maximized some games reach 290 FPS.*\n* ~~Make an FPS cap to slow down the programs.~~ *Program runs at 60 FPS with updated graphics driver.*\n\n\n## Used references\n* https://en.wikipedia.org/wiki/CHIP-8\n* http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/\n* http://devernay.free.fr/hacks/chip8/C8TECH10.HTM\n\n## Acknowledgements\n* [Tiago Toledo Junior](https://github.com/TNanukem), a good friend, he gave the original idea of this project;\n* [David Jowett](https://github.com/DavidJowett): The OpenGL implementation is based on his CHIP-8 emulator \n(https://github.com/DavidJowett/chip8-emulator).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucas-akira%2Fchip8-emu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucas-akira%2Fchip8-emu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucas-akira%2Fchip8-emu/lists"}