home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 4: The Falcon Archive / nf_archive_four_v1.0.iso / ARCHIVE / WORK / MSX / GTK08777.ZIP / GTK.DEV / SOURCES.NEW / EXEMPLE1.S < prev    next >
Text File  |  1997-11-14  |  6KB  |  209 lines

  1. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  2. *≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈*
  3. *                                         *
  4. *               DSP-replay routine                     *
  5. *        for Graoumf Tracker modules (.GT2)                 *
  6. *            Falcon 030                         *
  7. *            Code 68030                         *
  8. *                                         *
  9. *         Exemple d'utilisation avec noyau non résident             *
  10. *                                         *
  11. *≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈*
  12. * Version     : 5/7/1996, v0.865                    *
  13. * Tab setting : 11                        *
  14. *≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈(C)oderight L. de Soras 1994-96*
  15. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  16.  
  17.     opt    p=68030
  18.     opt    d-
  19.  
  20. *~~~ Constantes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  21.  
  22. FLAG_INTERPOLATION:    Equ    0    ; 0 = interpolation Off
  23.                     ; 1 = interpolation On
  24.  
  25. *~~~ Macros ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  26.  
  27. waitakey:    Macro
  28.     move.w    #7,-(sp)        ; Crawcin
  29.     trap    #1
  30.     addq.l    #2,sp
  31.     EndM
  32.  
  33. printames:    Macro
  34.     pea    \1
  35.     move.w    #9,-(sp)        ; Cconws
  36.     trap    #1
  37.     addq.l    #6,sp
  38.     EndM
  39.  
  40.  
  41.  
  42. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  43.  
  44.     bra    start            ; A ne pas oublier!
  45.     Include    'replay.s'        ; Les routines de soundtrack et l'installation du noyau
  46.  
  47. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  48.  
  49.     Section    Text
  50.  
  51.  
  52. start:
  53.     move.l    #gtkpl_info_track,-(sp)
  54.     move.w    #NBRVOIES_MAXI,-(sp)    ; 32 tracks maxi
  55.     sndkernel    kernel_on        ; Installe le noyau
  56.     addq.l    #6,sp
  57.     tst.l    d0
  58.     bmi    exit        ; Pas possible de l'installer!
  59.  
  60. ;--- Exemple de replay d'un module -------------------------------------------
  61.  
  62.     bsr    gtkpl_player_on    ; Installe le player
  63.     tst.l    d0
  64.     bmi    essai_fin
  65.  
  66.     pea    module_gt2        ; Convertit le module au format interne
  67.     pea    module_gt2
  68.     move.w    #0,-(sp)        ; *** 0 = GT2 ***
  69.     bsr    gtkpl_convert_module
  70.     lea    10(sp),sp
  71.     tst.l    d0
  72.     bmi    essai_fin
  73.  
  74.     pea    0.l        ; Prépare les samples du module en calculant les
  75.     pea    repeatbuffer    ; buffers de bouclage
  76.     pea    module_gt2
  77.     bsr    gtkpl_make_rb_module
  78.     lea    12(sp),sp
  79.     tst.l    d0
  80.     bmi    essai_fin
  81.  
  82.     clr.w    -(sp)        ; Pof, on fait tourner tout ça
  83.     clr.w    -(sp)
  84.     pea    repeatbuffer
  85.     pea    module_gt2
  86.     bsr    gtkpl_new_module
  87.     lea    12(sp),sp
  88.     tst.l    d0
  89.     bmi    essai_fin
  90.     printames    str_playmod
  91.     waitakey            ; On attend que l'utilisateur presse une touche
  92.  
  93.     IfNE    FLAG_INTERPOLATION
  94.     moveq    #NBRVOIES_MAXI-1,d1    ; Interpole toutes les voies si on
  95. .intloop:    move.w    #1,-(sp)        ; a demandé cette option
  96.     move.w    d1,-(sp)
  97.     sndkernel    interpolate_track
  98.     addq.l    #4,sp
  99.     dbra    d1,.intloop
  100.     printames    str_interpolmod
  101.     waitakey
  102.     EndC
  103.  
  104.  
  105.     bsr    gtkpl_pause_module
  106.     printames    str_pausemod
  107.     waitakey
  108.  
  109.     bsr    gtkpl_cont_module
  110.     printames    str_contmod
  111.     waitakey
  112.  
  113.     bsr    gtkpl_stop_module
  114.     printames    str_stopmod
  115.     waitakey
  116.     bsr    gtkpl_player_off    ; Retire le player et libère ses voies
  117.  
  118. ;--- Exemple de replay d'un sample (ici tiré du module précédent) ------------
  119.  
  120.     move.w    #-1,-(sp)
  121.     sndkernel    reserve_track    ; Réserve une piste, numéro dans d0
  122.     addq.l    #2,sp
  123.     tst.l    d0
  124.     bmi    essai_fin
  125.     move.w    d0,d1
  126.  
  127.     move.l    gtkpl_module_inf1+adr_samples+1*4,a0    ; Pointe sur le sample No 1
  128.     move.l    replen_s(a0),-(sp)    ; Replen
  129.     move.l    repeat_s(a0),-(sp)    ; Repeat
  130.     move.l    gtkpl_module_inf1+adr_repbuf+1*4,-(sp)    ; Adrbuf
  131.     move.w    #$1,-(sp)        ; Flags : Loop On (si sample pas loop, rien n'est joué, tant pis)
  132.     move.w    nbits_s(a0),-(sp)    ; Résol
  133.     move.w    fech_s(a0),-(sp)    ; Fréquence ech
  134.     move.w    #$800,-(sp)    ; Balance
  135.     move.w    #$800,-(sp)    ; Volume
  136.     clr.l    -(sp)        ; Position actuelle
  137.     move.l    length_s(a0),-(sp)    ; Longueur
  138.     lea    data_s(a0),a1
  139.     move.l    a1,-(sp)        ; Adresse des données
  140.     move.w    d1,-(sp)        ; Piste
  141.     sndkernel    play_sample    ; Joue ce sample
  142.     printames    str_playspl
  143.  
  144.     waitakey
  145.     move.w    d1,-(sp)
  146.     sndkernel    pause_track    ; Pause
  147.     addq.l    #2,sp
  148.     printames    str_pausespl
  149.  
  150.     waitakey
  151.     move.w    d1,-(sp)
  152.     sndkernel    cont_track        ; Reprise
  153.     addq.l    #2,sp
  154.     printames    str_contspl
  155.  
  156.     waitakey
  157.     move.w    d1,-(sp)
  158.     sndkernel    stop_track        ; Cette fois-ci on arrête le sample pour de bon
  159.     addq.l    #2,sp
  160.     printames    str_stopspl
  161.  
  162.     move.w    d1,-(sp)
  163.     sndkernel    free_track        ; Libère la piste, on n'en a plus besoin
  164.     addq.l    #2,sp
  165.  
  166.     moveq    #0,d0
  167.  
  168. essai_fin:
  169.     tst.l    d0
  170.     bpl.s    .no_error
  171.     printames    str_error        ; Message d'erreur
  172.     waitakey
  173. .no_error:    sndkernel    kernel_off        ; Arrête le noyau
  174.  
  175. exit:    clr.w    -(sp)        ; Sortie
  176.     trap    #1
  177.  
  178.  
  179. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  180.  
  181.     Section    Data
  182.  
  183. str_playmod:    Dc.b    'Playing a module...',10,13,0
  184. str_interpolmod:    Dc.b    'Interpolation...',10,13,0
  185. str_pausemod:    Dc.b    'Pause...',10,13,0
  186. str_contmod:    Dc.b    'Continue...',10,13,0
  187. str_stopmod:    Dc.b    'Stop module.',10,13,0
  188. str_playspl:    Dc.b    'Playing a sample...',10,13,0
  189. str_pausespl:    Dc.b    'Pause...',10,13,0
  190. str_contspl:    Dc.b    'Continue...',10,13,0
  191. str_stopspl:    Dc.b    'Stop sample.',10,13,0
  192. str_error:        Dc.b    'Oh Oh! Error!',10,13,0
  193.         Even
  194.  
  195. module_gt2:    incbin    'h:\tood\new3\freqtst.gt2'    ; *** Mettre ici le nom du module
  196.         ds.b    50000        ; *** Place pour la conversion.
  197.                     ; Dépend du module (regarder la
  198.                     ; taille renvoyée à la conversion)
  199.         Even
  200.  
  201. *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  202.  
  203.     Section    Bss
  204.  
  205. gtkpl_info_track:    ds.b    NBRVOIES_MAXI*next_t    ; Informations sur les N voies (maximum)
  206. repeatbuffer:        ds.b    NBRSAMPLES_MAXI*1024    ; Buffers de répétition de N samples maxi + 1 vide
  207.  
  208. *~~~ FIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
  209.