Archivo de la categoría: Nueva versión

Nuevas versiones de programas

Nuevas versiones de Devede y FBZX

Acabo de subir la versión 3.16.2 de Devede y la 2.4.0 de FBZX. No tienen grandes cambios, sino pequeñas correcciones de cosas:

En el caso de Devede, tan solo añadí la traducción de gallego con las nuevas frases de la serie 3.16, y corregí dos fallos: uno al empaquetar ficheros MPEG en lugar de recodificarlos, y otro en la tasa de audio, que permitía valores incorrectos al activar el sonido 5.1.

En el caso de FBZX corregí, para empezar, un fallo en el cargador de ficheros SNA: el contenido de los registros IX e IY estaba intercambiado, razón por la que no podía funcionar ningún fichero con un programa en BASIC. También añadí un filtro de continua para el sonido, de manera que al utilizar el emulador a la vez que otra fuente de sonido cualquiera con PulseAudio, no se producen problemas. Por último, por consejo de un viejo amigo, he añadido un pequeño mensaje durante el inicio que avisa que la ayuda está disponible con la tecla F1.

Que lo disfrutéis con salud.

Devede 3.16.0

Acabo de lanzar la nueva versión de Devede, la 3.16.0. Entre los cambios más interesantes están:

  • Soporte de codificación en dos pasadas, con lo que la calidad final será mayor, aunque también es probable que la diferencia entre el tamaño final estimado y el real sea aún mayor 🙂
  • Soporte de windows de 64 bits. Dado que sólo comprobaba si estaba ejecutando sobre «win32», pero no «win64».
  • Permite modificar el volumen final: varios usuarios se quejaban de que algunos vídeos salían con el volumen muy bajo, y pedían una forma de solucionarlo.
  • Soporte de UTF-16 en subtítulos: por un lado, no lo había añadido en la lista de formatos soportados, pero es que encima SPUMUX no lo soporta, así que utilizo ICONV para pasar siempre a UTF-8. Era necesario porque varios usuarios se encontraron con que no podían generar discos con dichos subtítulos. Además, autodetecta si está en dicho formato.
  • Por fin permite de nuevo generar DVDs sin un menú. Era una petición a gritos, pero no tuve tiempo hasta ahora de implementarlo.

Y otros pequeños cambios interesantes.

Nueva versión de FBZX

Aunque ayer lancé la versión 2.2.0, hoy lanzo la 2.3.0 con un pequeño cambio: soporte de PulseAudio. La razón es que, cuando dicho demonio de sonido está lanzado, FBZX da algunos problemas. Ahora, por defecto intenta utilizar PulseAudio como Backend de sonido; si falla probará con ALSA; si tampoco, con OSS; y si ni con esas, entonces sin sonido.

Además, pensando en los usuarios de Gentoo, ahora se puede escoger qué backends de sonido se compilarán. De esta manera, si, por ejemplo, se quiere utilizar exclusivamente ALSA y no se pretende instalar PulseAudio, se puede compilar sin dicho soporte. Basta con retocar el Makefile y eliminar la definición correspondiente.

Regalito

Acabo de lanzar la versión 2.2.0 de FBZX. Los cambios son bastante sutiles, porque afectan únicamente al emulador del procesador. Ahora la emulación es mucho más precisa gracias a que ya pasa casi todos los tests de compatibilidad de FUSE. Estos tests ejecutan trozos de código y comparan el resultado obtenido con el que debería ser. Quedan sólo un par de detalles con los flags H3 y H5, los cuales no deberían dar problemas a nadie. Entre las correcciones, están las temporizaciones de varias instrucciones que trabajan con los registros IX e IY, y un par de detalles en INI, IND, INIR y INDR.

Por otro lado, hace unas semanas lancé también una nueva versión de Devede, la 3.15. Los principales cambios han sido:

  • Soporte de OGG/Vorbis para el sonido de fondo del menú. Esto ha sido necesario porque en algunas distribuciones recientes falla algo con los MP3. Cambiar a OGG soluciona el problema.
  • Nuevos fondos para los menús: ahora se incluyen varios fondos en una carpeta aparte, por lo que el usuario puede escoger entre ellos. En el futuro espero añadir más.
  • Vuelve a permitir dividir en dos una película al hacer un SVCD o un CVD. Fue un error eliminarlo.
  • Al utilizar la resolución por defecto al crear un DivX, directamente no se toca la resolución ni se añaden barras ni nada. De esta manera es posible recomprimir un vídeo en resolución no estándar conservando al máximo la calidad.
  • Admite la externsión RMVB (RealMedia Video). En realidad ya soportaba RM como extensión de vídeo porque estaba añadida en los tipos MIME de Gnome, pero esta en concreto no, así que por petición popular la añadí «a mano».

Y otros pequeños cambios menores.

Mal número si no crece

