{"id":20069233,"url":"https://github.com/ninjanazal/theboy","last_synced_at":"2025-07-20T06:06:37.089Z","repository":{"id":41353725,"uuid":"482042691","full_name":"ninjanazal/TheBoy","owner":"ninjanazal","description":"C++ project aimed at providing a comprehensive learning experience in the field of emulator development by implementing a Game Boy emulator with SFML integration. This repository serves as a study resource for understanding the intricacies of emulating a console and leveraging SFML for graphics renderin","archived":false,"fork":false,"pushed_at":"2022-09-06T22:15:06.000Z","size":19969,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T11:27:12.606Z","etag":null,"topics":["cmake","cpp","emulation","sfml"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ninjanazal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-15T17:59:46.000Z","updated_at":"2023-06-22T19:09:16.000Z","dependencies_parsed_at":"2022-07-07T18:11:23.169Z","dependency_job_id":null,"html_url":"https://github.com/ninjanazal/TheBoy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ninjanazal/TheBoy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ninjanazal%2FTheBoy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ninjanazal%2FTheBoy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ninjanazal%2FTheBoy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ninjanazal%2FTheBoy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ninjanazal","download_url":"https://codeload.github.com/ninjanazal/TheBoy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ninjanazal%2FTheBoy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266076097,"owners_count":23872732,"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","cpp","emulation","sfml"],"created_at":"2024-11-13T14:13:14.012Z","updated_at":"2025-07-20T06:06:32.070Z","avatar_url":"https://github.com/ninjanazal.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TheBoy\nGameBoy color emulator in c++  , created for a case study\n\n---\n\n### Usefull links\n- [gddev](https://www.gbdev.io/) (Game Boy Development community)\n- [Gameboy CPU (LR35902) instruction set](https://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html)\n- [Game Boy: Complete Technical Reference by gekkio](https://gekkio.fi/files/gb-docs/gbctr.pdf)\n- [Retrio - GameBoy test Roms](https://github.com/retrio/gb-test-roms)\n---\n\n# Dependencies\n ## Windows\n \n - Cmake installed;\n With Cmake, you can either build a Visual Studio Solution using the ```BuildMe.sh``` or open the Project Folder directly\n\n---\n ### Build .sln\n - ***(Needed)*** Bash terminar for running .sh scripts\n - Run the Builme script with the ```-t=vs``` parameter.\n\n\n ### Visual Studio Cmake\n - Remove the `out` folder if present.\n - Open the __TheBoy__ folder on Visual Studio.\n - This can be build directly.\n- Build Profiles should be created:\n\t- Open the project CmakeSettings, right clicking on the root CMakeList, and select ```CMake Settings for TheBoy```.\n\t- Add a `x64-Debug Verbose`, `x64-Debug` and `x64-Release Verbose` or more.\n\t- Add the command Argument `-DVERBOSE=false` to control the output text.\n\n\n### Using Mingw\n- Run the `buildme.sh -t=mingw` to compile the project.\n\n\n## VScode (notes)\n \nUnder the Preference settings was needed to add, ```\"cmake.generator\": \"MinGW Makefiles\" ```, and on the c_cpp_properties (using the c++ extension pack), \n```JSON\n            \"intelliSenseMode\": \"windows-msvc-x64\",\n            \"configurationProvider\": \"ms-vscode.cmake-tools\"\n```\n\n---\n\n# Build Script\nUse this script to gather all the information needed, compile e execute;\n\n### Available parameters\n\n```./buildme.sh -h```\n- *-r (--run)       | Will run the compilation result\n- *-c (--clearall)  | Will clear the previous compilation and rebuild\n- *-t (--target=)   | Changes the target generator\n\t- Current vailable generators: mingw\n\n---\n\n## Current Development state\n\n- [x] Cartridge header map\n\t- [x] Cartridge memory layout \n- [x] Address Bus implementation\n\t- [x] Bus functions read/write\n\t- [x] Addres bus major memory values maped\n\t- [x] Read/Write 16bit version functions\n- [x] Cpu Implementation\n\t- [x] OPCode translation\n\t- [x] Instruction implementation\n\t- [x] Stack implementation (Push/Pop 8\u002616bit)\n- [x] Ram\n\t- [x] Working RAM allocation and operations\n\t- [x] High RAM allocation and operations\n- [x] PPU\n\t- [x] VRam viewer implementation\n\t- [x] Pixel Pipeline\n\t- [x] PixelFiFo\n- [x] IO Interface\n\t- [x] Serial interface\n- [ ] Main OutPut\n\t- [x] Initial preview\n- [x] Input Implementation\n\n\n\n---\n\n## Testing State\n- CPU Instructions\n\t- [x] 01-special\n\t- [x] 02-interrupts\n\t- [x] 03-op sp,hl\n\t- [x] 04-op r,imm\n\t- [x] 05-op rp\n\t- [x] 06-ld r,r\n\t- [x] 07-jr,jp,call,ret,rst\n\t- [x] 08-misc instrs\n\t- [x] 09-op r,r\n\t- [x] 10-bit ops\n\t- [x] 11-op a,(hl)\n\t- [x] cpu_instrs\n\t- [x] daa\n\t- [x] dmg-acid2\n\t- [ ] instr_timing\n\t- [ ] mem_timing\n\n---\n### ScreenShots\n``` Cartridge header out ```\n![Cartridge Header](prtSc/CartridgeHeaderMapPNG.PNG)\n\n``` OpCode Execution (JP) ```\n![Cartridge Header](prtSc/JumpInstructionCpuExecution.PNG)\n\n``` VRam Viewer```\n![VRam Viewer](prtSc/TestROM_Load.PNG)\n\n``` LCD View```\n![LCD View](prtSc/LcdDisplay_initial.PNG)\n![Dr. Mario](prtSc/Background_Draw_Dr_Mario.PNG)\n\n![SpriteDraw](prtSc/Sprite_Draw_DMG-ACID2Test.PNG)\n![Input \u0026 full PixelPipeline](prtSc/PPuPipe%20and%20Input.PNG)\n![Save \u0026 Load](prtSc/saveLoad_zelda.gif)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fninjanazal%2Ftheboy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fninjanazal%2Ftheboy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fninjanazal%2Ftheboy/lists"}