Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/marethyu/awesome-emu-resources

A curated list of emulator development resources
https://github.com/marethyu/awesome-emu-resources

List: awesome-emu-resources

awesome awesome-list dmg documentation emulator gameboy gameboy-advance gameboy-emulator gb-emulator gb-resources gba list nes nes-emulator nintendo psx psx-emulator resources tools

Last synced: 15 days ago
JSON representation

A curated list of emulator development resources

Awesome Lists containing this project

README

        

# 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
* ppu timing https://pastebin.com/XQesgVaD

### 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/
* https://gbdev.io/gb-asm-tutorial/index

## 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
* https://github.com/falvarez/gba-doc

### 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
* https://emudev.org/2021/01/31/cached-interpreter.html

### 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://www.gregorygaines.com/blog/emulator-polling-vs-scheduler-game-loop/
* 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/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
- https://github.com/Atem2069/armwrestler-fixed

## 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/
* https://austinmorlan.com/posts/nes_rendering_overview/

### 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