; 
;
; Example Program for using the "mmv8.library" from ASSEMBLER
; (C) Dire Cracks, Inc.
;

; THE OFFSETS:
SoundOn          equ -30
SoundOff         equ -36
GeneralSndInit   equ -42
GeneralSndRemove equ -48
GeneralSndReset  equ -54
FadeSnd          equ -60
WaitFade         equ -66
LoadAndInit      equ -72
RemoveLoaded     equ -78
WaitOneShotFin   equ -84
DecrunchInstrs   equ -90
SetVolume        equ -96
SetSpeed         equ -102

; GENERAL INFORMATION:
; THIS EXAMPLE USES THE LoadAndInit-FUNCTION OF THE LIBRARY.
; OF COURSE, IT IS POSSIBLE THE USE THE "O"-CREATED OBJECT FILES AS WELL,
; SINCE THE LIBRARY ALSO SUPPORTS THE "SIMPLE" _generalsndinit AND
; _generalsndremove. FOR INFORMATION ABOUT THESE, SEE THE "system"-EXAMPLE.
; FOR THE SAKE OF THE EXAMPLE, THIS TIME, LoadAndInit IS USED.
; FURTHER, IT'S EVIDENT THAT THE LoadAndInit-FUNCTION CAN BE USED WITHOUT
; USING THE LIBRARY, IS'NT IT ?!
; FOR YOUR IMAGINATION: INSTEAD OF jsr LoadAndInit(a6) IT WOULD SOUND
; jsr _loadandinit WHEN LINKING THE sysplayer.o-FILE TOGETHER WITH THE
; MAIN PROGRAM MODULE ...

; CODE START

; OPEN THE "mmv8.library"
 move.l $4,a6
 lea.l mmv8name(PC),a1
 jsr -408(a6)
 move.l d0,mmv8base
 beq.s exit

; EXAMPLE FOR LoadAndInit
 move.l mmv8base(PC),a6
 lea.l filename(PC),a0
 moveq.l #1,d0
 jsr LoadAndInit(a6)  ; This loads and initializes a song
 tst.l d0
 bne.s error          ; ERROR: When files are not found, or there's
                      ; not enough memory !

; SWITCHING SOUND ON
 jsr SoundOn(a6)

maus:
; EXAMPLE FOR WAITING FOR A ONESHOT SOUND TO FINISH
  jsr WaitOneShotFin(a6)
   tst.l d0
   bne.s oneshotisfin

 btst.b #6,$bfe001
 bne.s maus

; CAUSE SOUND TO FADE OUT
 moveq.l #120,d0
 jsr FadeSnd(a6)

; WAITING FOR FADEOUT TO FINISH
waitforfade:
   jsr WaitFade(a6)
   tst.l d0
   beq.s waitforfade

oneshotisfin:
; SWITCHING SOUND OFF
 jsr SoundOff(a6)

; SETTING THE VOLUME OF THE WHOLE SONG TO THE HALF OF THE ORIGINAL:
; moveq.l #63,d0
; jsr SetVolume(a6)
; THE VALUE'S RANGE GOES FROM 0 to 127. 127 IS THE ORIGINAL (FULL) LEVEL.
; SEE OTHER EXAMPLES FOR INFO !


; IF YOU WANT TO START SAME SOUND AGAIN, YOU MUST DO THE FOLLOWING:
; moveq.l #0,d0 (for LOOP) OR moveq.l #1,d0 (for ONESHOT)
; jsr GeneralSndReset(a6)
; jsr SoundOn(a6)

; IF YOU WANT TO PLAY ANOTHER SOUND, YOU MUST CALL
; jsr RemoveLoaded(a6)
; AND THE DO LIKE FAR ABOVE (=again call LoadAndInit)

; REMOVE DATA FROM MEMORY AND REMOVE PLAYER-INTERRUPT
 jsr RemoveLoaded(a6)

; CLOSE THE mmv8.library
errorexit:
 move.l mmv8base(PC),a1
 move.l 4,a6
 jsr -414(a6)
exit:
 rts

error:
 move.w #$0f00,$dff180
 bra.s errorexit

filename: dc.b 'sd:mysterious',0
 cnop 0,2
mmv8name: dc.b 'mmv8.library',0
 cnop 0,2
mmv8base: dc.l 0

