
 TEhRg[֐ɂ

void slInitSound((Uint8 *)drv , (Uint32)drvsz , (Uint8 *)map , (Uint32)mapsz)
  @\ : TEhhCo[̃ZbgƁATEhRg[bot(lbUWOOO)
	 ̏s܂B
	 TEhhCo[ o[WP.QX ȍ~ɑΉĂ܂̂ŁA
	 ȑÕTEhhCo[ł͎sł܂B
	 Cu̒ sddrv_129i  sizeof_129i pӂĂ܂̂ŁA
	 gp悤ɂĂB

Bool slBGMOn((Uint16)Song , (Uint8)Prio , (Uint8)Volume , (Uint8)Rate)
  @\ : afl̉tJn܂Bafl͏ɔǗԍOgp܂B
	 Volume  OPQV͈̔͂ARate ͂ Volume ւ̃sb`w肵܂B
	 RateɂOw肷Ƃɂ̉ʂɂȂ܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slBGMPause()
  @\ : afl̉tꎞ~܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slBGMCont()
  @\ : ꎞ~ĂaflĊJ܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slBGMOff()
  @\ : afl̉t~܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slBGMFade((Uint8)Volume , (Uint8)Rate)
  @\ : afl̉tʂw肳ꂽ傫ɏXɕύX܂B
	 RateɂOw肷Ƃɂ̉ʂɂȂ܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slBGMTempo((Sint16)Tempo)
  @\ : afl̃e|ύX܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slBGMStat()
  @\ : aflĐł邩𒲂׃tOԂ܂B
	 Đ(|[Ył)̏ꍇɂ͂PA~Ă΂OԂ܂B

Bool slSoundAllOff()
  @\ : ׂẴTEhV[PX~܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slDSPOff()
  @\ : cro~܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSndVolume((Uint8)Volume)
  @\ : TEho͑Ŝ̉ʂZbg܂B
	 Volume  OPQV(AʂRrbg͖)w肵܂B
	 ܂AȌꍇA͏o͂܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Uint8 slSequenceOn((Uint16)Song , (Uint8)Prio , (Uint8)Volume , (Sint8)Pan)
  @\ : ʉw肳ꂽ(o)牉t܂B
	 Volume͂OPQV͈̔́Ao Left -127 ~ 0 ~ +127 ͈̔͂Ŏw肵
	 (An[hEGAło͂RQiKł邽߁AʂRrbg)
	 -128 w肵ꍇAo̐ݒ͖܂B
	 R}hobt@yсAǗobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B
	 ʏȈꍇɂ́AǗԍԂ܂B

Bool slSequenceOff((Uint8)Seqnm)
  @\ : w肳ꂽʉ̉t~܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSequenceFade((Uint8)Seqnm , (Uint8)Volume , (Uint8)Rate)
  @\ : w肳ꂽʉɑ΂{[Rg[܂B
	 ǗԍAʁAsb`w肵܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSequenceTempo((Uint8)seqnm , (Sint16)Tempo)
  @\ : w肳ꂽʉɑ΂e|ύX܂B
	 ǗԍAe|w肵܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSequencePause((Uint8)seqnm)
  @\ : w肳ꂽʉ̉tꎞ~܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSequenceCont((Uint8)seqnm)
  @\ : ꎞ~ĂʉĊJ܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSequencePan((Uint8)seqnm , (Uint8)Pan)
  @\ : ʉ̕w肵܂B
	 o Left -127 ~ 0 ~ +127 ͈̔͂Ŏw肵܂(ʂRrbg͖)B
	 -128 w肵ꍇAo̐ݒ͖܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSequenceReset((Uint8)seqnm)
  @\ : w肳ꂽԍ̃{[Ae|Ao܂B
	 {[͍őAe|͒ʏAo͔񐧌ƂȂ܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSequenceStat((Uint8)seqnm)
  @\ : w肳ꂽԍ̃V[PXĐł邩𒲂׃tOԂ܂B
	 Đ(|[Ył)̏ꍇɂ͂PA~Ă΂OԂ܂B

void *slSndMapChange((Uint8)map)
  @\ : JgTEh}bvύX܂B
	 TEhf[^]A[N̈̓]ς݃rbgZbgĂB
	 ߂l̓p[^ZbgR}hobt@̃AhXłB
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B
  )
	typedef struct sndmap{
	    Sint8	ID ;
	    Sint8	ST_Addr[3] ;
	    Sint8	LdFlag ;
	    Sint8	AR_Size[3] ;
	}SOUNDMAP ;

	void init_sound(){
	    SOUNDMAP	*smptrs , *smptrd ;

	    slWaitSound(slSndMapChange(0)) ;	/* Jg}bv؂ւ̂҂ */
	    smptrs = (SOUNDMAP *)soundmap ;
	    smptrd = (SOUNDMAP *)SoundCTRL ;
	    while(smptrs->ID >= 0){
		smptrd->LdFlag = -1 ;		/* Map Load Flag */
		smptrs++ ;
		smptrd++ ;
	    }
	    slDMACopy(sounddat , (void *)(SoundSeqBuf) , sizeof(sounddat)) ;
	}

Uint8 slSndSeqNum()
  @\ : 󂢂ĂTEhV[PXԍԂ܂B󂫂Ȃꍇɂ͂OAI
	 ꍇɂ͂P`VԂ܂B

Sint8 slSndPCMNum((Uint8)mode)
  @\ : 󂢂Ăobl`lԍԂ܂B󂫂Ȃꍇɂ́|PAI
	 ꍇɂ͂O`VԂ܂B
	 mode ɂ _Stereo ܂ _Mono w肵܂B
	 obl͂W܂Ŗ炷Ƃł܂AXeIĐsꍇAQKv
	 Ȃ܂̂ŁAS炵ĂȂĂAWɂȂĂ邱Ƃ܂̂
	 ӂĂB

void slWaitSound((void *)addr)
  @\ : w肳ꂽAhX̃f[^OɂȂ܂ő҂܂B
	 TEhhCoAt@NVsƂ\܂B

Bool slCDDAOn((Uint8)LLevel , (Uint8)RLevel , (Sint8)LPan , (Sint8)RPan)
  @\ : bc-c/`gpۂ́AʁAw肵܂B
	 Level  O(Off)PQV(ʂSrbg͖)Ao
	 Left -127 ~ 0 ~ +127 Right (AʂRrbg͖) Ŏw肵܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slCDDAOff()
  @\ : bc-c/`ɂo͂߂܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Sint8 slPCMOn(PCM *pdat, (void *)data , (Uint32)size)
  @\ : oblɂ鉹y(ʉ)̍Đs܂B
	 data  Đp̂oblf[^e[uŁAXeȈꍇɂ͉E`lp
	 `lpƂOƌ㔼ƂɕăZbgĂĂB

	+---------------+
	|		|
	|  qf[^	|
	| (frame * datasize byte)
	+---------------+
	|		|
	|  kf[^	|
	|		|
	+---------------+

  obl^̃f[^͈ȉ̂悤Ȍ`̍\̂łB

    typedef struct {
	Uint8	mode ;		/* Đ[h */
	Uint8	channel ;	/* Đ`l */
	Uint8	level ;		/* Đx */
	Sint8	pan ;		/* Đp */
	Uint16	pitch ;		/* Đsb` */
	Uint8	eflevelR ;	/* GtFNgx(EyсAmp) */
	Uint8	efselectR ;	/* GtFNgԍ(EyсAmp) */
	Uint8	eflevelL ;	/* GtFNgx(p) */
	Uint8	efselectL ;	/* GtFNgԍ(p) */
    } PCM ;

  Đ[h͈ȉ̂̂Zbg܂B
	<_Stereo ܂ _Mono> yсA<_PCM16Bit ܂ _PCM8Bit>
  Đ`l slPCMOn ֐Zbg܂(ʏI̖߂l)B
  Đx O`PQV(ʂSrbg͖) AĐp
	Left -127 ~ 0 ~ +127 Right (ʂRrbg͖) Zbg܂B
  Đsb`͂PUrbgŁASSjgɑ΂郌[gw肵܂B
  GtFNgx O`VAGtFNgԍ͂O`PTw肵ĂB

  ֐̖߂l͒ʏȈꍇO`VAR}hobt@Ȃꍇ|PA
  obl̃`l󂢂ĂȂꍇ|QAoblp̃obt@Ȃꍇ
  |RԂ܂B
  ̊֐ŊJnꂽoblĐ̓f[^IĒ~܂B

   : Đf[^ vq`l-k ̗̈ɂꍇAȉ̂悤Ȑ
	 ܂B
   Đf[^͋AhXzuĂ̂ƂĈB
     (AhX̉ʂPrbgOɂĎgp܂)
     -> AhXɔzuĉB

   Đf[^XeIŁAWrbg̏ꍇA`l̃f[^Ah
     XzuĂ̂ƂB
     -> TvɂĉB

   Đf[^WPXQt[ȏ̏ꍇɁAobt@bsOۂ
     mCYo邱ƂB
     -> WPXQt[ƂɃf[^PoCgdĒ`ĉB
	A擪͂PTRU(UOOg)t[ItZbgꂽƂ납n
	܂BāAdŏ̃f[^͂UUTU(P`OOg)̃f[
	^ƂȂ܂B

Bool slPCMOff(PCM *pdat)
  @\ : w肳ꂽ`l̂oblĐ𒆎~܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slPCMParmChange(PCM *pdat)
  @\ : oblĐp̊ep[^̕ύX܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slPCMStat(PCM *pdat)
  @\ : w肳ꂽ`Fl̂oblĐł邩ׁAtOԂ܂B
	 Đł΂PAIĂ΂OԂ܂B

Bool slSndEffect((Uint8)effect)
  @\ : croɂTEhGtFNg؂ւ܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSndMixChange((Uint8)tbank , (Uint8)mixno)
  @\ : FoNɑΉ~LT؂ւ܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Bool slSndMixParmChange((Uint8)mixno , (Uint8)level , (Sint8)pan)
  @\ : ~LT̃p[^ύX܂B
	 Level ͂O`PQV(ʂSrbg͖)APan 
	Left -128 ~ 0 ~ +127 Right (ʂRrbg͖) Zbg܂B
	 R}hobt@ɋ󂫂ȂꍇAFALSE Ԃ܂B

Sint8 slSoundRequest(const char form[], ...)
  @\ : TEhhCoɒړnf[^Zbg܂B
	 form ɂ ɑf[^̌X̃TCY𕶎f[^ŕ\܂B
	 A擪̃f[^̓t@NVR[hƂAɂ͊܂݂܂B
	 ߂l tH[ɕsȕꍇA|QA
	 [hf[^AhXZbg悤ƂꍇA|PԂ܂B
	 IꍇOԂ܂B
  )
	slSoundRequest("bbwwwbb" , SND_PCM_START , _Stereo|PCM16Bit , Level7<<5 ,
			StreamBuf >> 4 , StreamSize , Pitch , 0 , 0) ;
	̏ꍇASND_PCM_START t@NVR[hƂȂAɂ͊܂܂ȂB
	_Stereo|PCM16Bit , Level7<<5 ͂ꂼoCgf[^A
	StreamBuf>>4 , StreamSize , Pitch ͂ꂼꃏ[hf[^ƂăTEhh
	CoɓnB

void slSoundAllPause()
  @\ : t̑SV[PX(afl܂)ꎞ~܂B(AoblXg[
	 ͎~܂܂)

void slSoundAllCont()
  @\ : ꎞ~̑SV[PX(afl܂)ĊJ܂B

void slSndFlush()
  @\ : TEhRg[obt@ɎcĂRg[R}hTEh
	 hCoɏo͂܂B
	 ʏATEhRg[R}h̓VXepӂobt@ɃZbg
	 ĂAobt@ςɂȂ邩A邢́AslSynch() ֐s
	 ꂽɃTEhhCoɑ΂Ao͂܂B
	 Aȉ̊֐ɂĂ̓obt@͒ɏo͂܂B
		slSndMapChange()
		slDSPOff()
		slPCMOff()
		slSoundRequest()
		slSoundAllPause()
		slSoundAllCont()

	܂Aȉ̊֐sꍇAobt@̃R}h͔j܂B
		slSoundAllOff()

