Antes de nada hemos de aclarar que la Intellivision de Mattel es una de las consolas que más trabajo nos ha dado para explicaros su hardware. ¿El motivo detrás de ello? El hecho de usar chips propios inéditos en otros sistemas. Sin embargo, se trata de un sistema fascinante, el cual tuvo la mala suerte de caer en manos de una juguetera que con el tiempo no se tomó en serio los videojuegos.
¿Qué es la Mattel Intellivision?
Diseñada para Mattel en 1978 por Dave P. Chandler como respuesta a la VCS de Atari, la Mattel Intellivision se lanzó en 1979 bajo un precio de 299 dólares. Lo que le permitió aparecer con un hardware más avanzado que el de su rival. Su mayor particularidad es que buscaba ofrecer juegos mucho más complejos que los de su rival y con un nivel gráfico muy superior para la época. Algo que se puede ver con observar la compleja circuitería del sistema.
Estando una multinacional juguetera como Mattel detrás del proyecto, lo lógico es pensar que fue un éxito en su dia, pero nada más lejos de la realidad. Si por algo se recuerda el nombre de Atari en videojuegos y es sinónimo de una época, es por algo. Y es que Mattel nunca pudo con el auge de ventas que tuvo la VCS gracias a la conversión de Space Invaders para dicha consola tras arrasar en los salones recreativos.
Y es que mientras que el total de unidades vendidas de la Intellivision no supero los 3 millones de unidades, la Atari VCS (2600) en toda su vida comercial llego a los 30 millones. No obstante, se trata de una consola que desde el punto de vista tecnológico merece echarle un vistazo, pese a ser una rareza tecnológica.
CPU de 16 bits, pero a menos de 1 MHz
En la primera generación de videojuegos se llenó el mercado de máquinas clónicas del Home Pong de Atari gracias a que General Instruments, el proveedor de su chip, empezó a venderlo a otras empresas, sobresaturando el mercado y llevando al divorcio total de GI con la empresa de Nolan Bushnell quien decidió apostar por el MOS 6507 (una versión recortada del MOS 6502). No obstante, GI no se rindió y termino por conseguir que su CPU terminase ni más ni menos que en la consola de Mattel, la Intellivision.
Se trata de una CPU cuando menos particular, para entenderlo mejor hemos de tener en cuenta que toda instrucción de una CPU se suele componente por un opcode, que incluye la acción a hacer y el dato. En las CPU de 8 bits, si por ejemplo queremos mover un dato a un registro, tenemos, por un lado, 8 bits que marcan el opcode (esto da hasta 256 valores) posibles.
Sin embargo, ciertas instrucciones pueden tener variantes dentro de un mismo microprocesador:
- Diferentes formatos o variantes, como operaciones en diferentes tamaños de datos, lo que resulta en múltiples opcodes para una sola instrucción.
- Los opcodes pueden variar según el modo de direccionamiento utilizado (directo, indirecto, relativo, etc.), lo que permite acceder a diferentes operandos o ubicaciones de memoria.
El set de instrucciones del GI CP1600/CP1610 deriva del utilizado en el PDP-11, un potente miniordenador de Digital Equipment Corporation que soporta todos los modos de direccionamiento, acceso a los datos, para todas las instrucciones. Lo que lleva a que con 256 opcodes posibles se quede corto, de ahí a que sea de 16 bits, lo que en teoría debería poder codificar hasta 65.536 opcodes. No obstante, solo tiene codificados 1024, es decir 10 bits. Por lo que cuando se encuentra leyendo la parte inicial de una instrucción, los 6 primeros bits son 0.
Registros en el GI CP1600/1610
El set de registros de la CPU de General Instruments es de solo 8 registros (de R0 a R7), cada uno de ellos de 16 bits de tamaño y con las siguientes funciones:
- R0 es el acumulador que utiliza para realizar operaciones aritméticas.
- R1 a R3 son registros de propósito general, sin ninguna función específica. No obstante, algunas instrucciones los utilizan para el direccionamiento indirecto.
- R4 y R5 tienen la particularidad de incrementar su valor en 1 cada ciclo de reloj, por lo que son ideales para usarlos como contadores.
- R6 es el Stack Pointer o puntero a pila.
- R7 es el contador de programa.
No obstante, lo que llama poderosamente la atención en la Intellivision, y esto es algo que veremos más adelante, es que Mattel uso ROMS basada en palabras de 10 bits, en vez de usar palabras de 16 bits. Esto significa que fuera del contador de programa y el puntero a pila, la gran mayoría de la circuitería del procesador se ve desaprovechada en la consola.
Una CPU a menos de 1 MHz
La particularidad del CP1600 es que se trata de una CPU de 16 bits, dado que la longitud de sus registros y su bus de datos era de ese tamaño. Sin embargo, debido a que utiliza un empaquetado de 40 pines, la gente de General Instruments tuvo que hacer una serie de recortes. El más conocido es su velocidad de reloj, la cual es solo de 895 KHz, es decir, por debajo del MHz. Sin embargo, dicha afirmación es incorrecta y es producto de inexactitudes y del desconocimiento.
El motivo de ello es que el CP1610 utiliza una señal de reloj de dos fases a 1.79 MHz (0.559 microsegundos) pero en las especificaciones técnicas del chip dan los tiempos de cada instrucción en microciclos donde cada uno tarda 1.12 microsegundos, lo que significa una frecuencia de 895 KHz por microciclo.
Acceso a la memoria RAM
La explicación por la cual la gente de General Instruments decidió usar una compleja señal de reloj en dos fases para su CP1600/1610 se puede deducir mirando cómo están organizados los pines del chip.
Tanto el bus de datos como el de direccionamiento utilizan los mismos pines (D0 a D15), donde uno accede durante una fase de reloj y el otro en la otra. Lo cual se traduce en dos cosas:
- La CPU de la Intellivision puede direccionar la misma cantidad de memoria que sus contemporáneas, 64 KB.
- Por otro lado, su bus, al ser de 16 bits, en teoría debería poder transmitir datos a la misma velocidad que otros chips contemporáneos al GI CP1610, como fueron el 8080, el 6502 y el Z80, que tienen un bus de 8 bits.
En todo caso, ya hemos visto que la velocidad de reloj puede ser engañosa. Ya que depende de la cantidad de ciclos de reloj que sean necesarios para ejecutar una aplicación y es aquí donde nos encontramos con el verdadero problema de la CPU de la Intellivision y el motivo por el cual se considera extremadamente lenta.
El secreto del GI CP1600
La Intellivision pese a venderse bajo la marca Mattel, se trata de un diseño donde todos sus chips son de General Instruments, incluyendo la memoria RAM, la cual debido la forma de acceso a la misma que tiene el CP1600/1610 tiene que ser un chip a medida.
Por lo que esta también usa una fase de reloj en dos fases, y los pines para direccionamiento y datos son los mismos. Lo cual es producto de usar un empaquetado de 40 pines para un diseño de 16 bits con tal de ahorrar costes. Pues bien, si nos vamos a las especificaciones de RA-3-9600, veremos que:
- Es del tipo SRAM, lo cual es normal en las primeras consolas de videojuegos.
- Almacena 352 palabras de 16 bits, es decir, 704 bytes.
- Utiliza un reloj en dos fases a la misma velocidad que la CPU de Intellivision, con la que está sincronizada.
Sin embargo, la CPU de Intellivision tiene un secreto, puede funcionar a 5 MHz, que es la velocidad para la que fue diseñada en origen, pero en la Intellivision, en cambio, es sumamente baja. ¿A qué se debe esto? Pues al hecho que la RAM que lo acompaña funciona a la velocidad que funciona. Sin embargo, en la época los diseños con una velocidad de reloj muy alta se hacían para compensar si necesitaban una gran cantidad de ciclos de reloj para acceder a la RAM.
El gran punto débil de la CPU de Intellivision
Sabemos que el CP1600 y sus variantes se diseñaron para funcionar a frecuencias más altas, pudiendo llegar hasta los 5 MHz (2.5 MHz por microciclo), pero se decidió optar por una velocidad mucho más baja para evitar el sobrecalentamiento.
Pensad que Mattel no iba a pagar de más por la refrigeración de un juguete como es una consola de videojuegos. Lo que llevo a una bajada del rendimiento general en la CPU de Intellivision.
- La arquitectura del CP1600/CP1610 usa diferentes estados del bus (como NACT, BAR, DTB, etc.) para controlar el acceso a la memoria y la ejecución de instrucciones.
- BAR: Dirección del bus (Bus Address Request)
- NACT: No Access (espera o sin acceso activo)
- DTB: Transferencia de datos del bus (Data Transfer)
- Cada uno de estos estados del bus requiere 2 ciclos de reloj o 1 microciclo. Esto significa que cada operación en el bus necesita 2 pulsos del reloj para completarse, donde cada uno de ellos dura 0.4 microsegundos.
- Un ciclo completo de lectura de memoria (BAR-NACT-DTB-NACT) necesita de 4 ciclos de reloj, por lo que el tiempo total es de 1.6 microsegundos.
- Si bien el ciclo de memoria es más lento que otras CPU de la época, que sueles ser de 1 microsegundo (1 MHz) esto se compensa con el bus de 16 bits de datos.
Pensad que la velocidad de cada microciclo en la Intellivision es de 1.12 microsegundos, en vez de 0.4 microsegundos. Es decir, a 2.5 MHz por microciclo. En conclusión, el microprocesador de la Intellivision funciona a un 36% de lo que debería funcionar para ser competitivo con sus semejantes.
Mapa de memoria de la Intellivision
La Intellivision utiliza un mapa de memoria cuando menos particular, dispone de solo 704 bytes de memoria RAM, sin embargo, no es la única memoria disponible dentro del sistema y un vistazo al mapa de memoria de la consola nos lo confirma.
No obstante, hemos decidido traducir los datos para dejar más claro el mapa de memoria de la consola, el cual nos revela que dentro de un mismo direccionamiento hay varias memorias distintas aparte de la ROM del cartucho y la RAM del sistema.
Dirección | Descripción | Tamaño |
0000 – 003F | STIC CHIP | 64 bytes |
0040 – 00FF | No usado | 192 bytes |
0100 – 01EF | 8 BIT RAM | 240 bytes |
01F0 – 01FF | SOUND I/O CHIP | 16 bytes |
0200 – 035F | CONTROL RAM (16 BIT) | 352 bytes |
0360 – 03FF | No usado | 160 bytes |
0400 – 04FF | EXEC ROM Extension | 256 bytes |
0500 – 05FF | No usado | 256 bytes |
1000 – 1FFF | EXEC ROM | 4 KB |
2000 – 2FFF | No usado | 4 KB |
3000 – 37FF | Graphics ROM (GROM) | 2 KB |
3800 – 39FF | Graphics RAM (GRAM) | 512 bytes |
3A00 – 3FFF | Mapeado para GRAM adicional | 1.5 KB |
4000 – 47FF | No usado – Expansión de Cartucho | 2 Kilodecles |
4800 – 5FFF | Programas Especiales | 6 KB |
6000 – 6FFF | ROM del Cartucho | 4 KiloDecles |
7000 – 7FFF | Expansión del Cartucho | 4 KiloDecles |
8000 – EFFF | Teclado | 28 KB |
F000 – FFFF | Programas de Prueba | 4 KB |
Los cartuchos de Intellivision y la EXEC ROM
Los cartuchos de la consola de Mattel requieren una explicación por si misma, ya hemos comentado antes que codifican su memoria en decles en vez de bytes, lo que significa que no usa palabras de 8 o 16 bits, sino de 10 bits.
Esto además es una maniobra por parte de GI para convertirse en el proveedor único de los cartuchos de la Intellivision. No obstante, dicha particularidad no solo se encuentra en los cartuchos, sino también en la EXEC ROM. En todo caso, la consola no necesita, para su funcionamiento, operar con cifras que vayan más allá del rango entre el 0 y el 1023. Pensad que otros sistemas de la época operaban en un rango entre el 0 y el 255 cuando se trataba de hacer cálculos.
En cuanto a la EXEC ROM, no son más que 4 Kilodecles de memoria (5 KB) donde se almacenan las rutinas más comunes en los juegos, una forma de ahorrar en el tamaño de los cartuchos. No obstante, la mayor particularidad de los cartuchos de la Intellivision era el hecho de estar formados por 2 chips distintos, donde el primer chip contenía siempre el programa, pero el segundo una extensión del mismo o gráficos exclusivos para el mismo diferentes a los de la ROM de gráficos incluida en el sistema.
Audio en la Intellivision
El sonido en la consola de Mattel se lo debemos al AY-8910, al cual ya le dedicamos un artículo entero, el cual podéis consultar aquí).
STIC, el chip gráfico de la Intellivision
El STIC (Standard Television Interface Chip) o también conocido como AY-3-8900 es el chip gráfico encargado de generar los gráficos de la Intellivision junto al AY-3-8915 que se encarga del color de los mismos. La velocidad de reloj es de 3.58 MHz, justo la misma que su rival, el TIA de Atari. No obstante, por su naturaleza se podría considerar que se encuentra a caballo entre los chips gráficos basados en motores de sprites y el TIA de Atari, estando más cercano a los primeros.
Se trata de una de las primeras consolas de videojuegos en soportar lo que con el tiempo llamamos sprites. Estos son mapas de bits de objetos en movimiento en pantalla, ya sea por el hecho que están ejecutando una animación o se desplazan por cualquier posición de la escena. El STIC tiene la particularidad de poder manejar 8 objetos en movimientos al mismo tiempo, los cuales pueden ser de 8 x 8 o 8 x 16 píxeles, es más, puede manejar todos ellos en la misma línea de escaneo.
Como curiosidad, all igual que el VCS el STIC tiene un mecanismo de detección de colisiones que activa cierto registro cuando dos de estos objetos coinciden en la misma posición de pantalla. Lo que evita tener que codificarlo a mano en los juegos.
¿Cómo se generaban los gráficos?
El funcionamiento es el mismo que el de los sistemas basados en terminales de texto, por lo que al contrario de otros sistemas más avanzados como el TMS9918A, el cual se barajó para la Intellivision en vez del STIC, aquí no tenemos una tabla de sprites. Simple y llanamente, el CP1600/1610 escriben en total unas 240 posiciones en pantalla en el espacio de memoria que va desde las direcciones $0100-$01EF durante el periodo VBlank. Lo cual se traduce en 20 patrones en horizontal (160 píxeles) y otros 12 en vertical (96 píxeles) con hasta 16 colores distintos en pantalla.
Cada una de las 240 posiciones contiene unos 16 bits de información (480 bytes en total) que pueden mostrar la información de dos maneras distintas, el primero es llamado Foreground/Background Mode. El cual permite acceder a los 64 patrones en la GRAM o a los 64 primeros de la GROM.
Eso sí, el STIC solo tenía registros para 8 patrones de 8 x 8 en total. Por lo que se debía componer cada línea de escaneo con esos 8, independientemente de si son objetos en movimiento o no. Lo que supone, junto a su baja resolución, en el mayor punto débil de la Intellivision.
La GROM de la Intellivision
La GROM es una memoria ROM de 2 KB dentro de la circuitería de la Intellivision, la cual contiene en su interior hasta 256 patrones de 8×8 píxeles, incluyendo caracteres alfanuméricos, que los juegos pueden utilizar libremente. Lo cual sirve para ahorrar espacio de memoria en los cartuchos.
No solo contenía dicha información gráfica, sino que el proceso de generación de gráficos en pantalla se encontraba codificado en la GROM, a la cual accedía la CPU para automatizar el proceso en cada fotograma. Por lo que los desarrolladores no tenían que preocuparse de codificarlo a mano y era otra forma de ahorrar espacio en el cartucho.
Más allá de la Intellivision
Mattel nunca supo qué hacer con la Intellivision, hasta el punto en que tomo una serie de decisiones o más bien una falta de ellas por la enorme confusión en la que se encontraban. Por ejemplo, en 1981 se les ocurrió diseñar y presentar un add-on que costaba la friolera de unos 600 dólares de la época que convertía la Intellivision en un ordenador.
Su enorme coste proyectado era debido a que no solo era teclado y unidad de casete, sino que tenía en su interior un MOS 6502 con unos 16 KB de RAM, el sistema estaba pensado para que los desarrolladores utilizaran tanto el CP1610 como el 6502 de manera combinada, lo cual complicaba mucho las cosas para los desarrolladores de juegos. Además, por ese precio existían opciones mucho mejores para quienes quisieran tener un ordenador.
Se trata de un proyecto que no vio la luz, y Mattel decidió centrarse en el diseño de su ordenador Aquarius, el cual fue llevado a cabo por otro equipo de diseño en la juguetera, por lo que debemos considerarlo un proyecto distinto. Por lo que decidieron centrarse en dos proyectos distintos que serían la Intellivision III y la Intellivision IV. Ninguna de ellos salió al mercado, aunque la Intellivision III sí que fue terminada como producto final.
Y ahora os preguntaréis… ¿Dónde está la Intellivision II? Pues salió al mercado en 1983 y se trata de una versión abaratada de la consola original, por lo que no tiene mejores especificaciones técnicas.
El final de la andadura de Mattel en consolas
En 1982, con la salida de la Colecovision la gente de Mattel se encontraron delante un sistema con una calidad visual muy superior a la que ellos ofrecían y no podían continuar centrando el marketing en su superioridad técnica como habían hecho hasta ese momento. Por lo que para competir, Mattel a nivel interno decidió escalar la tecnología de la Intellivision con tal de competir contra la Colecovision sin problemas. A dicho proyecto lo llamaron Intellivision III dado que la Intellivision II, como ya hemos comentado antes, era la versión de bajo coste.
Sin embargo, Mattel se lanzó hacia atrás, pese a que el hardware llego a terminarse y como podéis ver hubo publicidad y todo. Muy probablemente se vieron influenciados por el declive de Atari que ocurrió en ese 1983 y la idea general que las consolas no tenían futuro que hubo en Estados Unidos por aquel tiempo. Un catastrofismo que afecto a toda la industria americana y que ofrecería el mercado en bandeja de plata a las marcas japonesas.
La consola estaba pensada no solo para ofrecer mejores gráficos que la Intellivision original, sino que además era totalmente compatible hacia atrás e iba a traer la innovación de tener mandos totalmente inalámbricos por primera vez en la historia de los videojuegos. No obstante, el resto es historia.
Con esto terminamos, esperamos que este artículo haya sido de vuestro agrado. Le dedicaremos a la Intellivision III y IV un artículo aparte, por si tenéis curiosidad de ver cómo fueron.