Skip to content

Cargas especiales en el ZX Spectrum para sortear la piratería en el software

septiembre 2, 2010

Es a partir del año 1983 y como consecuencia de la creciente piratería de software tanto en el Reino Unido como en otros paises europeos, cuando las compañías de software han de devanarse los sesos para encontrar un remedio que pusiera fin aquella tendencia, de forma que sus productos no tuviesen que ser copiados por los medios convencionales que existían entonces, tanto programas copiones creados por algunos usuarios como por programadores que creían que con aquellas utilidades los usuarios se mentalizarían de utilizarlos solo con el propósito de crear copias de seguridad de los demás programas existentes en el mercado, ante posibles fallos de la copia original por simple deterioro de la banda magnética de la cinta o también ante una posible pérdida de la misma.

Lo que no tardaron en descubrir muchos de los usuarios de aquellos copiones fue la posibilidad de hacerse con juegos sin tener que pagar por ellos, aun cuando se excusaran diciendo que era mucho más asequible que comprarse el original en las tiendas, para lo cual se hacían con programas prestados o intercambiados con otros usuarios y amigos, y se los grababan en cintas de las que se usaban normalmente para grabar música (de las de 60 o 90 minutos). Sin embargo, pronto aparecieron usuarios con ganas de lucrarse con sus propias copias realizadas bien de forma artesanal o usando otras artes, y empleando para ello estos mismos copiones o la copia “cinta a cinta”, empleando en este caso dos pletinas, una para reproducir el original y la otra para realizar su grabación. Incluso, se llegó a la piratería industrial (en la que no solo se desprotegían videojuegos comerciales y después los vendían más baratos, sino que además les alteraban desde textos hasta algunos gráficos modificando incluso el copyright de los mismos para luego venderlos en masa tanto en quioscos como tiendas del gremio con una bonita presentación e incluyendo un cuadernillo por lo general un tanto chorra), pero este es un tema algo más extenso y que pasaría a formar parte de otro artículo para el blog.

Ante esta situación, muchas casas de soft buscaron fórmulas para proteger sus juegos, desde sistemas anti-MERGE, pasando por especializar las cargas de sus cintas, usando otros métodos. Esos métodos iban desde codificar o encriptar los bloques donde se almacenaban los datos del programa junto con su pantalla de presentación (de forma que si alguien se atreviese a penetrar en él sin usar el cargador específico para ese juego, se encontraría con datos sin sentido), hasta crear sistemas de carga más avanzados y novedosos.

Entre los diversos sistemas de carga empleados, nos encontramos los conocidos sistemas “turbo-load”. Mediante software, los datos del juego comercial se graban a mayor velocidad de la normal y con un sistema de detección de cabeceras, flags y bytes específicos según los desarrolladores de estas técnicas. Ese mismo software se usa posteriormente como cargador obligatorio para la posterior carga de esos mismos datos, manteniendo en primer lugar el cargador BASIC con las instrucciones necesarias para leer los datos de este cargador y ejecutarlo acto seguido. En otras ocasiones, es el mismo cargador BASIC el que contiene esos datos, almacenados junto con las instrucciones y algunas variables del sistema o dentro de lineas REM y debidamente protegidos contra miradas indiscretas.

Por tanto, en un juego comercial, hay que distinguir varios casos:

A)

Los que mantienen el sistema de carga estándar según la ROM del ordenador. En este caso, la estructura de almacenamiento de un conjunto de datos estándar viene definida de la siguiente manera:

– Tono guía de cinco segundos
+ 18 bytes de datos (especifican el tipo y el nombre de programa -hasta 10 bytes-, linea de autoejecución -en su caso-, dirección inicial -en su caso- y longitud en bytes)
+ tono guía de dos segundos
+ datos del programa.

Tipo: Programa, Bytes o arrays, también llamado Datas.

La velocidad de transmisión en todos los casos es siempre de 1.500 baudios, la estándar. Son muchos los juegos almacenados de esta manera, desde el primer videojuego aparecido en el mercado hasta el último de todos y sus instrucciones para su carga desde el mismo cassette son las básicas del ordenador: LOAD “” y LOAD “”CODE.

B)

Aun dentro del sistema estándar empleado por la ROM del ordenador, a distinguir los programas que no necesitan de cabecera para ser cargados. Se prescinde de la información que nos puede ofrecer un bloque de código, reduciéndose éste al simple bloque formado por un tono guía de entre 2 y 5 segundos y los bytes del programa, incluyendo el mismo flag de detección del último byte. Ocasionalmente, este mismo flag puede tener otro valor.

Necesariamente, se requiere de una rutina concreta en código máquina para cargar estos bloques de código, basándose en la estructura siguiente:

