Preservacin de maquinas recreativas: Emuladores - PowerPoint PPT Presentation

1 / 38
About This Presentation
Title:

Preservacin de maquinas recreativas: Emuladores

Description:

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 ... – PowerPoint PPT presentation

Number of Views:107
Avg rating:3.0/5.0
Slides: 39
Provided by: miguelan9
Category:

less

Transcript and Presenter's Notes

Title: Preservacin de maquinas recreativas: Emuladores


1
Preservación de maquinas recreativas Emuladores
Qué es un emulador? Qué son las ROMs? Cómo
funciona un emulador?
Autor
Miguel Ángel Horna (ElSemi) Zaragoza, 26 de Mayo
de 2009
2
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

3
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
  • Ahora las empresas de videojuegos buscan
    emuladores

4
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)

5
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

6
Placas de juego
  • Standalone. Un juego por placa
  • Cambiar el juegoCambiar la placa.
  • Hardware diferente para cada juegoCódigo
    diferente en el emulador.
  • Mucho trabajo1 juego.
  • Sistemas. Una placa Base placa(s) con el
    juego
  • El mismo hardware, solo cambian las ROMsEl
    emulador solo tiene que cargar las roms
    apropiadas, el resto del código es igual.
  • Mucho trabajomuchos juegos (o no, CPS3 6 juegos,
    Crystal System 3 juegos)

7
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, información correcta.

8
Placas de juego
Capcom CPS3
IGS PolyGameMaster
SNK NeoGeo
Capcom CPS2
Sega Model2 A-CRX
Konami Mystic Warrior
Crystal System
9
ROMs
Cartucho CPS3 (BIOS)
Virtua Fighter 2 (Model 2)
KOF 2003 (Neogeo PCB)
Cartucho PGM
KOF 99 (Neogeo Cartucho)
10
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)

11
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)

12
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 68000Z80
  • Decenas de emuladores de 68k y Z80.

13
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 68000Z80
  • Decenas de emuladores de 68000 y Z80 libres. Gran
    cantidad de documentación para hacerlos

14
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.

15
Procesador
  • Registros -gt Struct
  • Memoria -gt 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

16
Procesador
  • Verificación en el Hardware Correr código en la
    placa y comparar

17
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).

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

19
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 D3D para scroll, y
    mezcla. También gratis para el emulador.

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

21
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))

22
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.

23
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
    rompixel de 4bpp.
  • NeoGeo Byte interleaved en 2 roms. Bloques de 4
    bytes, 1 bit de cada byte en el bloque4bpp
  • 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.

24
Gráficos
Tilemap Texto (mascara)
25
Gráficos
Tilemap Texto (Color)
26
Gráficos
Tilemaps Scroll
27
Gráficos
Final
Sprites (Posición)
28
Gráficos
29
Gráficos 3D
  • Display lists
  • DSPs para leer la display list y hacer TL 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 Menos preciso. Más rápido, aprovecha
    tarjetas 3D. Model2 Emulator.

30
Gráficos 3D
  • Evolución de la emulación de 3D del emulador de
    Model2

Geometría
31
Gráficos 3D
Color
32
Gráficos 3D
Texturas
33
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

34
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.

35
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).

36
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 lt-gt PC (JammaLink, JVSLink )
  • Decapping microfotografía

Extracción de programa de protección Martial
Masters
Cable de conexión JAMMA lt-gt Puerto Paralelo de PC
Microfotografía de ROM de MCU de sonido de Namco
37
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)

38
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)
Write a Comment
User Comments (0)
About PowerShow.com