Me refiero, obviamente, a la versión 13 de DeVeDe, que estaba terminada y prometida desde finales del mes pasado. No la publiqué antes no sólo por movidas personales, sino también porque necesita de la versión 2.16 de GTK, que sólo está disponible en la nueva Ubuntu.

Los cambios son pequeños, muy pequeños: para empezar, unas correcciones en la traducción a griego, y por otro lado la comentada migración de LibGlade a GtkBuilder.

En la próxima versión quiero hacer algunos cambios internos en el código que convierte los archivos, para que sea más sencillo añadir nuevos formatos de salida. También espero añadir nuevas opciones, como por ejemplo permitir hacer DVDs sin menú principal, o añadir por defecto ficheros de subtítulos que haya en el mismo directorio que una película, para poder hacer más cosas con un simple Arrastrar y Soltar. También quiero retocar un poco más la interfaz para que sea más utilizable en equipos con pantallas pequeñas (como los netbooks).

¡Que la disfruteis!

Re-retocando

Y no hay dos sin tres, como ya viene siendo habitual en DeVeDe: me acaban de enviar un par de correcciones extra para la traducción francesa, y además me han avisado de que no actualicé el fichero CHANGELOG.DEBIAN en el paquete DEB. Por eso acabo de lanzar DeVeDe 3.12c, que corrige ambos.

Retocando

Al poco de sacar DeVeDe 3.12 me llegó la traducción a italiano, así como un comentario (en la entrada anterior) en la que me comentan un par de errores en la versión francesa. Por eso acabo de sacar DeVeDe 3.12b, añadiendo dichos cambios (no todos, en realidad. En la traducción francesa sólo corregí el detalle de las marcas HTML; el resto esperaré a que me lo envíe el traductor oficial).

DeVeDe again

Tras casi diez días de espera, hoy llegó la última traducción pendiente para la nueva versión de DeVeDe. Los cambios son más bien pequeños (ya llegarán los grandes en la próxima):

El primero es soportar caracteres HTML (<, >, & …) en los nombres de fichero. Hasta ahora no expandía dichos caracteres en los ficheros XML que se usan en DVDAuthor, por lo que daba un error al intentar usar un fichero que contuviese uno de ellos en su nombre.

El segundo es no mostrar la previsualización de la imagen de fondo de menú cuando se escoge un directorio. Esto ha sido necesario para que el programa no se cuelgue al escoger un directorio o un fichero que no es una imagen en la ventana de selección de fondo para el menú del DVD.

El tercero, muy reclamado por los usuarios, consiste en comprobar si existe algún archivo o directorio con el mismo nombre que la imagen ISO (o algún fichero temporal) que se va a crear, en cuyo caso pregunta antes de borrarlo. Yo siempre di por supuesto que la gente no pondría un nombre igual a algo que ya existiese en el directorio final, pero no ha sido así. Dado que DeVeDe tiene que crear, al menos, una carpeta con el nombre genérico (para DVDAuthor) y otros archivos (XML, MPEG, etc) temporales, las probabilidades de colisión son muy grandes. Para resolverlo he decidido que se cree primero una carpeta con el nombre genérico, y meter dentro absolutamente todos los archivos que se generen. Y, por supuesto, preguntar antes en caso de que dicha carpeta exista.

El cuarto y último es una petición que viene de muy antiguo: rehacer la pantalla de selección de tipo de disco. Mucha gente se quejaba de que era muy fea y poco profesional. La he cambiado por un diseño que Jonathan Estrella subió a gnome-look.

Como viene siendo costumbre, está disponible en TAR.BZ2 y en DEB.

Retocando

Dos nuevas versiones con pequeños cambios.

El primer programa modificado es FBZX. Me había puesto en contacto con el mantenedor de la página de FBZX en Launchpad  para que actualizase la información, y resultó que era un viejo usuario que ya me había hecho un montón de buenas sugerencias, y como no podía ser de otra manera, me hizo dos más: por un lado, un nuevo icono, y por otro lado, utilizar las imágenes ROM en el mismo formato y directorios que el resto de emuladores.

En efecto, FBZX tenía las imágenes en un sólo fichero por modelo (una imagen de 16Kbytes para el Spectrum original, una imagen de 32Kbytes para cada uno de los modelos de 128K «clásicos», y una imagen de 64KBytes para el +2A/+3). Sin embargo, el resto de emuladores usan ficheros de 16Kbytes, dividiendo las imágenes en varios ficheros, cada uno con una página.

La razón de hacerlo así es que, de esta forma, no hay que duplicar los ficheros en distribuciones como Debian, en donde éstos están en un paquete separado: SPECTRUM-ROMS. Así, además, se eliminan de un plumazo muchos líos de licencias, porque el paquete FBZX será 100% GPLv3, y el código propiedad de Amstrad estará claramente separado en un paquete distinto, con sus condiciones de distribución bien claras.

