jgenesis

Cross-platform multi-console emulator supporting a number of 8-bit and 16-bit gaming consoles.

Features


  • Emulation for the following consoles:
    • Sega Genesis / Mega Drive
    • Sega CD / Mega CD
    • Sega Master System / Mark III
    • Game Gear
    • Nintendo Entertainment System (NES) / Famicom
    • Super Nintendo Entertainment System (SNES) / Super Famicom
    • Game Boy / Game Boy Color

  • 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 2x CPU overclocking for Sega Master System and Game Gear 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


TODOs:


  • Support multiple Sega CD BIOS versions in GUI and automatically use the correct one based on disc region
  • Investigate and fix a few minor issues, like the EA logo flickering for a single frame in Galahad
  • Support 24C64 EEPROM chips (used only in Frank Thomas Big Hurt Baseball and College Slam)


v0.7.0

Features


  • Added an emulation core for the Game Boy and Game Boy Color
    • This is somewhat based on my standalone GB/GBC emulator but is mostly a rewrite which should be more accurate
    • Supports MBC1/MBC2/MBC3/MBC5 cartridges, including the MBC3 real-time clock (used by Pokemon Gold/Silver/Crystal Version and 2 other games)
    • Supports a few different color palettes for GB mode and a few different color correction options for GBC mode
    • Supports an option to make games think they're running on a Game Boy Advance, which causes some GBC games to unlock additional content and/or use brighter colors (e.g. Shantae, The Legend of Zelda: Oracle of Ages/Seasons, Mega Man Xtreme 2)



Fixes/Improvements



  • (All) Updated published release builds to target x86-64-v2 CPUs instead of x86-64 CPUs (rustc's default for the x86_64 arch)
    • This should slightly improve performance at the cost of the published builds no longer working on CPUs made prior to 2009 or so. Builds from source will still work on older CPUs

  • (Genesis) Fixed a bug where the interlaced mode check was reading bits 0-1 of VDP register #12 instead of bits 1-2; this fixes single-screen interlaced mode from behaving as double-screen interlaced mode, which caused extreme graphical corruption in anything that used it (fixes #17)
  • (Genesis / Sega CD) Minor performance improvements in the VDP code and the main Sega CD loop
  • (SNES) Improved performance of the core PPU render loop, particularly when color math is enabled
  • (SNES) Games that use real-time clock chips now save the real-time clock state in a separate .rtc file instead of appending it to the end of the SRAM save file
    • This only affects 2 games, Tengai Makyou Zero (Epson RTC-4513 chip) and Daikaijuu Monogatari II (S-RTC chip)



https://github.com/jsgroth/jgenesis