370 likes | 660 Views
Maquinas recreativas, emuladores y MAME. ¿Qué hay en una máquina recreativa? ¿Qué son las ROMs? ¿Cómo funciona un emulador? ¿Qué es MAME?. Autor:. Miguel Ángel Horna (ElSemi) Zaragoza, 13 de Noviembre de 2008. Emuladores.
E N D
Maquinas recreativas, emuladores y MAME ¿Qué hay en una máquina recreativa? ¿Qué son las ROMs? ¿Cómo funciona un emulador? ¿Qué es MAME? Autor: Miguel Ángel Horna (ElSemi) Zaragoza, 13 de Noviembre de 2008
Emuladores • Ejecutar el programa original de la máquina recreativa en un PC o consola actual. • Preservar los juegos y sistemas clásicos. • El resurgir de los juegos clásicos: • XBOX Live Arcade • PlayStation Network • Nintendo Virtual Console • ClassicCollections • Ahora las empresas de videojuegos buscan emuladores Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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 desde 2004): • 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) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
¿Qué hay dentro de una máquina? Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
¿Qué hay dentro de una máquina? • Monitor, Amplificador, Fuente de alimentación, controles… • Placa (o placas) de juego • 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 Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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) (o cartuchos) con el juego • El mismo hardware, solo cambian las ROMs=El emulador solo tiene que cargar las roms apropiadas • Mucho trabajo=muchos juegos (o no, CPS3 6 juegos, Crystal System 3 juegos) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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 www.system16.com. Mantenido por MAMEDevs. Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Placas de juego Capcom CPS3 IGS PolyGameMaster SNK NeoGeo Capcom CPS2 Sega Model2 A-CRX Konami Mystic Warrior Crystal System Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Placas de juego SF3 2nd Impact (CPS3) Knights of Valour Super Heroes (PGM) Daytona USA (Model 2) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
ROMs • Almacenamiento del juego (programa, gráficos, sonido) en memorias ROM. • Relativamente baja capacidad en la época (max 4MB por chip): Muchos chips para juegos grandes. • ¿Por qué no CD? • Acceso lento comparado con ROMs. • Siempre en marcha. Lo que se mueve se rompe . • Problema de las ROMS: se pueden copiar -> Protección. Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
ROMs • Dump: Pasar el código almacenado en los chips de memoria ROM 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) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
ROMs Cartucho CPS3 (BIOS + protección) Virtua Fighter 2 (Model 2) KOF 2003 (Neogeo PCB) Cartucho PGM KOF 99 (Neogeo Cartucho) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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: 68000+Z80 • Decenas de emuladores de 68000 y Z80 libres. Gran cantidad de documentación para hacerlos Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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. Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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). Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Gráficos: Tilemaps • Dibujado por hardware, 0% de CPU. • Mosaico de pequeñas piezas. • Piezas (Tiles) en ROM, no se pueden cambiar. • Gráficos limitados a los tiles existentes en ROM. • Mosaico mas grande que la pantalla. Scroll H/V cambiando un registro. Movimiento “gratis” para la CPU. • Características avanzadas • Transparencia • Prioridad mezclada con los sprites • Linescroll, Columnscroll • ROZ • Se usan para fondos, suelos, texto,… • Es algo estándar y con poca variación entre sistemas. Librería estándar en MAME Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Gráficos: Tilemaps • Para emularlo, se recorre la memoria igual que el HW y se pintan las capas una sobre otra empezando por la de mas atrás. Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Gráficos: Sprites • Gráficos posicionables en pantalla. • Generalmente compuestos de pequeños bloques (como los tilemaps) • Gráficos limitados por los tiles existentes en ROM. • Escalado, rotación, transparencia • Se usan para los elementos que se mueven por la pantalla (personajes, enemigos, disparos…) • Varias capas entre los tilemaps • Número máximo de sprites simultáneos por pantalla. • Igual que los tilemaps, librería genérica en MAME Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Gráficos: Sprites Tilemaps + Sprites Imagen Final Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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 • CrystalSystem: Blitter • Model2: 2 Tilemaps (8x8 orden programable) + 3D. • Generalmente se dibuja todo por software pixel a pixel (MAME) pero con las tarjetas actuales (Pixel Shader), intentar pasar carga a la tarjeta (Nebula, Model2) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Gráficos Sprites (Posición) Tilemap Texto (mascara) Tilemap Texto (Color) Tilemaps Scroll Final Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Gráficos: 3D • Sistemas 3D propietarios. No existían estándares 3D aun. • Generalmente de origen militar. Principios de los 90. • Chips dedicados a operaciones 3D generalmente prototipos o clasificados. • Rasterización: • Software render: Pixel accurate, más lento (MAME) • Direct3D: Menos preciso. Más rápido, aprovecha tarjetas 3D (Model2 Emulator) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Gráficos: 3D • Evolución de la emulación de 3D del emulador de Model2 Geometría Color Texturas Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Sonido • Almacenar el sonido digitalizado en ROM no era práctico: • No existía MP3, grabación del sonido “en bruto”. • Ocupa mucho espacio de ROM. Muy caro. • La solución: Almacenar partitura + instrumentos. • Voces y efectos digitalizados en ROM. Compresión ADPCM. Mucha distorsión. • Generalmente un procesador dedicado a manejar sonido. Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Sonido • Componentes “discretos” • Osciladores, filtros, electrónica • Librería de simulación de redes electrónicas (MAME) • Anteriormente, emulación con grabaciones de la máquina (Samples) • FM (Frequency Modulation) • Chips Yamaha. • Sonido “electrónico”. • 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 Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Protección • Las memorias ROM se pueden copiar. • Sistemas de juegos. Sólo hacen falta las ROMs para cambiar de juego. • Mercado pirata. Bootlegs. • Para evitarlo: Protección anti-copia. • Efectos colaterales (involuntarios en la época): También significa protección anti-emulación. • A veces los piratas también protegían sus versiones, generalmente mejor que el original. Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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 • “Adivinar” el funcionamiento a partir de los parámetros. • Si es programable, obtener el programa (tablas sin bounds check, decapping). Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Protección • Extraer los datos no es fácil: • Datos a pantalla + Fotografía + Teclear a mano (Martial Masters: 16KB a mano). • Conexión Placa <-> PC • 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 Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
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) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
MAME • 1997: Nicola Salmoria desarrolla un emulador de Pac-Man para MS-DOS de código abierto. • Separa el emulador en una librería genérica + “Drivers” para los juegos. • El proyecto crece y se unen programadores de todo el mundo. • La filosofía de MAME: Documentar el hardware. Poder jugar es un “efecto secundario”. • El objetivo es la máxima precisión de la emulación: • Toda la emulación gráfica por software. • Mezcla de sonido por software. • Se intenta que todo sea Pixel Accurate. • Portabilidad (DOS, Windows, Mac, Xbox, PDAs …) • En general, es mas lento que los emuladores específicos • Miles de juegos emulados Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
MAME • Código abierto. Cualquiera puede contribuir • MAMEDev. Equipo de desarrollo: • Decenas de miembros de todo el mundo (en la lista de desarrollo hay unos 70 miembros) • Casi todos los programadores de emuladores “standalone” están en MAME también. • Un responsable del proyecto • No solo programadores, tambien traductores, dumpers, grafistas, testers, matemáticos • FTP con roms, manuales, documentos, datasheets… • Mailinglist, IRC (no oficial) • Repositorio SVN para el código • En general, una release al mes, con releases intermedias semanales. Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
MAME • El código abierto presenta algunos problemas • Versiones derivadas con caracteristicas no deseadas • Uso del código sin permiso en emuladores comerciales • Uso no autorizado en maquinas "arcade" multijuegos (junto con roms) • La licencia presenta problemas a la hora de usarla contra usos no autorizados • Lo que se puede denunciar es el uso de la marca MAME, registrada por Nicola. • Es legal MAME? El emulador sí, lo ilegal es la ROM. • Algunas empresas de videojuegos han licenciado el código de MAME para sus recopilaciones (Konami) Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
MAME • En general todo lo posible está emulado (años 80 y mitad 90) • Lo que falta se debe a: • Encriptación • Protección • Hardware muy complejo (sistemas 3D) • Problemas legales Zaragoza. 13 de Noviembre de 2008 Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
MAME • Hitos mas importantes • Febrero 1997. Nace el proyecto MAME con el juego PacMan (Z80) • Septiembre 1997. Se añade el core para Motorola 68000 (para el juego Rastan) • Enero 1998. Se añade la emulación de los chips FM de yamaha y drivers para CPS1 • Agosto 1998. Se añade soporte para NeoGeo • Febrero 1999. Se crea la librería genérica para Tilemaps y Sprites (antes cada juego tenia su propia implementación) • Mayo 2001. La versión de Windows pasa a ser la oficial. • Mayo 2003. David Haywood (Haze) pasa a ser el coordinador del proyecto. Se crean las releases intermedias (u) • Abril 2005. Aaron Giles pasa a ser el coordinador del proyecto. Se comienza a utilizar SVN para mantener el código. • Febrero 2007. Se desencripta el sistema CPS2 • Junio 2007. Se desencripta el sistema CPS3 • Junio 2008. Se emula el World Rally de Gaelco • Agosto 2008. Primeros juegos en Laserdisc añadidos a MAME Zaragoza. 13 de Noviembre de 2008 Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
MAME • Donde conseguirlo? www.mamedev.org • Interface de MAME: Línea de comandos, es un poco "duro" (actualmente también una lista simple de juegos) • FrontEnds: Facilitan el uso del emulador: • Lista de juegos con imágenes, historia, datos • Configuración mediante interface (la original, un .ini) • Integración en máquinas (sin teclado ni ratón). • MAME32, MaLa, EmuLoader… • Información de juegos incluidos en MAME: www.mameworld.net/maws Zaragoza. 13 de Noviembre de 2008 Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)
Máquinas recreativas, emuladores y MAME. Miguel Ángel Horna (ElSemi)