{"id":13759948,"url":"https://github.com/seandewar/sdgbc","last_synced_at":"2025-03-30T16:19:45.276Z","repository":{"id":110744159,"uuid":"134147955","full_name":"seandewar/sdgbc","owner":"seandewar","description":"Emulator for the Game Boy Color with audio \u0026 other features. Prize winning final year B.Sc. project at the University of Leicester.","archived":false,"fork":false,"pushed_at":"2022-01-03T14:45:41.000Z","size":5663,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-05T17:58:13.164Z","etag":null,"topics":["cmake","cpp14","emulation","emulator","nintendo-game-boy","nintendo-game-boy-color","sfml","university-of-leicester","university-project","wxwidgets"],"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/seandewar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2018-05-20T12:19:15.000Z","updated_at":"2024-09-02T14:10:25.000Z","dependencies_parsed_at":"2024-01-15T03:42:44.895Z","dependency_job_id":null,"html_url":"https://github.com/seandewar/sdgbc","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seandewar%2Fsdgbc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seandewar%2Fsdgbc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seandewar%2Fsdgbc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seandewar%2Fsdgbc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seandewar","download_url":"https://codeload.github.com/seandewar/sdgbc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246343019,"owners_count":20761953,"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":["cmake","cpp14","emulation","emulator","nintendo-game-boy","nintendo-game-boy-color","sfml","university-of-leicester","university-project","wxwidgets"],"created_at":"2024-08-03T13:01:01.383Z","updated_at":"2025-03-30T16:19:45.249Z","avatar_url":"https://github.com/seandewar.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# sdgbc\n\n_NOTE: this project is not actively maintained, though I do sometimes apply\nbugfixes due to dependency updates._  \n\nA software emulator for the Nintendo Game Boy Color written in C++ using SFML\nand wxWidgets. Available for Windows and Linux (tested using the MSVC and GCC\ncompilers).  \n\n![img](https://github.com/seandewar/sdgbc/blob/master/docs/img/gui_pkmn_crystal.png?raw=true \"sdgbc running Pokémon Crystal Version\")\n![img](https://github.com/seandewar/sdgbc/blob/master/docs/img/gui_toy_story_racer.png?raw=true \"sdgbc running Toy Story Racer\")\n![img](https://github.com/seandewar/sdgbc/blob/master/docs/img/gui_loz_dx_dmg_mode.png?raw=true \"sdgbc running The Legend of Zelda: Link's Awakening in DMG mode\")\n\nThis emulator can run most Game Boy and Game Boy Color games from their ROM dump\nfiles to an acceptable level of accuracy, including those requiring MBC1, MBC2, MBC3\n(with minimal RTC) and MBC5 (without Rumble) support.\n\nsdgbc was developed as a final year BSc. computer science project at the University\nof Leicester, UK.  \nA copy of the submitted dissertation and viva presentation slides can be\nfound in the `docs` directory.\n\n\n## Short Overview Video\n\nClick on the image below to be taken a 1 minute overview video describing sdgbc: \n\n[![video](https://img.youtube.com/vi/l-BObaR3Klc/0.jpg)](https://www.youtube.com/watch?v=l-BObaR3Klc \"sdgbc - A Short Overview\")\n\n\n## Building\n\nsdgbc is configured to be built using CMake (version 3.5 or above). The code relies\non some C++14 features, and thus, requires a C++14 standard-compliant compiler.  \n\nThe following instructions assume some familiarity with CMake. Running `cmake-gui`\nor `ccmake` is recommended to easily follow these instructions:\n\n\n### Building for Windows\n\n*The following has been tested using CMake 3.5, MSVC 14, wxWidgets 3.0.1 and SFML\n2.4.1:*\n\n1. Launch CMake.\n2. Set the source code directory to the sdgbc repository root directory.\n3. Set the binary output directory to any directory you wish.\n4. Create a `PATH` cache variable called `SFML_ROOT`. Set it to root directory of\nyour SFML installation.\n5. Create a `PATH` cache variable called `wxWidgets_ROOT_DIR`. Set it to root\ndirectory of your wxWidgets installation.\n6. Create a `PATH` cache variable called `wxWidgets_LIB_DIR`. Set it to the\n`lib\\vc140_dll` directory of your wxWidgets installation.\n7. Configure the project using the `Visual Studio 14 2015` generator.\n8. Generate the project file. A `sdgbc.sln` Visual Studio solution file will be\ncreated inside of the specified binary output directory.\n\nAfter opening the solution file in Visual Studio, press Ctrl+F5 to build and run\nthe software (without debugging).\n\n\n### Building for Linux\n\n*The following has been tested using CMake 3.5, GCC 5.4, wxWidgets 3.0.1 and SFML\n2.3.1 on X11:*  \n**(You may experience some X11 compatibility issues running the software with any\nversion of SFML greater than 2.3.1!)**\n\n1. Launch CMake.\n2. Set the source code directory to the sdgbc repository root directory.\n3. Set the binary output directory to any directory you wish.\n4. Create a `PATH` cache variable called `SFML_ROOT`. Set it to root directory of\nyour SFML installation.\n5. Configure the project using the `Unix Makefile` generator.\n6. Generate the makefile. It will be created inside of the specified binary output\ndirectory.\n\nUsing a shell, change your current working directory to the binary output directory\nand run `make`.  \nThis can be done using sh or bash by running the following command:\n\n```bash\ncd BINARY_DIR_PATH \u0026\u0026 make\n```\n\n\n## Running\n\nThe emulator can be ran in a GUI mode by simply opening the built `sdgbc` executable\nfile. The emulated joypad can be interacted with using the keyboard as follows:\n\n| Joypad Key | Keyboard Key |\n| ---------- | ------------ |\n| D-pad Keys | Arrow Keys   |\n| B          | Z            |\n| A          | X            |\n| Start      | Return       |\n| Select     | Shift        |\n\n![img](https://github.com/seandewar/sdgbc/blob/master/docs/img/cpu_cmd.png?raw=true \"sdgbc running with the --cpu-cmd command-line argument\")\n\nAdditionally, a command-line interface for debugging the emulated CPU is\navailable for use. It can be accessed by passing the `--cpu-cmd` argument to\nthe program. A list of commands can be found by executing the `help` command.\n\nOptionally, a path to a GB or GBC ROM file can be given via the command-line\narguments for both modes:\n* `sdgbc ROM_PATH` *(for the main GUI mode)*\n* `sdgbc --cpu-cmd ROM_PATH` *(for the command-line CPU debugger mode)*\n\n\n## License\n\nThe software is distributed using the MIT license as follows:\n\n```\nThe MIT License (MIT)\n\nCopyright (c) 2017-2018 Sean Dewar (seandewar @ Github)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseandewar%2Fsdgbc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseandewar%2Fsdgbc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseandewar%2Fsdgbc/lists"}