PALETA DE LA NES/FAMICOM PARTE 1 – PARADOJA DE COLOR

¿Qué tiene de especial la Nintendo Entertainment System y el Famicom frente a los otros sistemas?

La NES/FAMICOM no genera señal de color RGB, por el contrario es el resultado de una fuente de tonos emitidos como señal NTSC/PAL  directamente desde el chip gráfico (PPU) en señal de VIDEO COMPUESTO a la TV.

NES DIRECTO.png

No existe una  referencia oficial de colores en NES/FAMICOM lo que la hace interesante ya que involucra muchos temas de TEORÍA DE COLOR y TV ANALOGO.

Diferentes paletas de la NES en RGB emulación Fuente Reddit

RESUMEN DE LA SERIE PALETA DE LA NES/FAMICOM

  • Prologo o “RGB resumen”  muchos temas de vídeo análogo resumidos.
  • En esta Primera parte describiré los dilemas de la paleta  del FAMICON/NES.
  • Segunda parte abordaré unas explicaciones sobre la modulación de cuadratura y su relación con la paleta
  • Tercera parte abordaré los temas de transistores JFET, el DAC  y  la Señal de modulación de la patente.
  • En TV CRT, 240p, Video compuesto, S-Video, una larga entrada para exponer mayores detalles en los principios de la TV CRT y el vídeo primitivo en vídeo consolas.
  • La Cuarta parte, es una introducción en español en temas de vídeo compuesto y su detección.
  • La Quinta partees una larga entrada en la búsqueda de la PALETA IDEAL, mediante: ecuaciones y  vectores de color en espacio YIQ/NTSC.

INTRODUCCIÓN

Los componentes de la NES/FAMICOM son reducciones o copias de procesadores populares de la época.

Es común encontrar que la PPU de la NES/FAMICOM deriva de alguna manera del TMS9918A de texas instrument y fue modificada por la RICOH para Nintendo Japón en 1983. En este punto las cosas no inician bien para el estudio de la paleta:

“Si bien las señales de impresión de datos variables no son exactamente equivalentes a los colores NTSC estándar, las diferencias pueden ser fácilmente ajustadas con los controles de color y matiz de lA TV usada” DATASHEET TMS9918A

También debemos recordar que la FAMICOM japonesa no disponía de  un conector del tipo  RCA  para la salida en  VIDEO COMPUESTO en su primera versión de 1983, pero si  en la versión para el mercado norteamericano de 1985 denominada NES (Nintendo Enterteiment System).

nes ppu
Fuente: Flickr

Como comprenderán, existen muchos artículo sobre cómo funciona la NES/FAMICOM y sendas enciclopedias de desarrollo en inglés y  quiero llegar al grano. Si quieres profundizar en el tema a continuación algunos enlaces:

Fuera de toda discusión debería dejar claro que no abordo las versiones árcade de la   FAMICOM como el PlayChoice-10 y el Vs. Unisystem. Máquinas con capacidades RGB

Visitar: Nintendo’s PlayChoice-10 – The Arcade Advertisement

Fuente: Foros

Como intentare convencerles hasta el final: mi intención no será sustentar una subjetividad de la paleta, sino todo lo contrario. En otras palabras, no terminaré exponiendo que la paleta depende del observador, por el contrario es resultado de las características arbitrarias y enigmáticas de su creación.

Considerare 5 tipos de paletas:

  1. La leyenda de una paleta construida mitológicamente, creada para ser perfecta.
  2. La generada según los documentos de la PPU 2202.
  3. La que observa el programador moderno, (homebrew).
  4. Las paletas de emulación tanto en hardware como en software, que no son paletas simulaciones o algo similar a una real, sino modernas paletas de 8 bits prefijadas.
  5. Finalmente propongo un ejercicio de construcción de una paleta.

LA  PALETA MITOLÓGICA

Cuenta la leyenda que en 1982, Masayuki Uemura,  creador de la  FAMICON/NES, con el fin de reducir el precio redujo intencionalmente o consecuentemente las capacidades de reproducción de color de la  nueva consola.  Con la colaboración del resto del personal seleccionarón  un conjunto de colores que la TV Análoga de la época pudiera mostrar. La leyenda también comenta que esta era una paleta tan maravillosa y revolucionaria que extasió hasta al mismo Shigeru Miyamoto.

