JSpeccy v0.89.1, Edición Nochebuena 2011

Uno no sabe qué pasa con el software que, por muchas pruebas que se hagan, en cuanto haces pública una versión empieza Murphy a trabajar y te la lía parda. Y esa ley se respeta incluso en Navidades.

Esta actualización corrige un error que hacía imposible grabar en cinta. De paso, y para compensar, he introducido una pequeña mejora para permitir elegir el grado de zoom de la ventana. Ahora puede ser x2, x3 y x4. No es una pantalla completa, pero está más cerca de serlo. Los usuarios que tengáis tarjetas gráficas que soporten OpenGL por hardware, podéis sacarle partido añadiendo en la línea de comandos la definición -Dsun.java2d.opengl=True. Con esto, el consumo de CPU cuando se amplía la ventana se reduce, como mínimo, un 50%.

Una última cosa: el fichero de configuración ha vuelto a crecer, de modo que conviene borrarlo para que se vuelva a crear con todas las propiedades.

JSpeccy v0.89, Edición navidades 2011

Por fin tenemos una actualización mayor, ¡pero que muy mayor!. Siete meses de trabajo me han proporcionado tiempo suficiente como para corregir cinco o seis bugs menores e introducir varias docenas de los gordos. Como los nuevos bugs son consecuencia de las nuevas funcionalidades, a ver si consigo que pasen un pelín desapercibidos. Las novedades que tiene esta versión son:

· Emulación del Interfaz I y de hasta 8 Microdrives. Ha sido un trabajo largo y farragoso que me ha obligado a escribir la emulación de los uDrives dos veces. Pero puedo decir con humildad, que he conseguido la emulación más exacta de todas las existentes hasta ahora. De hecho, es el único emulador que, a día de hoy, es capaz de manejar formatos de cinta distintos del habitual de Sinclair. Para ello, ha sido necesario crear un nuevo tipo de archivo para almacenar la información de los cartuchos, con extensión MDV. Gracias a este nuevo formato, se pueden observar, por ejemplo, las diferencias que hay entre el formateo de la version 1 y 2 de la ROM del Interfaz I y del formateo que realiza la ROM del Multiface 128k. Los antiguos archivos de cartuchos, con extensión MDR, son legibles y se convierten al vuelo al nuevo formato. Pero, nada es perfecto, si se modifican hay que grabarlas con el nuevo formato. Y no es aconsejable reformatear un cartucho antiguo o quedará con una capacidad mucho menor de la teórica.

· Emulación de la extensión de RAM LEC, que equipa a un modesto Spectrum 48k con 528KB de RAM sin problemas de contención de memoria. Es un montaje hardware que los manitas de la electrónica pueden llevar a cabo, y que desarrolló el checo Jiri Lamac en 1987. Por si el desarrollo hardware fuera poco, se hizo su propia modificación de la ROM del Spectrum y un CP/M v2.2 que es capaz de usar a los Microdrives como dispositivos de almacenamiento. Y puedo asegurar que lo hace realmente bien. Para ello, también se inventó su propio formato de cinta, incompatible con el de Sinclair e imposible de usar en los viejos ficheros MDR. De nuevo, es la primera vez que se puede ejecutar este CP/M usando los uDrives en condiciones.

· Se pueden cargar y grabar ficheros binarios directamente a o desde la memoria del Spectrum.

· Es posible grabar un snapshot en la memoria del PC y recuperarlo instantaneamente más tarde. Ideal para las pantallas más difíciles del UChi-Mata (todas).

· Como nuestro querido gomas era portátil de verdad ya en los 80, se le ha dotado en esta nueva versión de la capacidad de hibernación (como los osos). Así pues, es posible grabar automáticamente el estado del emulador al salir y recuperarlo nada más arrancar. Levantas la tapa y a funcionar... o algo así. Para ello, crea en el directorio local un fichero llamado JSpeccy.szx, que puede cargarse en cualquier emulador que soporte snapshots en formato SZX.

· Se puede elegir si se quiere mapear el teclado del PC al del Spectrum, para no tener que aprenderse combinaciones de teclas, o bien usar un modo más tradicional, con la tecla May (izquierda) haciendo de Caps Shift y May (derecha) en el papel de Symbol Shift (esta peli no tiene bella, solo bestias).

· Carga de cintas en formato CSW RLE y Z-RLE

