CK3X · 2020. 6. 15. · CK3 型产品上广受 ... (Intermec Terminal Emulator(终端仿真器)+ Intermec Browser ...
PatBoy emulator
description
Transcript of PatBoy emulator
-
Qu 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: CPU basada en el Z80. Bus de datos: 8 bits Bus de direcciones: 16 bits 8 KB SRAM Pantalla LCD 160x144 Paleta de 4 colores 8KB VRAM 4 canales de sonido Puerto serie 30 horas de autonoma
-
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
Deseamos exactitud con la mquina?
-
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.
Basado en el Z80 con menos instrucciones: 245 instrucciones simples: loads, aritmetico-lgicas, jumps,
call 256 instrucciones extendidas: operaciones a un bit, swaps,
operaciones de rotacin
-
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
Emulacin mediante SDL para la ventana y OpenGL para pintar el framebuffer
-
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
Emulacin mediante librera de sintetizacin Gb_Snd_Emu
-
Joypad
Botones de direccin Arriba, abajo, derecha e izquierda
Botones de estado Start y select
Botones de control Botn A y B
Recogidos los eventos de pulsacin mediante las libreras SDL
-
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 !