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