Miguel Ángel Horna (ElSemi) Zaragoza, 16 de Diciembre de 2013 ¿Qué es un emulador? ¿Qué son las ROMs? ¿Cómo funciona un emulador? Porting de juegos Autor:

Slides:



Advertisements
Presentaciones similares
Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
Advertisements

LOS ORDENADORES Rubén Granada.
El ordenador ELOY PUEYO GIMENO.
Maquinas recreativas, emuladores y MAME
B.I.O.S..
Programación Visual de Sistemas
TEMA 7 HARDWARE TECNOLOGÍA 3º ESO ADELA GINER LARRAURI.
Introducción al software
Altavoces/Auriculares
Estructuras en Sistemas Operativos
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
Preservación de maquinas recreativas: Emuladores
Tema: Componentes físicos de un ordenador (II)
INTEGRANTES MEDINA ORTIZ MISSAEL MARTIN GONZALEZ MADRIGAL OMAR
Unidad 3 Componentes internos del ordenador
Componentes básicos del ordenador
1 Aula de Informática del Centro de Participación Activa para Personas Mayores de El Ejido (Almería). Consejería Territorial de Salud y Bienestar Social.
Arquitectura del Computador
La memoria de acceso aleatorio (en inglés:random- access memory, cuyo acrónimo es RAM) es la memoria desde donde el procesador recibe las instrucciones.
Título ¡Unidad 2!.
Unidad 7 Entrada/Salida
Tema 1 Fundamentos de Computación Prof. María Alejandra Quintero Asignatura: Informática Escuela de Ingeniería Forestal Clase 2.
Función Estructura y composición Tipos
BUS DE DATOS.
INTRODUCCIÓN INFORMÁTICA
Soporte HW para Administración de Memoria Cecilia Hernández
Hardware HNAS Álvarez Hnos. Barón.
TEMA 2: Organización de computadores
MANTENIMIENTO PREVENTIVO Y CORRECTIVO
Aspectos Tecnológicos de la Programación de Videojuegos Video Juegos y el Cine SEMINCI 2006 Museo de la Ciencia David Escudero Mancebo Universidad de Valladolid.
MEMORIA RAM Concepto RAM: Siglas de Random acces Memory, un tipo de memoria a la que se puede acceder de forma aleatoria; esto es, se puede acceder a cualquier.
La Computadora.
¿Qué unidades conforman el procesador?

Chips Controladores Pequeño circuito electrónico utilizado para realizar una función electrónica especifica. El chips es el que hace posible que la placa.
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
integrantes: colmenares lennin Márquez Arnaldo
HARDWARE Asier Indurain.
Tema: Componentes físicos de una computadora
Tecnología e Informática
UNIDAD CENTRAL DE PROCESO
1.2 ESTRUCTURA Y FUNCIONAMIENTO DE LA COMPUTADORA
Requerimientos de instalación diferentes versiones Microsoft Windows .
Hardware: Evolución de los ordenadores
Dispositivos Móviles John Alexander Cruz Arévalo.
HARDWAREHARDWARE FELIX BELLA EDU ROS. INDICE 1-. INTRODUCCION 2-. FUNCIONES BASICAS A) LA UNIDAD CENTRAL (CPU) B) LA MEMORIA PRINCIPAL C) DISPOSITIVOS.
¿Cómo funcionan los videojuegos? Una consola de videojuego es simplemente una computadora muy especializada. Muchas de las consolas usan un componente.
Ordenadores: hardware y software
Tipos de computadores Personales.
Luis Villalta Márquez. Servidores de nombres de dominio (DNS)
PRESENTACION CON POWER POINT
Computadora Es una máquina electrónica que recibe y procesa datos para convertirlos en información útil. Una computadora es una colección de circuitos.
1.2 Requerimientos de instalación > >
CONTENIDO 2: HARDWARE Y SOFTWARE
MOTHERBOARD.
EL ORDENADOR PERSONAL Aparato electrónico que sirve para procesar información (transformarla para que sea útil. Para hacerlo codifica la información (descompuesta.
Un controlador de vídeo o VDC es un circuito integrado que es el principal componente de un generador de señal de vídeo, un dispositivo encargado de la.
Colegio de Bachilleres Del Estado De Puebla Platel 20 Jonathan Rojas Soriano 3° “A” Informatica Antonio Lembrino Perez.
ESTACIONES DE TRABAJO..
Tema : Selección del tipo de Computadora (Hardware)
TECNOLOGÍA Y ARQUITECTURA COMPUTADORES
ARQUITECTURA DEL ORDENADOR
Universidad Metropolitana Introducción a la Computación Universidad Metropolitana Introducción a la Computación Septiembre, 2007 Arquitectura Von Newman.
Por: Javier Gutiérrez. La primera generación abarca desde el año 1938 hasta el año Estaban construidos con electrónica de válvulas y se programaban.
ESTRUCTURA INTERNA DE UN ORDENADOR
LOS COMPONENTES DEL ORDENADOR
GS3  Conceptos Básicos de Hardware. Tipos de computadoras Computadora Personal (PC) Laptop Macintosh.
INTRODUCCIÓN A LA INFORMÁTICA Realizado por: SARI FOLGADO.
Unidad de Control Ubicación: Es uno de los tres bloques funcionales principales en los que se divide una unidad central de procesamiento (CPU). Realizar.
HARDWARE. INDICE ¿Qué es un ordenador? Hardware y Software Funcionamiento de un ordenador Arquitectura básica de un ordenador Placa base Unidades de medida.
Transcripción de la presentación:

Miguel Ángel Horna (ElSemi) Zaragoza, 16 de Diciembre de 2013 ¿Qué es un emulador? ¿Qué son las ROMs? ¿Cómo funciona un emulador? Porting de juegos Autor:

Emuladores Ejecutar el programa original sobre hardware diferente. Normalmente sin acceso al fuente original Para ello, simular el funcionamiento del Hardware por Software. Pero existe multitud de hardware actual (y futuro) donde queremos que funcione. Portabilidad. Proyecto KEEP (Keeping Emulation Environments Portable)

Emuladores Preservar los sistemas antiguos (y los juegos) Datos en ordenadores o soportes que los sistemas actuales no pueden leer. El resurgir de los juegos clásicos: XBOX Live Arcade PlayStation Network Nintendo Virtual Console Classic Collections Las empresas de videojuegos apuestan por sagas clásicas, éxito asegurado.

Emuladores Nebula: CPS1, CPS2, NeoGeo, PGM, Konami Model2 Emulator: Sega Model 2 (original y revs A,B y C) CPS3 Emulator: Capcom CPS3 (CPX3 versión para XBOX) Crystal System Emulator: BrezzaSoft Crystal System Chankast: Emulador de Dreamcast (Sonido y Maple bus), Naomi (preliminar) MAME: Colaboración en CPS2,Neogeo, Model 1, Konami (Protecciones) Drivers para PGM, Crystal System Cores para DSPs y CPU de Model 2 Sonido para Saturn/Model2 (SCSP) y Dreamcast/Naomi (AICA)

¿Qué hay dentro de una máquina? Monitor, Amplificador, Fuente de alimentación, controles… Cableado: Sonido, video, controles: Maquinas antiguas: Conexiones específicas para cada juego Maquinas recientes (90s): Estándar JAMMA (sonido mono, solo entradas digitales, 2 players, 4 botones) (Más recientes JVS (JAMMA2) pocas máquinas) Máquinas dedicadas Placa (o placas) de juego

Placas de juego Standalone. Un juego por placa: Cambiar el juego=Cambiar la placa. Hardware diferente para cada juego=Código diferente en el emulador. Mucho trabajo=1 juego. “Sistemas”. Una placa Base + placa(s) con el juego El mismo hardware, solo cambian las ROMs=El emulador solo tiene que cargar las roms apropiadas, el resto del código es igual. Mucho trabajo=muchos juegos (o no, CPS3 6 juegos, Crystal System 3 juegos)

Placas de juego Sistemas de juegos: Cartuchos: SNK (NeoGeo) IGS (PolyGameMaster) Rom Board: Capcom (CPS1,CPS2) SEGA (System16,System32,Model2,Model3,…) Namco Disco: Capcom (CPS3) SEGA (Naomi GDRom) Standalone: Konami (Diseño modular. En MAME librería de componentes básicos) Mucha info en Mantenido por MAMEDevs, información correcta.

Placas de juego Capcom CPS3IGS PolyGameMasterSNK NeoGeo Capcom CPS2Sega Model2 A-CRXKonami Mystic WarriorCrystal System

ROMs Virtua Fighter 2 (Model 2) Cartucho CPS3 (BIOS) Cartucho PGM KOF 2003 (Neogeo PCB) KOF 99 (Neogeo Cartucho)

ROMs Pasar el código almacenado en las ROMS a un archivo Se usan programadores/lectores de ROMs Chips DIP: fáciles. Programadores baratos. Chips SMD: desoldar + adaptadores caros = que lo hagan los que saben (MAMEDev, The Dumping Project)

Estructura Frontend (MAME: OSD) Dependiente del sistema operativo, facilita la portabilidad. Cargar las ROMs a memoria. Acceso a video y sonido. Leer controles Librería de dispositivos (MAME: Core): Procesadores Chips de sonido Chips de video Emulación de máquinas/sistemas (MAME/MESS: Drivers): Instanciar dispositivos de la librería Asociar mapas de memoria al emulador del procesador Conectar chips de la librería (sonido, gráficos) al procesador Implementar e interconectar los chips específicos al sistema. Ejecución de procesadores (timeslice)

Procesador Identificar el procesador (o procesadores) de la placa. Conocimiento del lenguaje máquina del procesador. Desensamblado de ROMs de programa (DataRescue IDA) MAME core: Decenas de emulaciones de procesadores testeadas y funcionales. Sistemas de juegos años 90, lo normal: Z80 Decenas de emuladores de 68k y Z80.

Procesador Ejecutar el programa original (Z80, 68k) sobre un procesador diferente (x86, PowerPC). Emulación aproximadamente un 10% de la velocidad original: Emular 10Mhz requiere 100Mhz. El núcleo del emulador (core). Debe funcionar 100% igual que el original (incluyendo errores). MAME core: Decenas de emulaciones de procesadores testeadas y funcionales. Sistemas de juegos años 90, lo normal: Z80 Decenas de emuladores de y Z80 libres. Gran cantidad de documentación para hacerlos

Procesador A veces no existe un core ya hecho para el procesador. Escribirlo usando los manuales de programación y hardware. Problemas: Puede que ya no estén disponibles para descarga. Internet Archive (Manuales de HW Video Model 3) Prototipos o procesadores “clasificados”. Ingeniería Inversa (TGP de model 2/2A) En japonés (TGPx4 de model 2C) Debe funcionar exactamente igual que el original. Pequeños errores causan fallos difíciles de encontrar.

Procesador Registros -> Struct… Memoria -> Array… El emulador lee una instrucción y ejecuta las acciones sobre registros y memoria. L/E a memoria (mapa de memoria): ROM: Devuelve de un array con el contenido leído de las ROMs RAM: Lee/Escribe a array de datos. Dispositivos: Ejecuta función del emulador. Parámetros: Dirección a leer/escribir y valor a escribir (o devuelve valor leído). Interrupciones. Prioridad, colas,… Optimización: Generadores de código, Threaded code, Recompilación dinámica

Procesador Verificación en el Hardware = Correr código en la placa y comparar:

Mapa de memoria ¿Que hay en cada rango de memoria? RAM, ROM Registros de vídeo, RAM de vídeo, tilemaps, sprites, display lists Registros de sonido Puertos de E/S (Controles) Protección Test de memoria del menú de servicio, da pistas sobre qué hay en cada área (a veces).

Gráficos Hardware sistemas 2D: Framebuffers Tilemaps + Sprites Framebuffers Dibujar toda la pantalla cada frame pixel a pixel Procesadores lentos=Haría falta un procesador dedicado a dibujar (existen sistemas así). Blitters (DMAs de ROM/RAM a Framebuffer con efectos)

Gráficos: Tilemaps Dibujado por hardware, 0% de CPU. Mosaico de NxN piezas de MxM Pixels. Piezas (Tiles) en ROM o RAM. Área de memoria con las casillas. Cada casilla, índice a tile + paleta de color. Gráficos limitados a los tiles existentes. Mosaico mas grande que la pantalla. Scroll H/V cambiando un registro. Movimiento “gratis” para la CPU. Dos forma de emularlo: Dibujar al framebuffer todo el tilemap cada frame. Carga en textura y usar GPU para scroll, y mezcla. También “gratis” para el emulador.

Gráficos: Tilemaps Características avanzadas Transparencia Prioridad mezclada con los sprites Linescroll, Columnscroll ROZ Modificaciones por interrupciones raster

Gráficos: Sprites Display List: Lista de índices en RAM o ROM + Paleta + posición. Cada sprite, uno o mas tiles. Prioridad, intercalación entre tilemaps. Para emularlo, recorrer la display list y dibujar tiles al framebuffer. También precargar como texturas y dibujar quads, (sobre sistemas con 3D potente pero poco procesador (PSP))

Gráficos CPS1/CPS2: 3 Tilemaps (32x32,16x16,8x8 orden programable) + Sprites NeoGeo: 1 Tilemap (8x8, fijo) + Sprites PGM: 2 Tilemaps (8x8,16x16 orden fijo) + Sprites Crystal System: Blitter Model2: 2 Tilemaps (8x8 orden programable) + 3D.

Gráficos Almacenamiento en ROM, una pesadilla. Adivinar buscando gráficos conocidos (letras, números) Cada fabricante su sistema: CPS1/2: Bit interleaved en 4 roms. 1 bit de cada rom=pixel de 4bpp. NeoGeo: Byte interleaved en 2 roms. Bloques de 4 bytes, 1 bit de cada byte en el bloque=4bpp PGM: rom máscaras de pixels visibles + rom de colores (solo los visibles) empaquetados a 5bpp: 6 pixels en 32 bits (2 no usados) CPS3: Tablas de sustitución de patrones de 2 bytes + compresión RLE. Fue un milagro.

Gráficos Tilemap Texto (mascara)

Gráficos Tilemap Texto (Color)

Gráficos Tilemaps Scroll

Gráficos Sprites (Posición) Final

Gráficos

Gráficos: 3D Display lists DSPs para leer la display list y hacer T&L de polígonos. Dos opciones: Emular el DSP. Mas precisa pero mas lenta: MAME. Estudiar el código del DSP y reescribirlo en el emulador optimizado (Model2 Emulator). Rasterización: Software render: Pixel accurate, más lento: MAME Direct3D/OpenGL: Menos preciso. Más rápido, aprovecha tarjetas 3D. Model2 Emulator.

Gráficos: 3D Geometría Evolución de la emulación de 3D del emulador de Model2

Gráficos: 3D Color

Gráficos: 3D Texturas

Sonido Componentes “discretos” Osciladores, filtros, electrónica Librería de simulación de redes electrónicas (MAME) FM (Frequency Modulation) Chips Yamaha. Sonido “electrónico”. Interconexiones programables de generadores de ondas y moduladores. MAME: librería completa de chips Yamaha (menos mal). Sample mixers Diseño propio Sonido digitalizado Varios canales, bucles, frecuencia variable. Normalmente un procesador aparte dedicado a sonido

Sonido: Sample mixers Cargar ROM de sonido en programa de edición de audio. Pruebas con diferentes configuraciones de canales, frecuencia, bits, endianness. PCM,u-Law,a-Law, ADPCM. (Aun no había MP3) Buscar un sample reconocible (meter moneda, start, sound test en el menú de servicio) Parar el emulador en el punto del juego donde se genera. Buscar relación registros de sonido con dirección, frecuencia, etc… del sample encontrado.

Protección Dongles (Mochila) SEGA (System32, Model2, Model3). Infrautilizada, fácil de emular. Encriptación Capcom (CPS2,CPS3), IGS (PGM), SNK (Neogeo), Gaelco Buscar puntos débiles para extraer los datos desencriptados (BIOS). Coprocesadores IGS (PGM), Konami, Gaelco “Adivinar” el funcionamiento a partir de los parámetros. Si es programable, obtener el programa (tablas sin bounds check, decapping).

Protección Extraer los datos no es fácil: Datos a pantalla + Fotografía + Teclear a mano (Martial Masters: 4KB a mano). Conexión Placa PC (JammaLink, JVSLink ) Decapping + microfotografía Extracción de programa de protección Martial Masters Cable de conexión JAMMA Puerto Paralelo de PC Microfotografía de ROM de MCU de sonido de Namco

Cuando todo funciona Emular características poco usadas del hardware o que tengan pequeños fallos. Optimización Profiling: encontrar las funciones críticas Optimización a ensamblador (MMX).No portable. Multiprocesador. Otras características del emulador Filtros gráficos Savestates (a veces es bueno tenerlos antes) Netplay Trucos (Cheats)

MAME MAMEDev: Decenas de programadores de todo el mundo. Un responsable del proyecto FTP con roms, manuales, documentos, datasheets… Mailing list, IRC (no oficial) Repositorio SVN para el código Estructura: OSD: Frontend y partes de acceso a video y sonido. Core: Librerías de dispositivos comunes (CPUs, chips de sonido, EEPROMs,…) Drivers: instanciación de dispositivos + mapa de memoria + emulación de video (también sonido si es específica al HW)

Porting Convertir un juego de una plataforma a otra, a partir del fuente. Ejemplos: Dreamcast->Xbox,PS3,PSVita (Jet Set Radio) Xbox->PS3,PSVita (Fez) Megadrive->Xbox,PS3 (Sonic CD) Cada plataforma tiene su propio API (a menudo incompatible incluso entre plataformas del mismo fabricante) APIs de video no estandar (Xbox si, DirectX)

Porting BlitWorks ( Sonic CD: de MegaCD a Xbox,PS3 Jet Set Radio: de Dreamcast a Xbox,PS3,PSVita,PC,iOS,Android Spelunky: de Xbox a PS3,PSVita Fez: de Xbox (XNA C#) a PS3,PSVita,PS4 (C++) Age Of Zombies: de iOS a PSVita

Porting Juegos ya existentes y con una rentabilidad “asegurada”. En teoría poco trabajo pero… Diferencias de potencia entre plataformas Los APIs de las consolas son incompatibles entre ellas. Incluso dentro del mismo fabricante (PS3/PSVita/PS4). APIs de video propias, acceso directo al hardware. Intentar desarrollar un framework básico que abstraiga el hardware de la consola.

Porting Cada API grafica expone las peculiaridades del hardware: PS3: Generación directa de display list a la GPU. Multiples display lists en paralelo, con call/return entre ellas Parcheo en memoria de constantes en fragment program. PSVita: Cada render target cambia escena (overhead) Alpha blending en el fragment shader (cache de shaders) Vertex fetch en vertex shader (cache de shaders) Todo esto lo abstrae OpenGL en iOS, pero no hay control

Porting Jet Set Radio: Código fuente de Dreamcast. Datos en blobs binarios con direcciones absolutas de memoria!!, la dreamcast no tenia un SO al uso Dreamcast: Little endian. Xbox y PS3 big endian. Convertir los datos. Algunos sin el fuente original Redibujado de algunas texturas en HD Sonido MIDI en formato propio, grabado de emulador. Desarrollo de una versión de la librería grafica de Dreamcast para cada target.

Porting Jet Set Radio Dreamcast 4:3 ratio. Max 576i. 30 fps with frequent frame drops Xbox 16:9 ratio. 720p 30 fps solid

Porting Sonic CD: Al principio se iba a usar la version de MegaCD, parcheada. Reimplementación casera en scripts del juego original. Insertar trofeos, records,… Spelunky A partir de la versión de Xbox Shaders complejos. 10fps en vita Mucho alphablending, costoso en vita

Porting Fez Versión en C#!!, convertir a C++ (C++11) Reimplementar XNA por cada plataforma!!! Shaders no optimizados Mucha geometria, vertex shaders lentos en PS3/Vita : backface culling por CPU Mucho alpha test (discard): Lento en PSVita Version xbox: frecuentes saltos (aleatorios) en el framerate debido al GC. En PS3/Vita framerate consistente, determinista.

¿Preguntas?