Voy a hacer Feedback solamente de lo que se salga del tema de las entradas.

Comentario#1:

¿Wat? ¿La CPU de Gameboy es más rápida que la de Super NES?

¿El Z80 más potente que el 6502? Es que esto tiene miga porque hay una cosa llamada ciclos por instrucción que depende de la latencia con la memoria. Un Z80 con un acceso a memoria tan rápido como el del 6502 lo supera con creces.

¿Sabéis porque el Z80 se hizo tan popular? Por el hecho que hacer un programa en ensamblador requiere menos instrucciones que con el 6502 que tenía un conjunto de registros e instrucciones muy complicados. Por si fuera poco existía un sistema operativo que ya funcionaba en el 8080 del que el Z80 era clónico, el CP/M por lo que era fácil montar un ordenador con sistema operativo+editor+interprete BASIC a finales de los 70, eso si, el Z80 era mucho más caro que el 6502, pero el Z80 era más adecuado para un ordenador doméstico que no el ultra-simple 6502.

Voy a hacer un simil… Imaginaos que el Z80 es cubo de piezas en la que se pueden construir cosas, supongamos que tiene unas 500 piezas distintas, al lado tenemos un 6502 que es un cubo de piezas de 100 piezas distintas pero que se pueden combinar entre si para obtener las piezas que el Z80 tiene de manera más compleja. La combinacion de varias instrucciones en el 6502 para conseguir ciertas instrucciones complejas del Z80 requieren más ciclos de reloj que dichas instrucciones nativamente en el Z80. Pero había una instruccion que hacia el Z80 más adecuada para un ordenador barato. ¿Cual? La instrucción de transmisión en bloques de datos de una memoria a otra. Por ejemplo podían tener una ROM con todos los carácteres del teclado y cuando pulsabas una tecla simplemente el Z80 movía a la parte de la RAM asignada al búfer de imagen el caracter correspondiente en la ROM, esto hacía que para sistemas de hobby el Z80 tuviese mucha popularidad mientras que el 6502 necesitaba de algun chip de apoyo para mostrar gráficos en pantalla.

El 6502 en cambio se lo vendía Chuck Puddle que era su arquitecto jefe a Atari, el caso de Apple es cuanto menos paradigmático, lo escogieron porque era barato pero no existía ningun interprete BASIC bueno en la época para ese procesador. Woznic hizo uno para el Apple I y el Apple II que el propio Wozniac reconoció que era malo pero no tenían otro, por lo que tuvieron que buscar un interprete BASIC que hiciese un tercero y….

AppleSoft

Contrataron a una tal Microsoft que habia hecho un interprete BASIC para el Altair 8800. ¿que era eso?

El Altair 8800 de MITS fue un microordenador diseñado en 1974, basado en la CPUIntel 8080. El interés por este equipo creció rápidamente después de que se presentó en la portada de enero de 1974, de la revista Popular Electronics, con cientos de kits para armar destinados a los aficionados, y se sorprendieron al vender diez veces esa cantidad solo en el primer mes. El Altair también apeló a las personas y empresas que sólo querían un computador y presentó una versión ya ensamblada. Hoy en día, la Altair es ampliamente reconocida como la chispa que condujo a la revolución del computador personal durante los años siguientes: El bus de computador diseñado para la Altair se convirtió en un estándar de facto conocido como el bus S-100. El primer lenguaje de programación para la máquina fue el Altair BASIC, escrito por Bill Gates y Paul Allen, quienes inmediatamente después fundarían Microsoft.

Lo que hizo Microsoft fue adaptar el Altair Basic al 6502, esto hizo que la mayoría de aficionados al hobby que eran capaces de escribir programas en BASIC para el Z80 los pudieran portar al Apple II y es lo que convencio a IBM a contactar con ellos por el IBM PC. Dado que se necesitaban una mayor cantidad de instrucciones por la naturaleza más simple del 6502 no era suficiente con la RAM del Apple II por lo que decidieron crear el Apple II+ y colocar una ROM donde estaba el BASIC de Microsoft.

¿Que otra empresa utilizo el 6502 en sus ordenadores? Atari,  y de nuevo…

Atari inicialmente empezó un proyecto para crear una segunda generación de consola de videojuegos para reemplazar la Atari 2600. Sin embargo, el entonces flamante presidente de Atari, Ray Kassar, decidió competir con Apple y más bien usar el nuevo diseño para construir una computadora doméstica. Esta decisión creó una nueva necesidad ya que toda máquina de este tipo tenía una cosa en común por esa época: todas venían con BASIC.