En una posterior entrevista por la revista Retro Gamer (#16)  al mismo  Masayuki Uemura, él comentó como la paleta fue una adaptación de la paleta de la máquina árcade original de Donkey Kong de 1981, es decir la re-programación del Radar Scope de 1979

<<<“Pobres programadores a quienes les cayo la tarea de convertir el juego a un nuevo procesador (desde el microprocesador Z80 a un clon del MOS 6502 por Ricoh)  consultando con le colega Shigeru Miyamoto, el hombre tras Donkey Kong, al determinar la paleta de colores Famicom. “Sabíamos qué colores necesitaríamos para recrear su juego” – “y él me diría cuantos colores necesitaba la consola mostrar al tiempo. Yo preguntaría y él respondería así  trabajábamos.>>

La siguiente imagen representa una aproximación en RGB de los  64 colores de la paleta de la  PPU (procesador interno de vídeo).

Palette NTSC.png
Fuente: NES Palette

Quiero insistir en la idea: “No existe referencia de esta paleta real generada directamente por la PPU de la NES/FAMICOM” y  debe ser  generada con el hardware Original.  Los colores reales de la paleta les podremos obtener con un cartucho un pequeño programa y  la ayuda de un osciloscopio. Esta captura de datos permite determinar el tono, la saturación y el brillo de cada color. También es posible estimarla mediante la  captura de fotogramas de vídeo en un computador y la extracción de los valores RGB con un programa de edición.

Puedes visitar Ripping the NES Virtual Console palette

Image
Fuente:  Various questions about the color palette and emulators

 

LA PALETA REAL PPU

En este punto quiero anotar que a menos que los chinos tengan información de los esquemas internos la PPU es una caja negra. Es clara la información de entradas-salida, pero es muy complejo comprender el gran número de documentos existentes  que no ofrecen esquemas electrónicos.

La generación de señal de video desde la PPU es muy extensa, por lo que les invito a  visitar esta página de NesDEV: NTSC video

nes color
Fuente: Patente del PPU NES

La PPU dispone de un banco de RAM (35) interna, no es accesible desde el exterior. Cada registro en esta RAM es de 6 bits,  los 2 bits más significativos del registro corresponden al nivel de color  y los 4 bits restantes que seleccionan 1 de 12 tipos de señal de fase. La PPU genera 12 tipos de señal en frecuencia de sub-portadora de onda (~3.58 MHz NTSC) en diferentes FASES. Con diferentes niveles de tensión de referencia.

543210
||||||||
||     ++++- Fase (direcciona la 12 tipos de fase)
||++----- Level (determina el nivel de color)

Las funciones trigonométricas como el seno y coseno pueden trasladarse matemáticamente en el tiempo, a la diferencia de ángulo con el origen se llama desplazamiento de fase (Pashe shift).

tesoro del saber retro paleta YIQ vs YUV.png
Ondas de croma en 12 diferente fases de señal PALETA DE LA NES/FAMICOM PARTE 5: EN BÚSQUEDA DE UNA PALETA IDEAL
Fuente: http://images.tutorvista.com/

La señal es CODIFICADA y enviada a un DAC (Conversor DIGITAL A ANÁLOGO)  de 8 Bits, en otras palabras 9 resistencias.  Es claro que no genera señal suave.

Fuente:  ANALOG AND DIGITAL

En el tema de COLOR las compuertas en el DAC puede ser complicado. a pesar de ello tiene algo de lógica, la LUMA sumando a la fase para completar el color. Pero la fase es una señal que oscila, es el cambio de frecuencia de la fase lo que modula la señal en las compuertas (NAND + MOSFET suman la señal de salida en COLOR).

La imagen inferior es un  aproximación educativa,  para mostrar los tonos de color sobre la señal de vídeo compuesto el principal es decir el enigma de la paleta generada por el hardware real.

SEÑAL 256
El DAC de la NES/FAMICOM puede representar 256 valores, estimando 12 niveles de fases de onda para cada escalón de brillo correspondiente a los valores de Crominancia

En este punto todo parece muy confuso y realmente lo es. NINTENDO optó por cuatro niveles de LUMA por 12 posibilidades de tono diferente (onda de frecuencia de subportadora en vídeo compuesto).

Bajo este resumen educativo la NES/FAMICOM genera 12 x 4=48 tonos diferentes de color real, obviando los tonos grises y  tonos negro. Debemos obviar los primeros tonos de gris que son solo variaciones de LUMA Y y no de  información de color.fases

En la paleta del NES/FAMICOM   según  NesDEV FAQ:

  • Ausencia de color AMARILLO  PURO (#FFFF00, H60°-S100%-L50%)
  • Una  predominante cantidad de NEGRO como relleno.

En este punto me temo debo creer, que esta es una forma arbitraria de generar el color descrito por la patente es causado  tal vez por: 1) El interés de hacer confusa la patente  o 2) Por una estrategia de reducir los costos.   Es el secreto de la paradójica paleta de NES/FAMICOM en su hardware real.

