JSpeccy v0.93 Edición "RetroMadrid 2014"

¡Bienvenidos a la RetroMadrid 2014!. La principal novedad de ésta RM es que, por primera vez, no me la voy a perder. :D

Cualquier oportunidad es buena para sacar una nueva versión del emulador, especialmente ésta que ha tenido una gestación tan larga y tortuosa. Pero si además coincide con un evento tan reseñable como la RM, miel sobre hojuelas.

La versión 0.93 trae algunas cosas nuevas que me han sido solicitadas en varias ocasiones:

  • Argumentos en línea de comandos, para poder integrar el emulador con otras utilidades. Incluídos los parámetros -h / --help para poder saber qué opciones se pueden poner.
  • Soporte de Drag & Drop de archivos TAP/TZX/CSW/SNA/SP/Z80/SZX/ROM.
  • Como consecuencia de la primera novedad, he tenido que situar el archivo de configuración, JSpeccy.xml, en un lugar fijo, para que al ejecutar el emulador desde la línea de comandos, siempre encuentre dicho archivo y no vaya creándolo por ahí a troche y moche. No obstante, hay un detalle importante a tener en cuenta. Si en línea de comandos solo ponemos un archivo a cargar (de cinta, snapshot o ROM), el emulador arrancará con la configuración que tengamos en el archivo. Si hay alguna opción más, arrancará con las opciones por defecto, como si acabara de crear el archivo de configuración y habrá que poner todas las opciones que necesitemos o deseemos. El archivo se creará en el $HOME del usuario en Linux (y supongo que en MAC) y en Windows en C:\Documents and Settings\nombre_usuario_sesion
  • Traducción al italiano, cortesía de Alessandro Grussu. Muchas gracias, Alessandro.
  • Emulación correcta de los bits 3 y 5 del registro F en las instrucciones SCF/CCF. Esta emulación se ajusta a lo observado en los procesadores de Zilog. En los NEC podría ser diferente. Gracias a Patrick Rak por su investigación al respecto y los programas de test.
  • El formato de archivos SZX se ha actualizado a la versión 1.5, que permite preservar la información necesaria para poder emular el punto anterior.
  • Emulación completa, ahora sí, del registro oculto MEMPTR. Gracias de nuevo a Patrick por los programas de test.
  • Se ha añadido una opción para poder desactivar las preguntas de confirmación de acciones.
  • Se ha añadido una opción para invertir el estado del bit EAR durante la carga de TZX. El único juego que conozco que necesita esto es el Forbidden Planet, pero quién sabe si hay alguno más.
  • Añadido soporte para la carga de archivos de snapshot en formato SP, propio del emulador VGASPEC de Pedro Gimeno.
  • Al hacer doble click en el icono de cinta de la barra de estado, se abre el diálogo de catálogo de cinta.
  • Añadida una opción para que al abrir un archivo de cinta, el emulador inicie la carga automáticamente. Se acabó eso de reiniciar y teclear LOAD "" (snif!).

Por el lado de las correcciones y mejoras esto es lo que hay:

  • Se ha mejorado la emulación del subsistema de sonido, de manera que siempre se generan el número exacto de samples de sonido en cada frame. De hecho, ahora se utiliza la tarjeta de sonido para lograr una mejor temporización que mediante el metodo anterior. No obstante, el método anterior se sigue utilizando en el caso de que se deshabilite el sonido. Gracias a esta mejora he conseguido emplear con éxito el emulador para reproducir cintas TAP o TZX y cargarlas, a la vez de hecho, en el emulador y en el Spectrum real, usando la salida de auriculares del PC. Solo hay que desactivar la carga rápida y elevar lo suficiente el volumen del PC.
  • Gracias al ínclito Misco Jones de nuestro buen y querido amigo Radastán, descubrí un pequeño bug en la emulación del beeper. De paso, he intentado mejorar un poco el filtro para evitar algunos efectos extraños que se oían a veces.
  • Gracias al tema musical del Carlos Michelis descubrí un error en la emulación de AY-3-8912 que provocaba que algunas cosas sonaran ligeramente fuera de tono. Como suele pasar con el AY, lo que parecía un problema engorroso de solucionar, la cosa derivó en muchas horas de trabajo que finalizaron con una modificación a dicha emulación que la intenta hacer más perfecta. Si lo he conseguido o no, vosotros diréis.
  • En Windows ya no es necesario tener un thread lanzado para conseguir una temporización adecuada.
  • Corregidos algunos errores en el modo de mapeo a teclado PC a Spectrum.
  • Arreglado un error de excepción en el manejo de timeouts.

Acabaré con un par de recomendaciones. Para ejecutar esta versión del emulador es necesario Java 7 y os aconsejo que instaleis la última versión que haya (Java 7u55 en este momento). No hay problema en usar Java 8, que también he probado.

La segunda recomendación es para aquellos a los que gustaría asociar en Windows las extensiones propias del emulador, para que éste se abra automáticamente haciendo doble click en el administrador de archivos. El usuario Kyp lo explico en este mensaje: Asociar extensiones en Windows a JSpeccy.

¡Feliz RetroMadrid 2014!