Compila la última versión de MAME

En esta ocasión, voy hablar, sobre como compilar la ultima o versión desarrollo del MAME, ya que la que está en la pagina oficial, tiene inconvenientes en tiempo de compilación.

Lo bueno de compilar los programas para tu equipo, es que sacas más provecho del mismo, en especial mención, del procesador central, ya que los emuladores generalmente, hacen uso intensivo de este. También, la instalación de un frontend para interaccionar mucho mejor con el programa.

Esta guía o tutorial, esta pensada para las personas que no se conforman como viene MAME de fábrica. Así que los beneficios son palpable cuando haces la prueba de lugar. 🙂

Para empezar con el trabajo de compilación, clonamos las fuentes del programa, haciendo lo siguiente:

No descargar la versión source de la pagina mamedev, porque esta da muchos errores en la compilación.
Los usuarios de Debian-Ubuntu, instalen estos paquetes:
build-essential gconf2 libgconf2-dev libgtk2.0-dev libsdl1.2-dev libsdl-ttf2.0-dev

Los usuarios de Archlinux, les pido disculpa, pero ya tenia las librerías desde hace tiempo instalada, solo fíjense en las de ahí y busquen su homologa con pacman.

git clone git://git.redump.net/mame

Cuando termine del proceso de clonación, ir al directorio creado, en este caso, el directorio creado por defecto es “mame”.

Ya dentro de este directorio, tendremos una serie de carpetas y archivos. De aquí, solo nos interesa el makefile. Lo abren con el editor de texto de su preferencia y buscamos algo parecido a esto:

#ARCHOPTS = -march=native      # optimize for local machine (auto detect)

Y descomentamos esa linea, que nos quede como se ve en la imagen siguiente.

Guardamos los cambios, y ahí mismo iniciamos la compilación con el comando make:

make

Si quieres exprimir al máximo el tiempo de compilación, usa make -j# donde # es el numero de cores en tu equipo.
Para saber cuantos cores tiene tu equipo, lanza este comando en la terminal: grep -c ^processor /proc/cpuinfo

Cuando el proceso de compilación de por terminado su trabajo, aparecerá un archivo de nombre dependiendo de la arquitectura del sistema como mame si estas en 32bits o mame64 para 64bits.

En mi caso, estoy en sistema de 64bits.

Bien, por hasta aquí vamos bien, ya podremos ejecutar juegos con el programa, pero es algo engorroso para un principiante. Así que vamos a complementarlo con el programa qmc2.

Ahí, en la misma ventana ejecutamos a yaourt para instalar el frontend.

Para usuarios de Archlinux

yaourt -S qmc2

Para usuarios de Ubuntu-Debian

sudo add-apt-repository ppa:mmbossoni-gmail/emu
sudo apt-get update
sudo apt-get install qmc2-sdlmame qmc2-sdlmess qmc2-sdlume qmc2-arcade qchdman
Para los usuarios de Ubuntu / Debian

Copien el archivo ejecutable del mame a esta ruta como: /usr/games/mame

Luego, abren el programa qmc2sdlmame y les aparecerá esta ventana:

Como ven, el programa no pide mucho.

Lo mas importante en esta ventana, son la ruta del archivo ejecutable, el directorio de trabajo y la ruta de los roms.

La ruta del ejecutable mame, puedes tenerla donde quieras, siempre y cuando que le indiques al programa donde esta el ejecutable, igual para los juegos también.

Y aquí mame en acción. Pues ahí, estoy ya probando un juego, uno de mis favoritos de maquinitas, tantas monedas que me tomo en su tiempo, ahora soy yo quien le saco el jugo aquí. xD

Nuestro MAME en ejecución

Saludos y a jugar se ha dicho 😀

Este es mi primer articulo para este blog, el cual vengo siguiendo desde hace mucho tiempo con el sobrenombre de Mauricio, por sus interesantes post y que siempre tiene algo nuevo que mostrar.


