HardSID Development

Linux Version

Sidplay2-0.8 under went a redesign to allow it to be more flexible with respect to driving different SID hardware/emulations and as a result a new driver is required. When the code is finished it will be integrated into the main CVS repository here.

For sidplay2-0.7 a patch has been supplied to the Linux driver group to complete the conversion to HardSID support.

Linux HardSID drivers are available from http://hardsid.sourceforge.net/.

Windows Version

At this time the code runs using an unofficial experimental driver. However, the extra functionality provided by the driver is planned to be intergrated into the official versions.

Any problems resulting from the use of these new drivers SHOULD NOT be reported to technial support at the offical hardsid homepage but instead reported to the forums here. These drivers will only operate once HardSIDConfig.exe has been run. This utilily can be found in the official driver release. Support for auto muting/un-muting of the cd-audio/line-in channel is NOT provided. You will manually have to un-mute it the first time. The library supports the following:

  • Official library interface
  • Mute extensions
  • Cycle exact extensions
  • Multiple cards (at any of the valid addresses)
  • Mixed card types (HardSID/Quattro)
  • HardSIDConfig
  • Real/Faked Reads
  • Hardsid drivers for sidplay2 are available here http://sidplay2.sourceforge.com/.
    Official drivers can be obtained from http://www.hardsid.com/.

    The interface provided by these drivers may under go further change until they are integrated into the offical drivers. One such change would be to provide locking features to allow multiple programs to share SIDs safely.

    The hardsid interfaces currently provided by these new DLLs are as follow:

  • void WINAPI HardSID_Delay (BYTE deviceID, WORD cycles);
    Forces a delay between a read and/or write access
  • BYTE WINAPI HardSID_Devices (void);
    Returns the number of available SID devices

  • void WINAPI HardSID_Filter (BYTE deviceID, BOOL filter);
    Disables HardSIDs internal filter

  • void WINAPI HardSID_Flush (BYTE deviceID);
    Delete the contents of any fifos/buffers used to drive the SID

  • void WINAPI HardSID_Mute (BYTE deviceID, BYTE channel, BOOL mute);
    Mute a single SID channel

  • void WINAPI HardSID_MuteAll (BYTE deviceID, BOOL mute);
    Mute all SID channels

  • void WINAPI HardSID_Reset (BYTE deviceID);
    Delete any buffers/fifos and immediately reset the SID

  • BYTE WINAPI HardSID_Read (BYTE deviceID, WORD cycles, BYTE SID_reg);
    Read a value from the SID. Reads from write only addresses are faked

  • void WINAPI HardSID_Sync (BYTE deviceID);
    Play the entire contents of a buffer/fifos for a particular SID. This cause all driven SIDs to sync up there buffers by an equivalent amount of time

  • void WINAPI HardSID_Write (BYTE deviceID, WORD cycles, BYTE SID_reg, BYTE data);
    Write a value to the SID. Writes to read only addresses are faked

  • WORD WINAPI HardSID_Version (void);
    Returns the DLLs version number. This is currently 16 bits where the top 8 bits and bottom 8 bits form the major and minor version respectively
  • Offical hardsid interface (depreciated):

  • BYTE WINAPI GetHardSIDCount (void);
  • void WINAPI InitHardSID_Mapper (void);
  • void WINAPI MuteHardSID_Line (BOOL mute);
  • BYTE WINAPI ReadFromHardSID (BYTE deviceID, BYTE SID_reg);
  • void WINAPI SetDebug (BOOL enabled);
  • void WINAPI WriteToHardSID (BYTE deviceID, BYTE SID_reg, BYTE data);
  • Rainers Un-offical extensions (depreciated):

  • WORD WINAPI GetDLLVersion (void);
  • void WINAPI MuteHardSID (BYTE deviceID, BYTE channel, BOOL mute);
  • void WINAPI MuteHardSIDAll (BYTE deviceID, BOOL mute);