Nota: Es de observar que el TMS9918A no genera color de esta manera extraña, pero SI en señal de color en formato RGB.

Finalmente, existen limitaciones en la modulación de color por la velocidad del procesador, el tamaño de la RAM de los colores generados y  el ruido en la salida de VIDEO COMPUESTO. Cosas así le podemos simular mediante el software EMULADOR. En la imagen inferior muestran las  capturas de pantalla de dos emuladores diferentes y  con sus respectivos filtros NTSC. Las capturas no usan sombreadores (SHADERS).

NESTOPIA

FCEUX.png

LA PALETA  PARA EL PROGRAMADOR MODERNO

La NES/FAMICOM facilita de “ÍNDICES” o ARREGLOS que apuntan a la paleta principal. Cada uno de estos son separados, dispone de  un ÍNDICE para el fondo y uno para los SPRITES.

  • Disponemos de  4 ÍNDICES por Sprite para apuntar a 12 colores.  En los SPRITES es reservado un color para la transparencia, es decir NOes dibujado sobre el fondo.
  • Disponemos de un ÍNDICE para el fondo con 13 colores
  • Es posible aumentar  el tamaño de los ÍNDICES mediante el uso de RAM adicional dentro del cartucho
Fuente: NES System Architecture
11-sample-Palette
Fuente Color of NES

LA PALETA POR EMULACIÓN EN HARDWARE

Para explicar este apartado debo partir de  la solución desarrollada por NESRGB  http://etim.net.au/nesrgb/, mediante la implementación de una modificación de hardware con ayuda de un PLD (dispositivo de lógica programada).

NES RGB
Elaboración propia.

El PLD es conectado entre la PPU y el bus de datos de la CPU. Cuando la CPU envía los datos en la paleta  hacia el Generador de color) es entonces cuando la PLD los captura y almacena. Los datos modificados de color pasan a la PPU para que esta no quede sin información.

El resto de la información de señal requerida es extraída de la salida de VÍDEO COMPUESTO mediante circuitos comparadores, y corresponden a las señales de sincronización vertical y horizontal.

Visitar: Instalación de NESRGB en NES top loader por Artemio Urbina

Los datos de vídeo son realmente una nueva paleta seleccionada y fija en el PDL en RGB, mediante un DAC de vídeo incorporado en el PLD. La nueva paleta es definida en  formatos de color moderno R8G8B8 o R16G16B16.

 

borrar
Fuente:  NES RGB Color Palette Demo

 

El MOD RGB de la NES es instalado de manera que pueda capturar los datos desde la PPU. EL nuevo circuito toma una paleta prefijada obviando completamente la PPU, proponiendo nuevos colores en RGB arbitrariamente seleccionados por el fabricante del MOD.

En la mayoría de los documentos leídos sobre NES emulados con lógica programable FPGA el bloque de generación color de la PPU es reemplazado por un nuevo bloque de color moderno  con capacidades RGB con paletas pre-construidas. Mientras los otros elementos como los multiplexores, los generadores de sprites, etc. son efectivamente implementados.

 

nes FGPA
Fuente  The Design and Implementation of the Nintendo Entertainment System 

 

En el caso del hardware clónico el tema no es tan claro, pero es lógico comprender que los colores no son necesariamente similares.  También puede visitar  Famicom AV, PAL NES & Dendy chips decapsulation (progress!)

Fuente Wikipedia

LA PALETA EN  LA EMULACIÓN DE SOFTWARE

La emulación de color RGB del NES/FAMICOM no es  real como pudiera ser en otras consolas en RGB nativo.

