Hace un tiempo atrás 8-bit guy presentó una idea maravillosa, y es diseñar un computador antiguo pero usando tecnología moderna. Es justamente un tema al que le había estado dando vueltas hace tiempo – desde que me puse a programar Prince of Persia para Atari probablemente – y cuando comencé a ver el video sobre este nuevo computador fue como «esto es!». Lamentablemente mientras avanzaba el video vi que tomó rápidamente otra dirección y al revisar el grupo de Facebook en donde se discute el diseño vi que el proyecto se anduvo desvirtuando un poco. Asi que, con los recursos que contamos hoy en día me dije, entonces por qué no crear algo yo mismo?
Vamos un poco más atrás, por qué uno se interesaría en diseñar un computador antiguo? Quién lo va a usar? Para qué se usaría? Parte de las respuestas están en el mismo video, al menos para mi la gracia de un computador antiguo es que sus recursos son escasos, y esa limitación hace que uno comience a pensar en soluciones creativas, es un poco lo que se ha hecho con proyectos como PICO-8. En la actualidad es prácticamente posible hacer lo que a uno se le ocurra en el computador, al no haber límites como que programar en ellos pierde un poquito la gracia, y si bien esto es muy conveniente para hacer software que resuelve problemas complejos y «serios», al mismo tiempo para mi se convierte en algo bastante aburrido. Si, soy cuático, lo sé…
Otro motivo es que los computadores antiguos existentes tienen componentes propietarios que van camino a desaparecer, con el tiempo serán cada vez más escasos y costosos. Por ejemplo chips como el PLA o los VIC de Commodore ya no se fabrican, y aunque existen versiones modernas (del PLA), no se está exento de dificultades a la hora de la compatibilidad.
Ya pero quién lo va a usar?
Sobre la pregunta de quién lo va a usar, la respuesta es muy simple: Yo. Si algún otro loquito se entusiasma, pues muy bien! Pero esto es algo personal primero, si aun me quedan unos 30-40 años de vida hay tiempo suficiente para entretenerme con un proyecto como éste.
A diferencia del proyecto de 8-bit guy éste no es necesariamente un computador para vender. Incluso en sus inicios no necesita existir físicamente, con la tecnología de emulación existente (algo cacho) se pueden integrar los componentes a gusto y trabajar con eso. Si el proyecto agarra vuelo quizás alguien se interese en crear una placa y hacer que el sistema exista físicamente. Sería interesante por ejemplo poder alojar este nuevo computador en carcasas ya existentes y que tienen diseños que me encantan, como la del el C64C o la linea Atari XE, incluso hasta existen carcasas nuevas que son toda una delicia.
Criterios de diseño
Primero, este proyecto no se trataría de un solo computador, sino de una linea de computadores. Hay diferencias de hardware suficientes para distinguir al menos dos generaciones de computadores interesantes: 8 bit y 16 bit. En la generación de 8 bits pensemos en lo que ya existe: Atari 800, C64, ZX Spectrum, MSX y Amstrad básicamente. En 16 bits tenemos principalmente Atari ST y Commodore Amiga. Un nuevo computador para cada generación debería ser similar en tecnología pero con algunos pequeños cambios necesarios. Primero, no se podrían utilizar componentes ultra propietarios como los chips de video (ULA, ANTIC, GTIA, VIC, etc). Segundo, no se podrían utilizar componentes ultra modernos porque violaría el principio inicial de este proyecto, por ejemplo un chip de video como el de la raspberry Pi estaría completamente descartado, en ese caso mejor programamos para Linux con SDL/OpenGL y ya.
Otro criterio importante es la disponibilidad de componentes. Al menos la CPU, el audio y componentes como memoria y otros de más bajo nivel pueden ser «off the shelf». En cuanto a video el tema se vuelve un poco más complicado porque a excepción de hardware como VGA, no hay componentes off the shelf que se puedan usar directamente manteniendo los criterios del párrafo anterior.
Otro criterio es el software al que va orientado. No se necesitan computadores para correr herramientas productivas, para eso tenemos los computadores modernos, por lo tanto modos de texto de 80 columnas o modos de video de alta resolución pero de dos colores no tienen mayor sentido. Sólo se necesita lo justo para correr juegos que se vean bien en sistemas de televisión análogos usando aspecto 4:3.
Finalmente, otro criterio es el factor WOW. Pensemos en que estamos en 1988 y un nuevo computador de 8 bits es anunciado, qué anuncio nos sorprendería y nos haría ahorrar cada día para poder comprar ese computador? Un efecto similar a cuando veíamos los anuncios de revistas como MicroHobby en donde aparecían unas capturas de pantalla fabulosas, aunque al final los juegos reales no eran «tan así». Recuerdo cuando fue anunciado el 130XE, lo primero que uno pensaba era en las capacidades de color y sonido mejoradas, pero al final solamente era más memoria, que casi ningún juego aprovechaba. También está el caso del ST que encabeza este artículo, que en capturas se veía muy bien, pero en la realidad la paleta de colores era mucho más básica de lo que se veía en las capturas, no tenía scroll por hardware y en general era bastante precario comparado con el Amiga.
Por otra parte pienso en equipos como el Amstrad, que en su tiempo no fue tan popular, pero que hoy en día se le está sacando el jugo con juegos realmente extraordinarios, similar a lo que está sucediendo con el C64, entonces por qué no contar con un computador que permita algo similar como base?
Definición de hardware
La definición que viene a continuación es sólo la idea original, pensemos en que sólo lo estoy anotando acá para que en el futuro no se me olvide, pero sirve para dar una linea a seguir o plantear alternativas sobre las cuales discutir si alguien se interesa. Tómenlo como un brainstorming, quizás son combinaciones imposibles o que rompen los criterios ya mencionados, pero el tiempo dirá.
Hardware de 8 bits
- Procesador: MOS 6502 y Zilog Z80, Dual Boot como el C128
- Audio: Stereo. En cuanto a chips hay varias opciones acá, el Pokey existe en bastante abundancia y tiene un sonido muy característico y con herramientas para crear música bastante poderosas. También tenemos los chips basados en OPL en abundancia, en donde se ha demostrado que pueden aportar incluso en el C64 donde ya contaban con el fantástico SID. Por último, el famoso PSG de Yamaha también es una excelente opción y es muy característico del audio de esa época.
- Memoria: 128K
- Video:
- Salida de video compuesto
- 256×192 pixeles
- 16 colores de una paleta de 256 o 512 colores
- Display lists
- Modo bitmap y modo tiled
- Modo texto: 40×24, 16 colores, caracteres redefinibles
- 32 sprites de 16 colores (con 1 transparencia)
- Video Ram: 128K
- Interrupción por linea
- Interrupción vertical
- Scrolling por hardware
- (vaya creo que se parece al chip del MSX2)
- 2 puertos de Joystick
- Joysticks de 2 botones
- Controles análogos (mouse, paddle)
- Sistema de almacenamiento via tarjetas SD
- SDK: BASIC y Assembler
Hay que considerar que el hardware de video está limitado por la velocidad del sistema completo, un procesador como los indicados no es capaz de manejar rápidamente grandes cantidades de memoria, por lo que una alta resolución con muchos colores se topa con el problema de que el procesador necesita varios frames de la pantalla para poder manipular todos los bytes que representan un único frame, por lo que o bajas los frames por segundo o aparece el famoso tearing. Por eso se agrega el modo tiled, un buen modo de texto y display lists, ellos permiten combinar distintos modos de video en una sola pantalla y hacer que el chip de video haga lo mejor que pueda con usando menos memoria.
Por otra parte la similitud del hardware con el existente de esa generación permitiría hacer ports de juegos existentes pero con las mejoras que permitiría este nuevo hardware. Imaginen por ejemplo remakes de juegos originales de 8 bit como Draconus, Montezuma pero usando más colores y mejores opciones de sonido, ya no se tendrían que hacer sacrificios del tipo «música o efectos de sonido». O sin ir muy lejos, ver lo que ya se ha hecho con los isométricos clásicos de ZX Spectrum en MSX2.
Hardware de 16 bit
- Procesador Motorola 68040 a 40Mhz
- Audio: Stereo OPL3 + 2 Canales DAC por lado. Con esto se tiene lo mejor de ambos mundos, se pueden usar samples y sintetizadores sin que sea necesario emular sintes con samples y viceversa.
- Memoria: 4MB
- Video:
- Salida de video compuesto y por componentes
- 320×240 pixels
- 256 colores de una paleta de 262.144 colores
- Display lists
- Modo bitmap
- Modo texto: 40×24, 16 colores, caracteres redefinibles
- Blitter para BitBlt y Fill (sin sprites)
- Escalado y Rotación
- Video Ram: 512K
- Interrupción por linea
- Interrupción vertical
- Scrolling por hardware
- 2 puertos de Joystick
- Joysticks de 2 botones
- Controles análogos (mouse, paddle)
- Sistema de almacenamiento via tarjetas SD
- SDK: C y Assembler
Por supuesto que si bien hay dos generaciones planteadas, no significa que se trabajaría en ambas al mismo tiempo, es conveniente partir de una arquitectura pequeña como la es la de 8 bit y una vez ganada la experiencia – y si quedan ganas – seguir con la generación siguiente… Total, aun quedan 30-40 años para hacerlo.
Ideas locas
Componentes como los procesadores tienen restricciones físicas, principalmente su frecuencia de reloj, aun así se ha logrado crear hardware con estos procesadores overclockeados, por lo que se puede asumir que esto siempre es una posibilidad. Por ejemplo el 6502 normalmente corre bajo 2Mhz, pero perfectamente se puede pensar en que corra a 10Mhz. Lo mismo con el Motorola 68XXX, hay tarjetas de aceleración para el Amiga en donde se obtienen frecuencias mayores que ayudan sobre todo a los juegos que requieren muchos cálculos, como los poligonales.
A continuación dejo algunos videos a modo de inspiración, en donde se puede ver lo que hoy se hace con computadores de 8 bit que ya están bastante limitados, aun así los programadores han logrado hacer cosas que sus diseñadores originales jamás pensaron.
Ver también:
Parte II: Catrin Labs Computers: Chips de Video
Parte III: CLC-88 Micro de 8 bits