Skip to content

opal v1.0.1

Choose a tag to compare

@RealBitdancer RealBitdancer released this 09 Jul 03:52
· 8 commits to main since this release

Fixed

  • Two operator channels ignored the connection bit (C0 bit 0) and always played serial FM.
    Additive instruments are additive again.
  • Enabling four operator mode via register 0x104, or writing C0 on the primary channel of a
    pair, never installed the operator routing. Only a C0 write on the secondary channel did.
  • Four operator connection modes 2 and 3 used wrong operator topologies. All four modes now
    match the YMF262 algorithms.
  • Disabling four operator mode left both channels of the pair wired as halves of the old
    four operator channel.
  • Note select (register 08 bit 6) picked the wrong F-Number bit for the key scale number,
    which skewed KSR and KSL rates. The value is also latched on frequency writes now, so
    changing NTS no longer rescales notes already sounding.
  • An A0 write to a four operator primary recomputed the secondary key scale number from the
    secondary octave instead of inheriting the primary value.
  • OPL3 waveforms 4 to 7 were folded back to 0 to 3 the moment OPL3 mode switched off. The
    hardware keeps playing the stored waveform, so opal does too.

Changed

  • The status register now uses the hardware layout. Bit 7 is IRQ, bit 6 timer 1 overflow,
    bit 5 timer 2 overflow, and flags persist until a reset write to register 4 instead of
    clearing on read.
  • The Opal_Pan comment described a channel number multiplied by 256. The function wants a
    plain channel index 0 to 17 and the comment now says so.
  • The README no longer lists OPL2 waveform select as a feature. The enable bit is stored
    and ignored, since the YMF262 ignores it too.