El emulador como lo comenta “Rupert Shuttleworth en su documento Emulating the Nintendo Entertainment System (NES) ”  toma directamente los datos desde el cartucho (quiero decir archivo de la ROM) para la generación de los gráficos.

Al igual que con el HARDWARE El EMULADOR EN SOFTWARE es programado de tal manera que los gráficos son generados a partir de la escritura de  los registros de la PPU realizadas desde la CPU. En otras palabras NO se simula la PPU del NES/FAMICOM  y el EMULADOR plantea una paleta alternativa.

Fuente: NES System Architecture

Es por esta razón que la gran mayoría de los EMULADORES de NES/FAMICOM permiten al usuario cargar paletas de color, para que los más puristas puedan obtener paletas a su gusto, aunque claro es siempre muy discutible si son las del hardware real en VIDEO COMPUESTO. Un ejemplo de paletas construidas automáticamente las puedes encontrar   NTSC NES palette generator por Joel Yliluoma.

Visitar foro: How the NES could have made SNES-level of graphics

EJERCICIO DE UNA PALETA DE 3 BITS o R7G7B7

¿Cómo podemos crear una paleta de color arbitraria?

La idea propuesta es tan simple como tomar una paleta arbitraria y luego convertir la paleta en 3 bits y observar los resultados.  La idea también proviene un poco de la lectura de How to generate color video signals in software – Introduction.

El método más común es el uso de resistencias ponderadas para la transformación de la señal análoga a digital. Son ubicadas para conformar un arreglo de tal manera el bit mayor (más significativo) deberá producir la menor caída de tensión a la salida. Es claro requerimos de un amplificador para evitar una descompensación (acoplamiento de la impedancia de la salida). Ver figura inferior.

Figura 1.  ADC circuito.
Fuente de la imagen http://smdelectronicayalgomas.blogspot.com.co

Las resistencias reales son fabricados en carbono o un material similar,  es posible encontrar ciertos valores de error (tolerancia). La distribución de los valores y los errores no son erráticos sino debidas a una distribución estadística.

“Las resistencias y otras piezas electrónicas están diseñadas para estar dentro de un cierto porcentaje del valor especificado. Un resistor de 1000 ohmios con una tolerancia de ± 10% podría tener un valor real entre 900 y 1100 ohmios.”
De la imagen y texto Fuente: Actual values of 10% tolerance resistors

Las resistencias les veremos en todo tipo de equipos electrónicos, además existen muchos otros  elementos  que  también contienen valores de error.

Bajo esta idea y con un  DAC de 3bit podría ser similar al usado para la versiones árcade de la placa NES/FAMICOM . Ahora bien, en teoría si tomamos 3 bits por canal R+G+B obtendremos 8 * 8 * 8 =512 colores.

Clic en la imagen para alargar de la paleta estimada con 3 bits por color:

nes pallette

Se puede observar; existe una rotación de los bits. Asumo que esta rotación es el resultado del DAC 3 bits y es claramente conveniente  para mantener el sentido didáctico de esta paleta.

Ahora bien el principal inconveniente de la paleta es el color R146G255B219  que es claramente incorrecto y debe ser modificado a un color aproximado a BYTE  R0G255B255. Irónicamente este color corresponde al fondo del juego SUPER MARIO BROS.

Las siguientes imágenes son el resultado con el color corregido de este pequeño experimento :

SUPER MARIO BROSS.png

Los redondeos son comunes en señal digital desde una fuente análoga,  y con ello quiero indicar que la informacion de la paleta NES/FAMICOM  REAL o  análoga es una aproximación inexacta. En 8 bits (1 Byte)  por canal RGB  por cada canal de 1/255 y con 4 bits en el caso mostrado de 1/125, ajustes finos en números, pero se observarán colores completamente diferentes .

Muestra de señal análoga a 3 bits digitales

Palabras finales

  1. Un poco la idea de todo este cuento es recordar que la NES/FAMICOM fue diseñada  bajo la premisa de ahorrar dinero y maximizar beneficios a su fabricante NINTENDO.
  2. Sin embargo,  la comodidad de los sistemas de color real 8 bits a 16 bits actuales a convertido esto en un tema innecesariamente complejo e ignorado.
  3. Finalmente, pienso que la paleta es tan enigmática y paradójica como sus creadores.
Anuncios

Un comentario en “PALETA DE LA NES/FAMICOM PARTE 1 – PARADOJA DE COLOR

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s