emulacion:creacion_de_ficheros_tzx_en_linux

Creación de ficheros de cinta TZX en GNU/Linux

Hoy en día, el sistema operativo GNU/Linux está teniendo un gran auge entre los usuarios de ordenadores personales. En este artículo se va a tratar de orientar al usuario de este sistema operativo en la manera de poder crear sus propios ficheros de cinta en formato TZX y, de esta forma, poder colaborar en la preservación de programas.


Primero de todo, hay que decir que en este artículo se va a suponer que disponemos de un sistema operativo GNU/Linux correctamente instalado en nuestra máquina. Y que además sabemos manejarnos en él con cierta soltura: manejar comandos desde una consola, compilar un kernel, etc…

El objeto desde artículo es fomentar en lo posible el uso de herramientas nativas para GNU/Linux, pero el abanico de estas utilidades es muy escaso, aunque se puede recurrir a otros artificios como emuladores para poder usar herramientas de otros sistemas operativos de las que GNU/Linux no dispone (lo cual puede ser motivo de un futuro artículo).


En este caso es obligado disponer de una tarjeta de sonido con entrada de línea (LINE-IN) bien configurada en nuestro equipo. Cualquier tarjeta (incluso las integradas en la placa base del ordenador) debería disponer de ella.

Además necesitaremos un reproductor de cassette (ya sea un walkman, el mítico Computone o, incluso, el propio cassette integrado del Spectrum +2A) y un cable de audio con dos jacks de 3.5mm (son como los de los auriculares de un walkman), uno en cada extremo del cable. El cable que se suministraba con el propio Spectrum 16K/48K nos puede valer perfectamente.

Un extremo de este cable se conectará a la salida EAR (u OUT) del reproductor de cassette y el otro extremo del cable deberá ir a la entrada LINE-IN (o de línea) de la tarjeta de sonido de nuestro ordenador.

Ahora queda configurar el sonido en GNU/Linux, pero antes un pequeño receso para contar brevemente algo sobre el sistema de sonido del kernel de Linux.

El kernel de Linux, actualmente en su rama 2.6, dispone de dos tipos de sistemas de sonido: OSS y ALSA. OSS es el sistema de sonido que se viene usando desde versiones anteriores del kernel y al que ya no se le da soporte en el kernel (aunque sí dispone de una versión comercial que lo hace) y se apuesta a favor del uso de ALSA.

ALSA (Advanced Linux Sound Architecture) es un sistema sonido completamente nuevo, hecho desde cero y con soporte para gran cantidad de tarjetas de sonido tanto antiguas como actuales (cosa que no se puede asegurar de OSS).

Pero lo más interesante es que ALSA tiene soporte para emular OSS, por lo que con el sistema ALSA podremos seguir usando aplicaciones que hayan sido realizadas especifícamente para OSS, como es nuestro caso. Este hecho nos va a ocurrir con algunas de estas aplicaciones por lo que es importante que si usamos ALSA, verifiquemos que disponemos de la emulación OSS, ya que sin ella las aplicaciones como MakeTZX no funcionarán pues no han sido realizadas para utilizar ALSA, sino OSS.

Para confirmarlo ejecuta en una consola de GNU/Linux el siguiente comando:

$ grep -i oss /usr/src/linux/.config

y se debería mostrar unas líneas como éstas (en algunas puede aparecer '=y' en vez de '=m' y viceversa. El caso es que no aparezca un '=n'):

CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_SEQUENCER_OSS=y

Si no, toca compilar el kernel con estas opciones modificadas y rearrancar el ordenador.

Sobra decir que si no usamos ALSA y usamos sólo OSS, no hará falta hacer ningún cambio de lo que se ha dicho anteriormente pues ya tenemos instalado el sistema de sonido nativo que usarán las aplicaciones que empleemos.

Hecho este breve paréntesis seguimos con la configuración del sonido: ahora toca ajustar el volumen. Es importante que el volumen de la entrada de línea esté activado a un nivel medio-alto, ya que suele ser bastante común olvidarse de modificar este volumen y por tanto no oiremos por los altavoces nada de lo que el ordenador esté digitalizando a fichero TZX.