· Grabación y carga de bloques en formato CSW (RLE y Z-RLE) en las cintas de tipo TZX. Además de como hasta ahora, poder grabar datos en DRB's, estos tipos de bloques permiten almacenar la información de la cinta a mayor frecuencia de muestreo (48 Khz para los CSW Z-RLE frente a los 44.1 Khz para los DRB) ocupando la décima parte de espacio, ya que a la compresión propia del CSW se une la de la librería ZLib. Pero, debo deciros, creo que solo JSpeccy soporta los bloques CSW en los TZX. Desde luego, los emuladores más populares en los que estais pensando, no lo soportan. :)

· Hay una nueva caja de diálogo para poder introducir POKEs a discrección.

· Nuevo diálogo para poder ver y editar cualquier parte de la memoria del Spectrum en hexadecimal. La columna de direcciones puede verse en decimal pulsando con el ratón en la etiqueta Dirección de la correspondiente columna. Los datos se actualizan una vez por segundo, lo que significa que puede verse con una simple inspección qué partes de la memoria se están modificando en ese momento (si el emulador no está en pausa, claro). Naturalmente, la actualización no es en tiempo real entre otras cosas porque los cambios son tan rápidos que no se vería nada de nada. Pulsando en cualquier valor hexadecimal o ASCII se muestra su dirección exacta en hexadecimal (decimal) y su valor, también en hexadecimal (decimal). Es un editor, recuerda, de modo que no solo permite ver... (creo que también es el primer editor hexadecimal full-equip integrado en un emulador).

· El diálogo del catálogo de cintas tiene ahora una barra de herramientas extraíble del diálogo, para que lo sitúes donde más cómodo te venga.

· El menú de cinta tiene una nueva opción de recarga automática. Cuando se está haciendo algún desarrollo y se quiere recargar la nueva versión de la cinta esa opción facilita la tarea.

· El soporte de snapshots en formato SZX ha sido actualizado a la versión 1.4 de las especificaciones. Se soporta también en los SZX la configuración del Interfaz I y, todavía de forma no oficial, de los bloques de RAM de la extensión LEC. El autor de Spectaculator y creador del formato SZX ya tiene la propuesta de inclusión de esos nuevos bloques en la especificación oficial.

· La carga rápida de cintas ha sido acelerada un 30% aproximadamente.

· El icono de la cinta en la barra de estado ahora se activa cuando hay una cinta en el reproductor y señala mediante colores cuando la cinta está en modo reproducción y cuando en modo grabación.

· En los diálogos de selección de archivo a grabar se pone automáticamente una extensión por defecto cuando no se especifica ninguna de las válidas. Estas son: szx, para snapshots; tzx, para cintas; scr, para imágenes; mdv, para Microdrives y bin, para ficheros binarios.

· Se han añadido varios atajos de teclado para acciones frecuentes.

· No estaríamos hablando de un producto informático si no habláramos de los errores corregidos (lo siento, las peoras siempre son desconocidas):

  • Los efectos del borde en alta resolución no se veían en modo ULAplus
  • Corregido y mejorado el tratamiento de series repetidas de codigos DD/FD y cuando no van seguidos de un código valido para IX o IY. También se corrige un error en el estado de contención de las instrucciones INC/DEC (HL).
  • Corregido un error en la emulación del Multiface 128 en modo 128k. Faltaba por emular un puerto.
  • Se han añadido modificaciones para cumplir los puntos 10 y 12 de la especificación TZX.
  • Ciertos efectos de alta resolución en Buzzsaw+ y Boxzle ahora se ven correctamente.
  • Solucionado un error potencialmente destructivo en la opción Limpiar Cinta
  • Añadidas comprobaciones durante la carga de ficheros TAP, TZX y SZX para rechazar ficheros defectuosos.
  • El último pulso en un bloque DRB no se grababa en el TZX.
  • El número de versión menor de los TZX se grababa incorrectamente como 0x20.
  • Se comprueba que las cintas no sean de solo lectura antes de intentar escribir en ellas.
  • Se ha corregido un problema con el sonido del efecto de ruido de carga.
  • Se ha corregido un error en la grabación de snapshots en formato Z80 cuando el modelo de Spectrum era +2a o +3.

Dado que se han añadido más partes configurables, es necesario borrar el archivo JSpeccy.xml que tengáis ahora.
Se han hecho muchas cosas más a nivel interno pero, en lo tocante a lo percibido por los usuarios, creo que por esta vez es todo. ¡Feliz navidad y próspero año nuevo!.