LD IX,(dirección inicial)
LD DE,(longitud del bloque en bytes)
LD A,255 <——- valor estándar del flag de detección del último byte
SCF
CALL 1466 <—— llamada a la rutina de la ROM encargada del almacenamiento de datos desde casete

JP (dirección de comienzo) <—- en muchos programas, esta instrucción es incluida al final de esta rutina encargándose de ejecutar directamente el juego o aplicación inmediatamente que haya sido almacenado en memoria, sin necesidad de volver al BASIC para ejecutar un simple RUN USR nn o RANDOMIZE USR nn.

C)

Los que requieren de estos sistemas novedosos. Hasta ahora conocemos cerca de seis de ellos:

Bleepload: Sistema de carga utilizado por Firebird a partir del año 1986 en casi toda su producción realizada a partir de ese año, incluyendo sus lanzamientos dentro de sus sellos subsidiarios Silverbird y Rainbird. El código almacenado se divide en numerosos bloques de corta longitud pero unidos entre sí por un brevísimo “spas” en forma de tono guía. En pantalla se va mostrando el estado de la carga mediante un contador hexadecimal dentro de un recuadro y avisa cuándo hay error. Por lo general, hay dos conjuntos almacenados de esta forma. El primero de ellos contiene la pantalla de presentación, mientras que el segundo ha de tener los datos del programa principal. Tras el último bloque de código se sucede un tono guia de mayor duración, pero no influye en la ejecución del juego.

Alkatraz: De los más conocidos. Empezó a utilizarse con los primeros juegos de U. S. Gold a partir de 1986 y se extendió a otros sellos como The Edge que también lo incorporó en sus juegos. La estructura es siempre la misma: un cargador BASIC protegido en el que se incluye una extensa rutina de código máquina en su interior. Seguidamente, le sigue un bloque sin cabecera pero grabado a gran velocidad. Tras un largo compás de silencio, un brevísimo tono guía de apenas 1/10 de segundo avisa de la carga del resto del código a la misma velocidad que el bloque anterior, y nos damos cuenta de que está cargando cuando va surgiendo en la pantalla la correspondiente presentación artística, apareciendo ésta de forma secuencial pero de una manera sorprendente, siendo distinta en cada juego. Una vez la pantalla de presentación se ha completado, figurará en un apartado de la misma un contador decreciente hasta cero, mientras se mantiene el borde en color negro.

Injectload: Usado por CRL Group PLC en varios de sus juegos, algunas versiones parecidas se han visto en algunas producciones de Mirrorsoft. Este método de carga es bastante peculiar.

Powerload: Sistema de carga turbo empleado por varias compañías de software, tales como Quicksilva, Argus Press, Incentive Software y Bug-Byte a partir de 1984. La velocidad de transmisión de datos alcanza los 3.600 baudios. El umbral para la lectura de datos a altas velocidades está por debajo de los 6.000 baudios, pero a estas velocidades, es más fácil que se produzcan errores durante la carga y solo sería necesario emplearlas en la emulación.

SpeedLock: Este sistema ha sido el más empleado y es de los primeros en aparecer, justamente durante 1984. Del mismo se han desarrollado varias versiones y muchas compañías de software la han incluido en sus programas y juegos. Ultimate Play The Game, U.S. Gold, Ocean y tantas otras compañías fueron las encargadas de ofrecer un sistema novedoso de carga de sus juegos y con ello intentar paliar los efectos de la piratería. Es bastante reconocible en sus primeras versiones por sus “tonos pulsantes”. Las últimas versiones de SpeedLock incluyen un contador de tiempo decreciente o una barra de estado.

Softlock: Firebird, Electronic Arts y Ariolasoft usaron este método de carga “turbo” en varias de sus producciones. Es un simple sistema de carga turbo cuya velocidad de transmisión no llega a los 3.000 baudios, pero es suficientemente rápido.

Otros más específicos:

(a) Hewson SoftLoad (Cybernoid, Exolon, Nebulus… usan esta técnica: incluyen un contador decreciente por cada bloque de código grabado con la velocidad y estructura estándar de la ROM)

(b) Elite Load System (1942, Ghosts’n Goblins, Scooby Doo son claros ejemplos de ello: se encripta los datos dentro de un mismo bloque y a velocidad normal de 1.500 baudios. El cargador incluido tras el programa BASIC se encarga de desencriptarlos durante la carga de este bloque que contiene tanto pantalla de presentación como datos del juego).

(c) Search Loader: Creado por Steve Marsden y David Cooke a partir de la publicación de “Technician Ted” para Hewson Consultants. Durante el proceso de carga hay un contador de tiempo, y al mismo tiempo se puede leer tanto argumento como instrucciones del juego, sin precisar de una pantalla de carga de calidad, aunque no siempre sea así. Varios juegos tanto de Hewson como Gremlin Graphics han asimilado este sistema de carga un tanto especial.

