Sábado, 16 de septiembre de 2017
¡Buenas!
Hace tiempo que me rondaba por la idea hablar de las evoluciones del VDP de los MSX1, así que al final me he liado la manta a la cabeza y aquí os dejo un primer tochete que continuará más adelante.
El VDP de los MSX1 es el TMS9918A, de Texas Instruments (aunque algunos MSX pueden contar con el TMS9928A o el TMS9929A, de los que ya hablé hace tiempo en el blog), pero no es exclusivo de los MSX, ya que otros ordenadores y consolas como ColecoVision, Sega SG-1000 o Texas Instruments TI-99/4, que incluía el TMS9918 (sin la A), que no ofrecía el modo que conocemos como Screen 2.
A partir de este chip de vídeo, se han creado otros más evolucionados y en este post vamos a ver dos líneas diferenciadas: los chips de los MSX y los chips de las consolas Sega.
Partamos del origen: el TMS9918A. Este chip, como ya he dicho, está presente (con variantes) en los MSX1 y en la consola SG-1000 y el ordenador SC-3000 de Sega, antecesores de la Sega Mark III (más conocida como Master System por estos lares).
En este punto ambas máquinas tienen exactamente las mismas capacidades gráficas, ya que el chip de vídeo de ambas es idéntico. Este chip es de sobra conocido por todos los amantes del MSX: 16Kb de VRAM y 16 colores fijos, uno de ellos transparente. Estos son los modos de vídeo oficiales que podemos configurar (entre paréntesis indico el nombre oficial del modo de pantalla):
Soporta un total de 32 sprites de 8x8 o 16x16 simultáneamente en pantalla, aunque sólo 4 pueden estar en la misma línea horizontal (el quinto no se dibuja). Cada sprite sólo puede tener un color (más el transparente).
Y llegaron las evoluciones del TMS9918A separándose en dos líneas diferentes:
Por un lado tenemos el V9938 de Yamaha, presente en los MSX2: tiene cuatro posibles configuraciones de VRAM:
Veamos los modos de pantalla que este chip añade a los presentes en el TMS9918A (nuevamente, entre paréntesis figura el nombre oficial del modo):
Voy a aprovechar para hacer algunas consideraciones: la primera es que en cualquier modo (incluso los heredados del TMS9918A) se puede acceder a toda la VRAM. Es perfectamente posible trabajar con Screen 0 y tener un montón de páginas en VRAM. Lo mismo sucede con la paleta de colores, que se puede utilizar desde Screen 0 hasta Screen 7.
Entroncando con lo anterior, el modo de Screen 8 no admite paleta. Permite mostrar 256 colores simultáneos en pantalla, pero son fijos. Es más, ¡los sprites usan una paleta fija! Es decir: no podemos tocar la paleta de los sprites a nuestro gusto si estamos en Screen 8.
Por último, quizás te haya sorprendido que diga que en Screen 4 hay cuatro bancos de tiles. ¡Pues ahí están! Y lo que es mejor: ¡también en Screen 2! ¿Cómo es esto posible?
Bien, pensemos que Screen 2 en los MSX1 sólo tiene 192 pixels de alto, lo que equivale a 3 bancos de 256 tiles. Pero ahora tenemos la posibilidad de ampliar la resolución vertical 20 pixels más. ¿De dónde saldrían los tiles extra? Pues ni más ni menos que de un cuarto banco que normalmente no es visible. Sólo cuando ampliamos la resolución o hacemos scroll vertical entrará en acción ese cuarto banco. Esto es algo que hay que tener en cuenta a la hora de trabajar con estos modos de pantalla en MSX2 o superior.
Por último, recordemos que el V9938 puede generar interrupciones en cualquier línea horizontal de la pantalla y que posee un motor de comandos por hardware para manejar la VRAM en los modos bitmap de diferentes formas. Como no es esa la intención, no profundizaremos más en estos detalles.
Bien, vistas por encima las características del V9938, pasemos a ver (también por encima) las características del VDP de la Master System, el cual también está presente en las tarjetas Franky y PlaySoniq para MSX.
En primer lugar, este VDP puede direccionar un total de 16Kb de VRAM, así que en esta característica sale claramente perdiendo con respecto al V9938.
Pasemos a hablar ahora de los modos de pantalla y vamos a dividirlos en dos grupos:
Centrémonos ahora en las características del Modo 4. Comencemos por la resolución: 256x192 pixels. Aunque en el VDP presente en las SMS2 y en el VDP de la Game Gear era posible utilizar resoluciones de 256x224 o incluso 256x240. En cuanto a resolución podríamos decir que pierde (pero no mucho) con respecto al V9938, que es más versátil en cuanto a resoluciones de pantalla.
También admite scroll vertical, aunque cuando la resolución vertical es de 192 pixels, la pantalla virtual tiene una resolución de 224 pixels verticales. Con resoluciones superiores sí que alcanza los 256 pixels verticales virtuales. Aquí también sale perdiendo... si no consideramos que es posible hacer que el scroll vertical no afecte a las 8 columnas de tiles a la derecha de la pantalla. Esto es muy útil para utilizar el scroll en el resto de la pantalla y utilizar esta zona para marcadores. Por lo tanto en la parte de scroll vertical, el V9938 tiene algunas características superiores y otras inferiores, aquí la comparación no es ventajosa para ninguno.
Permite scroll horizontal, característica que no está presente en los V9938 (que la pueden suplir con trucos). Además, de forma similar al scroll vertical, es posible hacer que el scroll no afecte a las dos primeras líneas de tiles, lo que facilita muchísimo la programación de side-scrollers. En esta característica el VDP de la Master System gana sin dudarlo al V9938.
Hablemos de los colores... La Master System es capaz de gestionar dos paletas de 16 colores a elegir entre 64. Esto significa que puede haber hasta 32 colores simultáneos en pantalla de una paleta de 64. Más colores... pero menos de dónde escoger. Mmmm, difícil elección en este punto. Vamos a separarlo en dos: obviando Screen 8, la SMS gana en colores simultáneos pero pierde en paleta de donde escoger.
Llegados aquí, hay que hacer un inciso. Seguro que muchos sabéis que la Game Gear es prácticamente una Master System portátil. Bien, esto es correcto. Sin embargo, hay una diferencia fundamental con respecto a los colores: las paletas de la Game Gear pueden escoger entre 4096 colores diferentes (anda, como los Amiga OCS/ECS). Así pues, el VDP de la Game Gear es superior en esto al del MSX2.
Y llegamos a los tiles y sprites, que me los he dejado para el final a propósito porque aquí la SMS gana, y por goleada, al V9938 (e incluso al V9958). Cada tile en modo 4 consiste en un grupo de 8x8 pixels cada uno de los cuales puede tener un color independiente al resto, a escoger de una paleta de 16 colores. Eso sí, cada tile sólo soporta una de las dos paletas existentes. Se pueden definir un máximo de 512 tiles diferentes que, a 32 bytes por tile, ocuparían toda la VRAM. En la práctica no es posible llegar a este número, ya que parte de la VRAM se ha de utilizar en la tabla de nombres y en la de atributos de sprites. Pero además, en la tabla de nombres es posible indicar que un tile se muestre normal o invertido horizontal y/o verticalmente, lo cual es una gran ventaja.
¿Y cómo se forman los sprites? Pues los sprites están formados por los mismos tiles que el fondo. Eso quiere decir que un único sprite puede tener hasta 16 colores (los sprites utilizan la segunda paleta de colores). La resolución de los sprites es de 8x8 o bien de 8x16 y es posible utilizar hasta 64 simultáneamente y un máximo de 8 por línea horizontal. Vale, ahora me diréis que al final el MSX2 es mejor aquí, porque puede poner 8 sprites de 16x16 en la misma línea y la SMS sólo 8 de 8x16. Correcto, pero no olvidemos que si queremos sprites más coloridos hay que mezclar dos o más, cosa que no se necesita en la SMS. Así pues, los sprites de la SMS son superiores a los del V9938. Pero eso no es todo. Si aún no os habéis convencido sobre los sprites de la SMS, os comento que en la tabla de nombres es posible indicar que cualquier tile tenga mayor prioridad que los sprites, lo que permite que éstos "pasen por detrás" del escenario, algo ideal en algunos momentos.
Por último, comentar que el VDP de la Master System también puede generar interrupciones en cualquier línea horizontal de la pantalla, pero no posee un motor de comandos similar al del V9938.
Vamos a resumir las características de ambos VDP en una tabla comparativa:
Vale, entonces... ¿qué VDP es mejor? Pues la respuesta, como siempre en estos casos, depende de para qué se vaya a utilizar. Si se quiere hacer un juego basado en tiles, primando velocidad de respuesta sobre vistosidad gráfica, no hay duda que el chip adecuado es el de la Master System. Por el contrario, si se necesitan muchos colores en pantalla, a costa de ralentizar la acción, siempre podemos acudir a Screen 8 del V9938.
Por otro lado, la Master System no es capaz de mostrar un dibujo a 256x192 en el que controlemos individualmente cada pixel (para eso necesitaríamos un total de 768 tiles y no hay VRAM suficiente), pero ahí tenemos Screen 5 (y Screen 8) que nos lo permiten... siempre que no necesitemos que el dibujo se mueva mucho, claro está. Tampoco nos olvidemos de los AVG japoneses hechos en Screen 7 (sí, los de los dibujos tramados) o que el MSX es un ordenador de propósito general y, por tanto, un Screen 0 a 80 columnas es ideal para aplicaciones en modo texto.
En definitiva, cada chip para lo que fue pensado es perfecto (dentro de sus limitaciones). El VDP de la Master System fue pensado para ser utilizado en una máquina de juegos y se primó el modo de tiles, mientras que el V9938 fue pensado para un ordenador, creando nuevos modos bitmap. Personalmente echo mucho en falta un modo de tiles más potente en el V9938 (y en su sucesor, el V9958), lo cual habría permitido juegos más vistosos basados en tiles.
Creo que por hoy es suficiente con llegar hasta este punto. En un futuro post seguiremos la comparativa al analizar el V9958, el V9990 y el chip de la Megadrive. ¿Por qué no comparo el V9958 con el VDP de la Master System? La verdad es que esta comparación nos dejaría unos resultados similares a la que vemos aquí, ya que el V9958 sólo añade modos bitmap con más colores y scroll horizontal por hardware. Los modos de tiles, identicos a los del V9938, seguirán perdiendo contra el modo 4 de la SMS.
Hace tiempo que me rondaba por la idea hablar de las evoluciones del VDP de los MSX1, así que al final me he liado la manta a la cabeza y aquí os dejo un primer tochete que continuará más adelante.
El VDP de los MSX1 es el TMS9918A, de Texas Instruments (aunque algunos MSX pueden contar con el TMS9928A o el TMS9929A, de los que ya hablé hace tiempo en el blog), pero no es exclusivo de los MSX, ya que otros ordenadores y consolas como ColecoVision, Sega SG-1000 o Texas Instruments TI-99/4, que incluía el TMS9918 (sin la A), que no ofrecía el modo que conocemos como Screen 2.
A partir de este chip de vídeo, se han creado otros más evolucionados y en este post vamos a ver dos líneas diferenciadas: los chips de los MSX y los chips de las consolas Sega.
El origen: MSX1 vs. SG-1000
Partamos del origen: el TMS9918A. Este chip, como ya he dicho, está presente (con variantes) en los MSX1 y en la consola SG-1000 y el ordenador SC-3000 de Sega, antecesores de la Sega Mark III (más conocida como Master System por estos lares).
En este punto ambas máquinas tienen exactamente las mismas capacidades gráficas, ya que el chip de vídeo de ambas es idéntico. Este chip es de sobra conocido por todos los amantes del MSX: 16Kb de VRAM y 16 colores fijos, uno de ellos transparente. Estos son los modos de vídeo oficiales que podemos configurar (entre paréntesis indico el nombre oficial del modo de pantalla):
Modo | Resolución | Colores | Sprites |
---|---|---|---|
Screen 0 (Text) |
40x24 caracteres en pantalla de un único set de 256 tiles de 6x8 pixels | Dos colores en toda la pantalla | No |
Screen 1 (Graphic 1) |
32x24 caracteres en pantalla de un único set de 256 tiles de 8x8 pixels | Cada tile puede tener 2 colores | Si |
Screen 2 (Graphic 2) |
32x24 caracteres en pantalla dividida en tres sets de 256 tiles de 8x8 pixels | Cada línea de estos tiles puede tener 2 colores | Si |
Screen 3 (Multicolor) |
64x48 pixels en pantalla | Cada pixel puede tener un color diferente | Si |
Soporta un total de 32 sprites de 8x8 o 16x16 simultáneamente en pantalla, aunque sólo 4 pueden estar en la misma línea horizontal (el quinto no se dibuja). Cada sprite sólo puede tener un color (más el transparente).
Primera evolución: MSX2 vs. Master System
Y llegaron las evoluciones del TMS9918A separándose en dos líneas diferentes:
Por un lado tenemos el V9938 de Yamaha, presente en los MSX2: tiene cuatro posibles configuraciones de VRAM:
- 16Kb de VRAM. ¿Cómo? ¿No puede ser? Pues piensa que el SVI-738 montaba un V9938 con sólo 16Kb de VRAM.
- 64Kb de VRAM. Con esta configuración (presente en algunos modelos de MSX2) no soporta ni Screen 7 ni Screen 8 como ya mostré por aquí en su día.
- 128Kb de VRAM. Es la configuración más habitual que nos podemos encontrar en la inmensa mayoría de los MSX2.
- 192Kb de VRAM, pero los 64Kb extra sólo se pueden usar como buffer.
- Modo 1: el mismo que el del TMS9918A.
- Modo 2: sólo utilizable en los modos MSX2 (es decir, no es posible usar el modo 2 de sprites en Screen 1, por ejemplo). Sigue limitándose a 32 el número de sprites (de 8x8 ó 16x16) mostrados simultáneamente en pantalla, pero ahora se amplía hasta 8 el número de sprites en la misma línea. Cada línea horizontal de un sprite puede tener un color diferente y es posible mezclar varios sprites para tener sprites multicolores (mezclando dos sprites, cada pixel de una línea horizontal podrá tener 3 colores; mezclando 3 sprites subimos a 7 el número de colores y con cuatro sprites ya llegamos a los 15 colores).
Veamos los modos de pantalla que este chip añade a los presentes en el TMS9918A (nuevamente, entre paréntesis figura el nombre oficial del modo):
Modo | Resolución | Colores | Sprites |
---|---|---|---|
Screen 0 a 80 columnas (Text2) | 80x24 (80x26.5) caracteres en pantalla de un único set de 256 tiles de 6x8 pixels | Dos (o cuatro, si se usa blinking) colores en toda la pantalla | No |
Screen 4 (Graphic 3) |
32x24 (32x26.5) caracteres en pantalla dividida en cuatro sets de 256 tiles de 8x8 pixels | Cada línea de estos tiles puede tener 2 colores | Modo 2 |
Screen 5 (Graphic 4) |
256x192 (256x212) pixels en pantalla | Cada pixel puede tener un color diferente de entre 16 | Modo 2 |
Screen 6 (Graphic 5) |
512x192 (512x212) pixels en pantalla | Cada pixel puede tener un color diferente de entre 4 | Modo 2 |
Screen 7 (Graphic 6) |
512x192 (512x212) pixels en pantalla | Cada pixel puede tener un color diferente de entre 16 | Modo 2 |
Screen 8 (Graphic 7) |
256x192 (512x212) pixels en pantalla | Cada pixel puede tener un color diferente de entre 256. Estos colores son fijos (no van por paleta) | Modo 2 ¡Paleta fija! |
Voy a aprovechar para hacer algunas consideraciones: la primera es que en cualquier modo (incluso los heredados del TMS9918A) se puede acceder a toda la VRAM. Es perfectamente posible trabajar con Screen 0 y tener un montón de páginas en VRAM. Lo mismo sucede con la paleta de colores, que se puede utilizar desde Screen 0 hasta Screen 7.
Entroncando con lo anterior, el modo de Screen 8 no admite paleta. Permite mostrar 256 colores simultáneos en pantalla, pero son fijos. Es más, ¡los sprites usan una paleta fija! Es decir: no podemos tocar la paleta de los sprites a nuestro gusto si estamos en Screen 8.
Por último, quizás te haya sorprendido que diga que en Screen 4 hay cuatro bancos de tiles. ¡Pues ahí están! Y lo que es mejor: ¡también en Screen 2! ¿Cómo es esto posible?
Bien, pensemos que Screen 2 en los MSX1 sólo tiene 192 pixels de alto, lo que equivale a 3 bancos de 256 tiles. Pero ahora tenemos la posibilidad de ampliar la resolución vertical 20 pixels más. ¿De dónde saldrían los tiles extra? Pues ni más ni menos que de un cuarto banco que normalmente no es visible. Sólo cuando ampliamos la resolución o hacemos scroll vertical entrará en acción ese cuarto banco. Esto es algo que hay que tener en cuenta a la hora de trabajar con estos modos de pantalla en MSX2 o superior.
Por último, recordemos que el V9938 puede generar interrupciones en cualquier línea horizontal de la pantalla y que posee un motor de comandos por hardware para manejar la VRAM en los modos bitmap de diferentes formas. Como no es esa la intención, no profundizaremos más en estos detalles.
Bien, vistas por encima las características del V9938, pasemos a ver (también por encima) las características del VDP de la Master System, el cual también está presente en las tarjetas Franky y PlaySoniq para MSX.
En primer lugar, este VDP puede direccionar un total de 16Kb de VRAM, así que en esta característica sale claramente perdiendo con respecto al V9938.
Pasemos a hablar ahora de los modos de pantalla y vamos a dividirlos en dos grupos:
- Modos del TMS9918A: son exactamente los cuatro modos del TMS9918A, con sus mismas características.
- Modo 4: un modo basado en tiles en el que están hechos la gran mayoría de juegos de la Master System.
Centrémonos ahora en las características del Modo 4. Comencemos por la resolución: 256x192 pixels. Aunque en el VDP presente en las SMS2 y en el VDP de la Game Gear era posible utilizar resoluciones de 256x224 o incluso 256x240. En cuanto a resolución podríamos decir que pierde (pero no mucho) con respecto al V9938, que es más versátil en cuanto a resoluciones de pantalla.
También admite scroll vertical, aunque cuando la resolución vertical es de 192 pixels, la pantalla virtual tiene una resolución de 224 pixels verticales. Con resoluciones superiores sí que alcanza los 256 pixels verticales virtuales. Aquí también sale perdiendo... si no consideramos que es posible hacer que el scroll vertical no afecte a las 8 columnas de tiles a la derecha de la pantalla. Esto es muy útil para utilizar el scroll en el resto de la pantalla y utilizar esta zona para marcadores. Por lo tanto en la parte de scroll vertical, el V9938 tiene algunas características superiores y otras inferiores, aquí la comparación no es ventajosa para ninguno.
Permite scroll horizontal, característica que no está presente en los V9938 (que la pueden suplir con trucos). Además, de forma similar al scroll vertical, es posible hacer que el scroll no afecte a las dos primeras líneas de tiles, lo que facilita muchísimo la programación de side-scrollers. En esta característica el VDP de la Master System gana sin dudarlo al V9938.
Hablemos de los colores... La Master System es capaz de gestionar dos paletas de 16 colores a elegir entre 64. Esto significa que puede haber hasta 32 colores simultáneos en pantalla de una paleta de 64. Más colores... pero menos de dónde escoger. Mmmm, difícil elección en este punto. Vamos a separarlo en dos: obviando Screen 8, la SMS gana en colores simultáneos pero pierde en paleta de donde escoger.
Llegados aquí, hay que hacer un inciso. Seguro que muchos sabéis que la Game Gear es prácticamente una Master System portátil. Bien, esto es correcto. Sin embargo, hay una diferencia fundamental con respecto a los colores: las paletas de la Game Gear pueden escoger entre 4096 colores diferentes (anda, como los Amiga OCS/ECS). Así pues, el VDP de la Game Gear es superior en esto al del MSX2.
Y llegamos a los tiles y sprites, que me los he dejado para el final a propósito porque aquí la SMS gana, y por goleada, al V9938 (e incluso al V9958). Cada tile en modo 4 consiste en un grupo de 8x8 pixels cada uno de los cuales puede tener un color independiente al resto, a escoger de una paleta de 16 colores. Eso sí, cada tile sólo soporta una de las dos paletas existentes. Se pueden definir un máximo de 512 tiles diferentes que, a 32 bytes por tile, ocuparían toda la VRAM. En la práctica no es posible llegar a este número, ya que parte de la VRAM se ha de utilizar en la tabla de nombres y en la de atributos de sprites. Pero además, en la tabla de nombres es posible indicar que un tile se muestre normal o invertido horizontal y/o verticalmente, lo cual es una gran ventaja.
¿Y cómo se forman los sprites? Pues los sprites están formados por los mismos tiles que el fondo. Eso quiere decir que un único sprite puede tener hasta 16 colores (los sprites utilizan la segunda paleta de colores). La resolución de los sprites es de 8x8 o bien de 8x16 y es posible utilizar hasta 64 simultáneamente y un máximo de 8 por línea horizontal. Vale, ahora me diréis que al final el MSX2 es mejor aquí, porque puede poner 8 sprites de 16x16 en la misma línea y la SMS sólo 8 de 8x16. Correcto, pero no olvidemos que si queremos sprites más coloridos hay que mezclar dos o más, cosa que no se necesita en la SMS. Así pues, los sprites de la SMS son superiores a los del V9938. Pero eso no es todo. Si aún no os habéis convencido sobre los sprites de la SMS, os comento que en la tabla de nombres es posible indicar que cualquier tile tenga mayor prioridad que los sprites, lo que permite que éstos "pasen por detrás" del escenario, algo ideal en algunos momentos.
Por último, comentar que el VDP de la Master System también puede generar interrupciones en cualquier línea horizontal de la pantalla, pero no posee un motor de comandos similar al del V9938.
Vamos a resumir las características de ambos VDP en una tabla comparativa:
Chip | VRAM | Resolución | Scroll hardware | Paleta | Colores simultáneos | Tiles | Sprites |
---|---|---|---|---|---|---|---|
V9938 |
|
|
|
|
|
|
|
Master System |
|
|
|
|
|
|
|
Vale, entonces... ¿qué VDP es mejor? Pues la respuesta, como siempre en estos casos, depende de para qué se vaya a utilizar. Si se quiere hacer un juego basado en tiles, primando velocidad de respuesta sobre vistosidad gráfica, no hay duda que el chip adecuado es el de la Master System. Por el contrario, si se necesitan muchos colores en pantalla, a costa de ralentizar la acción, siempre podemos acudir a Screen 8 del V9938.
Por otro lado, la Master System no es capaz de mostrar un dibujo a 256x192 en el que controlemos individualmente cada pixel (para eso necesitaríamos un total de 768 tiles y no hay VRAM suficiente), pero ahí tenemos Screen 5 (y Screen 8) que nos lo permiten... siempre que no necesitemos que el dibujo se mueva mucho, claro está. Tampoco nos olvidemos de los AVG japoneses hechos en Screen 7 (sí, los de los dibujos tramados) o que el MSX es un ordenador de propósito general y, por tanto, un Screen 0 a 80 columnas es ideal para aplicaciones en modo texto.
En definitiva, cada chip para lo que fue pensado es perfecto (dentro de sus limitaciones). El VDP de la Master System fue pensado para ser utilizado en una máquina de juegos y se primó el modo de tiles, mientras que el V9938 fue pensado para un ordenador, creando nuevos modos bitmap. Personalmente echo mucho en falta un modo de tiles más potente en el V9938 (y en su sucesor, el V9958), lo cual habría permitido juegos más vistosos basados en tiles.
Creo que por hoy es suficiente con llegar hasta este punto. En un futuro post seguiremos la comparativa al analizar el V9958, el V9990 y el chip de la Megadrive. ¿Por qué no comparo el V9958 con el VDP de la Master System? La verdad es que esta comparación nos dejaría unos resultados similares a la que vemos aquí, ya que el V9958 sólo añade modos bitmap con más colores y scroll horizontal por hardware. Los modos de tiles, identicos a los del V9938, seguirán perdiendo contra el modo 4 de la SMS.