28 comentarios

  1.   elmudo dijo

    ¿dónde consigues los roms?

    1.    NauTiluS dijo

      En Google, amigo 🙂

  2.   OtakuLogan dijo

    Artículo muy bueno para recordar que antes de Steam ya había videojuegos en GNU/Linux. No son nuevos ni nativos, pero pueden proporcionar miles de horas de entretenimiento y diversión.

    Y me gustaría nombrar UME (http://mamedev.emulab.it/haze/), la iniciativa que mezcla Mame y Mess (si Mame se ocupa de recreativas, Mess de videoconsolas), creando un auténtico emulador multisistema. Solo lo he visto en los repositorios de emuladores de OpenSUSE y en el comunitario de ArchLinux, pero para compilarlo en Debian los pasos a seguir son muy similares a los que expone NauTiluS para Debian/ Ubuntu.

    1.    NauTiluS dijo

      Si editas el archivo makefile, y te vas a la linea 27, te encontraras con una variable importante. Esta variable, es la que especifica el objetivo a construir, sean estos: MAME, UME, MESS, etc.

      En tu caso, cambiarla por UME, obtendrás este ejecutable.

      Saludos

  3.   alebils dijo

    Hola
    al hacer make me sale lo siguiente:

    src/osd/sdl/sdl.mak:519: *** Qt’s Meta Object Compiler (moc) wasn’t found!. Alto.

    Uso Kubuntu 12.04 32 bits

    Gracias

    1.    serfraviros dijo

      Me parece que te está avisando que te hace falta instalar moc; investigando un poco encontré que lo que lo que posiblemente te hace falta es automoc pero no estoy seguro. Intenta buscando en Sinaptic o con Aptitude, no me acuerdo cual de los dos usa Kubuntu.

      1.    Alebils dijo

        Gracias, era eso instale moc y automoc y esta compilando

  4.   rolo dijo

    es conveniente tener instalada la ultima versión de mame?? pregunto xq al cargar el repo de deb-multimedia, me instalo un mame mas moderno que el de debian testing, pero… muchos de los juegos dejaron de funcionar. asi que mantuve la version de debian y chau problemas.
    no estoy seguro pero creo que muchos de los juegos estan compilados para una determinada versión de mame

  5.   alebils dijo

    finalmente compilo
    pero al querer instalar el qmc2 me sale:

    sudo apt-get install qmc2-sdlmame qmc2-sdlmess qmc2-sdlume qmc2-arcade qchdman
    Leyendo lista de paquetes… Hecho
    Creando árbol de dependencias
    Leyendo la información de estado… Hecho
    No se pudieron instalar algunos paquetes. Esto puede significar que
    usted pidió una situación imposible o, si está usando la distribución
    inestable, que algunos paquetes necesarios no han sido creados o han
    sido movidos fuera de Incoming.
    La siguiente información puede ayudar a resolver la situación:

    Los siguientes paquetes tienen dependencias incumplidas:
    qmc2-sdlmess : Depende: sdlmess (>= 0.144) pero no es instalable o
    mess (>= 0.144) pero no es instalable
    qmc2-sdlume : Depende: sdlume (>= 0.144) pero no es instalable o
    ume (>= 0.144) pero no es instalable
    E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

    1.    NauTiluS dijo

      Hola y gracias por comentar.
      Lo que tienes que hacer en ese caso, es engañar al sistema eh instalar esos paquetes que de piden, sdlmame y sdlmess.

      Con eso se resuelve tu problema, luego sustituye o pasa el path donde esta el mame que haz compilado.

      Saludos

      1.    alebils dijo

        pruebo de instalarlos con apt-get install pero me sale lo siguiente:
        sudo apt-get install sdlmess
        Leyendo lista de paquetes… Hecho
        Creando árbol de dependencias
        Leyendo la información de estado… Hecho
        El paquete sdlmess no está disponible, pero algún otro paquete hace referencia
        a él. Esto puede significar que el paquete falta, está obsoleto o sólo se
        encuentra disponible desde alguna otra fuente

        E: El paquete «sdlmess» no tiene un candidato para la instalación

        y lo mismo para el sdlume

        1.    NauTiluS dijo

          Intenta lo siguiente.

          sudo touch sdlmess /usr/games/
          Para engañar al instalador.

          Saludos

          1.    alebils dijo

            Hola
            Probe, pero no pasa nada, me sigue sin dejar instalar…
            🙁

      2.    alunado dijo

        instalar xmame-sdl sirve igual de bien o mejor !! y ruteas a /usr/games/mame -a pesar que el qmc2 pida sdl….-.
        Tarde esta respuesta pero quizas le sirva a otro que anda por ahi buscando lo mismo. A mi me tomo dos dias recaudar toda la info para para hacer funcionar bien el mame en su version actual: 0.153.
        si queres roms para esta version la mejor pagina aunque algo lenta es planetemu.net. saludos.
        Todavia no encuentro como filtrar roms en qmc2 por funcionamiento, no encuentro la opcion y me tira la lista oficial larguisima !

  6.   obedlink dijo

    Lo que me gusta es que qmc2 es una aplicación Qt :D, pero una lastima que estoy usando kubuntu 14.04 por que el PPA de qmc2 esta solo disponible hasta saucy.

    1.    NauTiluS dijo

      Hola, puedes intentar compilar qmc2 bajando las fuentes desde su pagina.
      http://qmc2.arcadehits.net/wordpress/download/

      Saludos.

      1.    alberto dijo

        por que instalar estos ( qmc2-sdlmess qmc2-sdlume qmc2-arcade qchdman) si solo instalamos mame?

        sudo apt-get install qmc2-sdlmame qmc2-sdlmess qmc2-sdlume qmc2-arcade qchdman
        Leyendo lista de paquetes… Hecho
        Creando árbol de dependencias
        Leyendo la información de estado… Hecho
        No se pudieron instalar algunos paquetes. Esto puede significar que
        usted pidió una situación imposible o, si está usando la distribución
        inestable, que algunos paquetes necesarios no han sido creados o han
        sido movidos fuera de Incoming.
        La siguiente información puede ayudar a resolver la situación:

        Los siguientes paquetes tienen dependencias incumplidas:
        qmc2-sdlmess : Depende: sdlmess (>= 0.144) pero no es instalable o
        mess (>= 0.144) pero no es instalable
        qmc2-sdlume : Depende: sdlume (>= 0.144) pero no es instalable o
        ume (>= 0.144) pero no es instalable
        E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

        a los que le pase esto solo instalen qmc2-sdlmame
        quedaria asi :
        sudo add-apt-repository ppa:mmbossoni-gmail/emu
        sudo apt-get update
        sudo apt-get install qmc2-sdlmame

  7.   micaias dijo

    ola como se descargan?

  8.   Fermin Barboza dijo

    Al ejecutar el make da el siguiente error:

    src/osd/sdl/sdl.mak:456: *** Ubuntu 12.10 detected. Please install the gcc-4.6 and g++-4.6 packages. Stop.

    Al intentar instalar gcc o g++ da el siguiente error:

    apt-get install gcc-4.6 –fix-missing
    Leyendo lista de paquetes… Hecho
    Creando árbol de dependencias
    Leyendo la información de estado… Hecho
    Se instalarán los siguientes paquetes extras:
    cpp-4.6 gcc-4.6-base
    Paquetes sugeridos:
    gcc-4.6-locales gcc-4.6-multilib libmudflap0-4.6-dev gcc-4.6-doc libgcc1-dbg libgomp1-dbg libquadmath0-dbg libmudflap0-dbg binutils-gold
    Se instalarán los siguientes paquetes NUEVOS:
    cpp-4.6 gcc-4.6 gcc-4.6-base
    0 actualizados, 3 se instalarán, 0 para eliminar y 19 no actualizados.
    Se necesita descargar 12,5 MB de archivos.
    Se utilizarán 28,1 MB de espacio de disco adicional después de esta operación.
    ¿Quiere continuar [S/n]? s
    AVISO: ¡No se han podido autenticar los siguientes paquetes!
    gcc-4.6-base cpp-4.6 gcc-4.6
    ¿Instalar estos paquetes sin verificación [s/N]? s
    Err http://archive.ubuntu.com/ubuntu/ quantal/main gcc-4.6-base amd64 4.6.3-10ubuntu1
    404 Not Found [IP: 91.189.88.153 80]
    Err http://archive.ubuntu.com/ubuntu/ quantal/main cpp-4.6 amd64 4.6.3-10ubuntu1
    404 Not Found [IP: 91.189.88.153 80]
    Err http://archive.ubuntu.com/ubuntu/ quantal/main gcc-4.6 amd64 4.6.3-10ubuntu1
    404 Not Found [IP: 91.189.88.153 80]
    Imposible obtener http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.6/gcc-4.6-base_4.6.3-10ubuntu1_amd64.deb 404 Not Found [IP: 91.189.88.153 80]
    Imposible obtener http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.6/cpp-4.6_4.6.3-10ubuntu1_amd64.deb 404 Not Found [IP: 91.189.88.153 80]
    Imposible obtener http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.6/gcc-4.6_4.6.3-10ubuntu1_amd64.deb 404 Not Found [IP: 91.189.88.153 80]
    No se pudieron corregir los paquetes que faltan.
    E: Abortando la instalación.

    Tengo Linux Mint Maya

    1.    x11tete11x dijo

      pasate por acá http://foro.desdelinux.net/

    2.    NauTiluS dijo

      Hola y disculpa la tardanza de la contesta.

      Ese linux Mint Maya es muy viejo amigo, tendrías que instalar el gcc manualmente, para poder compilar este programa.

      Aunque creo que hay otro método, pero tienes que buscar los paquetes manualmente en los repositorios historicos de ubuntu.

      Creo que el Mint Maya, estaba basado en precise
      http://packages.ubuntu.com/precise/devel/

      Solo, tienes que descargar los paquetes gcc 4.6 como te pide el programa.

  9.   fer_pflores dijo

    hey, como puedo eliminar todos los archivos?

    1.    NauTiluS dijo

      Suponiendo que te refieres a los archivos de compilación, pues ejecutando esta orden en la terminal, “make clean”. Si es para eliminar todo y carpeta, sube un directorio arriba y con rm -vrf “nombre de la carpeta”.

  10.   Lea dijo

    Hola! Yo tengo Manjaro (archlinux) y no me compila
    Me tira esto
    /usr/bin/ld: no se puede encontrar -lSDL_ttf
    collect2: error: ld devolvió el estado de salida 1
    src/build/build.mak:63: recipe for target ‘obj/sdl/build/file2str’ failed
    make: *** [obj/sdl/build/file2str] Error 1

    ademas tampoco se cuales son las librerías equivalentes de las que mencionas en el principio, salvo build-essential, si me podés dar una mano, sería bien agradecido!

    1.    NauTiluS dijo

      Hola. Efectivamente te hace falta la librería SDL_ttf. Para instalarlo en archlinux, simplemente pon en la consola “pacman -S sdl_ttf”.

      También, debes tener instalado la librería “pacman -S sdl”.

      Sobre build-essential, lo mas probable es que ya lo tengas instalado. Esto lo que instala en ubuntu y derivado son algunas utilidades básicas de compilación.

      Cualquier otro inconveniente no dudes en preguntar.

  11.   Lea dijo

    Hola! Me anduvo eso! Gracias! ahora tuve otro error, me tira esto:

    Compiling src/mame/video/model1.c…
    src/mame/video/model1.c: En la función ‘void draw_quads(model1_state*, bitmap_rgb32&, const rectangle&)’:
    src/mame/video/model1.c:307:17: error: el subíndice de la matriz está por arriba de los límites de la matriz [-Werror=array-bounds]
    while(p[ps2+1].y == cury)
    ^
    src/mame/video/model1.c:319:17: error: el subíndice de la matriz está por debajo de los límites de la matriz [-Werror=array-bounds]
    while(p[ps1-1].y == cury)
    ^
    src/mame/video/model1.c:319:17: error: el subíndice de la matriz está por debajo de los límites de la matriz [-Werror=array-bounds]
    src/mame/video/model1.c:329:17: error: el subíndice de la matriz está por arriba de los límites de la matriz [-Werror=array-bounds]
    while(p[ps2+1].y == cury)
    ^
    src/mame/video/model1.c:329:17: error: el subíndice de la matriz está por arriba de los límites de la matriz [-Werror=array-bounds]
    src/mame/video/model1.c:305:17: error: el subíndice de la matriz está por debajo de los límites de la matriz [-Werror=array-bounds]
    while(p[ps1-1].y == cury)
    ^
    cc1plus: todos los avisos se tratan como errores
    makefile:922: recipe for target ‘obj/sdl/mame/video/model1.o’ failed
    make: *** [obj/sdl/mame/video/model1.o] Error 1

    Que podra ser?

    Gracias!

    1.    NauTiluS dijo

      Todo parece indicar un error del compilador.

      Necesitas una versión mas adelantada del compilador.

  12.   Rafael Escamilla dijo

    Hola, yo compilé la version .0151 de MAME y aparte de los paquetes que tu mencionas, es necesario el libqt4-dev. Saludos 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.