Título: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 01:16:25 pm Hola.
Pues vengo a pedir algo ... Que no sé si es off-topic ... la herramienta sería para la entrada que intento acabar para esta MSXDev. Quiero convertir un binario a un fichero de texto de modo que el fichero resultante indique la cantidad de ceros o unos que existen de forma consecutiva ??? Un ejemplo: El fichero binario tiene, por ejemplo, los valores $ff,$ff,$ff,$fe,$00,$00,$03 lo que equivaldría a Código: 11111111 11111111 11111111 11111110 00000000 00000000 00000011 Me gustaría que la salida fuera un fichero tal que: db 21,22,2 Seguro que más de uno sabe por dónde van los tiros ;) Sabéis si existe algo así para PC? Algún alma caritativa podría hacer este programa? ::) Me facilitaría muuuuuuuuucho la tarea. Título: Re: Conversión Publicado por: pitpan en 05 de Noviembre de 2006, 01:54:19 pm Dioniso:
Si es por el bien de MSXdev'06, te hago yo el programa en C y te lo paso, ¿ok? Lo que pasa es que tengo una tarde de perros y después vuelo hasta Madrid. Te lo mandaré, con un poco de suerte, esta noche. Dame un e-mail válido o, si no, te pongo el código fuente en C aquí mismo y haces lo que buenamente puedas con él. Eso sí: simple restricción - en ningún caso se dará que haya más de 255 ceros o unos seguidos, ¿verdad? Es que si no sí que se me complica el trabajo :) Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 02:06:48 pm Dioniso: Si es por el bien de MSXdev'06, te hago yo el programa en C y te lo paso, ¿ok? Lo que pasa es que tengo una tarde de perros y después vuelo hasta Madrid. Te lo mandaré, con un poco de suerte, esta noche. Dame un e-mail válido o, si no, te pongo el código fuente en C aquí mismo y haces lo que buenamente puedas con él. Eso sí: simple restricción - en ningún caso se dará que haya más de 255 ceros o unos seguidos, ¿verdad? Es que si no sí que se me complica el trabajo :) Perfecto. La verdad es que se podría dar la posibilidad de más de 255 valores cero o uno. No puedes escribir $FF, poner el counter (que estará a 255) a cero y volver a calcular? Otra cosa ...yo tomo el valor $ff como que el siguiente byte a leer será del mismo valor que el anterior (ya sea cero o uno). Si se diese la coincidencia de que hay exactamente 255 ceros o unos ... podrías escribir 254 en vez de 255? Te escribo esto y sé que te estoy exigiendo mucho, pero sería la HERRAMIENTA. Si quieres me escribes por privado. Sería un programa de muchísimo uso. Si pudieras enviarme el fichero compilado y las fuentes ... ::) La verdad es que no sé cómo compilar las fuentes (comorl!!!). Si las veo, igual podría hacer algún cambio. En su día hice algo en Delphi ... (siglo 5° a.C.) Muchísimas gracias por adelantado. Ya pondré las fuentes del replayer en el foro. La dirección es dioniso072 merroban yah00 punto es Título: Re: Conversión Publicado por: pitpan en 05 de Noviembre de 2006, 03:46:54 pm Vale. Procuraré hacerlo según me has contado, pero lo que haré será que genere un fichero de texto plano indicando qué se ha encontrado, es decir:
db 200 ; 0s db 142 ; 1s db 255 ; 1s db 255 ; 0s ... Así podrás luego adaptarlo tú al formato que más te convenga cuando haya más de 255 ceros o lo que sea. Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 03:48:37 pm Perfecto, Edu!
No corras. Haz el programa cuando puedas. Título: Re: Conversión Publicado por: pitpan en 05 de Noviembre de 2006, 06:38:06 pm Toda prisa es poca para MSXdev'06.
Bájate el paquetito en http://www.robsy.net/bitcount.zip Tienes el ejecutable, las mini-instrucciones y el código fuente en C (muy chapucero). Si tienes pegas, dímelo. Que lo disfrutes. Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 07:07:15 pm Vaya! Eso es rapidez. Muchas gracias.
Lo he probado y funciona muy bien ... pero con un fichero binario de 512 bytes, a partir de la mitad me ha comenzado a dar valores erroneos ( con una diferencia de 3 bits, normalmente. Además hay 33 grupos de unos y ceros pero me crea 35 ??? No he mirado tu fuente, creo que de poco serviría devido a mi escaso conocimiento de C. Cuando tengas tiempo ... podrías echarle un ojo? Quieres que te envíe en binario que he utilizado (512bytes)? Un saludo y gracias por tu tiempo y tu esfuerzo. Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 07:59:05 pm El bloque de 512 bytes:
Código: .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7f,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$07,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$01,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0f,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1f,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$80,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7f,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1f,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fc,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$1f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$fc,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1f,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .db $ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff Debería dar: db 116,108, 156,93, 123,105, 159,90, 126,99, 168,87, 123,99, 171,84, 126,96, 190,84 db 123,102, 177,92, 123,104, 177,89, 123,104, 180,89, 120,96, 56 Pero da: db 116,108, 156,93, 123,105, 159,90, 126,99, 168,87, 123,99, 171,84, 126,96, 174,84 db 123,99, 171,84, 126,96, 174,84, 123,96, 177,84, 123,96, 177,81, 123 Título: Re: Conversión Publicado por: jltursan en 05 de Noviembre de 2006, 08:22:58 pm Prueba con este....
http://www.telefonica.net/web2/msxpage/others/bitparse.zip Yo tampoco lo he probado mucho; pero espero que funcione.... ;) Aunque he seguido el esquema propuesto por Robsy, se podría modificar fácilmente para obtener el binario empaquetado. Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 08:29:29 pm Gracias, jltursan. Me alegra que me ayudéis con este tema. Estoy programando, pero tengo el código parado por este problema (el de convertir los binarios a unos y ceros).
He probado el tuyo con el mismo binario y me da algo muy raro: Código: db 116; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 156; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 124; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 1; 0s db 159; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 2; 0s db 126; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 4; 0s db 4; 1s db 3; 0s db 168; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 129; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 3; 0s db 171; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 129; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 1; 1s db 7; 0s db 175; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 126; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 183; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 126; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 6; 1s db 2; 0s db 183; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 123; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 3; 1s db 5; 0s db 183; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 127; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s db 7; 1s db 1; 0s Título: Re: Conversión Publicado por: pitpan en 05 de Noviembre de 2006, 08:35:18 pm Vaya! Siento el entuerto... :(
Menos mal que JL me ha salido al paso y te ha dado sopitas. En todo caso, confirma que la nueva aplicación funciona bien. En caso contrario, dime algo y veremos qué se puede hacer al respecto. JL: gracias por sacarme las castañas del fuego ;) Título: Re: Conversión Publicado por: pitpan en 05 de Noviembre de 2006, 08:36:51 pm OOps! Ya veo que no está solucionado el tema aún.
En todo caso, mándame el fichero tal cual y probaremos con un doble paso: conversión y después generación del original para poder comparar la "bondad" del proceso. Me extraña que no estén funcionando las cosillas :( Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 08:38:53 pm Bueno, creo que os ayudaría tener el BINARIO (http://www.geocities.com/dioniso072/file.bin) con el que estoy probando.
Los valores creo que deberían ser: db 116,108, 156,93, 123,105, 159,90, 126,99, 168,87, 123,99, 171,84, 126,96, 190,84 db 123,102, 177,92, 123,104, 177,89, 123,104, 180,89, 120,96, 56 La imagen hexadecimal sería: (http://www.geocities.com/dioniso072/hex.png) (en gris donde empieza a dar problemas el binario de Edu) Título: Re: Conversión Publicado por: pitpan en 05 de Noviembre de 2006, 08:43:03 pm Me quedo con él y haré alguna prueba, Alfonso.
Ahora estaré off-line un ratillo, que tengo que embarcar en el avión. :( Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 08:47:04 pm Me quedo con él y haré alguna prueba, Alfonso. Ahora estaré off-line un ratillo, que tengo que embarcar en el avión. :( No te preocupes. Todavía queda tiempo. Espero que veas el problema. Que tengas un buen vuelo. Título: Re: Conversión Publicado por: jltursan en 05 de Noviembre de 2006, 10:23:13 pm Problema tonto encontrado (es lo que pasa cuando se hacen las cosas sin probar... :P). He actualizado el zip; así que toca vaciado de cache y descarga de nuevo. Esta vez he comprobado la salida y el resultado es:
Código: db 116; 1s db 108; 0s db 156; 1s db 93; 0s db 123; 1s db 105; 0s db 159; 1s db 90; 0s db 126; 1s db 99; 0s db 168; 1s db 87; 0s db 123; 1s db 99; 0s db 171; 1s db 84; 0s db 126; 1s db 96; 0s db 174; 1s db 84; 0s db 123; 1s db 96; 0s db 177; 1s db 84; 0s db 123; 1s db 96; 0s db 177; 1s db 81; 0s db 123; 1s db 96; 0s db 180; 1s db 81; 0s db 120; 1s db 96; 0s Que por lo que me ha parecido ver, es correcto... ;) Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 10:44:37 pm Vaya! Esta vez sí que sí. Tan sólo una cosa ... no escribe el último valor. Podrías actualizar ese diminuto detalle (si no es mucho pedir).
Por cierto, yo me había equivocado en algunos valores (los había contado a mano :'( :'( :'( ) Gracias por el programa. Ya puedo utilizarlo. Título: Re: Conversión Publicado por: jltursan en 05 de Noviembre de 2006, 11:03:10 pm Como diría Bernardo.....¡leeeeeche! :P. Ya está corregido (espero), prueba a descargarlo de nuevo...
Título: Re: Conversión Publicado por: Dioniso en 05 de Noviembre de 2006, 11:08:39 pm Recomprobado. Funciona a la perfección! Muchísimas gracias.
Si no puedo presentar el juego, al menos presentaré el nuevo 1-bit player con alguna canción que ya tengo terminada por aquí ;) Título: Re: Conversión Publicado por: jltursan en 05 de Noviembre de 2006, 11:22:22 pm ¡Genial!, ya sabía yo que estarías metido en algo así... ;)
Título: Re: Conversión Publicado por: pitpan en 06 de Noviembre de 2006, 12:21:46 am Pues nada, mejor así.
Tengo una versión 0.02, pero si el trabajo de JL te lo resuelve, no la subo. A ver con qué nos sorprendes esta vez, Dioniso! Título: Re: Conversión Publicado por: Dioniso en 06 de Noviembre de 2006, 12:51:35 am Bueno, parece que todo ha ido bien con el avión. Yo tengo cierta fobia ... :-\
Sobre el programa; la verdad es que me gustaría probarlo también, si no te importa ::) Título: Re: Conversión Publicado por: pitpan en 06 de Noviembre de 2006, 09:39:43 am Pues he actualizado el fichero, así que vacía la caché y píllate la versión 0.02 en http://www.robsy.net/bitcount.zip
Al lanzar la aplicación, te dirá v.0.02. El resultado, por lo que he podido ver, es idéntico al de la versión de JL. Simplemente he limpiado un poco el código, pero no creo que haya cambios sustanciales. Que lo disfrutes. Y a programar... Título: Re: Conversión Publicado por: Dioniso en 06 de Noviembre de 2006, 10:12:28 am Muchas gracias, Edu. También está todo comprobado y funciona correctísimamente, como el de jltursan.
Ya con tiempo, en el futuro (espero que no muy lejano) y demás, estaría bien darle un formato específico al fichero de salida (o hacer un simple binario de salida). Por ahora sigo con tu sugerencia de "a programar". Me estoy peleando duramente con el player ya que hay cierto problemilla que entre anoche y ahora no consigo solventar ... esto de contar t-states, modificar código/t-states y volver a contar, bifucarciones, etc ... me está volviendo loco. Ya veremos. Gracias a los dos una vez más. Título: Re: Conversión Publicado por: Jon_Cortazar en 06 de Noviembre de 2006, 10:20:34 am Pero, Dioniso, cuéntanos más acerca del juego!. Este tema del sonido tiene que ver con el juego en sí, o sea, es un juego musical?. Es algo sencillo tipo Simon, o vas a ir algo más allá? ;). Estoy ultra-intrigado!! :o :o
Título: Re: Conversión Publicado por: Dioniso en 06 de Noviembre de 2006, 10:23:21 am El juego en sí no es para tirar cohetes. Y sí, será musical ... si lo llego a terminar a tiempo :-\
Es sólo lo que he podido experimentar con la música 1-bit. Título: Re: Conversión Publicado por: pitpan en 06 de Noviembre de 2006, 01:05:09 pm Si necesitas algún formato específico para los datos de salida, adelante. Lo que te propondría es usar el valor 0 para indicar cambio de signo. No tiene sentido como "cuenta", así que podrías usarlo como indicador de cambio de signo muy fácilmente y sin colisiones.
Si te parece correcto, te puedo generar un programa así, y que además te lo vuelque ya en binario directamente, no en modo texto. Utilizando el cero no necesitarás comentario, salvo quizás un indicador que te diga con qué se empieza, si con un 1 o con un 0. Saludos, Título: Re: Conversión Publicado por: Dioniso en 06 de Noviembre de 2006, 06:51:51 pm Si necesitas algún formato específico para los datos de salida, adelante. Lo que te propondría es usar el valor 0 para indicar cambio de signo. No tiene sentido como "cuenta", así que podrías usarlo como indicador de cambio de signo muy fácilmente y sin colisiones. Tienes razón sobre el cero, el problema es que ya lo utilizo para indicar el final del sample ... Citar Si te parece correcto, te puedo generar un programa así, y que además te lo vuelque ya en binario directamente, no en modo texto. Utilizando el cero no necesitarás comentario, salvo quizás un indicador que te diga con qué se empieza, si con un 1 o con un 0. Sí, sería perfecto, habría que ver el tema de cómo reflejar que son más de 255 unos o ceros; yo lo hago, por ahora, con 255. Por ejemplo, si viene una tira de unos y los bytes a leer son 255,255,3 significa que tiene que dar salida a 515 unos ... creo. Por ahora sigo estancado con el player ... no termina de sonar como debería. Creo que no son los t-states, tengo que ver por qué no suena todo lo fino que su versión "grande" (con samples sin comprimir). Como siga perdiendo tiempo con este problemilla ... Título: Re: Conversión Publicado por: SapphiRe en 06 de Noviembre de 2006, 07:25:29 pm Sí, sería perfecto, habría que ver el tema de cómo reflejar que son más de 255 unos o ceros; yo lo hago, por ahora, con 255. Por ejemplo, si viene una tira de unos y los bytes a leer son 255,255,3 significa que tiene que dar salida a 515 unos ... creo. Tienes un problema. La secuencia 255,255,3 puede interpretarse como dices o como 255 unos, 255 ceros, 3 unos... Así que necesitas una marca especial que te indique si el 255 ha de ser considerado como un byte o no. Sugiero utilizar el cero, ya que en tu secuencia el 0 no va a aparecer nunca. Así si encontramos un cero significaría que los dos bytes siguientes han de ser considerados como una palabra y no como dos bytes separados. Así, por ejemplo: 255,255,3 significaría 255 unos, 255 ceros y 3 unos Pero 0,3,2 significaría que los bytes 3, 2 han de ser considerados como una palabra que (en low endian) contiene el número 515 si mal no he hecho los cálculos de cabeza. Es algo similar a lo que emplearía en la demostración de que el cardinal transfinito de los números reales es igual 2 elevado al cardinal transfinito de los números naturales... eem... vale, me callo ;D ;D ¿Qué opinais? Título: Re: Conversión Publicado por: Dioniso en 06 de Noviembre de 2006, 07:42:17 pm Me parece muy buena tu idea. El problema es que no puedo jugar mucho con los registros:
d: una copia del puerto $AA leída al inicio del programa. b: número de unos o ceros (para el DJNZ) c: puerto $AA a: como siempre de comodín, para todo. No me puedo permitir (o estoy intendo no) utilizar más de 1 byte en las operaciones mientras reproduzco el sonido por el puerto $AA a 22.050hz. Necesito tiempo para otras cosas. Intento no guardar y volver a sacar nada. Si sólo fuera un player sería muy cómodo trabajar con 2 bytes, sin duda. De todos modos, no sé si entendiste mi ejemplo: nunca tendré exactamente 255 unos o ceros a reproducir. Si se da el caso lo cambio por un 254 porque 255 significa que hago un loop completo con el mismo valor (digamos unos) y el siguiente valor también serían unos. Y si este último valor ha sido otro 255, leerá el siguiente byte y volverá a tocar unos. Por eso 255,255,3 sería una secuencia del mismo valor (según mi replayer). Sin duda las posibilidades son muchas. Gracias por tu idea, que seguro que va muy bien para un replayer. Título: Re: Conversión Publicado por: SapphiRe en 06 de Noviembre de 2006, 07:58:04 pm Vale, me cosco del problema. Sin embargo como tengas un número excesivo de unos o ceros seguidos, el factor de compresión va a verse afectado. Vamos a ver si podemos dar con una solución interesante y rápida...
Si ves un cero te vas a una parte especial de tu programa que lee el siguiente byte y realiza tantos bucles de 256 vueltas como indique el byte. Después lee el siguiente y hace un bucle con ese valor de vueltas. Por último vuelve a la parte normal del programa. Para hacerlo de esta forma la palabra debería estar en big endian en lugar de low endian... Si el registro e lo tienes libre podías guardar ahí el contador del bucle externo que realiza bucles de 256 vueltas. ¿Se me entiende? ??? ??? Título: Re: Conversión Publicado por: Dioniso en 06 de Noviembre de 2006, 08:03:29 pm El valor de compresión de ve algo afectado, pero prácticamente nada ... sólo con algún silencio. Es raro ver más de 255 unos seguidos.
Tomo nota de lo que dices. Lo de utilizar "e" para el número de loops. Título: Re: Conversión Publicado por: SapphiRe en 06 de Noviembre de 2006, 08:15:16 pm El valor de compresión de ve algo afectado, pero prácticamente nada ... sólo con algún silencio. Es raro ver más de 255 unos seguidos. Tomo nota de lo que dices. Lo de utilizar "e" para el número de loops. Incluso se puede mejorar. Supongamos que tienes una rutina llamada LOOP que hace un bucle de b vueltas y otra llamada CAMBIA que cambia el valor de uno a cero o viceversa. Lo que te propongo es crear una nueva rutina llamada BIGLOOP que hace b bucles de 256 vueltas y que se podría integrar como sigue: PLAYER: leo siguiente valor en b si no es cero jp LOOP BIGLOOP: hago b bucles de 256 vueltas apoyándome en e leo siguiente valor en b si es cero jp CAMBIA LOOP: hago un bucle de b vueltas CAMBIA: cambio valor 1 <-> 0 jp PLAYER Como ves en ningún momento estás trabajando con valores de 16 bits... No se si será lo suficientemente rápido para tus propósitos, pero no parece demasiado lento. Título: Re: Conversión Publicado por: Dioniso en 06 de Noviembre de 2006, 08:24:29 pm Comprendido. Gracias.
Ya tengo uno basado en mi idea inicial pero esta otra forma que tú propones para los valores mayores de 255 se podría integrar en un replayer general. Todo esto después de la MSXDev06. ;) Título: Re: Conversión Publicado por: pitpan en 07 de Noviembre de 2006, 11:03:30 am Volviendo a la idea de usar 0s para indicar cambio de UNOs a CEROs, creo que sería lo más sencillo (aunque no lo óptimo, como ha demostrado Sapphire).
Dices que utilizas el 0 para indicar el fin de la secuencia. Podrías sustituir el fin de secuencia por un doble cero, con lo cual tendrías un formato consistente y sin problemas (db 0,0). Recapitulando: db 0,n ; indica cambio de 0 a 1 (o de 1 a 0, imagino que te da lo mismo) y N bits repetidos db 0,0 ; indica fin-de-secuencia No hay colisión en este caso, aunque es verdad que el byte extra de cambio de bit haría que aumentase bastante el tamaño de la tabla resultante. La otra opción es usar sencillamente words en el recuento. Con 16 bits de rango seguro que no te quedas corto. Título: Re: Conversión Publicado por: Dioniso en 07 de Noviembre de 2006, 01:48:29 pm Claro, todo está muy bien pero ya he trabajado una rutina que me deja la canción de la intro de unas 4,5k en 1,7k, con reproductor incluido. No quiero tirar lo que ya he hecho, no tengo demasiado tiempo ahora y el fin se acerca.
El problema (ya estoy empezando a tirarme de los pelos) es que no suena igual :( He contado y recontado los t-states, he probado a cambiarlos y lo único en lo que debería afectar sería en la velocidad de reproducción ... pero suena diferente, bastante peor :-[ Si no consigo arreglarlo tendré que utilizar los samples completos, de nuevo :-\ Título: Re: Conversión Publicado por: jltursan en 07 de Noviembre de 2006, 02:17:07 pm EL caso es que esto me suena familiar, ya le pasó a Robsy algo parecido. ¿Has tenido en cuenta los tiempos reales de ejecución de las instrucciones del Z80 en el MSX? ???
Título: Re: Conversión Publicado por: Dioniso en 07 de Noviembre de 2006, 02:29:21 pm Pues en ello estoy. Utilizo el documento "Z80 instruction set overview" de las resources de la "MSX Assembly Page". Seguiré verificando el tema. Si este fin de semana no arreglo el problema usaré otra rutina con menor compresión pero efectiva. Si tuviera más tiempo ... (cágonla!)
La próxima semana ya diré aquí lo que sea. Por ahora sólo necesito tiempo. Llevo varias cosas para adelante, no sólo con el tema MSX. Título: Re: Conversión Publicado por: pitpan en 07 de Noviembre de 2006, 03:44:07 pm Dioniso:
Asegúrate de tener en cuenta lo que te comenta JL respecto al ciclo de espera adicional para todas las instrucciones del Z80 puesto en el MSX. Hay 4 ciclos de reloj extra que se van a refresco de memoria por byte del opcode, sin incluir parámetros. Es decir, NOP, que debería tardar 4 t-states, en realidad tarda 4+4. De todos modos, imagino que sí lo habrás tenido en cuenta. Si quieres que le eche un vistazo al replayer, pásame código por privado y le dedico unos minutillos. Título: Re: Conversión Publicado por: SapphiRe en 07 de Noviembre de 2006, 04:21:28 pm Asegúrate de tener en cuenta lo que te comenta JL respecto al ciclo de espera adicional para todas las instrucciones del Z80 puesto en el MSX. Hay 4 ciclos de reloj extra que se van a refresco de memoria por byte del opcode, sin incluir parámetros. Es decir, NOP, que debería tardar 4 t-states, en realidad tarda 4+4. De todos modos, imagino que sí lo habrás tenido en cuenta. ¿No era solo uno? Título: Re: Conversión Publicado por: Dioniso en 07 de Noviembre de 2006, 05:05:24 pm Eso diría yo. Yo tomo NOP como 5 t-states. Supongo que habrá sido el campotraviesa.
Gracias Edu por el ofrecimiento. Lo tendré en cuenta. Título: Re: Conversión Publicado por: pitpan en 07 de Noviembre de 2006, 05:33:17 pm DIOX MIO, PERO QUÉ BORRICO SOY! :o
Por supuesto, tenéis razón: por cada ciclo de instrucción, el MSX añade un ciclo de reloj. Por lo tanto, NOP se convierte en 4+1 T-states. Dadme con el palo con clavos por descerebrado. Título: Re: Conversión Publicado por: Dioniso en 07 de Noviembre de 2006, 05:37:30 pm Incluso un OUT (C),D tiene dos más, es decir, no tiene 12 sino 14.
Título: Re: Conversión Publicado por: SapphiRe en 07 de Noviembre de 2006, 05:49:42 pm DIOX MIO, PERO QUÉ BORRICO SOY! :o ;D ;D ;DPor supuesto, tenéis razón: por cada ciclo de instrucción, el MSX añade un ciclo de reloj. Por lo tanto, NOP se convierte en 4+1 T-states. Dadme con el palo con clavos por descerebrado. Robsy -> :spank: <- SapphiRe ¡¡A ver cuando nos vemos!! Título: Re: Conversión Publicado por: Dioniso en 09 de Noviembre de 2006, 11:10:18 am Bueno, parece que me acerco bastante. He compactado aún más el replayer ;D De todas formas no suena todo lo fino que debería ... Edu, creo que te voy a enviar dos replayers; uno sin samples/notas compactadas (es practicamente tu replayer pero modificando sólo el 7° bit del puerto $AA) y otro muy compacto para utilizar con los programas que tú y jltursan me hicisteis. Así verás las diferencias. Supongo que esto te caerá el próximo lunes.
Los t-states están medidísimos. Hay 3 loops con una duración de 162, 163 y 164 t-states respectivamente ... la diferencia no puede ser tan grande, no me lo explico. Quizá haya un problema con la conversión de samples ??? Si quito un bit a cada sample suena mejor, creo. Bueno, a ver si le echas un ojo. Te lo comento para que me digas si podrás o no, y lo hago aquí por si alguien piensa en otra solución para al problema. Por que si hago el juego con el primer replayer me voy a tener que llevar un "Griel's Quest for the Sangraal Extended Edition" ... Título: Re: Conversión Publicado por: Dioniso en 09 de Noviembre de 2006, 11:28:41 am Por cierto ... un JR LABEL son 9 t-states?
Título: Re: Conversión Publicado por: Jon_Cortazar en 09 de Noviembre de 2006, 01:25:42 pm Por cierto ... un JR LABEL son 9 t-states? ¡Por dios, pero que friki es este foro! :god: :god: :god:Título: Re: Conversión Publicado por: pitpan en 09 de Noviembre de 2006, 01:46:39 pm Dioniso:
Voy a estar MUY PILLADO hasta el viernes de la semana que viene, así que no podré ponerme con ello hasta entonces. Más que nada, es que estoy luchando con un examen "gordo" para el que no he estudiado suficiente. Son, en realidad, 4 exámenes de 3,5 horas en dos días consecutivos. Por lo tanto, 7 horas de examen al día, 14 horas de examen en total. Esto sí que es eXaminismo eXtremo :-\ Título: Re: Conversión Publicado por: jltursan en 09 de Noviembre de 2006, 02:12:20 pm Citar Por cierto ... un JR LABEL son 9 t-states? Ups......no, son 13 T-states Citar ¡Por dios, pero que friki es este foro! ¡y lo que mola! :D Citar Voy a estar MUY PILLADO hasta el viernes de la semana que viene, así que no podré ponerme con ello hasta entonces. Más que nada, es que estoy luchando con un examen "gordo" para el que no he estudiado suficiente. Son, en realidad, 4 exámenes de 3,5 horas en dos días consecutivos. Por lo tanto, 7 horas de examen al día, 14 horas de examen en total. Esto sí que es eXaminismo eXtremo ¡Suerte con los exámenes Robsy! :) .....yo voy a estar pillado de aquí a un año vista :P. Ahora soy el presi de la comunidad de vecinos y son unos cañeros de cojones, tendré que usar mano dura ;D Título: Re: Conversión Publicado por: Dioniso en 09 de Noviembre de 2006, 02:35:02 pm Voy a estar MUY PILLADO hasta el viernes de la semana que viene, así que no podré ponerme con ello hasta entonces. Más que nada, es que estoy luchando con un examen "gordo" para el que no he estudiado suficiente. Son, en realidad, 4 exámenes de 3,5 horas en dos días consecutivos. Por lo tanto, 7 horas de examen al día, 14 horas de examen en total. Esto sí que es eXaminismo eXtremo :-\ Primero lo primero, Edu. No te preocupes y mucha suerte. Recuerdo que en la universidad un colega dijo una vez al empezar un examen: "Que dios reparta suerte, porque como reparta justicia la hemos cagado". Citar Por cierto ... un JR LABEL son 9 t-states? Ups......no, son 13 T-states Sí, eso es lo que se dice en http://map.tni.nl/ y así lo he tomado yo. Me ha confundido un poco el replayer de Edu ;) (No se enfade usted caballero). Edu, adapté los samples a tu 1-bit replayer, que hace el loop más corto en 164 t-states y el más laro en 166 t-states (por ese último "jr @@COPY ; 9"). Es muy probable que por eso ahora haya esa diferencia en la reproducción a 162-163 t-states. Si es un sample/efecto no se aprecia casi nada, pero si es un sample/nota ... :-\ Veré si puedo adaptar el nuevo replayer a los mismos t-states, pero con tres loops no creo que vaya a sonar igual ... Título: Re: Conversión Publicado por: ARTRAG en 09 de Noviembre de 2006, 05:07:36 pm Problems with ASM and Tsates on msx z80 ?
cut & paste here your code and push Clock! http://msx.jannone.org/bit/ Título: Re: Conversión Publicado por: Jon_Cortazar en 09 de Noviembre de 2006, 05:35:05 pm Woa, THAT's an useful app sjp:)
Título: Re: Conversión Publicado por: burguera en 09 de Noviembre de 2006, 08:06:56 pm Dioniso: Voy a estar MUY PILLADO hasta el viernes de la semana que viene, así que no podré ponerme con ello hasta entonces. Más que nada, es que estoy luchando con un examen "gordo" para el que no he estudiado suficiente. Son, en realidad, 4 exámenes de 3,5 horas en dos días consecutivos. Por lo tanto, 7 horas de examen al día, 14 horas de examen en total. Esto sí que es eXaminismo eXtremo :-\ 14 horas de examen... y eso ¿cuantos t-states son? ;) Perdón por la broma, no he podido evitarlo. Suerte con el examen! Título: Re: Conversión Publicado por: jltursan en 09 de Noviembre de 2006, 11:34:52 pm Citar 14 horas de examen... y eso ¿cuantos t-states son? 180409068000 T-states para una velocidad dada del Z80 de 3.579545 Mhz ....no he podido evitarlo, es que estaba a huevo ;D Título: Re: Conversión Publicado por: pitpan en 09 de Noviembre de 2006, 11:39:40 pm Pues me dan ganas de hacer un:
DI HALT ...y ver qué pasa :P Título: Re: Conversión Publicado por: SapphiRe en 10 de Noviembre de 2006, 11:50:26 am Pues me dan ganas de hacer un: DI HALT ...y ver qué pasa :P Que el otorrino te mirará la garganta ;D ;D ;D ;D ;D ;D ;D Título: Re: Conversión Publicado por: jltursan en 10 de Noviembre de 2006, 04:03:16 pm Citar Problems with ASM and Tsates on msx z80 ? cut & paste here your code and push Clock! Great!, it's a new app? :o. I can't remember anyone talking about it before... Now it's time to convert to a standalone tool to merge with everyone's favourite editor :). By now, I'll test a bit more to see if it's reliable. |