v0.6.1
tl;dr: The Genesis core can now run the Titan Overdrive 2 demo
Features
- (Genesis) Implemented a whole bunch of features and fixes to get the Titan Overdrive 2 demo working
- Updated cartridge loading code to use the Super Street Fighter 2 mapper if the ROM header specifies its system as "SEGA SSF"; this fixes the demo from failing to boot
- Implemented support for the 128KB mode for VRAM writes, which enables byte-size writes to VRAM
- Implemented the VDP debug register, which enables a form of layer blending as well as limited rendering in the borders
- Fixed YM2612 address and data port writes to work like actual hardware, where there is really only one data port and the register group written depends on which address port was last written; this fixes FM synth channels 4 and 5 not playing correctly in most scenes
- Implemented approximate bus arbiter wait states for when the Z80 accesses the cartridge; this fixes the audio desyncing within a minute or two
- Implemented the "invalid" scroll size and horizontal scroll mode settings; this fixes the Voronoi circles effect
- Pretty much completely rewrote the sprite processing and rendering code to be more accurate to actual hardware; this fixes the 3D textured cube effect
- Implemented more accurate VDP FIFO queue timing; this fixes the plasma twisters effect
- Added options to render the horizontal and vertical borders instead of only rendering the active display area
- Implemented all of the border rendering shenanigans that the demo depends on for the arcade scene and the following fade-out
- Fixed a bug related to how per-two-cell vertical scrolling interacts with fine horizontal scrolling; this fixes garbage in the borders on some screens
Fixes
- (All) Fixed an issue where rewind was not taking into account config changes made since the previous state was written to the rewind buffer
- This was very noticeable if you changed aspect ratio and then immediately started rewinding. After rewind, the new aspect ratio would not take effect again until you made another config change
- (Genesis) Fixed writes to VDP register 7 (background color) taking effect after the next rendered scanline instead of taking effect immediately; this fixes Titan Overdrive 1's double helix screen having a briefly flickering line at the bottom of the screen during the start of the effect