# jgenesis Cross-platform multi-console emulator supporting a number of 8-bit and 16-bit gaming consoles. Linux, Windows, and web (WASM) are officially supported. Other platforms may work but have not been tested. ## Features * Emulation for the following consoles: * Sega Genesis / Mega Drive * Sega CD / Mega CD * Sega 32X / Mega 32X * SG-1000 * Sega Master System / Mark III * Game Gear * Nintendo Entertainment System (NES) / Famicom * Super Nintendo Entertainment System (SNES) / Super Famicom * Game Boy / Game Boy Color * Game Boy Advance * GPU-based renderer with integer prescaling and optional linear interpolation * Configurable pixel aspect ratio for each console with several different options: accurate to original hardware/TVs, square pixels, and stretched to fill the window * Support for the Sega Master System FM sound unit expansion * Support for the Sega Genesis SVP chip, used in _Virtua Racing_ * Support for the most common NES mappers, plus a number of less common mappers * Support for most SNES coprocessors (e.g. Super FX, SA-1, DSP-1, CX4, S-DD1, SPC7110) * Support for both 3-button and 6-button Genesis controllers * Support for keyboard controls and DirectInput gamepad controls * Save states, fast forward, and rewind * Some simple horizontal blur and naive anti-dither shaders for blending dithered pixel patterns, which were extremely common on these consoles due to limited color palettes and lack of hardware-supported transparency * Optional CPU overclocking for Sega Master System, Game Gear, and Genesis emulation * Optional 2-4x GSU overclocking for SNES Super FX games * Can run the Titan Overdrive and Titan Overdrive 2 demos for the Mega Drive ## Dev Builds The GitHub Actions workflow compiles release builds on every commit, which will stay available for 90 days afterwards: https://github.com/jsgroth/jgenesis/actions Note that these builds are not always well-tested and may have bugs. ## Build & Run See [BUILD.md](BUILD.md) ## Screenshots ![Screenshot from 2023-08-27 22-47-13](https://github.com/jsgroth/jgenesis/assets/1137683/d2ec2bc6-de7d-4ff1-98c5-10a0c4db7391) ![Screenshot from 2023-08-27 22-53-09](https://github.com/jsgroth/jgenesis/assets/1137683/05a7c309-0706-4627-9b45-313f259cc494) ![Screenshot from 2023-09-27 19-36-19](https://github.com/jsgroth/jgenesis/assets/1137683/2684be78-c2db-4af3-81dc-4325eb25f440) ![Screenshot from 2023-09-29 17-12-35](https://github.com/jsgroth/jgenesis/assets/1137683/69ab2eb5-1a5f-42e3-abac-c660b5c359e7) ![Screenshot from 2023-11-06 21-42-49](https://github.com/jsgroth/jgenesis/assets/1137683/437bd22f-f1ec-43a2-9340-62c042d489de) ![Screenshot from 2023-08-27 22-45-06](https://github.com/jsgroth/jgenesis/assets/1137683/7d1567ce-39ba-4645-9aff-3c6d6e0afb80) ![Screenshot from 2023-08-27 22-45-32](https://github.com/jsgroth/jgenesis/assets/1137683/90d96e18-57a8-4327-8d9d-385f55a718b3) ## Sources ### Sega Master System / Game Gear * Z80 User Manual: * The Undocumented Z80 Documented: http://www.myquest.nl/z80undocumented/z80-documented-v0.91.pdf * Sega Master System architecture: * Sega Master System / Game Gear documentation: * YM2413 application manual: * Reverse engineering of the YM2413: ### Sega Genesis / Mega Drive * M68000 Family Programmer's Reference Manual: * Motorola 68000 Opcodes: http://goldencrystal.free.fr/M68kOpcodes.pdf * Mega Drive / Genesis architecture: * Mega Drive official documentation: * Sega Genesis hardware notes by Charles MacDonald: * Aggregating Community Research: * Mega Drive video timings: * Genesis ROM header reference: * Genesis - Going beyond 4MB: * SEGA Mega Drive / Genesis hardware notes by Kabuto: * Huge thread discussing and detailing the YM2612: * Genesis EEPROM games: * SVP documentation by notaz, as well as earlier documentation work by Tasco Deluxe: ### Sega CD / Mega CD * Mega CD official documentation: * ECMA-130 standard: * Thread discussing details of Mega CD emulation: ### 32X * 32X official documentation: * SH-1/SH-2 programming manual: * SH7604 hardware manual: ### NES * 6502 Instruction Set: * 6502 Hardware Manual: * Documentation for the NMOS 65xx/85xx Instruction Set: * Nintendo Entertainment System (NES) architecture: * NESDev NES reference guide: ### SNES * A 65816 Primer: * Super Nintendo architecture: * fullsnes - nocash SNES hardware specifications: * Anomie's SNES documents: * SFC Development Wiki: ### Game Boy / Game Boy Color * Game Boy CPU (SM83) Instruction Set: * Pan Docs: * Game Boy Complete Technical Reference: * Gameboy Sound Hardware: * The Cycle-Accurate Game Boy Docs: * This contains some outdated/incorrect information but is still useful ### Game Boy Advance * Game Boy Advance Architecture: * ARM7TDMI Technical Reference Manual: * GBATEK - GBA/NDS technical info: * Tonc - GBA programming guide: * mGBA blog: * NanoBoyAdvance hardware documentation: