-La EPROM del cartucho se mapea a 0xA000-0xBFFF (RD5 esta en alto), y se ejecuta desde alli.
-La ROM en 0xD800-0xFFFF y 0xC000-0xCFFF es deshabilitada y en su lugar queda mapeada RAM (PORTB.0=0)
-Se copian 0x792 bytes desde 0xA07F a 0xD800 y se salta hacia alla.
-Son llamadas 3 rutinas que auto-parchan el codigo, es una ofuscacion al codigo, para dificultar la ingenieria inversa.
-Es inicializada una tabla con 0x78 punteros, cada uno de estos punteros es un bloque de datos (0x3E bytes cada bloque), los elementos de la tabla son los siguientes:
0xE100
0xE13E
0xE17C
---
0xFDD2
-Se envia el valor 9 al registro de control del cart, esto deshabilita la EEPROM del CART (0xA000-0xBFFF) y la zona baja de cartuchos (0x8000-0x9FFF), esto lo hace la misma logica del cartucho poniendo RD5 y RD4 en bajo.
-Pone en cero el area entre 0x700 y 0xBFFF (en otras palabras limpia toda la RAM)
-Seta algunas variables del sistema
-Comienza a cargar un XEX desde el cart!
-Loop1:
>Lee los 6 primeros bytes, verifica que los dos primeros sean 0xFF 0xFF y guarda en variables las direcciones de carga.
>-Loop2:
>>-Carga los datos a la direccion actual de carga, y la incrementa.
>>-Compara la direccion de carga actual con la direccion final, si no coinciden salta a Loop2.
>-Si la direccion de carga era cero salta a Ejecutar.
>-Verifica que los 3 bytes que vienen digan "FIN", de ser asi salta a FIN.
>-Salta a Loop1
-Ejecutar:
-Salva algunas variables temporales.
-Copia 0xDA16-0xDA34 a 0x3C0+0x3DE
-Inicializa algunas variables del sistema.
-Salta a 0x3C0
-(en 0x3C0 ):Habilita la ROM (0xD800-0xFFFF y 0xC000-0xCFFF), habilita BASIC.
-Llama la funcion que fue indicada en el bloque del XEX.
-Deshabilita la ROM (0xD800-0xFFFF y 0xC000-0xCFFF), deshabilita BASIC.
-Restaura las variables temporales.
-Salta a Loop1
-FIN:
-Inicializa variables del sistema.
-Copia de 0xD98B-0xD9B4 a 0x3C0-0x3E9
-Salta a 0x3C0
-(en 0x3C0 ):Habilita la ROM (0xD800-0xFFFF y 0xC000-0xCFFF), deshabilita BASIC.
-Inicializa algunas variables del sistema.
-Salta al entry point indicado en el bloque XEX.
La lectura del video no aparece descrita en el bloque anterior, esta se hace desde una funcion que es llamada cada vez que lee un byte del "fichero" (en Loop1 y Loop2), esta funcion va agregando los datos al buffer del bloque que corresponda (los de la tabla), y como cada bloque tiene un indice y un checksum, los bloques se pasan mas de una vez y asi el sistema tiene redundancia.
---
vitoco, tienes toda la razon el atari si puede generarlo (no se porque tenia en la cabeza que los de turbosoftware lo habian hecho con un ST), lo que pasa es que en todos lados donde describen tecnicamente el atari ponen 192 lineas de resolucion

la explicacion del formato de los bloques en el video estan el post 1.
ZZT, porque no dumpeas el cart "tipo 2", es muy facil, solo tienes que poner el switch en RD5 y usar mi programa que esta en post del cart turbosoftware convertido a grabador. no tienes que romper el cart solo intervenir RD5. tienes por alli un fotograma capturado del video de ese cart??