Ante esta eventualidad Atari hizo lo que otras compañías de computadoras domésticas habían hecho: compraron el código fuente de una versión del Microsoft 8K BASIC para el 6502 con la intención de adaptarlo en sus nuevas máquinas. Sin embargo, aunque la versión original para los microprocesadores Intel 8080 era de 8K, la conversión al 6502 ocupaba más de 11K. Los ingenieros de Atari se vieron ante un gran problema al intentar reducir el BASIC y hacerlo caber en los cartuchos Atari de 8K, entre otras cosas porque el código proporcionado por Microsoft carecía de documentación adecuada.

El motivo por el cual el BASIC ocupaba más memoria era porque el conjunto de instruciones del 6502 era mucho más simple que el del Z80 por lo que para hacer el trabajo de instrucciones que no tenia nativamente el 6502 tenía que combinar varias instrucciones que si que tenía.

En cuanto a SNES, su CPU es un 6502 de 16 bits, es decir, con los registros de 16 bits pero a su diseño se le añadio un elemento que fue una instrucción para transmitir datos en bloque pero no fue una CPU muy popular. Nintendo la escogió en Super Famicom/SNES por un motivo muy pero que muy simple, querían que la consola de alguna manera fuese compatible hacía atrás. La enorme ventaja que tiene en comparación con el Z80 es la velocidad de su acceso a memoria o a cualquier registro asignado a memoria. Pensad que estamos hablando de CPUs sin caches, ni MMUs ni nada de eso, CPUs que operaban al nivel más directo después de los registros con la memoria que es donde se encontraban los registros de los programas.

Comentario#2:

Muy entrenetida y sorprende que ese V Rally de verdad funcione en una GB normalita.

En parte no es muy diferente a esto:

La idea no es otra que la de aprovechar el acceso a la VRAM por parte de la CPU y la instruccion de transmisión de datos en bloque de una memoria a otra para generar un búfer de imagen. Pero en el caso del V-Rally de Game Boy pienso que se hace a nivel de linea de escaneo o de lineas de escaneo porque con 8KB no hay suficiente memoria, aunque…

160x144x2 bits por pixel= 5.7 KB aprox

Pues si, si que cabe en la VRAM de la Game Boy, curioso, muy curioso.

Lo único que no consigo entender de todo es algo que… Bueno, lo voy a confesar, fue lo que envio casi al guano la entrada de SNES. ¿El que? Tecnicamente las S-PPU al ser generadores de patrones/sprites no deberían ser capaces de hacer esto:

images

Porque las S-PPU no soportan un bufer de imagen y el 5A22 no tiene acceso a la VRAM ya que esta fuera tanto del Bus A como del Bus B de dicha consola. A no ser que haya un modo bitmap que sea una versión muy mejorada del original en el TMS9918A/TMS9928A implementado en las S-PPU y no documentado en el SDK.

Comentario#3:

SEGA tenía algunas buenas ideas, sobre el papel claro, pero luego su ejecución era bastante indeseable o chapucera. Creo que una versión de MegaDrive/Genesis portátil para 1998-99 (y al precio que sugieres) hubiera sido un “salvavidas” para SEGA en cuanto hardware, aunque no lo sabremos. Lo cierto es que tanto Game Gear como Nomad fueron los proto-Switch, consolas portátiles que prometían juego de consola de sobremesa (tomando en cuenta que para la época GB = Tetris y Game Gear = Sonic de Master System).

Eso fue la Sega Nomad y no tuvo sentido. En realidad tengo mis motivos para defender el hecho de que Sega en aquellos tiempos deberian haberse aprovechado de rebote del boom de Pokémon con la Game Boy e intentar captar parte del mercado con una Game Gear mejorada. que solventase los problemas de consumo de la primera. En 1998 habían ya pasado unos seis años desde el lanzamiento de la Game Gear y Nintendo estaba vendiendo una portátil a color con más potencia que la Game Gear y que funcionaba solo con dos pilas.

A la gente le sorprenderá mucho lo que digo, pero una Game Gear 2 sin los problemas de la primera, vendiendose a $99 de la época y retrocompatible con la primera vale que no hubiese vendido como Game Boy, pero os digo que al menos entre un 20-25% del mercado de esos años se hubiese quedado e incluso si Dreamcast hubiese petado igual Sega tendria un incentivo para hacer una consola portátil para competir contra GBA y continuar en el mercado.

