Notable changes since 0.9.0:
- Genesis CRAM dots are now emulated
- Significantly improved performance for Genesis and Sega CD, and to a lesser extent 32X
- Genesis / Sega CD / 32X audio low-pass filter cutoff freqencies are now configurable
- Lots of bugfixes for every emulated system, particularly Genesis
Save states are not compatible with previous versions.
Full changelog below
New Features
- (Genesis) CRAM dots are now emulated
- (Genesis / Sega CD) Audio low-pass filter cutoff frequencies are now configurable
- (Genesis) New option to apply a second-order low-pass filter only to YM2612 audio output, which should be similar to the audio circuitry in later Model 2 consoles (when used in combination with a first-order filter applied to all audio output)
- (Genesis) Added an aspect ratio "Auto" option (now default) that will function as either NTSC (8:7 / 32:35 PAR) or PAL (11:8 / 11:10 PAR) based on whether the emulator is running in NTSC or PAL mode
- (Genesis) Added an option for whether to emulate YM2612 or YM3438 busy flag behavior, which affects audio in a few games (e.g. Earthworm Jim and Hellfire)
- There is also an Always 0 option that is less accurate to hardware but produces the "correct" behavior for both of these games
- (SMS / Game Gear) Added a hardware region "Auto" setting that attempts to auto-detect region from the cartridge header (#214)
- (SMS) Added the option to boot from a BIOS rather than booting directly into the game
- (SMS / Sega CD) Added the ability to boot directly into the BIOS with no cartridge/disc inserted
- (NES) Added an option to disable vertical overscan cropping in NTSC mode (i.e. display in 256x240 instead of 256x224)
- Added an audio option to mute all emulator audio output (#248)
- Added an option to configure the initial window size when not running in fullscreen (#409)
- GUI: Added a new File menu button and hotkey to quickly open the most recently opened ROM file (#248)
Multi-System Fixes
- Fixed the emulator not reading gamepad inputs while the window does not have focus (#248)
- Fixed the GUI sometimes segfaulting when you close the main GUI window while an emulator is running
- The GUI window now remembers its size when the application is closed and reopened
- Initial window size now takes aspect ratio into account
Genesis / Mega Drive Fixes
- Improved both behavioral accuracy and timing accuracy of VDP ports, VDP DMA, and the VDP FIFO; this fixes a number of bugs
- Fixes Clue sometimes having corrupted main menu graphics (#159)
- Fixes Gaiares having flickering text on the title screen
- The emulator now fully passes the VDPFIFOTesting test ROM (#103)
- Fixes incorrect color palettes in some demos (#183)
- Fixes a glitch on the title screen of the homebrew Rick Dangerous 2 port (#102)
- Significantly improved performance due primarily to optimizations related to the YM2612 code
- Lots of mostly minor fixes to YM2612 sound chip emulation
- Fixed multiple timing precision bugs with the LFO and hardware timers
- Fixed vibrato / LFO FM calculations incorrectly using 11-bit precision instead of 12-bit
- Fixed vibrato incorrectly affecting how detune computes key code
- Fixed the accurate quantization option incorrectly quantizing channel outputs instead of carrier outputs
- More accurate emulation of DAC crossover distortion (ladder effect)
- Added emulation for operator evaluation pipelining in channel output calculations
- Fixed the DAC channel not respecting the channel 6 panning bits
- Fixed a Z80 timing bug caused by a VDP DMA "optimization" introduced in v0.8.2; this fixes video/audio desync in Overdrive 2
- Fixed behavior when the controller port TH pin is set to input; this fixes controls not working properly in Micro Machines (#226)
- Improved display behavior when games switch between H32 and H40 modes shortly after the start of VBlank; this fixes glitchy frames in Bugs Bunny in Double Trouble (#252)
- Fixed the window nametable address not being masked correctly in H40 mode; this fixes glitchy graphics on some screens in Cheese Cat-Astrophe Starring Speedy Gonzales (#253)
- Added a 1-instruction delay to handling HINT if a game enables HINTs while an HINT is pending; this fixes Fatal Rewind / The Killing Game Show failing to boot (#254)
- Added a 1 CPU cycle delay on every 68000 access to the Z80 side of the bus; this fixes broken audio in Pac-Man 2: The New Adventures (#255)
- Fixed several major bugs in how the V counter and the VBlank status flag are emulated in interlaced modes; this fixes Combat Cars freezing in 2P mode as well as occasional sprite glitches in Sonic the Hedgehog 2's Vs. mode (#258)
- Fixed the Z80 RESET line not resetting the YM2612 in addition to the Z80; this fixes audio glitches in Fantastic Dizzy (#397)
- Fixed the emulator not correctly initializing cartridge SRAM when the cartridge header specifies less common RAM types; this fixes the Mega Drive Mode 7 demo not working (#250)
- Fixed the interlaced ODD flag in the VDP status register not toggling correctly in single-screen interlaced mode if deinterlacing is enabled (#354)
- Fixed a number of European games with bad region headers defaulting to NTSC mode instead of PAL (#176 / #394)
- The 68000 interrupt handler now takes 54 CPU cycles instead of 44; this is more accurate and fixes a minor glitch in Overdrive (#419)
- Fixed the emulator crashing if a game reads from Z80 $7F0C-$7F0F or writes to Z80 $7F08-$7F0F
- When horizontal border rendering is enabled, fixed the right border rendering as the wrong color if the backdrop color is changed between lines (Overdrive 1 does this on some screens)
- The non-linear VDP color scale option is now enabled by default because it is more accurate to actual hardware's video output (#249)
Sega CD Fixes
- Fixed the CDD reset register ($FF8001) not correctly resetting CDD state; this fixes the Pier Solar enhanced audio disc failing to boot in SCD Mode 2 (#215)
- Fixed the CUE parser being too strict around parsing leading whitespace on lines (#418)
- Fixed some bugs related to changing discs while a game is running (particularly when using a Model 1 BIOS)
- Implemented more accurate memory mirroring in sub CPU memory map; this fixes excessive error logging in WWF: Rage in the Cage (#216)
32X Fixes
- Fixed the Genesis VDP and 32X VDP frames incorrectly lining up exactly when the Genesis VDP is in H32 mode; this fixes some minor graphical issues in NFL Quarterback Club (#230)
- Files with .bin extensions are now auto-detected as 32X instead of Genesis if they contain the 32X security program at the expected location in ROM (#259)
- Horizontal blur shaders now scale the effect properly when the Genesis VDP is in H32 mode
- The "apply Genesis low-pass filter to PWM" setting is now on by default because that seems to be more accurate to actual hardware's audio circuitry
- Fixed initial window size being slightly too small to fit integer-height-scaled output when the Genesis VDP is in H32 mode (#420)
Master System / Game Gear Fixes
- Somewhat improved VDP-related timings; this fixes glitchy cutscene graphics in Madou Monogatari I (#213) and fixes most tests in the SMSVDPTest test ROM (#190)
- (SMS) Fixed sprites never displaying on the topmost line of active display
- (SMS) Fixed the "crop vertical borders" setting incorrectly cropping the top 16 lines and bottom 16 lines in 224-line mode
- (Game Gear) The region bit in I/O port $00 now properly reflects the hardware region instead of being hardcoded to 1; this fixes the Start button not working on the title screen of Pop Breaker (#214)
- (Game Gear) Fixed the viewport Y offset being 16 lines off in 224-line mode; this fixes glitchy graphics in Micro Machines (#221)
- (Game Gear) I/O port $01 is now read/write; this fixes Primal Rage freezing at the title screen (#220)
NES Fixes
- Improved accuracy of Namco 163 expansion audio emulation (used by Megami Tensei II among other games)
- Cartridge PRG RAM is now initialized to all 1s instead of all 0s; this fixes Famicom Jump II crashing on first boot (#280)
- CNROM cartridges (iNES mapper 3) are now allowed to have PRG RAM; this fixes Hayauchi Super Igo effectively freezing upon starting a game (#273)
- Fixed MMC5 PRG RAM bank mapping in MMC5 cartridges that have two 8KB RAM chips; this fixes Uncharted Waters being completely broken upon starting a game (#275)
- Added support for NROM cartridges (iNES mapper 0) with only 8KB of PRG ROM; this fixes Galaxian failing to boot (#261)
- Fixed a VRC4 mapper bug where the highest bit of the 9-bit CHR ROM bank number was not working correctly; this fixes corrupted graphics in World Hero (#283)
- Fixed the DMC sample address incorrectly defaulting to $8000 at power-on instead of $C000 (#292)
- PPU palette RAM is now initialized to the palette in the power_up_palette test ROM instead of all 0s
- Fixed iNES header parsing reading the wrong byte when checking for the PAL bit; this fixes the Populous prototype incorrectly defaulting to NTSC instead of PAL (#391)
- OAMADDR is now reset to 0 on every line during rendering; this fixes Ghostbusters II freezing after the title screen (#421)
SNES Fixes
- Fixed incorrect cartridge SRAM mapping for LoROM cartridges with more than 32 KB of SRAM; this fixes Kaite Tsukutte Asoberu Dezaemon failing to boot (#234)
- Fixed Mode 7 incorrectly clipping the scrolled center point to signed 11-bit rather than signed 10-bit; this fixes glitched Mode 7 graphics in Kaite Tsukutte Asoberu Dezaemon
- Fixed incorrect emulation of interactions between offset-per-tile modes and BG1/BG2 horizontal scrolling; this fixes glitchy graphics in some stages in The Adventures of Batman & Robin (#246)
- WRAM contents are now randomized at power-on; this fixes major bugs in Power Drive and the European version of PGA Tour Golf (#188 / #235)
- Cartridge SRAM is now initialized to all 1s instead of all 0s; this fixes Ken Griffey Jr. Presents Major League Baseball crashing when you select Season mode (#231)
- Fixed incorrect mapping of the DSP-1 port mirrors in LoROM cartridges; this fixes the DSP-1 tech demo prototype not working properly (#233)
- Fixed some revisions of Dungeon Master being incorrectly detected as DSP-1 instead of DSP-2
Game Boy [Color] Fixes
- The MBC5 ROM bank is now initialized to 1 instead of 0; this fixes Project S-11 failing to boot (#410)
- Cartridge SRAM is now initialized to all 1s instead of all 0s