Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/MegadreamsBE/mta-gb
Game Boy (Color) emulator for Multi Theft Auto
https://github.com/MegadreamsBE/mta-gb
cgb cgb-emulator emulation emulator gameboy lua multitheftauto
Last synced: 12 days ago
JSON representation
Game Boy (Color) emulator for Multi Theft Auto
- Host: GitHub
- URL: https://github.com/MegadreamsBE/mta-gb
- Owner: MegadreamsBE
- License: gpl-3.0
- Created: 2019-05-04T06:08:01.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-28T02:04:48.000Z (8 months ago)
- Last Synced: 2024-02-28T03:23:53.833Z (8 months ago)
- Topics: cgb, cgb-emulator, emulation, emulator, gameboy, lua, multitheftauto
- Language: Lua
- Homepage:
- Size: 593 KB
- Stars: 12
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mta-sa - mta-gb - Game Boy emulator for Multi Theft Auto. (Other)
README
# MTA-GB - Game Boy (Color) emulator in Multi Theft Auto
This project aims to create a fully playable Game Boy emulator within Multi Theft Auto.**Experimental CGB support is available as well but has limited support for games at this time!**
## Loading ROMs
At this stage it is not possible to dynamically decide which ROM to load. Instead it is currently hardcoded but this can be adjusted in **src/gameboy.lua**. There is _no_ ROM included with this repository.## How To Run
1. Clone or download this repository.
2. Copy the folder containing this repository to your Multi Theft Auto server under **mods/deathmatch/resources**.
3. Add a **data** folder inside the resource.
4. Add a ROM to the **data** folder and adjust **src/gameboy.lua** and **meta.xml**.### LÖVE
A experimental wrapper for the LÖVE framework is available to allow for playing/testing outside of MTA. The following steps are needed to run it:
1. Clone or download this repository.
2. Add a ROM (like Tetris) to your LÖVE data folder (appdata in Windows).
3. Navigate to the directory containing this repository and then navigate into **wrappers/love**.
4. Run: $ **love . **![Tetris](/images/tetris.png)
![The Legend of Zelda Link's Awakening](/images/zelda.png)
![Pokémon Blue](/images/pokemon.png)
![Pokémon Crystal](/images/pokemoncrystal.png)## Current Progress
This emulator currently has a fully working CPU, GPU, MMU (except some MBC types), a debugger and more. It is able to run games such as Tetris, Dr. Mario, Pokémon Blue and The Legend of Zelda Links Awakening fairly well. Bugs do currently exist and some weirder DMG/CBG behaviors aren't fully implemented yet.## TODO
(This is not a full list)
- Add sound support.
- Improve debugging tools
- Add per-game support to save states
- Add missing memory banks and improve existing ones
- Add interface to load a game instead of having it hardcoded## Known Problems
(This is not a full list)
- Pokémon Blue/Red has a sprite glitch when the emulator runs in CGB mode (bottom part is white)
- Slow performance (MTA specific)
- Harry Potter and the Chambers of Secrets freezes on battle sequence and degnoming## FAQ
1. Why Multi Theft Auto?
I wanted to develop this for a platform that didn't yet have a Game Boy emulator and at the same time poses a bigger challenge for optimization due to its poor performance. MTA not having a Game Boy emulator and at the same time have plenty of performance issues fit this criteria very well. Once finished and properly optimized this emulator could be used as a way of keeping players entertained at times when they have to wait (such as after dying on a race deatchmatch map).
2. Will this support Game Boy Advance games?
Perhaps. This would be far into the future and only if optimization methods deem it feasable.
3. How well does this emulator perform?
FPS in MTA is playable but games will run slowly, CGB performs better at the moment. Runs at full FPS in LÖVE.4. Can I contribute?
Yes. Feel free to fork this project and help improve it. It's open source for a reason.## Guidelines
Please note that there's no class system within the code base. This is intentional and it's pointless to add one. There used to be one but as the emulator already performs poorly a faster, and unfortunately less readable/convenient, way of writing code had to be chosen.## License
GNU General Public License v3.0See [LICENSE](LICENSE) for details.