{"id":13575567,"url":"https://github.com/BluestormDNA/ProjectDMG","last_synced_at":"2025-04-04T22:31:30.832Z","repository":{"id":64213803,"uuid":"156136551","full_name":"BluestormDNA/ProjectDMG","owner":"BluestormDNA","description":"C# GameBoy Emulator","archived":false,"fork":false,"pushed_at":"2020-05-08T17:28:00.000Z","size":154,"stargazers_count":93,"open_issues_count":1,"forks_count":15,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-02T23:11:46.488Z","etag":null,"topics":["boy","csharp","emulator","game","gameboy","nintendo"],"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/BluestormDNA.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":"2018-11-04T23:50:38.000Z","updated_at":"2025-02-23T22:57:32.000Z","dependencies_parsed_at":"2023-01-15T04:45:25.726Z","dependency_job_id":null,"html_url":"https://github.com/BluestormDNA/ProjectDMG","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BluestormDNA%2FProjectDMG","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BluestormDNA%2FProjectDMG/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BluestormDNA%2FProjectDMG/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BluestormDNA%2FProjectDMG/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BluestormDNA","download_url":"https://codeload.github.com/BluestormDNA/ProjectDMG/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247260654,"owners_count":20910047,"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":["boy","csharp","emulator","game","gameboy","nintendo"],"created_at":"2024-08-01T15:01:02.195Z","updated_at":"2025-04-04T22:31:25.819Z","avatar_url":"https://github.com/BluestormDNA.png","language":"C#","funding_links":[],"categories":["C# #"],"sub_categories":[],"readme":"# ProjectDMG\n\n**ProjectDMG is a C# coded emulator of the Nintendo Game Boy wich was originally codenamed Dot Matrix Game (DMG).**\n\n*This is a personal project with the scope to learn about hardware and the development of emulators.*\n\nProjectDMG dosn't use any external dependency and uses rather simplistyc C# code.\n\nAll the CPU opcodes are implemented and it passes Blaarg tests.\nThe emulator have accurate cycle timings to the opcode degree. Including Game Boy related hardware design flaws/bugs as the HALT bug, as some software relies on this specific behaviour.\n\n\u003e **Note:**  This is not a M-Cycle or micro-ops accurate emulator.\n\u003e Accuracy and syncronization between the various hardware subsystems as the Pixel Processing Unit (PPU), the Memory Managemet Unit (MMU) or the Timer relies on hardcoded fixed values and varies from 4 to 24 CPU cycles depending on the executed Opcode or hardware interrupts.\n\n## Compability\n\nGame Boy catalog compatibility should be around +95% as the support have focused on the most popular cartridges types (MBCs 1,2,3 and 5). The full list goes as follows:\n\n|Supported Cartridge Types  | Unsupported Cartridge Types |\n|--|--|\n|00h  ROM ONLY  |  08h  ROM+RAM |\n|01h  MBC1  |  09h  ROM+RAM+BATTERY |\n|02h  MBC1+RAM  |   0Bh  MMM01|\n|03h  MBC1+RAM+BATTERY  |  0Ch  MMM01+RAM |\n|05h  MBC2  |  0Dh  MMM01+RAM+BATTERY |\n|06h  MBC2+BATTERY  | 1Ch  MBC5+RUMBLE |\n|0Fh  MBC3+TIMER+BATTERY  | 1Dh  MBC5+RUMBLE+RAM |\n|10h  MBC3+TIMER+RAM+BATTERY  | 1Eh  MBC5+RUMBLE+RAM+BATTERY |\n|11h  MBC3  | 20h  MBC6 |\n|12h  MBC3+RAM  | 22h  MBC7+SENSOR+RUMBLE+RAM+BATTERY |\n|13h  MBC3+RAM+BATTERY  | FCh  POCKET CAMERA |\n|19h  MBC5  | FDh  BANDAI TAMA5 |\n|1Ah  MBC5+RAM  | FEh  HuC3 |\n|1Bh  MBC5+RAM+BATTERY  |  FFh  HuC1+RAM+BATTERY |\n\n\u003e **Note:**  SRAM save files are not supported at the moment so your progress on games will be lost on exit.\n\n\n## Using the emulator\n\nExecute the emulator and drag and drop a valid Game Boy rom dump to the GUI. The Game Boy will power on and begin execution.\n\n\u003e **Note:**  A valid Game Boy BootRom/BIOS file is not needed anymore. The CPU and MMU defaults to post BootRom init values.\n \nOnce power on, Input is mapped as:\n\n* D-Pad UP: **Up** or **W**\n* D-Pad Left: **Left** or **A**\n* D-Pad Down: **Down** or **S**\n* D-Pad Right: **Right** or **D**\n* A: **Z** or **J**\n* B: **X** or **K**\n* Start: **V** or **Enter**\n* Select: **C** or **Space**\n\n## Screenshots\n\n![blaargcpu](https://user-images.githubusercontent.com/28767885/50447289-692f0680-091a-11e9-92b6-583e7262658e.PNG)\n![blaarginstrtiming](https://user-images.githubusercontent.com/28767885/50447290-692f0680-091a-11e9-9937-b4f23bd6d169.PNG)\n![k1](https://user-images.githubusercontent.com/28767885/50447291-69c79d00-091a-11e9-89fd-c1931b37e30d.PNG)\n![k2](https://user-images.githubusercontent.com/28767885/50447293-69c79d00-091a-11e9-927a-090f098f542b.PNG)\n![m1](https://user-images.githubusercontent.com/28767885/50447294-69c79d00-091a-11e9-9965-e5ded1888aa2.PNG)\n![m2](https://user-images.githubusercontent.com/28767885/50447295-69c79d00-091a-11e9-9780-82e5a8c8a90b.PNG)\n![t](https://user-images.githubusercontent.com/28767885/50447296-6a603380-091a-11e9-9e2a-54b5c4d71b9f.PNG)\n![z](https://user-images.githubusercontent.com/28767885/50447297-6a603380-091a-11e9-984b-c4a5ca9d20c3.PNG)\n![p](https://user-images.githubusercontent.com/28767885/50447298-6a603380-091a-11e9-9b6a-fde84205564d.PNG)\n![p2](https://user-images.githubusercontent.com/28767885/50447299-6a603380-091a-11e9-86fe-4e50c70f0f3e.PNG)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBluestormDNA%2FProjectDMG","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBluestormDNA%2FProjectDMG","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBluestormDNA%2FProjectDMG/lists"}