{"id":23188239,"url":"https://github.com/afichet/yache","last_synced_at":"2025-04-05T05:43:42.247Z","repository":{"id":133121419,"uuid":"560942667","full_name":"afichet/yache","owner":"afichet","description":"A CHIP-8 Emulator","archived":false,"fork":false,"pushed_at":"2022-11-07T23:33:54.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-10T13:38:04.147Z","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":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/afichet.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":"2022-11-02T15:44:53.000Z","updated_at":"2022-11-02T15:45:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"a0bfe4fd-5a7e-4055-b754-98f7cf61e37b","html_url":"https://github.com/afichet/yache","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/afichet%2Fyache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afichet%2Fyache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afichet%2Fyache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afichet%2Fyache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/afichet","download_url":"https://codeload.github.com/afichet/yache/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294463,"owners_count":20915338,"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-12-18T11:13:28.178Z","updated_at":"2025-04-05T05:43:42.240Z","avatar_url":"https://github.com/afichet.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YACHE - Yet Another CHIP-8 Emulator\n\nHere is a CHIP-8 emulator.\n\nThis project was made for fun. There is plenty of better CHIP-8 implementations out there ;-).\n\nFor more information about CHIP-8, visit [Matthew Mikolay CHIP-8 Wiki](https://github.com/mattmikolay/chip-8/wiki).\n\nRunning Brix by Andreas Gustafsson:\n![Screenshot](https://user-images.githubusercontent.com/7930348/199541437-028be0c3-443e-4442-9f3e-ba56064d89d9.png)\n\n## Compilation\n\nThe only dependency you need is SDL2.\nYou also need CMake for building the sources:\n\n```bash\nmkdir build\ncd build\ncmake ..\nmake\n```\n\n## Execution\n\nYou need to pass a ROM path as argument of the program:\n\n```bash\n./yache ./roms/test.ch8\n```\n\nYou can find a good collection of ROMs here:\n\n- https://github.com/kripod/chip8-roms\n- https://johnearnest.github.io/chip8Archive/\n\n\nThe controls are mapped as follows on an US QWERTY keyboard:\n\n```\n ╔═══╦═══╦═══╦═══╗\n ║ 1 ║ 2 ║ 3 ║ 4 ║\n ╠═══╬═══╬═══╬═══╣\n ║ Q ║ W ║ E ║ R ║\n ╠═══╬═══╬═══╬═══╣\n ║ A ║ S ║ D ║ F ║\n ╠═══╬═══╬═══╬═══╣\n ║ Z ║ X ║ C ║ V ║\n ╚═══╩═══╩═══╩═══╝\n```\n\n## Implementation variations\n\nSome instructions vary depending on the CHIP-8 implementation. You can change some variation by commending or uncommenting the following defines in `src/computer.h`:\n\n```C\n#define ALT_SHIFT\n#define ALT_STR_LD\n```\n\n`ALT_SHIFT` changes the behaviour of instructions `8XY6` and `8XYE`.\n\n- When enabled, the shift is applied to `vx` register and saved in `vx`. `vy` is not used.\n- When disabled, the shift is applied to `vy` register and saved in `vx`.\n\n`ALT_STR_LD` changes the behaviour of instructions `FX55` and `FX65`.\n\n- When enabled, `I` register is incremented by `X + 1` after the execution.\n- When disabled, `I` register remains unchanged after the execution.\n\nYou may want to change the state of the two defines depending on the ROM you want to run. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafichet%2Fyache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fafichet%2Fyache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafichet%2Fyache/lists"}