awesome-emu-resources icon indicating copy to clipboard operation
awesome-emu-resources copied to clipboard

A curated list of emulator development resources

Awesome Emulator Development Resources

GB Resources

Emulators

  • BGB http://bgb.bircd.org/
  • https://www.amidog.com/amiga/gbe/ (includes source code)

Documentation

  • pandocs http://bgb.bircd.org/pandocs.htm
  • gb cycle timing http://blog.kevtris.org/blogfiles/Nitty%20Gritty%20Gameboy%20VRAM%20Timing.txt
  • gb memory map http://gameboy.mongenel.com/dmg/asmmemmap.html
  • gb opcodes http://gameboy.mongenel.com/dmg/opcodes.html
  • gb cpu manual http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf
  • pandocs http://problemkaputt.de/pandocs.htm
  • gb opcodes http://www.devrs.com/gb/files/opcodes.html
  • z80 cpu manual http://www.myquest.nl/z80undocumented/z80cpu_um.pdf
  • decoding gb opcodes https://gb-archive.github.io/salvage/decoding_gbz80_opcodes/Decoding%20Gamboy%20Z80%20Opcodes.html
  • architecture overview https://www.copetti.org/projects/consoles/game-boy/
  • full opcode reference https://rednex.github.io/rgbds/gbz80.7.html
  • gb opcodes https://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html
  • gb technical reference https://gekkio.fi/files/gb-docs/gbctr.pdf
  • gb architecture overview https://thomas.spurden.name/gameboy/
  • gb programming info https://fms.komkon.org/GameBoy/Tech/Software.html
  • gb bootstrap rom https://gbdev.gg8.se/wiki/articles/Gameboy_Bootstrap_ROM
  • gb sound hardware https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware
  • pandocs https://gbdev.io/pandocs/
  • cycle accurate gb docs https://github.com/AntonioND/giibiiadvance/blob/master/docs/TCAGBD.pdf
  • gb sound https://github.com/AntonioND/giibiiadvance/blob/master/docs/other_docs/GBSOUND.txt
  • gb overview https://github.com/Baekalfen/PyBoy/blob/master/PyBoy.pdf
  • wiki https://github.com/dooskington/gamelad/wiki
  • gb programming manual v1.1 https://ia803208.us.archive.org/9/items/GameBoyProgManVer1.1/GameBoyProgManVer1.1.pdf
  • gb opcodes https://izik1.github.io/gbops/
  • hardware report http://www.cs.columbia.edu/~sedwards/classes/2019/4840-spring/reports/GameBoy.pdf
  • zilog cpu user manual https://zany80.github.io/documentation/Z80/UserManual.html
  • ppu docs https://github.com/mattcurrie/mealybug-tearoom-tests/blob/master/the-comprehensive-game-boy-ppu-documentation.md

Tests

  • blargg tests https://gbdev.gg8.se/files/roms/blargg-gb-tests/
  • mooneye gb test roms https://github.com/Gekkio/mooneye-gb/tree/master/tests
  • test roms https://gbdev.gg8.se/wiki/articles/Test_ROMs
  • mooneye gb test roms https://gekkio.fi/files/mooneye-gb/latest/
  • yet another test roms https://github.com/mattcurrie/mealybug-tearoom-tests
  • test roms https://github.com/retrio/gb-test-roms
  • collection of test roms https://github.com/c-sp/gameboy-test-roms

Tutorials

  • how to build gb http://emudev.de/gameboy-emulator/overview/
  • gb emulator in js http://imrannazar.com/GameBoy-Emulation-in-JavaScript:-The-CPU
  • audio https://nightshade256.github.io/2021/03/27/gb-sound-emulation.html
  • building gb emulator guide http://www.codeslinger.co.uk/pages/projects/gameboy.html
  • book https://blog.ryanlevick.com/DMG-01/public/book/
  • memory bank switching explained https://b13rg.github.io/Gameboy-Bank-Switching/
  • gpu modes explained https://dandigit.com/posts/bigboy-writing-a-gameboy-emulator
  • simple state machine for the different rendering steps https://mattbruv.github.io/gameboy-crust/
  • building gb emu https://brianbove.com/blog/2017/05/29/building-a-gameboy-clone-from-scratch-part-1-emulation/
  • building cinoop https://cturt.github.io/cinoop.html
  • booting gb with custom logo https://dhole.github.io/post/gameboy_custom_logo/
  • writing an emulator https://github.com/lazy-stripes/writing-an-emulator and https://blog.tigris.fr/category/emulator/
  • building realboy https://realboyemulator.wordpress.com/posts/
  • learning gb https://www.retroreversing.com/gameboy/
  • https://hacktix.github.io/GBEDG/

Others

  • blog post http://blog.rekawek.eu/2017/02/09/coffee-gb/
  • gb logo generator http://catskull.net/GB-Logo-Generator/
  • gpu implementation https://github.com/mattbruv/Gameboy-Crust/blob/master/src/core/gpu.rs
  • ultimate gameboy talk https://www.youtube.com/watch?v=HyzD8pNlpwI
  • awesome list of gb resources https://github.com/gbdev/awesome-gbdev
  • sample daa implementation https://www.reddit.com/r/EmuDev/comments/cdtuyw/gameboy_emulator_fails_blargg_daa_test/etwcyvy/
  • youtube playlist https://www.youtube.com/playlist?list=PLye7LM1YVhDHR4TGMklN3tMt_J2jIrn1w
  • how boot rom works https://realboyemulator.wordpress.com/2013/01/03/a-look-at-the-game-boy-bootstrap-let-the-fun-begin/
  • gb resources https://github.com/cslarsen/gameboy#references
  • gb gotchas https://github.com/fwsGonzo/gamebro/blob/master/POSTERITY.md
  • how mb switching works https://retrocomputing.stackexchange.com/questions/11732/how-does-the-gameboys-memory-bank-switching-work
  • nintendo logo decoding https://stackoverflow.com/questions/21119904/how-to-decode-the-nintendo-logo-from-gameboy
  • goboy blog post https://tmjohnson.co.uk/posts/goboy-1/
  • gb sound resources https://www.reddit.com/r/EmuDev/comments/5gkwi5/gb_apu_sound_emulation/dat3zni/
  • project tips https://www.reddit.com/r/EmuDev/comments/ac4upo/gb_emulator_project_tips/
  • https://www.reddit.com/r/EmuDev/comments/kqwgot/gameboy_emulator_my_experience/
  • https://www.reddit.com/r/EmuDev/comments/l7k23y/gbcemu_yet_another_gameboy_color_emulator_written/
  • see GB section in emudev.org/system_resources
  • custom Boot ROM https://github.com/Hacktix/Bootix
  • PokeGB https://binji.github.io/posts/pokegb/
  • https://keichi.dev/post/write-yourself-a-game-boy-emulator/

GBA resources

Emulator source codes

  • https://github.com/AntonioND/giibiiadvance (includes gb and gbc)
  • https://github.com/fleroviux/NanoboyAdvance
  • https://github.com/DenSinH/DSHBA

Documentation

  • programming manual http://cdn.preterhuman.net/texts/gaming_and_diversion/Gameboy%20Advance%20Programming%20Manual%20v1.1.pdf
  • arm datasheet http://datasheets.chipdb.org/ARM/arm.pdf
  • gba technical info http://problemkaputt.de/gbatek.htm (includes docs for other consoles like DS)
  • arm instruction set http://vision.gel.ulaval.ca/~jflalonde/cours/1001/h17/docs/arm-instructionset.pdf
  • gba technical info http://www.akkit.org/info/gbatek.htm
  • architecture overview https://www.copetti.org/projects/consoles/game-boy-advance/
  • gba hardware overview https://www.coranac.com/tonc/text/hardware.htm
  • cowbite gba emu docs https://www.cs.rit.edu/~tjh8300/CowBite/CowBiteSpec.htm
  • arm datasheet https://www.dwedit.org/files/ARM7TDMI.pdf
  • programming manual https://www.scribd.com/document/198178973/GameBoy-Advance-Programming-Manual
  • arm decoding table https://merryhime.github.io/gba-doc/CPU/arm-table.html
  • https://www.intel.com/content/dam/support/us/en/programmable/support-resources/bulk-container/pdfs/literature/third-party/ddi0100e-arm-arm.pdf
  • https://github.com/mara-kr/GBA/tree/master/doc
  • https://merryhime.github.io/gba-doc/
  • http://gbadev.net/gbadoc/intro.html
  • https://github.com/nba-emu/hw-docs