Claro esta que Nintendo se ha sabido labrar una imagen de invencibilidad, pero es más por incompetencia y malas decisiones de la competencia que por sus logros propios.

Comentario#4:

Urian, ¿la velocidad de la rom influye en la de los chips de apoyo o solo afecta a la cpu?

La velocidad de acceso ha de ir coordinada con la CPU por lo que si. ¿El motivo de ello? En todos los geneadores de patrones/sprites todo funcionaba a un tempo concreto que era el del Color Burst (3.58 Mhz) donde los tempos de cada envio y recepción de datos tenían que ir al compás de esto, esto fue en todas las consolas sin bufer de imagen que iban dibujando la escena a medida que el haz de electrones atravesaba la pantalla. Todo tenía que ir con el mismo pulso o casi con el mismo pulso.

b122_7-512.png

Es decir, no es la velocidad de la ROM lo que afecta a todo, es la necesidad de que todo vaya con el Color Burst lo que afecta a buena parte del sistema. ¿Como se salva Neo-Geo de eso? Utilizando un Line Buffer que permite romper el compás. ¿Como se salva la CPU de Genesis/Mega Drive? Haciendo que esta no tenga que ponerse en contacto con el VDP y que sea el VDP que si que va al compas del Color Burst el que transmita los datos de la Name Table escrita por el 68K en su propia tabla. ¿Otra consola que rompe con eso? Pues la Atari Lynx que también utiliza un búfer de imagen.

Comentario#5:

¿Se pueden crear cartuchos sin ese problema de velocidad o es inherente al formato?

El sistema tiene asignadas dos velocidades de reloj de base, ninguno dispositivo interno o periférico puede ir a una velocidad distinta de esas dos. La tercera que son los 1.79 Mhz son un remanente de cuando se penso a la Super Famicom/SNES para ser compatible hacía atrás con la Famicom/NES.

Comentario#6

Hola Urian:

Agradecerte tus artículos, me enamoran. El tema de hw y las vivencias personales de los equipos humanos de la industria del videojuego me apasionan.

Ya en materia, si pudieras diseñar la máquina 16 bit perfecta para la época de vida de las mismas y con una razonable das de costes ¿cómo te lo plantearías?

Me encantaría ver tu perspectiva al respecto.

¿Que es lo que haría? Os voy a poner para empezar un diagrama.

UrianConsole.png

Os hare un inventario rápido y simplificado de las piezas.

  • 68KU: El 68KU es un 68K modificado que integra una MMU mejorada que reduce la cantidad de ciclos de acceso a memoria de 3 ciclos adicionales a 2 ciclos adicionales haciendo que el tiempo de ejecución de las instrucciones se reduzca.
  • RAM: 64KB de memoria RAM.
  • PGR-ROM: Accesible solo por el 68K, la PGR-ROM contiene los datos que no son gráficos aunque si que contiene los datos de audio que son volcados por el 68K a la Audio RAM al principio de cada nivel.
  • CP (Command Processor): El Procesador de Comandos le una lista generada por la CPU que es almacenada en una memoria interna del propio CP. ¿Su trabajo? Organizar y coordinar tanto al Blitter como al ADPCM. La lista de comandos puede generarse dinamicamente por la CPU o ser una lista de comandos ya disponible en en el PGR, se utiliza sobretodo para controlar el Blitter.
  • Blitter: El Blitter copia los patrones/sprites que se encuentran en la CHR-ROM y los copia en el búfer de imagen, puede hacer manipulaciones sobre ellos como rotación, dibujado a la inversa, inversión de colores… También puede dibujar en modo bitmap. Tiene un mecanismo de paleta con 4096 colores y puede dibujar con 16 colores distintos por linea de escaneo y cambiar esos 16 colores durante el HBlank de cada linea de escaneo.
  • ADCPM y Audio RAM: Mismas caracteristicas que el subsistema de sonido de SNES.

Comentario#7:

Urian, cuando dices un suzy con memoria local ¿te refieres a separar la memoria principal en dos pozos diferenciados o añadir una memoria exclusiva al suzy (¿tipo PS2?) pero que pueda seguir accediendo a la principal?

Mira la respuesta de arriba y tendrás una respuesta exacta.

El segundo Feedback cuando más adelante haga la segunda hornada de entradas.