https://github.com/itotaljustice/notorious_beeg
gba emulator written in c++23
https://github.com/itotaljustice/notorious_beeg
cpp gameboy-advance gb gba-emulator gbc
Last synced: about 1 year ago
JSON representation
gba emulator written in c++23
- Host: GitHub
- URL: https://github.com/itotaljustice/notorious_beeg
- Owner: ITotalJustice
- License: gpl-3.0
- Created: 2022-03-23T22:57:31.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-01-17T21:07:47.000Z (over 3 years ago)
- Last Synced: 2023-03-05T10:28:46.526Z (over 3 years ago)
- Topics: cpp, gameboy-advance, gb, gba-emulator, gbc
- Language: C++
- Homepage: https://notorious-beeg.netlify.app/
- Size: 8.31 MB
- Stars: 30
- Watchers: 1
- Forks: 1
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# gba emu
gb / gbc / gba emulator witten in c++23.
| | |
:-------------------------:|:-------------------------:
 | 
 | 
 | 

notable features:
- reasonably accurate gba emulation, most games should just work.
- waitloop detection. can remove most idle loops which improves performance.
- very fast gb/gbc emulation.
- reasonably accurate gb/gbc emulation.
- complete ezflash emulation, this is the only emulator with this feature.
- emulation of most fat devices used in dkp libfat. this means you can access files from a virtual sd card with homebrew. i believe this is the only emulator that supports this.
---
## building
a c++23 compiler is needed (gcc12+ clang15+ msvc12+) and cmake.
### sdl2 vcpkg (simple frontend)
```sh
cmake --preset sdl2-vcpkg
cmake --build --preset sdl2-vcpkg
```
### imgui vcpkg (complex debugger frontend)
```sh
cmake --preset imgui-vcpkg
cmake --build --preset imgui-vcpkg
```
you can checkout the rest of the presets in
there are a number of presets to help with building
---
## web builds
web builds are the easiest way to quickly test a game. builds are automatically built from master. please report any bugs you find, giving as much info as possible such as browser, os, game etc.
[gh-pages](https://itotaljustice.github.io/notorious_beeg) version doesn't support threads / mutexs. may crash.
[netlify](https://notorious-beeg.netlify.app) version supports threads / mutexes, won't crash.
---
## yet to implement
list of stuff that i haven't yet implemented. for the most part, everything is done!
### ppu
- mosaic bg
- mosaic obj
### apu
- correct fifo
### dma
- dma3 special
### misc
- correct openbus behaviour
- correct rom access timings
- lots of optimisations. ppu rendering is not optimised at all. dma can be further optimised. mem access can be better optimised for vram and bios access
---
## thanks
- cowbite spec
- gbatek
- tonc
- belogic for apu
- dillion for flashmem
- dennis for eeprom
- emudev discord
- jsmolka for their very helpful tests
- normmatt (and vba) for the builtin bios
- endrift for mgba
- ocornut for imgui
- ocornut for imgui_club
- everyone that has contributed to the bios decomp
- xproger for openlara (fixed several bugs in my emu)
- zayd for info on rtc
- pokeemerald for a being a good reference
- kenney for the onscreen control buttons
- ifeelfine for yoshi gif