MAME (anteriormente un acrónimo de Multiple Arcade Machine Emulator ) es un emulador gratuito y de código abierto diseñado para recrear el hardware de juegos arcade , consolas de videojuegos , computadoras antiguas y otros sistemas en software en computadoras personales modernas y otras plataformas. [1] Su intención es preservar la historia de los juegos evitando que los videojuegos antiguos se pierdan u olviden. Lo hace emulando el funcionamiento interno de las máquinas emuladas; la capacidad de jugar realmente los videojuegos se considera "un efecto secundario agradable". [2] Joystiq ha incluido a MAME como una aplicación que todos los jugadores de Windows y Mac deberían tener. [3]
El primer lanzamiento público de MAME fue realizado por Nicola Salmoria el 5 de febrero de 1997. Actualmente admite más de 7000 juegos únicos y 10 000 conjuntos de imágenes ROM reales, [ cita requerida ] aunque no todos los juegos son jugables. MESS , un emulador para muchas consolas de videojuegos y sistemas informáticos, basado en el núcleo MAME, se integró en MAME en 2015.
Con OTVDM (WineVDM) está disponible una versión de MAME para emular aplicaciones DOS y Windows de 16 bits en versiones x64 y AArch64 de Windows. NTVDM de Microsoft solo es compatible con las versiones de 32 bits de Windows. [4] [5] [ ¿ Fuente generada por el usuario? ]
El proyecto MAME fue iniciado por el programador italiano Nicola Salmoria . Comenzó como un proyecto llamado Multi-Pac, destinado a preservar los videojuegos de la familia Pac-Man, pero el nombre se cambió a medida que se añadieron más juegos a su marco. La primera versión de MAME se lanzó en 1996. [6] En abril de 1997, Salmoria renunció por sus compromisos de servicio nacional , entregando la administración del proyecto a su compatriota italiano Mirko Buffoni durante medio año. En mayo de 2003, David Haywood asumió el cargo de coordinador del proyecto; y desde abril de 2005 hasta abril de 2011, el proyecto fue coordinado por Aaron Giles; [7] luego Angelo Salese intervino como coordinador; [8] y en 2012, Miodrag Milanovic asumió el control. [9] El proyecto cuenta con el apoyo de cientos de desarrolladores de todo el mundo y miles de colaboradores externos.
En un principio, MAME se desarrolló exclusivamente para MS-DOS , pero pronto fue portado a sistemas tipo Unix (X/MAME), Macintosh (MacMAME y más tarde MAME OS X) y Windows (MAME32). Desde el 24 de mayo de 2001, con la versión 0.37b15, [7] el principal desarrollo de MAME se ha producido en la plataforma Windows, y la mayoría de las demás plataformas son compatibles a través del proyecto SDLMAME , que se integró en el árbol de código fuente de desarrollo principal en 2006. [10] MAME también ha sido portado a otros ordenadores, consolas de juegos, teléfonos móviles y PDA y, en un momento dado, incluso a cámaras digitales. [11] En 2012, Google portó MAME a Native Client , lo que permite que MAME se ejecute dentro de Chrome . [12]
Las versiones principales de MAME ocurren aproximadamente una vez al mes. Los ejecutables de Windows tanto de 32 bits como de 64 bits se lanzan en el sitio web oficial del equipo de desarrollo, junto con el código fuente completo. [13] Se lanzaron versiones "u" (de actualización) más pequeñas y graduales semanalmente (hasta la versión 0.149u1) como diferencias de origen con la versión principal más reciente, para mantener el código sincronizado entre los desarrolladores. [14] El código fuente de MAME se desarrolla en un repositorio público de GitHub , [15] lo que permite a aquellos con la experiencia y las herramientas necesarias crear la versión más actualizada y contribuir con mejoras como solicitudes de incorporación de cambios . Los números de versión históricos 0.32 y 0.38 a 0.52 inclusive no existen; El primero fue omitido debido a un nombre similar de la variante MAME32 equipada con GUI (que desde entonces ha sido renombrada MAMEUI debido al cambio a compilaciones de 64 bits), mientras que los últimos números fueron omitido debido a los numerosos lanzamientos en el ciclo beta 0.37 (estos números de versión desde entonces han sido marcados junto a sus lanzamientos beta 0.37 equivalentes en el sitio web oficial de MAMEdev). [16]
La arquitectura de MAME ha sido ampliamente mejorada a lo largo de los años. En los primeros seis meses del proyecto se agregó soporte para pantallas rasterizadas y vectoriales, múltiples CPU y chips de sonido. Se implementó un sistema de temporizador flexible para coordinar la sincronización entre múltiples núcleos de CPU emulados, y las imágenes ROM comenzaron a cargarse de acuerdo con su hash CRC32 en los archivos ZIP en los que estaban almacenadas. [7] MAME ha sido pionero en la ingeniería inversa de muchas arquitecturas de sistema no documentadas, varias CPU (como la CPU Konami personalizada derivada de M6809 con nuevas instrucciones) y chips de sonido (por ejemplo, chips de sonido Yamaha FM ). Los desarrolladores de MAME han sido fundamentales en la ingeniería inversa de muchos algoritmos de cifrado propietarios utilizados en juegos de arcade, incluidos Neo Geo , CP System II y CP System III . [ cita requerida ]
La popularidad de MAME se ha generalizado, con entusiastas que construyen sus propios gabinetes de juegos arcade para reproducir juegos antiguos e incluso algunas compañías que producen derivados ilegales de MAME para instalarlos en las salas de juegos . Los gabinetes se construyen desde cero o desmontando y modificando un gabinete de juegos arcade original. [17] [18] Los gabinetes inspirados en juegos clásicos también se pueden comprar y ensamblar (con MAME preinstalado opcionalmente). [19]
Aunque MAME contiene una interfaz de usuario rudimentaria, su uso en máquinas arcade y home theaters requiere aplicaciones de inicio especiales llamadas front-end con funciones más avanzadas. Estas aplicaciones ofrecen distintos grados de personalización, lo que permite ver imágenes de las máquinas de los juegos, historiales, consejos de juego, ilustraciones de logotipos especializados para los juegos y videos del modo de juego o de atracción del juego .
La información contenida en MAME se puede reutilizar de forma gratuita y se sabe que algunas empresas utilizan MAME para recrear sus antiguos clásicos en sistemas modernos. Algunas incluso han contratado a desarrolladores de MAME para crear emuladores para sus antiguas propiedades. Un ejemplo es el paquete Taito Legends , con ROM legibles en determinadas versiones de MAME. [20]
El 27 de mayo de 2015 (0.162), el emulador de consolas de juegos y sistemas informáticos MESS se integró con MAME (por lo que el manual de usuario de MESS sigue siendo la instrucción de uso más importante para las partes no arcade de MAME). [21] Esto también llevó a la eliminación del acrónimo, ya que MAME ahora puede emular más que máquinas arcade. Desde 2012, MAME ha sido mantenido por el ex líder del proyecto MESS Miodrag Milanović. [9]
En mayo de 2015, se anunció que los desarrolladores de MAME planeaban volver a licenciar el software bajo una licencia libre y de código abierto más común , alejándose de la licencia original de MAME. El desarrollador de MAME, Miodrag Milanovic, explicó que el cambio era para atraer más interés de los desarrolladores, permitir que los fabricantes de juegos distribuyan MAME para emular sus propios juegos y hacer del software "una herramienta de aprendizaje para los desarrolladores que trabajan en placas de desarrollo". La transición de la licencia de MAME a BSD/GPL se completó en marzo de 2016. [22] [23] La mayor parte del código fuente de MAME (más del 90 %) ahora está disponible bajo la licencia BSD-3-Clause , y el proyecto completo está bajo la licencia GPL-2.0 o posterior . [22] [24]
El 24 de febrero de 2016 (0.171), MAME incorporó el front-end MEWUI (y su desarrollador se unió al equipo), proporcionando a MAME una interfaz de usuario más flexible y con más funciones. [25]
El 30 de diciembre de 2021, exA-Arcadia , los propietarios occidentales de los derechos de autor de los juegos Akai Katana y DoDonPachi SaiDaiOuJou, hicieron que sus abogados presentaran un aviso de cese y desistimiento a los desarrolladores de MAME por la inclusión de esos juegos en el emulador. [26] MAME cumplió con la solicitud un día después, haciendo que ambos juegos no se pudieran reproducir en el emulador fuera de la línea de comandos, a partir de la versión 0.240. [27]
El núcleo de MAME coordina la emulación de varios elementos al mismo tiempo. Estos elementos replican el comportamiento del hardware presente en las máquinas originales. MAME puede emular muchas unidades centrales de procesamiento (CPU) y hardware asociado diferentes. Estos elementos se virtualizan de modo que MAME actúa como una capa de software entre el programa original del juego y la plataforma en la que se ejecuta MAME. MAME admite resoluciones de pantalla, frecuencias de actualización y configuraciones de visualización arbitrarias. También se admiten múltiples monitores emulados, como lo requiere, por ejemplo, Darius .
Los sistemas individuales se especifican mediante controladores que toman la forma de macros de preprocesador de C. Estos controladores especifican los componentes individuales que se van a emular y cómo se comunican entre sí. Si bien MAME se escribió originalmente en C , la necesidad de una programación orientada a objetos hizo que el equipo de desarrollo comenzara a compilar todo el código como C++ para MAME 0.136, aprovechando las características adicionales de ese lenguaje en el proceso.
Aunque la gran mayoría de los núcleos de emulación de CPU son interpretativos , MAME también admite la recompilación dinámica a través de un lenguaje intermedio llamado Lenguaje de máquina universal (UML) para aumentar la velocidad de emulación. Los objetivos de back-end admitidos son x86 y x64. El back-end AC también está disponible para ayudar aún más a verificar la corrección. Las CPU emuladas de esta manera son SH-2, MIPS R3000 y PowerPC.
El código del programa original, los gráficos y los datos de sonido deben estar presentes para que el sistema pueda ser emulado. En la mayoría de las máquinas, los datos se almacenan en chips de memoria de solo lectura (ROM), aunque también se utilizan otros dispositivos como cintas de casete , disquetes , discos duros , discos láser y discos compactos . El contenido de la mayoría de estos dispositivos se puede copiar a archivos de computadora, en un proceso llamado "dumping". Los archivos resultantes a menudo se denominan genéricamente imágenes ROM o ROM, independientemente del tipo de almacenamiento del que provengan. Un juego generalmente consta de múltiples imágenes ROM y PAL ; estas se almacenan colectivamente dentro de un solo archivo ZIP , constituyendo un "conjunto ROM". Además del conjunto ROM "principal" (generalmente elegido como la versión "mundial" más reciente del juego), los juegos pueden tener conjuntos ROM "clón" con diferente código de programa, texto en diferente idioma destinado a diferentes mercados, etc. Por ejemplo, Street Fighter II Turbo se considera una variante de Street Fighter II Champion Edition . Las placas base como Neo Geo que tienen ROM compartidas entre múltiples juegos requieren que las ROM se almacenen en conjuntos de ROM "BIOS" y se nombren apropiadamente.
Las ROM MAME vienen en tres formas: divididas , no fusionadas y fusionadas : [28]
Los discos duros, los discos compactos y los laserdiscs se almacenan en un formato específico de MAME llamado CHD (Compressed Hunks of Data). [29] Algunas máquinas utilizan hardware analógico, como los laserdiscs, para almacenar y reproducir datos de audio/vídeo, como bandas sonoras y cinemáticas. Estos datos deben capturarse y codificarse en archivos digitales que MAME pueda leer. MAME no admite el uso de dispositivos analógicos externos, que (junto con altavoces y cajas de altavoces idénticos) serían necesarios para una reproducción 100% fiel de la experiencia. Un número cada vez menor de juegos con circuitos de audio no emulados requieren muestras de sonido en formato de archivo WAV para la emulación del sonido. MAME también admite archivos de ilustraciones en formato PNG para gráficos de bisel y superposición. Además, la emulación de juegos con pantallas de cristal líquido como Game & Watch o aspectos físicos adicionales como las máquinas tragamonedas generalmente requieren archivos de imagen adicionales para los fondos u otros aspectos de los juegos.
El objetivo declarado del proyecto es documentar el hardware, por lo que MAME adopta una visión algo purista de la emulación, prohibiendo los trucos de programación que podrían facilitar la ejecución de un juego a expensas de la precisión de la emulación. Los componentes como las CPU se emulan a un nivel bajo (lo que significa que se emulan instrucciones individuales) siempre que sea posible, y la emulación de alto nivel (HLE) solo se utiliza cuando un chip no está documentado en absoluto y no se puede aplicar ingeniería inversa en detalle. La emulación a nivel de señal se utiliza para emular circuitos de audio que constan de componentes analógicos.
Queremos documentar el hardware. Ahora mucha gente dirá: "¿Dónde está tu documento? Solo escribes un montón de código fuente". Y sí, eso es cierto. Una cosa que he aprendido es que mantener la documentación sincronizada con el código fuente es casi imposible. La mejor prueba de que tu documentación es correcta es "¿funciona este código?".
— Aaron Giles, California Extreme 2008 [30]
MAME emula más de mil placas de sistema arcade diferentes , la mayoría de las cuales no tienen documentación alguna y están diseñadas a medida para ejecutar un solo juego o un número muy pequeño de ellos. El enfoque que adopta MAME con respecto a la precisión es incremental; los sistemas se emulan con la mayor precisión posible. Las copias piratas de los juegos suelen ser las primeras en ser emuladas, y las versiones adecuadas (y protegidas contra copia) se emulan más tarde. Además del cifrado, los juegos arcade solían estar protegidos con unidades de microcontrolador (MCU) personalizadas que implementaban una parte de la lógica del juego o algunas otras funciones importantes. La emulación de estos chips es preferida incluso cuando tienen poco o ningún efecto visible inmediato en el juego en sí. Por ejemplo, el comportamiento del monstruo en Bubble Bobble no se perfeccionó hasta que el código y los datos contenidos en la MCU personalizada se volcaron mediante la descapacitación del chip. [31] Esto hace que los requisitos del conjunto de ROM cambien a medida que los juegos se emulan a un grado cada vez más preciso, lo que hace que las versiones anteriores del conjunto de ROM se vuelvan inutilizables en las versiones más nuevas de MAME.
La portabilidad y la generalidad también son importantes para MAME. Combinadas con la postura inflexible en cuanto a la precisión, esto a menudo resulta en altos requisitos del sistema. Aunque un procesador de 2 GHz es suficiente para ejecutar casi todos los juegos 2D, los sistemas más recientes y particularmente los sistemas con gráficos 3D pueden ser injugables y lentos, incluso en las computadoras más rápidas. MAME actualmente no aprovecha la aceleración de hardware para acelerar la renderización de gráficos 3D, en parte debido a la falta de una API 3D multiplataforma estable, [ cita requerida ] y en parte porque la renderización de software puede, en teoría, ser una reproducción exacta de los diversos enfoques de renderización 3D personalizados que se usaron en los juegos arcade.
Poseer y distribuir MAME es legal en la mayoría de los países, ya que es simplemente un emulador. Empresas como Sony han intentado en los tribunales impedir la venta de otro software como Virtual Game Station , un emulador de PlayStation de Sony , pero finalmente no han tenido éxito. [32] Hasta ahora, MAME en sí no ha sido objeto de ningún proceso judicial.
La mayoría de los juegos todavía están cubiertos por derechos de autor. Descargar o distribuir ROMs con derechos de autor sin el permiso de los titulares de los derechos de autor es casi siempre una violación de las leyes de derechos de autor. Sin embargo, algunos países (incluido EE. UU.) [33] permiten al propietario de una placa transferir datos contenidos en sus chips ROM a una computadora personal u otro dispositivo de su propiedad. Algunos titulares de derechos de autor han explorado la posibilidad de poner ROMs a disposición del público a través de licencias. Por ejemplo, en 2003, Atari puso a disposición ROMs compatibles con MAME para 27 de sus juegos de arcade en el sitio de Internet Star ROMs . Sin embargo, en 2006 las ROM ya no se vendían allí. En un momento dado, varios juegos de Capcom se vendieron con el joystick arcade HotRod fabricado por Hanaho , pero este acuerdo también se suspendió. Otros titulares de derechos de autor han lanzado juegos que ya no son comercialmente viables de forma gratuita al público bajo licencias que prohíben el uso comercial de los juegos. Muchos de estos juegos se pueden descargar legalmente desde el sitio web oficial de MAME. [34] El desarrollador de juegos arcade español Gaelco también ha lanzado World Rally para uso no comercial en su sitio web. [35]
La comunidad MAME se ha distanciado de otros grupos que redistribuyen ROMs a través de Internet o medios físicos, alegando que están infringiendo descaradamente los derechos de autor y dañando el proyecto al potencialmente desacreditarlo. [36] A pesar de esto, las distribuciones ilegales de ROMs están muy extendidas en Internet, y también existen muchos "Full Sets" que contienen una colección completa de ROMs de una versión específica. [37] [38] Además, muchos sistemas de juegos piratas, como los multicartuchos arcade, a menudo usan versiones de MAME para ejecutar sus juegos. [ cita requerida ]
MAME se distribuía anteriormente bajo una licencia copyleft personalizada , llamada "licencia MAME" o "licencia similar a MAME", que también fue adoptada por otros proyectos, por ejemplo Visual Pinball . Esta licencia garantiza la disponibilidad del código fuente del programa licenciado , mientras que la redistribución del programa en actividades comerciales está prohibida. [39] Debido a esta cláusula, la licencia es incompatible con la Definición de código abierto de la OSI y la Definición de software libre de la FSF , y como tal no se considera una licencia de código abierto o de software libre , respectivamente. La cláusula no comercial fue diseñada para evitar que los operadores de salas de juegos instalen gabinetes MAME y se beneficien de las obras de los fabricantes originales de los juegos. [23] La ambigüedad de la definición "comercial" condujo a problemas legales con la licencia. [40] [41]
Desde marzo de 2016, con la versión 0.172, MAME cambió , mediante licencia dual , a licencias de software libre comunes , la licencia BSD-3-Clause y la licencia GPL-2.0 o posterior . [42] [43] Sin embargo, las versiones antiguas siguen estando licenciadas bajo la licencia original.