EL SD1
Por Robert Perelegre
El fenómeno
de la piratería no es nada nuevo y prueba de ellos son los diferentes sistemas
de protección que ya incluían muchos de los títulos de Spectrum: sistemas de
carga turbo, anti-merges, cabeceras falsas, checksums... Todos ellos intentando
hacer más difícil la vida a los piratas.
Por encima de todos estos sistemas de protección destaco el SD1 de Dinamic. Una
protección hardware incluida en las primeras versiones del Camelot Warriors.
En este mini-artículo vamos a intentar mostrar el aspecto físico del SD1, explicar su funcionamiento (tanto a nivel Hardware como Software) y analizar el porqué de su no-continuidad.
Hardware
Dentro de un
trozo de conector del bus de expansión de Spectrum se esconde una pequeña
resistencia de unos 1000 ohmios. Su misión consiste en conmutar a masa D5,
uniendo el Pin10 de la cara de los componentes con el Pin6 de la cara de las
pistas. Como consecuencia de ello todos los puertos del Spectrum que no ponga
expresamente el bit D5 a 1 pasaran a tener este bit a 0 (por defecto, en el
Spectrum, todos los bits de los puertos no usados están a 1). Por ejemplo, si
hacemos PRINT IN 255 (por citar un puerto que no se usa) sin el SD1 conectado
obtendremos 255 (todos los bits a 1). Si hacemos lo mismo con el SD1 conectado
obtendremos 223 (el bit 5 a 0).
Como hemos podido observar no era ningún milagro de la ingeniería; pero
funcionaba y además era compatible con la Interface 1.
Para aclarar el tema nada mejor que unas fotos. Originariamente el SD1 tenía los conectores cubiertos completamente por una pasta verde. Mi afán de conocimientos de juventud hizo que pusiese al descubierto la resistencia, tal como se puede apreciar en las fotos.
Software
Así de entrada se me ocurren unas cuantas maneras de detectar el SD1. Por ejemplo, al terminar la carga de juego, leer el puerto 255 y si el bit 5 está a 1 hacer un reset. O leer dicho puerto durante la carga del juego y si está a 1 responder con el famoso "R Tape loading error"....
Pero, ¿cómo
lo hizo realmente Dinamic?. Ellos no utilizaron ningún puerto extraño, sino que
lo hicieron a través del más conocido y utilizado. El puerto 254 ya que
sorprendentemente el SD1 es capaz de alterar el bit 5 poniéndolo a 0 (por
defecto siempre está a 1). De esta forma detectaron la presencia del SD1 al
mismo tiempo que leían el teclado.
Pusieron la detección en tres lugares diferentes del juego :
|
C86C |
IN A,(C) |
|
|
C86E |
LD L,A |
|
|
C86F |
LD H,00 |
|
|
C871 |
EX DE,HL |
|
|
C872 |
LD HL,009F |
{Normalmente tendría que ser 00BF} |
|
C875 |
XOR A |
|
|
C876 |
SBC HL,DE |
|
|
C878 |
JP Z,C87C |
|
|
C87B |
RET |
|
Durante el juego si no tenemos el SD1 conectado el teclado no responderá a ningún comando, por lo tanto el primer pájaro acabará con nosotros nada más empezar el juego. Este es el código que lo hace posible :
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
B0A8 |
LD HL,00FE |
|
|
B0AB |
PUSH HL |
|
|
B0AC |
POP BC |
|
|
B0AD |
IN A,(C) |
|
|
B0AF |
LD L,A |
|
|
B0B0 |
LD H,00 |
|
|
B0B2 |
EX DE,HL |
|
|
B0B3 |
LD HL,009F |
{Normalmente tendría que ser 00BF} |
|
B0B6 |
XOR A |
|
|
B0B7 |
SBC HL,DE |
|
|
B0B9 |
JP NZ,B0BD |
|
|
B0BC |
RET |
|
|
B0BD |
JP B0A5 |
|
En la dirección B0A5, que es donde salta si no hay ninguna tecla pulsada, hay
un CALL 7FC6.
Resumiendo, si el SD1 no está conectado, el juego empieza automáticamente nada más terminar la carga. El primer pájaro nos mata, ya que no nos podemos mover ni usar la espada y el Spectrum entra en un bucle sin fin mostrando el cartelito de las vidas restantes. Interesante, ¿no?.
Si quieres el TZX original del juego (con la protección activa), haz clic aquí.
Compatibilidad
|
Modelo |
Compatibilidad |
|
Spectrum 48K y + |
Funciona perfectamente, faltaría más. |
|
Inves Spectrum + |
El juego funciona perfectamente, ahora bien, el SD1 no es capaz de cambiar el bit 5 del puerto 254 (sí que lo hace en el 255, por ejemplo). Quedando siempre el bit 5 a 1. Por lo tanto el juego se comporta como si el SD1 no estuviese conectado. |
|
Spectrum 128 |
En modo 128 el juego tiene errores gráficos, en modo 48 funciona perfectamente. Ahora bien el SD1 tiene el mismo problema que con el Inves Spectrum +. |
|
Spectrum +2 |
En modo 128 el juego tiene errores gráficos, en modo 48 funciona perfectamente. El SD1 funciona perfectamente tanto en modo 128 como 48. |
|
Spectrum +2A/+2B y +3 |
El SD1 es totalmente incompatible con estos modelos. No deja arrancar el ordenador, quedando la pantalla negra con el borde blanco (como si el botón de reset estuviese pulsado indefinidamente) |
¿Realmente funcionó?
La respuesta
es así de contundente : NO.
Y prueba de ello es que no pusieron el SD1 en ningún otro juego, es más al poco
sacaron otra versión del Camelot Warriors sin esta protección.
En el número 5 de MicroHobby especial publicaron una entrevista a diferentes personalidades (entre ellas alguien de Dinamic) donde comentaron el fenómeno de la piratería y el aquí comentado SD1. Estos fueron los párrafos más interesantes :
(...) el
primero es el máximo dirigente del al empresa SINCLAIR STORE: José
Villar:
(...)
-Sr. Villar, Respecto a los productos de software que precisen algún tipo de
hardware para funcionar (por ejemplo en Camelot Warriors), ¿nota alguna
diferencia en las ventas?
-Lo primero que hay que decir, es que el pueblo español es uno de los más ricos
a nivel mundial en lo respectivo al ingenio. En este programa que necesitaba de
un conector final para su funcionamiento, hemos visto en el Rastro que
era duplicado de una manera totalmente artesanal fantástica con un artilugio de
madera. Fue más difícil pero al final el resultado fue exacatamente igual.
Yo creo que la solución hay que buscarla en la creatividad de origen, es
decir, si se quiere erradicar la piratería de forma total hay que hacer el
juego en EPROM. En este sentido tendríamos que entrar en un
análisis de costos.
(...)
Ahora le toca el turno a Dynamic(*) :
(...)
- A vosotros en particular, ¿en qué manera os perjudica?(Se refiere al
fenómeno de la pirateria)
- Nosotros no tenemos cifras, pero sabemos las cosas que podemos ver,
comprobamos hasta qué punto nuestros programas son blanco de los piratas.
Cuando sacamos el Camelot Warriors, la primera versión llevaba el sistema éste
del protección del "chirimbolito". Cuando éste fue
"polimerizado" empezaron a "comercializar" la copia pirata
sin el chirimbolito. Llegamos al Rastro y vimos que las mesas
de piratas de Spectrum tenían dos programas: el Gunfright de Ultimate, y el
Camelot de Dynamic. Y tenían 100 ó 200 cassettes tirados en
cada mesa. Yo lo que me gustaría destacar, es que los lectores se imaginen que
escriben un libro, y que cuando lo han acabado, lo ven en la estantería del
Corte Inglés muy bonito y bien presentado. Si ese fin de semana van al Rastro y
ven que su trabajo está siendo vendido por unos piratas a 200
"pelas", y que él no percibe un sólo duro podrán comprender en qué
situación estamos.
(*)En la entrevista original se escribió Dynamic en lugar de Dinamic
Articulo original: