https://multigesture.net/wp-content/uploads/mirror/zenogais/Dynamic%20Recompiler.html https://jahej.com/alt/2011_06_12_jit-cpu-emulation-a-6502-to-x86-dynamic-recompiler-part-1.html https://c74project.com/microcode/ ====================== Atari 2600: 6507, 11-bit address space Memory Map: ntsc: 1.19 mhz (262 lines) pal: 1.18 mhz (312 lines) 0000-007F TIA Registers 0080-00FF RAM/Stack 0200-02FF RIOT (Timer) registers 1000-1FFF Cartridge ROM (bankswitch) https://problemkaputt.de/2k6specs.htm http://www.classic-games.com/atari2600/specs.html http://7800.8bitdev.org/index.php/Atari_2600_VCS_Sound_Frequency_and_Waveform_Guide https://atariage.com/forums/topic/297759-part-1-cdfj-overview/ http://www.ataricompendium.com/archives/articles/longevity/longevity.html https://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-07.html https://www.masswerk.at/nowgobang/2021/6502-illegal-opcodes https://forums.atariage.com/topic/297759-part-1-cdfj-overview/ https://forums.atariage.com/topic/255177-so-what-is-dpc/ 1xxx = bank 0 hs=fff5 2xxx = bank 1 hs=fff6 3xxx = bank 2 hs=fff7 4xxx = bank 3 hs=fff8 5xxx = bank 4 hs=fff9 6xxx = bank 5 hs=fffa 7xxx = bank 7 hs=fffb (default) ====================== Space Invaders: i8080 Memory Map: 0000-1FFF ROM 2000-23FF RAM 2400-3FFF Video RAM https://www.x-ways.net/winhex/kb/resources/Intel_x86_Commands.txt http://www.emulator101.com/reference/8080-by-opcode.html http://www.emulator101.com/memory-maps.html http://dunfield.classiccmp.org/r/8080.txt https://pastraiser.com/cpu/i8080/i8080_opcodes.html https://www.walkofmind.com/programming/side/hardware.htm https://floooh.github.io/2021/12/06/z80-instruction-timing.html#extra-clock-cycles ====================== NES: 6502 341 cycles x 262 scanlines = 89342 (89341.5) cycles. Skip 1 clock every even frame 341/3 = cpu ticks (113.6667) per scanline hblank = 256+85=341, cpi ticks 28.33333 nmi to start of render: 2273.33333 256x240 resolution, 20 vblank, 2 dummy 64 sprites, max 8 per line OAM: 64x4 = 256 bytes Memory Map: cpu: 0000-1FFF RAM (mirrored) 2000-3FFF PPU registers (mirrored) 4000-4013 APU registers 4014 DMA 4015 APU registers 4016-4017 Input Controller registers 8000-FFFF PRG Game ROM (bankswitch) ppu: 0000-1FFF CHR BG/Sprite Tile bitmaps (bankswitch) 2000-3EFF BG Tile Maps 3EF0-3EFF Palette (mirrored) https://bugzmanov.github.io/nes_ebook/chapter_5.html https://github.com/christopherpow/nes-test-roms/ https://wiki.nesdev.com/w/index.php/Nesdev_Wiki http://nesdev.com/6502_cpu.txt http://nesdev.com/undocumented_opcodes.txt https://www.nesdev.org/wiki/PPU_rendering ====================== GBOY: i8080/Z80 160x144 resolution, 10 lines vblank 114 x 154 = 17566 clocks per screen 40 sprites, max 10 per line OAM: 40x4 = 160 bytes Memory Map: 0000-00FF Boot ROM/Interrupt Vectors 0100-3FFF Rom Bank 0 4000-7FFF Rom Bank 1-N 8000-9FFF VRAM Tile/Map A000-BFFF Cart RAM C000-CFFF Internal RAM Bank 0 D000-DFFF Internal RAM Bank 1-N E000-FDFF Echo RAM FE00-FE9F OAM Sprite (40) FF00-FF7F I/O Registers FF80-FFFE High RAM FFFF Interrupt Register http://bgb.bircd.org/pandocs.htm https://gbdev.io/gb-opcodes/optables/ https://github.com/retrio/gb-test-roms https://gbdev.gg8.se/wiki/articles/Main_Page http://gameboy.mongenel.com/dmg/asmmemmap.html http://www.devrs.com/gb/files/opcodes.html http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf https://cturt.github.io/cinoop.html https://gekkio.fi/files/gb-docs/gbctr.pdf https://github.com/mattcurrie/mealybug-tearoom-tests ======================GBA: ARM ARM7TDMI 128 sprites Memory Map: 00000000-00003FFF BIOS 02000000-0203FFFF RAM 03000000-03007FFF RAM (cartridge) 04000000-040003FF I/O registers 05000000-050001FF BG Palette [256] 05000200-050003FF Sprite Palette [256] 06000000-0600FFFF VRAM Bitmap/BG Map/BG Tiles 06010000-06017FFF VRAM Bitmap/Sprite Tiles 07000000-070003FF OAM Sprite Data 08000000-09FFFFFF ROM 0A000000-0BFFFFFF ROM 0C000000-0DFFFFFF ROM https://emulation.gametechwiki.com/index.php/GBA_Tests https://www.gregorygaines.com/blog/decoding-the-arm7tdmi-instruction-set-game-boy-advance/ https://problemkaputt.de/gbatek.htm https://www.coranac.com/tonc/text/toc.htm https://forums.mgba.io/showthread.php?tid=18 https://medium.com/@michelheily/hello-gba-journey-of-making-an-emulator-part-1-8793000e8606 http://ianfinlayson.net/class/cpsc305/notes/13-tiles https://github.com/DenSinH/FuzzARM https://github.com/JimB16/GBABios/blob/master/GBABios.s https://github.com/PeterLemon/GBA https://github.com/jsmolka/gba-tests https://github.com/Powerlated/OptimeGBA https://github.com/mgba-emu/suite ====================== PSX: MIPS Memory Map: 00000000-007FFFFF RAM 00800000-008003FF SCRATCH 00801000-00803FFF I/O registers 00C00000-00C7FFFF ROM https://student.cs.uwaterloo.ca/~isg/res/mips/opcodes http://problemkaputt.de/psx-spx.htm https://github.com/PeterLemon/PSX https://github.com/unsafepointer/ruby https://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats https://emulation.gametechwiki.com/index.php/PS1_Tests https://github.com/JaCzekanski/ps1-tests ====================== SNES: 65816 128 sprites, 32 per scanline Memory Map: 00000000-003FFFFF SNES Banks 00-3F 00400000-007DFFFF ROM Banks 40-7D 007E0000-007FFFFF WRAM 00800000-00BFFFFF SNES Banks 80-BF 00C00000-00FFFFFF ROM Banks C0-FF OAM: 512 + 32 bytes http://problemkaputt.de/fullsnes.htm https://media.smwcentral.net/Ersanio/SMWCstuff/Advanced%20documentation/qsnesdoc.html https://sneslab.net/wiki/SNES_ROM_Header http://tasvideos.org/EmulatorResources/SNESAccuracyTests.html https://github.com/PeterLemon/SNES/ https://www.copetti.org/writings/consoles/super-nintendo/ https://github.com/elzo-d/SnesJs/blob/master/snes/cpu.js https://georgjz.github.io/snesaa04/ https://www.youtube.com/watch?v=3FVN_Ze7bzw https://www.chibiakumas.com/6502/snes.php ====================== N64 MIPS VR4300i = 93.75 MHz RSP 62.5 MHz https://www.copetti.org/writings/consoles/nintendo-64/ https://sites.google.com/site/consoleprotocols/home/homebrew/n64-assembly-home/Exceptions-and-Interrupts https://github.com/Ryzee119/n64_controller_test https://www.youtube.com/watch?v=VQHSI42_Ias https://github.com/rasky/r64emu/tree/master/src ====================== GameCube: PowerPC 00000000-017FFFFF RAM 80000000-817FFFFF RAM1 (cached) C0000000-C17FFFFF RAM1 (uncached) C8000000-CBFFFFFF Frame Buffer CC000000-CC000FFF Command Processor registers CC001000-CC001FFF Pixel Engine registers CC002000-CC002FFF Video Interface registers CC003000-CC003FFF Processor interface registers CC004000-CC004FFF Memory interface registers CC005000-CC005FFF Audio interface registers CC006000-CC006FFF DVD interface registers https://wiibrew.org/wiki/Memory_Map http://hitmen.c02.at/files/yagcd/yagcd/ http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf https://www.nxp.com/docs/en/reference-manual/MPC82XINSET.pdf http://datasheets.chipdb.org/IBM/PowerPC/Gekko/gekko_user_manual.pdf http://www.csit-sun.pub.ro/~cpop/Documentatie_SMP/Motorola_PowerPC/PowerPc/GenInfo/pemch8.pdf https://github.com/msierks/rustcube/blob/master/src/gamecube.rs https://github.com/dingusdev/dingusppc/tree/master/cpu/ppc/test/ppcinttests.cs https://github.com/dingusdev/dingusppc/tree/master/cpu/ppc/test/ppcfloattests.csv ====================== C64: 6510 NTSC: 1.023 MHz PAL: 0.985 MHz 320x200 resolution border: 403x284 resolution total: 504x312 resolution cycles_per_scanline = 63 cycles_per_frame = 312 x cycles_per_scanline = 19656 cycles Memory Map: 0000-03FF OS RAM 0400-07FF Screen Memory (40x25) 0800-9FFF RAM/CARTLO A000-BFFF RAM/CARTHI/BASIC C000-CFFF RAM D000-DFFF RAM/CHARSET/IO E000-FFFF RAM/CARTHI/KERNAL https://www.c64-wiki.com/wiki/Memory_Map https://www.c64-wiki.com/wiki/Keyboard http://blog.worldofjani.com/?p=164 https://codebase64.org/doku.php?id=base:vicii_memory_organizing https://wpguru.co.uk/2014/06/how-to-switch-between-upperlower-case-and-petscii-fonts-on-a-c64/ http://www.coding64.org/?p=164 https://digitalerr0r.net/2011/04/30/commodore-64-programming-7-creating-and-rendering-bitmaps/ https://www.c64brain.com/gamehacks/pitfall-ii-game-reverse-engineered/ https://www.youtube.com/watch?v=-5ASyabVrxg http://unusedino.de/ec64/technical/formats/crt.html https://sta.c64.org/cbm64krnfunc.html https://csdb.dk/forums/index.php?roomid=11&topicid=116402 https://github.com/kondrak/rust64 http://ist.uwaterloo.ca/~schepers/formats/CRT.TXT https://www.c64-wiki.com/wiki/Bank_Switching https://retro64.altervista.org/blog/sprite-multiplexing-simple-implementation-using-commodore-64-basic-v2/ http://www.c64os.com/post/sd2iecfilenames http://www.unusedino.de/ec64/technical/formats/d81.html https://github.com/floooh/docker-c64/blob/master/m6569.h https://www.youtube.com/watch?v=lVKPWzJRtl0 - sprite multiplex d012 raster line (16...50) d001 sprite y ======================== Macintosh - 68000 Memory Map: * A23 A22 A21 A20 A19 * 0 0 X X X 00.0000 - 3F.FFFF RAM OVERLAY=0 * 0 1 X 0 X 40.0000 - 4F.FFFF ROM OVERLAY=0 * 0 1 0 0 X 40.0000 - 4F.FFFF ROM OVERLAY=1 * 0 1 1 1 X 60.0000 - 7F.FFFF RAM OVERLAY=1 * 1 0 X 0 X 70.0000 - 0F.FFFF ROM OVERLAY=1 * 1 0 X 0 X 80.0000 - 8F.FFFF ROM OVERLAY=X, SCC * 1 1 0 0 X C0.0000 - CF.FFFF ROM OVERLAY=X, IWM * 1 0 0 X X 80.0000 - 9F.FFFF SCC (not 1000X) * 1 0 1 X X A0.0000 - BF.FFFF SCC (not 1010X) * 1 1 0 X X C0.0000 - DF.FFFF IWM (not 1100X) * 1 1 1 0 X E0.0000 - EF.FFFF VIA (not 11100) * 1 1 1 X 0 E0.0000 - E7.FFFF PHASE (not 11100) http://www.easy68k.com/files/EASy68KQuickRef.pdf https://www.bigmessowires.com/rom-adapter/plus-rom-listing.asm https://www.osdata.com/system/physical/memmap.htm https://github.com/MicroCoreLabs/Projects/blob/master/MCL68/MC68000_Test_Code/MC68000_test_all_opcodes.X68 https://www.eeeguide.com/exceptions-types-of-motorola-68000/ https://developer.apple.com/library/archive/documentation/mac/pdf/Operating_System_Utilities/Trap_Manager.pdf http://www.mac.linux-m68k.org/devel/iwm.php http://www.mac.linux-m68k.org/devel/macalmanac.php https://vintageapple.org/inside_o/pdf/Inside_Macintosh_Volume_III_1985.pdf https://brutaldeluxe.fr/documentation/iwm/InsideMac_DiskRegisterInformation.pdf http://www.toughdev.com/content/2016/11/pcemacplus-the-ultimate-68k-classic-macintosh-emulator/ https://developer.apple.com/library/archive/documentation/mac/pdf/Devices/Device_Manager.pdf https://ftp.zx.net.nz/pub/archive/ftp.microsoft.com/MISC/KB/en-us/69/177.HTM https://developer.apple.com/library/archive/documentation/mac/pdf/Devices/Device_Manager.pdf https://macgui.com/news/article.php?t=496 https://mcosre.sourceforge.net/docs/adb_intro.html https://github.com/evansm7/umac/tree/main ======================== Appleii https://www.kreativekorp.com/miscpages/a2info/index.shtml https://6502disassembly.com/a2-rom/ https://6502disassembly.com/a2-rom/APPLE2.ROM.html https://github.com/zellyn/goapple2/blob/master/docs/apple2.org ======================== 68000 https://github.com/transistorfet/moa/ https://github.com/fredrequin/j68_cpu/blob/master/roms/rom_testbench.asm ======================== Sega Genesis - 68000/Z80 * 32x28 cell = 256x224, 64 sprites * 40x28 cell = 320x224, 80 sprites 4 planes: scrollb/sprite 0/scrolla/sprite1 memory map: https://segaretro.org/Sega_Mega_Drive/Memory_map https://segaretro.org/images/1/18/GenesisTechnicalOverview.pdf https://segaretro.org/Sega_Mega_Drive/VDP_registers https://www.copetti.org/writings/consoles/mega-drive-genesis/ https://github.com/vladikcomper/MegaPCM/blob/master/MegaPCM.asm https://plutiedev.com/using-the-z80 https://www.hdretrovision.com/free-stuff http://techdocs.exodusemulator.com/Console/SegaMegaDrive/Software.html#test-roms https://github.com/sonicretro/s1disasm/blob/AS/sonic.asm https://gendev.spritesmind.net/forum/viewtopic.php?f=8&t=3329&sid=5a7ded3e58fe87a663e27f2f2470b439 ======================== Amiga - 68000 262 lines ntsc 312 lines pal 244 count horiz ntsc: 7.16 MHz 640x200x4 pal: 7.09 MHz 640x256x4 8 3-color sprites Memory Map: 00.0000 - 03.FFFF 256Kb Chip RAM 04.0000 - 07.FFFF 256Kb Chip RAM 08.0000 - 0F.FFFF 512Kb Chip RAM 10.0000 - 1F.FFFF Reserved 20.0000 - 9F.FFFF Auto-config space A0.0000 - BE.FFFF Reserved BF.D000 - BF.DF00 8250-B (even addresses) BF.E001 - BF.EF01 8250-A (odd addresses) C0.0000 - D7.FFFF Slow ram D8.0000 - DB.FFFF Reserved DC.0000 - DC.FFFF RTC DF.F000 - DF.FFFF Chip registers E0.0000 - E7.FFFF Reserved E8.0000 - E8.FFFF Auto-config space F0.0000 - FB.FFFF Reserved FC.0000 - FF.FFFF 256Kb System ROM https://github.com/Specy/asm-editor http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0060.html http://goldencrystal.free.fr/M68kOpcodes-v2.3.pdf https://github.com/MicroCoreLabs/Projects/tree/master/MCL68/MC68000_Test_Code http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node00D3.html http://retrospec.sgn.net/users/tomcat/miodrag/Atari_ST/Atari%20ST%20Internals.htm http://wpage.unina.it/rcanonic/didattica/ce1/docs/68000.pdf https://www.nxp.com/files-static/archives/doc/ref_manual/M68000PRM.pdf http://coppershade.org/articles/Code/Reference/Custom_Chip_Register_List/ https://github.com/TomHarte/CLK/tree/Amiga/OSBindings/Mac/Clock%20SignalTests https://github.com/MicroCoreLabs/Projects/blob/master/MCL68/MCL68_with_BASIC/mcl68.ino http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0063.html https://www.youtube.com/watch?v=37OuDZ2g1bQ https://www.amigaroms.com/ https://github.com/flamewing/68k-bcd-verifier https://wiki.amigaos.net/wiki/Classic_Graphics_Primitives https://github.com/petschau/WinFellow/blob/master/fellow/SRC/WinFellow/graphics/DDFStateMachine.cpp https://www.markwrobel.dk/post/amiga-machine-code-letter12-linedraw2/ ========================= NeoGeo - m68k + z80 000000-0FFFFF Vector Table, ROM bank 1 100000-10F2FF WorkRAM:User RAM 10F300-10FFFF WorkRAM:System ROM/reserved RAM 110000-1FFFFF WorkRAM mirror 200000-2FFFFF ROM bank 2-N 300000-3FFFFF I/O 400000-401FFF Palette RAM Bank 402000-7FFFFF Palette RAM mirror 800000-BFFFFF Memory card C00000-C1FFFF System ROM C20000-CFFFFF System ROM mirror D00000-D0FFFF Backup RAM D10000-DFFFFF Backup RAM mirror https://wiki.neogeodev.org/index.php?title=Main_Page https://wiki.neogeodev.org/index.php?title=68k_instructions_timings ========================= Wii - PowerPC(Broadway)+ARM(Starlet) 80000000-817FFFFF MEM1 cached C0000000-C17FFFFF MEM1 uncached 90000000-93FFFFFF MEM2 cached D0000000-D3FFFFFF MEM2 uncached https://www.copetti.org/writings/consoles/wii/ https://github.com/decaf-emu/decaf-emu ========================== Switch https://github.com/Ryujinx/Ryujinx https://github.com/CAS-Atlantic/AArch64-Encoding/blob/master/binary%20encodding.pdf ========================== 8086 00000-9FFFF RAM A0000-BFFFF Video E0000-FFFFF ROM i/o ports: 020-021 Interrupt 0A0-0A1 Interrupt 3B0-3BF Video 3D0-3DF Video https://github.com/b-dmitry1/BIOS - bios https://int10h.org/blog/2015/04/cga-in-1024-colors-new-mode-illustrated/#16_colors_rgbi https://github.com/davecom/DK86PC https://github.com/ricardoquesada/bios-8088.git https://github.com/mikechambers84/XTulator https://stanislavs.org/helppc/ports.html http://www.gabrielececchetti.it/Teaching/CalcolatoriElettronici/Docs/i8086_instruction_set.pdf https://github.com/volkertb/temu-vsb/blob/main/temu/temu.asm https://github.com/volkertb/temu-vsb/tree/main/sbemu http://archive.gamedev.net/archive/reference/articles/article443.html https://www.smspower.org/Development/SN76489?sid=ae16503f2fb18070f3f40f2af56807f1 http://www.zeridajh.org/articles/various/sn76489/index.htm http://www.shipbrook.net/jeff/sb.html ;;=== sse shift https://wunkolo.github.io/post/2020/11/gf2p8affineqb-int8-shifting/ https://wwwuser.gwdg.de/~parallel/intel_compiler_doc_91/main_cls/mergedProjects/intref_cls/common/intref_sse2_int_shift.htm https://wwwuser.gwdg.de/~parallel/intel_compiler_doc_91/main_cls/mergedProjects/intref_cls/common/ https://shybovycha.github.io/2017/02/21/speeding-up-algorithms-with-sse.html https://www.cnblogs.com/qmjc/p/13495724.html ========================== Turbografx 16 - HuC6280 http://shu.emuunlim.com/download/pcedocs/pce_cpu.html https://www.chibiakumas.com/6502/pcengine.php https://www.copetti.org/writings/consoles/pc-engine/ http://shu.emuunlim.com/shu_frame.html http://archaicpixels.com/HuC6280_Instruction_Set https://cx16.dk/65c02/reference.html https://github.com/Klaus2m5/6502_65C02_functional_tests https://github.com/visrealm/vrEmu6502 https://www.chrismcovell.com/PCEdev/HuC6280_opcodes.html https://retropie.org.uk/docs/PC-Engine/ 8x8 bg tiles 16x16 sprite layer 16 colors 4096 bg tiles 6 audio channels ========================== ColecoVision https://colecoboxart.com/faq/FAQ05.htm