News‎ > ‎

WYZPlayer MjT

publicado a la‎(s)‎ 8 oct. 2011 4:00 por jvicentemz   [ actualizado el 8 oct. 2011 4:12 ]
Para mantener las buenas relaciones con los Mojon Twins y no me pongan en busca y captura para sacrificarme a Vah-ka subo un microturotial para ensamblar correctamente música del WT.

 
1.- Editar la música en el WT.Una vez tengamos la canción completa se generarán dos archivos pulsando sobre la tecla     [WYZ] de la barra.

        - File.mus        Archivo en el que se encuentra codificada la música.
        - File.mus.asm    Archivo en el que se guardan todos los datos necesarios. Instrumentos, percusión, tablas...


2.- Dentro de tu programa, deshabilitar interrupciones y arrancar el player:

                DI
                CALL PLAYER_OFF

3.- Definir donde se van a colocar los cuatro buffers necesarios:

                Valga el psudocódigo...
     
                LD      [CANAL_A],
BUFFER_CANAL_A    
               
LD      [CANAL_B],BUFFER_CANAL_A+$10   
                LD      [CANAL_C],BUFFER_CANAL_A+$20    
               
LD      [CANAL_P],BUFFER_CANAL_A+$30    
 
    16 bytes por buffer es suficiente pero puede haber casos en los que sea necesario ampliarlos, sobre todo
    si las notas son muy largas. Para minimizar el buffer se puede medir la longitud en pasos de la nota mas larga
    de cada canal y dividir la cifra por el tempo, resultando la longitud mínima que necesitará el buffer
por canal.
    Nota para Augus: Esto lo podría hacer el tracker y de esta manera meter todo el royo de buffers en el ASM.

4.- Incluir los datos de la música:

                .INCLUDE       "File.MUS.ASM"

5.- Incluir el archivo binario de música identificándolo con una etiqueta:

SONG_0:         .INCBIN        "File.mus"

6.- Crear una tabla de etiquetas de las canciones. Si se van a utilizar mas de una file.mus.asm
    será común para todas las músicas. El nombre de la tabla debe ser TABLA_SONG


TABLA_SONG:     DW    SONG_0   ; SONG_1,SONG_2....


7.- Incluir el código del player limpio de polvo y paja.

.INCLUDE        "WYZproPlay47aZX.ASM"


8.- Activar interrupciones y llamar al player cada 1/50 segundos. La etiqueta de llamada es INICIO. Por ejemplo:

                EI
LOOP:           HALT               
                CALL    INICIO            ;CALL INICIO 1/50s           
                JR    LOOP

9.- Parar la música con CALL PLAYER_OFF. Esto también detendrá los SFX si están sonando.

Adjunto el código del player para ZX Spectrum del que no hay que modificar nada y otro de prueba para pulsar play ;D.




ċ
Prueba_ZX.asm
(1k)
jvicentemz,
8 oct. 2011 4:00
ċ
WYZproPlay47aZX.ASM
(23k)
jvicentemz,
8 oct. 2011 4:00
Comments