Descargar

Emulación y Porting (página 3)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red

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

edu.red

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.

edu.red

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

edu.red

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 <-> PC (JammaLink, 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

edu.red

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)

edu.red

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)

edu.red

Porting Convertir un juego de una plataforma a otra, a partir del fuente. Ejemplos: Dreamcast->Xbox,PS3,PSVita (Jet Set Radio) Xbox->PS3,PSVita (Fez) Megadrive->Xbox,PS3 (Sonic CD) Cada plataforma tiene su propio API (a menudo incompatible incluso entre plataformas del mismo fabricante) APIs de video no estandar (Xbox si, DirectX)

edu.red

Porting BlitWorks (www.blitworks.com) Sonic CD: de MegaCD a Xbox,PS3 Jet Set Radio: de Dreamcast a Xbox,PS3,PSVita,PC,iOS,Android Spelunky: de Xbox a PS3,PSVita Fez: de Xbox (XNA C#) a PS3,PSVita,PS4 (C++) Age Of Zombies: de iOS a PSVita

edu.red

Porting Juegos ya existentes y con una rentabilidad “asegurada”. En teoría poco trabajo pero… Diferencias de potencia entre plataformas Los APIs de las consolas son incompatibles entre ellas. Incluso dentro del mismo fabricante (PS3/PSVita/PS4). APIs de video propias, acceso directo al hardware. Intentar desarrollar un framework básico que abstraiga el hardware de la consola.

edu.red

Porting Cada API grafica expone las peculiaridades del hardware: PS3: Generación directa de display list a la GPU. Multiples display lists en paralelo, con call/return entre ellas Parcheo en memoria de constantes en fragment program. PSVita: Cada render target cambia escena (overhead) Alpha blending en el fragment shader (cache de shaders) Vertex fetch en vertex shader (cache de shaders) Todo esto lo abstrae OpenGL en iOS, pero no hay control

edu.red

Porting Jet Set Radio: Código fuente de Dreamcast. Datos en blobs binarios con direcciones absolutas de memoria!!, la dreamcast no tenia un SO al uso Dreamcast: Little endian. Xbox y PS3 big endian. Convertir los datos. Algunos sin el fuente original Redibujado de algunas texturas en HD Sonido MIDI en formato propio, grabado de emulador. Desarrollo de una versión de la librería grafica de Dreamcast para cada target.

edu.red

Porting Jet Set Radio

Dreamcast 4:3 ratio. Max 576i. 30 fps with frequent frame drops

Xbox 16:9 ratio. 720p 30 fps solid

edu.red

Porting Sonic CD: Al principio se iba a usar la version de MegaCD, parcheada. Reimplementación casera en scripts del juego original. Insertar trofeos, records,… Spelunky A partir de la versión de Xbox Shaders complejos. 10fps en vita Mucho alphablending, costoso en vita

edu.red

Porting Fez Versión en C#!!, convertir a C++ (C++11) Reimplementar XNA por cada plataforma!!! Shaders no optimizados Mucha geometria, vertex shaders lentos en PS3/Vita : backface culling por CPU Mucho alpha test (discard): Lento en PSVita Version xbox: frecuentes saltos (aleatorios) en el framerate debido al GC. En PS3/Vita framerate consistente, determinista.

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente