Académique Documents
Professionnel Documents
Culture Documents
Artemio Urbina
Presentación de temario
• Introducción
• ¿Por qué PC Engine? • D40p Test Suite
• Viabilidad de juegos clásicos en mercado actual • Introducción a HuC y Magic Kit
• Contexto histórico y competencia • Ejemplos de código
• Versiones y expansiones
• Esperar VBLANK
• leer input del jugador
• Ejecutar lógica del juego
• calcular y ejecutar cambios
gráfcos (acabando antes de
línea D0, o primera visible)
Variaciones del ciclo
Demasiados cálculos para el CPU o DMA:
• VBLANK
• cambiar VRAM y tablas de sprites generadas
Aún más carga de CPU o DMA:
durante el cuadro anterior
• leer input • leer input
• Ejecutar lógica del juego • Ejecutar lógica del juego
• calcular cambios grafcos
• calcular cambios grafcos
• VBLANK
• Si no hay cálculos pendientes:
• cambiar VRAM y tablas de sprites
• Si hay cálculos pendientes
• No actualizar gráfcos y contnuar (corre a 30 o menos FPS)
¿Cómo convertr las estructuras internas a video?
• Actualmente se usa un framebufer, es decir, una respresentación directa en
pixeles y sus defniciones de color que después se envían serialmente a la
pantalla (que también puede tener un frame bufer para procesamiento).
• La resoluciones internas de las consolas y PCBs arcade eran tpicamente
D56xDD4 o 3D0xDD4.
• Un framebufer o incluso memoria de video donde se podría almacenar una
imagen de esa resolución era impensable:
– D56 pixels x DD4 pixels x 8 bits de color = 56KB
– El NES cuenta con DKB de VRAM (Video RAM/Memoria de video)
– La tecnología exista, pero el costo era prohibitvo y esto no se veía ocmo un problema.
“Resolución”
• La resolución horizontal en SDTV no está defnida en
pixeles, es una señal analógica que puede variar
tremendamente por la fuente. (Se suele digitalizar com 7D0
por estándar actual)
• En consolas la resolución de origen si está defnida.
• El CRT no tene pixeles
• En vertcal la resolución está bien defnida en líneas. NTSC
tene D4D y D43 líneas actvas por cada campo
Tiles y paletas
• Los gráfcos se dividen en bloques, llamados tles o chars
• Cada tle es una matriz de pixeles, generalmente de 8x8 o 16x16
unidades
• Los pixeles no tenen un color defnido explícitamente, en su lugar
cuentan con la referencia a un color
• Existe una o más tablas de colores con los índices y las defniciones
explícitas, llamados paletas
• Generalmente el primer color de cada paleta es transparente, lo
que permite fguras irregulares
Valores reales de un tle
y su paleta
Un concepto familiar
Otros ejemplos
Ventajas de los tles
• La pantalla en memoria es una matriz de referencias a tles y a sus atributos como la paleta
• Por ejemplo 3DxD8 tles es D56xDD4
• Las paletas son generalmente de 16 colores, y un tle sólo puede tener colores de una paleta (no mezclar)
– Son de 16 colores pues D4 = 16, es decir se utliza medio byte (un nibble) por pixel.
• Este arreglo permite que una pantalla mida la suma de:
– La referencia (apuntador) al tle
– Sus atributos (paleta, dirección en pantalla)
• En PC Engine se usan 1D de referencia y 4 de paleta:
– la referencia en VRAM a una pantalla de D56xDD4: 179D bytes
– 16 paletas de color: 4KM (Color RAM/CRAM)
– Tiles en ROM (o RAM): 3D bytes cada una, esto varía con la complejidad de la imagen (de 3D bytes con uno solo y D8KB con
todos distntos)
• Ahorran mucho espacio
• Existen herramientas actuales para generar mapas de tles para desarrollo hoy en día, y las herramientas
homebrew pueden importar los datos de ellas para consolas clásicas
Ventajas de los tles
Mirroring y palete
swap
HBLANK
Planos y scroll
• Los planos o fondos (backgrounds) crean el escenario para el
juego. Pueden estar conformados de una o más pantallas según
VRAM
• El hardware permite hacer scroll sobre el escenario, es decir ir
mostrando una ventana móvil del mapa que se encuentra en
memoria.
• Se puede ir cargando el mapa (BAT) y/o los tles en el área que no
se está desplegando actualmente para ir construyendo un
escenario muchas veces más grande.
Planos
Sprites
• Los sprites son elementos que el hardware puede
mover independientemente sobre los fondos
• También están formados de tles, a veces en un
formato ligeramente distnto
• Usan también paletas, en algunas consolas
comparidas con los fondos y en otras
completamente independientes
Especifcaciones y comparatvas
PC Engine
• CPU HuC6D80
– 1.79 MHz o 7.16 MHz
– Derivado del 650D por Hudson
– Usado por Atari D600, NES, C64
– 6 canales de audio programables con ondas de 3D bytes
– 8KB RAM
– Bankswitching integrado
• HuC6D70 VDC (Video Display Processor)
– 16 bits
– 64KB VRAM
– 64 sprites (16 por línea)
• HuC6D60 VCE (Video Color Encoder)
– 16 paletas para fondos (8x8)
– 16 paletas para sprites (16x16)
– 51D color palete (48D max, 9 bit colors 3 bit per channel)
• Resolución
– 51DxD39/DD4
– 3D0xD39/DD4
– D56xD39/DD4
• Input
– 1 puerto para control + Multtap 5 controles
• Media
– HuCards (TurboChips) 1Mbit-8Mbit (1D8KB-1MB) / D0Mbit (D.5MB)
Expansiones
• Super CD-ROM²
• CD-ROM²
– 19DKB RAM + 64KB RAM
– CD-ROM (650 MB)
– System Card 3.0
– 64KB RAM
– ADPCM, RAM
64KB • Arcade Card
– BRAM DKB – DMB RAM + D56KB RAM
– System Card 1.0 – System Card 3.0
SuperGrafx
• 4x la RAM del PC Engine
– 3DKB vs 8KB
• D x HuC6D70 VDC
– Dos layers
– D x VRAM
• 1D8 KB vs 64 KB
– 1D8 Sprites
• 6 juegos
• Retrocompatble
PC Engine vs NES
• CPU HuC6D80 • Ricoh DA03
– 1.79 MHz o 7.16 MHz – 1.79 MHz
– Derivado del 650D por Hudson
– Derivado del 650D por Ricoh /Nintendo
– 6 canales de audio programables con ondas de 3D bytes
– 8 KB RAM – NES APU com 5 canales, 4 fjos
– bankswitching Integrado – D KB RAM
• HuC6D70 VDC (Video Display Processor) • Rioch RPDC0D PPU (Picture Processing Unit)
– 16 bits – 8 bits
– 64 KB VRAM – D KB VRAM
– 64 sprites (16 por linea)
– 64 sprites (8 por linea)
• HuC6D60 VCE (Video Color Encoder)
– 16 paletas para fondos (8x8)
• HuC6D60 VCE (Video Color Encoder)
– 16 paletas para sprites (16x16) – 4 paletas total
– 51D colores (48D max en pantalla, 3 bits por canal) – 54 colores
• Resolución • Resolución
– 51DxD39/DD4 – D56xDD4
– 3D0xD39/DD4
• Input
– D56xD39/DD4
– D puertos para controles + Multtap 4 controles
• Input
– 1 puerto para control + multtap de 5 controles • Media
• Media – Cartuchos 16KB-40KB
– HuCards (TurboChips) 1D8KB-1MB – Mappers (expansiones) de RAM y ROM:
• SFII mapper: D.5MB – 1D8KB-1MB
PC Engine vs Genesis
• CPU Motorola 68000
• CPU HuC6D80 – 7.61 MH
– 1.79 MHz o 7.16 MHz – 64 KB RAM
– Derivado del 650D por Hudson • Audio
– 6 canales de audio programables con ondas de 3D bytes – Sub CPU Z80 a 4Mhz (también usando en modo SMS)
– 8 KB RAM – PSG (TI 76489 chip)
– bankswitching Integrado – 8 KB RAM
• HuC6D70 VDC (Video Display Processor) – YMD016 (OPN) sonido FM de 6 canales stereo, uno de PCM
– 16 bits • VDP (Video Display Processor)
– 64 KB VRAM – 16 bits
– 64 sprites (16 por linea) – 64 KB VRAM
• HuC6D60 VCE (Video Color Encoder) – 80 sprites, D0 por scanline (8x8 a 3Dx3D)
– 16 paletas para fondos (8x8) – 3 planos. D con scroll
– 16 paletas para sprites (16x16) – 4 paletas de 16 colores
– 51D colores (48D max en pantalla, 3 bits por canal) – Manejo de DMA
• Resolución – 40–64 scrolling layers
– 51DxD39/DD4 – 51D colores (64 max en pantalla, 3 bits por canal)
– 3D0xD39/DD4 – Modo shadow/highlights que sube la paleta general a 1536 a costa de sprites
– D56xD39/DD4 • Resolución
• Input – 3D0xDD4
– 1 puerto para control + multtap de 5 controles – D56xDD4
• Media • Input
– HuCards (TurboChips) 1D8KB-1MB – D puertos para control + multtap de 4 controles
• SFII mapper: D.5MB
• Media
– Carts D56KB-4MB
• Extendable (Virtua Racing)
• 8 MB con mapper
PC Engine vs SNES
• CPU HuC6D80 • CPU Nintendo custom '5ADD’ (clon de 65c816 )
– 1.79 MHz o 7.16 MHz – 1.79 Mh o 3.58 MHz
– Derivado del 650D por Hudson – Evolución del 650D, modo compatble
– 6 canales de audio programables con ondas de 3D bytes – 1D8 KB RAM
– 8 KB RAM • Nintendo S-SMP (Sony SPC700 CPU)
– bankswitching Integrado – 8 canales ADPCM , con echo reverberación y pitch
• HuC6D70 VDC (Video Display Processor) – 64 KB SRAM
– 16 bits – Muy similar al 650D
– 64 KB VRAM • PPU (Picture Processing Unit)
– 64 sprites (16 por linea) – 15 bits
• HuC6D60 VCE (Video Color Encoder) – 64 KB VRAM
– 16 paletas para fondos (8x8) – 1D8 sprites (3D por linea)
– 16 paletas para sprites (16x16) – 8 paletas para fondos (3Dx3D)
– 51D colores (48D max en pantalla, 3 bits por canal) – 8 paletas para sprites (16x16)
• Resolución – 3D,768 colores (D56 max en pantalla, 5 bits por canal)
– 51DxD39/DD4 – Alpha channel
– 3D0xD39/DD4 – Varios fondos dependiendo del modo y color. De 1 a 4.
– D56xD39/DD4 – Mode 7
• Input • Resolución
– 1 puerto para control + multtap de 5 controles – D56xD40/DD4
• Media • Input
– HuCards (TurboChips) 1D8KB-1MB – D puerto para control + multtap de 4 controles
• SFII mapper: D.5MB • Media
– Carts D56KB-4MB
• Extendable (SFX, MCU-1)
D40p Test Suite
Calibración de monitores y TVs
Evaluación de procesamiento de señales D40p por equipo
actual
Ofrecer ejemplos open source
para programar en cada plataforma
• GPL 3
• Sourceforge/Github
• El CPU escribe a 8 registros llamados MPR0 a MPR7 para defnir cual segmento de los DMB de memoria disponibles “mapear” en
cada página.
• La versión en ROM de la suite por consecuencia se divide en 3D páginas.
CD-ROM y Super CD-ROMD D