El pasado mas presente que nunca

 

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 para computadores 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 al reproductor de VHS. El objetivo final era cargar los juegos desde la cinta VHS a una gran velocidad y fiabilidad, 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.

click para agrandar

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 conector RCA 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 toda la informació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 sobre las dos versiones 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

click para agrandar

Cartridge sin resina ROM

Formato de la imagen que contiene los juegos en la cinta de VHS version 1, sin resina


Esquematico

a

a

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
RAM:DB4C TXA
RAM:DB4D PHA
RAM:DB4E TYA
RAM:DB4F PHA
RAM:DB50 LDA byte_D301 ; en realidad es D505
RAM:DB53 LDX #$14
RAM:DB55 LDA byte_D301 ; en realidad es A000
RAM:DB58 BMI loc_DB53
RAM:DB5A DEX
RAM:DB5B BNE loc_DB55
RAM:DB5D LDA byte_D301 ; en realidad es A000
RAM:DB60 BPL loc_DB5D
RAM:DB62 LDA byte_D301 ; en realidad es A000
RAM:DB65 BMI loc_DB62
RAM:DB67 LDA byte_D301 ; en realidad es D505
RAM:DB6A LDA byte_D301 ; en realidad es A000
RAM:DB6D EOR #$FF
RAM:DB6F TAX
RAM:DB70 STX byte_DBD8
RAM:DB73 STX byte_DBD9
RAM:DB76 LDA $DE84,X
RAM:DB79 BEQ loc_DB7E
RAM:DB7B RTS ; en relidad es JMP loc_DB50
RAM:DB7C BVC loc_DB58+1 ; en relidad es JMP loc_DB50
RAM:DB7E LDA $DC68,X
RAM:DB81 STA byte_45
............

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