Tutorials

  • gba programming guide http://www.coranac.com/tonc/text/toc.htm
  • gba dev https://jamiedstewart.github.io/category/Game%20Boy%20Advance.html
  • writing gba game https://www.reinterpretcast.com/writing-a-game-boy-advance-game
  • https://www.chibialiens.com/arm/helloworld.php#LessonH2

Others

  • gba resources https://en.wikibooks.org/wiki/GBA_Development/Resources
  • blog post https://medium.com/@michelheily/hello-gba-journey-of-making-an-emulator-part-1-8793000e8606
  • https://macabeus.medium.com/reverse-engineering-a-gameboy-advance-game-introduction-ec185bd8e02
  • https://github.com/gbdev/awesome-gbadev
  • https://www.gregorygaines.com/blog/decoding-the-arm7tdmi-instruction-set-game-boy-advance/
  • https://beanmachine.alt.icu/post/rtc/
  • https://github.com/JimB16/GBABios/blob/master/GBABios.s
  • http://ianfinlayson.net/class/cpsc305/notes/13-tiles
  • https://www.reddit.com/r/EmuDev/comments/7y3s1b/yet_another_gba_emulator_question_by_a_total_noob/
  • https://mgba.io/2015/06/27/cycle-counting-prefetch/

Tests

  • https://github.com/destoer/armwrestler-gba-fixed
  • https://github.com/Atem2069/armwrestler-fixed
  • https://github.com/jsmolka/gba-suite
  • https://github.com/DenSinH/GBARoms
  • https://github.com/destoer/gba_tests
  • https://github.com/ladystarbreeze/GBA-Test-Collection
  • https://github.com/DenSinH/FuzzARM
  • https://github.com/PeterLemon/GBA
  • https://github.com/shonumi/Emu-Docs/tree/master/GameBoy%20Advance/test_roms
  • https://github.com/nba-emu/hw-test
  • https://github.com/mgba-emu/suite
  • https://tcrf.net/AGS_Aging_Cartridge
  • https://github.com/skylersaleh/GBA-Logs
  • https://github.com/samkravitz/gba-acid

NDS resources

  • https://www.copetti.org/writings/consoles/nintendo-ds/ (see resources inside)
  • nds section in https://emudev.org/system_resources
  • https://web.archive.org/web/20150812193438/http://www.auia.net/ds/
  • https://www.patater.com/files/projects/manual/manual.html
  • https://github.com/RockPolish/rockwrestler

NES resources

Docs

  • http://wiki.nesdev.com/w/index.php/Nesdev_Wiki
  • http://problemkaputt.de/everynes.htm
  • https://www.nesdev.com/NESDoc.pdf
  • http://www.cs.columbia.edu/~sedwards/classes/2020/4840-spring/reports/nes.pdf
  • http://hp.vector.co.jp/authors/VA042397/nes/index.html

CPU

  • http://nesdev.com/6502_cpu.txt
  • https://www.nesdev.com/6502.txt
  • http://www.slack.net/~ant/nes-emu/6502.html
  • http://www.obelisk.me.uk/6502/
  • https://www.masswerk.at/6502/6502_instruction_set.html
  • https://github.com/davepoo/6502Emulator
  • http://www.6502.org/tutorials/6502opcodes.html
  • https://codegolf.stackexchange.com/questions/12844/emulate-a-mos-6502-cpu (have tests inside)
  • http://6502asm.com/ (interesting programs inside)
  • https://www.reddit.com/r/EmuDev/comments/ojhf1y/a_minimal_singlestepped_and_beginner_friendly/

Graphics

  • https://web.archive.org/web/20190630142035/https://n3s.io/index.php?title=How_It_Works
  • https://www.reddit.com/r/EmuDev/comments/7k08b9/not_sure_where_to_start_with_the_nes_ppu/
  • https://wiki.nesdev.com/w/images/d/d1/Ntsc_timing.png
  • https://www.reddit.com/r/EmuDev/comments/evu3u2/what_does_the_nes_ppu_actually_do/
  • https://www.reddit.com/r/EmuDev/comments/d49igt/how_should_i_implement_ppu_nes/
  • https://www.reddit.com/r/EmuDev/comments/ht0ajj/ppu_emulation_issue/
  • https://www.reddit.com/r/EmuDev/comments/1amxrdu/can_someone_explain_to_me_the_purpose_of_shift/

APU

  • http://www.slack.net/~ant/nes-emu/apu_ref.txt

Tests

  • https://github.com/koute/pinky/tree/master/mos6502/roms
  • http://wiki.nesdev.com/w/index.php/Emulator_tests
  • https://github.com/Klaus2m5/6502_65C02_functional_tests
  • http://www.qmtpro.com/~nes/misc/ (nestest inside)
  • http://tasvideos.org/EmulatorResources/NESAccuracyTests.html
  • https://github.com/christopherpow/nes-test-roms

Useful guides

  • https://jeffreyxiao.me/blog/writing-an-nes-emulator-with-rust-and-webassembly
  • https://www.reddit.com/r/EmuDev/comments/9s755i/is_there_a_comprehensive_nes_emulation_guide/ (some links inside)
  • http://www.michaelburge.us/2019/03/18/nes-design.html
  • https://emudev.de/nes-emulator/overview/ (some links inside)
  • https://nwidger.github.io/blog/post/writing-an-nes-emulator-in-go-part-1/
  • https://yizhang82.dev/nes-emu-overview
  • https://nesdev.com/NES%20emulator%20development%20guide.txt
  • http://fceux.com/web/help/NESProcessor.html
  • https://bugzmanov.github.io/nes_ebook/chapter_1.html
  • https://hacktixme.ga/NESEDG/

Implementation

  • https://prilik.com/ANESE/
  • https://github.com/PeterLemon/NES
  • https://github.com/OneLoneCoder/olcNES
  • https://github.com/yizhang82/neschan
  • https://github.com/Xyene/Emulator.NES
  • https://github.com/AndreaOrru/LaiNES
  • https://github.com/amhndu/SimpleNES
  • https://github.com/wpmed92/MedNES

Tools

  • http://www.6502.org/tools/asm/
  • http://manpages.ubuntu.com/manpages/trusty/man1/as86.1.html

Other

  • https://www.copetti.org/writings/consoles/nes/
  • https://emudev.org/system_resources#nintendo-entertainment-system
  • https://www.youtube.com/playlist?app=desktop&list=PLrOv9FMX8xJHqMvSGB_9G9nZZ_4IgteYf
  • http://www.qmtpro.com/~nes/
  • https://www.youtube.com/watch?v=y71lli8MS8s
  • https://bheisler.github.io/post/nes-rom-parser-with-nom/
  • https://github.com/pjhades/tolarian-academy/blob/master/nes-architecture.md
  • https://github.com/pjhades/tolarian-academy/blob/master/nes-irq.md
  • https://github.com/pjhades/tolarian-academy/blob/master/nes-ppu.md
  • http://nnarain.github.io/2020/04/15/nescore-NES-Emulator-written-in-Rust.html

