JSpeccy v0.91 Edición "Apatruyando la siudá"
Dicen que comer y rascar, todo es empezar. Ahora estoy convencido que también se puede aplicar al verbo "programar". Esta iba a ser una versión menor, la 0.90.1, e iba a llevar algunos arreglos y sugerencias de los usuarios.
Pero empieza uno a liarse, que si ahora arreglo esto, que si luego añado lo otro porque tampoco me cuesta tanto, que si acabo aquello de más allá y la publico... y cuando comparas las diferencias con la última versión te quedas a cuadros. Os prometo que nada de esto estaba planificado.
Así pues, intentaré no olvidarme de nada, empezando por lo más importante y llamativo:
- Debido a las gracietas y particularidades del sistema aperitivo de siempre he tenido que cambiar el manejo del teclado. La verdad es que ahora se parece mucho más al resto de emuladores, pero no ha sido por gusto. El anterior esquema funcionaba en todos los sistemas (¿he contado alguna vez que me han confirmado que JSpeccy también funciona en el sistema operativo zLinux?) excepto en el más usado. Ahora, ambas teclas May hacen de Caps Shift. Las teclas Control hacen de Symbol Shift y la tecla AltGr hace de botón de disparo del joystick seleccionado. Naturalmente, no ha sido fácil, otra vez por causa del mismo (¡qué raro!, ¿no?), pero la solución que he implementado permite usar AltGr en los teclados que la tienen o el Alt derecho que tienen en su lugar algunos teclados para Windows. El resto de sistemas no tienen problemas con la tecla AltGr, bueno, con un matiz; la tecla Meta hace de AltGr en los teclados de los equipos de Apple.
- Otro tema que ha traído su cola ha sido la emulación del bug del 128k que implementé en la versión anterior. He tenido que investigar varios informes de usuarios con problemas con programas que funcionaban en otros emuladores pero no en JSpeccy, y siempre era por lo mismo, el contenido del registro I y la memoria en contienda. Para colmo, esas parecen ser razones necesarias pero no suficientes para que el ordenador físico se reinicie y, realmente, no se conocen todos los condicionantes. Visto lo visto, después de pensar y preguntar opiniones, he llegado a una decisión salomónica: crear una propiedad en el fichero de configuración llamada emulate128kbug y dejarla desactivada por defecto. Como es una de esas opciones arcanas que si no sabes de qué va, mejor no la toques, no tiene manera de ser cambiada desde el emulador. El que quiera disfrutar de esa funcionalidad que edite el fichero a mano y la ponga con el valor true. Ya tenemos la primera razón para borrar el fichero JSpeccy.xml que tengamos.
- Al salir del emulador, ahora se guarda automáticamente la configuración seleccionada del método de zoom y los filtros. Lógicamente, se recupera al arrancar. Esta es la segunda razón para borrar el fichero de configuración.
- La tercera razón para borrar el susodicho fichero es la más reciente. He añadido un menú en el que se puede seleccionar el tamaño del borde que se muestra, configuración que también se guarda automáticamente al salir, junto la información de si en ese momento la ventana está ampliada o no. Para horror de los que no les guste leer, esto va a necesitar de cierta explicación:
- Sin borde: tan simple como suena. Elimina el borde y solo se ve la zona de pantalla. Curiosamente, se ve mejor ampliado que a tamaño normal.
- Borde estándar: proporciona un borde de 32 pixels de ancho a izquierda/derecha y 24 pixels arriba/abajo. Más que suficiente para ver todo los efectos de borde. El único programa que yo conozca que necesita más ancho de borde es el Defenders of the Earth.
- Completo: pinta 48 pixels arriba/izquierda/derecha y 56 abajo. Esto es lo que se supone que un televisor mostraría en el mejor caso algo que, sospecho, no se daba nunca.
- Enorme: pinta 64 pixels a izquierda/derecha y 56 arriba/abajo. Es la resolución que describe el gurú de la ULA, Chris Smith, salvo porque el borde está ampliado horizontalmente de 48 a 64 pixels. Permite ver donde hacen los cambios de borde los programas (dentro de unos límites, claro).
- Como consecuencia de que la Paralactika Demo (gracias a Radastan por el enlace), no funcionaba todo lo bien que debería, he tenido que afinar el redibujado de la pantalla. Cuando todas las otras demos que había probado eran felices con la manera en que manejaba el asunto, esta demo es brutalmente exigente con los tiempos de actualización. Digo, completamente en serio, que cuando queráis saber si una emulación es lo suficientemente buena, probéis esta demo. Y hablo de tiempos menores de 8 t-estados de precisión respecto al momento exacto de actualización (¿existe el momento exacto?. Creo que no, son 4 t-estados...).
- Cuando se abren cuadros de diálogo modales, se detiene la emulación y en la zona de porcentaje de velocidad se pinta claramente la palabra STOP en rojo. Por ejemplo, al abrir el diálogo de configuración.
- Existía un error en el manejo de las ROMs del Interfaz II cuando se pasaba a emular el +2a/+3 y otro más que grababa la ROM del IF2 en los ficheros de snapshot de +2a/+3 en formato SZX y se cargaba indebidamente si existía.
Y esto es todo, amigos. No puedo terminar sin agradecer como siempre la colaboración a varias personas: Radastan, na_th_an, Andrew Owen, Eduardo Acero, Iznogoud y, en general, a los amigos del canal #spectrum del IRC-Hispano, que aún sigue vivo. ;)
