An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# gba emu

gb / gbc / gba emulator witten in c++23.

| | |
:-------------------------:|:-------------------------:
![Img](assets/screenshots/poke_fr.png) | ![Img](assets/screenshots/poke_em.png)
![Img](assets/screenshots/kirby.png) | ![Img](assets/screenshots/yugioh.png)
![Img](assets/screenshots/poke_blue.png) | ![Img](assets/screenshots/ags.png)

![Img](assets/screenshots/debug.png)

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