{"id":28000656,"url":"https://github.com/sysprog21/gameboy-emu","last_synced_at":"2025-05-08T23:54:04.398Z","repository":{"id":55140900,"uuid":"315230869","full_name":"sysprog21/gameboy-emu","owner":"sysprog21","description":"An efficient and portable Game Boy emulator","archived":false,"fork":false,"pushed_at":"2024-06-26T15:31:18.000Z","size":81,"stargazers_count":36,"open_issues_count":1,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-08T23:54:00.040Z","etag":null,"topics":["gameboy","gameboy-emulator","gbz80","sdl2"],"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/sysprog21.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}},"created_at":"2020-11-23T07:16:23.000Z","updated_at":"2025-02-20T08:29:28.000Z","dependencies_parsed_at":"2022-08-14T13:11:00.562Z","dependency_job_id":null,"html_url":"https://github.com/sysprog21/gameboy-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/sysprog21%2Fgameboy-emu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysprog21%2Fgameboy-emu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysprog21%2Fgameboy-emu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysprog21%2Fgameboy-emu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sysprog21","download_url":"https://codeload.github.com/sysprog21/gameboy-emu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166486,"owners_count":21864471,"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":["gameboy","gameboy-emulator","gbz80","sdl2"],"created_at":"2025-05-08T23:54:03.835Z","updated_at":"2025-05-08T23:54:04.373Z","avatar_url":"https://github.com/sysprog21.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gameboy-emu\n\n`gameboy-emu` aims to be an efficient and portable Game Boy emulator.\nOnly the original Game Boy (DMG) is supported at this time.\n\nThe performance is the major consideration, and please look for an\nalternative emulator if accuracy is crucial to you.\n\n## Build and Verify\n\n`gameboy-emu` relies on some 3rd party packages to be fully usable and to\nprovide you full access to all of its features. You need to have a working\n[SDL2 library](https://www.libsdl.org/) on your target system.\n* macOS: `brew install sdl2`\n* Ubuntu Linux / Debian: `sudo apt install libsdl2-dev`\n\nBuild the emulator.\n```shell\nmake\n```\n\n`build/emu` is the built executable file, and you can use it to load Game Boy\nROM files.\n\n`build/bench` profiles the emulation of GBZ80 CPU.\nSince the GNU/Linux build of `bench` uses `perf_event_open`, make sure to have\nthe permission to access the performance counters: either run the program as\nsuperuser (discouraged) or set the value of `perf_event_paranoid` appropriately,\nfor example:\n```shell\necho 1 | sudo tee /proc/sys/kernel/perf_event_paranoid\n```\n\nOptionally make it permanent with:\n```shell\necho 'kernel.perf_event_paranoid=1' | sudo tee /etc/sysctl.d/local.conf\n```\n\n`build/bench` would print the rough number of CPU clock cycles spent in executing\nthe code during Game Boy emulation with [Blargg's test ROMs](https://github.com/retrio/gb-test-roms).\n\n## Key Controls\n\n| Action            | Keyboard   | Joypad |\n|-------------------|------------|--------|\n| A                 | z          | A      |\n| B                 | x          | B      |\n| Start             | Return     | START  |\n| Select            | Backspace  | BACK   |\n| D-Pad             | Arrow Keys | DPAD   |\n| Normal Speed      | 1          |        |\n| Turbo x2 (Hold)   | Space      |        |\n| Turbo X2 (Toggle) | 2          |        |\n| Turbo X3 (Toggle) | 3          |        |\n| Turbo X4 (Toggle) | 4          |        |\n| Reset             | r          |        |\n| Change Palette    | p          |        |\n| Reset Palette     | Shift + p  |        |\n| Fullscreen        | F11 / f    |        |\n| Frameskip (Toggle)| o          |        |\n| Interlace (Toggle)| i          |        |\n\nFrameskip and Interlaced modes are both off by default. The Frameskip toggles\nbetween 60 FPS and 30 FPS.\n\n## Reference\n* [Gameboy CPU (LR35902) instruction set](https://pastraiser.com/cpu/gameboy/gameboy_opcodes.html)\n* [Blargg's Gameboy hardware test ROMs](https://github.com/retrio/gb-test-roms)\n\n## License\n\n`gameboy-emu` is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysprog21%2Fgameboy-emu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsysprog21%2Fgameboy-emu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysprog21%2Fgameboy-emu/lists"}