Escolar Documentos
Profissional Documentos
Cultura Documentos
es PatBoy
Objetivos
Emulador de Game Boy en C++
Exactitud
SDL y OpenGL
Libre
Escalable
Emulacin de sonido exacta
Optimizacin y compatibilidad
Motivacin
La emulacin como reto tcnico
Pasin por los videojuegos
Game
Boy
Hardware:
Game Boy
Emulacin
Emulacin es distinto de simulacin
Exiten diversas formas de emulacin:
Software
Hardware: FPGA
Decisiones importantes:
Seleccin del lenguaje de implementacin
Compilado
Virtualizado
Interpretado
Arquitectura
Diseo
Cartucho
De 32KB a 8MB
Pueden contener RAM
RAM alimentada por pila
Chip de banqueo
Timer
Cabecera con informacin
Memoria
64KB en total divididos en regiones para almacenar:
Cartucho
VRAM
SRAM
Registros de I/O
Sprites / Tiles
Banqueo de memoria
Permite cartuchos de mayor tamao
Se divide el total del cartucho en bancos
El programa solicita al chip de banqueo la carga de un banco
especfico del cartucho a la memoria principal
Memoria
ROM only
32KB
MBC1
Hasta 2MB
32KB RAM
MBC2
Hasta 256KB
514b x 4 RAM
MBC3
Hasta 2MB
32KB RAM
CPU
Registros A, F, B, C, D, E, H, L de 8 bits agrupables de dos a
dos: AF, BC, DE, HL para formar registros de 16 bits.
Flags (Alojados en el registro F)
Acarreo, Suma/Resta, medio acarreo y zero.
CPU
Interrupciones:
Vblank: una vez pintadas las 144 scanlines y mientras
estamos entre la 144 y la 157.
LCD: solicitada por el driver de video
TIMER: cuando el contador del timer se desborda
Joypad: cuando el jugador pulsa un botn del joypad
Timers:
Registro de division
Contador
Video
Sistema basado en tiles / sprites alojados en memoria
32x32 tiles con un rea visible de 20x18
Audio
Cuatro canales principales
Canal 1: onda cuadrada, ciclo de trabajo modificable,
envolvente y portamento
Canal 2: onda cuadrada, ciclo de trabajo modificable y
envolvente
Canal 3: onda programable con tabla de RAM de 32 pasos
(32 valores de 4 bits)
Canal 4: canal de ruido blanco con envolvente
Joypad
Botones de direccin
Arriba, abajo, derecha e izquierda
Botones de estado
Start y select
Botones de control
Botn A y B
Mtricas
Mtrica
Valor
Lineas de cdigo
8493
Ficheros
22
Tamao ficheros
208,6 KB
Lineas de
comentario
1411
Ratio lineas/
fichero
386
Ratio comentarios/
fichero
64
Y
ahoraqu?
Mejorar, mejorar y seguir mejorando.
Aadir soporte para Game Boy Color
Aadir soporte de puerto serie
Chip MBC5
Otro emulador!
Conclusiones
PatBoy como emulador de Game Boy con filosofa de
exactitud
C++ como lenguaje idneo para la realizacin de
emuladores.
Programacin siempre basada en patrones de diseo,
arquitectura y diseos cuidados.
Muchas gracias !