El otro programa modificado es mi viejo Z88Transfer. El cambio fundamental es que ahora ya permite transferir ficheros binarios al Z88 en windows. La razón de que fallase es que, por costumbre, abría los ficheros de disco sin forzar modo binario porque en Linux da igual (siempre los abre en binario). Por desgracia en Windows ésto no es así, sino que si no se especifica el modo binario lo abre en modo ASCII, con lo que si aparece un byte 26 creerá que ha llegado al final de fichero y parará.

Otro fallo corregido es que ahora permite enviar ficheros cuyo nombre contenga mayúsculas: por un fallo, convertía el nombre de fichero siempre a minúsculas, con lo que en sistemas de archivos que distinguen unas de otras (como por ejemplo, EXT3), si el nombre tenía alguna mayúscula daría error.

Otro cambio importante es que ahora también permite enviar ficheros que contengan un guión en su nombre, y que controla mejor qué nombres son válidos para el Z88 (en base a la longitud del nombre, de la extensión, etc).

Por último, no muestra los ficheros cuyo nombre termina en ~. Estos ficheros suelen ser copias temporales de ficheros, y de hecho buena parte de los navegadores de ficheros los ocultan por defecto (así tenía la carpeta DESKTOP llena de ellos sin saberlo).

A disfrutarlo con salud. Ah, y que tengais una feliz newtondad y porrompompero año nuevo 🙂

!Libre!

Después de cinco años de vida, FBZX por fin es totalmente libre. Efectivamente, cuando escribí mi emulador de Spectrum, había intentado sin éxito escribir también el emulador de Z80. Por desgracia la tarea era muy pesada (sobre todo por repetitiva y propensa a errores), así que al final decidí usar uno hecho por un programador llamado Marat Fayzullin.

Por desgracia había un serio inconveniente: las condiciones de uso de este código eran incompatibles con la GPL (y mucho). Esta situación nunca me agradó demasiado, pero dado que escribir desde cero y depurar un emulador de un procesador era una tarea demasiado árdua, al igual que intentar adaptar el código de FBZX a otro emulador de Z80 diferente, lo fuí dejando de lado durante años.

Así estuvo la cosa hasta que hace un mes, más o menos, recibí un mensaje de un empaquetador de ArchLinux que se encontró con el problema: en efecto, no podía seguir manteniendo el emulador en el repositorio por culpa de la incompatibilidad de licencias.

Ante ésto decidí que ya era hora de tomar cartas en el asunto, así que me puse a escribir un emulador desde cero. Sin embargo, tenía claro que no podía limitarme a teclear largas listas de sentencias CASE XX:, sino que tenía que emplear una aproximación más inteligente si quería hacerlo en un tiempo razonable y con unas mínimas garantías de éxito. Así, se me ocurrió que podía partir de una lista de opcodes de Z80, la cual podría parsearse con un pequeño programa que generaría por mí el código en C. En efecto, partiendo de una lista como:

LD A,B
LD A,C
LD A,(HL)
CP (HL)

es posible separar el comando (LD, CP…) de los parámetros (A, B, C, (HL)), y generar automáticamente código que realice las operaciones. De esta forma sólo tuve que escribir una vez el código que implementase la lectura y escritura de cada uno de los 51 posibles parámetros, la comprobación de las 8 posibles condiciones, y el funcionamiento de cada uno de los 81 comandos diferentes, y dejar que el parser se encargase de generar los 1792 opcodes posibles que puede ejecutar el Z80. Además, una ventaja extra es que cualquier error que cometiese sería más fácil de corregir, porque sólo tendría que hacerlo en el parser, y automáticamente se arreglarían todas las instrucciones afectadas.

El resultado es que he necesitado tan sólo unas cuarenta horas netas, repartidas en tres semanas, para escribir desde cero un emulador de Z80 plenamente funcional, y que, además, emula el juego completo de instrucciones del Z80, tanto las oficiales como las no oficiales. Y gracias a él, FBZX ya es completamente libre.

Dado que la idea del parser puede ser útil para hacer otros emuladores diferentes, he tenido especial cuidado en escribirlo de manera que se pueda cambiar fácilmente la lista de comandos, parámetros, etc, y así poder adaptarlo a otros procesadores como el 6502, el 6800, ARM…

Otros cambios

Aprovechando la nueva versión, también añadí soporte para sonido mediante los controladores ALSA, y la emulación del Spectrum 128K español (el original de Investrónica y Sinclair Research). Además, también almacena el nivel de volumen que se está usando, de manera que no haya que ajustarlo cada vez que se ejecute el programa de nuevo. Por último, he cambiado la licencia a la GPLv3.

SuperShow

También aproveché para sacar una pequeña revisión de SuperShow. El único cambio que hice fue traducir las variables de la plantilla que se usa para generar los scripts de Flash, de manera que si alguien que no hable castellano quiere mejorarla, lo tendrá más fácil.