1k likes | 1.19k Views
La informática gráfica en los sistemas de entretenimiento doméstico. Miguel Ángel Expósito Sánchez. Breve evolución de los s.e.d. 1889
E N D
La informática gráfica en los sistemas de entretenimiento doméstico. Miguel Ángel Expósito Sánchez
Breve evolución de los s.e.d • 1889 Fusajiro Yamauchi establece la Marufuku Company que fabricaba y distribuía “Hanafuda”, unas cartas de juego japonesas. En 1907, Marufuku empieza a fabricar las llamadas “cartas del oeste” y la empresa cambia su nombre a “The Nintendo Playing Card Company” en 1951. “Nintendo” significa “Dejar la suerte en manos del cielo”.
Breve evolución de los s.e.d • 1947 • Akio Morita y Maseru Ibuka crean la “Tokio telecommunications Engineering Company”, después de ver un grabador de cassette de fabricación americana, deciden que su compañía debe empezar a fabricarlos, en 1952 alcanzan un capital de 25000 dólares, suficiente como para ser la primera empresa no norteamericana en licenciar el transistor, con lo que fabricaron la primera radio de bolsillo a pilas, que fue un éxito en Japón, así que los fundadores Ibuka y Morita empezaron a observar la posibilidad de vender sus productos en los estados unidos y Europa. Conscientes de que la traducción al inglés del nombre de su compañía es demasiado complicada para los angloparlantes modificaron la palabra Latina “Sonus” (sonido) que se quedó en SONY, una palabra que no tiene ningún significado.
Breve evolución de los s.e.d • 1954 • El veterano de guerra estadounidense David Rosen observa la popularidad de las máquinas mecánicas de juegos que funcionan con monedas en las bases militares estadounidenses en Japón, así que crea SErvice GAmes para exportar estos juegos a Japón. En los 60, Rosen decide crear sus propios juegos a monedas, así que compra una fabrica de gramolas de Tokyo y una empresa de máquinas tragaperras. El nombre SEGA, abreviatura de “SErvice GAmes” se estampa en todos los juegos que Rosen produce, y finalmente Rosen lo adopta como su nombre de empresa.
Breve evolución de los s.e.d • En 1971 un estudiante del MIT diseña el primer juego asistido por computador. La primera máquina recreativa a monedas, computer space. • No tuvo éxito debido a que ofrecía una jugabilidad confusa. • Además los ordenadores eran muy caros por aquella época. Pero la puerta a los juegos asistidos por computador ya estaba abierta.
Breve evolución de los s.e.d • 1974 • Atari lanza “PONG”, el primer sistema de entretenimiento digital doméstico, presenta un juego muy simple y tampoco obtiene muchas ventas.
Breve evolución de los s.e.d • 1985 • Nintendo lanza NES (Nintendo Entertainment System) o Famicom, que introducía como principal novedad (ya presente en alguna consola anterior) la presencia de cartuchos intercambiables. Fue la consola de 8 bits más exitosa de la época en Asia y Norte América, vendiendo 60 millones de unidades en todo el mundo.
Breve evolución de los s.e.d • En los sucesivos años la agresiva competencia entre fabricantes llevó a la aparición de muchos otros sistemas de videojuegos domésticos de 16, 32, 64 y 128 bits que inundaron el mercado con mayor o menor éxito hasta hoy. • Con la aparición de nuevas tecnologías y la mejora considerable de la electrónica ha habido un antes y un después en la filosofía de trabajo y sobretodo en la generación de gráficos en tiempo real.
Desarrollo de aplicaciones para consolas • ¿Cómo llega un título a una plataforma de entretenimiento doméstico? • Normalmente la empresa desarrolladora del software compra al fabricante de la plataforma elegida un kit de desarrollo oficial que incluye un compilador para la CPU del sistema, las librerías necesarias, la documentación de las mismas (API) y una consola de prueba.
A la derecha la T10000, una PlayStation 2 de desarrollo incluida en el Kit de Desarrollo Oficial “Sony Computer Entertainment” para PS2. Tiene más memoria RAM que una PS2 comercial, 3 discos duros, tarjeta de red, pesa 13 Kg y cuesta 20000 €. Les sirve a los desarrolladores para probar el software sobre la propia máquina. • A la izquierda una PS2 comercial.
Presentación • Vamos a analizar el hardware que daba soporte a los gráficos de una consola del “Antes” y de una del “Después” en profundidad para poder establecer comparaciones. • También veremos la forma de generar gráficos con estos dispositivos.
Sega MegaDrive • Conocida en Japón y EEUU como “Genesis”, la Sega MegaDrive fue lanzada en 1989 siendo el primer sistema de videojuegos de 16 bits reales. Vendiendo 1.6 millones de unidades en 1990.
Características técnicas • CPU: Motorola 68k@7.61Mhz • Coprocesador: Zilog Z80@3.58Mhz • RAM: 64 Kbytes • ROM: 1MByte • Sonido: Yamaha YM2612 con 6 canales FM y 2 canales PCM. • Generador de ruido programable de 4 canales Texas Instruments SN76489 • Memoria de sonido: 8KBytes
Otras características • Implementa DMA (la CPU puede solicitar al coprocesador copiar de una zona a otra grandes cantidades de datos (p.ej, cargar gráficos a la memoria de vídeo) en paralelo con la ejecución del programa). • La CPU NO tiene unidad de punto flotante, lo que junto a la velocidad hace que sea imposible (o muy complicado) implementar entornos 3D.
Gráficos • Procesador dedicado (VDP = Video Display Processor) • VRAM: 64 Kbytes • Sistema de 4 paletas, con 512 colores representables (log2 512 = 9 bits), 16 colores por paleta, un total de 16*4=64 colores simultáneos (memoria dedicada “Colour RAM”).
Sistema de coordenadas • El centro de coordenadas está en la esquina superior izquierda de la pantalla con la dirección del eje y invertida. • Sistema basado en celdas = 1 área de 8x8 píxeles.
Resoluciones • 40x28 celdas = 320x224 píxeles • 32x28 celdas = 256x224 píxeles
Planos • 2 planos deslizantes de tamaño configurable: 32*32, 32*64, 32*128, 64*32, 64*64, 128*32 (en celdas)
Sprites • ¿Qué es un sprite? • En terminología de videojuegos Cualquier objeto que aparece en pantalla (animado o no) que no pertenece al fondo. Por ejemplo el personaje principal, items que hay que recoger, etc…
Sprites • Hasta 64 sprites en pantalla (en modo 256x224) y hasta 80 en modo 320x224. • Los sprites también son de tamaño configurable. 8*8, 8*16, 8*24, 8*32 16*8, 16*16, 16*24, 16*32 24*8, 24*16, 24*24, 24*32 32*8, 32*16, 32*24, 32*32
¿Qué podemos hacer con todo esto? • Todos estos recursos definen las características de los juegos de la época (en 2D, la gran mayoría de plataformas o de vista aérea). • El VDP accede a la VRAM (memoria de simple puerto) y a las tablas de planos y de sprites y genera la señal de video que aparece en el monitor.
Limitaciones • Debido a su ausencia de unidad de punto flotante y escasos recursos (memoria, velocidad….) no es lo más adecuado para dibujar primitivas ni aplicar transformaciones que requieran de cálculos en punto flotante (como rotaciones), por lo que prácticamente el 100% de los gráficos de los juegos de esta plataforma están pre-renderizados y simplemente se disponen en pantalla según convenga.
Más limitaciones • La única transformación que el VDP puede aplicar sobre los sprites es la reflexión ya que no supone más que una inversión en el proceso de lectura de la memoria para generar la señal de vídeo. • La consola no dispone de SO, con lo que el programador debe conocer muy bien la máquina para actuar a bajo nivel sobre direcciones de memoria.
Interrupciones • La consola dispone también de interrupciones programables, entre ellas la de sincronismo horizontal y la de sincronismo vertical, producidas por el VDP. • La señal de vídeo generada para el dispositivo de tipo raster contiene grandes márgenes fuera del área de exploración visible para evitar errores por retrasos por cuestiones de temporización.
Esquema de la rasterización de la memoria de vídeo. • Cada una de las líneas que forman la imagen en pantalla no es más que una secuencia de píxeles de colores, que son generados por el VDP partiendo del contenido de la VRAM. • El área marcada con Display Screen es el área de exploración visible (lo que vemos en pantalla). El resto se usa para prevenir errores y no contiene información del color.
El VDP por dentro • Como ya hemos dicho tenemos 2 planos deslizantes (para los fondos del juego) y otro plano donde aparecen los sprites.
Prioridad • Esto no significa que los sprites aparecen siempre por encima del plano A y este siempre por encima del B. • Veremos que cada celda que compone un plano o cada sprite tiene un bit de prioridad que le dirá al VDP si dibujarlo encima del resto de cosas.
Filosofía de trabajo • No existe una VRAM como una matríz rectangular de dimensiones iguales a la resolución donde vamos escribiendo píxeles, sino que trabajamos con: • Una lista de sprites, que contiene las dimensiones del sprite (en celdas), sus coordenadas en pantalla, su prioridad de dibujado, la dirección en la VRAM en la que empiezan sus gráficos, el número de paleta que contiene sus colores y dos bits indicando si el sprite estará reflejado horizontal y/o verticalmente. • Dos listas de celdas (una para cada plano), que contiene para cada celda la dirección en la que está almacenada en la VRAM, su prioridad y el número de paleta que contiene sus colores. Ambas listas, como veremos se almacenan junto a los gráficos en la VRAM.
Restricciones de memoria • Al tratarse la VRAM de una memoria de simple puerto, no pueden acceder concurrentemente a ella la CPU y el VDP, por tanto durante la generación de una línea de vídeo las direcciones de memoria correspondientes a la VDP no son accesibles por la CPU. • Durante los intervalos en los que se genera el margen fuera del área de exploración visible la CPU puede acceder continuamente a la VRAM. • Si se accede a la VRAM durante un intervalo de tiempo “prohibido”, la CPU se bloquea (mediante una interrupción) hasta que la memoria de vídeo quede libre. (del orden de nanosegundos)
Resumiendo • Cada plano se divide en celdas de 8x8 y está asociado a una lista de celdas, que contiene en orden una lista de estructuras que contiene información sobre cada una de las celdas que componen el plano.
Como podemos ver, para el tronco hemos utilizado varias veces la misma celda de la VRAM (la número 7) y para los espacios vacíos hemos dejado a propósito la primera (número 0) en blanco.
Deslizamiento • Como es un plano deslizante podemos moverlo como queramos (tanto horizontal como verticalmente) por nuestra ventana de mundo. • ¿Qué ocurrirá cuando lleguemos a los límites del plano?
Scrolling de juegos • El juego controla en todo momento la posición de los planos escribiendo en la memoria de scroll. • Si se combinan los dos planos a la vez se puede crear efecto de profundidad visualizando en el de menor prioridad un plano lejano (montañas, …) y en el de mayor prioridad uno cercano (las plataformas) y moviéndolos a distinta velocidad. • Sí, la megadrive es una máquina puramente 2D.
Animación de fondos • Se pueden crear también fondos animados simplemente reescribiendo la tabla de celdas de un plano modificando sólo las que se ven afectadas de un fotograma al siguiente.
Sprites • Con los sprites ocurre de forma similar, se escribe una entrada en la tabla de sprites por cada uno de ellos indicando las coordenadas x e y que tendrá en pantalla y algunos atributos más. • Los gráficos del sprite deben estar almacenados en una secuencia concreta según sus dimensiones (en celdas).