VIDEO-CARTRIDGE
TURBOSOFT
Por XT5 y ZZT
A finales de los 80s y principios de los 90s, Turbo Soft, una empresa Chilena creada por tres amigos Argentinos, fabrico una serie de productos paracomputadores de la linea Atari, dentro de los cuales estaba el Video Cartridge. Este era un sistema que comprendia una cinta de video VHS y un cartridge, que se conectaba alreproductorde VHS. El objetivo final era cargar los juegos desde la cinta VHS a una gran velocidadyfiabilidad, pero era imposible cargar mas juegos en la cinta o modificar los ya existentes y, ademas, si se intentaba copiar la cinta, usando dos VHS, se perdia la fiabilidad de carga.
El sistema consiste de un cartridge que se inserta normalmente en el slot correspondiente, sin ningun tipo de modificacion o adicion, exceptuando que de el sale un cable que tiene un conectorRCA macho. Ese RCA se enchufa a la salida de video (video out) de cualquier reproductor VHS (pasapeliculas en la epoca). Se enciende el Atari con la tecla OPTION presionada y se le da play a la cinta ya mencionada. De esta manera la informacion digital (juego) contenida en la imagen grabada en la cinta de video es transferida de forma serial al cartucho, el cual la convierte a paralelo y la vuelca a la memoria del Atari. Una vez se carga todalainformaci�n, el juego se ejecuta y sale en pantalla. Suena simple, pero no lo es tanto. Lo que si podemos admirar es que para la epoca era un dispositivo dificil de creer que hicera lo que hace y mas encima hecho en Chile.
Si quiere saber que juegos contiene la cinta, aqui esta el manual.
Al final de esta pagina encontrara mas imagenes.
HISTORIA
Un dia, en el foro de Retrogames aparecio uno de los creadores del dispositivo, Marcelo Waldbaum, quien nos aclaro varias dudas y nos conto como se gesto el proyecto. Aqui un estracto de lo que el posteo.
Turbo Software fue una empresa
donde trabajamos Mauro Pieressa, Pedro Caravall, Roberto Domingues y yo Marcelo
Waldbaum.
Trabajamos durante muchos anos desarrollando Software y
Hardware para los Atari 8 Bits.
Desarrollamos para Atari Chile el Sistema
de Carga de Cassette Turbo Tenis, los cartuchos de varios juegos, el memory
card, el Light pen y nuestro proyecto mas interesante que fue el video
cartridge: sistema que cargaba programas desde una video cassettera a altisima
velocidad. Tambien escribimos la revista Turbo News que se distribuia en el
pais.
El video Cartridge
fue el proyecto que nos dio mas satisfaccion, pues creo que sin duda fue el mas
innovador. Siempre tratabamos de resolver el costo del almacenamiento de la
informacion, la velocidad de carga que en Atari era todo un tema y la calidad en
la carga de los programas. Un dia me estaba duchando y se me ocurrio la idea de
almacenar informacion en cintas de Vhs y parti a la casa de mi Socio Roberto
Domingues a conversar el tema... Al rato despues ya estabamos grabando barras en
las cintas y reproduciendo la informacion mirando asombrados en el osciloscopio
la calidad de la reproduccion que el video nos entregaba y vimos la posibilidad
de desarrollar el producto. Primero partimos con simples barras que nos daban
algunos ceros y unos en la lectura en forma sistematica y logramos leer varios
Kbytes de informacion sin alteracion en la data. Estabamos super contentos con
la idea y el proyecto y lo viable que era.
A los pocos dias empezamos a
generar la placa de control y el software para el Video Cartridge. Se lo
presentamos a Jaime Vallarino encargado de Productos en Coelsa y quedo
encantado, incluso habia planes de transmitir esta senal en algun programa
infantil educativo para que desde las casas se pudieran cargar programas, pero
esto nunca llego a consolidarse. Me acuerdo que lo desarrollamos en un verano
dos anos despues que desapareciera el Atari del mercado comercial en
Chile.
Nuestro mayor desafio fue la grabacion del video. El problema que
tuvimos era que si haciamos un master y reproduciamos este master en nuevas
cintas la informacion perdia mucha calidad y las tasas de errores subian mucho
por lo cual bajaba la tasa de seguridad en la carga.
Nos cabeceamos un
buen tiempo para resolver que cada VHS fuera un original grabado directamente
desde el computador, y al final lo logramos.
Coelsa tenia en stock el
primer Hard Disk externo que existio para la marca Atari, y se lo compramos. Nos
conseguimos una interfaz que permitia mediante el bus paralelo conectarlo a un
computador 8 Bits y grabamos toda la informacion de los 300 juegos en el disco
duro. Entonces hicimos un software de grabacion que leia los programas a medida
que los enviaba a varios VHS obteniendose en cada uno de ellos la primer
generacion del video osea masters en cada copia. Claro que era medio peligroso
pues solo teniamos un Hard Disk y no era facil conseguirlos en esta epoca pero
resistio muy bien a su trabajo.
Roberto Domingues que es nuestro giro sin
tornillos desarrollo todo el Hardware que fabricamos, Mauro Pieressa fue el
encargado de hacer compatible todos los juegos al Video Cartridge trabajo muy
tedioso y yo realice el software de la rom del Video Cartridge y el sistema de
grabacion... Que epoca... lastima que no lo desarrollamos 5 o 10 anos antes...
creo que este proyecto pudo haberse vendido muy bien si hubieramos dado el golpe
en el momento mas indicado, aunque igual vendimos muchisimas unidades...
Si quiere leer el hilo completo click aqui .
Recientemente, Marcelo waldbaum, programador y disenador de este invento, asistio a una de nuestras reuniones anuales y nos conto algo mas sobrelasdosversiones del video catridge. Una no tiene correccion de errores y la segunda tampoco, pero esta tiene la particularidad de enviar el bloque de informacion tres veces, de tal manera que el programa cargador chequea por error CRC y si determina que el primer bloque esta fallado (arruga de la cinta por ejemplo) usa el segundo y si este tambien falla usa el tercero. Esta fue una gran innovacion con respecto al la primera version.
INSTRUCCIONES DE USO
- Conectar el VHS a un TV
- Poner la Cinta en el VHS y ubicar el juego que
queremos cargar avanzando o retrocediendo; cuando este listo presionar STOP o PAUSE
- Insertar el Video
Cartridge en el slot de cartruchos del Atari y enchufar el RCA que sale de el a la salida de video del VHS
-
Encender el Atari con la tecla OPTION presionada (la pantalla permanece en negro)
- Poner Play en el VHS
-
Una vez sale el juego en el Atari, poner STOP en en VHS
- Listo para jugar
INFORMACION TECNICA
De estos video cartridges hay dos versiones. La primera que llamaremos "sin resina" por que venia sin resina y la "con resina" ya que el cartridge estaba rellena de ella, para impedir la copia del sistema. En la primera version a modo de anticopia, borraron los numeros de los chips, sin embargo aparecio uno que si los tenia lo cual nos facilito mucho obtener la informacion que aqui expondremos.
Paso 1 y 2: circuitos esquematicos y ROM's
Version 1 - sin resina
Cartridge sin resina ROM
Formato de la imagen que contiene los juegos en la cinta de VHS version 1, sin resina
Esquematico
Version 2 - con resina
Cartridge con resina ROM
Lamentablemente, por el hecho de estar relleno de resina, es imposible sacarle
fotos al circuito. Se intento "picotearla" pero el siguiente fue el resultado: lado
componentes y lado soldaduras.
Formato de la imagen que contiene los juegos en la cinta de VHS version 2, con resina
Video de la primera vez que se cargo un juego usando todos los componentes
originales.
Paso 3: desensamblando la ROM, lo basico....
La
primera parte relevante que hace la ejecucion de este cartucho es
copiar 0x792 bytes desde 0xA07F (justo despues del texto de Turbo
Software y las iniciales del autor) a 0xD800 y luego salta hacia alla.
En
0xD800 se ejecutan 3 funciones (DAE6,DBDC y DA88) que tienen como
objetivo parchar parte del codigo, por que querria parchar el codigo de
si mismo??? simple: por ofuscacion (ofuscacion es una medida anti-copia para entorpecer la ingenieria inversa).
Por ejemplo miremos parte
de la funcion 0xDB4B (la principal encargada de leer los datos del
video desde el hardware del cartucho)
RAM:DB4B PHA
|
Como se puede apreciar la ofuscacion basicamente enmascara las
direcciones 0xA000 (donde hace polling al bit7) y 0xDB50 (donde se
setean los "modos" del cartucho) por 0xD301 que es el PORTB..De esta manera algun curioso incauto
quedara confundido al tratar de mirar un listado del codigo.
En
un principio trate de parchar a mano, pero me aburri en la mitad porque
era una tarea tediosa, asi que busque en internet un "core" de 6502 y
comence a escribir un pequeno emulador para que me ayudara con esto y
los pasos que vienen.
Aqui esta un binario del codigo que va en 0xD800
ya desofuscado por si alguien quiere disfrutar un rato revisandolo con un
desensamblador.
Paso 4: entendiendo los registros propios de este
cart.
Los registros que anade este cart son los siguientes:
D50Xh
donde X
corresponde a 4bits cuya funcion es la siguiente
bit0 (LSB): cuando se escribe un 1, la EPROM del cartdridge
es deshabilitada, cuando se escribe un 0 se vuelve a habilitar.
bit1: en 1 habilita el shift register (U7),
en 0 lo deshabilita.
bit2: en 1 habilita la 'senal de actividad del video', esta senal puede ser leida como
el bit7 de A000, 0 la deshabilita.
bit3(MSB): al poner este bit en 1 la senal RD4 del cartridge se pone en
baja, al ponerlo en 0 se pone en alta.
Esta informacion fue obtenida mediante el analisis del esquematico
y luego comprobada desensamblando y emulando la ROM.
La
logica del cartucho solo se habilita tomando las lineas de direccion e
ignora las datos, dentro de la ROM este registro activado haciendo
lectura, y las unicas combinaciones que utiliza son 0xD503, 0xD505, y
0xD509
Paso 5: Formato en que se reciben los paquetes contenidos
en el video
Partamos por la unidad mas pequena, que en este caso es un paquete de 64
bytes:
00h: direccion que pude ser en los rangos (1 a 7Bh, A0h)
01h....3Eh: datos
3Fh:
checksum
el
checksum es simplemnte los 8 LSB de la sumatoria de los bytes desde 0
hasta 3Eh y una vez calculado el checksum se procede a negar cada uno de
los 64 bytes de un paquete.
Luego se forman bloques que consisten en
3 paquetes con direccion
A0h
123 paquetes (desde el 1 al 7Bh)
Los datos de estos paquetes se almacenan temporalemte en un
buffer de la siguiente manera:
paquetes con direccion A0: se almacenan en 0xDC04
paquetes con
direccion 1 a 7Bh: se almacenan en su buffer con la siguiente formula 0xE100+x*3Eh.
Paso 6: Formato de los datos dentro de los
bloques
------
Esta seccion esta en construccion, hasta el momento he desesamblado todo
el
cart, tambien lo he emulado por soft, pero falta mucho mas... por favor
opinen y pregunten lo que estimen en
el foro.
Manual y listado de juegos.
Aporte de Frognum
Aporte de Toledo