sgb02
Pre-release
Pre-release
- Fixed stack overflows due to delayed interrupts by masking OAM STAT interrupt when sprites are disabled.
- Updated STAT interrupt code to make match/oam coincident.
- Added MBC1M support. The detection is a hack. It's possible a MBC1 cart is incorrectly detected as MBC1M.
- Fixed popping noises and some other APU bugs by rewriting output and handling unsigned->signed conversion better. Hopefully this is better than before.
- Updated wave sample buffer to only update on timer expiration.
- Updated audio output volume scaling to a closer but still crude approximation of the original SGB2.
- Added square channel register write side effects involving duty position. Sometimes used to creating ringing in output.
- Changed square channel duty cycle relative phase and inversion but may not matter.
- Added some of the APU envelope register write volume corner cases.
- Fixed RETI setting of IME by adding bypass. Exposes bugs in some games.
- Changed PPU pipeline to remove DRN wait.
- Changed interrupts to clean up code a bit.
- Added serial link transfer interrupt.
- Changed MCU bus availability to add more clocks. Speeds up save states a little bit.
- Fixed save state audio glitches by forcing APU writes to disable channels during HLT. There is a tradeoff between forcing all silent channels vs enabling channels with incorrect state.