Welcome to the Gumball project! This emulator is designed to faithfully replicate the functionality of the original Nintendo Game Boy. It is written in Rust and utilizes the SDL2 library for graphics and audio. This is a work in progress. There are a couple of known graphical bugs, and audio support is unfinished. But it works well enough to play Tetris!
- CPU Emulation: Accurate emulation of the Game Boy's Z80-like CPU.
- PPU Emulation: Renders graphics as per the original Game Boy's specifications.
- APU Emulation: Sound generation and audio playback.
- Input Handling: Supports keyboard input for emulating the Game Boy's buttons.
- Rust: Ensure you have Rust installed. You can install Rust using rustup.
- SDL2: SDL2 library is required. You can install it using your system's package manager or from SDL's official site.
- SDL2 Mixer: For audio playback. Installation instructions can be found here.
-
Clone the Repository:
git clone https://github.com/yourusername/gumball.git cd gumball
-
Build the Project:
cargo build --release
To run the emulator, you need to provide a ROM file as a command-line argument.
cargo run --release -- -r path/to/your/game.rom
- Up:
Up
- Down:
Down
- Left:
Left
- Right:
Right
- A Button:
Z
- B Button:
X
- Start:
Enter
- Select:
Right Shift
If you want to contribute or add new features, follow these steps:
-
Fork the Repository: Click on the
Fork
button at the top right of this page. -
Create a New Branch:
git checkout -b feature-name
-
Make Your Changes: Make sure to write tests if applicable.
-
Commit and Push:
git add . git commit -m "Description of your feature" git push origin feature-name
-
Create a Pull Request: Go to your fork on GitHub and open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.