{"id":16323693,"url":"https://github.com/im-rises/gameboyemulator","last_synced_at":"2025-08-18T05:49:08.614Z","repository":{"id":41605607,"uuid":"431238286","full_name":"Im-Rises/GameBoyEmulator","owner":"Im-Rises","description":"Game Boy Emulator made in C++.","archived":false,"fork":false,"pushed_at":"2023-02-19T19:26:25.000Z","size":1830808,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-07T10:11:14.283Z","etag":null,"topics":["cplusplus","cpp","emulator","gameboy","games"],"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/Im-Rises.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":"2021-11-23T20:06:58.000Z","updated_at":"2025-03-13T21:13:51.000Z","dependencies_parsed_at":"2025-02-10T23:41:26.127Z","dependency_job_id":null,"html_url":"https://github.com/Im-Rises/GameBoyEmulator","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Im-Rises/GameBoyEmulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FGameBoyEmulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FGameBoyEmulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FGameBoyEmulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FGameBoyEmulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Im-Rises","download_url":"https://codeload.github.com/Im-Rises/GameBoyEmulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2FGameBoyEmulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270951282,"owners_count":24674007,"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","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"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":["cplusplus","cpp","emulator","gameboy","games"],"created_at":"2024-10-10T22:55:26.253Z","updated_at":"2025-08-18T05:49:08.583Z","avatar_url":"https://github.com/Im-Rises.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GameBoyEmulator\n\n\u003cp align=\"center\"\u003e\n      \u003cimg src=\"README_files/Logos/cmake_logo.png\" alt=\"cmakeLogo\" style=\"height:60px;\"/\u003e\n      \u003cimg src=\"https://img.shields.io/badge/C%2B%2B-00599C?style=for-the-badge\u0026logo=c%2B%2B\u0026logoColor=white\" alt=\"cppLogo\" style=\"height:60px;\"/\u003e\n      \u003cimg src=\"README_files/Logos/SDL2_logo.png\" alt=\"cmakeLogo\" style=\"height:60px;\"/\u003e\n\u003c/p\u003e\n\n## Description\n\nGame Boy Emulator developed in C++ using SDL2.  \nYou can compile the program using CMake.  \nGames like Pokémon aren't working due to the lack of MBC3/MBC5 cartridges implementation.\n\nSDL2 website:\n\u003chttps://www.libsdl.org\u003e\n\n\u003e **Note**  \n\u003e C++ version 17  \n\u003e SDL2 version 2.0.14.\n\n## Features\n\nThe Emulator features :\n\n- Save-state\n- Screenshots\n- Different color modes\n- Audio\n- Xbox/PlayStation controller\n\n## Images\n\n| Tetris | Super Mario Land 2 |\n| --- | --- |\n| ![tetrisTitleScreen](https://user-images.githubusercontent.com/59691442/150528557-720e411d-2e16-4cc0-9817-167364169358.png) | ![marioLand2TitleScreen](https://user-images.githubusercontent.com/59691442/150528763-29bdaaf0-ca37-4a76-87d7-290d40da1065.png) |\n\n| Kirby's Dream Land | The Legend of Zelda Link's Awakening |\n| --- | --- |\n| ![kirbyDreamLandTitleScreen](https://user-images.githubusercontent.com/59691442/150528769-c1abc87b-6fae-4989-9481-b69ba493fecc.png) | ![zeldaTitleScreen](https://user-images.githubusercontent.com/59691442/150528776-c72dec37-00a2-42eb-aa3c-4cea48577342.png) |\n\n## Video\n\n\u003chttps://user-images.githubusercontent.com/59691442/150530024-ac2dceee-1162-4894-bc44-334bbad2544f.mp4\u003e\n\n## Quickstart\n\nTo use the emulator it depends on your system. Please follow the steps in section `Windows` or `Linux`.\n\nAll the releases can be found in the link below:  \n[Source code and releases](https://github.com/Im-Rises/GameBoyEmulator/releases)\n\nYou can download the emulator by clicking on one of the Windows or Linux images, depending on your operating system.\n\n### Windows\n\n\u003ca href=\"https://github.com/Im-Rises/GameBoyEmulator/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/Windows-0078D6?style=for-the-badge\u0026logo=windows\u0026logoColor=white\" alt=\"cmakeLogo\" style=\"height:40px;\"/\u003e\u003c/a\u003e\n\nOnce download make sure you have the `sdl2.dll` file next to the emulator .exe file, you can start the emulator by doing\na drag and drop of a rom to the .exe file, it will automatically start the game. You can also start the emulator by\ntyping the following command in your terminal.\n\n```bash\n./GameBoyEmulator.exe \u003cromPath\u003e\n```\n\n### Linux\n\n\u003ca href=\"https://github.com/Im-Rises/GameBoyEmulator/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black\" alt=\"cmakeLogo\" style=\"height:40px;\"/\u003e\u003c/a\u003e\n\nOnce download you'll need to install the `SDL2 library` by typing one of the following commands :\n\n```shell\nsudo apt-get install libsdl2-dev\n```\n\nor\n\n```shell\nsudo apt-get install libsdl2-2.0-0  \n```\n\n\u003e **Warning**\n\u003e Depending on your Linux distribution the command to install SDL2 may change.\n\nOnce it's done, you can start the emulator by doing a drag and drop of a rom on the emulator file, or you can type the\nfollowing command:\n\n```bash\n./GameBoyEmulator.exe \u003cromPath\u003e\n```\n\n## Compilation\n\nEmulator is supported under Linux and Windows.  \nThe source code provide a `CMakeList.txt` file to compile the emulator.\n\nYou can download CMake here:  \n\u003chttps://cmake.org\u003e\n\nLinux's users need to install the developer version of SDL2 to compile the Emulator. To install it types the following\ncommand in your terminal:\n\n```shell\nsudo apt-get install libsdl2-dev\n```\n\n## Emulator controls\n\n### Emulator interface\n\n- F10 : Switch Game Boy's color mode (GreenScale or Grayscale)\n\n- F11 : Switch between Fullscreen and windowed mode\n\n- Escape button/click cross to exit emulation\n\n- O : Create a screenshot of the game in the folder next to tha app (screenshots/\u003cgameName\u003e)\n\n- P : Pause emulation\n\n- U : Increase emulator audio volume\n\n- J : Decrease emulator audio volume\n\n- B : create save-state\n\n- N : load save-state\n\n- Tab : restart game/emulator\n\n### Use save states\n\nTo use a save-state press the B button on your keyboard, it will create a bmp image file named with the name of the game\nand the extension .gb.state.bmp. To load it, just press the N on your keyboard to load it when the game is playing.\n\nThe save-state is a screenshot of the game, allowing you to know where you're going to resume the game if you use it.\n\n### Screenshots feature\n\nThe emulator allow you to do screenshot of the game everytime. You can create one by pushing the IMP key on your\nkeyboard. The screenshots will be saved in the folder next to the Emulator `screenshots/\u003cgameName\u003e`.\n\n### Emulator game controls\n\nYou can play games with your keyboard and also with Xbox or Playstation controller.\n\nThe controller must be connected before you start the emulator. The selected controller will Rumble for you to know\nwhich controller has been selected (for PlayStation user the controller's led will be green).\n\n| Console buttons | Emulator buttons | Xbox Controller | Playstation Controller |\n|-----------------|------------------|-----------------|------------------------|\n| A               | D                | B               | O                      |\n| B               | S                | A               | X                      |\n| Start           | Enter            | start           | options                |\n| Select          | Space            | select          | share                  |\n| ←               | ←                | arrow/joystick  | arrow/joystick         |\n| →               | →                | arrow/joystick  | arrow/joystick         |\n| ↓               | ↓                | arrow/joystick  | arrow/joystick         |\n| ↑               | ↑                | arrow/joystick  | arrow/joystick         |\n\n## Ini file\n\nWhen you download/start the emulator you will get a GameBoyEmulator.ini file. This file allows you to change some\nparameters about the emulator.\n\n| Ini file setting | Description                     |\n|------------------|---------------------------------|\n| startBios        | load or not bios                |\n| biosPath         | set boot-rom path               |\n| width            | window width                    |\n| height           | window height                   |\n| colorMode        | change color mode (from 0 to 3) |\n\nYou can modify each of these parameters manually. To disable the bios load, put the value 0 in\n\nOriginal .ini file:\n\n```inifile\nstartBios='0'\nbiosPath='./dmg_boot.bin'\nwidth='640'\nheight='576'\ncolorMode='0'\n```\n\n## Emulation color modes\n\n| Zelda Link's Awakening in grayscale | Zelda Link's Awakening in green-scale |\n|-------------------------------------|--------------------------------------|\n|![zelda_grayscale](https://user-images.githubusercontent.com/59691442/179115301-a6d756c2-f519-459a-ab73-5dd16173e470.png)|![zelda_green-scale](https://user-images.githubusercontent.com/59691442/179115353-5f27ad9a-29df-45f9-82e4-feab011a58b4.png)|\n\n## GitHub Actions\n\n[![CMake](https://github.com/Im-Rises/GameBoyEmulator/actions/workflows/cmake.yml/badge.svg?branch=main)](https://github.com/Im-Rises/GameBoyEmulator/actions/workflows/cmake.yml)\n\nThe repository has a GitHub Actions file to verify the good behaviour of the project before merging/pushing to the main\nbranch with a wrong code.\n\n## Documentations\n\nCMake:  \n\u003chttps://cmake.org\u003e\n\nSDL wiki:  \n\u003chttps://wiki.libsdl.org\u003e\n\nVideo overview of the Game Boy, to understand the fundamental:  \n\u003chttps://www.youtube.com/watch?v=HyzD8pNlpwI\u003e\n\nThe main documentation about the console:  \n\u003chttps://archive.org/details/GameBoyProgManVer1.1/mode/2up\u003e  \n\u003chttps://gbdev.io/pandocs/Specifications.html\u003e\n\nThe boot-rom:  \n\u003chttps://gbdev.gg8.se/wiki/articles/Gameboy_Bootstrap_ROM\u003e\n\nOpcodes map:  \n\u003chttps://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html\u003e\n\nRom/Ram banking:  \n\u003chttp://www.codeslinger.co.uk/pages/projects/gameboy/beginning.html\u003e\n\nPPU:  \n\u003chttps://hacktixme.ga/GBEDG/ppu/\u003e\n\nAudio and sound:  \n\u003chttps://xiph.org/video/vid1.shtml\u003e\n\nSPU:  \n\u003chttps://nightshade256.github.io/2021/03/27/gb-sound-emulation.html\u003e  \n\u003chttps://emudev.de\u003e  \n\u003chttps://www.youtube.com/watch?v=a52p6ji1WZs\u003e\n\nTest roms I used to debug my emulator:  \n\u003chttps://gbdev.gg8.se/files/roms/blargg-gb-tests/\u003e  \n\u003chttps://github.com/mattcurrie/dmg-acid2\u003e\n\nOther docs (mostly about emulation in general):  \n\u003chttps://emudev.org\u003e    \n\u003chttp://emulator101.com/\u003e\n\n## Contributors\n\nQuentin MOREL :\n\n- @Im-Rises\n- \u003chttps://github.com/Im-Rises\u003e\n\n[![GitHub contributors](https://contrib.rocks/image?repo=Im-Rises/GameBoyEmulator)](https://github.com/Im-Rises/GameBoyEmulator/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fgameboyemulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fim-rises%2Fgameboyemulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fgameboyemulator/lists"}