Building NES games

  • https://famicom.party/book/
  • http://skilldrick.github.io/easy6502/ (also cpu tutorial)
  • https://en.wikibooks.org/wiki/Category:Book:NES_Programming
  • https://nesdoug.com/
  • https://shiru.untergrund.net/articles/programming_nes_games_in_c.htm
  • https://github.com/jmk/cc65-nes-examples
  • https://cc65.github.io/doc/nes.html
  • https://nerdy-nights.nes.science/
  • https://taywee.github.io/NerdyNights/nerdynights.html
  • https://gist.github.com/wkjagt/9043907 (snake game)
  • https://cppchriscpp.github.io/nes-starter-kit//home.html
  • https://mike42.me/blog/2021-04-building-my-first-nes-game-a-retrospective
  • http://gikofami.fc2web.com/ (jp)

PS1

General

  • https://ps1.consoledev.net/
  • https://www.copetti.org/writings/consoles/playstation/#sources
  • https://problemkaputt.de/psx-spx.htm
  • https://ffhacktics.com/wiki/PSX_instruction_set
  • https://web.archive.org/web/20190713020355/http://www.elisanet.fi/6581/PSX/doc/Playstation_Hardware.pdf - has a really clear explaination of vram and texture pages along with other confusing stuff
  • http://hitmen.c02.at/files/docs/psx/psx.pdf
  • http://hitmen.c02.at/html/psx_docs.html
  • https://drhell.web.fc2.com/ps1/index.html

Guides

  • https://github.com/simias/psx-guide
  • https://www.reddit.com/r/EmuDev/comments/fmhtcn
  • https://www.reddit.com/r/emulation/comments/8017j9/how_does_playstations_texture_cache_work/ (also see the same question posted earlier)

Emulators

  • https://github.com/grumpycoders/pcsx-redux - really good one with debugger
  • no$psx https://problemkaputt.de/psx.htm
  • https://gitlab.com/flio/rustation-ng/
  • https://github.com/UnsafePointer/ruby

tests

  • https://emulation.gametechwiki.com/index.php/PS1_Tests
  • https://github.com/PeterLemon/PSX (fork: https://github.com/RobertPeip/PSX)
  • https://github.com/JaCzekanski/ps1-tests
  • https://gitlab.com/psx-emu-dev/psx-hardware-tests/-/tree/master/src
  • https://github.com/simias/psx-hardware-tests/tree/master/tests
  • https://www.pouet.net/prodlist.php?order=thumbup&platform%5B0%5D=Playstation&page=1
  • https://github.com/nicolasnoble/pcsx-redux/tree/2f882a4d0bc8a83f13077f24538db6ab05c8247e/src/mips/tests/cdrom

Others

  • https://emudev.org/2020/03/27/PSX_BIOS.html
  • psx section in https://emudev.org/system_resources
  • http://lameguy64.net/tutorials/pstutorials/index.html (has some good explanations on various stuff)
  • https://github.com/m35/jpsxdec/blob/readme/jpsxdec/PlayStation1_STR_format.txt

JIT

  • https://github.com/spencertipping/jit-tutorial
  • https://github.com/antocuni/jit30min
  • https://csl.name/post/python-jit/
  • https://github.com/tekknolagi/ghuloum

Miscellaneous

  • emudev http://emudev.de/
  • Common bugs https://github.com/mattrberry/common-emudev-bugs
  • Guide to writing emulators http://emulator101.com/
  • How emulators work http://imrannazar.com/How-Emulators-Work%3A-a-presentation
  • console architecture overview https://copetti.org/projects/consoles/
  • collection of 8 bit processor emulators https://github.com/MoleskiCoder/EightBit
  • emudev https://emudev.org/
  • emudev discord server resources
  • emu docs https://github.com/shonumi/Emu-Docs
  • japanese docs https://github.com/pokemium/emu-docs-ja
  • emulators https://problemkaputt.de/
  • https://old.reddit.com/r/EmuDev/comments/jorn6a/which_parts_of_an_emulator_can_run_in_parallel/
  • ??? https://scrapbox.io/gameboy/
  • how emulators work https://stackoverflow.com/questions/448673/how-do-emulators-work-and-how-are-they-written/448689