Una vez hecho todo esto ya podemos probar si tenemos bien configurado todo el apartado de sonido. Pondremos una cinta cualquiera en el reproductor (recuerda subir también el volumen del reproductor), pulsaremos PLAY y ejcutaremos el siguiente comando en una consola:

$ rec prueba.voc

y una vez escuchado algo de sonido, pararemos el cassette con el STOP, pulsaremos CTRL+C en la consola para parar la grabación y reproduciremos el archivo recién grabado con:

$ play prueba.voc

Si escuchamos el sonido del contenido de la cinta podemos seguir a la siguiente sección. Si no, habrá que seguir probando. Recomiendo volver a leer esta sección revisando cada uno de los pasos realizados.


MakeTZX es un programa desarrollado por el grupo italiano de programación RAMSOFT que nos permitirá transferir los programas desde la cinta a fichero TZX de una manera, como veremos, bastante sencilla y sin requerir apenas interacción por parte del usuario.

Para ello, nos dirigiremos hasta su página web, donde elegiremos la opción MakeTZX y buscaremos el enlace que nos permite descargar la versión GNU/Linux de esta utilidad (a día de hoy la versión 2.31 es la más reciente para el sistema operativo que nos ocupa, a pesar de estar la 2.33 tanto para DOS como para Windows. Aun así la versión de la que disponemos funciona de maravilla).

Ya sólo nos falta descomprimirlo en un directorio temporal y copiar el fichero 'maketzx' contenido en ese directorio recién creado a un directorio contenido en nuestro PATH de ejecución, por ejemplo, a /usr/local/bin. A su vez otorgaremos los permisos de ejecución y propietarios pertinentes y que creamos convenientes para poder usarlo, pe.e, como usuario y no requerir privilegios de ROOT cada vez que queramos usarlo.

Una vez hecho esto ya podremos usar el programa y lo podremos probar ejecutando simplemente:

$ maketzx

con los que nos aparecerá un listado de opciones como el siguiente:



Ya mismo se podría afirmar que hemos llegado a la parte más sencilla de todo el proceso de creación de archivos TZX, pues la mayor parte de las ocasiones consistirá en ejecutar un simple comando en la consola de nuestro ordenador y de pulsar PLAY en el reproductor de cassette.

Como se ha visto en el apartado anterior, la utilidad MakeTZX dispone de una serie de opciones de las que apenas usaremos un par de ellas y las demás sólo serán necesarias en caso de complicación en el proceso de transferencia.

El comando que usaremos más habitualmente es el siguiente:

$ maketzx -a -r <fichero.tzx>

donde con la opción '-a' indicamos al MakeTZX que autodetecte el tipo de carga del programa (cosa que hace bastante bien si la soporta), con '-r' le decimos que procese el sonido de carga en tiempo real y, finalmente, será el fichero donde queremos almacenar el TZX resultante.

Es muy importante no usar nunca jamás la opción '-b' pues esta opción crea archivos TZX imperfectos que serán directamente deshechados por las páginas que preservan estos programas.

Cuando ejecutemos ese comando y antes de poder empezar la transferencia, nos aparecerán en pantalla un par de ecualizadores, significando uno el volumen y el otro el clipping.

El significado del volumen es obvio y no deberá ser ni muy bajo ni muy alto, con ponerlo sobre el 75% del total es suficiente.

El clipping por su parte indica que la señal puede estar demasiado distorsianada y puede aparecer recortada con lo que sería defectuosa y, por tanto, provocar erores de carga.

Un truco consiste en pulsar PLAY en el reproductor y escuchando sonido de carga, bajar el volumen a 0 (tanto de ordenador como del reproductor) e ir incrementando ambos hasta que ambas barras de ecualización tengan unos valores aceptables. Recomiendo consultar la ayuda del propio MakeTZXdonde se explica este proceso de afinación claramente.

