https://github.com/bluestormdna/projectdmg
C# GameBoy Emulator
https://github.com/bluestormdna/projectdmg
boy csharp emulator game gameboy nintendo
Last synced: 3 months ago
JSON representation
C# GameBoy Emulator
- Host: GitHub
- URL: https://github.com/bluestormdna/projectdmg
- Owner: BluestormDNA
- Created: 2018-11-04T23:50:38.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-08T17:28:00.000Z (almost 5 years ago)
- Last Synced: 2025-01-23T18:50:09.782Z (3 months ago)
- Topics: boy, csharp, emulator, game, gameboy, nintendo
- Language: C#
- Homepage:
- Size: 150 KB
- Stars: 92
- Watchers: 4
- Forks: 14
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ProjectDMG
**ProjectDMG is a C# coded emulator of the Nintendo Game Boy wich was originally codenamed Dot Matrix Game (DMG).**
*This is a personal project with the scope to learn about hardware and the development of emulators.*
ProjectDMG dosn't use any external dependency and uses rather simplistyc C# code.
All the CPU opcodes are implemented and it passes Blaarg tests.
The 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.> **Note:** This is not a M-Cycle or micro-ops accurate emulator.
> 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.## Compability
Game 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:
|Supported Cartridge Types | Unsupported Cartridge Types |
|--|--|
|00h ROM ONLY | 08h ROM+RAM |
|01h MBC1 | 09h ROM+RAM+BATTERY |
|02h MBC1+RAM | 0Bh MMM01|
|03h MBC1+RAM+BATTERY | 0Ch MMM01+RAM |
|05h MBC2 | 0Dh MMM01+RAM+BATTERY |
|06h MBC2+BATTERY | 1Ch MBC5+RUMBLE |
|0Fh MBC3+TIMER+BATTERY | 1Dh MBC5+RUMBLE+RAM |
|10h MBC3+TIMER+RAM+BATTERY | 1Eh MBC5+RUMBLE+RAM+BATTERY |
|11h MBC3 | 20h MBC6 |
|12h MBC3+RAM | 22h MBC7+SENSOR+RUMBLE+RAM+BATTERY |
|13h MBC3+RAM+BATTERY | FCh POCKET CAMERA |
|19h MBC5 | FDh BANDAI TAMA5 |
|1Ah MBC5+RAM | FEh HuC3 |
|1Bh MBC5+RAM+BATTERY | FFh HuC1+RAM+BATTERY |> **Note:** SRAM save files are not supported at the moment so your progress on games will be lost on exit.
## Using the emulator
Execute the emulator and drag and drop a valid Game Boy rom dump to the GUI. The Game Boy will power on and begin execution.
> **Note:** A valid Game Boy BootRom/BIOS file is not needed anymore. The CPU and MMU defaults to post BootRom init values.
Once power on, Input is mapped as:* D-Pad UP: **Up** or **W**
* D-Pad Left: **Left** or **A**
* D-Pad Down: **Down** or **S**
* D-Pad Right: **Right** or **D**
* A: **Z** or **J**
* B: **X** or **K**
* Start: **V** or **Enter**
* Select: **C** or **Space**## Screenshots









