home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / midas / s3m.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-06  |  5KB  |  189 lines

  1. {*      S3M.PAS
  2.  *
  3.  * Scream Tracker 3 Module Player, v1.10
  4.  *
  5.  * Copyright 1994 Petteri Kangaslampi and Jarno Paananen
  6.  *
  7.  * This file is part of the MIDAS Sound System, and may only be
  8.  * used, modified and distributed under the terms of the MIDAS
  9.  * Sound System license, LICENSE.TXT. By continuing to use,
  10.  * modify or distribute this file you indicate that you have
  11.  * read the license and understand and accept it fully.
  12. *}
  13.  
  14. unit S3M;
  15.  
  16.  
  17. interface
  18.  
  19.  
  20.  
  21. {****************************************************************************\
  22. *       struct s3mChannel
  23. *       -----------------
  24. * Description:  S3M player internal channel structure
  25. \****************************************************************************}
  26.  
  27. type
  28.     s3mChannel = Record
  29.         note : byte;
  30.         int : byte;
  31.         vol : byte;
  32.         cmd : byte;
  33.         info : byte;
  34.         flags : byte;
  35.  
  36.         sample : byte;
  37.         volume : byte;
  38.  
  39.         period : word;
  40.         snote : byte;
  41.         preinfo : byte;
  42.         toperi : word;
  43.         notepsp : byte;
  44.         retrigc : byte;
  45.  
  46.         status : byte;
  47.  
  48.         vibcmd : byte;
  49.         vibpos : byte;
  50.  
  51.         volbar : byte;
  52.  
  53.         trefl : byte;
  54.         trecnt : byte;
  55.     end;
  56.  
  57.  
  58.  
  59.  
  60. type
  61.     Ppointer = ^pointer;
  62.     Pword = ^word;
  63.     Pinteger = ^integer;
  64.     Pchar = ^char;
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72. {****************************************************************************\
  73. *
  74. * Function:     s3mDetectChannels(module : pointer; numChns : Pword) :
  75. *                   integer;
  76. *
  77. * Description:  Detects the number of channels in a Scream Tracker 3 module
  78. *
  79. * Input:        module : pointer        pointer to module structure
  80. *               numChns : Pword         pointer to channel number variable
  81. *
  82. * Returns:      MIDAS error code.
  83. *               Number of channels in module stored in numChns^.
  84. *
  85. \****************************************************************************}
  86.  
  87. function s3mDetectChannels(module : pointer; numChns : Pword) : integer;
  88.  
  89.  
  90.  
  91.  
  92. {***************************************************************************\
  93. *
  94. * Function:     s3mFindUsedInsts(module : pointer; used : pointer) : integer;
  95. *
  96. * Description:  Finds which instruments are used in a Scream Tracker 3 module.
  97. *
  98. * Input:        module : pointer        Pointer to module structure. At least
  99. *                                       the patterns must have been loaded
  100. *               used : pointer          Pointer to instruments used array -
  101. *                                       one byte per instrument. Set to 1 if
  102. *                                       instrument is used, 0 if not.
  103. *
  104. * Returns:      MIDAS error code.
  105. *
  106. \***************************************************************************}
  107.  
  108. function s3mFindUsedInsts(module : pointer; used : pointer) : integer;
  109.  
  110.  
  111. function s3mIdentify(header : pointer; recognized : Pinteger) : integer;
  112. function s3mInit(SD : pointer) : integer;
  113. function s3mClose : integer;
  114. function s3mPlayModule(module : pointer; firstSDChannel, numSDChannels,
  115.     loopStart, loopEnd : word) : integer;
  116. function s3mStopModule : integer;
  117. function s3mSetInterrupt : integer;
  118. function s3mRemoveInterrupt : integer;
  119. function s3mPlay : integer;
  120. function s3mSetPosition(npos : word) : integer;
  121. function s3mGetInformation(info : pointer) : integer;
  122.  
  123.  
  124.  
  125. procedure mpS3M;                        { S3M Module Player structure. }
  126.  
  127.  
  128.  
  129. implementation
  130.  
  131.  
  132. USES  Errors, mGlobals, mMem, EMS, MPlayer, SDevice, Timer, mFile
  133. {$IFDEF REALVUMETERS}
  134.     ,VU
  135. {$ENDIF}
  136.     ;
  137.  
  138.  
  139. function s3mLoadModule(fileName : Pchar; SD : pointer; module : Ppointer) :
  140.     integer; external;
  141. function s3mFreeModule(module : pointer; SD : pointer) : integer; external;
  142. {$L S3MLOAD.OBJ}
  143.  
  144.  
  145. function s3mDetectChannels(module : pointer; numChns : Pword) : integer;
  146.     external;
  147. function s3mFindUsedInsts(module : pointer; used : pointer) : integer;
  148.     external;
  149. function s3mIdentify(header : pointer; recognized : Pinteger) : integer;
  150.     external;
  151. function s3mInit(SD : pointer) : integer; external;
  152. function s3mClose : integer; external;
  153. function s3mPlayModule(module : pointer; firstSDChannel, numSDChannels,
  154.     loopStart, loopEnd : word) : integer; external;
  155. function s3mStopModule : integer; external;
  156. function s3mSetInterrupt : integer; external;
  157. function s3mRemoveInterrupt : integer; external;
  158. function s3mPlay : integer; external;
  159. function s3mSetPosition(npos : word) : integer; external;
  160. function s3mGetInformation(info : pointer) : integer; external;
  161. procedure mpS3M; external;
  162. {$L S3M.OBJ}
  163.  
  164.  
  165. {****************************************************************************\
  166. *       enum s3mFunctIDs
  167. *       ----------------
  168. * Description:  ID numbers for Scream Tracker 3 Module Player functions
  169. \****************************************************************************}
  170.  
  171. const
  172.     ID_s3mIdentify = ID_s3m;
  173.     ID_s3mInit = ID_s3m + 1;
  174.     ID_s3mClose = ID_s3m + 2;
  175.     ID_s3mLoadModule = ID_s3m + 3;
  176.     ID_s3mFreeModule = ID_s3m + 4;
  177.     ID_s3mPlayModule = ID_s3m + 5;
  178.     ID_s3mStopModule = ID_s3m + 6;
  179.     ID_s3mSetInterrupt = ID_s3m + 7;
  180.     ID_s3mRemoveInterrupt = ID_s3m + 8;
  181.     ID_s3mPlay = ID_s3m + 9;
  182.     ID_s3mSetPosition = ID_s3m + 10;
  183.     ID_s3mGetInformation = ID_s3m + 11;
  184.     ID_s3mDetectChannels = ID_s3m + 12;
  185.     ID_s3mFindUsedInsts = ID_s3m + 13;
  186.  
  187.  
  188. END.
  189.