Una vez realizado este ajuste (no será necesario hacerlo cada vez que queramos usar MakeTZX, salvo que cambiemos los volúmenes antes mencionados), podremos pulsar y comenzar la conversión de nuestro programas.

En este momento, MakeTZX se pondrá en modo de escucha y es en este momento cuando debemos pulsar PLAY en el reproductor con la cinta del programa que queremos transferir.

A medida que se oye el sonido de carga, en la pantalla iremos viendo diferentes datos según el programa se va cargando. Una vez finalizado el proceso de transferencia bastará con pulsar de nuevo la tecla con lo que el proceso se dará por finalizado y dispondremos de un flamante archivo TZX listo para ser cargado en nuestro emulador favorito.

A continuación se muestran algunos ejemplos de juegos transferidos a formato TZX, cada uno de ellos condifernetes formatos de carga para comprobar el buen funcionamiento de la utilidad MakeTZX.


Target Renegade (Imagine Software) target_renegade.tzx

Tipo de carga: Estándar de ROM + Custom loader

Como se puede apreciar en este juego, los primeros bloques son de carga estándar de la ROM pero las fases están grabadas en un formato turbo. Además este formato turbo tiene una cabecera casi inapreciable (con pausas de apenas 1ms) pero que el MakeTZX detecta perfectamente.

Aquí vemos como el Target Renegade carga perfectamente y sin errores en el emulador FUSE:


Desperado (Topo Soft) desperado.tzx

Tipo de carga: Estándar de la ROM

En este caso podemos ver que aunque el juego cargue de un modo colorista y aparentemente no estándar, se comprueba que el modo en que fue grabado fue con la velocidad y el formato estándar de la ROM, excepto por el hecho de que el último bloque no tiene cabecera.

Y a continuación se muestra la colorista carga del Desperado que, como hemos dicho antes, es simplemente un bloque de datos estándar de la ROM pero cargado de una forma diferente:


Ramparts (GO!) ramparts.tzx

Tipo de carga: Alkatraz

Y finalmente tenemos un caso de carga un poco más complejo. Como vemos en el proceso de carga en tiempo real del programa, el MakeTZX autodetecta que se va a cargar un programa con sistema Alkatraz y se coloca en ese modo de proceso.

También se aprecia que el último bloque del sistema Alkatraz se muestra una interrogación antes del campo Length. Esto indica que el bloque no lleva un CRC que calcular y que el MakeTZX no puede determinar si es correcto. Pero no significa necesariamente que la carga sea incorrecta.

Bastará cargarlo en un emulador y comprobarlo por nosotros mismos como hacemos a continuación:


  • La utilidad MakeTZX no puede procesar cargas muy complicadas o de las que desconoce su formato. Como por ejemplo, el sistema Poliload de juegos como Rescate Atlántida o Astro Marine Corps.
  • Cualquier tutorial referente al MakeTZX nos sirve para esa versión en cualesquier sistema operativo de esta utilidad, pues todas las versiones tienen las mismas opciones y operan de igual forma.
  • Si conocemos de antemano el formato de carga del programa que queremos transferir, pordemos obligarle al MakeTZX a que use ese formato con la opción '-l' seguida de la letra que corresponde al tipo de formato. En este caso, no sería necesario usar la opción '-a'.
  • Los filtros digitales que incorpora MakeTZX son útiles para cintas deterioradas o cargas que se resisten, aunque no esperéis milagros. Me remito a la documentación y a los enlaces que se indican más abajo para su conocer más información sobre su uso.
  • Lo repito de nuevo: nunca, nunca jamás en la vida useís la opción ('-b') de embellecer los ficheros TZX, pues no respeta la perfecta preservación de los programas al transferirlos al ordenador.
  • Y, finalmente, recomiendo vivamente que todos los programas que se transfieran, sean enviados a cualquier página web que se ocupe de su preservación como pueden ser El Trastero o SPA2.


Josetxu Malanda
Noviembre 2004
MagazineZX #10

  • emulacion/creacion_de_ficheros_tzx_en_linux.txt
  • Última modificación: 20-03-2009 13:23
  • por sromero