Preservacin de maquinas recreativas Emuladores Qu es un

  • Slides: 38
Download presentation
Preservación de maquinas recreativas: Emuladores ¿Qué es un emulador? ¿Qué son las ROMs? ¿Cómo

Preservación de maquinas recreativas: Emuladores ¿Qué es un emulador? ¿Qué son las ROMs? ¿Cómo funciona un emulador? Autor: Miguel Ángel Horna (El. Semi) Zaragoza, 26 de Mayo de 2009

Emuladores Ejecutar el programa original sobre hardware diferente. Para ello, simular el funcionamiento del

Emuladores Ejecutar el programa original sobre hardware diferente. 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) http: //www. keep-project. eu

Emuladores Preservar los sistemas antiguos (y los juegos) Datos en ordenadores o soportes que

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 Play. Station Network Nintendo Virtual Console Classic Collections Ahora las empresas de videojuegos buscan emuladores

Emuladores Nebula: CPS 1, CPS 2, Neo. Geo, PGM, Konami Model 2 Emulator: Sega

Emuladores Nebula: CPS 1, CPS 2, Neo. Geo, PGM, Konami Model 2 Emulator: Sega Model 2 (original y revs A, B y C) CPS 3 Emulator: Capcom CPS 3 (CPX 3 versión para XBOX) Crystal System Emulator: Brezza. Soft Crystal System Chankast: Emulador de Dreamcast (Sonido y Maple bus), Naomi (preliminar) MAME: Colaboración en CPS 2, Neogeo, Model 1, Konami (Protecciones) Drivers para PGM, Crystal System Cores para DSPs y CPU de Model 2 Sonido para Saturn/Model 2 (SCSP) y Dreamcast/Naomi (AICA)

¿Qué hay dentro de una máquina? Monitor, Amplificador, Fuente de alimentación, controles… Cableado: Sonido,

¿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 (90 s): Estándar JAMMA (sonido mono, solo entradas digitales, 2 players, 4 botones) (Más recientes JVS (JAMMA 2) 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

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, CPS 3 6 juegos, Crystal System 3 juegos)

Placas de juego Sistemas de juegos: Cartuchos: SNK (Neo. Geo) IGS (Poly. Game. Master)

Placas de juego Sistemas de juegos: Cartuchos: SNK (Neo. Geo) IGS (Poly. Game. Master) Rom Board: Capcom (CPS 1, CPS 2) SEGA (System 16, System 32, Model 3, …) Namco Disco: Capcom (CPS 3) SEGA (Naomi GDRom) Standalone: Konami (Diseño modular. En MAME librería de componentes básicos) Mucha info en www. system 16. com. Mantenido por MAMEDevs, información correcta.

Placas de juego Capcom CPS 3 IGS Poly. Game. Master Capcom CPS 2 Sega

Placas de juego Capcom CPS 3 IGS Poly. Game. Master Capcom CPS 2 Sega Model 2 A-CRX SNK Neo. Geo Konami Mystic Warrior Crystal System

ROMs Virtua Fighter 2 (Model 2) Cartucho CPS 3 (BIOS) KOF 2003 (Neogeo PCB)

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

ROMs Pasar el código almacenado en las ROMS a un archivo Se usan programadores/lectores

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

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 Identificar el procesador (o procesadores) de la placa. Conocimiento del lenguaje máquina del procesador. Desensamblado de ROMs de programa (Data. Rescue IDA) MAME core: Decenas de emulaciones de procesadores testeadas y funcionales. Sistemas de juegos años 90, lo normal: 68000+Z 80 Decenas de emuladores de 68 k y Z 80.

Procesador Ejecutar el programa original (Z 80, 68 k) sobre un procesador diferente (x

Procesador Ejecutar el programa original (Z 80, 68 k) sobre un procesador diferente (x 86, Power. PC). Emulación aproximadamente un 10% de la velocidad original: Emular 10 Mhz requiere 100 Mhz. 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: 68000+Z 80 Decenas de emuladores de 68000 y Z 80 libres. Gran cantidad de documentación para hacerlos

Procesador A veces no existe un core ya hecho para el procesador. Escribirlo usando

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/2 A) En japonés (TGPx 4 de model 2 C) 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

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:

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

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 2 D: Framebuffers Tilemaps + Sprites Framebuffers Dibujar toda la pantalla

Gráficos Hardware sistemas 2 D: 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 Nx. N piezas de

Gráficos: Tilemaps Dibujado por hardware, 0% de CPU. Mosaico de Nx. N piezas de Mx. M 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 D 3 D 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

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 +

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 3 D potente pero poco procesador (PSP))

Gráficos CPS 1/CPS 2: 3 Tilemaps (32 x 32, 16 x 16, 8 x

Gráficos CPS 1/CPS 2: 3 Tilemaps (32 x 32, 16 x 16, 8 x 8 orden programable) + Sprites Neo. Geo: 1 Tilemap (8 x 8, fijo) + Sprites PGM: 2 Tilemaps (8 x 8, 16 x 16 orden fijo) + Sprites Crystal System: Blitter Model 2: 2 Tilemaps (8 x 8 orden programable) + 3 D.

Gráficos Almacenamiento en ROM, una pesadilla. Adivinar buscando gráficos conocidos (letras, números) Cada fabricante

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

Gráficos Tilemap Texto (mascara)

Gráficos Tilemap Texto (mascara)

Gráficos Tilemap Texto (Color)

Gráficos Tilemap Texto (Color)

Gráficos Tilemaps Scroll

Gráficos Tilemaps Scroll

Gráficos Sprites (Posición) Final

Gráficos Sprites (Posición) Final

Gráficos

Gráficos

Gráficos: 3 D Display lists DSPs para leer la display list y hacer T&L

Gráficos: 3 D 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 (Model 2 Emulator). Rasterización: Software render: Pixel accurate, más lento: MAME Direct 3 D: Menos preciso. Más rápido, aprovecha tarjetas 3 D. Model 2 Emulator.

Gráficos: 3 D Evolución de la emulación de 3 D del emulador de Model

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

Gráficos: 3 D Color

Gráficos: 3 D Color

Gráficos: 3 D Texturas

Gráficos: 3 D Texturas

Sonido Componentes “discretos” Osciladores, filtros, electrónica Librería de simulación de redes electrónicas (MAME) FM

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

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 MP 3) 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 (System 32, Model 3). Infrautilizada, fácil de emular. Encriptación Capcom

Protección Dongles (Mochila) SEGA (System 32, Model 3). Infrautilizada, fácil de emular. Encriptación Capcom (CPS 2, CPS 3), 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

Protección Extraer los datos no es fácil: Datos a pantalla + Fotografía + Teclear a mano (Martial Masters: 4 KB a mano). Conexión Placa <-> PC (Jamma. Link, 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.

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

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)