(d) Dinamic Turboload: Preocupados por el problema que les podía inferir la problemática de la piratería de software, los hermanos Ruiz decidieron incluir un sistema anticopia a base de incluir una carga ultrarápida en sus juegos, siendo Yenght el primer juego en contar con dicha protección y fue usado casi sin interrupción hasta bien entrado 1986 que prescindieron de este sistema y usaron otros distintos.

(e) Lenslock: Fue Firebird la impulsora de esta protección anticopia y algunos de sus programas tuvieron el privilegio de contar con ella, como Elite o el OCP Art Studio. Al comprarlos, además de la hoja de instrucciones y la cinta, se incluía un dispositivo con unas lentes especiales. Tras cargarlos en nuestro ordenador, en la pantalla aparecían unos caracteres que debíamos teclear según las especificaciones dadas por el fabricante, pero tan deformados que se necesita de esta lente especial para poder leerlos. No tuvo mucho éxito porque era engorroso de utilizar y en más de una ocasión se pusieron a la venta partidas que incluían lentes defectuosas o correspondientes a otro programa, produciéndose las consiguientes quejas de los compradores.

(f) UnilODE: Es el característico de los juegos creados por Domark para su serie de lanzamientos del Trivial Pursuit.

(g) ZydroLoad: Usado por New Frontier en algunas de sus producciones, como The Light Corridor.

Sin embargo, con el tiempo, estas protecciones no sirvieron de mucho, tras averiguar los “hackers” cómo funcionan cada uno de estos sistemas y cómo desproteger entonces aquellos juegos. Pero tras la aparición de los primeros interfaces “transfer” como el Transtape y el Multiface que facilitaban enormemente el “trabajo” de desprotección y transferencia de programas de un formato a otro (de cinta a cinta, de cinta a disco, de cinta a microdrive y viceversa), ya no había protección que valga.

Enlaces relacionados:

Protecciones anticopia en el Spectrum 48K
The .TZX Vault (ver sección Loading Scheme lists)
Creación de ficheros de cinta TZX en GNU/Linux
ZX Spectrum Loading Schemes
WOS: Tape Decoding

Anuncios
6 comentarios leave one →
  1. septiembre 2, 2010 7:07 pm

    Curioso e interesante tu repaso a las rutinas de carga… te has olvidado el curioso “Zydroload” de New Frontier, que lo que hacía era cargar a menos velocidad que la carga normal.

  2. septiembre 2, 2010 7:24 pm

    Documentado en esta página. Gracias Raul por la reseña.

    http://newton.sunderland.ac.uk/~specfreak/Schemes/docs/zydroload.html

  3. septiembre 3, 2010 1:30 am

    Yo es que en aquel tiempo era pequeño, pero ¿Cual era la dificultad de grabar con doble pletina algo mas rápido? ¿Quizá que la minicadena no grababa bien la señal a alta velocidad al ser sistemas “analógicos”?

  4. septiembre 3, 2010 2:38 am

    Dependiendo siempre de la calidad de la minicadena. Yo recuerdo hace ya un montón de años haber probado varios reproductores con doble pletina y calidad estéreo y con solo unos pocos los juegos de carga rápida no quedaban demasiado bien, teniendo que ir cambiando de equipo hasta encontrar el que menos problemas daba a la hora de grabar y ver que cargaban las copias sin problemas.

  5. septiembre 3, 2010 1:55 pm

    Muy buen artículo. En su momento el sistema de carga que más me impresionó fue el Alkatraz, que vi por vez primera en Fairlight. Las primeras veces que lo cargué me quedaba embobado mirando la pantalla de TV. El Search Loader utilizado en Ranarama o Deflektor era también increíblemente curioso. Como increíble era la inventiva de los programadores para proteger sus juegos y, a la vez, hacer de la carga un proceso entretenido, al menos las primeras veces.

    Puestos a ser puntillosos, me habría gustado que analizases otros dos sistema de lo más peculiares: el utilizado por Topo Soft en Spirits también tiene su miga, ilustrando la carga de los primeros bloques en una pequeña TV y luego prosiguiendo con una carga sin bordes, aunque sin contador y a velocidad normal. La del Vega Solaris se lleva la palma por su ultrafrikismo, con un matamarcianos al que se puede jugar ¡mientras el juego se carga! Si eso llega a verse en 1985 u 86 los autores de la idea se habrían llevado un premio 😉

  6. septiembre 3, 2010 5:49 pm

    Y en el AMC de dinamic se podia jugar a una version numérica del mastermind, ¿no?

Publica aquí tu comentario (SPAMMERS NOT ALLOWED)

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: