Karoshi MSX Community
05 de Julio de 2021, 12:58:51 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: 1 bit sample y F9S  (Leído 4399 veces)
0 Usuarios y 1 Visitante están viendo este tema.
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« : 22 de Noviembre de 2009, 04:16:56 pm »

Buenas...

Es solo mi F9S o a alguien mas le pasa, que no playea samples por el click de teclado usando la rutina de Edu? Por ej., en el Parachuteless Joe, al estamparse no hace el sample del zurriagazo  Huh

Sin embargo si hace click click al teclear normalmente... podria ser que el F9S usara otro numero de puerto? Me parece raro...
En línea

--

Cindy Lauper She Bops!
Dioniso
Visitante
« Respuesta #1 : 22 de Noviembre de 2009, 04:54:05 pm »

Has probado con el Beepertron? Por curiosidad...
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #2 : 22 de Noviembre de 2009, 05:35:04 pm »

Probando....

Pues si que va. Alguna idea pues?
En línea

--

Cindy Lauper She Bops!
Dioniso
Visitante
« Respuesta #3 : 22 de Noviembre de 2009, 06:33:53 pm »

Básicamente, la forma de tocar un sample no es totalmente correcta.

Primero conviene leer el estado inicial del BYTE completo ($AA) y no modificarlo completamente al cambiar el BIT 7. Hay que modificar sólo el BIT 7 y no el resto de los BITS.

De modo que antes de nada lees el BYTE, tal y como está en tu ordenador, para luego sólo cambiar el BIT 7; el que corresponde al PPI.

Código:
in a,($aa)
and $7f
out ($aa),a
nop
nop

A continuación guardas ese BYTE rotado una vez hacia la izquierda, ya que el SNIPPET de Edu insertará el BIT 7 rotando todo el BYTE hacia la derecha. Tú debes rotar el BYTE guardado (que ya está rotado hacia la izquierda) hacia la derecha, de modo que tendrás el BYTE original de tu ordenador y habrás insertado el nuevo BIT 7.

Código:
in a,($aa)
rla
ld (BEEPMASK),a

Al final, tan sólo te hace falta insertar una línea de código antes de enviar el BYTE a $AA. Te escribo ese trozo de código únicamente:

Código:
; Extract bit
rlca ;(5)
ld e,a ;(5)
; Convert to PPI format
ld a,(BEEPMASK) ;(14) copia del puerto ($aa) rotado un bit a izquierda
rra ;(5)
; Output to PPI
out ($AA),a ;(12)
ld a,e ;(5)

No sé si te ha quedado muy claro... Incluso yo me equivoqué en el SNIPPET para tocar música 1-BIT que está aquí, en el foro. Escribí "and $ef" en vez de "and $7f"...  Embarrassed Y corregí el SNIPPET, pero poco después se cayó el foro y se perdió la actualización que hice...

Pero lo que siempre hay que hacer, al principio de tu programa y antes de modificar nada, es lo que te he escrito antes. Repito:

Código:
in a,($aa)
and $7f
out ($aa),a
nop
nop
in a,($aa)
rla
ld (BEEPMASK),a

Y a la hora de mandar el BYTE a $AA, hazlo siempre con la copia que has guardado en la variable BEEPMASK (que nombre tan original se me ocurrió, verdad?), que debe estar en RAM, claro. Tal y como te he escrito arriba. La rutina será 13 T-STATES (+1 si estás en IM1) más larga, por lo que deberías quitar 3 NOPs de espera.

Si no te ha quedado muy claro, me lo dices y te lo intento explicar más detalladamente.
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #4 : 22 de Noviembre de 2009, 06:49:39 pm »

Si señor! El puto amo  Grin Funciona perfectamente ahora, Dioniso. Eres el amo del PPI. La explicacion no podia estar mas clara Smiley Gracias mil...
En línea

--

Cindy Lauper She Bops!
Dioniso
Visitante
« Respuesta #5 : 22 de Noviembre de 2009, 06:54:14 pm »

Me alegro  Cheesy
En línea
SapphiRe_MSX
Visitante
« Respuesta #6 : 22 de Noviembre de 2009, 08:34:37 pm »

mooooooooooooooooooooola Grin Grin Grin Grin Grin Grin Grin Grin Grin Grin Grin Grin Grin
En línea
Madonna Mk 2
Visitante
« Respuesta #7 : 23 de Noviembre de 2009, 01:40:53 pm »


Ahí ahí...

¡¡¡BEEPER A MUERTE!!!

Grin

En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!